Unity6における新しいInput Systemを使ったキーボード入力の技術資料
OnMoveイベントを使用することで、より簡単にキャラクターの動きを処理できます。以下に、OnMoveイベントを使った方法を説明します。
OnMoveイベントを使ったInput Systemの実装(SendMessageでの登録)
1. Input Systemの設定
- Unity6ではすでにインストール済みです
- それ以前の場合は、リンクのステップに従ってインストールしてください。
2. Input Actionsアセットの設定
- Unity6ではすでに設定済みです
- それ以前の場合は、上記リンクのステップに従ってインストールしてください。
3. Player Inputコンポーネントの追加
キャラクターのゲームオブジェクト(今回はCube)にPlayerInputコンポーネントをアタッチ(Add Componeボタンから)します。

Input Actionsに最初から作成されているInput Actionsアセット(InputSystem_Actions)を割り当てます。

4. PlayerControllerスクリプトの作成
新しいC#スクリプトを作成し、OnMoveイベントを実装します。
PlayerControllerスクリプトのOnMoveメソッドはMoveアクションがトリガーされるたびに呼び出されます。
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerController : MonoBehaviour
{
private Vector2 moveInput;
// `OnMove`イベントメソッド(InputSystemのBehaviorがSendMessagesの場合)
public void OnMove(InputValue val)
{
moveInput = val.Get<Vector2>();// 入力の取得
Debug.Log("Move Input: " + moveInput);
}
private void Update()
{
// キャラクターの動きをここで制御します
float moveX = moveInput.x;
float moveZ = moveInput.y; 平面移動のため
transform.Translate(new Vector3(moveX, 0, moveZ) * Time.deltaTime);
}
}
5. PlayerInputコンポーネントの設定
- キャラクターのゲームオブジェクト(今回はCube)に作成したPlayerContollerコンポーネントをアタッチします
- Player Inputコンポーネントの設定で、
Behaviorを「Send Messages」に変更します。

6. 動作確認
Unityエディターでプレイして、WASDキーやゲームパッドでキャラクターが移動するかを確認します。
OnMoveイベントを使ったInput Systemの実装(UnityEventでの登録)
1. Input Systemの設定
- Unity6ではすでにインストール済みです
- それ以前の場合は、リンクのステップに従ってインストールしてください。
2. Input Actionsアセットの設定
- Unity6ではすでに設定済みです
- それ以前の場合は、上記リンクのステップに従ってインストールしてください。
3. Player Inputコンポーネントの追加
キャラクターのゲームオブジェク

Input Actionsに最初から作成されているInput Actionsアセット(InputSystem_Actions)を割り当てます。

4. PlayerControllerスクリプトの作成
新しいC#スクリプトを作成し、OnMoveイベントを実装します。
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerController : MonoBehaviour
{
private Vector2 moveInput;
// `OnMove`イベントメソッド(InputSystemのBehaviorがInvoke Unity Eventsの場合)
public void OnMove(InputAction.CallbackContext context)
{
moveInput = context.ReadValue<Vector2>(); // 入力の取得
Debug.Log("Move Input: " + moveInput);
}
private void Update()
{
// キャラクターの動きをここで制御します
float moveX = moveInput.x;
float moveZ = moveInput.y; // 平面移動のため
transform.Translate(new Vector3(moveX, 0, moveZ) * Time.deltaTime);
}
}
5. PlayerInputコンポーネントの設定
- キャラクターのゲームオブジェクト(今回はCube)に作成したPlayerContollerコンポーネントをアタッチします
- Player Inputコンポーネントの設定で、
Behaviorを「Invoke Unity Events」に変更します。

6. イベントの設定
- Player Inputコンポーネントの設定で、
Events > PlayerのMove(CallBackContext)を開きます - Moveイベントに作成したPlayerControllerのOnMoveメソッド(イベント)を割り当てます

- Moveイベントに作成したPlayerControllerのOnMoveメソッド(イベント)を割り当てます
PlayerControllerスクリプトのOnMoveメソッドはMoveアクションがトリガーされるたびに呼び出されます。
7. 動作確認
Unityエディターでプレイして、WASDキーやゲームパッドでキャラクターが移動するかを確認します。
OnMoveイベントを使用することで、入力イベントを簡潔に処理でき、コードが整理されます。必要に応じて、他のイベント(OnJumpなど)も同様の方法で設定できます。





ディスカッション
コメント一覧
まだ、コメントがありません