puzzle_games/Assets/Shape Puzzle/Scripts/Shape.cs
2025-03-23 19:58:16 -04:00

52 lines
1.7 KiB
C#

using UnityEngine;
using UnityEngine.EventSystems;
public enum ShapeType { Box, Triangle, Diamond }
public class Shape : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler
{
public ShapeType shapeType;
[Header("Floats")]
public float yMax = 3.9f;
public float yMin = -.1f;
public float xMax = 3.5f;
public float xMin = -3.5f;
public float sensitivity = 0.008f;
public float maxSpeed = 1f;
public RectTransform m_transform = null;
public bool isShapeSpecific = false;
private bool dragging;
private Vector2 posToMove;
void Start() => m_transform = GetComponent<RectTransform>();
private void FixedUpdate()
{
m_transform.anchoredPosition += posToMove;
posToMove = Vector2.zero;
}
public void OnDrag(PointerEventData eventData)
{
if (!dragging || eventData.delta.y > 0 && m_transform.anchoredPosition.y >= yMax / m_transform.localScale.y
|| eventData.delta.y < 0 && m_transform.anchoredPosition.y <= yMin / m_transform.localScale.y
|| eventData.delta.x > 0 && m_transform.anchoredPosition.x >= xMax / m_transform.localScale.x
|| eventData.delta.x < 0 && m_transform.anchoredPosition.x <= xMin / m_transform.localScale.x)
return;
posToMove = new Vector2(Mathf.Clamp(eventData.delta.x * sensitivity, -maxSpeed, maxSpeed), Mathf.Clamp(eventData.delta.y * sensitivity, -maxSpeed, maxSpeed));
}
public void OnBeginDrag(PointerEventData eventData)
{
transform.SetSiblingIndex(transform.parent.childCount - 1);
dragging = true;
}
public void OnEndDrag(PointerEventData eventData) => dragging = false;
}