- Home /
Input.mousePosition returns coordinates as integers.
I'm using this code here:
#pragma strict
function Update () {
var mousePos = Input.mousePosition;
mousePos.x -= Screen.width/2;
mousePos.y -= Screen.height/2;
transform.position = mousePos;
}
I'm using it to move an objects position to where the mouse is in 2D space. The problem is, it's only in the same position if it's in the exact center. if you move the cursor one pixel to the left or right, the object moves way off to the left or right.
When looking at the X and Y coordinates in the inspector I noticed it would only be integers; so if my cursor moved a little to the left it, instead of the x going to -0.1 or something, it would go straight to -1.0.
Any help would be awesome.
You don't want to set it to the mouse pos, because that value is in screen space whereas the object is in world space. What you want to use, probably, is the delta position of the mouse movement, multiplied by some sort of scaler (either one of your own design, or time.deltaTime).
Answer by GragliaMarco · Dec 30, 2013 at 09:04 PM
You're probably debugging the screen coordinate, which is indeed an integer. And assigning that value to the object in world space, as iwaidrop stated correctly. There are several ways to do what you want, i would go for a simple raycast to the 2D world. Something in the line of:
var mousePos = Input.mousePosition;
var p : Vector3 = camera.ScreenToWorldPoint (Input.MousePosition);
transform.position = mousePos;
(didnt test it but you should get an idea)
Hope it helps.
Your answer
Follow this Question
Related Questions
`UnityEngine.Transform.position'. Consider storing the value in a temporary variable 2 Answers
Script to make Camera follow the player C# 3 Answers
Vector3 Transform.Position Not Working 2 Answers
Doors, need help. 1 Answer
Circle inside Circle 1 Answer