Laden...

Wie kann ich ein Objekt auf einen Punkt zubewegen

Erstellt von NN(NoName) vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.627 Views
N
NN(NoName) Themenstarter:in
7 Beiträge seit 2018
vor 5 Jahren
Wie kann ich ein Objekt auf einen Punkt zubewegen

Ich möchte ein Objekt langsam zu einem Punkt bewegen

wie könnte die folgende Methode(moveTowards) in WPF aussehen


MyObject obj = new MyObject();
Point ziel = new Point(100, 200);

while(true)
{
    obj.pos = moveTowards(obj.pos, ziel, 10);

    Canvas.SetTop(obj, obj.pos.Y);
    Canvas.SetLeft(obj, obj.pos.X);
    Thread.sleep(1000);
}


public static Point moveTowards(Point oldPos, Point newPos, double speed)
{
    //????????????????
}

Ich weiß dass man das mit einem Timer machen solte
Ist auch nur ein Beispiel

Fak ju rechtschreibung

T
2.224 Beiträge seit 2008
vor 5 Jahren

Was du bauchst ist ein Vektor.
Du musst in einem mehrdimensonalen Raum die Bewegung als Vektor abbilden, da du die Geschwindigkeit in alle Richtungen der Dimension definieren musst.

Ein Punk hat hier schon die Dimensionen X und Y also musst du definieren, mit welcher Geschwindigkeit(Vektor) du dich bewegst und wie deine aktuelle Position ist.
Im Vektor hast du dann die Bewegungsgeschwindigkeit in die X und Y Richtung.

So kann dein Vektor dann bei P1(X: 10, Y: 5) und P2 (X: 20, Y: 5) sich mit dem Vektor (X: 1, Y: 0) bewegen pro Sekunde.
Somit musst du die aktuelle Pos bei X beginnen und nur X/Y des Vektors zu von der aktuellen Position hinzufügen.
Somit würdest du in 10 Sek. von P1 zu P2 kommen.

Nachtrag:
Zur Ermittlung der Richtung musst du dann nur noch schauen wie deine aktuelle Position ist um mit der Position deine Richtung auszurichten.
Dafür musst du nur über die Position von dir und dem Ziel die X/Y Koordinaten gegenrechnen.
Lies dich in das Thema mal ein.

Gerade bei Spieleprogrammierung von Weltraumspielen o.ä. ist das Thema Gang und Gäbe.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

N
NN(NoName) Themenstarter:in
7 Beiträge seit 2018
vor 5 Jahren

Was hat ein Vector für andere Funktionen wie ein Point
b.z.w was ist der Unterschied

Fak ju rechtschreibung

C
2.121 Beiträge seit 2010
vor 5 Jahren

Ein Vektor ist eine Richtung, ein Punkt ist ein Ort.

(Wobei man einen Vektor auch über Point realisieren kann, denn auch er hat so viele Koordinaten wie ein Punkt. Aber die bedeuten etwas anderes. Und es macht die Sache nicht übersichtlich wenn man für verschiedene Zwecke den selben Datentyp verwendet.)

N
NN(NoName) Themenstarter:in
7 Beiträge seit 2018
vor 5 Jahren

Danke für die Antworten.

Übrigens habe ich jetzt die UnityEngine.dll importiert und

using UnityEngine;
Vector2.MoveTowards();

verwndet.

Fak ju rechtschreibung

T
2.224 Beiträge seit 2008
vor 5 Jahren

@NN(NoName)
Hat dein Projekt was mit Unity zutun?
Falls nicht, ist dies meiner Meinung nach weit über das Ziel hinausgeschoßen.
Sowas lässt sich mit etwas recherchieren und simper Mathematik selbst umsetzen ohne den Overhead von Unity.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

5.299 Beiträge seit 2008
vor 5 Jahren

Übrigens enthält Wpf auch eine fabelhafte Vector-Struct:
System.Windows.Vector

Der frühe Apfel fängt den Wurm.