【发布时间】:2013-04-23 04:47:48
【问题描述】:
我本质上是在尝试用 pygame 制作一个“实体”对象。目标是在玩家接触时击退玩家。我目前正在使用(但不能正常工作)如下:
keys_pressed = pygame.key.get_pressed()
if 1 in keys_pressed:
if keys_pressed[K_w]:
self.player_l[1] += -2
if self.player_r.colliderect(self.tower_r): self.player_l[1] -= -2
if keys_pressed[K_a]:
self.player_l[0] += -2
if self.player_r.colliderect(self.tower_r): self.player_l[0] -= -2
if keys_pressed[K_s]:
self.player_l[1] += 2
if self.player_r.colliderect(self.tower_r): self.player_l[1] -= 2
if keys_pressed[K_d]:
self.player_l[0] += 2
if self.player_r.colliderect(self.tower_r): self.player_l[0] -= 2
这样做的问题是玩家被“困”在塔矩形内,尽管返回到他们在碰撞开始之前的位置,玩家矩形总是会被拉回塔内,并且碰撞将继续触发。在最初接触塔矩形后,玩家将无法向任何方向移动。
【问题讨论】:
-
你能显示方法的完整代码吗?可能是笔误。
-
添加了整个运动代码:)
-
一种想法是,如果您使用浮点数作为位置,舍入错误可能意味着您不会像推入一样被推出。您是否尝试过使用调试器或打印语句或记录以跟踪一段时间内的位置值?
-
哦,伙计。非常感谢,我设法通过确保它四舍五入来修复它!