今回やること
- GetComponentを学ぶ
- プレイヤーを動かす
- ステージの基礎を作成する
GetComponentを学ぶ
それでは、もろもろの作業を行う前にやっておくべき作業があります。
Assets/InputSystem_ActionsのGenerate C# Classにチェックを入れて、下のApplyを押してください。
これで上下左右の移動入力をした、ジャンプボタンを押したといった動作を簡単にプログラム上で検知できるようになりました。
では、ここから本格的にプログラムを書いていきます。
初めに、新しくプログラムを作成して、以下のように入力してください(今回も名前は自由でいいですが、今から作るプログラムはいわゆる自機を動かすものです。それが分かるように命名すると今後分かりやすいです)。
using UnityEngine;
public class Mover : MonoBehaviour
{
public Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
}
}
ここで登場したGetComponentというものは、このプログラムが適用されたオブジェクト上に<>内のコンポーネント(今回は RigidBody2D)があるなら、それを取得するというものです。
毎回ゲームを作るときにいちいちインスペクタ上でコンポーネントを指定するにはかなり面倒なので、基本的にはこれを使うことが多いです。
プレイヤーを動かす
では、この状態でヒエラルキを右クリック→2D Object→Sprite→Squareからオブジェクトを作って、前回説明したコンポーネントを追加する方法でAdd ComponentからRigidBody2DとBox Collider2Dを追加してください。
(ここで登場したBox Collider2Dはいわゆる「当たり判定」を実装するものです。)
このとき、 Main Camera以外のオブジェクトはすべて消してもかまいません。
ついでにRigidBody2DのGravity Scaleを0にしておいてください。
そして、今回作ったプログラムを追加してテストプレイすると...
スタート時に自動的にRigidBody2Dが取得できました。
それでは、加えてプログラムを編集していきます。書く内容が多いので、段階的に説明していきます。
次のような内容を追加してください。
using UnityEngine;
public class Mover : MonoBehaviour
{
public Rigidbody2D rb;
private InputSystem_Actions actions;
void Start()
{
rb = GetComponent<Rigidbody2D>();
actions = new InputSystem_Actions();
actions.Enable();
}
void Update()
{
}
}
InputSystem_Actionsは、初めの作業で生成されたコンピューターへの入力を受け取るプログラムです。
Start内の
actions = new InputSystem_Actions();
actions.Enable();
の作業を踏むことで、このプログラムを通してコンピューターがどのような入力をしたのかを受け取ることができます。
次に、以下のように書いてください。
using UnityEngine;
public class Mover : MonoBehaviour
{
public Rigidbody2D rb;
public float speed = 3;
private InputSystem_Actions actions;
void Start()
{
rb = GetComponent<Rigidbody2D>();
actions = new InputSystem_Actions();
actions.Enable();
}
void Update()
{
Move();
}
private void Move()
{
Vector2 vector = actions.Player.Move.ReadValue<Vector2>();
rb.linearVelocity = vector * speed;
}
}
ここで書いたMove関数は、自機を動かすための関数です。
ここで出てきたactions.Player.Move.ReadValue
ここで受け取った入力をvectorに代入しています。
この時、Vector2の中身はキーボードやスティックで入力した動かす方向と同じ向きの、長さが1のベクトルになります。
そして、これにspeedを掛けたものをrb.linearVelocityに代入しています。
このrb.linearVelocityは、Rigidbody2Dが入ってるオブジェクトの速度を表します。
つまり、このプログラムを毎フレーム動かすことで、このオブジェクトは入力した方向にspeedの速さで等速直線運動するようになります。
では、この状態でテストプレイすると...
入力に合わせて四角い自機が動くことが確認できます。
ステージの基礎を作成する
では、この状態で新しくSquareを作成して、Box Collider2D を追加してください。
そして、これをCtrl+C→Ctrl+Vで3回コピーして、シーンビューで下記のツールを選択して、
このツールを操作して、Wallで自機を囲むようにすると...
自機が出られないようになりました。Box Collider2Dで当たり判定が追加されたからですね。
ステージの基礎と自機が完成したので今回はこれで終わります。お疲れさまでした~
