96 lines
2.3 KiB
C#
96 lines
2.3 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
public class CustomInput : MonoBehaviour
|
|
{
|
|
#region Static fields
|
|
|
|
public static Vector2 leftInput;
|
|
public static Vector2 rightInput;
|
|
public static Action OnTouchDown;
|
|
public static Action OnTouchUp;
|
|
|
|
#endregion
|
|
|
|
[Header("Character Control Parameters")]
|
|
|
|
[SerializeField] private DynamicJoystick _leftJoystick;
|
|
[SerializeField] private FloatingJoystick _rightJoystick;
|
|
[SerializeField] private FixedJoystick _attackJoystick;
|
|
[SerializeField] private FixedJoystick _defendJoystick;
|
|
|
|
private Joystick _currentRightJoystick;
|
|
|
|
|
|
private void Awake()
|
|
{
|
|
SetupDefaultControls();
|
|
|
|
_rightJoystick.OnTouchDown += InvokeTouchDown;
|
|
_rightJoystick.OnTouchUp += InvokeTouchUp;
|
|
|
|
_attackJoystick.OnTouchDown += InvokeTouchDown;
|
|
_attackJoystick.OnTouchUp += InvokeTouchUp;
|
|
|
|
_defendJoystick.OnTouchDown += InvokeTouchDown;
|
|
_defendJoystick.OnTouchUp += InvokeTouchUp;
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
ResetInput();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
leftInput.x = _leftJoystick.Horizontal;
|
|
leftInput.y = _leftJoystick.Vertical;
|
|
|
|
rightInput.x = _currentRightJoystick.Horizontal;
|
|
rightInput.y = _currentRightJoystick.Vertical;
|
|
}
|
|
|
|
public void SetupDefaultControls()
|
|
{
|
|
_rightJoystick.gameObject.SetActive(true);
|
|
_defendJoystick.gameObject.SetActive(false);
|
|
_attackJoystick.gameObject.SetActive(false);
|
|
_currentRightJoystick = _rightJoystick;
|
|
}
|
|
|
|
public void SetupActiveJoystick(BonusType bonusType)
|
|
{
|
|
Joystick newActiveJoystick;
|
|
if (bonusType == BonusType.Attack)
|
|
{
|
|
newActiveJoystick = _attackJoystick;
|
|
}
|
|
else
|
|
{
|
|
newActiveJoystick = _defendJoystick;
|
|
}
|
|
|
|
_rightJoystick.gameObject.SetActive(false);
|
|
_defendJoystick.gameObject.SetActive(false);
|
|
_attackJoystick.gameObject.SetActive(false);
|
|
|
|
newActiveJoystick.gameObject.SetActive(true);
|
|
_currentRightJoystick = newActiveJoystick;
|
|
}
|
|
|
|
private void InvokeTouchDown()
|
|
{
|
|
OnTouchDown?.Invoke();
|
|
}
|
|
|
|
private void InvokeTouchUp()
|
|
{
|
|
OnTouchUp?.Invoke();
|
|
}
|
|
|
|
private void ResetInput()
|
|
{
|
|
leftInput = Vector2.zero;
|
|
}
|
|
|
|
} |