2013-08-18 38 views
0

嗨我是Corona SDK的新手。我希望有人能幫助我。使用物理引擎獲取object.x和object.y的更新位置

我有一個使用Corona SDK的物理引擎從天而降的對象(稱爲毛茸茸的)。

當這個對象毛茸茸是屏幕的一半我想播放音效(wee.mp3)。

我試圖更新furry.x和furry.y來控制更新的位置。但我不知道如何做到這一點,因爲物理引擎基於重力更新位置。

我希望下面的代碼足以幫助我。

centerX = display.contentWidth * .5 
centerY = display.contentHeight * .5 

local furry = display.newImage("flurry.png") 
furry.x = centerX-300 
furry.y = centerY-1000 
physics.addBody(furry, "dynamic", physicsData:get("flurry")) 


if furry.x == centerX then 
    audio.play(wee) 
end 

那麼遊戲開始後,我的對象毛茸茸的更新位置(x,y)我怎麼能得到?

回答

0

您可以使用運行時監聽enterFrame檢測物體的位置見下文

physics = require("physics") 
physics.start() 

centerX = display.contentWidth * .5 
centerY = display.contentHeight * .5 
local function listener(event) 


local furry = display.newCircle(10,10,10) 
furry.x = math.random(1, display.contentWidth) 
furry.y = 10 
physics.addBody(furry, "dynamic") 

local function removeObject() 

    if furry.y > centerY then 
     furry:removeSelf() 
     Runtime:removeEventListener("enterFrame", removeObject) 
    end 

end 


Runtime:addEventListener("enterFrame", removeObject) 

end 

timer.performWithDelay(500, listener ,0) 
+0

對不起代碼這似乎並沒有工作。我通過將它更改爲<,然後它開始播放聲音效果(因爲對象的起始位置已經<)來檢查if語句。但是當我把它改成==或者>它不起作用。 –

+0

==將很難做出工作,因爲對象必須準確地觸發它並且物理上,它可能在一個小數值,並且從來沒有完全匹配。該>應該只要你把一個標誌工作,只檢查一次.. –

+0

是RobMiracle是正確的,很難得到病情的確切值,如果它會返回您可能需要使用邏輯運算符的分數值。 – DevfaR