In Anbetracht des obigen Bildes mit Kacheln, die in 32x32-Felder aufgeteilt sind, habe ich eine Entität, die markiert ist, um Spieler in der Nähe, die ihr nahe kommen, zu "aggro". Ich möchte, dass dieses Monster den Spieler idealerweise jagt (und den Spieler noch eine Weile jagt). Gegenwärtig ist meine einzige Bewegung ein einfacher Interpolator für entfernte Entitäten, und dies funktioniert, weil die Lücken zwischen Bewegungsaktualisierungen ziemlich klein sind.
Ich kann dem Klienten nicht einfach sagen, dass das Monster an die Position gehen möchte, an der es sich befindet, da dies dazu führt, dass sich die Entität viel schneller bewegt, als es sollte (dies kann wahrscheinlich mit etwas Mathematik für die Interpolations-Co gelöst werden -effektiv) aber was noch wichtiger ist, es sieht nicht realistisch aus und kann Wände abschneiden! Ich möchte nicht die gesamte Bewegung auf dem Server simulieren, wenn dies vermieden werden kann ... obwohl ich vermute, dass ich könnte, aber das würde das Clipping-Problem immer noch nicht lösen. Ich vermute, die Lösung beinhaltet einige Pfadfindung und das Senden von regelmäßigen Client-Knotenaktualisierungen und das Simulieren der Bewegung durch sie, aber ich bin mir nicht sicher.
Vielen Dank!
quelle
Eigentlich ist das ganz einfach. Die Bewegungsrichtung ist die Zielposition minus der aktuellen Position. Alles, was Sie tun müssen, ist, diesen Vektor auf die tatsächlich gewünschte Bewegungsgeschwindigkeit zu skalieren. Wiederholen Sie jeden Frame.
Sie müssen die Bewegung auf dem Server simulieren. Woher wissen Sie sonst, dass alle Spieler dasselbe Verhalten beobachten?
Sie benötigen eine grundlegende Pfadfindung. A * ist der Standard. Sie können einen Pfad zum Ziel berechnen und dann diesem Pfad folgen, indem Sie wie oben beschrieben Bewegungsvektoren festlegen. (Oder Sie können das Steuerverhalten wie in der Antwort von Byte56 verwenden, was mit einigen zusätzlichen Extras im Wesentlichen identisch ist.)
quelle