【问题标题】:Make moving a rectangle (Remove/Reappear) Corona SDK移动一个矩形(删除/重新出现)Corona SDK
【发布时间】:2014-02-05 22:39:46
【问题描述】:

大家好,

我想知道一件事:

我想通过物理和循环使这个矩形从左侧移动到右侧,并使其在离开左侧屏幕时消失,并使其重新出现在右侧,

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

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

【问题讨论】:

    标签: sdk lua coronasdk rectangles


    【解决方案1】:

    谢谢你们俩;

    我使用速度使矩形开始移动,并使用碰撞使它们消失 您的所有回答都有助于我更好地理解 corona SDK!

    【讨论】:

      【解决方案2】:

      为了扩展@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
      

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

      库什

      【讨论】:

        【解决方案3】:

        确实,transition.to 非常有用且易于使用,但如果您想使用物理,请使用 applyLinearImpulse(),如果您还想使用碰撞检测,这将更容易。一旦矩形离开屏幕,使用 if 和 then 函数。应该是这样的:

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

        【讨论】:

        • 请记住,如果您有答案,请激活“已回答”按钮,或者告诉我们您的答案! ;)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-14
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        • 1970-01-01
        • 2011-12-04
        相关资源
        最近更新 更多