碰撞检测变量始终输出" True"?

时间:2018-01-22 13:39:26

标签: python pygame sprite collision rect

如果你已经看过我关于这个问题的帖子,我很抱歉,我很想解决这个问题。

我正在创建一个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"不断地,即使车辆没有碰到。有谁知道我哪里出错了?感谢。

0 个答案:

没有答案