Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sdk 将移动矩形(删除/重新显示)设置为 大家好,,_Sdk_Lua_Coronasdk_Rectangles - Fatal编程技术网

Sdk 将移动矩形(删除/重新显示)设置为 大家好,,

Sdk 将移动矩形(删除/重新显示)设置为 大家好,,,sdk,lua,coronasdk,rectangles,Sdk,Lua,Coronasdk,Rectangles,我想知道一件事: 我想用物理和循环使这个矩形从左边移动到右边,当它离开左边的屏幕时消失,然后在右边重新出现 这是我在代码中所做的,但我想知道是否有其他最简单的方法来实现这一点 使用transition.to是否更好 Ps:我的游戏是一个无止境的跑步游戏,玩家从地板跳到空中的长方形 如果有人有这个教程,我明白了!多谢各位 谢谢大家 local physics = require( "physics" ) physics.start() physics.setDrawMode

我想知道一件事:

我想用物理和循环使这个矩形从左边移动到右边,当它离开左边的屏幕时消失,然后在右边重新出现

这是我在代码中所做的,但我想知道是否有其他最简单的方法来实现这一点

使用transition.to是否更好

Ps:我的游戏是一个无止境的跑步游戏,玩家从地板跳到空中的长方形 如果有人有这个教程,我明白了!多谢各位

谢谢大家

    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
如果你还没有找到答案,希望你能找到答案


库什

谢谢你们两位

我用速度使矩形开始移动,用碰撞使它们消失
你所有的答案都有助于我更好地理解你

记住,如果您有答案,请激活“已回答”按钮,或向我们显示您的答案!;)