Corona SDK - 将“世界”围绕玩家旋转
2015-1-16 23:59:19
收藏:0
阅读:81
评论:1
我正在尝试创建一个简单的游戏,玩家控制一艘移动在“世界”中的船。使事情变得有点棘手的是,当船转向时,我想将“世界”围绕船旋转,以使船头始终对准手机屏幕的顶部。
我创建了一个包含“世界”和船的组,以及一个我称之为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
我尽可能地进行了研究,但我没有找到任何可以帮助我解决问题的东西。任何形式的帮助都将不胜感激!
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
你的最后一条评论唤起了我的记忆-你需要不断调整世界的锚点,这样它就会围绕你的船所在的点旋转。我把船放在世界之上,并使用下面的代码重置世界锚点-希望这会有所帮助!:D
-- 将地图定位在视口中 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(视口对象是一个容器,用于裁剪世界地图)