(57)【要約】    【構成】  ビデオゲーム装置１２はＣＰＵ３６を含み、ＣＰＵ３６はコントローラ２２から送信される入力データに含まれるマーカ座標データを検出し、コントローラ２２の指示座標を計算する。コントローラ２２で指示された星オブジェクトは、プレイヤがＢトリガースイッチを押すことにより、対象オブジェクトとして設定される。すると、プレイヤオブジェクトは、当該対象オブジェクトに従った処理を実行する。たとえば、プレイヤがＢトリガースイッチを押し続けると、プレイヤオブジェクトは対象オブジェクトに近づくように移動する。    【効果】  ポインティングデバイスを用いたゲームの面白味を増大させることができる。【選択図】  図２
2007300985.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置で実行されるゲームプログラムであって、
前記ゲーム装置のプロセサを、
前記仮想ゲーム空間内に第１オブジェクトと第２オブジェクトとを配置するオブジェクト配置手段、
前記ポインティングデバイスによって指示される画面上の位置を検出する指示位置検出手段、
前記指示位置検出手段によって検出された指示位置に基づいて、前記第１オブジェクトを指示しているか否かを判別する第１オブジェクトの指示判別手段、
前記第１オブジェクトの指示判別手段によって前記第１オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する操作状態判別手段、および
前記操作状態判別手段によって前記所定の入力手段が押されたことが判別されたとき、前記第１オブジェクトに関連付けられた処理を前記第２オブジェクトに行わせる第２オブジェクトの制御手段として機能させる、ゲームプログラム。
【請求項２】
前記ポインティングデバイスは表示装置の周辺に設置される撮影対象を撮影するための撮像手段を含み、
前記指示位置検出手段は、前記撮像手段の撮影結果に基づいて前記ポインティングデバイスによって指示される画面上の位置を検出する、請求項１記載のゲームプログラム。
【請求項３】
前記操作状態判別手段は、前記所定の入力手段が継続して押されている状態であるか否かを判別し、
前記第２オブジェクトの制御手段は、前記操作状態判別手段によって前記所定の入力手段が継続して押されている状態が判別されている間、前記第１オブジェクトに関連付けられた処理を前記第２オブジェクトに行わせる、請求項１記載のゲームプログラム。
【請求項４】
前記ゲームプログラムは、前記プロセサを、前記第１オブジェクトの指示判別手段によって前記第１オブジェクトを指示していることが判別されたとき、当該第１オブジェクトと前記第２オブジェクトとの前記仮想空間内における距離を判別する距離判別手段としてさらに機能させ、
前記第２オブジェクトの制御手段は、前記距離が所定範囲内であるとき、前記第１オブジェクトに関連付けられた処理を前記第２オブジェクトに行わせる、請求項１記載のゲームプログラム。
【請求項５】
前記ゲームプログラムは、前記プロセサを、前記第１オブジェクトの指示判別手段によって前記第１オブジェクトを指示していることが判別されたとき、当該第１オブジェクトと前記第２オブジェクトとの間に他のオブジェクトが存在するか否かを判別する存在判別手段として機能させ、
前記第２オブジェクトの制御手段は、前記存在判別手段によって他のオブジェクトが存在しないことが判別されたとき、前記第１オブジェクトに関連付けられた処理を前記第２オブジェクトに行わせる、請求項１記載のゲームプログラム。
【請求項６】
前記第２オブジェクトの制御手段は、前記第２オブジェクトを前記第１オブジェクトに近づけるように当該第２オブジェクトの移動を制御する、請求項１ないし５のいずれかに記載のゲームプログラム。
【請求項７】
前記ゲームプログラムは、前記プロセサを、前記距離に基づいて前記第２オブジェクトの移動速度を算出する速度算出手段としてさらに機能させ、
前記第２オブジェクトの制御手段は、前記速度算出手段によって算出された速度に基づいて前記第２オブジェクトの移動を制御する、請求項６記載のゲームプログラム。
【請求項８】
前記オブジェクト配置手段は、複数の前記第１オブジェクトを配置し、
前記第１オブジェクトの指示判別手段は、前記複数の第１オブジェクトのいずれが指示されているか否かをさらに判別し、
前記第２オブジェクトの制御手段は、指示されていることが判別された前記第１オブジェクト毎に、それぞれ異なる処理を第２オブジェクトに行わせる、請求項１記載のゲームプログラム。
【請求項９】
少なくとも１つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置であって、
前記仮想ゲーム空間内に第１オブジェクトと第２オブジェクトとを配置するオブジェクト配置手段、
前記ポインティングデバイスによって指示される画面上の位置を検出する指示位置検出手段、
前記指示位置検出手段によって検出された指示位置に基づいて、前記第１オブジェクトを指示しているか否かを判別する第１オブジェクトの指示判別手段、
前記第１オブジェクトの指示判別手段によって前記第１オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する操作状態判別手段、および
前記操作状態判別手段によって前記所定の入力手段が押されたことが判別されたとき、前記第１オブジェクトに関連付けられた処理を前記第２オブジェクトに行わせる第２オブジェクトの制御手段を備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、入力装置からの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するための、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
従来、光学式のポインティングデバイスを用いたゲームシステムが提案されている。たとえば、特許文献１には、ガン型のコントローラを用いた射撃ゲーム装置が開示されている。このガン型のコントローラはＣＣＤカメラを備え、ビデオ画面の周囲に撮像対象として配設された発光体をＣＣＤカメラによって撮影する。これによって、ゲーム装置は、画面とガン型のコントローラとの距離、ガン型のコントローラの回転、および画面とガン型のコントローラとの相対位置を検出することができる。また、ガン型のコントローラが指示している画面上の座標（着弾点）も算出される。
【特許文献１】特開平８−７１２５２
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、特許文献１に記載のガン型のコントローラは、表示画面上の位置を指定するために用いられるだけである。つまり、ガン型のコントローラでは、表示画面上の位置を指定するという単一の操作のみが可能であり、他の操作を行うことができなかった。したがって、ガン型のコントローラでは、表示画面上の標的への当たり外れを判定するような単純なゲーム操作しか行うことができない。このため、ゲーム操作のみならず、ゲーム自体も単純な内容となってしまい、面白味に欠けてしまう。
【０００４】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【０００５】
また、この発明の他の目的は、ポインティングデバイスを用いたゲームの面白味を増大させることができる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
請求項１の発明は、少なくとも１つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置で実行されるゲームプログラムであって、ゲーム装置のプロセサを、オブジェクト配置手段、指示位置検出手段、第１オブジェクトの指示判別手段、操作状態判別手段および第２オブジェクトの制御手段として機能させる。オブジェクト配置手段は、仮想ゲーム空間内に第１オブジェクトと第２オブジェクトとを配置する。指示位置検出手段は、ポインティングデバイスによって指示される画面上の位置を検出する。第１オブジェクトの指示判別手段は、指示位置検出手段によって検出された指示位置に基づいて、第１オブジェクトを指示しているか否かを判別する。操作状態判別手段は、第１オブジェクトの指示判別手段によって第１オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する。第２オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が押されたことが判別されたとき、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせる。
【０００８】
請求項１の発明では、ゲーム装置（１２）は、少なくとも１つの入力手段（２６）を含むポインティングデバイス（２２）からの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を表示装置（３４）の画面上に表示する。ゲームプログラムは、このゲーム装置のプロセサ（３６）を、オブジェクト配置手段（３６，Ｓ３）、指示位置検出手段（３６，Ｓ９，Ｓ５１）、第１オブジェクトの指示判別手段（３６，Ｓ５５）、操作状態判別手段（３６，Ｓ９，Ｓ７１）および第２オブジェクトの制御手段（３６，Ｓ８９）として機能させる。オブジェクト配置手段は、仮想ゲーム空間内に第１オブジェクト（１０４）と第２オブジェクト（１０２）とを配置する。たとえば、各オブジェクトが生成され、３次元の仮想ゲーム空間に配置される。指示位置検出手段は、ポインティングデバイスによって指示される画面（１００）上の位置を検出する。つまり、ポインティングデバイスの指示座標が検出される。第１オブジェクトの指示判別手段は、指示位置検出手段によって検出された指示位置（指示座標）に基づいて、第１オブジェクトを指示しているか否かを判別する。たとえば、指示座標が第１オブジェクトの表示領域に接触するかどうか、または含まれるかどうかを判断する。操作状態判別手段は、第１オブジェクトの指示判別手段によって第１オブジェクトを指示していることが判別されている状態で所定の入力手段（２６ｉ）が押されたか否かを判別する。第２オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が押されたことが判別されたとき、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせる。つまり、第１オブジェクトに応じた処理が第２オブジェクトによって実行される。
【０００９】
請求項１の発明によれば、指示された第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせるので、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【００１０】
請求項２の発明は請求項１に従属し、ポインティングデバイスは表示装置の周辺に設置される撮影対象を撮影するための撮像手段を含み、指示位置検出手段は、撮像手段の撮影結果に基づいてポインティングデバイスによって指示される画面上の位置を検出する。
【００１１】
請求項２の発明では、ポインティングデバイスは表示装置の周辺に設置される撮影対象（３２ｍ，３２ｎ）を撮影するための撮像手段（８０）を含む。指示位置検出手段は、撮像手段の撮影結果に基づいてポインティングデバイスによって指示される画面の位置を検出する。たとえば、２つの撮影対象の中間の位置が、ポインティングデバイスの向いている位置すなわち指示位置として検出される。
【００１２】
請求項２の発明によれば、撮影結果からポインティングデバイスによって指示される画面の位置を検出するので、簡単に位置を検出することができる。
【００１３】
請求項３の発明は請求項１に従属し、操作状態判別手段は、所定の入力手段が継続して押されている状態であるか否かを判別し、第２オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が継続して押されている状態が判別されている間、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせる。
【００１４】
請求項３の発明では、操作状態判別手段は、所定の入力手段が継続して押されている状態であるか否か、すなわち押し続けられているかどうかを判別する。第２オブジェクトの制御手段は、所定の入力手段が継続して押されている状態が判別されている間、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせる。
【００１５】
請求項３の発明によれば、所定の入力手段が継続して押されている間だけ、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせることができる。つまり、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせる時間をプレイヤに選択させることができる。
【００１６】
請求項４の発明は請求項１に従属し、ゲームプログラムは、プロセサを、第１オブジェクトの指示判別手段によって第１オブジェクトを指示していることが判別されたとき、当該第１オブジェクトと第２オブジェクトとの仮想空間内における距離を判別する距離判別手段としてさらに機能させ、第２オブジェクトの制御手段は、距離が所定範囲内であるとき、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせる。
【００１７】
請求項４の発明では、距離判別手段（３６，Ｓ８３）は、第１オブジェクトを指示していることが判別されたとき（Ｓ５５で“ＹＥＳ”）、第１オブジェクトと第２オブジェクトとの仮想空間内における距離を判別する。第２オブジェクトの制御手段は、距離が所定範囲内であるとき、第１オブジェクトに関連付けられた処理を第２オブジェクとに行わせる。したがって、第２オブジェクトの制御手段は、距離が所定範囲を超えている場合には、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせない。
【００１８】
請求項４の発明によれば、第１オブジェクトと第２オブジェクトとの距離が所定距離以内である場合に限り、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせることができる。
【００１９】
請求項５の発明は請求項１従属し、ゲームプログラムは、プロセサを、第１オブジェクトの指示判別手段によって第１オブジェクトを指示していることが判別されたとき、当該第１オブジェクトと第２オブジェクトとの間に他のオブジェクトが存在するか否かを判別する存在判別手段として機能させ、第２オブジェクトの制御手段は、存在判別手段によって他のオブジェクトが存在しないことが判別されたとき、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせる。
【００２０】
請求項５の発明では、存在判別手段（３６，Ｓ５７）は、第１オブジェクトを指示していることが判別されたとき（Ｓ５５で“ＹＥＳ”）、当該第１オブジェクトと第２オブジェクトとの間に他のオブジェクトが存在するか否かを判別する。つまり、プレイヤが当該第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせることができるか否かを判断する。第２オブジェクトの制御手段は、他のオブジェクトが存在しないとき、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせる。
【００２１】
請求項５の発明によれば、第１オブジェクトと第２オブジェクトとの間に他のオブジェクトが存在しない場合に限り、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせることができる。
【００２２】
請求項６の発明は請求項１ないし５のいずれかに従属し、第２オブジェクトの制御手段は、第２オブジェクトを第１オブジェクトに近づけるように当該第２オブジェクトの移動を制御する。
【００２３】
請求項６の発明によれば、第２オブジェクトの制御手段は、第２オブジェクトを第１オブジェクトに近づけるように第２オブジェクトの移動を制御する。
【００２４】
請求項６の発明によれば、第１オブジェクトに近づけるように第２オブジェクトを移動させるので、第２オブジェクトを第１オブジェクトに近づけたり、指示する第１オブジェクトを変化させたりすることにより、プレイヤオブジェクトを仮想ゲーム空間内で移動させることができる。
【００２５】
請求項７の発明は請求項６に従属し、ゲームプログラムは、プロセサを、距離に基づいて第２オブジェクトの移動速度を算出する速度算出手段としてさらに機能させ、第２オブジェクトの制御手段は、速度算出手段によって算出された速度に基づいて第２オブジェクトの移動を制御する。
【００２６】
請求項７の発明では、速度算出手段（３６，Ｓ１５）は、第１オブジェクトと第２オブジェクトとの距離に基づいて第２オブジェクトの移動速度を算出する。第２オブジェクトの制御手段は、速度算出手段によって算出された速度に基づいて第２オブジェクトの移動を制御する。
【００２７】
請求項７の発明によれば、第１オブジェクトと第２オブジェクトとの距離に応じて第１オブジェクトの移動速度を変化させることができる。
【００２８】
請求項８の発明は請求項１に従属し、オブジェクト配置手段は、複数の第１オブジェクトを配置し、第１オブジェクトの指示判別手段は、複数の第１オブジェクトのいずれが指示されているか否かをさらに判別し、第２オブジェクトの制御手段は、指示されていることが判別された第１オブジェクト毎に、それぞれ異なる処理を第２オブジェクトに行わせる。
【００２９】
請求項８の発明では、オブジェクト配置手段は、複数の第１オブジェクトを配置する。第１オブジェクトの指示判別手段は、第１オブジェクトが指示されているか否かを判別するのみならず、複数の第１オブジェクトのうちのいずれが指示されているかを判別する。第１オブジェクトの制御手段は、指示されていることが判別された第１オブジェクト毎に、それぞれ異なる処理を第２オブジェクトに行わせる。
【００３０】
請求項８の発明によれば、第１オブジェクトに応じた処理を第２オブジェクトに行わせることができるので、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【００３１】
請求項９の発明は、少なくとも１つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置である。このゲーム装置は、オブジェクト配置手段、指示位置検出手段、第１オブジェクトの指示判別手段、操作状態判別手段および第２オブジェクトの制御手段を備える。オブジェクト配置手段は、仮想ゲーム空間内に第１オブジェクトと第２オブジェクトとを配置する。指示位置検出手段は、ポインティングデバイスによって指示される画面上の位置を検出する。第１オブジェクトの指示判別手段は、指示位置検出手段によって検出された指示位置に基づいて、第１オブジェクトを指示しているか否かを判別する。操作状態判別手段は、第１オブジェクトの指示判別手段によって第１オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する。第２オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が押されたことが判別されたとき、第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせる。
【００３２】
請求項９の発明においても、請求項１の発明と同様に、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【発明の効果】
【００３３】
この発明によれば、指示された第１オブジェクトに関連付けられた処理を第２オブジェクトに行わせるので、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【００３４】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００３５】
図１を参照して、この発明の一実施例であるゲームシステム１０は、ビデオゲーム装置１２を含む。ビデオゲーム装置１２は、音楽演奏プログラム（ゲームプログラム）が組み込まれることにより、音楽演奏装置（音出力装置）として機能する。このビデオゲーム装置１２は、略立方体のハウジング１４を含み、ハウジング１４の上端には光ディスクドライブ１６が設けられる。光ディスクドライブ１６には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が装着される。ハウジング１４の前面には複数の（実施例では４つの）コネクタ２０が設けられる。これらコネクタ２０は、ケーブル（図示せず）または受信ユニット２４を介して、有線または無線によって、ポインティングデバイスとしてのコントローラ２２をビデオゲーム装置１２に接続するためのものである。図１に示すように、この実施例では、コネクタ２０に受信ユニット２４が接続され、受信ユニット２４を介して、無線でコントローラ２２がビデオゲーム装置１２に接続される。コントローラ２２の詳細については後述する。
【００３６】
なお、この実施例では、ビデオゲーム装置１２とコントローラ２２との間では無線通信を実行するため、本来的には「接続」の用語を用いるべきではない。しかしながら、ビデオゲーム装置１２とコントローラ２２との間での通信可能な連係状態を表す用語として、有線通信の場合の用語を借りて、便宜上「接続」と表現することとする。
【００３７】
また、ビデオゲーム装置１２のハウジング１４の前面であり、コネクタ２０の下方には、１つまたは複数の（この実施例では２つの）メモリスロット２８が設けられる。このメモリスロット２８にはメモリカード３０が挿入される。メモリカード３０は、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。
【００３８】
さらに、ビデオゲーム装置１２のハウジング１４の後面には、ＡＶケーブルコネクタ（図示せず）が設けられ、そのコネクタを用いて、ＡＶケーブル３２を通してビデオゲーム装置１２にモニタ３４を接続する。このモニタ３４は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２は、ビデオゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ３４の周辺（この実施例では、上側）には、２つのマーカ３４ｍ，３４ｎが設けられる。マーカ３４ｍ，３４ｎは、赤外ＬＥＤであり、それぞれモニタ３４の前方に向けて赤外光を出力する。
【００３９】
このゲームシステム１０において、ユーザまたはプレイヤがゲーム（または他のアプリケーション）をプレイするために、ユーザはまずビデオゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）をストアしている適宜の光ディスク１８を選択し、その光ディスク１８をビデオゲーム装置１２のディスクドライブ１６にローディングする。応じて、ビデオゲーム装置１２がその光ディスク１８にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはビデオゲーム装置１２に入力を与えるためにコントローラ２２を操作する。たとえば、入力手段２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。入力手段２６の他のものを動かすことによって、動画オブジェクト（プレイヤオブジェクト）を異なる方向に移動させ、または３Ｄのゲーム世界におけるユーザの視点（カメラ位置）を変化させることができる。
【００４０】
図２は図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。ビデオゲーム装置１２には、ＣＰＵ３６が設けられる。このＣＰＵ３６は、ビデオゲーム装置１２の全体的な制御を担当する。ＣＰＵ３６は、ゲームプロセサとして機能し、このＣＰＵ３６には、バスを介して、メモリコントローラ３８が接続される。メモリコントローラ３８は主として、ＣＰＵ３６の制御の下で、バスを介して接続されるメインメモリ４０の書込みや読出しを制御する。このメモリコントローラ３８にはＧＰＵ(Graphics Processing Unit) ４２が接続される。
【００４１】
ＧＰＵ４２は、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、メモリコントローラ３８を介してＣＰＵ３６からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従って、ジオメトリユニット４４およびレンダリングユニット４６によって３Ｄのゲーム画像を生成する。つまり、ジオメトリユニット４４は、３次元座標系の各種オブジェクト（複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも３つの頂点座標によって定義される多角形平面をいう。）の回転，移動，変形等の座標演算処理を行う。レンダリングユニット４６は、各種オブジェクトの各ポリゴンにテクスチャ（模様画像）を貼り付けるなどの画像生成処理を施す。したがって、ＧＰＵ４２によって、ゲーム画面上に表示すべき３Ｄの画像データが作成され、その画像データがフレームバッファ４８内に記憶される。
【００４２】
なお、ＧＰＵ４２が作画コマンドを実行するにあたって必要なデータ（プリミティブまたはポリゴンやテクスチャ等）は、ＧＰＵ４２がメモリコントローラ３８を介して、メインメモリ４０から入手する。
【００４３】
フレームバッファ４８は、たとえばラスタスキャンモニタ３４の１フレーム分の画像データを描画（蓄積）しておくためのメモリであり、ＧＰＵ４２によって１フレーム毎に書き換えられる。具体的には、フレームバッファ４８は、１画素（ピクセル）毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、Ｒ，Ｇ，Ｂ，Ａについてのデータであり、たとえば、８ビットのＲ（赤）データ、８ビットのＧ（緑）データ、８ビットのＢ（青）データおよび８ビットのＡ（アルファ）データである。なお、Ａデータは、マスク（マット画像）についてのデータである。後述のビデオＩ／Ｆ５８がメモリコントローラ３８を介してフレームバッファ４８のデータを読み出すことによって、モニタ３４の画面上に３Ｄのゲーム画像が表示される。
【００４４】
また、Ｚバッファ５０は、フレームバッファ４８に対応する画素数×１画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ４８の各記憶位置に対応するドットの奥行き情報または奥行きデータ（Ｚ値）を記憶するものである。
【００４５】
なお、フレームバッファ４８およびＺバッファ５０は、ともにメインメモリ４０の一部を用いて構成されてもよく、また、これらはＧＰＵ４２の内部に設けられてもよい。
【００４６】
メモリコントローラ３８はまた、ＤＳＰ(Digital Signal Processor)５２を介して、オーディオ用のＲＡＭ（以下、「ＡＲＡＭ」という。）５４に接続される。したがって、メモリコントローラ３８は、メインメモリ４０だけでなく、サブメモリとしてのＡＲＡＭ５４の書込みおよび／または読出しを制御する。
【００４７】
ＤＳＰ５２は、サウンドプロセサとして働き、メインメモリ４０に記憶されたサウンドデータ（図示せず）を用いたり、ＡＲＡＭ５４に書き込まれている音波形（音色）データ（図示せず）を用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【００４８】
メモリコントローラ３８は、さらに、バスによって、各インタフェース（Ｉ／Ｆ）５６，５８，６０，６２および６４に接続される。コントローラＩ／Ｆ５６は、ビデオゲーム装置１２に受信ユニット２４を介して接続されるコントローラ２２のためのインタフェースである。具体的に言うと、受信ユニット２４は、コントローラ２２から送信される入力データを受信し、コントローラＩ／Ｆ５６は、受信ユニット２４によって受信された入力データを、メモリコントローラ３８を通してＣＰＵ３６に与える。ただし、この実施例では、入力データは、後述する、操作データ、加速度データおよびマーカ座標データの少なくとも一方を含むデータを意味する。ビデオＩ／Ｆ５８は、フレームバッファ４８にアクセスし、ＧＰＵ４２で作成した画像データを読み出して、画像信号または画像データ（ディジタルＲＧＢＡピクセル値）をＡＶケーブル３２（図１）を介してモニタ３４に与える。
【００４９】
外部メモリＩ／Ｆ６０は、ビデオゲーム装置１２の前面に挿入されるメモリカード３０（図１）をメモリコントローラ３８に連係させる。それによって、メモリコントローラ３８を介して、ＣＰＵ３６がこのメモリカード３０にデータを書込み、またはメモリカード３０からデータを読み出すことができる。オーディオＩ／Ｆ６２は、メモリコントローラ３８を通してＤＳＰ５２から与えられるオーディオデータまたは光ディスク１８から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号（音声信号）をモニタ３４のスピーカ３４ａに与える。
【００５０】
そして、ディスクＩ／Ｆ６４は、ディスクドライブ１６をメモリコントローラ３８に接続し、したがって、ＣＰＵ３６がディスクドライブ１６を制御する。このディスクドライブ１６によって光ディスク１８から読み出されたプログラムデータやテクスチャデータ等が、ＣＰＵ３６の制御の下で、メインメモリ４０に書き込まれる。
【００５１】
図３および図４にはコントローラ２２の外観の一例が示される。図３（Ａ）は、コントローラ２２の上面後方から見た斜視図であり、図３（Ｂ）は、コントローラ２２を下面後方から見た斜視図である。図４は、コントローラ２２を前方から見た正面図である。
【００５２】
図３および図４を参照して、コントローラ２２は、たとえばプラスチック成型によって形成されたハウジング２２ａを有している。ハウジング２２ａは、略直方体形状であり、ユーザが片手で把持可能な大きさである。上述したように、ハウジング２２ａ（コントローラ２２）には、入力手段（複数のボタンないしスイッチ）２６が設けられる。具体的には、図３（Ａ）に示すように、ハウジング２２ａ（コントローラ２２）の上面には、十字キー２６ａ，Ｘボタン２６ｂ，Ｙボタン２６ｃ，Ａボタン２６ｄ，セレクトスイッチ２６ｅ，メニュー（ホーム）スイッチ２６ｆ，スタートスイッチ２６ｇおよび電源スイッチ２６ｈが設けられる。また、図３（Ｂ）に示すように、ハウジング２２ａの下面に凹部が形成されており、この凹部の後方傾斜面に、Ｂトリガースイッチ２６ｉが設けられる。
【００５３】
十字キー２６ａは、４方向プッシュスイッチであり、矢印で示す４つの方向、前（または上）、後ろ（または下）、右および左の操作部を含む。この操作部のいずれか１つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト（プレイヤキャラクタまたはプレイヤオブジェクト）の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【００５４】
Ｘボタン２６ｂおよびＹボタン２６ｃは、それぞれ、押しボタンスイッチであり、３次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整するために使用される。または、Ｘボタン２６ｂおよびＹボタン２６ｃは、Ａボタン２６ｄおよびＢトリガースイッチ２６ｉと同じ操作或いは補助的な操作をする場合に用いることもあり得る。
【００５５】
Ａボタンスイッチ２６ｄは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム（ＲＰＧ）やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
【００５６】
セレクトスイッチ２６ｅ、メニュースイッチ２６ｆ、スタートスイッチ２６ｇおよび電源スイッチ２６ｈもまた、押しボタンスイッチである。セレクトスイッチ２６ｅは、ゲームモードを選択するために使用される。メニュースイッチ２６ｆは、ゲームメニュー（メニュー画面）を表示するために使用される。スタートスイッチ２６ｇは、開始（再開）したり、一時提示したりするなどのために使用される。電源スイッチ２６ｈは、ビデオゲーム装置１２の電源を遠隔操作によってオン／オフするために使用される。
【００５７】
なお、この実施例では、コントローラ２２自体をオン／オフするための電源スイッチは設けておらず、コントローラ２２の入力手段２６のいずれかを操作することによってコントローラ２２はオンとなり、一定時間（たとえば、３０秒）以上操作しなければ自動的にオフとなるようにしてある。
【００５８】
Ｂトリガースイッチ２６ｉもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガーを入力したり、コントローラ２２で選択した位置を指定したりするために使用される。ただし、Ｂトリガースイッチ２６ｉを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Ｂトリガースイッチ２６ｉは、通常のＢボタンと同様に機能し、Ａボタン２６ｄによって決定したアクションを取り消すなどのために使用される。
【００５９】
また、コントローラ２２には、ハウジング２２ａの後面に外部拡張コネクタ２２ｂが設けられ、また、ハウジング２２ａの上面であり、後面側にはインジケータ２２ｃが設けられる。外部拡張コネクタ２２ｂは、図示しない別のコントローラを接続するためなどに使用される。インジケータ２２ｃは、たとえば、４つのＬＥＤで構成され、４つのうちのいずれか１つを点灯することにより、コントローラ２２の識別情報（コントローラ番号）を示す。
【００６０】
さらに、コントローラ２２は、撮像情報演算部８０（図５参照）を有しており、図４に示すように、ハウジング２２ａの前面には撮像情報演算部８０の光入射口２２ｄが設けられる。
【００６１】
なお、図３に示したコントローラ２２の形状や、各入力手段２６の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【００６２】
図５はコントローラ２２の電気的な構成を示すブロック図である。この図５を参照して、コントローラ２２はマイコン７０を含み、このマイコン７０には、内部バス（図示せず）によって、入力手段２６、メモリ７２、加速度センサ７４および無線モジュール７６が接続される。また、無線モジュール７６には、アンテナ７８が接続される。
【００６３】
なお、図示は省略するが、上述した拡張コネクタ２２ｂおよびインジケータ２２ｃ（ＬＥＤ）もインタフェースまたはドライバを介してマイコン７０に接続される。
【００６４】
マイコン７０は、コントローラ２２の全体制御を司り、入力手段２６および加速度センサ７４のような入力手段によって入力された情報（入力情報）を、入力データとして無線モジュール７６およびアンテナ７８を介してビデオゲーム装置１２に送信（入力）する。このとき、マイコン７０は、メモリ７２を作業領域ないしバッファ領域として用いる。
【００６５】
上述した入力手段２６（２６ａ−２６ｉ）からの操作信号（操作データ）は、マイコン７０に入力され、マイコン７０は操作データを一旦メモリ７２に記憶する。
【００６６】
また、加速度センサ７４は、コントローラ２２の縦方向（図３に示すｙ軸方向）、横方向（図３に示すｘ軸方向）および前後方向（図３に示すｚ軸方向）の３軸で各々の加速度を検出する。この加速度センサ７４は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。図３（Ａ）および図３（Ｂ）からも分かるように、この実施例では、コントローラ２２の上面の垂直上方を、ｙ軸の正の方向とし、ｙ軸に垂直であり、コントローラ２２の右方向をｘ軸の正の方向とし、ｘ軸とｙ軸とに垂直であり、コントローラ２２の長手方向であり、Ｘボタン２６ｂから十字スイッチ２６ａに向かう方向をｚ軸の正の方向としてある。
【００６７】
たとえば、加速度センサ７４は、第１所定時間（たとえば、２００ｍｓｅｃ）毎に、ｘ軸，ｙ軸，ｚ軸の各々についての加速度（ａｘ，ａｙ，ａｚ）を検出し、検出した加速度のデータ（加速度データ）をマイコン７０に入力する。たとえば、加速度センサ７４は、各軸方向の加速度を、−２．０ｇ〜２．０ｇ（ｇは重力加速度である。以下、同じ。）の範囲で検出する。マイコン７０は、加速度センサ７４から与えられる加速度データを、第２所定時間（たとえば、１フレーム：画面更新単位時間（１／６０ｓｅｃ））毎に検出し、一旦メモリ７２に記憶する。マイコン７０は、操作データ、加速度データおよびマーカ座標データの少なくとも１つを含む入力データを作成し、作成した入力データを、第３所定時間（たとえば、１フレーム）毎にビデオゲーム装置１２に送信する。
【００６８】
なお、図３では省略したが、この実施例では、加速度センサ７４は、ハウジング２２ａの内部であり、十字キー２６ａが配置される付近に設けられる。
【００６９】
無線モジュール７６は、たとえばＢｌｕｅｔｏｏｔｈ（登録商標）の技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ７８から放射する。つまり、入力データは、無線モジュール７６によって微弱電波信号に変調されてアンテナ７８（コントローラ２２）から送信される。この微弱電波信号が上述したビデオゲーム装置１２に装着された受信ユニット２４によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ビデオゲーム装置１２（ＣＰＵ３６）は、コントローラ２２からの入力データを取得することができる。そして、ＣＰＵ３６は、取得した入力データとプログラム（ゲームプログラム）とに従ってゲーム処理を行う。
【００７０】
さらに、上述したように、コントローラ２２には、撮像情報演算部８０が設けられる。この撮像情報演算部８０は、赤外線フィルタ８２、レンズ８４、撮像素子８６および画像処理回路８８によって構成される。赤外線フィルタ８２は、コントローラ２２の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ３４の表示画面近傍（周辺）に配置されるマーカ３４ｍおよび３４ｎは、モニタ３４の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ８２を設けることによってマーカ３４ｍおよび３４ｎの画像をより正確に撮像することができる。レンズ８４は、赤外線フィル８２を透過した赤外線を集光して撮像素子８６へ出射する。撮像素子８６は、たとえばＣＭＯＳセンサあるいはＣＣＤのような固体撮像素子であり、レンズ８４によって集光された赤外線を撮像する。したがって、撮像素子８６は、赤外線フィルタ８２を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子８６によって撮像された画像を撮像画像と呼ぶ。撮像素子８６によって生成された画像データは、画像処理回路８８で処理される。画像処理回路８８は、撮像画像内における撮像対象（マーカ３４ｍおよび３４ｎ）の位置を算出し、第４所定時間（たとえば、１フレーム）毎に、当該位置を示す各座標値を撮像データとしてマイコン７０に出力する。なお、画像処理回路８８における処理については後述する。
【００７１】
図６は、コントローラ２２を用いてゲームプレイするときの状態を概説する図解図である。図６に示すように、ビデオゲームシステム１０でコントローラ２２を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ２２を把持する。厳密に言うと、プレイヤは、コントローラ２２の前面（撮像情報演算部８０が撮像する光の入射口２２ｄ側）がマーカ３４ｍおよび３４ｎの方を向く状態でコントローラ２２を把持する。ただし、図１からも分かるように、マーカ３４ｍおよび３４ｎは、モニタ３４の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ２２が指示する画面上の位置を変更したり、コントローラ２２と各マーカ３４ｍおよび３４ｎとの距離を変更したりすることによってゲーム操作を行う。
【００７２】
図７は、マーカ３４ｍおよび３４ｎと、コントローラ２２との視野角を説明するための図である。図７に示すように、マーカ３４ｍおよび３４ｎは、それぞれ、視野角θ１の範囲で赤外光を放射する。また、撮像情報演算部８０の撮像素子８６は、コントローラ２２の視線方向を中心とした視野角θ２の範囲で入射する光を受光することができる。たとえば、マーカ３４ｍおよび３４ｎの視野角θ１は、共に３４°（半値角）であり、一方、撮像素子８６の視野角θ２は４１°である。プレイヤは、撮像素子８６が２つのマーカ３４ｍおよび３４ｎからの赤外光を受光することが可能な位置および向きとなるように、コントローラ２２を把持する。具体的には、撮像素子８６の視野角θ２の中に少なくとも一方のマーカ３４ｍおよび３４ｎが存在し、かつ、マーカ３４ｍまたは３４ｎの少なくとも一方の視野角θ１の中にコントローラ２２が存在する状態となるように、プレイヤはコントローラ２２を把持する。この状態にあるとき、コントローラ２２は、マーカ３４ｍおよび３４ｎの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ２２の位置および向きを変化させることによってゲーム操作を行うことができる。
【００７３】
なお、コントローラ２２の位置および向きがこの範囲外となった場合、コントローラ２２の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
【００７４】
操作可能範囲内でコントローラ２２が把持される場合、撮像情報演算部３５によって各マーカ３４ｍおよび３４ｎの画像が撮像される。すなわち、撮像素子８６によって得られる撮像画像には、撮像対象である各マーカ３４ｍおよび３４ｎの画像（対象画像）が含まれる。図８は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路８８は、各マーカ３４ｍおよび３４ｎの撮像画像における位置を表す座標（マーカ座標）を算出する。
【００７５】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路８８は、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路８８は、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である２つのマーカ３４ｍおよび３４ｎの画像３４ｍ’および３４ｎ’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像であるマーカ３４ｍおよび３４ｎの画像３４ｍ’および３４ｎ’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【００７６】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路８８は当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子８６の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子８６によって撮像された撮像画像の解像度が１２６×９６であるとし、重心位置は１０２４×７６８のスケールで算出されるものとする。つまり、マーカ座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。
【００７７】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをＹ軸正方向とし、右向きをＸ軸正方向とする座標系（ＸＹ座標系）で表現されるものとする。
【００７８】
また、対象画像が正しく検出される場合には、判定処理によって２つの高輝度部分が対象画像として判定されるので、２箇所のマーカ座標が算出される。画像処理回路８８は、算出された２箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ（マーカ座標データ）は、上述したように、マイコン７０によって入力データに含まれ、ビデオゲーム装置１２に送信される。
【００７９】
ビデオゲーム装置１２（ＣＰＵ３６）は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ３４の画面上におけるコントローラ２２の指示位置（指示座標）と、コントローラ２２からマーカ３４ｍおよび３４ｎまでの各距離とを算出することができる。具体的には、２つのマーカ座標の中点の位置が、コントローラ２２の向いている位置すなわち指示位置として採用（算出）される。また、撮像画像における対象画像間の距離が、コントローラ２２と、マーカ３４ｍおよび３４ｎとの距離に応じて変化するので、２つのマーカ座標間の距離を算出することによって、ビデオゲーム装置１２はコントローラ２２とマーカ３４ｍおよび３４ｎとの間の距離を把握できる。
【００８０】
次に、以上のような構成のゲームシステム１０を用いてプレイされる仮想ゲームのゲーム画面および仮想ゲームにおけるプレイヤのゲーム操作について説明する。図９−図１１には、モニタ３４に表示されるゲーム画面１００の例が示される。
【００８１】
図９（Ａ）および図９（Ｂ）に示すように、ゲーム画面１００には、プレイヤオブジェクト１０２、星オブジェクト１０４（１０４ａ，１０４ｂ，１０４ｃ，１０４ｄ）および惑星オブジェクト１０６（１０６ａ，１０６ｂ，１０６ｃ）が表示されるとともに、コントローラ２２の指示座標にカーソル画像１１０が表示される。
【００８２】
以下、この明細書においては、星オブジェクト１０４ａ−１０４ｄをまとめて星オブジェクト１０４と言うことがあり、また、惑星オブジェクト１０６ａ−１０６ｃをまとめて惑星オブジェクト１０６と言うことがある。
【００８３】
プレイヤは、プレイヤオブジェクト１０２と星オブジェクト１０４とを連結させて、プレイヤオブジェクト１０２を当該星オブジェクト１０４に近づけたり（引き寄せたり）、連結させる星オブジェクト１０４を変えたりして、プレイヤオブジェクト１０２を移動させる。図９（Ａ）では、プレイヤオブジェクト１０２は、惑星１０６ａに存在する。ここで、プレイヤがコントローラ２２を動かす（振る）ことにより、カーソル画像１１０を移動させて、カーソル画像１１０を所望の星オブジェクト１０４ａに接触させたり、重ねたりすることにより、当該星オブジェクト１０４ａを選択する。このとき、プレイヤは、ゲーム画面１００における所望の星オブジェクト１０４ａの表示位置をコントローラ２２で指示するだけであり、コントローラ２２の入力手段２６は何ら操作されない。すると、選択（指示）された星オブジェクト１０４ａは、プレイヤオブジェクト１０２と連結可能な候補オブジェクトとして決定される。そして、図９（Ｂ）に示すように、候補オブジェクトとしての星オブジェクト１０４ａは、プレイヤが識別（視認）可能に、その表示を変化される。図９（Ｂ）からも分かるように、候補オブジェクトは、黒色で塗り潰すことにより示されるが、実際には、色反転させたり、色強調させたり、画像を変化させたりして示される。以下、同じ。
【００８４】
図示は省略するが、プレイヤオブジェクト１０２と、プレイヤが指示した星オブジェクト１０４との間に他のオブジェクトが存在する場合には、当該星オブジェクト１０４は候補オブジェクトとして決定されない。
【００８５】
この実施例では、候補オブジェクトが決定されると、この候補オブジェクトがプレイヤオブジェクト１０２と連結される対象のオブジェクト（対象オブジェクト）として決定されない限り、その状態は一定時間（たとえば、３００フレーム）継続される。一定時間が経過すると、候補オブジェクトとしての状態（設定）が解除される。このように、候補オブジェクトとして決定された状態を一定時間継続させることにより、対象のオブジェクトとして決定する操作を行うまでの時間的余裕をプレイヤに与えることができる。また、一定時間に限り候補オブジェクトとして決定するのは、所望でない星オブジェクト１０４を候補オブジェクトとして選択した場合などに、選択を解除したり、他の星オブジェクト１０４を候補オブジェクトとして選択し直したりすることができるようにするためである。
【００８６】
図９（Ｂ）に示すように、候補オブジェクトが決定されている場合に、プレイヤが所定のボタン（この実施例では、Ｂトリガースイッチ２６ｉ）を操作すると、当該候補オブジェクトがプレイヤオブジェクト１０２と連結されるべき対象の星オブジェクト１０４（以下、「対象オブジェクト」という。）として決定（確定）される。つまり、候補オブジェクトが選択されている状態では、コントローラ２２の指示位置に関係なく、候補オブジェクトを対象オブジェクトとして確定することができる。したがって、たとえば、コントローラ２２のＢトリガースイッチ２６ｉをオンするときに、手ぶれ等が発生してコントローラ２２の指示位置が候補オブジェクトの表示位置（有効範囲座標）から外れてしまっても、入力データをビデオゲーム装置１２に送信することができれば、対象オブジェクトを確定することができるのである。これによって、候補オブジェクトを対象オブジェクトとして確定するための所定のボタンの操作を確実に行うことができ、操作性を向上することができる。
【００８７】
すると、図１０（Ａ）に示すように、プレイヤオブジェクト１０２と対象オブジェクト（ここでは、星オブジェクト１０４ａ）とが線オブジェクト１０８によって連結される。この状態で、プレイヤが所定のボタン（この実施例では、Ｂトリガースイッチ２６ｉ）を押し続けると、対象オブジェクトの引力が働き、プレイヤオブジェクト１０２は当該対象オブジェクトに向けて移動される。このとき、線オブジェクト１０８は、プレイヤオブジェクト１０２の移動に従って短縮される。したがって、図１０（Ｂ）に示すように、プレイヤオブジェクト１０２は、対象オブジェクトに近づく。
【００８８】
なお、図面では、分かり難いが、Ｂトリガースイッチ２６ｉを離すと、対象オブジェクト１０４の引力が働かなくなり、したがって、プレイヤオブジェクト１０２は停止される。
【００８９】
また、詳細な説明は省略するが、この実施例では、プレイヤオブジェクト１０２と選択した候補オブジェクトとの３次元のゲーム空間における距離が所定距離を超えて離れている場合には、Ｂトリガースイッチ２６ｉが押された場合であっても、当該候補オブジェクトを対象オブジェクトとして決定しないようにしてある。これは、プレイヤオブジェクト１０２が所定距離を越えるような遠距離を一度に移動してしまうと、ゲームの面白味に欠けてしまうからである。
【００９０】
ここで、プレイヤオブジェクト１０２が移動する速度（移動速度）は、毎フレーム計算される。具体的には、数１に従って移動速度が算出される。ただし、Ｖ´は次フレームの移動速度であり、Ｓは対象オブジェクトの中心座標（２次元座標）であり、Ｍはプレイヤオブジェクト１０２の現在（現フレーム）の位置座標（２次元座標）であり、Ｖはプレイヤオブジェクト１０２の現フレームの移動速度であり、ａは対象オブジェクトの引力であり、ｒ（０≦ｒ≦１）は現フレームの移動速度Ｖ´の減衰率である。
【００９１】
[数１]
Ｖ´＝[Ｖ＋｛（Ｓ−Ｍ）／｜Ｓ−Ｍ｜｝×ａ]×ｒ
なお、{}内は、ベクトルの正規化を意味する。
【００９２】
また、プレイヤオブジェクト１０２が対象オブジェクトに近づく程、プレイヤオブジェクト１０２を減速し易くするため、引力ａおよび減衰率ｒは数２に従って毎フレーム算出（更新）される。ただし、ｄはプレイヤオブジェクト１０２と対象オブジェクトとの距離（２次元の距離）であり、ｋは引力ａおよび減速率ｒを更新（計算）するか否かを決定する閾値であり、ｂは基本の引力、ｃ（ｃ＞ｂ）は距離ｄ＝０のときの引力であり、ｇ（０≦ｇ≦１）は基本の減衰率であり、ｈ（０≦ｈ≦１、ｇ＜ｈ）は距離ｄ＝０のときの減衰率である。また、ｋ、ｂ、ｃ、ｇ、ｈは定数である。
【００９３】
[数２]
ｄ＜ｋのとき
ａ＝ｂ×ｔ＋ｃ×（１−ｔ）
ｆ＝ｇ×ｔ＋ｈ×（１−ｔ）
ｔ＝ｄ／ｋ
ｄ≧ｋのとき
ａ＝ｂ
ｆ＝ｇ
また、図１１（Ａ）に示すように、プレイヤオブジェクト１０２と対象オブジェクトとが線オブジェクト１０８で連結されている場合にも、プレイヤはコントローラ２２を動かすことにより、カーソル画像１１０を移動させて、他の星オブジェクト１０４（ここでは、１０４ｂ，１０４ｃ，１０４ｄ）を候補オブジェクトとして選択することができる。
【００９４】
図面では表現することができないが、プレイヤオブジェクト１０２と対象オブジェクトとが線オブジェクト１０８によって連結されている場合には、プレイヤオブジェクト１０２が移動しているか否かに拘わらず、プレイヤは、コントローラ２２によってカーソル画像１１０を移動させて、候補オブジェクトを選択することができる。
【００９５】
図１１（Ａ）に示すように、星オブジェクト１０４ｂが候補オブジェクトとして選択された状態で、プレイヤが所定の操作を実行すると、星オブジェクト１０４ｂが対象オブジェクトとして決定（確定）される。つまり、対象オブジェクトが、星オブジェクト１０４ａから星オブジェクト１０４ｂに変更される。したがって、プレイヤオブジェクト１０２と星オブジェクト１０４ｂとが線オブジェクト１０８によって連結される。
【００９６】
ここで、上述した所定の操作について説明する。図１０（Ａ）に示すゲーム画面１００において、Ｂトリガースイッチ２６ｉを押し続けて、プレイヤオブジェクト１０２を星オブジェクト１０４ａに近づけている場合には、所定の操作は、Ｂトリガースイッチ２６ｉを一旦離して、再度、押すことを意味する。つまり、かかる場合には、プレイヤは、Ｂトリガースイッチ２６ｉをオフした後にオンする。ただし、図１０（Ａ）に示すゲーム画面１００において、Ｂトリガースイッチ２６ｉを離して、プレイヤオブジェクト１０２を停止させている場合には、所定の操作は、Ｂトリガースイッチ２６ｉを押すことを意味する。つまり、かかる場合には、プレイヤは、Ｂトリガースイッチ２６ｉをオンするだけである。
【００９７】
なお、上述したように、候補オブジェクトが選択されている状態では、コントローラ２２の指示位置に関係なく、対象オブジェクトを確定することができる。
【００９８】
このようにして、プレイヤは、候補オブジェクトや対象オブジェクトを変化させたり、プレイヤオブジェクト１０２を対象オブジェクトに近づけたりすることにより、プレイヤオブジェクト１０２をゲーム空間内で移動させる。たとえば、プレイヤオブジェクト１０２が惑星１０６ａから惑星１０６ｂまたは惑星１０６ｃに移動される。
【００９９】
図１２は図２に示したメインメモリ４０のメモリマップである。図１２に示すように、メインメモリ４０は、プログラム記憶領域９０およびデータ記憶領域９２を含む。プログラム記憶領域９０は、ゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム９０ａ、ゲーム画像生成プログラム９０ｂ、ゲーム画像表示プログラム９０ｃ、星オブジェクト設定プログラム９０ｄ、入力データ検出プログラム９０ｅ、ゲーム操作プログラム９０ｆおよび視点位置制御プログラム９０ｇなどによって構成される。
【０１００】
ゲームメイン処理プログラム９０ａは、仮想ゲームのメインルーチンを処理するためのプログラムである。ゲーム画像生成プログラム９０ｂは、仮想ゲームのゲーム空間に、プレイヤオブジェクト１０２や敵オブジェクト（図示せず）の動画オブジェクト、または、星オブジェクト１０４、惑星オブジェクト１０６、線オブジェクト１０８のような背景オブジェクトまたはカーソル画像１１０を含むゲーム画像を生成するためのプログラムである。ゲーム画像表示プログラム９０ｃは、ゲーム画像生成プログラム９０ｂによって生成されたゲーム画像を出力し、モニタ３４にゲーム画面を表示するためのプログラムである。
【０１０１】
星オブジェクト設定プログラム９０ｄは、３次元のゲーム空間に配置される星オブジェクト１０４を、ゲーム画面に表示するために、２次元の仮想スクリーンに透視投影し、透視投影することにより２次元座標に変換された星オブジェクト１０４の中心座標についての中心座標データ９２ｃおよびその有効範囲の座標についての有効範囲座標データ９２ｄをデータ記憶領域９２に記憶（設定）するためのプログラムである。
【０１０２】
ただし、有効範囲は、コントローラ２２の指示座標が星オブジェクト１０４を指示しているか否かを判定するための範囲である。たとえば、有効範囲を、星オブジェクト１０４と同じ大きさ(同じ形状)で設定する場合には、星オブジェクト１０４の表示領域に含まれる全ての座標データが記憶される。ただし、有効範囲を、星オブジェクト１０４を囲む簡単な図形（円、矩形）で設定することもできる。かかる場合には、当該図形に含まれる全ての座標データを記憶する必要はない。たとえば、有効範囲を円で設定する場合には、当該円の中心座標のデータと、半径のデータとが記憶される。また、有効範囲を矩形（正方形、長方形）で設定する場合には、当該矩形の頂点座標のデータが記憶される。
【０１０３】
また、星オブジェクト設定プログラム９０ｄは、２次元座標に変換された（または、３次元のゲーム空間において）、プレイヤオブジェクト１０２と星オブジェクト１０４との間に他のオブジェクトが存在するか否かを判断する。そして、プレイヤオブジェクト１０２と当該星オブジェクト１０４との間に他のオブジェクトが存在する場合には、星オブジェクト設定プログラム９０ｄは、当該星オブジェクト１０４を候補オブジェクトとして選択できない旨を設定する。一方、プレイヤオブジェクト１０２と当該星オブジェクト１０４との間に他のオブジェクトが存在しない場合には、星オブジェクト設定プログラム９０ｄは、当該星オブジェクト１０４を候補オブジェクトとして選択できる旨を設定する。具体的には、星オブジェクト１０４についての優先フラグ９２ｇを成立（オン）または不成立（オフ）させる。
【０１０４】
ただし、プレイヤオブジェクト１０２に変えて、視点（仮想カメラ）と星オブジェクト１０４との間に他のオブジェクトが存在するか否かを判断するようにしてもよい。
【０１０５】
入力データ検出プログラム９０ｅは、所定時間（１フレーム）毎に、コントローラ２２からの入力データを検出するためのプログラムである。具体的には、入力データ検出プログラム９０ｅは、１フレーム毎に、コントローラＩ／Ｆ５６のバッファ（図示せず）に一時記憶された入力データを読み出し、読み出した入力データをデータ記憶領域９２に記憶する。ただし、入力データ検出プログラム９０ｅは、コントローラＩ／Ｆ５６のバッファに入力データが一時記憶されていない場合には、データ記憶領域９２に何も記憶しない。
【０１０６】
ゲーム操作プログラム９０ｆは、プレイヤの操作に従ってプレイヤオブジェクト１０２をゲーム空間内で移動させるためのプログラムであり、その過程で、プレイヤが選択した星オブジェクト１０４を候補オブジェクトとして決定したり、候補オブジェクトの星オブジェクト１０４を対象オブジェクトとして決定したりする。視点位置制御プログラム９０ｇは、プレイヤオブジェクト１０２の移動に従って、ゲーム空間内に設定される視点（仮想カメラ）の３次元位置を設定（更新）するためのプログラムである。また、視点位置制御プログラム９０ｇは、視点の３次元位置のみならず、視点の方向を制御することもある。
【０１０７】
なお、図示は省略するが、プログラム記憶領域９０には、音出力プログラムやバックアッププログラムなども記憶される。音出力プログラムは、ゲーム音楽（ＢＧＭ）、オブジェクトの音声ないし擬声音、効果音など、ゲームに必要な音を出力するためのプログラムである。また、バックアッププログラムは、ゲームデータをメモリカード３０に保存するためのプログラムである。
【０１０８】
データ記憶領域９２には、画像データ９２ａ、入力データ９２ｂ、中心座標データ９２ｃ、有効範囲座標データ９２ｄ、候補オブジェクトデータ９２ｅ、対象オブジェクトデータ９２ｆ、優先フラグ９２ｇおよび入力フラグ９２ｈなどが記憶されるとともに、候補タイマ９２ｉが設けられる。
【０１０９】
画像データ９２ａは、上述したゲーム画像を生成するためのデータ（ポリゴン、テクスチャなど）である。入力データ９２ｂは、上述したように、操作データ、加速度データおよびマーカ座標データの少なくとも１つを含むデータであり、入力データ検出プログラム９０ｅに従って更新される。
【０１１０】
中心座標データ９２ｃは、星オブジェクト設定プログラム９０ｄに従って設定された星オブジェクト１０４（たとえば、１０４ａ−１０４ｄ）の中心座標についてのデータであり、各星オブジェクト１０４に対応して記憶される。また、有効範囲座標データ９２ｃは、星オブジェクト設定プログラム９０eに従って設定された星オブジェクト１０４（１０４ａ−１０４ｄ）の有効範囲に含まれる全ての座標についてのデータであり、各星オブジェクト１０４に対応して記憶される。
【０１１１】
候補オブジェクトデータ９２ｅは、コントローラ２２によって指示された星オブジェクト１０４の識別情報についてのデータであり、ゲーム操作プログラム９０ｆに従って記憶されたり、消去されたりする。ただし、ゲーム操作プログラム９０ｆは、一旦候補オブジェクトデータ９２ｅを記憶した後では、一定時間が経過するか、対象オブジェクトが決定されるまで、当該候補オブジェクトデータ９２ｅを消去することはない。
【０１１２】
対象オブジェクトデータ９２ｆは、候補オブジェクトが決定されている場合に、コントローラ２２のＢトリガースイッチ２６ｉがオンされることによって対象オブジェクトに決定された星オブジェクト１０４の識別情報についてのデータであり、ゲーム操作プログラム９０ｆに従って記憶（更新）される。
【０１１３】
優先フラグ９２ｇは、プレイヤオブジェクト１０２と星オブジェクト１０４との間に他のオブジェクトが存在するか否かを判断するためのフラグである。言い換えると、優先フラグ９２ｇは、星オブジェクト１０４を優先するか否かを判断するためのフラグである。したがって、優先フラグ９２ｇは星オブジェクト１０４毎に設けられる。ただし、厳密に言うと、優先フラグ９２ｇは、各星オブジェクト１０４の２次元座標（有効範囲座標データ９２ｄ）に対応づけられる。このとき、各星オブジェクト１０４に設定されている複数の有効範囲座標のそれぞれに対応付けて優先フラグを設定するようにしてもよい。このようにすれば、たとえば、プレイヤオブジェクト１０２と星オブジェクト１０４の一部との間に他のオブジェクトが存在する場合に、当該星オブジェクト１０４の一部と他の部分とで優先フラグの設定を変えることができる。したがって、星オブジェクト１０４の一部をコントローラ２２で指示した場合は当該星オブジェクトを選択することはできないが、他の部分を指示した場合は当該星オブジェクトを選択することができるといった処理を実現することができる。
【０１１４】
なお、星オブジェクト１０４の２次元座標を対応づけるのは、コントローラ２２の指示座標に対応して星オブジェクト１０４を容易に判定するためである。
【０１１５】
また、各優先フラグ９２ｇは１ビットのレジスタで構成され、そのデータ値は星オブジェクト設定プログラム９０ｄに従って設定（更新）される。プレイヤオブジェクト１０２と星オブジェクト１０４との間に他のオブジェクトが存在する場合には、当該星オブジェクトに対応する優先フラグ９２ｇはオフされ、レジスタのビットにデータ値「０」が設定される。一方、プレイヤオブジェクト１０２と星オブジェクト１０４との間に他のオブジェクトが存在しない場合には、当該星オブジェクト１０４を優先すべく、当該星オブジェクト１０４に対応する優先フラグ９２ｇはオンされ、レジスタのビットにデータ値「１」が設定される。
【０１１６】
入力フラグ９２ｈは、所定の入力手段２６（この実施例では、Ｂトリガースイッチ２６ｉ）が押されているかどうかを判断するためのフラグである。この入力フラグ９２ｈは、たとえば１ビットのレジスタで構成され、そのデータ値はゲーム操作プログラム９０ｆに従って設定（更新）される。Ｂトリガースイッチ２６ｉが押されている場合には、つまり操作データがＢトリガースイッチ２６ｉをオンしていることを示す場合には、入力フラグ９２ｈはオンされ、レジスタのビットにデータ値「１」が設定される。一方、Ｂトリガースイッチ２６ｉが押されていない場合には、つまり操作データがＢトリガースイッチ２６ｉをオフしていることを示す場合には、入力フラグ９２ｈはオフされ、レジスタのビットにデータ値「０」が設定される。
【０１１７】
候補タイマ９２ｉは、候補オブジェクトが決定されている一定時間をカウントするためのタイマである。たとえば、候補オブジェクトが決定されると、つまり候補オブジェクトデータ９２ｅがデータ記憶領域９２に記憶されると、候補タイマ９２ｉに一定時間（たとえば、３００フレーム）が設定される。そして、候補タイマ９２ｉは、候補オブジェクトが対象オブジェクトとして決定されない限り、１フレーム毎にカウントダウンされる。そして、候補タイマ９２ｉがタイムアップすると、候補オブジェクトデータ９２ｅが消去される。
【０１１８】
なお、図示は省略するが、データ記憶領域９２には、ゲームデータやサウンドデータまたは他のフラグなども記憶される。
【０１１９】
具体的には、図２に示したＣＰＵ３６が図１３に示すゲーム全体処理を実行する。図１３に示すように、ＣＰＵ３６は、ゲーム全体処理を開始すると、ステップＳ１で、初期化を実行する。ここでは、メインメモリ４０のバッファ領域をクリアしたり、各種フラグをオフしたりする。次のステップＳ３では、ゲーム空間内にオブジェクトを配置する。つまり、プレイヤオブジェク１０２、星オブジェクト１０４、惑星オブジェクト１０６などのオブジェクトを生成する。
【０１２０】
続いて、ステップＳ５では、視点から見たゲーム空間をゲーム画像として描画する。つまり、仮想カメラでゲーム空間を撮影し、撮影した画像を、仮想カメラを原点とする２次元のカメラ座標に変換する。言い換えると、視点から見たゲーム空間を、仮想スクリーンに透視投影するのである。次にステップＳ７では、後述する星オブジェクトの設定処理（図１４）を実行し、ステップＳ９では、入力データを取得（検出）する。
【０１２１】
入力データを取得すると、ステップＳ１１で、後述するゲーム操作処理（図１５−図１８）を実行し、ステップＳ１３で、視点位置制御処理を実行する。次にステップＳ１５で、数１および数２に従って、移動速度算出処理を実行する。そして、ステップＳ１７では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了が指示されたり、ゲームオーバになったりしたかを判断する。ステップＳ１７で“ＮＯ”であれば、つまりゲーム終了でなければ、そのままステップＳ５に戻る。一方、ステップＳ１７で“ＹＥＳ”であれば、つまりゲーム終了であれば、そのままゲーム全体処理を終了する。
【０１２２】
図１４は図１３に示したステップＳ７の星オブジェクトの設定処理を示すフロー図である。図１３に示すように、ＣＰＵ３６は、星オブジェクトの設定処理を開始すると、ステップＳ３１で、各星オブジェクト１０４（１０４ａ−１０４ｄ）の中心座標および有効範囲座標を設定する。ただし、このステップＳ３１で設定される中心座標および有効範囲の座標は３次元座標である。したがって、有効範囲を上述したような円や矩形で設定する場合には、３次元の有効範囲は星オブジェクト１０４を囲む球や立方体または直方体に設定される。
【０１２３】
次のステップＳ３３では、ステップＳ３１で設定された中心座標および有効範囲座標を２次元座標に変換する。つまり、中心座標および有効範囲座標を仮想スクリーンに透視投影した場合の２次元座標に変換する。続いて、ステップＳ３５で、変換された２次元座標を星オブジェクト１０４に対応付けて記憶する。つまり、星オブジェクト１０４についての中心座標データ９２ｃおよび有効範囲座標データ９２ｄがメインメモリ４０のデータ記憶領域９２に記憶される。
【０１２４】
続いて、ステップＳ３７では、プレイヤオブジェクト１０２と星オブジェクト１０４との間に他のオブジェクトが存在するかどうかを判断する。ステップＳ３７で“ＹＥＳ”であれば、つまりプレイヤオブジェクト１０２と星オブジェクト１０４との間に他のオブジェクトが存在する場合には、ステップＳ３９で、当該星オブジェクト１０４の２次元座標（有効範囲座標データ９２ｄ）に対応する優先フラグ９２ｇをオフして、図１３に示したゲーム全体処理にリターンする。一方、ステップＳ３７で“ＮＯ”であれば、つまりプレイヤオブジェクト１０２と星オブジェクト１０４との間に他のオブジェクトが存在しない場合には、ステップＳ４１で、当該星オブジェクト１０４の２次元座標（有効範囲座標データ９２ｄ）に対応する優先フラグ９２ｇをオンして、ゲーム全体処理にリターンする。
【０１２５】
図１５−図１８は、図１３に示したステップＳ１１のゲーム操作処理を示すフロー図である。図１５に示すように、ＣＰＵ３６は、ゲーム操作処理を開始すると、ステップＳ５１で、指示座標を算出する。ここでは、ＣＰＵ３６は、入力データに含まれるマーカ座標データを検出し、このマーカ座標データに基づいてコントローラ２２の指示座標を算出する。続くステップＳ５３では、コントローラ２２の指示座標にカーソル画像１１０を表示する。
【０１２６】
続いて、ステップＳ５５では、指示座標が星オブジェクト１０４の有効範囲内かどうかを判断する。つまり、指示座標が、有効範囲座標データ９２ｄが示す座標に含まれるかどうかを判断する。ただし、上述したように、カーソル画像１１０で星オブジェクト１０４を指示するので、カーソル画像１１０が星オブジェクト１０４に接触しているかどうか、または重なっているかどうかを判断するようにしてもよい。ステップＳ５５で“ＮＯ”であれば、つまり指示座標が星オブジェクト１０４の有効範囲外であれば、図１６に示すステップＳ６３に進む。一方、ステップＳ５５で“ＹＥＳ”であれば、つまり指示座標が星オブジェクト１０４の有効範囲内であれば、ステップＳ５７で、当該星オブジェクト１０４の２次元座標（有効範囲座標）に対応する優先フラグ９２ｇはオンかどうかを判断する。
【０１２７】
ステップＳ５７で“ＮＯ”であれば、つまり当該星オブジェクト１０４の２次元座標に対応する優先フラグ９２ｇがオフであれば、当該星オブジェクト１０４を候補オブジェクトとして設定（決定）できないと判断して、そのままステップＳ６３に進む。一方、ステップＳ５７で“ＹＥＳ”であれば、つまり当該星オブジェクト１０４の２次元座標に対応する優先フラグ９２ｇがオンであれば、ステップＳ５９で、当該星オブジェクト１０４を候補オブジェクトして設定（決定）する。つまり、当該星オブジェクト１０４の識別情報のデータを候補オブジェクトデータ９２ｅとしてデータ記憶領域９２に記憶する。このとき、既に他の星オブジェクト１０４の識別情報のデータが候補オブジェクトデータ９２ｅとしてデータ記憶領域９２に記憶されている場合には、候補オブジェクトデータ９２ｅの内容を今回指示された星オブジェクト１０４の識別情報のデータに書き換えてもよいし、書き換えなくてもよい。書き換えない場合は、後述のステップＳ６９によって候補オブジェクトが消去された後に指示された星オブジェクト１０４を設定（書込）可能にする。そして、ステップＳ６１で、候補タイマ９２ｉをセットして、図１７に示すステップＳ７１に進む。たとえば、ステップＳ６１では、候補タイマ９２ｉに一定時間（３００フレーム）を設定する。
【０１２８】
上述したように、ステップＳ５５またはステップＳ５７で“ＮＯ”となり、図１６に示すように、ステップＳ６３に進むと、候補オブジェクトが設定されているかどうかを判断する。ここでは、データ記憶領域９２に、候補オブジェクトデータ９２ｅが記憶されているかどうかを判断する。ステップＳ６３で“ＮＯ”であれば、つまり候補オブジェクトが設定されていなければ、そのままステップＳ７１に進む。一方、ステップＳ６３で“ＹＥＳ”であれば、つまり候補オブジェクトが設定されていれば、ステップＳ６５で、候補タイマ９２ｉを１（フレーム）減算する。
【０１２９】
続くステップＳ６７では、候補タイマ９２ｉのカウント値が０以下であるかどうかを判断する。つまり、一定時間が経過したかどうかを判断する。ステップＳ６７で“ＮＯ”であれば、つまり一定時間が経過していなければ、候補オブジェクトの設定状態を維持すべく、そのままステップＳ７１に進む。一方、ステップＳ６７で“ＹＥＳ”であれば、つまり一定時間が経過すれば、ステップＳ６９で、候補オブジェクトすなわち候補オブジェクトデータ９２ｅをデータ記憶領域９２から消去して、ステップＳ７１に進む。
【０１３０】
図１７に示すように、ステップＳ７１では、Ｂトリガースイッチ２６ｉが押されているかどうかを判断する。つまり、ゲーム全体処理のステップＳ９で検出した入力データに含まれる操作データが、Ｂトリガースイッチ２６ｉがオンであることを示すかどうかを判断する。ステップＳ７１で“ＮＯ”であれば、つまりＢトリガースイッチ２６ｉが押されていなければ、ステップＳ７３で、入力フラグ９２ｈをオフし、ステップＳ７５で、対象オブジェクトすなわち対象オブジェクトデータ９２ｆをデータ記憶領域９２から消去して、図１８に示すステップＳ８７に進む。ただし、既に対象オブジェクトが消去されている場合には、ステップＳ７５の処理は実行されない。
【０１３１】
しかし、ステップＳ７１で“ＹＥＳ”であれば、つまりＢトリガースイッチ２６ｉが押されていれば、ステップＳ７７で、入力フラグ９２ｈがオンであるかどうかを判断する。つまり、Ｂトリガースイッチ２６ｉが押し続けられているかどうかを判断する。ステップＳ７７で“ＹＥＳ”であれば、つまり入力フラグ９２ｈがオンであれば、Ｂトリガースイッチ２６ｉが押し続けられていると判断して、ステップＳ８７に進む。一方、ステップＳ７７で“ＮＯ”であれば、つまり入力フラグ９２ｈがオフであれば、今回Ｂトリガースイッチ２６ｉがオンされたと判断して、ステップＳ７９で、入力フラグ９２ｈをオンする。
【０１３２】
続いて、ステップＳ８１では、候補オブジェクトが設定されているかどうかを判断する。ステップＳ８１で“ＮＯ”であれば、つまり候補オブジェクトが設定されていなければ、そのままステップＳ８７に進む。一方、ステップＳ８１で“ＹＥＳ”であれば、つまり候補オブジェクトが設定されていれば、ステップＳ８３で、プレイヤオブジェクト１０２と候補オブジェクトとの距離が所定距離以内であるかどうかを判断する。
【０１３３】
ステップＳ８３で“ＮＯ”であれば、つまりプレイヤオブジェクト１０２と候補オブジェクトとの距離が所定距離を越えていれば、そのままステップＳ８７に進む。一方、ステップＳ８３で“ＹＥＳ”であれば、つまりプレイヤオブジェクト１０２と候補オブジェクトとの距離が所定距離以内であれば、ステップＳ８５で、候補オブジェクトの星オブジェクト１０４を対象オブジェクトとして設定（決定）し、ステップＳ８７に進む。たとえば、ステップＳ８５では、候補オブジェクトデータ９２ｅを対象オブジェクトデータ９２ｆとしてコピーした後、当該候補オブジェクトデータ９２ｅを消去する。
【０１３４】
図１８に示すように、ステップＳ８７では、対象オブジェクトが設定されているかどうかを判断する。つまり、対象オブジェクトデータ９２ｆがデータ記憶領域９２に記憶されているかどうかを判断する。ステップＳ８７で“ＮＯ”であれば、つまり対象オブジェクトが設定されていない場合には、そのまま図１３に示したゲーム全体処理にリターンする。一方、ステップＳ８７で“ＹＥＳ”であれば、つまり対象オブジェクトが設定されている場合には、ステップＳ８９で、プレイヤオブジェクト１０２を、ゲーム全体処理のステップＳ１５で算出した前フレームの速度Ｖ´で対象オブジェクトに近づけるように移動させて、ゲーム全体処理にリターンする。つまり、ステップＳ８９では、プレイヤオブジェクト１０２の位置座標が数３に従って更新される。ただし、Ｍ´は更新後のプレイヤオブジェクト１０２の位置座標である。
【０１３５】
[数３]
Ｍ´＝Ｍ＋Ｖ´
この実施例によれば、コントローラを用いて対象オブジェクトを決定し、決定した対象オブジェクトに近づけるようにプレイヤオブジェクトを移動させるので、対象オブジェクトに応じた処理をプレイヤオブジェクトに行わせることができる。したがって、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【０１３６】
なお、この実施例では、Ｂトリガースイッチを押すと、対象オブジェクトが決定され、対象オブジェクトが決定されている状態でＢトリガースイッチを押し続けると、プレイヤオブジェクトが対象オブジェクトに近づくように移動されるようにした。しかし、入力手段は、他のボタンないしスイッチを用いるようにしてもよく、対象オブジェクトを決定する場合と、プレイヤオブジェクトを移動させる場合とで異なるボタンないしスイッチを用いるようにしてもよい。
【０１３７】
また、この実施例では、Ｂトリガースイッチを押し続けている間、プレイヤオブジェクトを対象オブジェクトに近づけるように移動させるようにした。ただし、Ｂトリガースイッチを押し続ける必要はない。たとえば、Ｂトリガースイッチを押すと、プレイヤオブジェクトが移動を開始し、次にＢトリガースイッチを押したときに、プレイヤオブジェクトが移動を停止するようにしてもよい。
【０１３８】
さらに、この実施例では、どの星オブジェクトを対象オブジェクトとして決定した場合であっても、線オブジェクトでプレイヤオブジェクトと連結し、プレイヤオブジェクトを当該対象オブジェクトに近づけるようにしたが、これに限定される必要はない。たとえば、対象オブジェクトとして決定した星オブジェクトに応じて異なる処理を行わせることもできる。たとえば、或る星オブジェクトを対象オブジェクトとして決定した場合には、Ｂトリガースイッチを押し続けることにより、当該対象オブジェクトから遠ざかるように、プレイヤオブジェクトを移動させてもよい。また、他の星オブジェクトを対象オブジェクトとして決定した場合には、Ｂトリガースイッチを押し続けることにより、プレイヤオブジェクトを、当該対象オブジェクトを中心に回転するようにしてもよい。
【０１３９】
さらにまた、他の実施例として、対象オブジェクトを決定することにより、プレイヤオブジェクトの能力（パラメータ）を変化させるようにしてもよい。たとえば、プレイヤオブジェクトの能力（無敵、攻撃力アップ、移動速度上昇）を示す能力オブジェクト（たとえば、アイコン）をゲーム画面に表示しておき、或る能力オブジェクトを対象オブジェクトとして決定した場合に、Ｂトリガースイッチを押し続けることにより、その間、対象オブジェクトが無敵になったり、攻撃力がアップしたり、移動速度が速くなったりするようにしてもよい。
【０１４０】
さらにまた、他の実施例として、対象オブジェクトとして複数の敵オブジェクトをゲーム画面に表示しておき、或る敵オブジェクトを対象オブジェクトとして決定した場合に、Ｂトリガースイッチを押し続けることにより、その間、プレイヤオブジェクトが対象の敵オブジェクトに攻撃を行うようにしてもよい。
【０１４１】
また、この実施例では、候補オブジェクトとして決定された後、その状態を一定時間継続させるようにしたが、これに限定される必要はない。たとえば、コントローラの指示位置が候補オブジェクトの有効範囲座標から外れている時間が一定時間内のときだけ、候補オブジェクトとして決定された状態を継続させるようにしてもよい。また、コントローラの指示位置が候補オブジェクトの中心位置から所定距離内に在るときだけ、候補オブジェクトとして決定された状態を継続させるようにしてもよい。
【０１４２】
さらに、この実施例では、マーカ画像に基づいて、コントローラの指示座標を算出するようにしてあるため、コントローラに加速度センサを設ける必要はない。ただし、コントローラから入力される加速度データの変化に基づいて、コントローラの移動（振り）方向や移動距離を算出して、コントローラの指示座標を算出することもできる。このような加速度による指示画像の算出は、マーカ画像を正しく検出できない場合に、補足的に行ってもよい。
【０１４３】
さらにまた、この実施例では、モニタ３４の周辺にマーカを設け、コントローラにマーカから出力される赤外光を撮像するための撮像装置を設けることによってコントローラの指示位置を検出するようにしたが、これに限られる必要はない。たとえば、コントローラにマーカを設け、モニタ３４の周辺に撮像装置を設けるようにしてもよい。また、撮像装置に代えて受光センサ等を用いてもよい。
【０１４４】
また、この実施例では、ポインティングデバイスとして実施例で示した構成のコントローラを用いるようにしたが、コントローラに変えてコンピュータマウスを用いることもできる。
【図面の簡単な説明】
【０１４５】
【図１】図１はこの発明のゲームシステムの一実施例を示す図解図である。
【図２】図２は図１に示すゲームシステムの電気的な構成を示すブロック図である。
【図３】図３は図１に示すコントローラを上面後方および下面広報から見た斜視図である。
【図４】図４は図１に示すコントローラを正面から見た正面図である。
【図５】図５は図３に示すコントローラの電気的な構成を示すブロック図である。
【図６】図６は図１に示すコントローラを用いてゲームプレイするときの状態を概説するための図解図である。
【図７】図７は図１に示すマーカおよびコントローラの視野角を説明するための図解図である。
【図８】図８は対象画像を含む撮像画像の一例を示す図解図である。
【図９】図９は図１に示すモニタに表示されるゲーム画面の一例を示す図解図である。
【図１０】図１０は図１に示すモニタに表示されるゲーム画面の他の例を示す図解図である。
【図１１】図１１は図１に示すモニタに表示されるゲーム画面のその他の例を示す図解図である。
【図１２】図１２は図２に示すメインメモリのメモリマップの一例を示す図解図である。
【図１３】図１３は図２に示すＣＰＵのゲーム全体処理を示すフロー図である。
【図１４】図１４は図２に示すＣＰＵの星オブジェクトの設定処理を示すフロー図である。
【図１５】図１５は図２に示すＣＰＵのゲーム操作処理の一部を示すフロー図である。
【図１６】図１６は図２に示すＣＰＵのゲーム操作処理の他の一部であって、図１５に後続するフロー図である。
【図１７】図１７は図２に示すＣＰＵのゲーム操作処理のその他の一部であって、図１５および図１６に後続するフロー図である。
【図１８】図１８は図２に示すＣＰＵのゲーム操作処理のさらに他の一部であって、図１７に後続するフロー図である。
【符号の説明】
【０１４６】
１０  …ゲームシステム
１２  …ビデオゲーム装置
１８  …光ディスク
２２  …コントローラ
２４  …受信ユニット
３０  …メモリカード
３４  …モニタ
３４ａ  …スピーカ
３６  …ＣＰＵ
３８  …メモリコントローラ
４０  …メインメモリ
４２  …ＧＰＵ
５２  …ＤＳＰ
５４  …ＡＲＡＭ
６２  …オーディオＩ／Ｆ
７０  …マイコン
７４  …加速度センサ
８０  …撮像情報演算部
８６  …撮像素子
８８  …画像処理回路
【図１】
2007300985.tif 000003
【図２】
2007300985.tif 000004
【図３】
2007300985.tif 000005
【図４】
2007300985.tif 000006
【図５】
2007300985.tif 000007
【図６】
2007300985.tif 000008
【図７】
2007300985.tif 000009
【図８】
2007300985.tif 000010
【図９】
2007300985.tif 000011
【図１０】
2007300985.tif 000012
【図１１】
2007300985.tif 000013
【図１２】
2007300985.tif 000014
【図１３】
2007300985.tif 000015
【図１４】
2007300985.tif 000016
【図１５】
2007300985.tif 000017
【図１６】
2007300985.tif 000018
【図１７】
2007300985.tif 000019
【図１８】
2007300985.tif 000020