〔ゲーム装置の構成と動作〕
図1は、本発明の一実施形態によるゲーム装置の基本構成を示している。ここでは、ビデオゲーム装置の一例として、家庭用ビデオゲーム装置を対象として説明を行うこととする。家庭用ビデオゲーム装置は、家庭用ゲーム機本体および家庭用テレビジョンを備える。家庭用ゲーム機本体には、記録媒体10が装填可能となっており、記録媒体10からゲームデータが適宜読み出されてゲームが実行される。このようにして実行されるゲーム内容が家庭用テレビジョンに表示される。
家庭用ビデオゲーム装置のゲームシステムは、制御部1と、記憶部2と、画像表示部3と、音声出力部4と、操作入力部5、通信部23とからなっており、それぞれがバス6を介して接続される。このバス6は、アドレスバス、データバス、およびコントロールバスなどを含んでいる。ここで、制御部1、記憶部2、音声出力部4および操作入力部5は、家庭用ビデオゲーム装置の家庭用ゲーム機本体に含まれており、画像表示部3は家庭用テレビジョンに含まれている。
制御部1は、主に、ゲームプログラムに基づいてゲーム全体の進行を制御するために設けられている。制御部1は、たとえば、CPU(Central Processing Unit)7と、信号処理プロセッサ8と、画像処理プロセッサ9とから構成されている。CPU7と信号処理プロセッサ8と画像処理プロセッサ9とは、それぞれがバス6を介して互いに接続されている。CPU7は、ゲームプログラムからの命令を解釈し、各種のデータ処理や制御を行う。たとえば、CPU7は、信号処理プロセッサ8に対して、画像データを画像処理プロセッサに供給するように命令する。信号処理プロセッサ8は、主に、3次元空間上における計算と、3次元空間上から擬似3次元空間上への位置変換計算と、光源計算処理と、3次元空間上又は擬似3次元空間上で実行された計算結果に基づいた画像および音声データの生成加工処理とを行っている。画像処理プロセッサ9は、主に、信号処理プロセッサ8の計算結果および処理結果に基づいて、描画すべき画像データをRAM12に書き込む処理を行っている。また、CPU7は、信号処理プロセッサ8に対して、各種データを処理するように命令する。信号処理プロセッサ8は、主に、3次元空間上における各種データに対応する計算と、3次元空間上から擬似3次元空間上への位置変換計算とを行っている。
記憶部2は、主に、プログラムデータや、プログラムデータで使用される各種データなどを格納しておくために設けられている。記憶部2は、たとえば、記録媒体10と、インターフェース回路11と、RAM(Random Access Memory)12とから構成されている。記録媒体10には、インターフェース回路11が接続されている。そして、インターフェース回路11とRAM12とはバス6を介して接続されている。記録媒体10は、オペレーションシステムのプログラムデータや、画像データ、音声データ並びに各種プログラムデータからなるゲームデータなどを記録するためのものである。この記録媒体10は、たとえば、ROM(Read Only Memory)カセット、光ディスク、およびフレキシブルディスクなどであり、オペレーティングシステムのプログラムデータやゲームデータなどが記憶される。なお、記録媒体10にはカード型メモリも含まれており、このカード型メモリは、主に、ゲームを中断するときに中断時点での各種ゲームパラメータを保存するために用いられる。RAM12は、記録媒体10から読み出された各種データを一時的に格納したり、制御部1からの処理結果を一時的に記録したりするために用いられる。このRAM12には、各種データとともに、各種データの記憶位置を示すアドレスデータが格納されており、任意のアドレスを指定して読み書きすることが可能になっている。
画像表示部3は、主に、画像処理プロセッサ9によってRAM12に書き込まれた画像データや、記録媒体10から読み出される画像データなどを画像として出力するために設けられている。この画像表示部3は、たとえば、テレビジョンモニタ20と、インターフェース回路21と、D/Aコンバータ(Digital-To-Analogコンバータ)22とから構成されている。テレビジョンモニタ20にはD/Aコンバータ22が接続されており、D/Aコンバータ22にはインターフェース回路21が接続されている。そして、インターフェース回路21にバス6が接続されている。ここでは、画像データが、インターフェース回路21を介してD/Aコンバータ22に供給され、ここでアナログ画像信号に変換される。そして、アナログ画像信号がテレビジョンモニタ20に画像として出力される。
ここで、画像データには、たとえば、ポリゴンデータやテクスチャデータなどがある。ポリゴンデータはポリゴンを構成する頂点の座標データのことである。テクスチャデータは、ポリゴンにテクスチャを設定するためのものであり、テクスチャ指示データとテクスチャカラーデータとからなっている。テクスチャ指示データはポリゴンとテクスチャとを対応づけるためのデータであり、テクスチャカラーデータはテクスチャの色を指定するためのデータである。ここで、ポリゴンデータとテクスチャデータとには、各データの記憶位置を示すポリゴンアドレスデータとテクスチャアドレスデータとが対応づけられている。このような画像データでは、信号処理プロセッサ8により、ポリゴンアドレスデータの示す3次元空間上のポリゴンデータ(3次元ポリゴンデータ)が、画面自体(視点)の移動量データおよび回転量データに基づいて座標変換および透視投影変換されて、2次元空間上のポリゴンデータ(2次元ポリゴンデータ)に置換される。そして、複数の2次元ポリゴンデータでポリゴン外形を構成して、ポリゴンの内部領域にテクスチャアドレスデータが示すテクスチャデータを書き込む。このようにして、各ポリゴンにテクスチャが貼り付けられた物体つまり各種キャラクタを表現することができる。
音声出力部4は、主に、記録媒体10から読み出される音声データを音声として出力するために設けられている。音声出力部4は、たとえば、スピーカ13と、増幅回路14と、D/Aコンバータ15と、インターフェース回路16とから構成されている。スピーカ13には増幅回路14が接続されており、増幅回路14にはD/Aコンバータ15が接続されており、D/Aコンバータ15にはインターフェース回路16が接続されている。そして、インターフェース回路16にバス6が接続されている。ここでは、音声データが、インターフェース回路16を介してD/Aコンバータ15に供給され、ここでアナログ音声信号に変換される。このアナログ音声信号が増幅回路14によって増幅され、スピーカ13から音声として出力される。音声データには、たとえば、ADPCM(Adaptive Differential Pulse Code Modulation)データやPCM(Pulse Code Modulation)データなどがある。ADPCMデータの場合、上述と同様の処理方法で音声をスピーカ13から出力することができる。PCMデータの場合、RAM12においてPCMデータをADPCMデータに変換しておくことで、上述と同様の処理方法で音声をスピーカ13から出力することができる。
操作入力部5は、主に、コントローラ17と、操作情報インターフェース回路18と、インターフェース回路19とから構成されている。コントローラ17には、操作情報インターフェース回路18が接続されており、操作情報インターフェース回路18にはインターフェース回路19が接続されている。そして、インターフェース回路19にバス6が接続されている。
コントローラ17は、プレイヤが種々の操作命令を入力するために使用する操作装置であり、プレイヤの操作に応じた操作信号をCPU7に送出する。コントローラ17には、第1ボタン17a、第2ボタン17b、第3ボタン17c、第4ボタン17d、上方向キー17U、下方向キー17D、左方向キー17L、右方向キー17R、L1ボタン17L1、L2ボタン17L2、R1ボタン17R1、R2ボタン17R2、スタートボタン17e、セレクトボタン17f、左スティック17SL及び右スティック17SRが設けられている。
上方向キー17U、下方向キー17D、左方向キー17L及び右方向キー17Rは、例えば、キャラクタやカーソルをテレビジョンモニタ20の画面上で上下左右に移動させるコマンドをCPU7に与えるために使用される。
スタートボタン17eは、記録媒体10からゲームプログラムをロードするようにCPU7に指示するときなどに使用される。
セレクトボタン17fは、記録媒体10からロードされたゲームプログラムに対して、各種選択をCPU7に指示するときなどに使用される。
左スティック17SL及び右スティック17SRは、いわゆるジョイスティックとほぼ同一構成のスティック型コントローラである。このスティック型コントローラは、直立したスティックを有している。このスティックは、支点を中心として直立位置から前後左右を含む360°方向に亘って、傾倒可能な構成になっている。左スティック17SL及び右スティック17SRは、スティックの傾倒方向及び傾倒角度に応じて、直立位置を原点とするx座標及びy座標の値を、操作信号として操作情報インターフェース回路18とインターフェース回路19とを介してCPU7に送出する。
第1ボタン17a、第2ボタン17b、第3ボタン17c、第4ボタン17d、L1ボタン17L1、L2ボタン17L2、R1ボタン17R1及びR2ボタン17R2には、記録媒体10からロードされるゲームプログラムに応じて種々の機能が割り振られている。
なお、左スティック17SL及び右スティック17SRを除くコントローラ17の各ボタン及び各キーは、外部からの押圧力によって中立位置から押圧されるとオンになり、押圧力が解除されると中立位置に復帰してオフになるオンオフスイッチになっている。
通信部23は、通信制御回路24および通信インターフェース25を有している。通信制御回路24および通信インターフェース25は、ゲーム機をサーバや他のゲーム機等に接続するために用いられる。通信制御回路20および通信インターフェース21は、バス16を介してCPU11に接続されている。通信制御回路20および通信インターフェース21は、CPU11からの命令に応じて、ゲーム機をインターネットに接続するための接続信号を制御し発信する。また、通信制御回路20および通信インターフェース21は、インターネットを介してゲーム機をサーバや他のゲーム機に接続するための接続信号を制御し発信する。
以上のような構成からなる家庭用ビデオゲーム装置の概略動作を、以下に説明する。電源スイッチ(図示省略)がオンにされゲームシステム1に電源が投入されると、CPU7が、記録媒体10に記憶されているオペレーティングシステムに基づいて、記録媒体10から画像データ、音声データ、およびプログラムデータを読み出す。読み出された画像データ、音声データ、およびプログラムデータの一部若しくは全部は、RAM12に格納される。そして、CPU7が、RAM12に格納されたプログラムデータに基づいて、RAM12に格納された画像データや音声データを画像や音声としてテレビジョンモニタ20やスピーカ13に出力するためのコマンドを発行する。
画像データの場合、CPU7からのコマンドに基づいて、まず、信号処理プロセッサ8が、3次元空間上におけるキャラクタの位置計算および光源計算などを行う。次に、画像処理プロセッサ9が、信号処理プロセッサ8の計算結果に基づいて、描画すべき画像データのRAM12への書き込み処理などを行う。そして、RAM12に書き込まれた画像データが、インターフェース回路21を介してD/Aコンバータ22に供給される。ここで、画像データがD/Aコンバータ22でアナログ映像信号に変換される。そして、画像データはテレビジョンモニタ20に供給され画像として表示される。
音声データの場合、まず、信号処理プロセッサ8が、CPU7からのコマンドに基づいて音声データの生成および加工処理を行う。ここでは、音声データに対して、たとえば、ピッチの変換、ノイズの付加、エンベロープの設定、レベルの設定及びリバーブの付加などの処理が施される。次に、音声データは、信号処理プロセッサ8から出力されて、インターフェース回路16を介してD/Aコンバータ15に供給される。ここで、音声データがアナログ音声信号に変換される。そして、音声データは増幅回路14を介してスピーカ13から音声として出力される。
〔ゲーム装置における各種処理概要〕
本ゲーム機において実行されるゲームは、たとえば野球ゲームである。本ゲーム機では、ゲーム空間において動作する野手キャラクタと、ゲーム空間を移動するボールオブジェクトと、ゲーム空間の所定の位置に配置されたベースオブジェクトとを、テレビジョンモニタ20に表示可能になっている。図2は、本発明で主要な役割を果たす機能を説明するための機能ブロック図である。
なお、以下では、「ボール」や「ベース」という語句が、「ボールオブジェクト」や「ベースオブジェクト」という語句として用いられることもある。
ベース表示手段50は、ベースオブジェクトをベース用の画像データを用いてテレビジョンモニタ20に表示する機能を備えている。ベース表示手段50では、ベースオブジェクトが、ベース用の画像データを用いてテレビジョンモニタ20に表示される。
この手段では、まず、ベースオブジェクトに対応するベース用の画像データが、CPU7に認識される。次に、ベースオブジェクトの表示位置を規定するためのベース用の位置座標データが、CPU7に認識される。最後に、この位置座標データが示す位置において、ベースオブジェクトがテレビジョンモニタ20に表示される。具体的には、ベース用の位置座標データが示す位置にベース用の画像データを配置する命令をCPU7に発行させることにより、ベースオブジェクトがテレビジョンモニタ20に表示される。
なお、ベース用の位置座標データは、ベースオブジェクトの表示位置を規定するためのデータであるため、ベース用の画像データに関連付けられている。この位置座標データと画像データとの対応関係は、ゲームプログラムにおいて予め規定されており、この対応関係に基づいて、位置座標データを上記の画像データに関連付ける処理が、CPU7により実行される。また、ベース用の画像データは、ゲームプログラムのロード時に、記録媒体10からRAM12にロードされ、RAM12に格納されている。
命令実行手段51は、コントローラ17が操作されたときに、コントローラ17から発行された操作信号をCPU7に認識させ、この操作信号に対応する命令をCPU7に認識させ、CPU7に認識された命令に対応する処理をCPU7に実行させる機能を備えている。また、命令実行手段51は、AIプログラムからの指示に対応する命令をCPU7に認識させ、CPU7に認識された命令に対応する処理をCPU7に実行させる機能を備えている。
命令実行手段51では、コントローラ17が操作されたときに、コントローラ17から発行された操作信号が、CPU7に認識される。すると、この操作信号に対応する命令がCPU7に認識される。すると、CPU7に認識された命令に対応する処理が、CPU7により実行される。また、命令実行手段51では、AIプログラムからの指示に対応する命令が、CPU7に認識される。すると、CPU7に認識された命令に対応する処理が、CPU7により実行される。
この手段では、コントローラ17が操作されたときには、コントローラ17から発行された操作信号がCPU7に認識され、この操作信号に対応する命令がCPU7に認識される。ここでは、操作信号に対応する命令は、ゲームプログラムにおいて予め規定されている。このようにして各種の命令がCPU7に認識されると、CPU7に認識された命令に対応する処理が、CPU7により実行される。
また、AIプログラムに基づいて各種の指示が行われたときには、各指示に対応する命令が、CPU7に認識される。ここでは、各指示に対応する命令は、ゲームプログラムにおいて予め規定されている。このようにして各種の命令がCPU7に認識されると、CPU7に認識された命令に対応する処理が、CPU7により実行される。
ボール表示手段52は、移動中のボールオブジェクトを、ボール用のモーションデータを用いてテレビジョンモニタ20に表示する機能を備えている。ボール表示手段52では、移動中のボールオブジェクトが、ボール用のモーションデータを用いてテレビジョンモニタ20に表示される。
この手段では、移動中のボールオブジェクトの表示位置を規定するための複数のボール用の位置座標データが、CPU7に認識される。また、移動中のボールオブジェクトに対応するボール用のモーションデータが、CPU7に認識される。すると、複数のボール用の位置座標データが示す位置において、ボールオブジェクトが、ボール用のモーションデータを用いてテレビジョンモニタ20に連続的に表示される。具体的には、複数のボール用の位置座標データが示す位置にボール用のモーションデータを配置する命令をCPU7に発行させることにより、ボールオブジェクトがテレビジョンモニタ20に連続的に表示される。
なお、ボール用の位置座標データは、ゲーム空間におけるボールオブジェクトの軌道を示す軌道方程式に基づいて算出されるようになっている。軌道方程式は、ゲームプログラムにおいて予め規定されており、RAM12に格納されている。このRAM12に格納された軌道方程式がCPU7に認識され、CPU7に認識された軌道方程式に基づいてボール用の位置座標データがCPU7により算出される。また、ボール用の画像データは、ゲームプログラムのロード時に、記録媒体10からRAM12にロードされ、RAM12に格納されている。このRAM12に格納されたボール用の画像データが、CPU7に認識される。ここでは、ボール用のモーションデータが用いられているが、ボール用のモーションデータは複数のボール用の画像データから構成されている。
移動方向算出手段53は、ボールオブジェクトが移動する移動方向を規定するための第2データを算出する処理を、CPU7に実行させる機能を備えている。移動方向算出手段53では、ボールオブジェクトが移動する移動方向を規定するための第2データを算出する処理が、CPU7により実行される。
この手段では、ボールオブジェクトが移動する移動方向を規定するためのボール用のベクトルデータを算出する処理が、CPU7により実行される。たとえば、この手段では、軌道上を移動するボールオブジェクトの位置座標データ(ボール用の位置座標データ)をCPU7に認識させることにより、ボールオブジェクトのベクトルを示すベクトルデータ(ボール用のベクトルデータ)を算出する処理が、CPU7により実行される。そして、このボール用のベクトルデータが、CPU7に認識される。
第1野手キャラクタ表示手段54は、動作中の野手キャラクタを、野手キャラクタ用の第1モーションデータを用いてテレビジョンモニタ20に表示する機能を備えている。第1野手キャラクタ表示手段54では、動作中の野手キャラクタが、野手キャラクタ用の第1モーションデータを用いてテレビジョンモニタ20に表示される。
この手段では、動作中の野手キャラクタが、野手キャラクタ用の第1モーションデータを用いてテレビジョンモニタ20に表示される。
この手段では、動作中の野手キャラクタの位置座標データが、CPU7に認識される。また、動作中の野手キャラクタに対応する野手キャラクタ用の第1モーションデータが、CPU7に認識される。すると、野手キャラクタ用の位置座標データが示す位置において、野手キャラクタが、野手キャラクタ用の第1モーションデータを用いてテレビジョンモニタ20に表示される。具体的には、野手キャラクタ用の位置座標データが示す位置に野手キャラクタ用の第1モーションデータを配置する命令をCPU7に発行させることにより、野手キャラクタがテレビジョンモニタ20に連続的に表示される。
なお、ここでは、野手キャラクタ用の位置座標データは、次のようにして算出される。コントローラ17の上方向キー17U、下方向キー17D、左方向キー17L、および右方向キー17Rのいずれか1つのキーが操作されると、コントローラ17からの操作信号がCPU7に認識される。すると、この操作信号に対応する命令、たとえばコントローラ17の操作方向に野手キャラクタを移動させる野手移動命令が、CPU7から発行される。すると、野手キャラクタの移動量が、CPU7に認識される。すると、コントローラ17の操作回数又はコントローラ17の操作時間に応じて、野手キャラクタの位置座標データに野手キャラクタの移動量を加算する処理が、CPU7により実行される。そして、この処理後の野手キャラクタの位置座標データが、CPU7に認識される。また、野手キャラクタ用の第1モーションデータは、ゲームプログラムのロード時に、記録媒体10からRAM12にロードされ、RAM12に格納されている。このRAM12に格納された野手キャラクタ用の第1モーションデータが、CPU7に認識される。
動作方向算出手段55は、野手キャラクタが動作する動作方向を規定するための第1データを算出する処理を、CPU7に実行させる機能を備えている。動作方向算出手段55では、野手キャラクタが動作する動作方向を規定するための第1データを算出する処理が、CPU7により実行される。
この手段では、野手キャラクタが捕球動作する動作方向を規定するための捕球動作用のベクトルデータを算出する処理が、CPU7により実行される。たとえば、この手段では、動作中の野手キャラクタの位置座標データ(野手キャラクタ用の位置座標データ)をCPU7に認識させることにより、野手キャラクタのベクトルを示すベクトルデータ(捕球動作用のベクトルデータ)を算出する処理が、CPU7により実行される。そして、捕球動作用のベクトルデータが、CPU7に認識される。
交差位置認識手段56は、野手キャラクタとボールオブジェクトとが交差する交差位置を、CPU7に認識させる機能を備えている。交差位置認識手段56では、野手キャラクタとボールオブジェクトとが交差する交差位置が、CPU7に認識される。
この手段では、野手キャラクタとボールオブジェクトとが交差する位置を示す交差位置座標データが、CPU7に認識される。たとえば、この手段では、野手キャラクタの位置とボールオブジェクトの軌道とが最短距離になる位置(ボールの捕球位置)を示す交差座標データが、CPU7に認識される。ここでは、ボールオブジェクトの軌道方程式により規定される軌道上のボールオブジェクトの各位置座標データと、野手キャラクタの位置座標データとに基づいて、軌道上のボールオブジェクトと野手キャラクタとの距離を算出する処理が、CPU7により実行される。この処理を軌道上のボールオブジェクトの全位置において実行し、上記の距離が最小になったときのボールオブジェクトの位置が、野手キャラクタの位置とボールオブジェクトの軌道とが最短距離になる位置すなわちボールの捕球位置として、CPU7に認識される。
第1フレーム数認識手段57は、動作中の野手キャラクタが交差位置に到達するまでの所定の第1フレーム数を、CPU7に認識させる機能を備えている。第1フレーム数認識手段57では、動作中の野手キャラクタが交差位置に到達するまでの所定の第1フレーム数が、CPU7に認識される。
この手段では、動作中の野手キャラクタが交差位置に到達するまでの所定の第1フレーム数、すなわち動作中の野手キャラクタが交差位置に到達する前の所定の第1フレーム数が、CPU7に認識される。この第1フレーム数は、ゲームプログラムにおいて予め規定されており、第1フレーム数の値たとえば5(フレーム)は、RAM12に格納されている。
第2フレーム数認識手段58は、動作中の野手キャラクタが交差位置に到達した後の所定の第2フレーム数を、CPU7に認識させる機能を備えている。第2フレーム数認識手段58では、動作中の野手キャラクタが交差位置に到達した後の所定の第2フレーム数が、CPU7に認識される。
この手段では、動作中の野手キャラクタが交差位置に到達した後の所定の第2フレーム数が、CPU7に認識される。この第2フレーム数は、ゲームプログラムにおいて予め規定されており、第2フレーム数の値たとえば5(フレーム)は、RAM12に格納されている。
第2モーションデータ認識手段59は、第1データおよび第2データに基づいて、野手キャラクタ用の第1モーションデータに続く野手キャラクタ用の第2モーションデータを、CPU7に認識させる機能を備えている。詳細には、第2モーションデータ認識手段59は、第1データおよび第2データに基づいて、所定の第1フレーム数の野手キャラクタ用の第2モーションデータを、CPU7に認識させる機能を備えている。より詳細には、第2モーションデータ認識手段59は、第1データおよび第2データに基づいて野手キャラクタの動作方向とボールオブジェクトの移動方向とがなす角度を示す角度データを算出する処理をCPU7に実行させ、角度データに応じて所定の第1フレーム数の野手キャラクタ用の第2モーションデータをCPU7に認識させる機能を備えている。
第2モーションデータ認識手段59では、第1データおよび第2データに基づいて、野手キャラクタの動作方向とボールオブジェクトの移動方向とがなす角度を示す角度データを算出する処理が、CPU7により実行される。そして、この角度データに応じて所定の第1フレーム数の野手キャラクタ用の第2モーションデータが、CPU7に認識される。
この手段では、まず、野手キャラクタの動作方向に伸びる線とボールオブジェクトの移動方向に伸びる線とがなす角度を示す角度データを算出する処理が、CPU7により実行される。次に、この角度データに応じて所定の第1フレーム数の野手キャラクタ用の第2モーションデータが、CPU7に認識される。
ここでは、たとえば、捕球動作用のベクトルデータとボール用のベクトルデータとに基づいて、野手キャラクタのベクトルとボール用のベクトルとの内積を算出する処理が、CPU7により実行される。また、捕球動作用のベクトルデータとボール用のベクトルデータとに基づいて、野手キャラクタのベクトルの大きさとボール用のベクトルの大きさとを算出する処理が、CPU7により実行される。そして、野手キャラクタのベクトルとボール用のベクトルとの内積を、野手キャラクタのベクトルの大きさおよびボール用のベクトルの大きさで除算する処理が、CPU7により実行される。そして、この除算結果の値jを逆余弦関数に代入することにより、野手キャラクタのベクトルとボール用のベクトルとがなす角度を示す角度データが、CPU7により算出される。すると、この角度データの値がCPU7に認識される。すると、この角度データに対応する野手キャラクタ用のモーションデータが、CPU7に認識される。ここでCPU7に認識される野手キャラクタ用のモーションデータは、所定の第1フレーム数たとえばフレーム数が5(フレーム)である野手キャラクタ用の第2モーションデータである。
第2野手キャラクタ表示手段60は、動作中の野手キャラクタを、野手キャラクタ用の第2モーションデータを用いてテレビジョンモニタ20に表示する機能を備えている。詳細には、第2野手キャラクタ表示手段60は、姿勢がボールオブジェクトの方向に向くように動作する野手キャラクタを、所定の第1フレーム数の野手キャラクタ用の第2モーションデータを用いて、テレビジョンモニタ20に表示する機能を備えている。より詳細には、第2野手キャラクタ表示手段60は、角度データに応じて野手キャラクタの動作方向を補正する処理をCPU7に実行させることにより、野手キャラクタの姿勢がボールオブジェクトの方向に向くように動作する野手キャラクタを、所定の第1フレーム数の野手キャラクタ用の第2モーションデータを用いて、テレビジョンモニタ20に表示する機能を備えている。
第2野手キャラクタ表示手段60では、角度データに応じて野手キャラクタの動作方向を補正する処理が、CPU7により実行される。これにより、野手キャラクタの姿勢がボールオブジェクトの方向に向くように動作する野手キャラクタが、所定の第1フレーム数の野手キャラクタ用の第2モーションデータを用いて、テレビジョンモニタ20に表示される。
この手段では、たとえば、角度データKに応じて野手キャラクタの動作方向を補正する処理が、CPU7により実行される。たとえば、角度データKの値と所定の基準角度データの値との差分を算出する処理をCPU7に実行させることにより、基準角度からの差分角度である差分角度データがCPU7に認識される。すると、野手キャラクタの動作方向を差分角度データが示す角度の方向に補正する処理が、CPU7により実行される。すなわち、捕球動作用のベクトルを差分角度データが示す角度の方向に変更する処理が、CPU7により実行される。具体的には、野手キャラクタのモーションデータの最初の画像データ(開始画像データ)のベクトルの方向が、差分角度データが示す角度の方向に変更される。このように、捕球動作用のベクトルが変更されると、所定の第1フレーム数の第2モーションデータがテレビジョンモニタ20に供給されたときに、野手キャラクタの姿勢がボールオブジェクトの方向に向くように動作する野手キャラクタが、テレビジョンモニタ20に表示される。
軸方向算出手段61は、野手キャラクタとベースオブジェクトとを結ぶ軸方向を規定するための第3データを算出する処理を、CPU7に実行させる機能を備えている。軸方向算出手段61では、野手キャラクタとベースオブジェクトとを結ぶ軸方向を規定するための第3データを算出する処理が、CPU7により実行される。
この手段では、野手キャラクタとベースオブジェクトとを結ぶ直線の方向を規定するためのベクトルデータを算出する処理が、CPU7により実行される。ここでは、この野手キャラクタとベースオブジェクトとを結ぶ直線の方向は、ボールを捕球した野手キャラクタがボールを送球する方向(送球方向)に対応している。たとえば、この手段では、野手キャラクタの位置座標データとベース用の位置座標データとに基づいて、送球方向を規定するための送球動作用のベクトルデータを算出する処理が、CPU7により実行される。ここでは、ボールの捕球位置を示す交差座標データと、ベース用の位置座標データとに基づいて、送球方向を規定するための送球動作用のベクトルデータがCPU7により算出される。
第3モーションデータ認識手段62は、第1データおよび第3データに基づいて、野手キャラクタ用の第1モーションデータおよび野手キャラクタ用の第2モーションデータに続く野手キャラクタ用の第3モーションデータを、CPU7に認識させる機能を備えている。詳細には、第3モーションデータ認識手段62は、第1データおよび第3データに基づいて、所定の第2フレーム数の、野手キャラクタ用の第1モーションデータおよび野手キャラクタ用の第2モーションデータに続く野手キャラクタ用の第3モーションデータを、CPU7に認識させる機能を備えている。より詳細には、第3モーションデータ認識手段62は、第1データおよび第3データに基づいて野手キャラクタの動作方向と軸方向とがなす角度を示す角度データを算出する処理をCPU7に実行させ、角度データに応じて、所定の第2フレーム数の、野手キャラクタ用の第1モーションデータおよび野手キャラクタ用の第2モーションデータに続く野手キャラクタ用の第3モーションデータを、CPU7に認識させる機能を備えている。
第3モーションデータ認識手段62では、第1データおよび第3データに基づいて野手キャラクタの動作方向と軸方向とがなす角度を示す角度データを算出する処理が、CPU7により実行される。そして、この角度データに応じて、所定の第2フレーム数の、野手キャラクタ用の第1モーションデータおよび野手キャラクタ用の第2モーションデータに続く野手キャラクタ用の第3モーションデータが、CPU7に認識される。
この手段では、まず、野手キャラクタの動作方向に伸びる線と野手キャラクタの送球方向に伸びる線とがなす角度を示す角度データを算出する処理が、CPU7により実行される。次に、この角度データに応じて所定の第2フレーム数の野手キャラクタ用の第3モーションデータが、CPU7に認識される。
ここでは、たとえば、捕球動作用のベクトルデータと送球動作用のベクトルデータとに基づいて、捕球動作用のベクトルと送球動作用のベクトルとの内積を算出する処理が、CPU7により実行される。また、捕球動作用のベクトルデータと送球動作用のベクトルデータとに基づいて、捕球動作用のベクトルの大きさと送球動作用のベクトルの大きさとを算出する処理が、CPU7により実行される。そして、捕球動作用のベクトルと送球動作用のベクトルとの内積を、捕球動作用のベクトルの大きさおよび送球動作用のベクトルの大きさで除算する処理が、CPU7により実行される。そして、この除算結果の値jを逆余弦関数(arc_cos(J))に代入することにより、捕球動作用のベクトルと送球動作用のベクトルとがなす角度を示す角度データKが、CPU7により算出される。すると、この角度データKの値がCPU7に認識される。すると、この角度データKに対応する野手キャラクタ用のモーションデータが、CPU7に認識される。ここでCPU7に認識される野手キャラクタ用のモーションデータは、所定の第2フレーム数たとえばフレーム数が5(フレーム)である野手キャラクタ用の第3モーションデータである。
第3野手キャラクタ表示手段63は、動作中の野手キャラクタを、野手キャラクタ用の第3モーションデータを用いてテレビジョンモニタ20に表示する機能を備えている。詳細には、第3野手キャラクタ表示手段63は、姿勢が軸方向に向くように動作する野手キャラクタを、所定の第2フレーム数の野手キャラクタ用の第3モーションデータを用いてテレビジョンモニタ20に表示する機能を備えている。より詳細には、第3野手キャラクタ表示手段63は、角度データに応じて野手キャラクタの動作方向を補正する処理をCPU7に実行させることにより、姿勢が軸方向に向くように動作する野手キャラクタを、所定の第2フレーム数の野手キャラクタ用の第3モーションデータを用いてテレビジョンモニタ20に表示する機能を備えている。
第3野手キャラクタ表示手段63では、角度データに応じて野手キャラクタの動作方向を補正する処理が、CPU7により実行される。これにより、姿勢が軸方向に向くように動作する野手キャラクタが、所定の第2フレーム数の野手キャラクタ用の第3モーションデータを用いて、テレビジョンモニタ20に表示される。
この手段では、たとえば、角度データに応じて野手キャラクタの捕球動作方向を補正する処理が、CPU7により実行される。たとえば、角度データの値と所定の基準角度データの値との差分を算出する処理をCPU7に実行させることにより、基準角度からの差分角度である差分角度データがCPU7に認識される。すると、野手キャラクタの動作方向を差分角度データが示す角度の方向に補正する処理が、CPU7により実行される。すなわち、捕球動作用のベクトルを差分角度データが示す角度の方向に変更する処理が、CPU7により実行される。このように、捕球動作用のベクトルが変更されると、所定の第2フレーム数の第3モーションデータがテレビジョンモニタ20に供給されたときに、野手キャラクタの送球姿勢が送球方向に向くように動作する野手キャラクタが、テレビジョンモニタ20に表示される。
〔野球ゲームにおける動作補正システムの処理フローと説明〕
次に、野球ゲームにおける動作補正システムについて説明する。また、図10および図11に示す動作補正システムに関するフローについても同時に説明する。なお、図11は、動作補正システムを説明するためのフローである。
まず、ゲーム機の電源が投入されゲーム機が起動されると、野球ゲームプログラムが、記録媒体10からRAM12にロードされ格納される。このときには、野球ゲームを実行する上で必要となる各種の基本ゲームデータも、同時に、記録媒体10からRAM12にロードされ格納される(S1)。
たとえば、基本ゲームデータには3次元ゲーム空間用の画像に関するデータが含まれており、RAM12に格納された、3次元ゲーム空間用の画像に関するデータ、たとえば、スタジアム用の画像データ、ボール用の画像データ、選手キャラクタ用の画像データ、および複数の選手キャラクタ用の画像データからなるモーションデータ等が、CPU7に認識される。また、基本ゲームデータには、3次元ゲーム空間用の画像に関するデータを3次元ゲーム空間に配置するための位置座標データが含まれており、この位置座標データがCPU7に認識される。
なお、複数の選手キャラクタ用の画像データからなるモーションデータの一例としては、野手キャラクタ70の動作を示す、第1モーションデータ、第2モーションデータ、および第3モーションデータがある。第1モーションデータは、ボールの捕球時に選手キャラクタがボールを追いかける動作に対応するモーションデータである。第2モーションデータは、ボールを追いかける姿勢からボールを捕球する姿勢までの選手キャラクタの一連の動作に対応するモーションデータである。第3モーションデータは、ボールを捕球した姿勢からボールを送球する姿勢までの選手キャラクタの一連の動作(ランニングスローの動作)に対応するモーションデータである。
また、基本ゲームデータには、動作中の野手キャラクタ70が捕球姿勢に入る前の所定の第1フレーム数の値を示すデータ、および動作中の野手キャラクタ70が捕球姿勢に入った後の所定の第2フレーム数の値を示すデータが含まれている。ここでは、第1フレーム数および第2フレーム数の値は「5(フレーム)」となっており、この「5(フレーム)」という数値が第1フレーム数の値および第2フレーム数の値としてCPU7に認識される。
続いて、RAM12に格納された野球ゲームプログラムが、基本ゲームデータに基づいて、CPU7により実行される(S2)。すると、野球ゲームの起動画面がテレビジョンモニタ20に表示される。すると、野球ゲームを実行するための各種の設定画面がテレビジョンモニタ20に表示される。ここでは、たとえば、チームの選択および選手キャラクタの選択等を行うための選択画面が、テレビジョンモニタ20に表示される。この選択画面において、コントローラ17が操作されることにより、チームの選択および選手キャラクタの選択等が行われる。
続いて、野球ゲームにおいて試合を開始するための命令(試合開始命令)がCPU7から発行される(S3)。すると、RAM12に格納された3次元ゲーム空間用の画像に関するデータが、CPU7に認識される。すると、この3次元ゲーム空間の画像に関するデータを、ゲーム空間における位置座標データが示す位置に配置する命令が、CPU7から発行され、各種の画像がテレビジョンモニタ20に表示される(S4)。
たとえば、スタジアム用の画像データ等が、CPU7に認識される。すると、スタジアム用の画像データを用いて、スタジアム画像がテレビジョンモニタ20に表示される。具体的には、ゲーム空間において、スタジアム用の位置座標データが示す位置に、スタジアム用の画像データを配置する命令をCPU7に発行させることにより、スタジアム画像がテレビジョンモニタ20に表示される。なお、スタジアム用の画像データにはベース用の画像データが含まれており、スタジアム用の位置座標データにはベースオブジェクト用の位置座標データが含まれている。すなわち、ここで、ベースオブジェクト75がテレビジョンモニタ20に表示される。
また、プレイヤより命令が指示されるチーム(自チーム)、および他のプレイヤ又はAIプログラム(Artificial Intelligence プログラム)により命令が指示されるチーム(敵チーム)のいずれか一方の選手キャラクタが守備位置に配置された状態が、選手キャラクタ用の画像データを用いて、テレビジョンモニタ20に表示される。また、味方チームの選手キャラクタおよび相手チームの選手キャラクタのいずれか他方の選手キャラクタが打席位置に配置された状態が、選手キャラクタ用の画像データを用いて、テレビジョンモニタ20に表示される。たとえば、選手キャラクタ用の位置座標データが示す位置に選手キャラクタ用の画像データを配置する命令がCPU7から発行されたときに、選手キャラクタ用の画像がテレビジョンモニタ20に表示される。
続いて、自チームおよび敵チームのいずれか一方のチームの攻撃イベントを実行するための命令(攻撃イベント実行命令)がCPU7から発行される(S5)。言い替えると、自チームおよび敵チームのいずれか他方のチームの守備イベントを実行するための命令(守備イベント実行命令)がCPU7から発行される。これにより、自チームおよび敵チームのいずれか一方のチームの攻撃イベント、および自チームおよび敵チームのいずれか他方のチームの守備イベントが、実行される。このときに、プレイヤ又は他のプレイヤ(AIプログラムを含む)が選手キャラクタに対して指示した命令が、CPU7に認識される。すると、CPU7に認識された各命令に応じて、各チームの選手キャラクタが、投球動作、打撃動作、守備動作、および走塁動作等の少なくともいずれか1つの動作を行う状態が、テレビジョンモニタ20に表示される。
そして、チームごとに所定の回数たとえば9回分の攻撃イベント又は守備イベントが終了すると、試合を終了するための命令(試合終了命令)がCPU7から発行される。すると、試合結果をRAM12に保存する処理が、CPU7により実行される。すなわち、試合終了命令が発行されたか否かがCPU7により判断され(S6)、試合終了命令が発行された場合(S6でYes)、試合を終了するための処理たとえば試合結果をRAM12に保存する処理が、CPU7により実行される(S7)。一方で、試合終了命令が発行されていない場合(S6でNo)、ステップ4(S4)の処理が再実行される。
以下には、野球ゲームの守備イベントにおける選手キャラクタの守備動作に動作補正システムが適用された場合の例が、示されている。ここでは、自チームの選手キャラクタすなわち野手キャラクタ70(投手キャラクタおよび捕手キャラクタを含む)が各守備位置に配置されており、敵チームの打者キャラクタが打席位置に配置されているものとする。また、敵チームの各選手キャラクタに対する命令は、AIプログラムに基づいて指示されるものとする。
守備イベント実行命令がCPU7から発行されたときには、プレイヤが投手キャラクタに投球時の球種を指示するためにコントローラ17を操作すると、投球時の球種を示す球種データが、CPU7に認識される。そして、プレイヤが投手キャラクタに投球動作の開始を指示するためにコントローラ17を操作すると、投球動作開始命令がCPU7から発行される。すると、投手キャラクタの投球動作が、投手キャラクタ用の画像データからなるモーションデータを用いて、テレビジョンモニタ20に表示される。そして、プレイヤが投手キャラクタに投球コースを指示するためにコントローラ17を操作すると、投球時の投球コースを示す投球位置データが、CPU7に認識される。このようにして、投手キャラクタに対して投球に関する指示が行われる(S51)。すると、球種データに対応した変化量で変化しながら投球コースへと移動するボールオブジェクト71が、テレビジョンモニタ20に表示される(S52)。
なお、投手キャラクタからリリースされたボールオブジェクト71の表示は、ゲームプログラムにおいて予め規定された投球用の軌道方程式に基づいて実行される。この投球用の軌道方程式によりボールオブジェクト71の位置座標データがCPU7に認識され、このボールオブジェクト71の位置座標データが示す位置にボール用の画像データを配置する処理がCPU7により実行される。すると、投球用の軌道方程式により規定される軌道上を移動するボールオブジェクト71が、複数のボール用の画像データからなる投球用のモーションデータを用いてテレビジョンモニタ20に連続的に表示される。
続いて、AIプログラムからの命令に基づいて打者キャラクタのミートカーソルの位置が指定されると、ミートカーソルの位置座標を示すミート位置データがCPU7に認識される。そして、AIプログラムからの命令に基づいて打者キャラクタにスイングの開始が指示されたか否かが、CPU7により判別される。言い替えると、スイング開始命令がAIプログラムから発行されたか否かが、CPU7により判別される(S52)。そして、スイング開始命令がAIプログラムから発行された場合(S52でYes)、打者キャラクタのスイング動作が、複数の打者キャラクタ用の画像データからなるモーションデータを用いてテレビジョンモニタ20に表示される。
そして、ミート位置データにより規定されるミートカーソルによってボールオブジェクト71が捉えられたか否かが、CPU7により判別される(S53)。具体的には、ミート位置データにより位置が規定されたミートカーソルの表示領域とボールオブジェクト71の表示領域との間に重複領域が存在するか否かが、CPU7により判別される。この重複領域の判別は、ミートカーソルの領域内の複数の座標データとボールオブジェクト71の領域内の複数の座標データとの少なくとも1つが一致するか否かによって行われる。そして、ミートカーソルによってボールオブジェクト71が捉えられた場合(S53でYes)、ボールオブジェクト71の軌道方程式に基づいて、ボールオブジェクト71の軌道がCPU7により設定される。すると、ボールオブジェクト71の軌道方程式により規定される軌道上にボールの捕球位置が設定される(S54)。このときに、ボールの捕球位置を示す捕球位置データがCPU7に認識される。たとえば、打球がフライの場合、ボールオブジェクト71の落下位置を示す位置データが、捕球位置データとしてCPU7に認識される。ここで、落下位置は、ボールオブジェクト71の軌道がグランド面に交わる交点となる。すると、図3に示すように、ボールの捕球位置を示す円状のマーク80が、マーク用の画像データを用いてテレビジョンモニタ20に表示される。ここでは、ボールの捕球位置を示す円状のマーク80が表示される場合の例を示したが、このマーク80を非表示に設定することも可能である。また、打者キャラクタにより打ち返されたボールオブジェクト71が、打球用のモーションデータを用いてテレビジョンモニタ20に表示される(S55)。
なお、ここでは、打球がフライの場合のボールの捕球位置の設定が示されている。
打球がゴロの場合は、後述するステップ58およびステップ59において求められるボールの移動方向と野手の移動方向とのが交わる交点の位置データが、ボールの捕球位置を示す位置データとしてCPU7に認識される。また、打球がゴロの場合は、ボールの捕球位置を示す円状のマーク80は表示されない。
以下では、ボールオブジェクト71を捕球する野手キャラクタ70が、右投げのセンターの野手キャラクタ70aである場合を例として、説明を行うものとする。図3には、センターの野手キャラクタ70aおよびボールオブジェクト71だけが、表記されている。しかしながら、実際の野球ゲームでは、センター以外の野手キャラクタおよび打者キャラクタも、テレビジョンモニタ20に表示されている。
そして、打者キャラクタに打ち返されたボールオブジェクト71がテレビジョンモニタ20に表示されたときに、打者キャラクタに打ち返されたボールオブジェクト71を野手キャラクタ70aに捕球させるためにプレイヤがコントローラ17(上方向キー17U、下方向キー17D、左方向キー17L、右方向キー17R)を操作すると、コントローラ17からの操作信号に対応する命令たとえば野手キャラクタ70aを移動させる命令(野手移動命令)が、CPU7に認識される。すると、野手移動命令がCPU7から発行され、この野手移動命令に基づいて移動する野手キャラクタ70aの位置座標データが、連続的にCPU7に認識される。すると、野手キャラクタ70a用の位置座標データが示す位置に野手キャラクタ70a用の第1モーションデータを配置する命令がCPU7から発行され、図4に示すように、捕球姿勢に入るまでの野手キャラクタ70aの動作(野手キャラクタ70aがボールを追いかける動作)がテレビジョンモニタ20に連続的に表示される(S56)。
上記のように、野手キャラクタ70aおよびボールオブジェクト71がボールの捕球位置の方向に移動する状態が、テレビジョンモニタ20に表示されているときには、野手キャラクタ70aがボールの捕球位置に到達するまでの到達フレーム数が、常にCPU7に認識されている。そして、野手キャラクタ70aがボールの捕球位置に到達するまでの到達フレーム数の値が第1フレーム数の値に等しくなったか否かがが、CPU7により判断されている(S57)。ここでは、野手キャラクタ70aがボールの捕球位置に到達するまでの到達フレーム数が、常にCPU7に監視されている場合の例を示しているが、ボールオブジェクト71がボールの捕球位置に到達するまでの到達フレーム数をCPU7に監視させるようにしても良い。
そして、到達フレーム数の値が第1フレーム数の値に等しくなった場合、ボールオブジェクト71が移動する移動方向を規定するためのボール用のベクトルデータB1を算出する処理が、CPU7により実行される(S58)。たとえば、軌道上を移動するボールオブジェクト71の位置座標データをCPU7に認識させることにより、ボールオブジェクト71のベクトルを示すベクトルデータ(ボール用のベクトルデータB1)を算出する処理が、CPU7により実行される。
具体的には、野手キャラクタ70aがボールの捕球位置に到達するまでの到達フレーム数が5フレームになったときのボールオブジェクト71の位置座標データと、ボールの捕球位置座標データ(交差座標データ)Mとが、CPU7に認識される。たとえば、図4では、到達フレーム数の値が5フレームになったときのボールオブジェクト71の位置Q1を示すボール用の位置座標データと、ボールの捕球位置Mを示すボールの捕球位置座標データMとが、CPU7に認識される。そして、ボールの捕球位置座標データMから、到達フレーム数が5フレームになったときのボールオブジェクト71の位置座標データを減算する処理が、CPU7により実行される。すると、この処理結果であるベクトルデータが、ボール用のベクトルデータB1としてCPU7に認識される。
また、到達フレーム数の値が第1フレーム数の値に等しくなった場合、野手キャラクタ70aが捕球動作する動作方向を規定するための捕球動作用のベクトルデータV1を算出する処理が、CPU7により実行される(S59)。たとえば、動作中の野手キャラクタ70aの位置座標データ(野手キャラクタ70a用の位置座標データ)をCPU7に認識させることにより、野手キャラクタ70aのベクトルを示すベクトルデータ(捕球動作用のベクトルデータV1)を算出する処理が、CPU7により実行される。
具体的には、野手キャラクタ70aがボールの捕球位置に到達するまでの到達フレーム数が5フレームになったときの野手キャラクタ70aの位置座標データと、ボールの捕球位置座標データ(交差座標データ)Mとが、CPU7に認識される。たとえば、図4では、到達フレーム数の値が5フレームになったときの野手キャラクタ70aの位置P1を示す野手キャラクタ70a用の位置座標データと、ボールの捕球位置Mを示すボールの捕球位置座標データMとが、CPU7に認識される。そして、ボールの捕球位置座標データMから到達フレーム数が5フレームになったときの野手キャラクタ70aの位置座標データを減算する処理が、CPU7により実行される。すると、この処理結果であるベクトルデータが、捕球動作用のベクトルデータV1としてCPU7に認識される。
なお、打球がゴロの場合、野手キャラクタ70aがボールの捕球位置に到達するまでの到達フレーム数が6フレームになったときの野手キャラクタ70aの位置座標データと、野手キャラクタ70aがボールの捕球位置に到達するまでの到達フレーム数が5フレームになったときの野手キャラクタ70aの位置座標データとが、CPU7に認識される。そして、野手キャラクタ70aがボールの捕球位置に到達するまでの到達フレーム数が5フレームになったときの野手キャラクタ70aの位置座標データから、野手キャラクタ70aがボールの捕球位置に到達するまでの到達フレーム数が6フレームになったときの野手キャラクタ70aの位置座標データを減算する処理が、CPU7により実行される。すると、この処理結果であるベクトルデータが、捕球動作用のベクトルデータV1としてCPU7に認識される。
続いて、まず、野手キャラクタ70aの動作方向に伸びる線とボールオブジェクト71の移動方向に伸びる線とがなす第1交差角度を示す第1交差角度データα1を算出する処理が、CPU7により実行される。次に、この第1交差角度データα1に応じて所定の第1フレーム数の野手キャラクタ70a用の第2モーションデータが、CPU7に認識される。
具体的には、捕球動作用のベクトルデータV1とボール用のベクトルデータB1とに基づいて、野手キャラクタ70aのベクトルとボール用のベクトルとの内積を算出する処理が、CPU7により実行される。また、捕球動作用のベクトルデータV1とボール用のベクトルデータB1とに基づいて、野手キャラクタ70aのベクトルの大きさ|V1|とボール用のベクトルの大きさ|B1|とを算出する処理が、CPU7により実行される。そして、野手キャラクタ70aのベクトルとボール用のベクトルとの内積を、野手キャラクタ70aのベクトルの大きさおよびボール用のベクトルの大きさで除算する処理(j1=(V1・B1)/((|V1||B1|))が、CPU7により実行される。そして、この除算結果の値j1を逆余弦関数(arc_cos(j1))に代入することにより、野手キャラクタ70aのベクトルとボール用のベクトルとがなす第1交差角度を示す第1交差角度データα1が、CPU7により算出される。すると、この第1交差角度データα1の値がCPU7に認識される。すると、この第1交差角度データα1に応じて所定の第1フレーム数の野手キャラクタ70a用の第2モーションデータが、CPU7に認識される(S60)。
以下では、第1交差角度データα1の値が−75度である場合を例として、説明を行うものとする。
すると、野手キャラクタ70a用の第2モーションデータを選択するために設定された、第1の角度の範囲(−45度〜45度:代表値0度)、第2の角度の範囲(45度〜135度:代表値90度)、第3の角度の範囲(−45度〜−135度:代表値−90度)、第4の角度の範囲(135度〜180度:代表値157.5度)、および第5の角度の範囲(−135〜−180度:代表値−157.5度)のうちのいずれの範囲に、第1交差角度データα1(=−75度)が属するかが、CPU7により判別される(図5を参照)。そして、第1交差角度データα1が属する範囲が判別されると、第1交差角度データα1に対応する野手キャラクタ70a用のモーションデータが、CPU7に認識される。ここでは、図6に示すように、第1交差角度データα1が属する範囲に応じて、第1交差角度データα1に対応する野手キャラクタ70a用のモーションデータ(第2モーションデータ)が選択されるようになっている。たとえば、第1交差角度データα1が−75度である場合は、第3の角度の範囲(−45度〜−135度:代表値−90度)に属することになるので、左方捕球用の第2モーションデータが、CPU7に認識される。すなわち、右側に回転しながら捕球する第2モーションデータが選択される。
なお、ここでCPU7に認識された野手キャラクタ70a用のモーションデータが、所定の第1フレーム数たとえばフレーム数が5(フレーム)である野手キャラクタ70a用の第2モーションデータとなる。また、第1の角度の範囲、第2の角度の範囲、第3の角度の範囲、第4の角度の範囲、および第5の角度の範囲は、ゲームプログラムにおいて予め規定されており、範囲の上限および下限を示す角度は、RAM12に格納されている。さらに、第1の角度の範囲、第2の角度の範囲、第3の角度の範囲、第4の角度の範囲、および第5の角度の範囲のそれぞれに対応する第2モーションデータとしては、各代表角度の方向でボールを正面で捕球する野手キャラクタ用のモーションデータが1種類のみ用意されている。
続いて、図4に示すように、第1交差角度データα1に応じて、野手キャラクタ70aの動作方向を規定するための捕球動作用のベクトルを補正する処理が、CPU7により実行される(S61)。具体的には、第1交差角度データα1の値と、上記で判別された所定の角度の範囲の代表値である代表角度データD1の値(0度、90度、−90度、157.5度、−157.5度)との差分を算出する処理が、CPU7により実行される。そして、代表角度からの差分角度である第1差分角度データS1がCPU7に認識される。すると、野手キャラクタ70aの動作方向V1を第1差分角度データS1が示す角度の方向V1’に補正する処理が、CPU7により実行される。すなわち、捕球動作用のベクトルを第1差分角度データS1が示す角度の方向V1’に変更する処理が、CPU7により実行される。具体的には、野手キャラクタ70aの移動方向V1を第1差分角度データS1が示す角度(15度)ずれた方向V1’に変更する処理が、CPU7により実行される。すると、所定の第1フレーム数の第2モーションデータがテレビジョンモニタ20に供給されたときに、右側に回転しながら野手キャラクタ70aの捕球姿勢がボールオブジェクト71の方向に向くように動作する野手キャラクタ70aが、テレビジョンモニタ20に表示される(S62)。
ここでは、野手キャラクタ70aの移動方向たとえばボールを捕球するために走っている野手キャラクタ70aの移動方向は、野手キャラクタ70aのベクトルの方向V1に一致している。そして、捕球時に野手キャラクタ70aが正対する方向は、角度の範囲の代表角度データD1の方向に一致している。このため、RAM12に格納された第2モーションデータを用いて野手キャラクタ70aの捕球動作を表示すると、所定の第1フレーム数たとえば5フレームの間に、野手キャラクタ70aが、ボールの捕球位置の方向に走る姿勢からボールを捕球する姿勢へと姿勢を変更し、ボールを正面で捕球する動作が、表示される(S63)。
続いて、野手キャラクタ70aがボールオブジェクト71を捕球したときに、野手キャラクタ70aにボールオブジェクト71を所望の塁に送球させるためにプレイヤが、コントローラ17(第1ボタン17a、第2ボタン17b、第3ボタン17c、および第4ボタン17d)を操作すると、コントローラ17からの操作信号に対応する命令たとえば野手キャラクタ70aにボールオブジェクト71を送球させる命令(送球命令)が、CPU7に認識される(S64)。ここでは、第2ボタン17bが操作されたときには1塁送球命令がCPU7に認識され、第1ボタン17aが操作されたときには2塁送球命令がCPU7に認識され、第3ボタン17cが操作されたときにはホーム送球命令がCPU7に認識され、第4ボタン17dが操作されたときには3塁送球命令がCPU7に認識される。
すると、捕球位置の野手キャラクタ70aとベースオブジェクト75とを結ぶ直線の方向を規定するためのベクトルデータを算出する処理が、CPU7により実行される(S65)。たとえば、捕球位置の野手キャラクタ70aとベースオブジェクト75とを結ぶ直線の方向は、ボールを捕球した野手キャラクタ70aがボールを送球する方向(送球方向)に対応している。具体的には、野手キャラクタ70aの位置座標データとベース用の位置座標データとに基づいて、送球方向を規定するための送球動作用のベクトルデータV2を算出する処理が、CPU7により実行される。たとえば、図7に示すように、第1ボタン17aが操作され2塁送球命令がCPU7に認識された場合、ボールの捕球位置を示す捕球位置座標データMと、2塁ベース75a用の位置座標データとに基づいて、2塁の送球方向を規定するための送球動作用のベクトルデータV2がCPU7により算出される。
すると、捕球動作用のベクトルデータV1と送球動作用のベクトルデータV2とに基づいて、捕球動作用のベクトルと送球動作用のベクトルとの内積を算出する処理が、CPU7により実行される。また、捕球動作用のベクトルデータV1と送球動作用のベクトルデータV2とに基づいて、捕球動作用のベクトルの大きさ|V1|と送球動作用のベクトルの大きさ|V2|とを算出する処理が、CPU7により実行される。そして、捕球動作用のベクトルと送球動作用のベクトルとの内積を、捕球動作用のベクトルの大きさおよび送球動作用のベクトルの大きさで除算する処理(j2=(V1・B1)/((|V1||B1|))が、CPU7により実行される。そして、この除算結果の値j2を逆余弦関数(arc_cos(j2))に代入することにより、捕球動作用のベクトルと送球動作用のベクトルとがなす第2交差角度を示す第2交差角度データα2が、CPU7により算出される。すると、この第2交差角度データα2の値がCPU7に認識される。
以下では、第2交差角度データα2の値が100度である場合を例として、説明を行うものとする。すなわち、360度から100度を減算したデータα2’の値が260度である場合を例として、説明を行うものとする。
すると、野手キャラクタ70a用の第3モーションデータを選択するために設定された、第6の角度の範囲(−45度〜45度:代表値0度)、第7の角度の範囲(45度〜135度:代表値90度)、第8の角度の範囲(−45度〜−90度:代表値−67.5度)、第9の角度の範囲(135度〜225度:代表値180度)、および第10の角度の範囲(225〜270度:代表値247.5度)のうちのいずれの範囲に、第2交差角度データα2が属するかが、CPU7により判別される(図8を参照)。そして、第2交差角度データα2が属する範囲が判別されると、第2交差角度データα2に対応する野手キャラクタ70a用のモーションデータが、CPU7に認識される。ここでは、図9に示すように、第2交差角度データα2が属する範囲に応じて、第2交差角度データα2に対応する野手キャラクタ70a用のモーションデータ(第3モーションデータ)が選択されるようになっている。たとえば、第2交差角度データα2’が260度である場合は、第10の角度の範囲(225〜270度:代表値247.5度)に属することになるので、後方送球用の第3モーションデータが、CPU7に認識される。すなわち、左側に回転しながら送球する第3モーションデータが選択される(S66)。
なお、ここでCPU7に認識される野手キャラクタ70a用のモーションデータは、所定の第2フレーム数たとえばフレーム数が5(フレーム)である野手キャラクタ70a用の第3モーションデータとなる。また、第6の角度の範囲、第7の角度の範囲、第8の角度の範囲、第9の角度の範囲、および第10の角度の範囲は、ゲームプログラムにおいて予め規定されており、範囲の上限および下限を示す角度は、RAM12に格納されている。さらに、第6の角度の範囲、第7の角度の範囲、第8の角度の範囲、第9の角度の範囲、および第10の角度の範囲のそれぞれに対応する第3モーションデータは、各代表角度の方向でボールを正面から送球する野手キャラクタ用のモーションデータが1種類のみ用意されている。
続いて、図7に示すように、第2交差角度データα2に応じて、野手キャラクタ70aの動作方向を規定するための送球動作用のベクトルを補正する処理が、CPU7により実行される(S67)。具体的には、第2交差角度データα2’の値と、上記で判別された所定の角度の範囲の代表値である代表角度データD2の値(0度、90度、−67.5度、180度、247.5度)との差分を算出する処理が、CPU7により実行される。そして、代表角度からの第2差分角度である第2差分角度データS2がCPU7に認識される。すると、野手キャラクタ70aの動作方向を第2差分角度データS2が示す角度の方向に補正する処理が、CPU7により実行される。すなわち、送球動作用のベクトルを第2差分角度データS2が示す角度の方向V1’’に変更する処理が、CPU7により実行される。具体的には、野手キャラクタ70aの移動方向V1を第2差分角度データS2が示す角度(12.5度)ずれた方向V1’’に変更する処理が、CPU7により実行される。すると、所定の第2フレーム数の第3モーションデータがテレビジョンモニタ20に供給されたときに、左側に回転しながら野手キャラクタ70aの送球姿勢が送球方向に向くように動作する野手キャラクタ70aが、テレビジョンモニタ20に表示される(S68)。
ここでは、野手キャラクタ70aの移動方向たとえばボールをランニングスローするために走っている野手キャラクタ70aの移動方向は、野手キャラクタ70aのベクトルの方向V1に一致している。そして、送球時に野手キャラクタ70aが正対する方向は、角度の範囲の代表角度データD2の方向に一致している。このため、RAM12に格納された第3モーションデータを用いて野手キャラクタ70aの送球動作を表示すると、所定の第2フレーム数たとえば5フレームの間に、野手キャラクタ70aが、ボールを捕球した後にボールの捕球位置を通過して走りながらボールを送球する姿勢へと姿勢を変更し、ボールを送球する動作が、表示される。すなわち、野手キャラクタがランニングスローを行う動作が、表示される。
このように、本実施形態においては、選手キャラクタの守備動作に動作補正システムを適用することにより、野手キャラクタが走りながら捕球姿勢をとるまでの一連の動作や、野手キャラクタが走りながら送球姿勢をとるまでの一連の動作を、現実世界の野球と同様にテレビジョンモニタ20に表示することができる。一般的に表現すると、現実空間において人が行う動作を、ゲーム空間において違和感なく表示することができる。
〔他の実施形態〕
(a)前記実施形態では、ゲームプログラムを適用しうるコンピュータの一例としての家庭用ビデオゲーム装置を用いた場合の例を示したが、ゲーム装置は、前記実施形態に限定されず、モニタが別体に構成されたゲーム装置、モニタが一体に構成されたゲーム装置、ゲームプログラムを実行することによってゲーム装置として機能するパーソナルコンピュータやワークステーションなどにも同様に適用することができる。また、ゲーム装置は、前記実施形態に限定されず、携帯型コンピュータ、携帯型ゲーム装置などにも同様に適用することができる。
(b)本発明には、前述したようなゲームを実行するプログラムおよびこのプログラムを記録したコンピュータ読み取り可能な記録媒体も含まれる。この記録媒体としては、カートリッジ以外に、たとえば、コンピュータ読み取り可能なフレキシブルディスク、半導体メモリ、CD−ROM、DVD、MO、ROMカセット、その他のものが挙げられる。