我如何正确暂停涉及物理和过渡的游戏?
2017-4-19 6:58:10
收藏:0
阅读:274
评论:4
我想在我的游戏中添加一个暂停按钮,其中包含物体上的物理和一些转换。作为一个相对较新的 Corona SDK 用户,我该怎么做呢?有什么指引??
原文链接 https://stackoverflow.com/questions/6855094
点赞
stackoverflow用户909233
使用 physics.pause()
会在物理对象中有轻微的抖动。
另一种方法是在暂停时捕捉屏幕并将其放在场景上方。
之后,在屏幕上方添加暂停时的GUI对象。
在恢复时,删除暂停时的对象和屏幕捕捉。
local gameScene= display.newGroup()
local myObject1 = display.newRect(50,50,100,150 )
gameScene:insert(myObject1)
function onPause(event)
local screenCap = display.captureScreen(false) --不保存到相册
gameScene:insert(screenCap)
--插入暂停按钮等
end
Runtime:addEventListener("touch",onPause)
2012-01-16 08:54:35
stackoverflow用户1213470
使用暂停按钮设置功能:
local function pausebtn(event)
如果 event.phase == "ended" 则
physics.pause()
end
pausebtn:addEventListener("touch", pausebtn)
2012-05-02 14:47:13
stackoverflow用户4625322
除了停止物理引擎,如果你有场景中移动的对象和游戏中的任何动画,还必须移除enterframe监听器。
因此,你的暂停功能应该像这样:
function Pause(event)
if event.phase == "began" then
if paused == false then
physics.pause()
paused = true
Runtime:removeEventListener("enterFrame",Contador_func)
Runtime:removeEventListener("enterFrame",Move_c1ScrollPai)
Runtime:removeEventListener("enterFrame",Move_c1ScrollFilho)
Runtime:removeEventListener("enterFrame",VelAumenta)
Runtime:removeEventListener("enterFrame",Serra)
Runtime:removeEventListener("enterFrame",passaro)
Runtime:removeEventListener("enterFrame",bf)
Runtime:removeEventListener("enterFrame",bf2)
Runtime:removeEventListener("enterFrame",p)
Runtime:removeEventListener("enterFrame",CR)
Runtime:removeEventListener("enterFrame",Funcao)
Runtime:removeEventListener("enterFrame",BumPassaro)
Runtime:removeEventListener("collision",Andar)
p:pause()
Bum:pause()
coin:pause()
coins:pause()
elseif paused == true then
Runtime:addEventListener("enterFrame",Contador_func)
Runtime:addEventListener("enterFrame",Move_c1ScrollPai)
Runtime:addEventListener("enterFrame",Move_c1ScrollFilho)
Runtime:addEventListener("enterFrame",VelAumenta)
Runtime:addEventListener("enterFrame",Serra)
Runtime:addEventListener("enterFrame",passaro)
Runtime:addEventListener("enterFrame",bf)
Runtime:addEventListener("enterFrame",bf2)
Runtime:addEventListener("enterFrame",p)
Runtime:addEventListener("enterFrame",CR)
Runtime:addEventListener("enterFrame",Funcao)
Runtime:addEventListener("enterFrame",BumPassaro)
Runtime:addEventListener("collision",Andar)
Runtime:removeEventListener("enterFrame",p)
p:play()
Bum:play()
coin:play()
coins:play()
physics.start()
paused = false
end
end
end
2015-03-02 22:00:08
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
:
// 暂停函数 function pause() physics.pause() end // 触摸事件监听,调用暂停函数 Runtime:addEventListener("touch", pause)
此代码可以将所有物理效果暂停。
// 暂停/恢复函数 function pause(event) if event.phase == "began" then if paused == false then physics.pause() paused = true elseif paused == true then physics.start() paused = false end end end // 初始状态为未暂停 paused = false // 触摸事件监听,每次点击切换暂停状态 Runtime:addEventListener("touch", pause)
此代码可以在每次点击时切换物理暂停状态。