http://wiki.unity3d.com/index.php/Tip_of_the_day
Aug 2012
Tip #26 - Frustum AABB collisions
Frustum および AABB 衝突判定は次のようなコードで実行できます。
AABB衝突判定でGoogle検索するとこういうサイトで解説してくれてるなぁ~
Frustum AABB 衝突
Tip #26 - Frustum AABB collisions
Frustum および AABB 衝突判定は次のようなコードで実行できます。
public object[] GetObjects(Vector3 position, float distance, float fov, Vector3 direction)
{
var results = new List();
// 全てのゲームオブジェクトを検索
var objects = UnityEngine.Object.FindObjectsOfType(typeof(GameObject));
if (this.camera == null)
{
this.cameraGameObject = new GameObject();
this.camera = this.cameraGameObject.AddComponent();
}
this.cameraGameObject.transform.position = position;
this.cameraGameObject.transform.forward = direction;
this.camera.fov = fov;
this.camera.far = distance;
var planes = GeometryUtility.CalculateFrustumPlanes(this.camera);
foreach (GameObject obj in objects)
{
if (obj == this.cameraGameObject)
{
continue;
}
// Collider がなければ無視する
if (obj.collider == null)
{
continue;
}
if (GeometryUtility.TestPlanesAABB(planes, obj.collider.bounds))
{
results.Add(obj);
}
}
return results.ToArray();
}
----------
AABB衝突判定でGoogle検索するとこういうサイトで解説してくれてるなぁ~
結果だけでなく過程も見てください:実践的な衝突判定(AABB編)
http://d.hatena.ne.jp/taiyakisun/20120205/1328410006
ん~、Unityの通常の判定で不十分なケースで使えるかな??もうちっと考えてみることにするかぁ~(おい)

0 件のコメント:
コメントを投稿