如果你已经看过我关于这个问题的帖子,我很抱歉,我很想解决这个问题。
我正在创建一个2人自上而下的赛车游戏,并且需要为程序创建一种方式来了解用户何时完成了一圈。我选择通过在轨道上放置精灵来做到这一点,与轨道具有相同的纹理,以便它们融入。想法是为每个玩家的车辆创建一个列表,包含布尔变量,一个变量用于每个检查站。列表中的每个布尔变量必须等于" True"为了计算一圈。
在我尝试这个之前,我想通过检测玩家的车辆何时相互碰撞来弄清楚如何做到这一点。在前一篇文章的帮助下,我曾尝试过这样做。
我的车辆类可以通过我的checkCollision功能在下面看到。
class Vehicle(pygame.sprite.Sprite):
'Base class for all vehicles (Cars and Motorbikes) in the game'
vehicleCount = 0
def __init__(self, max_speed, acceleration, turning_radius, image):
#pygame.sprite.Sprite.__init__(self)
self.max_speed = max_speed
self.acceleration = acceleration
self.turning_radius = turning_radius
self.image = image
self.rect = self.image.get_rect()
Vehicle.vehicleCount = Vehicle.vehicleCount + 1
def displayAmount():
print ("Total number of Vehicle enteries: ", Vehicle.vehicleCount)
def displayVehicle(self):
print ("max speed: ", self.max_speed, "acceleration: ", self.acceleration, "turning radius: ", self.turning_radius)
def checkCollision(self, sprite2):
col = pygame.sprite.collide_rect(self, sprite2)
if col == True:
print ("True")
以下是我定义的一个车辆对象的示例:
sportscar = Vehicle(4.5, 0.2, 2.01, sportsimage)
我通过在主游戏循环中运行以下行来检查车辆是否相交:
choice1.checkCollision(choice2)
但是,当我运行程序时,控制台会输出" True"不断地,即使车辆没有碰到。有谁知道我哪里出错了?感谢。