Uploaded August 2022 | Updated September 2026, 1 hour ago
This week you can learn how to add a Touch Movement Joystick to control your player using the New Input System. We'll specifically look at how to do that with a NavMeshAgent, but the same concept can be applied to Rigidbody movement or a CharacterController. In this tutorial you'll learn the full end to end process of Joystick Creation, Canvas Setup, & Code, along with some of the "gotchas" I learned when implementing my own mobile game so you don't have to run into the same struggles!
The Enhanced Touch API raises events onFingerDown, onFingerMove, and onFingerUp events to us when the user touches, moves, or lets go of the screen. It keeps track of which finger is doing what, so we can track each finger separately.
🔶 ALL THINGS LlamAcademy now available at: https://llamacademy.dev/support including latest tutorials, courses, ways to support, and more! Check it out 🙂
👨💻 Get the FULL FREE PROJECT on GitHub: github.com/llamacademy/mobile-touch-inputs
🏷️Save 25% on the ultimate C# IDE: JetBrains Rider with code LLAMACADEMY: jetbrains.com/store/?section=personal&billing=yearly
📚 Resources
🟠 Enhanced Touch: docs.unity3d.com/Packages/com.unity.inputsystem@1.2/api/UnityEngine.InputSystem.EnhancedTouch.Touch.html
🟠 Unity Manual for Touch Input: docs.unity3d.com/Packages/com.unity.inputsystem@1.2/manual/Touch.html
Some links may be affiliate links, which at no additional cost to you, gives me a small portion of the purchase.
Chapters:
00:00 Adding Touch Input Support - High Level Overview
02:32 Creating your Joystick & Canvas Setup
04:18 Quick Scene Overview & Enable Virtual Touch
05:12 References & FloatingJoystick.cs Review - PlayerTouchMovement.cs
06:44 Enable Touch Support & Add/Remove Event Listeners - PlayerTouchMovement.cs
07:30 HandleFingerDown - PlayerTouchMovement.cs
09:46 HandleFIngerMove - PlayerTouchMovement.cs
11:10 HandleLoseFinger - PlayerTouchMovement.cs
11:44 Actually Moving the Player - PlayerTouchMovement.cs
13:32 Demo & Thoughts on Player Rotation
This week you can learn how to add a Touch Movement Joystick to control your player using the New Input System. We'll specifically look at how to do that with a NavMeshAgent, but the same concept can be applied to Rigidbody movement or a CharacterController. In this tutorial you'll learn the full end to end process of Joystick Creation, Canvas Setup, & Code, along with some of the "gotchas" I learned when implementing my own mobile game so you don't have to run into the same struggles!
The Enhanced Touch API raises events onFingerDown, onFingerMove, and onFingerUp events to us when the user touches, moves, or lets go of the screen. It keeps track of which finger is doing what, so we can track each finger separately.
🔶 ALL THINGS LlamAcademy now available at: https://llamacademy.dev/support including latest tutorials, courses, ways to support, and more! Check it out 🙂
👨💻 Get the FULL FREE PROJECT on GitHub: github.com/llamacademy/mobile-touch-inputs
🏷️Save 25% on the ultimate C# IDE: JetBrains Rider with code LLAMACADEMY: jetbrains.com/store/?section=personal&billing=yearly
📚 Resources
🟠 Enhanced Touch: docs.unity3d.com/Packages/com.unity.inputsystem@1.2/api/UnityEngine.InputSystem.EnhancedTouch.Touch.html
🟠 Unity Manual for Touch Input: docs.unity3d.com/Packages/com.unity.inputsystem@1.2/manual/Touch.html
Some links may be affiliate links, which at no additional cost to you, gives me a small portion of the purchase.
Chapters:
00:00 Adding Touch Input Support - High Level Overview
02:32 Creating your Joystick & Canvas Setup
04:18 Quick Scene Overview & Enable Virtual Touch
05:12 References & FloatingJoystick.cs Review - PlayerTouchMovement.cs
06:44 Enable Touch Support & Add/Remove Event Listeners - PlayerTouchMovement.cs
07:30 HandleFingerDown - PlayerTouchMovement.cs
09:46 HandleFIngerMove - PlayerTouchMovement.cs
11:10 HandleLoseFinger - PlayerTouchMovement.cs
11:44 Actually Moving the Player - PlayerTouchMovement.cs
13:32 Demo & Thoughts on Player Rotation










