コード例 #1
0
  /**
   * What happens with the widget when another widget touches it.
   *
   * @param other_body The body that touched it.
   * @param f The x,y coordinate that is the contact point.
   */
  public void reactToTouchingBody(CollisionEvent e) {
    float speed = MOVEMENT_SPEED + (MOVEMENT_SPEED * bounces * 0.05f);

    if (currentDirection == Direction.WEST) {
      currentDirection = direction.EAST;
      body.setForce(2 * speed, 0);
    } else if (currentDirection == Direction.EAST) {
      currentDirection = Direction.WEST;
      body.setForce(-2 * speed, 0);
    } else if (currentDirection == Direction.NORTH) {
      currentDirection = Direction.SOUTH;
      body.setForce(0, 2 * speed);
    } else if (currentDirection == Direction.SOUTH) {
      currentDirection = direction.NORTH;
      body.setForce(0, -2 * speed);
    }
    bounces++;
  }
コード例 #2
0
  /** Resets the widget to start state. */
  public void resetWidget() {
    // Reset has been made, so we CAN activate this later.
    reset = true;
    // Make inactive
    active = false;
    // Not collided.
    collided = false;

    bounces = 0;
    currentDirection = direction;
    image = frames.get(0);
    body.setEnabled(false);
    // Move to initial position.
    body.set(shape, MASS);
    body.setPosition(position.x + WIDTH / 2, position.y + HEIGHT / 2);

    // Make sure the gameplay didn't mess with any initial properties.
    body.setCanRest(true);
    body.setDamping(0.0f);
    body.setFriction(0.01f);
    body.setGravityEffected(false);
    body.setIsResting(true);
    body.setMoveable(true);
    body.setRestitution(1.5f);
    body.setRotatable(true);
    body.setRotation(0.0f);
    body.setRotDamping(0.0f);
    body.setMaxVelocity(50f, 50f);
    body.setForce(-body.getForce().getX(), -body.getForce().getY());
    if (currentDirection == Direction.WEST) {
      body.setForce(-MOVEMENT_SPEED, 0);
    } else if (currentDirection == Direction.EAST) {
      body.setForce(MOVEMENT_SPEED, 0);
    }
    if (currentDirection == Direction.NORTH) {
      body.setForce(0, -MOVEMENT_SPEED);
    } else if (currentDirection == Direction.SOUTH) {
      body.setForce(0, MOVEMENT_SPEED);
    }
    body.adjustVelocity(new Vector2f(-body.getVelocity().getX(), -body.getVelocity().getY()));
    body.adjustAngularVelocity(-body.getAngularVelocity());
  }