阻止btKinematicCharacterController在斜坡上滑动

3

我不确定这是否是正确的论坛发布此问题;我正在考虑Game Development网站。

我正在使用LibGDX(Java)开发游戏,并设置了btKinematicCharacterController来控制玩家。这可以处理跳跃、行走和其他一切。

然而,我遇到了一个问题。想象一下,角色站在一个斜坡上——即使是一个非常缓慢的斜坡。角色会缓慢地滑下斜坡,这对我的游戏目的来说非常烦人(我想大多数人也是如此)。这是因为如果玩家只想站在斜坡上,他们就不能。

我认为这是由于碰撞检测解决方案造成的。玩家可能会稍微穿过地板,由于它在斜坡上,将沿着斜坡的法线被推出。这意味着,简单地说,他们会稍微被推动。

我的实际玩家模型是一个胶囊体,并且我使用幽灵对象作为btKinematicCharacterController

那么,我该如何确保我的角色不会滑下斜坡?当然,它仍然需要物理学,以便可以跳跃并与其他物体碰撞。

1个回答

2
其中一种流行的方法是在角色脚下有>=1个平台时禁用重力。可以通过以下方式实现:- 另一种方法是硬编码它(链接到一个短的讨论-2D Metroid相关),但这是一项艰苦的工作,并且严重依赖于舞台设计。 这个视频可能会有所帮助。它是Unity,与Bullet无关,但似乎适用。
我也对这个问题非常感兴趣。如果不能解决,请不要接受。读者如果有更好的答案,请随时分享。

你知道setSensor(true)是在哪个对象上调用的吗? - Jacob Garby
@Jacob Garby 我非常确定:在角色下方附加一个新的形状/物体。....与http://www.iforce2d.net/b2dtut/jumpability相同的概念,请查找围绕此图像http://www.iforce2d.net/image/jumpability-player-body.png的内容。(这是Box2D链接,但适用于您的情况。) - javaLover
谢谢。我目前无法进行测试,但我会在大约五个小时后回家后查看。 - Jacob Garby
@Jacob Garby 慢慢来,慢慢编码。Bullet的回调函数非常难用,尤其是如果你追求最高性能的话。如果这是你第一次使用,甚至可能需要几天时间。 - javaLover

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接