# Problems with vector3 in world / local space

Im trying to make a 2d game in which you can move the character using wasd and the character is always looking at the mouse. The next thing i want to make is a 2d cone shaped raycast in the direction the character is looking. The code i have right now is this: (Dont mind the debug.line, this is just to visualise the rays for later)

``````    //variables for rotating object to mouse position
var mousePosition = Input.mousePosition;
var screenPoint = Camera.main.WorldToScreenPoint(transform.localPosition);
var offset = new Vector2(mousePosition.x - screenPoint.x, mousePosition.y - screenPoint.y);
var angle = Mathf.Atan2(offset.y, offset.x) * Mathf.Rad2Deg;

transform.rotation = Quaternion.Euler(0, 0, angle);
//Cone 60 degrees, 30 degrees to top, 30 degrees to bottom
for (int i = 0; i < 30; i = i + 2)
{
var rad = i * Mathf.PI / 180;

Vector3 directionUp = new Vector3(transform.position.x + 5, transform.position.y + difference, 0.0f);
Vector3 directionDown = new Vector3(transform.position.x + 5, transform.position.y - difference, 0.0f);

Debug.DrawLine(transform.position, directionUp, Color.green);
Debug.DrawLine(transform.position, directionDown, Color.green);
}
``````

However now the debug lines are always facing the world axis of transform.position.x + 5, so it is not facing the direction it is looking. I was hoping that using transform.position.x + 5 would use the local x/ y axis of the object with rotation in mind but it doesnt seem to work like that. Im guessing it has something to do with local/ world space but no idea how to fix this. Any tips for fixing this?

This is going to give you a junk value:

``````var screenPoint = Camera.main.WorldToScreenPoint(transform.localPosition);
``````

Local position is only for checking / setting an object’s position with respect to its direct parent. You aren’t going to have a meaningful use of that outside of those cases, especially not with something as absolute as something’s position on screen.

Use the object’s absolute world position instead:

``````var screenPoint = Camera.main.WorldToScreenPoint(transform.position);
``````

I didn’t look through the rest of your work, but see if that resolves your issue.