这是一个相当简单的基础实例,在Android中使用了加速度传感器实现了简单的重力球游戏。实例中场景里面有一个平面和四面墙,小球置于四面墙的中间,玩家倾侧移动设备小球会根据获取到的加速度数值向不同的方向滚动。


工程文件下载:

http://pan.baidu.com/s/1gdKm4Cz

http://pan.baidu.com/s/1sjqLUo9

http://pan.baidu.com/s/1sj0VrR3

http://pan.baidu.com/s/1ntp8eDj

http://pan.baidu.com/s/1eQmy91K


脚本十分简单具体情况参看下文:


#pragma strict
private var _ball:GameObject = null;
private var _plane:GameObject = null;
function Start ()
{
this._ball  = GameObject.Find("Ball");
this._plane = GameObject.Find("Plane");
}
function OnGUI()
{
var _accel = Input.acceleration;

GUI.Label(Rect(0, 0, 100, 20),  "accelX:" + _accel.x);
GUI.Label(Rect(0, 20, 100, 20), "accelY:" + _accel.y);
GUI.Label(Rect(0, 40, 100, 20), "accelZ:" + _accel.z);
}
private var _tmprx:float = 0.0f;
private var _tmpry:float = 0.0f;
function Update ()
{
var _accel = Input.acceleration;

var rx:float = 0.0f;
var ry:float = 0.0f;

/*
if(Mathf.Abs(_tmprx - _accel.x) < 0.01)
{
  return;
}

if(Mathf.Abs(_tmpry - _accel.y) < 0.01)
{
  return;
}
*/


_tmprx = _accel.x;
_tmpry = _accel.y;

rx = _accel.x * 180 * 0.2;
ry = _accel.y * 180 * 0.2;

/*
if(rx > 20)
{
  rx = 20;
}

if(rx < -20)
{
  rx = -20;
}

if(ry > 20)
{
  ry = 20;
}

if(ry < -20)
{
  ry = -20;
}
*/


var qu:Quaternion = Quaternion.Euler(rx, 0, ry);
this._plane.transform.rotation = qu;
}