1

加速度計を使用して「鳥」を制御できますが、これが機能する唯一の問題は、デバイス(電話/タブレット)が平らなときに機能することですが、手に持ってプレイするとアイドル状態になりません。加速度計のゼロ点を y 軸上で 30° (度) のようにオフセットする方法はありますか?

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)
4

1 に答える 1

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
于 2013-02-18T22:29:46.333 に答える