added Move Camera based on player position

This commit is contained in:
Johannes Schmelz 2024-11-23 19:27:04 +01:00
parent f658f53ba9
commit 748226f4ed
2 changed files with 26 additions and 18 deletions

View File

@ -39,21 +39,22 @@ public class CameraController {
* @param tpf Zeit pro Frame * @param tpf Zeit pro Frame
*/ */
public void update(float tpf) { public void update(float tpf) {
// Aktualisiere den Winkel basierend auf der Geschwindigkeit
angle += speed * tpf;
if (angle >= FastMath.TWO_PI) {
angle -= FastMath.TWO_PI; // Winkel zurücksetzen, um Überläufe zu vermeiden
}
// Berechne die neue Position der Kamera
float x = center.x + radius * FastMath.cos(angle);
float z = center.z + radius * FastMath.sin(angle);
float y = center.y + height;
// Setze die Kameraposition
camera.setLocation(new Vector3f(x, y, z));
// Lasse die Kamera auf den Fokuspunkt blicken
camera.lookAt(center, Vector3f.UNIT_Y); camera.lookAt(center, Vector3f.UNIT_Y);
} }
public void setPosition(int fieldID) {
camera.setLocation(fieldIdToVector(fieldID));
}
public void setPosition(float x, float y) {
camera.setLocation(new Vector3f(x,height,y));
}
private Vector3f fieldIdToVector(int fieldID) {
if (fieldID <= 10) return new Vector3f(4,height,0);
if (fieldID <= 20) return new Vector3f(0, height, 4);
if (fieldID <= 30) return new Vector3f(-4, height, 0);
if (fieldID <= 40) return new Vector3f(0, height, -4);
else throw new IllegalArgumentException();
}
} }

View File

@ -1,5 +1,9 @@
package pp.monopoly.client.gui; package pp.monopoly.client.gui;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import com.jme3.material.Material; import com.jme3.material.Material;
import com.jme3.math.ColorRGBA; import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f; import com.jme3.math.Vector3f;
@ -43,15 +47,18 @@ public class TestWorld {
cameraController = new CameraController( cameraController = new CameraController(
app.getCamera(), // Die Kamera der App app.getCamera(), // Die Kamera der App
Vector3f.ZERO, // Fokus auf die Mitte des Spielfelds Vector3f.ZERO, // Fokus auf die Mitte des Spielfelds
5, // Radius des Kreises 4, // Radius des Kreises
3, // Höhe der Kamera 2, // Höhe der Kamera
0.5f // Geschwindigkeit der Bewegung 0 // Geschwindigkeit der Bewegung
); );
// Füge die Toolbar hinzu // Füge die Toolbar hinzu
new Toolbar(app, cube); new Toolbar(app, cube);
cameraController.setPosition(0);
} }
/** /**
* Aktualisiert die Kameraposition. * Aktualisiert die Kameraposition.
* *