This Unity C# tutorial will show you how to make a game object look at and follow your touch.
Time Breakdown
- 0:00 - Thank you!
- 0:27 - Technical Difficulties with Youtube
- 1:55 - Overview of what we're doing. Making an object follow your touch on screen
- 2:40 - Important note about the orientation of your character or object
- 3:25 - Inheiriting from TouchLogic and setting up variables
- 5:00 - Setting up our function definitions
- 7:40 - Setting our finger vector with ScreenToWorldPoint
- 8:00 - Setting up a temp variable with a z value appended to our touch position
- 9:25 - Going to the Unity Scripting Documentation to see what we need the z value for
- 9:44 - Calculating that z value
- 10:46 - Make our object LookAt our finger
- 11:15 - Demonstration of the objects looking at our finger in Unity
- 11:40 - Make the object move towards our finger
- 12:50 - Demonstration of the object moving towards our finger
- 13:16 - Outro, thanks for watching
Check out the videos above to hear the explanation and see the code in action
/*/ * Script by Devin Curry * www.Devination.com * www.youtube.com/user/curryboy001 * Please like and subscribe if you found my tutorials helpful :D * Twitter: https://twitter.com/Devination3D /*/ using UnityEngine; using System.Collections; public class FollowTouch : TouchLogicV2//NOTE: This script has been updated to V2 after video recording { public float speed = 1f, maxDist = 2; private Vector3 finger; private Transform myTrans, camTrans; void Start () { myTrans = this.transform; camTrans = Camera.main.transform; } //separated to own function so it can be called from multiple functions void LookAtFinger() { //z of ScreenToWorldPoint is distance from camera into the world, so we need to find this object's distance from the camera to make it stay on the same plane Vector3 tempTouch = new Vector3(Input.GetTouch(touch2Watch).position.x, Input.GetTouch(touch2Watch).position.y,camTrans.position.y - myTrans.position.y); //Convert screen to world space finger = Camera.main.ScreenToWorldPoint(tempTouch); //look at finger position myTrans.LookAt(finger); //move towards finger if not too close if(Vector3.Distance(finger, myTrans.position) > maxDist) myTrans.Translate (Vector3.forward * speed * Time.deltaTime); } public override void OnTouchMovedAnywhere() { LookAtFinger(); } public override void OnTouchStayedAnywhere() { LookAtFinger(); } public override void OnTouchBeganAnywhere() { touch2Watch = TouchLogicV2.currTouch; } }