ニュース

Top  >   13. キャラクター  >   Q, キャラクターをスクリプトで移動させたい

Q, キャラクターをスクリプトで移動させたい

2026/03/20

メインコンテンツへスキップ
< すべてのカテゴリに戻る

A,結論

CharacterController や Transform を使うと、キーボード入力でキャラクターを動かせます。

実装 / 手順

  1. CharacterController を付けます。
  2. 入力値を取得して移動量を作ります。
  3. 回転やカメラ向きも必要に応じて追加します。

Input SystemでValue / Vector2のMove ActionにWASDの2D Vector Compositeやスティックを割り当て、moveActionへ指定します。Actionの有効化はInput Action Manager等で行います。CharacterController.Moveは重力を自動適用しないため、例では鉛直速度を加算しています。

サンプルコード

using UnityEngine;
using UnityEngine.InputSystem;

[RequireComponent(typeof(CharacterController))]
public class SimpleCharacterMover : MonoBehaviour
{
    [SerializeField] private InputActionReference moveAction;
    [SerializeField] private float moveSpeed = 2f;
    [SerializeField] private float gravity = -9.81f;
    private CharacterController controller;
    private float verticalSpeed;

    private void Awake()
    {
        controller = GetComponent<CharacterController>();
    }

    private void Update()
    {
        if (moveAction == null || moveAction.action == null) return;
        Vector2 input = Vector2.ClampMagnitude(
            moveAction.action.ReadValue<Vector2>(), 1f);
        Vector3 velocity = new Vector3(input.x, 0f, input.y) * moveSpeed;
        if (controller.isGrounded && verticalSpeed < 0f) verticalSpeed = -2f;
        verticalSpeed += gravity * Time.deltaTime;
        velocity.y = verticalSpeed;
        controller.Move(velocity * Time.deltaTime);
    }
}

※ 実機確認が必要な項目は、Editor だけで判断せず、対象デバイスでも必ず動作確認してください。

難易度:Level 2(初心者)
対象プラットフォーム:PC,Unity,Visual Studio
関連キーワード:移動,CharacterController,スクリプト,aca

Level 1-2 向けバナーLevel 3-5 向けバナー 1Level 3-5 向けバナー 2