Unity3D学习日记(十一)UI滑动条和全景图控制
最近忙着学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滑动条和全景图控制相关推荐
- 我的Unity3D学习日记-06(自己动手制作FlappyBird)
自从上次跟着敲了官方示例拾荒者之后,开始对Unity制作2D游戏感兴趣了起来,虽然本文标题叫做Unity3D学习日记.但是Unity其实本来名字里是没有3D这俩字的--很有名的雨血前传 蜃楼就是一个使 ...
- Java学习日记:UI篇(6)--谢尔宾斯基地毯图
Java学习日记:UI篇(6)–谢尔宾斯基地毯图 引言:谢尔宾斯基地毯是数学家谢尔宾斯基提出的一个分形图形,谢尔宾斯基地毯和谢尔宾斯基三角形基本类似,不同之处在于谢尔宾斯基地毯采用的是正方形进行分形构 ...
- 最简单DIY基于ESP8266的智能彩灯③(在网页用按钮+滑动条+手机APP控制RGB灯)
ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 第二篇:最简单DIY基于ESP8266的智能彩灯②(在网页用按键 ...
- OpenCV学习笔记七-创建滑动条
摘要:主要记录滑动条函数使用方法 创建滑动条函数: C++: int createTrackbar(const string& trackbarname, const string& ...
- Unity3D学习日记6
1.坐标转换 解析: [1]物体的世界坐标到屏幕坐标的转换 // cb代表场景中的一个方块物体,得到的vector3中的z为相机离cube物体的远近 Camera.main.WorldToScreen ...
- Unity3d学习日记 (2)C#脚本编写优化以及全自动敌人脚本实现实战
需求分析 需要编写脚本控制敌人的行为,完成包括巡逻.射击.追击.逃跑四个功能 解决思路 考虑机器人的行为受一个决策树的影响,编写有限状态自动机形成决策树,通过条件分支语句来对机器人的行为进行限制和控制 ...
- Unity3d学习日记 (1)为场景内物体添加基本逻辑和脚本代码
1.准备:配置Unity3d环境和用VS2019写C#脚本 首先,配置Unity3d环境推荐使用是UnityHub作为平台,然后在UnityHub里边下载Unity3D版本,笔者这里选用的的是2019 ...
- Unity3D学习日记3
1.Unity资源商店 解析:Unity资源商店中提供了多种游戏媒体资源供下载和购买,例如人物模型.动画.粒子特效.纹理.游戏创作工具.音乐特效.功能脚本和其他类拓展插件等. 2.Unity3D脚本中 ...
- Unity3D学习日记8
1.创建Socket对象 解析:Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp)这一行用于创建一个Socke ...
最新文章
- ProxyError: Conda cannot proceed due to an error in your proxy configuration
- 开关面板如何自己印字_如何自己动手做一个智能开关
- CentOS5快速搭建vsftp服务
- 已知三角形三点坐标求角度_高中数学:椭圆相关角度的最值问题
- Symfony3实现刷新登录时间
- 语言相关系数显著性_ggplot2 绘制带星号和 Pvalue 值的相关系数热图
- Sitemesh 3 的使用及配置
- C#中如何复制窗体到另一个项目
- 电脑配置及价格_游戏主机推荐 AMD锐龙R52600X配RTX2060组装电脑配置清单及价格
- Vue/Angular中父窗口新开的子窗口关闭的时候刷新父窗口
- 高级php平时的工作,【高级PHP开发工作内容|工作职责|高级PHP开发做什么】-看准网...
- spring的几个通知(前置、后置、环绕、异常、最终)
- 想让马云成为你的老大?揭秘阿里面试情景
- [SQL Native Client] 命名管道提供程序:无法打开与 Sql Server 的连接[2]
- ubuntu安装jdk全过程-转
- java RMI 笔记
- Android : First step – Download and build
- 简单的多线程操作示例
- 5秒钟搭建一个简单版的restful资源服务器
- 服务器系统自带的系统清理工具,一键清除系统垃圾
热门文章
- can总线程序讲解_详解stm32的CAN控制器(程序分享)
- SteamVR中实现旋转物体操纵其他游戏对象、动画的功能
- 惠普打印机,打印显示“用户干预”,怎么处理?
- 总结VMware Workstation 与 Hyper-V 不兼容的几种处理方法
- Python实例14:将彩色图片变成手绘铅笔图片
- Python爬虫笔记——BeautifulSoup模块
- WebVirMgr的搭建过程
- zip的使用--组合坐标
- 化学数据分析计算机,浅谈数据处理在化学分析中的应用
- 用Python的Flask框架写微信小程序及其管理网页后台(准备篇)