(57)【特許請求の範囲】
【請求項１】
ゲーム空間内に配置されたオブジェクト及び移動物体を用いたゲームを実行するゲーム装置であって、
前記オブジェクトに対応する第１の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置に設定し、前記オブジェクトに対応する第２の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置であって、前記第１の当たり判定用オブジェクトの表面の少なくとも一部を覆うように設定する当たり判定用オブジェクト設定手段と、
前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触するか否かを判定する接触判定手段と、
前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記移動物体の接触方向と、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面の接触位置に対応する法線方向と、に基づいて決定される接触後の移動方向に前記移動物体を移動させる移動制御手段と、
を含み、
前記移動制御手段は、
前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記接触位置に対応する法線方向及び前記接触後の移動方向のなす角が、前記接触方向及び前記接触位置に対応する法線方向のなす角よりも大きくなり、かつ、前記接触方向と前記接触後の移動方向とのずれが、前記第１の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合よりも小さくなるように、前記移動物体を移動させる手段と、
前記移動物体の回転数を示す移動状態データを記憶する手段から前記移動状態データを取得する手段と、
前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記移動物体の接触方向及び接触後の前記移動物体の移動方向のずれに基づいて前記移動状態データが示す前記移動物体の回転数を変更する変更手段と、
を含むことを特徴とするゲーム装置。
【請求項２】
前記移動制御手段の前記変更手段は、
前記移動物体の接触方向及び接触後の前記移動物体の移動方向のずれが少ないほど、前記移動状態データが示す前記移動物体の回転数を増加させる、
ことを特徴とする請求項１に記載のゲーム装置。
【請求項３】
前記ゲーム装置は、前記第１の当たり判定用オブジェクト及び前記第２の当たり判定用オブジェクトに対応する法線マップを記憶してなる手段から、前記法線マップを取得する法線マップ取得手段を含み、
前記移動制御手段は、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記法線マップと、前記第１の当たり判定用オブジェクト又は前記第２の当たり判定用オブジェクトにおける前記移動物体との接触位置と、に基づいて前記接触位置に対応する法線方向を取得する手段を含むことを特徴とする請求項１又は２に記載のゲーム装置。
【請求項４】
ゲーム空間内に配置されたオブジェクト及び移動物体を用いたゲームを実行するゲーム装置の制御方法であって、
前記オブジェクトに対応する第１の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置に設定し、前記オブジェクトに対応する第２の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置であって、前記第１の当たり判定用オブジェクトの表面の少なくとも一部を覆うように設定する当たり判定用オブジェクト設定ステップと、
前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触するか否かを判定する接触判定ステップと、
前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記移動物体の接触方向と、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面の接触位置に対応する法線方向と、に基づいて決定される接触後の移動方向に前記移動物体を移動させる移動制御ステップと、
を含み、
前記移動制御ステップは、
前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記接触位置に対応する法線方向及び前記接触後の移動方向のなす角が、前記接触方向及び前記接触位置に対応する法線方向のなす角よりも大きくなり、かつ、前記接触方向と前記接触後の移動方向とのずれが、前記第１の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合よりも小さくなるように、前記移動物体を移動させるステップと、
前記移動物体の回転数を示す移動状態データを記憶する手段から前記移動状態データを取得するステップと、
前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記移動物体の接触方向及び接触後の前記移動物体の移動方向のずれに基づいて前記移動状態データが示す前記移動物体の回転数を変更するステップと、
を含むことを特徴とするゲーム装置の制御方法。
【請求項５】
ゲーム空間内に配置されたオブジェクト及び移動物体を用いたゲームを実行するコンピュータを、
前記オブジェクトに対応する第１の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置に設定し、前記オブジェクトに対応する第２の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置であって、前記第１の当たり判定用オブジェクトの表面の少なくとも一部を覆うように設定する当たり判定用オブジェクト設定手段、
前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触するか否かを判定する接触判定手段、
前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記移動物体の接触方向と、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面の接触位置に対応する法線方向と、に基づいて決定される接触後の移動方向に前記移動物体を移動させる移動制御手段、
として機能させるためのプログラムであって、
前記移動制御手段は、
前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記接触位置に対応する法線方向及び前記接触後の移動方向のなす角が、前記接触方向及び前記接触位置に対応する法線方向のなす角よりも大きくなり、かつ、前記接触方向と前記接触後の移動方向とのずれが、前記第１の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合よりも小さくなるように、前記移動物体を移動させる手段と、
前記移動物体の回転数を示す移動状態データを記憶する手段から前記移動状態データを取得する手段と、
前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記移動物体の接触方向及び接触後の前記移動物体の移動方向のずれに基づいて前記移動状態データが示す前記移動物体の回転数を変更する手段と、
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置、ゲーム装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、ゲーム空間内に配置されたオブジェクト及び移動物体を用いたゲームが知られている。このようなゲームにおいては、ゲーム空間を移動する移動物体とオブジェクトとが接触したか否かを判定する接触判定（当たり判定）が行われる（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−７０６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
移動物体とオブジェクトとが接触した場合、例えば、移動物体がオブジェクトに接触した方向と、オブジェクトの接触位置の法線方向と、のなす角度と等しい角度で移動物体が跳ね返るように移動制御が行われることが考えられる。しかしながら、この場合、オブジェクトが柔らかい素材を示すものであっても硬い素材を示すものであっても、互いに同じような跳ね返り方をするので、ユーザに不自然な印象を与えてしまう。
【０００５】
本発明は上記課題に鑑みてなされたものであって、その目的は、ユーザに不自然な印象を与えずに、オブジェクトと接触する移動物体の移動制御を行うことが可能なゲーム装置、ゲーム装置の制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明に係るゲーム装置は、ゲーム空間内に配置されたオブジェクト及び移動物体を用いたゲームを実行するゲーム装置であって、前記オブジェクトに対応する第１の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置に設定し、前記オブジェクトに対応する第２の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置であって、前記第１の当たり判定用オブジェクトの表面の少なくとも一部を覆うように設定する当たり判定用オブジェクト設定手段と、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触するか否かを判定する接触判定手段と、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記移動物体の接触方向と、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面の接触位置に対応する法線方向と、に基づいて決定される接触後の移動方向に前記移動物体を移動させる移動制御手段と、を含み、前記移動制御手段は、前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記接触位置に対応する法線方向及び前記接触後の移動方向のなす角が、前記接触方向及び前記接触位置に対応する法線方向のなす角よりも大きくなり、かつ、前記接触方向と前記接触後の移動方向とのずれが、前記第１の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合よりも小さくなるように、前記移動物体を移動させる手段を含むことを特徴とする。
【０００７】
また、本発明に係るゲーム装置の制御方法は、ゲーム空間内に配置されたオブジェクト及び移動物体を用いたゲームを実行するゲーム装置の制御方法であって、前記オブジェクトに対応する第１の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置に設定し、前記オブジェクトに対応する第２の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置であって、前記第１の当たり判定用オブジェクトの表面の少なくとも一部を覆うように設定する当たり判定用オブジェクト設定ステップと、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触するか否かを判定する接触判定ステップと、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記移動物体の接触方向と、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面の接触位置に対応する法線方向と、に基づいて決定される接触後の移動方向に前記移動物体を移動させる移動制御ステップと、を含み、前記移動制御ステップは、前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記接触位置に対応する法線方向及び前記接触後の移動方向のなす角が、前記接触方向及び前記接触位置に対応する法線方向のなす角よりも大きくなり、かつ、前記接触方向と前記接触後の移動方向とのずれが、前記第１の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合よりも小さくなるように、前記移動物体を移動させるステップを含むことを特徴とする。
【０００８】
また、本発明に係るプログラムは、ゲーム空間内に配置されたオブジェクト及び移動物体を用いたゲームを実行するゲーム装置としてコンピュータを機能させるためのプログラムであって、前記オブジェクトに対応する第１の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置に設定し、前記オブジェクトに対応する第２の当たり判定用オブジェクトを、前記オブジェクトの位置に基づいて決定される位置であって、前記第１の当たり判定用オブジェクトの表面の少なくとも一部を覆うように設定する当たり判定用オブジェクト設定手段、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触するか否かを判定する接触判定手段、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記移動物体の接触方向と、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面の接触位置に対応する法線方向と、に基づいて決定される接触後の移動方向に前記移動物体を移動させる移動制御手段、を含み、前記移動制御手段は、前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記接触位置に対応する法線方向及び前記接触後の移動方向のなす角が、前記接触方向及び前記接触位置に対応する法線方向のなす角よりも大きくなり、かつ、前記接触方向と前記接触後の移動方向とのずれが、前記第１の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合よりも小さくなるように、前記移動物体を移動させる手段を含むことを特徴とするゲーム装置として前記コンピュータを機能させる。
【０００９】
また、本発明に係る情報記憶媒体は、上記のプログラムを記録したコンピュータ読み取り可能な情報記憶媒体である。
【００１０】
本発明によれば、ユーザに不自然な印象を与えずに、オブジェクトと接触する移動物体の移動制御を行うことが可能になる。
【００１１】
また、本発明の一態様では、前記ゲーム装置は、前記第１の当たり判定用オブジェクト及び前記第２の当たり判定用オブジェクトに対応する法線マップを記憶してなる手段から、前記法線マップを取得する法線マップ取得手段を含み、前記移動制御手段は、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記法線マップと、前記第１の当たり判定用オブジェクト又は前記第２の当たり判定用オブジェクトにおける前記移動物体との接触位置と、に基づいて前記接触位置に対応する法線方向を取得する手段を含むことを特徴とする。
【００１２】
また、本発明の一態様では、前記移動制御手段は、前記移動物体の移動速度又は回転数の少なくとも一方を示す移動状態データを記憶する手段から前記移動状態データを取得する手段と、前記第１の当たり判定用オブジェクトの表面又は前記第２の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合、前記移動物体の接触方向及び接触後の前記移動物体の移動方向のずれに基づいて前記移動状態データが示す移動物体の移動速度又は回転数の少なくとも一方を変更する手段と、を含むことを特徴とする。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係るゲーム装置のハードウェア構成を示す。
【図２】ゲーム空間の一例を示す図である。
【図３】ボールがオブジェクトに接触して移動する様子を示す図である。
【図４】判定オブジェクトを示す図である。
【図５】ゲーム装置で実現される機能のうち、本発明に関連する機能を示す機能ブロック図である。
【図６】法線マップを示す図である。
【図７】ボールと第１の当たり判定用オブジェクトとが接触した場合を示す図である。
【図８】ボールと第２の当たり判定用オブジェクトとが接触する場合を示す図である。
【図９】判定オブジェクトに接触して移動するボールを示す図である。
【図１０】ゲーム装置が所定時間ごとに実行する処理を示すフロー図である。
【図１１】変形例１−１における接触位置の拡大図である。
【図１２】変形例１−２における接触位置の拡大図である。
【図１３】変形例１−３における接触位置の拡大図である。
【図１４】変形例３−１における当たり判定用オブジェクトの位置関係を示す図である。
【図１５】変形例３−１における当たり判定用オブジェクトと接触するボールの移動制御の一例を示す図である。
【図１６】変形例３−２における第１の当たり判定用オブジェクトと第２の当たり判定用オブジェクトとの位置関係の一例を示す図である。
【図１７】変形例３−２における第１の当たり判定用オブジェクトと第２の当たり判定用オブジェクトとの位置関係の一例を示す図である。
【発明を実施するための形態】
【００１４】
［１．実施形態］
以下、本発明の実施形態の一例について図面に基づき詳細に説明する。本発明の実施形態に係るゲーム装置は、例えば、家庭用ゲーム機（据置型ゲーム機）、携帯ゲーム機、携帯電話機、携帯情報端末（ＰＤＡ）又はパーソナルコンピュータ等によって実現される。ここでは、実施形態に係るゲーム装置を家庭用ゲーム機によって実現する場合について説明する。
【００１５】
［１−１．ゲーム装置のハードウェア構成］
図１は、本発明の実施形態に係るゲーム装置のハードウェア構成を示す。図１に示すゲーム装置１０は、家庭用ゲーム機１１、表示部３２、音声出力部３４、及び光ディスク３６（情報記憶媒体）を含む。
【００１６】
表示部３２及び音声出力部３４は、家庭用ゲーム機１１に接続される。表示部３２は、例えば、家庭用テレビ受像機又は液晶ディスプレイなどである。音声出力部３４は、例えば、家庭用テレビ受像機に内蔵されたスピーカ又はヘッドホンなどである。
【００１７】
家庭用ゲーム機１１は、公知のコンピュータゲームシステムである。家庭用ゲーム機１１は、バス１２、制御部１４、主記憶１６、画像処理部１８、入出力処理部２０、音声処理部２２、光ディスク再生部２４、ハードディスク２６、通信インタフェース２８、及びコントローラ３０を含む。
【００１８】
制御部１４は、一又は複数の制御部（例えば、ＣＰＵ等）を含む。制御部１４は、図示しないＲＯＭに格納されるオペレーティングシステムや、光ディスク３６から読み出されるプログラムに基づいて、家庭用ゲーム機１１の各部を制御する処理や情報処理を実行する。
【００１９】
主記憶１６は、例えば、ＲＡＭを含む。光ディスク３６から読み出されたプログラム及びデータは、主記憶１６に書き込まれる。主記憶１６は、制御部１４の作業用メモリとしても用いられる。バス１２は、アドレス及びデータを家庭用ゲーム機１１の各部でやり取りするためのものである。
【００２０】
画像処理部１８は、ＶＲＡＭを含む。画像処理部１８は、制御部１４から供給される画像データに基づいてＶＲＡＭ上にゲーム画面を描画する。ＶＲＡＭ上に描画されたゲーム画面は、ビデオ信号に変換されて所定のタイミングで表示部３２に出力される。
【００２１】
入出力処理部２０は、制御部１４が、音声処理部２２、光ディスク再生部２４、ハードディスク２６、通信インタフェース２８、及びコントローラ３０にアクセスするためのインタフェースである。
【００２２】
音声処理部２２は、サウンドバッファを含む。音声処理部２２は、光ディスク３６からサウンドバッファに読み出された音声データを、音声出力部３４から出力する。
【００２３】
通信インタフェース２８は、インターネットなどの通信ネットワークに、家庭用ゲーム機１１を有線又は無線接続するためのインタフェースである。
【００２４】
光ディスク再生部２４は、光ディスク３６に記録されたプログラムやデータを読み取る。本実施形態においては、プログラムやデータを家庭用ゲーム機１１に供給するために、光ディスク３６が用られる場合を説明するが、メモリカード等の他の情報記憶媒体が用いられて、プログラムやデータが家庭用ゲーム機１１に対して供給されるようにしてもよい。他にも例えば、通信ネットワークを介して遠隔地からプログラムやデータが家庭用ゲーム機１１に供給されるようにしてもよい。
【００２５】
ハードディスク２６は、一般的なハードディスク装置（補助記憶装置）である。なお、本実施形態において光ディスク３６に記憶されるものとして説明するプログラムやデータは、ハードディスク２６に記憶されていてもよい。
【００２６】
コントローラ３０は、ユーザがゲーム操作を行うための操作部である。家庭用ゲーム機１１には、一又は複数のコントローラ３０が、有線又は無線接続される。入出力処理部２０は、一定周期毎（例えば１／６０秒ごと）に、コントローラ３０の各操作部材の状態をスキャンする。このスキャン結果を表す操作信号は、バス１２を介して制御部１４に供給される。制御部１４は、この操作信号に基づいてユーザのゲーム操作を判定する。
【００２７】
［１−２．ゲーム装置において実行されるゲーム］
ゲーム装置１０は、光ディスク３６から読み出したゲームプログラムを実行することによって、例えば、ゲーム空間内に配置されたオブジェクト及び移動物体を用いたゲームを実行する。
【００２８】
以下では、サッカーの試合会場を模したゲーム空間を、複数のゲームキャラクタ（オブジェクト）が移動して、サッカーボール（移動物体）を用いてサッカーの試合を行うサッカーゲームが実行される場合について説明する。サッカーゲームが開始されると、例えば、ゲーム空間４０が、主記憶１６に構築される。
【００２９】
図２は、ゲーム空間４０の一例を示す図である。図２に示すゲーム空間４０は、互いに直交する三つの座標軸（Ｘｗ軸、Ｙｗ軸、及びＺｗ軸）が設定された仮想的な３次元空間になっている。図２に示すように、ゲーム空間４０には、サッカーフィールドを表すオブジェクトであるフィールド４２が配置される。
【００３０】
フィールド４２上には、サッカーのゴールを表すオブジェクトであるゴール５０と、ユーザチームに所属するサッカー選手を表すオブジェクト（ゲームキャラクタ）である選手キャラクタ５２と、対戦相手チームに所属するサッカー選手を表すオブジェクトである選手キャラクタ５４と、サッカーボールを表すオブジェクトであるボール５６と、が配置される。各オブジェクトの位置は、例えば、ワールド座標系（Ｘｗ−Ｙｗ−Ｚｗ座標系）の３次元座標で特定される。
【００３１】
なお、図２では省略されているが、フィールド４２上には、ユーザチームに所属する１１体の選手キャラクタ５２と、対戦相手チームに所属する１１体の選手キャラクタ５４と、が配置される。ユーザは、操作対象として設定される選手キャラクタ５２を操作してゲームをプレイする。また、ゲーム空間４０に配置される選手キャラクタ５２（５４）のうちでユーザの操作対象とならないものは、所定の行動アルゴリズムに従って自律的に行動する。
【００３２】
また、ゲーム空間４０には、仮想カメラ５８（視点）が設定される。ゲーム空間４０を仮想カメラ５８から見た様子を表すゲーム画面が、表示部３２に表示される。このゲーム画面は、ゲーム空間４０に配置された各オブジェクトの頂点座標が、所定の座標変換演算を用いてワールド座標系からスクリーン座標系に座標変換されることによって生成される。このゲーム画面は、所定時間毎（例えば、１／６０秒毎）に表示が更新される。以降では、これらの個々のゲーム画面を、それぞれフレームという。
【００３３】
例えば、選手キャラクタ５２（５４）によってボール５６が蹴りだされると、ボール５６は、ゲーム空間４０内を移動する。本実施形態においては、ゲーム空間４０内を移動するボール５６が、ゲーム空間４０に配置されたオブジェクト（ゴール５０や選手キャラクタ５２（５４））に接触するか否かが判定される。
【００３４】
ボール５６が、ゲーム空間４０に配置されたオブジェクトに接触する場合、ボール５６が、このオブジェクトに接触して跳ね返るようにボール５６の移動制御が行われる。例えば、ボール５６がゴール５０の枠（いわゆるゴールポスト）や選手キャラクタ５２（５４）に接触した場合、ボール５６が、これらのオブジェクトに当たって跳ね返るような移動制御が行われる。
【００３５】
図３は、ボール５６がオブジェクトに接触して移動する様子を示す図である。図３は、ボール５６が、ゴール５０の枠に接触する場合を示す。図３に示す位置Ｐ（ｘ）は、あるフレーム（ｘ番目のフレームとする。）におけるボール５６の位置を示している。このフレームにおいては、ボール５６は、ゴール５０に接触していない。
【００３６】
次のフレーム（即ち、（ｘ＋１）番目のフレーム。）が表示部３２に表示される前に、ボール５６が移動すべき仮位置Ｑ（ｘ＋１）が算出される。ボール５６がゴール５０に向かって移動する場合、仮位置Ｑ（ｘ＋１）は、ゴール５０の領域の内部に位置する。この場合、ボール５６がゴール５０に接触する、と判定される。
【００３７】
ボール５６がゴール５０に接触すると判定された場合、例えば、ボール５６がゴール５０の枠に当たって跳ね返るような移動制御が実行される。具体的には、例えば、ボール５６と接触するゴール５０表面の接触位置の法線方向ｎに基づいて、接触後のボール５６が移動すべき位置Ｐ（ｘ＋１）が決定される。接触位置の法線方向ｎは、例えば、接触位置のポリゴンを構成する辺の外積を取ることによって求まる。
【００３８】
例えば、図３に示すように、ゴール５０の接触位置Ｒの法線方向ｎを基準として、ボール５６の接触方向Ｖｂ（位置Ｐ（ｘ）及び仮位置Ｑ（ｘ＋１）を結ぶ方向。即ち、接触前のボール５６の移動方向。）と線対称となる方向が、接触後のボール５６の移動方向Ｖａとして決定される。即ち、ボール５６の接触方向Ｖｂと法線方向ｎとのなす角度θと、接触後のボール５６の移動方向Ｖａと法線方向ｎとのなす角度θと、が等しくなる。
【００３９】
まず、例えば、ゴール５０の表面とボール５６とが接触する接触位置Ｒが、位置Ｐ（ｘ）と接触方向Ｖｂに基づいて決定される。次いで、この接触位置Ｒから、移動方向Ｖａに所定距離ｄだけ離れた位置が、接触後のボール５６の位置Ｐ（ｘ＋１）として決定される。即ち、（ｘ＋１）番目のフレームにおいて、ボール５６が位置Ｐ（ｘ＋１）に表示されることになる。なお、距離ｄは、ボール５６の移動速度に応じた距離であってよい。
【００４０】
上記のように接触後のボール５６の移動方向及び位置が決定されることによって、例えば、ゴール５０の枠に当たってボール５６が跳ね返る様子を再現することができる。
【００４１】
しかしながら、ゴール５０のような硬い物体については上記のような手法でよいが、例えば、実際のサッカーの試合においては、サッカー選手のユニフォームのような柔らかい物体にボールが接触した場合には、ゴールポスト等に接触した場合に比べて、ボールは跳ね返りづらくなる。他にも例えば、サッカー選手の筋肉の部分にボールが当たった場合は、ボールは跳ね返りづらくなる。
【００４２】
つまり、サッカー選手の体のうち、柔らかい場所にボールが接触して跳ね返る様子は、硬い場所に接触して跳ね返る様子とは異なる。したがって、ゲーム空間４０に配置される全てのオブジェクトに対して、図３のような方法をそのまま用いて移動物体の移動制御を実行した場合、ユーザにとって不自然な印象を与えてしまう。
【００４３】
そこで、本実施形態においては、ゲーム装置１０は、例えば、選手キャラクタ５２（５４）に基づいて定まる位置に、柔らかい物体に対応するオブジェクトと、硬い物体に対応するオブジェクトと、を設定してボール５６の接触判定を実行することによって、この問題を解決する。即ち、柔らかい物体に対応するオブジェクトとボール５６が接触した場合にはボール５６のめり込みを許容し、硬い物体に対応するオブジェクトとボール５６が接触した場合よりも、ボール５６があまり跳ね返らないように移動制御が実行されることによって、ユーザに自然な印象を与えることができるようにしている。
【００４４】
以降では、接触判定（当たり判定）に用いられる上記の２つのオブジェクトを、それぞれ第１の当たり判定用オブジェクト６０ａ、第２の当たり判定用オブジェクト６０ｂという。また、これらをまとめて、単に、当たり判定用オブジェクト６０ともいう。
【００４５】
図４は、当たり判定用オブジェクト６０を示す図である。図４では、選手キャラクタ５２（５４）の脚の部分を例に挙げて示している。即ち、図４に示すように、例えば、選手キャラクタ５２（５４）の脚の部分に、第１の当たり判定用オブジェクト６０ａ及び第２の当たり判定用オブジェクト６０ｂが設定される。
【００４６】
第１の当たり判定用オブジェクト６０ａは、硬い物体を示す。第１の当たり判定用オブジェクト６０ａは、例えば、選手キャラクタ５２の脚等の骨に相当する。第２の当たり判定用オブジェクト６０ｂは、柔らかい物体を示す。例えば、第２の当たり判定用オブジェクト６０ｂは、選手キャラクタ５２の脚等の筋肉に相当する。
【００４７】
本実施形態においては、第１の当たり判定用オブジェクト６０ａとボール５６とが接触した場合と、第２の当たり判定用オブジェクト６０ｂとボール５６とが接触した場合と、で接触後のボール５６の移動の仕方が異なるようになっている。
【００４８】
処理の詳細は後述するが、例えば、ボール５６と第１の当たり判定用オブジェクト６０ａとが接触した場合、硬いオブジェクトにボール５６が当って跳ね返るように移動制御がなされる。一方例えば、ボール５６と第２の当たり判定用オブジェクト６０ｂとが接触した場合、柔らかいオブジェクトにボール５６がめり込むように移動制御がなされる。
【００４９】
このようにすることによって、サッカー選手の体のうち、ユニフォームや、比較的柔らかい筋肉の部位にボール５６がめり込み、硬い骨格にボール５６が接触して跳ね返る様子を、再現することができる。以降、本処理の詳細について説明する。
【００５０】
［１−３．ゲーム装置において実現される機能］
図５は、ゲーム装置１０で実現される機能のうち、本発明に関連する機能を示す機能ブロック図である。図５に示すように、ゲーム装置１０は、ゲームデータ記憶部７０、法線マップ取得部７２、当たり判定用オブジェクト設定部７４、接触判定部７６、及び移動制御部７８を含む。
【００５１】
［１−３−１．ゲームデータ記憶部］
ゲームデータ記憶部７０は、例えば、主記憶１６及び光ディスク３６等を主として実現される。ゲームデータ記憶部７０は、例えば、サッカーゲームを実現するために必要なデータを記憶する。例えば、サッカーゲームの現在の状況を示すゲーム状況データが、ゲームデータ記憶部７０に記憶される。
【００５２】
例えば、下記に示すようなデータが、ゲーム状況データに含まれる。
（１）選手キャラクタ５２（５４）の現在の状態（位置、姿勢、移動方向及び移動速度等）を示すデータ
（２）ボール５６の現在の状態（位置、移動方向、移動速度、及び回転数等）を示すデータ
（３）現在設定されている当たり判定用オブジェクト６０の位置を示すデータ
（４）仮想カメラ５８の現在の状態（位置及び視線方向等）を示すデータ
【００５３】
また例えば、本実施形態においては、ゲームデータ記憶部７０は、当たり判定用オブジェクト６０の法線マップを示す法線マップ情報を記憶する。法線マップとは、オブジェクトの各ポリゴン面に対応する法線方向を示すためのテクスチャである。
【００５４】
図６は、法線マップを示す図である。ゲーム空間４０に配置される各オブジェクトのポリゴン面に直交する法線方向は、一方向であるが、法線マップによれば、１つのポリゴン面に対して複数の法線方向を定義することができる。
【００５５】
ここでは、図６に示すように、例えば、１つのポリゴン面を３×３の法線マップで定義する場合を説明する。即ち例えば、１つのポリゴン面に対して、９つの方向を示す法線が、法線マップによって定義される。
【００５６】
ポリゴン面のうち、法線マップによって分けられる領域を、それぞれ領域Ｅａ〜領域Ｅｉ（まとめて単に領域Ｅともいう。）とする。それぞれの領域Ｅに対応する法線の方向を、法線方向ｎａ〜法線方向ｎｉとする。法線方向ｎａ〜法線方向ｎｉのそれぞれは、例えば、方向が異なる。即ち、例えば、図６に示すポリゴン面の領域のうち、領域Ｅａに対応する法線方向ｎａと、領域Ｅｂに対応する法線方向ｎｂと、は方向が異なることになる。
【００５７】
例えば、法線マップ情報は、ＲＧＢのイメージデータ（ＲＧＢ画像）によって表現される。即ち、法線マップ情報のＲＧＢ画像のうち、各ピクセルのＲ成分値、Ｇ成分値、Ｂ成分値が、それぞれ、領域Ｅの法線のＸｗ軸方向、Ｙｗ軸方向、Ｚｗ軸方向のそれぞれの要素に対応する。
【００５８】
ＲＧＢ画像が示すＲＧＢ値に、所定の行列変換処理が施されることによって、法線の方向を示すベクトルが算出される。つまり、図６に示す例では、１つのポリゴン面に対応する領域Ｅが、９つの色によって表現されることになる。
【００５９】
この法線マップは、当たり判定用オブジェクト６０とボール５６とが接触する場合において、接触後のボール５６の移動方向を決定する際に用いられる。即ち、当たり判定用オブジェクト６０のポリゴン面にボール５６が接触した場合、同じポリゴン面であっても接触した位置（接触位置）が異なれば法線マップが示す法線の方向が異なるので、それぞれ異なる方向にボール５６が移動することになる。
【００６０】
このように、法線マップを用いることによって、例えば、図４のように、選手キャラクタ５２（５４）よりもポリゴン数の少ない当たり判定用オブジェクト６０を用いても、接触後のボール５６を種々の方向に移動させることができる。なお、法線マップの作成方法としては、高さマップ（バンプマップ）を用いた方法等、公知の種々の手法を適用可能である。
【００６１】
［１−３−２．法線マップ取得部］
法線マップ取得部７２は、制御部１４を主として実現される。法線マップ取得部７２は、第１の当たり判定用オブジェクト６０ａ及び第２の当たり判定用オブジェクト６０ｂに対応する法線マップを記憶してなる手段（例えば、ゲームデータ記憶部７０）から、法線マップを取得する。
【００６２】
なお、本実施形態においては、法線マップによって接触位置に対応する法線方向が取得される場合を説明するが、ボール５６の接触位置と法線方向とが対応付けられたデータテーブルを用いる方法等、他の方法によって法線方向が取得される場合には、ゲーム装置１０は、法線マップ取得部７２を含んでいなくてもよい。
【００６３】
［１−３−３．当たり判定用オブジェクト設定部］
当たり判定用オブジェクト設定部７４は、制御部１４を主として実現される。当たり判定用オブジェクト設定部７４は、オブジェクト（例えば、選手キャラクタ５２（５４））に対応する第１の当たり判定用オブジェクト６０ａを、オブジェクトの位置に基づいて決定される位置に設定する。
【００６４】
別の言い方をすれば、第１の当たり判定用オブジェクト６０ａは、例えば、選手キャラクタ５２（５４）の内部の任意の位置（例えば、内部に設定される軸線の位置）からの距離が所定範囲（例えば、所定距離以下）となる位置に設定される。この位置に、例えば、硬い物体を示す第１の当たり判定用オブジェクト６０ａが設定される。
【００６５】
また、当たり判定用オブジェクト設定部７４は、オブジェクト（例えば、選手キャラクタ５２（５４））に対応する第２の当たり判定用オブジェクト６０ｂを、オブジェクトの位置に基づいて決定される位置であって、第１の当たり判定用オブジェクト６０ａの表面の少なくとも一部を覆うように設定する。
【００６６】
第１の当たり判定用オブジェクト６０ａの表面とは、第１の当たり判定用オブジェクト６０ａを構成するポリゴン面のことである。第２の当たり判定用オブジェクト６０ｂは、例えば、第１の当たり判定用オブジェクト６０ａ内の任意の位置と、第２の当たり判定用オブジェクト６０ｂの任意の位置と、を結ぶ線上に第１の当たり判定用オブジェクト６０ａの表面があるように配置される。
【００６７】
別の言い方をすれば、第２の当たり判定用オブジェクト６０ｂは、第１の当たり判定用オブジェクト６０ａの周囲に対応する位置に設定される。第１の当たり判定用オブジェクト６０ａの周囲に対応する位置とは、第１の当たり判定用オブジェクト６０ａの表面（外周面）を少なくとも含む領域内の位置のことである。即ち、第２の当たり判定用オブジェクト６０ｂのポリゴン面の少なくとも一部が、第１の当たり判定用オブジェクト６０ａの外側にあるように第２の当たり判定用オブジェクト６０ｂが設定される。
【００６８】
本実施形態においては、例えば、第２の当たり判定用オブジェクト６０ｂは、図４に示すように、第２の判定オブジェクトの表面が前記第１の判定オブジェクトを覆うように設定される場合を説明する。
【００６９】
例えば、第１の当たり判定用オブジェクト６０ａは、円柱である。第２の当たり判定用オブジェクト６０ｂは、第１の当たり判定用オブジェクトよりも半径（若しくは、断面積）の大きい円柱から、第１の当たり判定用オブジェクト６０ａを除いた筒状である。
【００７０】
また、本実施形態においては、第１の当たり判定用オブジェクト６０ａ及び第２の当たり判定用オブジェクト６０ｂは、例えば、選手キャラクタ５２（５４）よりも少ないポリゴン数で構成されている。即ち例えば、図４に示すように、選手キャラクタ５２（５４）の脚に対応するポリゴンよりもポリゴン数が少ない形状の第１の当たり判定用オブジェクト６０ａ及び第２の当たり判定用オブジェクト６０ｂが設定される。
【００７１】
なお、本実施形態においては、第１の当たり判定用オブジェクト６０ａが円柱形状であり、第２の当たり判定用オブジェクト６０ｂが筒状である場合を説明するが、当たり判定用オブジェクト６０の形状及び大きさは、本実施形態の例に限られない。他にも例えば、直方体等であってもよい。
【００７２】
また、当たり判定用オブジェクト６０は、例えば、選手キャラクタ５２（５４）と所定の位置関係を保つように、常にゲーム空間４０に設定されるようにしてもよいし、選手キャラクタ５２（５４）とボール５６との距離が所定範囲になった場合に設定されるようにしてもよい。即ち、当たり判定用オブジェクト６０は、予め定められたタイミングで設定されるようにすればよい。
【００７３】
［１−３−４．接触判定部］
接触判定部７６は、制御部１４を主として実現される。接触判定部７６は、第１の当たり判定用オブジェクト６０ａの表面又は第２の当たり判定用オブジェクト６０ｂの表面と移動物体（例えば、ボール５６）とが接触するか否かを判定する。
【００７４】
接触判定部７６は、例えば、第１の当たり判定用オブジェクト６０ａの表面又は第２の当たり判定用オブジェクト６０ｂの表面とボール５６とが接触したか否かを、例えば、ボール５６の現在の位置と移動方向に基づいて決定される仮位置と、第１の当たり判定用オブジェクト６０ａ又は第２の当たり判定用オブジェクト６０ｂと、の位置関係に基づいて判定する。
【００７５】
なお、接触判定部７６が、当たり判定用オブジェクト６０の表面と、ボール５６と、が接触するか否かを判定する方法は、公知の種々の接触判定（当たり判定）の手法を適用可能である。以降では、当たり判定用オブジェクト６０の表面と、ボール５６と、が接触することを、単に、「当たり判定用オブジェクト６０と、ボール５６と、が接触する」ともいう。
【００７６】
［１−３−５．移動制御部］
移動制御部７８は、制御部１４を主として実現される。移動制御部７８は、第１の当たり判定用オブジェクト６０ａの表面又は第２の当たり判定用オブジェクト６０ｂの表面と移動物体（例えば、ボール５６）とが接触する場合、移動物体の接触方向と、第１の当たり判定用オブジェクト６０ａの表面又は第２の当たり判定用オブジェクト６０ｂの表面の接触位置に対応する法線方向と、に基づいて決定される接触後の移動方向に移動物体を移動させる。
【００７７】
接触位置とは、先述のように、ボール５６と接触した当たり判定用オブジェクト６０のポリゴン面の位置のことである。即ち例えば、接触位置は、接触直前のボール５６の位置と、この位置に基づいて算出されるボール５６の仮位置と、を結んだ直線と交差する当たり判定用オブジェクト６０の表面の位置のことである。
【００７８】
また、本実施形態においては、「接触位置に対応する法線方向」とは、接触位置に関連付けられた法線の方向である。そして、「接触位置の法線方向」とは、接触位置のポリゴン面に直交する法線の方向である。即ち、本実施形態においては、「接触位置に対応する法線方向」と「接触位置の法線方向」とは異なる意である。接触位置に対応する法線方向は、法線マップによって接触位置に関連付けられたベクトルが示す方向であり、必ずしも、接触位置のポリゴン面に直交する方向とは限らない。
【００７９】
本実施形態においては、例えば、移動制御部７８は、第１の当たり判定用オブジェクト６０ａの表面又は第２の当たり判定用オブジェクト６０ｂの表面と移動物体（例えば、ボール５６）とが接触する場合、法線マップと、第１の当たり判定用オブジェクト６０ａ又は第２の当たり判定用オブジェクト６０ｂにおける移動物体との接触位置と、に基づいて接触位置に対応する法線方向を取得する手段を含む。即ち、法線マップによって関連付けられる法線方向に基づいて当たり判定用オブジェクト６０と接触後のボール５６の移動方向が決定される。
【００８０】
図７は、ボール５６と第１の当たり判定用オブジェクト６０ａとが接触した場合を示す図である。図７は、ボール５６が第１の当たり判定用オブジェクト６０ａの接触位置Ｒに対応する法線方向ｎ１に対して角度θ０で接触した場合を示す。即ち、接触前のボール５６の移動方向（接触方向）Ｖｂと、法線方向ｎ１と、のなす角が、角度θ０である場合を示す。
【００８１】
この場合、接触後のボール５６の移動方向Ｖａ１は、第１の当たり判定用オブジェクト６０ｂの法線マップによって関連付けられた法線方向ｎ１に基づいて決定される。図７に示すように、ボール５６と第１の当たり判定用オブジェクト６０ａとが接触する場合、接触後のボール５６の移動方向Ｖａ１と法線方向ｎ１とのなす角度θ１（例えば、０°〜９０°）は、例えば、角度θ０と等しくなる。この場合、図３を参照して説明したように、例えば、ボール５６がゴール５０の枠と接触する場合と同様に、硬い物体に接触するような跳ね返り方をする。
【００８２】
なお、第１の当たり判定用オブジェクト６０ａとの接触後のボール５６の移動方向Ｖａ１の決定方法は、上記の例に限られない。予め定められた方法と、接触方向とＶｂと、法線方向ｎ１と、に基づいて移動方向Ｖａ１が決定されればよい。
【００８３】
また、移動制御部７８は、第２の当たり判定用オブジェクト６０ｂの表面と移動物体（例えば、ボール５６）とが接触する場合、接触位置に対応する法線方向及び接触後の移動方向のなす角が、接触方向及び前記接触位置に対応する法線方向のなす角よりも大きくなり、かつ、接触方向と接触後の移動方向とのずれが、前記第１の当たり判定用オブジェクトの表面と前記移動物体とが接触する場合よりも小さくなるように、移動物体を移動させる手段を含む。
【００８４】
別の言い方をすれば、移動制御部７８は、例えば、第２の当たり判定用オブジェクト６０ｂとボール５６とが接触する場合、第１の当たり判定用オブジェクト６０ａとボール５６とが接触する場合よりも、接触位置に対応する法線方向成分の変化の程度を小さくするように接触後の移動方向を決定する。
【００８５】
図８は、ボール５６と第２の当たり判定用オブジェクト６０ｂとが接触する場合を示す図である。図８は、ボール５６が接触位置に対して図７と同じ接触方向で接触する場合を示す。即ち、ボール５６が第２の当たり判定用オブジェクト６０ｂの接触位置に対応する法線方向ｎ２に対して角度θ０で接触した場合を示す。
【００８６】
接触後のボール５６の移動方向Ｖａ２は、第２の当たり判定用オブジェクト６０ｂの法線マップによって関連付けられた法線方向ｎ２に基づいて決定される。例えば、法線方向ｎ２と法線方向ｎ１とが同じ方向である場合、接触後のボール５６の移動方向Ｖａ２と法線方向ｎ１とのなす角度θ２（＞角度θ０、例えば、θ２は９０°〜１８０°）は、角度θ１よりも大きい角度となる。
【００８７】
つまり、移動方向Ｖａ２の方が、移動方向Ｖａ１よりも、法線方向ｎ１，ｎ２成分の変化が小さくなる。別の言い方をすれば、例えば、接触方向Ｖｂと移動方向Ｖａ２との余弦は、接触方向Ｖｂと移動方向Ｖａ１との余弦よりも大きくなる。
【００８８】
このように、移動制御部７８は、ボール５６の第２の当たり判定用オブジェクト６０ａに対する接触方向と接触後の移動方向とのずれ（例えば、１８０°−θ２−θ０）が、ボール５６の第１の当たり判定用オブジェクト６０ａに対する接触方向と接触後の移動方向とのずれ（例えば、１８０°−θ１−θ０）よりも小さくなるような移動方向Ｖａ２に対して、接触後のボール５６を移動させる。
【００８９】
本実施形態においては、図４に示すように、第２の当たり判定用オブジェクト６０ｂの内部に第１の当たり判定用オブジェクト６０ａが設定されるので、ボール５６と第２の当たり判定用オブジェクト６０ｂとが接触した後、ボール５６と第１の当たり判定用オブジェクト６０ａとが接触することになる。
【００９０】
本実施形態のようにボール５６の移動制御が行われることによって、柔らかい物体にめり込んだ後、硬い物体に跳ね返る様子を表現することができる。ここで、選手キャラクタ５２（５４）の脚（図４）にボール５６が接触して跳ね返る様子について詳細に説明する。
【００９１】
図９は、当たり判定用オブジェクト６０に接触して移動するボール５６の軌道を示す図である。図９は、ボール５６が、選手キャラクタ５２の脚に跳ね返る場合を示す。即ち、ボール５６が選手キャラクタ５２の脚に対応する当たり判定用オブジェクト６０に接触する場合を示している。
【００９２】
図９においては、ボール５６が第１の当たり判定用オブジェクト６０ａには接触せず、第２の当たり判定用オブジェクト６０ｂにのみ接触する場合（図９に示す軌道Ｃ１）と、ボール５６が第１の当たり判定用オブジェクト６０ａ，６０ｂの両者に接触する場合（図９に示す軌道Ｃ２）と、の２通りを示している。
【００９３】
まず、軌道Ｃ１について説明する。即ち、ボール５６が比較的柔らかい第２の当たり判定用オブジェクト６０ｂにのみ接触する場合について説明する。
【００９４】
ここで、あるフレーム（ｋ番目のフレームとする。）におけるボール５６の位置を、位置Ｐ（ｋ）とする。表示部３２に次のフレーム（ｋ＋１番目のフレームとする。）が表示されるまでの間に、（ｋ＋１）番目のフレームにおいてボール５６が移動すべき仮位置Ｑ（ｋ＋１）が算出される。例えば、位置Ｐ（ｋ）から、ボール５６の移動方向Ｖ１ｋに対して移動速度Ｓ１ｋに応じた距離Ｄ１ｋだけ離れるように、仮位置Ｑ（ｋ＋１）が算出される。
【００９５】
仮位置Ｑ（ｋ＋１）は、第２の当たり判定用オブジェクト６０ｂの内部にあるので、ｋ番目のフレームと（ｋ＋１）番目のフレームの間に、ボール５６と選手キャラクタ５２（５４）とが接触する、と判定される。この場合、ボール５６が選手キャラクタ５２（５４）の脚の筋肉と接触し、ボール５６が筋肉にめり込むような移動制御が実行される。
【００９６】
図８を参照して説明したように、まず、ボール５６と接触した第２の当たり判定用オブジェクト６０ｂの接触位置の法線マップが参照され、接触位置に対応する法線方向ｎ２ｋが取得される。次いで、接触方向Ｖｂｋと法線方向ｎ２ｋとのなす角度θ０ｋに基づいて、接触後の移動方向Ｖａ２ｋが決定される。ボール５６と第２の当たり判定用オブジェクト６０ｂの接触位置Ｒｋから、この移動方向Ｖａ２ｋに対して所定距離Ｄ２ｋだけ離れた位置が、（ｋ＋１）番目のフレームにおけるボール５６の位置Ｐ（ｋ＋１）として決定される。
【００９７】
図９に戻り、（ｋ＋１）番目以降のフレームにおいては、ボール５６は第１の当たり判定用オブジェクト６０ａと接触しないので、例えば、位置Ｐ（ｋ＋１）における移動方向Ｖａ２ｋを保ったまま、位置Ｐ（ｋ＋２），Ｐ（ｋ＋３）のようにボール５６が移動することになる。
【００９８】
次に軌道Ｃ２について説明する。即ち、ボール５６が柔らかいオブジェクトに接触してめり込みながら、この柔らかいオブジェクトの中にある硬いオブジェクトに接触して跳ね返る場合について説明する。
【００９９】
ここで、あるフレーム（ｉ番目とする。）におけるボール５６の位置を位置Ｐ（ｉ）とする。表示部３２に次のフレーム（ｉ＋１番目のフレームとする。）が表示されるまでの間に、（ｉ＋１）番目のフレームにおいてボール５６が移動すべき仮位置Ｑ（ｉ＋１）が算出される。例えば、位置Ｐ（ｉ）から、ボール５６の移動方向Ｖ１ｉ（接触方向Ｖｂｉ）に対して移動速度Ｓ１ｉに応じた距離Ｄ１ｉだけ離れるように、仮位置Ｑ（ｉ＋１）が算出される。
【０１００】
図９に示すように、仮位置Ｑ（ｉ＋１）は、第２の当たり判定用オブジェクト６０ｂの内部にあるので、ｉ番目のフレームと（ｉ＋１）番目のフレームの間に、ボール５６と選手キャラクタ５２（５４）とが接触する、と判定される。この場合、法線マップが参照され、第２の当たり判定用オブジェクト６０ｂの接触位置Ｒ２ｉに対応する法線方向ｎ２ｉに基づいて、（ｉ＋１）番目のフレームにおけるボール５６の位置Ｐ（ｉ＋１）が決定される。
【０１０１】
具体的には、まず、ボール５６と接触した第２の当たり判定用オブジェクト６０ｂの接触位置の法線マップが参照され、接触位置に対応する法線方向ｎ２ｉが取得される。次いで、接触方向Ｖｂｉと法線方向ｎ２ｉとのなす角度θ０ｉに基づいて、接触後の移動方向Ｖａ２ｉが決定される。ボール５６と第２の当たり判定用オブジェクト６０ｂの接触位置Ｒ２ｉから、この移動方向Ｖａ２ｉに対して所定距離Ｄ２ｉだけ離れた位置が、（ｉ＋１）番目のフレームにおけるボール５６の位置Ｐ（ｉ＋１）として決定される。
【０１０２】
次いで、移動方向Ｖａ２を保ったままボール５６が移動するように、（ｉ＋２）番目のフレームにおいてボール５６が移動すべき仮位置Ｑ（ｉ＋２）が算出される。図９に示すように、仮位置Ｑ（ｉ＋２）は、第１の当たり判定用オブジェクト６０ａの内部にあるので、ボール５６と第１の当たり判定用オブジェクト６０ａとが接触した、と判定される。この場合、第１の当たり判定用オブジェクト６０ａの接触位置の法線方向ｎ１ｉに基づいて接触後の移動方向Ｖａ３ｉが決定される。例えば、接触前の移動方向Ｖａ２ｉと法線方向ｎ１ｉのなす角度と、接触後の移動方向Ｖａ３ｉと法線方向ｎ１ｉのなす角度と、が等しくなるように、接触後の移動方向Ｖａ３ｉが決定される。
【０１０３】
ボール５６と第１の当たり判定用オブジェクト６０ａの接触位置Ｒから、この移動方向Ｖａ１に対して所定距離Ｄ３だけ離れた位置が、（ｉ＋２）番目のフレームにおけるボール５６の位置Ｐ（ｉ＋２）として決定される。図８に示すように、（ｉ＋３）番目以降のフレームは、他の当たり判定用オブジェクト６０とボール５６は接触しないので、例えば、ボール５６は移動方向Ｖａ２を保ったまま、位置Ｐ（ｉ＋３），Ｐ（ｉ＋４）のように移動する。
【０１０４】
このように、軌道Ｃ２の場合、軌道Ｃ１とは異なり、ボール５６の移動方向が２段階で変化することになる。このようにすることによって、柔らかい物体（筋肉やユニフォーム）の内部にある硬い物体（骨）に接触して跳ね返るような移動制御をゲーム空間において実現することができる。
【０１０５】
［１−４．ゲーム装置において実行される処理］
次に、ゲーム装置１０で実行される処理について説明する。図１０は、ゲーム装置１０が所定時間（例えば、１／６０秒）ごとに実行する処理を示すフロー図である。制御部１４が、光ディスク３６に記憶されたプログラムに従って、図１０に示す処理を実行する。
【０１０６】
まず、図１０に示すように、制御部１４は、現在のフレームの次のフレームにおけるボール５６の仮位置を算出する（Ｓ１０１）。例えば、Ｓ１０１においては、ゲームデータ記憶部７０に記憶されたゲーム状況データが参照される。例えば、ゲーム状況データに格納されたボール５６の位置、移動方向、及び移動速度に基づいて、次のフレームにおけるボール５６の仮位置が算出される。
【０１０７】
制御部１４（接触判定部７６）は、Ｓ１０１で算出した仮位置に基づいてボール５６が第１の当たり判定用オブジェクト６０ａ又は第２の当たり判定用オブジェクト６０ｂに接触するか否かを判定する（Ｓ１０２）。Ｓ１０２においては、例えば、ボール５６の仮位置が、ゲーム空間４０に設定される当たり判定用オブジェクト６０の内部にあるか否かが判定される。
【０１０８】
ボール５６が第１の当たり判定用オブジェクト６０ａに接触する場合（Ｓ１０２；第１）、制御部１４は、第１の当たり判定用オブジェクト６０ａの接触位置に対応する法線方向と、ボール５６の接触方向と、に基づいて第１の当たり判定用オブジェクト６０ａと接触後のボール５６の移動方向を決定する（Ｓ１０３）。この場合、接触後の移動方向Ｖａ１が図７のようにして決定される。
【０１０９】
制御部１４（移動制御部７８）は、Ｓ１０３において決定された移動方向にボール５６を移動させる（Ｓ１０４）。Ｓ１０４においては、ゲーム状況データに格納されたボール５６の位置が更新される。即ち、次のフレームの表示処理が実行され、表示部３２には、例えば、選手キャラクタ５２（５４）に接触したボール５６が跳ね返るようなゲーム画面が表示される。
【０１１０】
ボール５６が第２の当たり判定用オブジェクト６０ｂに接触する場合（Ｓ１０２；第２）、制御部１４は、接触フラグが既にオンになっているか否かを判定する（Ｓ１０５）。接触フラグとは、ボール５６と第２の当たり判定用オブジェクト６０ｂとが接触しているか否かを示すフラグである。接触フラグは、例えば、主記憶１６（ゲームデータ記憶部７０）に記憶される。
【０１１１】
接触フラグがオンになっていない場合（Ｓ１０５；Ｎ）、制御部１４は、接触フラグをオンにし、第２の当たり判定用オブジェクト６０ｂの接触位置に対応する法線方向と、ボール５６の接触方向と、に基づいて第２の当たり判定用オブジェクト６０ｂと接触後のボール５６の移動方向を決定する（Ｓ１０６）。この場合、接触後の移動方向Ｖａ２が、図８のようにして決定される。制御部１４（移動制御部７８）は、Ｓ１０６において決定された移動方向にボール５６を移動させる（Ｓ１０７）。
【０１１２】
一方、接触フラグが既にオンになっている場合（Ｓ１０５；Ｙ）、制御部１４は、移動方向を保ったまま、Ｓ１０１で算出された仮位置にボール５６を移動させる（Ｓ１０８）。
【０１１３】
一方、ボール５６が当たり判定用オブジェクト６０に接触しない場合（Ｓ１０２；Ｎ）、制御部１４は、接触フラグをオフにし、Ｓ１０１で算出された仮位置にボール５６を移動させる（Ｓ１０９）。即ち、この場合には、ボール５６が選手キャラクタ５２（５４）と接触しないので、ボール５６がオブジェクトに接触して跳ね返るような移動制御は行われない。
【０１１４】
Ｓ１０７〜Ｓ１０９においても、Ｓ１０４と同様に、ゲーム状況データに格納されたボール５６の位置が、Ｓ１０１で算出された仮位置に更新される。つまり、次のフレームの表示処理が実行される。
【０１１５】
以上説明したゲーム装置１０によれば、選手キャラクタ５２（５４）に対応する当たり判定用オブジェクト６０を用いて、ボール５６と選手キャラクタ５２（５４）とが接触する様子を表現することができる。即ち、柔らかい物体にめり込みながら硬い物体に跳ね返る様子を表現することができるので、自然な印象をユーザに与えることができる。
【０１１６】
さらに、本実施形態のように、ポリゴン数が比較的少ない当たり判定用オブジェクト６０を用いることによって、選手キャラクタ５２（５４）のポリゴンをそのまま接触判定に用いる場合に比べて、ゲーム装置１０の処理負荷を軽減しつつ、ボール５６とオブジェクトとが接触する様子を表現することができる。
【０１１７】
また例えば、本実施形態のように、ゲーム装置１０が、法線マップを用いて接触後のボール５６の移動方向を決定することによって、比較的簡易な形状の当たり判定用オブジェクト６０を使用しても、種々の跳ね返り方を実現することができる。
【０１１８】
［２．変形例］
なお、本発明は、上記の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
【０１１９】
［２−１．変形例１］
実施形態においては、ボール５６と第２の当たり判定用オブジェクト６０ｂとが接触した場合の接触後の移動方向Ｖａ２が、ボール５６と第１の当たり判定用オブジェクト６０ａとが接触した場合の接触後の移動方向Ｖａ１よりも、法線方向ｎ１，ｎ２成分の変化が弱くなるように決定される場合を説明したが、接触後のボール５６の移動制御方法は、これに限られない。他にも例えば、以下のように接触後のボール５６の移動が制御されることによって、ボール５６が、第２の当たり判定用オブジェクト６０ｂにめり込む様子を表現してもよい。
【０１２０】
［２−１−１．変形例１−１］
例えば、法線マップによって定まる法線方向を、接触方向に基づいて動的にずらすことによって、接触後のボール５６の移動方向が決定されるようにしてもよい。例えば、第２の当たり判定用オブジェクト６０ｂとボール５６とが接触する場合、法線マップが示す法線方向ｎ２を所定角度だけ接触方向側にずらすようにしてもよい。
【０１２１】
変形例１−１の場合、移動制御部７８は、第２の当たり判定用オブジェクト６０ｂと移動物体（例えば、ボール５６）とが接触する場合、法線マップによって定義される法線方向を接触方向に対して所定角度回転させた方向に基づいて接触後の移動方向を決定する。
【０１２２】
図１１は、変形例１−１における接触位置の拡大図である。図１１に示すように、例えば、接触位置の法線マップが示す法線方向ｎ２を、接触方向Ｖｂの向きに角度αだけ回転させた方向ｎ３に基づいて、接触後の移動方向Ｖａ２が決定されるようにしてもよい。変形例１−１においては、例えば、この方向ｎ３に基づいて接触後のボール５６の移動方向Ｖａ２が決定される。
【０１２３】
具体的には、ボール５６が方向ｎ３に対して角度θ３で接触した場合、方向ｎ３と接触後の移動方向Ｖａ２のなす角度が、角度θ３となるように移動方向Ｖａ２が決定される。別の言い方をすれば、ボール５６の移動方向Ｖｂと方向ｎ３とのなす角は角度（θ０＋α）なので、方向ｎ３から角度（θ０＋α）だけ右回りに（接触方向回りに）回転した方向が、接触後の移動方向Ｖａ２として決定されることになる。
【０１２４】
［２−１−２．変形例１−２］
また例えば、接触後の移動方向Ｖａ２を決定する場合に、接触方向Ｖｂを所定角度だけずらした方向に基づいて接触後の移動方向Ｖａ２を計算するようにしてもよい。
【０１２５】
変形例１−２の場合、移動制御部７８は、第２の当たり判定用オブジェクト６０ｂと移動物体（例えば、ボール５６）とが接触する場合、接触方向Ｖｂを、接触位置に対応する法線方向に対して所定角度回転させた方向Ｖｃに基づいて接触後の移動方向を決定する。
【０１２６】
図１２は、変形例１−２における接触位置の拡大図である。図１２に示すように、接触方向Ｖｂを所定角度βだけ法線方向ｎ２に対して回転させた方向Ｖｃに基づいて、接触後の移動方向Ｖａ２が計算される。例えば、方向Ｖｃと法線方向ｎ２とのなす角度を角度θ４とすると、法線方向ｎ２と接触後の移動方向Ｖａ２のなす角度が角度θ４（＞角度θ０）となるように接触後の移動方向Ｖａ２が計算されることになる。
【０１２７】
［２−１−３．変形例１−３］
また例えば、ボール５６と第２の当たり判定用オブジェクト６０ｂとが接触した場合、いったん第１の当たり判定用オブジェクト６０ａの場合と同様の方法で接触後の仮位置を算出し、この仮位置を所定方向にずらした位置に接触後のボール５６を移動させるようにしてもよい。
【０１２８】
変形例１−３の場合、移動制御部７８は、第２の当たり判定用オブジェクト６０ｂと移動物体（例えば、ボール５６）とが接触する場合、接触方向Ｖｂと接触位置に対応する法線方向とに基づいて決定される仮位置から、当該法線方向の逆方向に対応する向きに対して所定距離だけ離れた位置に接触後の移動物体を移動させる。法線方向の逆方向とは、接触位置に対応する法線方向の逆ベクトルのことである。逆方向に対応する向きとは、この逆ベクトルとの余弦が所定範囲（例えば、０．７以上）となる向きのことである。
【０１２９】
図１３は、変形例１−３における接触位置の拡大図である。図１３に示すように、法線方向ｎ２から角度θ０だけ回転した方向Ｖａ２’に対して、接触位置から所定距離だけ離れた位置を仮位置Ｑとする。方向Ｖａ２’は、例えば、図７の移動方向Ｖａ１と同じ方向である。即ち、この仮位置Ｑの決定方法は、ボール５６と第１の当たり判定用オブジェクト６０ａとが接触した場合と同様である。
【０１３０】
変形例１−３の方法においては、この仮位置Ｑを、例えば、法線方向ｎ２の逆方向に対応する向きＶｑｐに対して所定距離だけ離れた位置Ｐを、接触後のボール５６の位置とすることになる。
【０１３１】
［２−２．変形例２］
また例えば、ボール５６と当たり判定用オブジェクト６０とが接触した場合、ボール５６の回転数や移動速度が変更されるようにしてもよい。ここで、ボール５６の回転数及び移動速度は、例えば、相関関係があるようにしてよい。例えば、ボール５６の回転数が増加すると移動速度が減少する。一方、例えば、ボール５６の移動速度が増加すると回転数が減少する。
【０１３２】
変形例２の移動制御部７８は、移動物体（例えば、ボール５６）の移動速度又は回転数の少なくとも一方を示す移動状態データを記憶する手段（例えば、ゲームデータ記憶部７０）から移動状態データを取得する手段を含む。移動状態データは、ゲーム状況データに含まれるデータのうち、ボール５６の移動速度又は回転数の少なくとも一方を示すデータである。
【０１３３】
また、移動制御部７８は、第１の当たり判定用オブジェクト６０ａの表面又は第２の当たり判定用オブジェクト６０ｂの表面と移動物体（例えば、ボール５６）とが接触する場合、移動物体の接触方向及び接触後の移動物体の移動方向のずれに基づいて移動状態データが示す移動物体の移動速度又は回転数の少なくとも一方を変更する手段を含む。この変更具合は、例えば、接触方向Ｖｂと接触後の移動方向Ｖａとのずれ具合（なす角度。即ち、余弦の大きさ。）に基づいて決定される。
【０１３４】
例えば、接触方向Ｖｂと接触後の移動方向Ｖａとのずれが少ないほど、接触後のボール５６の移動速度が遅くなる。また例えば、接触方向Ｖｂと接触後の移動方向Ｖａとのずれが少ないほど、接触後のボール５６の回転数が増加する。このようにすることによって、ボール５６が、サッカー選手の表面に摺って回転し、速度が落ちる様子を表現することができる。
【０１３５】
［２−３．変形例３］
また、実施形態においては、第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂとの位置関係を図４のような場合を例に挙げて説明したが、これらの位置関係は図４の例に限られない。
【０１３６】
ボール５６と第２の当たり判定用オブジェクト６０ｂとが接触した後に、ボール５６と第１の当たり判定用オブジェクト６０ａとが接触するように、第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂとが設定されるようにすればよい。
【０１３７】
別の言い方をすれば、ボール５６が選手キャラクタ５２（５４）に向かって移動してきたと仮定した場合、ボール５６が第１の当たり判定用オブジェクト６０ａの表面に接触する前に第２の当たり判定用オブジェクト６０ｂに接触するように、第１の当たり判定用オブジェクト６０ａ及び第２の当たり判定用オブジェクト６０ｂが配置されるようにすればよい。即ち、上記のようにして、ボール５６が柔らかい物体にめり込んだ後に、硬い物体に当って跳ね返る様子を表現することができればよい。
【０１３８】
［２−３−１．変形例３−１］
例えば、第２の当たり判定用オブジェクト６０ｂの表面（外周面）が、第１の当たり判定用オブジェクト６０ａの全体を覆わないように設定されるようにしてもよい。即ち、図４のように第２の当たり判定用オブジェクト６０ｂの表面によって覆われる領域内に、第１の当たり判定用オブジェクト６０ａの一部又は全部が含まれるようにしなくてもよい。
【０１３９】
図１４は、変形例３−１における当たり判定用オブジェクト６０の位置関係を示す図である。図１４に示すように、変形例３−１においては、第２の当たり判定用オブジェクト６０ｂが、第１の当たり判定用オブジェクト６０ａの表面に隣接する位置に設定される場合について説明する。なお、第１の当たり判定用オブジェクト６０ａは、実施形態と同様の位置に設定される。
【０１４０】
変形例１のように当たり判定用オブジェクト６０が設定された場合、例えば、第１の当たり判定用オブジェクト６０ａは、選手キャラクタ５２（５４）の頭部に相当する。第２の当たり判定用オブジェクト６０ｂは、例えば、選手キャラクタ５２（５４）の髪の毛に相当する。
【０１４１】
即ち、変形例１においては、選手キャラクタ５２（５４）のうち、比較的硬い部位である頭部を、第１の当たり判定用オブジェクト６０ａとして表現することができる。一方、選手キャラクタ５２（５４）のうち、比較的柔らかい部位である髪の毛を、第２の当たり判定用オブジェクト６０ｂとして表現することができる。
【０１４２】
なお、接触判定部７６が接触判定を行う方法、及び、移動制御部７８がボール５６の移動制御を行う方法は、実施形態と同様である。また、本変形例においても、当たり判定用オブジェクト６０には、法線マップが設定される。
【０１４３】
図１５は、変形例３−１における当たり判定用オブジェクト６０と接触するボール５６の移動制御の一例を示す図である。図１５に示す例では、ボール５６が、当たり判定用オブジェクト６０と接する様子を、３つの軌道を例に挙げて説明する。
【０１４４】
まず、ボール５６が、第２の当たり判定用オブジェクト６０ｂとは接触せずに、第１の当たり判定用オブジェクト６０ａのみと接触する場合（軌道Ｃ３という。）について説明する。この場合、ボール５６が、図７に示す方法と同様の制御が行われ、硬いオブジェクトに跳ね返るように移動制御がなされる。即ち例えば、選手キャラクタ５２（５４）が、額でボール５６をヘディングするような移動制御が行われる。
【０１４５】
次に、ボール５６が、第１の当たり判定用オブジェクト６０ａとは接触せずに、第２の当たり判定用オブジェクト６０ｂのみと接触する場合（軌道Ｃ４という。）、実施形態で説明した軌道Ｃ１と同様に、ボール５６が、柔らかいオブジェクトにめり込むように移動制御がなされる。この場合、例えば、選手キャラクタ５２（５４）が、ヘディングを失敗して、ボール５６が髪の毛にこすれたような軌道となる。
【０１４６】
最後に、ボール５６が、第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂの両者と接触する場合（軌道Ｃ５という。）場合、実施形態の軌道Ｃ２と同様の移動制御が実行される。つまり、ボール５６が、柔らかい第２の当たり判定用オブジェクト６０ｂにめり込んだ後、硬い第１の当たり判定用オブジェクト６０ａに当って跳ね返る様子を表現することができる。軌道Ｃ５の場合、この場合、例えば、髪の毛の長いサッカー選手が、ボール５６をヘディングする様子を表現することができる。
【０１４７】
変形例３−１のゲーム装置１０によれば、硬い物体と柔らかい物体とが隣接しているようなオブジェクトに移動物体が接触して跳ね返る様子を表現することができる。
【０１４８】
［２−３−２．変形例３−２］
また例えば、第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂとの間に隙間があってもよい。つまり、実施形態においては、第１の当たり判定用オブジェクト６０ａが第２の当たり判定用オブジェクト６０ｂに含まれており、変形例３−１においては、第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂとが互いに隣接する位置関係の場合を説明したが、第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂとは、互いに離れていてもよい。
【０１４９】
図１６は、変形例３−２における第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂとの位置関係の一例を示す図である。図１６のように、第１の当たり判定用オブジェクト６０ａが第２の当たり判定用オブジェクト６０ｂに含まれておらず、第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂとの間が離れていてもよい。この場合も、第２の当たり判定用オブジェクト６０ｂの表面によって第１の当たり判定用オブジェクト６０ａが含まれる。図１６においては、実施形態と同様に（図９）、ボール５６の移動制御がなされる。
【０１５０】
図１７は、変形例３−２における第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂとの位置関係の一例を示す図である。図１７のように、第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂとが互いに隣接する位置ではなく、第１の当たり判定用オブジェクト６０ａと第２の当たり判定用オブジェクト６０ｂとの間が離れていてもよい。
【０１５１】
この場合も、第２の当たり判定用オブジェクト６０ｂの表面は、第１の当たり判定用オブジェクト６０ａを含まないように設定されていることになる。図１６においては、変形例３と同様に（図１５）、ボール５６の移動制御がなされる。
【０１５２】
［２−４．その他変形例］
なお、上記実施形態及び変形例の少なくとも２つ以上を組み合わせてもよい。
【０１５３】
また例えば、本発明は、サッカーゲーム以外のスポーツゲームを実行するゲーム装置にも適用することができる。つまり、本発明は、ゲーム空間を移動物体（パック等）が移動するゲームに適用できる。例えば、バスケットボールゲーム、アイスホッケーゲーム、又は、アメリカンフットボールゲームなどを実行するゲーム装置にも、本発明は、適用することができる。
【符号の説明】
【０１５４】
１０  ゲーム装置、１１  家庭用ゲーム機、１２  バス、１４  制御部、１６  主記憶、１８  画像処理部、２０  入出力処理部、２２  音声処理部、２４  光ディスク再生部、２６  ハードディスク、２８  通信インタフェース、３０  コントローラ、３２  表示部、３４  音声出力部、３６  光ディスク、４０  ゲーム空間、４２  フィールド、５０  ゴール、５２，５４  選手キャラクタ、５６  ボール、５８  仮想カメラ、６０，６０ａ，６０ｂ  当たり判定用オブジェクト、７０  ゲームデータ記憶部、７２  法線マップ取得部、７４  当たり判定用オブジェクト設定部、７６  接触判定部、７８  移動制御部、ｎ，ｎ１，ｎ２  法線方向、Ｐ  位置、Ｑ  仮位置、Ｒ  接触位置、Ｖ１，Ｖａ  移動方向、Ｖｂ  接触方向、ｎ３，Ｖｃ  方向、ｄ  所定距離、Ｃ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５  軌道、Ｅ  領域。
【図１】
0005236697.tif 000002
【図２】
0005236697.tif 000003
【図３】
0005236697.tif 000004
【図４】
0005236697.tif 000005
【図５】
0005236697.tif 000006
【図６】
0005236697.tif 000007
【図７】
0005236697.tif 000008
【図８】
0005236697.tif 000009
【図９】
0005236697.tif 000010
【図１０】
0005236697.tif 000011
【図１１】
0005236697.tif 000012
【図１２】
0005236697.tif 000013
【図１３】
0005236697.tif 000014
【図１４】
0005236697.tif 000015
【図１５】
0005236697.tif 000016
【図１６】
0005236697.tif 000017
【図１７】
0005236697.tif 000018