【unity实用技能】unity3d 陀螺仪控制camera移动旋转

https://docs.unity3d.com/ScriptReference/Gyroscope.html

unity 官方文档就很清楚,只有一点要注意:

所有教程都教你怎么用

input.gyro.attitude

但是这个表示的是空间中的位置,首先你是想做像王者荣耀开头晃动摄像机的效果,需要把上个位置记录下来,每次相减获得偏移值。

而更大的问题是,这个空间值可能会有突然转成负数的情况

所以其实一点都不好用。

建议用

m_gyro.rotationRateUnbiased

这个直接给你偏移值,用这个就够了

原文地址:http://blog.51cto.com/13638120/2084910

时间: 2024-10-11 15:00:43

【unity实用技能】unity3d 陀螺仪控制camera移动旋转的相关文章

【小松教你手游开发】【unity实用技能】角色头部跟随镜头旋转

这个在端游上比较场景,在角色展示的时候,当摄像头在角色身边上下左右旋转时,角色头部跟随镜头旋转.如天涯明月刀等. 这个在手游上比较少见,不过实现也没什么区别. 首先一般情况下,找到模型的头部节点,直接用lookAt指向camera就可以了,不过一般需求不会这么简单. 比如说,超过头部扭动极限,头部需要插值回到原始点:当镜头从外部回到极限内,需要插值回来.这时候lookat就没法使用. 更有情况,头部本身坐标系不在世界坐标轴上, 可能旋转了90多或者输出的prefab就是歪的等等,这些情况都没办法

【小松教你手游开发】【unity实用技能】控制摄像头脚本

测试项目的时候经常用到的控制摄像头运动,简单的移动转向 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Controller : MonoBehaviour { private GameObject gameObject; float x1; float x2; float x3; float x4; void Start() { gameObject = Ga

【小松教你手游开发】【unity实用技能】u3d 层次问题总结

首先的首先,NGUI区分前后层次关系是用Depth值.已经跟z轴值无关 首先因为我自己用的是NGUI,所以我的u3d层次问题也就是NGUI的层次问题 先确定UI渲染顺序,Camera>UIPanel>Depth(UIWidget) 这里的意思是,首先确定前后关系的是不同大块之间的Camera的Depth值,根据Depth大小排列,这个决定了每个大块之前的前后关系. 接着根据UIPanel的Depth前后排序,这个是用于每个大块内可能有多个UIPanel分割成多个小块,每个小块间的前后关系. 最

【小松教你手游开发】【unity实用技能】根据上一个GameObject坐标生成的tips界面

开发游戏,特别是mmo手游的时候经常需要开发的一个需求是,点击某个装备,在它附近的位置生成一个tips界面,介绍装备功能和各种信息. 像上面红色框框里的这个. 这个主要的问题是 根据点击的GameObject对应生成这个详情界面时,详情界面位置需要合理摆放(不能显示不到,不能遮挡等) 基本的思路是, 首先找到GameObject的position, 把手机屏幕大概分成四个象限,知道这个GameObject大概在这个屏幕的哪个象限(左上,左下,右上,右下) 根据象限来判断详情界面应该在GameOb

【小松教你手游开发】【unity实用技能】unity ios快捷打包

ios打包是比较麻烦的,配通一次流程后需要做个笔记把各种插件各种配置在每次打包的时候重新配置,作为一个程序员当然不能接受这么笨的事情,写个脚本让代码去实现这些. 首先,介绍一个标记 [PostProcessBuild] 在函数前写上这个标记,unity在打完包后便会调用这个函数. 所以我们也将用这个标记让unity在包打成xcode项目以后,去改动xcode里面的配置. 而unity也有一个默认的函数给我们使用 static void OnPostprocessBuild(BuildTarget

【小松教你手游开发】【unity实用技能】Unity Mesh更新的时候增加内存

Unity在Mesh更新的时候会增加内存,一般的方法是使用数组去填入. Vector3[] vertices = new Vector3[segmentCount * 4]; Vector3[] normals = new Vector3[segmentCount * 4]; Vector4[] tangents = new Vector4[segmentCount * 4]; Color[] colors = new Color[segmentCount * 4]; Vector2[] uvs

【小松教你手游开发】【unity实用技能】射线触发按钮

最近在做在一个Scrollview下每个Item要实现长按出现其他效果. 在NGUI上可以正常的这么做. 但是在2D Toolkit上却有问题. 在NGUI上滑动Scrollview其实是通过拖动每一个Item实现拖动效果. 而2D Toolkit上是在Scrollview上有一个一大块碰撞体.通过触发这个碰撞体实现拖动. 这里的区别就导致了当你想在2D Toolkit上实现长按Item时,被前面的Scrollview的碰撞体遮挡. 这时候我就用射线来触发长按功能.(其实原本按钮就是通过射线来触

【小松教你手游开发】【unity实用技能】动态可拖动列表DynmicList,ScrollView

虽然这是在2D ToolKit上实现的,但是下面会尽量写的通用一点. 所谓的DynamicList,指的是如果有一个Scrollview,里面的item太多.需要实例化很多个item且每帧需要处理每个item的数据. 这时候为了减少性能压力会做成一个循环的List,通过最后一个与第一个item的位置交换,只实例化比界面多一个的item来重复写需要的数据. 也就是说.有一百个数据.用十个item来实现. 这里先声明一下几个变量. float _itemStride;    //每个item的宽 L

【小松教你手游开发】【unity实用技能】NGUI Depth探索

首先做个测试项目 每个子节点节点的东西基本是一样的 这里的TestDepth脚本只做一件事 获取RenderQueue.输出. 不过在每个父节点上有个UIPanel. 通过设置不同UIPanel和不同UISprite的Depth值来测试NGUI是怎么区分深度的. 通过脚本输出RanderQueue可以看到 看最后的数字. 以前我以为是按一定系数相乘再相加. 其实是根据UIPanel的个数排序.排最先的UIPanel的第一个UIWidget从3000开始. 根据同一个UIPanel下的UIWidg