Gnurfl Geschrieben 28. März 2018 Melden Share Geschrieben 28. März 2018 Hallo Ich habe mein kleines Projekt mal erweitert. Nun gibt es auch einen animierten Gegner. Funktioniert recht gut. Ich rechne die Distanze vom Gegner und dem FPS Contoller aus und lasse auf Grund dieses Werte bestimmte Dinge gesehen. Also er läuft / stoppt/attakiert auf Grund dieses Wertes.. (in der Updatemethode) // Distance berrechnen und anzeigen gegnerPos = new Vector3 (transform.position.x , transform.position.y, transform.position.z); koordinatenme = new Vector3 (target.transform.position.x,target.transform.position.y, target.transform.position.z); distance = Vector3.Distance(gegnerPos,koordinatenme); Debug.Log(distance); Der Wert wird erstmal korrekt angezeigt. Der Gegner reagiert auch wie gewünscht. Nuuuuur: Der Wert distance stimmt irgendwann nicht mehr. Der Gegner ist viel weiter weg und distance ist auf 0.x etc. Er wird wieder größer wenn ich wegrenne.. Aber er verschiebt sich irgendwie ständig und ich kann kein wirkliches Muster erkennen. Weiß jemand woran das liegen könnte? Bewegt wird der Gegner (gegnerpos) uebrigens mit: transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime); Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 28. März 2018 Melden Share Geschrieben 28. März 2018 Kann so keinen Fehler erkennen. Lass dir am besten mal den Vector in der Szeneview anzeigen, über den die Distanz berechnet wird. gegnerPos = new Vector3 (transform.position.x , transform.position.y, transform.position.z); koordinatenme = new Vector3 (target.transform.position.x,target.transform.position.y, target.transform.position.z); distance = Vector3.Distance(gegnerPos,koordinatenme); Debug.Log(distance); // Hier überprüfen wir, ob generell die Koordinaten stimmen Vector3 distanzVector = gegnerPos - koordinatenme; // Distanzvektor zum Feind Debug.DrawLine(koordinatenme, gegnerPos, Color.red); // Distanzvektor zum Feind im Szeneview anzeigen Debug.Log("Distanz-Vector: " + distance.magnitude); // Mal eine andere Methode die Distanz auszulesen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 29. März 2018 Melden Share Geschrieben 29. März 2018 Nur so nebenbei: new Vector3 (transform.position.x , transform.position.y, transform.position.z) ist gleichbedeutend, aber wesentlich kürzer schreibbar als transform.position Du kannst also schreiben: gegnerPos = transform.position; oder gleich distance = Vector3.Distance(transform.position, target.transform.position); und die beiden Zeilen davor gänzlich weglassen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Gnurfl Geschrieben 29. März 2018 Autor Melden Share Geschrieben 29. März 2018 @Zer0Cool: Danke für die Tipps. Der Vector zeigt das gleiche an wie meine Berrechnung. Ich kann weiterhin kein Muster erkennen. Ich habe den Abstand nun auf 20 erhöht (ab wann der Gegner stehenbleibt und attakiert) Vorher war es auf 0.x. Wenn der Gegner sich nicht bewegt (also nur ich mich bewege) scheinen die Daten zu stimmen. Für mich sehr unverständlich da die Berrechnung ja ständig neu gemacht wird. @Sascha: Wow.. Voll die Tipperei erspart. Danke Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
runner78 Geschrieben 29. März 2018 Melden Share Geschrieben 29. März 2018 Eventuell ist target ein anderes Object als der Gegner? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.