def spinToBall(player): """ State to spin to turn to the ball """ if player.firstFrame(): player.stopWalking() player.brain.tracker.trackBall() ball = player.brain.ball turnRate = MyMath.clip(ball.locBearing*ChaseConstants.BALL_SPIN_GAIN, -ChaseConstants.BALL_SPIN_SPEED, ChaseConstants.BALL_SPIN_SPEED) if transitions.atSpinBallDir(player): return player.goLater('atSpinBallPosition') elif transitions.shouldSpinFindBallPosition(player): return player.goLater('spinFindBallPosition') elif player.currentSpinDir != MyMath.sign(turnRate): player.stopWalking() player.currentSpinDir = MyMath.sign(turnRate) elif player.stoppedWalk and ball.on and player.brain.nav.isStopped(): player.setWalk(x=0,y=0,theta=turnRate) return player.stay()
def spinToBall(player): """ State to spin to turn to the ball """ if player.firstFrame(): player.stopWalking() player.brain.tracker.trackBall() ball = player.brain.ball turnRate = MyMath.clip(ball.locBearing * ChaseConstants.BALL_SPIN_GAIN, -ChaseConstants.BALL_SPIN_SPEED, ChaseConstants.BALL_SPIN_SPEED) if transitions.atSpinBallDir(player): return player.goLater('atSpinBallPosition') elif transitions.shouldSpinFindBallPosition(player): return player.goLater('spinFindBallPosition') elif player.currentSpinDir != MyMath.sign(turnRate): player.stopWalking() player.currentSpinDir = MyMath.sign(turnRate) elif player.stoppedWalk and ball.on and player.brain.nav.isStopped(): player.setWalk(x=0, y=0, theta=turnRate) return player.stay()
def atSpinBallPosition(player): """ Spun to the ball heading, spin again """ if player.firstFrame(): player.stopWalking() player.brain.tracker.activeLoc() if transitions.shouldTurnToBall_fromAtBallPosition(player): return player.goLater('spinToBall') elif transitions.shouldSpinFindBallPosition(player): return player.goLater('spinFindBallPosition') return player.stay()