掛載在UI上的腳本:
using UnityEngine;
using DG.Tweening;
using UnityEngine.EventSystems;
/// <summary>
/// 此腳本掛載在UI上,鼠標在UI上滑動時旋轉指定對象
/// </summary>
public class UITouchRotateTarget : MonoBehaviour, IDragHandler
{
/// <summary>
/// 要旋轉的對象
/// </summary>
public Transform target = null;
/// <summary>
/// 旋轉速度(3-5效果最佳)
/// </summary>
public float speed = 5.0f;
//DOTween過渡時間(為1時效果最佳)
private float m_time = 1.0f;
//緩存Vector3,避免頻繁New
private Vector3 m_rot = Vector3.zero;
public void OnDrag(PointerEventData eventData)
{
if (target == null) return;
float y = eventData.delta.x;
m_rot.y = -y * speed;
target.DOLocalRotate(m_rot, m_time, RotateMode.LocalAxisAdd).SetEase(Ease.OutCubic);
}
}
效果:

GIF 2022-10-25 20-29-50.gif