【问题标题】:Stopping physics body from movement in Corona SDK在 Corona SDK 中停止物理体的运动
【发布时间】:2013-06-13 04:59:19
【问题描述】:

我正在学习 Corona SDK,并为此目的制作小项目。

所以,我的问题是下一个: 我设法创建了 2 个物理对象,并在其中一个与另一个碰撞时使它们“爆炸”。我的问题是如何让其他物体(它施加了线性脉冲)在碰撞时停止?此外,当它停止时,必须将其从屏幕上移除以避免与其他物体发生碰撞......

这是在碰撞时移除第一个对象的部分:

nloDrop = function()
local nlo = display.newImageRect("nlo.png", 65, 25)
nlo.x = 35 + mRand(410) ; nlo.y = -60
physics.addBody(nlo, "dynamic", {density=1, bounce = 0, friction = 0, filter = {maskBits = 4, categoryBits = 2}})
nlo:applyLinearImpulse(0, 0.8, nlo.x, nlo.y)
nlo.isSensor = true
nlo.collision = nloCollision
nlo:addEventListener("collision", nlo)
nlo.name = "nlo"
toFront()

结束

这里是“碰撞”功能:

function nloCollision(self, event)
if ((event.other.myName == "weaponName") then
    print("funkc")
    self:removeSelf()
    self:removeEventListener("collision", nlo)
    self = nil
    if weapon ~= nil then
        -- stop moving of weapon
    end
end

结束

谢谢!

【问题讨论】:

    标签: mobile collision-detection collision coronasdk


    【解决方案1】:

    您可以将对象 bodyActive 设为 false,然后它不会响应物理。您不能在活动屏幕中从物理中移除一个物体,因此最好将该物体保持在屏幕之外。

    【讨论】:

      【解决方案2】:

      我让它像局部变量一样设置对象,并创建一个函数,在一些交互或碰撞后删除/删除每个变量(对象)。

      第一个函数包含对象创建(即函数下的局部类型)并将物理应用于该对象。 第二个函数包含删除 (self:removeSelf()) ,因为每个对象都是自己的对象,当删除它时,物理东西将继续工作,因为将创建新的本地对象。

      function create(event)
          local weap1 = display.newImage("weap1.png", 0, 0)
          weap1.x = turret.x ; weap1.y = turret.y
          weap1.rotation = turret.rotation
          weap1.collision = weap1Collision
          weap1:addEventListener("collision", weap1)
          physics.addBody(weap1, "dynamic", {density = 1, friction = 0, bounce = 0, filter = {maskBits = 2, categoryBits = 4}})
          weap1:applyLinearImpulse(forceWeap1*xComp, forceWeap1*yComp, weap1.x, weap1.y)
      
      function weap1Collision(self,event)
          if (event.other.name == "collisionObject") then
              self:removeSelf()
              self:removeEventListener("collision", weap1)
              self = nil
          end
      end
      

      local 类型的变量(对象)使其工作。

      P.S.:vanshika,谢谢你的回答,它很有用;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-28
        • 1970-01-01
        • 2011-12-04
        • 1970-01-01
        • 1970-01-01
        • 2017-05-21
        • 2014-01-10
        • 2014-04-02
        相关资源
        最近更新 更多