繁体   English   中英

为什么我在 python 中的碰撞检测不起作用?

[英]Why won't my collision detection in python work?

我目前正在尝试为我的一个班级制作一个简单的空气曲棍球比赛。 我正在努力做到这一点,因此目标不会构成屏幕的整个侧面,而只是其中的一小部分。 因此,当冰球击中屏幕的不是目标的一侧时,它会弹开并继续比赛。 但由于某种原因,冰球只是穿过屏幕的一侧,游戏并没有重置。 如果这是一个愚蠢的问题或者描述性不够,我很抱歉这是我第一次这样做。

编码:

 if(self.puckSquare.left < 0 and self.puckSquare.height > 143 and self.puckSquare.height < 310):
        self.gameLoop = False
        self.rightScore += 1
        print("Left Player " + str(self.leftScore) +  " Right Player" + str(self.rightScore))
    elif(self.puckSquare.left < 0 and self.puckSquare.height < 143 and self.puckSquare.height > 310):
        self.puckspeedX = -self.puckspeedX

你的elif的逻辑是错误的。 您正在检查您是否在目标的两侧之外,这永远不会发生。 您需要一个or而不是and来进行height检查。

elif self.puckSquare.left < 0 and (self.puckSquare.height < 143 or self.puckSquare.height > 310):

或者您可以完全放弃高度检查,因为您已经在前面的if检查中测试了目标区域。 你只需要elif来检查你是否还在碰壁。

elif self.puckSquare.left < 0:

注意: ifelif语句中的条件不需要括号。 其他一些语言可以,但不是 Python。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM