最近忙着学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. ProxyError: Conda cannot proceed due to an error in your proxy configuration
  2. 开关面板如何自己印字_如何自己动手做一个智能开关
  3. CentOS5快速搭建vsftp服务
  4. 已知三角形三点坐标求角度_高中数学:椭圆相关角度的最值问题
  5. Symfony3实现刷新登录时间
  6. 语言相关系数显著性_ggplot2 绘制带星号和 Pvalue 值的相关系数热图
  7. Sitemesh 3 的使用及配置
  8. C#中如何复制窗体到另一个项目
  9. 电脑配置及价格_游戏主机推荐 AMD锐龙R52600X配RTX2060组装电脑配置清单及价格
  10. Vue/Angular中父窗口新开的子窗口关闭的时候刷新父窗口
  11. 高级php平时的工作,【高级PHP开发工作内容|工作职责|高级PHP开发做什么】-看准网...
  12. spring的几个通知(前置、后置、环绕、异常、最终)
  13. 想让马云成为你的老大?揭秘阿里面试情景
  14. [SQL Native Client] 命名管道提供程序:无法打开与 Sql Server 的连接[2]
  15. ubuntu安装jdk全过程-转
  16. java RMI 笔记
  17. Android : First step – Download and build
  18. 简单的多线程操作示例
  19. 5秒钟搭建一个简单版的restful资源服务器
  20. 服务器系统自带的系统清理工具,一键清除系统垃圾

热门文章

  1. can总线程序讲解_详解stm32的CAN控制器(程序分享)
  2. SteamVR中实现旋转物体操纵其他游戏对象、动画的功能
  3. 惠普打印机,打印显示“用户干预”,怎么处理?
  4. 总结VMware Workstation 与 Hyper-V 不兼容的几种处理方法
  5. Python实例14:将彩色图片变成手绘铅笔图片
  6. Python爬虫笔记——BeautifulSoup模块
  7. WebVirMgr的搭建过程
  8. zip的使用--组合坐标
  9. 化学数据分析计算机,浅谈数据处理在化学分析中的应用
  10. 用Python的Flask框架写微信小程序及其管理网页后台(准备篇)