1

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

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

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

4

1 に答える 1

2

あなたはおそらくこれをすでに理解しているか、コロナをあきらめているかもしれませんが、ここに答えがあります。2セントを追加します。

ボールオブジェクトに任意のプロパティを追加できます。プロパティを明示的に宣言する必要はありません。プロパティに値を割り当てると、プロパティは自動的に作成されます。たとえば、「radius」プロパティを追加するには、「ball」オブジェクトを作成したら、次のようにします。

ball.radius = 20

これを実行すると、衝突イベントハンドラーをボール自体にアタッチしたと仮定して、ボールは「self」パラメーターとして渡され、self.radiusを使用して半径を取得できます。

local radius = self.radius

イベントハンドラーを他のオブジェクトにアタッチしている場合、ボールは「event」パラメーターの「other」プロパティとして渡されます。したがって、ウェルの例を使用して、イベントハンドラーをウェルにアタッチすると、ボールの半径は次のようになります。

local radius = event.other.radius

もちろん、ウェルに当たる可能性のある他の(ボール以外の)オブジェクトがあり、それらのオブジェクトに「radius」プロパティがない場合は、「event.other」が実際に「最初にボール」オブジェクト。そうしないと、半径を取得しようとしたときに「nil」が表示されます。実際、この動作を使用して、他のオブジェクトが実際にボールであることを検出できます。

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か月しかいないので、...

于 2010-12-28T23:00:01.400 に答える