(57)【要約】  コンピュータは、ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出部と、姿勢変化量算出部で算出される操作装置の姿勢の変化量に基づいて、ゲームのオブジェクトを制御するオブジェクト制御部と、ゲームの実行中に所定の条件が成立すると、姿勢変化量算出部の姿勢の変化量を算出するための操作装置の基準姿勢を再設定するリセット部として機能する。ゲーム実行中に操作装置の基準姿勢が再設定されるので、姿勢センサの検出誤差が低減する。
2011122214.tif 000002
【特許請求の範囲】
【請求項１】
ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出部と、
前記姿勢変化量算出部で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御部と、
前記ゲームの実行中に所定の条件が成立すると、前記姿勢変化量算出部の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット部と、
を備えたことを特徴とするコンピュータ。
【請求項２】
前記所定の条件の成立は、使用者によってゲーム進行に使用される前記操作装置の所定の操作部材が操作されたことを示す操作信号を受け取ることである、請求項１に記載のコンピュータ。
【請求項３】
前記所定の操作部材は、前記使用者による前記オブジェクトの操作開始を指示する第１の操作部材であり、
前記オブジェクト制御部は、
前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御する、請求項２に記載のコンピュータ。
【請求項４】
前記オブジェクト制御部は、
前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセット部によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御部と、
リセット後に前記姿勢変化量算出部で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御部と、
を含む、請求項３に記載のコンピュータ。
【請求項５】
前記リセット部は、前記使用者による前記操作装置に設けられた前記第１の操作部の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、
前記オブジェクト制御部は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御する、請求項３に記載のコンピュータ。
【請求項６】
前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、
前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号である、請求項３に記載のコンピュータ。
【請求項７】
前記初期位置は、前記表示画面の中央位置である、請求項４に記載のコンピュータ。
【請求項８】
前記姿勢センサは、角速度センサであり、前記姿勢変化量算出部は、前記角速度センサによる角速度検出値を積分演算した回転角を前記操作装置の前記基準姿勢からの姿勢の変化量として算出する、請求項１に記載のコンピュータ。
【請求項９】
前記オブジェクトは、前記表示装置に表示されるゲーム画面に対して前記使用者が前記操作装置から所定の操作情報を入力するときに当該操作を補助するために表示するオブジェクトである、請求項１に記載のコンピュータ。
【請求項１０】
前記ゲーム画面は、射撃の要素を含むゲーム画面であり、
前記オブジェクトは、前記射撃の目標を示す照準オブジェクトである、請求項９に記載のコンピュータ。
【請求項１１】
コンピュータを、ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出手段と、前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御手段と、前記ゲームの実行中に所定の条件が成立すると、前記姿勢変化量算出手段の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット手段と、して機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１２】
前記所定の条件の成立は、使用者によってゲーム進行に使用される前記操作装置の所定の操作部材が操作されたことを示す操作信号を受け取ることである、請求項１１に記載の記録媒体。
【請求項１３】
前記所定の操作部材は、前記使用者による前記オブジェクトの操作開始を指示する第１の操作部材であり、
前記オブジェクト制御手段は、
前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御する、請求項１２に記載のプログラム。
【請求項１４】
前記オブジェクト制御手段は、
前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセット手段によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御手段と、
リセット後に前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御手段と、
を含む、請求項１３に記載の記録媒体。
【請求項１５】
前記リセット手段は、前記使用者による前記操作装置に設けられた前記第１の操作手段の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、
前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御する、請求項１３に記載の記録媒体。
【請求項１６】
前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、
前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号である、請求項１３に記載の記録媒体。
【請求項１７】
前記初期位置は、前記表示画面の中央位置である、請求項１４に記載の記録媒体。
【請求項１８】
前記姿勢センサは、角速度センサであり、前記姿勢変化量算出手段は、前記角速度センサによる角速度検出値を積分演算した回転角を前記操作装置の前記基準姿勢からの姿勢の変化量として算出する、請求項１１に記載の記録媒体。
【請求項１９】
前記オブジェクトは、前記表示装置に表示されるゲーム画面に対して前記使用者が前記操作装置から所定の操作情報を入力するときに当該操作を補助するために表示するオブジェクトである、請求項１１に記載の記録媒体。
【請求項２０】
前記ゲーム画面は、射撃の要素を含むゲーム画面であり、
前記オブジェクトは、前記射撃の目標を示す照準オブジェクトである、請求項１９に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作装置の姿勢情報を用いて表示装置に表示されるオブジェクトの動きを制御するプログラムおよび記録媒体に関する。
【背景技術】
【０００２】
従来、ディスプレイを用いた家庭用のゲーム機のコントローラにおいて、角速度センサ若しくは加速度センサ等の姿勢を検出することができる姿勢センサを内蔵したコントローラが商品化されている。また、そのコントローラを用いたゲームプログラムも商品化されている。【０００３】
角速度センサを内蔵したコントローラは、ゲーム機に角速度センサで検出した角速度の検出信号を出力する。角速度センサの検出信号は、コントローラに設定されたｘｙｚの直交座標系における各座標軸の周りをコントローラが回転する角速度を検出した信号である。加速度センサの検出信号は、上記のｘｙｚの各座標軸方向におけるコントローラの加速度を検出した信号である。【０００４】
ゲーム機内では、角速度センサ若しくは加速度センサの検出信号を用いてコントローラの基準姿勢に対する相対的な姿勢の変化量を算出する。基準姿勢は、例えば、コントローラに設定されるｘｙｚ座標系のｘｚ面が水平面に一致し、かつ、ｚ軸がゲーム機に向いた姿勢である。姿勢の変化量は、コントローラの各座標軸周りの回転角の変化量若しくは各座標軸方向の変位量である。【０００５】
そして、ゲーム機は、コントローラの姿勢の変化量の算出結果を用いて、ゲーム機のディスプレイに表示するキャラクタあるいはオブジェクトのディスプレイ上の動きを制御する。キャラクタは、例えば、使用者あるいはコンピュータが制御する動物あるいは人物などの画像である。なお、オブジェクトはキャラクタを含む概念であるが、以下では説明の便宜上、オブジェクトとキャラクタとを区別して説明する。【０００６】
例えば、テニスゲームでは、使用者がテニスラケットを振るようにコントローラを振ると、そのときのコントローラの姿勢の変化に基づいて、ディスプレイに表示されたプレイヤキャラクタがテニスラケットを振る動きをする。プレイヤキャラクタは使用者の操作によってディスプレイ上の動作が制御されるキャラクタである。また、アクションゲームでは、使用者がコントローラの所定のボタンを押すと、プレイヤキャラクタが銃を構える動作をするとともに、その銃の狙っている位置を示す照準のオブジェトが表示される。そして、使用者がボタンを押した状態でコントローラを上下又は左右に振ると、そのときのコントローラの姿勢（向き）の変化に応じてディスプレイ上で照準の表示位置が変化する。【０００７】
ＷＯ２００９／０８４２１３Ａ１公報には、仮想の三次元ゲーム空間でゲームが展開するアクションゲームにおいて、使用者がゲーム画像を通じてプレイヤキャラクタの周りの状況を見ることができるようにするために、以下の発明が記載されている。すなわち、上記公報には、角速度センサが内蔵されたコントローラの回転に応じて、三次元ゲーム空間上に配置される仮想カメラがプレイヤキャラクタを中心とする円周上で回転する発明が記載されている。【０００８】
同公報に記載の発明は、プレイヤキャラクタが三次元ゲーム空間上で取得したトロフィーなどのアイテムの形状及びデザインの詳細を使用者が確認できるようにする場合にも適用することができる。この場合は、コンピュータは、コントローラの回転に応じて仮想カメラをアイテムの周りで回転する。コンピュータは、この仮想カメラの回転により、アイテムを３６０度全方向から見た映像を生成してディスプレイに表示する。【０００９】
【特許文献１】ＷＯ２００９／０８４２１３Ａ１公報
【特許文献２】特開２００９−１０１０３５号公報
【特許文献３】特開２０１０−５３３２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ディスプレイに表示されたキャラクタ及びオブジェクトの動きをコントローラのｘｙｚの各座標軸周りの回転角に基づいて制御するためには、その回転角をできるだけ正確に検出する必要がある。しかしながら、角速度センサを用いてコントローラの基準姿勢からの回転角を検出する場合、回転角は、角速度センサから出力される角速度を積分して算出される（特開２００９−１０１０３５号公報及び特開２０１０−５３３２号公報）。そのため、角速度の積分値に角速度センサのドリフトによる誤差が累積し、検出される回転角が時間の経過とともに不正確になるという問題がある。このため、ゲーム時間が長時間に亘る場合は、コントローラの姿勢の変化に基づいてディスプレイに表示されるキャラクタ及びオブジェクトの動きを適切に制御できない場合が生じる。【００１１】
テニスゲームなどのようにゲーム開始からゲーム終了するまでの時間が比較的短いゲームソフトでは、例えば、新規にゲームを開始する毎に、使用者がコントローラの基準姿勢を再設定（リセット）するための所定の操作をしなければならないようになっている。この操作を「キャリブレーション操作」と言い、コンピュータが行うコントローラの基準姿勢を再設定（リセット）する処理を「キャリブレーション処理」という。【００１２】
ディスプレイに表示された選択画面で、使用者がコントローラを振ることによってディスプレイに表示されたカーソルを所望の選択項目に移動させる制御を行う場合、使用者のコントローラの振り方によってはカーソルがディスプレイの画面外に出てしまい、カーソル位置が分からなくなる状態が生じる。そのため、使用者がキャリブレーション操作を行う必要がある。この場合には、例えば、使用者がコントローラをディスプレイに向けた状態でキャリブレーション操作として所定のボタンを押す操作をすると、その操作に基づいて、コンピュータがカーソルの表示位置をディスプレイの所定の位置にリセットする処理を行う。【００１３】
しかしながら、例えば、「バイオハザード（登録商標）」のようなゲーム時間が長時間になるゲームで、コントローラの姿勢の変化を利用してディスプレイに表示されるキャラクタやオブジェクトの動きを制御しようとすると、コントローラの姿勢の変化に基づいてディスプレイに表示されるキャラクタやオブジェクトの動きを制御することができなくなる場合が生じる。コントローラに内蔵された角速度センサの検出角速度から算出される回転角の誤差が時間の経過とともに増大するからである。【００１４】
この不都合を解消するためには、ゲーム中に定期的若しくは適当なタイミングでコンピュータがコントローラのキャリブレーション処理を行うようにすることが考えられる。しかし、ゲーム開始時に使用者が行うキャリブレーション操作をゲーム中にも行う場合、コンピュータはキャリブレーション処理のためにゲーム展開の制御を中断することになる。そのため、キャリブレーション操作がゲームに熱中している使用者にストレスとなり、ゲームの面白み、あるいはゲームへの興味が薄れるという問題が生じる。【００１５】
また、一般にゲームでは、ゲームメディアからゲームソフトをゲーム機に読み込んでゲームができるようになるまでに、使用者が種々の選択操作や設定操作をしなければならず、そのために一定の時間を要する。ゲームをできるようするための操作にキャリブレーション操作も加えると、使用者にとっては煩わしさが増加する。従って、可能であれば、ゲーム中にコンピュータがキャリブレーション処理を自動的に行うようにすることが好ましい。しかし、従来、このような機能を備えたゲームソフトは提案されていない。【００１６】
本発明は、姿勢を検出することができるセンサを備えたコントローラのキャリブレーション処理をゲーム中の使用者による所定の操作によって自動的に行うことができ、コントローラの姿勢の変化に基づくゲーム画面内のキャラクタやオブジェクトの動きを好適に制御することができるプログラム及びそのプログラムを記録した記録媒体を提供することを目的としている。
【課題を解決するための手段】
【００１７】
上記課題を解決するため、本発明では、次の技術的手段を講じている。【００１８】
本発明の第１の側面によって提供されるコンピュータは、ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出部と、前記姿勢変化量算出部で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御部と、前記ゲームの実行中に所定の条件が成立すると、前記姿勢変化量算出部の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット部と、して機能させることを特徴とする。【００１９】
なお、操作装置は、コントローラなどのゲーム装置とは別体の操作装置だけでなく、携帯型ゲーム装置のようにゲーム装置本体に一体的に設けられた操作部材も含むものである。後者の場合は、ゲーム装置本体が使用者の操作する操作装置となる。同様に、表示装置は、テレビモニタなどのゲーム装置とは別体の表示装置だけでなく、携帯型ゲーム装置のようにゲーム装置本体に一体的に設けられたディスプレイも含むものである。【００２０】
上記のプログラムと記録媒体において、前記所定の条件の成立は、使用者によってゲーム進行に使用される前記操作装置の所定の操作部材が操作されたことを示す操作信号を受け取ることにするとよい。【００２１】
上記のコンピュータにおいて、前記所定の操作部材は、前記使用者による前記オブジェクトの操作開始を指示する第１の操作部材であり、前記オブジェクト制御部は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御するとよい。【００２２】
上記のコンピュータにおいて、前記オブジェクト制御部は、前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセット部によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御部と、リセット後に前記姿勢変化量算出部で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御部と、を含むとよい。【００２３】
上記のコンピュータにおいて、前記リセット部は、前記使用者による前記操作装置に設けられた前記第１の操作部材の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、前記オブジェクト制御部は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御するとよい。【００２４】
上記のコンピュータにおいて、前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号であるとよい。【００２５】
上記のコンピュータにおいて、前記初期位置は、前記表示画面の中央位置であるとよい。【００２６】
上記のコンピュータにおいて、前記姿勢センサは、角速度センサであり、前記姿勢変化量算出部は、前記角速度センサによる角速度検出値を積分演算した回転角を前記操作装置の前記基準姿勢からの姿勢の変化量として算出するとよい。【００２７】
上記のコンピュータにおいて、前記オブジェクトは、前記表示装置に表示されるゲーム画面に対して前記使用者が前記操作装置から所定の操作情報を入力するときに当該操作を補助するために表示するオブジェクトであるとよい。また、前記ゲーム画面は、射撃の要素を含むゲーム画面であり、前記オブジェクトは、前記射撃の目標を示す照準オブジェクトであるとよい。【００２８】
本発明の第２の側面によって提供される記録媒体は、コンピュータを、ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出手段と、前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御手段と、前記ゲームの実行中に所定の条件が成立すると、前記姿勢変化量算出手段の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット手段と、して機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体である。【００２９】
上記の記録媒体において、前記所定の条件の成立は、使用者によってゲーム進行に使用される前記操作装置の所定の操作部材が操作されることにするとよい。また、前記所定の操作部材は、前記使用者による前記オブジェクトの操作開始を指示する第１の操作部材であり、前記オブジェクト制御手段は、前記使用者により前記第１の操作部材が操作されてから前記使用者により前記オブジェクトの操作終了を指示する第２の操作部材が操作されるまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御するとよい。【００３０】
上記の記録媒体において、前記使用者により前記第１の操作部材が操作されると、前記リセット手段によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを前記表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御手段と、リセット後に前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者により前記第２の操作部材が操作されるまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御手段と、を含むとよい。【００３１】
上記の記録媒体において、前記リセット手段は、前記使用者により前記操作装置に設けられた前記第１の操作部材が操作されると、前記操作装置の基準姿勢を再設定し、前記オブジェクト制御手段は、前記使用者により前記第１の操作部材が操作されてから前記使用者により前記操作装置に設けられた前記第２の操作部材が操作されるまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御するとよい。【００３２】
上記の記録媒体において、前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号であるとよい。【００３３】
上記の記録媒体において、前記初期位置は、前記表示画面の中央位置であるとよい。また、前記姿勢センサは、角速度センサであり、前記姿勢変化量算出手段は、前記角速度センサによる角速度検出値を積分演算した回転角を前記操作装置の前記基準姿勢からの姿勢の変化量として算出するとよい。【００３４】
上記の記録媒体において、前記オブジェクトは、前記表示装置に表示されるゲーム画面に対して前記使用者が前記操作装置から所定の操作情報を入力するときに当該操作を補助するために表示するオブジェクトであるとよい。また、前記ゲーム画面は、射撃の要素を含むゲーム画面であり、前記オブジェクトは、前記射撃の目標を示す照準オブジェクトであるとよい。
【発明の効果】
【００３５】
本発明によれば、ゲームを実行中に、操作装置の姿勢が変化すると、コンピュータは、姿勢センサによるその姿勢の変化の検出値を受信して操作装置の基準姿勢からの姿勢の変化量を算出する。そして、コンピュータは、その算出結果に基づいて表示装置へのオブジェクトの表示を制御する。すなわち、コンピュータは、操作装置の姿勢の変化量に応じて表示装置の表示画面におけるオブジェクトの表示位置を変化させる制御を行う。そして、ゲームの実行中に所定の条件が成立すると、コンピュータは、操作装置の基準姿勢を再設定し、その再設定した基準姿勢に対する姿勢の変化量を算出する。【００３６】
例えば、使用者がゲーム進行に使用される所定の操作部材を操作すると、コンピュータは、操作装置の基準姿勢を再設定し、その再設定した基準姿勢に対する姿勢の変化量を算出する。例えば、プレイヤキャラクタが銃による攻撃を行うアクションを含むアクションゲームにおいて、使用者がゲームの実行中にプレイヤキャラクタに銃を構えさせるための所定の操作部材を操作すると、コンピュータは、その時の操作装置の姿勢を基準姿勢に再設定する。従って、その後にコンピュータが算出する操作装置の姿勢の変化量の誤差を抑制することができる。その結果、表示装置に表示された「照準」のオブジェクトの表示位置の制御が使用者の操作による操作装置の姿勢の変化量に基づいて好適かつ正確に行われる。【００３７】
また、コンピュータは、操作装置の基準姿勢を再設定するキャリブレーション処理を所定の条件の成立を契機に行う。所定の条件の成立とは、例えば、ゲームの実行中に使用者が所定の操作部材を操作することである。この制御により、使用者に対して、操作装置のキャリブレーション処理のためにゲームが中断するというストレスを与えることがない。従って、使用者はゲームに集中することができる。【００３８】
本発明のその他の特徴および利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【図面の簡単な説明】
【００３９】
【図１】図１は、ゲーム画面に表示されたプレイヤキャラクタに銃を構える動作をさせたときに銃の照準を示すオブジェクトが表示された状態を示す図である。
【図２】図２は、本実施形態に係るゲーム装置の構成を示す斜視図である。
【図３】図３は、本実施形態に係るゲーム装置の内部構成を示すブロック図である。
【図４Ａ】図４Ａは、スティック型コントローラの構成を示す上面図である。
【図４Ｂ】図４Ｂは、スティック型コントローラの構成を示す底面図である。
【図５】図５は、カメラに設定されたＸＹＺ座標系におけるスティック型コントローラの位置を説明するための図である。
【図６】図６は、スティック型コントローラに設定されたＵＶＷ座標系と角速度センサで検出され角速度の関係を説明するための図である。
【図７】図７は、スティック型コントローラの指す方向とディスプレイの表示画面に表示されるカーソルの表示位置との関係を示す図である。
【図８】図８は、スティック型コントローラの姿勢の変化によりスティック型コントローラに設定されたＵＶＷ座標系が回転する様子を示す図である。
【図９】図９は、スティック型コントローラの内部構成を示すブロック図である。
【図１０】図１０は、スティック型コントローラの発光部の撮影画像からスティック型コントローラの現在の位置情報を取得する方法を説明するための図である。
【図１１】図１１は、カメラのＸＹＺ座標系で算出されたスティック型コントローラの位置とディスプレイの表示画面に表示するオブジェクトの位置との関係を示す図である。
【図１２】図１２は、フレーム周期で各コマのゲーム画像を生成する際にそのゲーム画像に照準オブジェクトを表示させるための処理手順を示すフローチャートである。
【図１３】図１３は、数フレームに亘って図１２のフローチャートが実行されたときのフレーム毎の処理内容の変化の一例を表した図である。
【発明を実施するための形態】
【００４０】
以下、本発明の好ましい実施の形態として、射撃の要素を含むアクションゲームのプログラムを家庭用のゲーム装置で実行する場合について、添付図面を参照して具体的に説明する。
【００４１】
本実施形態に係るアクションゲームには、三次元の仮想ゲーム空間上に使用者によって制御されるプレイヤキャラクタと、プレイヤキャラクタが対戦する敵キャラクタとが登場する。そして、使用者は、プレイヤキャラクタを多数の敵キャラクタと対戦させながら所定の目的を達成する。敵キャラクタは、ＣＰＵ（Central Processing Unit）によって制御されるキャラクタである。前記所定の目的は、例えば、多数の敵キャラクタの中のボスを倒す、敵キャラクタに占拠された街を解放する、隠された秘宝を探索するなどである。
【００４２】
本実施形態に係るアクションゲームでは、一人の使用者がパッド型コントローラ及びスティック型コントローラの２種類のコントローラを用いて一のプレイヤキャラクタの動作を制御することができる。パッド型コントローラは、パッドに複数のボタンが設けられ、使用者がパッドを両手で保持して複数のボタンを操作するタイプのコントローラである。スティック型コントローラは、スティック型コントローラの姿勢を検出する姿勢センサとして角速度センサを内蔵した棒状のコントローラである。
【００４３】
プレイヤキャラクタが敵キャラクタを攻撃するための武器として、例えば、「ナイフ」、「銃」、「爆弾」などの複数の武器がある。使用者がパッド型コントローラとスティック型コントローラのいずれか若しくは両方を操作することで、プレイヤキャラクタが各武器によって敵キャラクタを攻撃することができる。
【００４４】
スティック型コントローラ４には姿勢センサが内蔵されている。そのため、銃による攻撃では、使用者はスティック型コントローラ４の姿勢を変化させる操作（コントローラ本体を傾けたり、移動させたりする操作）によってプレイヤキャラクタの銃による攻撃動作を制御することができる。
【００４５】
具体的には、使用者がスティック型コントローラ４に設けられた複数のボタンのうち、プレイヤキャラクタに銃を構える姿勢を指令するための所定のボタン（「構えボタン」）を押下すると、図１に示すように、プレイヤキャラクタＰＣが銃ＪＯのオブジェクトを構えるとともに、その銃ＪＯの銃口の向いている方向を示す照準ＡＯのオブジェクトが表示される。
【００４６】
そして、使用者が構えボタンを押下した状態でスティック型コントローラ４を傾けたり、移動させたりすると、その動きによるスティック型コントローラ４の位置及び姿勢の変化に基づいて、ゲーム画面ＧにおけるプレイヤキャラクタＰＣの銃ＪＯを構えた姿勢の向きと照準ＡＯの表示位置が変化する。すなわち、使用者はスティック型コントローラ４の位置と姿勢を変化させることによって、プレイヤキャラクタＰＣが構える銃ＪＯの銃口の方向を変化させることができる。
【００４７】
なお、スティック型コントローラ４の位置は、正確には、後述するカメラに設定されたＸＹＺ座標系におけるスティック型コントローラ４の発光部の位置である。
【００４８】
一方、使用者が構えボタンの押下操作を解除すると、プレイヤキャラクタＰＣは構えの姿勢をやめ、ゲーム画面Ｇに表示されていた照準ＡＯは非表示となる。すなわち、照準ＡＯは、使用者の構えボタンの押下操作により、プレイヤキャラクタＰＣが銃ＪＯを構えているときにだけゲーム画面Ｇに表示される。
【００４９】
そして、照準ＡＯの表示位置が敵キャラクタＥＣに重なったときに、使用者が所定のボタン（発射ボタン）を押下すると、プレイヤキャラクタＰＣが銃ＪＯを撃つ。
【００５０】
ゲーム画面Ｇにおける照準ＡＯの表示位置は、スティック型コントローラ４の位置情報と姿勢情報によって決まる。スティック型コントローラ４の現在の位置情報は、図２に示すように、カメラ７でスティック型コントローラ４を撮影した画像から取得することができる。
【００５１】
スティック型コントローラ４の姿勢情報は、スティック型コントローラ４に設定されたＵＶＷ座標系のＵ軸、Ｖ軸、Ｗ軸の各座標軸周りの回転角θｕ，θｖ，θｗである。回転角θｕ，θｖ，θｗは、内蔵の角速度センサで検出した上記各座標軸周りの角速度ωｕ，ωｖ，ωｗを積分して得られる。スティック型コントローラ４の姿勢は、所定のタイミングで後述するキャリブレーション処理によって基準姿勢に設定される。従って、スティック型コントローラ４の現在の姿勢情報は、最新の基準姿勢におけるＵ軸、Ｖ軸、Ｗ軸に対して角速度センサの検出値を積分して得られる各座標軸周りの回転角θｕ，θｖ，θｗである。
【００５２】
スティック型コントローラ４の基準姿勢からの角速度の積分時間が短い程、スティック型コントローラ４の姿勢情報（回転角θｕ，θｖ，θｗ）の誤差を抑制することができる。本実施形態では、スティック型コントローラ４の構えボタンが押される毎に姿勢情報（回転角θｕ，θｖ，θｗ）をゼロにリセットするキャリブレーション処理を行う。本実施形態のキャリブレーション処理は、構えボタンが押されたときのスティック型コントローラの姿勢を基準姿勢に設定し直す処理である。
【００５３】
照準ＡＯの表示位置の制御は、構えボタンが押下されている期間にだけ行われる。本実施形態では、その期間の開始時のスティック型コントローラ４の姿勢が「基準姿勢」に設定し直される。そして、その基準姿勢からのスティック型コントローラ４の姿勢の変化情報とスティック型コントローラ４の現在の位置情報とを用いて照準ＡＯの表示位置の制御が行われる。この制御ではスティック型コントローラ４の姿勢情報の誤差が抑制されるので、照準ＡＯの表示位置を好適に制御することができる。
【００５４】
そこで、以下では、スティック型コントローラ４によってゲーム画面Ｇにおける照準ＡＯの表示位置を制御する場合を例に本発明を説明する。
【００５５】
図２は、本実施形態に係るゲーム装置の構成を示す斜視図である。
【００５６】
ゲーム装置１は、ゲームのプログラムを実行する装置本体２、及び使用者Ｐが装置本体２にプログラムを実行するために必要な指令を入力するための操作部材であるコントローラ５等で構成されている。装置本体２には、プログラムを実行することによって生成したゲーム画像を表示するためのディスプレイ６が接続されている。コントローラ５にはパッド型コントローラ３とスティック型コントローラ４とが含まれる。使用者Ｐがスティック型コントローラ４を振る操作によって照準ＡＯの表示制御をする際にカメラ７が必要となる。そのため、カメラ７も装置本体２に接続されている。
【００５７】
ディスプレイ６は、例えば、ＡＶケーブルやＨＤＭＩ（High-Definition Multimedia Interface）ケーブルなどのケーブル９で装置本体２に接続されている。カメラ７は、専用のケーブル１０で装置本体２に接続されている。ディスプレイ６としては、例えば、液晶テレビやコンピュータ用のモニタなどが用いられる。カメラ７は、例えば、ＣＣＤ（Charge-Coupled Device）カラーイメージセンサを用いたＣＣＤカメラである。
【００５８】
パッド型コントローラ３及びスティック型コントローラ４は、無線通信によって装置本体２と接続される。この無線通信には、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）による通信方式が用いられる。なお、無線による通信方式には、Ｂｌｕｅｔｏｏｔｈ（登録商標）以外の電波を利用した通信方式、光を利用した通信方式（例えば、ＩｒＤＡ通信方式）若しくは音波を利用した通信方式を用いてもよい。
【００５９】
また、パッド型コントローラ３は、専用のケーブルで装置本体２に接続してもよい。この場合、パッド型コントローラ３とスティック型コントローラ４とを無線通信で結合し、スティック型コントローラ４の操作情報を、パッド型コントローラ３を経由して装置本体２に送信するようにしてもよい。
【００６０】
装置本体２にはメディア挿入口２ａが設けられている。このメディア挿入口２ａに、プログラムが記録されたＤＶＤ−ＲＯＭあるいはＣＤ−ＲＯＭ等の光ディスクを用いたディスクメディア８が装填される。装置本体２にディスクメディア８が装填されると、ＣＰＵがそのディスクメディア８から初期ローディング用のプログラムとそのプログラムの実行に必要なデータ（画像のデータと音声のデータを含む）とを装置本体２内のＲＡＭ（Random  Access Memory）に自動的に読み込む初期ローディング処理を行う。ＣＰＵは、初期ローディング処理の後、ＲＡＭに読み込んだプログラムを実行してゲームの初期画面（例えば、タイトル画面）をディスプレイ６の表示画面６ａに表示する。
【００６１】
その後は、使用者Ｐのパッド型コントローラ３におけるボタンあるいはキーの押下操作、ジョイステックの回転操作又はスティック型コントローラ４を振る操作などに基づいて、ＣＰＵはプログラムを実行する。
【００６２】
なお、ディスクメディア８に記録されたプログラムには複数の独立したプログラムや相互に関連付けられた複数のプログラムが含まれている。本実施形態に係るアクションゲームにおいて、ゲーム空間は複数のフィールドで構成される。そして、フィールド単位でプレイヤキャラクタＰＣは多数の敵キャラクタＥＣと対戦しながら所定の目的を達成する。従って、独立したプログラムには、各フィールドのゲーム進行を制御するプログラムも含まれる。また、照準ＡＯをディスプレイ６の表示画面６ａに表示させるための当該表示画面６ａにおける表示位置を算出するプログラムも独立したプログラムに含まれる。
【００６３】
ゲーム進行を制御するプログラムには、複数の演算用のプログラムとグラフィック制御用のプログラムと音声制御用のプログラムとが含まれる。複数の演算用のプログラムには、例えば、複数の敵キャラクタＥＣの動作を制御するためのプログラム、使用者Ｐの操作によってコントローラ５から入力される操作情報に基づいてプレイヤキャラクタＰＣの動作を制御するためのプログラム、及びプレイヤキャラクタＰＣの動作に基づいてゲーム空間上で発生する事象を制御するためのプログラムが含まれる。ゲーム空間上で発生する事象とは、例えば、対戦時におけるプレイヤキャラクタＰＣ又は敵キャラクタＥＣの負傷や死亡の発生、プレイヤキャラクタＰＣの破壊動作による建物などの損壊の発生などである。グラフィック制御用のプログラムは、上記の演算用のプログラムに基づく演算処理の処理結果をゲーム画像として描画する。音声制御用のプログラムは、効果音を発生させる。
【００６４】
プログラムを実行するために必要なデータには、例えば、上記の演算用のプログラムによる演算処理に必要な各種の数値のデータ、上記のグラフィック制御用のプログラムによる描画処理に必要な画像のデータ、及び上記の音声制御用のプログラムによる音声出力処理に必要な音声のデータが含まれる。数値のデータには、例えば、プレイヤキャラクタＰＣあるいはキャラクタＥＣの体力もしくは攻撃／防御力を示すパラメータのデータ、両者の距離を演算するためのパラメータのデータ、及び各種のフラグのデータなどが含まれる。
【００６５】
画像のデータには、プレイヤキャラクタＰＣあるいは敵キャラクタＥＣなどのキャラクタの画像を作成するためのデータ、対戦フィールドを構成する建物のオブジェクトや背景の画像を作成するためのデータ、ゲーム中のプレイヤキャラクタＰＣのステータスに関する情報を表示するためのデータ、及びプレイヤキャラクタＰＣが銃ＪＯを構えたときに表示する照準ＡＯのデータなどの各種のデータが含まれる。プレイヤキャラクタＰＣのステータスに関する情報には、例えば、体力値、装備している武器、防具、及びマップなどの情報が含まれる。
【００６６】
本実施形態では、ゲーム装置がプレイヤキャラクタＰＣの背後に配置した仮想カメラでプレイヤキャラクタＰＣ側を撮影した仮想のゲーム空間の画像（透視投影法による二次元画像）を上記の画像のデータを用いて生成する。ゲーム装置は、生成した二次元画像をゲーム画像としてディスプレイ６に表示する。
【００６７】
音声データには、ＢＧＭ、プレイヤキャラクタＰＣあるいは敵キャラクタＥＣが発する音声、物体が衝突したときの衝突音、及び爆弾が爆発したときの爆発音などの各種の事象発生に対応した効果音のデータが含まれる。
【００６８】
相互に関連付けられた複数のプログラムは、例えば、１つの処理をするためのプログラムがメインルーチンとサブルーチンの関係にある複数のプログラムとで構成されている場合の両ルーチンのプログラムである。上記したフィールドのゲーム進行を制御するプログラムは、メインルーチンのプログラムとそのメインルーチンに関連付けられた複数のサブルーチンのプログラムとで構成されている。
【００６９】
各フィールドにおけるゲーム進行では、プレイヤキャラクタＰＣが多数の敵キャラクタＥＣと対戦する処理が含まれる。その対戦にはプレイヤキャラクタＰＣが敵キャラクタＥＣを銃撃する攻撃処理が含まれる。この攻撃処理は、メインルーチンに関連付けられたサブルーチンの処理として実行される。すなわち、コントローラ５からプレイヤキャラクタＰＣが敵キャラクタＥＣを銃撃するための一連の操作情報が装置本体２に入力されると、攻撃処理のサブルーチンが実行されることによって、プレイヤキャラクタＰＣが銃ＪＯを構え、照準ＡＯが敵キャラクタＥＣに合わさる。その後、弾が発射されるという一連の動作が行われる。
【００７０】
図３は、図２に示すゲーム装置１の内部構成を示すブロック図である。
【００７１】
装置本体２は、制御部２０１、描画処理部２０２、音声処理部２０３、Ｉ／Ｏインターフェース部２０５、ディスクドライブユニット２０６、メモリカード接続ユニット２０７、及び信号受信部２０８を備えている。制御部２０１には、描画処理部２０２、音声処理部２０３、及びＩ／Ｏインターフェース部２０５が接続されている。また、Ｉ／Ｏインターフェース部２０５には、ディスクドライブユニット２０６、メモリカード接続ユニット２０７、及び信号受信部２０８が接続されている。また、Ｉ／Ｏインターフェース部には、ケーブル９を介してディスプレイ６が接続され、ケーブル１０を介してカメラ７が接続されている。
【００７２】
Ｉ／Ｏインターフェース部２０５は、ディスクドライブユニット２０６、メモリカード接続ユニット２０７、信号受信部２０８、ディスプレイ６及びカメラ７と、制御部２０１との間のデータ及び信号の送受を仲介する。
【００７３】
ディスクドライブユニット２０６は、制御部２０１からのローディング指令に基づき、ディスクメディア８からプログラムやデータを読み出すユニットである。ローディング指令は、ローディングすべきプログラムとそのプログラムの実行に必要なデータとを指定した読出指令である。ディスクドライブユニット２０６は、光ディスクドライブで構成される。
【００７４】
メモリカード接続ユニット２０７は、メモリカード１１への情報の書き込みとメモリカード１１からの情報の読み出しとを行う。メモリカード１１は、前回のゲーム終了時の状態からゲームを再開できるようにするために、予め設定されたゲーム進行に関するデータを保存する。メモリカード１１に保存されるデータには、例えば、ゲームの進行状況を示すデータ、使用者が設定したプレイヤキャラクタに関するデータ、ゲーム中に獲得したポイント及びアイテムなどの各種の特典のデータなどが含まれる。メモリカード１１には、例えば、フラッシュメモリやＳＤカードなどが用いられる。
【００７５】
制御部２０１は、ゲームの開始時にプログラムをディスクメディア８から読み出した後、メモリカード接続ユニット２０７にデータ読出指令を出力する。メモリカード接続ユニット２０７は、そのデータ読出指令に基づき、メモリカード１１から保存されているゲーム進行に関するデータを制御部２０１に読み出す。また、制御部２０１は、ゲーム進行中やゲーム終了時にパッド型コントローラ３から「データのセーブ」の操作情報が入力されると、メモリカード接続ユニット２０７にデータ書込指令を出力する。メモリカード接続ユニット２０７は、そのデータ書込指令に基づき、保存すべきゲーム進行に関するデータをメモリカード１１に書き込む。
【００７６】
信号受信部２０８は、パッド型コントローラ３及びスティック型コントローラ４から短距離無線通信により送信される信号を受信する。信号受信部２０８は、受信した信号に含まれる両コントローラの操作情報及びスティック型コントローラ４に内蔵された角速度センサから出力される角速度情報を抽出し、制御部２０１に入力する。
【００７７】
プログラムは、主として制御部２０１、画像処理部２０２及び音声処理部２０３によって実行される。これらの処理部で処理された結果はＩ／Ｏインターフェース部２０５とケーブル９を介してディスプレイ６に出力される。処理結果に含まれる画像のデータはディスプレイ６の表示画面６ａに表示される。また、処理結果に含まれる音声のデータはディスプレイ６のスピーカ６ｂから出力される。
【００７８】
制御部２０１が実行するプログラム及びデータは、ディスクドライブユニット２０６によってディスクメディア８から制御部２０１に読み込まれる。なお、データがメモリカード１１に保存されている場合は、制御部２０１がメモリカード接続ユニット２０７を介してメモリカード１１からデータを読み込む。また、コントローラ５の操作情報は、当該コントローラ５が操作される毎に信号受信部２０８を介して制御部２０１に入力される。
【００７９】
スティック型コントローラ４内の角速度センサで検出される角速度情報は、所定の周期で信号受信部２０８を介して制御部２０１に入力される。この周期は、描画処理部２０２が描画処理を行うフレーム周期より非常に短い（例えば、１２ミリ秒）。フレーム周期は、フレームレートをＮ枚／秒とすると、１／Ｎ秒であり、通常１／３０秒である。角速度情報の検出周期は、例えば、１２ミリ秒である。制御部２０１は、スティック型コントローラ４から角速度情報が入力される毎に積分演算を行って回転角を算出する。この回転角は、スティック型コントローラ４の基準姿勢におけるＵＶＷ座標系の各軸周りの角度の変化量の累積値である。制御部２０１は、算出した回転角を姿勢情報としてオブジェクト位置算出部２０４に転送する。
【００８０】
また、ディスプレイ６及びカメラ７は、それぞれケーブル９及びケーブル１０によってＩ／Ｏインターフェース部２０５に接続されている。ゲームが開始されると、カメラ７のスティック型コントローラ４を撮影した撮影画像のデータが、所定の周期でＩ／Ｏインターフェース部２０５を介して制御部２０１に入力される。この周期もフレーム周期より非常に短く、例えば、スティック型コントローラ４が角速度情報を送信する周期と同程度である。制御部２０１は、撮影画像のデータが入力される毎にそのデータをオブジェクト位置算出部２０４に転送する。オブジェクト位置算出部２０４は、カメラ７の撮影画像とスティック型コントローラ４の姿勢情報とを用いて、表示画面６ａに照準ＡＯを表示する位置を演算する。
【００８１】
制御部２０１は、装置本体２の全体動作を制御するマイクロコンピュータを有している。マイクロコンピュータは、ＣＰＵ２０１ａ、ＲＯＭ（Read Only Memory）２０１ｂ及びＲＡＭ２０１ｃ等を備えている。ＲＯＭ２０１ｂ及びＲＡＭ２０１ｃは、バスラインでＣＰＵ２０１ａに接続されている。
【００８２】
ＣＰＵ２０１ａは、制御部２０１内で制御の主体であり、プログラム（特に演算用のプログラム）に従って演算処理を行う。ＲＯＭ２０１ｂは、装置本体２の電源がオンになったときに当該装置本体２を所定の初期状態に設定したり、メディア挿入口２ａにディスクメディア８が装填されたときに初期ローディング処理を行ってゲームを開始できる状態に設定したりするために、ＣＰＵ２０１ａに実行させる基本的なプログラムを記憶する。また、ＲＡＭ２０１ｃは、ＣＰＵ２０１ａがＲＯＭ２０１ｂに記憶されたプログラムやディスクメディア８から読み出したプログラムに従って演算処理をするために、プログラムやデータを一時的に記憶する。
【００８３】
ＣＰＵ２０１ａは、ディスクドライブユニット２０６によってディスクメディア８から読み出されたプログラムあるいはデータ、またはメモリカード接続ユニット２０７によってメモリカード１１から読み出されたデータをＲＡＭ２０１ｃに一旦保存する。また、ＣＰＵ２０１ａは、ＲＡＭ２０１ｃの作業エリアを用いてプログラムを実行する。さらにＣＰＵ２０１ａは、主としてゲーム空間上で生じる事象の変化を演算し、その演算結果をゲーム画像及び効果音の変化やプレイヤキャラクタＰＣや敵キャラクタＥＣのステータスの変化に反映する処理をする。これにより、ＣＰＵ２０１ａは、ゲームの進行状況を統括的に制御する。
【００８４】
ゲーム画像の生成は描画処理部２０２によって行われる。効果音の生成は音声処理部２０３によって行われる。
【００８５】
描画処理部２０２は、ＣＰＵ２０１ａからフレーム周期毎に出力される描画指令に基づいて各コマのゲーム画像（二次元画像）を生成する。ＣＰＵ２０１ａは、上記の演算処理によりディスプレイ６に表示すべきゲーム画像を決定する。ＣＰＵ２０１ａは、決定したゲーム画像の描画に必要なデータ（キャラクタあるいはオブジェクトのポリゴンデータ、および背景画像のデータ等）及び光源データ等をＲＡＭ２０１ｃから読み出して描画指令とともに描画処理部２０２に供給する。また、ＣＰＵ２０１ａは、プレイヤキャラクタＰＣ及び敵キャラクタＥＣのゲーム空間における位置のデータ等を描画処理部２０２に供給する。さらに、ＣＰＵ２０１ａは、スティック型コントローラ４で照準ＡＯの表示又は非表示が必要な操作が行われると、描画処理部２０２に照準ＡＯの表示指令又は非表示指令を出力する。
【００８６】
描画処理部２０２は、ＣＰＵ２０１ａからの描画命令に基づいて画像のデータ等を用いて、描画に必要なデータの演算等を行う。また、描画処理部２０２は、その演算結果に基づいて描画処理部２０２内のＶＲＡＭ（図示せず）に１コマ（１フレーム）分のゲーム画像を生成する。描画に必要なデータには、プレイヤキャラクタＰＣ、敵キャラクタＥＣ、各オブジェクト、背景の位置関係、ディスプレイ６の画面上における各オブジェクトを構成するポリゴンの座標、各ポリゴンに対応するテクスチャ、並びに各ポリゴンの反射特性等のデータが含まれる。
【００８７】
また、描画処理部２０２は、ＣＰＵ２０１ａからの表示指令に基づいて照準ＡＯをディスプレイ６の表示画面６ａに表示するための描画処理を行う。生成されたゲーム画像は、フレーム周期毎に映像信号に変換されてディスプレイ６の表示画面６ａに表示される。
【００８８】
音声処理部２０３は、ＣＰＵ２０１ａからの音声指令に基づいて効果音やＢＧＭのデータを生成する。ＣＰＵ２０１ａは、ディスプレイ６のスピーカ６ｂから出力すべき効果音やＢＧＭの音響内容を決定する。また、ＣＰＵ２０１ａは、その内容を音声指令とともに音声処理部２０３に出力する。音声処理部２０３は、指令された音響内容に基づき、ＲＡＭ２０１ｃから効果音及びＢＧＭのデータを読み出し、所定の加工処理とＤ／Ａ変換処理とを行って音声信号を生成する。音声処理部２０３は、生成した音声信号をディスプレイ６のスピーカ６ｂから出力する。
【００８９】
オブジェクト位置算出部２０４は、カメラ７から入力されるスティック型コントローラ４の撮影画像のデータとスティック型コントローラ４から入力される姿勢情報とを用いて、ディスプレイ６の表示画面６ａに照準ＡＯを表示する位置を算出する。
【００９０】
すなわち、オブジェクト位置算出部２０４は、撮影画像からカメラ７に設定されるＸＹＺ座標系におけるスティック型コントローラ４の発光部４０２の位置座標（Ｘｃ，Ｙｃ，Ｚｃ）（図５参照）を算出する。オブジェクト位置算出部２０４は、さらにその算出値のＸＹ座標（Ｘｃ，Ｙｃ）をスティック型コントローラ４から入力される姿勢情報を用いて補正する。その後オブジェクト位置算出部２０４は、その補正値（Ｘcs，Ｙcs）を表示画面６ａのＩＪ座標系（単位はピクセル）の座標（Ｉcs，Ｊcs）に変換する処理（図１１参照）を行う。変換された座標（Ｉcs，Ｊcs）は表示画面６ａにおける照準ＡＯの表示位置である。
【００９１】
オブジェクト位置算出部２０４は、スティック型コントローラ４の照準ＡＯを表示させるためのボタン（図４Ｂのボタン４０９参照）が操作されると、撮影画像と姿勢情報が入力される毎に上記の演算処理を行う。オブジェクト位置算出部２０４による照準ＡＯの表示位置の演算処理の詳細は後述する。
【００９２】
パッド型コントローラ３は、低背の筐体の上面と前側の側面に操作部材が配置されたゲーム専用の周知のコントローラである。パッド型コントローラ３の上面の左端部及び右端部に４つのキー及び４つのボタン（□、△、○、×のマークが付されたボタン）が設けられている。４つのキーの右下側及び４つのボタンの左下側には、一対のスティックＲが設けられている。また、パッド型コントローラ３の前側面の両端部にもボタンが設けられている。
【００９３】
使用者Ｐは、パッド型コントローラ３のキー及びボタンを操作してプレイヤキャラクタＰＣの動作を制御し、ゲームを進行させることができる。
【００９４】
図４Ａ及び図４Ｂは、スティック型コントローラ４の構造を示す図である。図４Ａは上面図、図４Ｂは底面図である。
【００９５】
スティック型コントローラ４は、円筒状の筐体４０１の先端に球状の発光部４０２が設けられた棒状のコントローラである。発光部４０２はＬＥＤなどの発光源４０２ａを内蔵している。発光源４０２ａから発する光によって発光部４０２が球状に発光する。発光部４０２は、カメラ７によって撮影される。その撮影画像を用いて、図５に示すように、カメラ７に設定されたＸＹＺ座標系におけるスティック型コントローラ４の座標（正確には発光部４０２の座標（Ｘｃ，Ｙｃ，Ｚｃ））が算出される。
【００９６】
また、筐体４０１は角速度センサ４０３を内蔵している。角速度センサ４０３には、例えば、ＭＥＭＳ（Micro Electro Mechanical System）ジャイロスコープが用いられる。角速度センサ４０３は、使用者Ｐによってスティック型コントローラ４が振られたときに、図６に示すように、基準姿勢においてスティック型コントローラ４に設けられたＵＶＷ座標系のＵ軸、Ｖ軸、Ｗ軸の各軸周りの角速度ωｕ，ωｖ，ωｗを検出する。Ｗ軸は筐体４０１の長手方向に平行な方向である。Ｖ軸はＷ軸に対して上方向（ボタン４０５の方向）に直交する方向である。Ｕ軸はＷ軸に対して右方向（ボタン４０７の方向）に直交する方向である。制御部２０１は、角速度センサ４０３によって検出された角速度ωｕ，ωｖ，ωｗを積分してスティック型コントローラ４の各軸周りの回転角θｕ，θｖ，θｗを算出する。
【００９７】
スティック型コントローラ４の位置の情報及びスティック型コントローラ４の回転角の情報（スティック型コントローラ４の姿勢情報）は、図７に示すように、ディスプレイ６の表示画面６ａに照準ＡＯを表示させるときに当該表示画面６ａにおける表示位置（Ｉcs，Ｊcs）の演算に用いられる。この演算方法については後述する。
【００９８】
なお、図８に示すように、スティック型コントローラ４を姿勢１から姿勢２に傾けると、スティック型コントローラ４に設定されたＵＶＷ座標系が回転する。従って、姿勢１を基準にした姿勢２のＵ軸、Ｖ軸、Ｗ軸の各軸周りの回転角（θｕ，θｖ，θｗ）は、スティック型コントローラ４を姿勢１から姿勢２に変化させたときの姿勢の変化量を示す。この場合、姿勢１が基準姿勢である。
【００９９】
スティック型コントローラ４の姿勢の変化量は、基準姿勢におけるＵ軸、Ｖ軸、Ｗ軸の各軸の方向を基準とした各軸周りの回転角（θｕ，θｖ，θｗ）として定義される変化量である。従って、基準姿勢を変更すると、回転角（姿勢の変化量）が変化する。すなわち、図８において、スティック型コントローラ４を姿勢２からさらに姿勢３に傾けると、スティック型コントローラ４の姿勢の変化量は姿勢１に対する回転角として算出される。この場合、スティック型コントローラ４が姿勢２になった時点で基準姿勢を姿勢２に変更すると、スティック型コントローラ４の姿勢の変化量は姿勢２に対する回転角として算出される。これにより、スティック型コントローラ４の姿勢の変化量は変化する。
【０１００】
上述したように、角速度センサ４０３により検出される角速度を積分してＵ軸、Ｖ軸、Ｗ軸の各軸周りの回転角θｕ，θｖ，θｗを算出すると、角速度センサ４０３のドリフトに起因する誤差が積算される。その結果、各回転角θｕ，θｖ，θｗの精度が低下する。本実施形態では、精度低下を抑制するために、後述するように、使用者Ｐがスティック型コントローラ４の構えボタンを押下する毎に、角速度センサ４０３により検出される角速度の積分値をゼロにリセットするキャリブレーション処理を行う。
【０１０１】
図８の例では、姿勢１の時に使用者Ｐがスティック型コントローラ４の構えボタンを押下すると、キャリブレーション処理が行われる。そして、角速度センサ４０３により検出される角速度の積分値がゼロにリセットされる。これにより、姿勢１が基準姿勢となる。その後は姿勢１におけるＵ軸、Ｖ軸、Ｗ軸の各方向を基準にして回転角θｕ，θｖ，θｗが算出される。しかし、使用者Ｐが構えボタンの押下操作を解除した後、姿勢２の時に再度構えボタンを押下すると、再度キャリブレーション処理が行われる。そして、その時までに算出された回転角θｕ，θｖ，θｗはそれぞれ「０」にリセットされる。これにより、姿勢２が新たに基準姿勢となる。その後は、姿勢２におけるＵ軸、Ｖ軸、Ｗ軸の各方向を基準にして新たに回転角θｕ，θｖ，θｗが算出される。
【０１０２】
上記のキャリブレーション処理により、ゲーム中にスティック型コントローラ４の回転角の算出値の誤差が増大してスティック型コントローラ４により照準ＡＯの表示位置をモーションコントロールできなくなるという不都合が生じないようになる。なお、キャリブレーション処理の内容については後述する。
【０１０３】
図４Ａに示すとおり、筐体４０１の上面のほぼ中央には、電源用のボタン４０４が設けられている。筐体４０１の上面においてボタン４０４の上側には、ボタン４０５が設けられ、ボタン４０５の両側には、ボタン４０６ａ、ボタン４０６ｂ，ボタン４０６ｃ、ボタン４０６ｄを含む４つのボタン４０６が設けられている。また、筐体４０１の左右の側面には、ボタン４０７とボタン４０８が設けられ、筐体４０１の背面のボタン４０５に対向する位置には、ボタン４０９が設けられている。
【０１０４】
ボタン４０４、ボタン４０５、ボタン４０６、ボタン４０７、ボタン４０８及びボタン４０９にはそれぞれモーメンタリー・オン−オフ・スイッチが設けられている。使用者Ｐが上記のボタンを押下すると、押下している状態の信号がスティック型コントローラ４から装置本体２に入力される。例えば、ボタンを押下していない状態にローレベル信号を割り当て、ボタンを押下している状態にハイレベル信号を割り当てている場合、使用者Ｐがボタンを押下していなければ、制御部２０１内のＣＰＵ２０１ａにはローレベル信号が入力される。一方、使用者Ｐがボタンを押下すると、押下している期間だけハイレベル信号が入力される。
【０１０５】
ボタン４０４、４つのボタン４０６、ボタン４０７及びボタン４０８は、コントローラのボタンとして周知である。従って、これらのボタンの説明は省略し、以下では、本発明に係るプレイヤキャラクタＰＣに銃撃を行わせる操作に関係するボタン４０５及びボタン４０９について説明する。
【０１０６】
図１のゲーム画面Ｇにおいて、プレイヤキャラクタＰＣが銃撃するには、使用者Ｐは、（１）プレイヤキャラクタＰＣが銃ＪＯを構える、（２）使用者Ｐが銃ＪＯの発射方向（ターゲット）を決定する、（３）プレイヤキャラクタＰＣが銃ＪＯから弾を発射する、の３段階の操作を行う必要がある。使用者Ｐが３段階の操作をすることで、プレイヤキャラクタＰＣは銃を構えた状態で敵を探査し、銃の照準を敵に合せた後に弾を発射する動作を行う。
【０１０７】
本実施形態では、ボタン４０９がプレイヤキャラクタＰＣに銃ＪＯを構える姿勢を指令する「構えボタン」に割り当てられている。また、ボタン４０５が銃ＪＯを発射する動作を指令する「発射ボタン」に割り当てられている。
【０１０８】
従って、スティック型コントローラ４では、ボタン４０９が押下されると、プレイヤキャラクタＰＣが銃ＪＯを構えると同時に照準ＡＯが表示される。そして、ボタン４０９を押下した状態でスティック型コントローラ４が振られると、ディスプレイ６の表示画面６ａ上で当該スティック型コントローラ４の振られた方向に照準ＡＯが移動する。更に、ボタン４０９を押下した状態でボタン４０５が押下されると、銃ＪＯから弾が照準ＡＯの方向に発射される。
【０１０９】
使用者Ｐがボタン４０９を押下すると、プレイヤキャラクタＰＣが銃ＪＯを構えるとともに、照準ＡＯがゲーム画面Ｇに表示される。その後、使用者Ｐがボタン４０９の押下操作を継続していれば、照準ＡＯの表示は継続される。一方、ボタン４０９の押下操作を解除すると、照準ＡＯは非表示となる。このため、ボタン４０９は、プレイヤキャラクタＰＣに銃ＪＯを構える姿勢を指令する操作部材であるとともに、照準ＡＯの表示を指令する操作部材である。
【０１１０】
図９は、スティック型コントローラ４の内部構成を示すブロック図である。なお、図４Ａ及び図４Ｂに示した部材及び同一部材には同一の番号が付されている。
【０１１１】
スティック型コントローラ４には、制御部４１０、当該制御部４１０にＩ／Ｏインターフェース部４１１を介して相互に接続されている姿勢検出部４１２、操作部４１３及び信号送信部４１４が設けられている。制御部４１０は、マイクロコンピュータで構成され、スティック型コントローラ４の全体動作を制御する。マイクロコンピュータは、周知のＣＰＵ４１０ａにＲＯＭ４１０ｂ及びＲＡＭ４１０ｃが相互に接続されている。Ｉ／Ｏインターフェース部４１１は、制御部４１０と姿勢検出部４１２、操作部４１３、信号送信部４１４及び発光部４０２との間のデータ及び信号の送受を仲介する。
【０１１２】
姿勢検出部４１２は、角速度センサ４０３を含む。姿勢検出部４１２は、角速度センサ４０３から出力される信号を所定の周期（例えば、１２ミリ秒）でサンプリングしてＵＶＷ座標系のＵ軸、Ｖ軸、Ｗ軸の各軸周りの角速度ωｕ，ωｖ，ωｗを検出する。姿勢検出部４１２は、検出した角速度ωｕ，ωｖ，ωｗの情報を信号送信部４１４を介して装置本体２に送信する。
【０１１３】
操作部４１３は、ボタン４０４、ボタン４０５、ボタン４０６、スタートボタン４０７、セレクトボタン４０８及びボタン４０９の操作情報を制御部４１０に入力する。信号送信部４１４は、姿勢検出部４１２で検出されるスティック型コントローラ４の角速度情報及び操作部４１３から入力される操作情報を短距離無線通信によって装置本体２に送信する。
【０１１４】
次に、ディスプレイ６の表示画面６ａに表示される照準ＡＯの表示位置の制御方法について説明する。
【０１１５】
ディスプレイ６の表示画面６ａにおける照準ＡＯの表示位置は、図１１に示すように、カメラ７に設定されたＸＹＺ座標系におけるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）をディスプレイ６の表示画面６ａに設定されたＩＪ座標系（単位はピクセル）の位置座標（Ｉcs，Ｊcs）に変換することによって決定される。
【０１１６】
スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）は、カメラ７の撮影画像から取得されるスティック型コントローラ４の位置座標（Ｘｃ，Ｙｃ，Ｚｃ）（図５参照）を補正することによって算出される。スティック型コントローラ４の位置座標（Ｘｃ，Ｙｃ，Ｚｃ）は、スティック型コントローラ４の姿勢情報（θｕ，θｖ，θｗ）から算出される姿勢ベクトルの座標（Ｘｓ，Ｙｓ，Ｚｓ）を用いて補正される。
【０１１７】
まず、カメラ７の撮影画像からスティック型コントローラ４の現在の位置座標を取得する方法について、図１０を用いて説明する。
【０１１８】
図１０に示すように、カメラ７の撮影レンズ７０１から距離Ｄの前方位置にある物体面にスティック型コントローラ４の発光部４０２がある。また、撮影レンズ７０１から距離ｄ（焦点距離）の後方位置に撮像面がある。例えば、物体面における発光部４０２のＹ座標Ｙｃと撮像面における発光部４０２の光像のＹ座標ｙcとの間にはＹｃ×ｄ＝ｙc×Ｄの関係が成立する。Ｙ座標Ｙｃは、撮像面における発光部４０２の光像のＹ座標ｙcを用いて、Ｙｃ＝ｙc×Ｄ／ｄの演算式により求めることができる。同様に、物体面における発光部４０２のＸ座標Ｘｃは、撮像面における発光部４０２の光像のＸ座標ｘcを用いて、Ｘｃ＝ｘc×Ｄ／ｄの演算式により求めることができる。
【０１１９】
なお、撮像面における発光部４０２の光像のＸＹ座標（ｘc，ｙc）は、発光部４０２の光像が円形になる。そのため、その光像の中心座標を求めることにより、発光部４０２の光像のＸＹ座標（ｘc，ｙc）を取得することができる。発光部４０２の発光色は予め装置本体２とスティック型コントローラ４との間で設定される。そのため、カメラ７の撮影画像の中から発光部４０２の発光色を有する円形画像を抽出して撮像面における円形画像の中心位置を算出することにより、発光部４０２の光像のＸＹ座標（ｘｃ，ｙｃ）を取得することができる。
【０１２０】
上記の式において、距離ｄはカメラ７の焦点距離（既知）である。また、Ｘ座標ｘc及びＹ座標ｙcは、撮影画像の中心にＸＹの直交座標を設定していれば、そのＸＹ座標系における発光位置を算出することにより得られる。また、距離Ｄは、撮影レンズ７０１から物体面までの距離であるから、発光部４０２のＺ座標Ｚｃに相当する。発光部４０２を予め設定した基準位置（Ｘc0，Ｙc0，Ｚc0）に置いたときの撮像画像における発光位置の座標を（ｘc0，ｙc0）とすると、Ｙc0＝ｙc0×Ｚc0／ｄの関係式が成立する。この関係式から得られるｄ＝ｙc0×Ｚc0／Ｙc0をＹｃ＝ｙc×Ｄ／ｄに代入すると、Ｚ座標Ｚｃは、Ｚｃ＝Ｄ＝Ｚc0×（Ｙｃ／ｙc）×（ｙc0／Ｙc0）により算出することができる。すなわち、Ｋ＝Ｚc0×ｙc0／Ｙc0を予め算出しておけば、Ｚ座標ＺｃはＺｃ＝Ｋ×Ｙｃ／ｙcにより算出することができる。なお、Ｋは、Ｋ＝Ｚc0×ｘc0／Ｘc0でも算出することができ、Ｚｃは、Ｚｃ＝Ｋ×Ｘｃ／ｘcでも算出することができる。
【０１２１】
撮像面における発光部４０２の光像の面積はその光像に含まれるピクセル数により算出することができる。予め設定した標準の距離Ｄ０及び距離Ｄ０における発光部４０２の光像の面積ｓ０のデータが、距離Ｄの算出用のデータとして記憶されている。あとは、距離Ｄにおける発光部４０２の光像の面積ｓが算出されれば、発光部４０２の任意の距離ＤはＤ＝ｓ×Ｄ０／ｓ０を演算することにより算出することができる。
【０１２２】
次に、スティック型コントローラ４の位置座標（Ｘｃ，Ｙｃ，Ｚｃ）を姿勢検出部４１２の検出値から取得されるスティック型コントローラ４の姿勢情報（θｕ，θｖ，θｗ）を用いて補正することにより位置座標（Ｘcs，Ｙcs）を算出する方法について説明する。
【０１２３】
まず、スティック型コントローラ４の現在の姿勢ベクトルが算出される。現在の姿勢ベクトルは、基準姿勢におけるスティック型コントローラ４の姿勢ベクトルを姿勢検出部４１２の検出値から算出される回転角θｕ，θｖ，θｗの分だけ回転させることによって得られる。現在の姿勢ベクトルは、ＸＹＺ座標系において、スティック型コントローラ４が現在指している方向を示す。
【０１２４】
次に、スティック型コントローラ４の現在の位置情報（Ｘｃ，Ｙｃ）に現在の姿勢情報に基づく補正値（Ｘｓ×ｔ，Ｙｓ×ｔ）が加算される処理が行われて現在の位置情報（Ｘｃ，Ｙｃ）が補正される。すなわち、姿勢ベクトルのカメラ７のＸＹＺ座標系における成分を（Ｘｓ，Ｙｓ，Ｚｓ）とすると、
Ｘcs＝Ｘｃ＋（Ｘｓ×ｔ）    …（１）
Ｙcs＝−Ｙｃ＋（Ｙｓ×ｔ）  …（２）
ｔ＝−Ｚｃ／Ｚｓ
の演算処理をすることにより、補正された現在の位置情報（Ｘcs，Ｙcs）が算出される。
【０１２５】
上記（１），（２）式による補正処理は、カメラ７のＸＹＺ座標系におけるスティック型コントローラ４の位置情報に基づく表示画面６ａにおける照準ＡＯの移動制御の精度を向上させる。例えば、スティック型コントローラ４を発光部４０２が上となる縦向きの姿勢にして当該発光部４０２が前後に移動するようにスティック型コントローラ４を振った場合、スティック型コントローラ４のＸ座標ＸｃとＹ座標Ｙｃは殆ど変化しない。この場合は、スティック型コントローラ４を振っても照準ＡＯは表示画面６ａ上で移動しない。従って、この場合は、スティック型コントローラ４の位置や姿勢の変化に基づく表示画面６ａにおける照準ＡＯの移動制御の精度が低下する。
【０１２６】
上記（１），（２）式は、カメラ７から見たスティック型コントローラ４の位置の変化にスティック型コントローラ４の姿勢の変化を加味してＸＹＺ座標系におけるスティック型コントローラ４の現在の位置座標（Ｘcs,Ｙcs）を決定する演算処理である。この演算処理によって、カメラ７から見たスティック型コントローラ４の位置の変化だけでＸＹＺ座標系におけるスティック型コントローラ４の現在の位置座標（Ｘｃ,Ｙｃ）を決定する場合よりも、スティック型コントローラ４の位置及び姿勢の微小な変化を照準ＡＯの移動制御に反映することができる。
【０１２７】
なお、（１），（２）式における姿勢ベクトルの座標（Ｘｓ，Ｙｓ）に対してｔ＝−Ｚｃ／Ｚｓの係数ｔを乗じる補正により、スティック型コントローラ４の姿勢の変化が位置情報（Ｘｃ，Ｙｃ）に与える影響が調整される。本実施形態では、スティック型コントローラ４がモニタ（カメラ７）から遠い位置にある場合に、近い位置にある場合よりもスティック型コントローラ４の姿勢の変化の影響力を大きくする等のために、係数ｔがｔ＝−Ｚｃ／Ｚｓである。スティック型コントローラ４がカメラ７から遠い位置にある場合、近い位置にある場合に比べて発光部４０２の移動がカメラ７で正確に検出され難いからである。なお、位置情報（Ｘｃ，Ｙｃ）の調整は、他の補正の方法で調整してもよい。あるいは係数ｔによる補正で位置情報（Ｘｃ，Ｙｃ）の調整をしなくてもよい。すなわち、Ｘcs＝Ｘｃ＋Ｘｓ、Ｙcs＝−Ｙｃ＋Ｙｓによって位置座標（Ｘcs，Ｙcs）を算出するようにしてもよい。
【０１２８】
次に、補正したスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）が表示画面６ａ上の表示位置に変換される。この変換処理は、表示画面６ａの表示位置の原点Ｏを、例えば、図１１に示すように、表示画面６ａの左下隅に設定する。また、変更処理は、横方向のピクセル位置をＩ座標、縦方向のピクセル位置をＪ座標とした場合、カメラ７のＸＹＺ座標系におけるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）が表示画面６ａのＩＪ座標系の位置座標（Ｉcs，Ｊcs）に変換される。
【０１２９】
この変換処理では、表示画面６ａの解像度をｎ×ｍ（ピクセル）（但し、ｎ，ｍは偶数）とすると、スティック型コントローラ４に対してキャリブレーション処理を行ったときに上記（１），（２）式によって算出される当該スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）が表示画面６ａの中央の位置（ｎ／２，ｍ／２）となるように変換される。すなわち、スティック型コントローラ４に対してキャリブレーション処理が行われると、照準ＡＯの表示画面６ａにおける表示位置が画面中央にリセットされる。
【０１３０】
キャリブレーション処理が行われると、後述するように、姿勢ベクトルのカメラ７のＸＹＺ座標系におけるＸ座標Ｘｓ及びＹ座標Ｙｓはいずれもゼロにリセットされる。このため、その時に上記（１），（２）式によって算出されるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）は（Ｘｃ，−Ｙｃ）である。従って、キャリブレーション処理が行われたときの位置座標（Ｘcs，Ｙcs）＝（Ｘｃ，−Ｙｃ）を表示画面６ａの中央の位置（ｎ／２，ｍ／２）に変換する変換式は、
Ｉcs＝Ｘcs−Ｘｃ＋ｎ／２        …（３）
Ｊcs＝Ｙcs−（−Ｙｃ）＋ｍ／２  …（４）
である。
【０１３１】
上記（３），（４）式において、位置座標（Ｘcs，Ｙcs）から（Ｘｃ，−Ｙｃ）を引く処理は、位置座標（Ｘcs，Ｙcs）に対して（Ｘｃ，−Ｙｃ）のオフセットをかける処理に相当する。従って、そのオフセット値を（Ｘos，Ｙos）とすると、表示位置の変換式（３），（４）は、
（i）キャリブレーション処理が行われたときにカメラ７の撮影画像から取得されるスティック型コントローラ４の位置座標（Ｘｃ，Ｙｃ）を用いて、オフセット値（Ｘos，Ｙos）＝（Ｘｃ，−Ｙｃ）を設定する。
（ii）上記（１），（２）式を用いて算出されるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）をオフセット値（Ｘos，Ｙos）で補正する。
（iii）補正されたＸ，Ｙ座標にそれぞれｎ／２とｍ／２を加算する。
の処理をすることを意味している。
【０１３２】
したがって、カメラ７のＸＹＺ座標系におけるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）を表示画面６ａのＩＪ座標系の位置座標（Ｉcs，Ｊcs）に変換する変換式は、
Ｉcs＝Ｘcs−Ｘos＋ｎ／２  …（５）
Ｊcs＝Ｙcs−Ｙos＋ｍ／２  …（６）
である。
【０１３３】
次に、キャリブレーション処理について説明する。
【０１３４】
キャリブレーション処理は、使用者Ｐがボタン４０９を押下することによって実行される。キャリブレーション処理により、その時のスティック型コントローラ４の姿勢情報（θｕ，θｖ，θｗ）がゼロにリセットされ、ディスプレイ６の表示画面６ａにおける照準ＡＯの表示位置が画面中央（ｎ／２，ｍ／２）にリセットされる。
【０１３５】
ボタン４０９が押下されると、その時のスティック型コントローラ４の姿勢情報（θｕ，θｖ，θｗ）が（０，０，０）にリセットされ、姿勢ベクトルの座標（Ｘｓ，Ｙｓ）は（０，０）となる。これにより、スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）は、上記（１），（２）式より（Ｘcs，Ｙcs）＝（Ｘｃ，−Ｙｃ）となる。
【０１３６】
従って、キャリブレーション処理では、ボタン４０９が押下された時にカメラ７の撮影画像から取得されるスティック型コントローラ４の位置座標（Ｘｃ，Ｙｃ，Ｚｃ）から（Ｘｃ，−Ｙｃ）の値がオフセット値（Ｘos，Ｙos）に設定される。そして、そのオフセット値（Ｘos，Ｙos）を上記（１），（２）式によって算出される位置情報（Ｘcs，Ｙcs）から引くことによって、その位置情報（Ｘcs，Ｙcs）が（０，０）にリセットされる。
【０１３７】
位置情報（Ｘcs，Ｙcs）＝（０，０）は、図５において、発光部４０２がＸＹＺ座標系のＺ軸上にある状態に相当する。従って、キャリブレーション処理は、仮想的にカメラ７に対して発光部４０２がＸＹＺ座標系のＺ軸上に位置するようにスティック型コントローラ４を配置する。すなわち、キャリブレーション処理により、その時のスティック型コントローラ４の姿勢が基準姿勢に設定される。
【０１３８】
ゲーム中においては、使用者Ｐは、ＸＹＺ座標系の空間でスティック型コントローラ４を自由に移動してその姿勢を自由に変化させることができる。しかし、使用者Ｐが任意のタイミングでボタン４０９を押下すると、その時のＸＹＺ座標系における発光部４０２の位置が仮想的にＸＹＺ座標系のＺ軸上に移動し（以下、この移動した位置を「基準位置」という。）、かつ、その時のスティック型コントローラ４の姿勢が基準姿勢に設定される。従って、ボタン４０９の押下操作が継続されているときには、基準位置の基準姿勢におけるスティック型コントローラ４に対する当該スティック型コントローラ４の位置及び姿勢の変化に基づいて、ディスプレイ６の表示画面６ａにおける照準ＡＯの表示位置の制御が行われる。
【０１３９】
例えば、表示画面６ａの解像度を１２８０×７２０（ピクセル）とし、使用者Ｐがボタン４０９を押下した時のスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）を（５００，６００）とした場合、オフセット値（Ｘos，Ｙos）は（５００，６００）である。この時のディスプレイ６の表示画面６ａにおける照準ＡＯの表示位置（Ｉcs，Ｊcs）はＩcs＝５００−５００＋１２８０／２＝６４０、Ｊcs＝６００−６００＋７２０／２＝３６０である。
【０１４０】
その後、使用者Ｐがボタン４０９を押した状態でスティック型コントローラ４を振ることにより、スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）が（６００，６５０）に移動すると、照準ＡＯの表示位置は表示画面６ａの（７４０，４１０）（ピクセル）の位置に移動する。これは、Ｉcs＝６００−５００＋１２８０／２＝７４０、Ｊcs＝６５０−６００＋７２０／２＝４１０となるからである。従って、照準ＡＯの表示位置は、画面中央から（＋１００，＋５０）だけ移動する。
【０１４１】
次に、ディスプレイ６の表示画面６ａに照準ＡＯを表示し、スティック型コントローラ４のモーションコントロールにより照準ＡＯの表示位置を制御する処理について説明する。
【０１４２】
図１２は、フレーム周期で各コマのゲーム画像を生成する際にそのゲーム画像に照準ＡＯを表示させるための処理手順を示すフローチャートである。このフローチャートは、フレーム周期をＴ（秒）とすると、ＣＰＵ２０１ａがＴ（秒）間隔で行う処理である。
【０１４３】
ＣＰＵ２０１ａは、まず、スティック型コントローラ４のボタン４０９の状態を判別する。すなわち、ＣＰＵ２０１ａは、ボタン４０９が押下されているか否か（ボタン４０９の操作信号がローレベルからハイレベルに反転したか否か）を判断する（Ｓ１）。また、ＣＰＵ２０１ａは、ボタン４０９の押下操作が継続しているか否か（ボタン４０９の操作信号がハイレベルを維持しているか否か）を判別する（Ｓ２）。
【０１４４】
ＣＰＵ２０１ａは、ボタン４０９の押下操作が解除された若しくはその解除された状態が継続していると判別すると（Ｓ１，Ｓ２：ＮＯ）、描画処理部２０２に照準ＡＯを非表示にするオブジェクト非表示指令が出力され（Ｓ１２）、処理が終了される。このオブジェクト非表示指令により描画処理部２０２は照準ＡＯの表示処理を停止する。従って、ディスプレイ６の表示画面６ａには照準ＡＯが表示されなくなる。
【０１４５】
なお、ＣＰＵ２０１ａは、例えば、ボタン４０９の操作信号が前回の判別時はハイレベルだったが今回の判別時はローレベルに反転している場合、ボタン４０９の押下操作が解除されたと判別する。また、ＣＰＵ２０１ａは、ボタン４０９の操作信号が前回の判別時も今回の判別時もローレベルである場合、ボタン４０９の押下操作の解除が維持されていると判別する。
【０１４６】
一方、ＣＰＵ２０１ａは、ボタン４０９の押下操作があったと判別すると（Ｓ１：ＹＥＳ）、リセットフラグＲＦを「１」にセットする（Ｓ３）。また、ＣＰＵ２０１ａは、ボタン４０９の押下操作が維持されていると判別すると（Ｓ２：ＹＥＳ）、リセットフラグＲＦを「０」にリセットする（Ｓ４）。その後、ＣＰＵ２０１ａは、ステップＳ５以降でディスプレイ６の表示画面６ａへの照準ＡＯの表示指令の処理を行う。
【０１４７】
なお、ＣＰＵ２０１ａは、ボタン４０９の操作信号が前回の判別時はローレベルだったが今回の判別時はハイレベルに反転している場合、ボタン４０９の押下操作がされたと判別する。また、ＣＰＵ２０１ａは、ボタン４０９の操作信号が前回の判別時も今回の判別時もハイレベルである場合、ボタン４０９の押下操作が維持されていると判別する。
【０１４８】
リセットフラグＲＦは、スティック型コントローラ４のキャリブレーション処理を制御する。リセットフラグＲＦが「１」のときは、キャリブレーション処理を行うことを示し、リセットフラグＲＦが「０」のときはキャリブレーション処理を行わないことを示す。
【０１４９】
ＣＰＵ２０１ａは、ボタン４０９の押下操作が解除された若しくはその解除された状態が継続していると判別したとき（Ｓ２でＮＯのとき）には、リセットフラグＲＦの設定処理をしない。この場合は照準ＡＯをディスプレイ６の表示画面６ａに表示させる処理をしないので、リセットフラグＲＦを前回の判別時に設定された状態から変更する必要がないからである。なお、リセットフラグＲＦの論理は上記の内容と逆であってもよい。
【０１５０】
ステップＳ５に移行すると、ＣＰＵ２０１ａは、リセットフラグＲＦが「１」にセットされているか否かを判別する。リセットフラグＲＦが「１」にセットされていれば（Ｓ５：ＹＥＳ）、ＣＰＵ２０１ａは、スティック型コントローラ４のキャリブレーション処理を行う（Ｓ６）。リセットフラグＲＦが「０」にセットされていれば（Ｓ５：ＮＯ）、ＣＰＵ２０１ａは、スティック型コントローラ４のキャリブレーション処理を行うことなく、ステップＳ７に移行する。
【０１５１】
キャリブレーション処理では、ＣＰＵ２０１ａは、スティック型コントローラ４から送信される角速度情報（ωｕ，ωｖ，ωｗ）を積分演算して得られる姿勢情報（θｕ，θｖ，θｗ）を（０，０，０）にリセットする。また、ＣＰＵ２０１ａは、上記（１），（２）式で算出されるスティック型コントローラ４の位置情報（Ｘcs，Ｙcs）＝（Ｘｃ，−Ｙｃ）をオフセット値（Ｘos，Ｙos）に設定する（Ｓ６）。
【０１５２】
なお、オフセット値（Ｘos，Ｙos）は、ゲーム開始時のキャリブレーション処理で初期設定されている。使用者Ｐは、ゲーム開始時にカメラ７のほぼ正面の位置で発光部４０２を当該カメラ７に向けてキャリブレーション処理のための所定の操作を行う。このキャリブレーション処理で取得される位置座標（Ｘcs，Ｙcs）は（０，０）であるので、初期設定時のオフセット値（Ｘos，Ｙos）は（０，０）である。使用者Ｐがゲームを開始した後、ゲーム中に最初にボタン４０９を押すと、ＣＰＵ２０１ａは、ステップＳ６でオフセット値（０，０）をその時に算出されるスティック型コントローラ４の位置情報（Ｘｃ，−Ｙｃ）に変更する。
【０１５３】
ステップＳ７に移行すると、ＣＰＵ２０１ａは、オブジェクト位置算出部２０４から、その時の発光部４０２のＸＹＺ座標系のＸＹ平面における座標（Ｘcs，Ｙcs）を取得する。この座標（Ｘcs，Ｙcs）は、オブジェクト位置算出部２０４で、発光部４０２のＸＹＺ座標系における座標（Ｘｃ，Ｙｃ，Ｚｃ）と、スティック型コントローラ４の姿勢ベクトルのＸＹＺ座標系における座標（Ｘｓ，Ｙｓ，Ｚｓ）と用いて、上記（１），（２）式を演算することにより算出される。
【０１５４】
続いて、ＣＰＵ２０１ａは、ステップＳ７で取得した位置情報（Ｘcs，Ｙcs）からオフセット値（Ｘos，Ｙos）を差し引いて位置情報（Ｘcs，Ｙcs）の補正を行う（Ｓ８）。
【０１５５】
ＣＰＵ２０１ａは、ボタン４０９が押下された時はキャリブレーション処理を行う。ＣＰＵ２１０ａは、スティック型コントローラ４の位置情報（Ｘcs，Ｙcs）を（Ｘｃ，−Ｙｃ）とし、この位置情報をオフセット値（Ｘos，Ｙos）に設定する。従って、スティック型コントローラ４の位置情報（Ｘcs，Ｙcs）の補正値（Ｘcs’，Ｙcs’）は（０，０）である。一方、キャリブレーション処理の後にスティック型コントローラ４の姿勢が変化したときは、ＣＰＵ２０１ａは、スティック型コントローラ４の位置情報（Ｘcs，Ｙcs）を上記（１），（２）式よりＸcs＝Ｘｃ＋（Ｘｓ×ｔ）（Ｘｓ≠０）、Ｙcs＝−Ｙｃ＋（Ｙｓ×ｔ）（Ｙｓ≠０）に変化させる。従って、スティック型コントローラ４の位置情報（Ｘcs，Ｙcs）の補正値（Ｘcs’，Ｙcs’）は（Ｘcs−Ｘｃ，Ｙcs＋Ｙｃ）である。
【０１５６】
続いて、ＣＰＵ２０１ａは、補正後の位置座標Ｘcs’，Ｙcs’のそれぞれに「ｎ／２」と「ｍ／２」を加算してディスプレイ６の表示画面６ａ上に照準ＡＯを表示させる位置座標（Ｉcs，Ｊcs）（単位ピクセル）を算出する（Ｓ９）。
【０１５７】
続いて、ＣＰＵ２０１ａは、算出した位置座標（Ｉcs，Ｊcs）に照準ＡＯを表示するオブジェクト表示指令を描画処理部２０２に出力し（Ｓ１０）、処理を終了する。このオブジェクト表示指令により描画処理部２０２はディスプレイ６の表示画面６ａの位置座標（Ｉcs，Ｊcs）に照準ＡＯを表示する処理を行う。これによりディスプレイ６の表示画面６ａには照準ＡＯが表示される。
【０１５８】
図１３は、ＣＰＵ２０１ａが数フレームに亘って図１２のフローチャートを実行したときの各処理内容の変化の一例を表した図である。
【０１５９】
同図において、ｔ１，ｔ２，…，ｔ６，t７は描画処理部２０２がゲーム画像を生成するタイミングである。タイミングの間隔がフレーム周期であり、この間隔期間にゲーム画像の生成処理が行われる。照準ＡＯの表示が必要になると、そのゲーム画像の生成処理に併せて照準ＡＯの表示処理が行われる。なお、Ｔ１，Ｔ２，…，Ｔ６は、各フレーム周期を識別するために付した符号である。
【０１６０】
同図の「ボタンの変化」の欄では、「信号」の欄はボタン４０９の操作信号のレベル変化を示す。「ＯＦＦ−ＯＦＦ」、「ＯＦＦ−ＯＮ」、「ＯＮ−ＯＮ」、「ＯＮ−ＯＦＦ」の各欄は、各フレーム周期におけるボタン４０９の操作信号の変化がいずれの状態に該当するかを示している。
【０１６１】
フレーム周期Ｔ１の期間が「ＯＦＦ−ＯＮ」の欄に〇印が付いているのは、この期間にボタン４０９の操作信号がローレベル（ＯＦＦ状態）からハイレベル（ＯＮ状態）に変化したことを示している。また、フレーム周期Ｔ２，Ｔ３，Ｔ４の期間が「ＯＮ−ＯＮ」の欄に〇印が付いているのは、この期間はボタン４０９の操作信号がハイレベル（ＯＮ状態）に維持されていることを示している。また、フレーム周期Ｔ５の期間が「ＯＮ−ＯＦＦ」の欄に〇印が付いているのは、この期間にボタン４０９の操作信号がハイレベル（ＯＮ状態）からローレベル（ＯＦＦ状態）に変化したことを示している。
【０１６２】
「リセットフラグＲＦ」の欄は、リセットフラグＲＦの内容を示している。フレーム周期Ｔ１，Ｔ４〜Ｔ６のリセットフラグＲＦが「０」になっているのは、フレーム周期Ｔ１，Ｔ４，Ｔ５，Ｔ６では各フレーム周期の直前のフレーム周期のリセットフラグＲＦの状態が維持されているからである。一方、フレーム周期Ｔ２のリセットフラグＲＦが「１」になっているのは、フレーム周期Ｔ２でボタン４０９が押下されたことがフレーム周期Ｔ２で検出され、ｔ３タイミングでのゲーム画像の生成処理でキャリブレーション処理が行われたからである。また、フレーム周期Ｔ３のリセットフラグＲＦが「０」になっているのは、キャリブレーション処理はボタン４０９が押下されたときにだけ行われるため、フレーム周期Ｔ２で「１」にセットされたリセットフラグＲＦがフレーム周期Ｔ３ではリセットされるためである。
【０１６３】
「照準オブジェクトの表示」の欄は、ディスプレイ６の表示画面６ａにおける照準ＡＯの表示位置の一例である。「指令」の欄は、ＣＰＵ２０１ａから描画処理部２０２に出力される照準ＡＯの表示に関する指令内容を示している。また、「オフセット値」の欄は、各フレーム周期におけるオフセット値（Ｘos，Ｙos）の内容を示している。
【０１６４】
図１３に示すように、ボタン４０９が押下されたこと及びその状態が継続されていることが検出されているフレーム周期Ｔ２〜Ｔ５の期間だけディスプレイ６の表示画面６ａに照準ＡＯが表示される。ボタン４０９の押下操作が検出された直後のフレーム周期Ｔ２において照準ＡＯが初めてディスプレイ６の表示画面６ａの中央に表示される。その後、照準ＡＯの表示画面６ａにおける表示位置は、ボタン４０９が押下された状態でスティック型コントローラ４が振られるのに応じて中央から移動する。
【０１６５】
ボタン４０９が押下されていないフレーム周期Ｔ１ではリセットフラグＲＦが「０」にリセットされているので、オフセット値（Ｘos，Ｙos）は初期値の（０,０）に保持されている。しかし、フレーム周期Ｔ２でボタン４０９の押下操作が検出されてリセットフラグＲＦが「１」にセットされるのに応じて、オフセット値（Ｘos，Ｙos）は、その時に算出されるスティック型コントローラ４の位置座標（Ｘｃ，−Ｙｃ）で更新される。そして、その後は再度ボタン４０９の押下操作が検出されるまで、そのオフセット値（Ｘｃ，−Ｙｃ）が保持される。
【０１６６】
上記のように、本実施形態によれば、使用者Ｐがボタン４０９を押下してディスプレイ６の表示画面６ａに照準ＡＯが表示される時に、その時のスティック型コントローラ４の姿勢情報（θｕ，θｖ，θｗ）をゼロにリセットするキャリブレーション処理が行われる。従って、使用者Ｐは、ゲーム中にゲーム操作には関係のないキャリブレーション処理をするための操作を行う必要がなく、ゲームに集中することができる。
【０１６７】
また、キャリブレーション処理のためにゲームを中断することがないので、使用者Ｐにゲームが中断されることのストレスを与えることもない。
【０１６８】
また、キャリブレーション処理を実行すると、照準ＡＯが表示画面６ａの中央に移動する。従って、使用者Ｐはキャリブレーション処理が確実に行われていることを容易に確認することができる。
【０１６９】
また、プレイヤキャラクタＰＣが銃ＪＯを構える操作をキャリブレーションを行うための操作に兼用している。そのため、使用者Ｐは、コントローラ５にスティック型コントローラ４のキャリブレーション処理のための操作を別途設定する必要がない。従って、コントローラ５のボタン又はキーの操作の多重化を低減することができる。
【０１７０】
また、ディスプレイ６の表示画面６ａに照準ＡＯが表示される時にキャリブレーション処理を行う。これにより、その後のスティック型コントローラ４の姿勢情報（Ｕ軸，Ｖ軸，Ｗ軸の各軸周りの回転角θｕ，θｖ，θｗ）の誤差を抑制することができる。特に、本実施形態では、照準ＡＯの表示処理をする毎にキャリブレーション処理を行う。そのため、スティック型コントローラ４の姿勢情報の誤差が累積することがない。従って、表示画面６ａにおける照準ＡＯの移動を使用者Ｐのスティック型コントローラ４を振る操作に基づいて可及的正確に制御することができる。
【０１７１】
なお、スティック型コントローラ４内の姿勢検出部４１２で角速度センサ４０３によって検出した角速度情報（ωｕ，ωｖ，ωｗ）の積分演算を行って姿勢情報（θｕ，θｖ，θｗ）を算出し、スティック型コントローラ４からその姿勢情報を装置本体２に送信してもよい。
【０１７２】
この場合は、ボタン４０９が押下されると、姿勢検出部４１２は姿勢情報（θｕ，θｖ，θｗ）のリセットを行う。また、装置本体２では、スティック型コントローラ４からのボタン４０９の押下操作の信号の受信によりスティック型コントローラ４でキャリブレーション処理が行われたことを認識するようにすればよい。あるいは、スティック型コントローラ４からキャリブレーション処理を行ったことを示す信号を装置本体２に送信し、その信号によってキャリブレーション処理を認識させるようにしてもよい。逆に、装置本体２がスティック型コントローラ４からのボタン４０９の押下操作の信号を受信すると、スティック型コントローラ４にキャリブレーション処理の実行命令を送信するようにしてもよい。
【０１７３】
また、上記実施形態では、キャブレーション処理を行わせるボタンをスティック型コントローラ４に設けられたボタンに設定していたが、パッド型コントローラ３に設けられたボタンに設定してもよい。また、キャブレーション処理を行うには、ボタン４０９のような押しボタンスイッチのボタンを押下するのではなく、パッド型コントローラ３に設けられたアナログステッィクを操作するのであってもよい。
【０１７４】
また、上記実施形態では、照準ＡＯの表示を指令するボタンと照準ＡＯの非表示を指令するボタンを同一のボタン（スティック型コントローラ４のボタン４０９）で共用していたが、両ボタンは異なっていてもよい。
【０１７５】
また、使用者Ｐがパッド型コントローラ３とスティック型コントローラ４の両方を操作してゲームを行うアクションゲームについて説明したが、本発明はこれに限られない。すなわち、本発明は、スティック型コントローラ４だけを用いるゲームにも適用することができる。
【０１７６】
また、上記実施形態では、照準ＡＯがディスプレイ６の表示画面６ａに表示され、その照準ＡＯが表示画面６ａ上で移動する例を説明した。しかし、本発明は、姿勢を検出できるセンサを備えたコントローラの位置や姿勢を変化させることによって表示画面６ａに表示されるキャラクタ又はオブジェクトを操作するゲームにおいて、ゲーム中にコントローラの位置や姿勢を変化させる操作によってキャラクタやオブジェクトの操作が可能になるタイミングでキャリブレーション処理を行う構成のゲームに広く適用することができる。
【０１７７】
また、上記実施形態では、コントローラがゲーム装置の本体と別体となっていたが、本発明はこれに限られない。すなわち、携帯型ゲーム装置、携帯型電話装置若しくはノート型パソコンのようにコントローラとディスプレイとが装置本体に一体となっているゲームが可能な装置において、装置本体に姿勢が検出できるセンサが設けられている装置にも本発明が適用できることは言うまでもない。この場合は、装置本体がコントローラと考えることができる。
【０１７８】
従って、本発明は、上記実施形態のように、キャリブレーション処理のトリガーとして、キャラクタ又はオブジェクトの表示を指令するボタンの操作を必要とするものではない。本発明では、ディスプレイ６の表示画面６ａにキャラクタ又はオブジェクトが表示されている状態で、そのキャラクタやオブジェクトに対してコントローラの位置や姿勢を変化させる操作による制御が可能になる条件が成立すると、その条件成立時にキャリブレーション処理を行うことができる。
【０１７９】
上記の条件としては、使用者Ｐによってコントローラ（ゲーム装置とは別体のコントローラ及びゲーム装置と一体となっているコントローラを含む）に設けられた特定のボタンが操作されること、或いは使用者Ｐの操作には関係なくゲーム場面が特定の場面になることなどが考えられる。
【０１８０】
特定のボタンが操作される条件としては、例えば、アクションゲームにおいて、敵キャラクタからプレイヤキャラクタに対してミサイル攻撃が行われたとき、使用者がコントローラの特定のボタンを押下すると、コントローラの位置又は姿勢を変化させる操作によってプレイヤキャラクタの姿勢を変化させてミサイルを回避することができる構成が考えられる。この構成では、特定のボタンの押下操作が条件であるから、使用者が特定のボタンを押下すると、キャリブレーション処理が行われる。そして、その後に使用者がコントローラを前後左右に傾ける操作をすると、その操作に応じて表示画面上のプレイヤキャラクタが上半身を上下左右に傾ける動作をしてミサイルを回避することができる。
【０１８１】
また、ゲーム場面が特定の場面になる条件としては、例えば、上記のアクションゲームにおいて、敵キャラクタがミサイル攻撃などの特定種類の攻撃をすると、その攻撃が終了するまでの期間が自動的にゲームの操作装置の姿勢変化操作が可能になる構成が考えられる。攻撃が終了するとは、例えば、ミサイルがプレイヤキャラクタＰＣ若しくは他のオブジェクトに当たるか、何処にも当たらずに消滅するなどの場合である。
【０１８２】
この構成では、敵キャラクタがミサイル攻撃などの特定種類の攻撃を行うことが条件になる。つまり、敵キャラクタがミサイル攻撃を行うと、キャリブレーション処理が行われる。そして、その後に使用者がコントローラを前後左右に傾ける操作をすると、その操作に応じて表示画面上のプレイヤキャラクタが上半身を上下左右に傾ける動作をしてミサイルを回避することができる。
【０１８３】
また、他のジャンルのゲームとしては、ディスプレイに表示された迷路でコントローラの姿勢を変化させてボールなどのオブジェクトを移動させるゲームが考えられる。この種のゲームには、予め決められた一定時間内にボールを迷路のスタート地点からゴール地点に移動させることを目的とするもの、或いは他の使用者とボールの移動時間を競う競技タイプのものが含まれる。この種のゲームでは、いずれのタイプでもボールが迷路のスタート地点にセットされる。この場合は、移動開始の条件が成立してからボールがゴール地点に到達するまでの期間（一定時間内にボールがゴール地点に到達しない場合は、一定時間が経過するまで期間）は、コントローラの位置及び姿勢を変化させる操作が可能である。
【０１８４】
例えば、競技タイプのボールの移動開始の条件としては、ボールが迷路のスタート地点にセットされた後に、使用者が特定のボタンを操作することが考えられる。この場合は、ゲームが開始された後に使用者が任意のタイミングで特定のボタンを操作すると、そのタイミングでキャリブレーション処理が行われる。この場合は、ゲーム開始後に使用者が特定のボタンを操作することがキャリブレーション処理の条件となる。
【０１８５】
また、別の条件としては、ボールが迷路のスタート地点にセットされた後にコンピュータがカウントダウンを行い、そのカウントダウンが終了することが考えられる。この場合は、ゲームが開始されてコンピュータがボールを迷路のスタート地点にセットするなどの所定の画面処理を行った後にカウントダウンの処理を終了すると、キャリブレーション処理が行われる。従って、この場合は、ゲーム開始後にコンピュータが使用者にボールの移動時間の計時開始を報知する処理をしたことがキャリブレーション処理の条件となる。
【０１８６】
また、上記実施形態では、姿勢センサとして角速度センサを用いた例を説明したが、本発明はこれに限られない。すなわち、例えば、加速度計などの他の種類のセンサを用いてスティック型コントローラ４の姿勢の変化を検出する場合にも本発明を適用できることはいうまでもない。
【０１８７】
また、上記実施形態では、アクションゲームを例に説明したが、例えば、ＲＰＧ（ロールプレイングゲーム）、シューティングゲーム、格闘ゲーム、アドベンチャーゲームなどの様々なジャンルのゲームにおいても、本発明を適用することができる。また、「ＳＥＣＯＮＤ  ＬＩＦＥ（登録商標）」、或いは「ＰｌａｙＳｔａｉｏｎ（登録商標）Ｈｏｍｅ」等で提供されるバーチャル世界にアバターと呼ばれる使用者の分身を登場させて仮想世界での生活を体験するゲームにも適用することができる。
【０１８８】
また、本発明は、複数の使用者の操作するキャラクタ若しくはＣＰＵの制御するキャラクタがチームを組んで協同して敵キャラクタと対戦するようなゲーム、或いは他の使用者の操作するキャラクタを敵キャラクタとして対戦するようなゲームにも適用することができる。
【０１８９】
また、上記実施形態では、オフラインタイプのゲーム装置について説明したが、本発明はオンラインタイプのゲームにも適用できることは言うまでもない。
【０１９０】
また、上記実施形態では、家庭用ゲーム装置や携帯型ゲーム装置でゲームを実施する場合について説明したが、本発明はこれに限定されない。すなわち、本発明は、例えば、アーケードゲーム装置、或いはゲームソフトが搭載されているパーソナルコンピュータ等でゲームを実施する場合にも適用することができる。
【図１】
2011122214.tif 000003
【図２】
2011122214.tif 000004
【図３】
2011122214.tif 000005
【図４Ａ】
2011122214.tif 000006
【図４Ｂ】
2011122214.tif 000007
【図５】
2011122214.tif 000008
【図６】
2011122214.tif 000009
【図７】
2011122214.tif 000010
【図８】
2011122214.tif 000011
【図９】
2011122214.tif 000012
【図１０】
2011122214.tif 000013
【図１１】
2011122214.tif 000014
【図１２】
2011122214.tif 000015
【図１３】
2011122214.tif 000016
【手続補正書】
【提出日】平成23年6月3日(2011.6.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータを、
ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出手段と、
前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御手段と、
前記ゲームの実行中に所定の条件が成立すると、前記姿勢変化量算出手段の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット手段と、
して機能させるプログラム。
【請求項２】
前記所定の条件の成立は、使用者によってゲーム進行に使用される前記操作装置の所定の操作部材が操作されたことを示す操作信号を受け取ることである、請求項１に記載のプログラム。
【請求項３】
前記所定の操作部材は、前記使用者による前記オブジェクトの操作開始を指示する第１の操作部材であり、
前記オブジェクト制御手段は、
前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御する、請求項２に記載のプログラム。
【請求項４】
前記オブジェクト制御手段は、
前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセット手段によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御手段と、
リセット後に前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御手段と、
を含む、請求項３に記載のプログラム。
【請求項５】
前記初期位置は、前記表示画面の中央位置である、請求項４に記載のプログラム。
【請求項６】
前記リセット手段は、前記使用者による前記操作装置に設けられた前記第１の操作部材の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、
前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御する、請求項３乃至５のいずれかに記載のプログラム。
【請求項７】
前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、
前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号である、請求項３乃至６のいずれかに記載のプログラム。
【請求項８】
前記姿勢センサは、角速度センサであり、前記姿勢変化量算出手段は、前記角速度センサによる角速度検出値を積分演算した回転角を前記操作装置の前記基準姿勢からの姿勢の変化量として算出する、請求項１乃至７のいずれかに記載のプログラム。
【請求項９】
前記オブジェクトは、前記使用者が前記操作装置から所定の操作情報を入力するときに当該操作を補助するために表示するオブジェクトである、請求項１乃至８のいずれかに記載のプログラム。
【請求項１０】
前記ゲーム画面は、射撃の要素を含むゲーム画面であり、
前記オブジェクトは、前記射撃の目標を示す照準オブジェクトである、請求項９に記載のプログラム。
【請求項１１】
請求項１乃至１０のいずれかに記載のプログラムを記憶したプログラム記憶部と、
前記プログラム記憶部に記憶されたプログラムを実行するコンピュータと、
を備えていることを特徴とするゲームシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作装置の姿勢情報を用いて表示装置に表示されるオブジェクトの動きを制御するプログラムおよびゲームシステムに関する。
【背景技術】
【０００２】
従来、ディスプレイを用いた家庭用のゲーム機のコントローラにおいて、角速度センサ若しくは加速度センサ等の姿勢を検出することができる姿勢センサを内蔵したコントローラが商品化されている。また、そのコントローラを用いたゲームプログラムも商品化されている。
【０００３】
角速度センサを内蔵したコントローラは、ゲーム機に角速度センサで検出した角速度の検出信号を出力する。角速度センサの検出信号は、コントローラに設定されたｘｙｚの直交座標系における各座標軸の周りをコントローラが回転する角速度を検出した信号である。加速度センサの検出信号は、上記のｘｙｚの各座標軸方向におけるコントローラの加速度を検出した信号である。
【０００４】
ゲーム機内では、角速度センサ若しくは加速度センサの検出信号を用いてコントローラの基準姿勢に対する相対的な姿勢の変化量を算出する。基準姿勢は、例えば、コントローラに設定されるｘｙｚ座標系のｘｚ面が水平面に一致し、かつ、ｚ軸がゲーム機に向いた姿勢である。姿勢の変化量は、コントローラの各座標軸周りの回転角の変化量若しくは各座標軸方向の変位量である。
【０００５】
そして、ゲーム機は、コントローラの姿勢の変化量の算出結果を用いて、ゲーム機のディスプレイに表示するキャラクタあるいはオブジェクトのディスプレイ上の動きを制御する。キャラクタは、例えば、使用者あるいはコンピュータが制御する動物あるいは人物などの画像である。なお、オブジェクトはキャラクタを含む概念であるが、以下では説明の便宜上、オブジェクトとキャラクタとを区別して説明する。
【０００６】
例えば、テニスゲームでは、使用者がテニスラケットを振るようにコントローラを振ると、そのときのコントローラの姿勢の変化に基づいて、ディスプレイに表示されたプレイヤキャラクタがテニスラケットを振る動きをする。プレイヤキャラクタは使用者の操作によってディスプレイ上の動作が制御されるキャラクタである。また、アクションゲームでは、使用者がコントローラの所定のボタンを押すと、プレイヤキャラクタが銃を構える動作をするとともに、その銃の狙っている位置を示す照準のオブジェトが表示される。そして、使用者がボタンを押した状態でコントローラを上下又は左右に振ると、そのときのコントローラの姿勢（向き）の変化に応じてディスプレイ上で照準の表示位置が変化する。
【０００７】
ＷＯ２００９／０８４２１３Ａ１公報には、仮想の三次元ゲーム空間でゲームが展開するアクションゲームにおいて、使用者がゲーム画像を通じてプレイヤキャラクタの周りの状況を見ることができるようにするために、以下の発明が記載されている。すなわち、上記公報には、角速度センサが内蔵されたコントローラの回転に応じて、三次元ゲーム空間上に配置される仮想カメラがプレイヤキャラクタを中心とする円周上で回転する発明が記載されている。
【０００８】
同公報に記載の発明は、プレイヤキャラクタが三次元ゲーム空間上で取得したトロフィーなどのアイテムの形状及びデザインの詳細を使用者が確認できるようにする場合にも適用することができる。この場合は、コンピュータは、コントローラの回転に応じて仮想カメラをアイテムの周りで回転する。コンピュータは、この仮想カメラの回転により、アイテムを３６０度全方向から見た映像を生成してディスプレイに表示する。
【０００９】
【特許文献１】ＷＯ２００９／０８４２１３Ａ１公報
【特許文献２】特開２００９−１０１０３５号公報
【特許文献３】特開２０１０−５３３２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ディスプレイに表示されたキャラクタ及びオブジェクトの動きをコントローラのｘｙｚの各座標軸周りの回転角に基づいて制御するためには、その回転角をできるだけ正確に検出する必要がある。しかしながら、角速度センサを用いてコントローラの基準姿勢からの回転角を検出する場合、回転角は、角速度センサから出力される角速度を積分して算出される（特開２００９−１０１０３５号公報及び特開２０１０−５３３２号公報）。そのため、角速度の積分値に角速度センサのドリフトによる誤差が累積し、検出される回転角が時間の経過とともに不正確になるという問題がある。このため、ゲーム時間が長時間に亘る場合は、コントローラの姿勢の変化に基づいてディスプレイに表示されるキャラクタ及びオブジェクトの動きを適切に制御できない場合が生じる。
【００１１】
テニスゲームなどのようにゲーム開始からゲーム終了するまでの時間が比較的短いゲームソフトでは、例えば、新規にゲームを開始する毎に、使用者がコントローラの基準姿勢を再設定（リセット）するための所定の操作をしなければならないようになっている。この操作を「キャリブレーション操作」と言い、コンピュータが行うコントローラの基準姿勢を再設定（リセット）する処理を「キャリブレーション処理」という。
【００１２】
ディスプレイに表示された選択画面で、使用者がコントローラを振ることによってディスプレイに表示されたカーソルを所望の選択項目に移動させる制御を行う場合、使用者のコントローラの振り方によってはカーソルがディスプレイの画面外に出てしまい、カーソル位置が分からなくなる状態が生じる。そのため、使用者がキャリブレーション操作を行う必要がある。この場合には、例えば、使用者がコントローラをディスプレイに向けた状態でキャリブレーション操作として所定のボタンを押す操作をすると、その操作に基づいて、コンピュータがカーソルの表示位置をディスプレイの所定の位置にリセットする処理を行う。
【００１３】
しかしながら、例えば、「バイオハザード（登録商標）」のようなゲーム時間が長時間になるゲームで、コントローラの姿勢の変化を利用してディスプレイに表示されるキャラクタやオブジェクトの動きを制御しようとすると、コントローラの姿勢の変化に基づいてディスプレイに表示されるキャラクタやオブジェクトの動きを制御することができなくなる場合が生じる。コントローラに内蔵された角速度センサの検出角速度から算出される回転角の誤差が時間の経過とともに増大するからである。
【００１４】
この不都合を解消するためには、ゲーム中に定期的若しくは適当なタイミングでコンピュータがコントローラのキャリブレーション処理を行うようにすることが考えられる。しかし、ゲーム開始時に使用者が行うキャリブレーション操作をゲーム中にも行う場合、コンピュータはキャリブレーション処理のためにゲーム展開の制御を中断することになる。そのため、キャリブレーション操作がゲームに熱中している使用者にストレスとなり、ゲームの面白み、あるいはゲームへの興味が薄れるという問題が生じる。
【００１５】
また、一般にゲームでは、ゲームメディアからゲームソフトをゲーム機に読み込んでゲームができるようになるまでに、使用者が種々の選択操作や設定操作をしなければならず、そのために一定の時間を要する。ゲームをできるようするための操作にキャリブレーション操作も加えると、使用者にとっては煩わしさが増加する。従って、可能であれば、ゲーム中にコンピュータがキャリブレーション処理を自動的に行うようにすることが好ましい。しかし、従来、このような機能を備えたゲームソフトは提案されていない。
【００１６】
本発明は、姿勢を検出することができるセンサを備えたコントローラのキャリブレーション処理をゲーム中の使用者による所定の操作によって自動的に行うことができ、コントローラの姿勢の変化に基づくゲーム画面内のキャラクタやオブジェクトの動きを好適に制御することができるプログラム及びゲームシステムを提供することを目的としている。
【課題を解決するための手段】
【００１７】
上記課題を解決するため、本発明では、次の技術的手段を講じている。
【００１８】
本発明の第１の側面によって提供されるプログラムは、コンピュータを、ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出手段と、前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御手段と、前記ゲームの実行中に所定の条件が成立すると、前記姿勢変化量算出手段の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット手段と、して機能させることを特徴とする。
【００１９】
なお、操作装置は、コントローラなどのゲーム装置とは別体の操作装置だけでなく、携帯型ゲーム装置のようにゲーム装置本体に一体的に設けられた操作部材も含むものである。後者の場合は、ゲーム装置本体が使用者の操作する操作装置となる。
【００２０】
上記のプログラムにおいて、前記所定の条件の成立は、使用者によってゲーム進行に使用される前記操作装置の所定の操作部材が操作されたことを示す操作信号を受け取ることにするとよい。
【００２１】
上記のプログラムにおいて、前記所定の操作部材は、前記使用者による前記オブジェクトの操作開始を指示する第１の操作部材であり、前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御するとよい。
【００２２】
上記のプログラムにおいて、前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセット手段によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御手段と、リセット後に前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御手段と、を含むとよい。なお、表示装置は、テレビモニタなどのゲーム装置とは別体の表示装置だけでなく、携帯型ゲーム装置のようにゲーム装置本体に一体的に設けられたディスプレイも含むものである。
【００２３】
上記のプログラムにおいて、前記初期位置は、前記表示画面の中央位置であるとよい。また、前記リセット手段は、前記使用者による前記操作装置に設けられた前記第１の操作部材の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御するとよい。
【００２４】
上記のプログラムにおいて、前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号であるとよい。
【００２５】
【００２６】
上記のプログラムにおいて、前記姿勢センサは、角速度センサであり、前記姿勢変化量算出手段は、前記角速度センサによる角速度検出値を積分演算した回転角を前記操作装置の前記基準姿勢からの姿勢の変化量として算出するとよい。
【００２７】
上記のプログラムにおいて、前記オブジェクトは、前記使用者が前記操作装置から所定の操作情報を入力するときに当該操作を補助するために表示するオブジェクトであるとよい。また、前記ゲーム画面は、射撃の要素を含むゲーム画面であり、前記オブジェクトは、前記射撃の目標を示す照準オブジェクトであるとよい。
【００２８】
本発明の第２の側面によって提供されるゲームシステムは、第１の側面によって提供されるプログラムを記録したプログラム記録部と、前記プログラム記録部に記録されたプログラムを実行するコンピュータと、を備えていることを特徴とする。
【００２９】
【００３０】
【００３１】
【００３２】
【００３３】
【００３４】
【発明の効果】
【００３５】
本発明によれば、ゲームを実行中に、操作装置の姿勢が変化すると、コンピュータは、姿勢センサによるその姿勢の変化の検出値を受信して操作装置の基準姿勢からの姿勢の変化量を算出する。そして、コンピュータは、その算出結果に基づいて表示装置へのオブジェクトの表示を制御する。すなわち、コンピュータは、操作装置の姿勢の変化量に応じて表示装置の表示画面におけるオブジェクトの表示位置を変化させる制御を行う。そして、ゲームの実行中に所定の条件が成立すると、コンピュータは、操作装置の基準姿勢を再設定し、その再設定した基準姿勢に対する姿勢の変化量を算出する。
【００３６】
例えば、使用者がゲーム進行に使用される所定の操作部材を操作すると、コンピュータは、操作装置の基準姿勢を再設定し、その再設定した基準姿勢に対する姿勢の変化量を算出する。例えば、プレイヤキャラクタが銃による攻撃を行うアクションを含むアクションゲームにおいて、使用者がゲームの実行中にプレイヤキャラクタに銃を構えさせるための所定の操作部材を操作すると、コンピュータは、その時の操作装置の姿勢を基準姿勢に再設定する。従って、その後にコンピュータが算出する操作装置の姿勢の変化量の誤差を抑制することができる。その結果、表示装置に表示された「照準」のオブジェクトの表示位置の制御が使用者の操作による操作装置の姿勢の変化量に基づいて好適かつ正確に行われる。
【００３７】
また、コンピュータは、操作装置の基準姿勢を再設定するキャリブレーション処理を所定の条件の成立を契機に行う。所定の条件の成立とは、例えば、ゲームの実行中に使用者が所定の操作部材を操作することである。この制御により、使用者に対して、操作装置のキャリブレーション処理のためにゲームが中断するというストレスを与えることがない。従って、使用者はゲームに集中することができる。
【００３８】
本発明のその他の特徴および利点は、添付図面を参照して以下に行う詳細な説明によって、より明らかとなろう。
【図面の簡単な説明】
【００３９】
【図１】図１は、ゲーム画面に表示されたプレイヤキャラクタに銃を構える動作をさせたときに銃の照準を示すオブジェクトが表示された状態を示す図である。
【図２】図２は、本実施形態に係るゲーム装置の構成を示す斜視図である。
【図３】図３は、本実施形態に係るゲーム装置の内部構成を示すブロック図である。
【図４Ａ】図４Ａは、スティック型コントローラの構成を示す上面図である。
【図４Ｂ】図４Ｂは、スティック型コントローラの構成を示す底面図である。
【図５】図５は、カメラに設定されたＸＹＺ座標系におけるスティック型コントローラの位置を説明するための図である。
【図６】図６は、スティック型コントローラに設定されたｘｙｚ座標系と角速度センサで検出された角速度の関係を説明するための図である。
【図７】図７は、スティック型コントローラの指す方向とディスプレイの表示画面に表示されるカーソルの表示位置との関係を示す図である。
【図８】図８は、スティック型コントローラの姿勢の変化によりスティック型コントローラに設定されたｘｙｚ座標系が回転する様子を示す図である。
【図９】図９は、スティック型コントローラの内部構成を示すブロック図である。
【図１０】図１０は、スティック型コントローラの発光部の撮影画像からスティック型コントローラの現在の位置情報を取得する方法を説明するための図である。
【図１１】図１１は、カメラのＸＹＺ座標系で算出されたスティック型コントローラの位置とディスプレイの表示画面に表示するオブジェクトの位置との関係を示す図である。
【図１２】図１２は、フレーム周期で各コマのゲーム画像を生成する際にそのゲーム画像に照準オブジェクトを表示させるための処理手順を示すフローチャートである。
【図１３】図１３は、数フレームに亘って図１２のフローチャートが実行されたときのフレーム毎の処理内容の変化の一例を表した図である。
【発明を実施するための形態】
【００４０】
以下、本発明の好ましい実施の形態として、射撃の要素を含むアクションゲームのプログラムを家庭用のゲーム装置で実行する場合について、添付図面を参照して具体的に説明する。
【００４１】
本実施形態に係るアクションゲームには、三次元の仮想ゲーム空間上に使用者によって制御されるプレイヤキャラクタと、プレイヤキャラクタが対戦する敵キャラクタとが登場する。そして、使用者は、プレイヤキャラクタを多数の敵キャラクタと対戦させながら所定の目的を達成する。敵キャラクタは、ＣＰＵ（Central Processing Unit）によって制御されるキャラクタである。前記所定の目的は、例えば、多数の敵キャラクタの中のボスを倒す、敵キャラクタに占拠された街を解放する、隠された秘宝を探索するなどである。
【００４２】
本実施形態に係るアクションゲームでは、一人の使用者がパッド型コントローラ及びスティック型コントローラの２種類のコントローラを用いて一のプレイヤキャラクタの動作を制御することができる。パッド型コントローラは、パッドに複数のボタンが設けられ、使用者がパッドを両手で保持して複数のボタンを操作するタイプのコントローラである。スティック型コントローラは、スティック型コントローラの姿勢を検出する姿勢センサとして角速度センサを内蔵した棒状のコントローラである。
【００４３】
プレイヤキャラクタが敵キャラクタを攻撃するための武器として、例えば、「ナイフ」、「銃」、「爆弾」などの複数の武器がある。使用者がパッド型コントローラとスティック型コントローラのいずれか若しくは両方を操作することで、プレイヤキャラクタが各武器によって敵キャラクタを攻撃することができる。
【００４４】
スティック型コントローラ４には姿勢センサが内蔵されている。そのため、銃による攻撃では、使用者はスティック型コントローラ４の姿勢を変化させる操作（コントローラ本体を傾けたり、移動させたりする操作）によってプレイヤキャラクタの銃による攻撃動作を制御することができる。
【００４５】
具体的には、使用者がスティック型コントローラ４に設けられた複数のボタンのうち、プレイヤキャラクタに銃を構える姿勢を指令するための所定のボタン（「構えボタン」）を押下すると、図１に示すように、プレイヤキャラクタＰＣが銃ＪＯのオブジェクトを構えるとともに、その銃ＪＯの銃口の向いている方向を示す照準ＡＯのオブジェクトが表示される。
【００４６】
そして、使用者が構えボタンを押下した状態でスティック型コントローラ４を傾けたり、移動させたりすると、その動きによるスティック型コントローラ４の位置及び姿勢の変化に基づいて、ゲーム画面ＧにおけるプレイヤキャラクタＰＣの銃ＪＯを構えた姿勢の向きと照準ＡＯの表示位置が変化する。すなわち、使用者はスティック型コントローラ４の位置と姿勢を変化させることによって、プレイヤキャラクタＰＣが構える銃ＪＯの銃口の方向を変化させることができる。
【００４７】
なお、スティック型コントローラ４の位置は、正確には、後述する仮想カメラに設定されたＸＹＺ座標系におけるスティック型コントローラ４の発光部の位置である。
【００４８】
一方、使用者が構えボタンの押下操作を解除すると、プレイヤキャラクタＰＣは構えの姿勢をやめ、ゲーム画面Ｇに表示されていた照準ＡＯは非表示となる。すなわち、照準ＡＯは、使用者の構えボタンの押下操作により、プレイヤキャラクタＰＣが銃ＪＯを構えているときにだけゲーム画面Ｇに表示される。
【００４９】
そして、照準ＡＯの表示位置が敵キャラクタＥＣに重なったときに、使用者が所定のボタン（発射ボタン）を押下すると、プレイヤキャラクタＰＣが銃ＪＯを撃つ。
【００５０】
ゲーム画面Ｇにおける照準ＡＯの表示位置は、スティック型コントローラ４の位置情報と姿勢情報によって決まる。スティック型コントローラ４の現在の位置情報は、図２に示すように、カメラ７でスティック型コントローラ４を撮影した画像から取得することができる。
【００５１】
スティック型コントローラ４の姿勢情報は、スティック型コントローラ４に設定されたｘｙｚ座標系のｘ軸、ｙ軸、ｚ軸の各座標軸周りの回転角θｘ，θｙ，θｚである。回転角θｘ，θｙ，θｚは、内蔵の角速度センサで検出した上記各座標軸周りの角速度ωｘ，ωｙ，ωｚを積分して得られる。スティック型コントローラ４の姿勢は、所定のタイミングで後述するキャリブレーション処理によって基準姿勢に設定される。従って、スティック型コントローラ４の現在の姿勢情報は、最新の基準姿勢におけるｘ軸、ｙ軸、ｚ軸に対して角速度センサの検出値を積分して得られる各座標軸周りの回転角θｘ，θｙ，θｚである。
【００５２】
スティック型コントローラ４の基準姿勢からの角速度の積分時間が短い程、スティック型コントローラ４の姿勢情報（回転角θｘ，θｙ，θｚ）の誤差を抑制することができる。本実施形態では、スティック型コントローラ４の構えボタンが押される毎に姿勢情報（回転角θｘ，θｙ，θｚ）をゼロにリセットするキャリブレーション処理を行う。本実施形態のキャリブレーション処理は、構えボタンが押されたときのスティック型コントローラ４の姿勢を基準姿勢に設定し直す処理である。
【００５３】
照準ＡＯの表示位置の制御は、構えボタンが押下されている期間にだけ行われる。本実施形態では、その期間の開始時のスティック型コントローラ４の姿勢が「基準姿勢」に設定し直される。そして、その基準姿勢からのスティック型コントローラ４の姿勢の変化情報とスティック型コントローラ４の現在の位置情報とを用いて照準ＡＯの表示位置の制御が行われる。この制御ではスティック型コントローラ４の姿勢情報の誤差が抑制されるので、照準ＡＯの表示位置を好適に制御することができる。
【００５４】
そこで、以下では、スティック型コントローラ４によってゲーム画面Ｇにおける照準ＡＯの表示位置を制御する場合を例に本発明を説明する。
【００５５】
図２は、本実施形態に係るゲーム装置の構成を示す斜視図である。
【００５６】
ゲーム装置１は、ゲームのプログラムを実行する装置本体２、及び使用者Ｐが装置本体２にプログラムを実行するために必要な指令を入力するための操作部材であるコントローラ５等で構成されている。装置本体２には、プログラムを実行することによって生成したゲーム画像を表示するためのディスプレイ６が接続されている。コントローラ５にはパッド型コントローラ３とスティック型コントローラ４とが含まれる。使用者Ｐがスティック型コントローラ４を振る操作によって照準ＡＯの表示制御をする際にカメラ７が必要となる。そのため、カメラ７も装置本体２に接続されている。
【００５７】
ディスプレイ６は、例えば、ＡＶケーブルやＨＤＭＩ（High-Definition Multimedia Interface）ケーブルなどのケーブル９で装置本体２に接続されている。カメラ７は、専用のケーブル１０で装置本体２に接続されている。ディスプレイ６としては、例えば、液晶テレビやコンピュータ用のモニタなどが用いられる。カメラ７は、例えば、ＣＣＤ（Charge-Coupled Device）カラーイメージセンサを用いたＣＣＤカメラである。
【００５８】
パッド型コントローラ３及びスティック型コントローラ４は、無線通信によって装置本体２と接続される。この無線通信には、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）による通信方式が用いられる。なお、無線による通信方式には、Ｂｌｕｅｔｏｏｔｈ（登録商標）以外の電波を利用した通信方式、光を利用した通信方式（例えば、ＩｒＤＡ通信方式）若しくは音波を利用した通信方式を用いてもよい。
【００５９】
また、パッド型コントローラ３は、専用のケーブルで装置本体２に接続してもよい。この場合、パッド型コントローラ３とスティック型コントローラ４とを無線通信で結合し、スティック型コントローラ４の操作情報を、パッド型コントローラ３を経由して装置本体２に送信するようにしてもよい。
【００６０】
装置本体２にはメディア挿入口２ａが設けられている。このメディア挿入口２ａに、プログラムが記録されたＤＶＤ−ＲＯＭあるいはＣＤ−ＲＯＭ等の光ディスクを用いたディスクメディア８が装填される。装置本体２にディスクメディア８が装填されると、ＣＰＵがそのディスクメディア８から初期ローディング用のプログラムとそのプログラムの実行に必要なデータ（画像のデータと音声のデータを含む）とを装置本体２内のＲＡＭ（Random  Access Memory）に自動的に読み込む初期ローディング処理を行う。ＣＰＵは、初期ローディング処理の後、ＲＡＭに読み込んだプログラムを実行してゲームの初期画面（例えば、タイトル画面）をディスプレイ６の表示画面６ａに表示する。
【００６１】
その後は、使用者Ｐのパッド型コントローラ３におけるボタンあるいはキーの押下操作、ジョイスティックの回転操作又はスティック型コントローラ４を振る操作などに基づいて、ＣＰＵはプログラムを実行する。
【００６２】
なお、ディスクメディア８に記録されたプログラムには複数の独立したプログラムや相互に関連付けられた複数のプログラムが含まれている。本実施形態に係るアクションゲームにおいて、ゲーム空間は複数のフィールドで構成される。そして、フィールド単位でプレイヤキャラクタＰＣは多数の敵キャラクタＥＣと対戦しながら所定の目的を達成する。従って、独立したプログラムには、各フィールドのゲーム進行を制御するプログラムも含まれる。また、照準ＡＯをディスプレイ６の表示画面６ａに表示させるための当該表示画面６ａにおける表示位置を算出するプログラムも独立したプログラムに含まれる。
【００６３】
ゲーム進行を制御するプログラムには、複数の演算用のプログラムとグラフィック制御用のプログラムと音声制御用のプログラムとが含まれる。複数の演算用のプログラムには、例えば、複数の敵キャラクタＥＣの動作を制御するためのプログラム、使用者Ｐの操作によってコントローラ５から入力される操作情報に基づいてプレイヤキャラクタＰＣの動作を制御するためのプログラム、及びプレイヤキャラクタＰＣの動作に基づいてゲーム空間上で発生する事象を制御するためのプログラムが含まれる。ゲーム空間上で発生する事象とは、例えば、対戦時におけるプレイヤキャラクタＰＣ又は敵キャラクタＥＣの負傷や死亡の発生、プレイヤキャラクタＰＣの破壊動作による建物などの損壊の発生などである。グラフィック制御用のプログラムは、上記の演算用のプログラムに基づく演算処理の処理結果をゲーム画像として描画する。音声制御用のプログラムは、効果音を発生させる。
【００６４】
プログラムを実行するために必要なデータには、例えば、上記の演算用のプログラムによる演算処理に必要な各種の数値のデータ、上記のグラフィック制御用のプログラムによる描画処理に必要な画像のデータ、及び上記の音声制御用のプログラムによる音声出力処理に必要な音声のデータが含まれる。数値のデータには、例えば、プレイヤキャラクタＰＣあるいは敵キャラクタＥＣの体力もしくは攻撃／防御力を示すパラメータのデータ、両者の距離を演算するためのパラメータのデータ、及び各種のフラグのデータなどが含まれる。
【００６５】
画像のデータには、プレイヤキャラクタＰＣあるいは敵キャラクタＥＣなどのキャラクタの画像を作成するためのデータ、対戦フィールドを構成する建物のオブジェクトや背景の画像を作成するためのデータ、ゲーム中のプレイヤキャラクタＰＣのステータスに関する情報を表示するためのデータ、及びプレイヤキャラクタＰＣが銃ＪＯを構えたときに表示する照準ＡＯのデータなどの各種のデータが含まれる。プレイヤキャラクタＰＣのステータスに関する情報には、例えば、体力値、装備している武器、防具、及びマップなどの情報が含まれる。
【００６６】
本実施形態では、ゲーム装置１がプレイヤキャラクタＰＣの背後に配置した仮想カメラでプレイヤキャラクタＰＣ側を撮影した仮想のゲーム空間の画像（透視投影法による二次元画像）を上記の画像のデータを用いて生成する。ゲーム装置１は、生成した二次元画像をゲーム画像としてディスプレイ６に表示する。
【００６７】
音声データには、ＢＧＭ、プレイヤキャラクタＰＣあるいは敵キャラクタＥＣが発する音声、物体が衝突したときの衝突音、及び爆弾が爆発したときの爆発音などの各種の事象発生に対応した効果音のデータが含まれる。
【００６８】
相互に関連付けられた複数のプログラムは、例えば、１つの処理をするためのプログラムがメインルーチンとサブルーチンの関係にある複数のプログラムとで構成されている場合の両ルーチンのプログラムである。上記したフィールドのゲーム進行を制御するプログラムは、メインルーチンのプログラムとそのメインルーチンに関連付けられた複数のサブルーチンのプログラムとで構成されている。
【００６９】
各フィールドにおけるゲーム進行では、プレイヤキャラクタＰＣが多数の敵キャラクタＥＣと対戦する処理が含まれる。その対戦にはプレイヤキャラクタＰＣが敵キャラクタＥＣを銃撃する攻撃処理が含まれる。この攻撃処理は、メインルーチンに関連付けられたサブルーチンの処理として実行される。すなわち、コントローラ５からプレイヤキャラクタＰＣが敵キャラクタＥＣを銃撃するための一連の操作情報が装置本体２に入力されると、攻撃処理のサブルーチンが実行されることによって、プレイヤキャラクタＰＣが銃ＪＯを構え、照準ＡＯが敵キャラクタＥＣに合わされる。その後、弾が発射されるという一連の動作が行われる。
【００７０】
図３は、図２に示すゲーム装置１の内部構成を示すブロック図である。
【００７１】
装置本体２は、制御部２０１、描画処理部２０２、音声処理部２０３、オブジェクト位置算出部２０４、Ｉ／Ｏインターフェース部２０５、ディスクドライブユニット２０６、メモリカード接続ユニット２０７、及び信号受信部２０８を備えている。制御部２０１には、描画処理部２０２、音声処理部２０３、オブジェクト位置算出部２０４及びＩ／Ｏインターフェース部２０５が接続されている。また、Ｉ／Ｏインターフェース部２０５には、ディスクドライブユニット２０６、メモリカード接続ユニット２０７、及び信号受信部２０８が接続されている。また、Ｉ／Ｏインターフェース部２０５には、ケーブル９を介してディスプレイ６が接続され、ケーブル１０を介してカメラ７が接続されている。
【００７２】
Ｉ／Ｏインターフェース部２０５は、ディスクドライブユニット２０６、メモリカード接続ユニット２０７、信号受信部２０８、ディスプレイ６及びカメラ７と、制御部２０１との間のデータ及び信号の送受を仲介する。
【００７３】
ディスクドライブユニット２０６は、制御部２０１からのローディング指令に基づき、ディスクメディア８からプログラムやデータを読み出すユニットである。ローディング指令は、ローディングすべきプログラムとそのプログラムの実行に必要なデータとを指定した読出指令である。ディスクドライブユニット２０６は、光ディスクドライブで構成される。
【００７４】
メモリカード接続ユニット２０７は、メモリカード１１への情報の書き込みとメモリカード１１からの情報の読み出しとを行う。メモリカード１１は、前回のゲーム終了時の状態からゲームを再開できるようにするために、予め設定されたゲーム進行に関するデータを保存する。メモリカード１１に保存されるデータには、例えば、ゲームの進行状況を示すデータ、使用者Ｐが設定したプレイヤキャラクタＰＣに関するデータ、ゲーム中に獲得したポイント及びアイテムなどの各種の特典のデータなどが含まれる。メモリカード１１には、例えば、フラッシュメモリやＳＤカードなどが用いられる。
【００７５】
制御部２０１は、ゲームの開始時にプログラムをディスクメディア８から読み出した後、メモリカード接続ユニット２０７にデータ読出指令を出力する。メモリカード接続ユニット２０７は、そのデータ読出指令に基づき、メモリカード１１から保存されているゲーム進行に関するデータを制御部２０１に読み出す。また、制御部２０１は、ゲーム進行中やゲーム終了時にパッド型コントローラ３から「データのセーブ」の操作情報が入力されると、メモリカード接続ユニット２０７にデータ書込指令を出力する。メモリカード接続ユニット２０７は、そのデータ書込指令に基づき、保存すべきゲーム進行に関するデータをメモリカード１１に書き込む。
【００７６】
信号受信部２０８は、パッド型コントローラ３及びスティック型コントローラ４から短距離無線通信により送信される信号を受信する。信号受信部２０８は、受信した信号に含まれる両コントローラ３，４の操作情報及びスティック型コントローラ４に内蔵された角速度センサから出力される角速度情報を抽出し、制御部２０１に入力する。
【００７７】
プログラムは、主として制御部２０１、描画処理部２０２及び音声処理部２０３によって実行される。これらの処理部で処理された結果はＩ／Ｏインターフェース部２０５とケーブル９を介してディスプレイ６に出力される。処理結果に含まれる画像のデータはディスプレイ６の表示画面６ａに表示される。また、処理結果に含まれる音声のデータはディスプレイ６のスピーカ６ｂから出力される。
【００７８】
制御部２０１が実行するプログラム及びデータは、ディスクドライブユニット２０６によってディスクメディア８から制御部２０１に読み込まれる。なお、データがメモリカード１１に保存されている場合は、制御部２０１がメモリカード接続ユニット２０７を介してメモリカード１１からデータを読み込む。また、コントローラ５の操作情報は、当該コントローラ５が操作される毎に信号受信部２０８を介して制御部２０１に入力される。
【００７９】
スティック型コントローラ４内の角速度センサで検出される角速度情報は、所定の周期で信号受信部２０８を介して制御部２０１に入力される。この周期は、描画処理部２０２が描画処理を行うフレーム周期より非常に短い（例えば、１２ミリ秒）。フレーム周期は、フレームレートをＮ枚／秒とすると、１／Ｎ秒であり、通常１／３０秒である。角速度情報の検出周期は、例えば、１２ミリ秒である。制御部２０１は、スティック型コントローラ４から角速度情報が入力される毎に積分演算を行って回転角を算出する。この回転角は、スティック型コントローラ４の基準姿勢におけるｘｙｚ座標系の各軸周りの角度の変化量の累積値である。制御部２０１は、算出した回転角を姿勢情報としてオブジェクト位置算出部２０４に転送する。
【００８０】
また、ディスプレイ６及びカメラ７は、それぞれケーブル９及びケーブル１０によってＩ／Ｏインターフェース部２０５に接続されている。ゲームが開始されると、カメラ７のスティック型コントローラ４を撮影した撮影画像のデータが、所定の周期でＩ／Ｏインターフェース部２０５を介して制御部２０１に入力される。この周期もフレーム周期より非常に短く、例えば、スティック型コントローラ４が角速度情報を送信する周期と同程度である。制御部２０１は、撮影画像のデータが入力される毎にそのデータをオブジェクト位置算出部２０４に転送する。オブジェクト位置算出部２０４は、カメラ７の撮影画像とスティック型コントローラ４の姿勢情報とを用いて、表示画面６ａに照準ＡＯを表示する位置を演算する。
【００８１】
制御部２０１は、装置本体２の全体動作を制御するマイクロコンピュータを有している。マイクロコンピュータは、ＣＰＵ２０１ａ、ＲＯＭ（Read Only Memory）２０１ｂ及びＲＡＭ２０１ｃ等を備えている。ＲＯＭ２０１ｂ及びＲＡＭ２０１ｃは、バスラインでＣＰＵ２０１ａに接続されている。
【００８２】
ＣＰＵ２０１ａは、制御部２０１内で制御の主体であり、プログラム（特に演算用のプログラム）に従って演算処理を行う。ＲＯＭ２０１ｂは、装置本体２の電源がオンになったときに当該装置本体２を所定の初期状態に設定したり、メディア挿入口２ａにディスクメディア８が装填されたときに初期ローディング処理を行ってゲームを開始できる状態に設定したりするために、ＣＰＵ２０１ａに実行させる基本的なプログラムを記憶する。また、ＲＡＭ２０１ｃは、ＣＰＵ２０１ａがＲＯＭ２０１ｂに記憶されたプログラムやディスクメディア８から読み出したプログラムに従って演算処理をするために、プログラムやデータを一時的に記憶する。
【００８３】
ＣＰＵ２０１ａは、ディスクドライブユニット２０６によってディスクメディア８から読み出されたプログラムあるいはデータ、またはメモリカード接続ユニット２０７によってメモリカード１１から読み出されたデータをＲＡＭ２０１ｃに一旦保存する。また、ＣＰＵ２０１ａは、ＲＡＭ２０１ｃの作業エリアを用いてプログラムを実行する。さらにＣＰＵ２０１ａは、主としてゲーム空間上で生じる事象の変化を演算し、その演算結果をゲーム画像及び効果音の変化やプレイヤキャラクタＰＣや敵キャラクタＥＣのステータスの変化に反映する処理をする。これにより、ＣＰＵ２０１ａは、ゲームの進行状況を統括的に制御する。
【００８４】
ゲーム画像の生成は描画処理部２０２によって行われる。効果音の生成は音声処理部２０３によって行われる。
【００８５】
描画処理部２０２は、ＣＰＵ２０１ａからフレーム周期毎に出力される描画指令に基づいて各コマのゲーム画像（二次元画像）を生成する。ＣＰＵ２０１ａは、上記の演算処理によりディスプレイ６に表示すべきゲーム画像を決定する。ＣＰＵ２０１ａは、決定したゲーム画像の描画に必要なデータ（キャラクタあるいはオブジェクトのポリゴンデータ、および背景画像のデータ等）及び光源データ等をＲＡＭ２０１ｃから読み出して描画指令とともに描画処理部２０２に供給する。また、ＣＰＵ２０１ａは、プレイヤキャラクタＰＣ及び敵キャラクタＥＣのゲーム空間における位置のデータ等を描画処理部２０２に供給する。さらに、ＣＰＵ２０１ａは、スティック型コントローラ４で照準ＡＯの表示又は非表示が必要な操作が行われると、描画処理部２０２に照準ＡＯの表示指令又は非表示指令を出力する。
【００８６】
描画処理部２０２は、ＣＰＵ２０１ａからの描画命令に基づいて画像のデータ等を用いて、描画に必要なデータの演算等を行う。また、描画処理部２０２は、その演算結果に基づいて描画処理部２０２内のＶＲＡＭ（図示せず）に１コマ（１フレーム）分のゲーム画像を生成する。描画に必要なデータには、プレイヤキャラクタＰＣ、敵キャラクタＥＣ、各オブジェクト、背景の位置関係、ディスプレイ６の画面上における各オブジェクトを構成するポリゴンの座標、各ポリゴンに対応するテクスチャ、並びに各ポリゴンの反射特性等のデータが含まれる。
【００８７】
また、描画処理部２０２は、ＣＰＵ２０１ａからの表示指令に基づいて照準ＡＯをディスプレイ６の表示画面６ａに表示するための描画処理を行う。生成されたゲーム画像は、フレーム周期毎に映像信号に変換されてディスプレイ６の表示画面６ａに表示される。
【００８８】
音声処理部２０３は、ＣＰＵ２０１ａからの音声指令に基づいて効果音やＢＧＭのデータを生成する。ＣＰＵ２０１ａは、ディスプレイ６のスピーカ６ｂから出力すべき効果音やＢＧＭの音響内容を決定する。また、ＣＰＵ２０１ａは、その内容を音声指令とともに音声処理部２０３に出力する。音声処理部２０３は、指令された音響内容に基づき、ＲＡＭ２０１ｃから効果音及びＢＧＭのデータを読み出し、所定の加工処理とＤ／Ａ変換処理とを行って音声信号を生成する。音声処理部２０３は、生成した音声信号をディスプレイ６のスピーカ６ｂから出力する。
【００８９】
オブジェクト位置算出部２０４は、カメラ７から入力されるスティック型コントローラ４の撮影画像のデータとスティック型コントローラ４から入力される姿勢情報とを用いて、ディスプレイ６の表示画面６ａに照準ＡＯを表示する位置を算出する。
【００９０】
すなわち、オブジェクト位置算出部２０４は、撮影画像からカメラ７に設定されるＸＹＺ座標系におけるスティック型コントローラ４の発光部４０２（図４Ａ，４Ｂ参照）の位置座標（Ｘｃ，Ｙｃ，Ｚｃ）（図５参照）を算出する。オブジェクト位置算出部２０４は、さらにその算出値のＸＹ座標（Ｘｃ，Ｙｃ）をスティック型コントローラ４から入力される姿勢情報を用いて補正する。その後オブジェクト位置算出部２０４は、その補正値（Ｘcs，Ｙcs）を表示画面６ａのＩＪ座標系（単位はピクセル）の座標（Ｉcs，Ｊcs）に変換する処理（図１１参照）を行う。変換された座標（Ｉcs，Ｊcs）は表示画面６ａにおける照準ＡＯの表示位置である。
【００９１】
オブジェクト位置算出部２０４は、スティック型コントローラ４の照準ＡＯを表示させるためのボタン（図４Ｂのボタン４０９参照）が操作されると、撮影画像と姿勢情報が入力される毎に上記の演算処理を行う。オブジェクト位置算出部２０４による照準ＡＯの表示位置の演算処理の詳細は後述する。
【００９２】
パッド型コントローラ３は、低背の筐体の上面と前側の側面に操作部材が配置されたゲーム専用の周知のコントローラである。パッド型コントローラ３の上面の左端部及び右端部に４つのキー及び４つのボタン（□、△、○、×のマークが付されたボタン）が設けられている。４つのキーの右下側及び４つのボタンの左下側には、一対のスティックＲが設けられている。また、パッド型コントローラ３の前側面の両端部にもボタンが設けられている。
【００９３】
使用者Ｐは、パッド型コントローラ３のキー及びボタンを操作してプレイヤキャラクタＰＣの動作を制御し、ゲームを進行させることができる。
【００９４】
図４Ａ及び図４Ｂは、スティック型コントローラ４の構造を示す図である。図４Ａは上面図、図４Ｂは底面図である。
【００９５】
スティック型コントローラ４は、円筒状の筐体４０１の先端に球状の発光部４０２が設けられた棒状のコントローラである。発光部４０２はＬＥＤなどの発光源４０２ａを内蔵している。発光源４０２ａから発する光によって発光部４０２が球状に発光する。発光部４０２は、カメラ７によって撮影される。その撮影画像を用いて、図５に示すように、カメラ７に設定されたＸＹＺ座標系におけるスティック型コントローラ４の座標（正確には発光部４０２の座標（Ｘｃ，Ｙｃ，Ｚｃ））が算出される。
【００９６】
また、筐体４０１は角速度センサ４０３を内蔵している。角速度センサ４０３には、例えば、ＭＥＭＳ（Micro Electro Mechanical System）ジャイロスコープが用いられる。角速度センサ４０３は、使用者Ｐによってスティック型コントローラ４が振られたときに、図６に示すように、基準姿勢においてスティック型コントローラ４に設けられたＵＶＷ座標系のＵ軸、Ｖ軸、Ｗ軸の各軸周りの角速度ωｕ，ωｖ，ωｗを検出する。Ｗ軸は筐体４０１の長手方向に平行な方向である。Ｖ軸はＷ軸に対して上方向（ボタン４０５の方向）に直交する方向である。Ｕ軸はＷ軸に対して右方向（ボタン４０７の方向）に直交する方向である。制御部２０１は、角速度センサ４０３によって検出された角速度ωｕ，ωｖ，ωｗを積分してスティック型コントローラ４の各軸周りの回転角θｕ，θｖ，θｗを算出する。
【００９７】
スティック型コントローラ４の位置の情報及びスティック型コントローラ４の回転角の情報（スティック型コントローラ４の姿勢情報）は、図７に示すように、ディスプレイ６の表示画面６ａに照準ＡＯを表示させるときに当該表示画面６ａにおける表示位置（Ｉcs，Ｊcs）の演算に用いられる。この演算方法については後述する。
【００９８】
なお、図８に示すように、スティック型コントローラ４を姿勢１から姿勢２に傾けると、スティック型コントローラ４に設定されたＵＶＷ座標系が回転する。従って、姿勢１を基準にした姿勢２のＵ軸、Ｖ軸、Ｗ軸の各軸周りの回転角（θｕ，θｖ，θｗ）は、スティック型コントローラ４を姿勢１から姿勢２に変化させたときの姿勢の変化量を示す。この場合、姿勢１が基準姿勢である。
【００９９】
スティック型コントローラ４の姿勢の変化量は、基準姿勢におけるＵ軸、Ｖ軸、Ｗ軸の各軸の方向を基準とした各軸周りの回転角（θｕ，θｖ，θｗ）として定義される変化量である。従って、基準姿勢を変更すると、回転角（姿勢の変化量）が変化する。すなわち、図８において、スティック型コントローラ４を姿勢２からさらに姿勢３に傾けると、スティック型コントローラ４の姿勢の変化量は姿勢１に対する回転角として算出される。この場合、スティック型コントローラ４が姿勢２になった時点で基準姿勢を姿勢２に変更すると、スティック型コントローラ４の姿勢の変化量は姿勢２に対する回転角として算出される。これにより、スティック型コントローラ４の姿勢の変化量は変化する。
【０１００】
上述したように、角速度センサ４０３により検出される角速度を積分してＵ軸、Ｖ軸、Ｗ軸の各軸周りの回転角θｕ，θｖ，θｗを算出すると、角速度センサ４０３のドリフトに起因する誤差が積算される。その結果、各回転角θｕ，θｖ，θｗの精度が低下する。本実施形態では、精度低下を抑制するために、後述するように、使用者Ｐがスティック型コントローラ４の構えボタンを押下する毎に、角速度センサ４０３により検出される角速度の積分値をゼロにリセットするキャリブレーション処理を行う。
【０１０１】
図８の例では、姿勢１の時に使用者Ｐがスティック型コントローラ４の構えボタンを押下すると、キャリブレーション処理が行われる。そして、角速度センサ４０３により検出される角速度の積分値がゼロにリセットされる。これにより、姿勢１が基準姿勢となる。その後は姿勢１におけるＵ軸、Ｖ軸、Ｗ軸の各方向を基準にして回転角θｕ，θｖ，θｗが算出される。しかし、使用者Ｐが構えボタンの押下操作を解除した後、姿勢２の時に再度構えボタンを押下すると、再度キャリブレーション処理が行われる。そして、その時までに算出された回転角θｕ，θｖ，θｗはそれぞれ「０」にリセットされる。これにより、姿勢２が新たに基準姿勢となる。その後は、姿勢２におけるＵ軸、Ｖ軸、Ｗ軸の各方向を基準にして新たに回転角θｕ，θｖ，θｗが算出される。
【０１０２】
上記のキャリブレーション処理により、ゲーム中にスティック型コントローラ４の回転角の算出値の誤差が増大してスティック型コントローラ４により照準ＡＯの表示位置をモーションコントロールできなくなるという不都合が生じないようになる。なお、キャリブレーション処理の内容については後述する。
【０１０３】
図４Ａに示すとおり、筐体４０１の上面のほぼ中央には、電源用のボタン４０４が設けられている。筐体４０１の上面においてボタン４０４の上側には、ボタン４０５が設けられ、ボタン４０５の両側には、ボタン４０６ａ、ボタン４０６ｂ，ボタン４０６ｃ、ボタン４０６ｄを含む４つのボタン４０６が設けられている。また、筐体４０１の左右の側面には、ボタン４０７とボタン４０８が設けられ、筐体４０１の底面のボタン４０５に対向する位置には、ボタン４０９が設けられている。
【０１０４】
ボタン４０４、ボタン４０５、ボタン４０６、ボタン４０７、ボタン４０８及びボタン４０９にはそれぞれモーメンタリー・オン−オフ・スイッチが設けられている。使用者Ｐが上記のボタンを押下すると、押下している状態の信号がスティック型コントローラ４から装置本体２に入力される。例えば、ボタンを押下していない状態にローレベル信号を割り当て、ボタンを押下している状態にハイレベル信号を割り当てている場合、使用者Ｐがボタンを押下していなければ、制御部２０１内のＣＰＵ２０１ａにはローレベル信号が入力される。一方、使用者Ｐがボタンを押下すると、押下している期間だけハイレベル信号が入力される。
【０１０５】
ボタン４０４、４つのボタン４０６、ボタン４０７及びボタン４０８は、コントローラのボタンとして周知である。従って、これらのボタンの説明は省略し、以下では、本発明に係るプレイヤキャラクタＰＣに銃撃を行わせる操作に関係するボタン４０５及びボタン４０９について説明する。
【０１０６】
図１のゲーム画面Ｇにおいて、プレイヤキャラクタＰＣが銃撃するには、使用者Ｐは、（１）プレイヤキャラクタＰＣが銃ＪＯを構える、（２）使用者Ｐが銃ＪＯの発射方向（ターゲット）を決定する、（３）プレイヤキャラクタＰＣが銃ＪＯから弾を発射する、の３段階の操作を行う必要がある。使用者Ｐが３段階の操作をすることで、プレイヤキャラクタＰＣは銃を構えた状態で敵キャラクタＥＣを探査し、銃の照準を敵キャラクタＥＣに合せた後に弾を発射する動作を行う。
【０１０７】
本実施形態では、ボタン４０９（以下、「Ｔボタン４０９」という。）がプレイヤキャラクタＰＣに銃ＪＯを構える姿勢を指令する「構えボタン」に割り当てられている。また、ボタン４０５が銃ＪＯを発射する動作を指令する「発射ボタン」に割り当てられている。
【０１０８】
従って、スティック型コントローラ４では、Ｔボタン４０９が押下されると、プレイヤキャラクタＰＣが銃ＪＯを構えると同時に照準ＡＯが表示される。そして、Ｔボタン４０９を押下した状態でスティック型コントローラ４が振られると、ディスプレイ６の表示画面６ａ上で当該スティック型コントローラ４の振られた方向に照準ＡＯが移動する。更に、Ｔボタン４０９を押下した状態でボタン４０５が押下されると、銃ＪＯから弾が照準ＡＯの方向に発射される。
【０１０９】
使用者ＰがＴボタン４０９を押下すると、プレイヤキャラクタＰＣが銃ＪＯを構えるとともに、照準ＡＯがゲーム画面Ｇに表示される。その後、使用者ＰがＴボタン４０９の押下操作を継続していれば、照準ＡＯの表示は継続される。一方、Ｔボタン４０９の押下操作を解除すると、照準ＡＯは非表示となる。このため、Ｔボタン４０９は、プレイヤキャラクタＰＣに銃ＪＯを構える姿勢を指令する操作部材であるとともに、照準ＡＯの表示を指令する操作部材である。
【０１１０】
図９は、スティック型コントローラ４の内部構成を示すブロック図である。なお、図４Ａ及び図４Ｂに示した部材及び同一部材には同一の番号が付されている。
【０１１１】
スティック型コントローラ４には、制御部４１０、当該制御部４１０にＩ／Ｏインターフェース部４１１を介して相互に接続されている姿勢検出部４１２、操作部４１３及び信号送信部４１４が設けられている。制御部４１０は、マイクロコンピュータで構成され、スティック型コントローラ４の全体動作を制御する。マイクロコンピュータは、周知のＣＰＵ４１０ａにＲＯＭ４１０ｂ及びＲＡＭ４１０ｃが相互に接続されている。Ｉ／Ｏインターフェース部４１１は、制御部４１０と姿勢検出部４１２、操作部４１３、信号送信部４１４及び発光部４０２との間のデータ及び信号の送受を仲介する。
【０１１２】
姿勢検出部４１２は、角速度センサ４０３を含む。姿勢検出部４１２は、角速度センサ４０３から出力される信号を所定の周期（例えば、１２ミリ秒）でサンプリングしてＵＶＷ座標系のＵ軸、Ｖ軸、Ｗ軸の各軸周りの角速度ωｕ，ωｖ，ωｗを検出する。姿勢検出部４１２は、検出した角速度ωｕ，ωｖ，ωｗの情報を信号送信部４１４を介して装置本体２に送信する。
【０１１３】
操作部４１３は、ボタン４０４、ボタン４０５、ボタン４０６、ボタン４０７、ボタン４０８及びＴボタン４０９の操作情報を制御部４１０に入力する。信号送信部４１４は、姿勢検出部４１２で検出されるスティック型コントローラ４の角速度情報及び操作部４１３から入力される操作情報を短距離無線通信によって装置本体２に送信する。
【０１１４】
次に、ディスプレイ６の表示画面６ａに表示される照準ＡＯの表示位置の制御方法について説明する。
【０１１５】
ディスプレイ６の表示画面６ａにおける照準ＡＯの表示位置は、図１１に示すように、カメラ７に設定されたＸＹＺ座標系におけるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）をディスプレイ６の表示画面６ａに設定されたＩＪ座標系（単位はピクセル）の位置座標（Ｉcs，Ｊcs）に変換することによって決定される。
【０１１６】
スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）は、カメラ７の撮影画像から取得されるスティック型コントローラ４の位置座標（Ｘｃ，Ｙｃ，Ｚｃ）（図５参照）を補正することによって算出される。スティック型コントローラ４の位置座標（Ｘｃ，Ｙｃ，Ｚｃ）は、スティック型コントローラ４の姿勢情報（θｕ，θｖ，θｗ）から算出される姿勢ベクトルの座標（Ｘｓ，Ｙｓ，Ｚｓ）を用いて補正される。
【０１１７】
まず、カメラ７の撮影画像からスティック型コントローラ４の現在の位置座標を取得する方法について、図１０を用いて説明する。
【０１１８】
図１０に示すように、カメラ７の撮影レンズ７０１から距離Ｄの前方位置にある物体面にスティック型コントローラ４の発光部４０２がある。また、撮影レンズ７０１から距離ｄ（焦点距離）の後方位置に撮像面がある。例えば、物体面における発光部４０２のＹ座標Ｙｃと撮像面における発光部４０２の光像のＹ座標ｙcとの間にはＹｃ×ｄ＝ｙc×Ｄの関係が成立する。Ｙ座標Ｙｃは、撮像面における発光部４０２の光像のＹ座標ｙcを用いて、Ｙｃ＝ｙc×Ｄ／ｄの演算式により求めることができる。同様に、物体面における発光部４０２のＸ座標Ｘｃは、撮像面における発光部４０２の光像のＸ座標ｘcを用いて、Ｘｃ＝ｘc×Ｄ／ｄの演算式により求めることができる。
【０１１９】
なお、撮像面における発光部４０２の光像のＸＹ座標（ｘc，ｙc）は、発光部４０２の光像が円形になる。そのため、その光像の中心座標を求めることにより、発光部４０２の光像のＸＹ座標（ｘc，ｙc）を取得することができる。発光部４０２の発光色は予め装置本体２とスティック型コントローラ４との間で設定される。そのため、カメラ７の撮影画像の中から発光部４０２の発光色を有する円形画像を抽出して撮像面における円形画像の中心位置を算出することにより、発光部４０２の光像のＸＹ座標（ｘｃ，ｙｃ）を取得することができる。
【０１２０】
上記の式において、距離ｄはカメラ７の焦点距離（既知）である。また、Ｘ座標ｘc及びＹ座標ｙcは、撮影画像の中心にＸＹの直交座標を設定していれば、そのＸＹ座標系における発光位置を算出することにより得られる。また、距離Ｄは、撮影レンズ７０１から物体面までの距離であるから、発光部４０２のＺ座標Ｚｃに相当する。発光部４０２を予め設定した基準位置（Ｘc0，Ｙc0，Ｚc0）に置いたときの撮像画像における発光位置の座標を（ｘc0，ｙc0）とすると、Ｙc0＝ｙc0×Ｚc0／ｄの関係式が成立する。この関係式から得られるｄ＝ｙc0×Ｚc0／Ｙc0をＹｃ＝ｙc×Ｄ／ｄに代入すると、Ｚ座標Ｚｃは、Ｚｃ＝Ｄ＝Ｚc0×（Ｙｃ／ｙc）×（ｙc0／Ｙc0）により算出することができる。すなわち、Ｋ＝Ｚc0×ｙc0／Ｙc0を予め算出しておけば、Ｚ座標ＺｃはＺｃ＝Ｋ×Ｙｃ／ｙcにより算出することができる。なお、Ｋは、Ｋ＝Ｚc0×ｘc0／Ｘc0でも算出することができ、Ｚｃは、Ｚｃ＝Ｋ×Ｘｃ／ｘcでも算出することができる。
【０１２１】
撮像面における発光部４０２の光像の面積はその光像に含まれるピクセル数により算出することができる。予め設定した標準の距離Ｄ０及び距離Ｄ０における発光部４０２の光像の面積ｓ０のデータが、距離Ｄの算出用のデータとして記憶されている。あとは、距離Ｄにおける発光部４０２の光像の面積ｓが算出されれば、発光部４０２の任意の距離ＤはＤ＝ｓ×Ｄ０／ｓ０を演算することにより算出することができる。
【０１２２】
次に、スティック型コントローラ４の位置座標（Ｘｃ，Ｙｃ，Ｚｃ）を姿勢検出部４１２の検出値から取得されるスティック型コントローラ４の姿勢情報（θｕ，θｖ，θｗ）を用いて補正することにより位置座標（Ｘcs，Ｙcs）を算出する方法について説明する。
【０１２３】
まず、スティック型コントローラ４の現在の姿勢ベクトルが算出される。現在の姿勢ベクトルは、基準姿勢におけるスティック型コントローラ４の姿勢ベクトルを姿勢検出部４１２の検出値から算出される回転角θｕ，θｖ，θｗの分だけ回転させることによって得られる。現在の姿勢ベクトルは、ＸＹＺ座標系において、スティック型コントローラ４が現在指している方向を示す。
【０１２４】
次に、スティック型コントローラ４の現在の位置座標（Ｘｃ，Ｙｃ）に現在の姿勢情報に基づく補正値（Ｘｓ×ｔ，Ｙｓ×ｔ）が加算される処理が行われて現在の位置座標（Ｘｃ，Ｙｃ）が補正される。すなわち、姿勢ベクトルのカメラ７のＸＹＺ座標系における成分を（Ｘｓ，Ｙｓ，Ｚｓ）とすると、
Ｘcs＝Ｘｃ＋（Ｘｓ×ｔ）    …（１）
Ｙcs＝−Ｙｃ＋（Ｙｓ×ｔ）  …（２）
ｔ＝−Ｚｃ／Ｚｓ
の演算処理をすることにより、補正された現在の位置座標（Ｘcs，Ｙcs）が算出される。
【０１２５】
上記（１），（２）式による補正処理は、カメラ７のＸＹＺ座標系におけるスティック型コントローラ４の位置情報に基づく表示画面６ａにおける照準ＡＯの移動制御の精度を向上させる。例えば、スティック型コントローラ４を発光部４０２が上となる縦向きの姿勢にして当該発光部４０２が前後に移動するようにスティック型コントローラ４を振った場合、スティック型コントローラ４のＸ座標ＸｃとＹ座標Ｙｃは殆ど変化しない。この場合は、スティック型コントローラ４を振っても照準ＡＯは表示画面６ａ上で移動しない。従って、この場合は、スティック型コントローラ４の位置や姿勢の変化に基づく表示画面６ａにおける照準ＡＯの移動制御の精度が低下する。
【０１２６】
上記（１），（２）式は、カメラ７から見たスティック型コントローラ４の位置の変化にスティック型コントローラ４の姿勢の変化を加味してＸＹＺ座標系におけるスティック型コントローラ４の現在の位置座標（Ｘcs,Ｙcs）を決定する演算処理である。この演算処理によって、カメラ７から見たスティック型コントローラ４の位置の変化だけでＸＹＺ座標系におけるスティック型コントローラ４の現在の位置座標（Ｘｃ,Ｙｃ）を決定する場合よりも、スティック型コントローラ４の位置及び姿勢の微小な変化を照準ＡＯの移動制御に反映することができる。
【０１２７】
なお、（１），（２）式における姿勢ベクトルの座標（Ｘｓ，Ｙｓ）に対してｔ＝−Ｚｃ／Ｚｓの係数ｔを乗じる補正により、スティック型コントローラ４の姿勢の変化が位置座標（Ｘｃ，Ｙｃ）に与える影響が調整される。本実施形態では、スティック型コントローラ４がモニタ（カメラ７）から遠い位置にある場合に、近い位置にある場合よりもスティック型コントローラ４の姿勢の変化の影響力を大きくする等のために、係数ｔがｔ＝−Ｚｃ／Ｚｓである。スティック型コントローラ４がカメラ７から遠い位置にある場合、近い位置にある場合に比べて発光部４０２の移動がカメラ７で正確に検出され難いからである。なお、位置座標（Ｘｃ，Ｙｃ）の調整は、他の補正の方法で調整してもよい。あるいは係数ｔによる補正で位置座標（Ｘｃ，Ｙｃ）の調整をしなくてもよい。すなわち、Ｘcs＝Ｘｃ＋Ｘｓ、Ｙcs＝−Ｙｃ＋Ｙｓによって位置座標（Ｘcs，Ｙcs）を算出するようにしてもよい。
【０１２８】
次に、補正したスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）が表示画面６ａ上の表示位置に変換される。この変換処理は、表示画面６ａの表示位置の原点Ｏを、例えば、図１１に示すように、表示画面６ａの左下隅に設定する。また、変更処理は、横方向のピクセル位置をＩ座標、縦方向のピクセル位置をＪ座標とした場合、カメラ７のＸＹＺ座標系におけるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）が表示画面６ａのＩＪ座標系の位置座標（Ｉcs，Ｊcs）に変換される。
【０１２９】
この変換処理では、表示画面６ａの解像度をｎ×ｍ（ピクセル）（但し、ｎ，ｍは偶数）とすると、スティック型コントローラ４に対してキャリブレーション処理を行ったときに上記（１），（２）式によって算出される当該スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）が表示画面６ａの中央の位置（ｎ／２，ｍ／２）となるように変換される。すなわち、スティック型コントローラ４に対してキャリブレーション処理が行われると、照準ＡＯの表示画面６ａにおける表示位置が画面中央にリセットされる。
【０１３０】
キャリブレーション処理が行われると、後述するように、姿勢ベクトルのカメラ７のＸＹＺ座標系におけるＸ座標Ｘｓ及びＹ座標Ｙｓはいずれもゼロにリセットされる。このため、その時に上記（１），（２）式によって算出されるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）は（Ｘｃ，−Ｙｃ）である。従って、キャリブレーション処理が行われたときの位置座標（Ｘcs，Ｙcs）＝（Ｘｃ，−Ｙｃ）を表示画面６ａの中央の位置（ｎ／２，ｍ／２）に変換する変換式は、
Ｉcs＝Ｘcs−Ｘｃ＋ｎ／２        …（３）
Ｊcs＝Ｙcs−（−Ｙｃ）＋ｍ／２  …（４）
である。
【０１３１】
上記（３），（４）式において、位置座標（Ｘcs，Ｙcs）から（Ｘｃ，−Ｙｃ）を引く処理は、位置座標（Ｘcs，Ｙcs）に対して（Ｘｃ，−Ｙｃ）のオフセットをかける処理に相当する。従って、そのオフセット値を（Ｘos，Ｙos）とすると、表示位置の変換式（３），（４）は、
（i）キャリブレーション処理が行われたときにカメラ７の撮影画像から取得されるスティック型コントローラ４の位置座標（Ｘｃ，Ｙｃ）を用いて、オフセット値（Ｘos，Ｙos）＝（Ｘｃ，−Ｙｃ）を設定する。
（ii）上記（１），（２）式を用いて算出されるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）をオフセット値（Ｘos，Ｙos）で補正する。
（iii）補正されたＸ，Ｙ座標にそれぞれｎ／２とｍ／２を加算する。
の処理をすることを意味している。
【０１３２】
したがって、カメラ７のＸＹＺ座標系におけるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）を表示画面６ａのＩＪ座標系の位置座標（Ｉcs，Ｊcs）に変換する変換式は、
Ｉcs＝Ｘcs−Ｘos＋ｎ／２  …（５）
Ｊcs＝Ｙcs−Ｙos＋ｍ／２  …（６）
である。
【０１３３】
次に、キャリブレーション処理について説明する。
【０１３４】
キャリブレーション処理は、使用者ＰがＴボタン４０９を押下することによって実行される。キャリブレーション処理により、その時のスティック型コントローラ４の姿勢情報（θｕ，θｖ，θｗ）がゼロにリセットされ、ディスプレイ６の表示画面６ａにおける照準ＡＯの表示位置が画面中央（ｎ／２，ｍ／２）にリセットされる。
【０１３５】
Ｔボタン４０９が押下されると、その時のスティック型コントローラ４の姿勢情報（θｕ，θｖ，θｗ）が（０，０，０）にリセットされ、姿勢ベクトルの座標（Ｘｓ，Ｙｓ）は（０，０）となる。これにより、スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）は、上記（１），（２）式より（Ｘcs，Ｙcs）＝（Ｘｃ，−Ｙｃ）となる。
【０１３６】
従って、キャリブレーション処理では、Ｔボタン４０９が押下された時にカメラ７の撮影画像から取得されるスティック型コントローラ４の位置座標（Ｘｃ，Ｙｃ，Ｚｃ）から（Ｘｃ，−Ｙｃ）の値がオフセット値（Ｘos，Ｙos）に設定される。そして、そのオフセット値（Ｘos，Ｙos）を上記（１），（２）式によって算出される位置座標（Ｘcs，Ｙcs）から引くことによって、その位置座標（Ｘcs，Ｙcs）が（０，０）にリセットされる。
【０１３７】
位置座標（Ｘcs，Ｙcs）＝（０，０）は、図５において、発光部４０２がＸＹＺ座標系のＺ軸上にある状態に相当する。従って、キャリブレーション処理は、仮想的にカメラ７に対して発光部４０２がＸＹＺ座標系のＺ軸上に位置するようにスティック型コントローラ４を配置する。すなわち、キャリブレーション処理により、その時のスティック型コントローラ４の姿勢が基準姿勢に設定される。
【０１３８】
ゲーム中においては、使用者Ｐは、ＸＹＺ座標系の空間でスティック型コントローラ４を自由に移動してその姿勢を自由に変化させることができる。しかし、使用者Ｐが任意のタイミングでＴボタン４０９を押下すると、その時のＸＹＺ座標系における発光部４０２の位置が仮想的にＸＹＺ座標系のＺ軸上に移動し（以下、この移動した位置を「基準位置」という。）、かつ、その時のスティック型コントローラ４の姿勢が基準姿勢に設定される。従って、Ｔボタン４０９の押下操作が継続されているときには、基準位置の基準姿勢におけるスティック型コントローラ４に対する当該スティック型コントローラ４の位置及び姿勢の変化に基づいて、ディスプレイ６の表示画面６ａにおける照準ＡＯの表示位置の制御が行われる。
【０１３９】
例えば、表示画面６ａの解像度を１２８０×７２０（ピクセル）とし、使用者ＰがＴボタン４０９を押下した時のスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）を（５００，６００）とした場合、オフセット値（Ｘos，Ｙos）は（５００，６００）である。この時のディスプレイ６の表示画面６ａにおける照準ＡＯの表示位置（Ｉcs，Ｊcs）はＩcs＝５００−５００＋１２８０／２＝６４０、Ｊcs＝６００−６００＋７２０／２＝３６０である。
【０１４０】
その後、使用者ＰがＴボタン４０９を押した状態でスティック型コントローラ４を振ることにより、スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）が（６００，６５０）に移動すると、照準ＡＯの表示位置は表示画面６ａの（７４０，４１０）（ピクセル）の位置に移動する。これは、Ｉcs＝６００−５００＋１２８０／２＝７４０、Ｊcs＝６５０−６００＋７２０／２＝４１０となるからである。従って、照準ＡＯの表示位置は、画面中央から（＋１００，＋５０）だけ移動する。
【０１４１】
次に、ディスプレイ６の表示画面６ａに照準ＡＯを表示し、スティック型コントローラ４のモーションコントロールにより照準ＡＯの表示位置を制御する処理について説明する。
【０１４２】
図１２は、フレーム周期で各コマのゲーム画像を生成する際にそのゲーム画像に照準ＡＯを表示させるための処理手順を示すフローチャートである。このフローチャートは、フレーム周期をＴ（秒）とすると、ＣＰＵ２０１ａがＴ（秒）間隔で行う処理である。
【０１４３】
ＣＰＵ２０１ａは、まず、スティック型コントローラ４のＴボタン４０９の状態を判別する。すなわち、ＣＰＵ２０１ａは、Ｔボタン４０９が押下されているか否か（Ｔボタン４０９の操作信号がローレベルからハイレベルに反転したか否か）を判断する（Ｓ１）。また、ＣＰＵ２０１ａは、Ｔボタン４０９の押下操作が継続しているか否か（Ｔボタン４０９の操作信号がハイレベルを維持しているか否か）を判別する（Ｓ２）。
【０１４４】
ＣＰＵ２０１ａは、Ｔボタン４０９の押下操作が解除された若しくはその解除された状態が継続していると判別すると（Ｓ１，Ｓ２：ＮＯ）、描画処理部２０２に照準ＡＯを非表示にするオブジェクト非表示指令が出力され（Ｓ１１）、処理が終了される。このオブジェクト非表示指令により描画処理部２０２は照準ＡＯの表示処理を停止する。従って、ディスプレイ６の表示画面６ａには照準ＡＯが表示されなくなる。
【０１４５】
なお、ＣＰＵ２０１ａは、例えば、Ｔボタン４０９の操作信号が前回の判別時はハイレベルだったが今回の判別時はローレベルに反転している場合、Ｔボタン４０９の押下操作が解除されたと判別する。また、ＣＰＵ２０１ａは、Ｔボタン４０９の操作信号が前回の判別時も今回の判別時もローレベルである場合、Ｔボタン４０９の押下操作の解除が維持されていると判別する。
【０１４６】
一方、ＣＰＵ２０１ａは、Ｔボタン４０９の押下操作があったと判別すると（Ｓ１：ＹＥＳ）、リセットフラグＲＦを「１」にセットする（Ｓ３）。また、ＣＰＵ２０１ａは、Ｔボタン４０９の押下操作が維持されていると判別すると（Ｓ２：ＹＥＳ）、リセットフラグＲＦを「０」にリセットする（Ｓ４）。その後、ＣＰＵ２０１ａは、ステップＳ５以降でディスプレイ６の表示画面６ａへの照準ＡＯの表示指令の処理を行う。
【０１４７】
なお、ＣＰＵ２０１ａは、Ｔボタン４０９の操作信号が前回の判別時はローレベルだったが今回の判別時はハイレベルに反転している場合、Ｔボタン４０９の押下操作がされたと判別する。また、ＣＰＵ２０１ａは、Ｔボタン４０９の操作信号が前回の判別時も今回の判別時もハイレベルである場合、Ｔボタン４０９の押下操作が維持されていると判別する。
【０１４８】
リセットフラグＲＦは、スティック型コントローラ４のキャリブレーション処理を制御する。リセットフラグＲＦが「１」のときは、キャリブレーション処理を行うことを示し、リセットフラグＲＦが「０」のときはキャリブレーション処理を行わないことを示す。
【０１４９】
ＣＰＵ２０１ａは、Ｔボタン４０９の押下操作が解除された若しくはその解除された状態が継続していると判別したとき（Ｓ２でＮＯのとき）には、リセットフラグＲＦの設定処理をしない。この場合は照準ＡＯをディスプレイ６の表示画面６ａに表示させる処理をしないので、リセットフラグＲＦを前回の判別時に設定された状態から変更する必要がないからである。なお、リセットフラグＲＦの論理は上記の内容と逆であってもよい。
【０１５０】
ステップＳ５に移行すると、ＣＰＵ２０１ａは、リセットフラグＲＦが「１」にセットされているか否かを判別する。リセットフラグＲＦが「１」にセットされていれば（Ｓ５：ＹＥＳ）、ＣＰＵ２０１ａは、スティック型コントローラ４のキャリブレーション処理を行う（Ｓ６）。リセットフラグＲＦが「０」にセットされていれば（Ｓ５：ＮＯ）、ＣＰＵ２０１ａは、スティック型コントローラ４のキャリブレーション処理を行うことなく、ステップＳ７に移行する。
【０１５１】
キャリブレーション処理では、ＣＰＵ２０１ａは、スティック型コントローラ４から送信される角速度情報（ωｕ，ωｖ，ωｗ）を積分演算して得られる姿勢情報（θｕ，θｖ，θｗ）を（０，０，０）にリセットする。また、ＣＰＵ２０１ａは、上記（１），（２）式で算出されるスティック型コントローラ４の位置座標（Ｘcs，Ｙcs）＝（Ｘｃ，−Ｙｃ）をオフセット値（Ｘos，Ｙos）に設定する（Ｓ６）。
【０１５２】
なお、オフセット値（Ｘos，Ｙos）は、ゲーム開始時のキャリブレーション処理で初期設定されている。使用者Ｐは、ゲーム開始時にカメラ７のほぼ正面の位置で発光部４０２を当該カメラ７に向けてキャリブレーション処理のための所定の操作を行う。このキャリブレーション処理で取得される位置座標（Ｘcs，Ｙcs）は（０，０）であるので、初期設定時のオフセット値（Ｘos，Ｙos）は（０，０）である。使用者Ｐがゲームを開始した後、ゲーム中に最初にＴボタン４０９を押すと、ＣＰＵ２０１ａは、ステップＳ６でオフセット値（０，０）をその時に算出されるスティック型コントローラ４の位置座標（Ｘｃ，−Ｙｃ）に変更する。
【０１５３】
ステップＳ７に移行すると、ＣＰＵ２０１ａは、オブジェクト位置算出部２０４から、その時の発光部４０２のＸＹＺ座標系のＸＹ平面における座標（Ｘcs，Ｙcs）を取得する。この座標（Ｘcs，Ｙcs）は、オブジェクト位置算出部２０４で、発光部４０２のＸＹＺ座標系における座標（Ｘｃ，Ｙｃ，Ｚｃ）と、スティック型コントローラ４の姿勢ベクトルのＸＹＺ座標系における座標（Ｘｓ，Ｙｓ，Ｚｓ）と用いて、上記（１），（２）式を演算することにより算出される。
【０１５４】
続いて、ＣＰＵ２０１ａは、ステップＳ７で取得した位置座標（Ｘcs，Ｙcs）からオフセット値（Ｘos，Ｙos）を差し引いて位置座標（Ｘcs，Ｙcs）の補正を行う（Ｓ８）。
【０１５５】
ＣＰＵ２０１ａは、Ｔボタン４０９が押下された時はキャリブレーション処理を行う。ＣＰＵ２１０ａは、スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）を（Ｘｃ，−Ｙｃ）とし、この位置座標をオフセット値（Ｘos，Ｙos）に設定する。従って、スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）の補正値（Ｘcs’，Ｙcs’）は（０，０）である。一方、キャリブレーション処理の後にスティック型コントローラ４の姿勢が変化したときは、ＣＰＵ２０１ａは、スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）を上記（１），（２）式よりＸcs＝Ｘｃ＋（Ｘｓ×ｔ）（Ｘｓ≠０）、Ｙcs＝−Ｙｃ＋（Ｙｓ×ｔ）（Ｙｓ≠０）に変化させる。従って、スティック型コントローラ４の位置座標（Ｘcs，Ｙcs）の補正値（Ｘcs’，Ｙcs’）は（Ｘcs−Ｘｃ，Ｙcs＋Ｙｃ）である。
【０１５６】
続いて、ＣＰＵ２０１ａは、補正後の位置座標（Ｘcs’，Ｙcs’）のそれぞれに「ｎ／２」と「ｍ／２」を加算してディスプレイ６の表示画面６ａ上に照準ＡＯを表示させる位置座標（Ｉcs，Ｊcs）（単位ピクセル）を算出する（Ｓ９）。
【０１５７】
続いて、ＣＰＵ２０１ａは、算出した位置座標（Ｉcs，Ｊcs）に照準ＡＯを表示するオブジェクト表示指令を描画処理部２０２に出力し（Ｓ１０）、処理を終了する。このオブジェクト表示指令により描画処理部２０２はディスプレイ６の表示画面６ａの位置座標（Ｉcs，Ｊcs）に照準ＡＯを表示する処理を行う。これによりディスプレイ６の表示画面６ａには照準ＡＯが表示される。
【０１５８】
図１３は、ＣＰＵ２０１ａが数フレームに亘って図１２のフローチャートを実行したときの各処理内容の変化の一例を表した図である。
【０１５９】
同図において、ｔ１，ｔ２，…，ｔ６，t７は描画処理部２０２がゲーム画像を生成するタイミングである。タイミングの間隔がフレーム周期であり、この間隔期間にゲーム画像の生成処理が行われる。照準ＡＯの表示が必要になると、そのゲーム画像の生成処理に併せて照準ＡＯの表示処理が行われる。なお、Ｔ１，Ｔ２，…，Ｔ６は、各フレーム周期を識別するために付した符号である。
【０１６０】
同図の「ボタンの変化」の欄では、「信号」の欄はＴボタン４０９の操作信号のレベル変化を示す。「ＯＦＦ−ＯＦＦ」、「ＯＦＦ−ＯＮ」、「ＯＮ−ＯＮ」、「ＯＮ−ＯＦＦ」の各欄は、各フレーム周期におけるＴボタン４０９の操作信号の変化がいずれの状態に該当するかを示している。
【０１６１】
フレーム周期Ｔ１の期間が「ＯＦＦ−ＯＮ」の欄に〇印が付いているのは、この期間にＴボタン４０９の操作信号がローレベル（ＯＦＦ状態）からハイレベル（ＯＮ状態）に変化したことを示している。また、フレーム周期Ｔ２，Ｔ３，Ｔ４の期間が「ＯＮ−ＯＮ」の欄に〇印が付いているのは、この期間はＴボタン４０９の操作信号がハイレベル（ＯＮ状態）に維持されていることを示している。また、フレーム周期Ｔ５の期間が「ＯＮ−ＯＦＦ」の欄に〇印が付いているのは、この期間にＴボタン４０９の操作信号がハイレベル（ＯＮ状態）からローレベル（ＯＦＦ状態）に変化したことを示している。
【０１６２】
「リセットフラグＲＦ」の欄は、リセットフラグＲＦの内容を示している。フレーム周期Ｔ１，Ｔ４〜Ｔ６のリセットフラグＲＦが「０」になっているのは、フレーム周期Ｔ１，Ｔ４，Ｔ５，Ｔ６では各フレーム周期の直前のフレーム周期のリセットフラグＲＦの状態が維持されているからである。一方、フレーム周期Ｔ２のリセットフラグＲＦが「１」になっているのは、フレーム周期Ｔ２でＴボタン４０９が押下されたことがフレーム周期Ｔ２で検出され、ｔ３タイミングでのゲーム画像の生成処理でキャリブレーション処理が行われたからである。また、フレーム周期Ｔ３のリセットフラグＲＦが「０」になっているのは、キャリブレーション処理はＴボタン４０９が押下されたときにだけ行われるため、フレーム周期Ｔ２で「１」にセットされたリセットフラグＲＦがフレーム周期Ｔ３ではリセットされるためである。
【０１６３】
「照準オブジェクトの表示」の欄は、ディスプレイ６の表示画面６ａにおける照準ＡＯの表示位置の一例である。「指令」の欄は、ＣＰＵ２０１ａから描画処理部２０２に出力される照準ＡＯの表示に関する指令内容を示している。また、「オフセット値」の欄は、各フレーム周期におけるオフセット値（Ｘos，Ｙos）の内容を示している。
【０１６４】
図１３に示すように、Ｔボタン４０９が押下されたこと及びその状態が継続されていることが検出されているフレーム周期Ｔ２〜Ｔ５の期間だけディスプレイ６の表示画面６ａに照準ＡＯが表示される。Ｔボタン４０９の押下操作が検出された直後のフレーム周期Ｔ２において照準ＡＯが初めてディスプレイ６の表示画面６ａの中央に表示される。その後、照準ＡＯの表示画面６ａにおける表示位置は、Ｔボタン４０９が押下された状態でスティック型コントローラ４が振られるのに応じて中央から移動する。
【０１６５】
Ｔボタン４０９が押下されていないフレーム周期Ｔ１ではリセットフラグＲＦが「０」にリセットされているので、オフセット値（Ｘos，Ｙos）は初期値の（０,０）に保持されている。しかし、フレーム周期Ｔ２でＴボタン４０９の押下操作が検出されてリセットフラグＲＦが「１」にセットされるのに応じて、オフセット値（Ｘos，Ｙos）は、その時に算出されるスティック型コントローラ４の位置座標（Ｘｃ，−Ｙｃ）で更新される。そして、その後は再度Ｔボタン４０９の押下操作が検出されるまで、そのオフセット値（Ｘｃ，−Ｙｃ）が保持される。
【０１６６】
上記のように、本実施形態によれば、使用者ＰがＴボタン４０９を押下してディスプレイ６の表示画面６ａに照準ＡＯが表示される時に、その時のスティック型コントローラ４の姿勢情報（θｕ，θｖ，θｗ）をゼロにリセットするキャリブレーション処理が行われる。従って、使用者Ｐは、ゲーム中にゲーム操作には関係のないキャリブレーション処理をするための操作を行う必要がなく、ゲームに集中することができる。
【０１６７】
また、キャリブレーション処理のためにゲームを中断することがないので、使用者Ｐにゲームが中断されることのストレスを与えることもない。
【０１６８】
また、キャリブレーション処理を実行すると、照準ＡＯが表示画面６ａの中央に移動する。従って、使用者Ｐはキャリブレーション処理が確実に行われていることを容易に確認することができる。
【０１６９】
また、プレイヤキャラクタＰＣが銃ＪＯを構える操作をキャリブレーションを行うための操作に兼用している。そのため、使用者Ｐは、コントローラ５にスティック型コントローラ４のキャリブレーション処理のための操作を別途設定する必要がない。従って、コントローラ５のボタン又はキーの操作の多重化を低減することができる。
【０１７０】
また、ディスプレイ６の表示画面６ａに照準ＡＯが表示される時にキャリブレーション処理を行う。これにより、その後のスティック型コントローラ４の姿勢情報（Ｕ軸，Ｖ軸，Ｗ軸の各軸周りの回転角θｕ，θｖ，θｗ）の誤差を抑制することができる。特に、本実施形態では、照準ＡＯの表示処理をする毎にキャリブレーション処理を行う。そのため、スティック型コントローラ４の姿勢情報の誤差が累積することがない。従って、表示画面６ａにおける照準ＡＯの移動を使用者Ｐのスティック型コントローラ４を振る操作に基づいて可及的正確に制御することができる。
【０１７１】
なお、スティック型コントローラ４内の姿勢検出部４１２で角速度センサ４０３によって検出した角速度情報（ωｕ，ωｖ，ωｗ）の積分演算を行って姿勢情報（θｕ，θｖ，θｗ）を算出し、スティック型コントローラ４からその姿勢情報を装置本体２に送信してもよい。
【０１７２】
この場合は、Ｔボタン４０９が押下されると、姿勢検出部４１２は姿勢情報（θｕ，θｖ，θｗ）のリセットを行う。また、装置本体２では、スティック型コントローラ４からのＴボタン４０９の押下操作の信号の受信によりスティック型コントローラ４でキャリブレーション処理が行われたことを認識するようにすればよい。あるいは、スティック型コントローラ４からキャリブレーション処理を行ったことを示す信号を装置本体２に送信し、その信号によってキャリブレーション処理を認識させるようにしてもよい。逆に、装置本体２がスティック型コントローラ４からのＴボタン４０９の押下操作の信号を受信すると、スティック型コントローラ４にキャリブレーション処理の実行命令を送信するようにしてもよい。
【０１７３】
また、上記実施形態では、キャブレーション処理を行わせるボタンをスティック型コントローラ４に設けられたボタンに設定していたが、パッド型コントローラ３に設けられたボタンに設定してもよい。また、キャブレーション処理を行うには、Ｔボタン４０９のような押しボタンスイッチのボタンを押下するのではなく、パッド型コントローラ３に設けられたジョイスティックを操作するのであってもよい。
【０１７４】
また、上記実施形態では、照準ＡＯの表示を指令するボタンと照準ＡＯの非表示を指令するボタンを同一のボタン（スティック型コントローラ４のＴボタン４０９）で共用していたが、両ボタンは異なっていてもよい。
【０１７５】
また、使用者Ｐがパッド型コントローラ３とスティック型コントローラ４の両方を操作してゲームを行うアクションゲームについて説明したが、本発明はこれに限られない。すなわち、本発明は、スティック型コントローラ４だけを用いるゲームにも適用することができる。
【０１７６】
また、上記実施形態では、照準ＡＯがディスプレイ６の表示画面６ａに表示され、その照準ＡＯが表示画面６ａ上で移動する例を説明した。しかし、本発明は、姿勢を検出できるセンサを備えたコントローラの位置や姿勢を変化させることによって表示画面６ａに表示されるキャラクタ又はオブジェクトを操作するゲームにおいて、ゲーム中にコントローラの位置や姿勢を変化させる操作によってキャラクタやオブジェクトの操作が可能になるタイミングでキャリブレーション処理を行う構成のゲームに広く適用することができる。
【０１７７】
また、上記実施形態では、コントローラがゲーム装置の本体と別体となっていたが、本発明はこれに限られない。すなわち、携帯型ゲーム装置、携帯型電話装置若しくはノート型パソコンのようにコントローラとディスプレイとが装置本体に一体となっているゲームが可能な装置において、装置本体に姿勢が検出できるセンサが設けられている装置にも本発明が適用できることは言うまでもない。この場合は、装置本体がコントローラと考えることができる。
【０１７８】
従って、本発明は、上記実施形態のように、キャリブレーション処理のトリガーとして、キャラクタ又はオブジェクトの表示を指令するボタンの操作を必要とするものではない。本発明では、ディスプレイ６の表示画面６ａにキャラクタ又はオブジェクトが表示されている状態で、そのキャラクタやオブジェクトに対してコントローラの位置や姿勢を変化させる操作による制御が可能になる条件が成立すると、その条件成立時にキャリブレーション処理を行うことができる。
【０１７９】
上記の条件としては、使用者Ｐによってコントローラ（ゲーム装置とは別体のコントローラ及びゲーム装置と一体となっているコントローラを含む）に設けられた特定のボタンが操作されること、或いは使用者Ｐの操作には関係なくゲーム場面が特定の場面になることなどが考えられる。
【０１８０】
特定のボタンが操作される条件としては、例えば、アクションゲームにおいて、敵キャラクタからプレイヤキャラクタに対してミサイル攻撃が行われたとき、使用者がコントローラの特定のボタンを押下すると、コントローラの位置又は姿勢を変化させる操作によってプレイヤキャラクタの姿勢を変化させてミサイルを回避することができる構成が考えられる。この構成では、特定のボタンの押下操作が条件であるから、使用者が特定のボタンを押下すると、キャリブレーション処理が行われる。そして、その後に使用者がコントローラを前後左右に傾ける操作をすると、その操作に応じて表示画面上のプレイヤキャラクタが上半身を上下左右に傾ける動作をしてミサイルを回避することができる。
【０１８１】
また、ゲーム場面が特定の場面になる条件としては、例えば、上記のアクションゲームにおいて、敵キャラクタがミサイル攻撃などの特定種類の攻撃をすると、その攻撃が終了するまでの期間が自動的にゲームの操作装置の姿勢変化操作が可能になる構成が考えられる。攻撃が終了するとは、例えば、ミサイルがプレイヤキャラクタＰＣ若しくは他のオブジェクトに当たるか、何処にも当たらずに消滅するなどの場合である。
【０１８２】
この構成では、敵キャラクタがミサイル攻撃などの特定種類の攻撃を行うことが条件になる。つまり、敵キャラクタがミサイル攻撃を行うと、キャリブレーション処理が行われる。そして、その後に使用者がコントローラを前後左右に傾ける操作をすると、その操作に応じて表示画面上のプレイヤキャラクタが上半身を上下左右に傾ける動作をしてミサイルを回避することができる。
【０１８３】
また、他のジャンルのゲームとしては、ディスプレイに表示された迷路でコントローラの姿勢を変化させてボールなどのオブジェクトを移動させるゲームが考えられる。この種のゲームには、予め決められた一定時間内にボールを迷路のスタート地点からゴール地点に移動させることを目的とするもの、或いは他の使用者とボールの移動時間を競う競技タイプのものが含まれる。この種のゲームでは、いずれのタイプでもボールが迷路のスタート地点にセットされる。この場合は、移動開始の条件が成立してからボールがゴール地点に到達するまでの期間（一定時間内にボールがゴール地点に到達しない場合は、一定時間が経過するまで期間）は、コントローラの位置及び姿勢を変化させる操作が可能である。
【０１８４】
例えば、競技タイプのボールの移動開始の条件としては、ボールが迷路のスタート地点にセットされた後に、使用者が特定のボタンを操作することが考えられる。この場合は、ゲームが開始された後に使用者が任意のタイミングで特定のボタンを操作すると、そのタイミングでキャリブレーション処理が行われる。この場合は、ゲーム開始後に使用者が特定のボタンを操作することがキャリブレーション処理の条件となる。
【０１８５】
また、別の条件としては、ボールが迷路のスタート地点にセットされた後にコンピュータがカウントダウンを行い、そのカウントダウンが終了することが考えられる。この場合は、ゲームが開始されてコンピュータがボールを迷路のスタート地点にセットするなどの所定の画面処理を行った後にカウントダウンの処理を終了すると、キャリブレーション処理が行われる。従って、この場合は、ゲーム開始後にコンピュータが使用者にボールの移動時間の計時開始を報知する処理をしたことがキャリブレーション処理の条件となる。
【０１８６】
また、上記実施形態では、姿勢センサとして角速度センサを用いた例を説明したが、本発明はこれに限られない。すなわち、例えば、加速度計などの他の種類のセンサを用いてスティック型コントローラ４の姿勢の変化を検出する場合にも本発明を適用できることはいうまでもない。
【０１８７】
また、上記実施形態では、アクションゲームを例に説明したが、例えば、ＲＰＧ（ロールプレイングゲーム）、シューティングゲーム、格闘ゲーム、アドベンチャーゲームなどの様々なジャンルのゲームにおいても、本発明を適用することができる。また、「ＳＥＣＯＮＤ  ＬＩＦＥ（登録商標）」、或いは「ＰｌａｙＳｔａｉｏｎ（登録商標）Ｈｏｍｅ」等で提供されるバーチャル世界にアバターと呼ばれる使用者の分身を登場させて仮想世界での生活を体験するゲームにも適用することができる。
【０１８８】
また、本発明は、複数の使用者の操作するキャラクタ若しくはＣＰＵの制御するキャラクタがチームを組んで協同して敵キャラクタと対戦するようなゲーム、或いは他の使用者の操作するキャラクタを敵キャラクタとして対戦するようなゲームにも適用することができる。
【０１８９】
また、上記実施形態では、オフラインタイプのゲーム装置について説明したが、本発明はオンラインタイプのゲームにも適用できることは言うまでもない。
【０１９０】
また、上記実施形態では、家庭用ゲーム装置や携帯型ゲーム装置でゲームを実施する場合について説明したが、本発明はこれに限定されない。すなわち、本発明は、例えば、アーケードゲーム装置、或いはゲームソフトが搭載されているパーソナルコンピュータ等でゲームを実施する場合にも適用することができる。
【手続補正書】
【提出日】平成24年12月21日(2012.12.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータを、
ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出手段と、
前記ゲームの実行中に使用者によってゲーム進行に使用される前記ゲームのオブジェクトの操作開始を指示する前記操作装置の第１の操作部材が操作されたことを示す操作信号を受け取ると、前記姿勢変化量算出手段の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット手段と、
前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御手段と、
して機能させるプログラム。
【請求項２】
前記オブジェクト制御手段は、
前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセット手段によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御手段と、
リセット後に前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御手段と、
を含む、請求項１に記載のプログラム。
【請求項３】
前記初期位置は、前記表示画面の中央位置である、請求項２に記載のプログラム。
【請求項４】
前記リセット手段は、前記使用者による前記操作装置に設けられた前記第１の操作部材の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、
前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御する、請求項１乃至３のいずれかに記載のプログラム。
【請求項５】
前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、
前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号である、請求項１乃至４のいずれかに記載のプログラム。
【請求項６】
コンピュータがゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出ステップと、
前記コンピュータが前記ゲームの実行中に使用者によってゲーム進行に使用される前記ゲームのオブジェクトの操作開始を指示する前記操作装置の第１の操作部材が操作されたことを示す操作信号を受け取ると、前記姿勢変化量算出ステップで前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセットステップと、
前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記コンピュータが前記姿勢変化量算出ステップで算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御ステップと、
を備えていることを特徴とするオブジェクト制御方法。
【請求項７】
前記オブジェクト制御ステップは、
前記コンピュータが前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセットステップでリセットした前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御ステップと、
前記コンピュータがリセット後に前記姿勢変化量算出ステップで算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御ステップと、
を含む、請求項６に記載のオブジェクト制御方法。
【請求項８】
前記初期位置は、前記表示画面の中央位置である、請求項７に記載のオブジェクト制御方法。
【請求項９】
前記リセットステップでは、前記コンピュータが前記使用者による前記操作装置に設けられた前記第１の操作部材の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、
前記オブジェクト制御ステップでは、前記コンピュータが前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御する、請求項６乃至８のいずれかに記載のオブジェクト制御方法。
【請求項１０】
前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、
前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号である、請求項６乃至９のいずれかに記載のオブジェクト制御方法。
【請求項１１】
コンピュータを、
ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出手段と、
前記ゲームの実行中に使用者によってゲーム進行に使用される前記ゲームのオブジェクトの操作開始を指示する前記操作装置の第１の操作部材が操作されたことを示す操作信号を受け取ると、前記姿勢変化量算出手段の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット手段と、
前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御手段と、
して機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１２】
前記オブジェクト制御手段は、
前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセット手段によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御手段と、
リセット後に前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御手段と、
を含む、請求項１１に記載の記録媒体。
【請求項１３】
前記初期位置は、前記表示画面の中央位置である、請求項１２に記載の記録媒体。
【請求項１４】
前記リセット手段は、前記使用者による前記操作装置に設けられた前記第１の操作部材の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、
前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御する、請求項１０乃至１３のいずれかに記載の記録媒体。
【請求項１５】
前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、
前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号である、請求項１０乃至１４のいずれかに記載の記録媒体。
【請求項１６】
ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出手段と、
前記ゲームの実行中に使用者によってゲーム進行に使用される前記ゲームのオブジェクトの操作開始を指示する前記操作装置の第１の操作部材が操作されたことを示す操作信号を受け取ると、前記姿勢変化量算出手段の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット手段と、
前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御手段と、
を備えたことを特徴とするゲームシステム。
【請求項１７】
前記オブジェクト制御手段は、
前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセット手段によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御手段と、
リセット後に前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御手段と、
を含む、請求項１６に記載のゲームシステム。
【請求項１８】
前記初期位置は、前記表示画面の中央位置である、請求項１７に記載のゲームシステム。
【請求項１９】
前記リセット手段は、前記使用者による前記操作装置に設けられた前記第１の操作部材の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、
前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御する、請求項１６乃至１８のいずれかに記載のゲームシステム。
【請求項２０】
前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、
前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号である、請求項１６乃至１９のいずれかに記載のゲームシステム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、操作装置の姿勢情報を用いて表示装置に表示されるオブジェクトの動きを制御するプログラム、オブジェクト制御方法、記録媒体およびゲームシステムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
本発明は、姿勢を検出することができるセンサを備えたコントローラのキャリブレーション処理をゲーム中の使用者による所定の操作によって自動的に行うことができ、コントローラの姿勢の変化に基づくゲーム画面内のキャラクタやオブジェクトの動きを好適に制御することができるプログラム、オブジェクト制御方法、記録媒体及びゲームシステムを提供することを目的としている。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
本発明の第１の側面によって提供されるプログラムは、コンピュータを、ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出手段と、前記ゲームの実行中に使用者によってゲーム進行に使用される前記ゲームのオブジェクトの操作開始を指示する前記操作装置の第１の操作部材が操作されたことを示す操作信号を受け取ると、前記姿勢変化量算出手段の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット手段と、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御手段と、して機能させることを特徴とする。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】削除
【補正の内容】
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
本発明の第２の側面によって提供されるオブジェクト制御方法は、コンピュータがゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出ステップと、前記コンピュータが前記ゲームの実行中に使用者によってゲーム進行に使用される前記ゲームのオブジェクトの操作開始を指示する前記操作装置の第１の操作部材が操作されたことを示す操作信号を受け取ると、前記姿勢変化量算出ステップで前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセットステップと、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記コンピュータが前記姿勢変化量算出ステップで算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御ステップと、を備えていることを特徴とする。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
上記のオブジェクト制御方法において、前記オブジェクト制御ステップは、前記コンピュータが前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセットステップでリセットした前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御ステップと、前記コンピュータがリセット後に前記姿勢変化量算出ステップで算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御ステップと、を含むとよい。また、前記初期位置は、前記表示画面の中央位置であるとよい。また、前記リセットステップでは、前記コンピュータが前記使用者による前記操作装置に設けられた前記第１の操作部材の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、前記オブジェクト制御ステップでは、前記コンピュータが前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御するとよい。また、前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号であるとよい。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
本発明の第３の側面によって提供される記録媒体は、コンピュータを、ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出手段と、前記ゲームの実行中に使用者によってゲーム進行に使用される前記ゲームのオブジェクトの操作開始を指示する前記操作装置の第１の操作部材が操作されたことを示す操作信号を受け取ると、前記姿勢変化量算出手段の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット手段と、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御手段と、して機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
上記のプログラムにおいて、前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセット手段によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御手段と、リセット後に前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御手段と、を含むとよい。また、前記初期位置は、前記表示画面の中央位置であるとよい。また、前記リセット手段は、前記使用者による前記操作装置に設けられた前記第１の操作部材の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御するとよい。また、前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号であるとよい。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
本発明の第４の側面によって提供されるゲームシステムは、ゲームの操作装置に設けられた姿勢センサの検出値を受信し、この検出値に基づいて、前記操作装置の基準姿勢からの姿勢の変化量を算出する姿勢変化量算出手段と、前記ゲームの実行中に使用者によってゲーム進行に使用される前記ゲームのオブジェクトの操作開始を指示する前記操作装置の第１の操作部材が操作されたことを示す操作信号を受け取ると、前記姿勢変化量算出手段の前記姿勢の変化量を算出するための前記操作装置の基準姿勢を再設定するリセット手段と、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記オブジェクトの操作終了を指示する第２の操作部材の操作信号を受け取るまでの間において、前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記ゲームのオブジェクトを制御するオブジェクト制御手段と、を備えたことを特徴とする。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
上記のゲームシステムにおいて、前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ると、前記リセット手段によりリセットされた前記操作装置の姿勢の変化量に基づいて、前記オブジェクトを表示装置の表示画面の予め設定されている初期位置に表示する初期表示制御手段と、リセット後に前記姿勢変化量算出手段で算出される前記操作装置の姿勢の変化量に基づいて、前記使用者による前記第２の操作部材の操作信号を受け取るまで、前記表示画面に表示された前記オブジェクトの表示位置を制御する表示位置制御手段と、を含むとよい。また、前記初期位置は、前記表示画面の中央位置であるとよい。また、前記リセット手段は、前記使用者による前記操作装置に設けられた前記第１の操作部材の操作信号を受け取ると、前記操作装置の基準姿勢を再設定し、前記オブジェクト制御手段は、前記使用者による前記第１の操作部材の操作信号を受け取ってから前記使用者による前記操作装置に設けられた前記第２の操作部材の操作信号を受け取るまでの間において、前記操作装置の姿勢の変化量に基づいて前記オブジェクトを制御するとよい。また、前記第１の操作部材と前記第２の操作部材はモーメンタリー・オン−オフ・スイッチからなり、前記コンピュータが受け取る前記使用者による前記第１の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチを押下する操作信号であり、前記コンピュータが受け取る前記使用者による前記第２の操作部材の操作信号は前記モーメンタリー・オン−オフ・スイッチの押下を解除する操作信号であるとよい。
【国際調査報告】
2011122214.tif 000017
2011122214.tif 000018
2011122214.tif 000019
2011122214.tif 000020