为了账号安全,请及时绑定邮箱和手机立即绑定

在python中查找对象之间的距离 - 不起作用

在python中查找对象之间的距离 - 不起作用

HUWWW 2022-09-27 10:45:20
我目前正在Python上制作一个简单的轻飘飘的鸟类游戏。由于某种原因,当管道和鸟接触时,碰撞代码不起作用。def collision():    global distanceDown, distanceUp    distanceUp = math.sqrt(math.pow(pipeUpX - birdX, 2) + math.pow(pipeUpY - birdY, 2))  # distance formula    distanceDown = math.sqrt(math.pow(pipeDownX - birdX, 2) + math.pow(pipeDownX - birdY, 2))    if distanceUp <= 20 or distanceDown <= 20:        return True    else:        return False我已经在主游戏循环中调用了该函数,并要求python结束游戏(如果为真),但鸟只是通过管道。仅供参考,我没有使用OOP和类。以下是值。pipeWidth = 50pipeHeight = 130pipeUpX = 800pipeUpY = 0pipeDownY = screenY - pipeHeightpipeDownX = 900pipeX_change = 1另外,我对python和编程作为一个整体非常陌生,所以请用易于理解的代码回答。谢谢你:)
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

该代码不会验证到管道的距离。该代码验证到管道起点和终点的距离。这是另一回事。

由于您的对象只是矩形,我建议使用和方法。例如,一些伪代码:pygame.Rect objecctscolliderect

def collision():  
    pipeRect = pygame.Rect(pipeLeft, pipeTop, pipeWidth, pipeHeight) 
    birdRect = pygame.Rect(birdLeft, birdTop, birdWidth, birdHeight) 
    return pipeRect.colliderect(birdRect)

对于“图像”的碰撞,我建议分别使用pygame.精灵.精灵/pygame.sprite.collide_mask()pygame.mask.mask.pygame.mask.mask.overlap()


查看完整回答
反对 回复 2022-09-27
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信