It’s not as responsive on my phone as it looks in the video.
// Physics
[SerializeField] float forceAmount = 10f;
[SerializeField] float swipeThreshold = 10f;
Rigidbody2D rb;
private Vector2 startPos;
private Vector2 swipe;
private bool forceApplied = false;
// Audio
[SerializeField] private AudioSource audioSource;
[SerializeField] private AudioClip[] dashSfx;
[SerializeField] private AudioClip wallHit, enemyHit;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
startPos = touch.position;
forceApplied = false;
}
if (touch.phase == TouchPhase.Moved)
{
swipe = touch.position - startPos;
if (!forceApplied && swipe.magnitude > swipeThreshold)
{
rb.AddForce(swipe.normalized * forceAmount, ForceMode2D.Impulse);
audioSource.PlayOneShot(dashSfx[Random.Range(0, dashSfx.Length)], 1f);
forceApplied = true;
}
}
}
}