83 lines
1.8 KiB
C#
83 lines
1.8 KiB
C#
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
|
|
public class MobileCombatButtons : MonoBehaviour,
|
|
IPointerDownHandler,
|
|
IPointerUpHandler
|
|
{
|
|
public enum ButtonType
|
|
{
|
|
Punch,
|
|
Kick,
|
|
Special
|
|
}
|
|
|
|
public ButtonType buttonType;
|
|
|
|
public PlayerControllerNewRohan player;
|
|
|
|
[SerializeField] private float holdTime = 0.3f;
|
|
private float pressTime;
|
|
|
|
private bool isHolding;
|
|
private bool holdTriggered;
|
|
|
|
void Update()
|
|
{
|
|
if (player == null)
|
|
player = FindFirstObjectByType<PlayerControllerNewRohan>();
|
|
|
|
if (isHolding && !holdTriggered)
|
|
{
|
|
if (Time.time - pressTime >= holdTime)
|
|
{
|
|
holdTriggered = true;
|
|
|
|
switch (buttonType)
|
|
{
|
|
case ButtonType.Punch:
|
|
player.PunchHold();
|
|
break;
|
|
|
|
case ButtonType.Kick:
|
|
player.KickHold();
|
|
break;
|
|
|
|
case ButtonType.Special:
|
|
player.SpecialHold();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void OnPointerDown(PointerEventData eventData)
|
|
{
|
|
pressTime = Time.time;
|
|
isHolding = true;
|
|
holdTriggered = false;
|
|
}
|
|
|
|
public void OnPointerUp(PointerEventData eventData)
|
|
{
|
|
isHolding = false;
|
|
|
|
if (holdTriggered)
|
|
return;
|
|
|
|
switch (buttonType)
|
|
{
|
|
case ButtonType.Punch:
|
|
player.PunchTap();
|
|
break;
|
|
|
|
case ButtonType.Kick:
|
|
player.KickTap();
|
|
break;
|
|
|
|
case ButtonType.Special:
|
|
player.SpecialTap();
|
|
break;
|
|
}
|
|
}
|
|
} |