赞
踩
CharacterController是Unity自带的组件,常用于第三人称或第一人称角色控制,可以简单的把它看成一个可以指定移动方向的胶囊碰撞体,角色控制器允许您在受碰撞约束的情况下轻松进行移动,而无需处理刚体。
属性 | 介绍 |
---|---|
Slope Limit | 角色能爬坡的最大角度 |
Step Offset | 角色能上台阶的最大高度 |
Skin Width | 两个characterController能够穿透彼此皮肤的最大深度,高的值可以减少抖动,低的值容易让角色卡住,比较好的值是Radius的10%。如果你的角色经常卡住,很可能就是这个值太小了。 |
Min Move Distance | 最小移动距离,如果移动距离低于这个值,则不会移动。可以较少角色的抖动。 |
Center | 胶囊碰撞体的中心点 |
Radius | 胶囊碰撞体的半径(胖瘦) |
Height | 胶囊碰撞体的高度 |
区别
Move | SimpleMove | |
---|---|---|
官方介绍 | Supplies the movement of a GameObject with an attached CharacterController component. | Moves the character with speed. |
参数 | 沿y轴的速度被忽略。 速度以米/秒为单位。 重力是自动应用的。 | 移动时候需要注意乘以时间 |
重力 | 重力自动应用 | 没有重力,需要自己添加 |
返回值 | bool,是否贴地 | CollisionFlags,碰撞信息 |
void Update()
{
controller.SimpleMove(forward * speed);
controller.Move(forward * speed * Time.deltaTime);
}
建议每帧只调用一次Move或者SimpleMove
CharacterController不会受到任何力的影响,也不会对任何物体产生力。
如果想实现物理效果,则可以在下列事件中添加自己想实现的效果
事件 | 描述 |
---|---|
OnCollisionEnter | collider进入controller时触发 |
OnCollisionExit | collider从controller内离开时触发 |
OnCollisionStay | 有Collider停留在controller内时触发 |
OnTriggerEnter | trigger进入controller时触发 |
OnTriggerExit | trigger从controller内离开时触发 |
OnTriggerStay | 有trigger停留在controller内时触发 |
OnControllerColliderHit | 和其他的controller碰撞时触发 |
private void OnControllerColliderHit(ControllerColliderHit hit)
{
float power = 2.0F;
Rigidbody hitRigidBody = hit.collider.attachedRigidbody;
if (hitRigidBody == null || hitRigidBody.isKinematic)
{
return;
}
//给碰撞物体附加当前速度对应的力
hitRigidBody.AddForce(_Controller.velocity * power);
}
【Unity学习笔记】CharacterController组件_一白梦人的博客-CSDN博客_charactercontroller组件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。