- Home /
Ray2d origin remains on 0,0,0 and I don't know why ;(
Hey guys I'm making a 2d platformer and my main character is similar to a circle. His eyes (sprite of 2 pupils) should move around a circle inside the character and follow the mousecursor on this circle ;) So I thought about using a Ray2d and give it an origin and the direction to the cursor, and than use the getPoint() function with my constant radius. Somehow its only working if I move my cusor around the 0,0,0 point. Maybe you got an idea what I'm doing wrong ;)
Code in c#:
public class PlayerEyes : MonoBehaviour {
private Transform playerTransform;
private float radius = 0.1f;
// Use this for initialization
void Start () {
playerTransform = GameObject.Find("Player").GetComponent<Transform>();
}
void FixedUpdate()
{
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Ray2D eyeRay = new Ray2D ( (Vector2) playerTransform.position, (Vector2) mousePosition);
transform.position = eyeRay.GetPoint(radius);
}
}
Thank you for your help mates ;)
Answer by kidmosey · Jul 22, 2015 at 06:40 AM
Ray2D accepts two parameters, a location and a direction.
You are giving it two positions.
Try converting the second parameter to a direction:
(mousePosition - playerTransform.position).normalized
Answer by ian_sorbello · Jul 22, 2015 at 04:52 AM
I think the problem is that a Ray2D struct contains a starting position and a direction - whereas you are supplying a starting position and an ending position (the mouse point).
Therefore, I think you need to get the direction first:
Vector2 dir = (mousePosition - playerTransform.position).normalized;
then you'd do:
Ray2D eyeRay = new Ray2D ( (Vector2) playerTransform.position, dir);
I haven't tested the code, but that's the nut of the problem (I think).
Ian.