using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class TouchControl : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
private Vector3 m_offset;
private RectTransform m_rt;
void Start()
{
m_rt = GetComponent<RectTransform>();
}
public void OnBeginDrag(PointerEventData eventData)
{
//开始拖拽
// 存储点击时的鼠标坐标
Vector3 tWorldPos;
//屏幕空间点转换为世界空间点,该点在矩形变换的平面上。
RectTransformUtility.ScreenPointToWorldPointInRectangle(m_rt, eventData.position, eventData.pressEventCamera, out tWorldPos);
//图片中心与点击位置偏移量
m_offset = transform.position - tWorldPos;
}
public void OnDrag(PointerEventData eventData)
{
//拖拽ing
SetDraggedPosition(eventData);
}
public void OnEndDrag(PointerEventData eventData)
{
//拖拽结束
}
private void SetDraggedPosition(PointerEventData eventData)
{
Vector3 globalMousePos;
//UI坐标转换为世界坐标(1.目标矩阵 2.要转换的位置 3.显示这个UI的相机 4.输出V3)
RectTransformUtility.ScreenPointToWorldPointInRectangle(m_rt, eventData.position, eventData.pressEventCamera, out globalMousePos);
//设置位置及偏移量
m_rt.position = globalMousePos + m_offset;
}
}
UI跟随鼠标移动(不考虑中心点)
猜你喜欢
转载自blog.csdn.net/qq_42047805/article/details/96973615
今日推荐
周排行