Kamera Movement in Unity?

Hallo,

ich bin relativ neu in Unity und bin gerade dabei, eine Szene zu erstellen, wobei man die Kamera, wenn man die rechte Maustaste gedrückt hält, verschieben kann.

Die Szene ist isotropisch, weshalb die Kamera auch orthographisch ist.

[SerializeField] private Camera cam;
private Vector3 dragOrigin = Vector3.zero;
public float speed = 10;
    
void Update(){
    if(Input.GetMouseButtonDown(1)){
        dragOrigin = cam.ScreenToWorldPoint(Input.mousePosition);
    }
    if(Input.GetMouseButton(1)){
        Vector3 difference = cam.ScreenToWorldPoint(Input.mousePosition) - cam.transform.position;
        Vector3 targetPosition = dragOrigin - difference;
            
        cam.transform.position = Vector3.Lerp(cam.transform.position, targetPosition, speed * Time.deltaTime);
    }
}

Das funktioniert eigentlich auch, nur gibt es das Problem, dass sich der y-Wert der Kamera auch ändert. Die sollte immer auf dem gleichen y-Wert bleiben.

Wenn ich

targetPosition.y = cam.transform.position.y;

schreibe, bleibt zwar die Kamera auf der gleichen y-Position, aber die Kamera verschiebt sich nach oben und unten langsamer.

Wie kann ich den Code umschreiben, dass sich bei der Kamera nur die x-/ und z-Position ändert und das Verschieben in allen Richtungen gleich schnell geht?

Danke im Voraus.

Software, Kamera, programmieren, C Sharp, Visual Studio, Unity, Game-Developement

Meistgelesene Fragen zum Thema Game-Developement