我不确定这是否是发布此文章的正确论坛;我当时正在考虑游戏开发网站。
我正在用LibGDX(Java)开发游戏,并设置了btKinematicCharacterController
来控制玩家。这可以处理跳跃,行走以及其他所有事情。
但是,我遇到了一个问题。想象一下,角色正站在斜坡上-甚至是一个非常平缓的斜坡。角色将缓慢滑下坡道,这对我的游戏(也是我想象的大多数)而言非常令人讨厌。这是因为如果玩家只想站在坡道上,他们就不会这样做。
我认为这是由于冲突检测分辨率而发生的。玩家可能会略微掉落在地板上,并且由于它在斜坡上,因此会沿着斜坡的法线推出。简而言之,这意味着将它们稍微推开。
我的实际播放器模型是胶囊,我在btKinematicCharacterController
中使用了幻影对象。
那么如何确保我的角色不会滑下斜坡呢?当然,它还需要具有物理性,以便它可以跳跃并与其他对象碰撞。
最佳答案
流行的方法之一是disable gravity when there are >=1 platforms under the character's foot。
可以通过以下方式完成:
传感器(setSensor(true)
+碰撞回调)
有关碰撞回调的更多信息:http://www.bulletphysics.org/mediawiki-1.5.8/index.php/Collision_Callbacks_and_Triggers
射线测试:http://bulletphysics.org/mediawiki-1.5.8/index.php/Using_RayTest
另一种方法是hard code it(链接到简短讨论-与2D Metroid相关),但这是一项艰苦的工作,并且在很大程度上取决于舞台设计。
This video可能会有所帮助。它是Unity,与Bullet没有关系,但似乎适用。
我对这个问题也很感兴趣。如果无法解决,请不要接受。
对于读者来说,如果有更好的答案,请随时分享。
关于java - 阻止btKinematicCharacterController向下倾斜,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43707819/