使用 Corona SDK 将矩形移动(删除/重新出现)
2015-2-11 0:19:24
收藏:0
阅读:108
评论:3
大家好,
我想了解一件事:
我想使用物理和循环让这个矩形从左侧移动到右侧,当它离开左侧屏幕时,使其消失,并在右侧重新出现,
这是我在代码中做的,但我想知道是否有更简单的方法来做到这一点。
使用transition.to是否更好?
附注:我的游戏是一个无尽的奔跑游戏,玩家从地面跳到空中的矩形上。 如果有人有这方面的教程,请告诉我!谢谢
感谢大家的帮助!
local physics = require( "physics" )
physics.start()
physics.setDrawMode( "hybrid")
local _x = display.contentCenterX
local _y = display.contentCenterY
local speed = 10
local GroupMur1 = display.newGroup()
-- 创建矩形
local Mur1 = display.newRect(680,25,680,25)
Mur1.x = _x +900
Mur1.y = _y +80
physics.addBody(Mur1, "static")
GroupMur1:insert(Mur1)
local a =1
-- 更新函数
local function update ()
if(a==1)then updateMur1() end
if(a==2)then updateMur2() end
end
-- 更新函数1
function updateMur1 ()
GroupMur1.x =GroupMur1.x - speed
if(GroupMur1.x < -2000) then
GroupMur1:remove(1)
a = 2
end
end
-- 更新函数2
function updateMur2()
GroupMur1:insert(Mur1)
physics.addBody(Mur1, "static")
GroupMur1.x = _x + 900
a=1
end
timer.performWithDelay(1, update, -1)
点赞
用户1609914
为了扩展@Fannick所说的,下面的代码是通用的方式触发此方法(适用于任何大小的对象)。假设您已经拥有 object.anchorX = 0 或 object:setReferencePoint(display.CenterLeftReferencePoint),具体取决于您的SDK版本(前者用于v2,后者用于v1- 此链接应该有助于澄清差异)
--如果对象过了边界(screenOriginX用于缩放更大的设备)
if object.x > (display.contentWidth - display.screenOriginX) then
object.x = 0 + display.screenOriginX - object.contentWidth
end
如果您有object.anchorX = 0.5或object:setReferencePoint (display.CenterReferencePoint)(或者没有设置任何一个-这两个都是默认值),则为:
if object.x > (display.contentWidth + (object.contentWidth/2) - display.screenOriginX) then
object.x = 0 + display.screenOriginX - (object.contentWidth/2)
end
对于object.anchorX = 1或object:setReferencePoint (display.CenterRightReferencePoint),则为:
if object.x > (display.contentWidth + object.contentWidth - display.screenOriginX) then
object.x = 0 + display.screenOriginX
end
希望您能找到答案(如果您还没有)。
2014-01-21 14:20:43
用户3127418
我已经使用了速度使矩形开始移动,并使用碰撞使其消失。 你们两个的回答都帮助我更好地理解了 Corona SDK!
2014-01-21 14:35:54
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
虽然
transition.to确实非常有用且易于使用,但如果您想使用物理效果,则应使用applyLinearImpulse(),如果还想使用碰撞检测,那就更容易了。一旦矩形超出屏幕,使用if和then函数。就像这样:if object.x > 500 then -- 假设有一个20x20的矩形 object.x = -20 end