位置: 编程技术 - 正文

Unity3D研究院之IOS触摸屏手势控制镜头旋转与缩放(unity3d官方案例)

编辑:rootadmin

推荐整理分享Unity3D研究院之IOS触摸屏手势控制镜头旋转与缩放(unity3d官方案例),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity3d官方案例,unity io,unity3d documentation,unity3d官方,unity3dapi,unity3d ik,unity io,unity3d ik,内容如对您有帮助,希望把文章链接给更多的朋友!

前几篇文章介绍了很多Unity3D引擎自身的一些问题, 今天我们在回到IOS设备上讨论一些触摸屏幕手势,本章的目标是通过触摸iPhone屏幕手势 实现模型左右的旋转,与模型的缩放。

大家想一想模型的旋转,实际上是镜头的旋转。模型的缩放实际上是镜头Z轴方向的坐标。那么实现本章的内容只需要控制镜头的位置方可实现。

我们在游戏场景中创建一些简单的模型做为参照物,插一句 “大家有谁知道 . FBX 的模型那里可以免费找到,我想在博文中加点游戏模型让场景更好看一些,可是苦于找不到有点郁闷,用公司的模型来写博文有觉得有点不合适”哇咔咔 ,如果有知道的哥们 不妨告诉我喔。啦啦啦。

我们创建一个简单的游戏平面, 然后平面中放一个箱子做为旋转缩放的参照物。如下图所示,选中摄像机,给摄像机添加一个脚本名称为Move. 脚本中有一个参数 Target,它的作用是设置摄像头旋转移动参照物,这里把一个箱子赋&#;给了 Target,那么左右滑动屏幕会发现箱子在旋转,两手缩放屏幕会发现箱子在放大与缩小。

Unity3D研究院之IOS触摸屏手势控制镜头旋转与缩放(unity3d官方案例)

我们看看Move这条脚本,说明一下几个重要的 :

这些方法都是系统自己调用的方法

function Start () : 游戏启动以后只调用一次,可用于脚本的初始化操作,

function Update ():Start()方法调用结束以后每一帧都会调用,可以在这里更新游戏逻辑。

function LateUpdate (): Start()方法调用结束以后每一帧都会调用,但是它是在 Update()调用完后调用。

Move.js完整代码

//用于绑定参照物对象vartarget:Transform;//缩放系数vardistance=.0;//左右滑动移动速度varxSpeed=.0;varySpeed=.0;//缩放限制系数varyMinLimit=-;varyMaxLimit=;//摄像头的位置varx=0.0;vary=0.0;//记录上一次手机触摸位置判断用户是在左放大还是缩小手势privatevaroldPosition1:Vector2;privatevaroldPosition2:Vector2; //初始化游戏信息设置functionStart(){ varangles=transform.eulerAngles; x=angles.y; y=angles.x; // Make the rigid body not change rotation if(rigidbody)rigidbody.freezeRotation=true;} functionUpdate(){//判断触摸数量为单点触摸if(Input.touchCount==1){//触摸类型为移动触摸if(Input.GetTouch(0).phase==TouchPhase.Moved){ //根据触摸点计算X与Y位置x&#;=Input.GetAxis("Mouse X")*xSpeed*0.; y-=Input.GetAxis("Mouse Y")*ySpeed*0.; }} //判断触摸数量为多点触摸if(Input.touchCount>1) { //前两只手指触摸类型都为移动触摸 if(Input.GetTouch(0).phase==TouchPhase.Moved¦¦Input.GetTouch(1).phase==TouchPhase.Moved) { //计算出当前两点触摸点的位置 vartempPosition1=Input.GetTouch(0).position;vartempPosition2=Input.GetTouch(1).position; //函数返回真为放大,返回假为缩小 if(isEnlarge(oldPosition1,oldPosition2,tempPosition1,tempPosition2)) { //放大系数超过3以后不允许继续放大 //这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改 if(distance>3) { distance-=0.5; } }else{ //缩小洗漱返回.5后不允许继续缩小 //这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改 if(distance<.5) { distance&#;=0.5; } } //备份上一次触摸点的位置,用于对比 oldPosition1=tempPosition1;oldPosition2=tempPosition2; } }} //函数返回真为放大,返回假为缩小functionisEnlarge(oP1:Vector2,oP2:Vector2,nP1:Vector2,nP2:Vector2):boolean{//函数传入上一次触摸两点的位置与本次触摸两点的位置计算出用户的手势 varleng1=Mathf.Sqrt((oP1.x-oP2.x)*(oP1.x-oP2.x)&#;(oP1.y-oP2.y)*(oP1.y-oP2.y)); varleng2=Mathf.Sqrt((nP1.x-nP2.x)*(nP1.x-nP2.x)&#;(nP1.y-nP2.y)*(nP1.y-nP2.y)); if(leng1<leng2) { //放大手势 returntrue; }else { //缩小手势 returnfalse; }} //Update方法一旦调用结束以后进入这里算出重置摄像机的位置functionLateUpdate(){ //target为我们绑定的箱子变量,缩放旋转的参照物 if(target){ //重置摄像机的位置y=ClampAngle(y,yMinLimit,yMaxLimit); varrotation=Quaternion.Euler(y,x,0); varposition=rotation*Vector3(0.0,0.0,-distance)&#;target.position; transform.rotation=rotation; transform.position=position; }} staticfunctionClampAngle(angle:float,min:float,max:float){if(angle<-)angle&#;=;if(angle>)angle-=;returnMathf.Clamp(angle,min,max);}在Untiy3D 中运行用鼠标手势点击上看不到任何效果的,必需在iPhone真机上才可以触摸感应到效果喔 . 嘻嘻~OK 接下来将Unity3D 导出成Xcode项目,导出的方法有谁还不会??? 我的第一篇文章有说明噢。哇咔咔~~ 然后运行项目只能在真机上运行哦。。 看看我在iPhone 上的截图。触摸iPhone屏幕镜头旋转与缩放以后的效果,这个图确实有点不太好截,我一会把项目的源代码工程下载地址贴上来,方便大家阅读与学习,哇咔咔~~镜头任意的旋转与缩放,还不错噢,大家快点来学习Unity3D游戏开发吧,哇咔咔~~最后欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,哇咔咔~~~ 附上工程的下载地址,文件名称是zoom.unitypackage,下载完毕的盆友们双击就可以自动在Unity3D 下打开它啦。然后导出成iPhone项目就可以运行了。今天回家装个windows 7 最近对wp7的游戏开发有点兴趣哦~ 哦也~回家钻研一下~哇咔咔下载地址: 雨松MOMO 年月日 于 雨松MOMO程序研究院 发表MOMO与MO嫂提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

