- Home /
This post has been wikified, any user with enough reputation can edit it.
C# touchpad movement
Hey
I'm new to game development and need help with my movement script
My setup is:
Player that moves left to right whilst falling this has my player controller script
using UnityEngine;
using System.Collections;
[System.Serializable]
public class Boundary
{
public float xMin, xMax;
}
public class PlayerController : MonoBehaviour
{
public float speed;
public Boundary boundary;
public SimpleTouchPad touchPad;
void FixedUpdate ()
{
GameControl.dist = (int) Mathf.Abs(transform.position.y);
Vector2 direction = touchPad.GetDirection ();
Vector2 movement = new Vector3 (direction.x, 0.0f);
GetComponent<Rigidbody2D>().velocity = movement * speed;
}
}
Then my touchpad is a ui element that covers the screen
using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using System.Collections;
public class SimpleTouchPad : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler {
public float smoothing;
private Vector2 origin;
private Vector2 direction;
private Vector2 smoothDirection;
private bool touched;
private int pointerID;
void Awake ()
{
direction = Vector2.zero;
touched = false;
}
public void OnPointerDown (PointerEventData data)
{
if (!touched) {
touched = true;
pointerID = data.pointerId;
origin = data.position;
}
}
public void OnDrag (PointerEventData data)
{
if (data.pointerId == pointerID) {
Vector2 currentPosition = data.position;
Vector2 directionRaw = currentPosition - origin;
direction = directionRaw.normalized;
}
}
public void OnPointerUp (PointerEventData data)
{
if (data.pointerId == pointerID) {
direction = Vector2.zero;
touched = false;
}
}
public Vector2 GetDirection ()
{
smoothDirection = Vector2.MoveTowards (smoothDirection, direction, smoothing);
return smoothDirection;
}
}
My problem is that if I swipe left then right (or vice versa) without lifting my finger of the screen it doesn't react straight away. The player keeps moving to the left for a short wile before moving right.
Any ideas?
Comment
Your answer