ここに問題があります: 私はコロナ SDK と非常に単純なモジュールを使用して単純な物理ゲームを作成しています: http://developer.coronalabs.com/code/move-cameraだから私は物理ボディと各フレーム ( enterFrame イベント) カメラを中心に置いています
camera.x = -fish.x + screenWidth / 2
そして、私は2つの背景bg1とbg2を持っています.2つの背景(bg1 bg2 bg1 bg2など)は、背景が2つしかないことをユーザーが知らなくても、素敵な動く世界の効果を生み出します。問題は、そのような効果を得るために位置を正しく計算できないことです。私はたくさんグーグルで検索しましたが、私のニーズに合ったものが見つかりません。
これは、私が使用しているフリー アートです。http://www.vickiwenderlich.com/2013/02/free-game-art-flying-goldfish/では、これら 2 つの背景を見つけることができます。
また、魚がわずかに反対方向に移動する可能性もあります (通常、魚は右に移動するため、世界を動かす効果を作成するには背景を左に移動する必要があります)。
私はこのようなことを考え出しました(しかし、それはうまくいきませんが、私は近いかもしれません):
local function updateFrame(event)
local m
local dfx = lfx - fish.x
lfx = fish.x
camera.x = -fish.x + screenWidth / 2
--print("dfx = " .. dfx)
bg1.x = bg1.x + dfx
bg2.x = bg2.x + dfx
s = s + dfx
if mAbs(s) > screenWidth then
m = sgn(s)
if m ~= 0 then
s = s - m * screenWidth
if m < 0 then
bg1.x = bg1.x - 2 * m * screenWidth
else
bg2.x = bg2.x - 2 * m * screenWidth
end
end
end
end
Runtime:addEventListener( "enterFrame", updateFrame );
s = screenLeft - screenWidth
ここで、s は移動したピクセルの合計であり、screenWidth を超えている場合は背景の 1 つを使用してジャンプします。lfx は最後の魚の x 位置、dfx は最後と現在の魚の位置の差です。それだけです。
私の計算を手伝ってくれたり、新しい計算を教えてくれたり、興味深いリンクをいくつか教えてくれたりしたら、ここに書き込んでください。
よろしくお願いします。