2010-12-03 4 views
1

나는 간단한 게임을 위해 코로나 물리 엔진을 시험 중이다. 나는 둥근 물체와 정적 센서 물체를 "잘"여러 개의 "볼"을 만들었습니다.코로나 물리 엔진 충돌 이벤트 오브젝트

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

충돌 이벤트에는 "자체"및 "이벤트"매개 변수가 있습니다. 우물에 부딪 치는 "볼"의 반경을 확인하는 간단한 방법이 있습니까?

답변

2

당신은 아마 중 하나를 이미 알아 낸, 또는 지금 코로나 포기하지만, 너무 대답은 내 두 센트를 추가 할 것입니다 여기에있다했습니다

당신은 당신이 원하는 속성을 추가 할 수 있습니다 공 개체입니다. 명시 적으로 속성을 선언 할 필요는 없습니다. 속성을 값을 지정할 때 자동으로 만들어집니다. 당신이 당신의 "공"개체를 만든 후에는 예를 들어, "반경"속성을 추가, 그냥 이렇게 :

ball.radius = 20 

이 작업을 완료 한 후에 당신이에 충돌 이벤트 핸들러를 첨부했습니다 가정, 그 볼 자체는 볼이 "자기"매개 변수로 전달됩니다, 당신은 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 

희망이 있습니다. 나 혼자 코로나에있는 한 달이야 ...