2013-06-13 2 views
0

저는 코로나 SDK를 배우고 있으며, 그 목적으로 작은 프로젝트를 만들고 있습니다.코로나 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 

감사 : 그리고 여기에 '충돌'기능입니다 !

답변

-1

로컬 변수와 같은 개체를 설정하고 상호 작용 또는 충돌 후 각 변수 (개체)를 삭제/제거하는 함수를 만들었습니다.

첫 번째 함수는 객체 생성 (즉, 함수에서 로컬 형식 임)을 포함하고 해당 객체에 물리학을 적용합니다. 두 번째 함수에는 각 객체가 자체 객체이기 때문에 작동하는 삭제 (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 

로컬 타입 작동한다.

P.S가 : vanshika가, 감사 답변을 위해, 그것은 유용)

1

bodyActive 객체를 false로 설정하면 물리에 응답하지 않습니다. 활성 화면 내에서 물리에서 몸체를 제거 할 수 없으므로 해당 객체를 화면 밖으로 유지하는 것이 더 좋습니다.

관련 문제