【组件界面】
【作用】
这是Unity为了使开发者能方便的开发第一人称视角的游戏而封装的一个组件,可以看做是受限的刚体,会表现出一定的物理效果,但不能表现出真实的物理效果,不受力的作用。例如,游戏中奔跑的角色能立刻停止移动不是真实的物理效果。带有该组件的物体在碰撞时相当于带有了碰撞器和刚体,如果和另外一个物体能发生碰撞,能接受到碰撞检测事件,但不会表现出真实的碰撞效果。
【属性】
- Slope Limit:斜坡限制,单位为度,角色可以走上小于或等于该值的斜坡。
- Step Offset:台阶高度,角色可以等上小于或等于该值的台阶,该值不能超过角色的高度。一般设为0.1~0.4
- Skin Width:皮肤宽度,两个碰撞器可以互相穿透到和它们的皮肤宽度一样深的地方。较大的皮肤宽度减少抖动,较小的皮肤宽度会导致角色被卡住。一般设为半径的10%
- Min Move Distance:最小移动距离,如果角色将要移动的距离小于该值,则角色不能移动,大多数情况下设为0。该值可用来减少抖动。
- Center,Radius,Height:类同 Capsule Collider胶囊碰撞器的对应值
【移动和朝向控制】
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
private CharacterController character;
private float speed = 2f;
private float rotateSpeed = 2f;
// Start is called before the first frame update
void Start()
{
character = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
transform.Rotate(0, Input.GetAxis("Horizontal") * rotateSpeed, 0);
Vector3 forward = transform.TransformDirection(Vector3.forward);
float curSpeed = speed * Input.GetAxis("Vertical");
character.SimpleMove(forward * curSpeed);
}
}
【参考】
https://docs.unity3d.com/Manual/class-CharacterController.html