簡體   English   中英

Corona SDK-2個無法在設備上運行的對象之間發生物理碰撞

[英]Corona SDK - Physics collision between 2 objects not working on device

我正在嘗試在模擬器上而不是在設備上檢測動態對象與靜態對象的沖突。

在createScene上,我創建對象:

b1 = display.newRect( 50, 80, 140, 140 )
b1:setFillColor( 49/255, 179/255, 173/255 )
b1.anchorX = 0.0
b1.anchorY = 0.0
physics.addBody( b1, "static", { density = 1.0, friction = 0.3, bounce = 0.2 }  )

b1:addEventListener( "collision", onCollision )  


playerBox = display.newRect( display.contentCenterX - 55, display.contentCenterY - 55, 110, 110 )
playerBox:setFillColor( 241/255, 76/255, 0/255 )
playerBox.anchorX = 0.0
playerBox.anchorY = 0.0
playerBox:addEventListener( "touch", onTouch )
physics.addBody( playerBox, "dynamic", { friction=0.3, isSensor=true } )

playerBox:addEventListener( "collision", onCollision )

group:insert( b1 )

group:insert( playerBox )

在聽眾上:

local function onCollision( event )
    if ( event.phase == "began" ) then
      gameOver() 
    elseif ( event.phase == "ended" ) then  
    end
end

函數gameOver()從未在設備上調用。

請幫忙嗎?

您需要先獲得物理學,然后在添加物理學體之前調用physics.start() 而且您的物理物體必須對齊,以便它們實際發生碰撞。 固定代碼在這里:

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

local group = display.newGroup()

local function onTouch()
    print("touched")
end

local function gameOver()
    print("gameover")
end

local function onCollision( event )
    if ( event.phase == "began" ) then
      gameOver() 
    elseif ( event.phase == "ended" ) then  
    end
end

b1 = display.newRect(  display.contentCenterX - 50,display.contentCenterY, 140, 140 )
b1:setFillColor( 49/255, 179/255, 173/255 )
b1.anchorX = 0.0
b1.anchorY = 0.0
physics.addBody( b1, "static", { density = 1.0, friction = 0.3, bounce = 0.2 }  )
b1:addEventListener( "collision", onCollision )  

playerBox = display.newRect( display.contentCenterX - 55, display.contentCenterY - 150, 110, 110 )
playerBox:setFillColor( 241/255, 76/255, 0/255 )
playerBox.anchorX = 0.0
playerBox.anchorY = 0.0
playerBox:addEventListener( "touch", onTouch )
physics.addBody( playerBox, "dynamic", { friction=0.3, isSensor=true } )

playerBox:addEventListener( "collision", onCollision )

group:insert( b1 )

group:insert( playerBox )

我還添加了一些您可能已經擁有的缺失功能,只是為了能夠運行代碼。 請記住, playerBox是一個傳感器,因此不會發生碰撞反應,其他物體只會通過它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM