- Home /
Using raycasts to move a game object toward touch point.
I'm trying to figure out how to work touch controls out using a raycast, and for the most part, things are working. But I've run into a few troubles. I'm trying to eventually have it so that when I touch a point on the screen the game object will move from it's current position toward the touched point at a determinable speed, and then follow your finger as you slide it around the screen.
Currently, the game object located at center stage (0,0,1) will move in relation to touched points, but will not move toward the perceived touched point. I.E. I touch the bottom left corner of the screen, and the object instantly appears at 0,0,1, which is the center of screen in game units. But if I touch 50 pixels to the upper-right, the object will instantly move to the position of 50,50,1 in game units, not screen pixel position. Which is about 45 game units out of view. The game borders are at ~x:-4,4 and ~y:-9,9. Obviously I'd like for there not be a direction relation from game units to pixel location, but I'm not quite sure how to go about it.
I'm using this script attached to my orthographic Main Camera which is located at 0,0,10:
void Update()
{
TapSelect();
}
void TapSelect()
{
foreach (Touch touch in Input.touches)
{
if (touch.phase == TouchPhase.Began)
{
Ray ray = Camera.main.ScreenPointToRay(touch.position);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
hit.transform.SendMessage("Selected");
}
}
}
}
And this code is within the Game Object located at 0,0,1:
void Update()
{
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
Vector3 fingerPos = Input.GetTouch(0).position;
Vector3 pos = fingerPos;
pos.z = 1;
transform.position = pos;
}
}
I've modified them quite a bit trying to get better results, but this is how they started out. In short, I would appreciate finding out how I move an object to the position touched, as opposed to the positions x/y coordinates converted into game units. And also be able to have the object move not only on first touch, but while the finger is held down and moved. I'm pretty sure the second issue is due to using TouchPhase.Began, but I haven't tinkered with this yet.
Any help would greatly appreciated.
Your answer
Follow this Question
Related Questions
How to detect if a raycast ray stop hitting an object 1 Answer
Unity3d Get Cube Pressed On Mobile 1 Answer
Timer Freeze Problem 1 Answer
How do you Draw a Line Using your Finger's Position on Android 3 Answers
Player using turret problem 1 Answer