(57)【要約】      （修正有）【課題】加速度入力の種類の誤認識を軽減できる。【解決手段】ゲームシステム１０はゲーム装置１２およびコントローラ１４を含み、コントローラ１４は少なくとも２軸方向の加速度を検出する加速度センサを備える。コントローラ１４を用いた加速度入力の種類に応じたゲーム処理が実行される。種類判定のために、第１軸方向の加速度が閾値を下回って最小値になったタイミングを示す基準タイミングが検出され、当該基準タイミングの前後の加速度変化ベクトル間の角度が所定角度以上か否かが判定される。そして、当該角度が所定角度以上ではないとき、加速度入力は２軸方向のいずれか一方向の加速度入力であると判定され、当該角度が所定角度以上であるとき、加速度入力は２軸方向の成分を含む方向の加速度入力であると判定される。【選択図】  図１
2008067866.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２軸方向の加速度を検出する加速度センサを有する入力手段を含むゲーム装置のコンピュータに、前記入力手段を用いた加速度入力の種類に応じてゲーム処理を実行させるゲームプログラムであって、
前記加速度センサによって検出される加速度を取得する加速度取得ステップ、
前記加速度取得ステップによって取得された前記２軸方向のうちの第１軸方向の加速度が所定の閾値を下回って最小値または上回って最大値になったタイミングを示す基準タイミングを検出する基準タイミング検出ステップ、
前記基準タイミングにおいて取得された前記２軸方向の加速度と、前記基準タイミングの次のタイミングにおいて取得された前記２軸方向の加速度とに基づいて、第１の加速度変化ベクトルを算出する第１ベクトル算出ステップ、
前記基準タイミングにおいて取得された前記２軸方向の加速度と、前記基準タイミングの前のタイミングにおいて取得された前記２軸方向の加速度とに基づいて、第２の加速度変化ベクトルを算出する第２ベクトル算出ステップ、
前記第１の加速度変化ベクトルと前記第２の加速度変化ベクトルとのなす角度が所定角度以上であるか否かを判定する角度判定ステップ、および
前記角度判定ステップによって前記角度が前記所定角度以上ではないと判定されたとき、前記加速度入力は前記２軸方向のうちいずれか一方向の加速度入力であると判定し、前記角度が前記所定角度以上であると判定されたとき、前記加速度入力は前記２軸方向の成分を含む方向の加速度入力であると判定する入力種類判定ステップを前記コンピュータに実行させる、ゲームプログラム。
【請求項２】
少なくとも２軸方向の加速度を検出する加速度センサを有する入力手段を含み、前記入力手段を用いた加速度入力の種類に応じてゲーム処理を実行するゲーム装置であって
前記加速度センサによって検出される加速度を取得する加速度取得手段、
前記加速度取得手段によって取得された前記２軸方向のうちの第１軸方向の加速度が所定の閾値を下回って最小値または上回って最大値になったタイミングを示す基準タイミングを検出する基準タイミング検出手段、
前記基準タイミングにおいて取得された前記２軸方向の加速度と、前記基準タイミングの次のタイミングにおいて取得された前記２軸方向の加速度とに基づいて、第１の加速度変化ベクトルを算出する第１ベクトル算出手段、
前記基準タイミングにおいて取得された前記２軸方向の加速度と、前記基準タイミングの前のタイミングにおいて取得された前記２軸方向の加速度とに基づいて、第２の加速度変化ベクトルを算出する第２ベクトル算出手段、
前記第１の加速度変化ベクトルと前記第２の加速度変化ベクトルとのなす角度が所定角度以上であるか否かを判定する角度判定手段、および
前記角度判定手段によって前記角度が前記所定角度以上ではないと判定されたとき、前記加速度入力は前記２軸方向のうちいずれか一方向の加速度入力であると判定し、前記角度が前記所定角度以上であると判定されたとき、前記加速度入力は前記２軸方向の成分を含む方向の加速度入力であると判定する入力種類判定手段を備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、加速度センサで検出される加速度を入力としてゲーム処理が実行される、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
加速度センサを用いて検出されるプレイヤのパンチ動作に応じてボクシングゲームが実行されるゲーム装置の一例が特許文献１に開示されている。特許文献１に記載された技術では、コントローラとしてのグローブユニットに、当該グローブユニットの前後（Ｙ）、左右（Ｘ）および上下（Ｚ）方向の３軸の加速度を検出する加速度センサが設けられており、当該加速度センサの出力波形の解析によってパンチ種類が識別される。具体的には、まず、パンチの打ち始めから打ち終わりまでの区間がＹ軸加速度の波形から検出される。次に、当該パンチの打ち始めから打ち終わりまでの区間内のＸ軸加速度およびＺ軸加速度のそれぞれの波形から、たとえば、最大値と最小値、振幅、ピークの出現回数、積分値などのデータがそれぞれ抽出される。そして、各抽出データとパンチ種類（ストレート、フックおよびアッパーパンチ）ごとの各波形パターンとに基づいて、パンチの種類が判別される。パンチ種類が識別されると、当該パンチ種類に応じたゲーム処理が行われる。
【特許文献１】特開２００２−１５３６７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１に記載された技術では、軸ごとに個別に検出データと波形パターンとに基づいてパンチ種類を識別するようにしているので、識別精度がよくない。つまり、グローブユニットが想定とは異なる状態で把持されてパンチが打たれると、各軸では想定した波形パターンとは異なる波形が検出されるので、パンチ種類を正確に認識することが困難になる。
【０００４】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【０００５】
この発明の他の目的は、加速度センサを有する入力手段を用いた加速度入力の種類の誤認識を軽減することができる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００６】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために後述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
【０００７】
この発明に従った第１の発明のゲームプログラムは、少なくとも２軸方向の加速度を検出する加速度センサを有する入力手段を含むゲーム装置のコンピュータに、入力手段を用いた加速度入力の種類に応じてゲーム処理を実行させるゲームプログラムである。ゲームプログラムは、加速度取得ステップ、基準タイミング検出ステップ、第１ベクトル算出ステップ、第２ベクトル算出ステップ、角度判定ステップ、および入力種類判定ステップをコンピュータに実行させる。加速度取得ステップは、加速度センサによって検出される加速度を取得する。基準タイミング検出ステップは、加速度取得ステップによって取得された２軸方向のうちの第１軸方向の加速度が所定の閾値を下回って最小値または上回って最大値になったタイミングを示す基準タイミングを検出する。第１ベクトル算出ステップは、基準タイミングにおいて取得された２軸方向の加速度と、基準タイミングの次のタイミングにおいて取得された２軸方向の加速度とに基づいて、第１の加速度変化ベクトルを算出する。第２ベクトル算出ステップは、基準タイミングにおいて取得された２軸方向の加速度と、基準タイミングの前のタイミングにおいて取得された２軸方向の加速度とに基づいて、第２の加速度変化ベクトルを算出する。角度判定ステップは、第１の加速度変化ベクトルと第２の加速度変化ベクトルとのなす角度が所定角度以上であるか否かを判定する。入力種類判定ステップは、角度判定ステップによって角度が所定角度以上ではないと判定されたとき、加速度入力は２軸方向のうちいずれか一方向の加速度入力であると判定し、角度が所定角度以上であると判定されたとき、加速度入力は２軸方向の成分を含む方向の加速度入力であると判定する。
【０００８】
第１の発明では、ゲームプログラムは、ゲーム装置（１２）のコンピュータ（４４）に以下に説明する各ステップを実行させ、加速度入力の種類に応じてゲーム処理を実行させるためのプログラムである。ゲーム装置は、プレイヤによって操作される入力手段（１４、３４、３６）を含み、入力手段は少なくとも２軸方向の加速度を検出する加速度センサ（８４、９０）を有している。加速度センサによって検出される加速度は加速度取得ステップ（Ｓ３、Ｓ１５）によって取得される。基準タイミング検出ステップ（Ｓ９１、Ｓ９３）によって、所定の条件を満足するタイミングを示す基準タイミングが取得された加速度に基づいて検出される。具体的には、基準タイミングは、２軸方向のうちの第１軸方向の加速度が所定の閾値を下回って最小値になったタイミングである。あるいは、基準タイミングは、２軸方向のうちの第１軸方向の加速度が所定の閾値を上回って最大値になったタイミングである。基準タイミングを検出するための所定の条件は、加速度センサの第１軸方向の設定によって決められる。基準タイミングの前後の加速度変化ベクトル間の角度に、プレイヤによる入力手段の持ち方によらず加速度入力の種類に応じた相違が現れることが見出されたので、この角度の判定によって加速度入力が識別される。すなわち、第１ベクトル算出ステップ（Ｓ９５）では、基準タイミングとその次のタイミングにおいて取得された２軸方向の加速度に基づいて、第１の加速度変化ベクトル（Ｖ１）を算出する。第２ベクトル算出ステップ（Ｓ９７）では、基準タイミングとその前のタイミングにおいて取得された２軸方向の加速度に基づいて、第２の加速度変化ベクトル（Ｖ２）を算出する。角度判定ステップ（Ｓ９９）では、第１の加速度変化ベクトルと第２の加速度変化ベクトルとなす角度（θ）が所定角度以上であるか否かを判定する。入力種類判定ステップ（Ｓ１０１）は、角度が所定角度以上でないと判定されたとき、加速度入力が２軸方向のうちいずれか一方向の加速度入力であると判定し、角度が所定角度以上であると判定されるとき、加速度入力が２軸方向の成分を含む方向の加速度入力であると判定する。
【０００９】
第１の発明によれば、基準タイミング前後の加速度変化ベクトル間の角度と所定角度との関係によって、加速度入力の種類を識別するようにした。したがって、加速度入力の種類が、２軸方向のうちのいずれか一方向への直線的な加速度入力であるかまたは２軸方向の成分を含む方向の加速度入力であるかを正確に識別することができる。
【００１０】
この発明に従った第２の発明のゲーム装置は、少なくとも２軸方向の加速度を検出する加速度センサを有する入力手段を含み、入力手段を用いた加速度入力の種類に応じてゲーム処理を実行するゲーム装置である。ゲーム装置は、加速度取得手段、基準タイミング検出手段、第１ベクトル算出手段、第２ベクトル算出手段、角度判定手段、および入力種類判定手段を備える。加速度取得手段は、加速度センサによって検出される加速度を取得する。基準タイミング検出手段は、加速度取得手段によって取得された２軸方向のうちの第１軸方向の加速度が所定の閾値を下回って最小値または上回って最大値になったタイミングを示す基準タイミングを検出する。第１ベクトル算出手段は、基準タイミングにおいて取得された２軸方向の加速度と、基準タイミングの次のタイミングにおいて取得された２軸方向の加速度とに基づいて、第１の加速度変化ベクトルを算出する。第２ベクトル算出手段は、基準タイミングにおいて取得された２軸方向の加速度と、基準タイミングの前のタイミングにおいて取得された２軸方向の加速度とに基づいて、第２の加速度変化ベクトルを算出する。角度判定手段は、第１の加速度変化ベクトルと第２の加速度変化ベクトルとのなす角度が所定角度以上であるか否かを判定する。入力種類判定手段は、角度判定手段によって角度が所定角度以上ではないと判定されたとき、加速度入力は２軸方向のうちいずれか一方向の加速度入力であると判定し、角度が所定角度以上であると判定されたとき、加速度入力は２軸方向の成分を含む方向の加速度入力であると判定する。
【００１１】
第２の発明は、上述の第１の発明のゲームプログラムに相当するゲーム装置であり、第１の発明と同様の効果を奏する。
【発明の効果】
【００１２】
この発明によれば、入力手段に少なくとも２軸方向の加速度を検出する加速度センサが備えられたゲーム装置において、入力手段の持ち方による誤認識を軽減することができる。
【００１３】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００１４】
図１を参照して、この発明の一実施例であるゲームシステム１０は、ゲーム装置１２およびコントローラ１４を含む。ゲーム装置１２は据置型ゲーム装置である。コントローラ１４は、ユーザないしプレイヤの入力装置ないし操作装置である。ゲーム装置１２とコントローラ１４とは無線によって接続される。
【００１５】
ゲーム装置１２は、略直方体のハウジング１６を含み、ハウジング１６の前面にはディスクスロット１８およびメモリカードスロットカバー２０が設けられる。ディスクスロット１８から、ゲームプログラムおよびデータを記憶した情報記憶媒体の一例である光ディスク２２（図２）が挿入されて、ハウジング１６内のディスクドライブ２４（図２）に装着される。メモリカードスロットカバー２０の内側にはメモリカードスロットが設けられており、外部メモリカード２６（図２）が挿入される。メモリカード２６は、光ディスク２２（図２）から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイされたゲームのゲームデータ（結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。また、上記ゲームデータの保存は、外部メモリカード２６に代えて、たとえばフラッシュメモリ等の内部メモリに対して行うようにしてもよい。
【００１６】
ゲーム装置１２のハウジング１６の後面には、ＡＶケーブルコネクタ（図示せず）が設けられ、当該コネクタを用いて、ゲーム装置１２はＡＶケーブル２８を介してモニタ（ディスプレイ）３０に接続される。このモニタ３０は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル２８は、ゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）３０の画面上にたとえば３Ｄビデオゲームのゲーム画像が表示され、内蔵されるスピーカ３２からゲーム音楽や効果音などのステレオゲーム音声が出力される。
【００１７】
ゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、ゲーム装置１２を駆動するのに適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００１８】
コントローラ１４は、詳細は後述されるが、それぞれが片手で把持可能な第１コントローラ３４および第２コントローラ３６を含む。第２コントローラ３６の後端から延びるケーブル３８の先端にはコネクタ４０が設けられており、当該コネクタ４０は、第１コントローラ３４の後端面に設けられるコネクタ４２（図３、図５）に接続される。第２コントローラ３６の操作データないし入力データはケーブル３８を介して第１コントローラ３４に与えられる。第１コントローラ３４は、第１コントローラ３４自身の入力データと第２コントローラ３６の入力データとを含むコントローラデータをゲーム装置１２に送信する。
【００１９】
このゲームシステム１０において、ゲーム（または他のアプリケーション）をプレイするために、ユーザはまずゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくは実行したいと思う他のアプリケーション）を記憶している適宜の光ディスク２２を選択し、その光ディスク２２をゲーム装置１２のディスクスロット１８からディスクドライブ２４にローディングする。これに応じて、ゲーム装置１２がその光ディスク２２に記憶されているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置１２に入力を与えるためにコントローラ１４を操作する。
【００２０】
図２はゲームシステム１０の電気的な構成を示すブロック図である。ゲーム装置１２はＣＰＵ４４を含む。このＣＰＵ４４はゲームプロセサとして機能し、ゲーム装置１２の全体的な制御を担当する。ＣＰＵ４４には、バスを介してメモリコントローラ４６が接続される。メモリコントローラ４６は主として、ＣＰＵ４４の制御の下で、バスを介して接続されるメインメモリ４８の書込みや読出しを制御する。このメモリコントローラ４６にはＧＰＵ(Graphics Processing Unit) ５０が接続される。
【００２１】
ＧＰＵ５０は、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、メモリコントローラ４６を介してＣＰＵ４４からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従って、ジオメトリユニット５２およびレンダリングユニット５４によって３Ｄのゲーム画像を生成する。つまり、ジオメトリユニット５２は、３次元座標系の各種オブジェクトの回転，移動，変形等の座標演算処理を行う。オブジェクトは、複数のポリゴン（ポリゴンとは少なくとも３つの頂点座標によって定義される多角形平面をいう。）で構成されている。レンダリングユニット５４は、各種オブジェクトの各ポリゴンにテクスチャ（模様画像）を貼り付ける処理などの画像生成処理を施す。したがって、ＧＰＵ５０によって、ゲーム画面上に表示すべき３Ｄの画像データが生成され、その画像データがフレームバッファ５６内に記憶される。
【００２２】
なお、ＧＰＵ５０が作画コマンドを実行するにあたって必要なデータ（プリミティブまたはポリゴンやテクスチャ等）は、ＧＰＵ５０がメモリコントローラ４６を介してメインメモリ４８から入手する。
【００２３】
フレームバッファ５６は、たとえばラスタスキャンモニタ３０の１フレーム分の画像データを描画（蓄積）しておくためのメモリであり、ＧＰＵ５０によって１フレーム毎に書き換えられる。具体的には、フレームバッファ５６は、１画素（ピクセル）毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、Ｒ，Ｇ，Ｂ，Ａについてのデータであり、たとえば、８ビットのＲ（赤）データ、８ビットのＧ（緑）データ、８ビットのＢ（青）データおよび８ビットのＡ（アルファ）データである。なお、Ａデータは、マスク（マット画像）についてのデータである。後述のビデオＩ／Ｆ６６がメモリコントローラ４６を介してフレームバッファ５６のデータを読み出すことによって、モニタ３０の画面上にゲーム画像が表示される。
【００２４】
また、Ｚバッファ５８は、（フレームバッファ５６に対応する画素数×１画素当たりの奥行きデータのビット数）に相当する記憶容量を有し、フレームバッファ５６の各記憶位置に対応するドットの奥行き情報または奥行きデータ（Ｚ値）を記憶する。
【００２５】
なお、フレームバッファ５６およびＺバッファ５８は、ともにメインメモリ４８の一部を用いて構成されてもよく、また、これらはＧＰＵ５０の内部に設けられてもよい。
【００２６】
メモリコントローラ４６はまた、ＤＳＰ(Digital Signal Processor)６０を介して、オーディオ用のＲＡＭ（以下、「ＡＲＡＭ」という。）６２に接続される。したがって、メモリコントローラ４６は、メインメモリ４８だけでなく、サブメモリとしてのＡＲＡＭ６２の書込みおよび／または読出しを制御する。
【００２７】
ＤＳＰ６０は、サウンドプロセサとして働き、メインメモリ４８に記憶されたサウンドデータを用いたり、ＡＲＡＭ６２に書き込まれている音波形（音色）データを用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【００２８】
メモリコントローラ４６は、バスを介してさらに各インタフェース（Ｉ／Ｆ）６４，６６，６８，７０および７２に接続される。コントローラＩ／Ｆ６４は、ゲーム装置１２にＢｌｕｅｔｏｏｔｈ通信ユニット７４を介して接続されるコントローラ１４のためのインタフェースである。具体的に言うと、Ｂｌｕｅｔｏｏｔｈ通信ユニット７４は、本体側通信装置であり、コントローラ１４側通信装置である無線モジュール７６（図５）から送信されるコントローラデータ（入力データ）を受信する。コントローラＩ／Ｆ６４は、Ｂｌｕｅｔｏｏｔｈ通信ユニット７４によって受信されたコントローラデータを、メモリコントローラ４６を通してＣＰＵ４４に与える。ビデオＩ／Ｆ６６は、フレームバッファ５６にアクセスし、ＧＰＵ５０によって生成された画像データを読み出して、画像信号または画像データ（ディジタルＲＧＢＡピクセル値）をＡＶケーブル２８（図１）を介してモニタ３０に与える。
【００２９】
外部メモリＩ／Ｆ６８は、ゲーム装置１２の前面から挿入される外部メモリカード２６をメモリコントローラ４６に連係させる。それによって、メモリコントローラ４６を介して、ＣＰＵ４４がこのメモリカード２６にデータを書き込み、またはメモリカード２６からデータを読み出すことができる。オーディオＩ／Ｆ７０は、メモリコントローラ４６を通してＤＳＰ６０から与えられるオーディオデータまたは光ディスク２２から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号（音声信号）をモニタ３０のスピーカ３２に与える。
【００３０】
ディスクＩ／Ｆ７２は、ディスクドライブ２４をメモリコントローラ４６に接続し、したがって、ＣＰＵ４４がディスクドライブ２４を制御する。このディスクドライブ２４によって光ディスク２２から読み出されたプログラムおよびデータが、ＣＰＵ４４の制御の下でメインメモリ４８に書き込まれる。ＣＰＵ４４は、このプログラムに従ってゲームまたはアプリケーションのための処理を実行する。
【００３１】
図３には第１コントローラ３４の外観の一例が示される。図３（Ａ）は、第１コントローラ３４を上面後方から見た斜視図であり、図３（Ｂ）は、第１コントローラ３４を下面前方から見た斜視図である。
【００３２】
第１コントローラ３４は、たとえばプラスチック成型によって形成されたハウジング７８を有している。ハウジング７８は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング７８は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、第１コントローラ３４を用いて、それに設けられたボタンを押下することと、第１コントローラ３４自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【００３３】
ハウジング７８には、複数の操作ボタンが設けられる。すなわち、ハウジング７８の上面には、十字キー８０ａ、Ｘボタン８０ｂ、Ｙボタン８０ｃ、Ａボタン８０ｄ、セレクトスイッチ８０ｅ、メニュースイッチ８０ｆ、およびスタートスイッチ８０ｇが設けられる。一方、ハウジング７８の下面には凹部が形成されており、当該凹部の後方側傾斜面にはＢボタン８０ｈが設けられる。これら各ボタン（スイッチ）８０ａ−８０ｈには、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。また、ハウジング７８の上面には、遠隔からゲーム装置１２本体の電源をオン／オフするための電源スイッチ８０ｉが設けられる。第１コントローラ３４に設けられる各ボタン（スイッチ）は、包括的に参照符号８０を用いて示されることもある。
【００３４】
また、ハウジング７８の後面には、上述のコネクタ４２が設けられている。コネクタ４２は、たとえば３２ピンのエッジコネクタであり、第１コントローラ３４に他の機器を接続するために利用される。この実施例では、コネクタ４２には第２コントローラ３６のコネクタ４０が接続される。また、ハウジング７８上面の後端側には複数のＬＥＤ８２が設けられ、この複数のＬＥＤ８２によって当該コントローラ１４のコントローラ番号（コントローラの識別番号）が示される。ゲーム装置１２には、たとえば最大４つのコントローラ１４が接続可能であり、ゲーム装置１２に複数のコントローラ１４が接続される場合には、各コントローラ１４には、たとえば接続順にコントローラ番号が付与される。各ＬＥＤ８２はコントローラ番号と対応付けられており、当該コントローラ番号に対応するＬＥＤ８２が点灯される。
【００３５】
また、第１コントローラ３４のハウジング７８内には加速度センサ８４（図５）が設けられている。加速度センサ８４としては、典型的には静電容量式の加速度センサが用いられ得る。加速度センサ８４は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。加速度センサ８４は、少なくとも２つの互いに直交する軸方向の加速度を検出する。たとえば、２軸または３軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度を、各軸に沿った直線成分の加速度としてそれぞれ検出する。具体的には、この実施例では、３軸加速度センサが適用され、第１コントローラ３４の上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向のそれぞれで加速度を検知する。この加速度センサ８４の各軸ごとに検出される加速度に所定の演算処理を施すことによって、第１コントローラ３４の傾きや回転を算出することが可能である。たとえば、加速度センサ８４が静止した状態においては、常に重力加速度が加わっており、この重力加速度に対する各軸の傾きに応じた加速度が各軸ごとに検出される。具体的には、加速度センサ８４が水平状態で静止している（すなわち、ＸおよびＺ軸方向が水平方向であり、かつ、Ｙ軸方向が鉛直方向である）ときには、加速度センサ８４のＹ軸に１Ｇの重力加速度が加わり、他の軸Ｘ，Ｚの重力加速度はほぼ０となる。次に、加速度センサ８４の姿勢が水平状態より傾くと、加速度センサ８４の各軸方向と重力方向との角度に応じて、重力加速度が加速度センサ８４の各軸に分散され、このとき、加速度センサ８４の各軸の加速度値が検出される。このような各軸ごとの加速度値に演算を加えることによって、重力方向に対する加速度センサ８４の姿勢を算出することができる。
【００３６】
なお、加速度センサ８４としては、ハウジング７８の形状または第１コントローラ３４の持たせ方の限定等に応じて、上下方向、左右方向および前後方向のうちいずれか２方向の加速度を検出する２軸加速度センサが用いられてもよい。
【００３７】
図４には第２コントローラ３６の外観の一例が示される。図４（Ａ）は、第２コントローラ３６を上面後方から見た斜視図であり、図４（Ｂ）は、第２コントローラ３６を下面前方から見た斜視図である。なお、図４では、第２コントローラ３６のケーブル３８は省略されている。
【００３８】
第２コントローラ３６は、たとえばプラスチック成型によって形成されたハウジング８６を有している。ハウジング８６は、平面視では、前後方向（図４のＺ軸方向）に略細長い楕円形状を有し、後端側の左右方向（図４のＸ軸方向）の幅が先端側のそれよりも狭くされている。また、ハウジング８６は、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している（図８も参照）。ハウジング８６は、第１コントローラ３４と同様に、全体として大人や子供の片手で把持可能な大きさであるが、長手方向（Ｚ軸方向）の長さは、第１コントローラ３４のハウジング７８よりもやや短くされている。この第２コントローラ３６でも、プレイヤは、ボタンやスティックを操作することと、コントローラ自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【００３９】
ハウジング８６の上面の先端側には、アナログジョイスティック８８ａが設けられる。ハウジング８６の先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向（図４に示すＹ軸方向）に並べて、Ｚボタン８８ｂおよびＣボタン８８ｃが設けられる。アナログジョイスティック８８ａおよび各ボタン８８ｂ，８８ｃには、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。第２コントローラ３６に設けられるアナログジョイスティック８８ａおよび各ボタン８８ｂ，８８ｃは、包括的に参照符号８８を用いて示されることもある。
【００４０】
また、第２コントローラ３６のハウジング８６内には加速度センサ９０（図５）が設けられている。この加速度センサ９０としては、第１コントローラ３４の加速度センサ８４と同様の加速度センサが適用される。具体的には、３軸加速度センサが適用され、第２コントローラ３６の上下方向（図４に示すＹ軸方向）、左右方向（図４に示すＸ軸方向）および前後方向（図４に示すＺ軸方向）の３軸方向のそれぞれで加速度を検知する。したがって、第１コントローラ３４の場合と同様に、検出された加速度に適宜な演算処理を施すことによって、第２コントローラ３６の傾きや回転、重力方向に対する加速度センサ９０の姿勢などを算出することができる。
【００４１】
なお、図３に示した第１コントローラ３４および図４に示した第２コントローラ３６の形状や、ボタン（スイッチまたはスティック等）の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置等に適宜変更され得る。
【００４２】
また、コントローラ１４の電源は、第１コントローラ３４内に取替可能に収容されるバッテリ（図示せず）によって与えられる。第２コントローラ３６には、コネクタ４２、コネクタ４０およびケーブル３８を介してこの電源が供給される。
【００４３】
図５には、第１コントローラ３４と第２コントローラ３６とが接続されたときのコントローラ１４の電気的構成の一例が示される。
【００４４】
第１コントローラ３４は、その内部に通信部９２を備え、通信部９２には、操作部８０、加速度センサ８４およびコネクタ４２が接続される。操作部８０は、上述の操作ボタンないし操作スイッチ８０ａ‐８０ｉを示す。操作部８０が操作されると、その操作信号が通信部９２に与えられる。
【００４５】
加速度センサ８４が検出した加速度を示すデータは、通信部９２へ出力される。加速度センサ８４は、たとえば最大２００フレーム／秒程度のサンプリング周期を有する。
【００４６】
コネクタ４２には、第２コントローラ３６から延びるケーブル３８のコネクタ４０が接続される。コネクタ４０には、第２コントローラ３６の操作部８８および加速度センサ９０が接続される。操作部８８は、上述のスティック８８ａおよび操作ボタン８８ｂ、８８ｃを示す。操作部８８が操作されると、その操作信号がケーブル３８、コネクタ４０およびコネクタ４２等を介して通信部９２に与えられる。また、加速度センサ９０も、加速度センサ８４と同様のサンプリング周期を有しており、検出された加速度を示すデータを通信部９２に与える。
【００４７】
通信部９２は、マイクロコンピュータ（マイコン）９４、メモリ９６、無線モジュール７６およびアンテナ９８を含む。マイコン９４は、処理の際にメモリ９６を記憶領域（作業領域やバッファ領域）として用いながら、無線モジュール７６を制御して、取得したデータをゲーム装置１２に送信したりゲーム装置１２からのデータを受信したりする。
【００４８】
操作部８０および加速度センサ８４ならびに操作部８８および加速度センサ９０からマイコン９４へ出力されたデータは、一時的にメモリ９６に格納される。通信部９２からゲーム装置１２のＢｌｕｅｔｏｏｔｈ通信ユニット７４への無線送信は所定の周期毎に行われる。なお、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、第１コントローラ３４からの送信はそれと同等かそれより短い周期で行うことが必要となる。マイコン９４は、ゲーム装置１２への送信タイミングが到来すると、メモリ９６に格納されている操作部８０および８８の操作データならびに加速度センサ８４および９０の加速度データを含むデータを、コントローラデータとして無線モジュール７６へ出力する。無線モジュール７６は、Ｂｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）のような近距離無線通信技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ９８から放射する。つまり、コントローラデータは、無線モジュール７６で微弱電波信号に変調されて第１コントローラ３４から送信される。微弱電波信号はゲーム装置１２側のＢｌｕｅｔｏｏｔｈ通信ユニット７４で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置１２はコントローラデータを取得することができる。ゲーム装置１２のＣＰＵ４４は、コントローラ１４から取得したコントローラデータに基づいてゲーム処理を行う。なお、第１コントローラ３４とゲーム装置１２との無線通信は、無線ＬＡＮなど他の規格に従って実行されてもよい。
【００４９】
このゲームシステム１０では、プレイヤがコントローラ１４を動かすことによってゲームに対する操作または入力を行うことができる。上述のように、第１コントローラ３４には少なくとも２軸方向の加速度を検出する加速度センサ８４が内蔵され、第２コントローラ３６にも同様の加速度センサ９０が内蔵されており、コントローラ１４がプレイヤによって動かされると、当該動作に応じた加速度が検出される。ゲーム装置１２では、当該検出された加速度に応じてゲーム処理が実行される。換言すれば、プレイヤは、コントローラ１４を適宜に動かすことによって、ゲーム装置１２に対して加速度を入力することができ、ゲーム装置１２では当該加速度入力に応じてゲーム処理が実行される。具体的には、ゲーム装置１２では、検出された加速度に基づいて、プレイヤの操作や入力動作が判定される。つまり、加速度入力の種類や方向が識別されて、当該加速度入力の種類や方向に対応付けられたゲーム処理が実行され、たとえば、当該加速度入力の種類や方向に対応付けられた動作をオブジェクトが行う画像が表示される。
【００５０】
この実施例では、ゲームシステム１０をボクシングゲームに適用した場合を説明する。プレイヤは、第１コントローラ３４を利き手に持ち、第２コントローラ３６を他の手に持って、左右の腕のいずれかでパンチを打つ動作を行うことによって、このボクシングゲームをプレイすることができる。具体的には、ゲーム装置１２では、プレイヤのパンチ動作に応じて検出される加速度データに基づいて、当該パンチ動作の種類、すなわち加速度入力の種類ないし方向が判定される。この実施例では、フックとストレートの２種類のパンチ動作が加速度に基づいて識別される。そして、当該識別された種類に対応付けられたゲーム処理が実行される。たとえば、プレイヤがどちらかの腕でフックを打つと、ゲーム画面上では、プレイヤキャラクタが同じ腕でフックを打つ動作を行う。あるいは、同じ側のグローブの動作が、当該グローブがフックの軌道で移動するように制御される。一方、当該プレイヤがどちらかの腕でストレートを打つと、ゲーム画面上では、プレイヤキャラクタが同じ腕でストレートを打つ動作を行う。あるいは、同じ側のグローブの動作が、当該グローブがストレートの軌道で移動するように制御される。
【００５１】
この実施例のボクシングゲームを実行する際のメモリマップの一例が図６に示される。メインメモリ４８はプログラム記憶領域１００およびデータ記憶領域１０２を含む。プログラムおよびデータの一部は、光ディスク２２から一度に全部または必要に応じて部分的にかつ順次的に読み出され、メインメモリ４８に記憶される。なお、図６にはメモリマップの一部のみが示されており、処理に必要な他のプログラムおよびデータも記憶されている。
【００５２】
記憶領域１０４には、持ち手設定プログラムが記憶されている。このプログラムによって、第１コントローラ３４を持つ手がいずれであるかを示す持ち手情報の設定が行われる。上述のように、第１コントローラ３４に内蔵される加速度センサ８４の３軸方向（図３）と、第２コントローラ３６に内蔵される加速度センサ９０の３軸方向（図４）とが予め決められているので、第１コントローラ３４および第２コントローラ３６をそれぞれどちらの手で持つかに応じて、プレイヤがフックを打ったときに検出される加速度の方向が逆転する。図７に、第１コントローラ３４の持ち手と加速度センサ８４に設定された軸方向との関係が示されている。この図７では、プレイヤ側から見た図が示されており、第１コントローラ３４は縦向き（Ｚ軸方向が鉛直方向）に把持されている。図７（Ａ）に示す右手持ちの場合と、図７（Ｂ）に示す左手持ちの場合とでは、フックパンチの曲げる方向が反対になる。つまり、加速度センサ８４のＸ軸方向に対するフック動作の方向が逆になるので、検出されるＸ加速度の方向も逆になる。したがって、コントローラ１４の持ち手の違いに応じて、検出される加速度の方向を補正するために、予め持ち手情報を取得しておく。この持ち手設定は、たとえば試合開始前のオプション設定画面で第１コントローラ３４を持つ手が右手か左手かを選択させることによって行われる。または、右利きか左利きかを選択させてもよい。コントローラ１４のうち第１コントローラ３４はメインコントローラ、第２コントローラ３６は拡張的なサブコントローラの位置付けであり、第１コントローラ３４が利き手で把持されることが前提であるから、利き手によって持ち手情報を取得できる。
【００５３】
図６に戻って、記憶領域１０６には加速度取得プログラムが記憶される。このプログラムによって、コントローラ１４から受信したコントローラデータから加速度データが定期的（１フレームごと）に取得される。上述のように、コントローラデータには、第１コントローラ３４の加速度センサ８４の加速度データおよび第２コントローラ３６の加速度センサ９０の加速度データが含まれている。また、この実施例で使用される加速度センサ８４および９０は、上述のように、重力加速度を常に検出するので、各軸の加速度には、第１コントローラ３４または第２コントローラ３６の姿勢（持ち方）に応じた重力加速度成分が含まれている。したがって、たとえば試合開始前にプレイヤがパンチを打たずに構えている状態で加速度を検出し、当該検出された加速度データから、各軸の重力加速度成分を取得して予め記憶しておく。そして、試合開始後に検出される各軸の加速度から当該重力加速度成分を減算することによって、プレイヤの動作によって生じた加速度を取得する。なお、上述のように、コントローラ１４では、ゲーム装置１２の１フレームよりも短いサンプリング周期で加速度が検出されており、ゲーム装置１２では、１フレームに複数個の加速度を取得することができるので、たとえば平均値、最大値または最小値等を取ることによって、当該フレームを代表する加速度を取得するようにしてよい。
【００５４】
記憶領域１０８には、パンチ開始判定プログラムが記憶される。このプログラムによって、プレイヤが加速度入力（パンチ動作）を開始したか否かを判定するための第１条件が満足されたか否かが加速度取得プログラムによって取得された加速度に基づいて判定される。プレイヤによってコントローラ１４を用いて入力が開始されると、或る一定以上の加速度値が検出される。したがって、第１条件として、各軸方向の加速度の合成ベクトル（各軸加速度を成分とするベクトル）の大きさが所定の閾値以上になったことを適用する。この第１条件によって、加速度の入力の開始を適切に判定することができる。この実施例では、３軸加速度センサが使用されるので、３軸方向の加速度の合成ベクトルの大きさが算出され、当該合成ベクトルの大きさが所定の閾値以上になったか否かが判定される。
【００５５】
また、第１コントローラ３４の加速度の合成ベクトルの大きさと、第２コントローラ３６の加速度の合成ベクトルの大きさとが算出されるので、どちらのコントローラ１４でパンチ動作が行われたかを認識することができる。この動作されたコントローラ１４の情報と持ち手情報とに基づいて、プレイヤのどちらの手でパンチ動作が行われたかを認識することができる。したがって、たとえば、ゲーム空間内でプレイヤの動かした手と同じ手を用いた動作を実行することができる。この実施例では、グローブオブジェクト２０４の移動あるいはプレイヤキャラクタ２００のパンチ動作（図１６等参照）が制御されるので、プレイヤがパンチを打った手に対応するグローブオブジェクト２０４が選択され、当該選択されたグローブオブジェクト２０４の識別情報が、動作させるグローブオブジェクトとして記憶される。
【００５６】
記憶領域１１０には経過時間判定プログラムが記憶される。このプログラムによって、パンチが開始されてからの経過時間が所定の閾値より小さいか否かが判定される。この実施例では、プレイヤによるパンチ動作が開始されたとき、まだ当該パンチ動作の種類を判別できないが、ストレートに対応する動作が開始されるようにしている。そして、その後に検出される加速度に基づいてプレイヤによるパンチ動作の種類を判定する。種類がフックと判定されたときには、ストレートに対応する動作からフックに対応する動作に変更される。このため、ストレートの動作が或る程度進行してからその続きがフックの動作へと変更されると、ゲーム画面上でパンチ動作が不自然に見え、プレイヤに違和感を与えるおそれがある。したがって、この経過時間判定によって、プレイヤによるパンチ動作の開始から所定時間が経過した後には、当該パンチ動作の種類の判定をやめてフックへの変更が行われないようにする。なお、プレイヤのパンチ動作の種類を早期に（動作変更を不自然に見せない程度の時間で）判別可能な場合や、多少の不自然さよりもパンチ動作の種類の正確性に重きを置く場合等には、この経過時間判定は行われなくてよい。
【００５７】
記憶領域１１２には、軸補正プログラムが記憶される。このプログラムによって、加速度の軸方向の調整が行われ、取得された加速度値が補正される。パンチ動作の種類の判定は、この補正後の加速度に基づいて行われることとなる。この軸補正によって、持ち手やコントローラ１４の種別に関係なく同じ判定処理を用いることができ、プレイヤによるパンチ動作を効率よく判定できるようにしている。
【００５８】
上述のように、第１コントローラ３４および第２コントローラ３６の持ち手に応じて、フックを打つときのＸ軸加速度の方向が逆になる（図７）。そこで、この軸補正によって持ち手に応じてＸ軸加速度の符号を逆にする。この実施例では、図７（Ａ）に示すように第１コントローラ３４が右手で把持される場合のＸ軸方向が基準として採用される。したがって、第１コントローラ３４の持ち手が右手である場合には、第２コントローラ３６の軸補正が必要である。この軸補正では、第２コントローラ３６の加速度のＸ軸ベクトルを反転し、つまり、第２コントローラ３６のＸ軸加速度の符号を逆にする。一方、図７（Ｂ）に示すように第１コントローラ３４が左手で把持される場合には、第１コントローラ３４の軸補正が必要であり、第１コントローラ３４のＸ軸加速度の符号を逆にする。なお、この場合、第２コントローラ３６は右手で把持されるので、加速度センサ９０のＸ軸方向は、基準となる第１コントローラ３４が右手で把持される場合の加速度センサ８４のＸ軸方向と同じであり、Ｘ軸方向の補正は必要ない。
【００５９】
また、上述のように、第２コントローラ３６を側面から見ると、そのハウジング８６はＹＺ平面内で湾曲した形状を有している。図８の上段左図から分かるように、第２コントローラ３６では、アナログジョイスティック８８ａの設けられる先端部が水平にされたときに加速度センサ９０のＺ軸方向が水平方向にかつＹ軸方向が鉛直方向になるように、加速度センサ９０の軸が設定されている。第２コントローラ３６が縦向きに把持されるときには、図８の上段右図に示すように、その湾曲形状のハウジング８６の後端側が掌の中で把持され、加速度センサ９０のＹ軸方向およびＺ軸方向がそれぞれ鉛直方向および水平方向から傾く。この第２コントローラ３６が縦向きに把持されたときのＹ軸方向およびＺ軸方向は、第１コントローラ３４が縦向きに把持されるときのＹ軸方向およびＺ軸方向（図１１参照）とは異なる。したがって、軸補正では、第２コントローラ３６のＹ軸およびＺ軸の加速度を補正する。具体的には、上述のように、パンチ動作が行われる前に検出される重力加速度によって、把持されたときの第２コントローラ３６の姿勢が把握される。したがって、この姿勢に基づいて、Ｙ軸加速度およびＺ軸加速度のそれぞれを水平方向（図８の下段のＹ軸方向）と鉛直方向（図８の下段のＺ軸方向）の成分に分解するための変換係数を算出する。そして、検出されるＹ軸加速度およびＺ軸加速度と変換係数とに基づいて、補正されたＹ軸加速度およびＺ軸加速度を取得する。
【００６０】
記憶領域１１４には、ＹＺ判定プログラムが記憶されている。このプログラムによって、Ｙ軸加速度およびＺ軸加速度に基づいてパンチ動作がフックであるか否かが判定される。具体的には、このＹＺ判定では、コントローラ１４が横向きに把持されてフックが打たれたか否かを判定することができる。図９には、プレイヤの右手で横向きに把持された第１コントローラ３４が示されている。なお、第１コントローラ３４では、図７から分かるように、把持されたときに、親指が届く位置に十字キー８０ａおよびＡボタン８０ｄが設けられ、人差し指が届く位置にＢボタン８０ｈが設けられている。したがって、プレイヤがパンチ動作のために第１コントローラ３４を横向きで右手で把持すると、図９に示すように、ハウジング７８の先端側がプレイヤの左向きになり、かつ、十字キー８０ａの設けられた面がプレイヤ側を向く。そのため、この実施例の加速度センサ８４の軸設定では、図９（Ｂ）から分かるように、ＹＺ平面内において、Ｚ軸正方向およびＹ軸負方向にフックパンチが打たれることとなる。
【００６１】
図９の状態からフックが打たれると、Ｚ軸正方向にある程度の加速度が生じる。したがって、このＹＺ判定では、まず、Ｚ軸加速度が所定の閾値以上であるか否かが判定される。
【００６２】
さらに、横向き把持状態でのフック動作は、ＹＺ平面内における動作であり、Ｙ軸加速度およびＺ軸加速度の挙動に次のような特徴がある。すなわち、Ｚ軸加速度について、パンチの打ち始めでは正方向に加速度が生じ、その後徐々に速度が弱まるにつれて加速度は負方向へ反転し、最後には０になる。また、Ｙ軸加速度については、パンチの打ち始めでは負方向に遠心力が生じ、その後徐々に遠心力が弱まるにつれて加速度は正方向に反転し、最後には０になる。このように変化するＹ軸加速度およびＺ軸加速度を示す点を、Ｙ軸加速度およびＺ軸加速度を成分とするＹＺ座標系に対してプロットすると、図１０に示すように、加速度を示す点は右回りに遷移するという特徴が見られる。なお、図１０では、右回り遷移を分り易く示すために、加速度の変化が模式的に示されている。したがって、Ｙ軸加速度およびＺ軸加速度を示す点が右回りに遷移したことを、フックの判定条件として採用することができる。したがって、このＹＺ判定では、上述のＺ軸加速度の閾値判定に加えて、Ｙ軸加速度およびＺ軸加速度の変化が右回りの遷移を示すか否かを判定する。
【００６３】
なお、図９では右手で横向きの第１コントローラ３４が把持された場合を示して、ＹＺ判定条件を説明した。しかし、左手で横向きの第１コントローラ３４が把持される場合のフック動作についても、フック動作の方向とＹ軸Ｚ軸の方向の関係が図９に示す右手の場合と同じであるので、同一の判定条件を使用することができる。また、同様に、第２コントローラ３６が横向きに把持された場合のフック動作についても、同一の判別条件を使用することができる。
【００６４】
また、他の実施例で加速度センサ８４の軸方向の設定が変更される場合には、Ｚ軸加速度の判定のための閾値の符号や当該閾値に対する大小関係、およびＹ軸加速度とＺ軸加速度とを成分とする点の遷移の方向等の条件は、軸設定に応じて適宜に変更される。
【００６５】
図６に戻って、記憶領域１１６には、ＸＹ判定プログラムが記憶される。このプログラムによって、Ｘ軸加速度およびＹ軸加速度に基づいてパンチ動作がフックであるか否かが判定される。具体的には、このＸＹ判定では、コントローラ１４が縦向きに把持されてフックが打たれたか否かを判定することができる。図１１には、プレイヤの右手で縦向きに把持された第１コントローラ３４が示されている。プレイヤがパンチ動作のために第１コントローラ３４を縦向きに右手で把持すると、上述のように、十字キー８０ａ、Ａボタン８０ｄおよびＢボタン８０ｈ等とこれらを操作する指との位置関係から、図１１に示すように、ハウジング７８の先端側が上向きになり、かつ、十字キー８０ａの設けられた面がプレイヤ側を向く。そのため、この実施例の加速度センサ８４の軸設定では、図１１（Ｂ）から分かるように、ＸＹ平面内において、Ｚ軸負方向およびＹ軸負方向にフックパンチが打たれることとなる。
【００６６】
図１１の状態からフックが打たれると、Ｘ軸加速度については、初め負方向に加速度が生じる。具体的には、図１２に、このＸ軸加速度の時間変化が模式的に示される。Ｘ軸加速度は、フック動作の比較的初期の段階で最小値をつける。
【００６７】
一方、図１１の状態からストレートが打たれる場合には、コントローラ３４はほぼＹ軸の１方向のみに移動するので、つまり、ストレートはＹ軸方向への直線的な加速度入力であるから、Ｘ軸加速度はほとんど生じない。したがって、Ｘ軸加速度に注目すると、図１２に示すように、基本的には、Ｘ軸加速度がある程度の大きさの負の値をつけたか否かに応じて、つまり、Ｘ軸加速度が所定の閾値以下になったか否かに応じて、フックとストレートを判別することができる。
【００６８】
しかしながら、第１コントローラ３４が把持されるときには、図１３に示すように、手の中でＺ軸周りに回転した状態になることがある。このようなＺ軸周り回転状態の持ち方でストレートが打たれると、フックが打たれた場合と同様に、Ｘ軸方向とＹ軸方向の２軸方向の加速度が検出される。しかも、当該Ｘ軸加速度が図１２に示す判別条件としての閾値以下になることがある。したがって、図１２のＸ軸加速度が閾値以下になったことのみを条件とした場合には、判別の精度がよくない。
【００６９】
そこで、この実施例では、さらにＸ軸加速度およびＹ軸加速度の変化の特性に基づいた判定を行って、Ｚ軸周り回転状態で打たれたストレートを除外する。
【００７０】
図１４には、縦向きで把持されてパンチが打たれた場合のＸ軸加速度およびＹ軸加速度の変化の特性が模式的に示される。つまり、Ｘ軸加速度およびＹ軸加速度を示す点を、Ｘ軸加速度およびＹ軸加速度を成分とするＸＹ座標系に対してプロットした図である。図１４（Ａ）にはフックの場合が示され、図１４（Ｂ）にはＺ軸周り回転状態のストレートの場合が示される。図１４から分かるように、どちらの場合にも、Ｘ軸加速度が図１２に示したフックとストレートを判別する閾値以下になっており、上述のように、この閾値判定だけではパンチ種類を正確に識別することができない。
【００７１】
しかし、発明者等は、Ｘ軸加速度の最小値の検出されるタイミングの前後におけるＸ軸加速度およびＹ軸加速度の変化に基づいて、フックとストレートとを正確かつ迅速に識別可能であることを見出した。具体的には、フックの場合、図１４（Ａ）から分かるように、Ｘ軸加速度およびＹ軸加速度を成分とする点の軌跡が略円形を示すのに対し、ストレートの場合には、図１４（Ｂ）から分かるように、当該軌跡が細長く傾斜した略楕円形を示す。フックはＸＹ平面内における曲線的もしくは屈曲的な移動であり、曲線的もしくは屈曲的な加速度入力であって、遠心力が生じる。一方、ストレートは、ＸＹ平面内における直線的な移動であり、直線的な加速度入力であって、遠心力が生じない。遠心力の有無によって軌跡形状に違いが現れるものと考えられ、これによって両者を区別することができる。
【００７２】
特に、Ｘ軸加速度の最小値の検出されるタイミング前後に注目すると、フックの場合、軌跡はなだらかに反転しているのに対し、ストレートの場合、軌跡は比較的鋭く反転している。より詳細には、最小値の検出されるタイミングの前後の加速度の変化ベクトルＶ１およびＶ２の間の角度θには、フックとストレートによって差異が生じ、フックの場合の角度は、ストレートの場合の角度よりも大きくなる。したがって、加速度変化ベクトルＶ１およびＶ２間の角度θが所定の閾値以上であるか否かを判定することによって、フックとストレートとを識別することができる。
【００７３】
また、図１２に示したように、Ｘ軸加速度の最小値はパンチ動作の比較的速い段階で検出されることから、この最小値となるタイミングの前後の加速度を使用した判定によって、フックとストレートとを素早く識別することができる。
【００７４】
このＸＹ判定の具体的な手順としては、まず、取得されたＸ軸加速度が最小値になったか否かを判定し、当該最小値になったタイミング（フレーム）を検出する。ここでは、このＸ軸加速度が最小値となるときのＸ軸加速度およびＹ軸加速度が、加速度変化ベクトルＶ１およびＶ２を算出するときの基準となることから、Ｘ軸加速度が最小値となるタイミングを、便宜上、基準タイミングと呼ぶものとする。Ｘ軸加速度は図１２に示すように変化するので、Ｘ軸加速度を取得する度に、つまり、１フレームごとに、今回の値が前回の値よりも大きいか否かを判定することによって、最小値判定を行うことができる。取得されるＸ軸加速度が前回の値を初めて上回ったと判定されるとき、前回のフレームのＸ軸加速度が最小値であり、前回のフレームが基準タイミングである。
【００７５】
Ｘ軸加速度の最小値が検出されると、次に、当該最小値が図１２に示す閾値以下であるか否かを判定する。上述のように、第１コントローラ３４がＺ軸周りに回転されていない持ち方でストレートが打たれた場合には、Ｘ軸加速度の最小値が閾値を下回ることがないので、この判定によって当該ストレートの場合を除外できる。
【００７６】
Ｘ軸加速度の最小値が閾値以下である場合には、基準タイミング前後の加速度変化ベクトルＶ１およびＶ２を算出する。具体的には、基準タイミングとその次のタイミング（フレーム）の加速度に基づいて、加速度変化ベクトルＶ１を算出する。このＶ１を第１ベクトルとも言う。図１４（Ａ）に示すように、第１ベクトルＶ１は、基準タイミング（前回のフレーム）のＸ軸加速度およびＹ軸加速度を成分とする点Ｐｒから、その次のタイミング（今回のフレーム）のＸ軸加速度およびＹ軸加速度を成分とする点Ｐａまでのベクトルである。また、基準タイミングとその前のタイミングの加速度に基づいて、加速度変化ベクトルＶ２を算出する。このＶ２を第２ベクトルとも言う。図１４（Ｂ）に示すように、第２ベクトルＶ２は、基準タイミング（前回のフレーム）のＸ軸加速度およびＹ軸加速度を成分とする点Ｐｒから、その前のタイミング（前々回のフレーム）のＸ軸加速度およびＹ軸加速度を成分とする点Ｐｂまでのベクトルである。
【００７７】
そして、第１ベクトルＶ１と第２ベクトルＶ２とのなす角度θを算出し、当該角度θが所定の閾値（角度）以上であるか否かを判定する。角度θが閾値以上である場合には、プレイヤによるパンチ動作はフックであると判定される。
【００７８】
このようにして、基準タイミング前後の加速度変化ベクトルＶ１およびＶ２間の角度θに基づいて、加速度入力の種類が２軸方向（この実施例ではＸおよびＹ）のいずれか一方向（この実施例ではＹ）への直線的な加速度入力であるか、または、２軸方向の成分を含む方向への加速度入力であるかを識別することができる。したがって、第１コントローラ３４の持ち方によらず、加速度入力の種類を正確に識別することができる。
【００７９】
なお、図１１および図１３では縦向きの第１コントローラ３４が右手で把持された場合を示して、このＸＹ判定条件を説明した。しかし、縦向きの第１コントローラ３４が左手で把持された場合のフック動作については、上述の軸補正プログラムによってＸ軸方向が反転されるので、同一の判定条件を使用できる。また、第２コントローラ３６が縦向きに左手で把持された場合のフック動作についても、上述の軸補正プログラムによってＸ軸方向が反転され、かつ、Ｙ軸方向およびＺ軸方向が補正されるので、同一の判定条件を使用できる。また、第２コントローラ３６が縦向きに右手で把持された場合のフック動作についても、上述の軸補正プログラムによってＹ軸方向およびＺ軸方向が補正されるので、同一の判定条件を使用できる。
【００８０】
また、他の実施例で加速度センサ８４の軸方向の設定が変更される場合には、Ｘ軸加速度の判定のための閾値の符号や当該閾値に対する大小関係等の条件は、当該軸設定に応じて適宜に変更される。たとえば、Ｘ軸方向の正負が図３と逆に設定される場合には、図１２および図１４の閾値の符号は正であり、Ｘ軸加速度の最大値が検出されて、当該最大値が閾値以上であるか否かが判定される。また、Ｘ軸加速度が閾値を上回って最大値をつけたタイミングが基準タイミングとして検出される。
【００８１】
なお、ＹＺ判定およびＸＹ判定は、上述の第１条件（加速度の入力の開始を判定するための条件）が満たされたことが判定された後に、加速度に基づいて判定される第２条件の判定に相当する。第２条件は第１条件と異なる条件である。ＹＺ判定では、第２条件は、上述のＹ軸加速度およびＺ軸加速度の特性に基づいて設定された条件（Ｚ軸加速度が所定の閾値以上であること、Ｙ軸加速度およびＺ軸加速度を示す点が右回りに遷移したこと等）を含む。ＸＹ判定では、第２条件は、上述のＸ軸加速度およびＹ軸加速度の特性に基づいて設定された条件（Ｘ軸加速度の最小値が閾値以下であること、基準タイミング前後の加速度変化ベクトル間の角度が閾値以上であること等）を含む。
【００８２】
図６に戻って、記憶領域１１８には描画プログラムが記憶される。このプログラムによって、プレイヤによる加速度入力の種類に対応付けられたゲーム処理が実行されて、ゲーム画像が描画され、当該ゲーム画像がモニタ３０に表示される。ゲーム処理では、加速度入力の種類に対応付けられた動作をオブジェクトが行う画像が描画される。
【００８３】
具体的には、試合開始時には、図１５に示すように、仮想ゲーム空間内のリング上のプレイヤキャラクタ２００と敵キャラクタ２０２を含むゲーム画像が描画されて、モニタ３０に表示される。なお、この実施例では、プレイヤキャラクタ２００と敵キャラクタ２０２と重なった場合でも、プレイヤが敵キャラクタ２０２を見ることができるように、プレイヤキャラクタ２００の体は半透明で描画される（図では２点鎖線表示）。ただし、プレイヤキャラクタ２００の右のグローブオブジェクト２０４ａと左のグローブオブジェクト２０４ｂとは、プレイヤキャラクタ２００のパンチの動きやヒットを見易くするために不透明で描画される（図では実線表示）。なお、左右のグローブオブジェクト２０４ａおよび２０４ｂを包括的にグローブオブジェクト２０４と表現することもある。
【００８４】
パンチ開始判定プログラムによって加速度入力が開始されたと判定されるときには、まだ当該入力の種類を判別できないが、当該入力の種類のうち第１種類としてのストレートに対応付けられた第１のゲーム処理として、第１の描画処理の実行を開始する。つまり、加速度入力はストレートであると仮定して、当該ストレートに対応付けられたゲーム処理を開始する。言い換えれば、予め決められた第１の動作パターン（この実施例では、ストレート軌道上の移動）に従って動作するオブジェクトの描画を開始する。これによって、オブジェクトが第１種類に対応付けられた動作を行う画像が表示される。この実施例の第１の描画処理では、グローブオブジェクト２０４の移動がストレートパンチの軌跡を描くように制御される。具体的には、ストレートの軌道上を移動するグローブオブジェクト２０４の位置が算出され、当該位置にグローブオブジェクト２０４が描画される。一例として、プレイヤの右手に把持されたコントローラ１４で入力が開始された場合には、図１６に示すように、右のグローブオブジェクト２０４ａが直線的に移動するゲーム画像が描画される。
【００８５】
その後、ＹＺ判定プログラムおよびＸＹ判定プログラムに従って、加速度入力の種類の判定が行われつつ、ストレートに対応付けられた第１の描画処理が続けられる。ただし、加速度入力の種類の判定は、入力開始から所定時間が経過していない場合に行われる。所定時間が経過したと判定されたにもかかわらず、加速度入力の種類が第２種類としてのフックであると判定されなかったときには、第１の描画処理が最後まで実行される。したがって、図１６のゲーム画像の続きとして、図１７に示すように、右のグローブオブジェクト２０４ａが最後までストレートの軌道で移動するゲーム画像が描画される。つまり、プレイヤキャラクタ２００が右ストレートを打ち終わるまでのゲーム画像が描画されてモニタ３０に表示される。
【００８６】
一方、加速度入力の種類が第２種類としてのフックであると判定されたときには、第１の描画処理に代えて、フックに対応付けられた第２のゲーム処理として、第２の描画処理を実行する。つまり、第１の動作パターンに代えて、第１の動作パターンとは異なる第２の動作パターン（この実施例では、フック軌道上の移動）にしたがって動作するオブジェクトの描画が行われる。これによって、オブジェクトが第２種類に対応付けられた動作を行う画像が表示される。具体的には、第２の描画処理では、グローブオブジェクト２０４の移動がフックパンチの軌跡を描くように制御される。つまり、現在の位置を起点としてフックの軌道上を移動するグローブオブジェクト２０４の位置が算出され、当該位置にグローブオブジェクト２０４が描画される。したがって、図１６のゲーム画像の続きとして、図１８に示すように、右のグローブオブジェクト２０４ａがフックの軌跡を描いて移動するゲーム画像が描画される。つまり、プレイヤキャラクタ２００が右フックを打ち終わるまでのゲーム画像が描画されてモニタ３０に表示される。
【００８７】
このように、プレイヤによる加速度入力が開始されたと判定されたときに、加速度入力の種類に対応付けられたゲーム処理のうち、第１種類に対応付けられた第１のゲーム処理を開始するようにしたので、プレイヤによる加速度入力の最初からパンチを打つ画像を描画して、当該画像をモニタ３０に表示することができ、したがって、加速度入力に対する応答性が良い。また、その後に取得される加速度に基づいて、加速度入力が第２種類であったと判定されたときには、第１のゲーム処理に代えて、第２種類に対応付けられた第２のゲーム処理を実行するようにしたので、プレイヤの加速度入力の種類に従った画像を表示することができる。さらに、加速度入力の種類の判定を当該入力の開始から所定時間に限り行うようにしているので、不自然な動作変更を防止することができる。
【００８８】
図６に戻って、データ記憶領域１０２の記憶領域１２０には、ゲーム画像を生成するための画像データが記憶される。画像データは、プレイヤキャラクタ２００、グローブオブジェクト２０４および敵キャラクタ２０２等の画像データを含む。
【００８９】
記憶領域１２２には持ち手情報が記憶される。持ち手情報は、上述のように、第１コントローラ３４を持つ手（左手または右手）を示し、持ち手設定プログラムによって設定されて、この記憶領域１２２に記憶される。
【００９０】
記憶領域１２４には、上述の加速度取得プログラムによって取得された加速度情報が記憶される。具体的には、加速度情報は、第１コントローラ３４の加速度センサ８４のＸ，ＹおよびＺ軸方向の加速度値、および第２コントローラ３６の加速度センサ９０のＸ，ＹおよびＺ軸方向の加速度値を含む。
【００９１】
記憶領域１２６には加速度履歴が記憶される。各加速度情報は、取得されたときのフレーム番号に対応付けて記憶される。また、加速度値は、上述の軸補正プログラムによって必要に応じて補正された値である。上述のＹＺ判定プログラムおよびＸＹ判定プログラムによって加速度入力の種類が判定される際には、この加速度履歴が参照される。
【００９２】
記憶領域１２８には、加速度入力の開始からの経過時間をカウントするためのタイマが記憶される。タイマは、上述のパンチ開始判定プログラムによって加速度入力が開始されたことが判定されたときにリセットされ、１フレームごとカウントされる。
【００９３】
記憶領域１３０には、加速度入力の種類を示すフックフラグが記憶される。フックフラグは、加速度入力の開始時にはオフにされ、その後加速度入力の種類がフックであると判定されたときにオンにされる。
【００９４】
記憶領域１３２には、動作させるグローブオブジェクトを示す情報が記憶される。上述のパンチ開始判定プログラムによって、加速度入力の行われたコントローラ１４と記憶領域１２２の持ち手情報に基づいて、入力が行われているプレイヤの手が識別され、当該手に対応するグローブオブジェクト２０４ａまたは２０４ｂを示す情報が記憶される。上述の描画プログラムでは、この記憶領域１３２に記憶されたグローブオブジェクト２０４の動作が制御されて、そのゲーム画像が表示される。
【００９５】
記憶領域１３４には、動作パターンを示す情報が記憶される。この実施例では、グローブオブジェクト２０４をフック軌道で移動させるための動作パターンデータ、およびグローブオブジェクト２０４をストレート軌道で移動させるための動作パターンデータ等が記憶される。上述の描画プログラムでは、この記憶領域１３４に記憶されたフックまたはストレートの動作パターンデータに基づいて、グローブオブジェクト２０４のフック動作またはストレート動作が制御される。
【００９６】
図１９にはゲーム装置１２の動作の一例が示される。まず、ステップＳ１で、ＣＰＵ４４は、第１コントローラ３４を持つ手を右手および左手から選択する。上述の持ち手設定プログラムによって、オプション設定画面がモニタ３０に表示され、コントローラ１４の操作によって持ち手の設定が行われる。設定された持ち手を示す情報は記憶領域１２２に記憶される。
【００９７】
次に、ステップＳ３で、ＣＰＵ４４は、上述の加速度取得プログラムに従って、受信したコントローラデータから加速度を取得して記憶領域１２４に記憶する。続いて、ステップＳ５で、ＣＰＵ４４は、３軸方向の合成ベクトルの大きさを算出する。上述のパンチ開始判定プログラムに従って、第１コントローラ３４および第２コントローラ３６のそれぞれについて、ＸＹＺ軸方向の加速度を成分とする３次元ベクトルの大きさを算出する。そして、ステップＳ７で、ＣＰＵ４４は、３軸合成ベクトルの大きさが所定の閾値以上であるか否かを判定する。つまり、加速度入力が開始されたか否かが判定される。なお、閾値以上の大きさになった合成ベクトルが第１コントローラ３４かまたは第２コントローラ３６のどちらの加速度によって算出されたかが分かるので、この判定で、加速度入力の開始されたコントローラ１４を識別できる。ステップＳ７で“ＮＯ”の場合、処理はステップＳ２９に進む。
【００９８】
一方、ステップＳ７で“ＹＥＳ”の場合、つまり、加速度入力が開始されたときには、ＣＰＵ４４は、ステップＳ９で初期処理を実行する。この初期処理の動作は図２０に示される。
【００９９】
図２０の初期処理を開始すると、ＣＰＵ４４は、ステップＳ４１でタイマをリセットし、記憶領域１２８に０を記憶する。また、ステップＳ４３で、ＣＰＵ４４は記憶領域１３０のフックフラグをオフにする。このように、この実施例では、加速度入力の開始時には当該入力がストレートであると仮定して、ストレートに対応付けられた描画処理が開始されるようにしている。さらに、ステップＳ４５で、ＣＰＵ４４は、加速度入力の開始されたコントローラ１４と持ち手情報とに基づいて、加速度入力の行われた手に対応するグローブオブジェクト２０４を特定し、動作させるグローブオブジェクトとして、当該グローブオブジェクト２０４を示す情報を記憶領域１３２に記憶する。初期処理を終了すると、処理は図１９のステップＳ１１へ戻る。
【０１００】
図１９のステップＳ１１では、ＣＰＵ４４はフックフラグがオフであるか否かを判断する。つまり、加速度入力がフックであるとは未だ判定されていないか否かを判断する。ステップＳ１１で“ＹＥＳ”であれば、ＣＰＵ４４は、ステップＳ１３で、記憶領域１２８のタイマ値は所定値よりも小さいか否かを判定する。ここでは、経過時間判定プログラムに従って、加速度入力の開始からの経過時間（経過フレーム数）が所定時間（所定フレーム数）未満であるか否かを判定している。つまり、ストレートに対応付けられた描画の実行を、フックに対応付けられた描画にまだ変更可能であるか否かを判定している。
【０１０１】
ステップＳ１３で“ＹＥＳ”の場合、つまり、経過時間がストレートからフックへの描画の変更が可能な時間である場合には、続くステップＳ１５からステップＳ２１の処理で、加速度入力の種類の判定を行う。すなわち、ステップＳ１５で、ＣＰＵ４４は、加速度取得プログラムに従って、受信したコントローラデータから加速度情報を取得し、記憶領域１２４に記憶する。なお、加速度入力の行われたコントローラ１４の加速度のみを取得するようにしてよい。
【０１０２】
続いて、ステップＳ１７で、ＣＰＵ４４は、軸補正プログラムに従って、軸補正処理を実行する。軸補正処理の動作は図２１に示される。
【０１０３】
図２１の軸補正処理を開始すると、ＣＰＵ４４は、ステップＳ５１で、第１コントローラ３４を持つ手が左手であるか否かを、記憶領域１２２の持ち手情報に基づいて判定する。ステップＳ５１で“ＹＥＳ”の場合、つまり、第１コントローラ３４が基準と逆の手で把持されている場合には、ＣＰＵ４４は、ステップＳ５３で、第１コントローラ３４の加速度のＸ軸ベクトルを反転する。つまり、第１コントローラ３４のＸ軸加速度の符号を逆にして、当該加速度を記憶領域１２４に記憶する。
【０１０４】
一方、ステップＳ５１で“ＮＯ”の場合、つまり、第１コントローラ３４が基準と同じ手で把持されている場合には、ＣＰＵ４４は、ステップＳ５５で、第２コントローラ３６の加速度のＸ軸ベクトルを反転する。つまり、第２コントローラ３６のＸ軸加速度の符号を逆にして、当該加速度を記憶領域１２４に記憶する。
【０１０５】
続いて、ステップＳ５７で、ＣＰＵ４４は、第２コントローラ３６のＹ軸およびＺ軸の傾きを補正する。つまり、図８に示したように、第２コントローラ３６のＹ軸加速度およびＺ軸加速度を、第２コントローラ３６が把持されたときの方向によって補正し、当該補正された加速度を記憶領域１２４に記憶する。なお、第２コントローラ３６が把持されたときの方向は、たとえば、持ち手設定時やプレイヤによる加速度入力の開始前等に予め取得しておく。軸補正処理を終了すると、処理は図１９のステップＳ１９に戻る。なお、軸補正は、加速度入力の行われたコントローラ１４の加速度のみに対して行われるようにしてよい。
【０１０６】
図１９のステップＳ１９では、ＣＰＵ４４は、ＹＺ判定プログラムに従ってＹＺ判定処理を実行する。上述のように、ＹＺ判定では、コントローラ１４が横向きに把持されてフックが打たれたか否かが判定される。ＹＺ判定処理の動作は図２２に示される。また、ＹＺ判定では、ステップＳ７で加速度入力が開始されたことが判定されたコントローラ１４の加速度値が使用される。
【０１０７】
図２２のＹＺ判定処理を開始すると、ＣＰＵ４４は、ステップＳ７１でＺ軸加速度が所定の閾値以上であるか否かを判定する。上述の図９に示したように、コントローラ１４が横向きに把持されてフック動作が行われたときには、Ｚ軸方向にある程度の加速度が生じる。したがって、ステップＳ７１で“ＮＯ”の場合には、加速度入力がフックではないと判断することができ、そのままＹＺ判定処理を終了する。
【０１０８】
一方、ステップＳ７１で“ＹＥＳ”の場合には、ＣＰＵ４４は、ステップＳ７３で、図１０に示したようにＹＺ加速度が右回りに遷移しているか否かを判定する。つまり、Ｙ軸加速度およびＺ軸加速度を成分とする点がＹＺ平面内で右回りに遷移するように、Ｙ軸加速度およびＺ軸加速度が変化しているか否かを判定する。ステップＳ７３で“ＮＯ”の場合には、加速度入力がフックであるとは判定できないので、処理はステップＳ７７に進む。一方、ステップＳ７３で“ＹＥＳ”の場合には、加速度入力がフックであると判定できるので、ＣＰＵ４４は、ステップＳ７５で記憶領域１３０のフックフラグをオンにする。
【０１０９】
続いて、ステップＳ７７では、ＣＰＵ４４は、次フレーム以降のステップＳ７３の判定のために、Ｙ軸加速度およびＺ軸加速度を記憶領域１２６に追加的に記憶する。このＹＺ判定処理を終了すると、処理は図１９のステップＳ２１に戻る。
【０１１０】
図１９のステップＳ２１では、ＣＰＵ４４は、ＸＹ判定プログラムに従って、ＸＹ判定処理を実行する。上述のように、ＸＹ判定では、コントローラ１４が縦向きに把持されてフックが打たれたか否かを判定する。ＸＹ判定処理の動作は図２３に示される。ＸＹ判定では、ステップＳ７で加速度入力が開始されたことが判定されたコントローラ１４の加速度値が使用される。
【０１１１】
図２３のＸＹ判定処理を開始すると、ＣＰＵ４４は、ステップＳ９１で、１フレーム前と比べてＸ軸加速度が大きいか否かを判定する。ここでは、前回のフレームのＸ軸加速度が最小値であるか否かを判定している。ステップＳ９１で“ＮＯ”の場合、加速度入力がフックであるとは判定できないので、処理はステップＳ１０３へ進む。
【０１１２】
一方、ステップＳ９３で“ＹＥＳ”の場合、つまり、Ｘ軸加速度の最小値をつけるフレームを検出できた場合には、ＣＰＵ４４は、ステップＳ９３で、１フレーム前のＸ軸加速度が所定の閾値以下であるか否かを判定する。図１２に示したように、Ｘ軸加速度の最小値が閾値以下であるか否かを判定している。
【０１１３】
ステップＳ９３で“ＮＯ”の場合、Ｘ軸加速度の最小値が閾値を下回らないので、加速度入力がフックではないことが判定される。処理はステップＳ１０３に進む。
【０１１４】
一方、ステップＳ９３で“ＹＥＳ”の場合には、Ｘ軸加速度が閾値を下回って最小値となるフレーム（すなわち基準タイミング）が検出されたので、続くステップＳ９５からステップＳ９９の処理で、基準タイミング前後の加速度変化ベクトルＶ１およびＶ２に基づいて加速度入力の種類を判定する。
【０１１５】
ステップＳ９５では、ＣＰＵ４４は、ＸＹ平面における第１ベクトルＶ１を算出する。具体的には、図１４に示すように、基準タイミング（前回のフレーム）のＸ軸加速度およびＹ軸加速度を成分とする点Ｐｒからその次のタイミング（今回のフレーム）のＸ軸加速度およびＹ軸加速度を成分とする点ＰａまでのベクトルＶ１を算出する。第１ベクトルＶ１は、今回の加速度（Ｘ軸およびＹ軸）を成分とするベクトルと前回の加速度（Ｘ軸およびＹ軸）を成分とするベクトルの差によって算出される。
【０１１６】
また、ステップＳ９７で、ＣＰＵ４４は、ＸＹ平面における第２ベクトルＶ２を算出する。具体的には、図１４に示すように、基準タイミング（前回のフレーム）のＸ軸加速度およびＹ軸加速度を成分とする点Ｐｒからその前のタイミング（前々回のフレーム）のＸ軸加速度およびＹ軸加速度を成分とする点ＰｂまでのベクトルＶ２を算出する。第２ベクトルＶ２は、前々回の加速度（Ｘ軸およびＹ軸）を成分とするベクトルと前回の加速度（Ｘ軸およびＹ軸）を成分とするベクトルの差によって算出される。
【０１１７】
そして、ステップＳ９９で、ＣＰＵ４４は、第１ベクトルＶ１と第２ベクトルＶ２とのなす角度θを算出し、当該角度θが所定の閾値以上であるか否かを判定する。つまり、加速度入力がフックであるか否かを判定している。
【０１１８】
ステップＳ９９で“ＮＯ”の場合、加速度変化ベクトルＶ１およびＶ２間の角度θが所定の角度より小さいので、加速度入力がフックではないことが判定される。処理はステップＳ１０３に進む。
【０１１９】
なお、ステップＳ９９で“ＮＯ”の場合、および上述のステップＳ９３で“ＮＯ”の場合には、加速度入力がストレートであることが分かる。したがって、次フレーム以降は、フック判定を行わないようにしてよい。たとえば、記憶領域１２８のタイマに所定値を加算することによって、次フレームから図１３のステップＳ１３の処理で“ＮＯ”と判断されるようにしてよい。
【０１２０】
一方、ステップＳ９９で“ＹＥＳ”の場合には、加速度入力がフックであると判定できるので、ＣＰＵ４４は、ステップＳ１０１で記憶領域１３０のフックフラグをオンにする。
【０１２１】
続いて、ステップＳ１０３では、ＣＰＵ４４は、次フレーム以降のステップＳ９１およびＳ９３の判定、ならびにステップＳ９５およびＳ９７の算出等のために、Ｘ軸加速度およびＹ軸加速度を記憶領域１２６に追加的に記憶する。ＸＹ判定処理を終了すると、処理は図１９のステップＳ２３に戻る。
【０１２２】
一方、図１９のステップＳ１３で“ＮＯ”の場合、つまり、加速度入力の種類がフックであると判定されることなく既に所定時間が経過した場合には、加速度入力の種類の判定を行わないようにするために、処理はステップＳ２３に進む。したがって、ストレートからフックへの不自然な動作変更をなくすことができる。
【０１２３】
また、ステップＳ１１で“ＮＯ”の場合、つまり、フックフラグがオンに既に変更された場合には、その後の加速度入力の種類の判定を行う必要がないので、処理はステップＳ２３に進む。
【０１２４】
続いて、ステップＳ２３では、ＣＰＵ４４は、描画プログラムに従って描画処理を実行する。これによって、加速度入力の種類に対応付けられたゲーム処理が実行される。描画処理の動作は図２４に示される。
【０１２５】
図２４の描画処理を開始すると、ＣＰＵ４４は、ステップＳ１１１でフックフラグがオンであるか否かを判定する。上述のように、フックフラグは、初期処理でオフにされているが、ＹＺ判定処理やＸＹ判定処理で、加速度入力がフックであることが判定された場合には、フックフラグはオンに変更されている。なお、続くステップＳ１１３およびＳ１１５における移動制御対象は、記憶領域１３２の情報の示すグローブオブジェクト２０４である。
【０１２６】
ステップＳ１１１で“ＮＯ”の場合には、ＣＰＵ４４は、ステップＳ１１３でグローブオブジェクト２０４をストレートの軌道で移動させる。つまり、このステップＳ１１３の処理は、加速度入力の種類ストレートに対応付けられたゲーム処理の一部であり、これによって、グローブオブジェクト２０４は、ストレートに対応付けられた動作（ストレート軌道上の移動）を行うように制御される。具体的には、現在位置とストレートの動作パターンデータ等に基づいて、グローブオブジェクト２０４の新たな位置や向き等が算出される。
【０１２７】
一方、ステップＳ１１１で“ＹＥＳ”の場合には、つまり、加速度入力の種類がフックである場合には、ＣＰＵ４４は、ステップＳ１１５でグローブオブジェクト２０４をフックの軌道で移動させる。つまり、このステップＳ１１５の処理は、加速度入力の種類フックに対応付けられたゲーム処理の一部であり、これによって、グローブオブジェクト２０４は、フックに対応付けられた動作（フック軌道上の移動）を行うように制御される。具体的には、現在位置とフックの動作パターンデータ等に基づいて、グローブオブジェクト２０４の新たな位置や向き等が算出される。
【０１２８】
続いて、ステップＳ１１７で、ＣＰＵ４４はＧＰＵ５０を用いてグローブオブジェクト２０４を描画する。これによって、ステップＳ１１３またはＳ１１５で算出された位置に移動したグローブオブジェクト２０４を含むゲーム画像が描画されて、当該ゲーム画像がモニタ３０に表示される。
【０１２９】
したがって、加速度入力が開始されたばかりの頃は、図１６に示すように、グローブオブジェクト２０４が仮にストレート軌道に沿って移動するゲーム画像が表示される。その後、加速度入力がフックであると判定された場合には、図１８に示すように、グローブオブジェクト２０４がフック軌道に沿って移動するゲーム画像（つまり、プレイヤキャラクタ２００がフックパンチを打っている）が表示される。一方、所定時間が経過しても加速度入力がフックであるとは判定されなかった場合には、図１７に示すように、グローブオブジェクト２０４がストレート軌道に沿って移動するゲーム画像（つまり、プレイヤキャラクタ２００がストレートパンチを打っている）が表示される。
【０１３０】
描画処理を終了すると、処理は図１９のステップＳ２５に戻る。図１９のステップＳ２５では、ＣＰＵ４４は記憶領域１２８のタイマに１を加算する。つまり、加速度入力開始からの経過時間（経過フレーム数）をカウントする。
【０１３１】
続いて、ステップＳ２７で、ＣＰＵ４４はパンチの打ち終わりであるか否かを判定する。たとえば、所定時間をかけて描画処理を実行しパンチの描画を終了したか否かを判定する。ステップＳ２７で“ＮＯ”の場合、処理はステップＳ１１に戻る。
【０１３２】
一方、ステップＳ２７で“ＹＥＳ”の場合には、１つのパンチの描画を完了したので、ＣＰＵ４４は、ステップＳ２９で処理を終了するか否かを判定する。たとえば、プレイヤキャラクタ２００または敵キャラクタ２０２の体力が０になったか否かを判定したり、所定数のラウンドを終了したか否かを判定したりする。ステップＳ２９で“ＮＯ”の場合には、処理はステップＳ３に戻り、試合を続ける。ステップＳ２９で“ＹＥＳ”の場合には、この処理を終了する。
【０１３３】
この実施例によれば、加速度入力の開始が検出されたときには、加速度入力の第１種類に対応付けられた第１の描画処理を開始するようにして、グローブオブジェクト２０４が第１種類に対応付けられた動作（ストレートの軌道で移動）を行う画像を描画するようにした。つまり、プレイヤによって加速度入力が開始されたときには、加速度入力の第１種類に対応付けられた動作をオブジェクトが行う画像がすぐに画面上に表示され、したがって、当該画像を応答性良く描画することができる。その後、加速度入力の種類が第２種類であると判定されたときには、第１の描画処理に代えて、第２種類に対応付けられた第２の描画処理を実行するようにして、グローブオブジェクト２０４が第２種類に対応付けられた動作（フックの軌道で移動）を行う画像を描画するようにした。したがって、実際にプレイヤの行った加速度入力の種類に従った正確な動作をオブジェクトが行う画像を画面上に表示することができる。さらに、加速度入力の開始から所定時間が経過したときにはその後加速度入力の種類の判定を行わないようにする場合には、不自然な動作変更が行われるのを防止でき、プレイヤに違和感を与えることがない。
【０１３４】
また、加速度入力の種類を２軸方向の加速度の変化の特性に基づいて判定するようにした。詳しくは、第１軸（Ｘ軸）方向の加速度が所定の閾値を越えて最小値または最大値となった基準タイミングを検出し、２軸方向の加速度に基づいて基準タイミングの前後の加速度の変化ベクトルＶ１およびＶ２を算出し、第１ベクトルＶ１と第２ベクトルＶ２とのなす角度に基づいて、加速度入力の種類を識別するようにした。したがって、コントローラ１４の持ち方による誤認識を軽減することができる。
【０１３５】
なお、上述の実施例では、加速度入力の種類に応じてグローブオブジェクト２０４の移動を制御するようにしたが、他の実施例では、１つのオブジェクトとしてのプレイヤキャラクタ２００のパンチアクションを加速度入力の種類に応じて制御するようにしてもよい。
【０１３６】
また、上述の各実施例では、加速度入力が開始されたとき、種類がストレートであるものと仮定してストレートに対応付けられたゲーム処理を開始し、その後種類がフックであるか否かを判定するようにしたが、他の実施例では、最初に種類がフックであるものと仮定してフックに対応付けられたゲーム処理を開始し、その後種類がストレートであるか否かを判定するようにしてもよい。
【図面の簡単な説明】
【０１３７】
【図１】この発明の一実施例のゲームシステムの概要を示す外観図である。
【図２】ゲームシステムの電気的構成の一例を示すブロック図である。
【図３】第１コントローラの外観の一例を示す図解図であり、図３（Ａ）は後方上側から見た斜視図であり、図３（Ｂ）は前方下側から見た斜視図である。
【図４】第２コントローラの外観の一例を示す図解図であり、図４（Ａ）は後方上側から見た斜視図であり、図４（Ｂ）は前方下側から見た斜視図である。
【図５】コントローラの電気的構成の一例を示すブロック図である。
【図６】メモリマップの一例を示す図解図である。
【図７】第１コントローラの持ち手と加速度軸方向との関係を示す図解図であり、図７（Ａ）は右手持ちの場合を示し、図７（Ｂ）は左手持ちの場合を示す。
【図８】第２コントローラの加速度センサ出力に対する軸補正を示す図解図である。
【図９】プレイヤに横向きに把持された第１コントローラを示す図解図であり、図９（Ａ）はプレイヤ側から見た図を示し、図９（Ｂ）は上から見た図を示す。
【図１０】図９の横向きの持ち方でフックが打たれた場合のＹ軸加速度およびＺ軸加速度のＹＺ平面における変化を模式的に示す図解図である。
【図１１】プレイヤに縦向きに把持された第１コントローラを示す図解図であり、図１１（Ａ）はプレイヤ側から見た図を示し、図１１（Ｂ）は上から見た図を示す。
【図１２】図１１の縦向きの持ち方でフックが打たれた場合のＸ軸加速度の時間変化を模式的に示す図解図である。
【図１３】プレイヤの手の中でＺ軸周りに回転した状態で縦向きに把持された第１コントローラを示す図解図である。
【図１４】縦向きの持ち方でパンチが打たれた場合のＸ軸加速度およびＹ軸加速度のＸＹ平面における変化と、加速度変化ベクトル間の角度の算出とを模式的に示す図解図であり、図１４（Ａ）はフックが打たれた場合を示し、図１４（Ｂ）は図１３のＺ軸周り回転状態でストレートが打たれた場合を示す。
【図１５】プレイヤによる加速度入力が開始される前のゲーム画面の一例を示す図解図である。
【図１６】プレイヤの右手で加速度入力が開始された場合のゲーム画面の一例を示し、グローブオブジェクトがストレート軌道で移動を開始している場面を示す図解図である。
【図１７】図１６の後に加速度入力の種類がフックであると判定されなかった場合のゲーム画面の一例を示し、グローブオブジェクトがストレート軌道で移動した場面を示す図解図である。
【図１８】図１６の後に加速度入力の種類がフックであると判定された場合のゲーム画面の一例を示し、グローブオブジェクトがフック軌道で移動した画面を示す図解図である。
【図１９】ゲーム装置のＣＰＵの動作の一例を示すフロー図である。
【図２０】図１９の初期処理の動作の一例を示すフロー図である。
【図２１】図１９の軸補正処理の動作の一例を示すフロー図である。
【図２２】図１９のＹＺ判定処理の動作の一例を示すフロー図である。
【図２３】図１９のＸＹ判定処理の動作の一例を示すフロー図である。
【図２４】図１９の描画処理の動作の一例を示すフロー図である。
【符号の説明】
【０１３８】
１０  …ゲームシステム
１２  …ゲーム装置
１４  …コントローラ
２２  …光ディスク
３０  …モニタ
３４  …第１コントローラ
３６  …第２コントローラ
４４  …ＣＰＵ
４８  …メインメモリ
５０  …ＧＰＵ
８４，９０  …加速度センサ
２０４  …グローブオブジェクト
【図１】
2008067866.tif 000003
【図２】
2008067866.tif 000004
【図３】
2008067866.tif 000005
【図４】
2008067866.tif 000006
【図５】
2008067866.tif 000007
【図６】
2008067866.tif 000008
【図７】
2008067866.tif 000009
【図８】
2008067866.tif 000010
【図９】
2008067866.tif 000011
【図１０】
2008067866.tif 000012
【図１１】
2008067866.tif 000013
【図１２】
2008067866.tif 000014
【図１３】
2008067866.tif 000015
【図１４】
2008067866.tif 000016
【図１５】
2008067866.tif 000017
【図１６】
2008067866.tif 000018
【図１７】
2008067866.tif 000019
【図１８】
2008067866.tif 000020
【図１９】
2008067866.tif 000021
【図２０】
2008067866.tif 000022
【図２１】
2008067866.tif 000023
【図２２】
2008067866.tif 000024
【図２３】
2008067866.tif 000025
【図２４】
2008067866.tif 000026