ゲームプログラムおよびゲーム装置
【課題】加速度入力の種類に応じて動作するオブジェクトを応答性良く描画できる。
【解決手段】ゲームシステム10はゲーム装置12およびコントローラ14を含み、コントローラ14は加速度センサを備える。たとえば、プレイヤがコントローラ14を把持してフックパンチまたはストレートを打つことによって入力された加速度に応じてボクシングゲームが実行される。加速度入力が開始されたことが判定されるとき、入力の種類はまだ識別できないが、種類がストレートであると仮定して、ストレートの軌道で移動するグローブオブジェクトの描画が開始される。その後取得される加速度に基づいて種類がフックであると判定されたときには、フックの軌道で移動するグローブオブジェクトが描画される。
【解決手段】ゲームシステム10はゲーム装置12およびコントローラ14を含み、コントローラ14は加速度センサを備える。たとえば、プレイヤがコントローラ14を把持してフックパンチまたはストレートを打つことによって入力された加速度に応じてボクシングゲームが実行される。加速度入力が開始されたことが判定されるとき、入力の種類はまだ識別できないが、種類がストレートであると仮定して、ストレートの軌道で移動するグローブオブジェクトの描画が開始される。その後取得される加速度に基づいて種類がフックであると判定されたときには、フックの軌道で移動するグローブオブジェクトが描画される。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、加速度センサを用いて検出されるプレイヤの動作に応じてゲーム処理が実行される、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
加速度センサを用いて検出されるプレイヤのパンチ動作に応じてボクシングゲームが実行されるゲーム装置の一例が特許文献1に開示されている。特許文献1に記載された技術では、コントローラとしてのグローブユニットに、当該グローブユニットの前後(Y)、左右(X)および上下(Z)方向の3軸の加速度を検出する加速度センサが設けられており、当該加速度センサの出力波形の解析によってパンチ種類が識別される。具体的には、まず、パンチの打ち始めから打ち終わりまでの区間がY軸加速度の波形から検出される。次に、当該パンチの打ち始めから打ち終わりまでの区間内のX軸加速度およびZ軸加速度のそれぞれの波形から、たとえば、最大値と最小値、振幅、ピークの出現回数、積分値などのデータがそれぞれ抽出される。そして、各抽出データとパンチ種類(ストレート、フックおよびアッパーパンチ)ごとの各波形パターンとに基づいて、パンチの種類が判別される。パンチ種類が識別されると、当該パンチ種類に応じたゲーム処理が行われる。
【特許文献1】特開2002−153673号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、特許文献1に記載された技術では、プレイヤがパンチ動作を終えてから当該パンチの種類の判定が行われて当該種類に応じたゲーム処理が実行されるので、プレイヤのパンチ動作を表すような画像を描画することができない。すなわち、特許文献1の技術において、プレイヤのパンチ動作を表すような画像、たとえばプレイヤキャラクタがパンチを打っている画像やプレイヤの拳を示すオブジェクトが移動する画像を描画しようとすると、プレイヤがパンチ動作を終えた後になってようやく当該画像が画面上に表示されることとなる。プレイヤの入力に対する応答速度が速いことが求められるこの種のアクションゲームや対戦ゲーム等において、この応答性の悪さは問題であり、ゲームの面白さを低下させる。このため、特許文献1の技術では、主観視点を用いた描画が基本的に採用されており、敵キャラクタにパンチがヒットしたと判定されるときには、プレイヤのパンチ動作を表すような画像を描画することなく、敵キャラクタがダメージを受ける画像がいきなり表示される。
【0004】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【0005】
この発明の他の目的は、加速度センサを有する入力手段を用いた加速度入力の種類に応じた画像を応答性良く描画することができる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために後述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
【0007】
この発明に従った第1の発明のゲームプログラムは、少なくとも2軸方向の加速度を検出する加速度センサを有する入力手段を含み、入力手段を用いた加速度の入力の種類に応じて仮想ゲーム空間内のオブジェクトを制御するゲーム装置のコンピュータにおいて実行されるゲームプログラムである。ゲームプログラムは、加速度取得ステップ、入力開始判定ステップ、第1描画処理ステップ、第2条件判定手段、および第2描画処理ステップをコンピュータに実行させる。加速度取得ステップは、加速度センサによって検出される加速度を取得する。入力開始判定ステップは、加速度取得ステップによって取得された加速度に基づいて、入力手段を用いた加速度の入力が開始されたか否かを判定するための第1条件を満たしたか否かを判定する。第1描画処理ステップは、加速度の入力が開始されたことが判定されたとき、予め決められた第1の動作パターンにしたがって動作するオブジェクトの描画を開始する。第2条件判定ステップは、第1描画処理ステップが開始された後、加速度取得ステップによって取得された加速度が第1条件とは異なる第2条件を満たしたかどうかを判定する。第2描画処理ステップは、加速度が第2条件を満たしたと判定されたとき、第1の動作パターンに代えて、第1の動作パターンとは異なる第2の動作パターンにしたがって動作するオブジェクトを描画する。
【0008】
第1の発明では、ゲームプログラムは、ゲーム装置(12)のコンピュータ(44、50)に以下に説明する各ステップを実行させ、加速度の入力の種類に応じて仮想ゲーム空間内のオブジェクト(200、204)を制御する。ゲーム装置は、プレイヤによって操作される入力手段(14、34、36)を含み、入力手段は少なくとも2軸方向の加速度を検出する加速度センサ(84、90)を有している。加速度センサによって検出される加速度は加速度取得ステップ(S3、S15)によって取得される。加速度の入力が開始されたか否かを判定するための第1条件を満たしたか否かが入力開始判定ステップ(S5、S7)によって判定される。加速度の入力が開始されたと判定されるときには、第1描画処理ステップ(S113、S117)によってオブジェクトの描画が開始される。この描画では、予め決められた第1の動作パターンにしたがってオブジェクトが動作する。これによって、後述される実施例のボクシングゲームでは、オブジェクトがストレートの軌道で移動する画像がモニタに表示される。その後、第2条件判定ステップ(S19、S21)によって、加速度が第2条件を満たしたかどうかが判定される。加速度が第2条件を満たしたと判定されたときには、第2描画処理ステップ(S115、S117)によって、第1の動作パターンに代えて、第2の動作パターンにしたがって動作するオブジェクトが描画されるこれによって、後述される実施例のボクシングゲームでは、オブジェクトがフックの軌道で移動する画像がモニタに表示される。なお、加速度が第2条件を満たさなかったときには、そのまま第1の動作パターンにしたがって動作するオブジェクトの描画が続けられる。したがって、後述される実施例のボクシングゲームでは、オブジェクトが最後までストレートの軌道で移動する画像が表示される。
【0009】
第1の発明によれば、加速度の入力が開始されたときに、第1の動作パターンにしたがって動作するオブジェクトの描画を開始するので、プレイヤによる加速度の入力に対して応答性よく画像の描画を開始することができる。その後、加速度が第2条件を満たしたと判定されたときには、第2の動作パターンにしたがって動作するオブジェクトが描画されるので、プレイヤによる加速度の入力の種類に応じて異なる動作をオブジェクトが行う画像を表示することができる。
【0010】
請求項2の発明は、請求項1に記載のゲームプログラムであって、加速度の入力が開始されたことが判定されてから所定時間が経過したか否かを判定する経過時間判定ステップをコンピュータに更に実行させ、所定時間が経過したことが判定された後は、第2条件判定ステップによる判定を行わない。
【0011】
請求項2の発明では、経過時間判定ステップ(S13)によって、加速度の入力の開始から所定時間が経過したか否かが判定される。所定時間が経過したと判定された後には、第2条件の判定が行われない。このため、加速度の入力の開始から所定時間内に第2条件が満たされなかったときには、第2の動作パターンへの変更が行われなくなり、第1の動作パターンがそのまま続けられることとなる。したがって、オブジェクトの動作の不自然な変更が行われることがない。
【0012】
請求項3の発明は、請求項1に記載のゲームプログラムであり、第1条件とは、加速度の各軸方向の合成ベクトルの大きさが閾値を超えたかどうかである。したがって、プレイヤによって入力手段を用いた加速度の入力が開始されたか否かを適切に判断することができる。
【0013】
この発明に従った第2の発明のゲーム装置は、少なくとも2軸方向の加速度を検出する加速度センサを有する入力手段を含み、入力手段を用いた加速度の入力の種類に応じて仮想ゲーム空間内のオブジェクトを制御する。ゲーム装置は、加速度取得手段、入力開始判定手段、第1描画処理手段、第2条件判定手段、および第2描画処理手段を備える。加速度取得手段は、加速度センサによって検出される加速度を取得する。入力開始判定手段は、加速度取得手段によって取得された加速度に基づいて、入力手段を用いた加速度の入力が開始されたか否かを判定するための第1条件を満たしたか否かを判定する。第1描画処理手段は、加速度の入力が開始されたことが判定されたとき、予め決められた第1の動作パターンにしたがって動作するオブジェクトの描画を開始する。第2条件判定手段は、第1描画処理手段による描画が開始された後、加速度取得手段によって取得された加速度が第1条件とは異なる第2条件を満たしたかどうかを判定する。第2描画処理手段は、加速度が第2条件を満たしたと判定されたとき、第1の動作パターンに代えて、第1の動作パターンとは異なる第2動作パターンにしたがって動作するオブジェクトを描画する。
【0014】
第2の発明は、上述の第1の発明のゲームプログラムに相当するゲーム装置であり、第1の発明と同様の効果を奏する。
【発明の効果】
【0015】
この発明によれば、加速度の入力が開始されたときに、第1の動作パターンにしたがって動作するオブジェクトの描画を開始し、その後、加速度が第2条件を満たしたと判定されたときには、第2の動作パターンにしたがって動作するオブジェクトを描画するようにした。したがって、プレイヤの加速度入力の種類に応じて動作するオブジェクトの画像を応答性良く描画することができる。
【0016】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0017】
図1を参照して、この発明の一実施例であるゲームシステム10は、ゲーム装置12およびコントローラ14を含む。ゲーム装置12は据置型ゲーム装置である。コントローラ14は、ユーザないしプレイヤの入力装置ないし操作装置である。ゲーム装置12とコントローラ14とは無線によって接続される。
【0018】
ゲーム装置12は、略直方体のハウジング16を含み、ハウジング16の前面にはディスクスロット18およびメモリカードスロットカバー20が設けられる。ディスクスロット18から、ゲームプログラムおよびデータを記憶した情報記憶媒体の一例である光ディスク22(図2)が挿入されて、ハウジング16内のディスクドライブ24(図2)に装着される。メモリカードスロットカバー20の内側にはメモリカードスロットが設けられており、外部メモリカード26(図2)が挿入される。メモリカード26は、光ディスク22(図2)から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイされたゲームのゲームデータ(結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。また、上記ゲームデータの保存は、外部メモリカード26に代えて、たとえばフラッシュメモリ等の内部メモリに対して行うようにしてもよい。
【0019】
ゲーム装置12のハウジング16の後面には、AVケーブルコネクタ(図示せず)が設けられ、当該コネクタを用いて、ゲーム装置12はAVケーブル28を介してモニタ(ディスプレイ)30に接続される。このモニタ30は典型的にはカラーテレビジョン受像機であり、AVケーブル28は、ゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)30の画面上にたとえば3Dビデオゲームのゲーム画像が表示され、内蔵されるスピーカ32からゲーム音楽や効果音などのステレオゲーム音声が出力される。
【0020】
ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、ゲーム装置12を駆動するのに適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【0021】
コントローラ14は、詳細は後述されるが、それぞれが片手で把持可能な第1コントローラ34および第2コントローラ36を含む。第2コントローラ36の後端から延びるケーブル38の先端にはコネクタ40が設けられており、当該コネクタ40は、第1コントローラ34の後端面に設けられるコネクタ42(図3、図5)に接続される。第2コントローラ36の操作データないし入力データはケーブル38を介して第1コントローラ34に与えられる。第1コントローラ34は、第1コントローラ34自身の入力データと第2コントローラ36の入力データとを含むコントローラデータをゲーム装置12に送信する。
【0022】
このゲームシステム10において、ゲーム(または他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくは実行したいと思う他のアプリケーション)を記憶している適宜の光ディスク22を選択し、その光ディスク22をゲーム装置12のディスクスロット18からディスクドライブ24にローディングする。これに応じて、ゲーム装置12がその光ディスク22に記憶されているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ14を操作する。
【0023】
図2はゲームシステム10の電気的な構成を示すブロック図である。ゲーム装置12はCPU44を含む。このCPU44はゲームプロセサとして機能し、ゲーム装置12の全体的な制御を担当する。CPU44には、バスを介してメモリコントローラ46が接続される。メモリコントローラ46は主として、CPU44の制御の下で、バスを介して接続されるメインメモリ48の書込みや読出しを制御する。このメモリコントローラ46にはGPU(Graphics Processing Unit) 50が接続される。
【0024】
GPU50は、描画手段の一部を形成し、たとえばシングルチップASICで構成され、メモリコントローラ46を介してCPU44からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従って、ジオメトリユニット52およびレンダリングユニット54によって3Dのゲーム画像を生成する。つまり、ジオメトリユニット52は、3次元座標系の各種オブジェクトの回転,移動,変形等の座標演算処理を行う。オブジェクトは、複数のポリゴン(ポリゴンとは少なくとも3つの頂点座標によって定義される多角形平面をいう。)で構成されている。レンダリングユニット54は、各種オブジェクトの各ポリゴンにテクスチャ(模様画像)を貼り付ける処理などの画像生成処理を施す。したがって、GPU50によって、ゲーム画面上に表示すべき3Dの画像データが生成され、その画像データがフレームバッファ56内に記憶される。
【0025】
なお、GPU50が作画コマンドを実行するにあたって必要なデータ(プリミティブまたはポリゴンやテクスチャ等)は、GPU50がメモリコントローラ46を介してメインメモリ48から入手する。
【0026】
フレームバッファ56は、たとえばラスタスキャンモニタ30の1フレーム分の画像データを描画(蓄積)しておくためのメモリであり、GPU50によって1フレーム毎に書き換えられる。具体的には、フレームバッファ56は、1画素(ピクセル)毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、R,G,B,Aについてのデータであり、たとえば、8ビットのR(赤)データ、8ビットのG(緑)データ、8ビットのB(青)データおよび8ビットのA(アルファ)データである。なお、Aデータは、マスク(マット画像)についてのデータである。後述のビデオI/F66がメモリコントローラ46を介してフレームバッファ56のデータを読み出すことによって、モニタ30の画面上にゲーム画像が表示される。
【0027】
また、Zバッファ58は、(フレームバッファ56に対応する画素数×1画素当たりの奥行きデータのビット数)に相当する記憶容量を有し、フレームバッファ56の各記憶位置に対応するドットの奥行き情報または奥行きデータ(Z値)を記憶する。
【0028】
なお、フレームバッファ56およびZバッファ58は、ともにメインメモリ48の一部を用いて構成されてもよく、また、これらはGPU50の内部に設けられてもよい。
【0029】
メモリコントローラ46はまた、DSP(Digital Signal Processor)60を介して、オーディオ用のRAM(以下、「ARAM」という。)62に接続される。したがって、メモリコントローラ46は、メインメモリ48だけでなく、サブメモリとしてのARAM62の書込みおよび/または読出しを制御する。
【0030】
DSP60は、サウンドプロセサとして働き、メインメモリ48に記憶されたサウンドデータを用いたり、ARAM62に書き込まれている音波形(音色)データを用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【0031】
メモリコントローラ46は、バスを介してさらに各インタフェース(I/F)64,66,68,70および72に接続される。コントローラI/F64は、ゲーム装置12にBluetooth通信ユニット74を介して接続されるコントローラ14のためのインタフェースである。具体的に言うと、Bluetooth通信ユニット74は、本体側通信装置であり、コントローラ14側通信装置である無線モジュール76(図5)から送信されるコントローラデータ(入力データ)を受信する。コントローラI/F64は、Bluetooth通信ユニット74によって受信されたコントローラデータを、メモリコントローラ46を通してCPU44に与える。ビデオI/F66は、フレームバッファ56にアクセスし、GPU50によって生成された画像データを読み出して、画像信号または画像データ(ディジタルRGBAピクセル値)をAVケーブル28(図1)を介してモニタ30に与える。
【0032】
外部メモリI/F68は、ゲーム装置12の前面から挿入される外部メモリカード26をメモリコントローラ46に連係させる。それによって、メモリコントローラ46を介して、CPU44がこのメモリカード26にデータを書き込み、またはメモリカード26からデータを読み出すことができる。オーディオI/F70は、メモリコントローラ46を通してDSP60から与えられるオーディオデータまたは光ディスク22から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号(音声信号)をモニタ30のスピーカ32に与える。
【0033】
ディスクI/F72は、ディスクドライブ24をメモリコントローラ46に接続し、したがって、CPU44がディスクドライブ24を制御する。このディスクドライブ24によって光ディスク22から読み出されたプログラムおよびデータが、CPU44の制御の下でメインメモリ48に書き込まれる。CPU44は、このプログラムに従ってゲームまたはアプリケーションのための処理を実行する。
【0034】
図3には第1コントローラ34の外観の一例が示される。図3(A)は、第1コントローラ34を上面後方から見た斜視図であり、図3(B)は、第1コントローラ34を下面前方から見た斜視図である。
【0035】
第1コントローラ34は、たとえばプラスチック成型によって形成されたハウジング78を有している。ハウジング78は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング78は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、第1コントローラ34を用いて、それに設けられたボタンを押下することと、第1コントローラ34自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【0036】
ハウジング78には、複数の操作ボタンが設けられる。すなわち、ハウジング78の上面には、十字キー80a、Xボタン80b、Yボタン80c、Aボタン80d、セレクトスイッチ80e、メニュースイッチ80f、およびスタートスイッチ80gが設けられる。一方、ハウジング78の下面には凹部が形成されており、当該凹部の後方側傾斜面にはBボタン80hが設けられる。これら各ボタン(スイッチ)80a−80hには、ゲーム装置12が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。また、ハウジング78の上面には、遠隔からゲーム装置12本体の電源をオン/オフするための電源スイッチ80iが設けられる。第1コントローラ34に設けられる各ボタン(スイッチ)は、包括的に参照符号80を用いて示されることもある。
【0037】
また、ハウジング78の後面には、上述のコネクタ42が設けられている。コネクタ42は、たとえば32ピンのエッジコネクタであり、第1コントローラ34に他の機器を接続するために利用される。この実施例では、コネクタ42には第2コントローラ36のコネクタ40が接続される。また、ハウジング78上面の後端側には複数のLED82が設けられ、この複数のLED82によって当該コントローラ14のコントローラ番号(コントローラの識別番号)が示される。ゲーム装置12には、たとえば最大4つのコントローラ14が接続可能であり、ゲーム装置12に複数のコントローラ14が接続される場合には、各コントローラ14には、たとえば接続順にコントローラ番号が付与される。各LED82はコントローラ番号と対応付けられており、当該コントローラ番号に対応するLED82が点灯される。
【0038】
また、第1コントローラ34のハウジング78内には加速度センサ84(図5)が設けられている。加速度センサ84としては、典型的には静電容量式の加速度センサが用いられ得る。加速度センサ84は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。加速度センサ84は、少なくとも2つの互いに直交する軸方向の加速度を検出する。たとえば、2軸または3軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度を、各軸に沿った直線成分の加速度としてそれぞれ検出する。具体的には、この実施例では、3軸加速度センサが適用され、第1コントローラ34の上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向のそれぞれで加速度を検知する。この加速度センサ84の各軸ごとに検出される加速度に所定の演算処理を施すことによって、第1コントローラ34の傾きや回転を算出することが可能である。たとえば、加速度センサ84が静止した状態においては、常に重力加速度が加わっており、この重力加速度に対する各軸の傾きに応じた加速度が各軸ごとに検出される。具体的には、加速度センサ84が水平状態で静止している(すなわち、XおよびZ軸方向が水平方向であり、かつ、Y軸方向が鉛直方向である)ときには、加速度センサ84のY軸に1Gの重力加速度が加わり、他の軸X,Zの重力加速度はほぼ0となる。次に、加速度センサ84の姿勢が水平状態より傾くと、加速度センサ84の各軸方向と重力方向との角度に応じて、重力加速度が加速度センサ84の各軸に分散され、このとき、加速度センサ84の各軸の加速度値が検出される。このような各軸ごとの加速度値に演算を加えることによって、重力方向に対する加速度センサ84の姿勢を算出することができる。
【0039】
なお、加速度センサ84としては、ハウジング78の形状または第1コントローラ34の持たせ方の限定等に応じて、上下方向、左右方向および前後方向のうちいずれか2方向の加速度を検出する2軸加速度センサが用いられてもよい。
【0040】
図4には第2コントローラ36の外観の一例が示される。図4(A)は、第2コントローラ36を上面後方から見た斜視図であり、図4(B)は、第2コントローラ36を下面前方から見た斜視図である。なお、図4では、第2コントローラ36のケーブル38は省略されている。
【0041】
第2コントローラ36は、たとえばプラスチック成型によって形成されたハウジング86を有している。ハウジング86は、平面視では、前後方向(図4のZ軸方向)に略細長い楕円形状を有し、後端側の左右方向(図4のX軸方向)の幅が先端側のそれよりも狭くされている。また、ハウジング86は、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している(図8も参照)。ハウジング86は、第1コントローラ34と同様に、全体として大人や子供の片手で把持可能な大きさであるが、長手方向(Z軸方向)の長さは、第1コントローラ34のハウジング78よりもやや短くされている。この第2コントローラ36でも、プレイヤは、ボタンやスティックを操作することと、コントローラ自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【0042】
ハウジング86の上面の先端側には、アナログジョイスティック88aが設けられる。ハウジング86の先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向(図4に示すY軸方向)に並べて、Zボタン88bおよびCボタン88cが設けられる。アナログジョイスティック88aおよび各ボタン88b,88cには、ゲーム装置12が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。第2コントローラ36に設けられるアナログジョイスティック88aおよび各ボタン88b,88cは、包括的に参照符号88を用いて示されることもある。
【0043】
また、第2コントローラ36のハウジング86内には加速度センサ90(図5)が設けられている。この加速度センサ90としては、第1コントローラ34の加速度センサ84と同様の加速度センサが適用される。具体的には、3軸加速度センサが適用され、第2コントローラ36の上下方向(図4に示すY軸方向)、左右方向(図4に示すX軸方向)および前後方向(図4に示すZ軸方向)の3軸方向のそれぞれで加速度を検知する。したがって、第1コントローラ34の場合と同様に、検出された加速度に適宜な演算処理を施すことによって、第2コントローラ36の傾きや回転、重力方向に対する加速度センサ90の姿勢などを算出することができる。
【0044】
なお、図3に示した第1コントローラ34および図4に示した第2コントローラ36の形状や、ボタン(スイッチまたはスティック等)の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置等に適宜変更され得る。
【0045】
また、コントローラ14の電源は、第1コントローラ34内に取替可能に収容されるバッテリ(図示せず)によって与えられる。第2コントローラ36には、コネクタ42、コネクタ40およびケーブル38を介してこの電源が供給される。
【0046】
図5には、第1コントローラ34と第2コントローラ36とが接続されたときのコントローラ14の電気的構成の一例が示される。
【0047】
第1コントローラ34は、その内部に通信部92を備え、通信部92には、操作部80、加速度センサ84およびコネクタ42が接続される。操作部80は、上述の操作ボタンないし操作スイッチ80a‐80iを示す。操作部80が操作されると、その操作信号が通信部92に与えられる。
【0048】
加速度センサ84が検出した加速度を示すデータは、通信部92へ出力される。加速度センサ84は、たとえば最大200フレーム/秒程度のサンプリング周期を有する。
【0049】
コネクタ42には、第2コントローラ36から延びるケーブル38のコネクタ40が接続される。コネクタ40には、第2コントローラ36の操作部88および加速度センサ90が接続される。操作部88は、上述のスティック88aおよび操作ボタン88b、88cを示す。操作部88が操作されると、その操作信号がケーブル38、コネクタ40およびコネクタ42等を介して通信部92に与えられる。また、加速度センサ90も、加速度センサ84と同様のサンプリング周期を有しており、検出された加速度を示すデータを通信部92に与える。
【0050】
通信部92は、マイクロコンピュータ(マイコン)94、メモリ96、無線モジュール76およびアンテナ98を含む。マイコン94は、処理の際にメモリ96を記憶領域(作業領域やバッファ領域)として用いながら、無線モジュール76を制御して、取得したデータをゲーム装置12に送信したりゲーム装置12からのデータを受信したりする。
【0051】
操作部80および加速度センサ84ならびに操作部88および加速度センサ90からマイコン94へ出力されたデータは、一時的にメモリ96に格納される。通信部92からゲーム装置12のBluetooth通信ユニット74への無線送信は所定の周期毎に行われる。なお、ゲームの処理は1/60秒を単位として行われることが一般的であるので、第1コントローラ34からの送信はそれと同等かそれより短い周期で行うことが必要となる。マイコン94は、ゲーム装置12への送信タイミングが到来すると、メモリ96に格納されている操作部80および88の操作データならびに加速度センサ84および90の加速度データを含むデータを、コントローラデータとして無線モジュール76へ出力する。無線モジュール76は、Bluetooth(ブルートゥース)(登録商標)のような近距離無線通信技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ98から放射する。つまり、コントローラデータは、無線モジュール76で微弱電波信号に変調されて第1コントローラ34から送信される。微弱電波信号はゲーム装置12側のBluetooth通信ユニット74で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置12はコントローラデータを取得することができる。ゲーム装置12のCPU44は、コントローラ14から取得したコントローラデータに基づいてゲーム処理を行う。なお、第1コントローラ34とゲーム装置12との無線通信は、無線LANなど他の規格に従って実行されてもよい。
【0052】
このゲームシステム10では、プレイヤがコントローラ14を動かすことによってゲームに対する操作または入力を行うことができる。上述のように、第1コントローラ34には少なくとも2軸方向の加速度を検出する加速度センサ84が内蔵され、第2コントローラ36にも同様の加速度センサ90が内蔵されており、コントローラ14がプレイヤによって動かされると、当該動作に応じた加速度が検出される。ゲーム装置12では、当該検出された加速度に応じてゲーム処理が実行される。換言すれば、プレイヤは、コントローラ14を適宜に動かすことによって、ゲーム装置12に対して加速度を入力することができ、ゲーム装置12では当該加速度入力に応じてゲーム処理が実行される。具体的には、ゲーム装置12では、検出された加速度に基づいて、プレイヤの操作や入力動作が判定される。つまり、加速度入力の種類や方向が識別されて、当該加速度入力の種類や方向に対応付けられたゲーム処理が実行され、たとえば、当該加速度入力の種類や方向に対応付けられた動作をオブジェクトが行う画像が表示される。
【0053】
この実施例では、ゲームシステム10をボクシングゲームに適用した場合を説明する。プレイヤは、第1コントローラ34を利き手に持ち、第2コントローラ36を他の手に持って、左右の腕のいずれかでパンチを打つ動作を行うことによって、このボクシングゲームをプレイすることができる。具体的には、ゲーム装置12では、プレイヤのパンチ動作に応じて検出される加速度データに基づいて、当該パンチ動作の種類、すなわち加速度入力の種類ないし方向が判定される。この実施例では、フックとストレートの2種類のパンチ動作が加速度に基づいて識別される。そして、当該識別された種類に対応付けられたゲーム処理が実行される。たとえば、プレイヤがどちらかの腕でフックを打つと、ゲーム画面上では、プレイヤキャラクタが同じ腕でフックを打つ動作を行う。あるいは、同じ側のグローブの動作が、当該グローブがフックの軌道で移動するように制御される。一方、当該プレイヤがどちらかの腕でストレートを打つと、ゲーム画面上では、プレイヤキャラクタが同じ腕でストレートを打つ動作を行う。あるいは、同じ側のグローブの動作が、当該グローブがストレートの軌道で移動するように制御される。
【0054】
この実施例のボクシングゲームを実行する際のメモリマップの一例が図6に示される。メインメモリ48はプログラム記憶領域100およびデータ記憶領域102を含む。プログラムおよびデータの一部は、光ディスク22から一度に全部または必要に応じて部分的にかつ順次的に読み出され、メインメモリ48に記憶される。なお、図6にはメモリマップの一部のみが示されており、処理に必要な他のプログラムおよびデータも記憶されている。
【0055】
記憶領域104には、持ち手設定プログラムが記憶されている。このプログラムによって、第1コントローラ34を持つ手がいずれであるかを示す持ち手情報の設定が行われる。上述のように、第1コントローラ34に内蔵される加速度センサ84の3軸方向(図3)と、第2コントローラ36に内蔵される加速度センサ90の3軸方向(図4)とが予め決められているので、第1コントローラ34および第2コントローラ36をそれぞれどちらの手で持つかに応じて、プレイヤがフックを打ったときに検出される加速度の方向が逆転する。図7に、第1コントローラ34の持ち手と加速度センサ84に設定された軸方向との関係が示されている。この図7では、プレイヤ側から見た図が示されており、第1コントローラ34は縦向き(Z軸方向が鉛直方向)に把持されている。図7(A)に示す右手持ちの場合と、図7(B)に示す左手持ちの場合とでは、フックパンチの曲げる方向が反対になる。つまり、加速度センサ84のX軸方向に対するフック動作の方向が逆になるので、検出されるX加速度の方向も逆になる。したがって、コントローラ14の持ち手の違いに応じて、検出される加速度の方向を補正するために、予め持ち手情報を取得しておく。この持ち手設定は、たとえば試合開始前のオプション設定画面で第1コントローラ34を持つ手が右手か左手かを選択させることによって行われる。または、右利きか左利きかを選択させてもよい。コントローラ14のうち第1コントローラ34はメインコントローラ、第2コントローラ36は拡張的なサブコントローラの位置付けであり、第1コントローラ34が利き手で把持されることが前提であるから、利き手によって持ち手情報を取得できる。
【0056】
図6に戻って、記憶領域106には加速度取得プログラムが記憶される。このプログラムによって、コントローラ14から受信したコントローラデータから加速度データが定期的(1フレームごと)に取得される。上述のように、コントローラデータには、第1コントローラ34の加速度センサ84の加速度データおよび第2コントローラ36の加速度センサ90の加速度データが含まれている。また、この実施例で使用される加速度センサ84および90は、上述のように、重力加速度を常に検出するので、各軸の加速度には、第1コントローラ34または第2コントローラ36の姿勢(持ち方)に応じた重力加速度成分が含まれている。したがって、たとえば試合開始前にプレイヤがパンチを打たずに構えている状態で加速度を検出し、当該検出された加速度データから、各軸の重力加速度成分を取得して予め記憶しておく。そして、試合開始後に検出される各軸の加速度から当該重力加速度成分を減算することによって、プレイヤの動作によって生じた加速度を取得する。なお、上述のように、コントローラ14では、ゲーム装置12の1フレームよりも短いサンプリング周期で加速度が検出されており、ゲーム装置12では、1フレームに複数個の加速度を取得することができるので、たとえば平均値、最大値または最小値等を取ることによって、当該フレームを代表する加速度を取得するようにしてよい。
【0057】
記憶領域108には、パンチ開始判定プログラムが記憶される。このプログラムによって、プレイヤが加速度入力(パンチ動作)を開始したか否かを判定するための第1条件が満足されたか否かが加速度取得プログラムによって取得された加速度に基づいて判定される。プレイヤによってコントローラ14を用いて入力が開始されると、或る一定以上の加速度値が検出される。したがって、第1条件として、各軸方向の加速度の合成ベクトル(各軸加速度を成分とするベクトル)の大きさが所定の閾値以上になったことを適用する。この第1条件によって、加速度の入力の開始を適切に判定することができる。この実施例では、3軸加速度センサが使用されるので、3軸方向の加速度の合成ベクトルの大きさが算出され、当該合成ベクトルの大きさが所定の閾値以上になったか否かが判定される。
【0058】
また、第1コントローラ34の加速度の合成ベクトルの大きさと、第2コントローラ36の加速度の合成ベクトルの大きさとが算出されるので、どちらのコントローラ14でパンチ動作が行われたかを認識することができる。この動作されたコントローラ14の情報と持ち手情報とに基づいて、プレイヤのどちらの手でパンチ動作が行われたかを認識することができる。したがって、たとえば、ゲーム空間内でプレイヤの動かした手と同じ手を用いた動作を実行することができる。この実施例では、グローブオブジェクト204の移動あるいはプレイヤキャラクタ200のパンチ動作(図16等参照)が制御されるので、プレイヤがパンチを打った手に対応するグローブオブジェクト204が選択され、当該選択されたグローブオブジェクト204の識別情報が、動作させるグローブオブジェクトとして記憶される。
【0059】
記憶領域110には経過時間判定プログラムが記憶される。このプログラムによって、パンチが開始されてからの経過時間が所定の閾値より小さいか否かが判定される。この実施例では、プレイヤによるパンチ動作が開始されたとき、まだ当該パンチ動作の種類を判別できないが、ストレートに対応する動作が開始されるようにしている。そして、その後に検出される加速度に基づいてプレイヤによるパンチ動作の種類を判定する。種類がフックと判定されたときには、ストレートに対応する動作からフックに対応する動作に変更される。このため、ストレートの動作が或る程度進行してからその続きがフックの動作へと変更されると、ゲーム画面上でパンチ動作が不自然に見え、プレイヤに違和感を与えるおそれがある。したがって、この経過時間判定によって、プレイヤによるパンチ動作の開始から所定時間が経過した後には、当該パンチ動作の種類の判定をやめてフックへの変更が行われないようにする。なお、プレイヤのパンチ動作の種類を早期に(動作変更を不自然に見せない程度の時間で)判別可能な場合や、多少の不自然さよりもパンチ動作の種類の正確性に重きを置く場合等には、この経過時間判定は行われなくてよい。
【0060】
記憶領域112には、軸補正プログラムが記憶される。このプログラムによって、加速度の軸方向の調整が行われ、取得された加速度値が補正される。パンチ動作の種類の判定は、この補正後の加速度に基づいて行われることとなる。この軸補正によって、持ち手やコントローラ14の種別に関係なく同じ判定処理を用いることができ、プレイヤによるパンチ動作を効率よく判定できるようにしている。
【0061】
上述のように、第1コントローラ34および第2コントローラ36の持ち手に応じて、フックを打つときのX軸加速度の方向が逆になる(図7)。そこで、この軸補正によって持ち手に応じてX軸加速度の符号を逆にする。この実施例では、図7(A)に示すように第1コントローラ34が右手で把持される場合のX軸方向が基準として採用される。したがって、第1コントローラ34の持ち手が右手である場合には、第2コントローラ36の軸補正が必要である。この軸補正では、第2コントローラ36の加速度のX軸ベクトルを反転し、つまり、第2コントローラ36のX軸加速度の符号を逆にする。一方、図7(B)に示すように第1コントローラ34が左手で把持される場合には、第1コントローラ34の軸補正が必要であり、第1コントローラ34のX軸加速度の符号を逆にする。なお、この場合、第2コントローラ36は右手で把持されるので、加速度センサ90のX軸方向は、基準となる第1コントローラ34が右手で把持される場合の加速度センサ84のX軸方向と同じであり、X軸方向の補正は必要ない。
【0062】
また、上述のように、第2コントローラ36を側面から見ると、そのハウジング86はYZ平面内で湾曲した形状を有している。図8の上段左図から分かるように、第2コントローラ36では、アナログジョイスティック88aの設けられる先端部が水平にされたときに加速度センサ90のZ軸方向が水平方向にかつY軸方向が鉛直方向になるように、加速度センサ90の軸が設定されている。第2コントローラ36が縦向きに把持されるときには、図8の上段右図に示すように、その湾曲形状のハウジング86の後端側が掌の中で把持され、加速度センサ90のY軸方向およびZ軸方向がそれぞれ鉛直方向および水平方向から傾く。この第2コントローラ36が縦向きに把持されたときのY軸方向およびZ軸方向は、第1コントローラ34が縦向きに把持されるときのY軸方向およびZ軸方向(図11参照)とは異なる。したがって、軸補正では、第2コントローラ36のY軸およびZ軸の加速度を補正する。具体的には、上述のように、パンチ動作が行われる前に検出される重力加速度によって、把持されたときの第2コントローラ36の姿勢が把握される。したがって、この姿勢に基づいて、Y軸加速度およびZ軸加速度のそれぞれを水平方向(図8の下段のY軸方向)と鉛直方向(図8の下段のZ軸方向)の成分に分解するための変換係数を算出する。そして、検出されるY軸加速度およびZ軸加速度と変換係数とに基づいて、補正されたY軸加速度およびZ軸加速度を取得する。
【0063】
記憶領域114には、YZ判定プログラムが記憶されている。このプログラムによって、Y軸加速度およびZ軸加速度に基づいてパンチ動作がフックであるか否かが判定される。具体的には、このYZ判定では、コントローラ14が横向きに把持されてフックが打たれたか否かを判定することができる。図9には、プレイヤの右手で横向きに把持された第1コントローラ34が示されている。なお、第1コントローラ34では、図7から分かるように、把持されたときに、親指が届く位置に十字キー80aおよびAボタン80dが設けられ、人差し指が届く位置にBボタン80hが設けられている。したがって、プレイヤがパンチ動作のために第1コントローラ34を横向きで右手で把持すると、図9に示すように、ハウジング78の先端側がプレイヤの左向きになり、かつ、十字キー80aの設けられた面がプレイヤ側を向く。そのため、この実施例の加速度センサ84の軸設定では、図9(B)から分かるように、YZ平面内において、Z軸正方向およびY軸負方向にフックパンチが打たれることとなる。
【0064】
図9の状態からフックが打たれると、Z軸正方向にある程度の加速度が生じる。したがって、このYZ判定では、まず、Z軸加速度が所定の閾値以上であるか否かが判定される。
【0065】
さらに、横向き把持状態でのフック動作は、YZ平面内における動作であり、Y軸加速度およびZ軸加速度の挙動に次のような特徴がある。すなわち、Z軸加速度について、パンチの打ち始めでは正方向に加速度が生じ、その後徐々に速度が弱まるにつれて加速度は負方向へ反転し、最後には0になる。また、Y軸加速度については、パンチの打ち始めでは負方向に遠心力が生じ、その後徐々に遠心力が弱まるにつれて加速度は正方向に反転し、最後には0になる。このように変化するY軸加速度およびZ軸加速度を示す点を、Y軸加速度およびZ軸加速度を成分とするYZ座標系に対してプロットすると、図10に示すように、加速度を示す点は右回りに遷移するという特徴が見られる。なお、図10では、右回り遷移を分り易く示すために、加速度の変化が模式的に示されている。したがって、Y軸加速度およびZ軸加速度を示す点が右回りに遷移したことを、フックの判定条件として採用することができる。したがって、このYZ判定では、上述のZ軸加速度の閾値判定に加えて、Y軸加速度およびZ軸加速度の変化が右回りの遷移を示すか否かを判定する。
【0066】
なお、図9では右手で横向きの第1コントローラ34が把持された場合を示して、YZ判定条件を説明した。しかし、左手で横向きの第1コントローラ34が把持される場合のフック動作についても、フック動作の方向とY軸Z軸の方向の関係が図9に示す右手の場合と同じであるので、同一の判定条件を使用することができる。また、同様に、第2コントローラ36が横向きに把持された場合のフック動作についても、同一の判別条件を使用することができる。
【0067】
また、他の実施例で加速度センサ84の軸方向の設定が変更される場合には、Z軸加速度の判定のための閾値の符号や当該閾値に対する大小関係、およびY軸加速度とZ軸加速度とを成分とする点の遷移の方向等の条件は、軸設定に応じて適宜に変更される。
【0068】
図6に戻って、記憶領域116には、XY判定プログラムが記憶される。このプログラムによって、X軸加速度およびY軸加速度に基づいてパンチ動作がフックであるか否かが判定される。具体的には、このXY判定では、コントローラ14が縦向きに把持されてフックが打たれたか否かを判定することができる。図11には、プレイヤの右手で縦向きに把持された第1コントローラ34が示されている。プレイヤがパンチ動作のために第1コントローラ34を縦向きに右手で把持すると、上述のように、十字キー80a、Aボタン80dおよびBボタン80h等とこれらを操作する指との位置関係から、図11に示すように、ハウジング78の先端側が上向きになり、かつ、十字キー80aの設けられた面がプレイヤ側を向く。そのため、この実施例の加速度センサ84の軸設定では、図11(B)から分かるように、XY平面内において、Z軸負方向およびY軸負方向にフックパンチが打たれることとなる。
【0069】
図11の状態からフックが打たれると、X軸加速度については、初め負方向に加速度が生じる。具体的には、図12に、このX軸加速度の時間変化が模式的に示される。X軸加速度は、フック動作の比較的初期の段階で最小値をつける。
【0070】
一方、図11の状態からストレートが打たれる場合には、コントローラ34はほぼY軸の1方向のみに移動するので、つまり、ストレートはY軸方向への直線的な加速度入力であるから、X軸加速度はほとんど生じない。したがって、X軸加速度に注目すると、図12に示すように、基本的には、X軸加速度がある程度の大きさの負の値をつけたか否かに応じて、つまり、X軸加速度が所定の閾値以下になったか否かに応じて、フックとストレートを判別することができる。
【0071】
しかしながら、第1コントローラ34が把持されるときには、図13に示すように、手の中でZ軸周りに回転した状態になることがある。このようなZ軸周り回転状態の持ち方でストレートが打たれると、フックが打たれた場合と同様に、X軸方向とY軸方向の2軸方向の加速度が検出される。しかも、当該X軸加速度が図12に示す判別条件としての閾値以下になることがある。したがって、図12のX軸加速度が閾値以下になったことのみを条件とした場合には、判別の精度がよくない。
【0072】
そこで、この実施例では、さらにX軸加速度およびY軸加速度の変化の特性に基づいた判定を行って、Z軸周り回転状態で打たれたストレートを除外する。
【0073】
図14には、縦向きで把持されてパンチが打たれた場合のX軸加速度およびY軸加速度の変化の特性が模式的に示される。つまり、X軸加速度およびY軸加速度を示す点を、X軸加速度およびY軸加速度を成分とするXY座標系に対してプロットした図である。図14(A)にはフックの場合が示され、図14(B)にはZ軸周り回転状態のストレートの場合が示される。図14から分かるように、どちらの場合にも、X軸加速度が図12に示したフックとストレートを判別する閾値以下になっており、上述のように、この閾値判定だけではパンチ種類を正確に識別することができない。
【0074】
しかし、発明者等は、X軸加速度の最小値の検出されるタイミングの前後におけるX軸加速度およびY軸加速度の変化に基づいて、フックとストレートとを正確かつ迅速に識別可能であることを見出した。具体的には、フックの場合、図14(A)から分かるように、X軸加速度およびY軸加速度を成分とする点の軌跡が略円形を示すのに対し、ストレートの場合には、図14(B)から分かるように、当該軌跡が細長く傾斜した略楕円形を示す。フックはXY平面内における曲線的もしくは屈曲的な移動であり、曲線的もしくは屈曲的な加速度入力であって、遠心力が生じる。一方、ストレートは、XY平面内における直線的な移動であり、直線的な加速度入力であって、遠心力が生じない。遠心力の有無によって軌跡形状に違いが現れるものと考えられ、これによって両者を区別することができる。
【0075】
特に、X軸加速度の最小値の検出されるタイミング前後に注目すると、フックの場合、軌跡はなだらかに反転しているのに対し、ストレートの場合、軌跡は比較的鋭く反転している。より詳細には、最小値の検出されるタイミングの前後の加速度の変化ベクトルV1およびV2の間の角度θには、フックとストレートによって差異が生じ、フックの場合の角度は、ストレートの場合の角度よりも大きくなる。したがって、加速度変化ベクトルV1およびV2間の角度θが所定の閾値以上であるか否かを判定することによって、フックとストレートとを識別することができる。
【0076】
また、図12に示したように、X軸加速度の最小値はパンチ動作の比較的速い段階で検出されることから、この最小値となるタイミングの前後の加速度を使用した判定によって、フックとストレートとを素早く識別することができる。
【0077】
このXY判定の具体的な手順としては、まず、取得されたX軸加速度が最小値になったか否かを判定し、当該最小値になったタイミング(フレーム)を検出する。ここでは、このX軸加速度が最小値となるときのX軸加速度およびY軸加速度が、加速度変化ベクトルV1およびV2を算出するときの基準となることから、X軸加速度が最小値となるタイミングを、便宜上、基準タイミングと呼ぶものとする。X軸加速度は図12に示すように変化するので、X軸加速度を取得する度に、つまり、1フレームごとに、今回の値が前回の値よりも大きいか否かを判定することによって、最小値判定を行うことができる。取得されるX軸加速度が前回の値を初めて上回ったと判定されるとき、前回のフレームのX軸加速度が最小値であり、前回のフレームが基準タイミングである。
【0078】
X軸加速度の最小値が検出されると、次に、当該最小値が図12に示す閾値以下であるか否かを判定する。上述のように、第1コントローラ34がZ軸周りに回転されていない持ち方でストレートが打たれた場合には、X軸加速度の最小値が閾値を下回ることがないので、この判定によって当該ストレートの場合を除外できる。
【0079】
X軸加速度の最小値が閾値以下である場合には、基準タイミング前後の加速度変化ベクトルV1およびV2を算出する。具体的には、基準タイミングとその次のタイミング(フレーム)の加速度に基づいて、加速度変化ベクトルV1を算出する。このV1を第1ベクトルとも言う。図14(A)に示すように、第1ベクトルV1は、基準タイミング(前回のフレーム)のX軸加速度およびY軸加速度を成分とする点Prから、その次のタイミング(今回のフレーム)のX軸加速度およびY軸加速度を成分とする点Paまでのベクトルである。また、基準タイミングとその前のタイミングの加速度に基づいて、加速度変化ベクトルV2を算出する。このV2を第2ベクトルとも言う。図14(B)に示すように、第2ベクトルV2は、基準タイミング(前回のフレーム)のX軸加速度およびY軸加速度を成分とする点Prから、その前のタイミング(前々回のフレーム)のX軸加速度およびY軸加速度を成分とする点Pbまでのベクトルである。
【0080】
そして、第1ベクトルV1と第2ベクトルV2とのなす角度θを算出し、当該角度θが所定の閾値(角度)以上であるか否かを判定する。角度θが閾値以上である場合には、プレイヤによるパンチ動作はフックであると判定される。
【0081】
このようにして、基準タイミング前後の加速度変化ベクトルV1およびV2間の角度θに基づいて、加速度入力の種類が2軸方向(この実施例ではXおよびY)のいずれか一方向(この実施例ではY)への直線的な加速度入力であるか、または、2軸方向の成分を含む方向への加速度入力であるかを識別することができる。したがって、第1コントローラ34の持ち方によらず、加速度入力の種類を正確に識別することができる。
【0082】
なお、図11および図13では縦向きの第1コントローラ34が右手で把持された場合を示して、このXY判定条件を説明した。しかし、縦向きの第1コントローラ34が左手で把持された場合のフック動作については、上述の軸補正プログラムによってX軸方向が反転されるので、同一の判定条件を使用できる。また、第2コントローラ36が縦向きに左手で把持された場合のフック動作についても、上述の軸補正プログラムによってX軸方向が反転され、かつ、Y軸方向およびZ軸方向が補正されるので、同一の判定条件を使用できる。また、第2コントローラ36が縦向きに右手で把持された場合のフック動作についても、上述の軸補正プログラムによってY軸方向およびZ軸方向が補正されるので、同一の判定条件を使用できる。
【0083】
また、他の実施例で加速度センサ84の軸方向の設定が変更される場合には、X軸加速度の判定のための閾値の符号や当該閾値に対する大小関係等の条件は、当該軸設定に応じて適宜に変更される。たとえば、X軸方向の正負が図3と逆に設定される場合には、図12および図14の閾値の符号は正であり、X軸加速度の最大値が検出されて、当該最大値が閾値以上であるか否かが判定される。また、X軸加速度が閾値を上回って最大値をつけたタイミングが基準タイミングとして検出される。
【0084】
なお、YZ判定およびXY判定は、上述の第1条件(加速度の入力の開始を判定するための条件)が満たされたことが判定された後に、加速度に基づいて判定される第2条件の判定に相当する。第2条件は第1条件と異なる条件である。YZ判定では、第2条件は、上述のY軸加速度およびZ軸加速度の特性に基づいて設定された条件(Z軸加速度が所定の閾値以上であること、Y軸加速度およびZ軸加速度を示す点が右回りに遷移したこと等)を含む。XY判定では、第2条件は、上述のX軸加速度およびY軸加速度の特性に基づいて設定された条件(X軸加速度の最小値が閾値以下であること、基準タイミング前後の加速度変化ベクトル間の角度が閾値以上であること等)を含む。
【0085】
図6に戻って、記憶領域118には描画プログラムが記憶される。このプログラムによって、プレイヤによる加速度入力の種類に対応付けられたゲーム処理が実行されて、ゲーム画像が描画され、当該ゲーム画像がモニタ30に表示される。ゲーム処理では、加速度入力の種類に対応付けられた動作をオブジェクトが行う画像が描画される。
【0086】
具体的には、試合開始時には、図15に示すように、仮想ゲーム空間内のリング上のプレイヤキャラクタ200と敵キャラクタ202を含むゲーム画像が描画されて、モニタ30に表示される。なお、この実施例では、プレイヤキャラクタ200と敵キャラクタ202と重なった場合でも、プレイヤが敵キャラクタ202を見ることができるように、プレイヤキャラクタ200の体は半透明で描画される(図では2点鎖線表示)。ただし、プレイヤキャラクタ200の右のグローブオブジェクト204aと左のグローブオブジェクト204bとは、プレイヤキャラクタ200のパンチの動きやヒットを見易くするために不透明で描画される(図では実線表示)。なお、左右のグローブオブジェクト204aおよび204bを包括的にグローブオブジェクト204と表現することもある。
【0087】
パンチ開始判定プログラムによって加速度入力が開始されたと判定されるときには、まだ当該入力の種類を判別できないが、当該入力の種類のうち第1種類としてのストレートに対応付けられた第1のゲーム処理として、第1の描画処理の実行を開始する。つまり、加速度入力はストレートであると仮定して、当該ストレートに対応付けられたゲーム処理を開始する。言い換えれば、予め決められた第1の動作パターン(この実施例では、ストレート軌道上の移動)に従って動作するオブジェクトの描画を開始する。これによって、オブジェクトが第1種類に対応付けられた動作を行う画像が表示される。この実施例の第1の描画処理では、グローブオブジェクト204の移動がストレートパンチの軌跡を描くように制御される。具体的には、ストレートの軌道上を移動するグローブオブジェクト204の位置が算出され、当該位置にグローブオブジェクト204が描画される。一例として、プレイヤの右手に把持されたコントローラ14で入力が開始された場合には、図16に示すように、右のグローブオブジェクト204aが直線的に移動するゲーム画像が描画される。
【0088】
その後、YZ判定プログラムおよびXY判定プログラムに従って、加速度入力の種類の判定が行われつつ、ストレートに対応付けられた第1の描画処理が続けられる。ただし、加速度入力の種類の判定は、入力開始から所定時間が経過していない場合に行われる。所定時間が経過したと判定されたにもかかわらず、加速度入力の種類が第2種類としてのフックであると判定されなかったときには、第1の描画処理が最後まで実行される。したがって、図16のゲーム画像の続きとして、図17に示すように、右のグローブオブジェクト204aが最後までストレートの軌道で移動するゲーム画像が描画される。つまり、プレイヤキャラクタ200が右ストレートを打ち終わるまでのゲーム画像が描画されてモニタ30に表示される。
【0089】
一方、加速度入力の種類が第2種類としてのフックであると判定されたときには、第1の描画処理に代えて、フックに対応付けられた第2のゲーム処理として、第2の描画処理を実行する。つまり、第1の動作パターンに代えて、第1の動作パターンとは異なる第2の動作パターン(この実施例では、フック軌道上の移動)にしたがって動作するオブジェクトの描画が行われる。これによって、オブジェクトが第2種類に対応付けられた動作を行う画像が表示される。具体的には、第2の描画処理では、グローブオブジェクト204の移動がフックパンチの軌跡を描くように制御される。つまり、現在の位置を起点としてフックの軌道上を移動するグローブオブジェクト204の位置が算出され、当該位置にグローブオブジェクト204が描画される。したがって、図16のゲーム画像の続きとして、図18に示すように、右のグローブオブジェクト204aがフックの軌跡を描いて移動するゲーム画像が描画される。つまり、プレイヤキャラクタ200が右フックを打ち終わるまでのゲーム画像が描画されてモニタ30に表示される。
【0090】
このように、プレイヤによる加速度入力が開始されたと判定されたときに、加速度入力の種類に対応付けられたゲーム処理のうち、第1種類に対応付けられた第1のゲーム処理を開始するようにしたので、プレイヤによる加速度入力の最初からパンチを打つ画像を描画して、当該画像をモニタ30に表示することができ、したがって、加速度入力に対する応答性が良い。また、その後に取得される加速度に基づいて、加速度入力が第2種類であったと判定されたときには、第1のゲーム処理に代えて、第2種類に対応付けられた第2のゲーム処理を実行するようにしたので、プレイヤの加速度入力の種類に従った画像を表示することができる。さらに、加速度入力の種類の判定を当該入力の開始から所定時間に限り行うようにしているので、不自然な動作変更を防止することができる。
【0091】
図6に戻って、データ記憶領域102の記憶領域120には、ゲーム画像を生成するための画像データが記憶される。画像データは、プレイヤキャラクタ200、グローブオブジェクト204および敵キャラクタ202等の画像データを含む。
【0092】
記憶領域122には持ち手情報が記憶される。持ち手情報は、上述のように、第1コントローラ34を持つ手(左手または右手)を示し、持ち手設定プログラムによって設定されて、この記憶領域122に記憶される。
【0093】
記憶領域124には、上述の加速度取得プログラムによって取得された加速度情報が記憶される。具体的には、加速度情報は、第1コントローラ34の加速度センサ84のX,YおよびZ軸方向の加速度値、および第2コントローラ36の加速度センサ90のX,YおよびZ軸方向の加速度値を含む。
【0094】
記憶領域126には加速度履歴が記憶される。各加速度情報は、取得されたときのフレーム番号に対応付けて記憶される。また、加速度値は、上述の軸補正プログラムによって必要に応じて補正された値である。上述のYZ判定プログラムおよびXY判定プログラムによって加速度入力の種類が判定される際には、この加速度履歴が参照される。
【0095】
記憶領域128には、加速度入力の開始からの経過時間をカウントするためのタイマが記憶される。タイマは、上述のパンチ開始判定プログラムによって加速度入力が開始されたことが判定されたときにリセットされ、1フレームごとカウントされる。
【0096】
記憶領域130には、加速度入力の種類を示すフックフラグが記憶される。フックフラグは、加速度入力の開始時にはオフにされ、その後加速度入力の種類がフックであると判定されたときにオンにされる。
【0097】
記憶領域132には、動作させるグローブオブジェクトを示す情報が記憶される。上述のパンチ開始判定プログラムによって、加速度入力の行われたコントローラ14と記憶領域122の持ち手情報に基づいて、入力が行われているプレイヤの手が識別され、当該手に対応するグローブオブジェクト204aまたは204bを示す情報が記憶される。上述の描画プログラムでは、この記憶領域132に記憶されたグローブオブジェクト204の動作が制御されて、そのゲーム画像が表示される。
【0098】
記憶領域134には、動作パターンを示す情報が記憶される。この実施例では、グローブオブジェクト204をフック軌道で移動させるための動作パターンデータ、およびグローブオブジェクト204をストレート軌道で移動させるための動作パターンデータ等が記憶される。上述の描画プログラムでは、この記憶領域134に記憶されたフックまたはストレートの動作パターンデータに基づいて、グローブオブジェクト204のフック動作またはストレート動作が制御される。
【0099】
図19にはゲーム装置12の動作の一例が示される。まず、ステップS1で、CPU44は、第1コントローラ34を持つ手を右手および左手から選択する。上述の持ち手設定プログラムによって、オプション設定画面がモニタ30に表示され、コントローラ14の操作によって持ち手の設定が行われる。設定された持ち手を示す情報は記憶領域122に記憶される。
【0100】
次に、ステップS3で、CPU44は、上述の加速度取得プログラムに従って、受信したコントローラデータから加速度を取得して記憶領域124に記憶する。続いて、ステップS5で、CPU44は、3軸方向の合成ベクトルの大きさを算出する。上述のパンチ開始判定プログラムに従って、第1コントローラ34および第2コントローラ36のそれぞれについて、XYZ軸方向の加速度を成分とする3次元ベクトルの大きさを算出する。そして、ステップS7で、CPU44は、3軸合成ベクトルの大きさが所定の閾値以上であるか否かを判定する。つまり、加速度入力が開始されたか否かが判定される。なお、閾値以上の大きさになった合成ベクトルが第1コントローラ34かまたは第2コントローラ36のどちらの加速度によって算出されたかが分かるので、この判定で、加速度入力の開始されたコントローラ14を識別できる。ステップS7で“NO”の場合、処理はステップS29に進む。
【0101】
一方、ステップS7で“YES”の場合、つまり、加速度入力が開始されたときには、CPU44は、ステップS9で初期処理を実行する。この初期処理の動作は図20に示される。
【0102】
図20の初期処理を開始すると、CPU44は、ステップS41でタイマをリセットし、記憶領域128に0を記憶する。また、ステップS43で、CPU44は記憶領域130のフックフラグをオフにする。このように、この実施例では、加速度入力の開始時には当該入力がストレートであると仮定して、ストレートに対応付けられた描画処理が開始されるようにしている。さらに、ステップS45で、CPU44は、加速度入力の開始されたコントローラ14と持ち手情報とに基づいて、加速度入力の行われた手に対応するグローブオブジェクト204を特定し、動作させるグローブオブジェクトとして、当該グローブオブジェクト204を示す情報を記憶領域132に記憶する。初期処理を終了すると、処理は図19のステップS11へ戻る。
【0103】
図19のステップS11では、CPU44はフックフラグがオフであるか否かを判断する。つまり、加速度入力がフックであるとは未だ判定されていないか否かを判断する。ステップS11で“YES”であれば、CPU44は、ステップS13で、記憶領域128のタイマ値は所定値よりも小さいか否かを判定する。ここでは、経過時間判定プログラムに従って、加速度入力の開始からの経過時間(経過フレーム数)が所定時間(所定フレーム数)未満であるか否かを判定している。つまり、ストレートに対応付けられた描画の実行を、フックに対応付けられた描画にまだ変更可能であるか否かを判定している。
【0104】
ステップS13で“YES”の場合、つまり、経過時間がストレートからフックへの描画の変更が可能な時間である場合には、続くステップS15からステップS21の処理で、加速度入力の種類の判定を行う。すなわち、ステップS15で、CPU44は、加速度取得プログラムに従って、受信したコントローラデータから加速度情報を取得し、記憶領域124に記憶する。なお、加速度入力の行われたコントローラ14の加速度のみを取得するようにしてよい。
【0105】
続いて、ステップS17で、CPU44は、軸補正プログラムに従って、軸補正処理を実行する。軸補正処理の動作は図21に示される。
【0106】
図21の軸補正処理を開始すると、CPU44は、ステップS51で、第1コントローラ34を持つ手が左手であるか否かを、記憶領域122の持ち手情報に基づいて判定する。ステップS51で“YES”の場合、つまり、第1コントローラ34が基準と逆の手で把持されている場合には、CPU44は、ステップS53で、第1コントローラ34の加速度のX軸ベクトルを反転する。つまり、第1コントローラ34のX軸加速度の符号を逆にして、当該加速度を記憶領域124に記憶する。
【0107】
一方、ステップS51で“NO”の場合、つまり、第1コントローラ34が基準と同じ手で把持されている場合には、CPU44は、ステップS55で、第2コントローラ36の加速度のX軸ベクトルを反転する。つまり、第2コントローラ36のX軸加速度の符号を逆にして、当該加速度を記憶領域124に記憶する。
【0108】
続いて、ステップS57で、CPU44は、第2コントローラ36のY軸およびZ軸の傾きを補正する。つまり、図8に示したように、第2コントローラ36のY軸加速度およびZ軸加速度を、第2コントローラ36が把持されたときの方向によって補正し、当該補正された加速度を記憶領域124に記憶する。なお、第2コントローラ36が把持されたときの方向は、たとえば、持ち手設定時やプレイヤによる加速度入力の開始前等に予め取得しておく。軸補正処理を終了すると、処理は図19のステップS19に戻る。なお、軸補正は、加速度入力の行われたコントローラ14の加速度のみに対して行われるようにしてよい。
【0109】
図19のステップS19では、CPU44は、YZ判定プログラムに従ってYZ判定処理を実行する。上述のように、YZ判定では、コントローラ14が横向きに把持されてフックが打たれたか否かが判定される。YZ判定処理の動作は図22に示される。また、YZ判定では、ステップS7で加速度入力が開始されたことが判定されたコントローラ14の加速度値が使用される。
【0110】
図22のYZ判定処理を開始すると、CPU44は、ステップS71でZ軸加速度が所定の閾値以上であるか否かを判定する。上述の図9に示したように、コントローラ14が横向きに把持されてフック動作が行われたときには、Z軸方向にある程度の加速度が生じる。したがって、ステップS71で“NO”の場合には、加速度入力がフックではないと判断することができ、そのままYZ判定処理を終了する。
【0111】
一方、ステップS71で“YES”の場合には、CPU44は、ステップS73で、図10に示したようにYZ加速度が右回りに遷移しているか否かを判定する。つまり、Y軸加速度およびZ軸加速度を成分とする点がYZ平面内で右回りに遷移するように、Y軸加速度およびZ軸加速度が変化しているか否かを判定する。ステップS73で“NO”の場合には、加速度入力がフックであるとは判定できないので、処理はステップS77に進む。一方、ステップS73で“YES”の場合には、加速度入力がフックであると判定できるので、CPU44は、ステップS75で記憶領域130のフックフラグをオンにする。
【0112】
続いて、ステップS77では、CPU44は、次フレーム以降のステップS73の判定のために、Y軸加速度およびZ軸加速度を記憶領域126に追加的に記憶する。このYZ判定処理を終了すると、処理は図19のステップS21に戻る。
【0113】
図19のステップS21では、CPU44は、XY判定プログラムに従って、XY判定処理を実行する。上述のように、XY判定では、コントローラ14が縦向きに把持されてフックが打たれたか否かを判定する。XY判定処理の動作は図23に示される。XY判定では、ステップS7で加速度入力が開始されたことが判定されたコントローラ14の加速度値が使用される。
【0114】
図23のXY判定処理を開始すると、CPU44は、ステップS91で、1フレーム前と比べてX軸加速度が大きいか否かを判定する。ここでは、前回のフレームのX軸加速度が最小値であるか否かを判定している。ステップS91で“NO”の場合、加速度入力がフックであるとは判定できないので、処理はステップS103へ進む。
【0115】
一方、ステップS93で“YES”の場合、つまり、X軸加速度の最小値をつけるフレームを検出できた場合には、CPU44は、ステップS93で、1フレーム前のX軸加速度が所定の閾値以下であるか否かを判定する。図12に示したように、X軸加速度の最小値が閾値以下であるか否かを判定している。
【0116】
ステップS93で“NO”の場合、X軸加速度の最小値が閾値を下回らないので、加速度入力がフックではないことが判定される。処理はステップS103に進む。
【0117】
一方、ステップS93で“YES”の場合には、X軸加速度が閾値を下回って最小値となるフレーム(すなわち基準タイミング)が検出されたので、続くステップS95からステップS99の処理で、基準タイミング前後の加速度変化ベクトルV1およびV2に基づいて加速度入力の種類を判定する。
【0118】
ステップS95では、CPU44は、XY平面における第1ベクトルV1を算出する。具体的には、図14に示すように、基準タイミング(前回のフレーム)のX軸加速度およびY軸加速度を成分とする点Prからその次のタイミング(今回のフレーム)のX軸加速度およびY軸加速度を成分とする点PaまでのベクトルV1を算出する。第1ベクトルV1は、今回の加速度(X軸およびY軸)を成分とするベクトルと前回の加速度(X軸およびY軸)を成分とするベクトルの差によって算出される。
【0119】
また、ステップS97で、CPU44は、XY平面における第2ベクトルV2を算出する。具体的には、図14に示すように、基準タイミング(前回のフレーム)のX軸加速度およびY軸加速度を成分とする点Prからその前のタイミング(前々回のフレーム)のX軸加速度およびY軸加速度を成分とする点PbまでのベクトルV2を算出する。第2ベクトルV2は、前々回の加速度(X軸およびY軸)を成分とするベクトルと前回の加速度(X軸およびY軸)を成分とするベクトルの差によって算出される。
【0120】
そして、ステップS99で、CPU44は、第1ベクトルV1と第2ベクトルV2とのなす角度θを算出し、当該角度θが所定の閾値以上であるか否かを判定する。つまり、加速度入力がフックであるか否かを判定している。
【0121】
ステップS99で“NO”の場合、加速度変化ベクトルV1およびV2間の角度θが所定の角度より小さいので、加速度入力がフックではないことが判定される。処理はステップS103に進む。
【0122】
なお、ステップS99で“NO”の場合、および上述のステップS93で“NO”の場合には、加速度入力がストレートであることが分かる。したがって、次フレーム以降は、フック判定を行わないようにしてよい。たとえば、記憶領域128のタイマに所定値を加算することによって、次フレームから図13のステップS13の処理で“NO”と判断されるようにしてよい。
【0123】
一方、ステップS99で“YES”の場合には、加速度入力がフックであると判定できるので、CPU44は、ステップS101で記憶領域130のフックフラグをオンにする。
【0124】
続いて、ステップS103では、CPU44は、次フレーム以降のステップS91およびS93の判定、ならびにステップS95およびS97の算出等のために、X軸加速度およびY軸加速度を記憶領域126に追加的に記憶する。XY判定処理を終了すると、処理は図19のステップS23に戻る。
【0125】
一方、図19のステップS13で“NO”の場合、つまり、加速度入力の種類がフックであると判定されることなく既に所定時間が経過した場合には、加速度入力の種類の判定を行わないようにするために、処理はステップS23に進む。したがって、ストレートからフックへの不自然な動作変更をなくすことができる。
【0126】
また、ステップS11で“NO”の場合、つまり、フックフラグがオンに既に変更された場合には、その後の加速度入力の種類の判定を行う必要がないので、処理はステップS23に進む。
【0127】
続いて、ステップS23では、CPU44は、描画プログラムに従って描画処理を実行する。これによって、加速度入力の種類に対応付けられたゲーム処理が実行される。描画処理の動作は図24に示される。
【0128】
図24の描画処理を開始すると、CPU44は、ステップS111でフックフラグがオンであるか否かを判定する。上述のように、フックフラグは、初期処理でオフにされているが、YZ判定処理やXY判定処理で、加速度入力がフックであることが判定された場合には、フックフラグはオンに変更されている。なお、続くステップS113およびS115における移動制御対象は、記憶領域132の情報の示すグローブオブジェクト204である。
【0129】
ステップS111で“NO”の場合には、CPU44は、ステップS113でグローブオブジェクト204をストレートの軌道で移動させる。つまり、このステップS113の処理は、加速度入力の種類ストレートに対応付けられたゲーム処理の一部であり、これによって、グローブオブジェクト204は、ストレートに対応付けられた動作(ストレート軌道上の移動)を行うように制御される。具体的には、現在位置とストレートの動作パターンデータ等に基づいて、グローブオブジェクト204の新たな位置や向き等が算出される。
【0130】
一方、ステップS111で“YES”の場合には、つまり、加速度入力の種類がフックである場合には、CPU44は、ステップS115でグローブオブジェクト204をフックの軌道で移動させる。つまり、このステップS115の処理は、加速度入力の種類フックに対応付けられたゲーム処理の一部であり、これによって、グローブオブジェクト204は、フックに対応付けられた動作(フック軌道上の移動)を行うように制御される。具体的には、現在位置とフックの動作パターンデータ等に基づいて、グローブオブジェクト204の新たな位置や向き等が算出される。
【0131】
続いて、ステップS117で、CPU44はGPU50を用いてグローブオブジェクト204を描画する。これによって、ステップS113またはS115で算出された位置に移動したグローブオブジェクト204を含むゲーム画像が描画されて、当該ゲーム画像がモニタ30に表示される。
【0132】
したがって、加速度入力が開始されたばかりの頃は、図16に示すように、グローブオブジェクト204が仮にストレート軌道に沿って移動するゲーム画像が表示される。その後、加速度入力がフックであると判定された場合には、図18に示すように、グローブオブジェクト204がフック軌道に沿って移動するゲーム画像(つまり、プレイヤキャラクタ200がフックパンチを打っている)が表示される。一方、所定時間が経過しても加速度入力がフックであるとは判定されなかった場合には、図17に示すように、グローブオブジェクト204がストレート軌道に沿って移動するゲーム画像(つまり、プレイヤキャラクタ200がストレートパンチを打っている)が表示される。
【0133】
描画処理を終了すると、処理は図19のステップS25に戻る。図19のステップS25では、CPU44は記憶領域128のタイマに1を加算する。つまり、加速度入力開始からの経過時間(経過フレーム数)をカウントする。
【0134】
続いて、ステップS27で、CPU44はパンチの打ち終わりであるか否かを判定する。たとえば、所定時間をかけて描画処理を実行しパンチの描画を終了したか否かを判定する。ステップS27で“NO”の場合、処理はステップS11に戻る。
【0135】
一方、ステップS27で“YES”の場合には、1つのパンチの描画を完了したので、CPU44は、ステップS29で処理を終了するか否かを判定する。たとえば、プレイヤキャラクタ200または敵キャラクタ202の体力が0になったか否かを判定したり、所定数のラウンドを終了したか否かを判定したりする。ステップS29で“NO”の場合には、処理はステップS3に戻り、試合を続ける。ステップS29で“YES”の場合には、この処理を終了する。
【0136】
この実施例によれば、加速度入力の開始が検出されたときには、加速度入力の第1種類に対応付けられた第1の描画処理を開始するようにして、グローブオブジェクト204が第1種類に対応付けられた動作(ストレートの軌道で移動)を行う画像を描画するようにした。つまり、プレイヤによって加速度入力が開始されたときには、加速度入力の第1種類に対応付けられた動作をオブジェクトが行う画像がすぐに画面上に表示され、したがって、当該画像を応答性良く描画することができる。その後、加速度入力の種類が第2種類であると判定されたときには、第1の描画処理に代えて、第2種類に対応付けられた第2の描画処理を実行するようにして、グローブオブジェクト204が第2種類に対応付けられた動作(フックの軌道で移動)を行う画像を描画するようにした。したがって、実際にプレイヤの行った加速度入力の種類に従った正確な動作をオブジェクトが行う画像を画面上に表示することができる。さらに、加速度入力の開始から所定時間が経過したときにはその後加速度入力の種類の判定を行わないようにする場合には、不自然な動作変更が行われるのを防止でき、プレイヤに違和感を与えることがない。
【0137】
また、加速度入力の種類を2軸方向の加速度の変化の特性に基づいて判定するようにした。詳しくは、第1軸(X軸)方向の加速度が所定の閾値を越えて最小値または最大値となった基準タイミングを検出し、2軸方向の加速度に基づいて基準タイミングの前後の加速度の変化ベクトルV1およびV2を算出し、第1ベクトルV1と第2ベクトルV2とのなす角度に基づいて、加速度入力の種類を識別するようにした。したがって、コントローラ14の持ち方による誤認識を軽減することができる。
【0138】
なお、上述の実施例では、加速度入力の種類に応じてグローブオブジェクト204の移動を制御するようにしたが、他の実施例では、1つのオブジェクトとしてのプレイヤキャラクタ200のパンチアクションを加速度入力の種類に応じて制御するようにしてもよい。
【0139】
また、上述の各実施例では、加速度入力が開始されたとき、種類がストレートであるものと仮定してストレートに対応付けられたゲーム処理を開始し、その後種類がフックであるか否かを判定するようにしたが、他の実施例では、最初に種類がフックであるものと仮定してフックに対応付けられたゲーム処理を開始し、その後種類がストレートであるか否かを判定するようにしてもよい。
【図面の簡単な説明】
【0140】
【図1】この発明の一実施例のゲームシステムの概要を示す外観図である。
【図2】ゲームシステムの電気的構成の一例を示すブロック図である。
【図3】第1コントローラの外観の一例を示す図解図であり、図3(A)は後方上側から見た斜視図であり、図3(B)は前方下側から見た斜視図である。
【図4】第2コントローラの外観の一例を示す図解図であり、図4(A)は後方上側から見た斜視図であり、図4(B)は前方下側から見た斜視図である。
【図5】コントローラの電気的構成の一例を示すブロック図である。
【図6】メモリマップの一例を示す図解図である。
【図7】第1コントローラの持ち手と加速度軸方向との関係を示す図解図であり、図7(A)は右手持ちの場合を示し、図7(B)は左手持ちの場合を示す。
【図8】第2コントローラの加速度センサ出力に対する軸補正を示す図解図である。
【図9】プレイヤに横向きに把持された第1コントローラを示す図解図であり、図9(A)はプレイヤ側から見た図を示し、図9(B)は上から見た図を示す。
【図10】図9の横向きの持ち方でフックが打たれた場合のY軸加速度およびZ軸加速度のYZ平面における変化を模式的に示す図解図である。
【図11】プレイヤに縦向きに把持された第1コントローラを示す図解図であり、図11(A)はプレイヤ側から見た図を示し、図11(B)は上から見た図を示す。
【図12】図11の縦向きの持ち方でフックが打たれた場合のX軸加速度の時間変化を模式的に示す図解図である。
【図13】プレイヤの手の中でZ軸周りに回転した状態で縦向きに把持された第1コントローラを示す図解図である。
【図14】縦向きの持ち方でパンチが打たれた場合のX軸加速度およびY軸加速度のXY平面における変化と、加速度変化ベクトル間の角度の算出とを模式的に示す図解図であり、図14(A)はフックが打たれた場合を示し、図14(B)は図13のZ軸周り回転状態でストレートが打たれた場合を示す。
【図15】プレイヤによる加速度入力が開始される前のゲーム画面の一例を示す図解図である。
【図16】プレイヤの右手で加速度入力が開始された場合のゲーム画面の一例を示し、グローブオブジェクトがストレート軌道で移動を開始している場面を示す図解図である。
【図17】図16の後に加速度入力の種類がフックであると判定されなかった場合のゲーム画面の一例を示し、グローブオブジェクトがストレート軌道で移動した場面を示す図解図である。
【図18】図16の後に加速度入力の種類がフックであると判定された場合のゲーム画面の一例を示し、グローブオブジェクトがフック軌道で移動した画面を示す図解図である。
【図19】ゲーム装置のCPUの動作の一例を示すフロー図である。
【図20】図19の初期処理の動作の一例を示すフロー図である。
【図21】図19の軸補正処理の動作の一例を示すフロー図である。
【図22】図19のYZ判定処理の動作の一例を示すフロー図である。
【図23】図19のXY判定処理の動作の一例を示すフロー図である。
【図24】図19の描画処理の動作の一例を示すフロー図である。
【符号の説明】
【0141】
10 …ゲームシステム
12 …ゲーム装置
14 …コントローラ
22 …光ディスク
30 …モニタ
34 …第1コントローラ
36 …第2コントローラ
44 …CPU
48 …メインメモリ
50 …GPU
84,90 …加速度センサ
204 …グローブオブジェクト
【技術分野】
【0001】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、加速度センサを用いて検出されるプレイヤの動作に応じてゲーム処理が実行される、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
加速度センサを用いて検出されるプレイヤのパンチ動作に応じてボクシングゲームが実行されるゲーム装置の一例が特許文献1に開示されている。特許文献1に記載された技術では、コントローラとしてのグローブユニットに、当該グローブユニットの前後(Y)、左右(X)および上下(Z)方向の3軸の加速度を検出する加速度センサが設けられており、当該加速度センサの出力波形の解析によってパンチ種類が識別される。具体的には、まず、パンチの打ち始めから打ち終わりまでの区間がY軸加速度の波形から検出される。次に、当該パンチの打ち始めから打ち終わりまでの区間内のX軸加速度およびZ軸加速度のそれぞれの波形から、たとえば、最大値と最小値、振幅、ピークの出現回数、積分値などのデータがそれぞれ抽出される。そして、各抽出データとパンチ種類(ストレート、フックおよびアッパーパンチ)ごとの各波形パターンとに基づいて、パンチの種類が判別される。パンチ種類が識別されると、当該パンチ種類に応じたゲーム処理が行われる。
【特許文献1】特開2002−153673号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、特許文献1に記載された技術では、プレイヤがパンチ動作を終えてから当該パンチの種類の判定が行われて当該種類に応じたゲーム処理が実行されるので、プレイヤのパンチ動作を表すような画像を描画することができない。すなわち、特許文献1の技術において、プレイヤのパンチ動作を表すような画像、たとえばプレイヤキャラクタがパンチを打っている画像やプレイヤの拳を示すオブジェクトが移動する画像を描画しようとすると、プレイヤがパンチ動作を終えた後になってようやく当該画像が画面上に表示されることとなる。プレイヤの入力に対する応答速度が速いことが求められるこの種のアクションゲームや対戦ゲーム等において、この応答性の悪さは問題であり、ゲームの面白さを低下させる。このため、特許文献1の技術では、主観視点を用いた描画が基本的に採用されており、敵キャラクタにパンチがヒットしたと判定されるときには、プレイヤのパンチ動作を表すような画像を描画することなく、敵キャラクタがダメージを受ける画像がいきなり表示される。
【0004】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【0005】
この発明の他の目的は、加速度センサを有する入力手段を用いた加速度入力の種類に応じた画像を応答性良く描画することができる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために後述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
【0007】
この発明に従った第1の発明のゲームプログラムは、少なくとも2軸方向の加速度を検出する加速度センサを有する入力手段を含み、入力手段を用いた加速度の入力の種類に応じて仮想ゲーム空間内のオブジェクトを制御するゲーム装置のコンピュータにおいて実行されるゲームプログラムである。ゲームプログラムは、加速度取得ステップ、入力開始判定ステップ、第1描画処理ステップ、第2条件判定手段、および第2描画処理ステップをコンピュータに実行させる。加速度取得ステップは、加速度センサによって検出される加速度を取得する。入力開始判定ステップは、加速度取得ステップによって取得された加速度に基づいて、入力手段を用いた加速度の入力が開始されたか否かを判定するための第1条件を満たしたか否かを判定する。第1描画処理ステップは、加速度の入力が開始されたことが判定されたとき、予め決められた第1の動作パターンにしたがって動作するオブジェクトの描画を開始する。第2条件判定ステップは、第1描画処理ステップが開始された後、加速度取得ステップによって取得された加速度が第1条件とは異なる第2条件を満たしたかどうかを判定する。第2描画処理ステップは、加速度が第2条件を満たしたと判定されたとき、第1の動作パターンに代えて、第1の動作パターンとは異なる第2の動作パターンにしたがって動作するオブジェクトを描画する。
【0008】
第1の発明では、ゲームプログラムは、ゲーム装置(12)のコンピュータ(44、50)に以下に説明する各ステップを実行させ、加速度の入力の種類に応じて仮想ゲーム空間内のオブジェクト(200、204)を制御する。ゲーム装置は、プレイヤによって操作される入力手段(14、34、36)を含み、入力手段は少なくとも2軸方向の加速度を検出する加速度センサ(84、90)を有している。加速度センサによって検出される加速度は加速度取得ステップ(S3、S15)によって取得される。加速度の入力が開始されたか否かを判定するための第1条件を満たしたか否かが入力開始判定ステップ(S5、S7)によって判定される。加速度の入力が開始されたと判定されるときには、第1描画処理ステップ(S113、S117)によってオブジェクトの描画が開始される。この描画では、予め決められた第1の動作パターンにしたがってオブジェクトが動作する。これによって、後述される実施例のボクシングゲームでは、オブジェクトがストレートの軌道で移動する画像がモニタに表示される。その後、第2条件判定ステップ(S19、S21)によって、加速度が第2条件を満たしたかどうかが判定される。加速度が第2条件を満たしたと判定されたときには、第2描画処理ステップ(S115、S117)によって、第1の動作パターンに代えて、第2の動作パターンにしたがって動作するオブジェクトが描画されるこれによって、後述される実施例のボクシングゲームでは、オブジェクトがフックの軌道で移動する画像がモニタに表示される。なお、加速度が第2条件を満たさなかったときには、そのまま第1の動作パターンにしたがって動作するオブジェクトの描画が続けられる。したがって、後述される実施例のボクシングゲームでは、オブジェクトが最後までストレートの軌道で移動する画像が表示される。
【0009】
第1の発明によれば、加速度の入力が開始されたときに、第1の動作パターンにしたがって動作するオブジェクトの描画を開始するので、プレイヤによる加速度の入力に対して応答性よく画像の描画を開始することができる。その後、加速度が第2条件を満たしたと判定されたときには、第2の動作パターンにしたがって動作するオブジェクトが描画されるので、プレイヤによる加速度の入力の種類に応じて異なる動作をオブジェクトが行う画像を表示することができる。
【0010】
請求項2の発明は、請求項1に記載のゲームプログラムであって、加速度の入力が開始されたことが判定されてから所定時間が経過したか否かを判定する経過時間判定ステップをコンピュータに更に実行させ、所定時間が経過したことが判定された後は、第2条件判定ステップによる判定を行わない。
【0011】
請求項2の発明では、経過時間判定ステップ(S13)によって、加速度の入力の開始から所定時間が経過したか否かが判定される。所定時間が経過したと判定された後には、第2条件の判定が行われない。このため、加速度の入力の開始から所定時間内に第2条件が満たされなかったときには、第2の動作パターンへの変更が行われなくなり、第1の動作パターンがそのまま続けられることとなる。したがって、オブジェクトの動作の不自然な変更が行われることがない。
【0012】
請求項3の発明は、請求項1に記載のゲームプログラムであり、第1条件とは、加速度の各軸方向の合成ベクトルの大きさが閾値を超えたかどうかである。したがって、プレイヤによって入力手段を用いた加速度の入力が開始されたか否かを適切に判断することができる。
【0013】
この発明に従った第2の発明のゲーム装置は、少なくとも2軸方向の加速度を検出する加速度センサを有する入力手段を含み、入力手段を用いた加速度の入力の種類に応じて仮想ゲーム空間内のオブジェクトを制御する。ゲーム装置は、加速度取得手段、入力開始判定手段、第1描画処理手段、第2条件判定手段、および第2描画処理手段を備える。加速度取得手段は、加速度センサによって検出される加速度を取得する。入力開始判定手段は、加速度取得手段によって取得された加速度に基づいて、入力手段を用いた加速度の入力が開始されたか否かを判定するための第1条件を満たしたか否かを判定する。第1描画処理手段は、加速度の入力が開始されたことが判定されたとき、予め決められた第1の動作パターンにしたがって動作するオブジェクトの描画を開始する。第2条件判定手段は、第1描画処理手段による描画が開始された後、加速度取得手段によって取得された加速度が第1条件とは異なる第2条件を満たしたかどうかを判定する。第2描画処理手段は、加速度が第2条件を満たしたと判定されたとき、第1の動作パターンに代えて、第1の動作パターンとは異なる第2動作パターンにしたがって動作するオブジェクトを描画する。
【0014】
第2の発明は、上述の第1の発明のゲームプログラムに相当するゲーム装置であり、第1の発明と同様の効果を奏する。
【発明の効果】
【0015】
この発明によれば、加速度の入力が開始されたときに、第1の動作パターンにしたがって動作するオブジェクトの描画を開始し、その後、加速度が第2条件を満たしたと判定されたときには、第2の動作パターンにしたがって動作するオブジェクトを描画するようにした。したがって、プレイヤの加速度入力の種類に応じて動作するオブジェクトの画像を応答性良く描画することができる。
【0016】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0017】
図1を参照して、この発明の一実施例であるゲームシステム10は、ゲーム装置12およびコントローラ14を含む。ゲーム装置12は据置型ゲーム装置である。コントローラ14は、ユーザないしプレイヤの入力装置ないし操作装置である。ゲーム装置12とコントローラ14とは無線によって接続される。
【0018】
ゲーム装置12は、略直方体のハウジング16を含み、ハウジング16の前面にはディスクスロット18およびメモリカードスロットカバー20が設けられる。ディスクスロット18から、ゲームプログラムおよびデータを記憶した情報記憶媒体の一例である光ディスク22(図2)が挿入されて、ハウジング16内のディスクドライブ24(図2)に装着される。メモリカードスロットカバー20の内側にはメモリカードスロットが設けられており、外部メモリカード26(図2)が挿入される。メモリカード26は、光ディスク22(図2)から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイされたゲームのゲームデータ(結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。また、上記ゲームデータの保存は、外部メモリカード26に代えて、たとえばフラッシュメモリ等の内部メモリに対して行うようにしてもよい。
【0019】
ゲーム装置12のハウジング16の後面には、AVケーブルコネクタ(図示せず)が設けられ、当該コネクタを用いて、ゲーム装置12はAVケーブル28を介してモニタ(ディスプレイ)30に接続される。このモニタ30は典型的にはカラーテレビジョン受像機であり、AVケーブル28は、ゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)30の画面上にたとえば3Dビデオゲームのゲーム画像が表示され、内蔵されるスピーカ32からゲーム音楽や効果音などのステレオゲーム音声が出力される。
【0020】
ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、ゲーム装置12を駆動するのに適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【0021】
コントローラ14は、詳細は後述されるが、それぞれが片手で把持可能な第1コントローラ34および第2コントローラ36を含む。第2コントローラ36の後端から延びるケーブル38の先端にはコネクタ40が設けられており、当該コネクタ40は、第1コントローラ34の後端面に設けられるコネクタ42(図3、図5)に接続される。第2コントローラ36の操作データないし入力データはケーブル38を介して第1コントローラ34に与えられる。第1コントローラ34は、第1コントローラ34自身の入力データと第2コントローラ36の入力データとを含むコントローラデータをゲーム装置12に送信する。
【0022】
このゲームシステム10において、ゲーム(または他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくは実行したいと思う他のアプリケーション)を記憶している適宜の光ディスク22を選択し、その光ディスク22をゲーム装置12のディスクスロット18からディスクドライブ24にローディングする。これに応じて、ゲーム装置12がその光ディスク22に記憶されているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ14を操作する。
【0023】
図2はゲームシステム10の電気的な構成を示すブロック図である。ゲーム装置12はCPU44を含む。このCPU44はゲームプロセサとして機能し、ゲーム装置12の全体的な制御を担当する。CPU44には、バスを介してメモリコントローラ46が接続される。メモリコントローラ46は主として、CPU44の制御の下で、バスを介して接続されるメインメモリ48の書込みや読出しを制御する。このメモリコントローラ46にはGPU(Graphics Processing Unit) 50が接続される。
【0024】
GPU50は、描画手段の一部を形成し、たとえばシングルチップASICで構成され、メモリコントローラ46を介してCPU44からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従って、ジオメトリユニット52およびレンダリングユニット54によって3Dのゲーム画像を生成する。つまり、ジオメトリユニット52は、3次元座標系の各種オブジェクトの回転,移動,変形等の座標演算処理を行う。オブジェクトは、複数のポリゴン(ポリゴンとは少なくとも3つの頂点座標によって定義される多角形平面をいう。)で構成されている。レンダリングユニット54は、各種オブジェクトの各ポリゴンにテクスチャ(模様画像)を貼り付ける処理などの画像生成処理を施す。したがって、GPU50によって、ゲーム画面上に表示すべき3Dの画像データが生成され、その画像データがフレームバッファ56内に記憶される。
【0025】
なお、GPU50が作画コマンドを実行するにあたって必要なデータ(プリミティブまたはポリゴンやテクスチャ等)は、GPU50がメモリコントローラ46を介してメインメモリ48から入手する。
【0026】
フレームバッファ56は、たとえばラスタスキャンモニタ30の1フレーム分の画像データを描画(蓄積)しておくためのメモリであり、GPU50によって1フレーム毎に書き換えられる。具体的には、フレームバッファ56は、1画素(ピクセル)毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、R,G,B,Aについてのデータであり、たとえば、8ビットのR(赤)データ、8ビットのG(緑)データ、8ビットのB(青)データおよび8ビットのA(アルファ)データである。なお、Aデータは、マスク(マット画像)についてのデータである。後述のビデオI/F66がメモリコントローラ46を介してフレームバッファ56のデータを読み出すことによって、モニタ30の画面上にゲーム画像が表示される。
【0027】
また、Zバッファ58は、(フレームバッファ56に対応する画素数×1画素当たりの奥行きデータのビット数)に相当する記憶容量を有し、フレームバッファ56の各記憶位置に対応するドットの奥行き情報または奥行きデータ(Z値)を記憶する。
【0028】
なお、フレームバッファ56およびZバッファ58は、ともにメインメモリ48の一部を用いて構成されてもよく、また、これらはGPU50の内部に設けられてもよい。
【0029】
メモリコントローラ46はまた、DSP(Digital Signal Processor)60を介して、オーディオ用のRAM(以下、「ARAM」という。)62に接続される。したがって、メモリコントローラ46は、メインメモリ48だけでなく、サブメモリとしてのARAM62の書込みおよび/または読出しを制御する。
【0030】
DSP60は、サウンドプロセサとして働き、メインメモリ48に記憶されたサウンドデータを用いたり、ARAM62に書き込まれている音波形(音色)データを用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【0031】
メモリコントローラ46は、バスを介してさらに各インタフェース(I/F)64,66,68,70および72に接続される。コントローラI/F64は、ゲーム装置12にBluetooth通信ユニット74を介して接続されるコントローラ14のためのインタフェースである。具体的に言うと、Bluetooth通信ユニット74は、本体側通信装置であり、コントローラ14側通信装置である無線モジュール76(図5)から送信されるコントローラデータ(入力データ)を受信する。コントローラI/F64は、Bluetooth通信ユニット74によって受信されたコントローラデータを、メモリコントローラ46を通してCPU44に与える。ビデオI/F66は、フレームバッファ56にアクセスし、GPU50によって生成された画像データを読み出して、画像信号または画像データ(ディジタルRGBAピクセル値)をAVケーブル28(図1)を介してモニタ30に与える。
【0032】
外部メモリI/F68は、ゲーム装置12の前面から挿入される外部メモリカード26をメモリコントローラ46に連係させる。それによって、メモリコントローラ46を介して、CPU44がこのメモリカード26にデータを書き込み、またはメモリカード26からデータを読み出すことができる。オーディオI/F70は、メモリコントローラ46を通してDSP60から与えられるオーディオデータまたは光ディスク22から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号(音声信号)をモニタ30のスピーカ32に与える。
【0033】
ディスクI/F72は、ディスクドライブ24をメモリコントローラ46に接続し、したがって、CPU44がディスクドライブ24を制御する。このディスクドライブ24によって光ディスク22から読み出されたプログラムおよびデータが、CPU44の制御の下でメインメモリ48に書き込まれる。CPU44は、このプログラムに従ってゲームまたはアプリケーションのための処理を実行する。
【0034】
図3には第1コントローラ34の外観の一例が示される。図3(A)は、第1コントローラ34を上面後方から見た斜視図であり、図3(B)は、第1コントローラ34を下面前方から見た斜視図である。
【0035】
第1コントローラ34は、たとえばプラスチック成型によって形成されたハウジング78を有している。ハウジング78は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング78は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、第1コントローラ34を用いて、それに設けられたボタンを押下することと、第1コントローラ34自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【0036】
ハウジング78には、複数の操作ボタンが設けられる。すなわち、ハウジング78の上面には、十字キー80a、Xボタン80b、Yボタン80c、Aボタン80d、セレクトスイッチ80e、メニュースイッチ80f、およびスタートスイッチ80gが設けられる。一方、ハウジング78の下面には凹部が形成されており、当該凹部の後方側傾斜面にはBボタン80hが設けられる。これら各ボタン(スイッチ)80a−80hには、ゲーム装置12が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。また、ハウジング78の上面には、遠隔からゲーム装置12本体の電源をオン/オフするための電源スイッチ80iが設けられる。第1コントローラ34に設けられる各ボタン(スイッチ)は、包括的に参照符号80を用いて示されることもある。
【0037】
また、ハウジング78の後面には、上述のコネクタ42が設けられている。コネクタ42は、たとえば32ピンのエッジコネクタであり、第1コントローラ34に他の機器を接続するために利用される。この実施例では、コネクタ42には第2コントローラ36のコネクタ40が接続される。また、ハウジング78上面の後端側には複数のLED82が設けられ、この複数のLED82によって当該コントローラ14のコントローラ番号(コントローラの識別番号)が示される。ゲーム装置12には、たとえば最大4つのコントローラ14が接続可能であり、ゲーム装置12に複数のコントローラ14が接続される場合には、各コントローラ14には、たとえば接続順にコントローラ番号が付与される。各LED82はコントローラ番号と対応付けられており、当該コントローラ番号に対応するLED82が点灯される。
【0038】
また、第1コントローラ34のハウジング78内には加速度センサ84(図5)が設けられている。加速度センサ84としては、典型的には静電容量式の加速度センサが用いられ得る。加速度センサ84は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。加速度センサ84は、少なくとも2つの互いに直交する軸方向の加速度を検出する。たとえば、2軸または3軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度を、各軸に沿った直線成分の加速度としてそれぞれ検出する。具体的には、この実施例では、3軸加速度センサが適用され、第1コントローラ34の上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向のそれぞれで加速度を検知する。この加速度センサ84の各軸ごとに検出される加速度に所定の演算処理を施すことによって、第1コントローラ34の傾きや回転を算出することが可能である。たとえば、加速度センサ84が静止した状態においては、常に重力加速度が加わっており、この重力加速度に対する各軸の傾きに応じた加速度が各軸ごとに検出される。具体的には、加速度センサ84が水平状態で静止している(すなわち、XおよびZ軸方向が水平方向であり、かつ、Y軸方向が鉛直方向である)ときには、加速度センサ84のY軸に1Gの重力加速度が加わり、他の軸X,Zの重力加速度はほぼ0となる。次に、加速度センサ84の姿勢が水平状態より傾くと、加速度センサ84の各軸方向と重力方向との角度に応じて、重力加速度が加速度センサ84の各軸に分散され、このとき、加速度センサ84の各軸の加速度値が検出される。このような各軸ごとの加速度値に演算を加えることによって、重力方向に対する加速度センサ84の姿勢を算出することができる。
【0039】
なお、加速度センサ84としては、ハウジング78の形状または第1コントローラ34の持たせ方の限定等に応じて、上下方向、左右方向および前後方向のうちいずれか2方向の加速度を検出する2軸加速度センサが用いられてもよい。
【0040】
図4には第2コントローラ36の外観の一例が示される。図4(A)は、第2コントローラ36を上面後方から見た斜視図であり、図4(B)は、第2コントローラ36を下面前方から見た斜視図である。なお、図4では、第2コントローラ36のケーブル38は省略されている。
【0041】
第2コントローラ36は、たとえばプラスチック成型によって形成されたハウジング86を有している。ハウジング86は、平面視では、前後方向(図4のZ軸方向)に略細長い楕円形状を有し、後端側の左右方向(図4のX軸方向)の幅が先端側のそれよりも狭くされている。また、ハウジング86は、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している(図8も参照)。ハウジング86は、第1コントローラ34と同様に、全体として大人や子供の片手で把持可能な大きさであるが、長手方向(Z軸方向)の長さは、第1コントローラ34のハウジング78よりもやや短くされている。この第2コントローラ36でも、プレイヤは、ボタンやスティックを操作することと、コントローラ自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【0042】
ハウジング86の上面の先端側には、アナログジョイスティック88aが設けられる。ハウジング86の先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向(図4に示すY軸方向)に並べて、Zボタン88bおよびCボタン88cが設けられる。アナログジョイスティック88aおよび各ボタン88b,88cには、ゲーム装置12が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。第2コントローラ36に設けられるアナログジョイスティック88aおよび各ボタン88b,88cは、包括的に参照符号88を用いて示されることもある。
【0043】
また、第2コントローラ36のハウジング86内には加速度センサ90(図5)が設けられている。この加速度センサ90としては、第1コントローラ34の加速度センサ84と同様の加速度センサが適用される。具体的には、3軸加速度センサが適用され、第2コントローラ36の上下方向(図4に示すY軸方向)、左右方向(図4に示すX軸方向)および前後方向(図4に示すZ軸方向)の3軸方向のそれぞれで加速度を検知する。したがって、第1コントローラ34の場合と同様に、検出された加速度に適宜な演算処理を施すことによって、第2コントローラ36の傾きや回転、重力方向に対する加速度センサ90の姿勢などを算出することができる。
【0044】
なお、図3に示した第1コントローラ34および図4に示した第2コントローラ36の形状や、ボタン(スイッチまたはスティック等)の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置等に適宜変更され得る。
【0045】
また、コントローラ14の電源は、第1コントローラ34内に取替可能に収容されるバッテリ(図示せず)によって与えられる。第2コントローラ36には、コネクタ42、コネクタ40およびケーブル38を介してこの電源が供給される。
【0046】
図5には、第1コントローラ34と第2コントローラ36とが接続されたときのコントローラ14の電気的構成の一例が示される。
【0047】
第1コントローラ34は、その内部に通信部92を備え、通信部92には、操作部80、加速度センサ84およびコネクタ42が接続される。操作部80は、上述の操作ボタンないし操作スイッチ80a‐80iを示す。操作部80が操作されると、その操作信号が通信部92に与えられる。
【0048】
加速度センサ84が検出した加速度を示すデータは、通信部92へ出力される。加速度センサ84は、たとえば最大200フレーム/秒程度のサンプリング周期を有する。
【0049】
コネクタ42には、第2コントローラ36から延びるケーブル38のコネクタ40が接続される。コネクタ40には、第2コントローラ36の操作部88および加速度センサ90が接続される。操作部88は、上述のスティック88aおよび操作ボタン88b、88cを示す。操作部88が操作されると、その操作信号がケーブル38、コネクタ40およびコネクタ42等を介して通信部92に与えられる。また、加速度センサ90も、加速度センサ84と同様のサンプリング周期を有しており、検出された加速度を示すデータを通信部92に与える。
【0050】
通信部92は、マイクロコンピュータ(マイコン)94、メモリ96、無線モジュール76およびアンテナ98を含む。マイコン94は、処理の際にメモリ96を記憶領域(作業領域やバッファ領域)として用いながら、無線モジュール76を制御して、取得したデータをゲーム装置12に送信したりゲーム装置12からのデータを受信したりする。
【0051】
操作部80および加速度センサ84ならびに操作部88および加速度センサ90からマイコン94へ出力されたデータは、一時的にメモリ96に格納される。通信部92からゲーム装置12のBluetooth通信ユニット74への無線送信は所定の周期毎に行われる。なお、ゲームの処理は1/60秒を単位として行われることが一般的であるので、第1コントローラ34からの送信はそれと同等かそれより短い周期で行うことが必要となる。マイコン94は、ゲーム装置12への送信タイミングが到来すると、メモリ96に格納されている操作部80および88の操作データならびに加速度センサ84および90の加速度データを含むデータを、コントローラデータとして無線モジュール76へ出力する。無線モジュール76は、Bluetooth(ブルートゥース)(登録商標)のような近距離無線通信技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ98から放射する。つまり、コントローラデータは、無線モジュール76で微弱電波信号に変調されて第1コントローラ34から送信される。微弱電波信号はゲーム装置12側のBluetooth通信ユニット74で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置12はコントローラデータを取得することができる。ゲーム装置12のCPU44は、コントローラ14から取得したコントローラデータに基づいてゲーム処理を行う。なお、第1コントローラ34とゲーム装置12との無線通信は、無線LANなど他の規格に従って実行されてもよい。
【0052】
このゲームシステム10では、プレイヤがコントローラ14を動かすことによってゲームに対する操作または入力を行うことができる。上述のように、第1コントローラ34には少なくとも2軸方向の加速度を検出する加速度センサ84が内蔵され、第2コントローラ36にも同様の加速度センサ90が内蔵されており、コントローラ14がプレイヤによって動かされると、当該動作に応じた加速度が検出される。ゲーム装置12では、当該検出された加速度に応じてゲーム処理が実行される。換言すれば、プレイヤは、コントローラ14を適宜に動かすことによって、ゲーム装置12に対して加速度を入力することができ、ゲーム装置12では当該加速度入力に応じてゲーム処理が実行される。具体的には、ゲーム装置12では、検出された加速度に基づいて、プレイヤの操作や入力動作が判定される。つまり、加速度入力の種類や方向が識別されて、当該加速度入力の種類や方向に対応付けられたゲーム処理が実行され、たとえば、当該加速度入力の種類や方向に対応付けられた動作をオブジェクトが行う画像が表示される。
【0053】
この実施例では、ゲームシステム10をボクシングゲームに適用した場合を説明する。プレイヤは、第1コントローラ34を利き手に持ち、第2コントローラ36を他の手に持って、左右の腕のいずれかでパンチを打つ動作を行うことによって、このボクシングゲームをプレイすることができる。具体的には、ゲーム装置12では、プレイヤのパンチ動作に応じて検出される加速度データに基づいて、当該パンチ動作の種類、すなわち加速度入力の種類ないし方向が判定される。この実施例では、フックとストレートの2種類のパンチ動作が加速度に基づいて識別される。そして、当該識別された種類に対応付けられたゲーム処理が実行される。たとえば、プレイヤがどちらかの腕でフックを打つと、ゲーム画面上では、プレイヤキャラクタが同じ腕でフックを打つ動作を行う。あるいは、同じ側のグローブの動作が、当該グローブがフックの軌道で移動するように制御される。一方、当該プレイヤがどちらかの腕でストレートを打つと、ゲーム画面上では、プレイヤキャラクタが同じ腕でストレートを打つ動作を行う。あるいは、同じ側のグローブの動作が、当該グローブがストレートの軌道で移動するように制御される。
【0054】
この実施例のボクシングゲームを実行する際のメモリマップの一例が図6に示される。メインメモリ48はプログラム記憶領域100およびデータ記憶領域102を含む。プログラムおよびデータの一部は、光ディスク22から一度に全部または必要に応じて部分的にかつ順次的に読み出され、メインメモリ48に記憶される。なお、図6にはメモリマップの一部のみが示されており、処理に必要な他のプログラムおよびデータも記憶されている。
【0055】
記憶領域104には、持ち手設定プログラムが記憶されている。このプログラムによって、第1コントローラ34を持つ手がいずれであるかを示す持ち手情報の設定が行われる。上述のように、第1コントローラ34に内蔵される加速度センサ84の3軸方向(図3)と、第2コントローラ36に内蔵される加速度センサ90の3軸方向(図4)とが予め決められているので、第1コントローラ34および第2コントローラ36をそれぞれどちらの手で持つかに応じて、プレイヤがフックを打ったときに検出される加速度の方向が逆転する。図7に、第1コントローラ34の持ち手と加速度センサ84に設定された軸方向との関係が示されている。この図7では、プレイヤ側から見た図が示されており、第1コントローラ34は縦向き(Z軸方向が鉛直方向)に把持されている。図7(A)に示す右手持ちの場合と、図7(B)に示す左手持ちの場合とでは、フックパンチの曲げる方向が反対になる。つまり、加速度センサ84のX軸方向に対するフック動作の方向が逆になるので、検出されるX加速度の方向も逆になる。したがって、コントローラ14の持ち手の違いに応じて、検出される加速度の方向を補正するために、予め持ち手情報を取得しておく。この持ち手設定は、たとえば試合開始前のオプション設定画面で第1コントローラ34を持つ手が右手か左手かを選択させることによって行われる。または、右利きか左利きかを選択させてもよい。コントローラ14のうち第1コントローラ34はメインコントローラ、第2コントローラ36は拡張的なサブコントローラの位置付けであり、第1コントローラ34が利き手で把持されることが前提であるから、利き手によって持ち手情報を取得できる。
【0056】
図6に戻って、記憶領域106には加速度取得プログラムが記憶される。このプログラムによって、コントローラ14から受信したコントローラデータから加速度データが定期的(1フレームごと)に取得される。上述のように、コントローラデータには、第1コントローラ34の加速度センサ84の加速度データおよび第2コントローラ36の加速度センサ90の加速度データが含まれている。また、この実施例で使用される加速度センサ84および90は、上述のように、重力加速度を常に検出するので、各軸の加速度には、第1コントローラ34または第2コントローラ36の姿勢(持ち方)に応じた重力加速度成分が含まれている。したがって、たとえば試合開始前にプレイヤがパンチを打たずに構えている状態で加速度を検出し、当該検出された加速度データから、各軸の重力加速度成分を取得して予め記憶しておく。そして、試合開始後に検出される各軸の加速度から当該重力加速度成分を減算することによって、プレイヤの動作によって生じた加速度を取得する。なお、上述のように、コントローラ14では、ゲーム装置12の1フレームよりも短いサンプリング周期で加速度が検出されており、ゲーム装置12では、1フレームに複数個の加速度を取得することができるので、たとえば平均値、最大値または最小値等を取ることによって、当該フレームを代表する加速度を取得するようにしてよい。
【0057】
記憶領域108には、パンチ開始判定プログラムが記憶される。このプログラムによって、プレイヤが加速度入力(パンチ動作)を開始したか否かを判定するための第1条件が満足されたか否かが加速度取得プログラムによって取得された加速度に基づいて判定される。プレイヤによってコントローラ14を用いて入力が開始されると、或る一定以上の加速度値が検出される。したがって、第1条件として、各軸方向の加速度の合成ベクトル(各軸加速度を成分とするベクトル)の大きさが所定の閾値以上になったことを適用する。この第1条件によって、加速度の入力の開始を適切に判定することができる。この実施例では、3軸加速度センサが使用されるので、3軸方向の加速度の合成ベクトルの大きさが算出され、当該合成ベクトルの大きさが所定の閾値以上になったか否かが判定される。
【0058】
また、第1コントローラ34の加速度の合成ベクトルの大きさと、第2コントローラ36の加速度の合成ベクトルの大きさとが算出されるので、どちらのコントローラ14でパンチ動作が行われたかを認識することができる。この動作されたコントローラ14の情報と持ち手情報とに基づいて、プレイヤのどちらの手でパンチ動作が行われたかを認識することができる。したがって、たとえば、ゲーム空間内でプレイヤの動かした手と同じ手を用いた動作を実行することができる。この実施例では、グローブオブジェクト204の移動あるいはプレイヤキャラクタ200のパンチ動作(図16等参照)が制御されるので、プレイヤがパンチを打った手に対応するグローブオブジェクト204が選択され、当該選択されたグローブオブジェクト204の識別情報が、動作させるグローブオブジェクトとして記憶される。
【0059】
記憶領域110には経過時間判定プログラムが記憶される。このプログラムによって、パンチが開始されてからの経過時間が所定の閾値より小さいか否かが判定される。この実施例では、プレイヤによるパンチ動作が開始されたとき、まだ当該パンチ動作の種類を判別できないが、ストレートに対応する動作が開始されるようにしている。そして、その後に検出される加速度に基づいてプレイヤによるパンチ動作の種類を判定する。種類がフックと判定されたときには、ストレートに対応する動作からフックに対応する動作に変更される。このため、ストレートの動作が或る程度進行してからその続きがフックの動作へと変更されると、ゲーム画面上でパンチ動作が不自然に見え、プレイヤに違和感を与えるおそれがある。したがって、この経過時間判定によって、プレイヤによるパンチ動作の開始から所定時間が経過した後には、当該パンチ動作の種類の判定をやめてフックへの変更が行われないようにする。なお、プレイヤのパンチ動作の種類を早期に(動作変更を不自然に見せない程度の時間で)判別可能な場合や、多少の不自然さよりもパンチ動作の種類の正確性に重きを置く場合等には、この経過時間判定は行われなくてよい。
【0060】
記憶領域112には、軸補正プログラムが記憶される。このプログラムによって、加速度の軸方向の調整が行われ、取得された加速度値が補正される。パンチ動作の種類の判定は、この補正後の加速度に基づいて行われることとなる。この軸補正によって、持ち手やコントローラ14の種別に関係なく同じ判定処理を用いることができ、プレイヤによるパンチ動作を効率よく判定できるようにしている。
【0061】
上述のように、第1コントローラ34および第2コントローラ36の持ち手に応じて、フックを打つときのX軸加速度の方向が逆になる(図7)。そこで、この軸補正によって持ち手に応じてX軸加速度の符号を逆にする。この実施例では、図7(A)に示すように第1コントローラ34が右手で把持される場合のX軸方向が基準として採用される。したがって、第1コントローラ34の持ち手が右手である場合には、第2コントローラ36の軸補正が必要である。この軸補正では、第2コントローラ36の加速度のX軸ベクトルを反転し、つまり、第2コントローラ36のX軸加速度の符号を逆にする。一方、図7(B)に示すように第1コントローラ34が左手で把持される場合には、第1コントローラ34の軸補正が必要であり、第1コントローラ34のX軸加速度の符号を逆にする。なお、この場合、第2コントローラ36は右手で把持されるので、加速度センサ90のX軸方向は、基準となる第1コントローラ34が右手で把持される場合の加速度センサ84のX軸方向と同じであり、X軸方向の補正は必要ない。
【0062】
また、上述のように、第2コントローラ36を側面から見ると、そのハウジング86はYZ平面内で湾曲した形状を有している。図8の上段左図から分かるように、第2コントローラ36では、アナログジョイスティック88aの設けられる先端部が水平にされたときに加速度センサ90のZ軸方向が水平方向にかつY軸方向が鉛直方向になるように、加速度センサ90の軸が設定されている。第2コントローラ36が縦向きに把持されるときには、図8の上段右図に示すように、その湾曲形状のハウジング86の後端側が掌の中で把持され、加速度センサ90のY軸方向およびZ軸方向がそれぞれ鉛直方向および水平方向から傾く。この第2コントローラ36が縦向きに把持されたときのY軸方向およびZ軸方向は、第1コントローラ34が縦向きに把持されるときのY軸方向およびZ軸方向(図11参照)とは異なる。したがって、軸補正では、第2コントローラ36のY軸およびZ軸の加速度を補正する。具体的には、上述のように、パンチ動作が行われる前に検出される重力加速度によって、把持されたときの第2コントローラ36の姿勢が把握される。したがって、この姿勢に基づいて、Y軸加速度およびZ軸加速度のそれぞれを水平方向(図8の下段のY軸方向)と鉛直方向(図8の下段のZ軸方向)の成分に分解するための変換係数を算出する。そして、検出されるY軸加速度およびZ軸加速度と変換係数とに基づいて、補正されたY軸加速度およびZ軸加速度を取得する。
【0063】
記憶領域114には、YZ判定プログラムが記憶されている。このプログラムによって、Y軸加速度およびZ軸加速度に基づいてパンチ動作がフックであるか否かが判定される。具体的には、このYZ判定では、コントローラ14が横向きに把持されてフックが打たれたか否かを判定することができる。図9には、プレイヤの右手で横向きに把持された第1コントローラ34が示されている。なお、第1コントローラ34では、図7から分かるように、把持されたときに、親指が届く位置に十字キー80aおよびAボタン80dが設けられ、人差し指が届く位置にBボタン80hが設けられている。したがって、プレイヤがパンチ動作のために第1コントローラ34を横向きで右手で把持すると、図9に示すように、ハウジング78の先端側がプレイヤの左向きになり、かつ、十字キー80aの設けられた面がプレイヤ側を向く。そのため、この実施例の加速度センサ84の軸設定では、図9(B)から分かるように、YZ平面内において、Z軸正方向およびY軸負方向にフックパンチが打たれることとなる。
【0064】
図9の状態からフックが打たれると、Z軸正方向にある程度の加速度が生じる。したがって、このYZ判定では、まず、Z軸加速度が所定の閾値以上であるか否かが判定される。
【0065】
さらに、横向き把持状態でのフック動作は、YZ平面内における動作であり、Y軸加速度およびZ軸加速度の挙動に次のような特徴がある。すなわち、Z軸加速度について、パンチの打ち始めでは正方向に加速度が生じ、その後徐々に速度が弱まるにつれて加速度は負方向へ反転し、最後には0になる。また、Y軸加速度については、パンチの打ち始めでは負方向に遠心力が生じ、その後徐々に遠心力が弱まるにつれて加速度は正方向に反転し、最後には0になる。このように変化するY軸加速度およびZ軸加速度を示す点を、Y軸加速度およびZ軸加速度を成分とするYZ座標系に対してプロットすると、図10に示すように、加速度を示す点は右回りに遷移するという特徴が見られる。なお、図10では、右回り遷移を分り易く示すために、加速度の変化が模式的に示されている。したがって、Y軸加速度およびZ軸加速度を示す点が右回りに遷移したことを、フックの判定条件として採用することができる。したがって、このYZ判定では、上述のZ軸加速度の閾値判定に加えて、Y軸加速度およびZ軸加速度の変化が右回りの遷移を示すか否かを判定する。
【0066】
なお、図9では右手で横向きの第1コントローラ34が把持された場合を示して、YZ判定条件を説明した。しかし、左手で横向きの第1コントローラ34が把持される場合のフック動作についても、フック動作の方向とY軸Z軸の方向の関係が図9に示す右手の場合と同じであるので、同一の判定条件を使用することができる。また、同様に、第2コントローラ36が横向きに把持された場合のフック動作についても、同一の判別条件を使用することができる。
【0067】
また、他の実施例で加速度センサ84の軸方向の設定が変更される場合には、Z軸加速度の判定のための閾値の符号や当該閾値に対する大小関係、およびY軸加速度とZ軸加速度とを成分とする点の遷移の方向等の条件は、軸設定に応じて適宜に変更される。
【0068】
図6に戻って、記憶領域116には、XY判定プログラムが記憶される。このプログラムによって、X軸加速度およびY軸加速度に基づいてパンチ動作がフックであるか否かが判定される。具体的には、このXY判定では、コントローラ14が縦向きに把持されてフックが打たれたか否かを判定することができる。図11には、プレイヤの右手で縦向きに把持された第1コントローラ34が示されている。プレイヤがパンチ動作のために第1コントローラ34を縦向きに右手で把持すると、上述のように、十字キー80a、Aボタン80dおよびBボタン80h等とこれらを操作する指との位置関係から、図11に示すように、ハウジング78の先端側が上向きになり、かつ、十字キー80aの設けられた面がプレイヤ側を向く。そのため、この実施例の加速度センサ84の軸設定では、図11(B)から分かるように、XY平面内において、Z軸負方向およびY軸負方向にフックパンチが打たれることとなる。
【0069】
図11の状態からフックが打たれると、X軸加速度については、初め負方向に加速度が生じる。具体的には、図12に、このX軸加速度の時間変化が模式的に示される。X軸加速度は、フック動作の比較的初期の段階で最小値をつける。
【0070】
一方、図11の状態からストレートが打たれる場合には、コントローラ34はほぼY軸の1方向のみに移動するので、つまり、ストレートはY軸方向への直線的な加速度入力であるから、X軸加速度はほとんど生じない。したがって、X軸加速度に注目すると、図12に示すように、基本的には、X軸加速度がある程度の大きさの負の値をつけたか否かに応じて、つまり、X軸加速度が所定の閾値以下になったか否かに応じて、フックとストレートを判別することができる。
【0071】
しかしながら、第1コントローラ34が把持されるときには、図13に示すように、手の中でZ軸周りに回転した状態になることがある。このようなZ軸周り回転状態の持ち方でストレートが打たれると、フックが打たれた場合と同様に、X軸方向とY軸方向の2軸方向の加速度が検出される。しかも、当該X軸加速度が図12に示す判別条件としての閾値以下になることがある。したがって、図12のX軸加速度が閾値以下になったことのみを条件とした場合には、判別の精度がよくない。
【0072】
そこで、この実施例では、さらにX軸加速度およびY軸加速度の変化の特性に基づいた判定を行って、Z軸周り回転状態で打たれたストレートを除外する。
【0073】
図14には、縦向きで把持されてパンチが打たれた場合のX軸加速度およびY軸加速度の変化の特性が模式的に示される。つまり、X軸加速度およびY軸加速度を示す点を、X軸加速度およびY軸加速度を成分とするXY座標系に対してプロットした図である。図14(A)にはフックの場合が示され、図14(B)にはZ軸周り回転状態のストレートの場合が示される。図14から分かるように、どちらの場合にも、X軸加速度が図12に示したフックとストレートを判別する閾値以下になっており、上述のように、この閾値判定だけではパンチ種類を正確に識別することができない。
【0074】
しかし、発明者等は、X軸加速度の最小値の検出されるタイミングの前後におけるX軸加速度およびY軸加速度の変化に基づいて、フックとストレートとを正確かつ迅速に識別可能であることを見出した。具体的には、フックの場合、図14(A)から分かるように、X軸加速度およびY軸加速度を成分とする点の軌跡が略円形を示すのに対し、ストレートの場合には、図14(B)から分かるように、当該軌跡が細長く傾斜した略楕円形を示す。フックはXY平面内における曲線的もしくは屈曲的な移動であり、曲線的もしくは屈曲的な加速度入力であって、遠心力が生じる。一方、ストレートは、XY平面内における直線的な移動であり、直線的な加速度入力であって、遠心力が生じない。遠心力の有無によって軌跡形状に違いが現れるものと考えられ、これによって両者を区別することができる。
【0075】
特に、X軸加速度の最小値の検出されるタイミング前後に注目すると、フックの場合、軌跡はなだらかに反転しているのに対し、ストレートの場合、軌跡は比較的鋭く反転している。より詳細には、最小値の検出されるタイミングの前後の加速度の変化ベクトルV1およびV2の間の角度θには、フックとストレートによって差異が生じ、フックの場合の角度は、ストレートの場合の角度よりも大きくなる。したがって、加速度変化ベクトルV1およびV2間の角度θが所定の閾値以上であるか否かを判定することによって、フックとストレートとを識別することができる。
【0076】
また、図12に示したように、X軸加速度の最小値はパンチ動作の比較的速い段階で検出されることから、この最小値となるタイミングの前後の加速度を使用した判定によって、フックとストレートとを素早く識別することができる。
【0077】
このXY判定の具体的な手順としては、まず、取得されたX軸加速度が最小値になったか否かを判定し、当該最小値になったタイミング(フレーム)を検出する。ここでは、このX軸加速度が最小値となるときのX軸加速度およびY軸加速度が、加速度変化ベクトルV1およびV2を算出するときの基準となることから、X軸加速度が最小値となるタイミングを、便宜上、基準タイミングと呼ぶものとする。X軸加速度は図12に示すように変化するので、X軸加速度を取得する度に、つまり、1フレームごとに、今回の値が前回の値よりも大きいか否かを判定することによって、最小値判定を行うことができる。取得されるX軸加速度が前回の値を初めて上回ったと判定されるとき、前回のフレームのX軸加速度が最小値であり、前回のフレームが基準タイミングである。
【0078】
X軸加速度の最小値が検出されると、次に、当該最小値が図12に示す閾値以下であるか否かを判定する。上述のように、第1コントローラ34がZ軸周りに回転されていない持ち方でストレートが打たれた場合には、X軸加速度の最小値が閾値を下回ることがないので、この判定によって当該ストレートの場合を除外できる。
【0079】
X軸加速度の最小値が閾値以下である場合には、基準タイミング前後の加速度変化ベクトルV1およびV2を算出する。具体的には、基準タイミングとその次のタイミング(フレーム)の加速度に基づいて、加速度変化ベクトルV1を算出する。このV1を第1ベクトルとも言う。図14(A)に示すように、第1ベクトルV1は、基準タイミング(前回のフレーム)のX軸加速度およびY軸加速度を成分とする点Prから、その次のタイミング(今回のフレーム)のX軸加速度およびY軸加速度を成分とする点Paまでのベクトルである。また、基準タイミングとその前のタイミングの加速度に基づいて、加速度変化ベクトルV2を算出する。このV2を第2ベクトルとも言う。図14(B)に示すように、第2ベクトルV2は、基準タイミング(前回のフレーム)のX軸加速度およびY軸加速度を成分とする点Prから、その前のタイミング(前々回のフレーム)のX軸加速度およびY軸加速度を成分とする点Pbまでのベクトルである。
【0080】
そして、第1ベクトルV1と第2ベクトルV2とのなす角度θを算出し、当該角度θが所定の閾値(角度)以上であるか否かを判定する。角度θが閾値以上である場合には、プレイヤによるパンチ動作はフックであると判定される。
【0081】
このようにして、基準タイミング前後の加速度変化ベクトルV1およびV2間の角度θに基づいて、加速度入力の種類が2軸方向(この実施例ではXおよびY)のいずれか一方向(この実施例ではY)への直線的な加速度入力であるか、または、2軸方向の成分を含む方向への加速度入力であるかを識別することができる。したがって、第1コントローラ34の持ち方によらず、加速度入力の種類を正確に識別することができる。
【0082】
なお、図11および図13では縦向きの第1コントローラ34が右手で把持された場合を示して、このXY判定条件を説明した。しかし、縦向きの第1コントローラ34が左手で把持された場合のフック動作については、上述の軸補正プログラムによってX軸方向が反転されるので、同一の判定条件を使用できる。また、第2コントローラ36が縦向きに左手で把持された場合のフック動作についても、上述の軸補正プログラムによってX軸方向が反転され、かつ、Y軸方向およびZ軸方向が補正されるので、同一の判定条件を使用できる。また、第2コントローラ36が縦向きに右手で把持された場合のフック動作についても、上述の軸補正プログラムによってY軸方向およびZ軸方向が補正されるので、同一の判定条件を使用できる。
【0083】
また、他の実施例で加速度センサ84の軸方向の設定が変更される場合には、X軸加速度の判定のための閾値の符号や当該閾値に対する大小関係等の条件は、当該軸設定に応じて適宜に変更される。たとえば、X軸方向の正負が図3と逆に設定される場合には、図12および図14の閾値の符号は正であり、X軸加速度の最大値が検出されて、当該最大値が閾値以上であるか否かが判定される。また、X軸加速度が閾値を上回って最大値をつけたタイミングが基準タイミングとして検出される。
【0084】
なお、YZ判定およびXY判定は、上述の第1条件(加速度の入力の開始を判定するための条件)が満たされたことが判定された後に、加速度に基づいて判定される第2条件の判定に相当する。第2条件は第1条件と異なる条件である。YZ判定では、第2条件は、上述のY軸加速度およびZ軸加速度の特性に基づいて設定された条件(Z軸加速度が所定の閾値以上であること、Y軸加速度およびZ軸加速度を示す点が右回りに遷移したこと等)を含む。XY判定では、第2条件は、上述のX軸加速度およびY軸加速度の特性に基づいて設定された条件(X軸加速度の最小値が閾値以下であること、基準タイミング前後の加速度変化ベクトル間の角度が閾値以上であること等)を含む。
【0085】
図6に戻って、記憶領域118には描画プログラムが記憶される。このプログラムによって、プレイヤによる加速度入力の種類に対応付けられたゲーム処理が実行されて、ゲーム画像が描画され、当該ゲーム画像がモニタ30に表示される。ゲーム処理では、加速度入力の種類に対応付けられた動作をオブジェクトが行う画像が描画される。
【0086】
具体的には、試合開始時には、図15に示すように、仮想ゲーム空間内のリング上のプレイヤキャラクタ200と敵キャラクタ202を含むゲーム画像が描画されて、モニタ30に表示される。なお、この実施例では、プレイヤキャラクタ200と敵キャラクタ202と重なった場合でも、プレイヤが敵キャラクタ202を見ることができるように、プレイヤキャラクタ200の体は半透明で描画される(図では2点鎖線表示)。ただし、プレイヤキャラクタ200の右のグローブオブジェクト204aと左のグローブオブジェクト204bとは、プレイヤキャラクタ200のパンチの動きやヒットを見易くするために不透明で描画される(図では実線表示)。なお、左右のグローブオブジェクト204aおよび204bを包括的にグローブオブジェクト204と表現することもある。
【0087】
パンチ開始判定プログラムによって加速度入力が開始されたと判定されるときには、まだ当該入力の種類を判別できないが、当該入力の種類のうち第1種類としてのストレートに対応付けられた第1のゲーム処理として、第1の描画処理の実行を開始する。つまり、加速度入力はストレートであると仮定して、当該ストレートに対応付けられたゲーム処理を開始する。言い換えれば、予め決められた第1の動作パターン(この実施例では、ストレート軌道上の移動)に従って動作するオブジェクトの描画を開始する。これによって、オブジェクトが第1種類に対応付けられた動作を行う画像が表示される。この実施例の第1の描画処理では、グローブオブジェクト204の移動がストレートパンチの軌跡を描くように制御される。具体的には、ストレートの軌道上を移動するグローブオブジェクト204の位置が算出され、当該位置にグローブオブジェクト204が描画される。一例として、プレイヤの右手に把持されたコントローラ14で入力が開始された場合には、図16に示すように、右のグローブオブジェクト204aが直線的に移動するゲーム画像が描画される。
【0088】
その後、YZ判定プログラムおよびXY判定プログラムに従って、加速度入力の種類の判定が行われつつ、ストレートに対応付けられた第1の描画処理が続けられる。ただし、加速度入力の種類の判定は、入力開始から所定時間が経過していない場合に行われる。所定時間が経過したと判定されたにもかかわらず、加速度入力の種類が第2種類としてのフックであると判定されなかったときには、第1の描画処理が最後まで実行される。したがって、図16のゲーム画像の続きとして、図17に示すように、右のグローブオブジェクト204aが最後までストレートの軌道で移動するゲーム画像が描画される。つまり、プレイヤキャラクタ200が右ストレートを打ち終わるまでのゲーム画像が描画されてモニタ30に表示される。
【0089】
一方、加速度入力の種類が第2種類としてのフックであると判定されたときには、第1の描画処理に代えて、フックに対応付けられた第2のゲーム処理として、第2の描画処理を実行する。つまり、第1の動作パターンに代えて、第1の動作パターンとは異なる第2の動作パターン(この実施例では、フック軌道上の移動)にしたがって動作するオブジェクトの描画が行われる。これによって、オブジェクトが第2種類に対応付けられた動作を行う画像が表示される。具体的には、第2の描画処理では、グローブオブジェクト204の移動がフックパンチの軌跡を描くように制御される。つまり、現在の位置を起点としてフックの軌道上を移動するグローブオブジェクト204の位置が算出され、当該位置にグローブオブジェクト204が描画される。したがって、図16のゲーム画像の続きとして、図18に示すように、右のグローブオブジェクト204aがフックの軌跡を描いて移動するゲーム画像が描画される。つまり、プレイヤキャラクタ200が右フックを打ち終わるまでのゲーム画像が描画されてモニタ30に表示される。
【0090】
このように、プレイヤによる加速度入力が開始されたと判定されたときに、加速度入力の種類に対応付けられたゲーム処理のうち、第1種類に対応付けられた第1のゲーム処理を開始するようにしたので、プレイヤによる加速度入力の最初からパンチを打つ画像を描画して、当該画像をモニタ30に表示することができ、したがって、加速度入力に対する応答性が良い。また、その後に取得される加速度に基づいて、加速度入力が第2種類であったと判定されたときには、第1のゲーム処理に代えて、第2種類に対応付けられた第2のゲーム処理を実行するようにしたので、プレイヤの加速度入力の種類に従った画像を表示することができる。さらに、加速度入力の種類の判定を当該入力の開始から所定時間に限り行うようにしているので、不自然な動作変更を防止することができる。
【0091】
図6に戻って、データ記憶領域102の記憶領域120には、ゲーム画像を生成するための画像データが記憶される。画像データは、プレイヤキャラクタ200、グローブオブジェクト204および敵キャラクタ202等の画像データを含む。
【0092】
記憶領域122には持ち手情報が記憶される。持ち手情報は、上述のように、第1コントローラ34を持つ手(左手または右手)を示し、持ち手設定プログラムによって設定されて、この記憶領域122に記憶される。
【0093】
記憶領域124には、上述の加速度取得プログラムによって取得された加速度情報が記憶される。具体的には、加速度情報は、第1コントローラ34の加速度センサ84のX,YおよびZ軸方向の加速度値、および第2コントローラ36の加速度センサ90のX,YおよびZ軸方向の加速度値を含む。
【0094】
記憶領域126には加速度履歴が記憶される。各加速度情報は、取得されたときのフレーム番号に対応付けて記憶される。また、加速度値は、上述の軸補正プログラムによって必要に応じて補正された値である。上述のYZ判定プログラムおよびXY判定プログラムによって加速度入力の種類が判定される際には、この加速度履歴が参照される。
【0095】
記憶領域128には、加速度入力の開始からの経過時間をカウントするためのタイマが記憶される。タイマは、上述のパンチ開始判定プログラムによって加速度入力が開始されたことが判定されたときにリセットされ、1フレームごとカウントされる。
【0096】
記憶領域130には、加速度入力の種類を示すフックフラグが記憶される。フックフラグは、加速度入力の開始時にはオフにされ、その後加速度入力の種類がフックであると判定されたときにオンにされる。
【0097】
記憶領域132には、動作させるグローブオブジェクトを示す情報が記憶される。上述のパンチ開始判定プログラムによって、加速度入力の行われたコントローラ14と記憶領域122の持ち手情報に基づいて、入力が行われているプレイヤの手が識別され、当該手に対応するグローブオブジェクト204aまたは204bを示す情報が記憶される。上述の描画プログラムでは、この記憶領域132に記憶されたグローブオブジェクト204の動作が制御されて、そのゲーム画像が表示される。
【0098】
記憶領域134には、動作パターンを示す情報が記憶される。この実施例では、グローブオブジェクト204をフック軌道で移動させるための動作パターンデータ、およびグローブオブジェクト204をストレート軌道で移動させるための動作パターンデータ等が記憶される。上述の描画プログラムでは、この記憶領域134に記憶されたフックまたはストレートの動作パターンデータに基づいて、グローブオブジェクト204のフック動作またはストレート動作が制御される。
【0099】
図19にはゲーム装置12の動作の一例が示される。まず、ステップS1で、CPU44は、第1コントローラ34を持つ手を右手および左手から選択する。上述の持ち手設定プログラムによって、オプション設定画面がモニタ30に表示され、コントローラ14の操作によって持ち手の設定が行われる。設定された持ち手を示す情報は記憶領域122に記憶される。
【0100】
次に、ステップS3で、CPU44は、上述の加速度取得プログラムに従って、受信したコントローラデータから加速度を取得して記憶領域124に記憶する。続いて、ステップS5で、CPU44は、3軸方向の合成ベクトルの大きさを算出する。上述のパンチ開始判定プログラムに従って、第1コントローラ34および第2コントローラ36のそれぞれについて、XYZ軸方向の加速度を成分とする3次元ベクトルの大きさを算出する。そして、ステップS7で、CPU44は、3軸合成ベクトルの大きさが所定の閾値以上であるか否かを判定する。つまり、加速度入力が開始されたか否かが判定される。なお、閾値以上の大きさになった合成ベクトルが第1コントローラ34かまたは第2コントローラ36のどちらの加速度によって算出されたかが分かるので、この判定で、加速度入力の開始されたコントローラ14を識別できる。ステップS7で“NO”の場合、処理はステップS29に進む。
【0101】
一方、ステップS7で“YES”の場合、つまり、加速度入力が開始されたときには、CPU44は、ステップS9で初期処理を実行する。この初期処理の動作は図20に示される。
【0102】
図20の初期処理を開始すると、CPU44は、ステップS41でタイマをリセットし、記憶領域128に0を記憶する。また、ステップS43で、CPU44は記憶領域130のフックフラグをオフにする。このように、この実施例では、加速度入力の開始時には当該入力がストレートであると仮定して、ストレートに対応付けられた描画処理が開始されるようにしている。さらに、ステップS45で、CPU44は、加速度入力の開始されたコントローラ14と持ち手情報とに基づいて、加速度入力の行われた手に対応するグローブオブジェクト204を特定し、動作させるグローブオブジェクトとして、当該グローブオブジェクト204を示す情報を記憶領域132に記憶する。初期処理を終了すると、処理は図19のステップS11へ戻る。
【0103】
図19のステップS11では、CPU44はフックフラグがオフであるか否かを判断する。つまり、加速度入力がフックであるとは未だ判定されていないか否かを判断する。ステップS11で“YES”であれば、CPU44は、ステップS13で、記憶領域128のタイマ値は所定値よりも小さいか否かを判定する。ここでは、経過時間判定プログラムに従って、加速度入力の開始からの経過時間(経過フレーム数)が所定時間(所定フレーム数)未満であるか否かを判定している。つまり、ストレートに対応付けられた描画の実行を、フックに対応付けられた描画にまだ変更可能であるか否かを判定している。
【0104】
ステップS13で“YES”の場合、つまり、経過時間がストレートからフックへの描画の変更が可能な時間である場合には、続くステップS15からステップS21の処理で、加速度入力の種類の判定を行う。すなわち、ステップS15で、CPU44は、加速度取得プログラムに従って、受信したコントローラデータから加速度情報を取得し、記憶領域124に記憶する。なお、加速度入力の行われたコントローラ14の加速度のみを取得するようにしてよい。
【0105】
続いて、ステップS17で、CPU44は、軸補正プログラムに従って、軸補正処理を実行する。軸補正処理の動作は図21に示される。
【0106】
図21の軸補正処理を開始すると、CPU44は、ステップS51で、第1コントローラ34を持つ手が左手であるか否かを、記憶領域122の持ち手情報に基づいて判定する。ステップS51で“YES”の場合、つまり、第1コントローラ34が基準と逆の手で把持されている場合には、CPU44は、ステップS53で、第1コントローラ34の加速度のX軸ベクトルを反転する。つまり、第1コントローラ34のX軸加速度の符号を逆にして、当該加速度を記憶領域124に記憶する。
【0107】
一方、ステップS51で“NO”の場合、つまり、第1コントローラ34が基準と同じ手で把持されている場合には、CPU44は、ステップS55で、第2コントローラ36の加速度のX軸ベクトルを反転する。つまり、第2コントローラ36のX軸加速度の符号を逆にして、当該加速度を記憶領域124に記憶する。
【0108】
続いて、ステップS57で、CPU44は、第2コントローラ36のY軸およびZ軸の傾きを補正する。つまり、図8に示したように、第2コントローラ36のY軸加速度およびZ軸加速度を、第2コントローラ36が把持されたときの方向によって補正し、当該補正された加速度を記憶領域124に記憶する。なお、第2コントローラ36が把持されたときの方向は、たとえば、持ち手設定時やプレイヤによる加速度入力の開始前等に予め取得しておく。軸補正処理を終了すると、処理は図19のステップS19に戻る。なお、軸補正は、加速度入力の行われたコントローラ14の加速度のみに対して行われるようにしてよい。
【0109】
図19のステップS19では、CPU44は、YZ判定プログラムに従ってYZ判定処理を実行する。上述のように、YZ判定では、コントローラ14が横向きに把持されてフックが打たれたか否かが判定される。YZ判定処理の動作は図22に示される。また、YZ判定では、ステップS7で加速度入力が開始されたことが判定されたコントローラ14の加速度値が使用される。
【0110】
図22のYZ判定処理を開始すると、CPU44は、ステップS71でZ軸加速度が所定の閾値以上であるか否かを判定する。上述の図9に示したように、コントローラ14が横向きに把持されてフック動作が行われたときには、Z軸方向にある程度の加速度が生じる。したがって、ステップS71で“NO”の場合には、加速度入力がフックではないと判断することができ、そのままYZ判定処理を終了する。
【0111】
一方、ステップS71で“YES”の場合には、CPU44は、ステップS73で、図10に示したようにYZ加速度が右回りに遷移しているか否かを判定する。つまり、Y軸加速度およびZ軸加速度を成分とする点がYZ平面内で右回りに遷移するように、Y軸加速度およびZ軸加速度が変化しているか否かを判定する。ステップS73で“NO”の場合には、加速度入力がフックであるとは判定できないので、処理はステップS77に進む。一方、ステップS73で“YES”の場合には、加速度入力がフックであると判定できるので、CPU44は、ステップS75で記憶領域130のフックフラグをオンにする。
【0112】
続いて、ステップS77では、CPU44は、次フレーム以降のステップS73の判定のために、Y軸加速度およびZ軸加速度を記憶領域126に追加的に記憶する。このYZ判定処理を終了すると、処理は図19のステップS21に戻る。
【0113】
図19のステップS21では、CPU44は、XY判定プログラムに従って、XY判定処理を実行する。上述のように、XY判定では、コントローラ14が縦向きに把持されてフックが打たれたか否かを判定する。XY判定処理の動作は図23に示される。XY判定では、ステップS7で加速度入力が開始されたことが判定されたコントローラ14の加速度値が使用される。
【0114】
図23のXY判定処理を開始すると、CPU44は、ステップS91で、1フレーム前と比べてX軸加速度が大きいか否かを判定する。ここでは、前回のフレームのX軸加速度が最小値であるか否かを判定している。ステップS91で“NO”の場合、加速度入力がフックであるとは判定できないので、処理はステップS103へ進む。
【0115】
一方、ステップS93で“YES”の場合、つまり、X軸加速度の最小値をつけるフレームを検出できた場合には、CPU44は、ステップS93で、1フレーム前のX軸加速度が所定の閾値以下であるか否かを判定する。図12に示したように、X軸加速度の最小値が閾値以下であるか否かを判定している。
【0116】
ステップS93で“NO”の場合、X軸加速度の最小値が閾値を下回らないので、加速度入力がフックではないことが判定される。処理はステップS103に進む。
【0117】
一方、ステップS93で“YES”の場合には、X軸加速度が閾値を下回って最小値となるフレーム(すなわち基準タイミング)が検出されたので、続くステップS95からステップS99の処理で、基準タイミング前後の加速度変化ベクトルV1およびV2に基づいて加速度入力の種類を判定する。
【0118】
ステップS95では、CPU44は、XY平面における第1ベクトルV1を算出する。具体的には、図14に示すように、基準タイミング(前回のフレーム)のX軸加速度およびY軸加速度を成分とする点Prからその次のタイミング(今回のフレーム)のX軸加速度およびY軸加速度を成分とする点PaまでのベクトルV1を算出する。第1ベクトルV1は、今回の加速度(X軸およびY軸)を成分とするベクトルと前回の加速度(X軸およびY軸)を成分とするベクトルの差によって算出される。
【0119】
また、ステップS97で、CPU44は、XY平面における第2ベクトルV2を算出する。具体的には、図14に示すように、基準タイミング(前回のフレーム)のX軸加速度およびY軸加速度を成分とする点Prからその前のタイミング(前々回のフレーム)のX軸加速度およびY軸加速度を成分とする点PbまでのベクトルV2を算出する。第2ベクトルV2は、前々回の加速度(X軸およびY軸)を成分とするベクトルと前回の加速度(X軸およびY軸)を成分とするベクトルの差によって算出される。
【0120】
そして、ステップS99で、CPU44は、第1ベクトルV1と第2ベクトルV2とのなす角度θを算出し、当該角度θが所定の閾値以上であるか否かを判定する。つまり、加速度入力がフックであるか否かを判定している。
【0121】
ステップS99で“NO”の場合、加速度変化ベクトルV1およびV2間の角度θが所定の角度より小さいので、加速度入力がフックではないことが判定される。処理はステップS103に進む。
【0122】
なお、ステップS99で“NO”の場合、および上述のステップS93で“NO”の場合には、加速度入力がストレートであることが分かる。したがって、次フレーム以降は、フック判定を行わないようにしてよい。たとえば、記憶領域128のタイマに所定値を加算することによって、次フレームから図13のステップS13の処理で“NO”と判断されるようにしてよい。
【0123】
一方、ステップS99で“YES”の場合には、加速度入力がフックであると判定できるので、CPU44は、ステップS101で記憶領域130のフックフラグをオンにする。
【0124】
続いて、ステップS103では、CPU44は、次フレーム以降のステップS91およびS93の判定、ならびにステップS95およびS97の算出等のために、X軸加速度およびY軸加速度を記憶領域126に追加的に記憶する。XY判定処理を終了すると、処理は図19のステップS23に戻る。
【0125】
一方、図19のステップS13で“NO”の場合、つまり、加速度入力の種類がフックであると判定されることなく既に所定時間が経過した場合には、加速度入力の種類の判定を行わないようにするために、処理はステップS23に進む。したがって、ストレートからフックへの不自然な動作変更をなくすことができる。
【0126】
また、ステップS11で“NO”の場合、つまり、フックフラグがオンに既に変更された場合には、その後の加速度入力の種類の判定を行う必要がないので、処理はステップS23に進む。
【0127】
続いて、ステップS23では、CPU44は、描画プログラムに従って描画処理を実行する。これによって、加速度入力の種類に対応付けられたゲーム処理が実行される。描画処理の動作は図24に示される。
【0128】
図24の描画処理を開始すると、CPU44は、ステップS111でフックフラグがオンであるか否かを判定する。上述のように、フックフラグは、初期処理でオフにされているが、YZ判定処理やXY判定処理で、加速度入力がフックであることが判定された場合には、フックフラグはオンに変更されている。なお、続くステップS113およびS115における移動制御対象は、記憶領域132の情報の示すグローブオブジェクト204である。
【0129】
ステップS111で“NO”の場合には、CPU44は、ステップS113でグローブオブジェクト204をストレートの軌道で移動させる。つまり、このステップS113の処理は、加速度入力の種類ストレートに対応付けられたゲーム処理の一部であり、これによって、グローブオブジェクト204は、ストレートに対応付けられた動作(ストレート軌道上の移動)を行うように制御される。具体的には、現在位置とストレートの動作パターンデータ等に基づいて、グローブオブジェクト204の新たな位置や向き等が算出される。
【0130】
一方、ステップS111で“YES”の場合には、つまり、加速度入力の種類がフックである場合には、CPU44は、ステップS115でグローブオブジェクト204をフックの軌道で移動させる。つまり、このステップS115の処理は、加速度入力の種類フックに対応付けられたゲーム処理の一部であり、これによって、グローブオブジェクト204は、フックに対応付けられた動作(フック軌道上の移動)を行うように制御される。具体的には、現在位置とフックの動作パターンデータ等に基づいて、グローブオブジェクト204の新たな位置や向き等が算出される。
【0131】
続いて、ステップS117で、CPU44はGPU50を用いてグローブオブジェクト204を描画する。これによって、ステップS113またはS115で算出された位置に移動したグローブオブジェクト204を含むゲーム画像が描画されて、当該ゲーム画像がモニタ30に表示される。
【0132】
したがって、加速度入力が開始されたばかりの頃は、図16に示すように、グローブオブジェクト204が仮にストレート軌道に沿って移動するゲーム画像が表示される。その後、加速度入力がフックであると判定された場合には、図18に示すように、グローブオブジェクト204がフック軌道に沿って移動するゲーム画像(つまり、プレイヤキャラクタ200がフックパンチを打っている)が表示される。一方、所定時間が経過しても加速度入力がフックであるとは判定されなかった場合には、図17に示すように、グローブオブジェクト204がストレート軌道に沿って移動するゲーム画像(つまり、プレイヤキャラクタ200がストレートパンチを打っている)が表示される。
【0133】
描画処理を終了すると、処理は図19のステップS25に戻る。図19のステップS25では、CPU44は記憶領域128のタイマに1を加算する。つまり、加速度入力開始からの経過時間(経過フレーム数)をカウントする。
【0134】
続いて、ステップS27で、CPU44はパンチの打ち終わりであるか否かを判定する。たとえば、所定時間をかけて描画処理を実行しパンチの描画を終了したか否かを判定する。ステップS27で“NO”の場合、処理はステップS11に戻る。
【0135】
一方、ステップS27で“YES”の場合には、1つのパンチの描画を完了したので、CPU44は、ステップS29で処理を終了するか否かを判定する。たとえば、プレイヤキャラクタ200または敵キャラクタ202の体力が0になったか否かを判定したり、所定数のラウンドを終了したか否かを判定したりする。ステップS29で“NO”の場合には、処理はステップS3に戻り、試合を続ける。ステップS29で“YES”の場合には、この処理を終了する。
【0136】
この実施例によれば、加速度入力の開始が検出されたときには、加速度入力の第1種類に対応付けられた第1の描画処理を開始するようにして、グローブオブジェクト204が第1種類に対応付けられた動作(ストレートの軌道で移動)を行う画像を描画するようにした。つまり、プレイヤによって加速度入力が開始されたときには、加速度入力の第1種類に対応付けられた動作をオブジェクトが行う画像がすぐに画面上に表示され、したがって、当該画像を応答性良く描画することができる。その後、加速度入力の種類が第2種類であると判定されたときには、第1の描画処理に代えて、第2種類に対応付けられた第2の描画処理を実行するようにして、グローブオブジェクト204が第2種類に対応付けられた動作(フックの軌道で移動)を行う画像を描画するようにした。したがって、実際にプレイヤの行った加速度入力の種類に従った正確な動作をオブジェクトが行う画像を画面上に表示することができる。さらに、加速度入力の開始から所定時間が経過したときにはその後加速度入力の種類の判定を行わないようにする場合には、不自然な動作変更が行われるのを防止でき、プレイヤに違和感を与えることがない。
【0137】
また、加速度入力の種類を2軸方向の加速度の変化の特性に基づいて判定するようにした。詳しくは、第1軸(X軸)方向の加速度が所定の閾値を越えて最小値または最大値となった基準タイミングを検出し、2軸方向の加速度に基づいて基準タイミングの前後の加速度の変化ベクトルV1およびV2を算出し、第1ベクトルV1と第2ベクトルV2とのなす角度に基づいて、加速度入力の種類を識別するようにした。したがって、コントローラ14の持ち方による誤認識を軽減することができる。
【0138】
なお、上述の実施例では、加速度入力の種類に応じてグローブオブジェクト204の移動を制御するようにしたが、他の実施例では、1つのオブジェクトとしてのプレイヤキャラクタ200のパンチアクションを加速度入力の種類に応じて制御するようにしてもよい。
【0139】
また、上述の各実施例では、加速度入力が開始されたとき、種類がストレートであるものと仮定してストレートに対応付けられたゲーム処理を開始し、その後種類がフックであるか否かを判定するようにしたが、他の実施例では、最初に種類がフックであるものと仮定してフックに対応付けられたゲーム処理を開始し、その後種類がストレートであるか否かを判定するようにしてもよい。
【図面の簡単な説明】
【0140】
【図1】この発明の一実施例のゲームシステムの概要を示す外観図である。
【図2】ゲームシステムの電気的構成の一例を示すブロック図である。
【図3】第1コントローラの外観の一例を示す図解図であり、図3(A)は後方上側から見た斜視図であり、図3(B)は前方下側から見た斜視図である。
【図4】第2コントローラの外観の一例を示す図解図であり、図4(A)は後方上側から見た斜視図であり、図4(B)は前方下側から見た斜視図である。
【図5】コントローラの電気的構成の一例を示すブロック図である。
【図6】メモリマップの一例を示す図解図である。
【図7】第1コントローラの持ち手と加速度軸方向との関係を示す図解図であり、図7(A)は右手持ちの場合を示し、図7(B)は左手持ちの場合を示す。
【図8】第2コントローラの加速度センサ出力に対する軸補正を示す図解図である。
【図9】プレイヤに横向きに把持された第1コントローラを示す図解図であり、図9(A)はプレイヤ側から見た図を示し、図9(B)は上から見た図を示す。
【図10】図9の横向きの持ち方でフックが打たれた場合のY軸加速度およびZ軸加速度のYZ平面における変化を模式的に示す図解図である。
【図11】プレイヤに縦向きに把持された第1コントローラを示す図解図であり、図11(A)はプレイヤ側から見た図を示し、図11(B)は上から見た図を示す。
【図12】図11の縦向きの持ち方でフックが打たれた場合のX軸加速度の時間変化を模式的に示す図解図である。
【図13】プレイヤの手の中でZ軸周りに回転した状態で縦向きに把持された第1コントローラを示す図解図である。
【図14】縦向きの持ち方でパンチが打たれた場合のX軸加速度およびY軸加速度のXY平面における変化と、加速度変化ベクトル間の角度の算出とを模式的に示す図解図であり、図14(A)はフックが打たれた場合を示し、図14(B)は図13のZ軸周り回転状態でストレートが打たれた場合を示す。
【図15】プレイヤによる加速度入力が開始される前のゲーム画面の一例を示す図解図である。
【図16】プレイヤの右手で加速度入力が開始された場合のゲーム画面の一例を示し、グローブオブジェクトがストレート軌道で移動を開始している場面を示す図解図である。
【図17】図16の後に加速度入力の種類がフックであると判定されなかった場合のゲーム画面の一例を示し、グローブオブジェクトがストレート軌道で移動した場面を示す図解図である。
【図18】図16の後に加速度入力の種類がフックであると判定された場合のゲーム画面の一例を示し、グローブオブジェクトがフック軌道で移動した画面を示す図解図である。
【図19】ゲーム装置のCPUの動作の一例を示すフロー図である。
【図20】図19の初期処理の動作の一例を示すフロー図である。
【図21】図19の軸補正処理の動作の一例を示すフロー図である。
【図22】図19のYZ判定処理の動作の一例を示すフロー図である。
【図23】図19のXY判定処理の動作の一例を示すフロー図である。
【図24】図19の描画処理の動作の一例を示すフロー図である。
【符号の説明】
【0141】
10 …ゲームシステム
12 …ゲーム装置
14 …コントローラ
22 …光ディスク
30 …モニタ
34 …第1コントローラ
36 …第2コントローラ
44 …CPU
48 …メインメモリ
50 …GPU
84,90 …加速度センサ
204 …グローブオブジェクト
【特許請求の範囲】
【請求項1】
少なくとも2軸方向の加速度を検出する加速度センサを有する入力手段を含み、前記入力手段を用いた加速度の入力の種類に応じて仮想ゲーム空間内のオブジェクトを制御するゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記加速度センサによって検出される加速度を取得する加速度取得ステップ、
前記加速度取得ステップによって取得された加速度に基づいて、前記入力手段を用いた加速度の入力が開始されたか否かを判定するための第1条件を満たしたか否かを判定する入力開始判定ステップ、
前記加速度の入力が開始されたことが判定されたとき、予め決められた第1の動作パターンにしたがって動作する前記オブジェクトの描画を開始する第1描画処理ステップ、
前記第1描画処理ステップが開始された後、前記加速度取得ステップによって取得された加速度が前記第1条件とは異なる第2条件を満たしたかどうかを判定する第2条件判定ステップ、および
前記加速度が前記第2条件を満たしたと判定されたとき、前記第1の動作パターンに代えて、前記第1の動作パターンとは異なる第2の動作パターンにしたがって動作する前記オブジェクトを描画する第2描画処理ステップ、を前記コンピュータに実行させるゲームプログラム。
【請求項2】
前記加速度の入力が開始されたことが判定されてから所定時間が経過したか否かを判定する経過時間判定ステップを前記コンピュータに更に実行させ、
前記所定時間が経過したことが判定された後は、前記第2条件判判定ステップによる判定を行わない、請求項1に記載のゲームプログラム。
【請求項3】
前記第1条件とは、前記加速度の各軸方向の合成ベクトルの大きさが閾値を超えたかどうかである、請求項1に記載のゲームプログラム。
【請求項4】
少なくとも2軸方向の加速度を検出する加速度センサを有する入力手段を含み、前記入力手段を用いた加速度の入力の種類に応じて仮想ゲーム空間内のオブジェクトを制御するゲーム装置であって、
前記加速度センサによって検出される加速度を取得する加速度取得手段、
前記加速度取得手段によって取得された加速度に基づいて、前記入力手段を用いた加速度の入力が開始されたか否かを判定するための第1条件を満たしたか否かを判定する入力開始判定手段、
前記加速度の入力が開始されたことが判定されたとき、予め決められた第1の動作パターンにしたがって動作する前記オブジェクトの描画を開始する第1描画処理手段、
前記第1描画処理手段による前記描画が開始された後、前記加速度取得手段によって取得された加速度が前記第1条件とは異なる第2条件を満たしたかどうかを判定する第2条件判定手段、および
前記加速度が前記第2条件を満たしたと判定されたとき、前記第1の動作パターンに代えて、前記第1の動作パターンとは異なる第2の動作パターンにしたがって動作する前記オブジェクトを描画する第2描画処理手段を備える、ゲーム装置。
【請求項1】
少なくとも2軸方向の加速度を検出する加速度センサを有する入力手段を含み、前記入力手段を用いた加速度の入力の種類に応じて仮想ゲーム空間内のオブジェクトを制御するゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記加速度センサによって検出される加速度を取得する加速度取得ステップ、
前記加速度取得ステップによって取得された加速度に基づいて、前記入力手段を用いた加速度の入力が開始されたか否かを判定するための第1条件を満たしたか否かを判定する入力開始判定ステップ、
前記加速度の入力が開始されたことが判定されたとき、予め決められた第1の動作パターンにしたがって動作する前記オブジェクトの描画を開始する第1描画処理ステップ、
前記第1描画処理ステップが開始された後、前記加速度取得ステップによって取得された加速度が前記第1条件とは異なる第2条件を満たしたかどうかを判定する第2条件判定ステップ、および
前記加速度が前記第2条件を満たしたと判定されたとき、前記第1の動作パターンに代えて、前記第1の動作パターンとは異なる第2の動作パターンにしたがって動作する前記オブジェクトを描画する第2描画処理ステップ、を前記コンピュータに実行させるゲームプログラム。
【請求項2】
前記加速度の入力が開始されたことが判定されてから所定時間が経過したか否かを判定する経過時間判定ステップを前記コンピュータに更に実行させ、
前記所定時間が経過したことが判定された後は、前記第2条件判判定ステップによる判定を行わない、請求項1に記載のゲームプログラム。
【請求項3】
前記第1条件とは、前記加速度の各軸方向の合成ベクトルの大きさが閾値を超えたかどうかである、請求項1に記載のゲームプログラム。
【請求項4】
少なくとも2軸方向の加速度を検出する加速度センサを有する入力手段を含み、前記入力手段を用いた加速度の入力の種類に応じて仮想ゲーム空間内のオブジェクトを制御するゲーム装置であって、
前記加速度センサによって検出される加速度を取得する加速度取得手段、
前記加速度取得手段によって取得された加速度に基づいて、前記入力手段を用いた加速度の入力が開始されたか否かを判定するための第1条件を満たしたか否かを判定する入力開始判定手段、
前記加速度の入力が開始されたことが判定されたとき、予め決められた第1の動作パターンにしたがって動作する前記オブジェクトの描画を開始する第1描画処理手段、
前記第1描画処理手段による前記描画が開始された後、前記加速度取得手段によって取得された加速度が前記第1条件とは異なる第2条件を満たしたかどうかを判定する第2条件判定手段、および
前記加速度が前記第2条件を満たしたと判定されたとき、前記第1の動作パターンに代えて、前記第1の動作パターンとは異なる第2の動作パターンにしたがって動作する前記オブジェクトを描画する第2描画処理手段を備える、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【公開番号】特開2008−67865(P2008−67865A)
【公開日】平成20年3月27日(2008.3.27)
【国際特許分類】
【出願番号】特願2006−248634(P2006−248634)
【出願日】平成18年9月13日(2006.9.13)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成20年3月27日(2008.3.27)
【国際特許分類】
【出願日】平成18年9月13日(2006.9.13)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]