最近忙着学UE4去了,没啥时间弄unity的玩意,公司老板说PC的VR做完了还要附送一个全景APP给他们,最近也没想到好写的玩意,就把这个UI滑动条和全景图的控制简单案例拿出来写写。(PS:大神们请绕道哟~~)

全景图的APP其实就是一个简单的球形模型...然后摄像机在其中进行选择缩放等这个简单的功能,那么在APP中是如何控制摄像机的转动呢?

全景图APP一般是使用陀螺仪进行摄像机控制进行控制,然而有些手机是没有陀螺仪的,这样APP也为它们提供了使用手动的方式进行旋转,肯定会有人发现,在使用UI功能的时候为啥摄像机不会移动旋转,这里其实方法很简单,就是对鼠标或手指第一次按下的时候判断是是否在UI上,如果是在UI上就返回False,不在UI就返回true即可。

下面我是使用UGUI进行演示,如果需要NGUI的办法私聊吧~

代码如下图所示:

 private bool IsInUI(){
#if UNITY_IPHONE || UNITY_ANDROIDif (Input.touchCount >= 1 && Input.GetTouch(0).phase == TouchPhase.Began){if (!_isFingerInUI && Main.instance.uiMain.IsFingerInUI()){_isFingerInUI = true;}}if (Input.touchCount >= 1 && Input.GetTouch(0).phase == TouchPhase.Ended){if (_isFingerInUI && !Main.instance.uiMain.IsFingerInUI()){_isFingerInUI = false;}}
#elif UNITY_STANDALONE_WINif (Input.GetMouseButtonDown(0)){if (!_isFingerInUI && Main.instance.uiMain.IsFingerInUI()){_isFingerInUI = true;}}if (Input.GetMouseButtonUp(0)){if (_isFingerInUI && !Main.instance.uiMain.IsFingerInUI()){_isFingerInUI = false;}}
#endifreturn _isFingerInUI;}

如何使用这段代码呢

 public void GyroControlCamera(){if (PlayForwardCamera()){if (_isUseGyroscop){angleVector1.x += (-_gyroscope.rotationRate.y * _Speed)*360f;angleVector1.y -= (-_gyroscope.rotationRate.x * _Speed)*360f;angleVector1.y = ClampAngle(angleVector1.y, _minAngleY, _maxAngleY);Quaternion rotateAngle = Quaternion.Euler(angleVector1.y, angleVector1.x, 0);this.transform.localRotation = rotateAngle;angleVector1.y = ClampAngle(angleVector1.y, _minAngleY, _maxAngleY);//this.transform.Rotate(-_gyroscope.rotationRate.x * _Speed, -_gyroscope.rotationRate.y * _Speed, 0);}
#if UNITY_IPHONE || UNITY_ANDROIDelse{if (!IsInUI()){//_logText.text = "false";FingerControlCamera();}else{//Debug.Log("true");} }
#elif UNITY_STANDALONE_WINif (!IsInUI()){//Debug.Log("false");MouseControlCamera();}else{// Debug.Log("true");}
#endif}}

就是怎么简单的方法来使用这个函数~,里面还有简单的陀螺仪进行控制的代码~

Unity3D学习日记(十一)UI滑动条和全景图控制相关推荐

  1. 我的Unity3D学习日记-06(自己动手制作FlappyBird)

    自从上次跟着敲了官方示例拾荒者之后,开始对Unity制作2D游戏感兴趣了起来,虽然本文标题叫做Unity3D学习日记.但是Unity其实本来名字里是没有3D这俩字的--很有名的雨血前传 蜃楼就是一个使 ...

  2. Java学习日记:UI篇(6)--谢尔宾斯基地毯图

    Java学习日记:UI篇(6)–谢尔宾斯基地毯图 引言:谢尔宾斯基地毯是数学家谢尔宾斯基提出的一个分形图形,谢尔宾斯基地毯和谢尔宾斯基三角形基本类似,不同之处在于谢尔宾斯基地毯采用的是正方形进行分形构 ...

  3. 最简单DIY基于ESP8266的智能彩灯③(在网页用按钮+滑动条+手机APP控制RGB灯)

    ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 第二篇:最简单DIY基于ESP8266的智能彩灯②(在网页用按键 ...

  4. OpenCV学习笔记七-创建滑动条

    摘要:主要记录滑动条函数使用方法 创建滑动条函数: C++: int createTrackbar(const string& trackbarname, const string& ...

  5. Unity3D学习日记6

    1.坐标转换 解析: [1]物体的世界坐标到屏幕坐标的转换 // cb代表场景中的一个方块物体,得到的vector3中的z为相机离cube物体的远近 Camera.main.WorldToScreen ...

  6. Unity3d学习日记 (2)C#脚本编写优化以及全自动敌人脚本实现实战

    需求分析 需要编写脚本控制敌人的行为,完成包括巡逻.射击.追击.逃跑四个功能 解决思路 考虑机器人的行为受一个决策树的影响,编写有限状态自动机形成决策树,通过条件分支语句来对机器人的行为进行限制和控制 ...

  7. Unity3d学习日记 (1)为场景内物体添加基本逻辑和脚本代码

    1.准备:配置Unity3d环境和用VS2019写C#脚本 首先,配置Unity3d环境推荐使用是UnityHub作为平台,然后在UnityHub里边下载Unity3D版本,笔者这里选用的的是2019 ...

  8. Unity3D学习日记3

    1.Unity资源商店 解析:Unity资源商店中提供了多种游戏媒体资源供下载和购买,例如人物模型.动画.粒子特效.纹理.游戏创作工具.音乐特效.功能脚本和其他类拓展插件等. 2.Unity3D脚本中 ...

  9. Unity3D学习日记8

    1.创建Socket对象 解析:Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp)这一行用于创建一个Socke ...

最新文章

  1. 【BZOJ】1045: [HAOI2008]糖果传递(中位数)
  2. [Pytorch]Pytorch的tensor变量类型转换
  3. linux中网卡的流量怎么通过c语言获取_用Python获取计算机网卡信息
  4. 数字后端基本概念介绍——Routing Blockage
  5. Vue中默认main.js
  6. 巧用RoboCopy工具
  7. 算法设计与分析——概述
  8. php存省市,PHP格式化全国省市区列表
  9. Python3 L13
  10. mysql的封锁协议_【眼见为实】数据库并发问题 封锁协议 隔离级别
  11. 100%代码覆盖率的悲剧
  12. 爱快docker青龙面板保姆级
  13. win7 下安装vs2010 pro 失败解决方法
  14. HDUOJ1865 1string
  15. 小程序 uni canvas绘制圆角图片 圆角矩形
  16. 2021Java最新技术发展趋势
  17. Source Insight4.0的安装教程及使用
  18. rabbitmq简介及安装
  19. flv 协议解析 (学习记录)
  20. SQL:1082. 销售分析 1-3

热门文章

  1. 【linux】循序渐进学运维-基础篇-常用ssh管理工具
  2. tp6 使用lock_关于thinkphp连贯操作加锁的详细介绍lock
  3. sql datetime 排序_SQL的面试题
  4. EDIUS怎么校正颜色轮
  5. Java后端 带File文件及其它参数的Post请求
  6. Linux操作系统的帮助指令详解
  7. 【Cocos Creator 实战】05 - 如何判断拼图完成(胜利)
  8. DevOps的这些经典著作,你都看过了吗?
  9. python爬大众点评手机号_Python爬虫丨大众点评数据爬虫教程(1)
  10. 理光2500文件服务器,理光打印机文件服务器地址