図1を参照して、本発明の一実施形態に係るゲームシステム1について説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、据置型ゲーム装置を一例にして、本発明のゲームシステム1について説明する。
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作情報を与えるコントローラ7によって構成される。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される送信データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
コントローラ7は、その内部に備える通信部75(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて送信データを無線送信する。コントローラ7は、2つのコントロールユニット(コアユニット70およびサブユニット76)が屈曲自在な接続ケーブル79を介して互いに接続されて構成されており、主にモニタ2に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コアユニット70およびサブユニット76は、それぞれ複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コアユニット70は、当該コアユニット70から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール8Lおよび8Rが設置される。これらLEDモジュール8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。なお、本実施例では、コアユニット70とサブユニット76を屈曲自在なケーブルで接続したが、サブユニット76に無線ユニットを搭載することで、接続ケーブル79をなくすこともできる。例えば、無線ユニットとしてBluetooth(登録商標)ユニットをサブユニット76に搭載することで、サブユニット76からコアユニット70へ操作データを送信することが可能になる。
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35が接続される。また、メモリコントローラ31には、所定のバスを介して、コントローラI/F(インターフェース)36、ビデオI/F37、外部メモリI/F38、オーディオI/F39、およびディスクI/F41が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ2a、およびディスクドライブ40が接続されている。
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F36は、例えば4つのコントローラI/F36a〜36dで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F36を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの送信データを受信し、コントローラI/F36を介して当該送信データをCPU30へ出力する。ビデオI/F37には、モニタ2が接続される。外部メモリI/F38には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F39に出力する。
次に、図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の外観構成を示す斜視図である。図4は、図3のコントローラ7の接続ケーブル79をコアユニット70から脱着する状態を示す斜視図である。
図3において、コントローラ7は、コアユニット70とサブユニット76とが接続ケーブル79で接続されて構成されている。コアユニット70は、ハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。一方、サブユニット76は、ハウジング77を有しており、当該ハウジング77に複数の操作部78が設けられている。そして、コアユニット70とサブユニット76とは、接続ケーブル79によって接続されている。
図4において、接続ケーブル79の一方端にはコアユニット70のコネクタ73に着脱自在なコネクタ791が設けられており、接続ケーブル79の他方端は固定的にサブユニット76と接続されている。そして、接続ケーブル79のコネクタ791は、コアユニット70の後面に設けられたコネクタ73と嵌合し、コアユニット70とサブユニット76とが当該接続ケーブル79を介して接続される。
図5および図6を参照して、コアユニット70について説明する。なお、図5は、コアユニット70の上面後方から見た斜視図である。図6は、コアユニット70を下面後方から見た斜視図である。
図5および図6において、コアユニット70は、例えばプラスチック成型によって形成されたハウジング71を有している。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー72aの代わりに設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、Xボタン、Yボタン、およびBボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図5に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コアユニット70から受信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、プレイヤがコアユニット70を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばAボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コアユニット70が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコアユニット70の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング70の後面には、コネクタ73が設けられている。コネクタ73は、例えば32ピンのエッジコネクタであり、接続ケーブル79のコネクタ791と嵌合して接続するために利用される。
次に、図7を参照して、コアユニット70の内部構造について説明する。なお、図7(a)は、コアユニット70の上筐体(ハウジング71の一部)を外した状態を示す斜視図である。図7(b)は、コアユニット70の下筐体(ハウジング71の一部)を外した状態を示す斜視図である。ここで、図7(b)に示す基板700は、図7(a)に示す基板700の裏面から見た斜視図となっている。
図7(a)において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、水晶振動子703、無線モジュール753、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751(図14参照)に接続される。また、無線モジュール753およびアンテナ754によって、コアユニット70がワイヤレスコントローラとして機能する。なお、水晶振動子703は、後述するマイコン751の基本クロックを生成する。
一方、図7(b)において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コアユニット70の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されおり、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。そして、操作ボタン72iが撮像情報演算部74の後方の基板700の下主面上に取り付けられていて、それよりさらに後方に、電池705が収容される。電池705とコネクタ73との間の基板700の下主面上には、バイブレータ704が取り付けられる。このバイブレータ704は、例えば振動モータやソレノイドであってよい。バイブレータ704が作動することによってコアユニット70に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
図8および図9を参照して、サブユニット76について説明する。なお、図8(a)はサブユニット76の上面図であり、図8(b)はサブユニット76の下面図であり、図8(c)はサブユニット76の左側面図である。図9は、サブユニット76の上面前方から見た斜視図である。
図8および図9において、サブユニット76は、例えばプラスチック成型によって形成されたハウジング77を有している。ハウジング77は、その前後方向を長手方向とし、サブユニット76において最太部となる頭部を前方に形成した流線型の立体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
ハウジング77上面の上記最太部近傍に、スティック78aが設けられる。スティック78aは、ハウジング77上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部である。例えば、プレイヤがスティック先端を360°任意の方向に傾倒することによって任意の方向や位置を指定することができ、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
なお、スティック78aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。以下、図10〜図13を参照して、方向入力操作に応じて操作信号を出力する操作部がサブユニット76に設けられた第1〜第5の変形例を説明する。
第1の変形例として、図10に示すように、コアユニット70に設けられている十字キー72aと同様の十字キー78fを、上記スティック78aの代わりにサブユニット76に設けてもかまわない。第2の変形例として、図11に示すように、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力するスライドパッド78gを、上記スティック78aの代わりにサブユニット76に設けてもかまわない。第3の変形例として、図12に示すように、タッチパッド78hを、上記スティック78aの代わりにサブユニット76に設けてもかまわない。第4の変形例として、図13に示すように、少なくとも4つの方向(前後左右)をそれぞれ示すボタン78i〜78lを設け、プレイヤによって押下されたボタン78i〜78lに応じて操作信号を出力する操作部を上記スティック78aの代わりにサブユニット76に設けてもかまわない。第5の変形例として、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記スティック78aの代わりにサブユニット76に設けてもかまわない。
ハウジング77上面のスティック78aより後面側およびハウジング77の前面に、複数の操作ボタン78b〜78eが設けられる。操作ボタン78b〜78eは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン78b〜78eに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン78b〜78eには、XボタンおよびYボタン等としての機能が割り当てられる。これら操作ボタン78b〜78eは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図8および図9に示した配置例では、操作ボタン78bおよび78cは、ハウジング77上面の中央左右方向に沿って並設されている。また、操作ボタン78dおよび78eは、ハウジング77前面の上下方向に沿って並設されている。
次に、図14を参照して、コントローラ7の内部構成について説明する。なお、図14は、コントローラ7の構成を示すブロック図である。
図14において、コアユニット70は、上述した操作部72および撮像情報演算部74の他に、その内部に通信部75および加速度センサ701を備えている。
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コアユニット70の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コアユニット70のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。しかしながら、ハウジング71は、サブユニット76とは屈曲自在な接続ケーブル79によって接続されているため、サブユニット76の方向や位置を変更しても撮像情報演算部74の撮像方向が変化することはない。後述により明らかとなるが、この撮像情報演算部74から出力される処理結果データに基づいて、コアユニット70の位置や動きに応じた信号を得ることができる。
加速度センサ701は、コアユニット70の上下方向、左右方向および前後方向の3軸でそれぞれ加速度を検知する加速度センサである。なお、加速度センサ701は、必要な操作信号の種類によっては、上下方向、左右方向の2軸でそれぞれ加速度を検出する加速度センサが用いられてもかまわない。加速度センサ701が検知した加速度を示すデータは、通信部75へ出力される。なお、加速度センサ701は、典型的には静電容量式の加速度センサが用いられるが、他の方式の加速度センサやジャイロセンサを用いてもかまわない。この加速度センサ701から出力される加速度データに基づいて、コアユニット70の動きを検出することができる。
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。
コアユニット70に設けられた操作部72からの操作信号(コアキーデータ)、加速度センサ701からの加速度信号(加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。また、接続ケーブル79を介して、サブユニット76に設けられた操作部78からの操作信号(サブキーデータ)は、マイコン751に出力される。マイコン751は、入力した各データ(コアキーデータ、サブキーデータ、加速度データ、処理結果データ)を受信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から受信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥースで構成される通信部75の送信間隔は5msである。マイコン751は、受信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。つまり、コアユニット70に設けられた操作部72からのコアキーデータ、サブユニット76に設けられた操作部78からのサブキーデータ、加速度センサ701からの加速度データ、および撮像情報演算部74からの処理結果データがコアユニット70から送信される。そして、ゲーム装置3の受信ユニット6でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(コアキーデータ、サブキーデータ、加速度データおよび処理結果データ)を取得する。そして、ゲーム装置3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。なお、加速度データ及び/又は処理結果データは、第1操作データの一例であり、サブキーデータは第2操作データの一例である。
図15に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、プレイヤは、一方の手(例えば右手)でコアユニット70を把持し(図16および図17参照)、他方の手(例えば左手)でサブユニット76を把持する(図19参照)。そして、プレイヤは、コアユニット70の前面(撮像情報演算部74が撮像する光の入射口側)がモニタ2に向くようにコアユニット70を把持する。一方、モニタ2の表示画面近傍には、2つのLEDモジュール8Lおよび8Rが設置される。これらLEDモジュール8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。
プレイヤがその前面がモニタ2に向くようにコアユニット70を把持することによって、撮像情報演算部74には2つのLEDモジュール8Lおよび8Rが出力した赤外光が入射する。そして、赤外線フィルタ741およびレンズ742を介して、入射した赤外光を撮像素子743が撮像し、当該撮像画像を画像処理回路744が処理する。ここで、撮像情報演算部74では、LEDモジュール8Lおよび8Rから出力される赤外線成分を検出することで、上記撮像画像における当該LEDモジュール8Lおよび8Rの位置(対象画像の位置)や面積情報を取得する。具体的には、画像処理回路744は、撮像素子743が撮像した画像データを解析して、まず面積情報からLEDモジュール8Lおよび8Rからの赤外光ではあり得ない画像を除外し、さらに輝度が高い点をLEDモジュール8Lおよび8Rそれぞれの位置として判別する。そして、撮像情報演算部74は、判別されたそれらの輝点の重心位置等の位置情報を取得し、上記処理結果データとして出力する。ここで、上記処理結果データである位置情報は、撮像画像における所定の基準点(例えば、撮像画像の中央や左上隅)を原点とした座標値として出力するものでもよく、所定のタイミングにおける輝点位置を基準点として、当該基準位置からの現在の輝点位置の差をベクトルとして出力するものでもよい。つまり、上記対象画像の位置情報は、撮像素子743が撮像した撮像画像に対して所定の基準点を設定した場合に、当該基準点に対する差として用いられるパラメータである。このような処理結果データをゲーム装置3へ送信することによって、ゲーム装置3では、基準からの上記位置情報の差に基づいて、LEDモジュール8Lおよび8Rに対する撮像情報演算部74すなわちコアユニット70の動き、姿勢、位置等に応じた信号の変化量を得ることができる。具体的には、コアユニット70が動かされることによって、通信部75から送信される画像内の高輝度点の位置が変化するため、高輝度点の位置の変化に対応させた方向入力や座標入力を行うことで、コアユニット70の移動方向に沿った方向入力や座標入力を行うことができる。なお、後述するゲーム処理動作例では、撮像情報演算部74が撮像画像におけるLEDモジュール8Lおよび8Rの対象画像それぞれの重心位置の座標を取得し、上記処理結果データとして出力する例を用いる。
このように、コアユニット70の撮像情報演算部74によって、固定的に設置されたマーカ(実施例では、2つのLEDモジュール8Lおよび8Rからの赤外光)を撮像することによって、ゲーム装置3におけるゲーム処理において、コアユニット70から出力されるデータを処理することによって、コントローラの動き、姿勢、位置等に対応した操作が可能となり、ボタンを押下するような操作ボタンや操作キーとは異なった直感的な操作入力となる。また、上述したように上記マーカは、モニタ2の表示画面近傍に設置されているため、マーカに対する位置をモニタ2の表示画面に対するコアユニット70の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コアユニット70の動き、姿勢、位置等による処理結果データは、モニタ2の表示画面に直接作用する操作入力として用いることができる。
図16および図17を参照して、プレイヤがコアユニット70を一方の手で把持した状態について説明する。なお、図16は、プレイヤがコアユニット70を右手で把持した状態をコアユニット70の前面側から見た一例である。図17は、プレイヤがコアユニット70を右手で把持した状態をコアユニット70の左側面側から見た一例である。
図16および図17に示すように、コアユニット70は、全体として大人や子供の片手で把持可能な大きさである。そして、プレイヤの親指をコアユニット70の上面(例えば、十字キー72a付近)に添え、プレイヤの人差し指をコアユニット70下面の凹部(例えば、操作ボタン72i付近)に添えたとき、コアユニット70の前面に設けられている撮像情報演算部74の光入射口がプレイヤの前方方向に露出する。なお、このようなコアユニット70に対する把持状態は、プレイヤの左手であっても同様に行えることは言うまでもない。
このように、コアユニット70は、プレイヤが片手で把持した状態で十字キー72aや操作ボタン72i等の操作部72を容易に操作することができる。さらに、プレイヤがコアユニット70を片手で把持したとき、当該コアユニット70の前面に設けられている撮像情報演算部74の光入射口が露出するため、上述した2つのLEDモジュール8Lおよび8Rからの赤外光を容易に当該光入射口から取り入れることができる。つまり、プレイヤは、コアユニット70が有する撮像情報演算部74の機能を阻害することなくコアユニット70を片手で把持することができる。つまり、プレイヤがコアユニット70を把持した手を表示画面に対して動かすことによって、コアユニット70は、プレイヤの手の運動が表示画面に直接作用する操作入力をさらに備えることができる。
ここで、図18に示すように、LEDモジュール8Lおよび8Rは、それぞれ視野角θ1を有している。また、撮像素子743は、視野角θ2を有している。例えば、LEDモジュール8Lおよび8Rの視野角θ1は共に34°(半値角)であり、撮像素子743の視野角θ2は41°である。そして、撮像素子743の視野角θ2の中にLEDモジュール8Lおよび8Rが共に存在し、LEDモジュール8Lの視野角θ1の中でかつLEDモジュール8Rの視野角θ1の中に撮像素子743が存在するとき、ゲーム装置3は、2つのLEDモジュール8Lおよび8Rによる高輝度点に関する位置データを用いてコアユニット70の位置を検出する。
一方、撮像素子743の視野角θ2の中に1つのLEDモジュール8Lまたは8Rだけが存在するとき、またはLEDモジュール8Lの視野角θ1およびLEDモジュール8Rの視野角θ1の何れか一方の中に撮像素子743が存在するとき、2つのLEDモジュール8Lおよび8Rの何れか一方だけによる高輝度点に関する位置データを用いてコアユニット70の位置を検出する。
次に、図19を参照して、プレイヤがサブユニット76を一方の手で把持した状態について説明する。なお、図19は、プレイヤがサブユニット76を左手で把持した状態をサブユニット76の右側面側から見た一例である。
図19に示すように、サブユニット76は、全体として大人や子供の片手で把持可能な大きさである。例えば、プレイヤの親指をサブユニット76の上面(例えば、スティック78a付近)に添え、プレイヤの人差し指をサブユニット76前面(例えば、操作ボタン78dおよび78e付近)に添え、プレイヤの中指、薬指、および小指をサブユニット76下面に添えるように、サブユニット76を把持することが可能である。なお、このようなサブユニット76に対する把持状態は、プレイヤの右手であっても同様に行えることは言うまでもない。このように、サブユニット76は、プレイヤが片手で把持した状態でスティック78aや操作ボタン78dおよび78e等の操作部78を容易に操作することができる。
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図20を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図20は、ゲーム装置3のメインメモリ33に記憶される主なデータを示す図である。
図20に示すように、メインメモリ33には、操作情報Da、操作状態情報Db、および操作対象情報Dc等が記憶される。なお、メインメモリ33には、図20に示す情報に含まれるデータの他、ゲームに登場するプレイヤキャラクタに関するデータ(プレイヤキャラクタの画像データや位置データ等)やゲーム空間に関するデータ(地形データ等)等、ゲーム処理に必要なデータが記憶される。
操作情報Daは、コントローラ7から送信データとして送信されてくる一連の操作情報であり、最新の操作情報に更新される。操作情報Daには、上述の処理結果データに相当する第1座標データDa1および第2座標データDa2が含まれる。第1座標データDa1は、撮像素子743が撮像した撮像画像に対して、2つのマーカ(LEDモジュール8Lおよび8R)のうちの一方の画像の位置(撮像画像内における位置)を表す座標のデータである。第2座標データDa2は、他方のマーカの画像の位置(撮像画像内における位置)を表す座標のデータである。例えば、マーカの画像の位置は、撮像画像におけるxy座標系によって表される。
また、操作情報Daには、撮像画像から得られる処理結果データの一例の座標データ(第1座標データDa1および第2座標データDa2)の他、操作部78から得られるサブキーデータDa3、操作部72から得られるコアキーデータDa4、および加速度センサ701から得られる加速度データDa5等が含まれる。なお、ゲーム装置3に備える受信ユニット6は、コントローラ7から所定間隔例えば5msごとに送信される操作情報Daを受信し、受信ユニットに備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である例えば1フレーム毎(1/60秒)に読み出され、その最新の情報がメインメモリ33に記憶される。
操作状態情報Dbは、コントローラ7の操作状態を撮像画像に基づいて判断した情報である。操作状態情報Dbは、撮像画像に含まれる対象画像(マーカ)の位置や向きを示すデータであり、具体的には方向データDb1および中点データDb2を含む。方向データDb1は、第1座標データDa1から第2座標データDa2への方向を示すデータである。ここでは、方向データDb1は、第1座標データDa1の位置を始点とし第2座標データDa2の位置を終点とするベクトルのデータとする。中点データDb2は、第1座標データDa1と第2座標データDa2との中点の座標を示す。ここで、2つのマーカ(LEDモジュール8Lおよび8R)の画像を1つの対象画像としてみた場合、中点データDb2は、対象画像の位置を示すことになる。
操作対象情報Dcは、画面上またはゲーム空間内における操作対象の姿勢および位置や指示位置を示す情報である。ここで、操作対象とは、画面に表示されているオブジェクトや、仮想ゲーム空間に登場するオブジェクトの他、3次元の仮想ゲーム空間が構築される場合には、当該仮想ゲーム空間を画面に表示するための仮想カメラであってもよい。また、操作対象情報Dcには、姿勢データDc1、対象位置データDc2、および指示位置データDc3が含まれる。姿勢データDc1は、操作対象の姿勢を示すデータである。対象位置データDc2は、操作対象のゲーム空間における位置、または、画面上における位置を示すデータである。指示位置データDc3は、第1座標データDa1および第2座標データDa2から得られるコアユニット70によって指し示されるモニタ2の画面上の位置を示すデータである。
次に、図21を参照して、ゲーム装置3において行われるゲーム処理の詳細を説明する。なお、図21は、ゲーム装置3において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図21に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図21に示すフローチャートにおいては、ゲーム処理のうち、コントローラ7に関するゲーム操作に基づいて行われるゲーム処理について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図21では、CPU30が実行する各ステップを「S」と略称する。
図21において、CPU30は、コントローラ7から受信した操作情報を取得し(ステップ51)、処理を次のステップに進める。そして、CPU30は、操作情報を操作情報Daとしてメインメモリ33に記憶する。ここで、ステップ51で取得される操作情報には、LEDモジュール8Lおよび8Rの撮像画像内における位置を示す座標データ(第1座標データDa1および第2座標データDa2)の他、コアユニット70の操作部72やサブユニット76の操作部78がどのように操作されたか示すデータ(サブキーデータDa3およびコアキーデータDa4)、および、加速度センサ701が検出した加速度を示すデータ(加速度データDa5)が含まれている。ここでは、通信部75は、所定の時間間隔例えば5ms間隔で操作情報をゲーム装置3へ送信する。そして、CPU30は、1フレーム毎に操作情報を利用するものとする。したがって、図21に示すステップ51〜ステップ58の処理ループは、1フレーム毎に繰り返し実行される。
次に、CPU30は、操作状態情報を算出し(ステップ52)、処理を次のステップに進める。操作状態情報の算出処理においては、コントローラ7から送信され記憶された第1座標データDa1および第2座標データDa2に基づいて、コアユニット70の操作状態(コアユニット70の動き、位置、姿勢等)が算出される。
上記ステップ52において、CPU30は、第1座標データDa1から第2座標データDa2への方向データDb1を算出する。具体的には、CPU30は、第1座標データDa1および第2座標データDa2を参照して、第1座標データDa1の位置を始点とし第2座標データDa2の位置を終点とするベクトルを算出する。そして、CPU30は、算出されたベクトルのデータを、方向データDb1としてメインメモリ33に記憶する。方向データDb1と所定の基準方向との差によって、コアユニット70の撮像面に垂直な方向を軸とする回転を算出することができる。
また、CPU30は、第1座標データDa1と第2座標データDa2との中点を示す中点データDb2を算出する。具体的には、CPU30は、第1座標データDa1および第2座標データDa2を参照して、当該中点の座標を算出する。そして、CPU30は、算出された中点の座標のデータを、中点データDb2としてメインメモリ33に記憶する。ここで、中点データDb2は、撮像画像内における対象画像(LEDモジュール8Lおよび8R)の位置を示している。中点データDb2と所定の基準位置との差によって、コアユニット70の位置の変化による画像位置の変化を算出することができる。
次に、CPU30は、指示位置データを算出し(ステップ53)、処理を次のステップに進める。CPU30は、上記ステップ52で算出した方向データDb1および中点データDb2を用いて、指示位置データDc3が算出される。
例えば、モニタ2の上面に2つのLEDモジュール8Lおよび8Rを設置し(図15参照)、上面が上方向を向いたコアユニット70を用いてプレイヤがモニタ2の画面の中央を指し示した場合(撮像情報演算部74の撮像画像の中央に画面中央が撮像されている状態)を考える。このとき、撮像情報演算部74の撮像画像において、対象画像の中点(LEDモジュール8Lおよび8Rの中点)位置と指示位置(画面中央)とが一致しない。具体的には、上記撮像画像における対象画像の位置は撮像画像の中心から上方の位置となる。このような位置に対象画像が位置する場合に、画面中央を指示するという基準位置の設定がなされていれば、コアユニット70の移動に対応して、撮像画像中の対象画像の位置も移動する(移動方向は逆方向となる)ので、撮像画像中の対象画像の位置の移動に対応させて画面内の指示位置を移動させる処理を行い、コアユニット70の移動方向に対応した画面内の位置を指示することができる。ここで、基準位置の設定は、上記のようにあらかじめユーザが画面の所定位置を支持し、そのときの対象画像の位置を基準となる指示位置と対応させて記憶しておくようにしてもよいし、対象画像と画面との位置関係が固定的であれば、あらかじめ設定されていても良い。このような指示位置は、中点データDb2からモニタ2の画面上の座標(指示位置データDc3)を算出する関数を用いて算出される。この関数は、ある撮像画像から算出される中点座標の値を、当該撮像画像が撮像される時のコアユニット70によって指し示される画面上の位置(指示位置)を表す座標に変換するものである。この関数によって、中点座標から画面上の指示位置を算出することができる。なお、中点座標をゲーム空間内における位置を表す座標に変換する場合には、上記関数によって算出される画面上の位置を、当該画面上における位置に対応するゲーム空間内における位置にさらに変換すればよい。なお、画面上における位置に対応するゲーム空間内における位置とは、画面上における位置に表示されるゲーム空間内における位置である。
しかしながら、上面が上方向以外(例えば、右方向)を向いたコアユニット70を用いてプレイヤがモニタ2の画面の中央を指し示した場合、上記撮像画像における対象画像の位置は撮像画像の中心から上方以外(例えば、左方)の方向にずれた位置となる。つまり、コアユニット70の傾きによって、コアユニット70の移動方向と、画面内での指示位置の移動方向が一致しないことになる。そこで、方向データDb1に基づいて、中点データDb2を補正する。具体的には、ステップ52で算出された中点データDb2を、コアユニット70の上面が上方向を向いた状態であるとした場合における中点座標に補正する。より具体的には、上記基準位置の設定の際には方向データの基準も設定され、ステップ52で算出された中点データDb2を、方向データDb1と当該基準方向との角度差に応じた量だけ、撮像画像の中心を軸として中点データDb2が示す座標を回転移動させて補正する。そして、補正された中点データDb2を用いて上述したように指示位置データDc3を算出する。
次に、CPU30は、コントローラ7によって操作される操作対象を設定し(ステップ54)、処理を次のステップに進める。CPU30は、コントローラ7に設けられた各操作部、撮像情報演算部74、センサ等に対して、それぞれの操作対象を設定する。
一例として、操作対象は、ゲーム進行やプレイヤの操作に応じて適宜変更される。例えば、コアユニット70に設けられた撮像情報演算部74からの信号による操作対象を、上記指示位置を変換した仮想ゲーム世界内における位置に存在するオブジェクトとする。また、モニタ2に複数の選択肢からプレイヤの選択を促すメニュー画面を表示するとき、撮像情報演算部74からの信号による操作対象を、上記指示位置に表示されている選択肢とする。また、サブユニット76に設けられたスティック78aの操作対象を、仮想ゲーム世界に登場するオブジェクトのうち、現在モニタ2に表示されている何れかのオブジェクトとする。
他の例として、操作対象は、固定的に設定される。例えば、サブユニット76に設けられたスティック78aの操作対象を、仮想ゲーム空間に登場するプレイヤキャラクタに固定する。また、コアユニット70に設けられた撮像情報演算部74からの信号による操作対象を、モニタ2に表示されるカーソル(例えば、照準カーソル)や仮想ゲーム空間を画面に表示するための仮想カメラに固定する。なお、操作対象が固定的に設定される場合、処理ループ毎に繰り返し設定することが不要であるため、ステップ54は、ゲーム処理の初期設定においてのみ実行してもかまわない。
次に、CPU30は、操作対象に対する処理を行う(ステップ55)。そして、CPU30は、ステップ55で処理を行わなかった他の操作情報Daに応じた処理を行い(ステップ56)、処理を次のステップに進める。ステップ55において、CPU30は、ステップ54で設定した操作対象に対して、操作情報Daに応じた処理を行い、姿勢データDc1や対象位置データDc2を更新する。例えば、スティック78aの操作対象がプレイヤキャラクタや仮想カメラである場合、当該スティック78aのサブキーデータDa3に応じて、プレイヤキャラクタの位置を移動させたり、仮想カメラの位置を移動させたり、仮想カメラの方向を変化させたりする。また、コアユニット70に設けられた撮像情報演算部74の操作対象が照準カーソル、仮想カメラ、メニュー画面である場合、照準カーソルの位置を移動させたり、仮想カメラの方向を変化させたり、メニュー画面から選択肢を選択したりする。なお、操作情報Daに応じた処理の具体例については、後述する。
次に、CPU30は、表示処理を行い(ステップ57)、処理を次のステップに進める。CPU30は、メインメモリ33に記憶されている操作対象情報Dcやゲーム画像の生成に必要なデータ(プレイヤキャラクタの画像および位置データや地形データ等)を参照し、ゲーム画像を生成する。そして、CPU30は、生成した画像をモニタ2の画面に表示させる。
次に、CPU30は、ゲームを終了するか否かを判断する(ステップ58)。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件(例えば、プレイヤキャラクタの体力を示すパラメータが0になったこと等)が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。CPU30は、ゲームを終了しない場合に上記ステップ51に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
このように、コアユニット70の撮像情報演算部74によって固定的に設置されたマーカ(実施例では、2つのLEDモジュール8Lおよび8Rからの赤外光)を撮像することによって、当該マーカに対するコアユニット70の位置に応じた直感的な操作装置としての機能を実現することができる。つまり、ゲーム装置3におけるゲーム処理において、コアユニット70の位置をプレイヤの操作に応じた操作データとして用いることによって、ボタンを押下するような操作ボタンや操作キーとは異なった操作入力となる。また、上述したように上記マーカは、モニタ2の表示画面近傍に設置されているため、マーカに対する位置をモニタ2の表示画面に対するコアユニット70の位置に換算することも容易に行うことができる。つまり、コアユニット70の位置や姿勢による操作データは、モニタ2の表示画面に直接作用する操作入力として用いることができる。
ここで、上述したコントローラ7を用いてゲーム操作するゲーム例について説明する。第1の例は、コントローラ7を用いてゲーム操作するシューティングゲームである。なお、図22は、第1の例として、ゲーム装置3がシューティングゲームを実行する際にモニタ2に表示されるゲーム画像例を示す図である。
図22において、モニタ2の表示画面には3次元の仮想ゲーム空間Sの一部が表示されている。そして、コントローラ7の操作に応じて動作するゲームオブジェクトとして、表示画面には、プレイヤキャラクタPの一部および当該プレイヤキャラクタPが所持するガンGの一部が表示されている。また、表示画面に表示される仮想ゲーム空間Sは、プレイヤキャラクタPの前方となる視界が表現され、図22の一例では敵キャラクタEがシューティング目標として表示されている。そして、プレイヤキャラクタPがガンGで射撃した場合の照準が、照準カーソルTとして表示画面に表示される。
このようなゲーム画像がモニタ2に表示されるシューティングゲームにおいて、プレイヤは、一方の手でコアユニット70を他方の手でサブユニット76を操作して(図15参照)ゲームを進行する。そして、サブユニット76に設けられたスティック78aの操作対象がプレイヤキャラクタPに固定されている。また、コアユニット70に設けられた撮像情報演算部74の操作対象が照準カーソルTに固定されている。このように操作対象を設定すると、プレイヤがサブユニット76に設けられたスティック78aを傾倒することによって、当該傾倒方向に応じて仮想ゲーム空間S内をプレイヤキャラクタPが移動する。また、プレイヤがコアユニット70を把持した手を表示画面に対して動かすことによって、当該モニタ2(LEDモジュール8Lおよび8R)に対する指示位置が設定され、当該指示位置へ照準カーソルTが移動する。そして、プレイヤがコアユニット70に設けられた操作ボタン72i(図6参照)を押下することによって、プレイヤキャラクタPが所持するガンGが照準カーソルTの位置に対応した仮想3次元空間位置に向かって射撃を行い、射撃位置に敵キャラクタEが存在する場合には、敵キャラクタEがダメージを受ける、破壊される等の処理が行われる。
つまり、プレイヤは、サブユニット76に設けられたスティック78aをプレイヤキャラクタPの移動指示に用いながら、コアユニット70をあたかもシューティングゲームのガンのように用いることができるため、シューティングゲームの興趣が一層増す。また、モニタ2の画面に対してコアユニット70で指し示す位置を移動させる方向と照準カーソルTが移動する方向とが同じであるため、プレイヤが直感的に操作方向を理解しやすい。そして、プレイヤキャラクタPを移動させる操作と照準カーソルTを移動させる操作とがそれぞれ別の手で把持されたユニットを用いて行われるため、プレイヤの操作動作がそれぞれ独立した思考で行える。例えば、プレイヤキャラクタPの移動に応じて表示画面に表示される仮想ゲーム空間Sが移り変わっていくため、仮想ゲーム空間S内におけるプレイヤが注目する位置付近(例えば、物陰から飛び出してくる敵キャラクタEに注目)に照準を常に位置させることが難しいことがある。しかしながら、一方の手の動作(例えば左手の親指)でプレイヤキャラクタPを移動させながら、コアユニット70で指し示す位置が上記注目位置となるように他方の腕の動作(例えば、右腕)で調整できるため、コントローラ7自体の操作の自由度が著しく向上し、臨場感のあるシューティングゲームを実現できる。また、プレイヤが行うプレイヤキャラクタPを移動させる方向指示操作と照準カーソルTを移動させる方向指示操作とが互いに影響し合うことがないため、プレイヤは安定した2つの方向指示操作を行うことができる。つまり、コントローラ7を用いることによって、プレイヤの左右の手が自由になると同時に、物理的に1つのコントローラでは操作できなかった自由度の高い新たな操作が可能になる。また、利き手に応じて2つのユニットを使い分けることも可能となる。
図23を参照して、上述したコントローラ7を用いてゲーム操作する第2の例について説明する。なお、図23は、第2の例としてゲーム装置3がゲーム画像を作成する際の仮想カメラCの状態を示す図である。
図23において、仮想カメラCから見たゲームフィールドFの画像がゲーム画像として作成される。そして、上記第1の例と同様に、プレイヤが一方の手でコアユニット70を他方の手でサブユニット76を操作してゲームを進行する。そして、サブユニット76に設けられたスティック78aの操作対象がプレイヤキャラクタPに固定されている。また、コアユニット70に設けられた撮像情報演算部74の操作対象が仮想カメラCに固定されている。このように操作対象を設定すると、プレイヤがサブユニット76に設けられたスティック78aを傾倒することによって、当該傾倒方向に応じてゲームフィールドF上をプレイヤキャラクタPが移動する。また、プレイヤがコアユニット70を把持した手を表示画面に対して動かすことによって、当該モニタ2の画面に対する指示位置P1が設定される。そして、画面上の指示位置P1を、当該画面上における位置に対応するゲーム空間内における位置P2にさらに変換する。このとき、仮想カメラCは、その注視点が位置P2に追従するように撮像方向を図示a方向へ変化させる。つまり、プレイヤがコアユニット70を把持した手を表示画面に対して動かすことによって、当該モニタ2を指し示す位置に追従して仮想カメラCの注視点が移動する。この場合、コアユニット70の操作によって、画面の表示状態が変わってしまうため、仮想3次元空間内における指示位置も移動してしまうことになる。したがって、コアユニット70によって仮想カメラCを操作する場合には、他の操作キー等の操作と組み合わせ、キーを押した瞬間に指示されていた位置に注視点が向かうようにカメラを移動するという処理を行う。また、指示位置そのものを注視点とするのではなく、キーを押し続けている間の指示位置の移動量を算出し、当該移動量に応じて注視点が移動するようにカメラを移動させるという処理を行うようにしてもよい。
このような操作によって、プレイヤは、サブユニット76に設けられたスティック78aをプレイヤキャラクタPの移動指示に用いながら、コアユニット70を向けたゲームフィールドFの位置を注視することができる。また、画面中央に常にシューティングの照準が設定されているゲーム等では、第2の例の操作によってコアユニット70が指し示す位置に照準が追従することになる。さらに、従来、プレイヤキャラクタPの向きを変えるためには、スティック等の操作部を倒し続ける必要があり、素早く方向転換ができない。また、スティックを傾倒する方向と画面内の方向との関係がプレイヤによって異なるため、プレイヤの好みに応じた方向設定が可能となるリバースモードを設ける必要がある。しかしながら、第2の例では、仮想カメラCの注視点が常にプレイヤキャラクタPが注目する位置に設定されるゲーム等において、コアユニット70の動きに応じた操作入力によって注視点が移動する速度を調整すれば、必要に応じてプレイヤキャラクタPの素早い方向転換が可能となり、直感的な入力であるためリバースモードが不要となる。
次に、図24を参照して、上述したコントローラ7を用いてゲーム操作する第3の例について説明する。第3の例は、コントローラ7を用いてゲーム操作するロールプレイングゲームである。なお、図24は、第3の例として、ゲーム装置3がロールプレイングゲームを実行する際にモニタ2に表示されるゲーム画像例を示す図である。
図24において、モニタ2の表示画面には3次元の仮想ゲーム空間Sの一部が表示されている。そして、コントローラ7の操作に応じて動作するゲームオブジェクトとして、表示画面には、プレイヤキャラクタPおよびメニューMが表示されている。メニューMは、プレイヤキャラクタPが仮想ゲーム空間S内で行動する複数の選択肢M1〜M7が記述されており、複数の選択肢M1〜M7からプレイヤの選択を促すメニュー画面である。
このようなゲーム画像がモニタ2に表示されるロールプレイングゲームにおいて、上記第1の例と同様に、プレイヤが一方の手でコアユニット70を他方の手でサブユニット76を操作してゲームを進行する。そして、サブユニット76に設けられたスティック78aの操作対象がプレイヤキャラクタPに固定されている。また、コアユニット70に設けられた撮像情報演算部74の操作対象が現在の指示位置に応じた選択肢M1〜M7の何れかに設定される。このように操作対象を設定すると、プレイヤがサブユニット76に設けられたスティック78aを傾倒することによって、当該傾倒方向に応じて仮想ゲーム空間S内をプレイヤキャラクタPが移動する。また、プレイヤがコアユニット70を把持した手を表示画面に対して動かすことによって当該モニタ2に対する指示位置が設定され、当該指示位置に表示されている選択肢M1〜M7の何れか(図24では、選択肢M1)に対して選択カーソルCsが表示される。そして、プレイヤがコアユニット70に設けられた操作ボタン72iを押下することによって、現在選択されている選択肢M1〜M7の何れか(つまり、選択カーソルCsが表示されている選択肢)がプレイヤキャラクタPの行動として決定される。
このような操作によって、プレイヤは、サブユニット76に設けられたスティック78aをプレイヤキャラクタPの移動指示に用いながら、複数の選択肢M1〜M7からコアユニット70で指し示してメニューを選択することができる。従来のゲーム操作では、コントローラによるメニュー選択に時間を要し、しかも方向キー等による入力が必要とするため、リアルタイムでゲームが進行するゲームの場合、メニューの選択肢を選択している間にプレイヤキャラクタの操作ができずに操作を失敗することがある。しかしながら、第3の例では、一方の手でキャラクタの操作を行い、他方の手で直接的に項目の選択ができるので、時間的なロスが少なく快適な操作ができる。
なお、上述した第1〜第3の例は、本発明を実現することによって大きな効果が得られるゲーム例に過ぎず、本発明がこれらのゲームに限定されないことは言うまでもない。例えば、コアユニット70によって指し示されることによって設定される指示位置に対応するゲーム空間内における位置へ、プレイヤキャラクタや他のゲームオブジェクトを移動させてもかまわない。
なお、上述した説明では、コントローラ7とゲーム装置3とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置3とがケーブルを介して電気的に接続されてもかまわない。この場合、コアユニット70に接続されたケーブルをゲーム装置3の接続端子に接続する。
また、コントローラ7を構成するコアユニット70およびサブユニット76のうち、コアユニット70のみに通信部75を設けたが、サブユニット76に受信ユニット6へ送信データを無線送信する通信部を設けてもかまわない。また、コアユニット70およびサブユニット76それぞれに上記通信部を設けてもかまわない。例えば、コアユニット70およびサブユニット76に設けられた通信部がそれぞれ受信ユニット6へ送信データを無線送信してもいいし、サブユニット76の通信部からコアユニット70へ送信データを無線送信してコアユニット70の通信部75で受信した後、コアユニット70の通信部75がサブユニット76の送信データと共にコアユニット70の送信データを受信ユニット6へ無線送信してもいい。これらの場合、コアユニット70とサブユニット76とを電気的に接続する接続ケーブル79が不要となり、2つのユニットが完全に分離されるため、2人で操作することが可能となる。
また、コントローラ7から無線送信される送信データを受信する受信手段として、ゲーム装置3の接続端子に接続された受信ユニット6を用いて説明したが、ゲーム装置3の本体内部に設けられた受信モジュールによって当該受信手段を構成してもかまわない。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU30に出力される。
また、コアユニット70本体の動きに応じて変化する信号(処理結果データ)を出力する検知部の一例として、撮像情報演算部74をコアユニット70に内蔵して説明したが、他の機構でもかまわない。例えば、コアユニット70は、上述したように加速度センサ701を内蔵しており、ジャイロセンサが用いられていることもあり得る。加速度センサやジャイロセンサは、コアユニット70の動きや姿勢を検出することが可能であり、これらの検出信号を用いればコアユニット70本体の動きに応じて変化する信号を出力する検知部として用いることができる。この場合、コアユニット70に内蔵された撮像情報演算部74を排除してもよいし、センサと撮像情報演算部の両者を組み合わせる構成としてもよい。
また、撮像情報演算部74をコアユニット70のみに設けたが、サブユニット76にも同様の撮像情報演算部を設け、双方のユニットでコントローラの移動に応じた直感的な操作を行うようにしてもよい。この場合、より自由度の高い入力操作が可能となる。また、上述した実施例では、コアユニット70とサブユニット76を1つのコントローラとして説明したが、サブユニット76の代わりにコアユニット70と同じ機能を備えた代替品でもよく例えばコアユニット70そのものを用いてもよい。この場合、コアユニット70を2つ利用することになり、コアユニット70を1つのコントローラと考えると2つのコントローラを利用していることになる。コアユニット70にはゲーム装置と通信するための通信部を備えるので、各コアユニット70がゲーム装置と通信し、ゲーム装置側では一方のコアユニット70から受け取った操作データと、他方のコアユニット70から受け取った操作データとに基づいてゲーム処理が行われる。
また、撮像素子743で撮像した画像データを解析してLEDモジュール8Lおよび8Rからの赤外光の位置座標やそれらの重心座標等を取得し、それらを処理結果データとしてコアユニット70内で生成してゲーム装置3へ送信する態様を説明したが、他の処理段階のデータをコアユニット70からゲーム装置3へ送信してもかまわない。例えば、撮像素子743が撮像した画像データをコアユニット70からゲーム装置3へ送信し、CPU30において上記解析処理を行って処理結果データを取得してもかまわない。この場合、コアユニット70に設けられた画像処理回路744が不要となる。また、上記画像データの解析途中のデータをコアユニット70からゲーム装置3へ送信してもかまわない。例えば、画像データから得られる輝度、位置、および面積等を示すデータをコアユニット70からゲーム装置3へ送信し、CPU30において残りの解析処理を行って処理結果データを取得してもかまわない。
また、上述した説明では、2つのLEDモジュール8Lおよび8Rからの赤外光を、コアユニット70の撮像情報演算部74の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、1つまたは3つ以上のLEDモジュールをモニタ2の近傍に設置し、それらのLEDモジュールからの赤外光を撮像情報演算部74の撮像対象としてもかまわない。また、モニタ2の表示画面自体や他の発光体(室内灯等)を撮像情報演算部74の撮像対象としてもかまわない。撮像対象とモニタ2の表示画面との配置関係に基づいて、当該表示画面に対するコアユニット70の位置を演算すれば、様々な発光体を撮像情報演算部74の撮像対象として用いることができる。
また、上述したコアユニット70およびサブユニット76の形状や、それらに設けられている操作部72および78の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、コアユニット70における撮像情報演算部74の位置(撮像情報演算部74の光入射口)は、ハウジング71の前面でなくてもよく、ハウジング71の外部から光を取り入れることができれば他の面に設けられてもかまわない。
このように、本発明のコントローラは、コアユニット70およびサブユニット76を共に操作に用いて、ゲームを楽しむことができる。ここで、コアユニット70は、撮像情報演算部74や加速度センサ701等のユニット本体の動きに応じた信号を出力する機能を有しており、サブユニット76は、プレイヤの方向入力操作に応じた信号を出力する機能を有している。例えば、コアユニット70とサブユニット76とが合体して一体となったコントローラを仮定した場合、ユニット本体の動きに応じた信号を出力するためには全体を動かすことが必要となり、方向入力操作に影響を与えてしまう。また、その逆の影響も生じてしまう。つまり、コアユニット70とサブユニット76とを合体させると、分離することにより実現していた自由度が著しく損なわれてしまう。したがって、コアユニット70およびサブユニット76は、従来のゲーム機用コントローラを単に左右に分離できるように構成しただけでなく、プレイヤの左右の手が自由になると同時に合体型では操作できなかった新たな操作が可能となっている。また、コントローラ自体の操作の自由度が著しく向上しているため、臨場感のあるゲーム操作を実現できる。