美文网首页Unity教程合集Unity (AR)Unity技术VR/AR分享
Unity(ar)手势控制物体旋转缩放 -- Vuforia

Unity(ar)手势控制物体旋转缩放 -- Vuforia

作者: U3D界金城武 | 来源:发表于2017-03-24 18:35 被阅读361次
    using UnityEngine;  
    using System.Collections;  
      
      
    public class CubeScale : MonoBehaviour {  
      
        private Touch oldTouch1;  //上次触摸点1(手指1)    
        private Touch oldTouch2;  //上次触摸点2(手指2)    
        
        void Start()    
        {  
              
        }  
      
        void Update () {    
              
        
            //没有触摸    
            if ( Input.touchCount <= 0 ){    
                return;    
            }    
        
            //单点触摸, 水平上下旋转    
            if( 1 == Input.touchCount ){    
                Touch touch = Input.GetTouch (0);    
                Vector2 deltaPos = touch.deltaPosition;             
                transform.Rotate(Vector3.down  * deltaPos.x , Space.World);     
                transform.Rotate(Vector3.right * deltaPos.y , Space.World);    
            }    
        
            //多点触摸, 放大缩小    
            Touch newTouch1 = Input.GetTouch (0);    
            Touch newTouch2 = Input.GetTouch (1);    
                
            //第2点刚开始接触屏幕, 只记录,不做处理    
            if( newTouch2.phase == TouchPhase.Began ){    
                oldTouch2 = newTouch2;    
                oldTouch1 = newTouch1;    
                return;    
            }    
                
            //计算老的两点距离和新的两点间距离,变大要放大模型,变小要缩放模型    
            float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);    
            float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);    
        
            //两个距离之差,为正表示放大手势, 为负表示缩小手势    
            float offset = newDistance - oldDistance;    
        
            //放大系数  
            float scaleFactor = offset / 100f;    
            Vector3 localScale = transform.localScale;    
            Vector3 scale = new Vector3(localScale.x + scaleFactor,    
                                        localScale.y + scaleFactor,     
                                        localScale.z + scaleFactor);    
        
            //最小缩放到 0.1 倍    
            if (scale.x > 0.1f && scale.y > 0.1f && scale.z > 0.1f) {    
                transform.localScale = scale;    
            }    
        
            //记住最新的触摸点,下次使用    
            oldTouch1 = newTouch1;    
            oldTouch2 = newTouch2;    
        }    
        
    }
    

    转自传送门侵删

    相关文章

      网友评论

        本文标题: Unity(ar)手势控制物体旋转缩放 -- Vuforia

        本文链接:https://www.haomeiwen.com/subject/zkafottx.html