(57)【特許請求の範囲】
【請求項１】
仮想ゲーム空間内に地形オブジェクトと可動オブジェクトが配置されたゲーム画像を画
面に表示する表示装置と、操作装置とが接続されたゲーム装置のコンピュータを、
前記操作装置によって指示された前記地形オブジェクトの指示位置を検出するための指示位置検出手段と、
前記検出された前記地形オブジェクトの指示位置およびその周辺の地形の形状を変形させる形状変化手段と、
前記形状変化手段によって変形された形状に基づいて前記可動オブジェクトの移動を制御する可動オブジェクト制御手段として機能させ、
前記形状変化手段による地形の形状の変化を繰り返し行うことによって、前記可動オブジェクトを間接的に操作する、ゲームプログラム。
【請求項２】
前記形状変化手段は、前記指示位置からの距離に応じて高さが段階的に変化するように、当該指示位置の高さを所定の高さに決定し、当該指示位置からの距離に応じて、変形させる前の地形オブジェクトの地表との高低差が段階的に小さくなるような形状に周囲の形状を変形させる、請求項１に記載のゲームプログラム。
【請求項３】
前記操作装置から第１の操作データまたは第２の操作データを取得する操作データ取得手段として前記コンピュータをさらに機能させ、
前記形状変化手段は、操作データ取得手段で前記第１操作データが取得されたときは、前記地形オブジェクトの指示位置およびその周辺の高さを第１の方向に向けて変化させ、前記第２操作データが取得されたときは、前記地形オブジェクトの指示位置およびその周辺の高さを前記第１の方向とは異なる第２の方向に向けて変化させる、請求項１記載のゲームプログラム。
【請求項４】
前記形状変化手段で変形された前記地形オブジェクトの形状を変形させる前の状態に回復させるための回復処理手段として前記コンピュータをさらに機能させる、請求項１記載のゲームプログラム。
【請求項５】
前記地形オブジェクトは、複数のポリゴンから構成され、
前記形状変化手段は、
前記地形オブジェクトの指示位置と前記複数のポリゴンの各頂点との距離を算出する距離算出手段と、
前記距離に基づいて前記複数のポリゴンの各頂点のそれぞれの高さの変化量を算出する変化量算出手段と、
前記変化量に基づいて前記複数のポリゴンの各頂点の位置を変化させる変化処理手段とを含む、請求項１記載のゲームプログラム。
【請求項６】
前記形状変化手段によって変形された前記地形オブジェクトの形状を、変形させる前の状態に回復させるための回復処理手段として前記コンピュータをさらに機能させ、
前記回復処理手段は、所定のポリゴンの頂点の高さについて、当該頂点の周辺の頂点の高さに近づくように変化量を算出する、請求項５に記載のゲームプログラム。
【請求項７】
前記可動オブジェクト制御手段は、
前記可動オブジェクトが前記地形オブジェクトに接したとき、前記変化量算出手段で算出された前記変化量に基づいて接地面における物理計算を行うことで前記可動オブジェクトの移動量を算出する移動量算出手段と、
前記移動量に基づいて前記可動オブジェクトを移動させる移動処理手段とを含む、請求項５記載のゲームプログラム。
【請求項８】
前記変化処理手段によって変化された前記複数のポリゴンの法線ベクトルを算出する法線ベクトル算出手段と、
前記仮想ゲーム空間内において真下方向へと向かうベクトルである重力ベクトルを算出する重力ベクトル算出手段として前記コンピュータをさらに機能させ、
前記可動オブジェクト制御手段は、前記法線ベクトルおよび前記重力ベクトルに基づいて物理計算を行うことで、前記可動オブジェクトの移動方向を設定する移動方向設定手段を含む、請求項５記載のゲームプログラム。
【請求項９】
前記複数のポリゴンの一部には特定処理情報が設定されており、
前記可動オブジェクトが接しているポリゴンに前記特定処理情報が設定されているか否かを判別する判別手段と、
前記判別手段により前記特定処理情報が設定されていることが判別されたとき、前記移動量算出手段によって算出された前記移動量および前記移動方向設定手段によって設定された前記移動方向の少なくとも一方を補正する移動情報補正手段として前記コンピュータをさらに機能させ、
前記移動処理手段は、前記移動情報補正手段によって補正された移動量および移動方向の少なくとも一方に基づいて前記可動オブジェクトを移動させる、請求項７または８記載のゲームプログラム。
【請求項１０】
前記ゲームプログラムで実行させるゲームは、
前記可動オブジェクトをボールとし、
目標枠により区画された目標に向けてボールを移動させ、当該ボールを前記目標枠内に入れることによって得られる得点を競う球技ゲームであり、
前記目標枠に向けて前記ボールを移動させる操作は、操作対象にシュートを行わせる操作である、請求項１に記載のゲームプログラム。
【請求項１１】
仮想ゲーム空間内に地形オブジェクトと可動オブジェクトが配置されたゲーム画像を画面に表示する表示装置と、
操作装置と、
前記操作装置によって指示された地形オブジェクトの指示位置を検出するための指示位置検出部と、
前記検出された前記地形オブジェクトの指示位置およびその周辺の地形の形状を変形させる形状変化部と、
前記形状変化部によって変形された形状に基づいて前記可動オブジェクトの移動を制御する可動オブジェクト制御部とを備え、
前記形状変化部による地形の形状の変化を繰り返し行うことによって、前記可動オブジェクトを間接的に操作する、ゲームシステム。
【請求項１２】
仮想ゲーム空間内に地形オブジェクトと可動オブジェクトが配置されたゲーム画像を画面に表示する表示装置と、操作装置とが接続されたゲーム装置であって、
前記操作装置によって指示された地形オブジェクトの指示位置を検出するための指示位置検出部と、
前記検出された前記地形オブジェクトの指示位置およびその周辺の地形の形状を変形させる形状変化部と、
前記形状変化部によって変形された形状に基づいて前記可動オブジェクトの移動を制御する可動オブジェクト制御部とを備え、
前記形状変化部による地形の形状の変化を繰り返し行うことによって、前記可動オブジェクトを間接的に操作する、ゲーム装置。
【請求項１３】
仮想ゲーム空間内に地形オブジェクトと可動オブジェクトが配置されたゲーム画像を画面に表示する表示装置と、操作装置とを備えるゲームシステムに用いられるゲーム処理制御方法であって、
前記操作装置によって指示された地形オブジェクトの指示位置を検出するための指示位置検出ステップと、
前記検出された前記地形オブジェクトの指示位置およびその周辺の地形の形状を変形させる形状変化ステップと、
前記形状変化ステップにおいて変形された形状に基づいて前記可動オブジェクトの移動を制御する可動オブジェクト制御ステップとを備え、
前記形状変化ステップによる地形の形状の変化を繰り返し行うことによって、前記可動オブジェクトを間接的に操作する、ゲーム処理制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームプログラム、ゲームシステムおよびゲーム装置に関し、より特定的には、プレイヤキャラクタが地形オブジェクトを指示することで可動オブジェクトを動かすゲームのゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
従来より、ゲームの臨場感を高めるために、ゲーム空間内の地形等の背景を変化させる技術がある。例えば、巨大ロボットであるプレイヤキャラクタが建物にぶつかった場合に、その建物が崩壊するように表示したり、また、当該巨大ロボットが高い位置から道路に着地したときに、足元の道路が凹むような表示を行って、ゲームの臨場感やリアリティを高める（例えば、特許文献１）。また、横スクロール方式のシューティングゲームにおいて、上下の地形がうねっているように表現するために、数フレーム単位で異なる形状の地形の画像を表示する技術もある（例えば、特許文献２）。
【特許文献１】特開２００１−２２４８４９号公報
【特許文献２】特開平１１−５３５７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記特許文献に開示された背景の変化は、プレイヤがプレイヤキャラクタを操作した結果として、地形等の背景オブジェクトが変化するものである。すなわち、プレイヤが直接に地形等の背景オブジェクトを指定して、その形状を変化させるものではなかった。
【０００４】
それ故に、本発明の目的は、プレイヤに地形オブジェクトを直接指示させ、当該指示された位置の形状を変化させることでオブジェクトを移動させるゲームプログラム、ゲームシステムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００５】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００６】
第１の発明は、仮想ゲーム空間内に地形オブジェクトと可動オブジェクトが配置されたゲーム画像を画面に表示する表示装置と、操作装置とが接続されたゲーム装置のコンピュータで実行されるゲームプログラムであって、指示位置検出ステップ（Ｓ３２）と、形状変化ステップ（Ｓ３７、Ｓ３９）と、可動オブジェクト制御ステップ（Ｓ４、Ｓ６、Ｓ８）とを備える。指示位置検出ステップは、操作装置によって指示された地形オブジェクトの指示位置を検出する。形状変化ステップは、検出された地形オブジェクトの指示位置およびその周辺の地形の形状を、当該指示位置からの距離に応じて高さが段階的に変化する形状に変形させる。可動オブジェクト制御ステップは、可動オブジェクトが地形オブジェクトに接したとき、形状変化ステップによって変形された形状に基づいて接地面における物理計算を行い、当該計算の結果に基づいて可動オブジェクトの移動を制御する。
【０００７】
第２の発明は、第１の発明において、形状変化ステップは、指示位置の高さを所定の高さに決定し、当該指示位置からの距離に応じて、変形させる前の地形オブジェクトの地表との高低差が段階的に小さくなる形状に周囲の形状を変形させる。
【０００８】
第３の発明は、第１の発明において、ゲームプログラムは、操作装置から第１の操作データまたは第２の操作データを取得する操作データ取得ステップ（Ｓ３０）をさらに備える。また、形状変化ステップは、操作データ取得ステップにおいて第１操作データが取得されたときは、地形オブジェクトの指示位置およびその周辺の高さを第１の方向に向けて変化させ、第２操作データが取得されたときは、地形オブジェクトの指示位置およびその周辺の高さを第１の方向とは異なる第２の方向に向けて変化させる。
【０００９】
第４の発明は、第１の発明において、ゲームプログラムは、形状変化ステップによって変形された地形オブジェクトの形状を、変形させる前の状態に回復させるための回復処理ステップをさらに備える。
【００１０】
第５の発明は、第１の発明において、地形オブジェクトは、複数のポリゴンから構成される。また、形状変化ステップは、距離算出ステップ（Ｓ３７、Ｓ３９）と、変化量算出ステップ（Ｓ３７、Ｓ３９）と、変化処理ステップ（Ｓ３７、Ｓ３９）とを含む。距離算出ステップは、地形オブジェクトの指示位置と複数のポリゴンの各頂点との距離を算出する。変化量算出ステップは、距離に基づいて複数のポリゴンの各頂点のそれぞれの高さの変化量を算出する。変化処理ステップは、変化量に基づいて複数のポリゴンの各頂点の位置を変化させる。
【００１１】
第６の発明は、第１の発明において、ゲームプログラムは、形状変化ステップによって変形された地形オブジェクトの形状を、変形させる前の状態に回復させるための回復処理ステップ（Ｓ１）をさらに備える。また、回復処理ステップは、所定のポリゴンの頂点の高さについて、当該頂点の周辺の頂点の高さに近づくように変化量を算出する。
【００１２】
第７の発明は、第５の発明において、可動オブジェクト制御ステップは、変化量算出ステップによって算出された変化量に基づいて物理計算を行うことで可動オブジェクトの移動量を算出する移動量算出ステップ（Ｓ４、Ｓ８）と、移動量に基づいて可動オブジェクトを移動させる移動処理ステップ（Ｓ４、Ｓ８）とを含む。
【００１３】
第８の発明は、第５の発明において、ゲームプログラムは、法線ベクトル算出ステップ（Ｓ８）と、重力ベクトル算出ステップ（Ｓ４）とをさらに前記コンピュータに実行させる。法線ベクトル算出ステップは、変化処理ステップによって変化された複数のポリゴンの法線ベクトルを算出する。重力ベクトル算出ステップは、仮想ゲーム空間内において真下方向へと向かうベクトルである重力ベクトルを算出する。また、可動オブジェクト制御ステップは、法線ベクトルおよび重力ベクトルに基づいて物理計算を行うことで、可動オブジェクトの移動方向を設定する移動方向設定ステップを含む。
【００１４】
第９の発明は、第７または第８の発明において、複数のポリゴンの一部には特定処理情報が設定されている。また、ゲームプログラムは、判別ステップと、移動情報補正ステップとをさらにコンピュータに実行させる。判別ステップは、可動オブジェクトが接しているポリゴンに特定処理情報が設定されているか否かを判別する。移動情報補正ステップは、判別ステップにより特定処理情報が設定されていることが判別されたとき、移動量算出ステップによって算出された移動量および移動方向設定ステップによって設定された移動方向の少なくとも一方を補正する。さらに、移動処理ステップは、移動情報補正ステップによって補正された移動量および移動方向の少なくとも一方に基づいて可動オブジェクトを移動させる。
【００１５】
第１０の発明は、第１の発明において、ゲームプログラムで実行されるゲームは、可動オブジェクトをボールとし、目標枠により区画された目標に向けてボールを移動させ、当該ボールを目標枠内に入れることによって得られる得点を競う球技ゲームである。また、目標枠に向けてボールを移動させる操作は、操作対象にシュートを行わせる操作である。
【００１６】
第１１の発明は、表示装置（２）と、操作装置（７）と、指示位置検出部（１０）と、形状変化部（１０）と、可動オブジェクト制御部（１０）とを備える、ゲームシステムである。表示装置は、仮想ゲーム空間内に地形オブジェクトと可動オブジェクトが配置されたゲーム画像を画面に表示する。指示位置検出部は、操作装置によって指示された地形オブジェクトの指示位置を検出する。形状変化部は、検出された地形オブジェクトの指示位置およびその周辺の地形の形状を、当該指示位置からの距離に応じて高さが段階的に変化する形状に変形させる。可動オブジェクト制御部は、可動オブジェクトが地形オブジェクトに接したとき、形状変化部によって変形された形状に基づいて接地面における物理計算を行い、当該計算の結果に基づいて可動オブジェクトの移動を制御する。
【００１７】
第１２の発明は、仮想ゲーム空間内に地形オブジェクトと可動オブジェクトが配置されたゲーム画像を画面に表示する表示装置（２）と、操作装置（７）とが接続されたゲーム装置であって、指示位置検出部（１０）と、形状変化部（１０）と、可動オブジェクト制御部（１０）とを備える。指示位置検出部は、操作装置によって指示された地形オブジェクトの指示位置を検出する。形状変化部は、検出された地形オブジェクトの指示位置およびその周辺の地形の形状を、当該指示位置からの距離に応じて高さが段階的に変化する形状に変形させる。可動オブジェクト制御部は、可動オブジェクトが地形オブジェクトに接したとき、形状変化部によって変形された形状に基づいて接地面における物理計算を行い、当該計算の結果に基づいて可動オブジェクトの移動を制御する。
【発明の効果】
【００１８】
上記第１の発明によれば、地形オブジェクトをユーザの意思で変形させることで、間接的に可動オブジェクトを操作することができる。このため、新しい操作感覚のゲームが提供できる。
【００１９】
上記第２の発明によれば、指示位置を中心とした起伏を地形上に生成することができる。これによって、当該起伏を利用した可動オブジェクトの移動という新しい操作方法により、今までにない操作感覚のゲームを提供できる。
【００２０】
上記第３の発明によれば、地形の変形方向をプレイヤが選択することができる。ゲームに戦略の幅を持たせることが可能になり、より面白いゲームが提供できる。
【００２１】
上記第４の発明によれば、変形させた地形を元に戻すことができる。これにより、変形した地形が徐々に平坦になっていく様子を表現することができる。
【００２２】
上記第５の発明によれば、ポリゴンで構成される地形の変形を、当該ポリゴンの頂点演算で処理する。そのため、地形の形状変化をよりリアルに表現することができる。
【００２３】
上記第６の発明によれば、周囲のポリゴンの頂点との高さで演算できる。そのため、地形が段々と平坦になっていく様子を自然に表現することができる。
【００２４】
上記第７の発明によれば、地形オブジェクトのポリゴンの変化量に基づいて物理計算するため、地形の形状が変形することによって可動オブジェクトが移動する様子を、より自然に表現できる。
【００２５】
上記第８の発明によれば、変形した地形のポリゴンの法線ベクトル、および重力ベクトルに基づいて可動オブジェクトの移動方向が決定される。そのため、地形の変化に応じて可動オブジェクトが様々な方向に移動する様子をより自然に表現することができる。
【００２６】
上記第９の発明によれば、可動オブジェクトが所定の位置にあるときには、当該可動オブジェクトに特定の移動を行わせることができる。
【００２７】
上記第１０の発明によれば、球技ゲームの興趣を向上させることができる。
【００２８】
上記第１１乃至第１２の発明によれば、上記第１の発明と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００２９】
次に、図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。なお、図１は、当該ゲームシステム１を説明するための外観図である。以下、据置型のゲーム装置を一例にして、本発明のゲーム装置について説明する。
【００３０】
図１において、ゲームシステム１は、家庭用テレビジョン受像機等のスピーカを備えたディスプレイ（以下、モニタと記載する）２に、接続コードを介して接続される据置型ゲーム装置（以下、単にゲーム装置と記載する）３および当該ゲーム装置３に操作データを与えるコントローラ７によって構成される。また、モニタ２の周辺（図では画面の上側）には、２つのマーカ８ａおよび８ｂが設置される。マーカ８ａおよび８ｂは、具体的には赤外ＬＥＤであり、それぞれモニタ２の前方に向かって赤外光を出力する。ゲーム装置３には、接続端子を介して受信ユニット６が接続される。受信ユニット６は、コントローラ７から無線送信される操作データを受信し、コントローラ７とゲーム装置３とは無線通信によって接続される。また、ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着される。ゲーム装置３の上部主面には、当該ゲーム装置３の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置３上部の蓋を開くＯＰＥＮスイッチが設けられている。ここで、プレイヤがＯＰＥＮスイッチを押下することによって上記蓋が開き、光ディスク４の脱着が可能となる。
【００３１】
また、ゲーム装置３には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード５が必要に応じて着脱自在に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ２に表示する。さらに、ゲーム装置３は、外部メモリカード５に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００３２】
コントローラ７は、その内部に備える通信部３６（後述）から受信ユニット６が接続されたゲーム装置３へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて操作データを無線送信する。コントローラ７は、操作対象（モニタ２に表示されるオブジェクト）を操作するための操作手段である。コントローラ７には、複数の操作ボタンからなる操作部が設けられている。また、後述により明らかとなるが、コントローラ７は、当該コントローラ７から見た画像を撮像するための撮像情報演算部３５（後述）を備えている。すなわち、撮像情報演算部３５は、モニタ２の周辺に配置された各マーカ８ａおよび８ｂを撮像対象として、各マーカ８ａおよび８ｂの画像を撮像する。ゲーム装置３は、この画像を用いてコントローラ７の位置および姿勢に対応した操作信号を得る。
【００３３】
次に、図２を参照して、ゲーム装置３の構成について説明する。なお、図２は、ゲーム装置３の機能ブロック図である。
【００３４】
図２において、ゲーム装置３は、各種プログラムを実行する例えばリスク（ＲＩＳＣ）ＣＰＵ（セントラルプロセッシングユニット）１０を備える。ＣＰＵ１０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ１３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ１０には、メモリコントローラ１１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２、メインメモリ１３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）３５が接続される。また、メモリコントローラ１１には、所定のバスを介して、コントローラＩ／Ｆ（インターフェース）１６、ビデオＩ／Ｆ１７、外部メモリＩ／Ｆ１８、オーディオＩ／Ｆ１９、およびディスクＩ／Ｆ２１が接続され、それぞれ受信ユニット６、モニタ２、外部メモリカード５、スピーカ２２、およびディスクドライブ２０が接続されている。
【００３５】
ＧＰＵ１２は、ＣＰＵ１０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ１２は、図示しない画像処理専用のメモリやメインメモリ１３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ１２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ１１およびビデオＩ／Ｆ１７を介してモニタ２に出力する。
【００３６】
メインメモリ１３は、ＣＰＵ１０で使用される記憶領域であって、ＣＰＵ１０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ１３は、ＣＰＵ１０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ１３に記憶されたゲームプログラムや各種データ等がＣＰＵ１０によって実行される。
【００３７】
ＤＳＰ１４は、ゲームプログラム実行時にＣＰＵ１０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ１５が接続される。ＡＲＡＭ１５は、ＤＳＰ１４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ１４は、ＡＲＡＭ１５に記憶されたサウンドデータを読み出し、メモリコントローラ１１およびオーディオＩ／Ｆ１９を介してモニタ２に備えるスピーカ２２に出力させる。
【００３８】
メモリコントローラ１１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。コントローラＩ／Ｆ１６は、例えば４つのコントローラＩ／Ｆで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置３とを通信可能に接続する。例えば、受信ユニット６は、上記コネクタと嵌合し、コントローラＩ／Ｆ１６を介してゲーム装置３と接続される。上述したように受信ユニット６は、コントローラ７からの操作データを受信し、コントローラＩ／Ｆ１６を介して当該操作データをＣＰＵ１０へ出力する。なお、他の実施形態においては、ゲーム装置３は、受信ユニット６に代えて、コントローラ７から送信されてくる操作データを受信する受信モジュールをその内部に設ける構成としてもよい。この場合、受信モジュールが受信した送信データは、所定のバスを介してＣＰＵ１０に出力される。ビデオＩ／Ｆ１７には、モニタ２が接続される。外部メモリＩ／Ｆ１８には、外部メモリカード５が接続され、その外部メモリカード５に設けられたバックアップメモリ等とアクセス可能となる。オーディオＩ／Ｆ１９にはモニタ２に内蔵されるスピーカ２２が接続され、ＤＳＰ１４がＡＲＡＭ１５から読み出したサウンドデータやディスクドライブ２０から直接出力されるサウンドデータをスピーカ２２から出力可能に接続される。ディスクＩ／Ｆ２１には、ディスクドライブ２０が接続される。ディスクドライブ２０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置３のバスやオーディオＩ／Ｆ１９に出力する。
【００３９】
次に、図３〜図６を参照して、コントローラ７について説明する。図３〜図４は、コントローラ７の外観構成を示す斜視図である。図３Ａは、コントローラ７の上面後方から見た斜視図であり、図３Ｂは、コントローラ７を下面後方から見た斜視図である。図４は、コントローラ７を前方から見た図である。
【００４０】
図３および図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ７を用いることによって、それに設けられたボタンを押下することと、コントローラ７自体の位置や向きを変えることとによってゲーム操作を行うことができる。例えば、プレイヤは、長手方向を軸としてコントローラ７を回転させることによって、操作対象に移動動作を行わせることができる。また、プレイヤは、コントローラ７によって指し示される画面上の位置を変える操作によって、ゲーム空間に登場するオブジェクトを移動させることができる。ここで、「コントローラ７によって指し示される画面上の位置」とは、理想的には、コントローラ７の前端部から上記長手方向に延ばした直線とモニタ２の画面とが交わる位置であるが、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置３によって算出することができればよい。以下では、コントローラ７によって指し示される画面上の位置を「指示位置」と呼ぶ。また、コントローラ７（ハウジング３１）の長手方向を、「コントローラ７の指示方向」と呼ぶことがある。
【００４１】
ハウジング３１には、複数の操作ボタンが設けられる。ハウジング３１の上面には、十字キー３２ａ、Ｘボタン３２ｂ、Ｙボタン３２ｃ、Ｂボタン３２ｄ、セレクトスイッチ３２ｅ、メニュースイッチ３２ｆ、およびスタートスイッチ３２ｇが設けられる。一方、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＡボタン３２ｉが設けられる。これらの各ボタン（スイッチ）は、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。また、ハウジング３１の上面には、遠隔からゲーム装置３本体の電源をオン／オフするための電源スイッチ３２ｈが設けられる。
【００４２】
また、コントローラ７は撮像情報演算部３５（図５Ｂ）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射口３５ａが設けられる。一方、ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、例えば３２ピンのエッジコネクタであり、コントローラ７に他の機器を接続するために利用される。また、ハウジング３１上面の後面側には複数のＬＥＤ３４が設けられる。ここで、コントローラ７には、他のコントローラ７と区別するためにコントローラ種別（番号）が付与される。ＬＥＤ３４は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７からゲーム装置３へ操作データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ３４のいずれか１つが点灯する。
【００４３】
次に、図５および図６を参照して、コントローラ７の内部構造について説明する。図５Ａおよび図５Ｂは、コントローラ７の内部構造を示す図である。なお、図５Ａは、コントローラ７の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂは、コントローラ７の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂに示す基板３００は、図５Ａに示す基板３００の裏面から見た斜視図となっている。
【００４４】
図５Ａにおいて、ハウジング３１の内部には基板３００が固設されており、当該基板３００の上主面上に操作ボタン３２ａ〜３２ｈ、加速度センサ３７、ＬＥＤ３４、水晶振動子４６、無線モジュール４４、およびアンテナ４５等が設けられる。そして、これらは、基板３００等に形成された配線（図示せず）によってマイコン４２（図６参照）に接続される。また、無線モジュール４４およびアンテナ４５によって、コントローラ７がワイヤレスコントローラとして機能する。なお、水晶振動子４６は、後述するマイコン４２の基本クロックを生成する。
【００４５】
一方、図５Ｂにおいて、基板３００の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ７の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１によって構成されおり、それぞれ基板３００の下主面に取り付けられる。また、基板３００の下主面上の後端縁にコネクタ３３が取り付けられる。そして、撮像情報演算部３５の後方であって基板３００の下主面上に操作ボタン３２ｉが取り付けられていて、それよりさらに後方に、電池４７が収容される。電池４７とコネクタ３３との間の基板３００の下主面上には、バイブレータ４８が取り付けられる。このバイブレータ４８は、例えば振動モータやソレノイドであってよい。バイブレータ４８が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームを実現することができる。
【００４６】
図６は、コントローラ７の構成を示すブロック図である。コントローラ７は、上述した操作部３２（各操作ボタン）および撮像情報演算部３５の他に、その内部に通信部３６および加速度センサ３７を備えている。
【００４７】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ７の動きでも追跡して解析することができる。
【００４８】
具体的には、撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ７の前方から入射する光から赤外線のみを通過させる。ここで、モニタ２の表示画面近傍に配置されるマーカ８ａおよび８ｂは、モニタ２の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ３８を設けることによってマーカ８ａおよび８ｂの画像をより正確に撮像することができる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ３９が集光した赤外線を撮像する。したがって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置を算出する。画像処理回路４１は、各マーカ８ａおよび８ｂの撮像画像内における位置を示す各座標値を撮像データとして通信部３６へ出力する。したがって、ゲーム装置３は、上記撮像画像からコントローラ７のＺ軸周りの回転角度を検出することが可能である。
【００４９】
加速度センサ３７は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸方向ごとの直線成分の加速度や重力加速度の値を検出する。例えば、２軸又は３軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度を、各軸に沿った直線成分の加速度としてそれぞれ検出する。この実施例では、コントローラ７の上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸でそれぞれ加速度を検知する。加速度センサは、各軸に沿った直線成分の加速度を検出しており、回転や傾きを直接検出することはできない。このため、加速度センサ３７を搭載したコントローラ７の姿勢の回転や傾きは、加速度センサの各軸毎に検出される加速度に所定の演算処理を施すことによって算出している。なお、加速度センサ３７は、必要な操作信号の種類によっては、上下方向および左右方向の２軸でそれぞれ加速度を検出する加速度センサが用いられてもかまわない。加速度センサ３７が検知した加速度を示すデータは、通信部３６へ出力される。
【００５０】
通信部３６は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理の際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータを無線送信する無線モジュール４４を制御する。
【００５１】
操作部３２、加速度センサ３７、および撮像情報演算部３５からマイコン４２へ出力されたデータは、一時的にメモリ４３に格納される。ここで、通信部３６から受信ユニット６への無線送信は所定の周期毎に行われるが、ゲームの処理は１／６０を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。マイコン４２は、受信ユニット６への送信タイミングが到来すると、メモリ４３に格納されているデータを操作データとして無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ７から送信される。微弱電波信号はゲーム装置３側の受信ユニット６で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。
【００５２】
上記コントローラ７を用いることによって、プレイヤは、各操作スイッチを押下する従来の一般的なゲーム操作に加えて、コントローラ７自身の位置を動かしたり、コントローラ７を回転させたりするというゲーム操作を行うことができる。
【００５３】
次に、図７〜図９を用いて、本実施形態で想定するゲームの概要について説明する。図７および図８は、本実施形態で想定するゲームの画面の一例である。当該ゲームはバスケットボールのゲームであり、２人のプレイヤで対戦する。図７において、ゲーム画面には、リング１０１とボール１０２、カーソル１０３（プレイヤー１用およびプレイヤー２用の２つ）、地面１０４および壁１０５が存在する。また、地面１０４には、シュート可能エリア１０６が存在する。このようなゲーム画面において、プレイヤは、カーソル１０３を動かす。そして、Ａボタンを押すと、図７に示すように、カーソル１０３の合っている位置周辺の地面が盛り上がる。このとき、カーソル１０３の合っている位置周辺の地面にボール１０２が接地していると、ボール１０２を飛ばすことができる。また、Ｂボタンを押すと、図８に示すように、カーソル１０３の合っている位置周辺の地面が凹む。このとき、カーソル１０３の合っている位置周辺の地面にボール１０２が接地していると、ボール１０２を凹みに入れて保持することができる。そして、これらのボタンを押したままカーソル１０３を移動させると、当該盛り上がりや凹みもカーソル１０３に追従して移動する。そのため、凹みを作り、そこにボール１０２を入れた状態で凹みを移動させることでボールを運ぶことも可能である。また、ボール１０２がシュート可能エリア１０６に入っていれば、ボール１０２に合わせて地面を盛り上げることで、リング１０１にめがけてボール１０２を飛ばすこと（すなわち、シュートすること）ができる（図７参照）。このようにして、プレイヤは、カーソル１０３を動かし、地面１０４を盛り上げたり凹ませたりしながらボール１０２を移動させたり奪い合ったりして、相手のリング１０１にボール１０２を入れて点数を競う。
【００５４】
なお、地面１０４や壁１０５はポリゴンで形成されている。図９は、地面１０４を真上から見た図であり、ポリゴンをワイヤーフレームで示した図である。図９のように、地面１０４は、正三角形のポリゴン１０７を敷き詰めた形で構成されている。
【００５５】
次に、本実施形態のゲーム処理の詳細を説明する前に、当該処理において用いられる主なパラメータについて説明する。まず、図９で示したような、地面１０４を構成するポリゴン１０７の各頂点には、以下のパラメータがある。
（１）各頂点の仮想ゲーム空間における位置を示す、ＸＹＺ位置（ｐｏｓＸ、ｐｏｓＹ、ｐｏｓＺ）。
（２）頂点のＹ方向への移動速度を示す、Ｙ速度（ｖｅｌＹ）。
（３）シュート可能であることを示すシュートフラグ。このフラグがセットされている頂点では、後述するボール１０２の移動処理の際に、ボール１０２がリング１０１に入りやすいようにボール１０２の移動方向や速度が補正される（つまり、シュート動作になるようにボールの軌道が修正されることになる）。
また、隣接する各ポリゴン１０７同士で重なる頂点については、まとめて１つの頂点として扱う。
【００５６】
また、ボール１０２には、次のようなパラメータがある。
（１）仮想ゲーム空間内でのボール１０２の位置を示すための、ＸＹＺ位置（ｂａｌｌＰｏｓＸ、ｂａｌｌＰｏｓＹ、ｂａｌｌＰｏｓＺ）
（２）ボール１０２のＸＹＺ各方向への移動速度を示す、ＸＹＺ速度（ｂａｌｌＶｅｌＸ、ｂａｌｌＶｅｌＹ、ｂａｌｌＶｅｌＺ）。
【００５７】
なお、上記の各パラメータは、メインメモリ１３に格納される。また、これら以外にも、メインメモリ１３には、プレイヤー１、２の得点カウンタ等のゲーム処理に必要な各種パラメータが格納される。
【００５８】
次に、ゲーム装置３において実行されるゲーム処理の流れを図１０〜図１７を用いて説明する。図１０および図１１は、ゲーム装置３において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、メインメモリ１３等の各ユニットが初期化される。そして、光ディスク４に格納されたゲームプログラムがメインメモリ１３に読み込まれ、当該ゲームプログラムの実行が開始される。その結果、ＧＰＵ１２を介してモニタ２にゲーム画像が表示されることによって、ゲームが開始される。この後、図１０〜図１１に示すフローチャートの処理が実行される。なお、図１０〜図１１に示すステップＳ１〜ステップＳ１６の処理ループは、１フレーム毎に繰り返し実行される。
【００５９】
図１０において、まず、ＣＰＵ１０は、上記図７等で示した地面１０４を平坦化する処理を行う（ステップＳ１）。これは、変形した地面１０４を徐々に平らにするための処理である。本処理では、図１２に示すように、地面１０４を構成するポリゴンの頂点のうち、ある頂点１２１に着目し、その頂点１２１（以下、着目頂点と呼ぶ）の高さを、周囲６頂点１２２の高さに近づける処理が行われる。換言すると、着目頂点は、その周囲の６頂点１２２の高さに近づこうとするような挙動を行うことになる。このステップＳ１の処理をより具体的に説明すると、まず、現在のＹ速度（ｖｅｌＹ）で着目頂点１２１の位置を更新する。
ｐｏｓＹ＝ｐｏｓＹ＋ｖｅｌＹ
次に、Ｙ速度を一定の割合、例えば、７割で減衰させる。
ｖｅｌＹ＝ｖｅｌＹ×０．７
次に、着目頂点１２１と、その周囲６頂点１２２それぞれとの高さの差分を算出し、これら差分の総和ＳｕｍＳを求める。そして、以下の式で、Ｙ速度に周囲の６頂点１２２の高さを加味する。
ｖｅｌＹ＝ｖｅｌＹ＋ＳｕｍＳ×定数
これらの演算を、地面を構成する全ての頂点に対して行うことで、平坦化処理が行われる。
【００６０】
次に、プレイヤー１についてのプレイヤー処理（ステップＳ２）が行われる。本処理では、プレイヤが動かしたカーソルの位置に基づく地面の位置の算出と、地面の盛り上げ、および凹まし処理が行われる。図１３は、上記ステップＳ２で示したプレイヤー処理の詳細を示すフローチャートである。図１３において、まず、上述したようにコントローラ７から送信されてくる操作データを取得する（ステップＳ３０）。この操作データには、各マーカ８ａおよび８ｂの撮像画像内における位置を示す各座標データと、ＡボタンおよびＢボタンの操作データが含まれる。
【００６１】
続いて、ＣＰＵ１０は、上記ステップＳ３０で取得した操作情報に基づいて、モニタ２の画面座標系に基づいた入力座標を算出する。具体的には、ステップＳ３０で得られた各マーカ８ａおよび８ｂの位置座標の中点座標値を算出する。次に、算出された中点座標値に基づいて、画面上の入力座標を算出する。そして、ＣＰＵ１０は、算出した入力座標を画面座標データとしてメインメモリ３３に記憶する。次に、画面のカーソル位置を当該画面座標データの示す位置に更新する（ステップＳ３１）。
【００６２】
次に、ＣＰＵ１０は、画面のカーソル位置に対応する仮想ゲーム空間内の地形上の位置（以下、地形操作位置）を算出する（ステップＳ３２）。このステップＳ３２の処理を図１４を用いて説明すると、まず、仮想カメラからの視線方向に仮想スクリーン（画面に相当する）を設置する。次に、カメラ位置と仮想スクリーン上での画面カーソル位置（ステップＳ３１で算出された画面座標データの示す位置に相当）とを通る直線が、地面と交差する位置を算出する。この算出された交差位置を、地形操作位置とする。地形操作位置は、その位置を示すためのパラメータとして、ＸＹＺ位置（ｃＸ、ｃＹ、ｃＺ）を有する。
【００６３】
図１３に戻り、次に、ＣＰＵ１０は、上記ステップＳ３０で取得した操作情報に基づいて、Ａボタンが押されているか否かを判定する（ステップＳ３３）。Ａボタンが押されていれば（ステップＳ３３でＹＥＳ）、前回のフレームにおける処理においてもＡボタンが押されていたかを判定する（ステップＳ３４）。その結果、押されていれば、後述の地形盛り上げ処理に進む（ステップＳ３７）。押されていないときは、地形操作位置がシュート可能エリア１０６に入っているか否かを判定する（ステップＳ３５）。シュート可能エリア１０６に入っていれば、当該地形操作位置のポリゴン１０７を構成する各頂点にシュートフラグをセットする（ステップＳ３６）。
【００６４】
続いて、地形盛り上げ処理が行われる（ステップＳ３７）。本処理では、地形操作位置の周囲の頂点にＹ速度を加算し、各頂点をＹ方向（地面ＸＺと直交する方向、すなわち地面の上下の高さ方向）に移動させる処理が行われる。このステップＳ３７の処理を図１５を用いて具体的に説明する。図１５は、地面１０４（を構成するポリゴン）を側面から見た状態を示している。この図において、ある頂点１５１を処理する場合を例として説明する。まず、地形操作位置（ｃＸ、ｃＹ、ｃＺ）と、処理対象となる頂点１５１とのＸＺ距離ｄを以下の式で算出する。
【数１】
0005183878.tif 000002
算出の結果、ＸＺ距離ｄが、予め定められている定数である操作半径ｒ以上であるときは、当該頂点については高さを変化させないようにするため、このまま地形盛り上げ処理を終了する。一方、ｒ未満であるときは、当該頂点の高さを変えるため、ＸＺ距離ｄに対応する高さｈを、以下の式で算出する。
【数２】
0005183878.tif 000003
そして最後に、ＰｏｓＹと高さｈとの差分に比例した力をＹ速度に加える。
ｖｅｌＹ＝ｖｅｌＹ＋（ｈ−ｐｏｓＹ）×（定数）
これらの演算を、地面１０４を構成する全ての頂点に対して行う。その結果、図１６に示すような、地形操作位置に近い頂点ほど高い位置が算出され、そこから離れていくにつれて徐々に高さが低くなっていくような形状で地面が盛り上がった表現を行うことができる。
【００６５】
図１３に戻り、一方、ステップＳ３３でＡボタンが押されていなかったときは、ＣＰＵ１０は、Ｂボタンが押されているか否かを判定する（ステップＳ３８）。押されていないときは、プレイヤ処理を終了する（ステップＳ３８でＮＯ）。押されていれば（ステップＳ３８でＹＥＳ）、地面の凹まし処理を行う（ステップＳ３９）。ステップＳ３９においては、上記ステップＳ３７の盛り上げ処理と同様、地形操作位置の周囲の頂点にＹ速度を加算し、各頂点をＹ方向に移動させる処理が行われる。従って、基本的に上記ステップＳ３７と同様の処理が行われるが、算出される高さを、上記地形盛り上げ処理の場合とは逆の方向にして算出する。そのため、上記式１の代わりに以下の式を用いて高さｈを算出する。
【数３】
0005183878.tif 000004
この式が用いられること以外は、上記ステップＳ３７と同様の処理が行われるため、詳細な説明は省略する。本ステップの処理の結果、図１７に示すように、地形操作位置に近い頂点ほど低い位置が算出され、離れていくにつれ、徐々に高さが高まっていくような形状で床を凹ませることができる。以上で、プレイヤー処理は終了する。
【００６６】
図１０に戻り、プレイヤー１についてのプレイヤ処理が終了すれば、続いてプレイヤー２についてプレイヤー処理が行われる（ステップＳ３）。この処理は、上記ステップＳ２と同様の処理であるため、詳細な説明は省略する。
【００６７】
続いて、ボール１０２の移動処理が行われる（ステップＳ４）。具体的には、以下のような計算が行われる。まず、前回の処理ループにおいて最終的に算出されたボールのＸＹＺ速度に基づいて、ボール１０２の位置を更新する。具体的には、以下の計算を行う。
ｂａｌｌＰｏｓＸ＝ｂａｌｌＰｏｓＸ＋ｂａｌｌＶｅｌＸ
ｂａｌｌＰｏｓＹ＝ｂａｌｌＰｏｓＹ＋ｂａｌｌＶｅｌＹ
ｂａｌｌＰｏｓＺ＝ｂａｌｌＰｏｓＺ＋ｂａｌｌＶｅｌＺ
続いて、速度に重力ベクトル（ｇＸ，ｇＹ，ｇＺ）を加算する。すなわち、重力ベクトルを加味して速度の値を更新する。ここで、重力ベクトルとは、仮想ゲーム空間内において真下方向へと向かうベクトルのことをいう。
ｂａｌｌＶｅｌＸ＝ｂａｌｌＶｅｌＸ＋ｇＸ
ｂａｌｌＶｅｌＹ＝ｂａｌｌＶｅｌＹ＋ｇＹ
ｂａｌｌＶｅｌＺ＝ｂａｌｌＶｅｌＺ＋ｇＺ
以上で、ボール１０２の新しい位置が算出され、ボール移動処理は終了する。
【００６８】
次に、ボール１０２が壁１０５またはリング１０１に当たったか否かが判定される（ステップＳ５）。すなわち、ボール１０２の新しい移動位置が壁１０５あるいはリング１０１の位置と重なっているか否かが判定される。その結果、ボール１０２が、壁１０５あるいはリング１０１に当たっていないときは（ステップＳ５でＮＯ）、処理をステップＳ７に進める。一方、ボール１０２が、壁１０５あるいはリング１０１に当たったときは（ステップＳ５でＹＥＳ）、ボール跳ね返り処理が行われる（ステップＳ６）。このステップＳ６の処理をより具体的に説明すると、壁１０５またはリング１０１を構成する各ポリゴンについて、次のような計算が行われる。まず、ポリゴンの法線ベクトル（ｎＸ，ｎＹ，ｎＺ）を計算し、ボール１０２がポリゴンに食い込むような位置にあるか否かが判定される。その結果、ボール１０２がポリゴンに食い込んでいなければ、跳ね返り処理は終了する。つまり、ボール１０２の跳ね返りは発生しない。一方、ボールが食い込むような位置にあれば、食い込んでいる深さを検出し、その深さをｄｅｐｔｈとする。次に、以下の式を用いて、ボール１０２の位置をポリゴンの法線方向に修正する。
ｂａｌｌＰｏｓＸ＝ｂａｌｌＰｏｓＸ＋ｎＸ×ｄｅｐｔｈ
ｂａｌｌＰｏｓＹ＝ｂａｌｌＰｏｓＹ＋ｎＹ×ｄｅｐｔｈ
ｂａｌｌＰｏｓＺ＝ｂａｌｌＰｏｓＺ＋ｎＺ×ｄｅｐｔｈ
続いて、以下の式で、ボール１０２の速度の法線方向成分ｖＳｐｅｅｄを計算する。
ｖＳｐｅｅｄ＝ｂａｌｌＶｅｌＸ×ｎＸ＋ｂａｌｌＶｅｌＹ×ｎＹ＋ｂａｌｌＶｅｌＺ×ｎＺ
次に、以下の式で、ボール１０２のＸＹＺ速度を算出する。つまり、跳ね返るときのボール１０２の速度を算出する。
ｂａｌｌＶｅｌＸ＝ｂａｌｌＶｅｌＸ−ｖＳｐｅｅｄ×（１．０＋ｋ）×ｎＸ  ・・・式３
ｂａｌｌＶｅｌＹ＝ｂａｌｌＶｅｌＹ−ｖＳｐｅｅｄ×（１．０＋ｋ）×ｎＹ  ・・・式４
ｂａｌｌＶｅｌＺ＝ｂａｌｌＶｅｌＺ−ｖＳｐｅｅｄ×（１．０＋ｋ）×ｎＺ  ・・・式５
ここで、ｋは反発係数を示す。
以上で、ステップＳ６の跳ね返り処理は終了する。
【００６９】
続いて、ボール１０２が地面１０４に接触したかどうかを判定する（ステップＳ７）。その結果、接触していれば、跳ね返り処理を行う（ステップＳ８）。ステップＳ８における跳ね返り処理では、上述のステップＳ６で説明した各計算に加え、ポリゴンの移動速度をボール速度に加味する計算が加わる。つまり、例えば、凹ました地面の中にボール１０２が入っているときに、その地面を盛り上げると、地面が盛り上がる勢い（地面を構成するポリゴンの移動速度）をボール１０２のパラメータに加味するための計算を行う。具体的には、上述したボール１０２の速度を算出後（式３〜５）、さらに、次のような計算が行われる。まず、ボール１０２が接触しているポリゴンのＹ方向への移動速度ＦａｃｅＶｅｌＹを計算する。これは、当該ポリゴンを構成する３頂点の速度ＶｅｌＹの平均を取った値である。そして、以下の式を用いて、ポリゴンの移動速度ｆａｃｅＶｅｌＹをボール１０２の速度に加味する。
ｂａｌｌＶｅｌＸ＝ｂａｌｌＶｅｌＸ＋ｎＸ×ｆａｃｅＶｅｌＹ
ｂａｌｌＶｅｌＹ＝ｂａｌｌＶｅｌＹ＋ｎＹ×ｆａｃｅＶｅｌＹ
ｂａｌｌＶｅｌＺ＝ｂａｌｌＶｅｌＺ＋ｎＺ×ｆａｃｅＶｅｌＹ
以上のような演算を行うことで、ボール１０２が地面１０４の形状に合わせて跳ね返る動きを表現することができる。以上で、ステップＳ８にかかる跳ね返り処理は終了する。
【００７０】
次に、地形操作位置のポリゴンを構成する３頂点のいずれかにシュートフラグがセットされているか否かを判定する（ステップＳ９）。その結果、シュートフラグがセットされていたときは（ステップＳ９でＹＥＳ）、ボール１０２がリング１０１に入りやすくなるように、ボール１０２の速度または移動方向を補正する（ステップＳ１０）。より具体的には、地形操作位置とリング１０１との位置関係を見て、ボール１０２のＸＹＺ速度を補正する。当該補正については、位置関係と補正する値とを対応付けたテーブルを予めメモリ等に準備しておき、当該テーブルに基づいて、ボール１０２のＸＹＺ速度を補正する。
【００７１】
次に、ボール１０２がプレイヤー１のリング１０１を通過したか否かが判定される（ステップＳ１１）。その結果、通過していれば（ステップＳ１１でＹＥＳ）、プレイヤー２の得点を加算する（ステップＳ１２）。一方、プレイヤー１のリングを通過していなければ（ステップＳ１１でＮＯ）、ボール１０２がプレイヤー２のリングを通過したか否かが判定される（ステップＳ１３）。その結果、プレイヤー２のリング１０１を通過していなければ（ステップＳ１３でＮＯ）、そのまま処理をステップＳ１５に進める。一方、プレイヤー２のリング１０１を通過していれば（ステップＳ１３でＹＥＳ）、プレイヤー１の得点を加算してから（ステップＳ１４）、ステップＳ１５に処理を進める。
【００７２】
次に、ステップＳ１５において、表示処理が行われる。すなわち、仮想カメラで仮想空間を撮影した画像をゲーム画像としてモニタ２に表示する処理がされる。ステップＳ１５の後、ステップＳ１６において、ゲーム終了か否かが判断され、ＹＥＳの場合、ゲーム処理を終了し、ＮＯの場合、ステップＳ１に戻って、ゲーム処理を繰り返す。以上で、本実施形態に係るゲーム処理は終了する。
【００７３】
このように、第１の実施形態では、地形を直接指示して変形させることで、ボールを間接的に動かすことができる。これにより、今までにない斬新な操作方法を用いたゲームを提供できる。また、ポリゴンで構成される地形の変形について、そのポリゴンの頂点位置を演算して表現する。そのため、地形の形状変化をよりリアルに表現することができる。変形した地形のポリゴンの法線ベクトルおよび重力ベクトルに基づいてボールの移動方向が決定される。そのため、地形の変化に応じてボールが様々な方向に移動する様子を、より自然に表現することができる。また、シュートしたとき、リングに入りやすくなるようにボールの軌道に補正をかけている。これにより、操作性を向上させ、ゲームのテンポをよくすることができる。
【００７４】
なお、上記指示位置について、上述した実施形態では、カーソル１０３については画面座標系で移動させていた。すなわち、モニタ２の画面上をカーソル１０３が移動するような表現になっていた。これに限らず、カーソル１０３が仮想ゲーム空間内の地面の上を移動するように表現してもよい。図１８は、カーソル１０３がゲーム空間内の地面の上を移動する様子を示す図である。図１８においては、手前のほうに表示されているカーソル１０３は大きく、奥のほうに表示されるカーソル１０３は小さく表示される。つまり、手前にあるカーソル１０３を奥のほうに移動させると、奥に行くにつれて小さくなって表示される。また、当該カーソル１０３は、地面の上しか移動させることができず、壁に当たると、そこから奥には進めることができない。このように、カーソル１０３を直接地面の上を移動するような表示にすることにより、プレイヤに対して、自分が今どの位置を指示しているのかを、より把握させやすくすることができる。
【００７５】
また、上述の実施例では、モニタの周辺に配置されたマーカから出力される赤外光をコントローラ側で撮像することによって得られる位置座標に基づいて画面上のカーソル位置を算出するようにしたが、これに限らず、他の方法を用いてもよい。例えば、コントローラ７の十字キー３２ａを操作することによって得られる上下左右の方向指示に基づいて画面上のカーソル位置を算出するようにしてもよい。また、他の手法として、モニタ画面にタッチパネルを設置し、モニタを指やペン等で直接タッチすることによって指示された画面上の位置座標をタッチパネルによって検出し、その検出座標をカーソル位置とするようにしてもよい。また、他の手法として、コントローラ７に代えて、マウス、トラックパッド、トラックボール等の画面上の入力座標を指定する他のポインティングデバイスを用いて、当該マウス等から出力される出力値に基づいて画面上のカーソル位置を算出するようにしてもよい。
【産業上の利用可能性】
【００７６】
本発明にかかるゲームプログラムおよびゲームシステムは、間接的にオブジェクトを移動させる操作を用いたゲームが提供でき、球技ゲームや、その他、可動オブジェクトを移動させて楽しむゲームプログラム等の用途に有用である。
【図面の簡単な説明】
【００７７】
【図１】本発明の一実施形態に係る座標算出装置一例であるゲーム装置を含むゲームシステムの外観図
【図２】ゲーム装置３の機能ブロック図
【図３Ａ】コントローラ７の斜視図
【図３Ｂ】コントローラ７の斜視図
【図４】コントローラ７を前方から見た図
【図５Ａ】コントローラ７の内部構造を示す図
【図５Ｂ】コントローラ７の内部構造を示す図
【図６】コントローラ７の構成を示すブロック図
【図７】本実施形態で想定するゲームの画面の一例
【図８】本実施形態で想定するゲームの画面の一例
【図９】地面１０４を真上から見た図
【図１０】ゲーム装置３において実行されるゲーム処理の流れを示すフローチャート
【図１１】ゲーム装置３において実行されるゲーム処理の流れを示すフローチャート
【図１２】地面の平坦化処理を説明するための図
【図１３】図１０のステップＳ２で示したプレイヤー処理の流れを示すフローチャート
【図１４】地形操作位置の決め方を説明するための図
【図１５】地形の盛り上げ・凹まし処理を説明するの図
【図１６】地面が盛り上がった状態を示す図
【図１７】地面が凹んだ状態を示す図
【図１８】カーソルが地面の上を移動する様子を示す図
【符号の説明】
【００７８】
１  ゲームシステム
２  モニタ
３  ゲーム装置
４  光ディスク
５  外部メモリカード
７  コントローラ
８ａ，８ｂ  マーカ
１０  ＣＰＵ
１３  メインメモリ
３２  操作部
３５  撮像情報演算部
３６  通信部
３７  加速度センサ
４０  撮像素子
【図１】
0005183878.tif 000005
【図２】
0005183878.tif 000006
【図３Ａ】
0005183878.tif 000007
【図３Ｂ】
0005183878.tif 000008
【図４】
0005183878.tif 000009
【図５Ａ】
0005183878.tif 000010
【図５Ｂ】
0005183878.tif 000011
【図６】
0005183878.tif 000012
【図７】
0005183878.tif 000013
【図８】
0005183878.tif 000014
【図９】
0005183878.tif 000015
【図１０】
0005183878.tif 000016
【図１１】
0005183878.tif 000017
【図１２】
0005183878.tif 000018
【図１３】
0005183878.tif 000019
【図１４】
0005183878.tif 000020
【図１５】
0005183878.tif 000021
【図１６】
0005183878.tif 000022
【図１７】
0005183878.tif 000023
【図１８】
0005183878.tif 000024