zoukankan      html  css  js  c++  java
  • EasyTouch物体的旋转缩放

    public class ArMonoDevelop : MonoBehaviour
    {
    
        // Use this for initialization
        //需要放大缩小旋转的物体
        public GameObject rotateAndEnlargeObj;
        public bool isRotate = true;
        public bool isEnlarge = true;
    
        void Start()
        {
    
        }
        void OnEnable()
        {
            if (isRotate)
            {
                EasyTouch.On_Drag += OnDrag;
            }
    
            if (isEnlarge)
            {
                EasyTouch.On_PinchIn += OnPinchIn;
                EasyTouch.On_PinchOut += OnPinchOut;
            }
    
            EasyTouch.On_SimpleTap += OnSimpleTap;
            EasyTouch.On_DoubleTap += OnDoubleTap;
    
        }
        void OnDisable()
        {
            if (isRotate)
            {
                EasyTouch.On_Drag -= OnDrag;
            }
    
            if (isEnlarge)
            {
                EasyTouch.On_PinchIn -= OnPinchIn;
                EasyTouch.On_PinchOut -= OnPinchOut;
            }
    
            EasyTouch.On_SimpleTap -= OnSimpleTap;
            EasyTouch.On_DoubleTap -= OnDoubleTap;
        }
        void OnSimpleTap(Gesture gest)
        {
            if (gest.pickedObject != null)
            {
                SimpleTap(gest);
            }
            else
            {
                Vuforia.CameraDevice.Instance.SetFocusMode(Vuforia.CameraDevice.FocusMode.FOCUS_MODE_TRIGGERAUTO);
            }
        }
        protected virtual void SimpleTap(Gesture gest)
        {
    
        }
        void OnDoubleTap(Gesture gest)
        {
            if (gest.pickedObject != null)
            {
                DoubleTap(gest);
            }
        }
        protected virtual void DoubleTap(Gesture gest)
        {
    
        }
        void OnDrag(Gesture gest)
        {
            if (gest.pickedObject != null)
            {
                if (rotateAndEnlargeObj != null)
                {
                    Vector3 v = rotateAndEnlargeObj.transform.localRotation.eulerAngles;
                    v.y -= gest.deltaPosition.x * 20 * Time.deltaTime;
                    v.y -= gest.deltaPosition.y * 20 * Time.deltaTime;
                    rotateAndEnlargeObj.transform.localRotation = Quaternion.Euler(v);
                }
            }
        }
        void OnPinchIn(Gesture gest)
        {
            if (gest.pickedObject != null)
            {
                if (rotateAndEnlargeObj != null)
                {
                    Vector3 localScale = rotateAndEnlargeObj.transform.localScale;
                    float num = (0.01f * gest.deltaPinch);
                    rotateAndEnlargeObj.transform.localScale = new Vector3(localScale.x - num, localScale.y - num, localScale.z - num);
                    if (rotateAndEnlargeObj.transform.localScale.x < 1)
                    {
                        rotateAndEnlargeObj.transform.localScale = new Vector3(1, 1, 1);
                    }
                }
            }
    
        }
        void OnPinchOut(Gesture gest)
        {
            if (gest.pickedObject != null)
            {
    
                if (rotateAndEnlargeObj != null)
                {
                    Vector3 localScale = rotateAndEnlargeObj.transform.localScale;
                    float num = (0.01f * gest.deltaPinch);
                    rotateAndEnlargeObj.transform.localScale = new Vector3(localScale.x + num, localScale.y + num, localScale.z + num);
                    if (rotateAndEnlargeObj.transform.localScale.x > 2)
                    {
                        rotateAndEnlargeObj.transform.localScale = new Vector3(2, 2, 2);
                    }
                }
            }
        }
    }
  • 相关阅读:
    Sublime Text 3 Build 3143 可用License
    npm安装cnpm报错
    使用proxy来简单的实现一个观察者
    时间倒计时提醒
    JavaScript设计模式
    异步方法(promise版)出错自调用
    co模块源码学习笔记
    go new() 和 make() 的区别
    广度优先搜索算法
    并发和并行有什么区别?(转)
  • 原文地址:https://www.cnblogs.com/JimmyCode/p/7834749.html
Copyright © 2011-2022 走看看