2013年8月30日金曜日

Unity Tips #26 Frustum AABB 衝突

前回に引き続いて Unify Community から Frustum AABB 衝突に関する Tips の翻訳を紹介する:



http://wiki.unity3d.com/index.php/Tip_of_the_day

Aug 2012

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 件のコメント:

コメントを投稿

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