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
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.
Was hat ein Vector für andere Funktionen wie ein Point
b.z.w was ist der Unterschied
Fak ju rechtschreibung
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.)
Danke für die Antworten.
Übrigens habe ich jetzt die UnityEngine.dll importiert und
using UnityEngine;
Vector2.MoveTowards();
verwndet.
Fak ju rechtschreibung
@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.
Übrigens enthält Wpf auch eine fabelhafte Vector-Struct:
System.Windows.Vector
Der frühe Apfel fängt den Wurm.