ゲームプログラムおよびゲーム装置
【構成】 ビデオゲーム装置12はCPU36を含み、CPU36はコントローラ22から送信される入力データに含まれるマーカ座標データを検出し、コントローラ22の指示座標を計算する。コントローラ22で指示された星オブジェクトは、プレイヤがBトリガースイッチを押すことにより、対象オブジェクトとして設定される。すると、プレイヤオブジェクトは、当該対象オブジェクトに従った処理を実行する。たとえば、プレイヤがBトリガースイッチを押し続けると、プレイヤオブジェクトは対象オブジェクトに近づくように移動する。
【効果】 ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【効果】 ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、入力装置からの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するための、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来、光学式のポインティングデバイスを用いたゲームシステムが提案されている。たとえば、特許文献1には、ガン型のコントローラを用いた射撃ゲーム装置が開示されている。このガン型のコントローラはCCDカメラを備え、ビデオ画面の周囲に撮像対象として配設された発光体をCCDカメラによって撮影する。これによって、ゲーム装置は、画面とガン型のコントローラとの距離、ガン型のコントローラの回転、および画面とガン型のコントローラとの相対位置を検出することができる。また、ガン型のコントローラが指示している画面上の座標(着弾点)も算出される。
【特許文献1】特開平8−71252
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、特許文献1に記載のガン型のコントローラは、表示画面上の位置を指定するために用いられるだけである。つまり、ガン型のコントローラでは、表示画面上の位置を指定するという単一の操作のみが可能であり、他の操作を行うことができなかった。したがって、ガン型のコントローラでは、表示画面上の標的への当たり外れを判定するような単純なゲーム操作しか行うことができない。このため、ゲーム操作のみならず、ゲーム自体も単純な内容となってしまい、面白味に欠けてしまう。
【0004】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【0005】
また、この発明の他の目的は、ポインティングデバイスを用いたゲームの面白味を増大させることができる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0007】
請求項1の発明は、少なくとも1つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置で実行されるゲームプログラムであって、ゲーム装置のプロセサを、オブジェクト配置手段、指示位置検出手段、第1オブジェクトの指示判別手段、操作状態判別手段および第2オブジェクトの制御手段として機能させる。オブジェクト配置手段は、仮想ゲーム空間内に第1オブジェクトと第2オブジェクトとを配置する。指示位置検出手段は、ポインティングデバイスによって指示される画面上の位置を検出する。第1オブジェクトの指示判別手段は、指示位置検出手段によって検出された指示位置に基づいて、第1オブジェクトを指示しているか否かを判別する。操作状態判別手段は、第1オブジェクトの指示判別手段によって第1オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する。第2オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が押されたことが判別されたとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0008】
請求項1の発明では、ゲーム装置(12)は、少なくとも1つの入力手段(26)を含むポインティングデバイス(22)からの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を表示装置(34)の画面上に表示する。ゲームプログラムは、このゲーム装置のプロセサ(36)を、オブジェクト配置手段(36,S3)、指示位置検出手段(36,S9,S51)、第1オブジェクトの指示判別手段(36,S55)、操作状態判別手段(36,S9,S71)および第2オブジェクトの制御手段(36,S89)として機能させる。オブジェクト配置手段は、仮想ゲーム空間内に第1オブジェクト(104)と第2オブジェクト(102)とを配置する。たとえば、各オブジェクトが生成され、3次元の仮想ゲーム空間に配置される。指示位置検出手段は、ポインティングデバイスによって指示される画面(100)上の位置を検出する。つまり、ポインティングデバイスの指示座標が検出される。第1オブジェクトの指示判別手段は、指示位置検出手段によって検出された指示位置(指示座標)に基づいて、第1オブジェクトを指示しているか否かを判別する。たとえば、指示座標が第1オブジェクトの表示領域に接触するかどうか、または含まれるかどうかを判断する。操作状態判別手段は、第1オブジェクトの指示判別手段によって第1オブジェクトを指示していることが判別されている状態で所定の入力手段(26i)が押されたか否かを判別する。第2オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が押されたことが判別されたとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。つまり、第1オブジェクトに応じた処理が第2オブジェクトによって実行される。
【0009】
請求項1の発明によれば、指示された第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせるので、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【0010】
請求項2の発明は請求項1に従属し、ポインティングデバイスは表示装置の周辺に設置される撮影対象を撮影するための撮像手段を含み、指示位置検出手段は、撮像手段の撮影結果に基づいてポインティングデバイスによって指示される画面上の位置を検出する。
【0011】
請求項2の発明では、ポインティングデバイスは表示装置の周辺に設置される撮影対象(32m,32n)を撮影するための撮像手段(80)を含む。指示位置検出手段は、撮像手段の撮影結果に基づいてポインティングデバイスによって指示される画面の位置を検出する。たとえば、2つの撮影対象の中間の位置が、ポインティングデバイスの向いている位置すなわち指示位置として検出される。
【0012】
請求項2の発明によれば、撮影結果からポインティングデバイスによって指示される画面の位置を検出するので、簡単に位置を検出することができる。
【0013】
請求項3の発明は請求項1に従属し、操作状態判別手段は、所定の入力手段が継続して押されている状態であるか否かを判別し、第2オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が継続して押されている状態が判別されている間、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0014】
請求項3の発明では、操作状態判別手段は、所定の入力手段が継続して押されている状態であるか否か、すなわち押し続けられているかどうかを判別する。第2オブジェクトの制御手段は、所定の入力手段が継続して押されている状態が判別されている間、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0015】
請求項3の発明によれば、所定の入力手段が継続して押されている間だけ、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせることができる。つまり、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる時間をプレイヤに選択させることができる。
【0016】
請求項4の発明は請求項1に従属し、ゲームプログラムは、プロセサを、第1オブジェクトの指示判別手段によって第1オブジェクトを指示していることが判別されたとき、当該第1オブジェクトと第2オブジェクトとの仮想空間内における距離を判別する距離判別手段としてさらに機能させ、第2オブジェクトの制御手段は、距離が所定範囲内であるとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0017】
請求項4の発明では、距離判別手段(36,S83)は、第1オブジェクトを指示していることが判別されたとき(S55で“YES”)、第1オブジェクトと第2オブジェクトとの仮想空間内における距離を判別する。第2オブジェクトの制御手段は、距離が所定範囲内であるとき、第1オブジェクトに関連付けられた処理を第2オブジェクとに行わせる。したがって、第2オブジェクトの制御手段は、距離が所定範囲を超えている場合には、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせない。
【0018】
請求項4の発明によれば、第1オブジェクトと第2オブジェクトとの距離が所定距離以内である場合に限り、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせることができる。
【0019】
請求項5の発明は請求項1従属し、ゲームプログラムは、プロセサを、第1オブジェクトの指示判別手段によって第1オブジェクトを指示していることが判別されたとき、当該第1オブジェクトと第2オブジェクトとの間に他のオブジェクトが存在するか否かを判別する存在判別手段として機能させ、第2オブジェクトの制御手段は、存在判別手段によって他のオブジェクトが存在しないことが判別されたとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0020】
請求項5の発明では、存在判別手段(36,S57)は、第1オブジェクトを指示していることが判別されたとき(S55で“YES”)、当該第1オブジェクトと第2オブジェクトとの間に他のオブジェクトが存在するか否かを判別する。つまり、プレイヤが当該第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせることができるか否かを判断する。第2オブジェクトの制御手段は、他のオブジェクトが存在しないとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0021】
請求項5の発明によれば、第1オブジェクトと第2オブジェクトとの間に他のオブジェクトが存在しない場合に限り、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせることができる。
【0022】
請求項6の発明は請求項1ないし5のいずれかに従属し、第2オブジェクトの制御手段は、第2オブジェクトを第1オブジェクトに近づけるように当該第2オブジェクトの移動を制御する。
【0023】
請求項6の発明によれば、第2オブジェクトの制御手段は、第2オブジェクトを第1オブジェクトに近づけるように第2オブジェクトの移動を制御する。
【0024】
請求項6の発明によれば、第1オブジェクトに近づけるように第2オブジェクトを移動させるので、第2オブジェクトを第1オブジェクトに近づけたり、指示する第1オブジェクトを変化させたりすることにより、プレイヤオブジェクトを仮想ゲーム空間内で移動させることができる。
【0025】
請求項7の発明は請求項6に従属し、ゲームプログラムは、プロセサを、距離に基づいて第2オブジェクトの移動速度を算出する速度算出手段としてさらに機能させ、第2オブジェクトの制御手段は、速度算出手段によって算出された速度に基づいて第2オブジェクトの移動を制御する。
【0026】
請求項7の発明では、速度算出手段(36,S15)は、第1オブジェクトと第2オブジェクトとの距離に基づいて第2オブジェクトの移動速度を算出する。第2オブジェクトの制御手段は、速度算出手段によって算出された速度に基づいて第2オブジェクトの移動を制御する。
【0027】
請求項7の発明によれば、第1オブジェクトと第2オブジェクトとの距離に応じて第1オブジェクトの移動速度を変化させることができる。
【0028】
請求項8の発明は請求項1に従属し、オブジェクト配置手段は、複数の第1オブジェクトを配置し、第1オブジェクトの指示判別手段は、複数の第1オブジェクトのいずれが指示されているか否かをさらに判別し、第2オブジェクトの制御手段は、指示されていることが判別された第1オブジェクト毎に、それぞれ異なる処理を第2オブジェクトに行わせる。
【0029】
請求項8の発明では、オブジェクト配置手段は、複数の第1オブジェクトを配置する。第1オブジェクトの指示判別手段は、第1オブジェクトが指示されているか否かを判別するのみならず、複数の第1オブジェクトのうちのいずれが指示されているかを判別する。第1オブジェクトの制御手段は、指示されていることが判別された第1オブジェクト毎に、それぞれ異なる処理を第2オブジェクトに行わせる。
【0030】
請求項8の発明によれば、第1オブジェクトに応じた処理を第2オブジェクトに行わせることができるので、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【0031】
請求項9の発明は、少なくとも1つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置である。このゲーム装置は、オブジェクト配置手段、指示位置検出手段、第1オブジェクトの指示判別手段、操作状態判別手段および第2オブジェクトの制御手段を備える。オブジェクト配置手段は、仮想ゲーム空間内に第1オブジェクトと第2オブジェクトとを配置する。指示位置検出手段は、ポインティングデバイスによって指示される画面上の位置を検出する。第1オブジェクトの指示判別手段は、指示位置検出手段によって検出された指示位置に基づいて、第1オブジェクトを指示しているか否かを判別する。操作状態判別手段は、第1オブジェクトの指示判別手段によって第1オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する。第2オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が押されたことが判別されたとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0032】
請求項9の発明においても、請求項1の発明と同様に、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【発明の効果】
【0033】
この発明によれば、指示された第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせるので、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【0034】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0035】
図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置12を含む。ビデオゲーム装置12は、音楽演奏プログラム(ゲームプログラム)が組み込まれることにより、音楽演奏装置(音出力装置)として機能する。このビデオゲーム装置12は、略立方体のハウジング14を含み、ハウジング14の上端には光ディスクドライブ16が設けられる。光ディスクドライブ16には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が装着される。ハウジング14の前面には複数の(実施例では4つの)コネクタ20が設けられる。これらコネクタ20は、ケーブル(図示せず)または受信ユニット24を介して、有線または無線によって、ポインティングデバイスとしてのコントローラ22をビデオゲーム装置12に接続するためのものである。図1に示すように、この実施例では、コネクタ20に受信ユニット24が接続され、受信ユニット24を介して、無線でコントローラ22がビデオゲーム装置12に接続される。コントローラ22の詳細については後述する。
【0036】
なお、この実施例では、ビデオゲーム装置12とコントローラ22との間では無線通信を実行するため、本来的には「接続」の用語を用いるべきではない。しかしながら、ビデオゲーム装置12とコントローラ22との間での通信可能な連係状態を表す用語として、有線通信の場合の用語を借りて、便宜上「接続」と表現することとする。
【0037】
また、ビデオゲーム装置12のハウジング14の前面であり、コネクタ20の下方には、1つまたは複数の(この実施例では2つの)メモリスロット28が設けられる。このメモリスロット28にはメモリカード30が挿入される。メモリカード30は、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。
【0038】
さらに、ビデオゲーム装置12のハウジング14の後面には、AVケーブルコネクタ(図示せず)が設けられ、そのコネクタを用いて、AVケーブル32を通してビデオゲーム装置12にモニタ34を接続する。このモニタ34は典型的にはカラーテレビジョン受像機であり、AVケーブル32は、ビデオゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ34の周辺(この実施例では、上側)には、2つのマーカ34m,34nが設けられる。マーカ34m,34nは、赤外LEDであり、それぞれモニタ34の前方に向けて赤外光を出力する。
【0039】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(または他のアプリケーション)をプレイするために、ユーザはまずビデオゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)をストアしている適宜の光ディスク18を選択し、その光ディスク18をビデオゲーム装置12のディスクドライブ16にローディングする。応じて、ビデオゲーム装置12がその光ディスク18にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはビデオゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。入力手段26の他のものを動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0040】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。ビデオゲーム装置12には、CPU36が設けられる。このCPU36は、ビデオゲーム装置12の全体的な制御を担当する。CPU36は、ゲームプロセサとして機能し、このCPU36には、バスを介して、メモリコントローラ38が接続される。メモリコントローラ38は主として、CPU36の制御の下で、バスを介して接続されるメインメモリ40の書込みや読出しを制御する。このメモリコントローラ38にはGPU(Graphics Processing Unit) 42が接続される。
【0041】
GPU42は、描画手段の一部を形成し、たとえばシングルチップASICで構成され、メモリコントローラ38を介してCPU36からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従って、ジオメトリユニット44およびレンダリングユニット46によって3Dのゲーム画像を生成する。つまり、ジオメトリユニット44は、3次元座標系の各種オブジェクト(複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも3つの頂点座標によって定義される多角形平面をいう。)の回転,移動,変形等の座標演算処理を行う。レンダリングユニット46は、各種オブジェクトの各ポリゴンにテクスチャ(模様画像)を貼り付けるなどの画像生成処理を施す。したがって、GPU42によって、ゲーム画面上に表示すべき3Dの画像データが作成され、その画像データがフレームバッファ48内に記憶される。
【0042】
なお、GPU42が作画コマンドを実行するにあたって必要なデータ(プリミティブまたはポリゴンやテクスチャ等)は、GPU42がメモリコントローラ38を介して、メインメモリ40から入手する。
【0043】
フレームバッファ48は、たとえばラスタスキャンモニタ34の1フレーム分の画像データを描画(蓄積)しておくためのメモリであり、GPU42によって1フレーム毎に書き換えられる。具体的には、フレームバッファ48は、1画素(ピクセル)毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、R,G,B,Aについてのデータであり、たとえば、8ビットのR(赤)データ、8ビットのG(緑)データ、8ビットのB(青)データおよび8ビットのA(アルファ)データである。なお、Aデータは、マスク(マット画像)についてのデータである。後述のビデオI/F58がメモリコントローラ38を介してフレームバッファ48のデータを読み出すことによって、モニタ34の画面上に3Dのゲーム画像が表示される。
【0044】
また、Zバッファ50は、フレームバッファ48に対応する画素数×1画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ48の各記憶位置に対応するドットの奥行き情報または奥行きデータ(Z値)を記憶するものである。
【0045】
なお、フレームバッファ48およびZバッファ50は、ともにメインメモリ40の一部を用いて構成されてもよく、また、これらはGPU42の内部に設けられてもよい。
【0046】
メモリコントローラ38はまた、DSP(Digital Signal Processor)52を介して、オーディオ用のRAM(以下、「ARAM」という。)54に接続される。したがって、メモリコントローラ38は、メインメモリ40だけでなく、サブメモリとしてのARAM54の書込みおよび/または読出しを制御する。
【0047】
DSP52は、サウンドプロセサとして働き、メインメモリ40に記憶されたサウンドデータ(図示せず)を用いたり、ARAM54に書き込まれている音波形(音色)データ(図示せず)を用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【0048】
メモリコントローラ38は、さらに、バスによって、各インタフェース(I/F)56,58,60,62および64に接続される。コントローラI/F56は、ビデオゲーム装置12に受信ユニット24を介して接続されるコントローラ22のためのインタフェースである。具体的に言うと、受信ユニット24は、コントローラ22から送信される入力データを受信し、コントローラI/F56は、受信ユニット24によって受信された入力データを、メモリコントローラ38を通してCPU36に与える。ただし、この実施例では、入力データは、後述する、操作データ、加速度データおよびマーカ座標データの少なくとも一方を含むデータを意味する。ビデオI/F58は、フレームバッファ48にアクセスし、GPU42で作成した画像データを読み出して、画像信号または画像データ(ディジタルRGBAピクセル値)をAVケーブル32(図1)を介してモニタ34に与える。
【0049】
外部メモリI/F60は、ビデオゲーム装置12の前面に挿入されるメモリカード30(図1)をメモリコントローラ38に連係させる。それによって、メモリコントローラ38を介して、CPU36がこのメモリカード30にデータを書込み、またはメモリカード30からデータを読み出すことができる。オーディオI/F62は、メモリコントローラ38を通してDSP52から与えられるオーディオデータまたは光ディスク18から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号(音声信号)をモニタ34のスピーカ34aに与える。
【0050】
そして、ディスクI/F64は、ディスクドライブ16をメモリコントローラ38に接続し、したがって、CPU36がディスクドライブ16を制御する。このディスクドライブ16によって光ディスク18から読み出されたプログラムデータやテクスチャデータ等が、CPU36の制御の下で、メインメモリ40に書き込まれる。
【0051】
図3および図4にはコントローラ22の外観の一例が示される。図3(A)は、コントローラ22の上面後方から見た斜視図であり、図3(B)は、コントローラ22を下面後方から見た斜視図である。図4は、コントローラ22を前方から見た正面図である。
【0052】
図3および図4を参照して、コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。上述したように、ハウジング22a(コントローラ22)には、入力手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(A)に示すように、ハウジング22a(コントローラ22)の上面には、十字キー26a,Xボタン26b,Yボタン26c,Aボタン26d,セレクトスイッチ26e,メニュー(ホーム)スイッチ26f,スタートスイッチ26gおよび電源スイッチ26hが設けられる。また、図3(B)に示すように、ハウジング22aの下面に凹部が形成されており、この凹部の後方傾斜面に、Bトリガースイッチ26iが設けられる。
【0053】
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0054】
Xボタン26bおよびYボタン26cは、それぞれ、押しボタンスイッチであり、3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整するために使用される。または、Xボタン26bおよびYボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いることもあり得る。
【0055】
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
【0056】
セレクトスイッチ26e、メニュースイッチ26f、スタートスイッチ26gおよび電源スイッチ26hもまた、押しボタンスイッチである。セレクトスイッチ26eは、ゲームモードを選択するために使用される。メニュースイッチ26fは、ゲームメニュー(メニュー画面)を表示するために使用される。スタートスイッチ26gは、開始(再開)したり、一時提示したりするなどのために使用される。電源スイッチ26hは、ビデオゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0057】
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0058】
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガーを入力したり、コントローラ22で選択した位置を指定したりするために使用される。ただし、Bトリガースイッチ26iを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションを取り消すなどのために使用される。
【0059】
また、コントローラ22には、ハウジング22aの後面に外部拡張コネクタ22bが設けられ、また、ハウジング22aの上面であり、後面側にはインジケータ22cが設けられる。外部拡張コネクタ22bは、図示しない別のコントローラを接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成され、4つのうちのいずれか1つを点灯することにより、コントローラ22の識別情報(コントローラ番号)を示す。
【0060】
さらに、コントローラ22は、撮像情報演算部80(図5参照)を有しており、図4に示すように、ハウジング22aの前面には撮像情報演算部80の光入射口22dが設けられる。
【0061】
なお、図3に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【0062】
図5はコントローラ22の電気的な構成を示すブロック図である。この図5を参照して、コントローラ22はマイコン70を含み、このマイコン70には、内部バス(図示せず)によって、入力手段26、メモリ72、加速度センサ74および無線モジュール76が接続される。また、無線モジュール76には、アンテナ78が接続される。
【0063】
なお、図示は省略するが、上述した拡張コネクタ22bおよびインジケータ22c(LED)もインタフェースまたはドライバを介してマイコン70に接続される。
【0064】
マイコン70は、コントローラ22の全体制御を司り、入力手段26および加速度センサ74のような入力手段によって入力された情報(入力情報)を、入力データとして無線モジュール76およびアンテナ78を介してビデオゲーム装置12に送信(入力)する。このとき、マイコン70は、メモリ72を作業領域ないしバッファ領域として用いる。
【0065】
上述した入力手段26(26a−26i)からの操作信号(操作データ)は、マイコン70に入力され、マイコン70は操作データを一旦メモリ72に記憶する。
【0066】
また、加速度センサ74は、コントローラ22の縦方向(図3に示すy軸方向)、横方向(図3に示すx軸方向)および前後方向(図3に示すz軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。図3(A)および図3(B)からも分かるように、この実施例では、コントローラ22の上面の垂直上方を、y軸の正の方向とし、y軸に垂直であり、コントローラ22の右方向をx軸の正の方向とし、x軸とy軸とに垂直であり、コントローラ22の長手方向であり、Xボタン26bから十字スイッチ26aに向かう方向をz軸の正の方向としてある。
【0067】
たとえば、加速度センサ74は、第1所定時間(たとえば、200msec)毎に、x軸,y軸,z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をマイコン70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。マイコン70は、加速度センサ74から与えられる加速度データを、第2所定時間(たとえば、1フレーム:画面更新単位時間(1/60sec))毎に検出し、一旦メモリ72に記憶する。マイコン70は、操作データ、加速度データおよびマーカ座標データの少なくとも1つを含む入力データを作成し、作成した入力データを、第3所定時間(たとえば、1フレーム)毎にビデオゲーム装置12に送信する。
【0068】
なお、図3では省略したが、この実施例では、加速度センサ74は、ハウジング22aの内部であり、十字キー26aが配置される付近に設けられる。
【0069】
無線モジュール76は、たとえばBluetooth(登録商標)の技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ78から放射する。つまり、入力データは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したビデオゲーム装置12に装着された受信ユニット24によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ビデオゲーム装置12(CPU36)は、コントローラ22からの入力データを取得することができる。そして、CPU36は、取得した入力データとプログラム(ゲームプログラム)とに従ってゲーム処理を行う。
【0070】
さらに、上述したように、コントローラ22には、撮像情報演算部80が設けられる。この撮像情報演算部80は、赤外線フィルタ82、レンズ84、撮像素子86および画像処理回路88によって構成される。赤外線フィルタ82は、コントローラ22の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ34の表示画面近傍(周辺)に配置されるマーカ34mおよび34nは、モニタ34の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ82を設けることによってマーカ34mおよび34nの画像をより正確に撮像することができる。レンズ84は、赤外線フィル82を透過した赤外線を集光して撮像素子86へ出射する。撮像素子86は、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ84によって集光された赤外線を撮像する。したがって、撮像素子86は、赤外線フィルタ82を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子86によって撮像された画像を撮像画像と呼ぶ。撮像素子86によって生成された画像データは、画像処理回路88で処理される。画像処理回路88は、撮像画像内における撮像対象(マーカ34mおよび34n)の位置を算出し、第4所定時間(たとえば、1フレーム)毎に、当該位置を示す各座標値を撮像データとしてマイコン70に出力する。なお、画像処理回路88における処理については後述する。
【0071】
図6は、コントローラ22を用いてゲームプレイするときの状態を概説する図解図である。図6に示すように、ビデオゲームシステム10でコントローラ22を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ22を把持する。厳密に言うと、プレイヤは、コントローラ22の前面(撮像情報演算部80が撮像する光の入射口22d側)がマーカ34mおよび34nの方を向く状態でコントローラ22を把持する。ただし、図1からも分かるように、マーカ34mおよび34nは、モニタ34の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ22が指示する画面上の位置を変更したり、コントローラ22と各マーカ34mおよび34nとの距離を変更したりすることによってゲーム操作を行う。
【0072】
図7は、マーカ34mおよび34nと、コントローラ22との視野角を説明するための図である。図7に示すように、マーカ34mおよび34nは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部80の撮像素子86は、コントローラ22の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ34mおよび34nの視野角θ1は、共に34°(半値角)であり、一方、撮像素子86の視野角θ2は41°である。プレイヤは、撮像素子86が2つのマーカ34mおよび34nからの赤外光を受光することが可能な位置および向きとなるように、コントローラ22を把持する。具体的には、撮像素子86の視野角θ2の中に少なくとも一方のマーカ34mおよび34nが存在し、かつ、マーカ34mまたは34nの少なくとも一方の視野角θ1の中にコントローラ22が存在する状態となるように、プレイヤはコントローラ22を把持する。この状態にあるとき、コントローラ22は、マーカ34mおよび34nの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ22の位置および向きを変化させることによってゲーム操作を行うことができる。
【0073】
なお、コントローラ22の位置および向きがこの範囲外となった場合、コントローラ22の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
【0074】
操作可能範囲内でコントローラ22が把持される場合、撮像情報演算部35によって各マーカ34mおよび34nの画像が撮像される。すなわち、撮像素子86によって得られる撮像画像には、撮像対象である各マーカ34mおよび34nの画像(対象画像)が含まれる。図8は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路88は、各マーカ34mおよび34nの撮像画像における位置を表す座標(マーカ座標)を算出する。
【0075】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路88は、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路88は、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ34mおよび34nの画像34m’および34n’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像であるマーカ34mおよび34nの画像34m’および34n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【0076】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路88は当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子86の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子86によって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
【0077】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
【0078】
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路88は、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、マイコン70によって入力データに含まれ、ビデオゲーム装置12に送信される。
【0079】
ビデオゲーム装置12(CPU36)は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上におけるコントローラ22の指示位置(指示座標)と、コントローラ22からマーカ34mおよび34nまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置が、コントローラ22の向いている位置すなわち指示位置として採用(算出)される。また、撮像画像における対象画像間の距離が、コントローラ22と、マーカ34mおよび34nとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ビデオゲーム装置12はコントローラ22とマーカ34mおよび34nとの間の距離を把握できる。
【0080】
次に、以上のような構成のゲームシステム10を用いてプレイされる仮想ゲームのゲーム画面および仮想ゲームにおけるプレイヤのゲーム操作について説明する。図9−図11には、モニタ34に表示されるゲーム画面100の例が示される。
【0081】
図9(A)および図9(B)に示すように、ゲーム画面100には、プレイヤオブジェクト102、星オブジェクト104(104a,104b,104c,104d)および惑星オブジェクト106(106a,106b,106c)が表示されるとともに、コントローラ22の指示座標にカーソル画像110が表示される。
【0082】
以下、この明細書においては、星オブジェクト104a−104dをまとめて星オブジェクト104と言うことがあり、また、惑星オブジェクト106a−106cをまとめて惑星オブジェクト106と言うことがある。
【0083】
プレイヤは、プレイヤオブジェクト102と星オブジェクト104とを連結させて、プレイヤオブジェクト102を当該星オブジェクト104に近づけたり(引き寄せたり)、連結させる星オブジェクト104を変えたりして、プレイヤオブジェクト102を移動させる。図9(A)では、プレイヤオブジェクト102は、惑星106aに存在する。ここで、プレイヤがコントローラ22を動かす(振る)ことにより、カーソル画像110を移動させて、カーソル画像110を所望の星オブジェクト104aに接触させたり、重ねたりすることにより、当該星オブジェクト104aを選択する。このとき、プレイヤは、ゲーム画面100における所望の星オブジェクト104aの表示位置をコントローラ22で指示するだけであり、コントローラ22の入力手段26は何ら操作されない。すると、選択(指示)された星オブジェクト104aは、プレイヤオブジェクト102と連結可能な候補オブジェクトとして決定される。そして、図9(B)に示すように、候補オブジェクトとしての星オブジェクト104aは、プレイヤが識別(視認)可能に、その表示を変化される。図9(B)からも分かるように、候補オブジェクトは、黒色で塗り潰すことにより示されるが、実際には、色反転させたり、色強調させたり、画像を変化させたりして示される。以下、同じ。
【0084】
図示は省略するが、プレイヤオブジェクト102と、プレイヤが指示した星オブジェクト104との間に他のオブジェクトが存在する場合には、当該星オブジェクト104は候補オブジェクトとして決定されない。
【0085】
この実施例では、候補オブジェクトが決定されると、この候補オブジェクトがプレイヤオブジェクト102と連結される対象のオブジェクト(対象オブジェクト)として決定されない限り、その状態は一定時間(たとえば、300フレーム)継続される。一定時間が経過すると、候補オブジェクトとしての状態(設定)が解除される。このように、候補オブジェクトとして決定された状態を一定時間継続させることにより、対象のオブジェクトとして決定する操作を行うまでの時間的余裕をプレイヤに与えることができる。また、一定時間に限り候補オブジェクトとして決定するのは、所望でない星オブジェクト104を候補オブジェクトとして選択した場合などに、選択を解除したり、他の星オブジェクト104を候補オブジェクトとして選択し直したりすることができるようにするためである。
【0086】
図9(B)に示すように、候補オブジェクトが決定されている場合に、プレイヤが所定のボタン(この実施例では、Bトリガースイッチ26i)を操作すると、当該候補オブジェクトがプレイヤオブジェクト102と連結されるべき対象の星オブジェクト104(以下、「対象オブジェクト」という。)として決定(確定)される。つまり、候補オブジェクトが選択されている状態では、コントローラ22の指示位置に関係なく、候補オブジェクトを対象オブジェクトとして確定することができる。したがって、たとえば、コントローラ22のBトリガースイッチ26iをオンするときに、手ぶれ等が発生してコントローラ22の指示位置が候補オブジェクトの表示位置(有効範囲座標)から外れてしまっても、入力データをビデオゲーム装置12に送信することができれば、対象オブジェクトを確定することができるのである。これによって、候補オブジェクトを対象オブジェクトとして確定するための所定のボタンの操作を確実に行うことができ、操作性を向上することができる。
【0087】
すると、図10(A)に示すように、プレイヤオブジェクト102と対象オブジェクト(ここでは、星オブジェクト104a)とが線オブジェクト108によって連結される。この状態で、プレイヤが所定のボタン(この実施例では、Bトリガースイッチ26i)を押し続けると、対象オブジェクトの引力が働き、プレイヤオブジェクト102は当該対象オブジェクトに向けて移動される。このとき、線オブジェクト108は、プレイヤオブジェクト102の移動に従って短縮される。したがって、図10(B)に示すように、プレイヤオブジェクト102は、対象オブジェクトに近づく。
【0088】
なお、図面では、分かり難いが、Bトリガースイッチ26iを離すと、対象オブジェクト104の引力が働かなくなり、したがって、プレイヤオブジェクト102は停止される。
【0089】
また、詳細な説明は省略するが、この実施例では、プレイヤオブジェクト102と選択した候補オブジェクトとの3次元のゲーム空間における距離が所定距離を超えて離れている場合には、Bトリガースイッチ26iが押された場合であっても、当該候補オブジェクトを対象オブジェクトとして決定しないようにしてある。これは、プレイヤオブジェクト102が所定距離を越えるような遠距離を一度に移動してしまうと、ゲームの面白味に欠けてしまうからである。
【0090】
ここで、プレイヤオブジェクト102が移動する速度(移動速度)は、毎フレーム計算される。具体的には、数1に従って移動速度が算出される。ただし、V´は次フレームの移動速度であり、Sは対象オブジェクトの中心座標(2次元座標)であり、Mはプレイヤオブジェクト102の現在(現フレーム)の位置座標(2次元座標)であり、Vはプレイヤオブジェクト102の現フレームの移動速度であり、aは対象オブジェクトの引力であり、r(0≦r≦1)は現フレームの移動速度V´の減衰率である。
【0091】
[数1]
V´=[V+{(S−M)/|S−M|}×a]×r
なお、{}内は、ベクトルの正規化を意味する。
【0092】
また、プレイヤオブジェクト102が対象オブジェクトに近づく程、プレイヤオブジェクト102を減速し易くするため、引力aおよび減衰率rは数2に従って毎フレーム算出(更新)される。ただし、dはプレイヤオブジェクト102と対象オブジェクトとの距離(2次元の距離)であり、kは引力aおよび減速率rを更新(計算)するか否かを決定する閾値であり、bは基本の引力、c(c>b)は距離d=0のときの引力であり、g(0≦g≦1)は基本の減衰率であり、h(0≦h≦1、g<h)は距離d=0のときの減衰率である。また、k、b、c、g、hは定数である。
【0093】
[数2]
d<kのとき
a=b×t+c×(1−t)
f=g×t+h×(1−t)
t=d/k
d≧kのとき
a=b
f=g
また、図11(A)に示すように、プレイヤオブジェクト102と対象オブジェクトとが線オブジェクト108で連結されている場合にも、プレイヤはコントローラ22を動かすことにより、カーソル画像110を移動させて、他の星オブジェクト104(ここでは、104b,104c,104d)を候補オブジェクトとして選択することができる。
【0094】
図面では表現することができないが、プレイヤオブジェクト102と対象オブジェクトとが線オブジェクト108によって連結されている場合には、プレイヤオブジェクト102が移動しているか否かに拘わらず、プレイヤは、コントローラ22によってカーソル画像110を移動させて、候補オブジェクトを選択することができる。
【0095】
図11(A)に示すように、星オブジェクト104bが候補オブジェクトとして選択された状態で、プレイヤが所定の操作を実行すると、星オブジェクト104bが対象オブジェクトとして決定(確定)される。つまり、対象オブジェクトが、星オブジェクト104aから星オブジェクト104bに変更される。したがって、プレイヤオブジェクト102と星オブジェクト104bとが線オブジェクト108によって連結される。
【0096】
ここで、上述した所定の操作について説明する。図10(A)に示すゲーム画面100において、Bトリガースイッチ26iを押し続けて、プレイヤオブジェクト102を星オブジェクト104aに近づけている場合には、所定の操作は、Bトリガースイッチ26iを一旦離して、再度、押すことを意味する。つまり、かかる場合には、プレイヤは、Bトリガースイッチ26iをオフした後にオンする。ただし、図10(A)に示すゲーム画面100において、Bトリガースイッチ26iを離して、プレイヤオブジェクト102を停止させている場合には、所定の操作は、Bトリガースイッチ26iを押すことを意味する。つまり、かかる場合には、プレイヤは、Bトリガースイッチ26iをオンするだけである。
【0097】
なお、上述したように、候補オブジェクトが選択されている状態では、コントローラ22の指示位置に関係なく、対象オブジェクトを確定することができる。
【0098】
このようにして、プレイヤは、候補オブジェクトや対象オブジェクトを変化させたり、プレイヤオブジェクト102を対象オブジェクトに近づけたりすることにより、プレイヤオブジェクト102をゲーム空間内で移動させる。たとえば、プレイヤオブジェクト102が惑星106aから惑星106bまたは惑星106cに移動される。
【0099】
図12は図2に示したメインメモリ40のメモリマップである。図12に示すように、メインメモリ40は、プログラム記憶領域90およびデータ記憶領域92を含む。プログラム記憶領域90は、ゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム90a、ゲーム画像生成プログラム90b、ゲーム画像表示プログラム90c、星オブジェクト設定プログラム90d、入力データ検出プログラム90e、ゲーム操作プログラム90fおよび視点位置制御プログラム90gなどによって構成される。
【0100】
ゲームメイン処理プログラム90aは、仮想ゲームのメインルーチンを処理するためのプログラムである。ゲーム画像生成プログラム90bは、仮想ゲームのゲーム空間に、プレイヤオブジェクト102や敵オブジェクト(図示せず)の動画オブジェクト、または、星オブジェクト104、惑星オブジェクト106、線オブジェクト108のような背景オブジェクトまたはカーソル画像110を含むゲーム画像を生成するためのプログラムである。ゲーム画像表示プログラム90cは、ゲーム画像生成プログラム90bによって生成されたゲーム画像を出力し、モニタ34にゲーム画面を表示するためのプログラムである。
【0101】
星オブジェクト設定プログラム90dは、3次元のゲーム空間に配置される星オブジェクト104を、ゲーム画面に表示するために、2次元の仮想スクリーンに透視投影し、透視投影することにより2次元座標に変換された星オブジェクト104の中心座標についての中心座標データ92cおよびその有効範囲の座標についての有効範囲座標データ92dをデータ記憶領域92に記憶(設定)するためのプログラムである。
【0102】
ただし、有効範囲は、コントローラ22の指示座標が星オブジェクト104を指示しているか否かを判定するための範囲である。たとえば、有効範囲を、星オブジェクト104と同じ大きさ(同じ形状)で設定する場合には、星オブジェクト104の表示領域に含まれる全ての座標データが記憶される。ただし、有効範囲を、星オブジェクト104を囲む簡単な図形(円、矩形)で設定することもできる。かかる場合には、当該図形に含まれる全ての座標データを記憶する必要はない。たとえば、有効範囲を円で設定する場合には、当該円の中心座標のデータと、半径のデータとが記憶される。また、有効範囲を矩形(正方形、長方形)で設定する場合には、当該矩形の頂点座標のデータが記憶される。
【0103】
また、星オブジェクト設定プログラム90dは、2次元座標に変換された(または、3次元のゲーム空間において)、プレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在するか否かを判断する。そして、プレイヤオブジェクト102と当該星オブジェクト104との間に他のオブジェクトが存在する場合には、星オブジェクト設定プログラム90dは、当該星オブジェクト104を候補オブジェクトとして選択できない旨を設定する。一方、プレイヤオブジェクト102と当該星オブジェクト104との間に他のオブジェクトが存在しない場合には、星オブジェクト設定プログラム90dは、当該星オブジェクト104を候補オブジェクトとして選択できる旨を設定する。具体的には、星オブジェクト104についての優先フラグ92gを成立(オン)または不成立(オフ)させる。
【0104】
ただし、プレイヤオブジェクト102に変えて、視点(仮想カメラ)と星オブジェクト104との間に他のオブジェクトが存在するか否かを判断するようにしてもよい。
【0105】
入力データ検出プログラム90eは、所定時間(1フレーム)毎に、コントローラ22からの入力データを検出するためのプログラムである。具体的には、入力データ検出プログラム90eは、1フレーム毎に、コントローラI/F56のバッファ(図示せず)に一時記憶された入力データを読み出し、読み出した入力データをデータ記憶領域92に記憶する。ただし、入力データ検出プログラム90eは、コントローラI/F56のバッファに入力データが一時記憶されていない場合には、データ記憶領域92に何も記憶しない。
【0106】
ゲーム操作プログラム90fは、プレイヤの操作に従ってプレイヤオブジェクト102をゲーム空間内で移動させるためのプログラムであり、その過程で、プレイヤが選択した星オブジェクト104を候補オブジェクトとして決定したり、候補オブジェクトの星オブジェクト104を対象オブジェクトとして決定したりする。視点位置制御プログラム90gは、プレイヤオブジェクト102の移動に従って、ゲーム空間内に設定される視点(仮想カメラ)の3次元位置を設定(更新)するためのプログラムである。また、視点位置制御プログラム90gは、視点の3次元位置のみならず、視点の方向を制御することもある。
【0107】
なお、図示は省略するが、プログラム記憶領域90には、音出力プログラムやバックアッププログラムなども記憶される。音出力プログラムは、ゲーム音楽(BGM)、オブジェクトの音声ないし擬声音、効果音など、ゲームに必要な音を出力するためのプログラムである。また、バックアッププログラムは、ゲームデータをメモリカード30に保存するためのプログラムである。
【0108】
データ記憶領域92には、画像データ92a、入力データ92b、中心座標データ92c、有効範囲座標データ92d、候補オブジェクトデータ92e、対象オブジェクトデータ92f、優先フラグ92gおよび入力フラグ92hなどが記憶されるとともに、候補タイマ92iが設けられる。
【0109】
画像データ92aは、上述したゲーム画像を生成するためのデータ(ポリゴン、テクスチャなど)である。入力データ92bは、上述したように、操作データ、加速度データおよびマーカ座標データの少なくとも1つを含むデータであり、入力データ検出プログラム90eに従って更新される。
【0110】
中心座標データ92cは、星オブジェクト設定プログラム90dに従って設定された星オブジェクト104(たとえば、104a−104d)の中心座標についてのデータであり、各星オブジェクト104に対応して記憶される。また、有効範囲座標データ92cは、星オブジェクト設定プログラム90eに従って設定された星オブジェクト104(104a−104d)の有効範囲に含まれる全ての座標についてのデータであり、各星オブジェクト104に対応して記憶される。
【0111】
候補オブジェクトデータ92eは、コントローラ22によって指示された星オブジェクト104の識別情報についてのデータであり、ゲーム操作プログラム90fに従って記憶されたり、消去されたりする。ただし、ゲーム操作プログラム90fは、一旦候補オブジェクトデータ92eを記憶した後では、一定時間が経過するか、対象オブジェクトが決定されるまで、当該候補オブジェクトデータ92eを消去することはない。
【0112】
対象オブジェクトデータ92fは、候補オブジェクトが決定されている場合に、コントローラ22のBトリガースイッチ26iがオンされることによって対象オブジェクトに決定された星オブジェクト104の識別情報についてのデータであり、ゲーム操作プログラム90fに従って記憶(更新)される。
【0113】
優先フラグ92gは、プレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在するか否かを判断するためのフラグである。言い換えると、優先フラグ92gは、星オブジェクト104を優先するか否かを判断するためのフラグである。したがって、優先フラグ92gは星オブジェクト104毎に設けられる。ただし、厳密に言うと、優先フラグ92gは、各星オブジェクト104の2次元座標(有効範囲座標データ92d)に対応づけられる。このとき、各星オブジェクト104に設定されている複数の有効範囲座標のそれぞれに対応付けて優先フラグを設定するようにしてもよい。このようにすれば、たとえば、プレイヤオブジェクト102と星オブジェクト104の一部との間に他のオブジェクトが存在する場合に、当該星オブジェクト104の一部と他の部分とで優先フラグの設定を変えることができる。したがって、星オブジェクト104の一部をコントローラ22で指示した場合は当該星オブジェクトを選択することはできないが、他の部分を指示した場合は当該星オブジェクトを選択することができるといった処理を実現することができる。
【0114】
なお、星オブジェクト104の2次元座標を対応づけるのは、コントローラ22の指示座標に対応して星オブジェクト104を容易に判定するためである。
【0115】
また、各優先フラグ92gは1ビットのレジスタで構成され、そのデータ値は星オブジェクト設定プログラム90dに従って設定(更新)される。プレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在する場合には、当該星オブジェクトに対応する優先フラグ92gはオフされ、レジスタのビットにデータ値「0」が設定される。一方、プレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在しない場合には、当該星オブジェクト104を優先すべく、当該星オブジェクト104に対応する優先フラグ92gはオンされ、レジスタのビットにデータ値「1」が設定される。
【0116】
入力フラグ92hは、所定の入力手段26(この実施例では、Bトリガースイッチ26i)が押されているかどうかを判断するためのフラグである。この入力フラグ92hは、たとえば1ビットのレジスタで構成され、そのデータ値はゲーム操作プログラム90fに従って設定(更新)される。Bトリガースイッチ26iが押されている場合には、つまり操作データがBトリガースイッチ26iをオンしていることを示す場合には、入力フラグ92hはオンされ、レジスタのビットにデータ値「1」が設定される。一方、Bトリガースイッチ26iが押されていない場合には、つまり操作データがBトリガースイッチ26iをオフしていることを示す場合には、入力フラグ92hはオフされ、レジスタのビットにデータ値「0」が設定される。
【0117】
候補タイマ92iは、候補オブジェクトが決定されている一定時間をカウントするためのタイマである。たとえば、候補オブジェクトが決定されると、つまり候補オブジェクトデータ92eがデータ記憶領域92に記憶されると、候補タイマ92iに一定時間(たとえば、300フレーム)が設定される。そして、候補タイマ92iは、候補オブジェクトが対象オブジェクトとして決定されない限り、1フレーム毎にカウントダウンされる。そして、候補タイマ92iがタイムアップすると、候補オブジェクトデータ92eが消去される。
【0118】
なお、図示は省略するが、データ記憶領域92には、ゲームデータやサウンドデータまたは他のフラグなども記憶される。
【0119】
具体的には、図2に示したCPU36が図13に示すゲーム全体処理を実行する。図13に示すように、CPU36は、ゲーム全体処理を開始すると、ステップS1で、初期化を実行する。ここでは、メインメモリ40のバッファ領域をクリアしたり、各種フラグをオフしたりする。次のステップS3では、ゲーム空間内にオブジェクトを配置する。つまり、プレイヤオブジェク102、星オブジェクト104、惑星オブジェクト106などのオブジェクトを生成する。
【0120】
続いて、ステップS5では、視点から見たゲーム空間をゲーム画像として描画する。つまり、仮想カメラでゲーム空間を撮影し、撮影した画像を、仮想カメラを原点とする2次元のカメラ座標に変換する。言い換えると、視点から見たゲーム空間を、仮想スクリーンに透視投影するのである。次にステップS7では、後述する星オブジェクトの設定処理(図14)を実行し、ステップS9では、入力データを取得(検出)する。
【0121】
入力データを取得すると、ステップS11で、後述するゲーム操作処理(図15−図18)を実行し、ステップS13で、視点位置制御処理を実行する。次にステップS15で、数1および数2に従って、移動速度算出処理を実行する。そして、ステップS17では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了が指示されたり、ゲームオーバになったりしたかを判断する。ステップS17で“NO”であれば、つまりゲーム終了でなければ、そのままステップS5に戻る。一方、ステップS17で“YES”であれば、つまりゲーム終了であれば、そのままゲーム全体処理を終了する。
【0122】
図14は図13に示したステップS7の星オブジェクトの設定処理を示すフロー図である。図13に示すように、CPU36は、星オブジェクトの設定処理を開始すると、ステップS31で、各星オブジェクト104(104a−104d)の中心座標および有効範囲座標を設定する。ただし、このステップS31で設定される中心座標および有効範囲の座標は3次元座標である。したがって、有効範囲を上述したような円や矩形で設定する場合には、3次元の有効範囲は星オブジェクト104を囲む球や立方体または直方体に設定される。
【0123】
次のステップS33では、ステップS31で設定された中心座標および有効範囲座標を2次元座標に変換する。つまり、中心座標および有効範囲座標を仮想スクリーンに透視投影した場合の2次元座標に変換する。続いて、ステップS35で、変換された2次元座標を星オブジェクト104に対応付けて記憶する。つまり、星オブジェクト104についての中心座標データ92cおよび有効範囲座標データ92dがメインメモリ40のデータ記憶領域92に記憶される。
【0124】
続いて、ステップS37では、プレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在するかどうかを判断する。ステップS37で“YES”であれば、つまりプレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在する場合には、ステップS39で、当該星オブジェクト104の2次元座標(有効範囲座標データ92d)に対応する優先フラグ92gをオフして、図13に示したゲーム全体処理にリターンする。一方、ステップS37で“NO”であれば、つまりプレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在しない場合には、ステップS41で、当該星オブジェクト104の2次元座標(有効範囲座標データ92d)に対応する優先フラグ92gをオンして、ゲーム全体処理にリターンする。
【0125】
図15−図18は、図13に示したステップS11のゲーム操作処理を示すフロー図である。図15に示すように、CPU36は、ゲーム操作処理を開始すると、ステップS51で、指示座標を算出する。ここでは、CPU36は、入力データに含まれるマーカ座標データを検出し、このマーカ座標データに基づいてコントローラ22の指示座標を算出する。続くステップS53では、コントローラ22の指示座標にカーソル画像110を表示する。
【0126】
続いて、ステップS55では、指示座標が星オブジェクト104の有効範囲内かどうかを判断する。つまり、指示座標が、有効範囲座標データ92dが示す座標に含まれるかどうかを判断する。ただし、上述したように、カーソル画像110で星オブジェクト104を指示するので、カーソル画像110が星オブジェクト104に接触しているかどうか、または重なっているかどうかを判断するようにしてもよい。ステップS55で“NO”であれば、つまり指示座標が星オブジェクト104の有効範囲外であれば、図16に示すステップS63に進む。一方、ステップS55で“YES”であれば、つまり指示座標が星オブジェクト104の有効範囲内であれば、ステップS57で、当該星オブジェクト104の2次元座標(有効範囲座標)に対応する優先フラグ92gはオンかどうかを判断する。
【0127】
ステップS57で“NO”であれば、つまり当該星オブジェクト104の2次元座標に対応する優先フラグ92gがオフであれば、当該星オブジェクト104を候補オブジェクトとして設定(決定)できないと判断して、そのままステップS63に進む。一方、ステップS57で“YES”であれば、つまり当該星オブジェクト104の2次元座標に対応する優先フラグ92gがオンであれば、ステップS59で、当該星オブジェクト104を候補オブジェクトして設定(決定)する。つまり、当該星オブジェクト104の識別情報のデータを候補オブジェクトデータ92eとしてデータ記憶領域92に記憶する。このとき、既に他の星オブジェクト104の識別情報のデータが候補オブジェクトデータ92eとしてデータ記憶領域92に記憶されている場合には、候補オブジェクトデータ92eの内容を今回指示された星オブジェクト104の識別情報のデータに書き換えてもよいし、書き換えなくてもよい。書き換えない場合は、後述のステップS69によって候補オブジェクトが消去された後に指示された星オブジェクト104を設定(書込)可能にする。そして、ステップS61で、候補タイマ92iをセットして、図17に示すステップS71に進む。たとえば、ステップS61では、候補タイマ92iに一定時間(300フレーム)を設定する。
【0128】
上述したように、ステップS55またはステップS57で“NO”となり、図16に示すように、ステップS63に進むと、候補オブジェクトが設定されているかどうかを判断する。ここでは、データ記憶領域92に、候補オブジェクトデータ92eが記憶されているかどうかを判断する。ステップS63で“NO”であれば、つまり候補オブジェクトが設定されていなければ、そのままステップS71に進む。一方、ステップS63で“YES”であれば、つまり候補オブジェクトが設定されていれば、ステップS65で、候補タイマ92iを1(フレーム)減算する。
【0129】
続くステップS67では、候補タイマ92iのカウント値が0以下であるかどうかを判断する。つまり、一定時間が経過したかどうかを判断する。ステップS67で“NO”であれば、つまり一定時間が経過していなければ、候補オブジェクトの設定状態を維持すべく、そのままステップS71に進む。一方、ステップS67で“YES”であれば、つまり一定時間が経過すれば、ステップS69で、候補オブジェクトすなわち候補オブジェクトデータ92eをデータ記憶領域92から消去して、ステップS71に進む。
【0130】
図17に示すように、ステップS71では、Bトリガースイッチ26iが押されているかどうかを判断する。つまり、ゲーム全体処理のステップS9で検出した入力データに含まれる操作データが、Bトリガースイッチ26iがオンであることを示すかどうかを判断する。ステップS71で“NO”であれば、つまりBトリガースイッチ26iが押されていなければ、ステップS73で、入力フラグ92hをオフし、ステップS75で、対象オブジェクトすなわち対象オブジェクトデータ92fをデータ記憶領域92から消去して、図18に示すステップS87に進む。ただし、既に対象オブジェクトが消去されている場合には、ステップS75の処理は実行されない。
【0131】
しかし、ステップS71で“YES”であれば、つまりBトリガースイッチ26iが押されていれば、ステップS77で、入力フラグ92hがオンであるかどうかを判断する。つまり、Bトリガースイッチ26iが押し続けられているかどうかを判断する。ステップS77で“YES”であれば、つまり入力フラグ92hがオンであれば、Bトリガースイッチ26iが押し続けられていると判断して、ステップS87に進む。一方、ステップS77で“NO”であれば、つまり入力フラグ92hがオフであれば、今回Bトリガースイッチ26iがオンされたと判断して、ステップS79で、入力フラグ92hをオンする。
【0132】
続いて、ステップS81では、候補オブジェクトが設定されているかどうかを判断する。ステップS81で“NO”であれば、つまり候補オブジェクトが設定されていなければ、そのままステップS87に進む。一方、ステップS81で“YES”であれば、つまり候補オブジェクトが設定されていれば、ステップS83で、プレイヤオブジェクト102と候補オブジェクトとの距離が所定距離以内であるかどうかを判断する。
【0133】
ステップS83で“NO”であれば、つまりプレイヤオブジェクト102と候補オブジェクトとの距離が所定距離を越えていれば、そのままステップS87に進む。一方、ステップS83で“YES”であれば、つまりプレイヤオブジェクト102と候補オブジェクトとの距離が所定距離以内であれば、ステップS85で、候補オブジェクトの星オブジェクト104を対象オブジェクトとして設定(決定)し、ステップS87に進む。たとえば、ステップS85では、候補オブジェクトデータ92eを対象オブジェクトデータ92fとしてコピーした後、当該候補オブジェクトデータ92eを消去する。
【0134】
図18に示すように、ステップS87では、対象オブジェクトが設定されているかどうかを判断する。つまり、対象オブジェクトデータ92fがデータ記憶領域92に記憶されているかどうかを判断する。ステップS87で“NO”であれば、つまり対象オブジェクトが設定されていない場合には、そのまま図13に示したゲーム全体処理にリターンする。一方、ステップS87で“YES”であれば、つまり対象オブジェクトが設定されている場合には、ステップS89で、プレイヤオブジェクト102を、ゲーム全体処理のステップS15で算出した前フレームの速度V´で対象オブジェクトに近づけるように移動させて、ゲーム全体処理にリターンする。つまり、ステップS89では、プレイヤオブジェクト102の位置座標が数3に従って更新される。ただし、M´は更新後のプレイヤオブジェクト102の位置座標である。
【0135】
[数3]
M´=M+V´
この実施例によれば、コントローラを用いて対象オブジェクトを決定し、決定した対象オブジェクトに近づけるようにプレイヤオブジェクトを移動させるので、対象オブジェクトに応じた処理をプレイヤオブジェクトに行わせることができる。したがって、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【0136】
なお、この実施例では、Bトリガースイッチを押すと、対象オブジェクトが決定され、対象オブジェクトが決定されている状態でBトリガースイッチを押し続けると、プレイヤオブジェクトが対象オブジェクトに近づくように移動されるようにした。しかし、入力手段は、他のボタンないしスイッチを用いるようにしてもよく、対象オブジェクトを決定する場合と、プレイヤオブジェクトを移動させる場合とで異なるボタンないしスイッチを用いるようにしてもよい。
【0137】
また、この実施例では、Bトリガースイッチを押し続けている間、プレイヤオブジェクトを対象オブジェクトに近づけるように移動させるようにした。ただし、Bトリガースイッチを押し続ける必要はない。たとえば、Bトリガースイッチを押すと、プレイヤオブジェクトが移動を開始し、次にBトリガースイッチを押したときに、プレイヤオブジェクトが移動を停止するようにしてもよい。
【0138】
さらに、この実施例では、どの星オブジェクトを対象オブジェクトとして決定した場合であっても、線オブジェクトでプレイヤオブジェクトと連結し、プレイヤオブジェクトを当該対象オブジェクトに近づけるようにしたが、これに限定される必要はない。たとえば、対象オブジェクトとして決定した星オブジェクトに応じて異なる処理を行わせることもできる。たとえば、或る星オブジェクトを対象オブジェクトとして決定した場合には、Bトリガースイッチを押し続けることにより、当該対象オブジェクトから遠ざかるように、プレイヤオブジェクトを移動させてもよい。また、他の星オブジェクトを対象オブジェクトとして決定した場合には、Bトリガースイッチを押し続けることにより、プレイヤオブジェクトを、当該対象オブジェクトを中心に回転するようにしてもよい。
【0139】
さらにまた、他の実施例として、対象オブジェクトを決定することにより、プレイヤオブジェクトの能力(パラメータ)を変化させるようにしてもよい。たとえば、プレイヤオブジェクトの能力(無敵、攻撃力アップ、移動速度上昇)を示す能力オブジェクト(たとえば、アイコン)をゲーム画面に表示しておき、或る能力オブジェクトを対象オブジェクトとして決定した場合に、Bトリガースイッチを押し続けることにより、その間、対象オブジェクトが無敵になったり、攻撃力がアップしたり、移動速度が速くなったりするようにしてもよい。
【0140】
さらにまた、他の実施例として、対象オブジェクトとして複数の敵オブジェクトをゲーム画面に表示しておき、或る敵オブジェクトを対象オブジェクトとして決定した場合に、Bトリガースイッチを押し続けることにより、その間、プレイヤオブジェクトが対象の敵オブジェクトに攻撃を行うようにしてもよい。
【0141】
また、この実施例では、候補オブジェクトとして決定された後、その状態を一定時間継続させるようにしたが、これに限定される必要はない。たとえば、コントローラの指示位置が候補オブジェクトの有効範囲座標から外れている時間が一定時間内のときだけ、候補オブジェクトとして決定された状態を継続させるようにしてもよい。また、コントローラの指示位置が候補オブジェクトの中心位置から所定距離内に在るときだけ、候補オブジェクトとして決定された状態を継続させるようにしてもよい。
【0142】
さらに、この実施例では、マーカ画像に基づいて、コントローラの指示座標を算出するようにしてあるため、コントローラに加速度センサを設ける必要はない。ただし、コントローラから入力される加速度データの変化に基づいて、コントローラの移動(振り)方向や移動距離を算出して、コントローラの指示座標を算出することもできる。このような加速度による指示画像の算出は、マーカ画像を正しく検出できない場合に、補足的に行ってもよい。
【0143】
さらにまた、この実施例では、モニタ34の周辺にマーカを設け、コントローラにマーカから出力される赤外光を撮像するための撮像装置を設けることによってコントローラの指示位置を検出するようにしたが、これに限られる必要はない。たとえば、コントローラにマーカを設け、モニタ34の周辺に撮像装置を設けるようにしてもよい。また、撮像装置に代えて受光センサ等を用いてもよい。
【0144】
また、この実施例では、ポインティングデバイスとして実施例で示した構成のコントローラを用いるようにしたが、コントローラに変えてコンピュータマウスを用いることもできる。
【図面の簡単な説明】
【0145】
【図1】図1はこの発明のゲームシステムの一実施例を示す図解図である。
【図2】図2は図1に示すゲームシステムの電気的な構成を示すブロック図である。
【図3】図3は図1に示すコントローラを上面後方および下面広報から見た斜視図である。
【図4】図4は図1に示すコントローラを正面から見た正面図である。
【図5】図5は図3に示すコントローラの電気的な構成を示すブロック図である。
【図6】図6は図1に示すコントローラを用いてゲームプレイするときの状態を概説するための図解図である。
【図7】図7は図1に示すマーカおよびコントローラの視野角を説明するための図解図である。
【図8】図8は対象画像を含む撮像画像の一例を示す図解図である。
【図9】図9は図1に示すモニタに表示されるゲーム画面の一例を示す図解図である。
【図10】図10は図1に示すモニタに表示されるゲーム画面の他の例を示す図解図である。
【図11】図11は図1に示すモニタに表示されるゲーム画面のその他の例を示す図解図である。
【図12】図12は図2に示すメインメモリのメモリマップの一例を示す図解図である。
【図13】図13は図2に示すCPUのゲーム全体処理を示すフロー図である。
【図14】図14は図2に示すCPUの星オブジェクトの設定処理を示すフロー図である。
【図15】図15は図2に示すCPUのゲーム操作処理の一部を示すフロー図である。
【図16】図16は図2に示すCPUのゲーム操作処理の他の一部であって、図15に後続するフロー図である。
【図17】図17は図2に示すCPUのゲーム操作処理のその他の一部であって、図15および図16に後続するフロー図である。
【図18】図18は図2に示すCPUのゲーム操作処理のさらに他の一部であって、図17に後続するフロー図である。
【符号の説明】
【0146】
10 …ゲームシステム
12 …ビデオゲーム装置
18 …光ディスク
22 …コントローラ
24 …受信ユニット
30 …メモリカード
34 …モニタ
34a …スピーカ
36 …CPU
38 …メモリコントローラ
40 …メインメモリ
42 …GPU
52 …DSP
54 …ARAM
62 …オーディオI/F
70 …マイコン
74 …加速度センサ
80 …撮像情報演算部
86 …撮像素子
88 …画像処理回路
【技術分野】
【0001】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、入力装置からの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するための、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来、光学式のポインティングデバイスを用いたゲームシステムが提案されている。たとえば、特許文献1には、ガン型のコントローラを用いた射撃ゲーム装置が開示されている。このガン型のコントローラはCCDカメラを備え、ビデオ画面の周囲に撮像対象として配設された発光体をCCDカメラによって撮影する。これによって、ゲーム装置は、画面とガン型のコントローラとの距離、ガン型のコントローラの回転、および画面とガン型のコントローラとの相対位置を検出することができる。また、ガン型のコントローラが指示している画面上の座標(着弾点)も算出される。
【特許文献1】特開平8−71252
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、特許文献1に記載のガン型のコントローラは、表示画面上の位置を指定するために用いられるだけである。つまり、ガン型のコントローラでは、表示画面上の位置を指定するという単一の操作のみが可能であり、他の操作を行うことができなかった。したがって、ガン型のコントローラでは、表示画面上の標的への当たり外れを判定するような単純なゲーム操作しか行うことができない。このため、ゲーム操作のみならず、ゲーム自体も単純な内容となってしまい、面白味に欠けてしまう。
【0004】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【0005】
また、この発明の他の目的は、ポインティングデバイスを用いたゲームの面白味を増大させることができる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0007】
請求項1の発明は、少なくとも1つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置で実行されるゲームプログラムであって、ゲーム装置のプロセサを、オブジェクト配置手段、指示位置検出手段、第1オブジェクトの指示判別手段、操作状態判別手段および第2オブジェクトの制御手段として機能させる。オブジェクト配置手段は、仮想ゲーム空間内に第1オブジェクトと第2オブジェクトとを配置する。指示位置検出手段は、ポインティングデバイスによって指示される画面上の位置を検出する。第1オブジェクトの指示判別手段は、指示位置検出手段によって検出された指示位置に基づいて、第1オブジェクトを指示しているか否かを判別する。操作状態判別手段は、第1オブジェクトの指示判別手段によって第1オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する。第2オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が押されたことが判別されたとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0008】
請求項1の発明では、ゲーム装置(12)は、少なくとも1つの入力手段(26)を含むポインティングデバイス(22)からの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を表示装置(34)の画面上に表示する。ゲームプログラムは、このゲーム装置のプロセサ(36)を、オブジェクト配置手段(36,S3)、指示位置検出手段(36,S9,S51)、第1オブジェクトの指示判別手段(36,S55)、操作状態判別手段(36,S9,S71)および第2オブジェクトの制御手段(36,S89)として機能させる。オブジェクト配置手段は、仮想ゲーム空間内に第1オブジェクト(104)と第2オブジェクト(102)とを配置する。たとえば、各オブジェクトが生成され、3次元の仮想ゲーム空間に配置される。指示位置検出手段は、ポインティングデバイスによって指示される画面(100)上の位置を検出する。つまり、ポインティングデバイスの指示座標が検出される。第1オブジェクトの指示判別手段は、指示位置検出手段によって検出された指示位置(指示座標)に基づいて、第1オブジェクトを指示しているか否かを判別する。たとえば、指示座標が第1オブジェクトの表示領域に接触するかどうか、または含まれるかどうかを判断する。操作状態判別手段は、第1オブジェクトの指示判別手段によって第1オブジェクトを指示していることが判別されている状態で所定の入力手段(26i)が押されたか否かを判別する。第2オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が押されたことが判別されたとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。つまり、第1オブジェクトに応じた処理が第2オブジェクトによって実行される。
【0009】
請求項1の発明によれば、指示された第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせるので、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【0010】
請求項2の発明は請求項1に従属し、ポインティングデバイスは表示装置の周辺に設置される撮影対象を撮影するための撮像手段を含み、指示位置検出手段は、撮像手段の撮影結果に基づいてポインティングデバイスによって指示される画面上の位置を検出する。
【0011】
請求項2の発明では、ポインティングデバイスは表示装置の周辺に設置される撮影対象(32m,32n)を撮影するための撮像手段(80)を含む。指示位置検出手段は、撮像手段の撮影結果に基づいてポインティングデバイスによって指示される画面の位置を検出する。たとえば、2つの撮影対象の中間の位置が、ポインティングデバイスの向いている位置すなわち指示位置として検出される。
【0012】
請求項2の発明によれば、撮影結果からポインティングデバイスによって指示される画面の位置を検出するので、簡単に位置を検出することができる。
【0013】
請求項3の発明は請求項1に従属し、操作状態判別手段は、所定の入力手段が継続して押されている状態であるか否かを判別し、第2オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が継続して押されている状態が判別されている間、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0014】
請求項3の発明では、操作状態判別手段は、所定の入力手段が継続して押されている状態であるか否か、すなわち押し続けられているかどうかを判別する。第2オブジェクトの制御手段は、所定の入力手段が継続して押されている状態が判別されている間、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0015】
請求項3の発明によれば、所定の入力手段が継続して押されている間だけ、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせることができる。つまり、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる時間をプレイヤに選択させることができる。
【0016】
請求項4の発明は請求項1に従属し、ゲームプログラムは、プロセサを、第1オブジェクトの指示判別手段によって第1オブジェクトを指示していることが判別されたとき、当該第1オブジェクトと第2オブジェクトとの仮想空間内における距離を判別する距離判別手段としてさらに機能させ、第2オブジェクトの制御手段は、距離が所定範囲内であるとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0017】
請求項4の発明では、距離判別手段(36,S83)は、第1オブジェクトを指示していることが判別されたとき(S55で“YES”)、第1オブジェクトと第2オブジェクトとの仮想空間内における距離を判別する。第2オブジェクトの制御手段は、距離が所定範囲内であるとき、第1オブジェクトに関連付けられた処理を第2オブジェクとに行わせる。したがって、第2オブジェクトの制御手段は、距離が所定範囲を超えている場合には、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせない。
【0018】
請求項4の発明によれば、第1オブジェクトと第2オブジェクトとの距離が所定距離以内である場合に限り、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせることができる。
【0019】
請求項5の発明は請求項1従属し、ゲームプログラムは、プロセサを、第1オブジェクトの指示判別手段によって第1オブジェクトを指示していることが判別されたとき、当該第1オブジェクトと第2オブジェクトとの間に他のオブジェクトが存在するか否かを判別する存在判別手段として機能させ、第2オブジェクトの制御手段は、存在判別手段によって他のオブジェクトが存在しないことが判別されたとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0020】
請求項5の発明では、存在判別手段(36,S57)は、第1オブジェクトを指示していることが判別されたとき(S55で“YES”)、当該第1オブジェクトと第2オブジェクトとの間に他のオブジェクトが存在するか否かを判別する。つまり、プレイヤが当該第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせることができるか否かを判断する。第2オブジェクトの制御手段は、他のオブジェクトが存在しないとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0021】
請求項5の発明によれば、第1オブジェクトと第2オブジェクトとの間に他のオブジェクトが存在しない場合に限り、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせることができる。
【0022】
請求項6の発明は請求項1ないし5のいずれかに従属し、第2オブジェクトの制御手段は、第2オブジェクトを第1オブジェクトに近づけるように当該第2オブジェクトの移動を制御する。
【0023】
請求項6の発明によれば、第2オブジェクトの制御手段は、第2オブジェクトを第1オブジェクトに近づけるように第2オブジェクトの移動を制御する。
【0024】
請求項6の発明によれば、第1オブジェクトに近づけるように第2オブジェクトを移動させるので、第2オブジェクトを第1オブジェクトに近づけたり、指示する第1オブジェクトを変化させたりすることにより、プレイヤオブジェクトを仮想ゲーム空間内で移動させることができる。
【0025】
請求項7の発明は請求項6に従属し、ゲームプログラムは、プロセサを、距離に基づいて第2オブジェクトの移動速度を算出する速度算出手段としてさらに機能させ、第2オブジェクトの制御手段は、速度算出手段によって算出された速度に基づいて第2オブジェクトの移動を制御する。
【0026】
請求項7の発明では、速度算出手段(36,S15)は、第1オブジェクトと第2オブジェクトとの距離に基づいて第2オブジェクトの移動速度を算出する。第2オブジェクトの制御手段は、速度算出手段によって算出された速度に基づいて第2オブジェクトの移動を制御する。
【0027】
請求項7の発明によれば、第1オブジェクトと第2オブジェクトとの距離に応じて第1オブジェクトの移動速度を変化させることができる。
【0028】
請求項8の発明は請求項1に従属し、オブジェクト配置手段は、複数の第1オブジェクトを配置し、第1オブジェクトの指示判別手段は、複数の第1オブジェクトのいずれが指示されているか否かをさらに判別し、第2オブジェクトの制御手段は、指示されていることが判別された第1オブジェクト毎に、それぞれ異なる処理を第2オブジェクトに行わせる。
【0029】
請求項8の発明では、オブジェクト配置手段は、複数の第1オブジェクトを配置する。第1オブジェクトの指示判別手段は、第1オブジェクトが指示されているか否かを判別するのみならず、複数の第1オブジェクトのうちのいずれが指示されているかを判別する。第1オブジェクトの制御手段は、指示されていることが判別された第1オブジェクト毎に、それぞれ異なる処理を第2オブジェクトに行わせる。
【0030】
請求項8の発明によれば、第1オブジェクトに応じた処理を第2オブジェクトに行わせることができるので、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【0031】
請求項9の発明は、少なくとも1つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置である。このゲーム装置は、オブジェクト配置手段、指示位置検出手段、第1オブジェクトの指示判別手段、操作状態判別手段および第2オブジェクトの制御手段を備える。オブジェクト配置手段は、仮想ゲーム空間内に第1オブジェクトと第2オブジェクトとを配置する。指示位置検出手段は、ポインティングデバイスによって指示される画面上の位置を検出する。第1オブジェクトの指示判別手段は、指示位置検出手段によって検出された指示位置に基づいて、第1オブジェクトを指示しているか否かを判別する。操作状態判別手段は、第1オブジェクトの指示判別手段によって第1オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する。第2オブジェクトの制御手段は、操作状態判別手段によって所定の入力手段が押されたことが判別されたとき、第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせる。
【0032】
請求項9の発明においても、請求項1の発明と同様に、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【発明の効果】
【0033】
この発明によれば、指示された第1オブジェクトに関連付けられた処理を第2オブジェクトに行わせるので、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【0034】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0035】
図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置12を含む。ビデオゲーム装置12は、音楽演奏プログラム(ゲームプログラム)が組み込まれることにより、音楽演奏装置(音出力装置)として機能する。このビデオゲーム装置12は、略立方体のハウジング14を含み、ハウジング14の上端には光ディスクドライブ16が設けられる。光ディスクドライブ16には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が装着される。ハウジング14の前面には複数の(実施例では4つの)コネクタ20が設けられる。これらコネクタ20は、ケーブル(図示せず)または受信ユニット24を介して、有線または無線によって、ポインティングデバイスとしてのコントローラ22をビデオゲーム装置12に接続するためのものである。図1に示すように、この実施例では、コネクタ20に受信ユニット24が接続され、受信ユニット24を介して、無線でコントローラ22がビデオゲーム装置12に接続される。コントローラ22の詳細については後述する。
【0036】
なお、この実施例では、ビデオゲーム装置12とコントローラ22との間では無線通信を実行するため、本来的には「接続」の用語を用いるべきではない。しかしながら、ビデオゲーム装置12とコントローラ22との間での通信可能な連係状態を表す用語として、有線通信の場合の用語を借りて、便宜上「接続」と表現することとする。
【0037】
また、ビデオゲーム装置12のハウジング14の前面であり、コネクタ20の下方には、1つまたは複数の(この実施例では2つの)メモリスロット28が設けられる。このメモリスロット28にはメモリカード30が挿入される。メモリカード30は、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。
【0038】
さらに、ビデオゲーム装置12のハウジング14の後面には、AVケーブルコネクタ(図示せず)が設けられ、そのコネクタを用いて、AVケーブル32を通してビデオゲーム装置12にモニタ34を接続する。このモニタ34は典型的にはカラーテレビジョン受像機であり、AVケーブル32は、ビデオゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ34の周辺(この実施例では、上側)には、2つのマーカ34m,34nが設けられる。マーカ34m,34nは、赤外LEDであり、それぞれモニタ34の前方に向けて赤外光を出力する。
【0039】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(または他のアプリケーション)をプレイするために、ユーザはまずビデオゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)をストアしている適宜の光ディスク18を選択し、その光ディスク18をビデオゲーム装置12のディスクドライブ16にローディングする。応じて、ビデオゲーム装置12がその光ディスク18にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはビデオゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。入力手段26の他のものを動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0040】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。ビデオゲーム装置12には、CPU36が設けられる。このCPU36は、ビデオゲーム装置12の全体的な制御を担当する。CPU36は、ゲームプロセサとして機能し、このCPU36には、バスを介して、メモリコントローラ38が接続される。メモリコントローラ38は主として、CPU36の制御の下で、バスを介して接続されるメインメモリ40の書込みや読出しを制御する。このメモリコントローラ38にはGPU(Graphics Processing Unit) 42が接続される。
【0041】
GPU42は、描画手段の一部を形成し、たとえばシングルチップASICで構成され、メモリコントローラ38を介してCPU36からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従って、ジオメトリユニット44およびレンダリングユニット46によって3Dのゲーム画像を生成する。つまり、ジオメトリユニット44は、3次元座標系の各種オブジェクト(複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも3つの頂点座標によって定義される多角形平面をいう。)の回転,移動,変形等の座標演算処理を行う。レンダリングユニット46は、各種オブジェクトの各ポリゴンにテクスチャ(模様画像)を貼り付けるなどの画像生成処理を施す。したがって、GPU42によって、ゲーム画面上に表示すべき3Dの画像データが作成され、その画像データがフレームバッファ48内に記憶される。
【0042】
なお、GPU42が作画コマンドを実行するにあたって必要なデータ(プリミティブまたはポリゴンやテクスチャ等)は、GPU42がメモリコントローラ38を介して、メインメモリ40から入手する。
【0043】
フレームバッファ48は、たとえばラスタスキャンモニタ34の1フレーム分の画像データを描画(蓄積)しておくためのメモリであり、GPU42によって1フレーム毎に書き換えられる。具体的には、フレームバッファ48は、1画素(ピクセル)毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、R,G,B,Aについてのデータであり、たとえば、8ビットのR(赤)データ、8ビットのG(緑)データ、8ビットのB(青)データおよび8ビットのA(アルファ)データである。なお、Aデータは、マスク(マット画像)についてのデータである。後述のビデオI/F58がメモリコントローラ38を介してフレームバッファ48のデータを読み出すことによって、モニタ34の画面上に3Dのゲーム画像が表示される。
【0044】
また、Zバッファ50は、フレームバッファ48に対応する画素数×1画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ48の各記憶位置に対応するドットの奥行き情報または奥行きデータ(Z値)を記憶するものである。
【0045】
なお、フレームバッファ48およびZバッファ50は、ともにメインメモリ40の一部を用いて構成されてもよく、また、これらはGPU42の内部に設けられてもよい。
【0046】
メモリコントローラ38はまた、DSP(Digital Signal Processor)52を介して、オーディオ用のRAM(以下、「ARAM」という。)54に接続される。したがって、メモリコントローラ38は、メインメモリ40だけでなく、サブメモリとしてのARAM54の書込みおよび/または読出しを制御する。
【0047】
DSP52は、サウンドプロセサとして働き、メインメモリ40に記憶されたサウンドデータ(図示せず)を用いたり、ARAM54に書き込まれている音波形(音色)データ(図示せず)を用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【0048】
メモリコントローラ38は、さらに、バスによって、各インタフェース(I/F)56,58,60,62および64に接続される。コントローラI/F56は、ビデオゲーム装置12に受信ユニット24を介して接続されるコントローラ22のためのインタフェースである。具体的に言うと、受信ユニット24は、コントローラ22から送信される入力データを受信し、コントローラI/F56は、受信ユニット24によって受信された入力データを、メモリコントローラ38を通してCPU36に与える。ただし、この実施例では、入力データは、後述する、操作データ、加速度データおよびマーカ座標データの少なくとも一方を含むデータを意味する。ビデオI/F58は、フレームバッファ48にアクセスし、GPU42で作成した画像データを読み出して、画像信号または画像データ(ディジタルRGBAピクセル値)をAVケーブル32(図1)を介してモニタ34に与える。
【0049】
外部メモリI/F60は、ビデオゲーム装置12の前面に挿入されるメモリカード30(図1)をメモリコントローラ38に連係させる。それによって、メモリコントローラ38を介して、CPU36がこのメモリカード30にデータを書込み、またはメモリカード30からデータを読み出すことができる。オーディオI/F62は、メモリコントローラ38を通してDSP52から与えられるオーディオデータまたは光ディスク18から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号(音声信号)をモニタ34のスピーカ34aに与える。
【0050】
そして、ディスクI/F64は、ディスクドライブ16をメモリコントローラ38に接続し、したがって、CPU36がディスクドライブ16を制御する。このディスクドライブ16によって光ディスク18から読み出されたプログラムデータやテクスチャデータ等が、CPU36の制御の下で、メインメモリ40に書き込まれる。
【0051】
図3および図4にはコントローラ22の外観の一例が示される。図3(A)は、コントローラ22の上面後方から見た斜視図であり、図3(B)は、コントローラ22を下面後方から見た斜視図である。図4は、コントローラ22を前方から見た正面図である。
【0052】
図3および図4を参照して、コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。上述したように、ハウジング22a(コントローラ22)には、入力手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(A)に示すように、ハウジング22a(コントローラ22)の上面には、十字キー26a,Xボタン26b,Yボタン26c,Aボタン26d,セレクトスイッチ26e,メニュー(ホーム)スイッチ26f,スタートスイッチ26gおよび電源スイッチ26hが設けられる。また、図3(B)に示すように、ハウジング22aの下面に凹部が形成されており、この凹部の後方傾斜面に、Bトリガースイッチ26iが設けられる。
【0053】
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0054】
Xボタン26bおよびYボタン26cは、それぞれ、押しボタンスイッチであり、3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整するために使用される。または、Xボタン26bおよびYボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いることもあり得る。
【0055】
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
【0056】
セレクトスイッチ26e、メニュースイッチ26f、スタートスイッチ26gおよび電源スイッチ26hもまた、押しボタンスイッチである。セレクトスイッチ26eは、ゲームモードを選択するために使用される。メニュースイッチ26fは、ゲームメニュー(メニュー画面)を表示するために使用される。スタートスイッチ26gは、開始(再開)したり、一時提示したりするなどのために使用される。電源スイッチ26hは、ビデオゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0057】
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0058】
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガーを入力したり、コントローラ22で選択した位置を指定したりするために使用される。ただし、Bトリガースイッチ26iを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションを取り消すなどのために使用される。
【0059】
また、コントローラ22には、ハウジング22aの後面に外部拡張コネクタ22bが設けられ、また、ハウジング22aの上面であり、後面側にはインジケータ22cが設けられる。外部拡張コネクタ22bは、図示しない別のコントローラを接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成され、4つのうちのいずれか1つを点灯することにより、コントローラ22の識別情報(コントローラ番号)を示す。
【0060】
さらに、コントローラ22は、撮像情報演算部80(図5参照)を有しており、図4に示すように、ハウジング22aの前面には撮像情報演算部80の光入射口22dが設けられる。
【0061】
なお、図3に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【0062】
図5はコントローラ22の電気的な構成を示すブロック図である。この図5を参照して、コントローラ22はマイコン70を含み、このマイコン70には、内部バス(図示せず)によって、入力手段26、メモリ72、加速度センサ74および無線モジュール76が接続される。また、無線モジュール76には、アンテナ78が接続される。
【0063】
なお、図示は省略するが、上述した拡張コネクタ22bおよびインジケータ22c(LED)もインタフェースまたはドライバを介してマイコン70に接続される。
【0064】
マイコン70は、コントローラ22の全体制御を司り、入力手段26および加速度センサ74のような入力手段によって入力された情報(入力情報)を、入力データとして無線モジュール76およびアンテナ78を介してビデオゲーム装置12に送信(入力)する。このとき、マイコン70は、メモリ72を作業領域ないしバッファ領域として用いる。
【0065】
上述した入力手段26(26a−26i)からの操作信号(操作データ)は、マイコン70に入力され、マイコン70は操作データを一旦メモリ72に記憶する。
【0066】
また、加速度センサ74は、コントローラ22の縦方向(図3に示すy軸方向)、横方向(図3に示すx軸方向)および前後方向(図3に示すz軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。図3(A)および図3(B)からも分かるように、この実施例では、コントローラ22の上面の垂直上方を、y軸の正の方向とし、y軸に垂直であり、コントローラ22の右方向をx軸の正の方向とし、x軸とy軸とに垂直であり、コントローラ22の長手方向であり、Xボタン26bから十字スイッチ26aに向かう方向をz軸の正の方向としてある。
【0067】
たとえば、加速度センサ74は、第1所定時間(たとえば、200msec)毎に、x軸,y軸,z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をマイコン70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。マイコン70は、加速度センサ74から与えられる加速度データを、第2所定時間(たとえば、1フレーム:画面更新単位時間(1/60sec))毎に検出し、一旦メモリ72に記憶する。マイコン70は、操作データ、加速度データおよびマーカ座標データの少なくとも1つを含む入力データを作成し、作成した入力データを、第3所定時間(たとえば、1フレーム)毎にビデオゲーム装置12に送信する。
【0068】
なお、図3では省略したが、この実施例では、加速度センサ74は、ハウジング22aの内部であり、十字キー26aが配置される付近に設けられる。
【0069】
無線モジュール76は、たとえばBluetooth(登録商標)の技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ78から放射する。つまり、入力データは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したビデオゲーム装置12に装着された受信ユニット24によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ビデオゲーム装置12(CPU36)は、コントローラ22からの入力データを取得することができる。そして、CPU36は、取得した入力データとプログラム(ゲームプログラム)とに従ってゲーム処理を行う。
【0070】
さらに、上述したように、コントローラ22には、撮像情報演算部80が設けられる。この撮像情報演算部80は、赤外線フィルタ82、レンズ84、撮像素子86および画像処理回路88によって構成される。赤外線フィルタ82は、コントローラ22の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ34の表示画面近傍(周辺)に配置されるマーカ34mおよび34nは、モニタ34の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ82を設けることによってマーカ34mおよび34nの画像をより正確に撮像することができる。レンズ84は、赤外線フィル82を透過した赤外線を集光して撮像素子86へ出射する。撮像素子86は、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ84によって集光された赤外線を撮像する。したがって、撮像素子86は、赤外線フィルタ82を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子86によって撮像された画像を撮像画像と呼ぶ。撮像素子86によって生成された画像データは、画像処理回路88で処理される。画像処理回路88は、撮像画像内における撮像対象(マーカ34mおよび34n)の位置を算出し、第4所定時間(たとえば、1フレーム)毎に、当該位置を示す各座標値を撮像データとしてマイコン70に出力する。なお、画像処理回路88における処理については後述する。
【0071】
図6は、コントローラ22を用いてゲームプレイするときの状態を概説する図解図である。図6に示すように、ビデオゲームシステム10でコントローラ22を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ22を把持する。厳密に言うと、プレイヤは、コントローラ22の前面(撮像情報演算部80が撮像する光の入射口22d側)がマーカ34mおよび34nの方を向く状態でコントローラ22を把持する。ただし、図1からも分かるように、マーカ34mおよび34nは、モニタ34の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ22が指示する画面上の位置を変更したり、コントローラ22と各マーカ34mおよび34nとの距離を変更したりすることによってゲーム操作を行う。
【0072】
図7は、マーカ34mおよび34nと、コントローラ22との視野角を説明するための図である。図7に示すように、マーカ34mおよび34nは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部80の撮像素子86は、コントローラ22の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ34mおよび34nの視野角θ1は、共に34°(半値角)であり、一方、撮像素子86の視野角θ2は41°である。プレイヤは、撮像素子86が2つのマーカ34mおよび34nからの赤外光を受光することが可能な位置および向きとなるように、コントローラ22を把持する。具体的には、撮像素子86の視野角θ2の中に少なくとも一方のマーカ34mおよび34nが存在し、かつ、マーカ34mまたは34nの少なくとも一方の視野角θ1の中にコントローラ22が存在する状態となるように、プレイヤはコントローラ22を把持する。この状態にあるとき、コントローラ22は、マーカ34mおよび34nの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ22の位置および向きを変化させることによってゲーム操作を行うことができる。
【0073】
なお、コントローラ22の位置および向きがこの範囲外となった場合、コントローラ22の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
【0074】
操作可能範囲内でコントローラ22が把持される場合、撮像情報演算部35によって各マーカ34mおよび34nの画像が撮像される。すなわち、撮像素子86によって得られる撮像画像には、撮像対象である各マーカ34mおよび34nの画像(対象画像)が含まれる。図8は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路88は、各マーカ34mおよび34nの撮像画像における位置を表す座標(マーカ座標)を算出する。
【0075】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路88は、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路88は、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ34mおよび34nの画像34m’および34n’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像であるマーカ34mおよび34nの画像34m’および34n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【0076】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路88は当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子86の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子86によって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
【0077】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
【0078】
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路88は、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、マイコン70によって入力データに含まれ、ビデオゲーム装置12に送信される。
【0079】
ビデオゲーム装置12(CPU36)は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上におけるコントローラ22の指示位置(指示座標)と、コントローラ22からマーカ34mおよび34nまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置が、コントローラ22の向いている位置すなわち指示位置として採用(算出)される。また、撮像画像における対象画像間の距離が、コントローラ22と、マーカ34mおよび34nとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ビデオゲーム装置12はコントローラ22とマーカ34mおよび34nとの間の距離を把握できる。
【0080】
次に、以上のような構成のゲームシステム10を用いてプレイされる仮想ゲームのゲーム画面および仮想ゲームにおけるプレイヤのゲーム操作について説明する。図9−図11には、モニタ34に表示されるゲーム画面100の例が示される。
【0081】
図9(A)および図9(B)に示すように、ゲーム画面100には、プレイヤオブジェクト102、星オブジェクト104(104a,104b,104c,104d)および惑星オブジェクト106(106a,106b,106c)が表示されるとともに、コントローラ22の指示座標にカーソル画像110が表示される。
【0082】
以下、この明細書においては、星オブジェクト104a−104dをまとめて星オブジェクト104と言うことがあり、また、惑星オブジェクト106a−106cをまとめて惑星オブジェクト106と言うことがある。
【0083】
プレイヤは、プレイヤオブジェクト102と星オブジェクト104とを連結させて、プレイヤオブジェクト102を当該星オブジェクト104に近づけたり(引き寄せたり)、連結させる星オブジェクト104を変えたりして、プレイヤオブジェクト102を移動させる。図9(A)では、プレイヤオブジェクト102は、惑星106aに存在する。ここで、プレイヤがコントローラ22を動かす(振る)ことにより、カーソル画像110を移動させて、カーソル画像110を所望の星オブジェクト104aに接触させたり、重ねたりすることにより、当該星オブジェクト104aを選択する。このとき、プレイヤは、ゲーム画面100における所望の星オブジェクト104aの表示位置をコントローラ22で指示するだけであり、コントローラ22の入力手段26は何ら操作されない。すると、選択(指示)された星オブジェクト104aは、プレイヤオブジェクト102と連結可能な候補オブジェクトとして決定される。そして、図9(B)に示すように、候補オブジェクトとしての星オブジェクト104aは、プレイヤが識別(視認)可能に、その表示を変化される。図9(B)からも分かるように、候補オブジェクトは、黒色で塗り潰すことにより示されるが、実際には、色反転させたり、色強調させたり、画像を変化させたりして示される。以下、同じ。
【0084】
図示は省略するが、プレイヤオブジェクト102と、プレイヤが指示した星オブジェクト104との間に他のオブジェクトが存在する場合には、当該星オブジェクト104は候補オブジェクトとして決定されない。
【0085】
この実施例では、候補オブジェクトが決定されると、この候補オブジェクトがプレイヤオブジェクト102と連結される対象のオブジェクト(対象オブジェクト)として決定されない限り、その状態は一定時間(たとえば、300フレーム)継続される。一定時間が経過すると、候補オブジェクトとしての状態(設定)が解除される。このように、候補オブジェクトとして決定された状態を一定時間継続させることにより、対象のオブジェクトとして決定する操作を行うまでの時間的余裕をプレイヤに与えることができる。また、一定時間に限り候補オブジェクトとして決定するのは、所望でない星オブジェクト104を候補オブジェクトとして選択した場合などに、選択を解除したり、他の星オブジェクト104を候補オブジェクトとして選択し直したりすることができるようにするためである。
【0086】
図9(B)に示すように、候補オブジェクトが決定されている場合に、プレイヤが所定のボタン(この実施例では、Bトリガースイッチ26i)を操作すると、当該候補オブジェクトがプレイヤオブジェクト102と連結されるべき対象の星オブジェクト104(以下、「対象オブジェクト」という。)として決定(確定)される。つまり、候補オブジェクトが選択されている状態では、コントローラ22の指示位置に関係なく、候補オブジェクトを対象オブジェクトとして確定することができる。したがって、たとえば、コントローラ22のBトリガースイッチ26iをオンするときに、手ぶれ等が発生してコントローラ22の指示位置が候補オブジェクトの表示位置(有効範囲座標)から外れてしまっても、入力データをビデオゲーム装置12に送信することができれば、対象オブジェクトを確定することができるのである。これによって、候補オブジェクトを対象オブジェクトとして確定するための所定のボタンの操作を確実に行うことができ、操作性を向上することができる。
【0087】
すると、図10(A)に示すように、プレイヤオブジェクト102と対象オブジェクト(ここでは、星オブジェクト104a)とが線オブジェクト108によって連結される。この状態で、プレイヤが所定のボタン(この実施例では、Bトリガースイッチ26i)を押し続けると、対象オブジェクトの引力が働き、プレイヤオブジェクト102は当該対象オブジェクトに向けて移動される。このとき、線オブジェクト108は、プレイヤオブジェクト102の移動に従って短縮される。したがって、図10(B)に示すように、プレイヤオブジェクト102は、対象オブジェクトに近づく。
【0088】
なお、図面では、分かり難いが、Bトリガースイッチ26iを離すと、対象オブジェクト104の引力が働かなくなり、したがって、プレイヤオブジェクト102は停止される。
【0089】
また、詳細な説明は省略するが、この実施例では、プレイヤオブジェクト102と選択した候補オブジェクトとの3次元のゲーム空間における距離が所定距離を超えて離れている場合には、Bトリガースイッチ26iが押された場合であっても、当該候補オブジェクトを対象オブジェクトとして決定しないようにしてある。これは、プレイヤオブジェクト102が所定距離を越えるような遠距離を一度に移動してしまうと、ゲームの面白味に欠けてしまうからである。
【0090】
ここで、プレイヤオブジェクト102が移動する速度(移動速度)は、毎フレーム計算される。具体的には、数1に従って移動速度が算出される。ただし、V´は次フレームの移動速度であり、Sは対象オブジェクトの中心座標(2次元座標)であり、Mはプレイヤオブジェクト102の現在(現フレーム)の位置座標(2次元座標)であり、Vはプレイヤオブジェクト102の現フレームの移動速度であり、aは対象オブジェクトの引力であり、r(0≦r≦1)は現フレームの移動速度V´の減衰率である。
【0091】
[数1]
V´=[V+{(S−M)/|S−M|}×a]×r
なお、{}内は、ベクトルの正規化を意味する。
【0092】
また、プレイヤオブジェクト102が対象オブジェクトに近づく程、プレイヤオブジェクト102を減速し易くするため、引力aおよび減衰率rは数2に従って毎フレーム算出(更新)される。ただし、dはプレイヤオブジェクト102と対象オブジェクトとの距離(2次元の距離)であり、kは引力aおよび減速率rを更新(計算)するか否かを決定する閾値であり、bは基本の引力、c(c>b)は距離d=0のときの引力であり、g(0≦g≦1)は基本の減衰率であり、h(0≦h≦1、g<h)は距離d=0のときの減衰率である。また、k、b、c、g、hは定数である。
【0093】
[数2]
d<kのとき
a=b×t+c×(1−t)
f=g×t+h×(1−t)
t=d/k
d≧kのとき
a=b
f=g
また、図11(A)に示すように、プレイヤオブジェクト102と対象オブジェクトとが線オブジェクト108で連結されている場合にも、プレイヤはコントローラ22を動かすことにより、カーソル画像110を移動させて、他の星オブジェクト104(ここでは、104b,104c,104d)を候補オブジェクトとして選択することができる。
【0094】
図面では表現することができないが、プレイヤオブジェクト102と対象オブジェクトとが線オブジェクト108によって連結されている場合には、プレイヤオブジェクト102が移動しているか否かに拘わらず、プレイヤは、コントローラ22によってカーソル画像110を移動させて、候補オブジェクトを選択することができる。
【0095】
図11(A)に示すように、星オブジェクト104bが候補オブジェクトとして選択された状態で、プレイヤが所定の操作を実行すると、星オブジェクト104bが対象オブジェクトとして決定(確定)される。つまり、対象オブジェクトが、星オブジェクト104aから星オブジェクト104bに変更される。したがって、プレイヤオブジェクト102と星オブジェクト104bとが線オブジェクト108によって連結される。
【0096】
ここで、上述した所定の操作について説明する。図10(A)に示すゲーム画面100において、Bトリガースイッチ26iを押し続けて、プレイヤオブジェクト102を星オブジェクト104aに近づけている場合には、所定の操作は、Bトリガースイッチ26iを一旦離して、再度、押すことを意味する。つまり、かかる場合には、プレイヤは、Bトリガースイッチ26iをオフした後にオンする。ただし、図10(A)に示すゲーム画面100において、Bトリガースイッチ26iを離して、プレイヤオブジェクト102を停止させている場合には、所定の操作は、Bトリガースイッチ26iを押すことを意味する。つまり、かかる場合には、プレイヤは、Bトリガースイッチ26iをオンするだけである。
【0097】
なお、上述したように、候補オブジェクトが選択されている状態では、コントローラ22の指示位置に関係なく、対象オブジェクトを確定することができる。
【0098】
このようにして、プレイヤは、候補オブジェクトや対象オブジェクトを変化させたり、プレイヤオブジェクト102を対象オブジェクトに近づけたりすることにより、プレイヤオブジェクト102をゲーム空間内で移動させる。たとえば、プレイヤオブジェクト102が惑星106aから惑星106bまたは惑星106cに移動される。
【0099】
図12は図2に示したメインメモリ40のメモリマップである。図12に示すように、メインメモリ40は、プログラム記憶領域90およびデータ記憶領域92を含む。プログラム記憶領域90は、ゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム90a、ゲーム画像生成プログラム90b、ゲーム画像表示プログラム90c、星オブジェクト設定プログラム90d、入力データ検出プログラム90e、ゲーム操作プログラム90fおよび視点位置制御プログラム90gなどによって構成される。
【0100】
ゲームメイン処理プログラム90aは、仮想ゲームのメインルーチンを処理するためのプログラムである。ゲーム画像生成プログラム90bは、仮想ゲームのゲーム空間に、プレイヤオブジェクト102や敵オブジェクト(図示せず)の動画オブジェクト、または、星オブジェクト104、惑星オブジェクト106、線オブジェクト108のような背景オブジェクトまたはカーソル画像110を含むゲーム画像を生成するためのプログラムである。ゲーム画像表示プログラム90cは、ゲーム画像生成プログラム90bによって生成されたゲーム画像を出力し、モニタ34にゲーム画面を表示するためのプログラムである。
【0101】
星オブジェクト設定プログラム90dは、3次元のゲーム空間に配置される星オブジェクト104を、ゲーム画面に表示するために、2次元の仮想スクリーンに透視投影し、透視投影することにより2次元座標に変換された星オブジェクト104の中心座標についての中心座標データ92cおよびその有効範囲の座標についての有効範囲座標データ92dをデータ記憶領域92に記憶(設定)するためのプログラムである。
【0102】
ただし、有効範囲は、コントローラ22の指示座標が星オブジェクト104を指示しているか否かを判定するための範囲である。たとえば、有効範囲を、星オブジェクト104と同じ大きさ(同じ形状)で設定する場合には、星オブジェクト104の表示領域に含まれる全ての座標データが記憶される。ただし、有効範囲を、星オブジェクト104を囲む簡単な図形(円、矩形)で設定することもできる。かかる場合には、当該図形に含まれる全ての座標データを記憶する必要はない。たとえば、有効範囲を円で設定する場合には、当該円の中心座標のデータと、半径のデータとが記憶される。また、有効範囲を矩形(正方形、長方形)で設定する場合には、当該矩形の頂点座標のデータが記憶される。
【0103】
また、星オブジェクト設定プログラム90dは、2次元座標に変換された(または、3次元のゲーム空間において)、プレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在するか否かを判断する。そして、プレイヤオブジェクト102と当該星オブジェクト104との間に他のオブジェクトが存在する場合には、星オブジェクト設定プログラム90dは、当該星オブジェクト104を候補オブジェクトとして選択できない旨を設定する。一方、プレイヤオブジェクト102と当該星オブジェクト104との間に他のオブジェクトが存在しない場合には、星オブジェクト設定プログラム90dは、当該星オブジェクト104を候補オブジェクトとして選択できる旨を設定する。具体的には、星オブジェクト104についての優先フラグ92gを成立(オン)または不成立(オフ)させる。
【0104】
ただし、プレイヤオブジェクト102に変えて、視点(仮想カメラ)と星オブジェクト104との間に他のオブジェクトが存在するか否かを判断するようにしてもよい。
【0105】
入力データ検出プログラム90eは、所定時間(1フレーム)毎に、コントローラ22からの入力データを検出するためのプログラムである。具体的には、入力データ検出プログラム90eは、1フレーム毎に、コントローラI/F56のバッファ(図示せず)に一時記憶された入力データを読み出し、読み出した入力データをデータ記憶領域92に記憶する。ただし、入力データ検出プログラム90eは、コントローラI/F56のバッファに入力データが一時記憶されていない場合には、データ記憶領域92に何も記憶しない。
【0106】
ゲーム操作プログラム90fは、プレイヤの操作に従ってプレイヤオブジェクト102をゲーム空間内で移動させるためのプログラムであり、その過程で、プレイヤが選択した星オブジェクト104を候補オブジェクトとして決定したり、候補オブジェクトの星オブジェクト104を対象オブジェクトとして決定したりする。視点位置制御プログラム90gは、プレイヤオブジェクト102の移動に従って、ゲーム空間内に設定される視点(仮想カメラ)の3次元位置を設定(更新)するためのプログラムである。また、視点位置制御プログラム90gは、視点の3次元位置のみならず、視点の方向を制御することもある。
【0107】
なお、図示は省略するが、プログラム記憶領域90には、音出力プログラムやバックアッププログラムなども記憶される。音出力プログラムは、ゲーム音楽(BGM)、オブジェクトの音声ないし擬声音、効果音など、ゲームに必要な音を出力するためのプログラムである。また、バックアッププログラムは、ゲームデータをメモリカード30に保存するためのプログラムである。
【0108】
データ記憶領域92には、画像データ92a、入力データ92b、中心座標データ92c、有効範囲座標データ92d、候補オブジェクトデータ92e、対象オブジェクトデータ92f、優先フラグ92gおよび入力フラグ92hなどが記憶されるとともに、候補タイマ92iが設けられる。
【0109】
画像データ92aは、上述したゲーム画像を生成するためのデータ(ポリゴン、テクスチャなど)である。入力データ92bは、上述したように、操作データ、加速度データおよびマーカ座標データの少なくとも1つを含むデータであり、入力データ検出プログラム90eに従って更新される。
【0110】
中心座標データ92cは、星オブジェクト設定プログラム90dに従って設定された星オブジェクト104(たとえば、104a−104d)の中心座標についてのデータであり、各星オブジェクト104に対応して記憶される。また、有効範囲座標データ92cは、星オブジェクト設定プログラム90eに従って設定された星オブジェクト104(104a−104d)の有効範囲に含まれる全ての座標についてのデータであり、各星オブジェクト104に対応して記憶される。
【0111】
候補オブジェクトデータ92eは、コントローラ22によって指示された星オブジェクト104の識別情報についてのデータであり、ゲーム操作プログラム90fに従って記憶されたり、消去されたりする。ただし、ゲーム操作プログラム90fは、一旦候補オブジェクトデータ92eを記憶した後では、一定時間が経過するか、対象オブジェクトが決定されるまで、当該候補オブジェクトデータ92eを消去することはない。
【0112】
対象オブジェクトデータ92fは、候補オブジェクトが決定されている場合に、コントローラ22のBトリガースイッチ26iがオンされることによって対象オブジェクトに決定された星オブジェクト104の識別情報についてのデータであり、ゲーム操作プログラム90fに従って記憶(更新)される。
【0113】
優先フラグ92gは、プレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在するか否かを判断するためのフラグである。言い換えると、優先フラグ92gは、星オブジェクト104を優先するか否かを判断するためのフラグである。したがって、優先フラグ92gは星オブジェクト104毎に設けられる。ただし、厳密に言うと、優先フラグ92gは、各星オブジェクト104の2次元座標(有効範囲座標データ92d)に対応づけられる。このとき、各星オブジェクト104に設定されている複数の有効範囲座標のそれぞれに対応付けて優先フラグを設定するようにしてもよい。このようにすれば、たとえば、プレイヤオブジェクト102と星オブジェクト104の一部との間に他のオブジェクトが存在する場合に、当該星オブジェクト104の一部と他の部分とで優先フラグの設定を変えることができる。したがって、星オブジェクト104の一部をコントローラ22で指示した場合は当該星オブジェクトを選択することはできないが、他の部分を指示した場合は当該星オブジェクトを選択することができるといった処理を実現することができる。
【0114】
なお、星オブジェクト104の2次元座標を対応づけるのは、コントローラ22の指示座標に対応して星オブジェクト104を容易に判定するためである。
【0115】
また、各優先フラグ92gは1ビットのレジスタで構成され、そのデータ値は星オブジェクト設定プログラム90dに従って設定(更新)される。プレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在する場合には、当該星オブジェクトに対応する優先フラグ92gはオフされ、レジスタのビットにデータ値「0」が設定される。一方、プレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在しない場合には、当該星オブジェクト104を優先すべく、当該星オブジェクト104に対応する優先フラグ92gはオンされ、レジスタのビットにデータ値「1」が設定される。
【0116】
入力フラグ92hは、所定の入力手段26(この実施例では、Bトリガースイッチ26i)が押されているかどうかを判断するためのフラグである。この入力フラグ92hは、たとえば1ビットのレジスタで構成され、そのデータ値はゲーム操作プログラム90fに従って設定(更新)される。Bトリガースイッチ26iが押されている場合には、つまり操作データがBトリガースイッチ26iをオンしていることを示す場合には、入力フラグ92hはオンされ、レジスタのビットにデータ値「1」が設定される。一方、Bトリガースイッチ26iが押されていない場合には、つまり操作データがBトリガースイッチ26iをオフしていることを示す場合には、入力フラグ92hはオフされ、レジスタのビットにデータ値「0」が設定される。
【0117】
候補タイマ92iは、候補オブジェクトが決定されている一定時間をカウントするためのタイマである。たとえば、候補オブジェクトが決定されると、つまり候補オブジェクトデータ92eがデータ記憶領域92に記憶されると、候補タイマ92iに一定時間(たとえば、300フレーム)が設定される。そして、候補タイマ92iは、候補オブジェクトが対象オブジェクトとして決定されない限り、1フレーム毎にカウントダウンされる。そして、候補タイマ92iがタイムアップすると、候補オブジェクトデータ92eが消去される。
【0118】
なお、図示は省略するが、データ記憶領域92には、ゲームデータやサウンドデータまたは他のフラグなども記憶される。
【0119】
具体的には、図2に示したCPU36が図13に示すゲーム全体処理を実行する。図13に示すように、CPU36は、ゲーム全体処理を開始すると、ステップS1で、初期化を実行する。ここでは、メインメモリ40のバッファ領域をクリアしたり、各種フラグをオフしたりする。次のステップS3では、ゲーム空間内にオブジェクトを配置する。つまり、プレイヤオブジェク102、星オブジェクト104、惑星オブジェクト106などのオブジェクトを生成する。
【0120】
続いて、ステップS5では、視点から見たゲーム空間をゲーム画像として描画する。つまり、仮想カメラでゲーム空間を撮影し、撮影した画像を、仮想カメラを原点とする2次元のカメラ座標に変換する。言い換えると、視点から見たゲーム空間を、仮想スクリーンに透視投影するのである。次にステップS7では、後述する星オブジェクトの設定処理(図14)を実行し、ステップS9では、入力データを取得(検出)する。
【0121】
入力データを取得すると、ステップS11で、後述するゲーム操作処理(図15−図18)を実行し、ステップS13で、視点位置制御処理を実行する。次にステップS15で、数1および数2に従って、移動速度算出処理を実行する。そして、ステップS17では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了が指示されたり、ゲームオーバになったりしたかを判断する。ステップS17で“NO”であれば、つまりゲーム終了でなければ、そのままステップS5に戻る。一方、ステップS17で“YES”であれば、つまりゲーム終了であれば、そのままゲーム全体処理を終了する。
【0122】
図14は図13に示したステップS7の星オブジェクトの設定処理を示すフロー図である。図13に示すように、CPU36は、星オブジェクトの設定処理を開始すると、ステップS31で、各星オブジェクト104(104a−104d)の中心座標および有効範囲座標を設定する。ただし、このステップS31で設定される中心座標および有効範囲の座標は3次元座標である。したがって、有効範囲を上述したような円や矩形で設定する場合には、3次元の有効範囲は星オブジェクト104を囲む球や立方体または直方体に設定される。
【0123】
次のステップS33では、ステップS31で設定された中心座標および有効範囲座標を2次元座標に変換する。つまり、中心座標および有効範囲座標を仮想スクリーンに透視投影した場合の2次元座標に変換する。続いて、ステップS35で、変換された2次元座標を星オブジェクト104に対応付けて記憶する。つまり、星オブジェクト104についての中心座標データ92cおよび有効範囲座標データ92dがメインメモリ40のデータ記憶領域92に記憶される。
【0124】
続いて、ステップS37では、プレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在するかどうかを判断する。ステップS37で“YES”であれば、つまりプレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在する場合には、ステップS39で、当該星オブジェクト104の2次元座標(有効範囲座標データ92d)に対応する優先フラグ92gをオフして、図13に示したゲーム全体処理にリターンする。一方、ステップS37で“NO”であれば、つまりプレイヤオブジェクト102と星オブジェクト104との間に他のオブジェクトが存在しない場合には、ステップS41で、当該星オブジェクト104の2次元座標(有効範囲座標データ92d)に対応する優先フラグ92gをオンして、ゲーム全体処理にリターンする。
【0125】
図15−図18は、図13に示したステップS11のゲーム操作処理を示すフロー図である。図15に示すように、CPU36は、ゲーム操作処理を開始すると、ステップS51で、指示座標を算出する。ここでは、CPU36は、入力データに含まれるマーカ座標データを検出し、このマーカ座標データに基づいてコントローラ22の指示座標を算出する。続くステップS53では、コントローラ22の指示座標にカーソル画像110を表示する。
【0126】
続いて、ステップS55では、指示座標が星オブジェクト104の有効範囲内かどうかを判断する。つまり、指示座標が、有効範囲座標データ92dが示す座標に含まれるかどうかを判断する。ただし、上述したように、カーソル画像110で星オブジェクト104を指示するので、カーソル画像110が星オブジェクト104に接触しているかどうか、または重なっているかどうかを判断するようにしてもよい。ステップS55で“NO”であれば、つまり指示座標が星オブジェクト104の有効範囲外であれば、図16に示すステップS63に進む。一方、ステップS55で“YES”であれば、つまり指示座標が星オブジェクト104の有効範囲内であれば、ステップS57で、当該星オブジェクト104の2次元座標(有効範囲座標)に対応する優先フラグ92gはオンかどうかを判断する。
【0127】
ステップS57で“NO”であれば、つまり当該星オブジェクト104の2次元座標に対応する優先フラグ92gがオフであれば、当該星オブジェクト104を候補オブジェクトとして設定(決定)できないと判断して、そのままステップS63に進む。一方、ステップS57で“YES”であれば、つまり当該星オブジェクト104の2次元座標に対応する優先フラグ92gがオンであれば、ステップS59で、当該星オブジェクト104を候補オブジェクトして設定(決定)する。つまり、当該星オブジェクト104の識別情報のデータを候補オブジェクトデータ92eとしてデータ記憶領域92に記憶する。このとき、既に他の星オブジェクト104の識別情報のデータが候補オブジェクトデータ92eとしてデータ記憶領域92に記憶されている場合には、候補オブジェクトデータ92eの内容を今回指示された星オブジェクト104の識別情報のデータに書き換えてもよいし、書き換えなくてもよい。書き換えない場合は、後述のステップS69によって候補オブジェクトが消去された後に指示された星オブジェクト104を設定(書込)可能にする。そして、ステップS61で、候補タイマ92iをセットして、図17に示すステップS71に進む。たとえば、ステップS61では、候補タイマ92iに一定時間(300フレーム)を設定する。
【0128】
上述したように、ステップS55またはステップS57で“NO”となり、図16に示すように、ステップS63に進むと、候補オブジェクトが設定されているかどうかを判断する。ここでは、データ記憶領域92に、候補オブジェクトデータ92eが記憶されているかどうかを判断する。ステップS63で“NO”であれば、つまり候補オブジェクトが設定されていなければ、そのままステップS71に進む。一方、ステップS63で“YES”であれば、つまり候補オブジェクトが設定されていれば、ステップS65で、候補タイマ92iを1(フレーム)減算する。
【0129】
続くステップS67では、候補タイマ92iのカウント値が0以下であるかどうかを判断する。つまり、一定時間が経過したかどうかを判断する。ステップS67で“NO”であれば、つまり一定時間が経過していなければ、候補オブジェクトの設定状態を維持すべく、そのままステップS71に進む。一方、ステップS67で“YES”であれば、つまり一定時間が経過すれば、ステップS69で、候補オブジェクトすなわち候補オブジェクトデータ92eをデータ記憶領域92から消去して、ステップS71に進む。
【0130】
図17に示すように、ステップS71では、Bトリガースイッチ26iが押されているかどうかを判断する。つまり、ゲーム全体処理のステップS9で検出した入力データに含まれる操作データが、Bトリガースイッチ26iがオンであることを示すかどうかを判断する。ステップS71で“NO”であれば、つまりBトリガースイッチ26iが押されていなければ、ステップS73で、入力フラグ92hをオフし、ステップS75で、対象オブジェクトすなわち対象オブジェクトデータ92fをデータ記憶領域92から消去して、図18に示すステップS87に進む。ただし、既に対象オブジェクトが消去されている場合には、ステップS75の処理は実行されない。
【0131】
しかし、ステップS71で“YES”であれば、つまりBトリガースイッチ26iが押されていれば、ステップS77で、入力フラグ92hがオンであるかどうかを判断する。つまり、Bトリガースイッチ26iが押し続けられているかどうかを判断する。ステップS77で“YES”であれば、つまり入力フラグ92hがオンであれば、Bトリガースイッチ26iが押し続けられていると判断して、ステップS87に進む。一方、ステップS77で“NO”であれば、つまり入力フラグ92hがオフであれば、今回Bトリガースイッチ26iがオンされたと判断して、ステップS79で、入力フラグ92hをオンする。
【0132】
続いて、ステップS81では、候補オブジェクトが設定されているかどうかを判断する。ステップS81で“NO”であれば、つまり候補オブジェクトが設定されていなければ、そのままステップS87に進む。一方、ステップS81で“YES”であれば、つまり候補オブジェクトが設定されていれば、ステップS83で、プレイヤオブジェクト102と候補オブジェクトとの距離が所定距離以内であるかどうかを判断する。
【0133】
ステップS83で“NO”であれば、つまりプレイヤオブジェクト102と候補オブジェクトとの距離が所定距離を越えていれば、そのままステップS87に進む。一方、ステップS83で“YES”であれば、つまりプレイヤオブジェクト102と候補オブジェクトとの距離が所定距離以内であれば、ステップS85で、候補オブジェクトの星オブジェクト104を対象オブジェクトとして設定(決定)し、ステップS87に進む。たとえば、ステップS85では、候補オブジェクトデータ92eを対象オブジェクトデータ92fとしてコピーした後、当該候補オブジェクトデータ92eを消去する。
【0134】
図18に示すように、ステップS87では、対象オブジェクトが設定されているかどうかを判断する。つまり、対象オブジェクトデータ92fがデータ記憶領域92に記憶されているかどうかを判断する。ステップS87で“NO”であれば、つまり対象オブジェクトが設定されていない場合には、そのまま図13に示したゲーム全体処理にリターンする。一方、ステップS87で“YES”であれば、つまり対象オブジェクトが設定されている場合には、ステップS89で、プレイヤオブジェクト102を、ゲーム全体処理のステップS15で算出した前フレームの速度V´で対象オブジェクトに近づけるように移動させて、ゲーム全体処理にリターンする。つまり、ステップS89では、プレイヤオブジェクト102の位置座標が数3に従って更新される。ただし、M´は更新後のプレイヤオブジェクト102の位置座標である。
【0135】
[数3]
M´=M+V´
この実施例によれば、コントローラを用いて対象オブジェクトを決定し、決定した対象オブジェクトに近づけるようにプレイヤオブジェクトを移動させるので、対象オブジェクトに応じた処理をプレイヤオブジェクトに行わせることができる。したがって、ポインティングデバイスを用いたゲームの面白味を増大させることができる。
【0136】
なお、この実施例では、Bトリガースイッチを押すと、対象オブジェクトが決定され、対象オブジェクトが決定されている状態でBトリガースイッチを押し続けると、プレイヤオブジェクトが対象オブジェクトに近づくように移動されるようにした。しかし、入力手段は、他のボタンないしスイッチを用いるようにしてもよく、対象オブジェクトを決定する場合と、プレイヤオブジェクトを移動させる場合とで異なるボタンないしスイッチを用いるようにしてもよい。
【0137】
また、この実施例では、Bトリガースイッチを押し続けている間、プレイヤオブジェクトを対象オブジェクトに近づけるように移動させるようにした。ただし、Bトリガースイッチを押し続ける必要はない。たとえば、Bトリガースイッチを押すと、プレイヤオブジェクトが移動を開始し、次にBトリガースイッチを押したときに、プレイヤオブジェクトが移動を停止するようにしてもよい。
【0138】
さらに、この実施例では、どの星オブジェクトを対象オブジェクトとして決定した場合であっても、線オブジェクトでプレイヤオブジェクトと連結し、プレイヤオブジェクトを当該対象オブジェクトに近づけるようにしたが、これに限定される必要はない。たとえば、対象オブジェクトとして決定した星オブジェクトに応じて異なる処理を行わせることもできる。たとえば、或る星オブジェクトを対象オブジェクトとして決定した場合には、Bトリガースイッチを押し続けることにより、当該対象オブジェクトから遠ざかるように、プレイヤオブジェクトを移動させてもよい。また、他の星オブジェクトを対象オブジェクトとして決定した場合には、Bトリガースイッチを押し続けることにより、プレイヤオブジェクトを、当該対象オブジェクトを中心に回転するようにしてもよい。
【0139】
さらにまた、他の実施例として、対象オブジェクトを決定することにより、プレイヤオブジェクトの能力(パラメータ)を変化させるようにしてもよい。たとえば、プレイヤオブジェクトの能力(無敵、攻撃力アップ、移動速度上昇)を示す能力オブジェクト(たとえば、アイコン)をゲーム画面に表示しておき、或る能力オブジェクトを対象オブジェクトとして決定した場合に、Bトリガースイッチを押し続けることにより、その間、対象オブジェクトが無敵になったり、攻撃力がアップしたり、移動速度が速くなったりするようにしてもよい。
【0140】
さらにまた、他の実施例として、対象オブジェクトとして複数の敵オブジェクトをゲーム画面に表示しておき、或る敵オブジェクトを対象オブジェクトとして決定した場合に、Bトリガースイッチを押し続けることにより、その間、プレイヤオブジェクトが対象の敵オブジェクトに攻撃を行うようにしてもよい。
【0141】
また、この実施例では、候補オブジェクトとして決定された後、その状態を一定時間継続させるようにしたが、これに限定される必要はない。たとえば、コントローラの指示位置が候補オブジェクトの有効範囲座標から外れている時間が一定時間内のときだけ、候補オブジェクトとして決定された状態を継続させるようにしてもよい。また、コントローラの指示位置が候補オブジェクトの中心位置から所定距離内に在るときだけ、候補オブジェクトとして決定された状態を継続させるようにしてもよい。
【0142】
さらに、この実施例では、マーカ画像に基づいて、コントローラの指示座標を算出するようにしてあるため、コントローラに加速度センサを設ける必要はない。ただし、コントローラから入力される加速度データの変化に基づいて、コントローラの移動(振り)方向や移動距離を算出して、コントローラの指示座標を算出することもできる。このような加速度による指示画像の算出は、マーカ画像を正しく検出できない場合に、補足的に行ってもよい。
【0143】
さらにまた、この実施例では、モニタ34の周辺にマーカを設け、コントローラにマーカから出力される赤外光を撮像するための撮像装置を設けることによってコントローラの指示位置を検出するようにしたが、これに限られる必要はない。たとえば、コントローラにマーカを設け、モニタ34の周辺に撮像装置を設けるようにしてもよい。また、撮像装置に代えて受光センサ等を用いてもよい。
【0144】
また、この実施例では、ポインティングデバイスとして実施例で示した構成のコントローラを用いるようにしたが、コントローラに変えてコンピュータマウスを用いることもできる。
【図面の簡単な説明】
【0145】
【図1】図1はこの発明のゲームシステムの一実施例を示す図解図である。
【図2】図2は図1に示すゲームシステムの電気的な構成を示すブロック図である。
【図3】図3は図1に示すコントローラを上面後方および下面広報から見た斜視図である。
【図4】図4は図1に示すコントローラを正面から見た正面図である。
【図5】図5は図3に示すコントローラの電気的な構成を示すブロック図である。
【図6】図6は図1に示すコントローラを用いてゲームプレイするときの状態を概説するための図解図である。
【図7】図7は図1に示すマーカおよびコントローラの視野角を説明するための図解図である。
【図8】図8は対象画像を含む撮像画像の一例を示す図解図である。
【図9】図9は図1に示すモニタに表示されるゲーム画面の一例を示す図解図である。
【図10】図10は図1に示すモニタに表示されるゲーム画面の他の例を示す図解図である。
【図11】図11は図1に示すモニタに表示されるゲーム画面のその他の例を示す図解図である。
【図12】図12は図2に示すメインメモリのメモリマップの一例を示す図解図である。
【図13】図13は図2に示すCPUのゲーム全体処理を示すフロー図である。
【図14】図14は図2に示すCPUの星オブジェクトの設定処理を示すフロー図である。
【図15】図15は図2に示すCPUのゲーム操作処理の一部を示すフロー図である。
【図16】図16は図2に示すCPUのゲーム操作処理の他の一部であって、図15に後続するフロー図である。
【図17】図17は図2に示すCPUのゲーム操作処理のその他の一部であって、図15および図16に後続するフロー図である。
【図18】図18は図2に示すCPUのゲーム操作処理のさらに他の一部であって、図17に後続するフロー図である。
【符号の説明】
【0146】
10 …ゲームシステム
12 …ビデオゲーム装置
18 …光ディスク
22 …コントローラ
24 …受信ユニット
30 …メモリカード
34 …モニタ
34a …スピーカ
36 …CPU
38 …メモリコントローラ
40 …メインメモリ
42 …GPU
52 …DSP
54 …ARAM
62 …オーディオI/F
70 …マイコン
74 …加速度センサ
80 …撮像情報演算部
86 …撮像素子
88 …画像処理回路
【特許請求の範囲】
【請求項1】
少なくとも1つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置で実行されるゲームプログラムであって、
前記ゲーム装置のプロセサを、
前記仮想ゲーム空間内に第1オブジェクトと第2オブジェクトとを配置するオブジェクト配置手段、
前記ポインティングデバイスによって指示される画面上の位置を検出する指示位置検出手段、
前記指示位置検出手段によって検出された指示位置に基づいて、前記第1オブジェクトを指示しているか否かを判別する第1オブジェクトの指示判別手段、
前記第1オブジェクトの指示判別手段によって前記第1オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する操作状態判別手段、および
前記操作状態判別手段によって前記所定の入力手段が押されたことが判別されたとき、前記第1オブジェクトに関連付けられた処理を前記第2オブジェクトに行わせる第2オブジェクトの制御手段として機能させる、ゲームプログラム。
【請求項2】
前記ポインティングデバイスは表示装置の周辺に設置される撮影対象を撮影するための撮像手段を含み、
前記指示位置検出手段は、前記撮像手段の撮影結果に基づいて前記ポインティングデバイスによって指示される画面上の位置を検出する、請求項1記載のゲームプログラム。
【請求項3】
前記操作状態判別手段は、前記所定の入力手段が継続して押されている状態であるか否かを判別し、
前記第2オブジェクトの制御手段は、前記操作状態判別手段によって前記所定の入力手段が継続して押されている状態が判別されている間、前記第1オブジェクトに関連付けられた処理を前記第2オブジェクトに行わせる、請求項1記載のゲームプログラム。
【請求項4】
前記ゲームプログラムは、前記プロセサを、前記第1オブジェクトの指示判別手段によって前記第1オブジェクトを指示していることが判別されたとき、当該第1オブジェクトと前記第2オブジェクトとの前記仮想空間内における距離を判別する距離判別手段としてさらに機能させ、
前記第2オブジェクトの制御手段は、前記距離が所定範囲内であるとき、前記第1オブジェクトに関連付けられた処理を前記第2オブジェクトに行わせる、請求項1記載のゲームプログラム。
【請求項5】
前記ゲームプログラムは、前記プロセサを、前記第1オブジェクトの指示判別手段によって前記第1オブジェクトを指示していることが判別されたとき、当該第1オブジェクトと前記第2オブジェクトとの間に他のオブジェクトが存在するか否かを判別する存在判別手段として機能させ、
前記第2オブジェクトの制御手段は、前記存在判別手段によって他のオブジェクトが存在しないことが判別されたとき、前記第1オブジェクトに関連付けられた処理を前記第2オブジェクトに行わせる、請求項1記載のゲームプログラム。
【請求項6】
前記第2オブジェクトの制御手段は、前記第2オブジェクトを前記第1オブジェクトに近づけるように当該第2オブジェクトの移動を制御する、請求項1ないし5のいずれかに記載のゲームプログラム。
【請求項7】
前記ゲームプログラムは、前記プロセサを、前記距離に基づいて前記第2オブジェクトの移動速度を算出する速度算出手段としてさらに機能させ、
前記第2オブジェクトの制御手段は、前記速度算出手段によって算出された速度に基づいて前記第2オブジェクトの移動を制御する、請求項6記載のゲームプログラム。
【請求項8】
前記オブジェクト配置手段は、複数の前記第1オブジェクトを配置し、
前記第1オブジェクトの指示判別手段は、前記複数の第1オブジェクトのいずれが指示されているか否かをさらに判別し、
前記第2オブジェクトの制御手段は、指示されていることが判別された前記第1オブジェクト毎に、それぞれ異なる処理を第2オブジェクトに行わせる、請求項1記載のゲームプログラム。
【請求項9】
少なくとも1つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置であって、
前記仮想ゲーム空間内に第1オブジェクトと第2オブジェクトとを配置するオブジェクト配置手段、
前記ポインティングデバイスによって指示される画面上の位置を検出する指示位置検出手段、
前記指示位置検出手段によって検出された指示位置に基づいて、前記第1オブジェクトを指示しているか否かを判別する第1オブジェクトの指示判別手段、
前記第1オブジェクトの指示判別手段によって前記第1オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する操作状態判別手段、および
前記操作状態判別手段によって前記所定の入力手段が押されたことが判別されたとき、前記第1オブジェクトに関連付けられた処理を前記第2オブジェクトに行わせる第2オブジェクトの制御手段を備える、ゲーム装置。
【請求項1】
少なくとも1つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置で実行されるゲームプログラムであって、
前記ゲーム装置のプロセサを、
前記仮想ゲーム空間内に第1オブジェクトと第2オブジェクトとを配置するオブジェクト配置手段、
前記ポインティングデバイスによって指示される画面上の位置を検出する指示位置検出手段、
前記指示位置検出手段によって検出された指示位置に基づいて、前記第1オブジェクトを指示しているか否かを判別する第1オブジェクトの指示判別手段、
前記第1オブジェクトの指示判別手段によって前記第1オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する操作状態判別手段、および
前記操作状態判別手段によって前記所定の入力手段が押されたことが判別されたとき、前記第1オブジェクトに関連付けられた処理を前記第2オブジェクトに行わせる第2オブジェクトの制御手段として機能させる、ゲームプログラム。
【請求項2】
前記ポインティングデバイスは表示装置の周辺に設置される撮影対象を撮影するための撮像手段を含み、
前記指示位置検出手段は、前記撮像手段の撮影結果に基づいて前記ポインティングデバイスによって指示される画面上の位置を検出する、請求項1記載のゲームプログラム。
【請求項3】
前記操作状態判別手段は、前記所定の入力手段が継続して押されている状態であるか否かを判別し、
前記第2オブジェクトの制御手段は、前記操作状態判別手段によって前記所定の入力手段が継続して押されている状態が判別されている間、前記第1オブジェクトに関連付けられた処理を前記第2オブジェクトに行わせる、請求項1記載のゲームプログラム。
【請求項4】
前記ゲームプログラムは、前記プロセサを、前記第1オブジェクトの指示判別手段によって前記第1オブジェクトを指示していることが判別されたとき、当該第1オブジェクトと前記第2オブジェクトとの前記仮想空間内における距離を判別する距離判別手段としてさらに機能させ、
前記第2オブジェクトの制御手段は、前記距離が所定範囲内であるとき、前記第1オブジェクトに関連付けられた処理を前記第2オブジェクトに行わせる、請求項1記載のゲームプログラム。
【請求項5】
前記ゲームプログラムは、前記プロセサを、前記第1オブジェクトの指示判別手段によって前記第1オブジェクトを指示していることが判別されたとき、当該第1オブジェクトと前記第2オブジェクトとの間に他のオブジェクトが存在するか否かを判別する存在判別手段として機能させ、
前記第2オブジェクトの制御手段は、前記存在判別手段によって他のオブジェクトが存在しないことが判別されたとき、前記第1オブジェクトに関連付けられた処理を前記第2オブジェクトに行わせる、請求項1記載のゲームプログラム。
【請求項6】
前記第2オブジェクトの制御手段は、前記第2オブジェクトを前記第1オブジェクトに近づけるように当該第2オブジェクトの移動を制御する、請求項1ないし5のいずれかに記載のゲームプログラム。
【請求項7】
前記ゲームプログラムは、前記プロセサを、前記距離に基づいて前記第2オブジェクトの移動速度を算出する速度算出手段としてさらに機能させ、
前記第2オブジェクトの制御手段は、前記速度算出手段によって算出された速度に基づいて前記第2オブジェクトの移動を制御する、請求項6記載のゲームプログラム。
【請求項8】
前記オブジェクト配置手段は、複数の前記第1オブジェクトを配置し、
前記第1オブジェクトの指示判別手段は、前記複数の第1オブジェクトのいずれが指示されているか否かをさらに判別し、
前記第2オブジェクトの制御手段は、指示されていることが判別された前記第1オブジェクト毎に、それぞれ異なる処理を第2オブジェクトに行わせる、請求項1記載のゲームプログラム。
【請求項9】
少なくとも1つの入力手段を含むポインティングデバイスからの入力データを受け取り、当該入力データを用いて演算処理された後の仮想ゲーム空間内の様子を当該表示装置の画面上に表示するゲーム装置であって、
前記仮想ゲーム空間内に第1オブジェクトと第2オブジェクトとを配置するオブジェクト配置手段、
前記ポインティングデバイスによって指示される画面上の位置を検出する指示位置検出手段、
前記指示位置検出手段によって検出された指示位置に基づいて、前記第1オブジェクトを指示しているか否かを判別する第1オブジェクトの指示判別手段、
前記第1オブジェクトの指示判別手段によって前記第1オブジェクトを指示していることが判別されている状態で所定の入力手段が押されたか否かを判別する操作状態判別手段、および
前記操作状態判別手段によって前記所定の入力手段が押されたことが判別されたとき、前記第1オブジェクトに関連付けられた処理を前記第2オブジェクトに行わせる第2オブジェクトの制御手段を備える、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2007−300985(P2007−300985A)
【公開日】平成19年11月22日(2007.11.22)
【国際特許分類】
【出願番号】特願2006−129874(P2006−129874)
【出願日】平成18年5月9日(2006.5.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成19年11月22日(2007.11.22)
【国際特許分類】
【出願日】平成18年5月9日(2006.5.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]