using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class DynamicJoystick : Joystick { public float moveThreshold { get { return _moveThreshold; } set { _moveThreshold = Mathf.Abs(value); } } [SerializeField] private float _moveThreshold = 1; protected override void Start() { moveThreshold = _moveThreshold; base.Start(); background.gameObject.SetActive(false); } public override void OnPointerDown(PointerEventData eventData) { background.anchoredPosition = ScreenPointToAnchoredPosition(eventData.position); background.gameObject.SetActive(true); base.OnPointerDown(eventData); } public override void OnPointerUp(PointerEventData eventData) { background.gameObject.SetActive(false); base.OnPointerUp(eventData); } protected override void HandleInput(float magnitude, Vector2 normalised, Vector2 radius, Camera cam) { if (magnitude > _moveThreshold) { Vector2 difference = normalised * (magnitude - _moveThreshold) * radius; background.anchoredPosition += difference; } base.HandleInput(magnitude, normalised, radius, cam); } }