Difference between revisions of "BoundingBox.lua (日本語)"

(Created page with "このスクリプトは 境界箱衝突検出にて使用されます。それは二つの矩形オブジェ...")
 
m
Line 1: Line 1:
このスクリプトは [[Bounding Box (日本語)|境界箱]][[Collision Detection (日本語)|衝突検出]]にて使用されます。それは二つの矩形オブジェクトが重なっているか確認をします。 true が返されたときは衝突しており、それ以外は false です。
+
このスクリプトは軸により整列された境界箱の衝突検出で使用されます。それは二つの矩形オブジェクトが重なっているか検査をします。そうなる場合は true を返しますが、それ以外 (そうでなければ) false です。
  
不可視空間は矩形衝突の一部と考えられているため、この形式の衝突検出は大量の円形および非矩形があるゲームには適していません。しかしながら、これはインベーダー・ゲームのクローンといったゲームに対しては問題にはなりません。
+
長方形ではない形状、または回転する長方形、それらの形状を満たしていない空間からのものであり、衝突対象の長方形の一部である場合、または代わりに領域外で存在する部品である場合があるため、この衝突検出方法は大量の円形および非矩形があるゲームには適していません。
 +
 
 +
しかしながら、これはインベーダー・ゲームのクローンといったゲームに対しては良好に動作します。
  
 
<source lang="lua">
 
<source lang="lua">
Line 17: Line 19:
  
 
[[Category:Snippets (日本語)]]
 
[[Category:Snippets (日本語)]]
 +
{{#set:LOVE Version=any}}
 +
{{#set:Description=軸により整列された境界箱に基づく衝突検出関数です。}}

Revision as of 23:14, 14 November 2016

このスクリプトは軸により整列された境界箱の衝突検出で使用されます。それは二つの矩形オブジェクトが重なっているか検査をします。そうなる場合は true を返しますが、それ以外 (そうでなければ) は false です。

長方形ではない形状、または回転する長方形、それらの形状を満たしていない空間からのものであり、衝突対象の長方形の一部である場合、または代わりに領域外で存在する部品である場合があるため、この衝突検出方法は大量の円形および非矩形があるゲームには適していません。

しかしながら、これはインベーダー・ゲームのクローンといったゲームに対しては良好に動作します。

-- 衝突検出関数。
-- true が返されたときは二つの矩形オブジェクトが重なっており、それ以外は false です。
-- x1,y1 は第一箱の左上の座標であり、一方の w1,h1 は幅と高さです。
-- x2,y2,w2 および h2 は同一ですが、第二箱用です。
function CheckCollision(x1,y1,w1,h1, x2,y2,w2,h2)
  return x1 < x2+w2 and
         x2 < x1+w1 and
         y1 < y2+h2 and
         y2 < y1+h1
end