【问题标题】:How to prevent unlimited jump in game? Corona LUA如何防止游戏无限跳转?电晕LUA
【发布时间】:2016-08-26 19:08:45
【问题描述】:

好的,所以我有一个跳转按钮和一个运行时监听函数,用于按下跳转按钮。 因此,每当按下跳跃按钮时,我都会对游戏英雄施加线性脉冲。

local function controls(event)

 if(event.phase=="began") then

    if (buttonpressed.id=="jump") then

                hero:applyLinearImpulse(0,-10,hero.x,hero.y)
            end

 elseif(event.phase=="ended") then

 end

 end

现在的问题是,如果用户继续点击跳跃按钮,那么英雄会继续上升。我想不出什么来反驳这一点。我可以做的一件事是将上面的代码更改为:

 local function controls(event)

 if(event.phase=="began") then

    if (buttonpressed.id=="jump" and hero.y>display.contentHeight/2) then

                hero:applyLinearImpulse(0,-10,hero.x,hero.y)
            end

 elseif(event.phase=="ended") then

 end

 end

但这仍然允许跳跃按钮工作,直到达到屏幕的一半。 请帮我解决这个问题。

谢谢

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    添加一个跳跃计数器,当玩家与地板发生碰撞时重置,这样你就可以在以后允许双跳等。

    【讨论】:

      【解决方案2】:

      您可以检查英雄的速度,只有在速度低于某个阈值时才允许跳跃:

      if (buttonpressed.id=="jump" and hero.y>display.contentHeight/2) then
          local vx, vy = hero:getLinearVelocity()
          if vy < velocity_threshold then -- you have to define this value
              hero:applyLinearImpulse(0,-10,hero.x,hero.y)
          end
      end
      

      这应该可行。另一种方法可能是(我不太了解电晕)使用linearDamping。这会导致线性运动受到抑制,这听起来像是您可能需要的。

      【讨论】:

        【解决方案3】:

        您也可以创建一个布尔值。 当跳转开始时,布尔值为真。 当玩家与地板相撞时为假。 当布尔值为真时,您不能再次跳转。

        【讨论】:

          猜你喜欢
          • 2013-08-19
          • 2017-03-19
          • 2012-05-08
          • 2013-08-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-16
          相关资源
          最近更新 更多