(57)【特許請求の範囲】
【請求項１】
表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定プログラムであって、コンピュータに、
記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新ステップ、
前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定ステップ、
前記第２オブジェクトに対して衝突判定領域を設定する第２設定ステップ、および
前記第１設定ステップで設定された前記第１オブジェクトの衝突判定領域と前記第２設定ステップで設定された前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定ステップを実行させるための衝突判定プログラム。
【請求項２】
前記第１オブジェクトの動きを所定のアルゴリズムによって自動的に制御する第１オブジェクト制御ステップを前記コンピュータにさらに実行させ、
前記第１設定ステップでは、前記第１オブジェクト制御ステップで制御された第１オブジェクトの動きに応じて前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する、請求項１に記載の衝突判定プログラム。
【請求項３】
前記第１設定ステップでは、前記第１オブジェクトに対して、当該第１オブジェクトの現在位置または当該第１オブジェクトと他のオブジェクトとの位置関係に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する、請求項１に記載の衝突判定プログラム。
【請求項４】
前記第１設定ステップは、前記記憶手段から前記第１オブジェクトに対する所定の相対位置に設定された前記第１オブジェクトの基本衝突判定領域を読み出すステップと、当該読み出した前記第１オブジェクトに対する基本衝突判定領域の相対位置を当該第１オブジェクトの周辺の状態に応じて変更するステップとを含むことを特徴とする、請求項１に記載の衝突判定プログラム。
【請求項５】
前記第１設定ステップでは、想定される当該第１オブジェクトの周辺の状態毎に前記第１オブジェクトに対する前記衝突判定領域の相対位置を規定した衝突判定領域テーブルを参照することによって、前記第１オブジェクトの衝突判定領域を設定する、請求項１に記載の衝突判定プログラム。
【請求項６】
表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定装置であって、
前記表示手段、
少なくとも前記第１オブジェクトおよび前記第２オブジェクトの位置情報を記憶する記憶手段、
前記記憶手段に記憶されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新手段、
前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定手段、
前記第２オブジェクトに対して衝突判定領域を設定する第２設定手段、および
前記第１オブジェクトの衝突判定領域と前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定手段を備えた衝突判定装置。
【請求項７】
表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定システムであって、
前記表示手段、
少なくとも前記第１オブジェクトおよび前記第２オブジェクトの位置情報を記憶する記憶手段、
前記記憶手段に記憶されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新手段、
前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定手段、
前記第２オブジェクトに対して衝突判定領域を設定する第２設定手段、および
前記第１オブジェクトの衝突判定領域と前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定手段を備えた衝突判定システム。
【請求項８】
コンピュータにより実行される、表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定方法であって、
前記コンピュータが、記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新ステップ、
前記コンピュータが、前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定ステップ、
前記コンピュータが、前記第２オブジェクトに対して衝突判定領域を設定する第２設定ステップ、および
前記コンピュータが、前記第１設定ステップで設定された前記第１オブジェクトの衝突判定領域と前記第２設定ステップで設定された前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定ステップを備える衝突判定方法。
【請求項９】
表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定プログラムであって、コンピュータに、
記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新ステップ、
前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定ステップ、
前記第２オブジェクトに対して衝突判定領域を設定する第２設定ステップ、および
前記第１設定ステップで設定された前記第１オブジェクトの衝突判定領域と前記第２設定ステップで設定された前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定ステップを実行させ、
前記第１設定ステップでは、前記第１オブジェクトに対して、形状は一定であり、かつ、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて前記第１オブジェクトに対する相対位置が変化する衝突判定領域を設定する、衝突判定プログラム。
【請求項１０】
表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定装置であって、
前記表示手段、
少なくとも前記第１オブジェクトおよび前記第２オブジェクトの位置情報を記憶する記憶手段、
前記記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新手段、
前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定手段、
前記第２オブジェクトに対して衝突判定領域を設定する第２設定手段、および
前記第１オブジェクトの衝突判定領域と前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定手段を備え、
前記第１設定手段は、前記第１オブジェクトに対して、形状は一定であり、かつ、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて前記第１オブジェクトに対する相対位置が変化する衝突判定領域を設定する、衝突判定装置。
【請求項１１】
表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定システムであって、
前記表示手段、
少なくとも前記第１オブジェクトおよび前記第２オブジェクトの位置情報を記憶する記憶手段、
前記記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新手段、
前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定手段、
前記第２オブジェクトに対して衝突判定領域を設定する第２設定手段、および
前記第１オブジェクトの衝突判定領域と前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定手段を備え、
前記第１設定手段は、前記第１オブジェクトに対して、形状は一定であり、かつ、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて前記第１オブジェクトに対する相対位置が変化する衝突判定領域を設定する、衝突判定システム。
【請求項１２】
コンピュータにより実行される、表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定方法であって、
前記コンピュータが、記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新ステップ、
前記コンピュータが、前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定ステップ、
前記コンピュータが、前記第２オブジェクトに対して衝突判定領域を設定する第２設定ステップ、および
前記コンピュータが、前記第１設定ステップで設定された前記第１オブジェクトの衝突判定領域と前記第２設定ステップで設定された前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定ステップを備え、
前記第１設定ステップでは、前記コンピュータが、前記第１オブジェクトに対して、形状は一定であり、かつ、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて前記第１オブジェクトに対する相対位置が変化する衝突判定領域を設定する、衝突判定方法。
【請求項１３】
表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定プログラムであって、コンピュータに、
記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新ステップ、
前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定ステップ、
前記第２オブジェクトに対して衝突判定領域を設定する第２設定ステップ、および
前記第１設定ステップで設定された前記第１オブジェクトの衝突判定領域と前記第２設定ステップで設定された前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定ステップを実行させ、
前記第１設定ステップでは、前記第１オブジェクトに対して、当該第１オブジェクトと別のオブジェクトである第３オブジェクトとが結合しているときと結合していないときとで前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する、衝突判定プログラム。
【請求項１４】
表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定装置であって、
前記表示手段、
少なくとも前記第１オブジェクトおよび前記第２オブジェクトの位置情報を記憶する記憶手段、
前記記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新手段、
前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定手段、
前記第２オブジェクトに対して衝突判定領域を設定する第２設定手段、および
前記第１オブジェクトの衝突判定領域と前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定手段を備え、
前記第１設定手段は、前記第１オブジェクトに対して、当該第１オブジェクトと別のオブジェクトである第３オブジェクトとが結合しているときと結合していないときとで前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する、衝突判定装置。
【請求項１５】
表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定システムであって、
前記表示手段、
少なくとも前記第１オブジェクトおよび前記第２オブジェクトの位置情報を記憶する記憶手段、
前記記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新手段、
前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定手段、
前記第２オブジェクトに対して衝突判定領域を設定する第２設定手段、および
前記第１オブジェクトの衝突判定領域と前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定手段を備え、
前記第１設定手段は、前記第１オブジェクトに対して、当該第１オブジェクトと別のオブジェクトである第３オブジェクトとが結合しているときと結合していないときとで前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する、衝突判定システム。
【請求項１６】
コンピュータにより実行される、表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定方法であって、
前記コンピュータが、記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する更新ステップ、
前記コンピュータが、前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて、前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する第１設定ステップ、
前記コンピュータが、前記第２オブジェクトに対して衝突判定領域を設定する第２設定ステップ、および
前記コンピュータが、前記第１設定ステップで設定された前記第１オブジェクトの衝突判定領域と前記第２設定ステップで設定された前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する衝突判定ステップを備え、
前記第１設定ステップでは、前記コンピュータが、前記第１オブジェクトに対して、当該第１オブジェクトと別のオブジェクトである第３オブジェクトとが結合しているときと結合していないときとで前記第１オブジェクトに対する相対位置の異なる衝突判定領域を設定する、衝突判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２次元画像として表示される仮想空間のオブジェクト同士の衝突を判定する技術に関する。
【背景技術】
【０００２】
仮想３次元空間の３次元のオブジェクト群を球体等の立体形状で近似し、当該近似した立体形状（球体等）同士が重複しているか否かでオブジェクト同士の衝突を判定する技術がある。この技術によると、オブジェクトを正確に反映した形状を使用して衝突判定を行う場合に比べて、衝突判定に必要な計算量を軽減することができる。
【０００３】
特許文献１には、オブジェクトを楕円面体で近似したものが示されている。特許文献２には、オブジェクトの形状を球体で近似してラフなチェックを行った後、干渉の可能性があるものについては、さらに少なくとも１つの基本的な立体形状で近似して精密なチェックを行う技術が示されている。特許文献３には、オブジェクトの形状を多数の球体で近似したものが示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１６５６４８号公報
【特許文献２】特開平７−１５２８０７号公報
【特許文献３】特開平７−２３０５５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術の場合、単なる球体で近似する場合に比べると精度良く衝突判定できる場合があるものの、状況によっては衝突判定を適切に行えない場合も少なくないと考えられる。特許文献２の技術の場合、ラフなチェックに加えて精密なチェックを行う必要があるので、計算量が増加するという問題がある。特許文献３の技術の場合も、１つのオブジェクトにつき多数の球体について衝突判定を行う必要があるので、計算量が増加するという問題がある。
【０００６】
それ故に、本発明の主たる目的は、衝突判定に要する計算量の増加を抑えながら、状況に応じた適切な衝突判定を可能とすることである。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号、図番号および文言は、本発明の理解を助けるために図面との対応関係の一例を示したものであって、本発明の範囲を何ら限定するものではない。
【０００８】
本発明の第１の局面は、表示手段（１２）に表示される仮想空間における第１オブジェクト（犬Ａ）と第２オブジェクト（犬Ｂ）の衝突を判定するための衝突判定プログラムである。この衝突判定プログラム（４１）は、コンピュータ（２１）に、更新ステップ（Ｓ１２）、第１設定ステップ（Ｓ１６）、第２設定ステップ（Ｓ１６）、および衝突判定ステップ（Ｓ２２）を実行させるためのプログラムである。更新ステップは、記憶手段（２４）に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報（５１）を更新するステップである。第１設定ステップは、前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態（図７の状態Ａ〜状態Ｆ）に応じて大きさ及び／又は位置の異なる衝突判定領域（図８Ａ〜図８Ｆ）を設定するステップである。第２設定ステップは、前記第２オブジェクトに対して衝突判定領域を設定するステップである。衝突判定ステップは、前記第１設定ステップで設定された前記第１オブジェクトの衝突判定領域と前記第２設定ステップで設定された前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定するステップである。なお、仮想空間は２次元であっても３次元であっても良い。また、第１オブジェクトや衝突判定領域についても２次元であっても３次元であってもよい。また、衝突判定領域としては、例えば球体、直方体、円柱、楕円体などの形状のものを利用することができる。また、第１オブジェクトに設定される衝突判定領域は１つであってもよいし複数であってもよい。また、第１オブジェクトの衝突判定領域の「位置」とは、第１オブジェクトに対する相対的な位置を指すものとする。また、第２オブジェクトの衝突判定領域としては、第２オブジェクトとは異なる形状の領域を第２オブジェクトの衝突判定領域として設定してもよいし、第２オブジェクトの形状そのものを第２オブジェクトの衝突判定領域として流用してもよい。
【０００９】
本発明の第２の局面は、上記第１の局面において、前記第１設定ステップで前記第１オブジェクトに対して設定される衝突判定領域が、当該第１オブジェクトの形状よりも簡素な形状であることを特徴とする。
【００１０】
本発明の第３の局面は、上記第１の局面において、前記第１設定ステップで前記第１オブジェクトに対して設定される衝突判定領域が、１つの球体のみで構成されることを特徴とする。
【００１１】
本発明の第４の局面は、上記第１の局面において、前記第１設定ステップでは、前記第１オブジェクト（犬Ａ）に対して、当該第１オブジェクトと別のオブジェクトである第３オブジェクト（フリスビー）とが結合しているとき（図７の状態Ｅ、図８Ｅ）と結合していないとき（図８Ａ）とで大きさ及び／又は位置の異なる衝突判定領域が設定されることを特徴とする。なお、第１オブジェクトと第３オブジェクトが「結合する」とは、第１オブジェクトと第３オブジェクトが互いに接触または交わった状態で一体となって存在する状態を指すものとする。
【００１２】
本発明の第５の局面は、上記第４の局面において、前記第１設定ステップでは、前記第１オブジェクトに対して、当該第１オブジェクトと別のオブジェクトである第３オブジェクトとが結合しているときに、当該第３オブジェクトの少なくとも一部を含むような衝突判定領域が設定されることを特徴とする（図８Ｅ）。
【００１３】
本発明の第６の局面は、前記第１の局面において、前記第１設定ステップでは、前記第１オブジェクトに対して、当該第１オブジェクトが他のオブジェクトとの接触を許容されている状態のとき（図７の状態Ｄ、図８Ｄ）には、接触を許容されていない状態のとき（図８Ａ）と比べて小さい衝突判定領域が設定されることを特徴とする。なお、「他のオブジェクトとの接触を許容されている状態」とは、他のオブジェクトに対して通常よりも大きく接近することが許されている状態を指し、例えば、第１オブジェクトが犬である場合には、この犬が他の犬とじゃれ合おうとしている状態を指す。
【００１４】
本発明の第７の局面は、前記第１の局面において、前記第１設定ステップでは、前記第１オブジェクトに対して、当該第１オブジェクトの現在位置または当該第１オブジェクトと他のオブジェクトとの位置関係に応じて、大きさ及び／又は位置の異なる衝突判定領域が設定されることを特徴とする。
【００１５】
本発明の第８の局面は、前記第１の局面において、前記第１設定ステップは、前記記憶手段から所定の大きさおよび位置に設定された前記第１オブジェクトの基本衝突判定領域を読み出す読み出しステップと、当該読み出した基本衝突判定領域の大きさ及び／又は位置を当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態に応じて変更する変更ステップとを含むことを特徴とする。なお、変更ステップは、想定される前記第１オブジェクトの状態または当該第１オブジェクトの周辺の状態毎に前記衝突判定領域の大きさおよび位置の変化量（基本衝突判定領域からの変化量）を規定したテーブルを参照して基本衝突判定領域の大きさ及び／又は位置を変更するものであってもよい。また、上記テーブルにおける「基本衝突判定領域からの変化量」は、数値そのもので規定されていてもよいし、変化量を求めるための関数で規定されていてもよい。
【００１６】
本発明の第９の局面は、前記１の局面において、前記第１設定ステップでは、想定される前記第１オブジェクトの状態または当該第１オブジェクトの周辺の状態毎に前記衝突判定領域の大きさおよび位置を規定した衝突判定領域テーブル（４４、図７）を参照することによって、前記第１オブジェクトの衝突判定領域が設定されることを特徴とする。なお、衝突判定テーブルにおける「衝突判定領域の大きさおよび位置」は、大きさおよび位置を表す値そのもので規定されていてもよいし、大きさおよび位置を求めるための関数で規定されていてもよい。
【００１７】
本発明の第１０の局面は、前記第１の局面において、前記衝突判定プログラムは、前記コンピュータに、さらに移動ステップ（Ｓ３０）および出力ステップ（Ｓ３４）を実行させることを特徴とする。移動ステップは、前記衝突判定ステップで前記第１オブジェクトと前記第２オブジェクトの衝突が検出されたときに、前記記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報（５１）をさらに更新することによって、前記第１オブジェクトの衝突判定領域と前記第２オブジェクトの衝突判定領域とが重複しないような位置に当該第１オブジェクトおよび当該第２オブジェクトの少なくとも１つを移動させるステップである。出力ステップは、前記記憶手段に格納されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報（５１）を参照して前記第１オブジェクトおよび前記第２オブジェクトを含む画像を生成して前記表示手段に出力するステップである。
【００１８】
本発明の第１１の局面は、表示手段に表示される仮想空間における第１オブジェクトと第２オブジェクトの衝突を判定するための衝突判定装置である。この衝突判定装置（１０）は、前記表示手段（１２）、記憶手段（２４）、更新手段（２１、Ｓ１２）、第１設定手段（２１、Ｓ１６）、第２設定手段（２１、Ｓ１６）、および衝突判定手段（２１、Ｓ２２）を備える。記憶手段は、少なくとも前記第１オブジェクトおよび前記第２オブジェクトの位置情報（５１）を記憶する手段である。更新手段は、前記記憶手段に記憶されている前記第１オブジェクトまたは前記第２オブジェクトの位置情報を更新する手段である。第１設定手段は、前記第１オブジェクトに対して、当該第１オブジェクトの形状とは異なる形状の衝突判定領域であって、当該第１オブジェクトの状態または当該第１オブジェクトの周辺の状態（図７の状態Ａ〜状態Ｆ）に応じて大きさ及び／又は位置の異なる衝突判定領域（図８Ａ〜図８Ｆ）を設定する手段である。第２設定手段は、前記第２オブジェクトに対して衝突判定領域を設定する手段である。衝突判定手段は、前記第１オブジェクトの衝突判定領域と前記第２オブジェクトの衝突判定領域とが重複しているか否かを判定することによって当該第１オブジェクトと当該第２オブジェクトの衝突を判定する手段である。
【発明の効果】
【００１９】
上記第１の局面によれば、第１オブジェクトの衝突判定領域の大きさと位置の少なくとも一方が、当該第１オブジェクト又は周囲の状態に応じて変化するので、第１オブジェクト又は周囲の状態に応じて適切な衝突判定を行い得る。
【００２０】
上記第２の局面によれば、第１オブジェクトの形状よりも単純な形状を用いて衝突判定を行うので、衝突判定に要する計算量を削減することができる。
【００２１】
上記第３の局面によれば、衝突判定に要する計算量を大きく削減することができる。
【００２２】
上記第４の局面によれば、第１オブジェクトと第３オブジェクトが結合しているか否かに応じて、第１オブジェクトの衝突判定領域を適切に設定することができる。
【００２３】
上記第５の局面によれば、第１オブジェクトと第３オブジェクトが結合しているときに、第３オブジェクトの一部または全部を含むように第１オブジェクトの衝突判定領域が設定されるので、この衝突判定領域を利用して他のオブジェクトとの衝突判定を行うことによって、第３オブジェクトと他のオブジェクトとの間の衝突判定を省略できる。したがって、第１オブジェクトと他のオブジェクトとの間の衝突判定と、第３オブジェクトと他のオブジェクトとの間の衝突判定とを個別に行う必要がなくなり、衝突判定に要する計算量を削減することができる。
【００２４】
上記第６の局面によれば、例えば第１オブジェクトと他のオブジェクトとの接触が許容されているにもかかわらず、両オブジェクトが離れた状態でしか表示されないというような不都合を回避できる。
【００２５】
上記第７の局面によれば、例えば第１オブジェクトが障害物に挟まれた細い通路に近づいたときなどに、第１オブジェクトの衝突判定領域を適切に設定することができる。
【００２６】
上記第８の局面によれば、基本となる衝突判定領域の大きさや位置を適宜に変更することで、上記第１の局面と同様の効果を得ることができる。
【００２７】
上記第９の局面によれば、衝突判定領域テーブルを参照することによって衝突判定領域を適切に設定することができる。
【００２８】
上記第１０の局面によれば、衝突判定の結果に基づいてオブジェクト同士が干渉しないようにそれらの位置を制御しつつ、各オブジェクトを画面に表示することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施形態に係るゲーム装置の外観図
【図２】本発明の一実施形態に係るゲーム装置の内部構成を示すブロック図
【図３】ＲＡＭのメモリマップ
【図４】仮想３次元空間における仮想カメラとオブジェクトの配置の一例
【図５】第２のＬＣＤに表示されるゲーム画面の一例
【図６】オブジェクト情報の一例
【図７】衝突判定領域テーブルの一例
【図８Ａ】四つんばいの状態における衝突判定領域の設定例
【図８Ｂ】立ち上がっている状態における衝突判定領域の設定例
【図８Ｃ】座っている状態における衝突判定領域の設定例
【図８Ｄ】他の犬とじゃれ合おうとしている状態における衝突判定領域の設定例
【図８Ｅ】フリスビーをくわえている状態における衝突判定領域の設定例
【図８Ｆ】狭い通路を通ろうとしている状態における衝突判定領域の設定例
【図９】ゲーム装置の動作を示すフローチャート
【図１０】衝突判定領域設定処理の詳細を示すフローチャート
【図１１】衝突判定方法および移動ベクトルの計算方法を示す図
【図１２】合成移動ベクトルの計算方法を示す図
【発明を実施するための形態】
【００３０】
以下、本発明の一実施形態に係るゲーム装置の構成および動作を説明する。
【００３１】
図１は、本発明の一実施形態に係るゲーム装置の外観図である。図１において、ゲーム装置１０は、第１のＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１１および第２のＬＣＤ１２を含む。ハウジング１３は上側ハウジング１３ａと下側ハウジング１３ｂとによって構成されており、第１のＬＣＤ１１は上側ハウジング１３ａに収納され、第２のＬＣＤ１２は下側ハウジング１３ｂに収納される。第１のＬＣＤ１１および第２のＬＣＤ１２の解像度はいずれも２５６ｄｏｔ×１９２ｄｏｔである。なお、本実施形態では表示装置としてＬＣＤを用いているが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置など、他の任意の表示装置を利用することができる。また任意の解像度のものを利用することができる。
【００３２】
上側ハウジング１３ａには、後述する１対のスピーカ（図２の３０ａ、３０ｂ）からの音を外部に放出するための音抜き孔１８ａ、１８ｂが形成されている。
【００３３】
下側ハウジング１３ｂには、入力装置として、十字スイッチ１４ａ、スタートスイッチ１４ｂ、セレクトスイッチ１４ｃ、Ａボタン１４ｄ、Ｂボタン１４ｅ、Ｘボタン１４ｆ、Ｙボタン１４ｇ、Ｌボタン１４ＬおよびＲボタン１４Ｒが設けられている。また、さらなる入力装置として、第２のＬＣＤ１２の画面上にタッチパネル１５が装着されている。また、下側ハウジング１３ｂには、電源スイッチ１９や、メモリカード１７やスティック１６を収納するための挿入口も設けられている。
【００３４】
タッチパネル１５としては、例えば抵抗膜方式や光学式（赤外線方式）や静電容量結合式など、任意の方式のものを利用することができる。タッチパネル１５は、その表面をスティック１６で触れると、その接触位置に対応する座標データを出力する機能を有している。なお、以下ではプレイヤがタッチパネル１５をスティック１６で操作するものとして説明を行うが、スティック１６の代わりにペン（スタイラスペン）や指でタッチパネル１５を操作することももちろん可能である。本実施形態では、タッチパネル１５として、第２のＬＣＤ１２の解像度と同じく２５６ｄｏｔ×１９２ｄｏｔの解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル１５の解像度と第２のＬＣＤ１２の解像度が一致している必要はない。
【００３５】
メモリカード１７はゲームプログラムを記録した記録媒体であり、下部ハウジング１３ｂに設けられた挿入口に着脱自在に装着される。
【００３６】
次に、図２を参照してゲーム装置１０の内部構成を説明する。
【００３７】
図２において、ハウジング１３に収納される電子回路基板２０には、ＣＰＵコア２１が実装される。ＣＰＵコア２１には、バス２２を介して、コネクタ２３が接続されるとともに、入出力インターフェース回路（図面ではＩ／Ｆ回路と記す）２５、第１ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２６、第２ＧＰＵ２７、ＲＡＭ２４およびＬＣＤコントローラ３１が接続される。コネクタ２３には、メモリカード１７が着脱自在に接続される。メモリカード１７は、ゲームプログラムを記憶するＲＯＭ１７ａと、バックアップデータを書き換え可能に記憶するＲＡＭ１７ｂを搭載する。メモリカード１７のＲＯＭ１７ａに記憶されたゲームプログラムはＲＡＭ２４にロードされ、ＲＡＭ２４にロードされたゲームプログラムがＣＰＵコア２１によって実行される。ＲＡＭ２４には、ゲームプログラムの他にも、ＣＰＵコア２１がゲームプログラムを実行して得られる一時的なデータや、ゲーム画像を生成するためのデータが記憶される。Ｉ／Ｆ回路２５には、タッチパネル１５、右スピーカ３０ａ、左スピーカ３０ｂおよび図１の十字スイッチ１４ａやＡボタン１４ｄ等から成る操作スイッチ部１４が接続される。右スピーカ３０ａと左スピーカ３０ｂは、音抜き孔１８ａ、１８ｂの内側にそれぞれ配置される。
【００３８】
第１ＧＰＵ２６には、第１ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）２８が接続され、第２ＧＰＵ２７には、第２ＶＲＡＭ２９が接続される。第１ＧＰＵ２６は、ＣＰＵコア２１からの指示に応じて、ＲＡＭ２４に記憶されているゲーム画像を生成するためのデータに基づいて第１のゲーム画像を生成し、第１ＶＲＡＭ２８に描画する。第２ＧＰＵ２７は、同様にＣＰＵコア２１からの指示に応じて第２のゲーム画像を生成し、第２ＶＲＡＭ２９に描画する。第１ＶＲＡＭ２８および第２ＶＲＡＭ２９はＬＣＤコントローラ３１に接続されている。
【００３９】
ＬＣＤコントローラ３１はレジスタ３２を含む。レジスタ３２はＣＰＵコア２１からの指示に応じて０または１の値を記憶する。ＬＣＤコントローラ３１は、レジスタ３２の値が０の場合は、第１ＶＲＡＭ２８に描画された第１のゲーム画像を第１のＬＣＤ１１に出力し、第２ＶＲＡＭ２９に描画された第２のゲーム画像を第２のＬＣＤ１２に出力する。また、レジスタ３２の値が１の場合は、第１ＶＲＡＭ２８に描画された第１のゲーム画像を第２のＬＣＤ１２に出力し、第２ＶＲＡＭ２９に描画された第２のゲーム画像を第１のＬＣＤ１１に出力する。
【００４０】
なお、上記のようなゲーム装置１０の構成は単なる一例に過ぎず、本発明は、表示装置を有する任意の情報処理装置に適用することができる。また、本発明のゲームプログラムは、メモリカード１７などの外部記憶媒体を通じて情報処理装置に供給されるだけでなく、有線または無線の通信回線を通じて情報処理装置に供給されてもよいし、さらには情報処理装置内部の不揮発性記憶装置に予め記録されていてもよい。
【００４１】
図３に、ＲＡＭ２４のメモリマップを示す。ＲＡＭ２４の記憶領域は、大きく分けると、プログラム記憶領域とデータ記憶領域から成る。
【００４２】
プログラム記憶領域には、メモリカード１７のＲＯＭ１７ａからゲームプログラム４１がロードされる。このゲームプログラムには、例えば、仮想３次元空間内のオブジェクトを所定のアルゴリズムにしたがって自動制御するプログラムコードや、後述する衝突判定領域を用いた衝突判定処理を所定の衝突判定式を用いて行うプログラムコードなどが含まれている。
【００４３】
データ記憶領域には、カメラ設定情報４２、オブジェクト情報４３、および衝突判定領域テーブル４４が格納される。
【００４４】
カメラ設定情報４２は、仮想３次元空間に配置される仮想カメラに関する種々の設定値から成る情報であって、例えば、仮想カメラの配置座標、傾き（回転角度）、向き（視線方向）、視野角などである。図４に、仮想３次元空間における仮想カメラの配置例を示す。第２のＬＣＤ１２には、仮想３次元空間に配置されたオブジェクト（図４の例では犬Ａ、犬Ｂおよび地面）を仮想カメラから見たシーンがゲーム画像として表示される。図５は、図４の仮想カメラに基づいて第２のＬＣＤ１２に表示されたゲーム画像を示している。仮想カメラに基づいて仮想３次元空間の画像を生成する方法は周知技術であるため、ここではその詳細な説明は省略するが、簡単に説明すると、ワールド座標系で表されている各オブジェクトの頂点座標（より正確にはオブジェクトを構成するポリゴンの頂点座標）を仮想カメラを基準としたカメラ座標系に変換し、さらに透視投影変換を行うことによってそれらの頂点座標がスクリーン座標系に変換される。
【００４５】
オブジェクト情報４３は、仮想３次元空間に配置されるオブジェクトに関する種々の情報である。このオブジェクト情報４３の詳細を図６に示す。本実施形態では、仮想３次元空間に配置され得るオブジェクトとして、犬Ａ、犬Ｂ、犬Ｃ、フリスビー、壁Ａ、および壁Ｂが用意されているものとする。本実施形態では、仮想３次元空間に配置された犬は、所定の自動制御アルゴリズムに従って、まるで自分の意志で動いているかのように仮想３次元空間内を自律的に移動するものとする。
【００４６】
犬Ａのオブジェクト情報４３としては、図６に示すように、形状データ、テクスチャデータ、配置座標５１、状態データ５２、および衝突判定領域データ５３から成る。
【００４７】
形状データは、オブジェクトの形状に関するデータであって、例えばオブジェクトを構成するポリゴンの頂点座標などである。テクスチャデータは、オブジェクトを構成するポリゴンに貼り付けられる画像データである。
【００４８】
配置座標５１は、仮想３次元空間における犬Ａの配置座標であって、前述の自動制御アルゴリズムに基づいて随時更新される。
【００４９】
状態データ５２は、犬Ａの状態または犬Ａの周囲の状態を示すデータである。本実施形態では、犬Ａまたはその周囲の状態は、図７に示すように６つの状態（状態Ａ〜Ｆ）に区分される。この状態データ５２についても、配置座標５１と同様に、前述の自動制御アルゴリズムに基づいて随時更新される。
【００５０】
衝突判定領域データ５３は、犬Ａと他のオブジェクトとの接触を判定するために犬Ａに設定される衝突判定領域の位置および大きさを表すデータである。本実施形態では、犬Ａ〜犬Ｃについては、球体の衝突判定領域を用いて衝突判定処理が行われるものとする。そのため、衝突判定領域データ５３としては、少なくとも、犬Ａの衝突判定領域として用いられる球体の中心座標と半径が記憶されていればよい。
【００５１】
犬Ｂおよび犬Ｃについても、オブジェクト情報４３として犬Ａと同様の情報が記憶される。
【００５２】
フリスビーのオブジェクト情報４３としては、形状データ、テクスチャデータ、配置座標、および衝突判定領域データが記憶されている。形状データ、テクスチャデータおよび配置座標については犬のものと同様である。フリスビーの衝突判定領域としては任意の形状のものを利用することができるが、ここでは一例として円盤状の衝突判定領域を用いるものとする。フリスビーの衝突判定領域データとしては、この円盤状の衝突判定領域の位置および形状を示すデータが記憶される。なお、フリスビーの形状データ自体を衝突判定領域データとして流用することもできる。
【００５３】
壁Ａおよび壁Ｂのオブジェクト情報４３についても、フリスビーと同様の情報が記憶される。
【００５４】
図３に示す衝突判定領域テーブル４４は、各犬に対して設定すべき衝突判定領域を決定するために参照されるテーブルである。この衝突判定領域テーブル４４の詳細を図７に示す。
【００５５】
衝突判定領域テーブル４４では、図７に示すように、状態Ａ〜Ｆ毎に、衝突判定領域の中心位置・半径がそれぞれ規定されている。
【００５６】
例えば、状態Ａ（四つんばいの状態）に対しては、衝突判定領域として、図８Ａに示すように中心が犬の胸部に位置し、半径が３０である球体が対応付けられている。
【００５７】
また、状態Ｂ（立ち上がっている状態）に対しては、衝突判定領域として、図８Ｂに示すように中心が犬の腰部に位置し、半径が１０である球体が対応付けられている。このように、犬が立ち上がっている状態のときには四つんばいの状態のときよりも衝突判定領域の大きさを小さくし、さらにその位置を足下に近づけることで、立ち上がっている犬に対して他の犬が適切な距離まで接近することができ、犬の動きに違和感が無くなる。
【００５８】
また、状態Ｃ（座っている状態）に対しては、衝突判定領域として、図８Ｃに示すように中心が犬の胸部に位置し、半径が２０である球体が対応付けられている。このように、犬が座っている状態のときには四つんばいの状態のときよりも衝突判定領域の大きさを小さくすることで、座っている犬に対して他の犬が適切な距離まで接近することができ、犬の動きに違和感が無くなる。
【００５９】
また、状態Ｄ（他の犬とじゃれ合おうとしている状態）に対しては、衝突判定領域として、図８Ｄに示すように中心が犬の胸部に位置し、半径が１０である球体が対応付けられている。このように、犬が互いにじゃれ合おうとしている（すなわち通常よりも大きく接近しようとしている）状態のときには四つんばいの状態のときよりも衝突判定領域の大きさを小さくすることで、プレイヤから見て２匹の犬がじゃれ合っているように見える距離まで他の犬に接近することができ、犬の動きに違和感が無くなる。
【００６０】
また、状態Ｅ（フリスビーをくわえている状態）に対しては、衝突判定領域として、図８Ｅに示すように中心が犬の頭部に位置し、半径が４０である球体が対応付けられている。これにより、例えば、フリスビーと犬Ｂの衝突判定と、犬Ａと犬Ｂの衝突判定という２つの衝突判定を、犬Ａと犬Ｂの衝突判定だけで代用することができるため、衝突判定に要する計算量を削減することができる。
【００６１】
また、状態Ｆ（狭い通路に近づいている状態）に対しては、衝突判定領域として、図８Ｆに示すように中心が犬の胸部に位置し、半径が１０である球体が対応付けられている。これにより、見掛けでは通路を通り抜けられそうに見えるにも関わらず、犬が通路の手前でつっかえて立ち止まってしまう、という不自然な状況の発生を防止することができる。
【００６２】
以下、図９〜図１０のフローチャートを参照して、ゲームプログラム４１に基づくＣＰＵコア２１の処理の流れを説明する。
【００６３】
図９において、ゲームプログラム４１の実行が開始されると、ＣＰＵコア２１はステップＳ１０で、仮想３次元空間において仮想カメラとオブジェクトを初期位置に配置する。
【００６４】
ステップＳ１２では、所定の自動制御アルゴリズムに従って各犬の動き（行動パターン）が決定され、決定された動きに従って各犬の位置（配置座標５１）や姿勢が適宜更新されることになる。
【００６５】
ステップＳ１４では、その時点における犬の姿勢（四つんばい、立ち上がっている、座っている、フリスビーを加えている）や、自動制御アルゴリズムで決定された犬の行動パターン（他の犬とじゃれ合おうとしている、狭い通路を通ろうとしている）に従って各犬の状態を判定し、この判定結果に応じてＲＡＭ２４の状態データ５２を更新する。
【００６６】
ステップＳ１６では、ステップＳ１４で判定された各犬の状態に基づいて衝突判定領域設定処理を行う。以下、図１０のフローチャートを参照して、この衝突判定領域設定処理の詳細を説明する。
【００６７】
図１０において、衝突判定領域設定処理が開始されると、ＣＰＵコア２１はステップＳ４０で、衝突判定領域を設定すべき対象となる犬を選択する。ここでは、犬Ａが処理対象として選択されたものとして説明を進める。
【００６８】
ステップＳ４２では、処理対象である犬Ａの状態データ５２をＲＡＭ２４から読み出す。
【００６９】
ステップＳ４４では、ＲＡＭ２４に記憶されている図７の衝突判定領域テーブルを参照して、ステップＳ４２で読み出した状態データ５２に対応する衝突判定領域の中心位置および半径を取得し、取得した中心位置および半径に基づいて、犬Ａの衝突判定領域データ５３を更新する。なお、図７の衝突判定領域テーブルの中心位置は犬に対する相対位置によって規定されているのに対し、ＲＡＭ２４に格納される衝突判定領域データの中心座標はワールド座標系で表されるため、ステップＳ４４では衝突判定領域テーブルの中心位置をワールド座標系に変換するための処理が行われることになる。
【００７０】
ステップＳ４６では、犬Ａ〜犬Ｃの全ての犬について衝突判定領域の設定が終了したかどうかを判断し、全ての犬について設定が完了していれば衝突判定領域設定処理を終了して図９のステップＳ１８に進み、まだ設定が完了していない犬がいる場合にはステップＳ４０に戻って、その犬を処理対象として犬Ａと同様の処理を行う。その結果、全ての犬について、ＲＡＭ２４の衝突判定領域データ５３が更新されることとなる。
【００７１】
図９におけるステップＳ１８では、衝突判定処理の対象となる犬を選択する。ここでは、犬Ａが処理対象として選択されたものとして説明を進める。
【００７２】
ステップＳ２０では、処理対象である犬Ａを除いた他のオブジェクトの中から、この犬Ａとの衝突判定を行うべき対象となるオブジェクトを１つ選択する。ここでは、犬Ａとの衝突判定を行うべき対象として犬Ｂが選択されたものとして説明を進める。
【００７３】
ステップＳ２２では、ステップＳ１８で選択されたオブジェクト（ここでは犬Ａ）と、ステップＳ２０で選択されたオブジェクト（ここでは犬Ｂ）とが衝突したかどうかを判定する。この判定は、具体的には、ＲＡＭ２４に記憶されている犬Ａの衝突判定領域データと犬Ｂの衝突判定領域データを参照して、犬Ａの衝突判定領域と犬Ｂの衝突判定領域とが重複しているかどうか（すなわち交わっているかどうか）を所定の衝突判定式で判定することによって行われる。例えば、図１１に示すように、犬Ａの衝突判定領域の半径をａとし、犬Ｂの衝突判定領域の半径をｂとし、犬Ａの衝突判定領域の中心と犬Ｂの衝突判定領域の中心の間の距離をｃとすると、ａ＋ｂの値がｃよりも大きいときに、犬Ａと犬Ｂは衝突したと判定する。このような判定の結果、ステップＳ１８で選択されたオブジェクト（ここでは犬Ａ）と、ステップＳ２０で選択されたオブジェクト（ここでは犬Ｂ）とが衝突したと判定された場合にはステップＳ２４に進み、衝突していないと判定された場合にはステップＳ２６に進む。
【００７４】
ステップＳ２４では、ステップＳ１８で選択されたオブジェクトを、ステップＳ１８で選択されたオブジェクト（ここでは犬Ａ）の衝突判定領域とステップＳ２０で選択されたオブジェクト（ここでは犬Ｂ）の衝突判定領域とが重複しないような位置に移動させるための移動ベクトルが算出される。例えば、犬Ａの衝突判定領域と犬Ｂの衝突判定領域とが図１１に示すような位置関係にあるときには、方向が犬Ｂの衝突判定領域の中心から犬Ａの衝突判定領域の中心に向かう方向であって、大きさがａ＋ｂ−ｃであるベクトルを犬Ａの移動ベクトルとする。こうして計算された移動ベクトルは、ＲＡＭ２４の適当な記憶領域に一時的に記憶しておく。
【００７５】
ステップＳ２６では、全ての他のオブジェクト（ここでは犬Ａを除く全てのオブジェクト）と犬Ａとの間の衝突判定が終了したかどうかを判断し、終了している場合にはステップＳ２８に進み、終了していない場合にはステップＳ２０に戻って、まだ衝突判定をしていない他のオブジェクトについても同様の処理を繰り返す。ここでは、ステップＳ２０〜Ｓ２４を繰り返す過程において、図１２のように、犬Ａの衝突判定領域と犬Ｃの衝突判定領域が重複していることも検出されたものとして説明を進める。
【００７６】
ステップＳ２８では、ステップＳ２０〜Ｓ２４を繰り返した結果、ステップＳ２４において複数の移動ベクトルが算出された場合に、これらの移動ベクトルを合成する処理を行う。例えば、図１２の例では、犬Ａの衝突判定領域と犬Ｂの衝突判定領域の重複を回避するための移動ベクトルＢと、犬Ａの衝突判定領域と犬Ｃの衝突判定領域の重複を回避するための移動ベクトルＣとを合成して、犬Ａを移動すべき方向及び移動量を表す移動ベクトル（合成移動ベクトル）を計算する。
【００７７】
ステップＳ３０では、ステップＳ１８で選択されたオブジェクト（ここでは犬Ａ）の配置座標５１に、ステップＳ２８で合成された移動ベクトルを加算することによって、他のオブジェクトと衝突しない位置にこのオブジェクト（ここでは犬Ａ）を移動させる。なお、ステップＳ２０〜Ｓ２４を繰り返した結果、ステップＳ２４において１つの移動ベクトルしか算出されなかった場合には、この移動ベクトルを用いて配置座標５１が更新される。また、ステップＳ２４において移動ベクトルが１つも算出されなかった場合には、ここで配置座標５１を更新する必要はない。
【００７８】
ステップＳ３２では、犬Ａ〜犬Ｃの全ての犬について衝突判定処理が終了したかどうか（すなわち、ステップＳ１８で全ての犬を衝突判定処理の対象として選択済みかどうか）を判断し、終了していればステップＳ３４に進み、まだステップＳ１８で処理対象として選択されていない犬が存在する場合には、その犬についてステップＳ１８〜Ｓ３０の処理を実行する。
【００７９】
ステップＳ３４では、ステップＳ３０で更新された各犬の配置座標５１に基づいて図５に示すようなゲーム画像を生成する。ステップＳ３４で生成されたゲーム画像は、図示しないフレームバッファに一時的に記憶された後、所定のタイミングで第２のＬＣＤ１２の表示画面に表示される。
【００８０】
ステップＳ３６では、プレイヤによってゲーム終了が指示されたかどうかを判断し、ゲーム終了が指示されるまで、ステップＳ１２〜Ｓ３４の処理を例えば６０分の１秒の周期で繰り返し実行する。
【００８１】
以上のように、本実施形態によれば、球体の衝突判定領域を利用して犬の衝突判定を行うため、衝突判定に要する計算量が大幅に低減される。また、犬の状態または犬の周囲の状態に応じてその球体の大きさや位置が適宜に変化するため、犬の動きがより自然となる。
【００８２】
なお、本実施形態では、仮想３次元空間内のオブジェクトの衝突判定について説明したが、本発明はこれに限らず、２次元の仮想空間内のオブジェクトの衝突判定にも本発明を適用することができる。
【００８３】
また、本実施形態では、衝突判定領域として１つのオブジェクトにつき１つの球体を設定する例について説明したが、本発明はこれに限らず、衝突判定領域として１つのオブジェクトにつき複数の球体を設定し、これらの球体のうちの少なくとも１つの大きさ及び／又は位置をそのオブジェクトの状態またはそのオブジェクトの周囲の状態に応じて変化させてもよい。また、衝突判定領域は球体に限らず、オブジェクトの形状よりも簡素な形状であれば任意の形状でよい。球体以外の衝突判定領域の好ましい形状の例としては、楕円体、直方体、円柱が挙げられる。
【００８４】
また、本実施形態では、図７に示す６つの状態（状態Ａ〜Ｆ）毎に衝突判定領域の位置または大きさを変化させる例について説明したが、本発明はこれに限らない。例えば、あるオブジェクト（仮に第１オブジェクトと称す）の衝突判定領域を設定するときに、第１オブジェクトの現在位置に応じて（例えば図８Ｆにおいて犬Ａが通路の近傍エリアに侵入したかどうかに応じて）その衝突判定領域の位置または大きさを変化させても良いし、第１オブジェクトと他のオブジェクトとの位置関係に応じて（例えば図８Ｆにおいて犬Ａが障害物Ａおよび障害物Ｂの両方に一定の距離以上近づいたかどうかに応じて）その衝突判定領域を変化させても良い。また、第１オブジェクトの近傍の温度（仮想３次元空間に仮想的に設定された温度）に応じてその衝突判定領域を変化させても良い。
【００８５】
また、本実施形態では、図７に示すように、各状態に対応する衝突判定領域の大きさが数値によって規定されている例について説明したが、本発明はこれに限らず、衝突判定領域の大きさが関数によって規定されていても良い。例えば、地面から犬の頭の頂点までの距離に比例して衝突判定領域の大きさが変更されても良い。衝突判定領域の中心位置についても同様である。
【００８６】
また、本実施形態では、図７に示すように、各状態に対応する衝突判定領域の中心位置および大きさが、実際の値により規定されている例について説明したが、本発明はこれに限らない。例えば四つんばいの状態（図７の状態Ａ）の衝突判定領域を基本衝突判定領域とし、各状態について、この基本衝突判定領域を基準としたときの中心位置のズレ方向・ズレ量および大きさの差分値を規定した衝突判定領域テーブルを用いて衝突判定領域を設定するようにしてもよい。この場合、例えば図７の状態Ｂに対する衝突判定領域の半径は「−２０」と規定されることになる。
【符号の説明】
【００８７】
１０  ゲーム装置
１１  第１のＬＣＤ
１２  第２のＬＣＤ
１３  ハウジング
１３ａ  上側ハウジング
１３ｂ  下側ハウジング
１４  操作スイッチ部
１４ａ  十字スイッチ
１４ｂ  スタートスイッチ
１４ｃ  セレクトスイッチ
１４ｄ  Ａボタン
１４ｅ  Ｂボタン
１４ｆ  Ｘボタン
１４ｇ  Ｙボタン
１４Ｌ  Ｌボタン
１４Ｒ  Ｒボタン
１５  タッチパネル
１６  スティック
１７  メモリカード
１７ａ  ＲＯＭ
１７ｂ  ＲＡＭ
１８ａ、１８ｂ  音抜き孔
１９  電源スイッチ
【図１】
0005224535.tif 000002
【図２】
0005224535.tif 000003
【図３】
0005224535.tif 000004
【図４】
0005224535.tif 000005
【図５】
0005224535.tif 000006
【図６】
0005224535.tif 000007
【図７】
0005224535.tif 000008
【図８Ａ】
0005224535.tif 000009
【図８Ｂ】
0005224535.tif 000010
【図８Ｃ】
0005224535.tif 000011
【図８Ｄ】
0005224535.tif 000012
【図８Ｅ】
0005224535.tif 000013
【図８Ｆ】
0005224535.tif 000014
【図９】
0005224535.tif 000015
【図１０】
0005224535.tif 000016
【図１１】
0005224535.tif 000017
【図１２】
0005224535.tif 000018