これは、プラットフォームに依存しない数学の質問です。重なっている 2 つの正方形があります。「重なりの深さ」(ある形状が別の形状にどのくらい入っているか)を知る必要があります。適切な衝突を可能にするためにこのデータが必要です (プレーヤーをオーバーラップ深度に戻します)。もっと簡単な方法はありますか?それとも、次のことに固執するほうがよいですか。
rA
は長方形なので、ia rB
.
depth.x = (rA.position.x - rB.position.x);
depth.y = (rA.position.y - rB.position.y);
これは、オーバーラップの深さを返す代わりに、 と の間の距離を返すため (予想どおり)、多少間違った情報を返しrA
ますrB
。問題は、2 つのオブジェクトのオーバーラップの深さを見つけるための式を計算できないことです。衝突があることは既にわかっていても、何らかの方法でオブジェクトのサイズを考慮する必要がありますか?
できると提案されましたdepth.x = (rA.width/2) - (rA.position.x - rB.position.x)
。ただし、rB が左側にある場合は機能せず-10(example) - 50
、無効になります ( -60
)。if
私は長文を避け、それらがどれだけ重複しているかを知ることに固執したいと思います. それで、これを解決することは可能ですか?