【Unity】Input Systemを使用して、プレイヤーを動かす方法
unityの新しい入力システムパッケージのInput Systemを使って、プレイヤーを動かす方法です。
完成動作
上下左右キーでプレイヤー(Sphere)が移動する。
作り方
1.シーンに各オブジェクトを配置
1-1.以下のようにPlaneを床にして、Sphere(赤い球)をプレイヤーとして配置する。
2.プレイヤーにRigidbodyを追加
2-1.プレイヤー(Sphere)にRigidbodyを追加する。(プレイヤーを動かす処理はRigidbodyのAddForceを使用して行うため)
3.Input Systemパッケージのインストール
3-1.Package Managerを開く
3-2.右上の検索窓で"Input System"で検索
3-3.上記画像の右下のInstallを押下してインストール
※インストール後に以下のようなメッセージが表示された場合、旧型式のInput Managerを無効化して新しいInput Systemを有効かするかどうかという意味なので、今回は旧式を使用しないので、Yesを押下。
3-4.Saveするとunityが再起動されるので待つ。
3-5.Input Systemのインストールが完了
4.プレイヤーにPlayer Inputコンポーネントを追加して設定
4-1.プレイヤー(Sphere)にPlayer Inputコンポーネントを追加
4-2.Player InputコンポーネントCreate Actionsを押下
4-3.任意の場所にInputActionsという名前で保存(今回はAssetsフォルダにInputというフォルダを作成してそこに保存)
4-4.以下のような画面が表示される場合があるが、こちらはいったん閉じる。
4-5.以下のように自動的にActionsプロパティに先ほど作成したInputActionsがアタッチされているはず。(されていなかったら自分でアタッチ)
5.Input Systemでプレイヤーを動かすスクリプトを作成
5-1.PlayerController.csという名前のスクリプトを作成して、以下のコードを記載する。
using UnityEngine;
using UnityEngine.InputSystem;
[RequireComponent(typeof(Rigidbody))]
public class PlayerController : MonoBehaviour
{
[SerializeField]
[Tooltip("プレイヤーの速度調整")]
private float speed = 0;
private Rigidbody rb;
private float movementX;
private float movementY;
// Start is called before the first frame update
void Start()
{
// プレイヤーにアタッチされているRigidbodyを取得
rb = gameObject.GetComponent<Rigidbody>();
}
/// <summary>
/// 移動操作(上下左右キーなど)を取得
/// </summary>
/// <param name="movementValue"></param>
private void OnMove(InputValue movementValue)
{
// Moveアクションの入力値を取得
Vector2 movementVector = movementValue.Get<Vector2>();
// x,y軸方向の入力値を変数に代入
movementX = movementVector.x;
movementY = movementVector.y;
}
private void FixedUpdate()
{
// 入力値を元に3軸ベクトルを作成
Vector3 movement = new Vector3(movementX, 0.0f, movementY);
// rigidbodyのAddForceを使用してプレイヤーを動かす。
rb.AddForce(movement * speed);
}
}
※補足
Moveアクションというのは4-2で作成したInputActionsの中のActionsの中の"Move"の操作のこと。
詳しくはInput Systemについてネットで調べてください。
6.プレイヤーにPlayerControllerスクリプトをアタッチ
6-1.プレイヤーにPlayerControllスクリプトをアタッチ
6-2."Speed"プロパティを任意の値に設定し、プレイヤーの移動速度を調整(今回は10)
完成
これで上下左右キーを押すとプレイヤーが移動する。
ディスカッション
コメント一覧
まだ、コメントがありません