今天搜索处理陀螺仪抖动问题方法时,看见有人使用Queue,顺便研究了一下。
//用平均值的方法平滑陀螺仪曲线,实现思想简单描述如下
QueueaverageList;
averageList.Enqueue (Input.gyro.attitude);
if (averageList.Count > 240)
averageList.Dequeue ();
foreach (Quaternion singleRotation in averageList)
{
//分离,重组Quaternion,获得平均值averageRotation
}
//通过插值贴回给摄像头
transform.localRotation = Quaternion.Slerp(transform.localRotation, averageRotation, Time.deltaTime* 4f);
Queue的基本功能有插入、提取和检查操作。可以用来如排队,计时等线性相关的问题。
相关API可以参考MSDN,下面通过例子熟悉一下Unity中Queue相关的操作。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class QueueExample : MonoBehaviour
{
public Queue queue;
public Text queueCount;
public Text queueContent;
public Text queuePeek;
void