【Unity】2Dのアクションの動作テスト

今回はドットキャラを使って、スーパーマリオのような2Dアクションの動作を調べてた。

ジャンプの放物線や床の当たり判定にRigidbody2DとCollider2Dを使用した。

またUnityの公式が提供している2Dサンプルのプロジェクトをアセットストアからダウンロードしてソースや設定を参考にした。

単純な横移動までは、特に問題を感じなかったけれども、ジャンプの動作を入れた途端、いろいろめんどくさい事態になった。

まず、ジャンプ中にジャンプが出来るのはおかしいので、ジャンプ中にボタンを押してもジャンプできないようにしなければならない。

それにはジャンプ中であることが判別できなければいけないわけだ。

公式のサンプルではこれをどうやっているかというと、下記の手順を踏んでいる。

1.画像にあるように操作キャラのスプライトの接地面に、接地判定用のゲームオブジェクトを追加する。

2.接地判定用レイヤーに床に使用するスプライトとコライダーを作成する。

3.接地判定用オブジェクトとキャラクタオブジェクトを結んだ直線に、接地判定用のレイヤー内のコライダーがあたっているかを判定し、当たっている場合は接地中、あたってない場合は空中と判断する。

当たり判定をスクリプト内で判定するために、ビルトインライブラリのPhysics2D.Linecastメソッドが用意されている。

公式のサンプルでやっているのはこれくらい。

なので、ジャンプ中でも左右に操作することができたりする。

ここから、かなり時間をかけてパラメータをいじってみたが、満足いく動作まで持っていくことが出来なかった。

当たり判定用のColliderは使えそうだが、Rigidbodyはアクションゲームでは使えないかもしれない。

アクションゲームはドットレベルのきびきびした操作性が命だ。

それをRigidbody2Dを使ってチューニングするのには限界があるなと感じた。

5年前

コメントを残す

メールアドレスが公開されることはありません。