2012-10-25 81 views
2

我有一系列定義爲圓形物體的如下:電暈 - 碰撞檢測

local myBalloon = display.newImageRect("images/cracker.png", 20, 20); 
myBalloon:setReferencePoint(display.CenterReferencePoint); 
myBalloon.x = Random(50, _W-50); 
myBalloon.y = (-10); 
myBalloon.myName="balloon" 
myBalloon.isSleepingAllowed = false;  
physics.addBody(myBalloon, "dynamic", {density=3.0, friction=1.0, bounce=0.0, radius=9}); 

我然後有定義爲這樣一個單一的可動oject:

local threeWay = display.newImageRect("images/3way.png", 80, 43); 
threeWay:setReferencePoint(display.CenterReferencePoint); 
threeWay.x = (display.contentWidth/2); 
threeWay.y = (display.contentHeight -15); 
threeWay.myName = "threeway" 
pentagonShape = { -40,-5, 0,-22, 40,-5, 35,20, -35,20 } 
physics.addBody(threeWay, "static", {density=4.0, friction=1.7, bounce=0.0, shape=pentagonShape}); 

我還碰撞檢測設置對於像這樣的圓形物體:

function myBalloon:collision(e) 
if (timeLeft ~= false) then 
    if (playerReady == true) then 
     if (e.phase == "ended") then 
      if (e.other.myName == "threeway") then 
       audio.play(balloonPop); 
       removeBalloons(self); 
      end 
     end 
    end 
end 
end 

大部分的碰撞工作,但有時候會發生物體會落在可移動的物體上,並在碰撞檢測之前處理掉一點點。

如何爲碰撞提供更爲即時的效果? 對象的屬性是否需要不同,以便碰撞時有更多的「強制」?

回答

1

PUT「isSensor」爲「真」的氣球,這樣一來就會引發不顛簸,滾動你的防撞功能,等等

:)

+0

我說這一點,我仍然得到滾動行爲。 – user1247395

+0

氣球可以忽略其他東西嗎? – speeder

+0

我覺得它是我們的。我正在查看e.phase並在「結束」時執行刪除操作。我改變了這個「開始」,並得到了我需要的行爲。它並沒有最終成爲固定我的「isSensor」,但你最後的評論讓我有點不同的看待碰撞事件。謝謝你。 – user1247395