Skip to content
Snippets Groups Projects
Commit 2558c941 authored by John Schihada's avatar John Schihada
Browse files

Now really Fixed the problem. Problem was: Vector3.angle() not only returns...

Now really Fixed the problem. Problem was: Vector3.angle() not only returns only values < 180° but also only absolute angle-values
parent a7939ef5
Branches
Tags
No related merge requests found
......@@ -158,6 +158,13 @@ public void SpawnAngle(AngleFact angleFact)
//Rotate so that the rotation points from point2 to the middle of point3 and point1
angle.transform.GetChild(0).rotation = Quaternion.FromToRotation(Vector3.right, (Vector3.Lerp((tempPoint1 - point2).normalized, (tempPoint3 - point2).normalized, 0.5f)));
//Now the rotation around that direction must also be adjusted
//We calculate the Angle not with Vector3.Angle() because it only returns absolute angle-values
float signedAngle = Mathf.Atan2(Vector3.Dot((Vector3.Lerp((tempPoint1 - point2).normalized, (tempPoint3 - point2).normalized, 0.5f)), Vector3.Cross(angle.transform.GetChild(0).forward.normalized, (tempPoint1 - tempPoint3).normalized)), Vector3.Dot(angle.transform.GetChild(0).forward.normalized, (tempPoint1 - tempPoint3).normalized)) * Mathf.Rad2Deg;
if (signedAngle < 0)
{
angle.transform.GetChild(0).RotateAround(point2, (Vector3.Lerp((tempPoint1 - point2).normalized, (tempPoint3 - point2).normalized, 0.5f)), Vector3.Angle(angle.transform.GetChild(0).forward.normalized, (tempPoint3 - tempPoint1).normalized));
}
else
angle.transform.GetChild(0).RotateAround(point2, (Vector3.Lerp((tempPoint1 - point2).normalized, (tempPoint3 - point2).normalized, 0.5f)), Vector3.Angle(angle.transform.GetChild(0).forward.normalized, (tempPoint1 - tempPoint3).normalized));
string letter = ((Char)(64 + angleFact.Id + 1)).ToString();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment