2013-02-18 43 views
1

我可以使用加速度计控制“鸟”,这是我的唯一问题,它可以在我的设备(手机/平板电脑)平坦时起作用,但是当您拿着它时不会闲置在你的手中玩。有没有办法将加速度计的零点偏移到y轴上的30°(度)?如何偏移加速度计lua corona sdk

display.setStatusBar (display.HiddenStatusBar); 
system.setAccelerometerInterval(50); 
system.setIdleTimer(false); 
local background = display.newImage("bg.png") 


--> GAME CHARACTER 
local bird = display.newImage ("helicopter.png") 
bird.x  = 100; 
bird.y  = 100; 
bird:setReferencePoint(display.CenterReferencePoint); 

-- Speed of Movement with tilt. You can change it ans see the effects. 
local tiltSpeed   = 30; 
local motionx   = 0; 
local motiony   = 0; 
local rotation   = 0; 

local function onTilt(event) 
    -- Its for the new position of the bird 
    motionx = tiltSpeed * event.xGravity; 
    motiony = tiltSpeed * event.yGravity; 
end 

local function moveBird (event) 
    bird.x = motionx + bird.x; 
    bird.y = bird.y - motiony; 
    bird.rotation = rotation; 
end 

Runtime:addEventListener("accelerometer", onTilt) 
Runtime:addEventListener("enterFrame", moveBird) 
+0

如果你有event.zGravity那么你可以简单地旋转,3D重力矢量任何你想要的位置。 – 2013-02-18 20:35:38

+0

我将如何使用它? – 2013-02-18 21:43:34

+0

更改为-30 :) – 2013-02-19 19:42:29

回答

2
local delta = -30/180*math.pi -- 30 degrees 
local cos_delta, sin_delta = math.cos(delta), math.sin(delta) 

local function onTilt(event) 
    -- Its for the new position of the bird 
    motionx = tiltSpeed * event.xGravity 
    motiony = tiltSpeed * (cos_delta*event.yGravity + sin_delta*event.zGravity) 
end