移动一个矩形(删除/重新出现)Corona SDK

时间:2014-01-16 20:02:04

标签: sdk lua corona rectangles

大家好,

我想知道一件事:

我想用物理和循环使这个矩形从左侧移动到右侧,并且当它离开leftscreen时让它消失,然后重新出现在右侧,

这是我在我的代码中所做的,但我想知道是否还有另一种最简单的方法。

使用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)

3 个答案:

答案 0 :(得分:0)

转换.to确实很有用且易于使用,但是如果你想使用物理,那么使用applyLinearImpulse(),如果你想使用碰撞检测,这将更容易。一旦矩形在屏幕外,使用if和then功能。它会是这样的:

if object.x > 500 then -- for example with a rectangle of 20 by 20 
object.x = -20
end

答案 1 :(得分:0)

为了扩展@Fannick所说的,这应该是顺便说一下,触发它的通用方法(对于任何大小的任何对象)将是下面的代码。为此,我假设您有object.anchorX = 0object:setReferencePoint(display.CenterLeftReferencePoint),具体取决于您的SDK版本(前者适用于v2,后者适用于v1 - This link应该有助于消除差异)

--if the object is past the edge (screenOriginX used to scale for bigger devices)
if object.x > (display.contentWidth - display.screenOriginX) then
    object.x = 0 + display.screenOriginX - object.contentWidth
end

如果你有object.anchorX = 0.5object: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 = 1object:setReferencePoint(display.CenterRightReferencePoint),它将是:

if object.x > (display.contentWidth + object.contentWidth - display.screenOriginX) then
    object.x = 0 + display.screenOriginX
end

希望你找到答案,如果你还没有!

古实

答案 2 :(得分:0)

谢谢你们两个人;

我用速度让矩形开始移动,碰撞让它们消失 您的所有答案都有助于我了解更好的电晕SDK!