気軽に遊べるミニゲームを制作しています

ブラウザゲームまとめ

2Dキャラを動かす2

Unity C#

2Dキャラを動かす1はこちら

キー入力で移動する if (Input.GetKey(“***”))

速度は後々インスペクタ上で変更したいので、public変数として宣言。
キー入力が確認されたとき、速度を代入します。

←を押すと左へ、→を押すと右へ移動します。

キャラクタの向きを反転させる GetComponent<SpriteRenderer>().flipX = true;

左を向いたときにSpriteが反転するよう編集します。
←が押されたとき、trueとなるbool変数を追加します。

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

左に移動するとき、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ボタンを連打しても、連続ジャンプすることはありません。

コメント

タイトルとURLをコピーしました