【发布时间】:2013-10-22 05:32:22
【问题描述】:
这里有一个问题:我正在使用 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 是最后一条和当前鱼位置之间的差异,仅此而已。
如果你能帮我计算或给我新的或只是给一些有趣的链接,请写在这里。
任何帮助将不胜感激, 问候
【问题讨论】:
标签: background lua coronasdk tiles