我正在用pygame做一个自上而下的益智游戏,我的动作非常灵活。当我同时按下一个键水平移动和一个键垂直移动时,角色只会在接触水平表面时移动。这是我的移动和碰撞代码:
def move(self, dx, dy):
self.dx = dx
self.dy = dy
if self.dx != 0:
self.move_single_axis(self.dx, 0)
if self.dy != 0:
self.move_single_axis(0, self.dy)
def move_single_axis(self, dx, dy):
self.dx = dx
self.dy = dy
self.rect.x += self.dx
self.rect.y += self.dy
for wall in walls:
if self.rect.colliderect(wall.rect):
if self.dx > 0:
self.rect.right = wall.rect.left
if self.dx < 0:
self.rect.left = wall.rect.right
if self.dy > 0:
self.rect.bottom = wall.rect.top
if self.dy < 0:
self.rect.top = wall.rect.bottom
def checkMovement(self):
if self.paused == False:
keys = pygame.key.get_pressed()
if keys[pygame.K_d]:
self.move(5, 0)
elif keys[pygame.K_a]:
self.move(-5, 0)
elif keys[pygame.K_w]:
self.move(0, -5)
elif keys[pygame.K_s]:
self.move(0, 5)
谢谢!你知道吗
我可以看到以下问题:
解决你的问题?你知道吗
我还将两个函数move\u single\u axis()和move()合并为一个函数。我不明白为什么两者都有意义。你知道吗
奇怪的是在你的代码中你是如何处理dx和dy的。你有一个类,你的函数在那里,那么当你有直接访问dx,dy的权限时,你把dx,dy传递给这些函数做什么呢自我.dx自我保护在调用此函数之前可以设置哪些值?你知道吗
为什么不这样做:
其中
move()
是:相关问题 更多 >
编程相关推荐