Hi,
ich baue gerade an einer Camera, und nun möchte ich bestimmte Positionen queuen an die die Camera gehen soll.
Nun wollte ich mal fragen ob das dafür die richtige Vorgehensweise ist? Ich bestimmte aus Start und Endpunkt einen Richtungsvektor mit dem ich anhand von Velocity und deltaTime die neue Position errechne, nun vergleiche ich die Distanz vor und nach der Änderung. Ist die Distanz nach der Änderung größer bin ich wegen z.B zu hoher Geschwindigkeit übers Ziel hinausgeschossen.. falls ja ist meine neue Position die TargetPosition.
Hier mal ein Beispiel mit Ausgabe:
Spoiler anzeigen
ich baue gerade an einer Camera, und nun möchte ich bestimmte Positionen queuen an die die Camera gehen soll.
C#-Quellcode
- /// <summary>
- /// Updates the camera
- /// </summary>
- /// <param name="gameTime">The game time</param>
- public void Update(GameTime gameTime)
- {
- if (_currentTargetPosition == null)
- {
- if (_queuedPositions.Count > 0)
- _currentTargetPosition = _queuedPositions.Dequeue();
- }
- if (_currentTargetPosition != null)
- {
- var oldDistance = Vector2.Distance(Center, _currentTargetPosition.Value);
- var normalized = Vector2.Normalize(_currentTargetPosition.Value - Center);
- var newPosition = Center + normalized*Velocity*gameTime.ElapsedGameTime;
- var newDistance = Vector2.Distance(newPosition, _currentTargetPosition.Value);
- if (oldDistance < newDistance)
- {
- Center = _currentTargetPosition.Value;
- _currentTargetPosition = null;
- }
- else
- {
- Center = newPosition;
- }
- }
- }
Nun wollte ich mal fragen ob das dafür die richtige Vorgehensweise ist? Ich bestimmte aus Start und Endpunkt einen Richtungsvektor mit dem ich anhand von Velocity und deltaTime die neue Position errechne, nun vergleiche ich die Distanz vor und nach der Änderung. Ist die Distanz nach der Änderung größer bin ich wegen z.B zu hoher Geschwindigkeit übers Ziel hinausgeschossen.. falls ja ist meine neue Position die TargetPosition.
Hier mal ein Beispiel mit Ausgabe:
Quellcode
- {115,3179,61,54764}
- {176,4942,74,4353}
- {231,9032,88,86149}
- {279,4629,104,9435}
- {317,0376,122,6002}
- {343,4318,141,4803}
- {359,3792,161,0789}
- {367,359,180,9791}
- {370,3903,200,9648} <-- Hier ist das Problem mit X.. es "schwingt" um die target position
- {371,0318,220,9641}
- {370,9864,240,9641}
- {371,0166,260,9641}
- {370,9339,280,9641}
- {371,277}
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ThuCommix“ ()