我正在为一个学校项目制作一个Pygame程序。玩家角色将穿过敌人的精灵,而不会触发碰撞。我该如何解决?
如果两个Sprite之间有任何重叠,应运行CODE。
if CharY > thing_starty and CharY < thing_starty + Enemy2_height or CharY+PCHeight > thing_starty and CharY + PCHeight < thing_starty + Enemy2_height:
if CharX > thing_startx and CharX < thing_startx + Enemy2_width or CharX + PCWidth > thing_startx and CharX + PCWidth < thing_startx + Enemy2_width:
CODE
答案 0 :(得分:1)
我建议使用pygame.Rect
对象和.colliderect()
检查两个矩形的冲突:
# detects collisions
charRect = pg.Rect(CharX, CharX, PCWidth, PCHeight)
enemyRect = pg.Rect(thing_startx, thing_starty, Enemy2_width, Enemy2_height)
if charRect.colliderect(enemyRect):
# [...]
# CODE
如果您想自己进行碰撞检测,则必须检查矩形在两个维度上是否重叠。
如果满足以下条件,则范围[x1
,x1+w1
]与范围[x2
,x2+w2
]重叠:
intersect = x1 < x2+w2 and x2 < x1+w1
请注意,w1
和w2
必须大于0。
对两个维度都这样做:
if CharX < thing_startx + Enemy2_width and thing_startx < CharX + PCWidht and \
CharY < thing_starty + Enemy2_height and thing_starty < CharY + PCHeight
# [...]
# CODE