(57)【特許請求の範囲】
【請求項１】
仮想空間に設定したフィールドの目標位置に向かうキャラクタの動きを制御するゲーム装置において、
前記キャラクタが存在する位置を基準として、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線と直交する２本の線分のうち前記キャラクタが存在する位置で前記直線と直交する線分を下底とし、前記キャラクタが移動する方向で前記直線と直交する線分を上底とし、前記下底よりも前記上底が短い台形である判定領域を設定する領域設定手段と、
当該領域設定手段が設定した判定領域内に存在する他のキャラクタを検出するキャラクタ検出手段と、
前記キャラクタが存在する位置と前記目標位置とを結ぶ直線に前記キャラクタ検出手段が検出した他のキャラクタの位置から降ろした垂線を延長した直線と、前記判定領域の台形の斜辺とが交わる位置を新たな目標位置とするように、前記キャラクタの移動方向を変更する変更手段と、
を具備することを特徴とするゲーム装置。
【請求項２】
前記キャラクタ検出手段が複数のキャラクタを検出した場合、当該複数のキャラクタの位置から前記キャラクタが存在する位置と前記目標位置とを結ぶ直線に降ろした垂線との交わる位置が前記ゲーム媒体を操るキャラクタに最も近いキャラクタに対してのみ衝突を回避する処理を行うことを特徴とする請求項１記載のゲーム装置。
【請求項３】
表示画面上の仮想空間に設定したフィールドの目標位置に向かうキャラクタの動きを、コンピュータを用いて制御するゲーム制御方法において、前記キャラクタが存在する位置を基準として、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線と直交する２本の線分のうち前記キャラクタが存在する位置で前記直線と直交する線分を下底とし、前記キャラクタが移動する方向で前記直線と直交する線分を上底とし、前記下底よりも前記上底が短い台形である判定領域を設定する領域設定工程と、当該領域設定工程で設定した判定領域内に存在する他のキャラクタを検出するキャラクタ検出工程と、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線に前記キャラクタ検出手段が検出した他のキャラクタの位置から降ろした垂線を延長した直線と、前記判定領域の台形の斜辺とが交わる位置を新たな目標位置とするように、前記キャラクタの移動方向を変更する変更工程とを有することを特徴とするゲーム制御方法。
【請求項４】
表示画面上の仮想空間に設定したフィールドの目標位置に向かうキャラクタの動きを制御するゲームをコンピュータに実現させるプログラムを記録したコンピュータ読取可能な記録媒体において、前記ゲーム媒体を操るキャラクタが存在する位置を基準として、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線と直交する２本の線分のうち前記キャラクタが存在する位置で前記直線と直交する線分を下底とし、前記キャラクタが移動する方向で前記直線と直交する線分を上底とし、前記下底よりも前記上底が短い台形である判定領域を設定する領域設定機能と、当該領域設定手段が設定した判定領域内に存在する他のキャラクタを検出するキャラクタ検出機能と、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線に前記キャラクタ検出手段が検出した他のキャラクタの位置から降ろした垂線を延長した直線と、前記判定領域の台形の斜辺とが交わる位置を新たな目標位置とするように、前記キャラクタの移動方向を変更する変更機能とをコンピュータに実現させるためのプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、仮想空間に設定したフィールド上でキャラクタを遊技者が操作するゲーム装置、特に、フットサルやサッカーなどの球技スポーツに適用するのに好適なゲーム装置及び当該ゲーム制御方法、記録媒体に関する。
【０００２】
【従来の技術】
家庭用ゲーム装置や業務用ゲーム装置の分野においては、各種の球技スポーツをシミュレートするビデオゲームが一つのゲームジャンルとして定着している。このようなゲームは、ゲーム装置の性能向上に伴って画面に表示される選手キャラクタの外見や動きのリアルさが以前と比べて格段にアップしてきている。また、ソフトウェア技術の向上や多彩な演出によって、ゲーム愛好者に広く受け入れられている。
【０００３】
【発明が解決しようとする課題】
ところで、サッカーや、サッカーを小規模化したフットサルなどのスポーツをシミュレートするゲーム装置では、遊技者が、レバーなどの操作手段を使って特定の選手キャラクタを操作対象とし、その選手キャラクタのフィールド内における動きなどを操作して、遊技者間で、あるいは遊技者とゲーム装置との間で試合を行う。この場合、遊技者の操作対象となっていない選手キャラクタについては、ＣＰＵが所定のアルゴリズムに基づいてその動きを制御する。このアルゴリズムによっては、選手キャラクタの動きが不自然なものとなることがある。特に、ＣＰＵが制御する選手キャラクタの移動方向に相手チームの選手キャラクタや審判のキャラクタなどが存在した場合、ＣＰＵが制御する選手キャラクタに自然な動きで衝突を回避させるのが難しかった。
【０００４】
本発明は、このような技術的背景のもとになされたものであり、その目的は、コンピュータ側が制御する選手キャラクタが他のキャラクタと衝突するのを回避する動作を、より自然でリアルにすることである。
【０００５】
【課題を解決するための手段】
上記の目的を達成するために、請求項１記載の発明は、仮想空間に設定したフィールドの目標位置に向かうキャラクタの動きを制御するゲーム装置において、前記キャラクタが存在する位置を基準として、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線と直交する２本の線分のうち前記キャラクタが存在する位置で前記直線と直交する線分を下底とし、前記キャラクタが移動する方向で前記直線と直交する線分を上底とし、前記下底よりも前記上底が短い台形である判定領域を設定する領域設定手段と、当該領域設定手段が設定した判定領域内に存在する他のキャラクタを検出するキャラクタ検出手段と、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線に前記キャラクタ検出手段が検出した他のキャラクタの位置から降ろした垂線を延長した直線と、前記判定領域の台形の斜辺とが交わる位置を新たな目標位置とするように、前記キャラクタの移動方向を変更する変更手段とを具備することを特徴とする。
【０００８】
請求項２記載の発明は、請求項１記載のゲーム装置において、前記キャラクタ検出手段が複数のキャラクタを検出した場合、当該複数のキャラクタの位置から前記キャラクタが存在する位置と前記目標位置とを結ぶ直線に降ろした垂線との交わる位置が前記ゲーム媒体を操るキャラクタに最も近いキャラクタに対してのみ衝突を回避する処理を行うことを特徴とする。
【０００９】
請求項３記載の発明は、表示画面上の仮想空間に設定したフィールドの目標位置に向かうキャラクタの動きを、コンピュータを用いて制御するゲーム制御方法において、前記キャラクタが存在する位置を基準として、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線と直交する２本の線分のうち前記キャラクタが存在する位置で前記直線と直交する線分を下底とし、前記キャラクタが移動する方向で前記直線と直交する線分を上底とし、前記下底よりも前記上底が短い台形である判定領域を設定する領域設定工程と、当該領域設定工程で設定した判定領域内に存在する他のキャラクタを検出するキャラクタ検出工程と、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線に前記キャラクタ検出手段が検出した他のキャラクタの位置から降ろした垂線を延長した直線と、前記判定領域の台形の斜辺とが交わる位置を新たな目標位置とするように、前記キャラクタの移動方向を変更する変更工程とを有することを特徴とする
請求項４記載の発明は、表示画面上の仮想空間に設定したフィールドの目標位置に向かうキャラクタの動きを制御するゲームをコンピュータに実現させるプログラムを記録したコンピュータ読取可能な記録媒体において、前記ゲーム媒体を操るキャラクタが存在する位置を基準として、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線と直交する２本の線分のうち前記キャラクタが存在する位置で前記直線と直交する線分を下底とし、前記キャラクタが移動する方向で前記直線と直交する線分を上底とし、前記下底よりも前記上底が短い台形である判定領域を設定する領域設定機能と、当該領域設定手段が設定した判定領域内に存在する他のキャラクタを検出するキャラクタ検出機能と、前記キャラクタが存在する位置と前記目標位置とを結ぶ直線に前記キャラクタ検出手段が検出した他のキャラクタの位置から降ろした垂線を延長した直線と、前記判定領域の台形の斜辺とが交わる位置を新たな目標位置とするように、前記キャラクタの移動方向を変更する変更機能とをコンピュータに実現させるためのプログラムを記録したものである。
【００１０】
【発明の実施の形態】
以下、本発明の好適な実施の形態を、図面を参照して説明する。本実施の形態は、仮想空間内のフィールドで二つのチームが対戦するスポーツゲームを実現するプログラムを実行するゲーム装置に、本発明を適用したものである。ゲームの具体的な内容は、対戦式スポーツゲームの一例としてフットサルの試合を模したものである。
【００１１】
先ず、図１を参照して遊戯者が選手キャラクタを操作する方法を説明する。
【００１２】
図１は、ゲーム装置の外観を示した斜視図である。図１のゲーム装置１は、最大４人の遊技者でプレーすることができる。各遊技者は、ゴールキーパーを除く選手キャラクタのうちの１人を操作する。遊技者が操作する選手キャラクタのフィールド内の動きは、遊技者がレバー１１等をどのように操作するかによる。
【００１３】
ゲーム装置１には、遊技者の目の高さを考慮した位置に、ゲームの内容その他必要な事項を動画や静止画で表示するＣＲＴモニタ１０が設けられている。ゲームのプレー中にＣＲＴモニタ１０に表示されるフィールドの画像は、原則として横から斜め下を見おろした状態の画像である。
【００１４】
ＣＲＴモニタ１０の下の操作部には、４人でプレーする場合を考慮して四つの操作パネルａ、ｂ、ｃ、ｄが用意され、それぞれにレバー１１（１１ａ，１１ｂ，１１ｃ，１１ｄ）、キック入力部１２（１２ａ，１２ｂ，１２ｃ，１２ｄ）、ボタン１３（１３ａ，１３ｂ，１３ｃ，１３ｄ）が設けられている。各遊技者は、操作パネルの前に立ってレバー１１、キック入力部１２、ボタン１３を操作する。
【００１５】
ゲーム装置１は、レバー１１としてアナログレバーを用いている。アナログレバーには、軸を回すと抵抗値が変わる二つのボリューム（これらをｘボリューム、ｙボリュームとする）が、各軸が直交するよう配置されている。各ボリュームの軸には、レバー１１のシャフトの根元部分がギヤで接続されており、レバー１１を倒す方向と倒した傾斜角に応じてｘボリューム、ｙボリュームそれぞれの軸が回転する。レバー１１をｘ方向又は−ｘ方向（左右方向）に倒すとｘボリュームだけが回転し、レバー１１をｙ方向又は−ｙ方向（上下方向）に倒すとｙボリュームだけが回転する。また、レバー１１をこれら以外の任意の方向に倒すとｘボリュームとｙボリュームの両方が、それぞれの方向に倒された分だけ回転する。サブＣＰＵ１１５（後述の図２参照）は、ｘボリューム、ｙボリュームの抵抗値を、一定の周期で常時検出している。サブＣＰＵ１１５は、これらの抵抗値に基づいてベクトル計算を行い、レバー１１を倒す方向及び倒した角度を認識している。レバー１１を倒す方向及び倒す角度を連続的に変化させると、ｘボリューム、ｙボリュームの各軸の回転角も連続的に変化し、各ボリュームの抵抗値は連続的に変化する。したがって、サブＣＰＵ１１５が認識する方向及び倒す角度も、連続的なものとなる。
【００１６】
選手キャラクタが単純に移動する場合や選手キャラクタがボールをキープしてドリブルしている場合は、選手キャラクタの移動方向及び移動速度をレバー１１で操作する。また、選手キャラクタがボールを蹴ってパスやシュートをする場合は、ボールが飛んで行く方向をレバー１１で操作する。
【００１７】
キック入力部１２は、ゲーム装置１の下部に配置し、足で蹴るための擬似ボールを設けてある。擬似ボールは実際のフットサル用のボールとほぼ同じ寸法、同じ模様の半球状で、その表面の素材もフットサル用のボールと同じかもしくは類似したものを用いている。キック入力部１２の擬似ボールを蹴って操作する内容は、主として操作している選手キャラクタが行うパス、シュート、スライディングタックルといった動作の開始の指示、パスやシュートによって蹴り出されるボールの速度の調節である。
【００１８】
本実施の形態におけるゲーム装置のシステム構成を、図２を参照して説明する。図２は本実施の形態におけるゲーム装置のシステム構成の概略を示すブロック図である。
【００１９】
本ゲーム装置のシステムは、ＣＰＵブロック１１０と、ビデオブロック１２０と、サウンドブロック１３０より構成されている。
【００２０】
ＣＰＵブロック１１０は、プログラムの実行によりゲーム処理を進めるものである。ＣＰＵブロック１１０は、ＳＣＵ（Ｓｙｓｔｅｍ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）１１１、メインＣＰＵ１１２、ＲＡＭ１１３、ＲＯＭ１１４、サブＣＰＵ１１５より構成されている。以下にＣＰＵブロック１１０の各部について説明する。
【００２１】
ＳＣＵ１１１はバスを介して行われるデータの転送を統括する。ＳＣＵ１１１は、内部にＤＭＡコントローラを備え、ＲＡＭ１１３等に格納されたゲーム実行中に必要な画像データをビデオブロック１２０内のＶＲＡＭ１２３へ転送し、ＰＣＭデータをサウンドブロック１３０に転送する。
【００２２】
メインＣＰＵ１１２は、その内部にＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）を備え、ＲＯＭ１１４から転送されたプログラムデータに基づいて処理を実行する。
【００２３】
ＲＡＭ１１３は、ＲＯＭ１１４から読み出したアプリケーションソフトプログラムを格納する。ＲＯＭ１１４は、装置の初期化処理のために用いるイニシャルプログラムデータを格納してある。
【００２４】
ビデオブロック１２０は、ゲーム進行に応じた画像を出力する画像制御手段としての役割を果たす。ＶＤＰ（Ｖｉｄｅｏ  Ｄｉｓｐｌａｙ  Ｐｒｏｃｅｓｓｏｒ）１２１、１２２、ＶＲＡＭ１２３、フレームバッファ１２４，１２５、ＶＲＡＭ１２６およびメモリ１２７を具備する。以下にビデオブロック１２０の各部について説明する。
【００２５】
ＶＲＡＭ１２３は、メインＣＰＵ１１２によりＳＣＵ１１１を介して転送された描画コマンド、ＲＯＭ１１４から読み取った画像データを格納する。
【００２６】
ＶＤＰ１２１は、ＶＲＡＭ１２３に格納された描画コマンドに基づいて、ビットマップ形式の画像データの配置、選択、あるいはポリゴンデータからビットマップ形式のデータの生成を行う。ＶＤＰ１２１は図形の変形、影やシェーディング等の色演算等を行う。ＶＤＰ１２１で生成された画像データはフレームバッファ１２４，１２５に書き込まれる。ＶＲＡＭ１２６は背景画像を格納しており、ＶＤＰ１２２は機能実現に必要なデータテーブル等を格納している。
【００２７】
ＶＤＰ１２２は、ＶＲＡＭ１２６、フレームバッファ１２４，１２５に格納された画像データに基づいて、影を付ける処理、拡大・縮小、回転、モザイク処理、移動処理、クリッピングや表示優先順位処理等の隠面処理、等の画像処理を行ない表示画面データをメモリ１２７に格納する。
【００２８】
メモリ１２７は、ＶＤＰ１２２からの描画用画像データを格納し、エンコーダ１２９に出力する。
【００２９】
エンコーダ１２９はメモリ１２７に格納してある描画用画像データをビデオ信号のフォーマットに変換し、Ｄ／Ａ変換してＣＲＴモニタ１０に供給する。ＣＲＴモニタ１０は供給されたビデオ信号に基づいた画像を表示する。
【００３０】
サウンドブロック１３０は、ビデオブロック１２０から出力される画像に対応する音響を発生すると共に、ゲームの進行状況に応じた音量レベルに調整した音響を発生するものであり、ＤＳＰ１３２、ＣＰＵ１３１およびサウンドＲＡＭ１３３等により構成してある。以下にサウンドブロック１３０の各部について説明する。
【００３１】
ＣＰＵ１３１は、メインＣＰＵ１１２によってＲＡＭ１１３から転送されたＰＣＭデータを、ＤＳＰ１３２に転送する。
【００３２】
ＤＳＰ１３２は、ＣＰＵ１３１の制御により、ＰＣＭデータに基づいてＰＣＭ音源またはＦＭ音源による波形発生、遅延データの生成、および音声合成を行ない、生成した波形データをＤ／Ａコンバータ１３９に出力する。ＤＳＰ１３２は、これらの採用により周波数制御、音量制御、ＦＭ演奏、変調、音声合成、リバーブ等の機能を備えている。
【００３３】
サウンドＲＡＭ１３３は、ＲＯＭ１１４から読み出したＰＣＭデータを格納する。サウンドＲＡＭ１３３は、ＣＰＵ１３１からアクセス可能である他に、メインＣＰＵ１１２から直接アクセス可能である。サウンドＲＡＭ１３３は、ＰＣＭデータを２つのバッファに分けて格納しており、一方のバッファにメインＣＰＵ１１２がアクセスしたり、新たなＰＣＭデータを書き込んでいる間に、ＣＰＵ１３１が他方のバッファからＰＣＭデータを読み出して音響を発生させることができる。ここで、ＰＣＭデータとは、音声信号波形を量子化したデータであり、音楽や効果音を発生させるものである。
【００３４】
Ｄ／Ａコンバータ１３９は、ＤＳＰ１３２によって生成された波形データを２チャンネルの信号に変換し、スピーカに供給する。
【００３５】
次に、メインＣＰＵ１１２が制御する選手キャラクタの動作を説明する。遊戯者が操作しない選手キャラクタについては、メインＣＰＵ１１２が、予め用意されたアルゴリズムに基づいて制御する。メインＣＰＵ１１２がフィールド内において選手キャラクタを移動させる場合、必ず目標位置を定め、この目標位置に向かって移動させるようにしている。
【００３６】
メインＣＰＵ１１２が制御する選手キャラクタに行わせる動作の一つに、その選手キャラクタが移動するときに、その選手キャラクタと衝突する可能性のある他のキャラクタがいた場合にその衝突を回避させる動作がある。ここで、衝突を回避する対象となるキャラクタは、他の選手キャラクタや審判キャラクタなどであり、メインＣＰＵ１１２が制御するキャラクタであるか否かを問わない。ここでゲーム媒体とは、選手キャラクタが操る媒体であり、本実施の形態ではフットサル用ボールであり、ゲーム内容がサッカーであれば、サッカーボールである。選手キャラクタがフットサル用ボールを操るとは、選手キャラクタがフットサル用ボールに何らかの働きかけをすることであり、例えばドリブルやパス、シュート、タックルなどである。
【００３７】
図３を参照して目標位置から定まる移動方向に存在するキャラクタとの衝突を回避するためのアルゴリズムを説明する。本実施の形態では、位置Ａに存在する選手キャラクタがゲーム媒体であるフットサル用ボールをドリブルする際に、他の選手キャラクタとの衝突を回避するアルゴリズムを代表して説明する。
【００３８】
図３は、衝突回避アルゴリズムを示す模式図である。
【００３９】
図３に示す判定領域３０は、位置Ａに存在する選手キャラクタに衝突する可能性のある選手キャラクタを検出する領域である。
【００４０】
先ず、前述の判定領域３０の設定方法を説明する。
【００４１】
図３に示す位置Ｐは、例えばゴールの中心位置であり、位置Ａに存在する選手キャラクタの目標位置に相当する。位置Ａは、本処理を開始する際におけるフットサル用ボールを保持してドリブルする選手キャラクタの位置である。位置Ａと位置Ｐを結ぶ直線上において、位置Ａから所定距離ｄだけ離れた位置に位置Ｂを設定する。ｄの値は、台形の高さを規定するものであり、実際のフットサルに用いるフィールドの寸法を考慮して７メートル相当にしてある。判定領域３０は、線分ＡＢと点Ａで直交する長さ２×Ｗ１の線分を下底、線分ＡＢと点Ｂで直交する長さ２×Ｗ２の線分を上底とし、上底及び下底の左右端に斜辺を引いて形成される台形の領域として設定してある。従って、判定領域３０は比較的先の細い（Ｗ１＞Ｗ２）縦長の台形状である。以上のように、ゲーム媒体であるフットサル用ボールを操る選手キャラクタが存在する位置Ａを基準として判定領域３０が設定される。
【００４２】
次に位置Ａに存在する選手キャラクタと衝突する可能性のある選手キャラクタの検出方法を説明する。
【００４３】
図３に示す位置Ｃ、位置Ｊ及び位置Ｋは、衝突回避処理を開始する際にフットサル用ボールを保持しない選手キャラクタの存在する位置である。位置Ｃ、位置Ｊ及び位置Ｋが判定領域３０内に存在すれば、位置Ａに存在する選手キャラクタがこれらのキャラクタに衝突する可能性が高いとして、移動方向を変更する。
【００４４】
メインＣＰＵ１１２は、常に全ての選手キャラクタの位置を追跡して座標データとして保持している。位置Ｃ、位置Ｊ及び位置Ｋの位置は既知である。位置Ｃ、位置Ｊ及び位置Ｋが判定領域３０内にあるか否かの判定は、以下のようにして行う。
【００４５】
まず、位置Ｃから線分ＡＢ上又は線分ＡＢを延長した直線上に垂線をおろし、この垂線と線分ＡＢ又はこれを延長した直線との交わる位置Ｄの座標を求め、当該交わる位置Ｄの位置レートｒを求める。ここで「位置レートｒ」とは、線分ＡＢの長さに対する線分ＡＤの長さの割合である。例えば、ＡＤの長さがＡＢの長さの３０％であれば、位置Ｄの位置レートは０．３となる。位置レートｒが０＜ｒ＜１の範囲にあれば、その点は判定領域３０内に存在する可能性がある。一方、位置レートｒの値がこの範囲外であれば、その位置は判定領域３０内に存在しない。
【００４６】
次に、位置レートｒが０＜ｒ＜１の範囲にあるものについて、線分ＤＥの長さＷを求める。位置Ｅは、図３に示すように線分ＣＤを位置Ｃから先に延長した直線が判定領域３０の斜辺と交わる点である。Ｗ＝（Ｗ１−Ｗ２）×（１−ｒ）＋Ｗ２の値は、図３に示すように、線分ＤＥの長さを表している。線分ＣＤの長さｗは、位置Ｃ及び位置Ｄの座標データから求めることができる。ここで、Ｗ＞ｗであれば、前述のように位置Ｃの位置レートが０＜ｒ＜１の範囲にあるので、位置Ｃは判定領域３０の斜辺内に存在する。そこで、このような点に位置するキャラクタは、位置Ａに存在する選手キャラクタが衝突する可能性が高いものとして扱う。一方、Ｗ≦ｗであれば、位置Ｃは判定領域３０の斜辺外に存在することになるので、このような点に位置するキャラクタは、位置Ａに存在する選手キャラクタが衝突する可能性は低いものとして扱う。
【００４７】
以上のようにして判定領域３０内に存在するフットサル用ボールを保持しない選手キャラクタが検出される。ここで、言うフットサル用ボールを保持しない選手キャラクタは、位置Ａでフットサル用ボールを操る選手キャラクタと異なるキャラクタである。
【００４８】
次に、判定領域３０内に衝突する可能性のあるキャラクタが存在したときに、点Ａに存在する選手キャラクタにそのキャラクタとの衝突を回避させる方法について説明する。線分ＣＤを位置Ｄから先に延長した直線が判定領域３０の右側の斜辺と交わった位置Ｆを求め、本来の目標位置Ｐに代えて、位置Ｆを新たな目標位置とする。そして、点Ａに存在する選手キャラクタの移動方向を、新たに目標位置として設定された点Ｆに向かう方向に変更する。これによって、点Ａに存在する選手キャラクタと、判定領域３０内にいるキャラクタとの衝突が回避される。
【００４９】
ここで、図３において∠ＤＡＦの角度を衝突回避角θとすると、判定領域３０の内部で、選手キャラクタのいる位置Ｃが、直線ＡＢに沿って見たときに位置Ａから遠ければ衝突回避角θの値は小さくなるので、衝突を回避するための動作は小さくなる。一方、直線ＡＢに沿って見たときに位置Ａに近いほど衝突回避角θの値は大きくなるので、衝突を回避するため動作は大きくなる。すなわち、点Ｆの位置は、判定領域３０内にいるキャラクタの位置によって変わってくる。このように判定領域３０内に存在するフットサル用ボールを保持しない選手キャラクタの位置に応じて、点Ａにいるフットサル用ボールを操る選手キャラクタの移動方向を変更し、回避動作の大きさを変えることにより、実際の試合における選手の動きに近い、より自然な動きとなる。
【００５０】
なお、位置Ｊ、位置Ｋについても、前述した方法で判定領域３０内に存在するか否かを判定することができる。
【００５１】
判定領域３０は、前述のように比較的先の細い（Ｗ１＞Ｗ２）縦長の台形状としたことにより、例えば位置Ｊにいるキャラクタのように、その位置が位置Ａから遠い場合（位置レートｒが大きい場合）は、線分ＡＢの近くにいる場合であっても衝突を回避する必要のある対象とは判定しない。これは、実際の試合においては、相手チームの選手や審判が遠くにいる場合は、たとえそれと認識した場合であっても、必ずしも衝突を回避する行動をとるとは限らないからである。
【００５２】
一方、判定領域３０は、前述のように比較的先の細い（Ｗ１＞Ｗ２）縦長の台形状としたことにより、位置Ｋにいるキャラクタのように、その位置が位置Ａに近い場合（位置レートｒが小さい場合）には、線分ＡＢからの距離が位置Ｊと同じであっても衝突を回避する必要のある対象と判定する。これは、実際の試合において、相手チームの選手や審判が近くにいる場合は、衝突を避けるために大きな行動をとると考えられるからである。
【００５３】
従って、上で述べた本実施形態のゲーム装置における処理は、実際の試合における選手の判断や動きと比較した場合に、合理的なものであることが理解される。このため、メインＣＰＵ１１２が制御する選手キャラクタの動きは、実際の試合において選手が行う動作と非常に類似したものとなり、より自然な動きが実現される。
【００５４】
次にメインＣＰＵ１１２が制御する選手キャラクタの衝突回避処理を図３及び図４を参照して説明する。
【００５５】
図４は衝突回避処理を示したフローチャートである。この衝突回避処理は、ゴールなどを目標位置に向かって移動するように設定した後、例えば図３に示す位置Ｃが判定領域３０内にある場合は、位置Ｃに存在する選手キャラクタとの衝突とるを回避するために移動方向を変更し、位置Ｃが判定領域３０外にある場合は、目標位置に向かって移動するように移動方向を設定する処理である。
【００５６】
メインＣＰＵ１１２は、フットサル用ボールを保持しない選手キャラクタが存在する位置からフットサル用ボールを保持した選手キャラクタが存在する位置Ａと目標位置Ｐを結ぶ直線までの距離ｗと、フットサル用ボールを保持しない選手キャラクタの存在する位置に対応した位置レートｒとを求める（ステップ１０）。例えば、図３に示すようにフットサル用ボールを保持しない選手キャラクタが存在する位置を位置Ｃとすれば、線分ＣＤの長さｗと位置Ｄの位置レートｒである。
【００５７】
メインＣＰＵ１１２は、ステップ１０で求められた位置レートｒが０＜ｒ＜１の範囲にある場合には、ｒがこれ以前に既に求めている他のフットサル用ボールを保持しない選手キャラクタの位置レートＲよりも小さいか否か（Ｒ＞ｒか否か）を判定する（ステップ１１）。位置レートｒの値が小さいほど、線分ＡＢに沿って見たときに、位置Ａにより近いことを表している。もっとも、図４に示したループを最初に回るときは、Ｒを最遠方に相当する値、例えば１．２に設定して行う。
【００５８】
メインＣＰＵ１１２は、ステップ１１で、Ｒ≦ｒであると判断した場合、メインＣＰＵ１１２はステップ１６の処理を実行する。
【００５９】
メインＣＰＵ１１２は、ステップ１１においてＲ＞ｒであると判断した場合には、次の式によって、Ｗ＝（Ｗ１−Ｗ２）×（１−ｒ）＋Ｗ２を算出する（ステップ１２）。
【００６０】
メインＣＰＵ１１２は、ステップ１０で得られた線分の長さｗと、ステップ１２で得られた回避対象幅Ｗとを比較する（ステップ１３）。ステップ１０〜ステップ１３がキャラクタ検出機能を実現している。
【００６１】
メインＣＰＵ１１２は、ステップ１３でＷ＞ｗであると判断した場合、フットサル用ボールを保持しない選手キャラクタが判定領域３０内に存在することを意味する。メインＣＰＵ１１２は、この選手キャラクタを回避すべきキャラクタの候補として、その選手キャラクタに関するデータをＲＡＭ１１３に保存する（ステップ１４）。ここで、ＲＡＭ１１３に格納されるデータは、ｗ，ｒ，位置ベクトル、投影位置に関するデータである。一方、ステップ１３でＷ≦ｗであると判断した場合、メインＣＰＵ１１２はステップ１６の処理を実行する。
【００６２】
次に、メインＣＰＵ１１２は、キャラクタＩＤを１だけインクリメントする（ステップ１５）。キャラクタＩＤは、ゴールキーパーを含めた１０人の選手キャラクタに固有に設定してあるＩＤであり、例えば、０〜９の数字を各選手キャラクタに設定してある。
【００６３】
メインＣＰＵ１１２は、全てのキャラクタについて終了しているかを判断する（ステップ１６）。前述の例であれば、キャラクタＩＤが最大値９であれば、メインＣＰＵ１１２は、全てのキャラクタについて終了したと判断する。メインＣＰＵ１１２は、ステップ１６で全てのキャラクタについて終了していないと判断すれば、次のキャラクタについてステップ１０〜ステップ１６の処理を行う。つまり、メインＣＰＵ１１２は、キャラクタＩＤを順番にインクリメントして、ステップ１０〜ステップ１６を繰り返し実行することによって、全てのフットサル用ボールを保持しない選手キャラクタについて、判定領域３０内に存在するかどうかを判定することができる。
メインＣＰＵ１１２は、ステップ１６で全ての選手キャラクタについてステップ１０〜ステップ１６の処理を終了したと判断した場合、そのうち線分ＡＢに沿って最も位置Ａに近い選手キャラクタを選択する（ステップ１７）。即ち、ステップ１０〜ステップ１６のループ処理で複数の選手キャラクタに関するデータが保存された場合、複数の選手キャラクタの位置からゲーム媒体を操る選手キャラクタが存在する位置Ａと目標位置Ｐとを結ぶ直線に降ろした垂線との交わる位置レートが最も小さい選手キャラクタに対してのみ衝突を回避する処理を行うことを意味する。
【００６４】
ステップ１７で選択した選手キャラクタが、例えば図３に示す位置Ｃにいるキャラクタであったとする。メインＣＰＵ１１２は、このキャラクタを、衝突を回避すべき選手キャラクタと認識して次の衝突回避処理を行う（ステップ１８）。ステップ１８がフットサル用ボールを操る選手キャラクタの移動方向を更新する機能を達成している。
【００６５】
メインＣＰＵ１１２は、位置Ａに存在する選手キャラクタが位置Ｆに向かって進行するよう、その移動方向を変更する。これにより、位置Ａに存在するフットサル用ボールを保持してドリブルする選手キャラクタは、位置Ｃに存在する選手キャラクタとの衝突を回避することができる。
【００６６】
ステップ１８で衝突回避処理を終えたフットサル用ボールを保持してドリブルする選手キャラクタは、新たな目標位置Ｆに向かって移動方向を変えた直後に、後方にいた選手キャラクタが前方に急に移動してきたためにその選手キャラクタと衝突する場合も想定できる。本実施形態の処理では、そのような場合までも衝突を回避することは意図してはいない。これは、実際の試合においても、ある選手との衝突を避けるような動きをした直後に、別の選手とぶつかるという状況はしばしば起こることであり、このような場合の衝突まで回避するようにすると、却って現実の状況とずれる恐れがあるからである。
【００６７】
メインＣＰＵ１１２は、ステップ１７で判定領域３０内にボールを保持しない選手キャラクタが存在しないと判定した場合、ステップ１８の衝突回避処理を行わない。従って、位置Ａに存在するフットサル用ボールを保持してドリブルする選手キャラクタは、メインＣＰＵ１１２の制御に従って本来の目標位置Ｐに向かって移動する。
【００６８】
前述の衝突回避処理は、ゴールなどを目標位置Ｐに向かうようにする設定に続けて実行されるので、目標位置Ｐとの間で選手キャラクタが存在する場合にはまた新たに目標位置を設定して衝突回避行動をとるという処理を繰り返す。このような処理を繰り返していって、判定領域３０内にフットサル用ボールを保持しない選手キャラクタが存在しなくなったときは、再び本来の目標位置Ｐに向かって移動する。
【００６９】
上述した実施の形態では、位置Ａに存在する選手キャラクタがゲーム媒体であるフットサル用ボールを保持している際に他の選手キャラクタとの衝突を回避するアルゴリズムとして説明した。これに限定されず、位置Ａに存在する選手キャラクタがゲーム媒体であるフットサル用ボールを保持しておらず、別の選手キャラクタがボールを保持しているような場合にも、同様のアルゴリズムが適用される。
【００７０】
以上で説明したような衝突回避処理は、フットサル用ボールを操る選手キャラクタが存在しない場合に実行されない。例えば、ボールが、どの選手にもキープされていないフリー状態となった場合がその一例である。この場合、フィールド内を転々と転がっているボールを取りに行く選手が複数いたときは、互いに競り合ったりぶつかり合いながらボールを追いかけるのが普通である。また、相手チームの選手にタックルする場合のように、相手チームの選手に接触したり近づくのが普通のプレーのときにも、上で説明した衝突回避処理は行わない。
【００７１】
なお、本発明は、上記の実施の形態に限定されるものではなく、その要旨の範囲内で種々の変更が可能である。たとえば、上記の実施形態では、メインＣＰＵ１１２が制御するフットサル用ボールを操る選手キャラクタのいる位置と目標位置とを結ぶ直線を中心線として先端が細い縦長の台形の領域を判定領域３０として説明した。しかし、判定領域３０の形状は台形に限定されるものではなく、例えば、三角形や長方形などであってもよい。
【００７２】
さらに、上記の実施の形態では、本発明をフットサルに特化したゲーム装置に適用したが、本発明は、サッカー、ハンドボール、バスケットボール、野球などの球技をシミュレートする各種のゲーム装置にも適用することができる。
【００７３】
加えて、本発明は、上で説明したゲーム内容のコンピュータプログラムを、記録媒体に記録するという形態でも実施することが可能であり、そのような実施の形態も本発明の技術的範囲に含まれる。当該記録媒体には、磁気テープ、フレキシブルディスク、ＣＤ−ＲＯＭ又はＤＶＤ等の光ディスク、ＭＯ等の光磁気ディスクなどが含まれる。
【００７４】
【発明の効果】
以上説明したように、本発明は、仮想空間に設定したフィールドの目標位置に向かうキャラクタについて、このキャラクタが存在する位置を基準として判定領域を設定し、この判定領域内に存在する他のキャラクタを検出し、当該他のキャラクタの位置に応じて、装置側が制御するキャラクタの移動方向を変更することによって、他の選手キャラクタとの衝突を回避させるようにする。その場合に、前述の判定領域の形状を、例えば所定寸法の台形にすることによって、より自然でリアルな動きで装置制御のキャラクタに衝突回避動作を行わせることができる。
【図面の簡単な説明】
【図１】ゲーム装置の外観を示した斜視図である。
【図２】ゲーム装置のシステム構成の概略を示したブロック図である。
【図３】衝突回避動作を行わせるための判定領域３０を示した図である。
【図４】衝突回避動作を行わせるための処理を示したフローチャートである。
【符号の説明】
１…ゲーム装置，  １０…ＣＲＴモニタ，  １１（１１ａ，１１ｂ，１１ｃ，１１ｄ）…レバー，  １２（１２ａ，１２ｂ，１２ｃ，１２ｄ）…キック入力部，１３（１３ａ，１３ｂ，１３ｃ，１３ｄ）…ボタン，３０…台形領域，  １１０…ＣＰＵブロック，  １１１…ＳＣＵ，  １１２…メインＣＰＵ，  １１３…ＲＡＭ，  １１４…ＲＯＭ，  １１５…サブＣＰＵ，  １２０…ビデオブロック，  １３０…サウンドブロック，  １３１…ＣＰＵ，  １３２…ＤＳＰ，  １３３…サウンドＲＡＭ
【図１】
0003594181.tif 000002
【図２】
0003594181.tif 000003
【図３】
0003594181.tif 000004
【図４】
0003594181.tif 000005