关于屏幕倾斜方向的识别(可能是加速度传感器)

使用Cocos2D-x,用于识别手机屏幕倾斜方向,应该如何做?

以横屏为例(手机屏幕朝上):

1、如果屏幕向左倾斜(左低右高),则小球向左边直线运动
2、如果屏幕向右倾斜(左高右低),则小球向右边直线运动
3、如果屏幕向上倾斜(上低下高),则小球向上边直线运动
4、如果屏幕向下倾斜(下高上低),则小球向下边直线运动

这种模式在赛车游戏中应该比较普遍,比如左拐、右拐、前进加速、减速制动等

目前我已经能够获取相应的x,y,z数据,但是感觉非常生硬,不能很好的判断。特别是可能会出现识别不出方向,明明是向前的,但是就是识别不出。实在不知道是怎么回事,还请大家帮忙。

local layer = cc.Layer:create()
layer:setAccelerometerEnabled(true)
layer:setAccelerometerInterval(20.0 / 60)

local eventDispatcher = self:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(accListener,self)

local function accelerometerListener(event,x,y,z,timestamp)
local mainScene = event:getCurrentTarget()
if mainScene.ball ~= nil then
if x < 0 and y < 0 and z < 0 then
print(“left”)
elseif x < 0 and y > 0 and z < 0 then
print(“up”)
elseif x > 0 and y > 0 and z < 0 then
print(“right”)
elseif x > 0 and y < 0 and z < 0 then
print(“down”)
end
end
end

这个应该使用陀螺仪,首先检查是否有陀螺仪 没有就没办法。
然后根据平台调用陀螺仪的接口

这个要用陀螺仪,如果是ios平台的话可以百度搜一下ios陀螺仪相关教程,然后去看cocos加速器的源码,仿照它处理加速器的方式把陀螺仪的监听加上然后处理数据就行了