プレイヤーを動かす(Transform)

キーボードイベントを取得してTransformを操作しよう

Transformに座標を指定して移動させる方法です。 Input.GetAxisから値を取得し、Rotateで方向を変更し、Translateで移動します。

回転、移動のスピードはpublicの変数にしておいて、エディタから編集できるようにしておくと便利です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
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を調整して回転させたくない方向を制御したり、

コライダーの大きさや中心点を調整して障害物と当たる距離や位置を調整したりします。