查看: 4936|回复: 3
打印 上一主题 下一主题

[其他] Unity c# touch事件

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38268
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-8-30 23:28:54 |只看该作者 |倒序浏览

//以下内容是在网上找到的关于触屏事件的资料 再加脚本里面的介绍  
//这里是脚本里面关于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轴上变化
                                         }
                                 }
                         }
                 }

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏1 支持支持0 反对反对0
回复

使用道具 举报

nmjkl    

0

主题

7

听众

2322

积分

中级设计师

Rank: 5Rank: 5

纳金币
5
精华
0
沙发
发表于 2014-8-31 00:30:49 |只看该作者
写得很好真的学习了
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-8-31 01:53:34 |只看该作者
Great share !
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-15 07:47 , Processed in 0.090622 second(s), 27 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部