3 Pluspunkte 0 Minuspunkte

Wie kann ich den Winkel berechnen in dem die Kugel (der Raycasthit) eingeschlagen ist? Das hit Objekt hat eulerAngles aber ein Winkel ist ja nur eine einfache Zahl und kein Vector3.

RaycastHit hit;
if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, Mathf.Infinity, layerMask))
{

    Debug.Log("You hit " + hit.name + " at an angle of " + hit.transform.eulerAngles + " degrees");

}
von  

1 Antwort

1 Pluspunkt 0 Minuspunkte

Die EulerAngles sind die Winkel von dem Objekt das du getroffen hast. Wenn du auf eine Wand schießt bewegt sich die Wand nicht, du wirst also immer die selben Zahlen bekommen. Was du suchst ist der Winkel des Raycast relativ zur Normalen.

float angle = Vector3.Angle(transform.TransformDirection(Vector3.forward), hit.normal);

Ein Winkel von 0 bedeutet dass der Raycast senkrecht zur Oberfläche auftrifft, ein Winkel von 90 bedeutet dass er flach zur Oberfläche auftrifft.

von (884 Punkte)