DistanceBasedCollision (日本語)
衝突検出を行うための別の方法です。この種類は完全に円弧にて動作します。 別方向にある単体オブジェクトの距離がそれらの合計未満かどうかを確認します (複数の半径)。
変数定義 : ax, ay = circleA の中心座標。 bx, by = circleB の中心座標。 ar, br = それぞれ CircleA および circleB の円弧
function checkCircularCollision(ax, ay, bx, by, ar, br)
local dx = bx - ax
local dy = by - ay
local dist = math.sqrt(dx * dx + dy * dy)
return dist < ar + br
end
余計な平方根関数は不要ですか? この他の関数を試してみてください
function checkCircularCollision(ax, ay, bx, by, ar, br)
local dx = bx - ax
local dy = by - ay
return dx^2 + dy^2 < (ar + br)^2
end
距離にて処理を行われることがわかっている sqrt 関数を保持します。
高負荷の平方根を回避するため、第二番目が高速であると思われるのに対して、第二番目のバージョンにある 3 つの二条ではなく、一つはまだ関数であることに注意してください。それはそうとして、 Löve は LuaJIT を使用しており、本当に最適化を行う必要がある場合は、どちらが高速であるか調査を行ってください。
そのほかの言語
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info