码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-07-01 17:21:29      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

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);
        }
    }
}

 

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

标签:

原文地址:http://www.cnblogs.com/Smart-Du/p/4613386.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!