unity3d - 防止对撞机在地形中发生故障
问题描述
我正在使用地形Unity 2019.2.1f1
和带有网格对撞机的洞穴的自定义网格。
我的角色有一个比洞穴入口大得多的胶囊对撞机应该无法进入。但由于两个对撞机的圆度,他可以在洞穴中生效,通过地形对撞机发生故障。
我认为它的速度并不过分,我正在移动角色rb.MovePosition()
,FixedUpdate()
并将其刚体碰撞检测设置为连续推测(尝试了所有“连续”模式)
在下面的动画中,您可以看到洞穴的网格和角色周围的胶囊碰撞器。
我怎样才能防止这种情况发生?我如何对 Unity 说:“我希望对撞机坚如磐石而不是棉花糖”?
解决方案
Unity中的碰撞器是坚如磐石的。他们没有任何软物理能力,他们唯一会相互扭曲的时刻就是你强迫他们这么做的时候。
在这里,您将通过强制设置刚体位置到一个不可能的位置。尽管空间不足,游戏仍会尽力适应您的刚体。
你可以
只使用力和速度。您可以简单地将速度设置为您选择的方向,并在您停止移动时将其设置为 0,或者使用
AddForce
,这基本上是相同的。继续使用
MovePosition
,但使用SphereCast
orCapsuleCast
来检查您是否有足够的空间先移动。
推荐阅读
- ios - modalPresentationStyle 不更新数据
- reactjs - 使用不同的值多次初始化 Context.Provider
- java - 按下 MainActivity 的按钮后,SecondActivity 的 TextView 变得可见?
- mysql - MySQL-Show,对于每一年,当年最大的部门,以及它的平均工资
- performance-testing - 在 JMeter Connect 中,某些记录的时间显示会导致经过的时间较长
- javascript - 为什么当抛出错误不被认为是好的做法时,拒绝常见事件的错误被认为是好的做法?
- python - 在给定键的字典列表中查找具有最小值的字典
- sql - 使用 Python 自定义选择
- ssms - 数据类型sql数据库
- java - 如何在 Eclipse 的调试表达式视图中打印新行?