为什么我的 Dynamic Body 会通过 pymunk 中的 Static body 下沉?
Why is my Dynamic Body sinking through the Static body in pymunk?
我正在尝试使用 Pygame 和 Python 中的 Pymunk 制作类似 Pocket Tanks 的坦克大战游戏。我有一个 Dynamic body,它是 Tank 和一个 Static Body,它是地面。一切正常,直到一段时间后,Tank 自行向左移动并沉入 Ground Static body 并在 "no-cliping" 穿过地面时不断地上下弹跳。
我所有的代码都可以在这里找到:
https://github.com/MysteryCoder456/PyTanks.io
这是一段视频(请记住,只有在坦克着陆后才按一次 'D' 键):
https://streamable.com/2fuzz
编辑:我使用的是 Python 3.7.6、Pygame 2.0.0dev6、MacOS 10.15.3。不知道是哪个版本的Pymunk。
可能导致该行为的一件事是没有将重心 (CoG) 置于实际中心(或靠近它)。在您的代码中,地面和坦克多边形的构建方式意味着它们的 CoG 将位于形状的第一个角,即 (0,0)。尝试将多边形顶点构建为:
self.vertices = (
(-width/2, -height/2),
(width/2, - height/2),
(width/2, height/2),
(-width/2, height/2)
)
与这里的问题类似
我会在 pymunk 的文档中澄清这一点,这似乎是一个容易犯的错误。
我正在尝试使用 Pygame 和 Python 中的 Pymunk 制作类似 Pocket Tanks 的坦克大战游戏。我有一个 Dynamic body,它是 Tank 和一个 Static Body,它是地面。一切正常,直到一段时间后,Tank 自行向左移动并沉入 Ground Static body 并在 "no-cliping" 穿过地面时不断地上下弹跳。
我所有的代码都可以在这里找到: https://github.com/MysteryCoder456/PyTanks.io
这是一段视频(请记住,只有在坦克着陆后才按一次 'D' 键): https://streamable.com/2fuzz
编辑:我使用的是 Python 3.7.6、Pygame 2.0.0dev6、MacOS 10.15.3。不知道是哪个版本的Pymunk。
可能导致该行为的一件事是没有将重心 (CoG) 置于实际中心(或靠近它)。在您的代码中,地面和坦克多边形的构建方式意味着它们的 CoG 将位于形状的第一个角,即 (0,0)。尝试将多边形顶点构建为:
self.vertices = (
(-width/2, -height/2),
(width/2, - height/2),
(width/2, height/2),
(-width/2, height/2)
)
与这里的问题类似