我正在为游戏进行碰撞检测,因此如果角色遇到对象,他们就会停止移动。作为我的解决方案的一部分,我已经制作了两个函数,它们遍历屏幕上的对象列表来检查碰撞。
第一个函数(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
答案 0 :(得分:2)
我认为你需要简单地改变:
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]
(如果它不仅仅是一个错字)
答案 1 :(得分:0)
listofwidgets(i)
是您要与之碰撞的对象,因此要么将该小部件存储,要么将i
存储在变量中供以后使用。