示例#1
0
  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);

  }