キー入力で移動する if (Input.GetKey(“***”))
速度は後々インスペクタ上で変更したいので、public変数として宣言。
キー入力が確認されたとき、速度を代入します。


キャラクタの向きを反転させる GetComponent<SpriteRenderer>().flipX = true;
左を向いたときにSpriteが反転するよう編集します。
←が押されたとき、trueとなるbool変数を追加します。

SpriteRendererコンポーネントを反転させるので、このスクリプトがアタッチされるオブジェクトにSpriteRenderが存在しないとエラーとなります。


ジャンプさせる//リジッドボディ.AddForce(new Vector2(0, ***));
キャラクタに RigidBodyと BoxColliderコンポーネントを追加します。

そのまま Playすると重力で落ちていく為、床となるSquareを作成し、BoxColliderを追加します。

1. キャラクタの Rigidbody2Dコンポーネントを取得します。
(StartメソッドのGetComponent~の部分)
2.移動の時と同様、spaceキーが入力されたとき、加える力を変数に代入します。
(Input.GetKey(“space”)の部分)
3.FixedUpdateでリジッドボディに力を加えます。(AddForce)

Spaceキーを押すとRigidbodyのY軸に力が加わり、ジャンプします。

※補足 AddForceについて、第2引数に ForceMode2D.Impulse と記述すると瞬時に力が加えられるそうです。
rb.AddForce(new Vector2(0, jump),ForceMode2D.Impulse);
地面に設置している時だけジャンプする//Tagによる制御
地面側の設定
地面オブジェクトにTagをつける。
1.AddTagを選択

2.List is Emptyの “+” から任意の名前のTagを作成。

3.オブジェクトのTagを変更。

キャラクタ側の設定
地面に設置しているか確認する用のBoxCollider2Dをキャラクタの下側に位置するように追加します。
こっちは地面と衝突してはいけないので、IsTriggerをONにします。

地面と接地していれば、フラグをtrueにするようコードを変更します。
OnTriggerメソッドでColliderがTagがGroundのオブジェクトと接しているとき、フラグをON、離れたときフラグをOFFにします。

spaceボタンを連打しても、連続ジャンプすることはありません。

コメント