2010-12-03 15 views
1

私は単純なゲームのためにコロナ物理エンジンを試しています。私はいくつかの「ボール」を作成しました。円形のオブジェクトと静的なセンサーオブジェクトを「よく」作成しました。コロナ物理エンジン衝突イベントオブジェクト

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

「衝突」イベントには「自己」および「イベント」パラメータがあります。井戸に当たる「ボール」の半径を確認する簡単な方法はありますか?

答えて

2

あなたはおそらくどちらかすでにこれを考え出した、または今ではコロナをあきらめ、ちょうどその答えは、私は私の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 

希望します。私はコロナに1ヶ月しかいませんので、...