- Home /
Problem with a ballistic trajectory simulation (rigidbody.velocity)
I am working on simulation of a ballistic trajectory and i found this helpful and applied it to my script.
I have a trajectory calculator script and the values calculated are the same with other calculators over the internet.
All is fine when the angle is 30 degrees, but when i change it to 45 or 60 and using the calculator to solve for the required initial velocity to hit the target, it doesnt hit the target.
Another thing i notice is that launching the object on 45 degrees with the required initial velocity to hit the target only takes half the distance from the target, and with 60 degrees takes double the distance. The 30 degrees is the only one hitting the target.
I've read here that the 60 and 30 degree trajectories have the same range, as do any pair of launches at complementary angles. Which means that whenever i hit the target using a specific initial velocity at 30 degrees, it must also hit the target at 60 degrees at using the same initial velocity. But that is not what's happening.
Here's the codde for the weapon launch:
void BallisticTrajectory()
{
this.rigidbody.useGravity = true; //toggle on the gravity
float g = Physics.gravity.magnitude;
VSpeed = Mathf.Sqrt (2 * g * MaxHeight); // vertical speed = Sqrt(2g*Hmax)
TotalTime = 2 * VSpeed / g; // time = 2VSpeed / g
HSpeed = MaxDistance / TotalTime; //horizontal speed
rigidbody.velocity = transform.TransformDirection(new Vector3(0, HSpeed, -VSpeed));
}