Физический движок Corona Объект события столкновения

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

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

Событие столкновения имеет параметры «self» и «event». Есть ли простой способ проверить радиус «Шара», который попадает в скважину?


person Robert McCabe    schedule 03.12.2010    source источник


Ответы (1)


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

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

ball.radius = 20

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

local radius = self.radius

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

local radius = event.other.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

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

person JeffK    schedule 28.12.2010