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
など)も同様の方法で設定できます。
ディスカッション
コメント一覧
まだ、コメントがありません