Unity 使用 陀螺仪 实现 《王者荣耀》 登入界面 背景动态效果
在 《王者荣耀》 登入界面
左右上下晃动手机(有些手机不支持)可以看到背景在变化
我使用的是iPhone SE 效果如下:


对比两张图片的左下角 可以看到差异
至于为什么要这么做:
1.使用贴图资源实现一个简单动画效果
2.有点3D感觉
3.可能策划闲的没事做
反正策划需求要实现《王者荣耀》的效果
苦逼的程序开始填坑之路
实现这个功能 我用了2天 具体的坑就不一一说明了
上代码
using UnityEngine;
using System.Collections; public class GravityAnimation : MonoBehaviour
{
//方向是否反向移动
public bool isReverseX = false;
public bool isReverseY = false; //贴图移动极限值
public float maxX;
public float minX;
public float maxY;
public float minY; //范围(防止画面抖动)
public float range = 0.01f; //区间(陀螺仪的值改变多少区间 完成整个移动)
public float section = 0.3f; //上一帧陀螺仪的值
Vector3 lastAttitude = Vector3.zero; //移动平均值
float meanX;
float meanY; void Start()
{
Input.gyro.enabled = true;
} // Update is called once per frame
void Update()
{
if (transform == null)
{
return;
} //获取陀螺仪的值
Vector3 attitude = new Vector3(Input.gyro.attitude.x, Input.gyro.attitude.y, ); //使安全范围内 - 1之1
attitude.x = Tool(attitude.x, , -);
attitude.y = Tool(attitude.y, , -); float x = transform.localPosition.x;
float y = transform.localPosition.y; //如果这帧变化不大 则使用上帧的值 防止抖动;
if (System.Math.Abs(lastAttitude.x - attitude.x) >= range)
{
//这帧的偏移量
float direction = attitude.x - lastAttitude.x; meanX = (maxX - minX) / section; //偏移量对于的实际坐标位移
float Position = direction * meanX; if (isReverseX)
{
x = Tool(transform.localPosition.x + Position, maxX, minX);
}
else
{
x = Tool(transform.localPosition.x - Position, maxX, minX);
}
} //如果这帧变化不大 则使用上帧的值 防止抖动;
if (System.Math.Abs(lastAttitude.y - attitude.y) >= range)
{
//这帧的偏移量
float direction = attitude.y - lastAttitude.y; meanY = (maxY - minY) / section;
//偏移量对于的实际坐标位移
float Position = direction * meanY; if (isReverseY)
{
y = Tool(transform.localPosition.y + Position, maxY, minY);
}
else
{
y = Tool(transform.localPosition.y - Position, maxY, minY);
}
} transform.localPosition = new Vector3(x, y, transform.localPosition.z); //保存值
lastAttitude = attitude; } //使第origin的值在界限之内
float Tool(float origin, float max, float min)
{
float retrun = origin; if (retrun >= max)
{
retrun = max;
}
else if (retrun <= min)
{
retrun = min;
} return retrun;
} }
上Demo链接
链接:http://pan.baidu.com/s/1o7AoPg2 密码:qmsr
我总觉得本文章的实现方法可能有问题
如果你有更好的方法
跪求
Unity 使用 陀螺仪 实现 《王者荣耀》 登入界面 背景动态效果的更多相关文章
- PCB 720全景图嵌入登入界面应用实现
通常软件主界面或登入界面背景图片通常采用固定图片,这里介绍如何将720度全景图嵌入到登入界面中来, 这里用的素材来源于这里上个月在公司里拍摄的全景图, 一.拍摄720度全景图片, 建议:最好用三角固定 ...
- iOS开发——实用篇Swift篇&QQ登入界面实现
QQ登入界面实现 我们知道在App Store中几乎所有软件都设计到账户的登入,而我们最常见的就是QQ,微信,在没有踏入程序员这条不归路之前,看到一个个的界面都感觉好高大上的样子. 在学习的过程中,自 ...
- python编辑用户登入界面
1.需求分析 登入界面需要达到以下要求: 系统要有登入和注册两个选项可供选择 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user_info.txt文件夹中 系统要能够进行登入错误次 ...
- 《慕客网:IOS动画案例之会跳动的登入界面(下)》学习笔记 -Sketch的使用
导出选中的一个图片,比如这里我们选中background,然后点击软件的右下角,可以设置导出的尺寸: 然后添加1倍,2倍,3倍的尺寸,因为在ihpne6之后就需要这三个尺寸倍数的UI,以适应不同设备的 ...
- 《慕客网:IOS动画案例之会跳动的登入界面(上)》学习笔记 -Sketch的使用
选中需要放进文件夹里的文件,然后按command+G,就会自动生成文件夹并把需要放进的文件包含进去了.(组 Group) 选中需要锁住的图层,然后按command+shift+L就可以将图层锁住.(锁 ...
- Spring Boot SSO单点登入
https://github.com/ITDragonBlog/daydayup/tree/master/SpringBoot-SSO 流程图: 1: Redis 保存用户信息 到Redis(KEY- ...
- Ubuntu16.04以root身份登入!
首先以非root用户身份登入系统. 1,修改root密码:启动shell,随后在shell里面输入命令: sudo passwd root 最后输入root要使用的密码,需要输入两次,这样root密码 ...
- ubuntu - 14.04,由于安装软件造成磁盘空间不足,无法登入Gnome解决办法!!
刚才安装了半天软件,最后出现磁盘空间不足的问题,刚开始我还以为ubuntu和我开玩笑,随后我重新启动它才发现真不是开玩笑,我已经进不去Gnome桌面了!!! 解决办法: 1,以root身份进入shel ...
- 网络爬虫之requests模块的使用+Github自动登入认证
本篇博客将带领大家梳理爬虫中的requests模块,并结合Github的自动登入验证具体讲解requests模块的参数. 一.引入: 我们先来看如下的例子,初步体验下requests模块的使用: ...
随机推荐
- 201521123107 《Java程序设计》第3周学习总结
第3周作业-面向对象基本概念 1.本周学习总结 2.书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static ...
- 201521123039 《java程序设计》第七周学习总结
1. 本周学习总结 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 答:ArrayList的Contains的源码如上图所示,如果o为null,那么 ...
- Java:@Override标签的多态性详解
Override(重写)是子类与父类的一种多态性体现. Override允许子类改变父类的一些行为. 为什么需要Override:当父类不满足子类的一些要求时我们就需要子类对父类的一些行为进行重写. ...
- Mybatis第六篇【配置文件和映射文件再解读、占位符、主键生成与获取、Mapper代理】
配置文件和映射文件再解读 映射文件 在mapper.xml文件中配置很多的sql语句,执行每个sql语句时,封装为MappedStatement对象,mapper.xml以statement为单位管理 ...
- Hibernate第十二篇【二级缓存介绍、缓存策略、查询缓存、集合缓存】
Hibernate二级缓存介绍 前面我们已经讲解过了一级缓存,一级缓存也就是Session缓存,只在Session的范围内有效-作用时间就在Session的作用域中,范围比较小 Hibernate为我 ...
- MongoDB 所支持的数据类型 创建和删除集合 创建和删除数据库
数据类型 MongoDB 支持如下数据类型: String:字符串.存储数据常用的数据类型.在 MongoDB 中,UTF-8 编码的字符串才是合法的. Integer:整型数值.用于存储数值.根据你 ...
- 【轉】JS,Jquery获取各种屏幕的宽度和高度
Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...
- [android游戏开发初学]SurfaceView初探之缓冲区测试
先上测试代码 private static class PathView extends SurfaceView implements SurfaceHolder.Callback{ private ...
- 快速学会require的使用
快速学会使用require.js 1.get start 先到官网下载requirejs到本地,官方同时提供Node版本r.js,我们只使用requirejs即可. 接下来在页面上写入 <scr ...
- GCD之死锁
GCD相当好用,但用不好就会死锁,始终要记着这样一句秘籍: 不要在串行队列放dispatch_sync.dispatch_apply 下面看几个例子 1 2 3 4 5 6 7 8 9 10 11 1 ...