Elharter Geschrieben 5. März 2021 Melden Share Geschrieben 5. März 2021 Hallo liebes Forum, ich möchte folgendes realisieren: Auf X steht ein Objekt, Richtung Y möchte. Möchte aber den Punkt ein wenig davor. Vector3 currPosition = x.transform.position; Vector3 goalPosition = y.transform.position; Vector3 dir = goalPosition - currPosition; Debug.DrawRay(currPosition, dir, Color.cyan, 60); (macht was es soll) Aber wie komme ich jetzt in die richtige Richtung eine feste Länge zurück? danke & lg Michael Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sir_Mathew Geschrieben 5. März 2021 Melden Share Geschrieben 5. März 2021 Also du willst nur die Entfernung vom ersten Vector3 zum zweiten Vector3? float dist = Vector3.Distance(vector3position1, vector3position2); dist gibt die Länge zurück. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Elharter Geschrieben 5. März 2021 Autor Melden Share Geschrieben 5. März 2021 Nein....sowie eingezeichnet. Ich möchte, folgend der Richtung vom 2ten Punkt zurück in einem bestimmten Abstand (den ich definieren kann+will) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MaZy Geschrieben 5. März 2021 Melden Share Geschrieben 5. März 2021 dir.normalized * 60 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Elharter Geschrieben 6. März 2021 Autor Melden Share Geschrieben 6. März 2021 funktioniert leider nicht Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Peanut Geschrieben 6. März 2021 Melden Share Geschrieben 6. März 2021 Also ich würde es so angehen : 1.) Erst die Richtung festlegen Vector2 dir = goalPosition - currPosition; und die Richtung dann normieren. dir= dir.normalize; 2.) Berechnen wie weit der Punkt von der goal Position weg sein soll. z.B 10% oder halt einen Festen wert. float dist = Vector3.Distance(goalPosition, currPosition) * 0.9f ; für 90% der Länge des Vectors oder float dist = Vector3.Distance(goalPosition, currPosition) * - x ; 3.) WunschVektor berechnen . Vector2 wunschVector = dir * dist; das müsste die einen Vektor geben in Richtung der goal Position mit der gewünschten Länge. Gruß von der Nuss :3 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MaZy Geschrieben 6. März 2021 Melden Share Geschrieben 6. März 2021 vor 5 Stunden schrieb Elharter: vor 21 Stunden schrieb MaZy: dir.normalized * 60 funktioniert leider nicht War Kurzform: Also genauer gesagt ist es: pos + direction * length. Also: currPosition + dir.normalized * 60.dir.normalized * 60 ist natürlich von 0 Punkt aus. Gibst du die Position dazu hast du relativ zu deinem Punkt die Verschiebung. Wenn die 60 aber keine Konstante ist sondern, du willst immer zu jeder Distanz -20. Dann statt 60 dir.magnitude - 20 oder Vector3.Distance(currPosition, goalPosition) - 20 rechnen. Also: var realPosition = currPosition + dir.normalized * (dir.magnitude - 20) // oder var realPosition = currPosition + dir.normalized * (Vector3.distance(currPosition, goalPosition) - 20) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Elharter Geschrieben 8. März 2021 Autor Melden Share Geschrieben 8. März 2021 Danke euch beiden! Funktioniert perfekt! 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.