Corona SDK随机物理景观
2014-3-27 22:13:27
收藏:0
阅读:129
评论:2
我正在制作一个游戏,使用一个角色沿着由不同的“部分”组成的轨道行驶,并随机选择这些部分。它使用物理引擎,大多数物体都有许多顶点,并使用Physics Editor创建。我的实现不是很好,因为每次需要新的部分时,我都要重新创建所有部分。这会导致帧速率跳过,因为它必须在“时间关键”的游戏过程中创建这些大型物理体。每个部分的长度为2000像素,到目前为止我有7个部分。有人能告诉我一个更好的实现方法吗?谢谢!
这是我用于选择和创建随机部分的功能:
local secNeeded=false
local secNum=2
local totallength=-800
local function newSec()
if secNeeded==true then
local levNum=math.random( 1, 7 )
if secNum==1 then
display.remove( group1 )
group1 = nil
group1=display.newGroup()
game:insert(group1)
end
if secNum==2 then
display.remove( group2 )
group2 = nil
group2=display.newGroup()
game:insert(group2)
end
if secNum==3 then
display.remove( group3 )
group3 = nil
group3=display.newGroup()
game:insert(group3)
end
if levNum == 1 then
createRamp()
end
if levNum == 2 then
createdoubleRamp()
end
if levNum == 3 then
createHill()
end
if levNum == 4 then
createRampHill()
end
if levNum == 5 then
createUpHill()
end
if levNum == 6 then
createDownHill()
end
if levNum == 7 then
createTunnel()
end
end
secNum=secNum+1
if secNum==4 then
secNum=1
end
end
local function wheelMid(event)
--print(totallength)
--print(wheel.x)
if wheel.x>totallength then
secNeeded=true
newSec()
end
end
Runtime:addEventListener( "enterFrame", wheelMid)
这是一个create函数的示例
function createHill()
local mega=display.newGroup()
local guide = display.newRect(0,0, 2000, 50)
guide.x=totallength+2000
guide.y=totalheight
guide.alpha=0
mega:insert(guide)
local ground = display.newImageRect("ground.png", 2000, 600)
ground.x=guide.x
ground.y=guide.y+200
mega:insert(ground)
physics.addBody(ground, "static", { friction=0.5 })
local hill= display.newImageRect("hill2.png", 1400, 900)
hill.x=guide.x+300
hill.y=guide.y-534
mega:insert(hill)
physics.addBody( hill, "static", physicsData:get("hill2") )
if secNum==1 then
group1:insert(mega)
end
if secNum==2 then
group2:insert(mega)
end
if secNum==3 then
group3:insert(mega)
end
totallength=guide.x
secNeeded=false
end
这些组是为了同时出现3个部分。有什么更好的方法来实现这个问题,消除帧跳跃吗?如果有人能帮助我或指点我正确的方向,我将非常感激!
点赞
用户2895078
我的建议是在游戏启动时(或实际运行前)加载您的7种不同的部件,然后通过将alpha设置为0等方式进行隐藏,当游戏真正开始时,您始终重新使用同一组7个部件而不是重新创建它们。例如,当您随机选择一个时,您可以从您的7个部件组中选择,将alpha设置为1并将其x / y位置移动到准确的位置。
这样做可以避免每次重新创建并且会更快。
2014-03-27 23:40:59
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
使用
storyboard.loadScene预加载场景可能是您正在寻找的。