zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }
  • 相关阅读:
    旋转数组的最小数字
    Redis常用方法
    用两个栈实现队列
    Spark1.4启动spark-shell时initializing失败
    从尾到头打印链表
    Hbase的安装(hadoop-2.6.0,hbase1.0)
    执行sh文件 进行MongoDB的业务逻辑导入
    Scala第二章学习笔记
    替换空格
    二维数组中的查找
  • 原文地址:https://www.cnblogs.com/Smart-Du/p/4613386.html
Copyright © 2011-2022 走看看