Beispiel #1
0
    def update(self):
        # Decision-making time
        if self.mind: self.mind.think()
        # Put our actions into physics
        for wheel in self.wheels:
            wheel.updateFriction()
            wheel.updateDrive(self.controlState)

        lockAngle = 35*DEGTORAD
        turnSpeedPerSec = 160 * DEGTORAD
        turnPerTimeStep = turnSpeedPerSec / 60.0
        desiredAngle = 0

        if self.controlState & WDC_LEFT:
            desiredAngle = -lockAngle
        elif self.controlState & WDC_RIGHT:
            desiredAngle = lockAngle
        angleToTurn = desiredAngle - self.flJoint.angle
        # Some problem with the API, therefore workaround:
        angleToTurn = b2.b2Clamp((angleToTurn,0),
                                 (-turnPerTimeStep,0),
                                 (turnPerTimeStep,0)).x
        newAngle = self.flJoint.angle + angleToTurn
        self.flJoint.limits = (newAngle, newAngle)
        self.frJoint.limits = (newAngle, newAngle)