public void update(HashSet<Key> keys) { for (Tire tire : tires) { tire.updateFriction(); } for (Tire tire : tires) { tire.updateDrive(keys); } float lockAngle = 35 * Constants.DEGTORAD; float turnSpeedPerSec = 160 * Constants.DEGTORAD; float turnPerTimeStep = turnSpeedPerSec / 60.0f; float desiredAngle = 0; /** if player 1 */ if (playerNum == 1) { if (keys.contains(Key.Left)) { desiredAngle = lockAngle; } else if (keys.contains(Key.Right)) { desiredAngle = -lockAngle; } } /** if player 2 */ if (playerNum == 2) { if (keys.contains(Key.a)) { desiredAngle = lockAngle; } else if (keys.contains(Key.d)) { desiredAngle = -lockAngle; } } float angleNow = leftJoint.getJointAngle(); float angleToTurn = desiredAngle - angleNow; angleToTurn = CarMath.clamp(angleToTurn, -turnPerTimeStep, turnPerTimeStep); float newAngle = angleNow + angleToTurn; leftJoint.setLimits(newAngle, newAngle); rightJoint.setLimits(newAngle, newAngle); if (fuel) { if (!carDone) { UseFuel(isAccelerating, fuelConsumption); if (onFuelPad) { addFuel(); } } } // System.out.println("LapCounter : " + lapCounter); }