説明

ゲーム装置およびゲームプログラム

【課題】加速度センサとジャイロセンサの双方を用いるゲームにおいて、新規な制御によってゲームが実行できるゲーム装置を提供すること。
【解決手段】加速度センサおよびジャイロセンサを少なくとも備えた入力装置から加速度データおよび角速度データを少なくとも含む操作データを取得する。次に、角速度データに基づいて、仮想空間内の所定のオブジェクトの姿勢および位置の少なくとも1つを制御する。そして、角速度データに基づく所定のオブジェクトの姿勢および位置の少なくとも1つが制御されているときに、加速度データが所定の条件を満たしたか否かを判定する。その結果、加速度データが所定の条件を満たしていれば所定のオブジェクトに所定の動作を開始させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ジャイロセンサと加速度センサを利用したゲームを実行するゲーム装置およびゲームプログラムに関し、より特定的には、入力装置に加えられた動きを検出してゲーム処理に反映するゲーム装置およびゲームプログラムに関する。
【背景技術】
【0002】
従来より、ジャイロセンサと加速度センサを備えた、ゲーム装置の入力制御装置が知られている(例えば、特許文献1)。当該入力制御装置は棒状に形成されており、これを刀に見立てて遊ぶゲーム処理が実行される。このゲーム処理では、加速度センサの出力に基づいて、刀を振る動作、例えば、強弱、前後左右上下の移動のデータが作成される。また、ジャイロセンサの出力に基づいて、刀を回す(ひねる)姿勢や、前後左右に傾ける姿勢のデータが作成される。そして、上記作成されたデータに基づいて、ゲーム内のオブジェクト(この場合には、刀)の移動した様子を、モニタのゲーム画面に出力している。
【特許文献1】特開2000−308756号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上述したような入力制御装置を用いたゲーム処理においては、以下に示す問題点があった。まず、上記入力制御装置の各動作の検出に際しては、加速度センサ、ジャイロセンサのいずれか一方のセンサ出力しか利用していない。すなわち、刀を振る動作の検出については、加速度センサからの出力のみを利用しており、刀を回す動作の検出については、ジャイロセンサからの出力のみしか利用していない。
【0004】
また、上記刀を振る動作に関して、加速度センサからの出力のみを利用しているが、加速度センサのみでは、入力制御装置が動いている間の姿勢の変化を正確に検出することが困難であるという問題もあった。静止時の加速度センサの姿勢は、センサ出力が重力加速度であるとみなして算出することが可能であるが、動いている間のセンサ出力には重力加速度だけでなく運動による加速度も加えられるので、姿勢を算出することは困難である。そして、重力加速度の方向が分からなくなるので、動いた方向を判別することもまた困難になる。そのため、例えば、上から下に向けてジグザグな軌道となるように入力制御装置(刀)を動かしたとき(図31参照)、当該軌道の折り返し時における姿勢が変化しても検出できず、実際にどの方向に刀が動いたのか分からなくなるという問題もあった。つまり、プレイヤの操作を正確に刀の動きとして反映できないという問題もあった。
【0005】
それ故に、本発明の目的は、加速度センサとジャイロセンサの双方を用いるゲームにおいて、新規な制御によってゲームが実行できるゲーム装置を提供することである。また、本願のさらに他の目的は、加速度センサとジャイロセンサの双方を用いるゲームにおいて、プレイヤによって動かされた入力装置の姿勢をより正確にゲーム内のオブジェクトの姿勢に反映できるゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【0007】
第1の発明は、操作データ取得手段(10)と、第1の制御手段(10)と、第1の加速度条件判定手段(10)と、第2の制御手段(10)とを備える、ゲーム装置である。操作データ取得手段は、加速度センサおよびジャイロセンサを少なくとも備えた入力装置から加速度データおよび角速度データを少なくとも含む操作データを取得する。第1の制御手段は、角速度データに基づいて、仮想空間内の所定のオブジェクトの姿勢および位置の少なくとも1つを制御する。第1の加速度条件判定手段は、第1の制御手段によって所定のオブジェクトの姿勢および位置の少なくとも1つが制御されているときに、加速度データが所定の条件を満たしたか否かを判定する。第2の制御手段は、第1の加速度条件判定手段が加速度データが所定の条件を満たしたと判定したとき、所定のオブジェクトに所定の動作を開始させる。
【0008】
第1の発明によれば、角速度に基づいて所定のオブジェクトが制御されているときに、所定の条件を満たす加速度が検出されれば、当該所定のオブジェクトに所定の動作を開始させることができる。これにより、新規な操作性を有するゲームを提供することができる。
【0009】
第2の発明は、第1の発明において、第2の制御手段は、加速度データが所定の条件を満たしたと判定されたときの所定のオブジェクトの姿勢または位置の少なくとも一つを基準として、所定の処理を開始させる。
【0010】
第2の発明によれば、プレイヤに違和感を感じさせずに、所定のオブジェクトの操作を開始させることができる。
【0011】
第3の発明は、第1の発明において、第2の制御手段は、加速度データが所定の条件を満たしたと判定されたときの当該加速度データに基づいて、所定のオブジェクトの移動方向を決定し、当該決定された方向へ当該所定のオブジェクトを移動させる。
【0012】
第3の発明によれば、所定のオブジェクトの動作について、プレイヤに違和感を感じさせない動作を行わせることができる。
【0013】
第4の発明は、第1の発明において、ゲーム装置は、第2の制御手段が所定のオブジェクトを移動させているとき、角速度データに基づいて当該所定のオブジェクトの姿勢を更新する、姿勢更新手段を更に備える。
【0014】
第4の発明によれば、プレイヤが入力装置に対して行った操作を、より正確に所定のオブジェクトの動作に反映することができる。
【0015】
第5の発明は、第1の発明において、第1の加速度条件判定手段は、加速度データで示される加速度の大きさが第1の所定値より大きいか否かを判定し、当該第1の所定値より大きいときに、所定の条件を満たしたと判定する。
【0016】
第5の発明によれば、入力装置を動かす速度が速いときに、所定のオブジェクトに所定の動作を開始させることができる。これにより、例えば、剣を振る動作を模したゲームにおいて、よりゲームの興趣性を高めることができる。
【0017】
第6の発明は、第1の発明において、第2の制御手段は、加速度データが所定の条件を満たしたと判定されたとき、所定のオブジェクトと他のオブジェクトとの衝突判定を行うための当たり判定領域を設定する当たり判定領域設定手段を含む。
【0018】
第7の発明は、第6の発明において、第2の制御手段は、第2の加速度条件判定手段と、当たり判定領域消去手段とを含む。第2の加速度条件判定手段は、当たり判定領域設定手段によって当たり判定領域が設定された後、加速度データで示される加速度が第2の所定値より小さいか否かを判定する。当たり判定領域消去手段は、第2の加速度条件判定手段によって加速度が第2の所定値より小さいと判定されたとき、当たり判定領域を消去する。
【0019】
第6乃至第7の発明によれば、入力装置を動かす速度が速いときにのみ、所定のオブジェクトと他のオブジェクトとの衝突判定が行われるため、プレイヤが遅い速度で入力装置を動かす際の操作性を高めることができる。
【0020】
第8の発明は、第6の発明において、当たり判定領域設定手段は、加速度データに基づいて、当たり判定領域と他のオブジェクトとの衝突時の効果を設定する。
【0021】
第8の発明によれば、所定のオブジェクトが他のオブジェクトを衝突したときの効果を加速度に応じて変化させることができ、ゲームの興趣性を高めることができる。
【0022】
第9の発明は、ゲーム装置のコンピュータに実行させるゲームプログラムであって、コンピュータを、操作データ取得手段(S4)と、第1の制御手段(S28,S29)と、第1の加速度条件判定手段(S24)と、第2の制御手段(S12)として機能させる。操作データ取得手段は、加速度センサおよびジャイロセンサを少なくとも備えた入力装置から加速度データおよび角速度データを少なくとも含む操作データを取得する。第1の制御手段は、角速度データに基づいて、仮想空間内の所定のオブジェクトの姿勢および位置の少なくとも1つを変化させる。第1の加速度条件判定手段は、第1の制御手段によって所定のオブジェクトの姿勢および位置の少なくとも1つが制御されているときに、加速度データが所定の条件を満たしたか否かを判定する。第2の制御手段は、第1の加速度条件判定手段が加速度データが所定の条件を満たしたと判定したとき、所定のオブジェクトに所定の動作を開始させる。
【0023】
第10の発明は、第9の発明において、第2の制御手段は、加速度データが所定の条件を満たしたと判定されたときの所定のオブジェクトの姿勢または位置の少なくとも一つを基準として、所定の処理を開始させる。
【0024】
第11の発明は、第9の発明において、第2の制御手段は、加速度データが所定の条件を満たしたと判定されたときの当該加速度データに基づいて、所定のオブジェクトの移動方向を決定し、当該決定された方向へ当該所定のオブジェクトを移動させる。
【0025】
第12の発明は、第9の発明において、ゲームプログラムは、コンピュータを、第2の制御手段が所定のオブジェクトを移動させているとき、角速度データに基づいて当該所定のオブジェクトの姿勢を更新する姿勢更新手段として更に機能させる。
【0026】
第13の発明は、第9の発明において、第1の加速度条件判定手段は、加速度データで示される加速度の大きさが第1の所定値より大きいか否かを判定し、当該第1の所定値より大きいときに、所定の条件を満たしたと判定する。
【0027】
第14の発明は、第9の発明において、第2の制御手段は、加速度データが所定の条件を満たしたと判定されたとき、所定のオブジェクトと他のオブジェクトとの衝突判定を行うための当たり判定領域を設定する当たり判定領域設定手段を含む。
【0028】
第15の発明は、第14の発明において、第2の制御手段は、第2の加速度条件判定手段と、当たり判定領域消去手段とを含む。第2の加速度条件判定手段は、当たり判定領域設定手段によって当たり判定領域が設定された後、加速度データで示される加速度が第2の所定値より小さいか否かを判定する。当たり判定領域消去手段は、第2の加速度条件判定手段によって加速度が第2の所定値より小さいと判定されたとき、当たり判定領域を消去する。
【0029】
第16の発明は、第14の発明において、当たり判定領域設定手段は、加速度データに基づいて、当たり判定領域と他のオブジェクトとの衝突時の効果を設定する。
【0030】
本発明のゲームプログラムによれば、上述した本発明のゲーム装置と同様の効果を得ることができる。
【発明の効果】
【0031】
本発明によれば、加速度センサとジャイロセンサの双方を用いた、新規な操作性を有するゲームを提供する事ができる。
【発明を実施するための最良の形態】
【0032】
[ゲームシステムの全体構成]
図1を参照して、本発明の一実施形態に係る姿勢算出装置の一例であるゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、入力装置8、およびマーカ部6を含む。本システムは、入力装置8を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0033】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0034】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0035】
入力装置8は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与えるものである。本実施形態では、入力装置8はコントローラ5とジャイロセンサユニット7とを含む。詳細は後述するが、入力装置8は、コントローラ5に対してジャイロセンサユニット7が着脱可能に接続されている構成である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
【0036】
[ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0037】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSIの内部構成について後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0038】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0039】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0040】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0041】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0042】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0043】
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0044】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0045】
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0046】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0047】
[入力装置8の構成]
次に、図3〜図6を参照して、入力装置8について説明する。図3は、入力装置8の外観構成を示す斜視図である。図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
【0048】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0049】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
【0050】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、ジャイロセンサユニット7や他のコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0051】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0052】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0053】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0054】
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0055】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、x軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0056】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0057】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
【0058】
次に、図7〜図10を用いて、ジャイロセンサユニット7について説明する。図7にはジャイロセンサユニット7の外観の一例が示される。図7(a)は、ジャイロセンサユニット7を上面前方から見た斜視図であり、図7(b)は、ジャイロセンサユニット7を下面後方から見た斜視図である。
【0059】
ジャイロセンサユニット7は、たとえばプラスチック成型によって形成されたハウジング710を有している。ハウジング710は、略直方体形状を有しており、その長さはコントローラ5のハウジング31の長さのおよそ1/5、その幅および厚みはハウジング31の幅および厚みとほぼ同じである。プレイヤは、コントローラ5にジャイロセンサユニット7を装着した状態でも、コントローラ5自体の位置や向きを変えることによって、ゲーム操作を行うことができる。
【0060】
ハウジング710の前面および後面には上述のコネクタ706および708が、ハウジング710の両側面には一対のリリースボタン712aおよび712bが、そしてハウジング710の下面にはロックスイッチ714が、それぞれ設けられている。ハウジング710の前面下端から下面先端にかけては、コントローラ5にジャイロセンサユニット7を装着した状態でストラップ(図示せず)用の孔48cが露見するように(図8)、略球面状の凹部710aが設けられている。
【0061】
ハウジング710の前面にはまた、コネクタ706を挟んで横方向(x軸方向)に対向する位置に、一対のリリースボタン712aおよび712bとそれぞれ連繋する一対のフック712Faおよび712Fbが設けられている。ジャイロセンサユニット7をコントローラ5に装着するべく、コネクタ706をコネクタ33に接続すると、一対のフック712Faおよび712Fbはハウジング31後面の一対の孔33a(図3)に挿入され、フック712Faおよび712Fbの爪がハウジング31の内壁に引っ掛かる。これによって、ジャイロセンサユニット7は、コントローラ5の後面に固定される。
【0062】
こうしてコントローラ5に装着されたジャイロセンサユニット7が図8に示される。この状態で一対のリリースボタン712aおよび712bを押せば、爪の引っ掛かりは解け、ジャイロセンサユニット7をコントローラ5から取り外せるようになる。
【0063】
ロックスイッチ714は、このようなリリースボタン712aおよび712bにロックをかけるためのスライドスイッチである。リリースボタン712aおよび712bは、ロックスイッチ714が第1位置(たとえば後ろ寄り)にあるとき押下不能(ロック状態)であり、ロックスイッチ714が第2位置(たとえば前寄り)にあるとき押下可能(解除状態)である。ハウジング710内には、ロックバネ718aおよび718b(図10)が設けられ、リリースボタン712aおよび712bを押下すると反発するように構成され、押下されていないときは爪が引っ掛かった状態を維持するように構成されている。このため、ジャイロセンサユニット7を取り外すには、ユーザは、ロックスイッチ714を第1位置から第2位置にスライドさせたうえで、リリースボタン712aおよび712bを押す必要がある。
【0064】
このように、ジャイロセンサユニット7は、コントローラ5の後面に装着されるため、ゲーム操作中にジャイロセンサユニット7に加わる遠心力は専ら、ジャイロセンサユニット7をコントローラ5に押し付けるように作用する。また、ジャイロセンサユニット7をフック712Faおよび712Fbでコントローラ5の後面に固定する一方、フック712Faおよび712Fbを開放するためリリースボタン712aおよび712bにはロックスイッチ714を設けたため、ジャイロセンサユニット7をコントローラ5に固定することができる。
【0065】
ハウジング710の後面にはまた、コネクタ708に装着されるコネクタカバー716を収納可能な凹部710bが、このコネクタ708の周囲に形成される。コネクタカバー716は、その主面の一方端部に、前後(Z軸方向)に長細い薄手の(すなわち曲折容易な)突起716aを有する。この突起716aの先端部分がハウジング710と係合されており、コネクタカバー716は、コネクタ708から取り外された状態でもハウジング710に係留される。
【0066】
図9にはジャイロセンサユニット7の構成の一例が示される。ジャイロセンサユニット7は、上述したハウジング710、コネクタ706および708、リリースボタン712aおよび712b、フック712Faおよび712Fb、ロックスイッチ714、コネクタカバー716ならびにロックバネ718aおよび718bに加え、ジャイロ基板720および支持部材726を備える。ジャイロ基板720はコネクタ706および708の各々と信号線で接続され、支持部材726はジャイロ基板720ならびにコネクタ706および708を支持する。
【0067】
ジャイロ基板720にはジャイロセンサ55が設けられる。ジャイロセンサ55は、1軸のジャイロセンサ55aおよび2軸のジャイロセンサ55bの2チップで構成される。ジャイロセンサ55aはヨー角に関する(単位時間あたりの)角速度(Y軸周りの角速度)を検出するためのものであり、ジャイロセンサ55bはロール角およびピッチ角に関する2つの(単位時間あたりの)角速度(z軸周りの角速度およびx軸周りの角速度)を検出するためのものである。ジャイロセンサ55aおよび55bは、ジャイロ基板720の上面720aに水平に並べて設けられる。なお、本明細書では、図10に示すように、コントローラ5の撮像方向(z軸正方向)を基準として、xyz軸周りの回転方向を、それぞれ、ピッチ方向、ヨー方向、ロール方向と呼ぶ。
【0068】
なお、ジャイロセンサ55aおよび55bの配置は、図9に示されたものに限らない。他の実施例では、ジャイロセンサ55aは、ジャイロ基板720の上面720aおよび下面720bの一方に水平に設けられ、ジャイロセンサ55bは、ジャイロ基板720の上面720aおよび下面720bの他方に水平に、ジャイロ基板720を挟んでジャイロセンサ55aと対向するように設けられる。その他の実施例では、ジャイロセンサ55aはジャイロ基板720の上面720aおよび下面720bの一方に垂直に設けられ、ジャイロセンサ55bはジャイロ基板720の上面720aおよび下面720bの他方に水平に設けられる。
【0069】
また、ジャイロセンサ55は、2チップ構成とは限らず、3個の1軸ジャイロセンサ(3チップ)で構成してもよく、1個の3軸ジャイロセンサ(1チップ)で構成してもよい。いずれの場合も、上述の3つの角速度を適正に検出できるように、各チップの位置や向きが決定される。さらにまた、場合によっては、ジャイロセンサ55は、1個の2軸ジャイロセンサで構成しても、2個または1個の1軸ジャイロセンサで構成してもよい。
【0070】
なお、図3に示したコントローラ5、および図7に示したジャイロセンサユニット7の形状や、ボタン(スイッチまたはスティック等)の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置等に適宜変更され得る。
【0071】
なお、センサは、好ましい実施例ではジャイロセンサ(角速度センサ)であるが、たとえば加速度センサ、速度センサ、変位センサ、回転角センサなど、他のモーションセンサでもよい。モーションセンサ以外にも、傾斜センサ、イメージセンサ、光センサ、圧力センサ、磁気センサ、温度センサなどがあり、いずれのセンサを追加する場合でも、センサの検出対象を利用した操作が可能となる。いずれのセンサを用いた場合でも、従来操作装置に接続されていた他の装置をそのまま使用しながら、操作装置に当該センサを追加することができる。
【0072】
図11は、入力装置8(コントローラ5およびジャイロセンサユニット7)の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、および加速度センサ37を備えている。コントローラ5は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置3へ送信するものである。
【0073】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示す操作ボタンデータを通信部36のマイコン42へ出力する。
【0074】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0075】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるマーカ部6のマーカ6Rおよび6Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ6Rおよび6Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ6Rおよび6L)の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0076】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0077】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、3軸または2軸の加速度センサは、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。なお、加速度センサ37は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0078】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すy軸方向)、左右方向(図3に示すx軸方向)および前後方向(図3に示すz軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置8(コントローラ5)を基準に設定されるxyz座標系(コントローラ座標系)における3次元のベクトル(ax,ay,az)として表される。以下では、加速度センサ37によって検出される3軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【0079】
加速度センサ37が検出した加速度を示すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、加速度データに基づいてコントローラ5の姿勢を判断する。
【0080】
加速度センサ37が検出した加速度(加速度ベクトル)を示すデータ(加速度データ)は、通信部36へ出力される。本実施形態において、加速度センサ37は、コントローラ5の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
【0081】
なお、加速度センサ37から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
【0082】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0083】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。また、マイコン42はコネクタ33に接続されている。ジャイロセンサユニット7から送信されてくるデータは、コネクタ33を介してマイコン42に入力される。
【0084】
ジャイロセンサユニット7は、コネクタ706、マイコン54、ジャイロセンサ55を備えている。上述のように、ジャイロセンサユニット7は、3軸(本実施形態では、xyz軸)周りの角速度を検出し、検出した角速度を示すデータ(角速度データ)をコントローラ5へ送信する。
【0085】
各ジャイロセンサ55で検出された角速度を示すデータは、マイコン54に出力される。したがって、マイコン54には、xyz軸の3軸回りの角度速度を示すデータが入力されることになる。マイコン54は、上記3軸回りの角速度を示すデータを角速度データとしてプラグ53を介してコントローラ5へ送信する。なお、マイコン54からコントローラ5への送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【0086】
また、本実施形態では、後述する姿勢算出処理における計算を容易にする目的で、各ジャイロセンサ55および56が角速度を検出する3つの軸は、加速度センサ37が加速度を検出する3つの軸(xyz軸)と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ56および57が角速度を検出する3つの軸と、加速度センサ37が加速度を検出する3つの軸とは一致しなくてもよい。
【0087】
コントローラ5の説明に戻り、操作部32、撮像情報演算部35、および加速度センサ37からマイコン42へ出力されたデータ、ならびに、ジャイロセンサユニット7からマイコン42へ送信されてきたデータは、一時的にメモリ43に格納される。これらのデータは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の無線コントローラモジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の無線コントローラモジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部36から無線コントローラモジュール19への無線送信は所定の周期毎に逐次行われるが、本実施形態のゲームの処理は1/30秒または1/60秒を単位として(1フレーム時間として)行われるものとする。そのため、上記無線送信は、この時間以下の周期で送信を行うことが好ましい。本実施形態では、コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の無線コントローラモジュール19へ出力するものとして、以下説明する。
【0088】
上記入力装置8を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、入力装置8を任意の傾斜角度に傾ける操作を行うことができる。その他、上記入力装置8によれば、プレイヤは、入力装置8によって画面上の任意の位置を指示する操作、および、入力装置8自体を動かす操作を行うこともできる。
【0089】
次に、図12〜図22を用いて、本実施形態で想定するゲーム、および、本実施形態にかかる処理の概要について説明する。本ゲームは、仮想3次元空間内でプレイヤオブジェクトを操作するアクションアドベンチャーゲームである。図12は、本実施形態で想定するゲームの画面の一例である。図12において、ゲーム画面には、3次元仮想ゲーム空間の様子が表示されている。3次元仮想ゲーム空間にはプレイヤオブジェクト101が存在しており、その全身が表示されている。また、ゲーム画面には、敵オブジェクト102、および、カーソル103も表示されている。この状態で、プレイヤを移動させることができる。また、図12の画面では、プレイヤオブジェクト101は剣オブジェクト104を背負っているが、剣オブジェクト104は抜いていない状態(鞘に収めている状態)である。以下、このときのプレイヤオブジェクト101の状態のことを「非戦闘状態」と呼ぶ。
【0090】
ここで、本ゲームでは、敵オブジェクト102に攻撃する際、プレイヤオブジェクト101の目線(1人称視点)で見たような画面に切り替えて攻撃することができる。当該画面への切替操作は、「ポインタロック」と呼ばれる操作を行うことで可能である。具体的には、上記図12に示すような状態で、プレイヤは、カーソル103を敵オブジェクト102に重ねる操作を行う。具体的には、たとえば撮像情報演算部35から得られる上述のマーカ座標に基づいて、入力装置8の動きに合わせてカーソル103を動かすことができる。そして所定のボタン、例えば操作ボタン32dをプレイヤが押すという操作を「ポインタロック」操作と呼ぶ。このような操作を行うことで、当該カーソル103が重なっている敵オブジェクト102をロックオンする処理が実行される。これに合わせて、仮想カメラがプレイヤオブジェクト101の目の位置に移動し、図13に示すような、一人称視点で見たゲーム画面(以下、主観画面と呼ぶ)が表示される。またこのとき、(画面には表示されないが)プレイヤオブジェクト101は剣オブジェクト104を鞘から抜く動作を行っている。
【0091】
次に、上記主観画面に関する制御について説明する。当該主観画面では、仮想カメラの注視点がカーソル103を重ねた敵オブジェクト102に設定される。つまり、プレイヤオブジェクト101が敵オブジェクト102に注目しているような仮想カメラ制御が行われる。また、図13に示されるように、ゲーム画面が一人称視点(プレイヤオブジェクト101の目線)で描かれるため、プレイヤオブジェクト101自体は表示されないが、剣オブジェクト104は、(鞘から抜いたため)表示されている状態である。そして、プレイヤは、入力装置8を剣に見立て、入力装置8を移動させたり、入力装置8を振る操作を行うことで、当該剣オブジェクト104を操作することが可能である。例えば、図13のような状態(このとき、入力装置8の姿勢は、剣オブジェクト104の姿勢とほぼ同じ姿勢であるとする)で、プレイヤが入力装置8を左から右斜め上に所定の速度以上で移動させる、つまり、右上に斬り上げるような動作を行うと、図14に示すように、剣オブジェクト104で敵オブジェクト102を斬りつける攻撃が可能である。図14では、剣オブジェクト104が敵オブジェクト102に命中しており、また、剣オブジェクト104の移動軌跡を示す演出効果であるブラー効果105も表示されている。
【0092】
なお、主観画面が表示されている状態において、上記敵オブジェクト102を倒すか、主観画面を解除するための所定の操作を行うことで、図12に示したような画面に切り替えることができる。すなわち、仮想カメラの制御を1人称視点の制御から上記図12に示したような、プレイヤオブジェクト101の全身が撮影されるようなカメラ制御へ切り替えることができる。
【0093】
次に、上記主観画面での攻撃操作に関して説明する。上記のように、主観画面において、入力装置8を剣に見立てた操作を行うことで、剣オブジェクト104を操作することができる。ここで、本ゲームにおいて、当該主観画面におけるプレイヤオブジェクト101の状態として、「構え状態」と「攻撃中状態」の2種類の状態を定義している。
【0094】
「構え状態」は、プレイヤオブジェクト101が剣オブジェクト104を鞘から抜いて構えている状態に相当する状態を示している。この状態の時は、入力装置8から出力される角速度に基づいて、剣オブジェクト104の位置や姿勢が更新される。また、「構え状態」においては、剣オブジェクト104と他のオブジェクト(典型的には敵オブジェクト102)との衝突判定が行われない。
【0095】
一方、「攻撃中状態」は、剣オブジェクト104を振って攻撃している状態を示す。本ゲームでは、「構え状態」のときに、プレイヤが所定の速度以上で入力装置8を振ると、「構え状態」から「攻撃中状態」に移行することができる。「攻撃中状態」となった後、入力装置8を振る速度が所定の速度未満になれば、「攻撃中状態」は終了し、「構え状態」に戻る。すなわち、剣オブジェクト104が予めされ定められた所定の速度以上の速度を有して移動している状態が「攻撃中状態」となる。
【0096】
また、「攻撃中状態」のときは、剣オブジェクト104と他のオブジェクトとの衝突判定が行われる。そのため、「構え状態」のとき、例えば、入力装置8を上記所定の速度未満の速度で左から右に動かす(つまり、ゆっくりと動かす)と、剣オブジェクト104が敵オブジェクト102に重なっても、衝突判定が行われず、そのまま通過することになる。つまり、攻撃が当たらないことになる。一方、プレイヤが所定の速度以上の速度で入力装置8を振れば、すなわち、剣オブジェクト104が所定の速度以上の速度で敵オブジェクト102に向かって移動すれば、剣オブジェクト104は敵オブジェクト104に衝突する、つまり、攻撃を当てることが可能となる。
【0097】
このように、入力装置8(剣オブジェクト104)の移動速度が所定の速度未満の時は衝突判定を行わないようにしているのは、プレイヤが入力装置8をゆっくりと動かしているときに衝突判定を行うようにすると、剣オブジェクト104の構え(移動)の自由度が下がるためである。例えば、ゲーム空間内において、周りが障害物で囲まれたような狭い場所で剣オブジェクトを移動させたとき、剣オブジェクト104が壁や障害物等に当たる度に衝突判定を行うと、斬り始めの位置を自由に設定できないため、目的とする対象を斬ることが難しくなり、操作性を低下させてしまう。そのため、入力装置8をゆっくりと動かしているときは、剣オブジェクト104の衝突判定は行わないようにし、操作性を高めている。
【0098】
なお、本ゲームでは、剣オブジェクト104の移動可能範囲に制限を設けている。すなわち、人間の腕の可動範囲に対して不自然な位置に剣オブジェクト104が移動しないように、腕の可動範囲に準ずるような範囲を「振り可能範囲」として予め定義している。図15は、振り可能範囲の一例を示す模式図である。図15は、仮想ゲーム空間を鳥瞰した図であり、プレイヤオブジェクト101を中心に、前方に広がる略扇形の範囲が「振り可能範囲」として定義されている。
【0099】
次に、上記「攻撃中状態」の剣オブジェクトの制御について説明する。上記のように、「構え状態」の時にプレイヤが所定の速度以上の速度で入力装置8を振れば、攻撃中状態に移行するが、本実施形態では、所定の速度以上で振られたか否かの判定を、加速度センサ37から出力される加速度データに基づいて行っている。すなわち、所定の大きさ以上の加速度が検出されたときに、攻撃中状態に移行させる。そして、当該加速度に基づいて剣オブジェクト104の移動方向および移動速度の設定が行われる。ここで、本実施形態では、当該兼オブジェクトの移動方向および速度の決定に際しては、x−yの2軸の加速度のみを用いて決定する。すなわち、剣オブジェクト104で「突く」ような動作(z軸方向に発生する加速度)は考慮せず、「斬る」動作だけを考慮している。但し、z軸方向の加速度を考慮した処理を行うようにしても良い(z軸方向の加速度を用いた処理の例については後述する)。
【0100】
また、剣オブジェクト104について、上記のような衝突判定を可能とするために、所定の大きさの球オブジェクトを「当たり判定球」として剣オブジェクトに設定する。なお、当該当たり判定球は、プレイヤからは見えない(ゲーム画面には表示されない)ように設定される。図16に、当たり判定球の設定の一例を示す。図16(a)では、剣オブジェクト104の刀身の部分に3つの当たり判定球107a、107b、107c(以下、総称して当たり判定球107と呼ぶこともある)が設定されている。上述した衝突判定は、この当たり判定球と他のオブジェクトとが衝突したか否かで判定する。
【0101】
なお、当該当たり判定球の大きさや数は、加速度の大きさに応じて設定される。例えば、加速度が大きい場合は、剣を振る勢いが強いと考えられるため、図16(b)に示すように、より大きな当たり判定球107a〜107cを設定して広範囲を斬ることができるようにする。また、加速度の大きさが小さいときは、剣を振る勢いが弱めであると考えられるため、図16(c)に示すように、当たり判定球107の大きさも小さく設定することが考えられる。このように、加速度に応じて当たり判定球107の大きさや数を設定することで、剣の切れ具合の強弱を表現して、ゲームの興趣性を高めることができる。また、剣で斬ったときの効果や威力についても、加速度の大きさに基づいて設定してもよい。
【0102】
上記のように、加速度に基づいて剣オブジェクトの移動方向、移動速度や当たり判定球107が設定されると、「攻撃中状態」の間は、当該移動方向に沿って剣オブジェクトを移動させる処理が行われる。ここで、本実施形態では、ゲーム画像の描画間隔は1/30秒または1/60秒であり、入力装置8からの操作データの送信間隔は、1/200秒となっている。そして、本実施形態では、この描画間隔の間に、入力装置8から送信される角速度データに基づいて、入力装置8の姿勢を剣オブジェクト104の姿勢に反映する処理が行われる。
【0103】
図17は、当該処理の概念を説明するための模式図である。図17は、入力装置8を水平にした状態で、後方(図3のコネクタ33のある側)から見た状態を示している。また、入力装置8を右上方向に振り上げる一連の動きを示している。また、剣オブジェクト104についても、水平にした状態で後方から見たものを示している。また、描画タイミングT1〜T3が、上記描画処理が実行されるタイミングを示し、更新タイミングt1〜t4は、上記入力装置8から操作データが送信されてくるタイミングを示す。
【0104】
本処理では、描画タイミングT1において、そのときに検出された加速度に基づき、剣オブジェクト104の移動方向および移動速度が決定される。その後、次の描画タイミングT2が来るまでの間、当該移動方向および移動速度に従って剣オブジェクト104は移動するが、このとき、角速度データに基づいて、剣オブジェクト104の姿勢を更新する。すなわち、更新タイミングt1、t2のそれぞれの時点において、各時点で検出された角速度データに基づいて剣オブジェクト104の姿勢を変更する。そして、次の描画タイミングT2が来れば、この時点で検出された加速度に基づいて、剣オブジェクト104の移動方向、移動速度を再計算する。その後、次の描画タイミングT3が来るまでは、剣オブジェクト104は当該再計算された移動方向に従って移動すると同時に、更新タイミングt3、t4において、角速度データに基づく剣オブジェクト104の姿勢の更新が行われる。
【0105】
図17で示した処理について、より具体的に説明すると、まず、上記描画タイミングT1の時点では、上記コントローラ座標系(入力装置8を基準に設定されるxyz座標系)で考えて、どの方向に加速度が発生しているかを判定する。例えば、図18(a)に示すように、入力装置8を水平にしたまま右方向に動かしたときは、x軸負方向への加速度が検出されることになる。また、図18(b)に示すように、入力装置8を90度傾た姿勢で右方向に動かした場合は、y軸負方向への加速度が検出されることになる。そして、図17の描画タイミングT1での剣オブジェクト104の姿勢(図17では、入力装置8と同じ姿勢である)に、当該加速度を適用して、剣オブジェクト104の仮想ゲーム空間内での移動方向と移動速度を決定する。つまり、剣オブジェクト104のローカル座標系(コントローラ座標系と同様、剣オブジェクト104を基準に設定されるxyz座標系)で考えて、上記検出された加速度の方向に剣オブジェクト104を移動させることを決定し、剣オブジェクト104の移動を開始する。図17の例では、右方向への移動が開始される(図19参照)。
【0106】
その後、次の描画タイミングT2が来るまでの間、更新タイミングt2、t3に角速度を取得し、これを、その時点の剣オブジェクト104の姿勢に適用することで、剣オブジェクトの姿勢を更新する。例えば、図17の例では、ロール角方向の角速度が検出され、剣オブジェクト104の姿勢もロール角方向に変化させる処理が実行される(なお、このときも、コントローラ座標系、剣オブジェクトのローカル座標系を基準に考える)。一方、次の描画タイミングT2が来るまでの間、剣オブジェクト104の移動も継続されるが、この移動方向は、上記描画タイミングT1において決定された移動方向である。つまり、図20に示すように、剣オブジェクト104は、右方向に移動しながら、その姿勢(傾き)だけは徐々に変化していることになる。
【0107】
その後、次の描画タイミングT2が来れば、この時点で、加速度を取得する。そして、当該加速度と、この時点の剣オブジェクト104の姿勢(角速度に基づき更新された姿勢)に基づいて、剣オブジェクト104の新たな移動方向、移動速度を再決定する。すなわち、描画タイミングT2の時点では、入力装置8は右斜めに少し傾いている。この状態で右斜め上に入力装置8を移動させた場合、右に移動している入力装置を右上方向で移動させるのであるから、上向きの加速度が加えられていることになり、コントローラ座標系で考えると、y軸正方向からx軸負方向へかけた斜め向きの加速度が検出されることになる(図21参照)。そして、入力装置8のローカル座標系における当該加速方向を、上記角速度によって更新された剣オブジェクト104の姿勢(これも右斜めに傾いている)に基づいてワールド座標系における方向に変換し、移動している剣オブジェクト104の動きに当該加速を加えると、右上方向に移動方向が変化することになる。そして、その後の振りの終わりのタイミングには、移動方向とは逆方向に加速度が加えられるので、移動が停止することになる。
【0108】
このように、角速度に基づいて姿勢を更新することで、加速度だけでは算出できないような僅かな入力装置8の姿勢の変化を剣オブジェクト104の姿勢に反映することができ、プレイヤの操作をより正確に剣オブジェクト104の動きに反映させることが可能となる。なお、本実施例においては、加速度に基づいた移動方向の更新期間を画面表示の更新期間と同じにして、角速度に基づいて姿勢の更新期間よりも長いものとしているが、別の実施例においては、姿勢の更新と同じタイミングで毎回加速度に基づいた移動方向の更新を行うようにしてもよい。
【0109】
次に、ゲーム装置3によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際に外部メインメモリ12に記憶されるデータについて説明する。図23は、ゲーム装置3の外部メインメモリ12のメモリマップを示す図である。図23において、外部メインメモリ12は、プログラム記憶領域121およびデータ記憶領域125を含む。プログラム記憶領域121およびデータ記憶領域125のデータの一部は、光ディスク4に記憶され、ゲームプログラム実行時には外部メインメモリ12に転送されて記憶される。
【0110】
プログラム記憶領域121は、CPU10によって実行されるゲームプログラムを記憶し、このゲームプログラムは、メイン処理プログラム122と、構え状態処理プログラム123と、攻撃中状態処理プログラム124などによって構成される。メイン処理プログラム122は、後述する図24のフローチャートの処理に対応するプログラムである。構え状態処理プログラム123は、上記「構え状態」における処理をCPU10に実行させるためのプログラムであり、攻撃中状態処理プログラム124は、上記「攻撃中状態」における処理をCPU10に実行させるためのプログラムである。
【0111】
データ記憶領域125には、操作データ126、推定姿勢データ127、剣姿勢データ128、移動方向データ129、移動速度データ130、ゲーム状態データ131、仮想カメラ制御用データ132、オブジェクトデータ133などのデータが記憶される。その他、ゲーム処理中に用いられる音声データなども記憶される。
【0112】
操作データ126は、コントローラ5からゲーム装置3へ送信されてくる操作データである。上述したように、コントローラ5からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、外部メインメモリ12に記憶される操作データ126はこの割合で更新される。本実施形態においては、外部メインメモリ12には、最新の(最後に取得された)操作データのみが記憶されればよい。ただし、前回の操作データを利用してデータの補正等を行う場合には、数回分の操作データを記憶しておくようにしてもよい。
【0113】
操作データ126には、角速度データ1261、加速度データ1262、マーカ座標データ1263、および操作ボタンデータ1264が含まれる。角速度データ1261は、ジャイロセンサユニット7のジャイロセンサ55によって検出された角速度を示すデータである。ここでは、角速度データ63は、図3に示すxyzの3軸回りのそれぞれの角速度を示す。また、加速度データ1262は、加速度センサ37によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ1262は、図3に示すxyzの3軸の方向に関する加速度を各成分とする3次元の加速度ベクトルを示す。また、本実施形態においては、コントローラ5が静止している状態で加速度センサ37が検出する加速度ベクトル1の大きさを"1"とする。つまり、加速度センサ37によって検出される重力加速度の大きさは"1"である。
【0114】
マーカ座標データ1263は、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための2次元座標系で表現される。なお、撮像素子40によって2つのマーカ6Rおよび6Lが撮像される場合には、2つのマーカ座標が算出される。一方、撮像素子40の撮像可能な範囲内にマーカ6Rおよび6Lのいずれか一方が位置しない場合には、撮像素子40によって1つのマーカのみが撮像され、1つのマーカ座標のみが算出される。また、撮像素子40の撮像可能な範囲内にマーカ6Rおよび6Lの両方が位置しない場合には、撮像素子40によってマーカが撮像されず、マーカ座標は算出されない。したがって、マーカ座標データ1263は、2つのマーカ座標を示す場合もあるし、1つのマーカ座標を示す場合もあるし、マーカ座標がないことを示す場合もある。
【0115】
操作ボタンデータ1264は、各操作ボタン32a〜32iに対する入力状態を示すデータである。
【0116】
推定姿勢データ127は、入力装置8の姿勢を示すためのデータである。剣姿勢データ128は、上記剣オブジェクト104の姿勢を示すためのデータである。
【0117】
移動方向データ129は、上記「攻撃中状態」における剣オブジェクト104の移動方向を示すためのデータであり、移動速度データ130は、「攻撃中状態」における剣オブジェクト104の移動速度を示すためのデータである。
【0118】
ゲーム状態データ131は、プレイヤオブジェクト101の状態が、上述したような「非戦闘状態」「構え状態」「攻撃中状態」のいずれの状態にあるかを示すためのデータである。
【0119】
仮想カメラ制御用データ132は、仮想カメラを制御するためのデータであり、仮想カメラの位置、画角、注視点等を示すデータが含まれている。
【0120】
オブジェクトデータ133は、プレイヤオブジェクト101や敵オブジェクト102等の、ゲーム処理で用いられる各オブジェクトのデータである。
【0121】
次に、図24〜図28を参照して、ゲーム装置3によって実行されるゲーム処理について説明する。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、ROM/RTC13に記憶されている起動プログラムを実行し、これによって外部メインメモリ12等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムが外部メインメモリ12に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図24に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。また、図24に示すステップS2〜ステップS8の処理ループは、1フレーム毎に繰り返し実行される(但し、後述の図27のステップS51〜S55の処理ループは除く)。
【0122】
図24において、まず、CPU10は、以降の処理において用いられるデータの初期化するための初期化処理を実行する(ステップS1)。具体的には、「非戦闘状態」を示すデータがゲーム状態データ131として外部メインメモリ12に記憶される。本実施形態においては、ゲーム開始直後は非戦闘状態とするからである。また、CPU10は、仮想カメラ制御用データ132に、上記図12で示したようなゲーム画面(以下、客観画面と呼ぶ)が表示されるような各種パラメータ(位置、画角、注視点)を設定する。更に、CPU10は、3次元のゲーム空間を構築し、プレイヤオブジェクト101等を適宜配置する。以上のように構築されたゲーム空間を仮想カメラで撮影したゲーム画像が生成され、生成されたゲーム画像がモニタ2に表示される。
【0123】
次に、CPU10は、ゲーム状態データ131を参照し、ゲーム状態が「攻撃中」であるか否かを判定する(ステップS2)。当該判定の結果、「攻撃中状態」のときは(ステップS2でYES)、後述するステップS12の処理を実行する。一方、「攻撃中状態」ではないときは(ステップS2でNO)、CPU10は、ゲーム状態が「構え状態」であるか否かを判定する(ステップS3)。その結果、「構え状態」であれば(ステップS3でYES)、CPU10は、後述するステップS11の処理へ進む。
【0124】
一方、「構え状態」ではないときは(ステップS3でNO)、ゲーム状態は「非戦闘状態」であるため、CPU10は、操作データ126を外部メインメモリ12から取得する(ステップS4)。
【0125】
次に、CPU10は、操作データ126で示される、プレイヤが行った操作内容が、上述したような「ポインタロック」操作であるか否かを判定する(ステップS5)。つまり、「非戦闘状態」から「構え状態」に移行するような操作が行われたか否かを判定する。当該判定の結果、「ポインタロック」操作が行われていれば(ステップS5でYES)、CPU10は、「構え状態」を示すデータをゲーム状態データ131に設定する(ステップS9)。更に、仮想カメラ制御用データ132に、上記主観画面用(図13参照)の設定を行う。すなわち、CPU10は、仮想カメラの位置を、プレイヤオブジェクト101の目の位置に設定し、注視点を、ポインタロック操作においてロックオンされた敵オブジェクト102に設定する等の処理を実行する。その後、CPU10は、後述の「構え状態」および「攻撃中状態」にかかる処理以外の各種ゲーム処理を実行する(ステップS6)。なお、本実施形態においては、このゲーム処理の内容は本発明と直接関連しないので、詳細な説明は省略する。
【0126】
一方、上記ステップS5の判定の結果、ポインタロック操作が行われていないときは(ステップS5でNO)、CPU10は、ステップS9,S10の処理は行わずに、ステップS6の処理に進む。
【0127】
ステップS6の後、CPU10は、表示処理を実行する(ステップS7)。すなわち、仮想カメラで仮想空間を撮影した画像をゲーム画像としてテレビ2に表示する処理がされる。ステップS7の後、CPU10は、ゲーム終了か否かを判定し(ステップS8)、YESの場合、ゲーム処理を終了し、NOの場合、ステップS2に戻って、本実施形態にかかるゲーム処理を繰り返す。
【0128】
次に、上記ステップS11で示した「構え処理」について説明する。図25は、上記ステップS11で示した構え処理の詳細を示すフローチャートである。図25において、まず、CPU10は、操作データ126を外部メインメモリ12から取得する(ステップS21)。
【0129】
次に、CPU10は、操作データ126で示される操作内容が、「構え状態」を終了するための操作であるか否かを判定する(ステップS22)。つまり、「構え状態」から「非戦闘状態」に戻るための操作が行われたか否かを判定する。具体的な操作の判定としては、たとえば所定のボタン操作が行われたか否かや、所定期間操作を行われなかったか否か(操作入力が無い時間が所定時間以上継続したか否か)等によって判定を行えばよい。当該判定の結果、「構え状態」を終了するための操作が行われていたときは(ステップS22でYES)、CPU10は、「非戦闘状態」を示すデータをゲーム状態データ131に設定する(ステップS30)。続いて、CPU10は、仮想カメラ制御用データ132に、上記客観画面が撮影されるようなデータを設定する(ステップS31)。その後、CPU10は、当該構え処理を終了する。
【0130】
一方、ステップS22の判定の結果、操作データ126で示される操作内容が、「構え状態」を終了するための操作ではないときは(ステップS22でNO)、次に、CPU10は、剣オブジェクト104の位置が、剣振り可能範囲(上記図15参照)の中に含まれているか否かを判定する(ステップS23)。その結果、剣オブジェクト104の位置が剣振り可能範囲内に含まれていないときは(ステップS23でNO)、次に、CPU10は、加速度データ1262および角速度データ1261に基づいて入力装置8の姿勢を推定する処理を実行する(ステップS28)。本処理は、どのような処理方法であっても良いが、本実施形態では、上記のように、まず、ジャイロセンサユニット7で検出された角速度に基づいて入力装置8の姿勢を算出する。角速度から姿勢を算出する方法は、例えば、初期姿勢に(単位時間あたりの)角速度を逐次加算する方法がある。すなわち、ジャイロセンサユニット7から逐次出力される角速度に基づいて、初期状態から開始して、前回算出された姿勢に逐次変化を加えて更新していくことによって、現在の姿勢を算出することができる。次に、加速度センサ37で検出された加速度データに基づいて上記角速度から算出された姿勢を補正する。本実施形態では、上記角速度から算出された姿勢を加速度データから決まる姿勢へと近づける補正を行う。次に角速度による姿勢の更新を行うときには、当該補正された姿勢にたいして角速度を加えることになる。加速度データから決まる姿勢とは、具体的には、加速度データが示す加速度の向きが鉛直下向きであると想定する場合における入力装置8の姿勢を指す。すなわち、加速度データが示す加速度が重力加速度であると仮定して算出された姿勢である。加速度によって決められる姿勢は、センサが静止しているときには正確だが、動いているときには誤差があるという性質がある。一方、ジャイロセンサは、センサ出力に誤差が含まれる場合に、算出された姿勢には時間と共に誤差が蓄積していくという性質がある。したがって、常に補正を加えながら姿勢を更新していくことによって、誤差の少ない姿勢が算出される。このようにして補正された姿勢が、推定姿勢データ127として外部メインメモリ12に記憶される。なお、加速度データを反映させない場合は、角速度の積分結果を初期姿勢に反映させた姿勢としてもよい。
【0131】
次に、CPU10は、推定姿勢データ127で示される入力装置8の姿勢に基づいて剣オブジェクト104の姿勢および位置を算出する(ステップS29)。すなわち、入力装置8の姿勢を剣オブジェクト104の姿勢および位置に反映させるための処理を実行する。具体的には、画面に向かったプレイヤが入力装置を向けた方向に、画面内の剣オブジェクト104の方向が沿うようにし、かつ剣オブジェクト104を持つプレイヤキャラクタの腕の長さ等を考慮した位置に配置する。つまり、入力装置8の姿勢から方向を算出し、ゲーム空間内の所定の中心位置から、当該方向へ所定距離伸ばした位置に、当該方向に沿った姿勢で剣オブジェクト104が配置される。これにより、「構え状態」のときは、プレイヤが動かした入力装置8の姿勢が剣オブジェクト104に反映されることになる。
【0132】
一方、上記ステップS23の判定の結果、剣オブジェクト104の位置が剣振り可能範囲内に含まれているときは(ステップS23でYES)、次に、CPU10は、操作データ126に含まれている加速度データ1262を参照し、第1の所定値以上の大きさの加速度が発生したか否かを判定する(ステップS24)。当該判定の結果、第1の所定値以上の大きさの加速度が発生していなければ(ステップS24でNO)、CPU10は、上記ステップS28の処理に進む。一方、第1の所定値以上の大きさの加速度が発生していれば(ステップS24でYES)、次に、CPU10は、「攻撃中状態」を示すデータをゲーム状態データ131に設定する(ステップS25)。
【0133】
次に、CPU10は、剣オブジェクト104の移動方向の決定や当たり判定球の設定を行うための、攻撃内容設定処理を実行する(ステップS26)。図26は、上記ステップS26で示した攻撃内容設定処理の詳細を示すフローチャートである。図26において、まず、CPU10は、加速度データ1262に基づいて、剣オブジェクト104の移動方向を算出し、移動方向データ129として記憶する(ステップS41)。すなわち、剣オブジェクト104のローカル座標系を基準として、どの方向に移動させるかを決定する。
【0134】
次に、CPU10は、加速度データ1262に基づいて、剣オブジェクト104の移動速度を決定し、移動速度データ130として記憶する(ステップS42)。例えば、加速度が大きいほど、移動速度も速くなるように設定する。
【0135】
次に、CPU10は、加速度データ1262に基づいて、上記当たり判定球107(図16参照)の大きさや数を決定し、剣オブジェクト104に付加する(ステップS43)。更に、当たり判定球107に「攻撃力」とよばれる値を設定する。これは、当たり判定球107が敵オブジェクト等に衝突したときに、当該敵オブジェクトに与えるダメージ量の算出の基礎となる値である。これらの設定は、例えば、加速度の大きさと、当たり判定球107の数、大きさ、および攻撃力との関係を定義づけたテーブルを予め作成、記憶しておき、当該テーブルを参照することで、当たり判定球107の大きさや数、攻撃力が設定される。
【0136】
次に、剣オブジェクト104が前回描画されたときの仮想空間内の位置と、現在の剣オブジェクト104の位置とを結ぶような、ブラー効果画像105(図14参照)を生成する(ステップS44)。以上で、攻撃内容設定処理は終了する。
【0137】
図25に戻り、ステップS26の次に、CPU10は、当たり判定処理を実行する(ステップS27)。すなわち、CPU10は、ステップS26の処理で設定された当たり判定球107と、ポインタロック操作でロックオンした敵オブジェクトやその他のオブジェクトと衝突したか否かを判定する。また、衝突していた場合は、上記当たり判定球107に設定された攻撃力に基づくダメージの算出等、攻撃が命中した際の各種処理が実行される。その後、CPU10は、構え処理を終了する。
【0138】
次に、上記図24のステップS12で示した攻撃中処理について説明する。図27は、上記ステップS12で示した攻撃中処理の詳細を示すフローチャートである。図27において、まず、CPU10は、操作データ126を取得する(ステップS51)。
【0139】
次に、操作データ126に含まれる角速度データ1261に基づいて、剣オブジェクト104の姿勢を変化させる。例えば、角速度データ1261に基づいて、姿勢の回転量を示す回転行列を算出する。そして、当該回転行列に基づいて、剣オブジェクトの姿勢を変化させる。
【0140】
次に、CPU10は、移動方向データ129および移動速度データ130に基づいて、剣オブジェクト104を移動させる(ステップS53)。本実施例においては、移動方向と速度はフレーム毎に決定されるので、ステップS53は、姿勢を設定する期間毎ではなく、フレーム毎のタイミングで1フレーム分の移動を行うようにしてもよい。また、本実施例では姿勢が変化しても、ワールド座標系における移動方向と速度は加速度に基づいてフレーム毎に速度の設定を行うまで変化させないようにしているが、フレーム毎に移動方向と速度を設定する場合であっても、姿勢の変化毎に移動方向を変化させることは可能である。
【0141】
次に、CPU10は、移動後の剣オブジェクト104について、当たり判定処理を実行する(ステップS24)。当該処理は、上記図25のステップS27と同様の処理であるので、詳細な説明は省略する。
【0142】
次に、CPU10は、前回のゲーム画面の表示(前回の処理ループ)から1フレーム分、すなわち1/30秒もしくは1/60秒の時間が経過したか否かを判定する(ステップS55)。当該判定の結果、1フレーム分の時間が経過していないときは(ステップS55でNO)、上記ステップS51に戻り、処理を繰り返す。ここで、上述のように、コントローラ5からゲーム装置3へは1/200秒に1回の割合で操作データが送信され、操作データ126もこの割合で更新されている。従って、1フレーム分の時間を1/30秒とした場合は、ステップS51〜S55の処理ループは、1フレーム分の時間が経過するまでに、約6〜7回ループする。
【0143】
一方、ステップS55の判定の結果、1フレーム分の時間が経過していれば(ステップS55でYES)、次に、CPU10は、その時点の加速度に基づいて剣オブジェクト104の移動方向等を再設定するための処理を実行する。すなわち、CPU10は、まず、操作データ126を取得する(ステップS56)。
【0144】
次に、当該操作データに含まれる加速度データ1262で示される加速度の大きさが、第2の所定値未満であるか否かを判定する(ステップS57)。すなわち、「攻撃中状態」の終了条件を満たしたか否かを判定する。振りの動作においては、始めに移動方向への加速度が加えられ、終了の際には振りを停止させるために移動した方向と逆方向の加速度が加えられる。そして、振りの終了後は加速度の大きさが小さくなることになるので、そのように加速度の大きさが小さくなった場合に振りが終了していると判定している。したがって、所定期間の間加速度の大きさが小さい状態が持続したか否かを判定の条件としてもよい。当該判定の結果、上記加速度が第2の所定値未満でないときは(ステップS57でNO)、「攻撃中状態」が継続しているため、CPU10は、攻撃内容設定処理を実行する(ステップS58)。当該処理は、上記図25のステップS26の処理を同様であるため、詳細な説明は省略するが、この処理で、この時点の加速度に基づいて剣オブジェクト104の移動方向や当たり判定球107の設定などが行われることになる。
【0145】
一方、ステップS57の判定の結果、上記加速度が第2の所定値未満のときは(ステップS57でYES)、CPU10は、「攻撃中状態」を終了し、「構え状態」に遷移するための処理を実行する。すなわち、CPU10は、「構え状態」を示すデータをゲーム状態データ131に設定する(ステップS59)。
【0146】
次に、CPU10は、攻撃終了時における剣オブジェクトの姿勢を調整するための姿勢調整処理を実行する(ステップS60)。この処理では、「攻撃中状態」が終了したときの剣オブジェクトの姿勢が不自然に見えないように調整するための処理である。本処理の終了後、CPU10は、当該攻撃中処理を終了する。
【0147】
図28は、上記ステップS60で示した剣オブジェクトの姿勢調整処理の詳細を示すフローチャートである。図28において、まず、CPU10は、剣オブジェクト104の位置が、剣振り可能範囲内であるか否かを判定する(ステップS71)。その結果、剣振り可能範囲内になければ(ステップS71でNO)、CPU10は、剣オブジェクト104の位置が剣振り可能範囲内に収まるように、剣オブジェクト104の位置を変化させる(ステップS72)。その後、CPU10は、当たり判定球107を消去する(ステップS73)。一方、ステップS71の判定の結果、剣振り可能範囲内のときは(ステップS71でYES)、ステップS72の処理は実行せずに、上記ステップS73の処理に進む。以上で、姿勢調整処理は終了する。
【0148】
以上で、本実施形態にかかるゲーム処理の説明を終了する。
【0149】
このように、本実施形態では、上記「構え状態」において、角速度に基づいて剣オブジェクト104の姿勢を制御しているときに、所定値以上の加速度が検出されれば、剣オブジェクト104に当たり判定球の設定や移動方向等の決定を行うことで、「攻撃中状態」に移行し、敵オブジェクト等への攻撃を可能とする処理を実行している。これにより、加速度センサとジャイロセンサを利用した新規な操作性を有するゲームを提供することができる。
【0150】
また、「攻撃中状態」においては、加速度に基づいて剣オブジェクト104の移動方向や移動速度を決定すると共に、角速度に基づいて剣オブジェクト104の姿勢を補正している。これにより、プレイヤが動かした入力装置8の動きをより正確に剣オブジェクト104の姿勢・動きに反映することができる。
【0151】
なお、上述の実施形態では、「構え状態」から「攻撃中状態」への移行の判定として、第1の所定値以上の加速度が発生したか否かを判定していた。このとき、上記実施形態は、x軸およびy軸の2軸の加速度のみを用いる場合を例としていたが、これに限るものではなく、更にz軸も加えた3軸の加速度を用いて判定するようにしても良い。例えば、プレイヤオブジェクト101武器として図29に示すような振り回すことのできる「鉄球」110を用いるような場合を想定する。そして、「鉄球」110を振り回す動作を模して、図30に示すようにプレイヤが入力装置8を振り回し、最後にプレイヤの前方に向けて振るような操作を行う場合を想定する。上記のような振り回しの操作が行われた場合、入力装置8には、z軸方向への加速度が継続的に発生する。そこで、所定値以上のZ軸方向の加速度が継続して検出されている状態であれば、鉄球を振り回している状態であると判定し、その後、Z軸方向の加速度について大きな変化が発生すれば(つまり、前方に向かって入力装置8が振られたことになる)、仮想ゲーム空間内において鉄球オブジェクト110に上述のような当たり判定球の設定等を行い、上記加速度に基づいて鉄球オブジェクト110を移動させて、敵オブジェクト等への攻撃を可能とする処理を行えばいよい。
【0152】
また、上記実施形態では、攻撃内容設定処理において、加速度の大きさに応じて当たり判定球107の数や大きさ、攻撃力の設定を行っていたが、この他、加速度の大きさに応じた処理を実行させるようにしても良い。例えば、加速度の大きさに応じて、「剣を振る効果音」をコントローラ5のスピーカ49から出力するようにしてもよい。すなわち、加速度が大きいほど、音量を大きく設定して「剣を振る効果音」を出力してもよい。また、加速度の大きさに応じて異なる音色を使い分けるようにしても良い。また、上記コントローラ5は、バイブレータ48を作動させることによって振動を発生させることが可能であるため、加速度の大きさに応じた強さの振動を発生させるようにしても良い。これにより、臨場感を高めてゲームの興趣性をより高めることが可能となる。
【産業上の利用可能性】
【0153】
本発明にかかるゲーム装置およびゲームプログラムは、加速度センサとジャイロセンサを効果的に利用した新規なゲームを提供することができ、据置型ゲーム装置やパーソナルコンピュータを用いたゲーム等に有用である。
【図面の簡単な説明】
【0154】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置3の機能ブロック図
【図3】図1のコントローラ5(入力装置8)の上面後方から見た斜視図
【図4】図3のコントローラ5を下面前方から見た斜視図
【図5】図3のコントローラ5の上ハウジングを外した状態を示す斜視図
【図6】図3のコントローラ5の下ハウジングを外した状態を示す斜視図
【図7】本実施例に適用されるジャイロセンサユニットの外観を示す図解図
【図8】コントローラ5に装着されたジャイロセンサユニット7を示す図
【図9】ジャイロセンサユニットの構成を示す図解図
【図10】ジャイロセンサが検出できるヨー角、ピッチ角、ロール角を示す図解図
【図11】入力装置8の機能構成を示すブロック図
【図12】本実施形態で想定するゲーム画面の一例
【図13】本実施形態で想定するゲーム画面の一例
【図14】本実施形態で想定するゲーム画面の一例
【図15】剣振り可能範囲の一例
【図16】当たり判定球の設定の一例
【図17】攻撃中処理における制御の概念を説明するための図
【図18】攻撃中処理における制御について説明するための図
【図19】攻撃中処理における制御について説明するための図
【図20】攻撃中処理における制御について説明するための図
【図21】攻撃中処理における制御について説明するための図
【図22】攻撃中処理における制御について説明するための図
【図23】外部メインメモリ12のメモリマップを示す図
【図24】本発明の実施形態に係るゲーム処理を示すフローチャート
【図25】図24のステップS11で示した構え処理の詳細を示すフローチャート
【図26】図25のステップS26で示した攻撃内容設定処理の詳細を示すフローチャート
【図27】図24のステップS12で示した攻撃中処理の詳細を示すフローチャート
【図28】図27のステップS60で示した剣オブジェクトの姿勢調整処理の詳細を示すフローチャート
【図29】z軸方向の加速度を用いた処理を説明するための図
【図30】z軸方向の加速度を用いた処理を説明するための図
【図31】移動軌跡の一例を示す図
【符号の説明】
【0155】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
4…光ディスク
5…コントローラ
7…ジャイロセンサユニット
8…入力装置
10…CPU
11…システムLSI
11a…入出力プロセッサ
11b…GPU
11c…DSP
11d…VRAM
11e…内部メインメモリ
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
15…AV−IC
16…AVコネクタ
17…フラッシュメモリ
18…無線通信モジュール
19…無線コントローラモジュール
20…拡張コネクタ
21…外部メモリカード用コネクタ
22…アンテナ
23…アンテナ
24…電源ボタン
25…リセットボタン
26…イジェクトボタン
30…基板
31…ハウジング
32…操作部
33…コネクタ
34…LED
35…撮像情報演算部
36…通信部
37…加速度センサ
38…赤外線フィルタ
39…レンズ
40…撮像素子
41…画像処理回路
42…マイコン
43…メモリ
44…無線モジュール
45…アンテナ
48…バイブレータ
49…スピーカ
53…プラグ
54…マイコン
55…2軸ジャイロセンサ
56…1軸ジャイロセンサ

【特許請求の範囲】
【請求項1】
加速度センサおよびジャイロセンサを少なくとも備えた入力装置から加速度データおよび角速度データを少なくとも含む操作データを取得する操作データ取得手段と、
前記角速度データに基づいて、仮想空間内の所定のオブジェクトの姿勢および位置の少なくとも1つを制御する第1の制御手段と、
前記第1の制御手段によって前記所定のオブジェクトの姿勢および位置の少なくとも1つが制御されているときに、前記加速度データが所定の条件を満たしたか否かを判定する第1の加速度条件判定手段と、
前記第1の加速度条件判定手段が前記加速度データが所定の条件を満たしたと判定したとき、前記所定のオブジェクトに所定の動作を開始させる第2の制御手段とを備える、ゲーム装置。
【請求項2】
前記第2の制御手段は、前記加速度データが所定の条件を満たしたと判定されたときの前記所定のオブジェクトの姿勢または位置の少なくとも一つを基準として、前記所定の処理を開始させる、請求項1に記載のゲーム装置。
【請求項3】
前記第2の制御手段は、前記加速度データが所定の条件を満たしたと判定されたときの当該加速度データに基づいて前記所定のオブジェクトの移動方向を決定し、当該決定された方向へ当該所定のオブジェクトを移動させる、請求項1に記載のゲーム装置。
【請求項4】
前記ゲーム装置は、前記第2の制御手段が前記所定のオブジェクトを移動させているとき、前記角速度データに基づいて当該所定のオブジェクトの姿勢を更新する姿勢更新手段を更に備える、請求項1に記載のゲーム装置。
【請求項5】
前記第1の加速度条件判定手段は、前記加速度データで示される加速度の大きさが第1の所定値より大きいか否かを判定し、当該第1の所定値より大きいときに、前記所定の条件を満たしたと判定する、請求項1に記載のゲーム装置。
【請求項6】
前記第2制御手段は、前記加速度データが所定の条件を満たしたと判定されたとき、前記所定のオブジェクトと他のオブジェクトとの衝突判定を行うための当たり判定領域を設定する当たり判定領域設定手段を含む、請求項1に記載のゲーム装置。
【請求項7】
前記第2の制御手段は、
前記当たり判定領域設定手段によって当たり判定領域が設定された後、前記加速度データで示される加速度が第2の所定値より小さいか否かを判定する第2の加速度条件判定手段と、
前記第2の加速度条件判定手段によって、前記加速度が前記第2の所定値より小さいと判定されたとき、前記当たり判定領域を消去する、当たり判定領域消去手段とを含む、請求項6に記載のゲーム装置。
【請求項8】
前記当たり判定領域設定手段は、前記加速度データに基づいて、前記当たり判定領域と前記他のオブジェクトとの衝突時の効果を設定する、請求項6に記載のゲーム装置。
【請求項9】
ゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
加速度センサおよびジャイロセンサを少なくとも備えた入力装置から加速度データおよび角速度データを少なくとも含む操作データを取得する操作データ取得手段と、
前記角速度データに基づいて、仮想空間内の所定のオブジェクトの姿勢および位置の少なくとも1つを変化させる第1の制御手段と、
前記第1の制御手段によって前記所定のオブジェクトの姿勢および位置の少なくとも1つが制御されているときに、前記加速度データが所定の条件を満たしたか否かを判定する第1の加速度条件判定手段と、
前記第1の加速度条件判定手段が前記加速度データが所定の条件を満たしたと判定したとき、前記所定のオブジェクトに所定の動作を開始させる第2の制御手段として機能させる、ゲームプログラム。
【請求項10】
前記第2の制御手段は、前記加速度データが所定の条件を満たしたと判定されたときの前記所定のオブジェクトの姿勢または位置の少なくとも一つを基準として、前記所定の処理を開始させる、請求項9に記載のゲームプログラム。
【請求項11】
前記第2の制御手段は、前記加速度データが所定の条件を満たしたと判定されたときの当該加速度データに基づいて前記所定のオブジェクトの移動方向を決定し、当該決定された方向へ当該所定のオブジェクトを移動させる、請求項9に記載のゲームプログラム。
【請求項12】
前記ゲームプログラムは、前記コンピュータを、前記第2の制御手段が前記所定のオブジェクトを移動させているとき、前記角速度データに基づいて当該所定のオブジェクトの姿勢を更新する姿勢更新手段として更に機能させる、請求項9に記載のゲームプログラム。
【請求項13】
前記第1の加速度条件判定手段は、前記加速度データで示される加速度の大きさが第1の所定値より大きいか否かを判定し、当該第1の所定値より大きいときに、前記所定の条件を満たしたと判定する、請求項9に記載のゲームプログラム。
【請求項14】
前記第2制御手段は、前記加速度データが所定の条件を満たしたと判定されたとき、前記所定のオブジェクトと他のオブジェクトとの衝突判定を行うための当たり判定領域を設定する当たり判定領域設定手段を含む、請求項9に記載のゲームプログラム。
【請求項15】
前記第2の制御手段は、
前記当たり判定領域設定手段によって当たり判定領域が設定された後、前記加速度データで示される加速度が第2の所定値より小さいか否かを判定する第2の加速度条件判定手段と、
前記第2の加速度条件判定手段によって、前記加速度が前記第2の所定値より小さいと判定されたとき、前記当たり判定領域を消去する、当たり判定領域消去手段とを含む、請求項14に記載のゲームプログラム。
【請求項16】
前記当たり判定領域設定手段は、前記加速度データに基づいて、前記当たり判定領域と前記他のオブジェクトとの衝突時の効果を設定する、請求項14に記載のゲームプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate