Skip to content

Instantly share code, notes, and snippets.

@seferciogluecce
Created November 14, 2019 19:11
Show Gist options
  • Save seferciogluecce/6c3542a7a7912ccbd50a01f3b916bcb9 to your computer and use it in GitHub Desktop.
Save seferciogluecce/6c3542a7a7912ccbd50a01f3b916bcb9 to your computer and use it in GitHub Desktop.
using UnityEngine;
public class MoveSmoothlyToClick : MonoBehaviour
{
Vector2 initPos;
Vector2 MinPos;
Vector2 MaxPos;
Vector2 targetPos;
public float Speed = 2;
public float thresholdStopDistance = .3f;
void Start()
{
initPos = transform.position;
targetPos = initPos;
Vector2 Size = GetComponent<SpriteRenderer>().bounds.extents;
MinPos = (Vector2)Camera.main.ViewportToWorldPoint(new Vector2(0, 0)) + Size;
MaxPos = (Vector2)Camera.main.ViewportToWorldPoint(new Vector2(1, 1)) - Size;
}
void Update()
{
if (Input.GetMouseButton(0))
{
Vector2 mousePos = (Input.mousePosition);
targetPos = new Vector2(Camera.main.ScreenToWorldPoint(mousePos).x, Camera.main.ScreenToWorldPoint(mousePos).y);
targetPos.x = Mathf.Clamp(targetPos.x, MinPos.x, MaxPos.x);
targetPos.y = Mathf.Clamp(targetPos.y, MinPos.y, MaxPos.y);
transform.position = Vector2.Lerp(transform.position, targetPos, Time.deltaTime * Speed);
}
else if (!Input.GetMouseButton(0) && Vector2.Distance(targetPos, transform.position) > thresholdStopDistance)
{
transform.position = Vector2.Lerp(transform.position, targetPos, Speed * Time.deltaTime);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment