2015-05-31 2 views
0

Я создаю игру в SDK Corona, которая включает в себя два типа столкновений с двумя различными типами объектов. В игре всего 3 объекта: ракетный корабль, астероид и желтая сфера. Когда астероид попадает на ракетный корабль, вы теряете одну жизнь. Когда желтая сфера попадает на ракетный корабль, вы получаете очко. По какой-то причине и астероид, и желтая сфера говорят, что они имеют множественные столкновения с ракетным кораблем, когда они только сталкиваются один раз. Я пересматривал код несколько раз, и я не могу понять, в чем проблема. Пожалуйста, помогите, и если вам нужен образец кода, я могу опубликовать его.Столкновения, сообщающие несколько раз в Corona

ответ

0

Столкновения имеют несколько фаз. Вы должны проверить фазы. Столкновения начинаются и заканчиваются. Должна быть event.phase, которая сообщает вам, на каком этапе вы находитесь. Также есть события до столкновения.

0

Вы код должен быть с любым из этих двух фаз,

local crate1 = display.newImage("crate.png") 
physics.addBody(crate1, { density=3.0, friction=0.5, bounce=0.3 }) 
crate1.myName = "first crate" 

local crate2 = display.newImage("crate.png") 
physics.addBody(crate2, { density=3.0, friction=0.5, bounce=0.3 }) 
crate2.myName = "second crate" 

local function onCollision(event) 
    if (event.phase == "began") then 
    print("began: " .. event.object1 .. " & " .. event.object2) 
    elseif (event.phase == "ended") then 
    print("ended: " .. event.object1 .. " & " .. event.object2) 
    end 
end 

crate1.collision = onLocalCollision 
crate1:addEventListener("collision", crate1) 

crate2.collision = onLocalCollision 
crate2:addEventListener("collision", crate2) 

Это поможет вам избежать многочисленных столкновений.

https://docs.coronalabs.com/daily/guide/physics/collisionDetection/index.html

 Смежные вопросы

  • Нет связанных вопросов^_^