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