Can't be reproduced without extensive testing.
Getting a forward angle for a throw.
Hey, I'm trying to use this script to send obj1 forward based on special_obj's transform.forward, however no matter what special_obj's forward is, obj1 still only goes straight.
The original script came from here (modified slightly as my task is different): https://forum.unity.com/threads/how-to-calculate-force-needed-to-jump-towards-target-point.372288/
float initialAngle = 10;
float gravity = Physics.gravity.magnitude;
float angle = initialAngle * Mathf.Deg2Rad;
// Positions of this object and the target on the same plane
Vector3 opos = new Vector3(obj1.position.x, 0, obj1.position.z);
Vector3 tpos = new Vector3(obj2.position.x, 0, obj2.position.z);
// Planar distance between objects
float distance = Vector3.Distance(tpos, opos);
// Distance along the y axis between objects
float yOffset = 0;
float initialVelocity = (1 / Mathf.Cos(angle)) * Mathf.Sqrt((0.5f * gravity * Mathf.Pow(distance, 2)) / (distance * Mathf.Tan(angle) + yOffset));
Vector3 velocity = new Vector3(0, initialVelocity * Mathf.Sin(angle), initialVelocity * Mathf.Cos(angle));
// Rotate our velocity to match the direction between the two objects
float angleBetweenObjects = Vector3.Angle(Vector3.forward, tpos - opos);
Vector3 targetDir = obj2.position - obj1.position;
//angleBetweenObjects = Vector3.SignedAngle(targetDir, transform.forward, Vector3.down);
angleBetweenObjects = Vector3.SignedAngle(targetDir, special_obj.forward, Vector3.down);
Vector3 finalVelocity = Quaternion.AngleAxis(angleBetweenObjects, Vector3.up) * velocity;
rb.AddForce(finalVelocity * rb.mass, ForceMode.Impulse);
The code will send obj1 however forward obj2 is, but even when obj2 is to it's left or behind, obj1 still goes Vector3.forward (the correct distance) rather than special_obj's transform.forward.
I even tried replacing every Vector3.direction with special_obj.forward and the result was the same.
Thanks in advance.
Follow this Question
Related Questions
Why the subtracting compound assignment operator is used to ADD a angle in unity? 1 Answer
How are angles measured in unity. Is it the mathematical way or the compass bearing way? 0 Answers
Applying a rotation relative to the object's starting rotation 0 Answers
normalize two angles, then modify the result? 0 Answers
How to get local angle of travel 0 Answers