【问题标题】:PYGAME Detect when object is no longer colliding with wallPYGAME 检测物体何时不再与墙壁碰撞
【发布时间】:2015-10-03 20:39:09
【问题描述】:

我正在制作一个平台游戏,主要是基于重新创建第一个超级马里奥兄弟。

现在我需要知道玩家(物体)何时停止与墙壁(物体)碰撞。 我知道它什么时候发生碰撞,例如当 player.rect.bottom == wall.rect.top 然后 Floor state = 1。如果玩家不再碰撞,我如何使 Floor state = 0(这会使他跌倒)。

我已经尝试过使用:

if player.rect.bottomleft  == wall.rect.topright or player.rect.bottomright == wall.rect.topleft:
        Floor = 1

如果玩家在角落里,这会让玩家跌倒。但是如果玩家有加速度,它不会通过这个点,Floor 仍然是 Floor = 1,玩家不会跌倒,他会漂浮或飞行。谢谢

是否知道它何时停止碰撞,这将允许我更改 Floor 的值?

【问题讨论】:

  • 搜索了一段时间后,我尝试合并2个代码:linklink只要我添加class wall(object): def __init__(self, pos): walls.append(self) self.rect = pygame.Rect(pos[0], pos[1], 16, 16)它就会给我这个回溯wall.set_colorkey((255,255,255)) AttributeError: type object 'wall' has no attribute 'set_colorkey'

标签: python pygame collision-detection physics collision


【解决方案1】:

您需要在每一帧重置地板,但请确保在移动角色之前执行此操作,以免他开始做奇怪的事情,例如摔倒地面和故障。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多