我试图创建一个简单的游戏,玩家控制一个在“世界”中移动的船只。#34;。让这个变得有点棘手的是我想要旋转'#34; world"当船转弯时,船的前部总是面向电话屏幕的顶部。
我创建了一个包含" world"以及我称之为cameraLayer
的船只以及#34;跟随"船周围。所有这一切都很好,因为我可以移动船只并始终将其保持在手机屏幕的中央。但是,我无法让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
我尽可能地尝试研究,但我找不到任何可以帮助我解决问题的方法。任何形式的帮助都将受到高度赞赏!
答案 0 :(得分:1)
你最后的评论让我记忆犹新 - 你需要不断调整世界的锚点,使它围绕你的船只旋转。我将船保持在世界之上并使用下面的代码重置世界锚点 - 希望这将有所帮助! :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
(视口对象是剪裁世界地图的容器)