在 《王者荣耀》 登入界面

左右上下晃动手机(有些手机不支持)可以看到背景在变化

我使用的是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 使用 陀螺仪 实现 《王者荣耀》 登入界面 背景动态效果的更多相关文章

  1. PCB 720全景图嵌入登入界面应用实现

    通常软件主界面或登入界面背景图片通常采用固定图片,这里介绍如何将720度全景图嵌入到登入界面中来, 这里用的素材来源于这里上个月在公司里拍摄的全景图, 一.拍摄720度全景图片, 建议:最好用三角固定 ...

  2. iOS开发——实用篇Swift篇&QQ登入界面实现

    QQ登入界面实现 我们知道在App Store中几乎所有软件都设计到账户的登入,而我们最常见的就是QQ,微信,在没有踏入程序员这条不归路之前,看到一个个的界面都感觉好高大上的样子. 在学习的过程中,自 ...

  3. python编辑用户登入界面

    1.需求分析 登入界面需要达到以下要求: 系统要有登入和注册两个选项可供选择 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user_info.txt文件夹中 系统要能够进行登入错误次 ...

  4. 《慕客网:IOS动画案例之会跳动的登入界面(下)》学习笔记 -Sketch的使用

    导出选中的一个图片,比如这里我们选中background,然后点击软件的右下角,可以设置导出的尺寸: 然后添加1倍,2倍,3倍的尺寸,因为在ihpne6之后就需要这三个尺寸倍数的UI,以适应不同设备的 ...

  5. 《慕客网:IOS动画案例之会跳动的登入界面(上)》学习笔记 -Sketch的使用

    选中需要放进文件夹里的文件,然后按command+G,就会自动生成文件夹并把需要放进的文件包含进去了.(组 Group) 选中需要锁住的图层,然后按command+shift+L就可以将图层锁住.(锁 ...

  6. Spring Boot SSO单点登入

    https://github.com/ITDragonBlog/daydayup/tree/master/SpringBoot-SSO 流程图: 1: Redis 保存用户信息 到Redis(KEY- ...

  7. Ubuntu16.04以root身份登入!

    首先以非root用户身份登入系统. 1,修改root密码:启动shell,随后在shell里面输入命令: sudo passwd root 最后输入root要使用的密码,需要输入两次,这样root密码 ...

  8. ubuntu - 14.04,由于安装软件造成磁盘空间不足,无法登入Gnome解决办法!!

    刚才安装了半天软件,最后出现磁盘空间不足的问题,刚开始我还以为ubuntu和我开玩笑,随后我重新启动它才发现真不是开玩笑,我已经进不去Gnome桌面了!!! 解决办法: 1,以root身份进入shel ...

  9. 网络爬虫之requests模块的使用+Github自动登入认证

    本篇博客将带领大家梳理爬虫中的requests模块,并结合Github的自动登入验证具体讲解requests模块的参数. 一.引入:   我们先来看如下的例子,初步体验下requests模块的使用: ...

随机推荐

  1. [转载]Linux shell中的竖线(|)——管道符号

    原文地址:Linux shell中的竖线(|)--管道符号作者:潇潇 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: command 1 | command ...

  2. 201521123084 《Java程序设计》第14周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结数据库相关内容. answer: 2. 书面作业 1. MySQL数据库基本操作 1.1 建立数据库test.表studen ...

  3. SNS团队Beta阶段第七次站立会议(2017.5.28)

    1.立会照片 2.每个人的工作 成员 今天已完成的工作 罗于婕 对界面各部分的图标进行完善.美化 龚晓婷 对于历史记录功能进一步完善 林仕庄 对于历史记录功能进一步完善 刘海兰 协调界面的整体美化 念 ...

  4. 第06周-接口、内部类与Swing

    1. 本周作业简评与建议 作业简评 Q1.覆盖clone需要:a.要implements标记接口 Cloneable接口.b.要区分浅拷贝与深拷贝.c.一般来说要调用super.clone,然后在此基 ...

  5. 201521123085 《Java程序设计》 第2周学习总结

    1. 本周学习总结 1.学习了string类:   2.java数组的使用:   3.学习了类名包名. 2. 书面作业 Q1.使用Eclipse关联jdk源代码,并查看String对象的源代码(截图) ...

  6. 201521123097《Java程序设计》第二周学习总结

    1.本周学习总结 (1)学习了java的一些类型和变量. (2)学习了码云的部分功能的使用. 2.书面作业 使用Eclipse关联jdk源代码,并查看String对象的源代码. 为什么要尽量频繁的对字 ...

  7. Linux命令行学习

    "mkdir + 文件夹名字" 创建文件夹 "pwd" 显示当前工作目录的绝对路径. "touch" 创建空文件. "cat /p ...

  8. 201521123062 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  9. 201521123030 《Java程序设计》 第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  10. 用List传递学生信息

    集合在程序开发中经常用到,例如,在业务方法中将学生信息.商品信息等存储到集合中,然后作为方法的返回值返回给调用者,以此传递大量的有序数据. 本实例将使用List集合在方法之间传递学生的信息.实例效果如 ...