下面我们来看一下Ngui打字机效果。这是一篇刚学习unity的人写的,适合初学者。
没做这个效果之前,我对Input.acceleration的x,y,z值的范围只是[-1,1],也没想过失重和超重,而且一直用眼睛来观察值的变化,结果发现“没变”,后来有个高手提醒我失重和超重,所以我就写了两个函数检测了一下,我用力摇和抖动手机,发现x,y,z值的范围大致都在[-4,4]之间,在这个范围内,你摇的越快值变化的越大,所以我们只用求相对时间里面变化的值大于某一个值就可以达到“摇一摇”的效果了。
注:手机的震动效果直接用iPhoneUtils.Vibrate();
1. var old_y:float=0;
2. var new_y:float;
3. var max_y:float=0;
4. var min_y:float=0;
5. var d_y:float=0;
6. function Update () {
7. new_y=Input.acceleration.y;
8. d_y=new_y-old_y;
9. old_y=new_y;
10. if(Input.GetKey(KeyCode.Escape)){
11. Application.Quit();
12. }
13.
14. }
15. var i:int;
16. function OnGUI(){
17. GUI.Label(Rect(100,100,100,100),"g:"+Input.acceleration+"d_y:"+d_y);
18. GUI.Label(Rect(100,210,100,100),"i:"+i);
19. if(d_y>2){
20. i++;
21. iPhoneUtils.Vibrate(); //手机的震动效果
22. }
23. }
没做这个效果之前,我对Input.acceleration的x,y,z值的范围只是[-1,1],也没想过失重和超重,而且一直用眼睛来观察值的变化,结果发现“没变”,后来有个高手提醒我失重和超重,所以我就写了两个函数检测了一下,我用力摇和抖动手机,发现x,y,z值的范围大致都在[-4,4]之间,在这个范围内,你摇的越快值变化的越大,所以我们只用求相对时间里面变化的值大于某一个值就可以达到“摇一摇”的效果了。
注:手机的震动效果直接用iPhoneUtils.Vibrate();
1. var old_y:float=0;
2. var new_y:float;
3. var max_y:float=0;
4. var min_y:float=0;
5. var d_y:float=0;
6. function Update () {
7. new_y=Input.acceleration.y;
8. d_y=new_y-old_y;
9. old_y=new_y;
10. if(Input.GetKey(KeyCode.Escape)){
11. Application.Quit();
12. }
13.
14. }
15. var i:int;
16. function OnGUI(){
17. GUI.Label(Rect(100,100,100,100),"g:"+Input.acceleration+"d_y:"+d_y);
18. GUI.Label(Rect(100,210,100,100),"i:"+i);
19. if(d_y>2){
20. i++;
21. iPhoneUtils.Vibrate(); //手机的震动效果
22. }
23. }