123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package eu.tankernn.gameEngine.entities;
- import org.lwjgl.input.Keyboard;
- import org.lwjgl.util.vector.Vector3f;
- import eu.tankernn.gameEngine.loader.models.TexturedModel;
- import eu.tankernn.gameEngine.renderEngine.DisplayManager;
- import eu.tankernn.gameEngine.settings.Physics;
- import eu.tankernn.gameEngine.terrains.Terrain;
- import eu.tankernn.gameEngine.terrains.TerrainPack;
- public class Car extends Player {
- private static final float MAX_SPEED = 100.0f, ACCELERATION = 20.0f, DECELERATION = 10.0f, BRAKE = 40.0f,
- TURN_FORCE = 160.0f;
- public Car(TexturedModel model, Vector3f position, float rotX, float rotY, float rotZ, float scale,
- TerrainPack terrainPack) {
- super(model, position, rotX, rotY, rotZ, scale, terrainPack);
- }
- @Override
- public void move(TerrainPack terrainPack) {
- checkInputs();
- super.increaseRotation(0, currentTurnSpeed * DisplayManager.getFrameTimeSeconds(), 0);
- float distance = currentSpeed * DisplayManager.getFrameTimeSeconds();
- float dx = (float) (distance * Math.sin(Math.toRadians(super.getRotY())));
- float dz = (float) (distance * Math.cos(Math.toRadians(super.getRotY())));
- super.increasePosition(dx, 0, dz);
- upwardsSpeed += Physics.GRAVITY * DisplayManager.getFrameTimeSeconds();
- super.increasePosition(0, upwardsSpeed * DisplayManager.getFrameTimeSeconds(), 0);
- Terrain currentTerrain = terrainPack.getTerrainByWorldPos(this.getPosition().x, this.getPosition().z);
- float terrainHeight = 0;
- if (currentTerrain != null) {
- terrainHeight = currentTerrain.getHeightOfTerrain(super.getPosition().x, super.getPosition().z);
- }
- if (super.getPosition().getY() < terrainHeight) {
- super.getPosition().y = terrainHeight;
- }
- }
- @Override
- protected void checkInputs() {
- if (Keyboard.isKeyDown(Keyboard.KEY_W)) {
- this.currentSpeed += ACCELERATION * DisplayManager.getFrameTimeSeconds();
- this.currentSpeed = Math.min(currentSpeed, MAX_SPEED);
- } else if (Keyboard.isKeyDown(Keyboard.KEY_S)) {
- this.currentSpeed -= BRAKE * DisplayManager.getFrameTimeSeconds();
- this.currentSpeed = Math.max(currentSpeed, 0);
- } else {
- this.currentSpeed -= DECELERATION * DisplayManager.getFrameTimeSeconds();
- this.currentSpeed = Math.max(currentSpeed, 0);
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
- this.currentTurnSpeed += TURN_FORCE * DisplayManager.getFrameTimeSeconds();
- } else if (Keyboard.isKeyDown(Keyboard.KEY_D)) {
- this.currentTurnSpeed -= TURN_FORCE * DisplayManager.getFrameTimeSeconds();
- } else {
- if (this.currentTurnSpeed > 0) {
- this.currentTurnSpeed -= TURN_FORCE;
- if (currentTurnSpeed < 0)
- this.currentTurnSpeed = 0;
- } else if (this.currentTurnSpeed < 0) {
- this.currentTurnSpeed += TURN_FORCE;
- if (currentTurnSpeed > 0)
- this.currentTurnSpeed = 0;
- }
- }
-
- this.currentTurnSpeed = Math.min(currentTurnSpeed, TURN_MAX);
- this.currentTurnSpeed = Math.max(currentTurnSpeed, -TURN_MAX);
- // TODO Nitro
- }
- }
|