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 :wink: 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 :wink:

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 :wink:

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

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.