Unity关于移动时会穿透的一些问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37027464/article/details/80246967

在大部分游戏里面,我们的游戏主角在移动过程中都是无法穿透场景里面的物体的(除特殊情况外),这就涉及到人物的移动与碰撞的问题了。

相信unity里面的移动方法大家都会的,最简单的应该就是Translate()了,同时关于碰撞,一般的做法就是给场景物体添上collider,给人物添上刚体rigibody和collider,如果怕被撞飞,就锁定x ,y , z。

那么问题来了,有时候我们明明添了colider,人物也添加了刚体,为什么还是会穿透呢?

事实上移动中的碰撞应该用Rigibody.MovePosition()或者Rigidbody.velocity等刚体方法。这些方法会模拟物理状态来达到一些接近于现实世界的物理效果。而且切记这些方法应该放在FixUpdate里。

而Translate则是直接的位置position赋值,会破坏刚体环境。所以如果出现了穿透问题的朋友不妨尝试把translate改为Rigibody.MovePosition()或者Rigidbody.velocity等刚体方法

猜你喜欢

转载自blog.csdn.net/weixin_37027464/article/details/80246967