PS:基于CharacterController
创建Capsule胶囊体,并将相机作为胶囊体的子物体,调整好适当的视野角度。
给Capsule胶囊体添加CharacterController组件,之后创建两个脚本分别是:FirstController和CameraController。
FirstController添加到Capsule胶囊体上,CameraController添加到子物体摄像机上。
脚本如下:
public class FirstController : MonoBehaviour
{
//移动速度
float speed = 1f;
//相机
public Transform camera;
//角色控制器
private CharacterController characterController;
void Start()
{
characterController = this.GetComponent<CharacterController>();
}
void Update()
{
Vector3 forward = camer.transform.TransformDirection(Vector3.forward);
Vector3 right = camer.transform.TransformDirection(Vector3.right);
float h = speed * Input.GetAxis("Horizontal");
float v = speed * Input.GetAxis("Vertical");
characterController.SimpleMove(h * right);
characterController.SimpleMove(v * forward);
}
}
public class CameraController : MonoBehaviour
{
//相机的转动速度
float xSpeed = 200f;
float ySpeed = 200f;
//上下视野范围限制
float minY = -70f;
float maxY = 70f;
//旋转变化数值
float rotationX;
float rotationY;
void LateUpdate()
{
rotationX += Input.GetAxis("Mouse X") * xSpeed * Time.deltaTime;
rotationY += Input.GetAxis("Mouse Y") * ySpeed * Time.deltaTime;
if (rotationX < 0)
{
rotationX += 360;
}
if (rotationX > 360)
{
rotationX -= 360;
}
rotationY = Mathf.Clamp(rotationY, minY, maxY);
transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
}
}