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);
            }
        }
    }
  • 相关阅读:
    Java基础学习(五) String类
    Java基础学习(四) java8线程
    Java基础学习(三) IO
    Java基础学习(二) 集合
    Java基础学习(一) 基本数据类型和引用数据类型
    枚举类常见漏洞解决
    数据校验
    postman如何传递token进行接口测试
    Spring Cloud-OpenFegin
    SpringCloud-Eureka
  • 原文地址:https://www.cnblogs.com/Smart-Du/p/4613386.html
Copyright © 2011-2022 走看看