我正在尝试在 pygame 中制作一个基于图 block 的游戏,但我无法完全使用我的碰撞函数。到目前为止,我知道当我点击 WASD 时,它会在实际移动 Sprite 之前检查它是否是一个有效的移动。
def move(self, dx=0, dy=0):
print("TEST" + str(self.collide_with_walls(dx, dy)))
if not self.collide_with_walls(dx, dy):
self.x += dx
self.y += dy
这是调用我的碰撞函数的移动函数(我想我会包含它以防万一)
def collide_with_walls(self, dx=0, dy=0):
print("Here 1")
print(self.game.walls)
for wall in self.game.walls:
print("2")
if wall.x == self.x + dx and wall.y == self.y + dy:
print("Hit wall")
return True
print("No hit wall")
return False
这是我不断返回 false 的碰撞函数。重要的是要注意它永远不会打印“2”,所以它永远不会进入 for 循环,当我打印出“self.game.walls”时,它会打印“
class Wall(pg.sprite.Sprite):
def __init__(self, game, x, y):
self.groups = game.all_sprites, game.walls
pg.sprite.Sprite.__init__(self, self.groups)
self.game = game
self.image = pg.Surface((TILESIZE, TILESIZE))
self.image.fill(BLACK)
self.rect = self.image.get_rect()
self.x = x
self.y = y
self.rect.x = x * TILESIZE
self.rect.y = y * TILESIZE
这就是 Wall 函数,它将墙放置在我预感问题所在但我似乎无法弄清楚的地方。任何建议都有帮助:)
相关文章:
apache-spark - 如何在 pyspark 数据帧读取方法中包含分区列
python - 如何在python中调整直方图上的字体大小
reactjs - Expo React-Native 调试器 - 错误 : Unable to r
android - 切换 AdMob 帐户以更改国家/地区的步骤
javascript - amazon-cognito-identity-js - 忘记了无效用户的
flutter - 飞镖 :tml and dart:js not found error flut