美文网首页Unity技术分享Unity教程合集
仿U3D回调方式的通用3D物体拖拽基类

仿U3D回调方式的通用3D物体拖拽基类

作者: 影子丢了 | 来源:发表于2016-03-08 16:50 被阅读144次
    using UnityEngine;
    using System.Collections;
    using UnityEngine.EventSystems;
    
    public class Drag3DBase : MonoBehaviour,IDragHandler,IBeginDragHandler,IEndDragHandler {
    
    
        bool drag = false;
        float distance;
        Vector3 originPointPos;
        Vector3 originObjPos;
    
        public void OnBeginDrag(PointerEventData eventData)
        {
            if (eventData.rawPointerPress.transform == this.transform)
            {
                drag = true;
                distance = eventData.pointerPressRaycast.distance;
                originPointPos = GetWorldPos(eventData.position, distance);
                originObjPos = this.gameObject.transform.position;
                OnBeginDragHandle(eventData);
            }
        }
        public void OnDrag(PointerEventData eventData)
        {
            if (!drag)
                return;
    
            Vector3 tempPos = GetWorldPos(eventData.position, distance);
            Vector3 deltaPos = tempPos - originPointPos;
            this.transform.position = (originObjPos + deltaPos);
            OnDragHandle(eventData);
    
        }
        public void OnEndDrag(PointerEventData eventData)
        {
            if (!drag)
                return;
    
            drag = false;
            OnEndDragHandle(eventData);
        }
        protected Vector3 GetWorldPos(Vector2 mousePos, float distance)
        {
            Ray ray = Camera.main.ScreenPointToRay(mousePos);
            return ray.GetPoint(distance);
        }
    
        protected virtual void OnBeginDragHandle(PointerEventData eventData)
        {
    
        }
        protected virtual void OnDragHandle(PointerEventData eventData)
        {
    
        }
        protected virtual void OnEndDragHandle(PointerEventData eventData)
        {
    
        }
    }
    

    相关文章

      网友评论

        本文标题:仿U3D回调方式的通用3D物体拖拽基类

        本文链接:https://www.haomeiwen.com/subject/zzezkttx.html