close

using UnityEngine;
using System.Collections;
using System;
public class OnefingerDrag : MonoBehaviour 
{
    public Action<Vector3> mDragEven;
    private  GameObject target;
    private  bool  isMouseDrag;
    private  Vector3 screenPosition;
    private  Vector3 offset;

    // Use this for initialization
    void  Start () {
        
    }
    
    // Update is called once per frame
    void  Update () 
    {
#if UNITY_EDITOR
        if  (Input.GetMouseButtonDown (0))
        {
            isMouseDrag =  true ;
        }

        if  (Input.GetMouseButtonUp(0))
        {
            isMouseDrag =  false ;
        }
#else
        if ( Input.touchCount > 0 ) 
        {
            isMouseDrag =  true ;
        }
        else
        {
            isMouseDrag =  false ;
        }
            
#endif
        if(isMouseDrag)
            GameObjectDragAndDrog();
        
    }
    

    //任意拖拽
    private  GameObject ReturnGameObjectDrag( out  RaycastHit hit)
    {
        target =  null ;
        #if UNITY_EDITOR
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        #else
        Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
        #endif
        if  (Physics.Raycast(ray.origin, ray.direction * 10,  out  hit))
        {
            target = hit.collider.gameObject;
        }
        return  target;
    }
    
    //拖拽Updata
    private  void  GameObjectDragAndDrog()
    {
        RaycastHit hitInfo;
        target = ReturnGameObjectDrag( out  hitInfo);
        if  (target !=  null )
        {
            screenPosition = Camera.main.WorldToScreenPoint(target.transform.position);
            #if UNITY_EDITOR
            offset = target.transform.position - Camera.main.ScreenToWorldPoint( new  Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z));
            #else
            offset = target.transform.position - Camera.main.ScreenToWorldPoint( new  Vector3(Input.touches[0].position.x, Input.touches[0].position.y, screenPosition.z));
            #endif
            if(mDragEven!=null)
                mDragEven(offset);
        }      

        
    
    
        //    Vector3 currentScreenSpace =  new  Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
        //    Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace) + offset;
        //    target.transform.localPosition =  new  Vector3(currentPosition.x, currentPosition.y, currentPosition.z);
            

    }

}

 

arrow
arrow
    全站熱搜

    GABY 發表在 痞客邦 留言(2) 人氣()