- Home /
Question about Rays and why getPoint function
Hello, my program is 2d, and here is the scene. I have a gameobject, and when I click, I calculate the direction vector from my player gameobject to my mouse click position. Then I turn that into a ray, with origin at my player, and then I make a new "projectile" gameobject that follows that ray by use ray.getPoint(Position) and I increment that position to make it move.
My issue is: If i click closer to my player gameobject, the new projectile will go slower than if I click farther away from the player gameobject. Wondering why that is.
My code is roughly as follows:
//In player Controller
if (Input.GetMouseButtonDown(0))
{
GameObject throwingProjectile = Instantiate(throwingEquip, transform.position, transform.rotation);
Vector3 mouseVector = camera.ScreenToWorldPoint(Input.mousePosition);
Vector3 direction = mouseVector - transform.position;
Ray ray = new Ray(transform.position, direction);
throwingProjectile.GetComponent<ProjectileController>().setTarget(ray, mouseVector);
}
//In projectile Controller
public void setTarget(Ray mouseRay, Vector3 mouseVector)
{
ray = mouseRay;
float angle = Mathf.Atan2(transform.position.y - mouseVector.y, transform.position.x - mouseVector.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(new Vector3(0f, 0f, angle));
}
private void FixedUpdate()
{
transform.position = new Vector3(ray.GetPoint(position).x, ray.GetPoint(position).y, 0);
position += 1f;
}
Thanks in advance!
Answer by HarshadK · Aug 03, 2017 at 05:15 AM
Rather than going through all the trouble of calculating the ray and getting the position to move based on that, you can simply use the Vector2.MoveTowards or Vector2.Lerp to move your gameobject.
The thing is tho is i want the projectile to move to the mouse cursor and past it. If i use those it only goes to the cursor.
You can still use those by finding the target position to be beyond the mouse position using the direction between object and mouse position.
Sorry I'm confused. So i have my Vector3 playerPosition, and I have my Vector3 mousePosition. I find the direction vector by calculating (mousePosition - playerPosition). But now if I do a Vector2.$$anonymous$$oveTowards it will go to my mouseposition. You're proposing I move the mouseposition away from the player in the same direction correct? How would I go about moving the mousePosition in the same angle? I thought of this solution but couldnt figure out how to move the mousePosition along the same angle because vectors don't have origin's like rays do.
Your answer

Follow this Question
Related Questions
Angle Of Ray 2 Answers
What do Vector3s do in a ray? 1 Answer
Unity rigidbody2D with Vector3 1 Answer