Unity3D|Unity3D 角色控制器 Character Controller

添加组件 Unity3D|Unity3D 角色控制器 Character Controller
文章图片

Unity3D|Unity3D 角色控制器 Character Controller
文章图片

角色控制器组件介绍 【Slope Limite】爬坡角度限制(如图限制爬坡角度为10度,超过10度的斜坡无法前进)
【Step Offset】脚步长度限制
【Skin Width】和胶囊体相关,建议不用调0.001
【Min Move Distance】两个物体间的最小距离,到这个距离后,物体就不在前进
【Center】胶囊体的位置(相对物体对象的位置)
【Radius】胶囊体周长
【Height】胶囊体高度
【胶囊体】角色控制器的碰撞模型,用于【Slope Limite】、【Step Offset】、【Min Move Distance】的计算
Unity3D|Unity3D 角色控制器 Character Controller
文章图片

角色控制器的脚本调用 控制物体移动:

  1. Move(); 不包含重力效果的移动
  2. SimpleMove(); 包含重力效果的移动,推荐使用
    CharacterController组件对象.SimpleMove(方向 * 移动速度 * Time.deltaTime);
    cc.SimpleMove(transform.right * speed * Input.GetAxisRaw("Horizontal") * Time.deltaTime);
世界坐标系: Vector3.方向
【Unity3D|Unity3D 角色控制器 Character Controller】本地坐标系: transform.方向(只有:up、forward、right,只有正方向,没有负方向)
public class PlayMove : MonoBehaviour { private CharacterController cc; public float speed; // Start is called before the first frame update void Start() { //获取角色控制器组件对象 cc = GetComponent(); //初始化速度 speed = 100f; }// Update is called once per frame void Update() { //控制物体移动,SimpleMove包含重力效果的移动,前后移动 cc.SimpleMove(transform.forward * speed * Input.GetAxisRaw("Vertical") * Time.deltaTime); //控制物体移动,SimpleMove包含重力效果的移动,左右移动 cc.SimpleMove(transform.right * speed * Input.GetAxisRaw("Horizontal") * Time.deltaTime); } }

    推荐阅读