最近我解决了一个相当棘手的问题,想分享一下我的解决方案,以便可以帮助到其他人!这是我的具体使用场景,但是我认为涉及的层次技术可能可以应用到很多情况下。技术细节在下面, 如果这不适用于你/你的项目,自由跳过阅读!另外,我使用的Unity版本有点老,但是我怀疑这个技术应该仍然适用于更现代的项目。为了提供一些背景,我需要这些“拉块”来使用Rigidbody物理引擎的重力,但仍然与我用于所有生物/玩家/NPC的CharacterControllers碰撞/阻塞。之前我的解决方案是使用一个Rigidbody和BoxCollider来碰撞“地图”和“生物”。但是,如你所见,这导致了当直接将“拉块”对象移动到生物上时,经常会将它们 teleport到块上。为了解决这个问题,我经过了很多次迭代,但最终确定了这个解决方案...... 首先,我保留了原始的Rigidbody/BoxCollider,利用Rigidbody内置的“重力”(不是静态/移动在Y轴上),但现在它只与我的地图对象(使用ExcludeLayers)碰撞。包括地板、墙壁等,以便当重力被应用时不会穿过世界。其次,我创建了一个副本的Rigidbody/BoxCollider,但这次Rigidbody是完全静态的,没有重力,只与对象(CharacterControllers)在“生物”层(也使用ExcludeLayers)碰撞。这个版本的盒子会随着主盒子对象的移动而移动,但防止了生物的CharacterControllers与主Rigidbody的重力相互作用,导致初始错误。 如果你实现了类似这样的解决方案,只要确保将所有适当的对象标记为正确的层级!否则,可能不会起到什么作用,甚至可能会给你带来更多的头痛。祝你的项目成功!
角色控制器和重力rigidbody - 怪异物理问题 + 解决方法
评论 (0)