- Home /
Calculating arc of an already moving object C#
In my game the player character is constantly running like an endless runner, your jump is based on how long you hold down the mouse button, to help in visualizing this I am using a line renderer to create a jump arc. The arc works great except for one problem, it is creating a jump arc for an object assuming that isn't already moving which my object is. because of this the arc always falls short of where the player actually lands making it massively inaccurate.
void RenderGuideLine()
{
lr.positionCount = resolution + 1;
lr.SetPositions(CalculateArcArray()) ;
}
Vector3[] CalculateArcArray()
{
Vector3[] arcArray = new Vector3[resolution + 1];
radianAngle = Mathf.Deg2Rad * angle;
float maxDistance = (jumpHeight + rb.velocity.x * jumpHeight + rb.velocity.x * Mathf.Sin(2 * radianAngle)) / gravity;
for (int i = 0; i <= resolution; i++)
{
float t = (float)i / (float)resolution;
arcArray[i] = CalculateArcPoint(t, maxDistance) + transform.position;
}
return arcArray;
}
Vector3 CalculateArcPoint(float t, float maxDistance)
{
float x = t * maxDistance;
float y = x * Mathf.Tan(radianAngle) - ((gravity * x * x) / (2 * jumpHeight * jumpHeight * Mathf.Cos(radianAngle) * Mathf.Cos(radianAngle)));
return new Vector3(x, y);
}
This is my code for generating the arc, jumpheight is the float that goes up as you hold down the button down. I know I need to slot the X velocity of the rigidbody in somewhere but I can't for the life of me figure out where to fit it.
Your answer
Follow this Question
Related Questions
Why do I get different rigidbody.velocity depending on angle? 1 Answer
How to allow the player to change the mass/force of an object in the UI? Noob question 2 Answers
Any way to gracefully detach object with Unity physics? 2 Answers
Moving rigidbody (Player) with addForce or Velocity ? 1 Answer
Setting a RigidBody's velocity messes with my custom gravity, not sure how to proceed. 0 Answers