- Home /
Touch movement not working
I am trying to move a gameObject by touch.
#pragma strict
var player : GameObject;
var moveToPos : Vector3;
var touchPos : Vector3;
var myTransform : Transform;
var moveSpeed : int;
function start ()
{
myTransform = transform;
}
function Update ()
{
touchPos = Input.mousePosition;
player.transform.position.z = 5;
if (Input.GetMouseButton(0)) {
moveToPos = Vector3 (touchPos.x , myTransform.position.y , 5);
myTransform.Translate(moveToPos * moveSpeed * Time.deltaTime);
Debug.Log(touchPos);
}
}
But no matter where I touch the object zooms to the right. I have asked someone with more experienced than me in unity and he has no idea why it isn't working. I also noticed that i had to set all the variable's values manually in the inspector.
Answer by StephanK · Mar 09, 2012 at 11:04 AM
Input.mousePosition returns ScreenCoordinates in pixels. Those are always > 0. So the x value of your velocity vector (the one you use to translate) will always be > 0 hence you move to the right.
What you have to do is convert the ScreenCoordinates to WorldCoordinates. You can do that using Camera.ScreenToWorldPoint.
I have done a lot of editing and have come up with this:
var moveSpeed : int = 10; var mousePos : Vector3;
function Update () {
transform.position.z = 2;
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if(Input.Get$$anonymous$$ouseButtonDown(0)) {
transform.Translate (Vector3 (10, 9, 2));
} }
However when i click the object moves randomly around the screen. I have consistently encountered this problem when trying to translate my object to a Vector3.
It seems like given that code it would translate the object (10,9,2) no matter where you clicked, now wouldn't it?
@mpavlinsky, No. It doesn't even translate there. when I tell it to move to (10, 9, 2) it moves where ever it wants to. And I have no idea why.
Is it a problem with transform.Translate?
I can't translate to anywhere I specify. Let alone my mouse position!
Translate moves the object by whatever you pass in, not to it. This is my understanding from the script reference at least, I have never actually used this function.
You probably want transform.position = whatever;