This script allows for 2D point-and-click movement along the X-axis only - with no need for NavMeshes or pathfinding.
It works by taking the X position of the mouse (in world-space) and the Y position of the player, and having the player walk to that vector.
To use it:
- Set your game's Movement method to Point And Click, and your Camera perspective to 2D.
- Disable the built-in movement system with the Engine: Manage systems Action, setting Movement to Disabled. This can be done either in your scene's OnStart Cutscene, or your game's ActionList on start game ActionList.
- Paste thes code below into a C# script named PointClickHorizontal2D, and attach it to any object in your scene
- (Optional) Tweak the Horizontal Limits field in the component's Inspector to set how far the player can move along the X-axis.
public class PointClickHorizontal2D : MonoBehaviour
public Vector2 horizontalLimits = new Vector2 (-100f, 100f);
private void Update ()
if (KickStarter.stateHandler.IsInGameplay ())
if (KickStarter.playerInput.GetMouseState () == MouseState.SingleClick)
// Get the mouse position in world space
float zDepth = KickStarter.player.transform.position.z - Camera.main.transform.position.z;
Vector3 mouseScreenPosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, zDepth);
Vector3 mouseWorldPosition = Camera.main.ScreenToWorldPoint (mouseScreenPosition);
// Limit the mouse position to within horizontalLimits
if (mouseWorldPosition.x < horizontalLimits.x)
mouseWorldPosition.x = horizontalLimits.x;
if (mouseWorldPosition.x > horizontalLimits.y)
mouseWorldPosition.x = horizontalLimits.y;
// Create a vector with the mouse's x, and the player's y
Vector2 clickPoint = new Vector2 (mouseWorldPosition.x, KickStarter.player.transform.position.y);
// Move the player to that point
KickStarter.player.MoveToPoint (clickPoint, false, false);