OldBlueWater/BlueWater/Assets/02.Scripts/AssaultMode/DraggableCard.cs

65 lines
1.8 KiB
C#
Raw Normal View History

2023-08-08 16:58:35 +00:00
using System;
using UnityEngine;
using UnityEngine.EventSystems;
public class DraggableCard : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler
{
private Vector3 originalPosition;
private Vector3 originalScale;
2023-08-08 16:58:35 +00:00
private CanvasGroup canvasGroup;
private void Start()
{
canvasGroup = GetComponent<CanvasGroup>();
}
public void OnPointerDown(PointerEventData eventData)
{
2023-08-10 13:33:10 +00:00
var transform1 = transform;
originalPosition = transform1.position;
originalScale = transform1.localScale;
2023-08-08 16:58:35 +00:00
canvasGroup.alpha = 0.5f;
2023-08-10 13:33:10 +00:00
transform1.localScale = new Vector3(0.3f, 0.3f, 1f);
2023-08-08 16:58:35 +00:00
}
public void OnDrag(PointerEventData eventData)
{
transform.position = Input.mousePosition;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
2023-08-10 13:33:10 +00:00
if (Physics.Raycast(ray, out hit) && hit.collider.CompareTag("Ground"))
2023-08-08 16:58:35 +00:00
{
// 마우스가 Ground 위에 있을 때
2023-08-08 16:58:35 +00:00
}
}
public void OnPointerUp(PointerEventData eventData)
{
// 지형에 올바르게 드롭되지 않으면
2023-08-08 16:58:35 +00:00
if (!IsDroppedOnTarget())
{
2023-08-10 13:33:10 +00:00
var transform1 = transform;
transform1.position = originalPosition;
transform1.localScale = originalScale;
canvasGroup.alpha = 1;
2023-08-08 16:58:35 +00:00
}
}
private bool IsDroppedOnTarget()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
2023-08-10 13:33:10 +00:00
if (hit.collider.CompareTag("Ground"))
2023-08-08 16:58:35 +00:00
{
Destroy(gameObject);
return true;
}
}
return false;
}
}