(57)【要約】【課題】加速度センサとジャイロセンサの双方を用いるゲームにおいて、新規な制御によってゲームが実行できるゲーム装置を提供すること。【解決手段】加速度センサおよびジャイロセンサを少なくとも備えた入力装置から加速度データおよび角速度データを少なくとも含む操作データを取得する。次に、角速度データに基づいて、仮想空間内の所定のオブジェクトの姿勢および位置の少なくとも１つを制御する。そして、角速度データに基づく所定のオブジェクトの姿勢および位置の少なくとも１つが制御されているときに、加速度データが所定の条件を満たしたか否かを判定する。その結果、加速度データが所定の条件を満たしていれば所定のオブジェクトに所定の動作を開始させる。【選択図】図２５
2010142561.tif 000002
【特許請求の範囲】
【請求項１】
加速度センサおよびジャイロセンサを少なくとも備えた入力装置から加速度データおよび角速度データを少なくとも含む操作データを取得する操作データ取得手段と、
前記角速度データに基づいて、仮想空間内の所定のオブジェクトの姿勢および位置の少なくとも１つを制御する第１の制御手段と、
前記第１の制御手段によって前記所定のオブジェクトの姿勢および位置の少なくとも１つが制御されているときに、前記加速度データが所定の条件を満たしたか否かを判定する第１の加速度条件判定手段と、
前記第１の加速度条件判定手段が前記加速度データが所定の条件を満たしたと判定したとき、前記所定のオブジェクトに所定の動作を開始させる第２の制御手段とを備える、ゲーム装置。
【請求項２】
前記第２の制御手段は、前記加速度データが所定の条件を満たしたと判定されたときの前記所定のオブジェクトの姿勢または位置の少なくとも一つを基準として、前記所定の処理を開始させる、請求項１に記載のゲーム装置。
【請求項３】
前記第２の制御手段は、前記加速度データが所定の条件を満たしたと判定されたときの当該加速度データに基づいて前記所定のオブジェクトの移動方向を決定し、当該決定された方向へ当該所定のオブジェクトを移動させる、請求項１に記載のゲーム装置。
【請求項４】
前記ゲーム装置は、前記第２の制御手段が前記所定のオブジェクトを移動させているとき、前記角速度データに基づいて当該所定のオブジェクトの姿勢を更新する姿勢更新手段を更に備える、請求項１に記載のゲーム装置。
【請求項５】
前記第１の加速度条件判定手段は、前記加速度データで示される加速度の大きさが第１の所定値より大きいか否かを判定し、当該第１の所定値より大きいときに、前記所定の条件を満たしたと判定する、請求項１に記載のゲーム装置。
【請求項６】
前記第２制御手段は、前記加速度データが所定の条件を満たしたと判定されたとき、前記所定のオブジェクトと他のオブジェクトとの衝突判定を行うための当たり判定領域を設定する当たり判定領域設定手段を含む、請求項１に記載のゲーム装置。
【請求項７】
前記第２の制御手段は、
前記当たり判定領域設定手段によって当たり判定領域が設定された後、前記加速度データで示される加速度が第２の所定値より小さいか否かを判定する第２の加速度条件判定手段と、
前記第２の加速度条件判定手段によって、前記加速度が前記第２の所定値より小さいと判定されたとき、前記当たり判定領域を消去する、当たり判定領域消去手段とを含む、請求項６に記載のゲーム装置。
【請求項８】
前記当たり判定領域設定手段は、前記加速度データに基づいて、前記当たり判定領域と前記他のオブジェクトとの衝突時の効果を設定する、請求項６に記載のゲーム装置。
【請求項９】
ゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
加速度センサおよびジャイロセンサを少なくとも備えた入力装置から加速度データおよび角速度データを少なくとも含む操作データを取得する操作データ取得手段と、
前記角速度データに基づいて、仮想空間内の所定のオブジェクトの姿勢および位置の少なくとも１つを変化させる第１の制御手段と、
前記第１の制御手段によって前記所定のオブジェクトの姿勢および位置の少なくとも１つが制御されているときに、前記加速度データが所定の条件を満たしたか否かを判定する第１の加速度条件判定手段と、
前記第１の加速度条件判定手段が前記加速度データが所定の条件を満たしたと判定したとき、前記所定のオブジェクトに所定の動作を開始させる第２の制御手段として機能させる、ゲームプログラム。
【請求項１０】
前記第２の制御手段は、前記加速度データが所定の条件を満たしたと判定されたときの前記所定のオブジェクトの姿勢または位置の少なくとも一つを基準として、前記所定の処理を開始させる、請求項９に記載のゲームプログラム。
【請求項１１】
前記第２の制御手段は、前記加速度データが所定の条件を満たしたと判定されたときの当該加速度データに基づいて前記所定のオブジェクトの移動方向を決定し、当該決定された方向へ当該所定のオブジェクトを移動させる、請求項９に記載のゲームプログラム。
【請求項１２】
前記ゲームプログラムは、前記コンピュータを、前記第２の制御手段が前記所定のオブジェクトを移動させているとき、前記角速度データに基づいて当該所定のオブジェクトの姿勢を更新する姿勢更新手段として更に機能させる、請求項９に記載のゲームプログラム。
【請求項１３】
前記第１の加速度条件判定手段は、前記加速度データで示される加速度の大きさが第１の所定値より大きいか否かを判定し、当該第１の所定値より大きいときに、前記所定の条件を満たしたと判定する、請求項９に記載のゲームプログラム。
【請求項１４】
前記第２制御手段は、前記加速度データが所定の条件を満たしたと判定されたとき、前記所定のオブジェクトと他のオブジェクトとの衝突判定を行うための当たり判定領域を設定する当たり判定領域設定手段を含む、請求項９に記載のゲームプログラム。
【請求項１５】
前記第２の制御手段は、
前記当たり判定領域設定手段によって当たり判定領域が設定された後、前記加速度データで示される加速度が第２の所定値より小さいか否かを判定する第２の加速度条件判定手段と、
前記第２の加速度条件判定手段によって、前記加速度が前記第２の所定値より小さいと判定されたとき、前記当たり判定領域を消去する、当たり判定領域消去手段とを含む、請求項１４に記載のゲームプログラム。
【請求項１６】
前記当たり判定領域設定手段は、前記加速度データに基づいて、前記当たり判定領域と前記他のオブジェクトとの衝突時の効果を設定する、請求項１４に記載のゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジャイロセンサと加速度センサを利用したゲームを実行するゲーム装置およびゲームプログラムに関し、より特定的には、入力装置に加えられた動きを検出してゲーム処理に反映するゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
従来より、ジャイロセンサと加速度センサを備えた、ゲーム装置の入力制御装置が知られている（例えば、特許文献１）。当該入力制御装置は棒状に形成されており、これを刀に見立てて遊ぶゲーム処理が実行される。このゲーム処理では、加速度センサの出力に基づいて、刀を振る動作、例えば、強弱、前後左右上下の移動のデータが作成される。また、ジャイロセンサの出力に基づいて、刀を回す（ひねる）姿勢や、前後左右に傾ける姿勢のデータが作成される。そして、上記作成されたデータに基づいて、ゲーム内のオブジェクト（この場合には、刀）の移動した様子を、モニタのゲーム画面に出力している。
【特許文献１】特開２０００−３０８７５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述したような入力制御装置を用いたゲーム処理においては、以下に示す問題点があった。まず、上記入力制御装置の各動作の検出に際しては、加速度センサ、ジャイロセンサのいずれか一方のセンサ出力しか利用していない。すなわち、刀を振る動作の検出については、加速度センサからの出力のみを利用しており、刀を回す動作の検出については、ジャイロセンサからの出力のみしか利用していない。
【０００４】
また、上記刀を振る動作に関して、加速度センサからの出力のみを利用しているが、加速度センサのみでは、入力制御装置が動いている間の姿勢の変化を正確に検出することが困難であるという問題もあった。静止時の加速度センサの姿勢は、センサ出力が重力加速度であるとみなして算出することが可能であるが、動いている間のセンサ出力には重力加速度だけでなく運動による加速度も加えられるので、姿勢を算出することは困難である。そして、重力加速度の方向が分からなくなるので、動いた方向を判別することもまた困難になる。そのため、例えば、上から下に向けてジグザグな軌道となるように入力制御装置（刀）を動かしたとき（図３１参照）、当該軌道の折り返し時における姿勢が変化しても検出できず、実際にどの方向に刀が動いたのか分からなくなるという問題もあった。つまり、プレイヤの操作を正確に刀の動きとして反映できないという問題もあった。
【０００５】
それ故に、本発明の目的は、加速度センサとジャイロセンサの双方を用いるゲームにおいて、新規な制御によってゲームが実行できるゲーム装置を提供することである。また、本願のさらに他の目的は、加速度センサとジャイロセンサの双方を用いるゲームにおいて、プレイヤによって動かされた入力装置の姿勢をより正確にゲーム内のオブジェクトの姿勢に反映できるゲーム装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、操作データ取得手段（１０）と、第１の制御手段（１０）と、第１の加速度条件判定手段（１０）と、第２の制御手段（１０）とを備える、ゲーム装置である。操作データ取得手段は、加速度センサおよびジャイロセンサを少なくとも備えた入力装置から加速度データおよび角速度データを少なくとも含む操作データを取得する。第１の制御手段は、角速度データに基づいて、仮想空間内の所定のオブジェクトの姿勢および位置の少なくとも１つを制御する。第１の加速度条件判定手段は、第１の制御手段によって所定のオブジェクトの姿勢および位置の少なくとも１つが制御されているときに、加速度データが所定の条件を満たしたか否かを判定する。第２の制御手段は、第１の加速度条件判定手段が加速度データが所定の条件を満たしたと判定したとき、所定のオブジェクトに所定の動作を開始させる。
【０００８】
第１の発明によれば、角速度に基づいて所定のオブジェクトが制御されているときに、所定の条件を満たす加速度が検出されれば、当該所定のオブジェクトに所定の動作を開始させることができる。これにより、新規な操作性を有するゲームを提供することができる。
【０００９】
第２の発明は、第１の発明において、第２の制御手段は、加速度データが所定の条件を満たしたと判定されたときの所定のオブジェクトの姿勢または位置の少なくとも一つを基準として、所定の処理を開始させる。
【００１０】
第２の発明によれば、プレイヤに違和感を感じさせずに、所定のオブジェクトの操作を開始させることができる。
【００１１】
第３の発明は、第１の発明において、第２の制御手段は、加速度データが所定の条件を満たしたと判定されたときの当該加速度データに基づいて、所定のオブジェクトの移動方向を決定し、当該決定された方向へ当該所定のオブジェクトを移動させる。
【００１２】
第３の発明によれば、所定のオブジェクトの動作について、プレイヤに違和感を感じさせない動作を行わせることができる。
【００１３】
第４の発明は、第１の発明において、ゲーム装置は、第２の制御手段が所定のオブジェクトを移動させているとき、角速度データに基づいて当該所定のオブジェクトの姿勢を更新する、姿勢更新手段を更に備える。
【００１４】
第４の発明によれば、プレイヤが入力装置に対して行った操作を、より正確に所定のオブジェクトの動作に反映することができる。
【００１５】
第５の発明は、第１の発明において、第１の加速度条件判定手段は、加速度データで示される加速度の大きさが第１の所定値より大きいか否かを判定し、当該第１の所定値より大きいときに、所定の条件を満たしたと判定する。
【００１６】
第５の発明によれば、入力装置を動かす速度が速いときに、所定のオブジェクトに所定の動作を開始させることができる。これにより、例えば、剣を振る動作を模したゲームにおいて、よりゲームの興趣性を高めることができる。
【００１７】
第６の発明は、第１の発明において、第２の制御手段は、加速度データが所定の条件を満たしたと判定されたとき、所定のオブジェクトと他のオブジェクトとの衝突判定を行うための当たり判定領域を設定する当たり判定領域設定手段を含む。
【００１８】
第７の発明は、第６の発明において、第２の制御手段は、第２の加速度条件判定手段と、当たり判定領域消去手段とを含む。第２の加速度条件判定手段は、当たり判定領域設定手段によって当たり判定領域が設定された後、加速度データで示される加速度が第２の所定値より小さいか否かを判定する。当たり判定領域消去手段は、第２の加速度条件判定手段によって加速度が第２の所定値より小さいと判定されたとき、当たり判定領域を消去する。
【００１９】
第６乃至第７の発明によれば、入力装置を動かす速度が速いときにのみ、所定のオブジェクトと他のオブジェクトとの衝突判定が行われるため、プレイヤが遅い速度で入力装置を動かす際の操作性を高めることができる。
【００２０】
第８の発明は、第６の発明において、当たり判定領域設定手段は、加速度データに基づいて、当たり判定領域と他のオブジェクトとの衝突時の効果を設定する。
【００２１】
第８の発明によれば、所定のオブジェクトが他のオブジェクトを衝突したときの効果を加速度に応じて変化させることができ、ゲームの興趣性を高めることができる。
【００２２】
第９の発明は、ゲーム装置のコンピュータに実行させるゲームプログラムであって、コンピュータを、操作データ取得手段（Ｓ４）と、第１の制御手段（Ｓ２８，Ｓ２９）と、第１の加速度条件判定手段（Ｓ２４）と、第２の制御手段（Ｓ１２）として機能させる。操作データ取得手段は、加速度センサおよびジャイロセンサを少なくとも備えた入力装置から加速度データおよび角速度データを少なくとも含む操作データを取得する。第１の制御手段は、角速度データに基づいて、仮想空間内の所定のオブジェクトの姿勢および位置の少なくとも１つを変化させる。第１の加速度条件判定手段は、第１の制御手段によって所定のオブジェクトの姿勢および位置の少なくとも１つが制御されているときに、加速度データが所定の条件を満たしたか否かを判定する。第２の制御手段は、第１の加速度条件判定手段が加速度データが所定の条件を満たしたと判定したとき、所定のオブジェクトに所定の動作を開始させる。
【００２３】
第１０の発明は、第９の発明において、第２の制御手段は、加速度データが所定の条件を満たしたと判定されたときの所定のオブジェクトの姿勢または位置の少なくとも一つを基準として、所定の処理を開始させる。
【００２４】
第１１の発明は、第９の発明において、第２の制御手段は、加速度データが所定の条件を満たしたと判定されたときの当該加速度データに基づいて、所定のオブジェクトの移動方向を決定し、当該決定された方向へ当該所定のオブジェクトを移動させる。
【００２５】
第１２の発明は、第９の発明において、ゲームプログラムは、コンピュータを、第２の制御手段が所定のオブジェクトを移動させているとき、角速度データに基づいて当該所定のオブジェクトの姿勢を更新する姿勢更新手段として更に機能させる。
【００２６】
第１３の発明は、第９の発明において、第１の加速度条件判定手段は、加速度データで示される加速度の大きさが第１の所定値より大きいか否かを判定し、当該第１の所定値より大きいときに、所定の条件を満たしたと判定する。
【００２７】
第１４の発明は、第９の発明において、第２の制御手段は、加速度データが所定の条件を満たしたと判定されたとき、所定のオブジェクトと他のオブジェクトとの衝突判定を行うための当たり判定領域を設定する当たり判定領域設定手段を含む。
【００２８】
第１５の発明は、第１４の発明において、第２の制御手段は、第２の加速度条件判定手段と、当たり判定領域消去手段とを含む。第２の加速度条件判定手段は、当たり判定領域設定手段によって当たり判定領域が設定された後、加速度データで示される加速度が第２の所定値より小さいか否かを判定する。当たり判定領域消去手段は、第２の加速度条件判定手段によって加速度が第２の所定値より小さいと判定されたとき、当たり判定領域を消去する。
【００２９】
第１６の発明は、第１４の発明において、当たり判定領域設定手段は、加速度データに基づいて、当たり判定領域と他のオブジェクトとの衝突時の効果を設定する。
【００３０】
本発明のゲームプログラムによれば、上述した本発明のゲーム装置と同様の効果を得ることができる。
【発明の効果】
【００３１】
本発明によれば、加速度センサとジャイロセンサの双方を用いた、新規な操作性を有するゲームを提供する事ができる。
【発明を実施するための最良の形態】
【００３２】
［ゲームシステムの全体構成］
図１を参照して、本発明の一実施形態に係る姿勢算出装置の一例であるゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、入力装置８、およびマーカ部６を含む。本システムは、入力装置８を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００３３】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００３４】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００３５】
入力装置８は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与えるものである。本実施形態では、入力装置８はコントローラ５とジャイロセンサユニット７とを含む。詳細は後述するが、入力装置８は、コントローラ５に対してジャイロセンサユニット７が着脱可能に接続されている構成である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。
【００３６】
［ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００３７】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩの内部構成について後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００３８】
また、システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００３９】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００４０】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００４１】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００４２】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００４３】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００４４】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００４５】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００４６】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００４７】
［入力装置８の構成］
次に、図３〜図６を参照して、入力装置８について説明する。図３は、入力装置８の外観構成を示す斜視図である。図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００４８】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００４９】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。本明細書では、これらのボタン３２ａ〜３２ｈが設けられるハウジング３１の上面を「ボタン面」と呼ぶことがある。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００５０】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、ジャイロセンサユニット７や他のコントローラ）を接続するために利用される。また、ハウジング３１の後面におけるコネクタ３３の両側には、上記他の機器が容易に離脱することを防止するために係止穴３３ａが設けられている。
【００５１】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のメインコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００５２】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００５３】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４９（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００５４】
次に、図５および図６を参照して、コントローラ５の内部構造について説明する。図５および図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００５５】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図６）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００５６】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００５７】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４８が設けられている。バイブレータ４８は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４８が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４８は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４８がコントローラ５の中心よりも端側に配置することによって、バイブレータ４８の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５および図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４９に音声信号を出力するアンプ等を備えている。
【００５８】
次に、図７〜図１０を用いて、ジャイロセンサユニット７について説明する。図７にはジャイロセンサユニット７の外観の一例が示される。図７（ａ）は、ジャイロセンサユニット７を上面前方から見た斜視図であり、図７（ｂ）は、ジャイロセンサユニット７を下面後方から見た斜視図である。
【００５９】
ジャイロセンサユニット７は、たとえばプラスチック成型によって形成されたハウジング７１０を有している。ハウジング７１０は、略直方体形状を有しており、その長さはコントローラ５のハウジング３１の長さのおよそ１／５、その幅および厚みはハウジング３１の幅および厚みとほぼ同じである。プレイヤは、コントローラ５にジャイロセンサユニット７を装着した状態でも、コントローラ５自体の位置や向きを変えることによって、ゲーム操作を行うことができる。
【００６０】
ハウジング７１０の前面および後面には上述のコネクタ７０６および７０８が、ハウジング７１０の両側面には一対のリリースボタン７１２ａおよび７１２ｂが、そしてハウジング７１０の下面にはロックスイッチ７１４が、それぞれ設けられている。ハウジング７１０の前面下端から下面先端にかけては、コントローラ５にジャイロセンサユニット７を装着した状態でストラップ（図示せず）用の孔４８ｃが露見するように（図８）、略球面状の凹部７１０ａが設けられている。
【００６１】
ハウジング７１０の前面にはまた、コネクタ７０６を挟んで横方向（ｘ軸方向）に対向する位置に、一対のリリースボタン７１２ａおよび７１２ｂとそれぞれ連繋する一対のフック７１２Ｆａおよび７１２Ｆｂが設けられている。ジャイロセンサユニット７をコントローラ５に装着するべく、コネクタ７０６をコネクタ３３に接続すると、一対のフック７１２Ｆａおよび７１２Ｆｂはハウジング３１後面の一対の孔３３ａ（図３）に挿入され、フック７１２Ｆａおよび７１２Ｆｂの爪がハウジング３１の内壁に引っ掛かる。これによって、ジャイロセンサユニット７は、コントローラ５の後面に固定される。
【００６２】
こうしてコントローラ５に装着されたジャイロセンサユニット７が図８に示される。この状態で一対のリリースボタン７１２ａおよび７１２ｂを押せば、爪の引っ掛かりは解け、ジャイロセンサユニット７をコントローラ５から取り外せるようになる。
【００６３】
ロックスイッチ７１４は、このようなリリースボタン７１２ａおよび７１２ｂにロックをかけるためのスライドスイッチである。リリースボタン７１２ａおよび７１２ｂは、ロックスイッチ７１４が第１位置（たとえば後ろ寄り）にあるとき押下不能（ロック状態）であり、ロックスイッチ７１４が第２位置（たとえば前寄り）にあるとき押下可能（解除状態）である。ハウジング７１０内には、ロックバネ７１８ａおよび７１８ｂ（図１０）が設けられ、リリースボタン７１２ａおよび７１２ｂを押下すると反発するように構成され、押下されていないときは爪が引っ掛かった状態を維持するように構成されている。このため、ジャイロセンサユニット７を取り外すには、ユーザは、ロックスイッチ７１４を第１位置から第２位置にスライドさせたうえで、リリースボタン７１２ａおよび７１２ｂを押す必要がある。
【００６４】
このように、ジャイロセンサユニット７は、コントローラ５の後面に装着されるため、ゲーム操作中にジャイロセンサユニット７に加わる遠心力は専ら、ジャイロセンサユニット７をコントローラ５に押し付けるように作用する。また、ジャイロセンサユニット７をフック７１２Ｆａおよび７１２Ｆｂでコントローラ５の後面に固定する一方、フック７１２Ｆａおよび７１２Ｆｂを開放するためリリースボタン７１２ａおよび７１２ｂにはロックスイッチ７１４を設けたため、ジャイロセンサユニット７をコントローラ５に固定することができる。
【００６５】
ハウジング７１０の後面にはまた、コネクタ７０８に装着されるコネクタカバー７１６を収納可能な凹部７１０ｂが、このコネクタ７０８の周囲に形成される。コネクタカバー７１６は、その主面の一方端部に、前後（Ｚ軸方向）に長細い薄手の（すなわち曲折容易な）突起７１６ａを有する。この突起７１６ａの先端部分がハウジング７１０と係合されており、コネクタカバー７１６は、コネクタ７０８から取り外された状態でもハウジング７１０に係留される。
【００６６】
図９にはジャイロセンサユニット７の構成の一例が示される。ジャイロセンサユニット７は、上述したハウジング７１０、コネクタ７０６および７０８、リリースボタン７１２ａおよび７１２ｂ、フック７１２Ｆａおよび７１２Ｆｂ、ロックスイッチ７１４、コネクタカバー７１６ならびにロックバネ７１８ａおよび７１８ｂに加え、ジャイロ基板７２０および支持部材７２６を備える。ジャイロ基板７２０はコネクタ７０６および７０８の各々と信号線で接続され、支持部材７２６はジャイロ基板７２０ならびにコネクタ７０６および７０８を支持する。
【００６７】
ジャイロ基板７２０にはジャイロセンサ５５が設けられる。ジャイロセンサ５５は、１軸のジャイロセンサ５５ａおよび２軸のジャイロセンサ５５ｂの２チップで構成される。ジャイロセンサ５５ａはヨー角に関する（単位時間あたりの）角速度（Ｙ軸周りの角速度）を検出するためのものであり、ジャイロセンサ５５ｂはロール角およびピッチ角に関する２つの（単位時間あたりの）角速度（ｚ軸周りの角速度およびｘ軸周りの角速度）を検出するためのものである。ジャイロセンサ５５ａおよび５５ｂは、ジャイロ基板７２０の上面７２０ａに水平に並べて設けられる。なお、本明細書では、図１０に示すように、コントローラ５の撮像方向（ｚ軸正方向）を基準として、ｘｙｚ軸周りの回転方向を、それぞれ、ピッチ方向、ヨー方向、ロール方向と呼ぶ。
【００６８】
なお、ジャイロセンサ５５ａおよび５５ｂの配置は、図９に示されたものに限らない。他の実施例では、ジャイロセンサ５５ａは、ジャイロ基板７２０の上面７２０ａおよび下面７２０ｂの一方に水平に設けられ、ジャイロセンサ５５ｂは、ジャイロ基板７２０の上面７２０ａおよび下面７２０ｂの他方に水平に、ジャイロ基板７２０を挟んでジャイロセンサ５５ａと対向するように設けられる。その他の実施例では、ジャイロセンサ５５ａはジャイロ基板７２０の上面７２０ａおよび下面７２０ｂの一方に垂直に設けられ、ジャイロセンサ５５ｂはジャイロ基板７２０の上面７２０ａおよび下面７２０ｂの他方に水平に設けられる。
【００６９】
また、ジャイロセンサ５５は、２チップ構成とは限らず、３個の１軸ジャイロセンサ（３チップ）で構成してもよく、１個の３軸ジャイロセンサ（１チップ）で構成してもよい。いずれの場合も、上述の３つの角速度を適正に検出できるように、各チップの位置や向きが決定される。さらにまた、場合によっては、ジャイロセンサ５５は、１個の２軸ジャイロセンサで構成しても、２個または１個の１軸ジャイロセンサで構成してもよい。
【００７０】
なお、図３に示したコントローラ５、および図７に示したジャイロセンサユニット７の形状や、ボタン（スイッチまたはスティック等）の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置等に適宜変更され得る。
【００７１】
なお、センサは、好ましい実施例ではジャイロセンサ（角速度センサ）であるが、たとえば加速度センサ、速度センサ、変位センサ、回転角センサなど、他のモーションセンサでもよい。モーションセンサ以外にも、傾斜センサ、イメージセンサ、光センサ、圧力センサ、磁気センサ、温度センサなどがあり、いずれのセンサを追加する場合でも、センサの検出対象を利用した操作が可能となる。いずれのセンサを用いた場合でも、従来操作装置に接続されていた他の装置をそのまま使用しながら、操作装置に当該センサを追加することができる。
【００７２】
図１１は、入力装置８（コントローラ５およびジャイロセンサユニット７）の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、および加速度センサ３７を備えている。コントローラ５は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００７３】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００７４】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００７５】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるマーカ部６のマーカ６Ｒおよび６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒおよび６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒおよび６Ｌ）の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００７６】
なお、他の実施形態においては、コントローラ５は画像処理回路４１を備えていない構成であってもよく、撮像画像自体がコントローラ５からゲーム装置３へ送信されてもよい。このとき、ゲーム装置３は、画像処理回路４１と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【００７７】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、３軸または２軸の加速度センサは、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。なお、加速度センサ３７は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００７８】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すｙ軸方向）、左右方向（図３に示すｘ軸方向）および前後方向（図３に示すｚ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置８（コントローラ５）を基準に設定されるｘｙｚ座標系（コントローラ座標系）における３次元のベクトル（ａｘ，ａｙ，ａｚ）として表される。以下では、加速度センサ３７によって検出される３軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【００７９】
加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ５の向きや動きを算出することができる。本実施形態では、ゲーム装置３は、加速度データに基づいてコントローラ５の姿勢を判断する。
【００８０】
加速度センサ３７が検出した加速度（加速度ベクトル）を示すデータ（加速度データ）は、通信部３６へ出力される。本実施形態において、加速度センサ３７は、コントローラ５の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
【００８１】
なお、加速度センサ３７から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）またはコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かによって、コントローラ５が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ５がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ５の傾斜方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾斜角度または姿勢を判定することができる。
【００８２】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の動き方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００８３】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。また、マイコン４２はコネクタ３３に接続されている。ジャイロセンサユニット７から送信されてくるデータは、コネクタ３３を介してマイコン４２に入力される。
【００８４】
ジャイロセンサユニット７は、コネクタ７０６、マイコン５４、ジャイロセンサ５５を備えている。上述のように、ジャイロセンサユニット７は、３軸（本実施形態では、ｘｙｚ軸）周りの角速度を検出し、検出した角速度を示すデータ（角速度データ）をコントローラ５へ送信する。
【００８５】
各ジャイロセンサ５５で検出された角速度を示すデータは、マイコン５４に出力される。したがって、マイコン５４には、ｘｙｚ軸の３軸回りの角度速度を示すデータが入力されることになる。マイコン５４は、上記３軸回りの角速度を示すデータを角速度データとしてプラグ５３を介してコントローラ５へ送信する。なお、マイコン５４からコントローラ５への送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【００８６】
また、本実施形態では、後述する姿勢算出処理における計算を容易にする目的で、各ジャイロセンサ５５および５６が角速度を検出する３つの軸は、加速度センサ３７が加速度を検出する３つの軸（ｘｙｚ軸）と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ５６および５７が角速度を検出する３つの軸と、加速度センサ３７が加速度を検出する３つの軸とは一致しなくてもよい。
【００８７】
コントローラ５の説明に戻り、操作部３２、撮像情報演算部３５、および加速度センサ３７からマイコン４２へ出力されたデータ、ならびに、ジャイロセンサユニット７からマイコン４２へ送信されてきたデータは、一時的にメモリ４３に格納される。これらのデータは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３の無線コントローラモジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部３６から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、本実施形態のゲームの処理は１／３０秒または１／６０秒を単位として（１フレーム時間として）行われるものとする。そのため、上記無線送信は、この時間以下の周期で送信を行うことが好ましい。本実施形態では、コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の無線コントローラモジュール１９へ出力するものとして、以下説明する。
【００８８】
上記入力装置８を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、入力装置８を任意の傾斜角度に傾ける操作を行うことができる。その他、上記入力装置８によれば、プレイヤは、入力装置８によって画面上の任意の位置を指示する操作、および、入力装置８自体を動かす操作を行うこともできる。
【００８９】
次に、図１２〜図２２を用いて、本実施形態で想定するゲーム、および、本実施形態にかかる処理の概要について説明する。本ゲームは、仮想３次元空間内でプレイヤオブジェクトを操作するアクションアドベンチャーゲームである。図１２は、本実施形態で想定するゲームの画面の一例である。図１２において、ゲーム画面には、３次元仮想ゲーム空間の様子が表示されている。３次元仮想ゲーム空間にはプレイヤオブジェクト１０１が存在しており、その全身が表示されている。また、ゲーム画面には、敵オブジェクト１０２、および、カーソル１０３も表示されている。この状態で、プレイヤを移動させることができる。また、図１２の画面では、プレイヤオブジェクト１０１は剣オブジェクト１０４を背負っているが、剣オブジェクト１０４は抜いていない状態（鞘に収めている状態）である。以下、このときのプレイヤオブジェクト１０１の状態のことを「非戦闘状態」と呼ぶ。
【００９０】
ここで、本ゲームでは、敵オブジェクト１０２に攻撃する際、プレイヤオブジェクト１０１の目線（１人称視点）で見たような画面に切り替えて攻撃することができる。当該画面への切替操作は、「ポインタロック」と呼ばれる操作を行うことで可能である。具体的には、上記図１２に示すような状態で、プレイヤは、カーソル１０３を敵オブジェクト１０２に重ねる操作を行う。具体的には、たとえば撮像情報演算部３５から得られる上述のマーカ座標に基づいて、入力装置８の動きに合わせてカーソル１０３を動かすことができる。そして所定のボタン、例えば操作ボタン３２ｄをプレイヤが押すという操作を「ポインタロック」操作と呼ぶ。このような操作を行うことで、当該カーソル１０３が重なっている敵オブジェクト１０２をロックオンする処理が実行される。これに合わせて、仮想カメラがプレイヤオブジェクト１０１の目の位置に移動し、図１３に示すような、一人称視点で見たゲーム画面（以下、主観画面と呼ぶ）が表示される。またこのとき、（画面には表示されないが）プレイヤオブジェクト１０１は剣オブジェクト１０４を鞘から抜く動作を行っている。
【００９１】
次に、上記主観画面に関する制御について説明する。当該主観画面では、仮想カメラの注視点がカーソル１０３を重ねた敵オブジェクト１０２に設定される。つまり、プレイヤオブジェクト１０１が敵オブジェクト１０２に注目しているような仮想カメラ制御が行われる。また、図１３に示されるように、ゲーム画面が一人称視点（プレイヤオブジェクト１０１の目線）で描かれるため、プレイヤオブジェクト１０１自体は表示されないが、剣オブジェクト１０４は、（鞘から抜いたため）表示されている状態である。そして、プレイヤは、入力装置８を剣に見立て、入力装置８を移動させたり、入力装置８を振る操作を行うことで、当該剣オブジェクト１０４を操作することが可能である。例えば、図１３のような状態（このとき、入力装置８の姿勢は、剣オブジェクト１０４の姿勢とほぼ同じ姿勢であるとする）で、プレイヤが入力装置８を左から右斜め上に所定の速度以上で移動させる、つまり、右上に斬り上げるような動作を行うと、図１４に示すように、剣オブジェクト１０４で敵オブジェクト１０２を斬りつける攻撃が可能である。図１４では、剣オブジェクト１０４が敵オブジェクト１０２に命中しており、また、剣オブジェクト１０４の移動軌跡を示す演出効果であるブラー効果１０５も表示されている。
【００９２】
なお、主観画面が表示されている状態において、上記敵オブジェクト１０２を倒すか、主観画面を解除するための所定の操作を行うことで、図１２に示したような画面に切り替えることができる。すなわち、仮想カメラの制御を１人称視点の制御から上記図１２に示したような、プレイヤオブジェクト１０１の全身が撮影されるようなカメラ制御へ切り替えることができる。
【００９３】
次に、上記主観画面での攻撃操作に関して説明する。上記のように、主観画面において、入力装置８を剣に見立てた操作を行うことで、剣オブジェクト１０４を操作することができる。ここで、本ゲームにおいて、当該主観画面におけるプレイヤオブジェクト１０１の状態として、「構え状態」と「攻撃中状態」の２種類の状態を定義している。
【００９４】
「構え状態」は、プレイヤオブジェクト１０１が剣オブジェクト１０４を鞘から抜いて構えている状態に相当する状態を示している。この状態の時は、入力装置８から出力される角速度に基づいて、剣オブジェクト１０４の位置や姿勢が更新される。また、「構え状態」においては、剣オブジェクト１０４と他のオブジェクト（典型的には敵オブジェクト１０２）との衝突判定が行われない。
【００９５】
一方、「攻撃中状態」は、剣オブジェクト１０４を振って攻撃している状態を示す。本ゲームでは、「構え状態」のときに、プレイヤが所定の速度以上で入力装置８を振ると、「構え状態」から「攻撃中状態」に移行することができる。「攻撃中状態」となった後、入力装置８を振る速度が所定の速度未満になれば、「攻撃中状態」は終了し、「構え状態」に戻る。すなわち、剣オブジェクト１０４が予めされ定められた所定の速度以上の速度を有して移動している状態が「攻撃中状態」となる。
【００９６】
また、「攻撃中状態」のときは、剣オブジェクト１０４と他のオブジェクトとの衝突判定が行われる。そのため、「構え状態」のとき、例えば、入力装置８を上記所定の速度未満の速度で左から右に動かす（つまり、ゆっくりと動かす）と、剣オブジェクト１０４が敵オブジェクト１０２に重なっても、衝突判定が行われず、そのまま通過することになる。つまり、攻撃が当たらないことになる。一方、プレイヤが所定の速度以上の速度で入力装置８を振れば、すなわち、剣オブジェクト１０４が所定の速度以上の速度で敵オブジェクト１０２に向かって移動すれば、剣オブジェクト１０４は敵オブジェクト１０４に衝突する、つまり、攻撃を当てることが可能となる。
【００９７】
このように、入力装置８（剣オブジェクト１０４）の移動速度が所定の速度未満の時は衝突判定を行わないようにしているのは、プレイヤが入力装置８をゆっくりと動かしているときに衝突判定を行うようにすると、剣オブジェクト１０４の構え（移動）の自由度が下がるためである。例えば、ゲーム空間内において、周りが障害物で囲まれたような狭い場所で剣オブジェクトを移動させたとき、剣オブジェクト１０４が壁や障害物等に当たる度に衝突判定を行うと、斬り始めの位置を自由に設定できないため、目的とする対象を斬ることが難しくなり、操作性を低下させてしまう。そのため、入力装置８をゆっくりと動かしているときは、剣オブジェクト１０４の衝突判定は行わないようにし、操作性を高めている。
【００９８】
なお、本ゲームでは、剣オブジェクト１０４の移動可能範囲に制限を設けている。すなわち、人間の腕の可動範囲に対して不自然な位置に剣オブジェクト１０４が移動しないように、腕の可動範囲に準ずるような範囲を「振り可能範囲」として予め定義している。図１５は、振り可能範囲の一例を示す模式図である。図１５は、仮想ゲーム空間を鳥瞰した図であり、プレイヤオブジェクト１０１を中心に、前方に広がる略扇形の範囲が「振り可能範囲」として定義されている。
【００９９】
次に、上記「攻撃中状態」の剣オブジェクトの制御について説明する。上記のように、「構え状態」の時にプレイヤが所定の速度以上の速度で入力装置８を振れば、攻撃中状態に移行するが、本実施形態では、所定の速度以上で振られたか否かの判定を、加速度センサ３７から出力される加速度データに基づいて行っている。すなわち、所定の大きさ以上の加速度が検出されたときに、攻撃中状態に移行させる。そして、当該加速度に基づいて剣オブジェクト１０４の移動方向および移動速度の設定が行われる。ここで、本実施形態では、当該兼オブジェクトの移動方向および速度の決定に際しては、ｘ−ｙの２軸の加速度のみを用いて決定する。すなわち、剣オブジェクト１０４で「突く」ような動作（ｚ軸方向に発生する加速度）は考慮せず、「斬る」動作だけを考慮している。但し、ｚ軸方向の加速度を考慮した処理を行うようにしても良い（ｚ軸方向の加速度を用いた処理の例については後述する）。
【０１００】
また、剣オブジェクト１０４について、上記のような衝突判定を可能とするために、所定の大きさの球オブジェクトを「当たり判定球」として剣オブジェクトに設定する。なお、当該当たり判定球は、プレイヤからは見えない（ゲーム画面には表示されない）ように設定される。図１６に、当たり判定球の設定の一例を示す。図１６（ａ）では、剣オブジェクト１０４の刀身の部分に３つの当たり判定球１０７ａ、１０７ｂ、１０７ｃ（以下、総称して当たり判定球１０７と呼ぶこともある）が設定されている。上述した衝突判定は、この当たり判定球と他のオブジェクトとが衝突したか否かで判定する。
【０１０１】
なお、当該当たり判定球の大きさや数は、加速度の大きさに応じて設定される。例えば、加速度が大きい場合は、剣を振る勢いが強いと考えられるため、図１６（ｂ）に示すように、より大きな当たり判定球１０７ａ〜１０７ｃを設定して広範囲を斬ることができるようにする。また、加速度の大きさが小さいときは、剣を振る勢いが弱めであると考えられるため、図１６（ｃ）に示すように、当たり判定球１０７の大きさも小さく設定することが考えられる。このように、加速度に応じて当たり判定球１０７の大きさや数を設定することで、剣の切れ具合の強弱を表現して、ゲームの興趣性を高めることができる。また、剣で斬ったときの効果や威力についても、加速度の大きさに基づいて設定してもよい。
【０１０２】
上記のように、加速度に基づいて剣オブジェクトの移動方向、移動速度や当たり判定球１０７が設定されると、「攻撃中状態」の間は、当該移動方向に沿って剣オブジェクトを移動させる処理が行われる。ここで、本実施形態では、ゲーム画像の描画間隔は１／３０秒または１／６０秒であり、入力装置８からの操作データの送信間隔は、１／２００秒となっている。そして、本実施形態では、この描画間隔の間に、入力装置８から送信される角速度データに基づいて、入力装置８の姿勢を剣オブジェクト１０４の姿勢に反映する処理が行われる。
【０１０３】
図１７は、当該処理の概念を説明するための模式図である。図１７は、入力装置８を水平にした状態で、後方（図３のコネクタ３３のある側）から見た状態を示している。また、入力装置８を右上方向に振り上げる一連の動きを示している。また、剣オブジェクト１０４についても、水平にした状態で後方から見たものを示している。また、描画タイミングＴ１〜Ｔ３が、上記描画処理が実行されるタイミングを示し、更新タイミングｔ１〜ｔ４は、上記入力装置８から操作データが送信されてくるタイミングを示す。
【０１０４】
本処理では、描画タイミングＴ１において、そのときに検出された加速度に基づき、剣オブジェクト１０４の移動方向および移動速度が決定される。その後、次の描画タイミングＴ２が来るまでの間、当該移動方向および移動速度に従って剣オブジェクト１０４は移動するが、このとき、角速度データに基づいて、剣オブジェクト１０４の姿勢を更新する。すなわち、更新タイミングｔ１、ｔ２のそれぞれの時点において、各時点で検出された角速度データに基づいて剣オブジェクト１０４の姿勢を変更する。そして、次の描画タイミングＴ２が来れば、この時点で検出された加速度に基づいて、剣オブジェクト１０４の移動方向、移動速度を再計算する。その後、次の描画タイミングＴ３が来るまでは、剣オブジェクト１０４は当該再計算された移動方向に従って移動すると同時に、更新タイミングｔ３、ｔ４において、角速度データに基づく剣オブジェクト１０４の姿勢の更新が行われる。
【０１０５】
図１７で示した処理について、より具体的に説明すると、まず、上記描画タイミングＴ１の時点では、上記コントローラ座標系（入力装置８を基準に設定されるｘｙｚ座標系）で考えて、どの方向に加速度が発生しているかを判定する。例えば、図１８（ａ）に示すように、入力装置８を水平にしたまま右方向に動かしたときは、ｘ軸負方向への加速度が検出されることになる。また、図１８（ｂ）に示すように、入力装置８を９０度傾た姿勢で右方向に動かした場合は、ｙ軸負方向への加速度が検出されることになる。そして、図１７の描画タイミングＴ１での剣オブジェクト１０４の姿勢（図１７では、入力装置８と同じ姿勢である）に、当該加速度を適用して、剣オブジェクト１０４の仮想ゲーム空間内での移動方向と移動速度を決定する。つまり、剣オブジェクト１０４のローカル座標系（コントローラ座標系と同様、剣オブジェクト１０４を基準に設定されるｘｙｚ座標系）で考えて、上記検出された加速度の方向に剣オブジェクト１０４を移動させることを決定し、剣オブジェクト１０４の移動を開始する。図１７の例では、右方向への移動が開始される（図１９参照）。
【０１０６】
その後、次の描画タイミングＴ２が来るまでの間、更新タイミングｔ２、ｔ３に角速度を取得し、これを、その時点の剣オブジェクト１０４の姿勢に適用することで、剣オブジェクトの姿勢を更新する。例えば、図１７の例では、ロール角方向の角速度が検出され、剣オブジェクト１０４の姿勢もロール角方向に変化させる処理が実行される（なお、このときも、コントローラ座標系、剣オブジェクトのローカル座標系を基準に考える）。一方、次の描画タイミングＴ２が来るまでの間、剣オブジェクト１０４の移動も継続されるが、この移動方向は、上記描画タイミングＴ１において決定された移動方向である。つまり、図２０に示すように、剣オブジェクト１０４は、右方向に移動しながら、その姿勢（傾き）だけは徐々に変化していることになる。
【０１０７】
その後、次の描画タイミングＴ２が来れば、この時点で、加速度を取得する。そして、当該加速度と、この時点の剣オブジェクト１０４の姿勢（角速度に基づき更新された姿勢）に基づいて、剣オブジェクト１０４の新たな移動方向、移動速度を再決定する。すなわち、描画タイミングＴ２の時点では、入力装置８は右斜めに少し傾いている。この状態で右斜め上に入力装置８を移動させた場合、右に移動している入力装置を右上方向で移動させるのであるから、上向きの加速度が加えられていることになり、コントローラ座標系で考えると、ｙ軸正方向からｘ軸負方向へかけた斜め向きの加速度が検出されることになる（図２１参照）。そして、入力装置８のローカル座標系における当該加速方向を、上記角速度によって更新された剣オブジェクト１０４の姿勢（これも右斜めに傾いている）に基づいてワールド座標系における方向に変換し、移動している剣オブジェクト１０４の動きに当該加速を加えると、右上方向に移動方向が変化することになる。そして、その後の振りの終わりのタイミングには、移動方向とは逆方向に加速度が加えられるので、移動が停止することになる。
【０１０８】
このように、角速度に基づいて姿勢を更新することで、加速度だけでは算出できないような僅かな入力装置８の姿勢の変化を剣オブジェクト１０４の姿勢に反映することができ、プレイヤの操作をより正確に剣オブジェクト１０４の動きに反映させることが可能となる。なお、本実施例においては、加速度に基づいた移動方向の更新期間を画面表示の更新期間と同じにして、角速度に基づいて姿勢の更新期間よりも長いものとしているが、別の実施例においては、姿勢の更新と同じタイミングで毎回加速度に基づいた移動方向の更新を行うようにしてもよい。
【０１０９】
次に、ゲーム装置３によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際に外部メインメモリ１２に記憶されるデータについて説明する。図２３は、ゲーム装置３の外部メインメモリ１２のメモリマップを示す図である。図２３において、外部メインメモリ１２は、プログラム記憶領域１２１およびデータ記憶領域１２５を含む。プログラム記憶領域１２１およびデータ記憶領域１２５のデータの一部は、光ディスク４に記憶され、ゲームプログラム実行時には外部メインメモリ１２に転送されて記憶される。
【０１１０】
プログラム記憶領域１２１は、ＣＰＵ１０によって実行されるゲームプログラムを記憶し、このゲームプログラムは、メイン処理プログラム１２２と、構え状態処理プログラム１２３と、攻撃中状態処理プログラム１２４などによって構成される。メイン処理プログラム１２２は、後述する図２４のフローチャートの処理に対応するプログラムである。構え状態処理プログラム１２３は、上記「構え状態」における処理をＣＰＵ１０に実行させるためのプログラムであり、攻撃中状態処理プログラム１２４は、上記「攻撃中状態」における処理をＣＰＵ１０に実行させるためのプログラムである。
【０１１１】
データ記憶領域１２５には、操作データ１２６、推定姿勢データ１２７、剣姿勢データ１２８、移動方向データ１２９、移動速度データ１３０、ゲーム状態データ１３１、仮想カメラ制御用データ１３２、オブジェクトデータ１３３などのデータが記憶される。その他、ゲーム処理中に用いられる音声データなども記憶される。
【０１１２】
操作データ１２６は、コントローラ５からゲーム装置３へ送信されてくる操作データである。上述したように、コントローラ５からゲーム装置３へ１／２００秒に１回の割合で操作データが送信されるので、外部メインメモリ１２に記憶される操作データ１２６はこの割合で更新される。本実施形態においては、外部メインメモリ１２には、最新の（最後に取得された）操作データのみが記憶されればよい。ただし、前回の操作データを利用してデータの補正等を行う場合には、数回分の操作データを記憶しておくようにしてもよい。
【０１１３】
操作データ１２６には、角速度データ１２６１、加速度データ１２６２、マーカ座標データ１２６３、および操作ボタンデータ１２６４が含まれる。角速度データ１２６１は、ジャイロセンサユニット７のジャイロセンサ５５によって検出された角速度を示すデータである。ここでは、角速度データ６３は、図３に示すｘｙｚの３軸回りのそれぞれの角速度を示す。また、加速度データ１２６２は、加速度センサ３７によって検出された加速度（加速度ベクトル）を示すデータである。ここでは、加速度データ１２６２は、図３に示すｘｙｚの３軸の方向に関する加速度を各成分とする３次元の加速度ベクトルを示す。また、本実施形態においては、コントローラ５が静止している状態で加速度センサ３７が検出する加速度ベクトル１の大きさを"１"とする。つまり、加速度センサ３７によって検出される重力加速度の大きさは"１"である。
【０１１４】
マーカ座標データ１２６３は、撮像情報演算部３５の画像処理回路４１によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための２次元座標系で表現される。なお、撮像素子４０によって２つのマーカ６Ｒおよび６Ｌが撮像される場合には、２つのマーカ座標が算出される。一方、撮像素子４０の撮像可能な範囲内にマーカ６Ｒおよび６Ｌのいずれか一方が位置しない場合には、撮像素子４０によって１つのマーカのみが撮像され、１つのマーカ座標のみが算出される。また、撮像素子４０の撮像可能な範囲内にマーカ６Ｒおよび６Ｌの両方が位置しない場合には、撮像素子４０によってマーカが撮像されず、マーカ座標は算出されない。したがって、マーカ座標データ１２６３は、２つのマーカ座標を示す場合もあるし、１つのマーカ座標を示す場合もあるし、マーカ座標がないことを示す場合もある。
【０１１５】
操作ボタンデータ１２６４は、各操作ボタン３２ａ〜３２ｉに対する入力状態を示すデータである。
【０１１６】
推定姿勢データ１２７は、入力装置８の姿勢を示すためのデータである。剣姿勢データ１２８は、上記剣オブジェクト１０４の姿勢を示すためのデータである。
【０１１７】
移動方向データ１２９は、上記「攻撃中状態」における剣オブジェクト１０４の移動方向を示すためのデータであり、移動速度データ１３０は、「攻撃中状態」における剣オブジェクト１０４の移動速度を示すためのデータである。
【０１１８】
ゲーム状態データ１３１は、プレイヤオブジェクト１０１の状態が、上述したような「非戦闘状態」「構え状態」「攻撃中状態」のいずれの状態にあるかを示すためのデータである。
【０１１９】
仮想カメラ制御用データ１３２は、仮想カメラを制御するためのデータであり、仮想カメラの位置、画角、注視点等を示すデータが含まれている。
【０１２０】
オブジェクトデータ１３３は、プレイヤオブジェクト１０１や敵オブジェクト１０２等の、ゲーム処理で用いられる各オブジェクトのデータである。
【０１２１】
次に、図２４〜図２８を参照して、ゲーム装置３によって実行されるゲーム処理について説明する。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動プログラムを実行し、これによって外部メインメモリ１２等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムが外部メインメモリ１２に読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図２４に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。また、図２４に示すステップＳ２〜ステップＳ８の処理ループは、１フレーム毎に繰り返し実行される（但し、後述の図２７のステップＳ５１〜Ｓ５５の処理ループは除く）。
【０１２２】
図２４において、まず、ＣＰＵ１０は、以降の処理において用いられるデータの初期化するための初期化処理を実行する（ステップＳ１）。具体的には、「非戦闘状態」を示すデータがゲーム状態データ１３１として外部メインメモリ１２に記憶される。本実施形態においては、ゲーム開始直後は非戦闘状態とするからである。また、ＣＰＵ１０は、仮想カメラ制御用データ１３２に、上記図１２で示したようなゲーム画面（以下、客観画面と呼ぶ）が表示されるような各種パラメータ（位置、画角、注視点）を設定する。更に、ＣＰＵ１０は、３次元のゲーム空間を構築し、プレイヤオブジェクト１０１等を適宜配置する。以上のように構築されたゲーム空間を仮想カメラで撮影したゲーム画像が生成され、生成されたゲーム画像がモニタ２に表示される。
【０１２３】
次に、ＣＰＵ１０は、ゲーム状態データ１３１を参照し、ゲーム状態が「攻撃中」であるか否かを判定する（ステップＳ２）。当該判定の結果、「攻撃中状態」のときは（ステップＳ２でＹＥＳ）、後述するステップＳ１２の処理を実行する。一方、「攻撃中状態」ではないときは（ステップＳ２でＮＯ）、ＣＰＵ１０は、ゲーム状態が「構え状態」であるか否かを判定する（ステップＳ３）。その結果、「構え状態」であれば（ステップＳ３でＹＥＳ）、ＣＰＵ１０は、後述するステップＳ１１の処理へ進む。
【０１２４】
一方、「構え状態」ではないときは（ステップＳ３でＮＯ）、ゲーム状態は「非戦闘状態」であるため、ＣＰＵ１０は、操作データ１２６を外部メインメモリ１２から取得する（ステップＳ４）。
【０１２５】
次に、ＣＰＵ１０は、操作データ１２６で示される、プレイヤが行った操作内容が、上述したような「ポインタロック」操作であるか否かを判定する（ステップＳ５）。つまり、「非戦闘状態」から「構え状態」に移行するような操作が行われたか否かを判定する。当該判定の結果、「ポインタロック」操作が行われていれば（ステップＳ５でＹＥＳ）、ＣＰＵ１０は、「構え状態」を示すデータをゲーム状態データ１３１に設定する（ステップＳ９）。更に、仮想カメラ制御用データ１３２に、上記主観画面用（図１３参照）の設定を行う。すなわち、ＣＰＵ１０は、仮想カメラの位置を、プレイヤオブジェクト１０１の目の位置に設定し、注視点を、ポインタロック操作においてロックオンされた敵オブジェクト１０２に設定する等の処理を実行する。その後、ＣＰＵ１０は、後述の「構え状態」および「攻撃中状態」にかかる処理以外の各種ゲーム処理を実行する（ステップＳ６）。なお、本実施形態においては、このゲーム処理の内容は本発明と直接関連しないので、詳細な説明は省略する。
【０１２６】
一方、上記ステップＳ５の判定の結果、ポインタロック操作が行われていないときは（ステップＳ５でＮＯ）、ＣＰＵ１０は、ステップＳ９，Ｓ１０の処理は行わずに、ステップＳ６の処理に進む。
【０１２７】
ステップＳ６の後、ＣＰＵ１０は、表示処理を実行する（ステップＳ７）。すなわち、仮想カメラで仮想空間を撮影した画像をゲーム画像としてテレビ２に表示する処理がされる。ステップＳ７の後、ＣＰＵ１０は、ゲーム終了か否かを判定し（ステップＳ８）、ＹＥＳの場合、ゲーム処理を終了し、ＮＯの場合、ステップＳ２に戻って、本実施形態にかかるゲーム処理を繰り返す。
【０１２８】
次に、上記ステップＳ１１で示した「構え処理」について説明する。図２５は、上記ステップＳ１１で示した構え処理の詳細を示すフローチャートである。図２５において、まず、ＣＰＵ１０は、操作データ１２６を外部メインメモリ１２から取得する（ステップＳ２１）。
【０１２９】
次に、ＣＰＵ１０は、操作データ１２６で示される操作内容が、「構え状態」を終了するための操作であるか否かを判定する（ステップＳ２２）。つまり、「構え状態」から「非戦闘状態」に戻るための操作が行われたか否かを判定する。具体的な操作の判定としては、たとえば所定のボタン操作が行われたか否かや、所定期間操作を行われなかったか否か（操作入力が無い時間が所定時間以上継続したか否か）等によって判定を行えばよい。当該判定の結果、「構え状態」を終了するための操作が行われていたときは（ステップＳ２２でＹＥＳ）、ＣＰＵ１０は、「非戦闘状態」を示すデータをゲーム状態データ１３１に設定する（ステップＳ３０）。続いて、ＣＰＵ１０は、仮想カメラ制御用データ１３２に、上記客観画面が撮影されるようなデータを設定する（ステップＳ３１）。その後、ＣＰＵ１０は、当該構え処理を終了する。
【０１３０】
一方、ステップＳ２２の判定の結果、操作データ１２６で示される操作内容が、「構え状態」を終了するための操作ではないときは（ステップＳ２２でＮＯ）、次に、ＣＰＵ１０は、剣オブジェクト１０４の位置が、剣振り可能範囲（上記図１５参照）の中に含まれているか否かを判定する（ステップＳ２３）。その結果、剣オブジェクト１０４の位置が剣振り可能範囲内に含まれていないときは（ステップＳ２３でＮＯ）、次に、ＣＰＵ１０は、加速度データ１２６２および角速度データ１２６１に基づいて入力装置８の姿勢を推定する処理を実行する（ステップＳ２８）。本処理は、どのような処理方法であっても良いが、本実施形態では、上記のように、まず、ジャイロセンサユニット７で検出された角速度に基づいて入力装置８の姿勢を算出する。角速度から姿勢を算出する方法は、例えば、初期姿勢に（単位時間あたりの）角速度を逐次加算する方法がある。すなわち、ジャイロセンサユニット７から逐次出力される角速度に基づいて、初期状態から開始して、前回算出された姿勢に逐次変化を加えて更新していくことによって、現在の姿勢を算出することができる。次に、加速度センサ３７で検出された加速度データに基づいて上記角速度から算出された姿勢を補正する。本実施形態では、上記角速度から算出された姿勢を加速度データから決まる姿勢へと近づける補正を行う。次に角速度による姿勢の更新を行うときには、当該補正された姿勢にたいして角速度を加えることになる。加速度データから決まる姿勢とは、具体的には、加速度データが示す加速度の向きが鉛直下向きであると想定する場合における入力装置８の姿勢を指す。すなわち、加速度データが示す加速度が重力加速度であると仮定して算出された姿勢である。加速度によって決められる姿勢は、センサが静止しているときには正確だが、動いているときには誤差があるという性質がある。一方、ジャイロセンサは、センサ出力に誤差が含まれる場合に、算出された姿勢には時間と共に誤差が蓄積していくという性質がある。したがって、常に補正を加えながら姿勢を更新していくことによって、誤差の少ない姿勢が算出される。このようにして補正された姿勢が、推定姿勢データ１２７として外部メインメモリ１２に記憶される。なお、加速度データを反映させない場合は、角速度の積分結果を初期姿勢に反映させた姿勢としてもよい。
【０１３１】
次に、ＣＰＵ１０は、推定姿勢データ１２７で示される入力装置８の姿勢に基づいて剣オブジェクト１０４の姿勢および位置を算出する（ステップＳ２９）。すなわち、入力装置８の姿勢を剣オブジェクト１０４の姿勢および位置に反映させるための処理を実行する。具体的には、画面に向かったプレイヤが入力装置を向けた方向に、画面内の剣オブジェクト１０４の方向が沿うようにし、かつ剣オブジェクト１０４を持つプレイヤキャラクタの腕の長さ等を考慮した位置に配置する。つまり、入力装置８の姿勢から方向を算出し、ゲーム空間内の所定の中心位置から、当該方向へ所定距離伸ばした位置に、当該方向に沿った姿勢で剣オブジェクト１０４が配置される。これにより、「構え状態」のときは、プレイヤが動かした入力装置８の姿勢が剣オブジェクト１０４に反映されることになる。
【０１３２】
一方、上記ステップＳ２３の判定の結果、剣オブジェクト１０４の位置が剣振り可能範囲内に含まれているときは（ステップＳ２３でＹＥＳ）、次に、ＣＰＵ１０は、操作データ１２６に含まれている加速度データ１２６２を参照し、第１の所定値以上の大きさの加速度が発生したか否かを判定する（ステップＳ２４）。当該判定の結果、第１の所定値以上の大きさの加速度が発生していなければ（ステップＳ２４でＮＯ）、ＣＰＵ１０は、上記ステップＳ２８の処理に進む。一方、第１の所定値以上の大きさの加速度が発生していれば（ステップＳ２４でＹＥＳ）、次に、ＣＰＵ１０は、「攻撃中状態」を示すデータをゲーム状態データ１３１に設定する（ステップＳ２５）。
【０１３３】
次に、ＣＰＵ１０は、剣オブジェクト１０４の移動方向の決定や当たり判定球の設定を行うための、攻撃内容設定処理を実行する（ステップＳ２６）。図２６は、上記ステップＳ２６で示した攻撃内容設定処理の詳細を示すフローチャートである。図２６において、まず、ＣＰＵ１０は、加速度データ１２６２に基づいて、剣オブジェクト１０４の移動方向を算出し、移動方向データ１２９として記憶する（ステップＳ４１）。すなわち、剣オブジェクト１０４のローカル座標系を基準として、どの方向に移動させるかを決定する。
【０１３４】
次に、ＣＰＵ１０は、加速度データ１２６２に基づいて、剣オブジェクト１０４の移動速度を決定し、移動速度データ１３０として記憶する（ステップＳ４２）。例えば、加速度が大きいほど、移動速度も速くなるように設定する。
【０１３５】
次に、ＣＰＵ１０は、加速度データ１２６２に基づいて、上記当たり判定球１０７（図１６参照）の大きさや数を決定し、剣オブジェクト１０４に付加する（ステップＳ４３）。更に、当たり判定球１０７に「攻撃力」とよばれる値を設定する。これは、当たり判定球１０７が敵オブジェクト等に衝突したときに、当該敵オブジェクトに与えるダメージ量の算出の基礎となる値である。これらの設定は、例えば、加速度の大きさと、当たり判定球１０７の数、大きさ、および攻撃力との関係を定義づけたテーブルを予め作成、記憶しておき、当該テーブルを参照することで、当たり判定球１０７の大きさや数、攻撃力が設定される。
【０１３６】
次に、剣オブジェクト１０４が前回描画されたときの仮想空間内の位置と、現在の剣オブジェクト１０４の位置とを結ぶような、ブラー効果画像１０５（図１４参照）を生成する（ステップＳ４４）。以上で、攻撃内容設定処理は終了する。
【０１３７】
図２５に戻り、ステップＳ２６の次に、ＣＰＵ１０は、当たり判定処理を実行する（ステップＳ２７）。すなわち、ＣＰＵ１０は、ステップＳ２６の処理で設定された当たり判定球１０７と、ポインタロック操作でロックオンした敵オブジェクトやその他のオブジェクトと衝突したか否かを判定する。また、衝突していた場合は、上記当たり判定球１０７に設定された攻撃力に基づくダメージの算出等、攻撃が命中した際の各種処理が実行される。その後、ＣＰＵ１０は、構え処理を終了する。
【０１３８】
次に、上記図２４のステップＳ１２で示した攻撃中処理について説明する。図２７は、上記ステップＳ１２で示した攻撃中処理の詳細を示すフローチャートである。図２７において、まず、ＣＰＵ１０は、操作データ１２６を取得する（ステップＳ５１）。
【０１３９】
次に、操作データ１２６に含まれる角速度データ１２６１に基づいて、剣オブジェクト１０４の姿勢を変化させる。例えば、角速度データ１２６１に基づいて、姿勢の回転量を示す回転行列を算出する。そして、当該回転行列に基づいて、剣オブジェクトの姿勢を変化させる。
【０１４０】
次に、ＣＰＵ１０は、移動方向データ１２９および移動速度データ１３０に基づいて、剣オブジェクト１０４を移動させる（ステップＳ５３）。本実施例においては、移動方向と速度はフレーム毎に決定されるので、ステップＳ５３は、姿勢を設定する期間毎ではなく、フレーム毎のタイミングで１フレーム分の移動を行うようにしてもよい。また、本実施例では姿勢が変化しても、ワールド座標系における移動方向と速度は加速度に基づいてフレーム毎に速度の設定を行うまで変化させないようにしているが、フレーム毎に移動方向と速度を設定する場合であっても、姿勢の変化毎に移動方向を変化させることは可能である。
【０１４１】
次に、ＣＰＵ１０は、移動後の剣オブジェクト１０４について、当たり判定処理を実行する（ステップＳ２４）。当該処理は、上記図２５のステップＳ２７と同様の処理であるので、詳細な説明は省略する。
【０１４２】
次に、ＣＰＵ１０は、前回のゲーム画面の表示（前回の処理ループ）から１フレーム分、すなわち１／３０秒もしくは１／６０秒の時間が経過したか否かを判定する（ステップＳ５５）。当該判定の結果、１フレーム分の時間が経過していないときは（ステップＳ５５でＮＯ）、上記ステップＳ５１に戻り、処理を繰り返す。ここで、上述のように、コントローラ５からゲーム装置３へは１／２００秒に１回の割合で操作データが送信され、操作データ１２６もこの割合で更新されている。従って、１フレーム分の時間を１／３０秒とした場合は、ステップＳ５１〜Ｓ５５の処理ループは、１フレーム分の時間が経過するまでに、約６〜７回ループする。
【０１４３】
一方、ステップＳ５５の判定の結果、１フレーム分の時間が経過していれば（ステップＳ５５でＹＥＳ）、次に、ＣＰＵ１０は、その時点の加速度に基づいて剣オブジェクト１０４の移動方向等を再設定するための処理を実行する。すなわち、ＣＰＵ１０は、まず、操作データ１２６を取得する（ステップＳ５６）。
【０１４４】
次に、当該操作データに含まれる加速度データ１２６２で示される加速度の大きさが、第２の所定値未満であるか否かを判定する（ステップＳ５７）。すなわち、「攻撃中状態」の終了条件を満たしたか否かを判定する。振りの動作においては、始めに移動方向への加速度が加えられ、終了の際には振りを停止させるために移動した方向と逆方向の加速度が加えられる。そして、振りの終了後は加速度の大きさが小さくなることになるので、そのように加速度の大きさが小さくなった場合に振りが終了していると判定している。したがって、所定期間の間加速度の大きさが小さい状態が持続したか否かを判定の条件としてもよい。当該判定の結果、上記加速度が第２の所定値未満でないときは（ステップＳ５７でＮＯ）、「攻撃中状態」が継続しているため、ＣＰＵ１０は、攻撃内容設定処理を実行する（ステップＳ５８）。当該処理は、上記図２５のステップＳ２６の処理を同様であるため、詳細な説明は省略するが、この処理で、この時点の加速度に基づいて剣オブジェクト１０４の移動方向や当たり判定球１０７の設定などが行われることになる。
【０１４５】
一方、ステップＳ５７の判定の結果、上記加速度が第２の所定値未満のときは（ステップＳ５７でＹＥＳ）、ＣＰＵ１０は、「攻撃中状態」を終了し、「構え状態」に遷移するための処理を実行する。すなわち、ＣＰＵ１０は、「構え状態」を示すデータをゲーム状態データ１３１に設定する（ステップＳ５９）。
【０１４６】
次に、ＣＰＵ１０は、攻撃終了時における剣オブジェクトの姿勢を調整するための姿勢調整処理を実行する（ステップＳ６０）。この処理では、「攻撃中状態」が終了したときの剣オブジェクトの姿勢が不自然に見えないように調整するための処理である。本処理の終了後、ＣＰＵ１０は、当該攻撃中処理を終了する。
【０１４７】
図２８は、上記ステップＳ６０で示した剣オブジェクトの姿勢調整処理の詳細を示すフローチャートである。図２８において、まず、ＣＰＵ１０は、剣オブジェクト１０４の位置が、剣振り可能範囲内であるか否かを判定する（ステップＳ７１）。その結果、剣振り可能範囲内になければ（ステップＳ７１でＮＯ）、ＣＰＵ１０は、剣オブジェクト１０４の位置が剣振り可能範囲内に収まるように、剣オブジェクト１０４の位置を変化させる（ステップＳ７２）。その後、ＣＰＵ１０は、当たり判定球１０７を消去する（ステップＳ７３）。一方、ステップＳ７１の判定の結果、剣振り可能範囲内のときは（ステップＳ７１でＹＥＳ）、ステップＳ７２の処理は実行せずに、上記ステップＳ７３の処理に進む。以上で、姿勢調整処理は終了する。
【０１４８】
以上で、本実施形態にかかるゲーム処理の説明を終了する。
【０１４９】
このように、本実施形態では、上記「構え状態」において、角速度に基づいて剣オブジェクト１０４の姿勢を制御しているときに、所定値以上の加速度が検出されれば、剣オブジェクト１０４に当たり判定球の設定や移動方向等の決定を行うことで、「攻撃中状態」に移行し、敵オブジェクト等への攻撃を可能とする処理を実行している。これにより、加速度センサとジャイロセンサを利用した新規な操作性を有するゲームを提供することができる。
【０１５０】
また、「攻撃中状態」においては、加速度に基づいて剣オブジェクト１０４の移動方向や移動速度を決定すると共に、角速度に基づいて剣オブジェクト１０４の姿勢を補正している。これにより、プレイヤが動かした入力装置８の動きをより正確に剣オブジェクト１０４の姿勢・動きに反映することができる。
【０１５１】
なお、上述の実施形態では、「構え状態」から「攻撃中状態」への移行の判定として、第１の所定値以上の加速度が発生したか否かを判定していた。このとき、上記実施形態は、ｘ軸およびｙ軸の２軸の加速度のみを用いる場合を例としていたが、これに限るものではなく、更にｚ軸も加えた３軸の加速度を用いて判定するようにしても良い。例えば、プレイヤオブジェクト１０１武器として図２９に示すような振り回すことのできる「鉄球」１１０を用いるような場合を想定する。そして、「鉄球」１１０を振り回す動作を模して、図３０に示すようにプレイヤが入力装置８を振り回し、最後にプレイヤの前方に向けて振るような操作を行う場合を想定する。上記のような振り回しの操作が行われた場合、入力装置８には、ｚ軸方向への加速度が継続的に発生する。そこで、所定値以上のＺ軸方向の加速度が継続して検出されている状態であれば、鉄球を振り回している状態であると判定し、その後、Ｚ軸方向の加速度について大きな変化が発生すれば（つまり、前方に向かって入力装置８が振られたことになる）、仮想ゲーム空間内において鉄球オブジェクト１１０に上述のような当たり判定球の設定等を行い、上記加速度に基づいて鉄球オブジェクト１１０を移動させて、敵オブジェクト等への攻撃を可能とする処理を行えばいよい。
【０１５２】
また、上記実施形態では、攻撃内容設定処理において、加速度の大きさに応じて当たり判定球１０７の数や大きさ、攻撃力の設定を行っていたが、この他、加速度の大きさに応じた処理を実行させるようにしても良い。例えば、加速度の大きさに応じて、「剣を振る効果音」をコントローラ５のスピーカ４９から出力するようにしてもよい。すなわち、加速度が大きいほど、音量を大きく設定して「剣を振る効果音」を出力してもよい。また、加速度の大きさに応じて異なる音色を使い分けるようにしても良い。また、上記コントローラ５は、バイブレータ４８を作動させることによって振動を発生させることが可能であるため、加速度の大きさに応じた強さの振動を発生させるようにしても良い。これにより、臨場感を高めてゲームの興趣性をより高めることが可能となる。
【産業上の利用可能性】
【０１５３】
本発明にかかるゲーム装置およびゲームプログラムは、加速度センサとジャイロセンサを効果的に利用した新規なゲームを提供することができ、据置型ゲーム装置やパーソナルコンピュータを用いたゲーム等に有用である。
【図面の簡単な説明】
【０１５４】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置３の機能ブロック図
【図３】図１のコントローラ５（入力装置８）の上面後方から見た斜視図
【図４】図３のコントローラ５を下面前方から見た斜視図
【図５】図３のコントローラ５の上ハウジングを外した状態を示す斜視図
【図６】図３のコントローラ５の下ハウジングを外した状態を示す斜視図
【図７】本実施例に適用されるジャイロセンサユニットの外観を示す図解図
【図８】コントローラ５に装着されたジャイロセンサユニット７を示す図
【図９】ジャイロセンサユニットの構成を示す図解図
【図１０】ジャイロセンサが検出できるヨー角、ピッチ角、ロール角を示す図解図
【図１１】入力装置８の機能構成を示すブロック図
【図１２】本実施形態で想定するゲーム画面の一例
【図１３】本実施形態で想定するゲーム画面の一例
【図１４】本実施形態で想定するゲーム画面の一例
【図１５】剣振り可能範囲の一例
【図１６】当たり判定球の設定の一例
【図１７】攻撃中処理における制御の概念を説明するための図
【図１８】攻撃中処理における制御について説明するための図
【図１９】攻撃中処理における制御について説明するための図
【図２０】攻撃中処理における制御について説明するための図
【図２１】攻撃中処理における制御について説明するための図
【図２２】攻撃中処理における制御について説明するための図
【図２３】外部メインメモリ１２のメモリマップを示す図
【図２４】本発明の実施形態に係るゲーム処理を示すフローチャート
【図２５】図２４のステップＳ１１で示した構え処理の詳細を示すフローチャート
【図２６】図２５のステップＳ２６で示した攻撃内容設定処理の詳細を示すフローチャート
【図２７】図２４のステップＳ１２で示した攻撃中処理の詳細を示すフローチャート
【図２８】図２７のステップＳ６０で示した剣オブジェクトの姿勢調整処理の詳細を示すフローチャート
【図２９】ｚ軸方向の加速度を用いた処理を説明するための図
【図３０】ｚ軸方向の加速度を用いた処理を説明するための図
【図３１】移動軌跡の一例を示す図
【符号の説明】
【０１５５】
１…ゲームシステム
２…モニタ
２ａ…スピーカ
３…ゲーム装置
４…光ディスク
５…コントローラ
７…ジャイロセンサユニット
８…入力装置
１０…ＣＰＵ
１１…システムＬＳＩ
１１ａ…入出力プロセッサ
１１ｂ…ＧＰＵ
１１ｃ…ＤＳＰ
１１ｄ…ＶＲＡＭ
１１ｅ…内部メインメモリ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…無線通信モジュール
１９…無線コントローラモジュール
２０…拡張コネクタ
２１…外部メモリカード用コネクタ
２２…アンテナ
２３…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
３０…基板
３１…ハウジング
３２…操作部
３３…コネクタ
３４…ＬＥＤ
３５…撮像情報演算部
３６…通信部
３７…加速度センサ
３８…赤外線フィルタ
３９…レンズ
４０…撮像素子
４１…画像処理回路
４２…マイコン
４３…メモリ
４４…無線モジュール
４５…アンテナ
４８…バイブレータ
４９…スピーカ
５３…プラグ
５４…マイコン
５５…２軸ジャイロセンサ
５６…１軸ジャイロセンサ
【図１】
2010142561.tif 000003
【図２】
2010142561.tif 000004
【図３】
2010142561.tif 000005
【図４】
2010142561.tif 000006
【図５】
2010142561.tif 000007
【図６】
2010142561.tif 000008
【図７】
2010142561.tif 000009
【図８】
2010142561.tif 000010
【図９】
2010142561.tif 000011
【図１０】
2010142561.tif 000012
【図１１】
2010142561.tif 000013
【図１２】
2010142561.tif 000014
【図１３】
2010142561.tif 000015
【図１４】
2010142561.tif 000016
【図１５】
2010142561.tif 000017
【図１６】
2010142561.tif 000018
【図１７】
2010142561.tif 000019
【図１８】
2010142561.tif 000020
【図１９】
2010142561.tif 000021
【図２０】
2010142561.tif 000022
【図２１】
2010142561.tif 000023
【図２２】
2010142561.tif 000024
【図２３】
2010142561.tif 000025
【図２４】
2010142561.tif 000026
【図２５】
2010142561.tif 000027
【図２６】
2010142561.tif 000028
【図２７】
2010142561.tif 000029
【図２８】
2010142561.tif 000030
【図２９】
2010142561.tif 000031
【図３０】
2010142561.tif 000032
【図３１】
2010142561.tif 000033