Ngui打字机

2015年02月02日 09:33 0 点赞 0 评论 更新于 2025-11-21 15:57

本文将介绍Ngui打字机效果,此文章由一位刚学习Unity的开发者撰写,非常适合初学者参考。

关于Input.acceleration值的探索

在实现“摇一摇”效果之前,我对Input.acceleration的x、y、z值范围的认知仅停留在[-1, 1],并且从未考虑过失重和超重的情况。之前一直单纯用眼睛观察这些值的变化,却感觉“没什么变化”。后来在一位高手的提醒下,我开始关注失重和超重现象。

我通过编写两个函数进行检测,用力摇晃和抖动手机后发现,x、y、z值的范围大致在[-4, 4]之间。在这个范围内,摇晃手机的速度越快,这些值的变化就越大。因此,我们只需计算相对时间内变化的值大于某个特定值,就可以实现“摇一摇”的效果。

需要注意的是,若要实现手机的震动效果,可直接使用iPhoneUtils.Vibrate();

代码实现

变量声明

// 旧的y轴加速度值
var old_y:float = 0;
// 新的y轴加速度值
var new_y:float;
// y轴加速度的最大值
var max_y:float = 0;
// y轴加速度的最小值
var min_y:float = 0;
// y轴加速度的变化值
var d_y:float = 0;
// 计数器,用于记录满足条件的次数
var i:int;

Update函数

function Update () {
// 获取当前y轴的加速度值
new_y = Input.acceleration.y;
// 计算y轴加速度的变化值
d_y = new_y - old_y;
// 更新旧的y轴加速度值
old_y = new_y;
// 检测是否按下了返回键,若是则退出应用程序
if(Input.GetKey(KeyCode.Escape)){
Application.Quit();
}
}

OnGUI函数

function OnGUI(){
// 在屏幕上显示当前加速度和y轴加速度的变化值
GUI.Label(Rect(100, 100, 100, 100), "g:" + Input.acceleration + " d_y:" + d_y);
// 在屏幕上显示计数器的值
GUI.Label(Rect(100, 210, 100, 100), "i:" + i);
// 当y轴加速度的变化值大于2时
if(d_y > 2){
// 计数器加1
i++;
// 触发手机震动效果
iPhoneUtils.Vibrate();
}
}

以上代码通过不断检测手机y轴加速度的变化,当变化值超过一定阈值时,计数器增加并触发手机震动,从而实现了简单的“摇一摇”效果。

作者信息

feifeila

feifeila

共发布了 3994 篇文章