- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!衝突判定
衝突は衝突が行われる形状にColliderを割り当て、「Physics.Raycast」を使うと簡単に判定できます。
衝突自身は、このColliderというもので囲まれた状態で当たり判定します。
シーンに配置できるGameObjectとしてのCubeやSphereはあらかじめColliderが割り当てられています。
{{ref_image unity_box_collider.png}}
また、後から形状に対してInspectorウィンドウの下の「Add Component」からPhysicsのコンポーネントとして追加することができます。
{{ref_image unity_collider_type.png}}
速度的には「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に返されます。
----
{{lastmodified}}