Физический двигатель Corona Collision объект события - PullRequest
1 голос
/ 03 декабря 2010

Я пробую физический движок Corona для простой игры. Я создал несколько «шариков», просто круговой объект и «хорошо» статического сенсорного объекта.

physics.addBody(ball,{density=1-dens, friction=0.2, bounce=boun, radius=imp})
physics.addBody( well,"static", { radius=sensorRadius, isSensor = true} )

Событие столкновения имеет параметры "self" и "event". Есть ли простой способ проверить радиус "шара", который попадает в колодец?

1 Ответ

2 голосов
/ 29 декабря 2010

Вы, наверное, либо уже поняли это, либо уже отказались от Corona, но просто здесь есть ответ, я добавлю два моих цента:

Вы можете добавить любое свойство, которое хотите, к вашему объекту шара. Вам не нужно явно объявлять свойства - они создаются автоматически при назначении им значения. Например, чтобы добавить свойство «radius», просто сделайте это, как только вы создали свой объект «ball»:

ball.radius = 20

Как только вы это сделаете, при условии, что вы прикрепили обработчик событий столкновения к самому шару, мяч передается как параметр "self", и вы можете получить радиус с помощью self.radius:

local radius = self.radius

Если вы прикрепили обработчик события к какому-либо другому объекту, шар будет передан как свойство «other» параметра «event». Итак, используя ваш пример колодца, если вы прикрепите обработчик события к колодцу, то вы получите радиус шара с помощью:

local radius = event.other.radius

Конечно, если у вас есть другие (не шариковые) объекты, которые также могут попасть в колодец, и у этих объектов нет свойства «radius», то вам нужно убедиться, что «event.other» на самом деле объект «мяч» в первую очередь. Если вы этого не сделаете, вы получите «ноль», когда вы попытаетесь получить радиус. Фактически, вы можете использовать это поведение, чтобы обнаружить, что другой объект на самом деле является шаром:

local radius = event.other.radius
if radius then
    -- may be safe to assume event.other is a ball
else
    -- something else hit the well
end

Надеюсь, это поможет. Я только месяц в Короне, так что ...

...