[蛮牛教程]如何用编写陀螺仪控制器

  陀螺仪为开发者提供了各种各样令人兴奋的控制变化。但当涉及到相机控制器的集成和实现时,会发生很多奇怪和神奇的事情。开发人员必须处理不同的设备导向,初始相机位置,当然还有四元数。我很高兴分享我的经验,并描述我们如何在Heyworks中解决这些问题。希望这能帮助那些第一次使用陀螺仪的人减轻工作和辛苦。

  在我的例子中,我想演示如何在摄像机控制器中实现以下功能:

  1、设备的屏幕被认为是进入虚拟世界的“窗口”,因此,围绕用户的设备必须重视它。

  2、它将支持自动旋转,并在每个设备方向上工作。

  3、你将能够从相机中分离控制器,通过代码改变它的旋转和位置(例如播放相机动画),然后附加控制器。

  4、它将使虚拟世界与真实世界的轴线平行,并将重新校准水平旋转。

  我们解决的第一个问题是在iOS设备和中,使用不同坐标系统引用类型: left-handed and right-handed。为了将四元数从一个系统转换到另一个系统,让我们使用以下函数:

  

  现在我们可以用下面的代码来计算相机的旋转:

  另一个需要处理的问题是支持不同的方向(由Unity开发人员在内部解决),由以下修改后的代码为每个方向确定:

  

  下面是新增的函数来计算相机的旋转:

  控制器应更新与基装置旋转相关的摄像机旋转,并在水平面上重置基相机旋转。这意味着,如果用户启动将设备指向北方的应用程序,游戏摄像机将不会旋转到虚拟的北方。摄像机将显示给定的方向。下面是考虑相机基旋转和设备基旋转的新功能。

  对cameraBase和参数Rotation的计算有一点棘手。主要的两个障碍是:

  1、你必须考虑到当前的设备方向,同时计算参数Rotation

  2、你必须考虑在计算cameraBase时只围绕轴线旋转

  最后一件事,平滑相机旋转:

  

  现在我们添加两个函数,AttachGyro和DetachGyro。第一个将启用控制器并重新计算所有的基旋转,第二个将禁用控制器。

  最后我们的控制器准备好了。

声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
推荐阅读