当前位置:   article > 正文

Unity3d角色控制器CharacterController的用法_unity charactercontroller更新

unity charactercontroller更新

在这里插入图片描述
角色控制器可以让你更容易的处理有有碰撞的运动,同时不用处理刚体。(也就是说角色控制器负责处理角色的移动,如果添加角色控制器,就不用在添加刚体组件)

角色控制器不受力的影响,并且只有当你调用move函数时才会移动。他的运动收碰撞的约束。

Slope Limit爬坡限制:小于等于此角度可以上坡
Step Offset台阶高度:
Skin Width 皮肤宽度:额外的增加这段距离可以触发碰撞, 一般其值很小但不为0
Min Move Distance:0,太多不行,太小动不了
Center:中心点坐标
Radius:半径,一般0.5
Height:高,一般2.0

以下代码不可运行,理解。

在角色跳跃上的应用:

		if(grounded)
        {
            //按键移动的水平和垂直轴对应世界坐标的x与z轴
            moveDirection = new Vector3(parameter.inputMoveVector.x, 0,parameter.inputMoveVector.y);
            // parameter.inputMoveVector = new Vector2(input.GetAxis("Horizontal"),input.GetAxis("Vertical"));
            //世界方向转为自身方向 
            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= speed;
            if(parameter.inputJump)
            {
                moveDirection.y = jumpSpeed;
                AudioSource.PlayClipAtPoint(jumpAudio, transform.position);
                CurrentSpeed();
            }
    
        }
        //下降过程
        moveDirection.y -= gravity * Time.deltaTime;
        //更新控制器的位置(同时也会移动子节点摄像机的位置)
        CollisionFlags flags = controller.Move(moveDirection * Time.deltaTime);
        //是否接触地面
        grounded = (flags & CollisionFlags.Below) != 0;
        //CollisionFlags是CharactorController的返回值,Below表示胶囊体脚部与地面碰撞的信息,
        //Side--身体发生碰撞,如撞在了墙上。  Above--头顶发生碰撞
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

在角色下蹲上的应用:

//角色蹲下使更新角色控制器的高度和中心点
        if(crouching)//下蹲状态
        {
            controller.height = normalControllerHeight - crouchDeltaHeight;
            controller.center = normalControllerCenter - new Vector3(0,crouchDeltaHeight/2,0);
        }
        else
        {
            controller.height = normalControllerHeight;
            controller.center = normalControllerCenter;
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

为什么下蹲中心点是下蹲距离的一半呢?

因为下蹲距离就是胶囊体直径(高度)减少了,而中心点下降距离即为半径,所以是一半。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/118752?site
推荐阅读
相关标签
  

闽ICP备14008679号