- Home /
How to calculate Debug.DrawRay length to match raycast
Hi everyone, I've come across a bit of a problem. I am trying to work with some rays however when I tried to add a visual element to it I noticed something was wrong. I realize that you assign a length to a raycast from it's origin point but in drawray you have to multiply the direction to get a longer ray. However if you have a number that isn't 1 in your vector3 coordinates it will not calculate correctly. So heres is my code that seems to be pretty close. Notice how the raycast is 2 units long but the DrawRay is getting multiplied by 0.7. What I want to know is how to calculate this number correctly. Surely there's a math solution to this that you guys know.
if(jlpRayDuration >= Time.time)
{
var jlpRay = Physics.Raycast(botAttack.transform.position, transform.TransformDirection(Vector3(1.5, 2, 0)), 2);
Debug.DrawRay(botAttack.transform.position, transform.TransformDirection(Vector3(1.5, 2, 0)) * 0.7, Color.green);
}
P.S. I know the reason it's messing up is because if I had multiplied by 2 in the DrawRay it woulda done Vector3(1.5 2, 2 2, 0 * 2) giving me (3, 4, 0). Pretty sure that's what's messing it up although after typing it here it seems like it should still make sense.
Answer by fafase · Mar 17, 2014 at 07:48 AM
Normalized the direction vector and multiply by the distance you use in the Raycast method.
Vector3 direction = transform.TransformDirection(Vector3(1.5, 2, 0)).normalized;
float distance = 2f;
var jlpRay = Physics.Raycast(botAttack.transform.position,direction, distance);
Debug.DrawRay(botAttack.transform.position, direction * distance, Color.green);
Your answer

Follow this Question
Related Questions
Debug Draw for BoxCast and CapsuleCast 0 Answers
Rays drawn using Debug.DrawRay "fall" in editor view 1 Answer
Raycast won't hit Collider 1 Answer
draw ray weird outcome. 2 Answers
Raycast and drawray problems 2 Answers