キーボードイベントを取得してTransformを操作しよう
Transform
に座標を指定して移動させる方法です。
Input.GetAxis
から値を取得し、Rotate
で方向を変更し、Translate
で移動します。
回転、移動のスピードはpublic
の変数にしておいて、エディタから編集できるようにしておくと便利です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour {
[Range(1f, 50f)] public float rotateSpeed = 10f;
[Range(0f, 1f)] public float walkSpeed = 0.1f;
void FixedUpdate () {
//キー操作を取得する
float horizontal = Input.GetAxis ("Horizontal");
float vertical = Input.GetAxis ("Vertical");
//回転
transform.Rotate(new Vector3(0.0f, horizontal*rotateSpeed, 0.0f));
//キャラの向いている方向に移動
transform.Translate (Vector3.forward * vertical * walkSpeed);
}
}
Rigidbodyやコライダーを調整しよう
Rigidbodyをアタッチしたプレイヤーを上記の方法で動かすと意図しない回転をしてしまったり、コライダーの設定によってはぶつかりたい対象にぶつかれなかったり、する事があります。
インスペクタウィンドウで各種コンポーネントを適切な値に変更して、目的の挙動になるように調整しましょう。
RigidbodyのConstraints
を調整して回転させたくない方向を制御したり、
コライダーの大きさや中心点を調整して障害物と当たる距離や位置を調整したりします。