纳金网

标题: Unity c# touch事件 [打印本页]

作者: 狂风大尉    时间: 2014-8-30 23:28
标题: Unity c# touch事件

//以下内容是在网上找到的关于触屏事件的资料 再加脚本里面的介绍  
//这里是脚本里面关于touch  ://Editor/Data/Documentation/Documentation/ScriptReference/30_search.html?q=touch
//首先在start()函数里面允许多手指触屏
        void Start() {
                 //允许多点触屏
                 Input.multiTouchEnabled=true;
         }
//判断当前触摸屏幕的手指个数 该函数可自定义 然后在Update()里面调用 也可以直接在Update()里面写
        if(Input.touchCount <= 0) {        return;        }
        if(Input.touchCount == 1)//一个手指触摸屏幕
                {if(Input.touches[0].phase == TouchPhase.Began)//开始触屏
                        {
                                m_screenpos=Input.touches[0].position;//自定义的二维坐标向量 记录初始触屏位置
                        }else if(Input.touches[0].phase == TouchPhase.Moved)//手指移动
                        {   
                                //使物体旋转
                                this.transform.Rotate(new Vector3(-Input.touches[0].deltaPosition.y*0.5f,Input.touches[0].deltaPosition.x*0.5f,0),Space.World);
                        }

                }
        //当有多个手指触屏时
        else if(Input.touchCount > 1)//当有多个手指触屏
         {
                 //记录两个手指的位置        
                        Vector2 finger1= new Vector2();
                         Vector2 finger2= new Vector2();
                 //记录两个手指的移动距离
                         Vector2 mov1=new Vector2();
                         Vector2 mov2=new Vector2();
                for (int i=0;i<2;i++)//用循环来实现记录position
                 {
                         Touch touch = Input.touches; //记录第0个、第1个触屏点的状态
                         if(touch.phase == TouchPhase.Ended) break; //如果手指触屏之后离开就break
                         if(touch.phase == TouchPhase.Moved)// 当手指移动时
                         {
                                 float mov =0; // 用来记录移动增量
                                 if (i == 0) {
                                         finger1=touch.position;
                                         mov1=touch.deltaPosition;
                                 }else {
                                         finger2=touch.position;
                                         mov2=touch.deltaPosition;
                                 if(finger1.x > finger2.x){
                                                 mov=mov1.x;
                                         }else { mov=mov2.x; }//比较两个手指在x轴上移动的距离 取其较大者
                                if(finger1.y>finger2.y)
                                                { mov+=mov1.y; }
                                        else { mov+=mov2.y; }//加上在y轴上移动的较大的增量
                                        Camera.main.transform.Translate(0,0,mov*Time.deltaTime);//移动相机 在z轴上变化
                                         }
                                 }
                         }
                 }


作者: nmjkl    时间: 2014-8-31 00:30
写得很好真的学习了
作者: hyui    时间: 2014-8-31 01:53
Great share !




欢迎光临 纳金网 (http://c-www.narkii.com/club/) Powered by Discuz! X2.5