トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

unity_script_collision

衝突判定


衝突は衝突が行われる形状にColliderを割り当て、「Physics.Raycast」を使うと簡単に判定できます。
衝突自身は、このColliderというもので囲まれた状態で当たり判定します。

シーンに配置できるGameObjectとしてのCubeやSphereはあらかじめColliderが割り当てられています。


また、後から形状に対してInspectorウィンドウの下の「Add Component」からPhysicsのコンポーネントとして追加することができます。

速度的には「Box Collider」「Sphere Collider」が有利かと思います。
精密なMeshで衝突判定したい場合は「Mesh Collider」を使うとよさそうです。

 スクリプトでの衝突判定


RaycastHit hit = new RaycastHit();
Vector3 stPos = new Vector3(20.0f, 50.0f, 10.0f);   // 衝突判定を開始する位置.
Vector3 vDir  = new Vector3(1, 0, 0);               // 調査する方向.
float dist = 50.0f;   // 衝突判定の有効距離.
if (Physics.Raycast(stPos, vDir, out hit, dist)) {

    // 衝突が行われた.
    float hitDist = hit.distance;     // 衝突形状までの距離.
    Vector3 hitPos = hit.point;       // 衝突したワールド座標位置.
    GameObject gameObject = hit.transform.gameObject;   // 衝突したGameObject.
}

「Physics.Raycast」で指定位置から指定のレイ方向にレイキャストすることで衝突を判定します。
結果はRaycastHitに返されます。


最終更新時間:2014年02月27日 10時02分48秒