这是一个问题:我正在使用 Corona SDK 和非常简单的模块制作一个简单的物理游戏:http: //developer.coronalabs.com/code/move-camera所以我在每一帧中都有带有物理体的鱼对象( enterFrame 事件)我将相机居中在它上面
camera.x = -fish.x + screenWidth / 2
而且我有两个背景 bg1 和 bg2,它们一个接一个地平铺(bg1 bg2 bg1 bg2 等)将在用户不知道只有 2 个背景的情况下产生很好的移动世界效果。问题是我无法正确计算他们的位置来产生这种效果。我用谷歌搜索了很多,但找不到任何适合我需要的东西。
这是一个免费的艺术,我正在使用http://www.vickiwenderlich.com/2013/02/free-game-art-flying-goldfish/你可以找到这两个背景。
鱼也有可能稍微朝相反的方向移动(通常它向右移动,因此要使世界移动效果背景必须向左移动),所以如果它在计算中会很好。
我想出了这样的事情(但是它不起作用,但也许我很接近):
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 我用其中一个背景跳跃,lfx 是最后一条鱼 x 位置,dfx 是最后一条和当前鱼位置之间的差异,仅此而已。
如果您可以帮助我进行计算或给我新的计算或只是提供一些有趣的链接,请在此处写下它们。
任何帮助将不胜感激,问候