こんにちは。KTです。
今回はキャラクター下のようにスペースキーを使ってジャンプができるようにします。
・スペースキーでジャンプができる。
ジャンプをできるようにする
ではPlayerスクリプトを開いてVisualStudioを起動してください。
プログラムの例を書きます。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { // RigidBody2Dが入るrbodyという記号を用意します。 Rigidbody2D rbody; // Start is called before the first frame update 最初だけカッコ内のプログラムが流れます。 void Start() { // プレイヤーキャラクターに設定したRigidBody2Dをrbodyに入れます。 rbody = GetComponent<Rigidbody2D>(); } // Update is called once per frame 1フレームごとにカッコ内のプログラムが流れます。 void Update() { // floatは後述の記号は数値しか入れられない意味。xに←キーが押されたら-1、→キーが押されたら1、何も押されてない場合は0が代入されます。 float x = Input.GetAxisRaw("Horizontal"); // float xのxです。キーが押されていない場合、カッコ内のプログラムが動きます。 if (x == 0) { // キャラクターのx軸方向に0のスピードを加えます。(停止) rbody.velocity = new Vector2(0, rbody.velocity.y); } // float xのxです。←キーが押された場合、カッコ内のプログラムが動きます。 if (x == -1) { // キャラクターのx軸方向に-5のスピードを加えます。(左に移動) rbody.velocity = new Vector2(-5, rbody.velocity.y); // キャラクターの絵を左向きにします。 transform.localScale = new Vector2(-1, 1); } // float xのxです。→キーが押された場合、カッコ内のプログラムが動きます。 if (x == 1) { // キャラクターのx軸方向に5のスピードを加えます。(右に移動) rbody.velocity = new Vector2(5, rbody.velocity.y); // キャラクターの絵を右向きにします。 transform.localScale = new Vector2(1, 1); } // スペースが押されてy軸方向にキャラクターが動いていない場合、y軸方向にプラスの力を加えます。 if (Input.GetKeyDown("space") && rbody.velocity.y == 0) { rbody.AddForce(Vector2.up * 400); } } }
今回はプログラムの48~52行目にジャンプの処理を追加しました。
では上記のプログラムをコピーしてスクリプトに上書きしてください。
追加したプログラムの説明をします。
if (Input.GetKeyDown(“space”) && rbody.velocity.y == 0)
{
rbody.AddForce(Vector2.up * 400);
}
if:もし()内なら{}内のプログラムを実行する
Input.GetKeyDown(“space”):スペースが入力されたら反応する
&&:A && Bで「Aであり、Bである」
rbody.velocity.y == 0:キャラの上下方向の速度が0
rbody.AddForce(Vector2.up * 400);:キャラの上下方向にVector2.up * 400の力を加える
つまり、キャラクターが宙に浮いていないときにスペースが押されたらキャラクターをジャンプさせる。
プログラムの記述と保存が終わりましたらUnityにてゲームの実行をしてください。
スペースキーを押すとキャラクターがジャンプしたと思います。
しかしこのままでは壁にぶつかった時にキャラクターがざらざらしてるので引っかかってしまいます。
そこでキャラクターをつるつるにして壁に引っかからないようにします。
UnityのAssetsを右クリックしてCreate>Folderを選択して「Material」フォルダを作ってください。
続いて、Materialフォルダをダブルクリックしてフォルダ内で右クリックしてCreate>Physics Material 2Dを選択してください。
material:素材。
作ったマテリアルの名前をPlayerMaterialとつけてください。
そしてPlayerMaterialを選択した状態で画面右側のInspectorにあるFrictionを0にしてください。
Friction:摩擦=すべりやすさ。
Bounciness:弾性=跳ね返りやすさ。
次に下の図のようにPlayerオブジェクトを選択してPlayerMaterialをBox Collider 2DとCircle Collide 2DのMaterialに入れます。
次回はゴールを作ります。忘れずに保存をしてください。