python - 如何检查我的角色正在与哪个物体发生碰撞?

标签 python collision-detection

我正在为游戏开发碰撞检测,这样如果角色遇到一个物体,他们就会停止移动。作为解决方案的一部分,我创建了两个函数来迭代屏幕上对象的列表以检查碰撞。

第一个函数 (on_key_up) 检查按住方向键时是否发生碰撞,然后在 True 时停止角色移动。

第二部分是另一个函数(on_key_up),它将角色稍微移出碰撞区域,以便他可以再次自由移动。释放方向键时触发。

问题是我需要访问角色碰撞的任何对象的高度和宽度属性,所以我想知道是否有办法做到这一点。

我发布了我所做的事情的片段,以便您可以看到我试图进入的方向。

我在这里做错了什么?

def on_keyboard_up(self, keyboard, keycode):
        if keycode[1] == 'left':
            self.source = 'selectionscreen/faceleft.png'
                for i in listofwidgets:
                    if self.collide_widget(i):
                        self.x = ((listofwidgets(i).x + listofwidgets(i).width + .1)-self.x) + self.x

最佳答案

我认为你需要简单地改变:

self.x = ((listofwidgets(i).x + listofwidgets(i).width + .1)-self.x) + self.x

至:

self.x = (i.x + i.width + .1)-self.x) + self.x

此外listofwidgets(i)将是一个函数调用,它可能应该是listofwidgets[i](如果这不仅仅是一个拼写错误)

关于python - 如何检查我的角色正在与哪个物体发生碰撞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22706207/

相关文章:

python - 如何将数据框的行调整为列

c# - Unity - 如何让游戏对象在碰到两个碰撞器时只发生一次碰撞

Sprite-Kit 为单个接触注册多个碰撞

python - PyOdbc 无法连接到 sql server 实例

python - 如何修复此脚本,使其不会占用 CPU?

python - 类型错误 : Cannot handle this data type - Wrong mode for `PIL.Image.fromarray` ?

Swift/SpriteKit 碰撞检测

unity-game-engine - 检测两点之间的游戏对象

collision-detection - 使用 OpenCascade,如何快速对 2 个形状进行碰撞检测?

python - pip install matplotlib 在 termux (Android) 下不起作用