Sdk 将移动矩形(删除/重新显示)设置为 大家好,,
我想知道一件事: 我想用物理和循环使这个矩形从左边移动到右边,当它离开左边的屏幕时消失,然后在右边重新出现 这是我在代码中所做的,但我想知道是否有其他最简单的方法来实现这一点 使用transition.to是否更好 Ps:我的游戏是一个无止境的跑步游戏,玩家从地板跳到空中的长方形 如果有人有这个教程,我明白了!多谢各位 谢谢大家Sdk 将移动矩形(删除/重新显示)设置为 大家好,,,sdk,lua,coronasdk,rectangles,Sdk,Lua,Coronasdk,Rectangles,我想知道一件事: 我想用物理和循环使这个矩形从左边移动到右边,当它离开左边的屏幕时消失,然后在右边重新出现 这是我在代码中所做的,但我想知道是否有其他最简单的方法来实现这一点 使用transition.to是否更好 Ps:我的游戏是一个无止境的跑步游戏,玩家从地板跳到空中的长方形 如果有人有这个教程,我明白了!多谢各位 谢谢大家 local physics = require( "physics" ) physics.start() physics.setDrawMode
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
function updateMur1 ()
GroupMur1.x =GroupMur1.x - speed
if(GroupMur1.x < -2000) then
GroupMur1:remove(1)
a=2
end
end
function updateMur2()
GroupMur1:insert(Mur1)
physics.addBody(Mur1, "static")
GroupMur1.x = _x + 900
a=1
end
timer.performWithDelay(1, update, -1)
本地物理=要求(“物理”)
物理开始
物理。setDrawMode(“混合”)
本地_x=display.contentCenterX
本地_y=display.contentCenterY
本地速度=10
本地组mur1=display.newGroup()
本地Mur1=display.newRect(680,25680,25)
Mur1.x=x+900
Mur1.y=_y+80
physics.addBody(Mur1,“静态”)
组Mur1:插入(Mur1)
局部a=1
本地函数更新()
如果(a==1),则updateMur1()结束
如果(a==2),则updateMur2()结束
终止
函数updateMur1()
GroupMur1.x=GroupMur1.x-速度
如果(GroupMur1.x<-2000),则
组1:删除(1)
a=2
终止
终止
函数updateMur2()
组Mur1:插入(Mur1)
physics.addBody(Mur1,“静态”)
GroupMur1.x=x+900
a=1
终止
timer.performWithDelay(1,更新,-1)
没错,transition.to确实非常有用且易于使用,但是如果您想使用物理,那么请使用applylinearpulse(),如果您还想使用碰撞检测,这将更加容易。一旦矩形离开屏幕,使用if And then函数。应该是这样的:
if object.x > 500 then -- for example with a rectangle of 20 by 20
object.x = -20
end
为了扩展@Fannick所说的,顺便说一句,触发它的一般方法(对于任何大小的对象)是下面的代码。为此,我假设您有
object.anchorX=0
或object:setReferencePoint(display.CenterLeftReferencePoint)
,具体取决于您的SDK版本(前者用于v2,后者用于v1-应该有助于消除差异)
如果您有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
if object.x > (display.contentWidth + object.contentWidth - display.screenOriginX) then
object.x = 0 + display.screenOriginX
end
对于object.anchorX=1
或object:setReferencePoint(display.CenterRightReferencePoint)
if object.x > (display.contentWidth + (object.contentWidth/2) - display.screenOriginX) then
object.x = 0 + display.screenOriginX - (object.contentWidth/2)
end
if object.x > (display.contentWidth + object.contentWidth - display.screenOriginX) then
object.x = 0 + display.screenOriginX
end
如果你还没有找到答案,希望你能找到答案
库什谢谢你们两位 我用速度使矩形开始移动,用碰撞使它们消失
你所有的答案都有助于我更好地理解你 记住,如果您有答案,请激活“已回答”按钮,或向我们显示您的答案!;)