更好的改变下拉速度的方法。

嗨,我有一个小的生成函数,可以从天空中掉下云朵。

local randomBad1 = function()
    local badC1 = display.newImage("BCloud1.png")
    badC1.x = math.random (0, 450); badC1.y = -50
    physics.addBody( badC1, { density=.1, bounce=0.1, friction=.2, radius=45, filter=badc1CollisionFilter } )
    badC1.name = "BCloud1"
    badC1.isSensor = true
    badC1.rotation = math.random(-20,20) -- Rotate the object
    badC1.gravityScale = 0.40
    local cleanup
    cleanup = function()
       if badC1 then
           if badC1.y >600 then
               badC1:removeSelf()
               badC1 = nil
           end
       end
    end
    Runtime:addEventListener("enterFrame", cleanup)
end
randomBadC1 = timer.performWithDelay( 3000, randomBad1, 0 )

所以我想知道是否有一种更好的方法来改变下降速度,而不是使用'gravityScale'?

Kevin-

点赞
用户2040431
用户2040431

如果只有云在下落,我会完全改变重力。

physics.setGravity( gx, gy )
2013-07-08 18:19:27
用户1979583
用户1979583

你可以使用applyForce命令对云彩做出这样的动作。以下是我添加到你的代码的几行内容:

local randomBad1 = function()
  local badC1 = display.newImage("BCloud1.png")
  badC1.x = math.random (0, 450); badC1.y = 50-- -50
  physics.addBody( badC1, { density=.1, bounce=0.1, friction=.2, radius=45, filter=badc1CollisionFilter } )
  badC1.name = "BCloud1"
  badC1.isSensor = true
  badC1.rotation = math.random(-20,20) -- 旋转物体

  -------------------------------------------------------------------
            -- 这些行将为您完成此操作 --
  -------------------------------------------------------------------
  yFor  = math.random(1000)   -- 随机选择y方向的力量
  print("yFor = "..yFor)
  badC1:applyForce( 0, yFor, badC1.x, badC1.y )  -- 将力量施加到您的云上
  -------------------------------------------------------------------

  badC1.gravityScale = 0.40
  local cleanup
  cleanup = function()
   if badC1 then
       if badC1.y >600 then
           badC1:removeSelf()
           badC1 = nil
       end
   end
end
Runtime:addEventListener("enterFrame", cleanup)
end
randomBadC1 = timer.performWithDelay( 3000, randomBad1, 0 )

了解更多信息,请参见:Corona 物理体属性。

继续编程... :)

2013-07-08 19:00:31