com.alicizax.unity.ui.exten.../Runtime/UI3DWidget/UI3DDisplay.Touch.cs
2025-04-11 19:57:34 +08:00

56 lines
1.5 KiB
C#

using UnityEngine;
using UnityEngine.EventSystems;
namespace AlicizaX.UI.Extension
{
public class UI3DDisplayTouch : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler
{
private GameObject m_dragObject;
private bool m_CanDrag = true;
private float m_DragSpeed = 20.0f;
private float m_DragRotation;
private Vector3 m_ShowRotation = Vector3.zero;
private Transform view;
public void SetObject(GameObject obj)
{
m_dragObject = obj;
m_ShowRotation = obj.transform.eulerAngles;
view = obj.GetComponent<Transform>();
}
public void Disopose()
{
m_dragObject = null;
view = null;
}
//拖拽
public void OnDrag(PointerEventData eventData)
{
if (!m_CanDrag) return;
if (!view) return;
if (!m_dragObject || !(m_DragSpeed > 0.0f)) return;
var delta = eventData.delta.x;
var deltaRot = -m_DragSpeed * delta * Time.deltaTime;
m_DragRotation += deltaRot;
var showRotation = Quaternion.Euler(m_ShowRotation);
var showUp = showRotation * Vector3.up;
showRotation *= Quaternion.AngleAxis(m_DragRotation, showUp);
view.rotation = showRotation;
}
//按下
public void OnPointerDown(PointerEventData eventData)
{
}
//抬起
public void OnPointerUp(PointerEventData eventData)
{
}
}
}