NGUI 触摸拖动,并限制拖动区域

using UnityEngine;
using System.Collections;

public class UDragManager : MonoBehaviour 
{
    public Transform target;
    
    private Vector3 offset;
    private Bounds bounds;

    public static float ImageWidth;
    public static float ImageHeight;
    public static float ScreenWidth; 
    public static float ScreenHeight;
    public static float m_nOffect;

    void Start()
    {
        InitConfig ();
    }

    void InitConfig()
    {
        ImageWidth         = 2490;
        ImageHeight     = 1536;
        ScreenWidth     = 2048; 
        ScreenHeight    = 1536;

//        ImageWidth         = this.transform.localScale.x;
//        ImageHeight     = this.transform.localScale.y;
//        ScreenWidth     = Screen.width; 
//        ScreenHeight    = Screen.height;

        m_nOffect         = ImageHeight - ScreenHeight;

    }
    
    void OnPress(bool pressed)
    {
        if (target == null) return;
        if (pressed) 
        {
            bounds = NGUIMath.CalculateRelativeWidgetBounds(target.transform);
            Vector3 position = UICamera.currentCamera.WorldToScreenPoint(target.position);
            offset = new Vector3(Input.mousePosition.x - (position.x - bounds.size.x / 2), Input.mousePosition.y - (position.y - bounds.size.y / 2),0f);
        }
    }
    
    void OnDrag(Vector2 delta)
    {
        Vector3 currentPoint = new Vector3 (Input.mousePosition.x - offset.x, Input.mousePosition.y - offset.y, 0f);
                    
        currentPoint.x += bounds.size.x / 2;

        currentPoint.y += bounds.size.x / 2;
        currentPoint.z = 2;
    
        target.position = UICamera.currentCamera.ScreenToWorldPoint (currentPoint);
    }

    void Update()
    {
        if(this.transform.localPosition.x > (-ScreenWidth))
        {
            this.transform.localPosition = new Vector3(-ScreenWidth,this.transform.localPosition.y,this.transform.localPosition.z);
        }
        if (this.transform.localPosition.x < (-ImageWidth)) 
        {
            this.transform.localPosition = new Vector3(-ImageWidth,this.transform.localPosition.y,this.transform.localPosition.z);
        }
        if(this.transform.localPosition.y > 0)
        {
            this.transform.localPosition = new Vector3(this.transform.localPosition.x,0,this.transform.localPosition.z);
        }
        if (this.transform.localPosition.y < (-m_nOffect)) 
        {
            this.transform.localPosition = new Vector3(this.transform.localPosition.x,-m_nOffect,this.transform.localPosition.z);
        }
    }
}

 

posted @ 2015-07-01 15:33  溈鉨wo乄菰単  阅读(600)  评论(0编辑  收藏  举报