(个人)AR电子书系统创新实训第六周(1)
来源:互联网 发布:昆明市零售业数据 编辑:程序博客网 时间:2024/06/17 05:15
在之前的文章中我已经设计出了引导页,那么具体怎么实现呢?这星期我就对这个问题进行了研究,下面是我的一些心得。
1.问题分析
引导页是通过左右滑动来切换界面,首先需要获取点击的屏幕位置,之后再判断是向左还是向右滑动。
切换逻辑是:开始界面是第一张引导页,当第一次左移,场景切换到第二张引导页;第二次左移,场景从第二张引导页切换到开始界面;第一张引导页和第二张引导页可以随意切换,但第一张引导页不能右移,开始界面不能右移。
所以整体来说思路还是比较清晰的。
2.算法分析
为了方便后来的计算,我先reset场景位置,将x,y轴的位置归零。怎么判断手指是向左滑动还是向右滑动呢?算法可以是以下几个过程:
- 左右滑动改变的是x,y轴的位置,只需要判断手指落下的位置和手指拿起的位置的x/y轴的坐标位置,就能对场景的状态进行判断。
- 如果,x的坐标变换的绝对值大于y轴的左边变换的绝对值,且x>0,则判断为左移;
- 如果,x的坐标变换的绝对值大于y轴的左边变换的绝对值,且x<0,则判断为右移;
整体的算法思路就是这样。
3.实现代码
所以我将写了两个脚本,一个添加到第一张引导页场景(YDY1.unity)中,另一个添加到第二张引导页(YDY2.unity)中。
- 在第一张引导页中添加脚本SceneChange.cs,具体代码如下:
using UnityEngine;using System.Collections;using UnityEngine.SceneManagement;public class SceneChange : MonoBehaviour{ private Vector3 lastMouseDown = Vector3.zero; void Update() { if (Input.GetMouseButtonDown(0)) { lastMouseDown = Input.mousePosition; } if (Input.GetMouseButtonUp(0)) { Vector3 mouseUp = Input.mousePosition; Vector3 touchOffset = mouseUp - lastMouseDown;//偏移 if (Mathf.Abs(touchOffset.x) > 10 || Mathf.Abs(touchOffset.y) > 10)//有效滑动 { //判断上下左右方向 if (Mathf.Abs(touchOffset.x) > Mathf.Abs(touchOffset.y) && touchOffset.x > 0) { SceneManager.LoadScene("YDY1"); } else if (Mathf.Abs(touchOffset.x) > Mathf.Abs(touchOffset.y) && touchOffset.x < 0) { SceneManager.LoadScene("YDY2"); } } } } }
- 在第二张引导页中添加脚本YDY2SceneChange,具体代码如下:
using UnityEngine;using System.Collections;using UnityEngine.SceneManagement;public class YDY2SceneChange : MonoBehaviour { private Vector3 lastMouseDown = Vector3.zero; void Update () { if (Input.GetMouseButtonDown(0)) { lastMouseDown = Input.mousePosition; } if (Input.GetMouseButtonUp(0)) { Vector3 mouseUp = Input.mousePosition; Vector3 touchOffset = mouseUp - lastMouseDown;//偏移 if (Mathf.Abs(touchOffset.x) > 10 || Mathf.Abs(touchOffset.y) > 10)//有效滑动 { if (Mathf.Abs(touchOffset.x) > Mathf.Abs(touchOffset.y) && touchOffset.x > 0) { SceneManager.LoadScene("YD1"); } else if (Mathf.Abs(touchOffset.x) > Mathf.Abs(touchOffset.y) && touchOffset.x < 0) { SceneManager.LoadScene("Main"); } } } }}
4.添加场景
在unity中不同的场景切换比较方便,可以通过file->BuildingSetting添加场景,如下图:
直接将需要添加的场景拖拽到“Scenes In Build”,如下图:
注:在该界面的场景顺序即为最终app渲染的顺序。
这样我们的引导页从设计到代码实现就完成了,看起来比较复杂,但核心算法还是比较简单的 。希望对大家有帮助!
阅读全文
0 0
- (个人)AR电子书系统创新实训第六周
- (个人)AR电子书系统创新实训第六周(1)
- (个人)AR电子书系统创新实训第六周(1)
- (个人)AR电子书创新系统实训第六周(1)
- (个人)AR电子书系统创新实训第六周(2)
- (个人)AR电子书系统创新实训第六周(2)
- (个人)AR电子书创新系统实训第六周(2)
- (项目)AR电子书系统创新实训第六周(1)
- (个人)AR电子书系统创新实训中期总结
- (个人)AR电子书系统创新实训期中汇报
- (个人)AR电子书系统创新实训第二周(1)
- (个人)AR电子书系统创新实训第二周(1)
- (个人)AR电子书系统创新实训第二周(1)
- (个人)AR电子书系统创新实训第二周(1)
- (个人)AR电子书系统创新实训第二周(1)
- (个人)AR电子书系统创新实训第三周(1)
- (个人)AR电子书系统创新实训第三周(1)
- (个人)AR电子书系统创新实训第三周(1)
- 20170614Windows10_01_线程函数、线程退出
- LeetCode 401. Binary Watch
- 欢迎使用CSDN-markdown编辑器
- 内存中的堆区和栈区
- hdu 1828(poj 1177)Picture(线段树+扫描线)(轮廓线)
- (个人)AR电子书系统创新实训第六周(1)
- java 数组操作 System.arraycopy(),ArrayUtils
- 130. Surrounded Regions
- SVN查找文件
- Yii2框架随笔
- Kotlin 基本类型
- vs2010性能分析器崩溃的解决办法
- Win 10 ELK(5.4.1) 环境搭建与基本使用与 Expected one of # 解决办法
- android图片轮播效果,RollViewPager的简单使用