プレイヤーキャラクターの移動とジャンプの簡単な実装例を紹介します。2Dプロジェクト用。

PlayerWalkAndJump2D

動画

動画はこちら。左右への移動とジャンプができていますね。



やっていること

やっていることの概要は以下のとおりです。
  • 左右方向の入力を受け取って、プレイヤーキャラクターを移動させる
  • 左右方向の入力を受け取って、プレイヤーキャラクターの向きを変える
  • スペースキーが押されたらジャンプする
  • ジャンプは接地しているときのみとし、多段ジャンプはさせない

スクリプト

スクリプトは2つに分けています。

クラスを適切に分割することによって、必要な部分だけを読みやすくなり、メンテナンスや再利用をしやすくすることができます。最初のうちは1個の大きなクラスにすべての処理を書いても構わないと思いますが、クラスを分割することも少しずつ覚えていくのがいいかもしれません。

PlayerWalk2D


1つめのスクリプトでは、プレイヤーキャラクターの移動、向きを変える、接地判定などを行っています。


PlayerJump2D


2つめのスクリプトでは、プレイヤーキャラクターをジャンプさせる処理を行っています。PlayerWalk2D クラスの isGround 変数の値をチェックし、多段ジャンプさせないよう制御しています。


インスペクター

インスペクターの設定はこんな感じで。
プレイヤーのゲームオブジェクトは Sprite から作成し、2つのスクリプトのほかに、Rigidbody2DCircleCollider2D をアタッチしています。
スクリーンショット (547).png

Rigidbody2D では、GravityScale の値と Constraints を変更しています。GravityScale は重力の影響を受ける強さです。Constraints の FreezeRotation は、回転しないようにする設定です。
スクリーンショット (549).png

CircleCollider2D では、プレイヤーの画像にあわせて Offse と Radius を微調整しています。今回は足元の接地位置だけ気にして、おおまかに設定しています。
スクリーンショット (546).png

フィールドをCubeで作る(テスト用)

今回のような簡単な動作確認などで見た目にこだわらない場合、足場などのフィールドは 3D オブジェクトの Cube で作成してしまうのが簡単です。
配置した Cube では BoxCollider を削除し、代わりに 2D 用の BoxCollider2D をアタッチしておきます。コライダーや Rigidbody は 3D 用と 2D 用とで別々のものが用意されているので注意しましょう。
スクリーンショット (576).png


今回は以上です。感想・質問・要望等、お待ちしております (´▽`)
(この記事の使用環境: Unity2018.1.0f2 (.NET4.x Equivalent)、Windows10)
follow us in feedly


おすすめ Unity 入門書

Unity入門者の方は、まずは一冊だけでも入門書をやってみるのをおすすめします。