雑ですがよろしくお願いします...
今回はTransformを使います
環境
Unity6
InputActionの作成
左クリック > Create > InputActions
それぞれ+を押し設定する
WASDの作り方
Moveの右にある+を押すとUP~とあるのでそれ押す
自動で4個作られるのでそれぞれにPathを設定
Saveを忘れずに
コード
スクリプト名は何でもいいです
今回はPlayerBehaviorという名前で作った
using UnityEngine;
using UnityEngine.InputSystem;
using static UnityEngine.Rendering.DebugUI;
using UnityEngine.Windows;
using UnityEngine.UIElements;
public class PlayerBehavior : MonoBehaviour
{
public float moveSpeed = 10f;
public float deadZone = 0.2f;
private Vector2 moveInput;
private void FixedUpdate()
{
// 前方
if (moveInput.y > deadZone || moveInput.y < -deadZone)
{
transform.Translate(Vector3.forward * moveInput.y * Time.deltaTime);
}
// 左右
if (moveInput.x > deadZone || moveInput.x < -deadZone)
{
transform.Translate(Vector3.right * moveInput.x * Time.deltaTime);
}
}
public void OnMove(InputAction.CallbackContext context)
{
moveInput = context.ReadValue<Vector2>();
}
}
適当にオブジェクトを出して作成したスクリプトをAddする
ついでにPlayerInputもAddする
Player Inputの設定
Actionsに先ほど作成したInputを設定
BehaviorをInvokeに(InputAction.CallbackContext context使ってるときはこれ)
Noneの所に、スクリプトをアタッチしたオブジェクトを入れNoFunctionのところをOnMoveにする
OnMoveがない場合→スクリプトでOnMove関数のアクセス修飾子(publicとかprivateのやつ)がpublicになっているか確認
再生して確認
おわり