Ropasci-Forest/Assets/Scripts/Hand/FakeFingerManager.cs
Gerard Gascón fca6784fe7 init
2025-04-24 17:02:43 +02:00

84 lines
2.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class FakeFingerManager : MonoBehaviour, IPointerDownHandler, IBeginDragHandler, IEndDragHandler, IDragHandler, IDropHandler{
public HandManager.FingerTypes fingerType = HandManager.FingerTypes.Default;
[SerializeField] Canvas canvas = default;
RectTransform rectTransform;
CanvasGroup canvasGroup;
Vector2 defaultPos;
[SerializeField] float smoothTime = .5f;
[HideInInspector] public bool dragging;
[HideInInspector] public Vector2 posToGo;
Vector2 position;
[HideInInspector] public bool setPos;
[HideInInspector] public int index;
void Awake(){
rectTransform = GetComponent<RectTransform>();
canvasGroup = GetComponent<CanvasGroup>();
defaultPos = posToGo = rectTransform.anchoredPosition;
}
public void OnBeginDrag(PointerEventData eventData){
canvasGroup.blocksRaycasts = false;
canvasGroup.alpha = .6f;
dragging = true;
setPos = false;
}
public void OnDrag(PointerEventData eventData){
rectTransform.anchoredPosition += eventData.delta / canvas.scaleFactor;
}
public void OnEndDrag(PointerEventData eventData){
StartCoroutine(ResetToDefaultPos());
canvasGroup.blocksRaycasts = true;
canvasGroup.alpha = 1f;
}
public void OnPointerDown(PointerEventData eventData){
}
public void OnDrop(PointerEventData eventData){
}
void Update(){
if(!dragging)
rectTransform.anchoredPosition = Vector2.SmoothDamp(rectTransform.anchoredPosition, posToGo, ref position, smoothTime);
}
IEnumerator ResetToDefaultPos(){
yield return new WaitForSeconds(.1f);
if (!setPos){
/*switch(index){
case 1:
hand.finger1 = false;
break;
case 2:
hand.finger2 = false;
break;
case 3:
hand.finger3 = false;
break;
case 4:
hand.finger4 = false;
break;
case 5:
hand.finger5 = false;
break;
}*/
posToGo = defaultPos;
dragging = false;
}
}
}