Jump to content
Unity Insider Forum

Einen Punkt zwischen 2 Punkte finden, minus ein paar Schritte zurück?


Elharter

Recommended Posts

Hallo liebes Forum,

 

ich möchte folgendes realisieren:

image.png.18c3d5dd3584363481746fb754fea22c.png

 

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

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

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

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...