签到领奖

[geekli] AR从入门到精通开发系列教程(3)--移动端手指缩放

[复制链接]
查看: 3909|回复: 7
排名
82
昨日变化
发表于 2017-1-5 22:24:11 | 显示全部楼层 |阅读模式
本帖最后由 geekli 于 2017-1-5 22:26 编辑

用EasyAR SDK 来开发好玩的应用


EasyAR 开发者交流群:605785368

微信公众号:AR酱




EasyAR 系列开发教程:
1.AR(增强现实)开发者资源大汇总
2.EasyAR从入门到精通开发系列教程(1)---搭建开发环境
3.EasyAR从入门到精通开发系列教程(2)--创建模型并互动


         在上一篇教程中,我们用EasyAR 的SDK 完成了创建模型并且使其自动旋转,在这篇教程中,我们在上一教程的项目基础上来实现市面上如小熊尼奥,视+ APP 上面具有的功能--------一个手指实现AR模型的旋转,两个手指实现缩放
      
        继续上一教程内容,我们在恐龙模型上(模型资源地址:链接: https://pan.baidu.com/s/1jIodd5O 密码: pfqj)挂了一段脚本实现其自动旋转,今天我们再建一个新的脚本Gesture.cs 来实现移动端的手势控制。具体代码如下:
[AppleScript] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;

public class Gesture : 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;  

                //放大因子, 一个像素按 0.01倍来算(100可调整)  
                float scaleFactor = offset / 100f;  
                Vector3 localScale = transform.localScale;  
                Vector3 scale = new Vector3(localScale.x + scaleFactor,  
                        localScale.y + scaleFactor,   
                        localScale.z + scaleFactor);  

                //最小缩放到 0.3 倍  
                if (scale.x > 0.3f && scale.y > 0.3f && scale.z > 0.3f) {  
                        transform.localScale = scale;  
                }  

                //记住最新的触摸点,下次使用  
                oldTouch1 = newTouch1;  
                oldTouch2 = newTouch2;  
        }  
}


代码注释已有,这是一套unity 游戏移动端的万能模版,大家可以收藏此段代码




评分

参与人数 1泰斗币 +50 收起 理由
里斯 + 50 赞一个!

查看全部评分

[发帖际遇]: geekli 向上天求妹纸,神仙看了看你 ,甩7 泰斗币给你说道,快打车去棒子国. 幸运榜 / 衰神榜
+1
3918°C
7
  • 小利丶
  • geekli
  • 再来一次
  • 汉语Print
  • 天长第9
过: 他们
排名
806
昨日变化
3
发表于 2017-1-6 09:58:39 | 显示全部楼层
顶下!!!!!!!!
回复

使用道具 举报

排名
82
昨日变化
 楼主| 发表于 2017-1-6 12:18:00 | 显示全部楼层
小利丶 发表于 2017-1-6 09:58
顶下!!!!!!!!

谢谢了,
[发帖际遇]: geekli 乐于助人,奖励 6 泰斗币. 幸运榜 / 衰神榜
排名
323
昨日变化
3
发表于 2017-1-6 15:20:22 | 显示全部楼层
666666666666666666666666
排名
270
昨日变化
1
发表于 2017-1-7 11:32:10 | 显示全部楼层
不管你信不信,反正我是信了。
5武林高手
1427/2000
排名
163
昨日变化
2
发表于 2017-1-9 13:40:01 | 显示全部楼层
膜拜神贴,后面的请保持队形~
排名
931
昨日变化
7
发表于 2017-1-11 00:08:15 | 显示全部楼层
看了LZ的帖子,我只想说一句很好很强大!
发表于 2017-1-11 17:26:44 | 显示全部楼层
dsad fdsfds fdsfsd{:5_117:} fsdfsd sdfsdfds sdfsdfds
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

在线客服(工作时间:9:00-22:00)
010-82609395
泰斗社区公众号

Copyright   ©2015-2016  【泰斗社区】-专注互联网游戏和应用的开发者平台  Powered by©Discuz!  技术支持:迪恩网络     ( 沪ICP备14023207号-9 )