需要一个代表玩家的物体和摄像机,摄像机放在玩家物体的子物体中,玩家物体加上CharacterController组件,该组件已经能实现碰撞(但没有重力),不用额外再加刚体组件。
以下代码分别挂在玩家物体和摄像机上即可实现玩家第一人称的视角转动和移动。
先是玩家的移动代码,挂在玩家物体上:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private CharacterController cc;//角色控制组件
public float speed = 8;
void Start()
{
cc = this.GetComponent<CharacterController>();
}
void Update()
{
Walk();
if (transform.position.y != 1)//保证玩家在地面上,防止卡bug上天
{
transform.position = new Vector3(transform.position.x, 1, transform.position.z);
}
}
private void Walk()
{
float h = Input.GetAxis("Horizontal") * speed * Time.deltaTime;//获取水平移动值
float v = Input.GetAxis("Vertical") * speed * Time.deltaTime;//获取垂直移