我试图创造一个简单的游戏,玩家控制一艘船,在“世界”中移动。让这件事变得更棘手的是,当船转弯时,我想把“世界”旋转起来,这样船的前方总是朝向手机屏幕的顶部。
我创建了一个包含“世界”和“船”的组,以及一个我称之为cameraLayer的“跟随”船的组。所有这些都很好,因为我可以移动飞船,并且总是把它放在手机屏幕的中央。然而,我似乎无法使cameraLayer与船舶旋转的关系正确地旋转。
这两个组的代码如下:
physicsLayer = display.newGroup()
physicsLayer:insert(bg)
physicsLayer:insert(player)
cameraLayer = display.newGroup()
cameraLayer:insert(physicsLayer)
cameraLayer.rotation = 0
cameraLayer.xScale = 1
cameraLayer.yScale = 1
cameraLayer.anchorX = 0.5
cameraLayer.anchorY = 0.5
cameraLayer.x = centerX
cameraLayer.y = centerY
cameraLayer.angle = 0以下是移动函数:
local function move()
player.x = player.x + Cos( Rad(player.angle) ) * 2
player.y = player.y + Sin( Rad(player.angle) ) * 2
cameraLayer.x = cameraLayer.x - Cos( Rad(cameraLayer.angle) ) * 2
cameraLayer.y = cameraLayer.y - Sin( Rad(cameraLayer.angle) ) * 2
end这是旋转函数:
local function enterFrameListener(key)
if holding then
if leftKey.isFocus == true then
player.angle = player.angle - 3
player.rotation = player.rotation - 3
cameraLayer.angle = cameraLayer.angle - 3
elseif rightKey.isFocus == true then
player.angle = player.angle + 3
player.rotation = player.rotation + 3
cameraLayer.angle = cameraLayer.angle + 3
end
else
-- Not holding
end
end我试着尽可能多地进行研究,但我没有发现任何可以帮助我解决问题的东西。任何形式的帮助都将不胜感激!
发布于 2014-05-07 07:37:41
你的最后一条评论触动了我的记忆--你需要不断调整世界的锚点,这样它就会围绕着你的船的位置旋转。我把船保持在世界之上,用下面的代码重新设置世界锚点--希望这会有所帮助!:D
-- position the map in the viewport
function viewport:positionMap( x, y )
aX = ( mapSize * 0.5 + x ) / mapSize
aY = ( mapSize * 0.5 + y ) / mapSize
self.map.anchorX = aX
self.map.anchorY = aY
end( viewport对象是一个裁剪世界地图的容器)
https://stackoverflow.com/questions/23446846
复制相似问题