(57)【特許請求の範囲】
【請求項１】
コンピュータを、
仮想のゲーム空間を生成するゲーム空間生成手段、
キャラクタを生成して前記ゲーム空間内で活動させるキャラクタ生成手段、
前記ゲーム空間に指向対象物を配置する指向対象物配置手段、
として機能させるゲームプログラムであって、
前記キャラクタ生成手段は、キャラクタの定型的な動作を規定するモーションデータを記憶するモーションデータ記憶手段、前記モーションデータに基づいて前記キャラクタの動作を制御するキャラクタ動作制御手段、
前記キャラクタと前記指向対象物との間の距離である対象物距離を取得する対象物距離取得手段、
前記キャラクタの特定方向を基準とする前記指向対象物に対する方向である対象物方向を取得する対象物方向取得手段、
前記キャラクタが前記指向対象物の方向へ振り向く角速度である指向速度を、前記距離取得手段によって取得された距離に応じて決定する指向速度決定手段、
前記指向速度決定手段で決定した指向速度でキャラクタの一部を前記対象物方向に振り向かせる指向動作を前記キャラクタの定型的な動作に付加する指向制御手段、
を含むことを特徴とするゲームプログラム。
【請求項２】
前記モーションデータ記憶手段は、複数種類のモーションデータを記憶しており、
前記キャラクタ動作制御手段は、モーションデータの種類に応じて、前記指向動作の付加を許可するか否かを決定する請求項１に記載のゲームプログラム。
【請求項３】
前記キャラクタ生成手段は、遊技者によって操作される主キャラクタを生成する手段である請求項１または請求項２に記載のゲームプログラム。
【請求項４】
前記キャラクタ生成手段は、複数の関節からなる関節構造を有するキャラクタを生成する手段であり、
前記指向制御手段は、前記複数の関節のうちの２以上の関節のそれぞれを、前記指向速度よりも小さく且つその合計が前記指向速度となる角速度で回転させることにより、前記キャラクタを振り向かせる手段である
請求項１乃至請求項３のいずれかに記載のゲームプログラム。
【請求項５】
前記指向速度決定手段は、前記指向対象物が所定の最遠距離以内且つ所定の角度範囲である指向領域内に存在するとき、前記キャラクタを当該指向対象物の方向へ振り向かせる指向速度を決定する手段であり、
さらに、前記指向速度決定手段は、前記指向対象物が前記指向領域内に存在しないとき、前記対象物方向を前記特定方向且つ前記対象物距離を前記最遠距離として指向速度を決定する手段である
請求項１乃至請求項４のいずれかに記載のゲームプログラム。
【請求項６】
前記指向速度決定手段の所定の角度範囲は、前記キャラクタの特定方向から左右に９０度以内の範囲であることを特徴とする請求項５に記載のゲームプログラム。
【請求項７】
前記指向速度決定手段は、
前記距離取得手段によって取得された対象物距離が、第１の距離よりも近いとき、前記指向速度を第１の速度に決定し、
前記距離取得手段によって取得された対象物距離が、前記第１の距離よりも遠くの第２の距離よりも近いとき、前記指向速度を第１の速度よりも遅い第２の速度に決定し、
前記距離取得手段によって取得された対象物距離が、前記第１の距離と第２の距離との間であるとき、距離に応じて前記第１の速度から第２の速度へ単調減少する関数に基づいて前記指向速度を決定する手段である
請求項１乃至請求項６のいずれかに記載のゲームプログラム。
【請求項８】
前記指向速度決定手段は、距離を複数の領域に分け、前記距離取得手段によって取得された対象物距離がどの領域に存在するかにより前記指向速度を決定する手段である請求項１乃至請求項６のいずれかに記載のゲームプログラム。
【請求項９】
前記指向速度決定手段は、前記指向速度を徐々に大きくしていく手段である請求項１乃至請求項８のいずれかに記載のゲームプログラム。
【請求項１０】
請求項１乃至請求項９のいずれかに記載のゲームプログラムを記憶した記憶部と、前記ゲームプログラムを実行するコンピュータと、を備えたゲームシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、遊技者が操作するキャラクタが敵キャラクタを倒していくアクションゲーム等のゲームを実行するゲームプログラム、および、このゲームプログラムを実行するゲームシステムに関する。
【背景技術】
【０００２】
アクションゲーム等において、ゲームキャラクタは人間と同じように頭を敵キャラクタ等の方向に向ける動作（指向動作）を行う。キャラクタの自然な指向動作を実現する方法として、指向動作中の各タイミングにおけるキャラクタの各部位の姿勢を定めた時系列のデータであるモーションデータを用意しておき、このモーションデータに基づいてキャラクタを指向させる方法がある（非特許文献１）。モーションデータとは、動作中のキャラクタの姿勢を１コマ（たとえば１／６０秒）毎に規定する時系列のデータであり、キャラクタの歩きや走り等の基本動作の制御に用いられるデータである。例えばキャラクタの歩行を規定するモーションデータの場合、右手と左足、左手と右足が交互に前に出る体全体の動きを１コマごとに描画するためのデータからなっている。ゲーム中には様々な方向に指向する場面があるが、このような方法では、キャラクタを任意の方向に自然な動作（指向方向に応じた速度等）で指向させようとすると、その方向（角度）ごとにモーションデータを用意しなければならず、各モーションを全て作成すると、モーションデータの量が膨大になる。
【０００３】
そのため、キャラクタの振り向き前の指向方向と、キャラクタの位置から指向対象物への方向とがなす角度を取得し、この角度に応じてキャラクタの振り向く速さを制御して自然な振り向きを実現しようとしたゲームプログラムがある（特許文献１）。このゲームプログラムでは、ソフトウェアによる処理でモデル（オブジェクト）の１フレームあたりの頭、首等の各部の旋回角度を決定して描画を行うことにより、指向動作のためのモーションデータを省略している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−９５４３８号公報
【非特許文献】
【０００５】
【非特許文献１】「コンピュータグラフィックス」ＣＧ−ＡＲＴＳ協会、２００６年、ｐ.１８０−１８１
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１に記載のゲームにおける指向制御方法では、その時向いている方向から目的の方向へ指向するまでの時間が一定になるように角速度を制御していた。このため、指向対象物がキャラクタの正面近くに突然現れたとしても、角度が小さい場合には大きい場合に比べて指向速度が遅いので、キャラクタを指向対象物の方に素早く指向させることができない。通常、現実の人間は自分の近くに突然何かが現れると驚いて素早く振り向くものだが、このような驚いた様子をゲーム内のキャラクタにおいて表現することができない。逆に、指向対象物がキャラクタの遠くにいる場合には、ゆっくりとキャラクタを指向させたいが、角度が大きい場合には小さい場合に比べて指向速度が速いので、素早く指向することになる。以上のように、角度に応じてのみ振り向く速さが変わるので、リアリティのある振り向き動作の演出をすることができないという問題があった。
【０００７】
この発明は、遊技者が操作するキャラクタが敵キャラクタを倒していくアクションゲーム等において、データ量の増大を抑制しつつリアリティのある指向制御をすることができるゲームプログラムおよびゲームシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
請求項１の発明は、コンピュータを、仮想のゲーム空間を生成するゲーム空間生成手段、キャラクタを生成して前記ゲーム空間内で活動させるキャラクタ生成手段、前記ゲーム空間に指向対象物を配置する指向対象物配置手段、として機能させるゲームプログラムであって、
前記キャラクタ生成手段は、キャラクタの定型的な動作を規定するモーションデータを記憶するモーションデータ記憶手段、前記モーションデータに基づいて前記キャラクタの動作を制御するキャラクタ動作制御手段、前記キャラクタと前記指向対象物との間の距離である対象物距離を取得する対象物距離取得手段、前記キャラクタの特定方向を基準とする前記指向対象物に対する方向である対象物方向を取得する対象物方向取得手段、前記キャラクタが前記指向対象物の方向へ振り向く角速度である指向速度を、前記距離取得手段によって取得された距離に応じて決定する指向速度決定手段、前記指向速度決定手段で決定した指向速度でキャラクタの一部を前記対象物方向に振り向かせる指向動作を前記キャラクタの定型的な動作に付加する指向制御手段、を含むことを特徴とする。
【００１０】
請求項２の発明は、請求項１の発明において、前記モーションデータ記憶手段は、複数種類のモーションデータを記憶しており、前記キャラクタ動作制御手段は、モーションデータの種類に応じて、前記指向動作の付加を許可するか否かを決定することを特徴とする。
【００１１】
請求項３の発明は、請求項１または請求項２の発明において、前記キャラクタ生成手段は、遊技者によって操作される主キャラクタを生成する手段であることを特徴とする。
【００１２】
請求項４の発明は、請求項１〜請求項３の発明において、前記キャラクタ生成手段は、複数の関節からなる関節構造を有するキャラクタを生成する手段であり、前記指向制御手段は、前記複数の関節のうちの２以上の関節のそれぞれを、前記指向速度よりも小さく且つその合計が前記指向速度となる角速度で所定角度ずつ回転させることにより、前記キャラクタを振り向かせる手段であることを特徴とする。
【００１３】
請求項５の発明は、請求項１〜請求項４の発明において、前記指向速度決定手段は、前記指向対象物が所定の最遠距離以内且つ所定の角度範囲である指向領域内に存在するとき、前記キャラクタを当該指向対象物の方向へ振り向かせる指向速度を決定する手段であり、さらに、前記指向速度決定手段は、前記指向対象物が前記指向領域内に存在しないとき、前記対象物方向を前記特定方向且つ前記対象物距離を前記最遠距離として指向速度を決定する手段であることを特徴とする。
【００１４】
請求項６の発明は、請求項５の発明において、前記指向速度決定手段の所定の角度範囲は、前記キャラクタの特定方向から左右に９０度以内の範囲であることを特徴とする。
【００１５】
請求項７の発明は、請求項１〜請求項６の発明において、前記指向速度決定手段は、前記距離取得手段によって取得された対象物距離が、第１の距離よりも近いとき、前記指向速度を第１の速度に決定し、前記距離取得手段によって取得された対象物距離が、前記第１の距離よりも遠くの第２の距離よりも近いとき、前記指向速度を第１の速度よりも遅い第２の速度に決定し、前記距離取得手段によって取得された対象物距離が、前記第１の距離と第２の距離との間であるとき、距離に応じて前記第１の速度から第２の速度へ単調減少する関数に基づいて前記指向速度を決定する手段であることを特徴とする。
【００１６】
請求項８の発明は、請求項１〜請求項６の発明において、前記指向速度決定手段は、距離を複数の領域に分け、前記距離取得手段によって取得された対象物距離がどの領域に存在するかにより前記指向速度を決定する手段であることを特徴とする。
【００１７】
請求項９の発明は、請求項１〜請求項８の発明において、前記指向速度決定手段は、前記指向速度を徐々に大きくしていく手段であることを特徴とする。
【００１９】
請求項１０の発明は、請求項１乃至請求項９のいずれかに記載のゲームプログラムを記憶した記憶部と、前記ゲームプログラムを実行するコンピュータと、を備えたゲームシステムである。
【発明の効果】
【００２０】
この発明によれば、遊技者が操作するキャラクタが敵キャラクタを倒していくアクションゲーム等において、キャラクタから指向対象物までの距離に応じて指向速度を変更できるので、例えばキャラクタから指向対象物までの距離が遠いほど指向速度を遅くし、近いほど指向速度を速くすることにより、リアリティのある自然な振り向き表現を実現することができる。
【図面の簡単な説明】
【００２１】
【図１】この発明が適用されるゲーム装置の外観図
【図２】同ゲーム装置のブロック図
【図３】この発明の実施形態であるアクションゲームプログラムのゲーム画面を示す図
【図４】同ゲームプログラムと前記ゲーム装置で構成されるゲームシステムの構成を示す図
【図５】キャラクタのスケルトンモデルを示す図
【図６】指向処理におけるキャラクタの指向領域を説明する図
【図７】前記ゲームシステムの動作を示すフローチャート
【図８】前記ゲームシステムの動作を示すフローチャート
【図９】前記ゲームシステムの動作を示すフローチャート
【図１０】指向処理におけるキャラクタの反応範囲を説明する図
【発明を実施するための形態】
【００２２】
図面を参照してこの発明の実施形態であるゲームプログラムおよびゲーム装置（コンピュータ）について説明する。
【００２３】
≪装置の構成≫
まず、ゲームプログラムが実行されるゲーム装置について説明する。図１は、ゲームプログラムが実行されるゲーム装置（コンピュータ）の外観図である。
このゲーム装置は、ゲーム装置本体１０にコントローラ２０が接続されて構成されている。コントローラ２０は、遊技者によって操作される。遊技者は、このコントローラ２０を用いて、ゲーム中に登場する主キャラクタ等を操作する。なお、ゲームは、遊技者の操作およびゲームプログラム、ゲーム装置で構成されるゲームシステムの処理動作で進行するが、以下の説明では、動作の内容に応じて、主キャラクタを主語とし、主キャラクタの動作として説明する場合がある。
【００２４】
ゲーム装置本体１０は、ゲームプログラムが記録された記録媒体（記憶媒体）１５がセットされるトレイ１１を有している。記録媒体１５は、たとえばＤＶＤ（digital versatile disc）である。ゲーム装置本体１０は、この記録媒体１５からゲームプログラムを読み取って、このプログラムを実行する。なお、記録媒体１５は、ＤＶＤ以外であってもよく、例えばＣＤ、Ｂｌｕｅ−ｒａｙ  Ｄｉｓｃ、または、内蔵のハードディスクなどを用いることができる。
【００２５】
また、装置前面には、コントローラ２０が接続されるコネクタ１２、フラッシュメモリからなるカード型の外部メモリ４５（図２参照）がセットされるメモリスロット１３が、それぞれ２つずつ設けられている。
【００２６】
コントローラ２０は、略コ字形をしており、遊技者が両翼部のハンドルを左右両手で把持して操作する。コントローラ２０の左右上面には操作ボタン群およびアナログスティックが設けられている。遊技者は、これら操作ボタン群、アナログスティックを操作して主キャラクタやカメラ位置を制御する。この遊技者の操作に応じてゲーム中の主キャラクタは、たとえば、歩く、銃を構える、振り向く等の動作を行う。
【００２７】
図２は、ゲーム装置本体１０およびコントローラ２０の内部構成を示すブロック図である。  
ゲーム装置本体１０は、装置全体の動作を制御するＣＰＵ３１を有している。このＣＰＵ３１に対してＲＡＭ３２およびバス３３が接続される。ＲＡＭ３２には、ゲームの進行に応じて各種のデータが記憶される。
【００２８】
バス３３には、グラフィック・プロセッサ・ユニット（ＧＰＵ）３４、インプット・アウトプット (Ｉ／Ｏ)ポート３９が接続される。ＧＰＵ３４には、デジタル映像信号をＮＴＳＣテレビジョン方式やＰＡＬテレビジョン方式に変換するためのデコーダ３７を介して、外部機器であるモニタ（テレビジョン装置：ＴＶ）３８が接続される。
【００２９】
Ｉ／Ｏポート３９には、光ディスク等の記録媒体１５に記録されているデータを再生し、デコードするためのドライバ（ＤＲＶ）４０，サウンド・プロセッサ（Ｓ．Ｐ）４２、外部メモリ４５、コントローラ２０およびＲＯＭ４６が接続される。
コントローラ２０は、Ｉ／Ｏポート２１を介して各種操作子群２２をゲーム装置本体１０のＩ／Ｏポート３９に接続する。
【００３０】
ＲＯＭ４６には、このゲーム装置本体１０を起動するとともに基本的な機能を実現するためのシステムプログラムが記憶されている。外部メモリ４５には、遊技者の情報や実行しているゲームの途中経過等が記憶される。遊技者は、ゲームプログラムを記憶した記憶媒体１５と自己の外部メモリ４５をセットすることにより、途中で中断したゲームを、その中断したタイミングから再開することができる。
【００３１】
サウンド・プロセッサ４２は、増幅器４３を介して、外部機器であるスピーカ４４に接続される。このスピーカ４４は、一般的には、テレビジョン装置に内蔵されている上記モニタ３８と一体のスピーカである。
【００３２】
《ゲームプログラムの構成》
次にこのゲーム装置で実行されるゲームプログラムについて説明する。このゲームプログラムは、いわゆるサードパーソンシューティングゲームであり、図３はサードパーソンシューティングゲームの一場面を表示するゲーム画面を示す図である。
【００３３】
サードパーソンシューティングゲームは、遊技者の操作によって活動する主キャラクタが、敵キャラクタを銃等で倒していき、複数のゲームステージをクリアしていくものである。このゲームでは、主キャラクタ、敵キャラクタおよびゲーム空間が生成され、キャラクタがゲーム空間内で活動する。主キャラクタおよび敵キャラクタは互いに相手に攻撃をしかけ、相手に攻撃を命中させると相手にダメージを与え、相手の攻撃が命中するとダメージを受ける。
【００３４】
主キャラクタは前記ゲーム空間内で様々なアクションを行う。図３（Ａ）は、銃を持った主キャラクタがゲーム空間を歩いている様子を示している。遊技者がコントローラ２０の左スティック（方向キー）を前に倒せば正面に向かって歩き、左斜めに倒せば左の方向に歩き、右斜めに倒せば右の方向に歩く。図３（Ｂ）は、主キャラクタが箱に向かって銃を構えている様子を示している。遊技者がコントローラ２０のＲ１ボタンを押すと主キャラクタが銃を構え、銃の弾道を示す「レーザーサイト」が表示される。図３（Ｃ）は、主キャラクタが箱に向けて銃を撃ち終わった後の様子を示している。遊技者が銃で狙いたい箇所に左スティックキーで照準を合わせてコントローラ２０の□ボタンを押すと主キャラクタがその方向に向けて銃を撃つ。
【００３５】
これらの歩く、銃を構える等の基本動作は、それぞれのモーションデータに基づいて一般的なキーフレーム法等を用いて実現（描画）される。モーションデータとは、基本動作の一連の動きに関してキャラクタの１コマ１コマ（１フレーム毎）の動きを描画するための時系列のデータであり、１コマ１コマにおけるキャラクタの姿勢を形成するための各関節の位置や向き（角度）等を特定するためのデータである。一般的に、モーションデータに基づいて変換行列（モデルローカル行列）が生成される。変換行列は、関節の数だけあり、主キャラクタにおける標準姿勢での関節の位置および向きを、平行移動、拡大・縮小、回転等して現在の姿勢での位置および向きに変換するための行列（物体の姿勢の変換行列）である。
【００３６】
ここで、主キャラクタの標準姿勢とは、主キャラクタの基準となる姿勢であり、一般的に肩幅に足を開いて直立し、両腕を左右に伸ばした状態（図５の姿勢から両腕を水平にあげた状態）をいう。この標準姿勢における主キャラクタの体軸をｙ軸とし、左足踵から右足踵へ向かう直線をｘ軸とする。このｘ軸とｙ軸との交点を原点とする。そして原点から主キャラクタの正面方向へ伸びる直線をｚ軸とする。このような主キャラクタの足元を原点とした座標系をモデルローカル座標系とする。標準姿勢での各関節のモデルローカル座標系の位置および向きは、行列で表現されてゲームデータとして予め記録媒体１５に記録されている。標準姿勢での関節の行列に、対応する変換行列を掛けることで、現在の姿勢での関節のモデルローカル座標系の位置および向きを表す行列を取得できる。この座標変換は、一般的な技術であるので詳細な説明は省略する。モーションデータは、予めゲームプログラムのゲームデータとして記録媒体１５に記録されている。
【００３７】
また、キャラクタは、モーションデータに基づく基本動作以外に、振り向き動作（指向動作）も行う。指向動作とは、キャラクタが特定の対象物（指向対象物）に対して人間のように振り向く一連の動作であって、キャラクタの体全体ではなく頭などの体の一部が指向対象物に向く動作をいう。本実施形態のキャラクタは、指向対象物に向かって上半身が旋回し、顔の正面が指向対象物に向くような指向動作を行う。図５に示すような構造の主キャラクタの場合、指向動作は、上半身の１または複数の関節の向きを（関節の位置において）モデルローカル座標系におけるｙ軸方向に対して回転させて顔（頭）を足の向いている方向と異なる方向に向かせることによって行われる。この指向動作は、キャラクタに基本動作をさせている間に行われ、モーションデータに基づいて基本動作をさせる処理（モーション処理）とは別に演算処理（指向処理）で実現される。
【００３８】
上述したゲーム装置にこのゲームプログラムが読み込まれることにより、図４（Ａ）に示すような機能部を備えたゲームシステムが構成される。ゲームシステムは、操作検出部５０、ゲーム進行制御部５１、主キャラクタ制御部５２、敵キャラクタ制御部５３、ゲーム空間制御部５４、アタリ判定部５５、描画処理部５６からなっている。操作検出部５０は、ＣＰＵ３１、ＲＡＭ３２等からなるデータ処理部およびコントローラ２０を含み、遊技者の各種操作を検出して、ゲーム進行制御部５１に伝達する。ゲーム進行制御部５１は、ＣＰＵ３１、ＲＡＭ３２等からなるデータ処理部を含み、仮想のゲーム空間やキャラクタを生成するとともに、遊技者の操作や時間の経過等に応じて、上述のゲーム空間を変化させたりキャラクタを活動させたりする等の処理を行ってゲームを進行させる。
【００３９】
ゲーム進行制御部５１は、主キャラクタの活動を制御する主キャラクタ制御部５２、主キャラクタと戦う敵キャラクタの活動を制御する敵キャラクタ制御部５３、三次元のゲーム空間の生成および天候などの環境を制御するゲーム空間制御部５４、主キャラクタおよび敵キャラクタに相手からの攻撃が当たったか否かを判断するアタリ判定部５５を有している。主キャラクタ制御部５２は、操作検出部５０から入力される操作情報に基づいて主キャラクタの活動を制御する。敵キャラクタ制御部５３は、生成されたゲーム空間内に生息する敵キャラクタを生成するとともに、主キャラクタの活動に対応した活動（戦闘）を行わせる。ゲーム空間制御部５４は、操作検出部５０から入力された操作情報に基づいて選択されたゲームステージのゲーム空間を生成する。アタリ判定部５５は、主キャラクタ制御部５２および敵キャラクタ制御部５３で制御する主キャラクタおよび敵キャラクタが攻撃を受けたか否かを判定する。描画処理部５６は、ゲーム進行制御部５１が生成したゲーム空間、キャラクタを二次元のスクリーンに投影したゲーム画像を生成してモニタに出力する。
【００４０】
主キャラクタ制御部５２が生成する主キャラクタは、図５に示すように人間と同様の構造をしている。すなわち、頭１００、首１０１、胸１０２、腹１０３、腰１０４、腕１０５、脚１０６等の部位で構成され、各部位が関節を介して接続された複数の骨で支持されている。主キャラクタの体表面は多数のポリゴンの組み合わせで構成されており、各ポリゴンの頂点は１または複数の関節に関連づけられている。主キャラクタの動作は、関節を移動または回転させることで行われるが、このように関節が動かされたとき、その関節に関連づけられているポリゴンが連動して変形し、これにより、主キャラクタの様々な姿勢の姿が表現される。指向処理では、頭関節１１１、首関節１１２、胸関節１１３、腹関節１１４の向きをｙ軸方向に対して所定角度ずつ回転させる。この回転に伴って、これらの関節１１１〜１１４に関連する肩、腕等の関節も移動する。これにより、上半身全体で振り向く自然な指向動作を実現することができる。また、頭関節１１１のみ（または頭関節１１１および首関節１１２）の向きを回転させることにより、他の動作をしながら頭のみ振り向く別のパターンの指向動作を実現することができる。
【００４１】
主キャラクタ制御部５２は、立ち止まる、歩く、銃を構える等の基本動作を制御するためのモーションデータを有している。また、主キャラクタ制御部５２は、モーションデータによる処理とは別に、指向動作を制御する演算処理（指向処理）を行う。図４（Ｂ）に示すように、各モーションデータには主キャラクタがその基本動作を行っているときに指向動作の付加を許可するか否かの情報が記憶されている。指向動作の付加が許可されている基本動作を行っているときに指向対象物が現れた場合、主キャラクタはその基本動作と同時に指向動作も行う。一方、指向動作の付加が許可されていない基本動作を行っている場合には、指向対象物が現れても主キャラクタはその基本動作のみ行い、指向動作は行わない。
【００４２】
図４（Ｂ）において、基本動作のうち、指向動作の付加が許可（○）されているものは、その基本動作中に振り向くことが可能なものである。たとえば、立ち止まっているときや歩行中に横や斜め前に振り向いても不自然ではないため、このような基本動作では指向動作が許可される。また、基本動作のうち、指向動作の付加が禁止（×）されているものは、その基本動作中に振り向くとその動作が成立しないようなものである。たとえば、銃を構えているときに振り向くと銃の向きが変わってしまうため、このような基本動作では指向動作が禁止される。さらに、基本動作のうち、頭１００のみで振り向くような指向動作の付加のみ許可（△）されているものがある。たとえば自動車の運転中は、振り向くことは自然だが上半身が動いてしまうと運転ができないため、このような基本動作では頭１００のみ旋回させる指向動作のみ許可される。
【００４３】
主キャラクタが銃を構える基本動作を行っている場合、指向動作の付加が禁止されているのは、銃を構えている間に指向対象物の方向に振り向かせると、狙いたい方向に銃を構えることができず、不自然な動作になるからであり、さらに、頭１００だけを振り向かせた場合も、銃を構えて脇見をしている状態となってしまい不自然だからである。
【００４４】
《指向処理の説明》
主キャラクタを指向対象物に振り向かせる指向処理では、顔を指向対象物の方向に旋回させてゆく動作を行うための頭関節１１１、首関節１１２、胸関節１１３、腹関節１１４の回転角度（指向角度）を毎フレーム演算する処理が行われる。さらに、指向処理では、基本動作のモーションデータによって制御される各関節の向きに関するｙ軸方向の回転角度に、演算により取得された指向角度を付加する処理が行われる。フレームとは、描画を行う間隔（タイミング）のことであり、一般的に１フレームあたり１／６０秒である。指向処理における関節１１１〜１１４の指向角度の演算は、主キャラクタから指向対象物までの距離を用いて行われる。つまり、指向処理において主キャラクタを指向対象物に指向させる速度（１フレームあたりに指向する角度）を主キャラクタから指向対象物までの距離に応じて決定する。指向速度は主キャラクタから指向対象物までの距離が近いほど速くし、遠いほど遅くする。これにより、リアリティのある自然な振り向き表現を実現することができる。
【００４５】
図６は、指向処理における主キャラクタの指向領域を説明する図である。同図は、三次元のゲーム空間を上方から見たワールド座標系のＸ−Ｚ軸平面の図である。ワールド座標系は、三次元のゲーム空間における座標系である。指向領域とは、この範囲内に敵キャラクタ等の指向対象物が存在する場合に、主キャラクタに指向動作を行わせる領域である。この実施形態においては、図６に示すように、指向領域を主キャラクタからの距離が最遠距離以内で、主キャラクタの正面方向（０度）を含む主キャラクタの右９０度から左−９０度の半円範囲としている。
【００４６】
ここで、主キャラクタの正面方向とは、主キャラクタが直立したとき体の正面が向く方向である。つまり、図５に示すモデルローカル座標系のｚ軸方向が主キャラクタの正面方向である。指向領域に指向対象物が存在する場合、主キャラクタの顔をその指向対象物の方向に旋回させる。この旋回の角速度である指向速度は主キャラクタから指向対象物までの距離が近いほど速く、遠いほど遅くする。ただし、無制限に速度を変化させると、指向対象物が主キャラクタの至近距離に存在する場合、指向速度が速くなり過ぎてしまい、指向対象物が最遠距離付近に存在する場合、指向速度が遅くなり過ぎてしまう。そこで、本実施形態の制御では、指向速度が変化する範囲を限定し、指向速度を最も速くする限界の距離を最速距離、指向速度を最も遅くする限界の距離を最遅距離として設定する。主キャラクタから指向対象物までの距離が最速距離よりも近い場合、指向速度は最速距離のときの速さと同じ速さとなり、最遅距離よりも遠い場合、最遅距離のときの速さと同じ速さとなる。
【００４７】
なお、この実施形態では、指向領域を最遠距離以内で左右９０度の角度範囲の半円としているが、指向領域はこのような領域に限定されない。後ろ方向に指向対象物が存在しても主キャラクタに振り向かせるように、指向領域の角度範囲を広げてもよい。また、指向領域内に下限を制限するか否かは任意である。また、最速距離、最遅距離は図７に示した位置以外の位置に設定してもよい。
【００４８】
上述のように、指向対象物が指向領域内に存在する場合、主キャラクタは指向処理によって指向対象物の方向に振り向く。一方、指向対象物が指向領域内に存在しない場合、主キャラクタは指向処理によって正面方向に向き直る。すなわち、指向処理は、指向対象物がなくなったとき主キャラクタの正面への向き直りも制御する。また、指向領域内に複数の指向対象物が存在する場合、原則として最も主キャラクタから距離が近い指向対象物について指向処理を行う。また、指向対象物が主キャラクタの後方から現れた場合、指向対象物が指向領域内に入った時点でその距離に応じた指向処理を行う。
【００４９】
また、図６において、指向対象物が指向領域内に存在した場合に、主キャラクタから指向対象物までの距離をＬ、主キャラクタの正面方向と主キャラクタおよび指向対象物を結んだ線とが成す角度（目標角度）をａ、現在の指向角度をｂ、目標角度ａから現在の指向角度ｂを引いた差分角度（実際に動かしたい角度）をＣとする。
【００５０】
ここで、主キャラクタおよび指向対象物を結んだ線は、主キャラクタおよび指向対象物の位置を特定する情報を用いればよく、例えばゲーム空間における主キャラクタおよび指向対象物のゲーム空間への配置の基準となる位置座標（図５に示す原点のワールド座標系の位置座標）を結ぶ線や、主キャラクタおよび指向対象物の頭関節の位置又は首関節の位置を結ぶ線でもよい。
【００５１】
指向処理では、主キャラクタを距離Ｌに応じた指向速度で指向させるため、距離Ｌに基づいて１フレームあたりの変更可能角度ｒを算出し、それから実際に動かしたい角度Ｃを算出する。実際に動かしたい角度Ｃは１フレームの変更可能角度ｒより大きい場合が多い。その場合は、今回のフレームから次回のフレームの間でｒだけ振り向きの姿勢を変更する。ただし、Ｃがｒ以下の場合は、ｒにＣの値を代入し、Ｃだけ振り向きの姿勢を変更する。なお、主キャラクタも指向対象物も移動するため、毎フレームごとにｒ、Ｃを算出し直す。このように、主キャラクタから指向対象物までの距離Ｌに応じて１フレームあたりの指向角度ｒを変えることにより、指向速度を制御する。距離による１フレームあたりの変更可能角度ｒの計算については図９の説明で後述する。
【００５２】
図７は、図４のゲーム進行制御部５１が実行するゲーム処理を示すフローチャートである。まず、ゲーム処理がスタートすると、遊技者が操作するコントローラから操作情報を取得する（Ｓ１０）。この取得した操作情報に基づいて、遊技者が操作する主キャラクタの配置処理（Ｓ１１）およびモーション処理を行う（Ｓ１２）。配置処理とは、ゲーム空間内の所定位置にキャラクタを生成して配置する処理である。モーション処理とは、操作情報等に基づいて基本動作の選択（モーションデータの選択）、選択したモーションデータに基づく１フレーム毎のキャラクタの姿勢の決定等、を行う処理である。配置処理およびモーション処理については、周知の処理であるので詳細な説明は省略する。そして、指向対象物の有無等に応じて指向処理を行う（Ｓ１３）。指向処理については図１０の説明で詳述する。同様に、敵キャラクタについても配置処理（Ｓ１４）、モーション処理（Ｓ１５）および指向処理を行う（Ｓ１６）。その後、ゲーム空間処理やアタリ判定などのその他のゲーム処理を行い（Ｓ１７）、これらの処理の結果を表示処理によって画面に表示する（Ｓ１８）。ゲームプレイ中は以上の処理が定期的に繰り返される。
【００５３】
図８は、図４の主キャラクタ制御部５２が実行する主キャラクタの指向処理を示すフローチャートである（図７のＳ１３）。指向処理では、まず、主キャラクタに行わせている基本動作に指向動作の付加が許可されているか否かを判定する（Ｓ２９）。主キャラクタが指向動作の付加が許可されていない基本動作を行っている場合（Ｓ２９でＮＯ）には、指向処理が付加される余地がないため、この指向処理をスキップしてリターンする。一方、指向動作の付加が許可されている場合（Ｓ２９でＹＥＳ）、主キャラクタの指向領域内に指向対象物が存在するか否かを判定する（Ｓ３０）。指向領域内のオブジェクト（敵キャラクタ等）が、主キャラクタにとって指向対象物であるか否かはそのオブジェクトに付加されている指向対象物フラグ等の情報に基づいて判断される。
【００５４】
指向領域内に指向対象物が存在する場合（Ｓ３０でＹＥＳ）、この指向対象物を指向処理の対象として選択する（Ｓ３１）。指向対象物が指向領域内に１つしか存在しない場合、該指向対象物を指向処理の対象として選択し、複数の指向対象物が指向領域内に存在する場合、最も近い指向対象物を指向処理の対象として選択する。指向対象物の選択後、目標角度ａ、距離Ｌを計算する（Ｓ３２）。
【００５５】
また、指向対象物が指向領域内に存在しない場合（Ｓ３０でＮＯ）、主キャラクタの正面（０度）を目標角度ａにし、主キャラクタから指向対象物までの距離Ｌは最遅距離とする（Ｓ３４）。例えば主キャラクタが指向対象物に指向していた状態において指向対象物が他のキャラクタによって攻撃等されて消滅した場合に、指向処理を行わずに主キャラクタを正面に向けてしまうと、１フレームで突然正面に向き直ってしまい、キャラクタの動きが不自然になる。そこで、最も遅い速度で正面に向き直るという指向処理をすることで自然な動作を実現することができる。
【００５６】
次に、距離Ｌによる１フレームあたりの変更可能角度ｒを計算する（Ｓ３５）。１フレームあたりの変更可能角度ｒは主キャラクタから指向対象物までの距離によって一次関数的に変化する。これについては図１１において詳述する。それから、目標角度ａから現在の指向角度ｂを減算して実際に動かしたい角度Ｃを計算する（Ｓ３６）。そして、実際に動かしたい角度Ｃが１フレームあたりの変更可能角度ｒより大きいか否かを判定する（Ｓ３７）。
【００５７】
実際に動かしたい角度Ｃが１フレームあたりの変更可能角度ｒより大きい場合（Ｓ３７でＹＥＳ）、現在の指向角度ｂに１フレームあたりの変更可能角度ｒを加算してｂの値を更新する（Ｓ３８）。すなわち、１フレームで実際に動かしたい角度Ｃだけ指向させることができないため、１フレームあたりの変更可能角度ｒだけ指向させる。主キャラクタから指向対象物までの距離によって指向速度を制御するためである。
【００５８】
一方、実際に動かしたい角度Ｃの値が１フレームあたりの変更可能角度ｒの値以下の場合（Ｓ３７でＮＯ）、１フレームあたりの変更可能角度ｒの値を実際に動かしたい角度Ｃの値に補正する（Ｓ３９）。角度Ｃの値がｒの値以下であれば、１フレームで実際に動かしたい角度Ｃだけ指向させることができる。したがって、現在の指向角度ｂに、実際に動かしたい角度Ｃの値に補正した変更可能角度ｒを加算して指向角度ｂの値を更新する。（Ｓ３８）。すなわち、指向処理は指向角度ｂの値を保存しつつ、毎フレーム指向角度ｂの値を更新する処理である。
【００５９】
そして、指向処理によって指向させるのが、頭関節１１１のみ（または頭関節１１１および首関節１１２）か否か（図４（Ｂ）で○か△か）を判定する（Ｓ４０）。指向処理によって指向させるのが頭関節１１１のみではなく上半身全体である場合（Ｓ４０でＮＯ）、基本動作によって決定されたそのときの頭関節１１１の向きに関するｙ軸方向に対する回転角度にｂ／２度、基本動作によって決定されたそのときの首関節１１２、胸関節１１３、腹関節１１４の向きに関するｙ軸方向に対する回転角度にそれぞれｂ／６度加算して、上半身全体を指向させる（Ｓ４１）。各関節の向きを所定角度ずつ回転させることにより、下半身はモーションデータに基づく姿勢のままで上半身全体のみ振り向かせることができる。また、指向処理によって指向させるのが、頭関節１１１のみである場合（Ｓ４０でＹＥＳ）、基本動作によって決定されたそのときの頭関節１１１の向きに関するｙ軸方向に対する回転角度にｂ度加算し、頭１００のみを指向させる（Ｓ４２）。これにより、胴体はモーションデータに基づく姿勢のままで頭１００のみ振り向かせることができる。例えば、主キャラクタが自動車の運転中に指向処理が許可されている場合、主キャラクタはハンドルを握りシートに座って、胴体は進行方向を向いたままで頭のみ指向対象物の方向に振り向かせることができる。
【００６０】
図９は、距離による１フレームあたりの変更可能角度ｒの計算方法を示すフローチャートである。まず、主キャラクタから指向対象物までの距離Ｌが最速距離よりも大きいか否か判定する（Ｓ５０）。距離Ｌが最速距離以下の場合（Ｓ５０でＮＯ）、指向速度が速くなり過ぎることを防ぐため、距離Ｌを最速距離に補正する（Ｓ５１）。一方、距離Ｌが最速距離よりも大きい場合（Ｓ５０でＹＥＳ）、主キャラクタから指向対象物までの距離Ｌが最遅距離よりも小さいか否か判定する（Ｓ５２）。距離Ｌが最遅距離以上の場合（Ｓ５２でＮＯ）、指向速度が遅くなり過ぎることを防ぐため、距離Ｌを最遅距離に補正する（Ｓ５３）。一方、距離Ｌが最遅距離よりも小さい場合（Ｓ５２でＹＥＳ）、Ｓ５４の処理に移行する。
【００６１】
次に、距離Ｌに基づいて角度倍率を計算する（Ｓ５４）。角度倍率は以下の式によって求められる。
角度倍率＝２−（Ｌ−最速距離）／（最遅距離―最速距離）
【００６２】
指向対象物が最遅距離に存在する場合、Ｌ＝最遅距離なので、角度倍率は１倍となる。指向対象物が最速距離に存在する場合、Ｌ＝最速距離なので、角度倍率は２倍となる。指向対象物が最遅距離と最速距離との間に存在する場合、角度倍率は１倍から２倍の間となる。このように距離Ｌの値に応じて角度倍率は１倍から２倍の間で変化する。
【００６３】
そして、基礎１フレーム回転角度に角度倍率をかけて距離による１フレームあたりの変更可能角度ｒを計算する（Ｓ５５）。基礎１フレーム回転角度とは、指向対象物が最遅距離に存在する時の１フレームに変更可能な角度をいう。この基礎１フレーム回転角度は、予めゲームデータとして記録媒体１５に格納されている。
【００６４】
すなわち、指向対象物が最遅距離に存在する時は角度倍率が１倍になるため、基礎１フレーム回転角度が１フレームあたりの変更可能角度ｒになる。指向対象物が最速距離に存在する時は角度倍率が２倍になるため、基礎１フレーム回転角度の２倍が１フレームあたりの変更可能角度ｒになる。そして、指向対象物が最遅距離と最速距離との間に存在する時は角度倍率が１倍から２倍になるため、１フレームあたりの変更可能角度ｒは基礎１フレーム回転角度の１倍から２倍の間の線形補間演算により取得される。こうして距離Ｌの値に応じて１フレームあたりの変更可能角度ｒの値を１倍から２倍の間で変化させることにより、距離に基づく指向速度の制御を可能にしている。距離に応じた１フレームあたりの変更可能角度ｒの計算は１フレームごとに繰り返される。
【００６５】
なお、本実施形態では、主キャラクタから指向対象物までの距離に基づいて１フレームあたりの変更可能角度ｒを一次関数的に変化させているが、１フレームあたりの変更可能角度ｒを主キャラクタから指向対象物までの距離領域に応じて段階的に変化させることも可能である。
【００６６】
具体的には、図１０に示すように指向領域を主キャラクタから指向対象物までの距離に応じて複数の領域（領域１〜３）に分け、指向対象物がどの領域に存在しているかによって距離による１フレームあたりの変更可能角度ｒを決定する。この実施形態では、主キャラクタから最も遠い領域を領域１、次に遠い領域を領域２、最も近い領域を領域３とし、各領域に対応づけて角度情報を登録したテーブルＴを設けている。このテーブルＴでは、指向対象物が主キャラクタから遠い領域１にいる場合、１度／フレームの速さで主キャラクタを振り向かせ、指向対象物が主キャラクタから中程度の領域２にいる場合、２度／フレームの速さで主キャラクタを振り向かせる。また、指向対象物が主キャラクタから近い領域３にいる場合、３度／フレームの速さで主キャラクタを振り向かせる。
【００６７】
この処理を行う場合、図８の「距離による１フレームあたりの変更可能角度ｒの計算」処理（Ｓ３５）において、図９のＳ５４の処理に代えて、距離Ｌから指向対象物が存在する領域１〜３を取得する処理を実行する。また、Ｓ５５の処理に代えて、主キャラクタのテーブルＴから該当領域の角度情報を取得して距離による１フレームあたりの変更可能角度ｒ（角度ｒ＝テーブルＴの該当領域の角度情報）とする処理を実行する。例えば指向対象物が領域３に存在する場合、テーブルＴの角度情報は３度であるから、１フレームあたりの変更可能角度ｒは３度となる。その他の処理は図８の処理と同様である。この実施形態では、本実施形態のように１フレームあたりの変更可能角度ｒを計算によって求めなくても、指向対象物の存在領域に基づいて画一的に求めることができるため、処理が簡単で、演算に負荷がかからない。
【００６８】
なお、この実施形態において、図１０に示すように複数のキャラクタごとに角度情報の異なる複数のテーブルＴを記憶してもよい。そして、キャラクタごとに異なるテーブルＴに基づいて１フレームあたりの変更可能角度ｒを決定し、指向制御する。これにより、簡略な処理で各キャラクタの能力等に応じた指向速度で指向させることができる。領域数は３に限定されず、複数のキャラクタで領域の数や境界を異ならせてもよい。
【００６９】
また、本実施形態では、キャラクタから指向対象物までの距離が変化しない場合、キャラクタの１フレーム分の指向角速度は毎フレーム変化しないが、徐々に指向角速度を大きくしていくことも可能である。
【００７０】
具体的には、図８の「距離による１フレームあたりの変更可能角度ｒの計算」処理（Ｓ３５）において、図９のＳ５５の処理を「ｒ＝基礎１フレーム回転角度×倍率×補正値」とする。補正値は、例えば０．１→０．３→０．５→１．０というように１フレームごとに値が増加するようにする。これにより、ゆっくりからだんだん速くなるように指向させることができ、実際の人間の動きに近づけることができる。
【００７１】
なお、同様の処理を行って、指向速度を減速させるようにすることもできる。例えば、主キャラクタが指向対象物に対してある程度指向した状態となった後に、指向完了状態になるまで指向速度を徐々に減速させていくことで、よりリアリティのある表現を実現できる。
【００７２】
補正値をかける処理に代えて、図９のＳ５５の処理を「ｒ＝基礎１フレーム旋回角度×倍率＋ｒ／１０」としてもよい。前フレームのｒの値を記憶しておき、前フレームで大きく動いていたら今フレームでも大きく動くようにする。なお、「ｒ／１０」の１／１０という数値に限定されず、実施形態に対応する数値を選択する。
【００７３】
さらに、本実施形態のような１フレームごとの回転角度を用いる構成に代えて、所定時間ごとの回転角度を用いる構成にしてもよい。具体的には、図８の「距離による１フレームあたりの変更可能角度ｒの計算」処理（Ｓ３５）において、図９のＳ５５の処理を「ｒ＝基礎１フレーム回転角度×倍率×経過時間に応じたフレーム数」とする。そして、これを所定時間ごとの変更可能角度ｒとし、この値を用いて所定時間ごとに指向制御する。
【００７４】
経過時間に応じたフレーム数は以下の式で求められる。「経過時間に応じたフレーム数＝前回から今回の同じ処理を行うまでの経過時間（秒）×基本フレーム数（フレーム／秒）」。例えば、前回から今回の同じ処理（Ｓ５５）を行うまでに１／２０秒かかった場合、基本フレーム数を６０フレーム／秒とすると１／２０秒×６０フレーム／秒＝３となり、経過時間に応じたフレーム数は３となる。したがって、この場合所定時間ごとの変更可能角度ｒは基本フレーム時間の３倍となる。このように、前回の処理時間によって次の表示フレームを決定する。
【００７５】
これによって、固定フレーム方式だけではなく、可変フレーム方式にも対応することができるというメリットがある。固定フレーム方式とは、フレームレートを固定とするものであり、例えば、６０フレーム／秒に固定されている。可変フレーム方式とは、処理の重さ等に応じてフレームレートを可変にするものであり、毎回フレームレートを異ならせることができる。
【００７６】
なお、本実施形態では、関節の向きを、モデルローカル座標系におけるｙ軸方向に対して回転させることで主キャラクタを指向対象物に指向させる動作を行っているが、ｙ軸方向に関する指向動作に限らずｘ軸方向、ｚ軸方向に関する指向動作をさせてもよい。ｘ軸方向、ｚ軸方向に関する指向動作は、本実施形態の上述のｙ軸方向に関する指向処理と同様の処理で実現できる。
【００７７】
ｘ軸方向に関する指向処理は、本実施形態のｙ軸方向に対する指向処理と目標角度ａの取得に関する処理が異なる。具体的には、ワールド座標系のＹ−Ｚ軸平面における主キャラクタの正面方向と、主キャラクタおよび指向対象物を結んだ線とが成す角度を目標角度ａとする。これにより、例えば、指向対象物が主キャラクタよりも斜め上方に存在する場合、関節の向きをｘ軸方向、ｙ軸方向に対して回転させて主キャラクタの上半身を斜め上方に指向させることができる。
【００７８】
なお、主キャラクタおよび指向対象物を結んだ線は、ゲーム空間における主キャラクタおよび指向対象物の頭関節の位置又は首関節の位置等の指向の基準部位となる頭部分に関連する位置を結ぶ線とするのがよい。これにより、頭部分を基準とした指向動作を実現できるので、同じ高さの地面において主キャラクタが座っていて指向対象物である敵キャラクタが直立しているような場合でも、主キャラクタが敵キャラクタの頭部分を斜め上方に見上げるように指向動作をさせることができる。
【００７９】
なお、ｚ軸方向に関する指向処理の場合は、ワールド座標系のＸ−Ｙ軸平面における目標角度ａを用いる。また、指向角度ｂを関節１１１〜１１４に振り分ける割合や変更可能角度ｒ等の設定値は各軸で別々に設定するようにしてもよい。
なお、本実施形態では、主キャラクタについて説明したが、敵キャラクタについても主キャラクタと同様の処理を行う。
【００８０】
また、上述したゲーム装置は、一例として家庭用のテレビゲーム機とされているが、家庭用のテレビゲーム機に限らず、携帯型ゲーム機、アーケードゲーム機等の他の種類のゲーム機、又はゲーム機以外の三次元映像を表示する装置、例えばゲームプログラムがローディングされたパーソナルコンピュータ等であってもよい。
【符号の説明】
【００８１】
５０  操作検出部
５１  ゲーム進行制御部
５２  主キャラクタ制御部
５３  敵キャラクタ制御部
５４  ゲーム空間制御部
５５  アタリ判定部
５６  描画処理部
【図１】
0005451136.tif 000002
【図２】
0005451136.tif 000003
【図４】
0005451136.tif 000004
【図５】
0005451136.tif 000005
【図６】
0005451136.tif 000006
【図７】
0005451136.tif 000007
【図８】
0005451136.tif 000008
【図９】
0005451136.tif 000009
【図１０】
0005451136.tif 000010
【図３】
0005451136.tif 000011