首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Corona围绕玩家旋转“世界”

Corona围绕玩家旋转“世界”
EN

Stack Overflow用户
提问于 2014-05-03 16:12:12
回答 1查看 520关注 0票数 0

我试图创造一个简单的游戏,玩家控制一艘船,在“世界”中移动。让这件事变得更棘手的是,当船转弯时,我想把“世界”旋转起来,这样船的前方总是朝向手机屏幕的顶部。

我创建了一个包含“世界”和“船”的组,以及一个我称之为cameraLayer的“跟随”船的组。所有这些都很好,因为我可以移动飞船,并且总是把它放在手机屏幕的中央。然而,我似乎无法使cameraLayer与船舶旋转的关系正确地旋转。

这两个组的代码如下:

代码语言:javascript
运行
复制
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

以下是移动函数:

代码语言:javascript
运行
复制
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

这是旋转函数:

代码语言:javascript
运行
复制
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

我试着尽可能多地进行研究,但我没有发现任何可以帮助我解决问题的东西。任何形式的帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-07 07:37:41

你的最后一条评论触动了我的记忆--你需要不断调整世界的锚点,这样它就会围绕着你的船的位置旋转。我把船保持在世界之上,用下面的代码重新设置世界锚点--希望这会有所帮助!:D

代码语言:javascript
运行
复制
-- 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对象是一个裁剪世界地图的容器)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23446846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档