Mobile 阻止物理体在电晕中运动

Mobile 阻止物理体在电晕中运动,mobile,collision-detection,collision,coronasdk,Mobile,Collision Detection,Collision,Coronasdk,我正在学习Corona SDK,我正在为此做一个小项目 所以,我的问题是下一个: 我设法创建了两个物理对象,并使其中一个在与另一个碰撞时“爆炸”。我的问题是如何使其他物体(施加了线性脉冲)在碰撞时停止?此外,当它停止时,必须将其从屏幕上移除,以避免与其他对象碰撞 以下是在碰撞时删除第一个对象的零件: nloDrop = function() local nlo = display.newImageRect("nlo.png", 65, 25) nlo.x = 35 + mRand(410) ;

我正在学习Corona SDK,我正在为此做一个小项目

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

以下是在碰撞时删除第一个对象的零件:

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
结束


谢谢

可以将对象bodyActive设置为false,这样它就不会对物理做出响应。你不能在活动屏幕中从物理中删除实体,因此最好将该对象排除在屏幕之外。

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

第一个函数包含创建对象(即函数下的本地类型)并将物理应用于该对象。 第二个函数包含deleting(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变量(对象)的类型使其工作

附言:vanshika,谢谢你的回答,很有用;)