关于使用character controller无法使用重力的问题

关于使用character controller无法使用重力的问题
在我自己学习的一个小游戏中,我按照教程的方式使用了charater controller组件,然后我就发现了一个问题,如果我的人物在平地上走是没有问题的,但是如果地势高了的话走上去没有问题,走下来的时候我的人物就会保持y轴的值,也就是说我的人物没有处于地面上了。最开始我以为是刚体的问题是我没有加入刚体的组件,但是后来我加入了刚体以后,我的人物还是没有落地。我调整了刚体的重量,还是没有效果。后来查找了多方面的资料才得以解决。
刚体(Rigidbody):通过物理模拟控制一个物体的位置。
在模型上利用刚体组件使得模型更像一个物体,因为他是受到物理模型控制的。使得游戏更加的贴合真实的场景。
角色控制器(Charater Controller):角色控制器主要用于第三人称或第一人称游戏主角控制,并不使用刚体物理效果。在某些环境下我们的游戏中的人物会在很短的时间达到很高的速度,并且在停止的时候能迅速的转身,显然这个是不符合我们现实社会的规则的。所以在这种情况下我们就不能使用刚体,因为使用刚体是没有办法模型该效果的,所以unity提供了charatercontroller 组件 。控制器不会对加在它自身上的力做出反应。所以如果在这种情况下你需要控制器达到你想要的效果的话最好使用rigidbody。
就比如我的问题,我使用了charatercontroller组件后我的人物没有办法受到重力的影响所以我只能给控制器一个速度。将控制器的
Vector3 movement;
if (!_charactercontroller.isGrounded) {//判断人物是否在地面上
_vertSpeed += -9.8f * 5 * Time.deltaTime;//不在地面上
if (_vertSpeed < -10.0f) {
_vertSpeed = -10.0f;
}
}
movement.y = _vertSpeed;
movement*=Time.deltaTime;
charater controller.Move(movement)

这样就解决了人物不落地的情况

你可能感兴趣的:(unity)