Xsolla采访《仙剑5前传之心愿》 说到仙剑这部经典的武侠题材游戏,是小编正式接触网络游戏的第一款作品,相信,也给许多玩家带来了许多美好的回忆。今天,Xsolla采访到了《仙剑5

unity优化的一些建议(代码+文字) 之前我写过一篇关于优化的帖子,最近刚好在蛮.牛.教.育上又看到了一些,拿来分享一下,老规矩,先上代码![size=.px][size=.px][

一种Unity2D多分辨率屏幕适配方案 先说明一些基本的概念:1.屏幕的宽高比AspectRatio=屏幕宽度/屏幕高度2.Unity2D中摄像机镜头的尺寸决定了我们实际看到游戏内容的多少,在编辑器中我们

标签: unity3d官方案例

本文链接地址:https://www.jiuchutong.com/biancheng/378853.html 转载请保留说明!

上一篇:unity项目总结方法2(unity项目流程)

下一篇:unity优化的一些建议(代码+文字)(unity 优化)

  • 异地存货怎么审计
  • 业务招待费的财务分录
  • 年末是否结转本年利润
  • 跨年的所得税会计分录
  • 关税完税价格是指什么意思
  • 为什么要交税钱
  • 没有发票先入账怎么办
  • 别人公司过账用自己的银行卡会查吗
  • 水电费专用发票税率
  • 发票只能全部冲开吗
  • 本期准予抵减税额怎么算
  • 合同签订之后国家降税怎么办?
  • 投入的流动资金函怎么写
  • 出租不动产房屋交什么税
  • 委托外单位加工发出的材料分录
  • 股权转让后的实收资本怎么做账
  • 企业名称变更后原名称还能使用吗
  • 签订设备维修合同会计分录
  • 营改增后小规模纳税人税率是多少
  • 税种核定办理流程
  • 车船税征税范围包括火车吗
  • 进口设备属于货物贸易吗
  • 收到政府部门的奖励金怎么入账
  • 网络公司的财务主要做什么
  • 如何弥补以前年假的问题
  • 电商第三方平台规则的特点
  • 多提附加税跨年怎么申报
  • 金钱树的养殖方法 盆栽
  • php自定义函数的关键字是什么
  • 塔拉基之死
  • 非成品柴油用途
  • uniapph5微信支付
  • 房地产开发企业应该具备哪些条件
  • 微信公众号php开发教程
  • 计算md5值命令
  • php array_key_exists() 与 isset() 的区别
  • 承租方承担的税费是多少
  • 2020年防洪基金计算公式
  • 出口收汇手续费做什么科目
  • 生产部门使用的各种机器设备属于什么会计科目
  • 税务稽查补税
  • 报税金额和开票统计不一致
  • 个人收入如何开出发票
  • 累计折旧当月增加当月减少
  • 帝国cms界面
  • 零申报社保是否可以报销
  • sqlserver2005创建表
  • 调整后财务报表
  • 国家税务总局金税四期
  • 企业收到的
  • 报销连号发票的合理解释
  • 新企业购买税控盘,没收入,怎么抵扣
  • 辅导期一般纳税人什么意思
  • 本月没有认证的发票怎么做账
  • 补缴以前年度养老保险分录
  • 投资收益的账务怎么处理
  • 暂估入库后发票来不了会计分录
  • 洗浴发票可以报销么
  • ubuntu磁盘空间突然满了
  • rsyslog 8.11.0 (v8-stable) 发布
  • arch linux安装yay
  • win8系统安装步骤
  • winxp系统怎么安装
  • ghoststartservice.exe是什么进程 有什么作用 ghoststartservice进程查询
  • windows 7安装步骤
  • unity优化方案
  • unity3d 物体移动
  • easyui combobox设置值
  • koa nodejs
  • JavaScript中的数据类型分为两大类
  • 轻松搞定是什么短语
  • android应用层是什么
  • 手机360安卓桌面怎么去除广告
  • java教程 视
  • android解压app
  • android图片压缩到200-300kb
  • 别人给公司开的普票,怎么查询
  • 个人所得税代扣代缴手续费退库申请
  • 税务人员服务态度恶劣怎么办
  • 关于抓落实的诗句
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设