(57)【特許請求の範囲】
【請求項１】
コンピュータを、
仮想のゲーム空間を生成するゲーム空間生成手段、
前記ゲーム空間を撮影すべく、少なくとも該ゲーム空間内の仮想カメラの視点の位置及び向きを制御し、ゲームの進行に応じて該仮想カメラの視点を設定するための候補位置を算出する仮想カメラ制御手段、及び
前記ゲーム空間内に設定された前記仮想カメラの進入禁止領域に、前記候補位置を領域内に含むように設定されたカメラ領域の少なくとも一部が重複したか否かを判定する禁止領域重複判定手段、として機能させ、
前記仮想カメラ制御手段は、
前記カメラ領域が前記進入禁止領域と重複していない場合には、前記候補位置を前記視点の位置として決定する一方、
前記カメラ領域の少なくとも一部が前記進入禁止領域と重複している場合には、前記候補位置を含む前記カメラ領域を前記進入禁止領域外に設定すると共に、該カメラ領域内において前記候補位置に対し前記視点の向きとは反対側の領域の所定位置を、前記視点の位置として決定するよう構成されていることを特徴とするゲームプログラム。
【請求項２】
前記仮想カメラ制御手段は、前記ゲーム空間内に設定された注視点を前記仮想カメラの視点の視軸が通るように、該視点の向きを制御することを特徴とする請求項１に記載のゲームプログラム。
【請求項３】
前記注視点は、前記ゲーム空間内で動作するプレイヤキャラクタを基準とする所定位置に配置され、該プレイヤキャラクタに伴って移動するよう設定されていることを特徴とする請求項２に記載のゲームプログラム。
【請求項４】
前記仮想カメラ制御手段は、前記カメラ領域の少なくとも一部が前記進入禁止領域と重複していると判定された場合は、前記候補位置を含む前記カメラ領域を、前記候補位置及び注視点を結ぶ直線に沿って前記進入禁止領域外へ、前記カメラ領域が該進入禁止領域に隣接するまで移動させた後の位置に設定することを特徴とする請求項１乃至３の何れかに記載のゲームプログラム。
【請求項５】
前記仮想カメラ制御手段は、前記候補位置を含む前記カメラ領域を、前記直線に沿って前記進入禁止領域外へ移動させた位置から更に所定距離だけ下方へ移動させた後の位置に設定することを特徴とする請求項４に記載のゲームプログラム。
【請求項６】
請求項１乃至５の何れかに記載のゲームプログラムを記録したプログラム記憶部、及び、該プログラム記憶部に記憶されたゲームプログラムを実行するコンピュータ、を備えることを特徴とするゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想ゲーム空間内に配置されて該仮想ゲーム空間を撮影すると共に、プレイヤキャラクタ等に伴って移動する仮想カメラを制御するゲームプログラム、及びゲーム装置に関する。
【背景技術】
【０００２】
従来、三次元の仮想ゲーム空間内のプレイヤキャラクタを、プレイヤの操作に応じて動作させるゲームプログラムがある。この種のゲームプログラムでは、プレイヤキャラクタを含む仮想ゲーム空間内の様子を、該仮想ゲーム空間内に設定した仮想カメラにより、プレイヤキャラクタとは別の視点で撮影し、その画像を、ゲーム装置の表示部に表示させるようにしたものがある。また、仮想ゲーム空間は、平坦な地形だけで構成されているのではなく、切り立った崖や巨大な岩石、建物の壁などの障害物（仮想カメラの進入禁止領域）があり、仮想カメラを、このような障害物内に入ってしまうことがないように制御する方法が提案されている（特許文献１，２参照）。
【０００３】
このうち特許文献１には、仮想カメラと障害物との衝突判定を行い、衝突したと判定した場合には、障害物の前方へ出るまで被写体側へ仮想カメラを移動させる方法が開示されている。また、特許文献２には、プレイヤキャラクタ等の被写体と仮想カメラとを含む所定の領域に障害物が存在するか否かを判定し、存在する場合には仮想カメラを被写体に近づける方法が開示されている。更に、特許文献２の仮想カメラには、視点を中心とする球形状のカメラ周辺領域が、障害物との衝突判定を行う対象領域として設定されており、障害物の存在により仮想カメラを被写体に近づけるほど、このカメラ周辺領域の径が小さくなるように制御されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−１３７８４２号公報
【特許文献２】特許第４４８９８００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１，２のように、障害物の存在により仮想カメラを被写体側へ移動させると、移動前に仮想カメラの前方に位置していて該仮想カメラにより撮影された画像に含まれていたオブジェクトが、被写体側へ移動した後の仮想カメラによっては撮影されなくなる場合がある。また、仮想カメラに撮影されてゲーム装置の表示部に表示される画像に占めるプレイヤキャラクタの画像面積の割合が、移動前に比べて大きくなってしまう。そのため、仮想ゲーム空間の奥行き感のある画像を撮影することができず、プレイヤに広い視野を有するゲーム画像を提供できない可能性がある。
【０００６】
そこで本発明は、仮想カメラが障害物内に入り込んでしまうのを回避しつつ、仮想カメラによって極力広い視野を有する画像を撮影することができるゲームプログラム、及びゲーム装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るゲームプログラムは、コンピュータを、仮想のゲーム空間を生成するゲーム空間生成手段、前記ゲーム空間を撮影すべく、少なくとも該ゲーム空間内の仮想カメラの視点の位置及び向きを制御し、ゲームの進行に応じて該仮想カメラの視点を設定するための候補位置を算出する仮想カメラ制御手段、及び前記ゲーム空間内に設定された前記仮想カメラの進入禁止領域に、前記候補位置を領域内に含むように設定されたカメラ領域の少なくとも一部が重複したか否かを判定する禁止領域重複判定手段、として機能させ、前記仮想カメラ制御手段は、前記カメラ領域が前記進入禁止領域と重複していない場合には、前記候補位置を前記視点の位置として決定する一方、前記カメラ領域の少なくとも一部が前記進入禁止領域と重複している場合には、前記候補位置を含む前記カメラ領域を前記進入禁止領域外に設定すると共に、該カメラ領域内において前記候補位置に対し前記視点の向きとは反対側の領域の所定位置を、前記視点の位置として決定するよう構成されている。
【０００８】
また、前記仮想カメラ制御手段は、前記ゲーム空間内に設定された注視点を前記仮想カメラの視点の視軸が通るように、該視点の向きを制御するよう構成されていてもよい。
【０００９】
また、前記注視点は、前記ゲーム空間内で動作するプレイヤキャラクタを基準とする所定位置に配置され、該プレイヤキャラクタに伴って移動するよう設定されていてもよい。
【００１０】
また、前記仮想カメラ制御手段は、前記カメラ領域の少なくとも一部が前記進入禁止領域と重複していると判定された場合は、前記候補位置を含む前記カメラ領域を、前記候補位置及び前記注視点を結ぶ直線に沿って前記進入禁止領域外へ、前記カメラ領域が該進入禁止領域に隣接するまで移動させた後の位置に設定するよう構成されていてもよい。
【００１１】
また、前記仮想カメラ制御手段は、前記進入禁止領域外へ移動した後の前記カメラ領域の境界と、該カメラ領域における前記候補位置及び前記注視点を結ぶ直線との交点のうち、該注視点から遠い方の交点を、前記視点の位置として決定するよう構成されていてもよい。
【００１２】
また、前記仮想カメラ制御手段は、前記候補位置を含む前記カメラ領域を、前記直線に沿って前記進入禁止領域外へ移動させた位置から更に所定距離だけ下方へ移動させた後の位置に設定するよう構成されていてもよい。
【００１３】
また、カメラ領域は、前記候補位置を中心とする略球形状を成していてもよい。
【００１４】
本発明に係るゲーム装置は、上述した何れかに記載のゲームプログラムを記録したプログラム記憶部、及び、該プログラム記憶部に記憶されたゲームプログラムを実行するコンピュータ、を備えるゲーム装置である。
【発明の効果】
【００１５】
本発明によれば、仮想カメラが障害物内に入り込んでしまうのを回避しつつ、仮想カメラによって極力広い視野を有する画像を撮影することができるゲームプログラム、及びゲーム装置を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施の形態に係るゲーム装置の内部構成を示すブロック図である。
【図２】ゲーム装置が備える制御部の機能的な構成を示すブロック図である。
【図３】プレイヤキャラクタの移動に伴って仮想カメラの位置が変更される様子を側面視で示す模式図である。
【図４】プレイヤキャラクタに対して仮想カメラの上下方向位置が変更される様子を側面視で示す模式図である。
【図５】プレイヤキャラクタ回りに仮想カメラの位置が変更される様子を平面視で示す模式図である。
【図６】フレーム毎に実行される処理の概要を示すフローチャートである。
【図７】図６に示すカメラ処理の詳細を示すフローチャートである。
【図８】実施の形態１に係るカメラ位置補正処理の態様を示す模式図である。
【図９】実施の形態１に係るカメラ位置補正処理の流れを示すフローチャートである。
【図１０】実施の形態２に係るカメラ位置補正処理の態様を示す模式図である。
【図１１】実施の形態２に係るカメラ位置補正処理の流れを示すフローチャートである。
【図１２】図１１のステップＳ３２の処理を説明するための模式図である。
【図１３】図１２に示すカメラ領域の移動処理の流れを示すフローチャートである。
【図１４】実施の形態３に係るカメラ位置補正処理を説明するための模式図である。
【図１５】実施の形態４に係るカメラ位置補正処理を説明するための模式図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態に係るゲームプログラム、記憶媒体、及びゲーム装置について、図面を参照しつつ説明する。なお本実施の形態に係るゲームプログラムにより実現されるゲームは、いわゆるハンティングアクションゲームであって、プレイヤによる所定操作により、プレイヤキャラクタを仮想ゲーム空間内で行動させ、モンスター等の敵キャラクタを討伐するミッションを遂行するものを例示する。
【００１８】
［ハードウェアの構成］
図１は、本発明の実施の形態に係るゲーム装置１の内部構成を示すブロック図である。図１に示すようにゲーム装置１は制御部３０を備えており、該制御部３０にはＣＰＵ１１、描画データ生成プロセッサ１２、ＲＡＭ（Random Access Memory）１３、ＲＯＭ（Read Only Memory）１４、描画処理プロセッサ１５、及び音声処理プロセッサ１８が含まれている。更にゲーム装置１は、この他にもＶＲＡＭ（Video-RAM）１６、アンプ１９、スピーカ２０、イヤホン端子２１、操作部２２、メディアインタフェース２３、無線ＬＡＮモジュール２４、及びバス２５を備えている。そして、これらのうちＣＰＵ１１、描画データ生成プロセッサ１２、ＲＡＭ１３、ＲＯＭ１４、描画処理プロセッサ１５、音声処理プロセッサ１８、操作部２２、メディアインタフェース２３、及び無線ＬＡＮモジュール２４が、バス２５によって相互にデータ伝送可能に接続されている。
【００１９】
操作部２２は、方向キー及びその他のボタン群（図示せず）を含んでおり、プレイヤの操作を受け付けて、その操作内容に応じた操作信号をＣＰＵ１１に入力する。また、方向キー及びボタン群が有する各種のボタンは、プレイヤキャラクタの特定の動作を指示するための操作子である。また、操作部２２には、これら操作子以外にゲーム機１の電源の入／切を行うための電源スイッチ等が含まれる。
【００２０】
メディアインタフェース２３は、図示しないメディア装着部にセットされたゲームメディア５にアクセスしてゲームプログラム５ａ及びゲームデータ５ｂを読み出す。このうちゲームプログラム５ａは、上述したアクションゲームをゲーム装置１に実行させるものである。また、ゲームデータ５ｂには、上記ゲームを実行する上で必要なデータとして、キャラクタや背景の画像データ、ステータスなどの情報表示用の画像データ、効果音やＢＧＭなどの音声データ、文字や記号によるメッセージデータ等が含まれている。なお、記憶媒体であるゲームメディア５は、半導体メモリのほか、光ディスクの一種であるＵＭＤ（Universal Media Disc）（登録商標）を採用することができる。
【００２１】
ＲＡＭ１３には、ゲームの進行に応じてゲームメディア５から読み込まれたゲームプログラム５ａ及びゲームデータ５ｂを格納するロードエリア、並びに、ＣＰＵ１１がゲームプログラム５ａを処理する際に使用するためのワークエリアが設定されている。ＲＯＭ１４には、ディスクローディング機能などのゲーム装置１の基本的機能や、ゲームメディア５に記憶されているゲームプログラム５ａ及びゲームデータ５ｂの読み出し処理を制御する基本プログラムが記憶されている。
【００２２】
ＣＰＵ１１は、ゲームメディア５に記録されているゲームプログラム５ａ及びゲームデータ５ｂの全部または一部を、メディアインタフェース２３を通じてＲＡＭ１３に読み込み、プレイヤによる操作部２２の操作に応じてこれを実行し、ゲーム進行を制御する。より具体的には、プレイヤに操作されることによって操作部２２から操作信号が入力されると、ＣＰＵ１１は、ゲームプログラム５ａに従ってその操作信号に対応する所定のゲーム進行処理を行い、その処理結果を、ゲーム進行を示す画像（以下、「ゲーム画像」とも称する）としてディスプレイ２に表示すると共に、ゲーム進行を示す音声信号（以下、「ゲーム音声」とも称する）をスピーカ２０やイヤホン端子２１に出力する。
【００２３】
上記ゲーム画像の描画は、ＣＰＵ１１の指示により、描画処理プロセッサ１５が行う。即ち、ＣＰＵ１１は、操作部２２から入力される操作信号に基づき、ディスプレイ２に表示すべきゲーム画像の内容を決定し、その内容に対して必要な描画データを描画データ生成プロセッサ１２に生成させる。そして、その描画データを描画処理プロセッサ１５に転送して描画処理を行わせる。描画処理プロセッサ１５は、描画データに基づいて１／６０秒毎にゲーム画像を生成し、生成したゲーム画像をＶＲＡＭ１６に書き込む。ディスプレイ２は、半透過型カラー液晶ディスプレイとバックライトＬＥＤ（Light Emitting Diode）とを有し、ＶＲＡＭ１６に書き込まれたゲーム画像を表示する。
【００２４】
また、ＣＰＵ１１は、ゲームの進行に応じて、スピーカ２０から出力すべき効果音やＢＧＭ等の音声を決定し、その音声を発音するための音声データをＲＡＭ１３から読み出して音声処理プロセッサ１８に入力する。即ち、ＣＰＵ１１は、ゲームの進行に伴って発音イベントが発生すると、その発音イベントに応じた音声データ（ゲームメディア５からロードされた音声データ）をＲＡＭ１３から読み出して音声処理プロセッサ１８に入力する。音声処理プロセッサ１８は、ＤＳＰ（Digital Signal Processor)で構成されており、ＣＰＵ１１によって入力された音声データに対して所定の効果（例えば、リバーブ、コーラスなど）を付与したのちアナログ信号に変換して、アンプ１９に出力する。アンプ１９は、音声処理プロセッサ１８から入力された音声信号を増幅したのち、スピーカ２０及びイヤホン端子２１に出力する。
【００２５】
無線ＬＡＮモジュール２４は、通信規格ＩＥＥＥ８０２．１１ｂ（使用周波数帯２．４ＧＨｚ、通信速度１１Ｍｂｐｓ）に準拠した無線ＬＡＮによって他のゲーム装置１とデータ通信を行い、ネットワークを構成するための通信モジュールである。
【００２６】
［制御部の機能的構成］
図２は、ゲーム装置１が備える制御部３０の機能的な構成を示すブロック図である。制御部３０は、ゲームメディア５から読み込んだゲームプログラム５ａ及びゲームデータ５ｂを実行することにより、ゲーム空間生成手段３１，キャラクタ制御手段３２，仮想カメラ制御手段３３，禁止領域重複判定手段３４などの機能を発揮する。
【００２７】
ゲーム空間生成手段３１は、プレイヤキャラクタＣ１が行動する仮想ゲーム空間４０（図３参照）を生成するものである。本実施の形態に係る仮想ゲーム空間４０は、所定の三次元的な広がりを有する仮想的なゲーム空間として設定されており、プレイヤキャラクタＣ１が移動可能になっている。仮想ゲーム空間４０としては、例えば地面４１上の空間があるが、これに限られず、水中や空中を含んでいてもよい。
【００２８】
キャラクタ制御手段３２は、仮想ゲーム空間４０におけるプレイヤキャラクタＣ１及び敵キャラクタを含む様々のキャラクタの動作を制御する。なお、このプレイヤキャラクタＣ１とは、プレイヤが操作部２２を操作することによって、仮想ゲーム空間４０内での動作を直接的に制御することができるキャラクタであり、本ゲームではこのプレイヤキャラクタＣ１がハンターとなって敵キャラクタを討伐する。但し、プレイヤが操作する対象はプレイヤキャラクタＣ１などの人型のオブジェクトに限られず、例えば車両や航空機などのオブジェクトであってもよい。また、敵キャラクタとは、プレイヤによる操作部２２の操作によっては直接的に動作を制御することができず、状況に応じてＣＰＵ１１がその動作を制御するノンプレイヤキャラクタである。
【００２９】
仮想カメラ制御手段３３は、仮想ゲーム空間４０内に配置された仮想カメラＣａ（図３参照）の位置及び向きを制御する。該仮想カメラＣａは、プレイヤキャラクタＣ１及び敵キャラクタを含む仮想ゲーム空間４０の様子を撮影するものであり、撮影された画像（仮想ゲーム空間４０を透視変換して二次元化した画像）は、ゲーム装置１のディスプレイ２に出力（表示）される。仮想カメラ制御手段３３は、仮想カメラＣａ（視点）の位置および向きを、プレイヤキャラクタＣ１の少なくとも一部が撮影範囲に含まれるように、かつ、
プレイヤキャラクタＣ１を追従するように制御する。また、仮想カメラ制御手段３３は、仮想カメラＣａの位置および向きを、プレイヤによる操作部２２を介してのカメラ操作（カメラの移動指示）に基づいても制御する（図４，５参照）。具体的には、仮想カメラ制御手段３３は、仮想カメラＣａの位置の変更先（更新先）の候補である候補位置を決定する「カメラ候補位置決定処理」を行い、更にこれに加えて、所定の場合には「カメラ位置補正処理」を行った上で、仮想カメラＣａの位置を決定する。
【００３０】
ここで、仮想カメラの構成と、仮想カメラ制御手段３３が行う「カメラ候補位置決定処理」とについて、図３〜図５を参照して説明する。なお、「カメラ位置補正処理」については、図８〜図１５を用いて後に別途詳述する。
【００３１】
図３〜図５は、仮想カメラＣａに対するカメラ候補位置決定処理を説明すべく、仮想ゲーム空間４０内に位置するプレイヤキャラクタＣ１及び仮想カメラＣａを示す模式図である。このうち図３は、プレイヤキャラクタＣ１の移動に伴って仮想カメラＣａの位置が変更（更新）される様子を側面視で示している。また、図４は、プレイヤが仮想カメラＣａを移動させる操作をした場合に、停止しているプレイヤキャラクタＣ１に対して仮想カメラＣａの上下方向位置が変更される様子を側面視で示している。図５は、プレイヤが仮想カメラＣａを移動させる操作をした場合に、停止しているプレイヤキャラクタＣ１の回りに仮想カメラＣａの位置が変更される様子を平面視で示している。
【００３２】
なお、図３〜図５は何れも、平坦な地面４１上に切り立った崖が障害物（進入禁止領域）４２として存在する仮想ゲーム空間４０において、地面４１上にプレイヤキャラクタＣ１が位置している様子を例示している。この地面４１は、プレイヤキャラクタＣ１及び仮想カメラＣａの何れもが移動可能な領域として設定されている（以下、「地面４１」を適宜「移動可能領域４１」とも称する）。また、障害物４２は、プレイヤキャラクタＣ１及び仮想カメラＣａの何れの進入も禁止される進入禁止領域として設定されている（以下、「障害物４２」を適宜「進入禁止領域４２」とも称する）。例えば切り立った崖の内方から仮想ゲーム空間４０を撮影したような画像は、プレイヤに違和感を覚えさせる可能性があるため、仮想カメラＣａがこのような画像を撮影することがないようにするのが好ましい。そのため、図３に示すように、仮想ゲーム空間４０内には仮想カメラＣａを進入させて撮影させるのを禁止する領域として、進入禁止領域４２が設定されている。
【００３３】
移動可能領域４１としては平坦な地面に限られず、所定の傾斜面を成す地面なども含まれる。また、進入禁止領域４２としては切り立った崖に限られず、巨大な岩石や建物の壁などであってもよく、又は敵キャラクタ等の他のキャラクタであってもよい。また、移動可能領域及４１及び進入禁止領域４２は何れも、プレイヤキャラクタＣ１及び仮想カメラＣａの夫々に対して別個に設定してもよい。更に、本実施の形態では、障害物４２をプレイヤによって視認可能な所定の外観形状を有するオブジェクトとして描画し、進入禁止領域を当該障害物４２の外観形状と同一領域に設定しているが、これに限られない。即ち、障害物４２の外観形状と一致しない領域として、例えば障害物４２より若干大きく又は小さく、進入禁止領域を設定してもよい。
【００３４】
次に、図３を参照して、まずは仮想カメラＣａの構成（設定内容）について説明する。本ゲームにおいて仮想カメラＣａは、視点５１と、該視点５１を含むように設定されたカメラ領域５０とを有している。このうち視点５１は、文字通り仮想カメラＣａの視点であって、仮想カメラＣａはこの視点５１から仮想ゲーム空間４０を撮影するように設定されている。カメラ領域５０は、仮想カメラＣａが障害物（進入禁止領域）４２と重複するか否かの判定（いわゆる、「衝突判定」）を行う際に用いられる領域であり、本実施の形態では所定の半径ｒを有する球形状の領域として設定されている。
【００３５】
また、図３において位置１００にいるプレイヤキャラクタＣ１に対応する仮想カメラＣａのように、カメラ領域５０が進入禁止領域４１から離れて位置している状態（以下、「離隔状態」ともいう）では、球形状のカメラ領域５０は、視点５１が中心５０ａとなるように設定されている。但し、離隔状態における視点５１の位置を、カメラ領域５０内において中心５０ａ以外の位置に設定してもよい。また、カメラ領域５０は球形状に限られず、多角形状など他の形状であってもよく、この場合にはその領域内の適宜位置に視点５１を設定することができる。
【００３６】
仮想カメラＣａの視点５１は、プレイヤキャラクタＣ１を基準とする所定位置に設けられた注視点ＸＡを基準とし、所定の位置に配置されている。即ち、本実施の形態では、地面４１に対するプレイヤキャラクタＣ１の原点座標となる接地点ＸＢから、プレイヤキャラクタＣ１の設定身長より高い所定の高さＨの位置に注視点ＸＡが設けられている。そして、注視点ＸＡを通る水平線に対して所定の角度（仰角）Ａ３を成し、且つ注視点ＸＡから距離Ｒだけ離れた点ＸＣ３が、視点５１の高さの初期位置として設定されている。また、水平方向に関しては、プレイヤキャラクタＣ１の背後（即ち、プレイヤキャラクタＣ１の視線の方向とは反対の方向）に視点５１の初期位置が設定されている。すなわち、視点５１は、プレイヤキャラクタＣ１の背後の斜め上方の所定距離離れた位置から、プレイヤキャラクタＣ１を基準にして設けられた注視点ＸＡを向くように、初期位置が設定されている。図３では、プレイヤキャラクタＣ１の視線の方向（向き）を、プレイヤキャラクタＣ１を示すイラストに付した矢印の向きによって示している（図４，図５でも同様）。
【００３７】
なお、上述したようにカメラ領域５０が進入禁止領域４２から離れた離隔状態のときは、視点５１はカメラ領域５０の中心５０ａに位置しているが、カメラ領域５０の少なくとも一部が進入禁止領域４２と重複することで後述の「カメラ位置補正処理」が行われた場合には、上記にかかわらず、視点５１はカメラ領域５０内にて中心５０ａとは異なる位置に設定されることになる（詳しくは後述する）。そして、視点５１が何れに位置する場合であっても、仮想カメラ制御手段３３は、視点５１を通って該視点５１の向きに沿った軸線、即ち視軸５２が、常に注視点ＸＢを通るように制御している。
【００３８】
次に、図３を参照して、仮想カメラ制御手段３３が行う「カメラ候補位置決定処理」について、プレイヤキャラクタＣ１と共に移動するように仮想カメラＣａの位置を変更する場合を例にして説明する。なお、この「カメラ候補位置決定処理」は、仮想カメラＣａを移動させる際に、その視点５１の位置の変更先の候補となる位置を決定する処理である。図３に示すように、プレイヤキャラクタＣ１が、位置１００から、カメラ領域５０が障害物４２に重複しない位置１０１へ移動した場合、注視点ＸＡは、プレイヤキャラクタＣ１が移動するのに伴って、接地点ＸＢからの高さＨを維持しつつ水平に移動する。そして、注視点ＸＡの移動に伴って、上述した距離Ｒ，角度Ａ３，及びプレイヤキャラクタＣ１の向きに対する水平位置を維持することで、注視点ＸＡに対する相対位置を保って追従するように視点５１を移動させた点を候補位置として決定し、その位置（座標）を取得することにより「カメラ候補位置決定処理」を終了する。
【００３９】
なお、上記のように、位置１００から、カメラ領域５０が障害物４２と重複しない位置１０１へ、プレイヤキャラクタＣ１が移動する場合には、この候補位置に視点５１の位置を変更し、該視点５１を中心５０ａとするカメラ領域５０を設定することで、仮想カメラＣａの位置の変更が完了することとなる。従って、プレイヤが操作部２２を操作してプレイヤキャラクタＣ１を移動させると、仮想カメラＣａの位置もこれに追従して更新されるため、移動中のプレイヤキャラクタＣ１を含む仮想ゲーム空間４０内の様子をディスプレイ２に表示させることができる。
【００４０】
一方、プレイヤキャラクタＣ１が更に移動し、位置１０１から位置１０２へ到達した場合、上記と同様にして決定した候補位置に視点５１を変更すると、該視点５１を中心５０ａとするカメラ領域５０は障害物（進入禁止領域）４２と重複することとなる。従って、この状況のまま、候補位置にある視点５１から撮影された画像をディスプレイ２に表示させると、障害物４２内から見た画像が表示される場合があり、不自然である。そこで、本ゲームでは、これを解消するために後述の「カメラ位置補正処理」を行う。なお、このように位置１００から位置１０１へ、及び、位置１０１から位置１０２へのプレイヤキャラクタＣ１の移動に伴う仮想カメラＣａの位置の変更は、プレイヤによる操作部２２への操作によりプレイヤキャラクタＣ１が移動した場合に限らず、敵キャラクタからの攻撃をプレイヤキャラクタＣ１が受けることで注視点ＸＡが移動した場合などにも生じる。
【００４１】
次に、図４を参照して、仮想カメラ制御手段３３が行う「カメラ候補位置決定処理」について、プレイヤキャラクタＣ１に対して仮想カメラＣａの上下方向位置を変更する場合を例にして説明する。図４に示すように、仮想カメラＣａの視点５１は、注視点ＸＡを中心として上述した距離Ｒを半径とする円周ＣＲ上の所定の地点に位置することができるようになっている。即ち、円周ＣＲ上であって、注視点ＸＡを通る水平線に対して所定の角度Ａ１〜Ａ５を成す５つの点ＸＣ１〜ＸＣ５に、視点５１を選択的に配置できるようになっている。ここで、図４では点ＸＣ１は水平線より下方に位置し、その他の点ＸＣ２〜ＸＣ５は水平線より上方に位置するものを例示しているが、これに限られない。また、選択できる位置の個数も図４に示す例（５つ）に限定されない。
【００４２】
点ＸＣ１〜ＸＣ５のうち角度Ａ３を成す点ＸＣ３は、上述した視点５１の初期位置である。従って、本ゲームでは、この初期位置の点ＸＣ３を基準として、下方の２点（ＸＣ１，ＸＣ２）及び上方の２点（ＸＣ４，ＸＣ５）の合計５段階に、視点５１の上下方向位置を変更可能になっている。また、各点ＸＣ１〜ＸＣ５は、一定の半径Ｒの円周ＣＲ上に設定されている必要はなく、例えば、各点のうち何れか一又は複数の点について、注視点ＸＡからの距離が他の点と異なっていてもよい。
【００４３】
仮想カメラＣａの位置を上下方向に変更する態様について具体的に説明する。図４に示すように、点ＸＣ３に仮想カメラＣａの視点５１が位置している状況で、プレイヤによって操作部２２に対し所定の操作が行われると、点ＸＣ３に隣接する点ＸＣ２，ＸＣ４のうち、プレイヤの操作に応じた何れか一方の点を候補位置として決定し、その位置（座標）を取得することにより「カメラ候補位置決定処理」を終了する。なお、決定された候補位置に視点５１を設定した場合に、カメラ領域５０が障害物４２と重複しない場合には、該候補位置へ視点５１の位置が変更される。図４では、上方の点ＸＣ４に位置が変更された場合を白抜きの矢印で示している。そして、変更後の視点５１を中心５０ａとしてカメラ領域５０が設定されると共に、視点５１がプレイヤキャラクタＣ１上の注視点ＸＡに向けられることで、仮想カメラＣａの位置の変更が完了する。なお、視点５１の位置は、プレイヤによる仮想カメラＣａの操作及びプレイヤキャラクタＣ１の情報（位置及び向きなど）に基づいて求められ、視点５１の向きは視点位置及びプレイヤキャラクタＣ１の情報（位置）に基づく注視点ＸＡにより求められる。
【００４４】
視点５１が点ＸＣ２にある場合も同様に、プレイヤの操作に応じて隣接する点ＸＣ１，ＸＣ３の何れか一方の点が候補位置として決定され、視点５１が点ＸＣ４にある場合も同様に、プレイヤの操作に応じて隣接する点ＸＣ３，ＸＣ５の何れか一方の点が候補位置として決定される。そして、決定された候補位置に視点５１を設定した場合に、カメラ領域５０が障害物４２と重複しない場合には、この候補位置に視点５１の位置が変更される。更に、視点５１が最下方の点ＸＣ１にある場合は、直上の点ＸＣ２が候補位置とされ、最上方の点ＸＣ５にある場合は、直下の点ＸＣ４が候補位置とされる。そして、これらの場合も、決定された候補位置に視点５１を設定した場合に、カメラ領域５０が障害物４２と重複しない場合には、その候補位置に視点５１の位置が変更され、該視点５１を中心５０ａとしてカメラ領域５０が設定されると共に、視点５１が注視点ＸＡに向けられることで、仮想カメラＣａの位置の変更が完了する。
【００４５】
従って、プレイヤは、操作部２２を操作することによって仮想カメラＣａの上下方向の位置を変更することができ、これに伴って視点５１の向き（撮影角度）を変更することができる。そして、最下方の点ＸＣ１に近づくほど視点５１は地面４１に近づくと共に仰角が大きくなり、プレイヤキャラクタＣ１を下方から見上げるような画像が撮影される。逆に、最上方の点ＸＣ５に近づくほど視点５１は地面から遠ざかって俯角が大きくなり、プレイヤキャラクタＣ１を上方から見下ろすような画像が撮影される。なお、このような仮想カメラＣａの上下方向の位置の変更は、プレイヤキャラクタＣ１の移動中にも行うことができる。この場合には、図３を参照して説明した、プレイヤキャラクタＣ１の移動方向への仮想カメラＣａの位置の変更と共に、上下方向の位置の変更を行う。
【００４６】
一方、図４に示すように、点ＸＣ３に視点５１が位置する仮想カメラＣａの近傍に障害物（進入禁止領域）４２が存在する場合、仮想カメラＣａを更に下方へ位置させるような操作がプレイヤによって行われると、点ＸＣ２が候補位置に設定されるが、この候補位置に視点５１の位置を変更すると、更新後の視点５１を中心５０ａとするカメラ領域５０は障害物４２と重複することとなる。従って、本ゲームでは、この場合にも後述の「カメラ位置補正処理」を行う。
【００４７】
次に、図５を参照して、仮想カメラ制御手段３３が行う「カメラ候補位置決定処理」について、プレイヤキャラクタＣ１の回りに仮想カメラＣａの位置を変更する場合を例にして説明する。図５に示すように、仮想カメラＣａは、注視点ＸＡを中心として所定の距離ＲＸを半径とする円周ＣＸ上の任意の地点に視点５１を位置させることができるようになっている。この半径ＲＸは、上述した仮想カメラＣａの上下位置を定める角度Ａ１〜Ａ５によって特定され、具体的には、各角度での注視点ＸＡと視点５１とを結ぶ線分を、平面上（例えば、地面４１上）に投影したときにできる線分の長さ寸法となっている。なお、図５の説明では便宜上、仮想カメラＣａの視点５１の上下位置が図４の点ＸＣ３にある場合を例とする。
【００４８】
図５に示すように、円周ＣＸ上の点ＸＣ３１（初期位置）に仮想カメラＣａの視点５１が位置している状況で、プレイヤが操作部２２に対して所定の操作を行うと、該操作に応じて仮想カメラＣａは円周ＣＸ上を移動させることができる。例えば、操作部２２に含まれる十字ボタンの左右何れかが押圧操作されると、十字ボタンが操作されている方向に対応する方向へ円周ＣＸに沿って移動した点を候補位置として決定し、その位置（座標）を取得することにより「カメラ候補位置決定処理」を終了する。そして、決定された候補位置に視点５１を設定した場合に、カメラ領域５０が障害物４２と重複しない場合には、この候補位置に視点５１の位置が変更される。位置が変更された結果、視点５１が地点ＸＣ３２に位置していたとすると、そこでの視点５１を中心５０ａとしてカメラ領域５０が設定されると共に、該視点５１が注視点ＸＡに向けられることで、仮想カメラＣａの位置の変更が完了する。なお、仮想カメラＣａの視点５１の上下位置が、図４に示す他の点ＸＣ１，ＸＣ２，ＸＣ４，ＸＣ５にある場合も同様である。
【００４９】
従って、プレイヤは、操作部２２を操作することによって、プレイヤキャラクタＣ１回りの仮想カメラＣａの位置（換言すれば、注視点ＸＡ回りの位置）を任意の位置に変更することができ、プレイヤキャラクタＣ１を任意の水平方向から撮影し、その画像をディスプレイ２にて表示させることができる。また、このような仮想カメラＣａの位置の変更は、プレイヤキャラクタＣ１の移動中にも行うことができる。この場合には、図３を参照して説明したプレイヤキャラクタＣ１の移動方向への仮想カメラＣａの位置の変更と共に、プレイヤキャラクタＣ１回りの位置の変更を行う。
【００５０】
一方、図５に示すように、円周ＣＸの一部が障害物（進入禁止領域）４２と重複しており、プレイヤの操作によって候補位置が点ＸＣ３３に決定された場合、この候補位置に視点５１の位置を変更すると、変更後の視点５１を中心５０ａとするカメラ領域５０は障害物４２と重複してしまう。従って、本ゲームではこの場合にも後述の「カメラ位置補正処理」を行う。
【００５１】
以上、図３〜図５を用いて説明したように、仮想カメラ制御手段３３は、プレイヤキャラクタＣ１の移動があった場合（図３参照）や、プレイヤによる仮想カメラＣａに対する移動操作があった場合（図４及び図５参照）に、仮想カメラＣａの位置（座標）を変更するために、視点５１の位置を変更する候補位置を決定すべく、「カメラ候補位置決定処理」を行う。そして、決定した候補位置に視点５１の位置を変更すると、カメラ領域５０が進入禁止領域４２と重複してしまう場合には、後述の「カメラ位置補正処理」を行う。
【００５２】
ここで、図２の説明に戻ると、禁止領域重複判定手段３４は、仮想カメラＣａのカメラ領域５０が上述した進入禁止領域４２と重複するか否かを判定するものである。本ゲームでは、このカメラ領域５０と進入禁止領域４２との重複の有無判定の結果に基づき、上記仮想カメラ制御手段３３が仮想カメラＣａに対して「カメラ位置補正処理」を実行する。
【００５３】
なお、本ゲームでは、プレイヤキャラクタＣ１の位置（地面４１への接地点の位置）を基準（原点）とする座標系（ローカル座標系）に基づいて、注視点ＸＡ、敵キャラクタ、候補位置、視点５１、カメラ領域５０、その中心５０ａ、及び進入禁止領域４２の境界（輪郭）の、各位置を取得している。但し、これに限られず、仮想ゲーム空間４０に固定された座標系（ワールド座標系）に基づいて、これらの位置を取得するようにしてもよい。
【００５４】
［フレーム毎の動作フロー］
ところで、上記でも触れたが、仮想カメラ制御手段３３は、仮想カメラＣａの位置を制御するに際し、「カメラ候補位置決定処理」及び「カメラ位置補正処理」を行う。これらの処理は、各フレームが生成される際に、他の処理と共に実行される。以下では、本ゲームにおいてフレーム毎に実行される一連の処理について概要を説明する。
【００５５】
図６は、フレーム毎に実行される処理の概要を示すフローチャートである。また、図７は、図６中のカメラ処理（ステップＳ３）の詳細を示すフローチャートである。図６に示すように、本ゲームでは、プレイヤキャラクタ処理（ステップＳ１）、敵キャラクタ処理（ステップＳ２）、カメラ処理（ステップＳ３）、及び描画処理（ステップＳ４）が、この順序でフレーム毎に実行される。
【００５６】
このうちプレイヤキャラクタ処理（ステップＳ１）では、プレイヤキャラクタＣ１に関してゲームの進行上で必要な各種の処理を行う。例えば、プレイヤにより、プレイヤキャラクタＣ１を動作させる操作入力が操作部２２に対して行われた場合に、該操作入力に応じて、プレイヤキャラクタＣ１の動作後の位置及び姿勢等を示すデータを取得する。例えば、プレイヤがプレイヤキャラクタＣ１を歩行させるように操作部２２を操作した場合には、歩行するプレイヤキャラクタＣ１が、次のフレームにてとるべき姿勢及び位置に関するデータを算出して取得する。このようなデータの取得は、主にキャラクタ制御手段３２（図２参照）によって行われる。また、プレイヤが操作部２２を操作していない場合であっても、例えば敵キャラクタからの攻撃を受けた反動でプレイヤキャラクタＣ１が移動する場合がある。従って、このようにしてプレイヤキャラクタＣ１が移動した場合も、移動後の位置及び姿勢等を示すデータを取得する。また、この他にも、プレイヤキャラクタＣ１が他のオブジェクトと衝突した場合に、該オブジェクトと重複することがないようにプレイヤキャラクタＣ１の位置を調整する処理や、ゲームの進行に伴って変化する体力やスタミナなど、プレイヤキャラクタＣ１のステータスを更新する処理などを行う。
【００５７】
敵キャラクタ処理（ステップＳ２）では、敵キャラクタに関してゲームの進行上で必要な各種の処理を行う。例えば、プレイヤキャラクタＣ１の動作や仮想ゲーム空間４０内の周辺の状況（例えば、近くに設置された爆弾の爆発など）に応じて動作する敵キャラクタについて、その動作後の位置及び姿勢等を示すデータを取得する。例えば、敵キャラクタがプレイヤキャラクタＣ１に対して火炎を吐く動作をする場合には、敵キャラクタの位置及び姿勢を示すデータに加えて、火炎の形状及び位置を示すデータを算出して取得する。このようなデータの取得も、主にキャラクタ制御手段３２によって行われる。なお、仮想カメラＣａにより撮影される範囲内に敵キャラクタが存在しない場合には、敵キャラクタの位置を示すデータのみを取得すればよい。また、この他にも、他のオブジェクトと衝突した場合の敵キャラクタの位置を調整する処理や、ゲームの進行に伴って変化する体力などの敵キャラクタのステータスを更新する処理などを行う。
【００５８】
カメラ処理（ステップＳ３）では、仮想カメラ制御手段３３により、仮想カメラＣａの位置を変更する処理を行う。即ち、図７に示すように、プレイヤによる仮想カメラＣａを移動させる操作部２２への操作、及び、プレイヤキャラクタＣ１の移動（位置情報及び向きなど）に基づき、図３〜図５で説明したようにして、カメラ候補位置決定処理を行い（ステップＳ１１）、決定した候補位置の位置（座標）を取得する。
【００５９】
次に、カメラ候補位置決定処理（ステップＳ１１）を終えると、決定した候補位置に視点５１を設定した場合に、該視点５１を中心５０ａとするカメラ領域５０が進入禁止領域４２と重複することになるか否かを判定する。（ステップＳ１２）。そして、進入禁止領域４２と重複すると判定した場合（ステップＳ１２：ＹＥＳ）は、後述の「カメラ位置補正処理」を行い（ステップＳ１３）、補正後の視点５１の位置を示すデータを取得する。なお、この「カメラ位置補正処理」は、仮想カメラＣａを進入禁止領域４２から出すと共に、仮想カメラＣａの視野を可及的に広く確保するための処理であり、詳しくは後述する。
【００６０】
一方、進入禁止領域４２と重複しないと判定した場合（ステップＳ１２：ＮＯ）、又はカメラ位置補正処理（ステップＳ１３）を終えた場合は、仮想カメラＣａの位置を決定する処理を行い（ステップＳ１４）、このカメラ処理を終了する。即ち、ステップＳ１２でＮＯの場合には、ステップＳ１１で取得した候補位置を視点５１の位置として決定する。また、ステップＳ１３を経た場合には、そこでのカメラ位置補正処理により取得した視点５１を中心とするカメラ領域５０を設定する。また、決定された視点５１の位置と注視点ＸＡに基づいて、視点５１の向きが決定される。
【００６１】
以上のように、カメラ処理では、毎フレーム更新されたゲーム進行（位置及び向きなど）に応じてカメラ候補位置決定処理（ステップＳ１１）と、必要に応じて更にカメラ位置補正処理（ステップＳ１３）とを行うことで視点５１を決定する。なお、既に説明した図３において、位置１００〜１０２にいるプレイヤキャラクタＣ１に対応して示されているカメラ領域５０の中心５０ａの位置は、上記ステップＳ１１の処理により決定された候補位置の例である。また、図４の点ＸＣ１〜ＸＣ５及び図５の点ＸＣ３１〜ＸＣ３３についても、上記ステップＳ１１の処理により決定された候補位置の例である。なお、毎フレーム更新する必要はなく、プレイヤキャラクタＣ１の移動、プレイヤによる仮想カメラＣａの操作がなければ、上記ステップＳ１１〜ステップＳ１３を実行せず、前フレームの仮想カメラＣａの位置を維持すればよい。
【００６２】
次に、図６のフローチャートの説明に戻り、上述したカメラ処理に続く描画処理（ステップＳ４）では、プレイヤキャラクタＣ１（仮想カメラＣａの撮影範囲に敵キャラクタが存在する場合には、該敵キャラクタも）が存在する仮想ゲーム空間４０を、仮想カメラＣａにより撮影したときの画像データを生成し、これをディスプレイ２に出力する。より詳しく説明すると、この処理では、ステップＳ１，Ｓ２にて取得した位置及び姿勢となっているプレイヤキャラクタＣ１及び敵キャラクタが、仮想ゲーム空間４０に位置する情景を、ステップＳ３により位置が変更された仮想カメラＣａによって撮影したときの画像を示す画像データを生成する。
【００６３】
［カメラ位置補正処理］
次に、図７のステップＳ１３に示した「カメラ位置補正処理」の詳細について説明する。なお、前述したようにこのカメラ位置補正処理は、ステップＳ１１で変更した候補位置に基づく仮想カメラＣａのカメラ領域５０が障害物４２と重複することとなった場合（図７のステップＳ１２：ＹＥＳ）に、該仮想カメラＣａを進入禁止領域４２から出すと共に、仮想カメラＣａの視野を可及的に広く確保するための処理である。ここで、仮想カメラＣａのカメラ領域５０が障害物（進入禁止領域）４２と重複する態様としては、図３〜図５に示したような様々のシチュエーションがあるが、何れの態様においても、同一のカメラ位置補正処理を行うことができる。
【００６４】
（実施の形態１）
図８は、実施の形態１に係るカメラ位置補正処理の態様を示す模式図である。ここで、図８中の（ａ）は、カメラ領域５０が障害物（進入禁止領域）４２と重複した状態を、（ｂ）は、（ａ）の状態から、カメラ領域５０を障害物４２の外に移動させた位置に設定した状態を、（ｃ）は、（ｂ）の状態から、視点５１をカメラ領域５０内で候補位置に対して後方へ移動させた位置に設定した状態を、それぞれ示している。また、図９は、実施の形態１に係るカメラ位置補正処理の流れを示すフローチャートである。なお、図８では、仮想カメラＣａの視点５１が初期位置である点ＸＣ３に位置する状態で、カメラ領域５０が障害物４２と重複することになった場合（図７のステップＳ１２：ＹＥＳ）について示しているが、視点５１が他の位置にある場合も同様である。
【００６５】
まず、図８（ａ）に示す状態は、上述した図３〜図５に示したシチュエーションなどにおいて、カメラ候補位置決定処理（図７のステップＳ１１）により候補位置が決定され、その候補位置に仮に視点５１を設定した場合に、該視点５１を中心５０ａとするカメラ領域５０が障害物４２と重複する（図７のステップＳ１２：ＹＥＳ）ことになる状態を示している。本実施の形態１では、この図８（ａ）に示す状態になる場合に、カメラ位置補正処理（図７のステップＳ１４）として、図８（ｂ），（ｃ）に示す処理を実行する。即ち、該カメラ位置補正処理では、はじめに、図８（ｂ）に示すように、図８（ａ）に示す位置から視軸５２に沿って障害物４２外へ移動させた所定の位置にカメラ領域５０を設定する（図１０のステップＳ２１）。より具体的には、図８（ａ）に示す候補位置と注視点ＸＡとを結ぶ視軸５２に沿って、注視点ＸＡに向かって障害物４２に対して外方から接する位置まで移動させたときの移動後の位置に、カメラ領域５０を設定する。なお、このようにして設定されたカメラ領域５０の中心５０ａと注視点ＸＡとの距離は、図８（ａ）に示す候補位置と注視点ＸＡとの距離Ｒよりも小さい距離Ｒ１となっている。
【００６６】
次に、図８（ｃ）に示すように、視点５１を、図８（ｂ）に示す設定後のカメラ領域５０の中心５０ａから上記視軸５２の延長線に沿って後方へ移動させた場合の所定位置に設定する（図９のステップＳ２２）。即ち、ステップＳ２１にて障害物４２外に設定したカメラ領域５０の位置は固定しておき、その中心５０ａから視軸５２に沿って後方へ向かい、カメラ領域５０の輪郭線上に至った点を、視点５１の位置として設定（補正）する。これにより、図８（ｃ）のように決定された視点５１と注視点ＸＡとの距離は、上記距離Ｒ１よりも大きい距離Ｒ２となる。そして、このステップＳ２２の処理を実行することで、本実施の形態１に係るカメラ位置補正処理を終了し（図９，図７のステップＳ１３参照）、この位置が仮想カメラＣａ（視点５１）の位置として決定される（図７のステップＳ１４）。そして、この決定された仮想カメラＣａ（視点５１）の位置において撮影したときの画像がゲーム装置１のディスプレイ２に出力（表示）される。
【００６７】
なお、上述のようにカメラ領域５０を図８（ｂ）の実線で示した位置に設定する処理では、図８（ａ）にて破線で示す位置から、図８（ｂ）にて実線で示す位置まで、実際にカメラ領域５０を移動させる必要はない。即ち、カメラ候補位置決定処理（図７のステップＳ１１）によって決定された候補位置に視点５１を「仮に」設定した場合に、図８（ａ）に示すようにカメラ領域５０が設定される場合には、図８（ａ）に示す破線の位置にカメラ領域５０を設定することなく、図８（ｂ）の実線で示す位置にカメラ領域５０を直接設定すればよい。同様に、上述のように視点５１を図８（ｃ）に示した位置に設定する処理では、図８（ａ）に示す候補位置から、図８（ｂ）の中心５０ａの位置を経て、図８（ｃ）に示す位置まで、実際に視点５１を移動させる必要はない。即ち、カメラ候補位置決定処理（図７のステップＳ１１）によって決定された候補位置に視点５１を「仮に」設定した場合に、図８（ａ）に示すようにカメラ領域５０が設定される場合には、上述した手順により取得される図８（ｃ）に示す位置に、視点５１を直接設定すればよい。
【００６８】
以上のカメラ位置補正処理により、仮想カメラＣａが障害物４２内に入り込んで、障害物４２内から撮影した画像がディスプレイ２に表示されてしまうのを回避することができる。また、仮想カメラＣａを障害物４２外へ出しつつも、そのカメラ領域５０内における後方位置に視点５１を設定しているため、プレイヤキャラクタＣ１によって仮想カメラＣａの視界が大きく遮られるのを抑制し、極力広い視野を有する画像を撮影することができる。
【００６９】
（実施の形態２）
図１０は、実施の形態２に係るカメラ位置補正処理の態様を示す模式図である。ここで、図１０（ａ），（ｂ）は図８（ａ），（ｂ）と同じであり、図１０（ｃ）は、図１０（ｂ）の状態からカメラ領域５０を下方へ移動させた位置に設定した状態を、図１０（ｄ）は、図１０（ｃ）の状態から視点５１をカメラ領域５０内で後方へ移動させた位置に設定した状態を、それぞれ示している。また、図１１は、実施の形態２に係るカメラ位置補正処理の流れを示すフローチャートである。なお、図１０でも図８と同様に、仮想カメラＣａの視点５１が初期位置である点ＸＣ３に位置する状態で、カメラ領域５０が障害物４２と重複することになった場合（図７のステップＳ１２：ＹＥＳ）について示しているが、視点５１が他の位置にある場合も同様である。
【００７０】
まず、図１０（ａ）に示す状態は、上述した図３〜図５に示したシチュエーションなどにおいて、カメラ候補位置決定処理（図７のステップＳ１１）により候補位置が決定され、その候補位置に仮に視点５１を設定した場合に、該視点５１を中心５０ａとするカメラ領域５０が障害物４２と重複する（図７のステップＳ１２：ＹＥＳ）ことになる状態を示している。本実施の形態２では、この図１０（ａ）に示す状態になる場合に、カメラ位置補正処理（図７のステップＳ１４）として、図１０（ｂ）〜（ｄ）に示す処理を実行する。即ち、該カメラ位置補正処理では、はじめに、図１０（ｂ）に示すように、図１０（ａ）に示す位置から視軸５２に沿って障害物４２外へ移動させた所定の位置にカメラ領域５０の位置を仮に設定する（図１１のステップＳ３１）。より具体的には、図１０（ａ）に示す候補位置と注視点ＸＡとを結ぶ視軸５２に沿って、注視点ＸＡに向かって障害物４２に対して外方から接する位置まで移動させたときの移動後の位置に、カメラ領域５０を仮に設定する。なお、このようにして仮設定されたカメラ領域５０の中心５０ａと注視点ＸＡとの距離は、図１０（ａ）に示す候補位置と注視点ＸＡとの距離Ｒよりも小さい距離Ｒ１となっている。
【００７１】
次に、ステップＳ３１で障害物４２外に仮設定したカメラ領域５０（及び視点５１）を、下方へ向かって所定距離だけ移動させた位置に、カメラ領域５０の位置を正式に設定する（図１２のステップＳ３２）。この時点で、正式に設定したカメラ領域５０の中心５０ａと注視点ＸＡとの距離は、上述した距離Ｒ，Ｒ１よりも小さい距離Ｒ３となる。そして最後に、図１１（ｄ）に示すように、視点５１を、図１０（ｃ）に示す正式に設定されたカメラ領域５０の中心５０ａから上記視軸５２の延長線に沿って後方へ移動させた場合の所定位置に設定する（図１１のステップＳ３３）。即ち、ステップＳ３２にて正式に設定されたカメラ領域５０はその位置は固定しておき、その中心５０ａから視軸５２に沿って後方へ向かい、カメラ領域５０の輪郭線上に至った点を、視点５１の位置として設定する。この結果、設定された視点５１と注視点ＸＡとの距離は、上記距離Ｒ３よりも大きい距離Ｒ４となる。そして、このステップＳ３３の処理を実行することで、本実施の形態２に係るカメラ位置補正処理を終了し（図１１，図７のステップＳ１３参照）、この位置が仮想カメラＣａ（視点５１）の位置として決定される（図７のステップＳ１４）。そして、この決定された仮想カメラＣａ（視点５１）の位置において撮影したときの画像がゲーム装置１のディスプレイ２に出力（表示）される。
【００７２】
ここで、カメラ領域５０を図１０（ｃ）に示す位置に正式に設定する上記ステップＳ３２の処理について更に詳しく説明する。図１２は、実施の形態２のカメラ位置補正処理において、カメラ領域５０を正式に設定する図１１のステップＳ３２の処理を説明するための模式図であり、図１３は、この処理の流れを示すフローチャートである。
【００７３】
図１２では、はじめに注視点ＸＡが点ＰＢで示す位置にある状態から、プレイヤキャラクタＣ１の移動によって点ＰＣへ移動した場合を例示している。そしてこの場合、注視点ＸＡが点ＰＢに位置するときには、仮想カメラＣａは、障害物４２にカメラ領域５０が外方から接することとなる点ＰＤに中心５０ａ及び視点５１が位置している状態となっているが、注視点ＸＡが点ＰＣへ移動した結果、カメラ候補位置決定処理（図７のステップＳ１１）により、障害物４２とカメラ領域５０とが重複することとなる点ＰＥに視点５１の候補位置が設定されたものとする。なお、点ＰＢを通る水平面と点ＰＤから下ろした垂線との交点を点ＰＡとする。また、注視点ＸＡが点ＰＢにある場合の仮想カメラＣａの視点５１の位置である点ＰＤは、カメラ位置補正処理が施されていないものとし、この点ＰＢ及び点ＰＤ間の距離は上述した距離Ｒとなっている。
【００７４】
このように、プレイヤキャラクタＣ１の移動によって設定された候補位置（点ＰＥ）に視点を設定すると、カメラ領域５０が障害物４２と重複することとなる場合、上述したように、まず、点ＰＥに位置する候補位置と点ＰＣに位置する注視点ＸＡとを結ぶ視軸５２（点ＰＣ及び点ＰＥを結ぶ直線）に沿って、カメラ領域５０を障害物４２外へ移動させて障害物４２に外方から接するように仮設定する。すなわち、点ＰＦに中心５０ａが位置するようにカメラ領域５０を仮設定する（図１１のステップＳ３１参照）。なお、このときの点ＰＣ及び点ＰＦ間の距離は、上述した距離Ｒ１（＜Ｒ）となっている。
【００７５】
これ以後、図１１のステップＳ３２の詳細である図１３のフローチャートに示す処理が行われる。即ち、仮想カメラ制御手段３３は、点ＰＡ及び点ＰＢ間の距離ＤＡＢに対する点ＰＡ及び点ＰＣ間の距離ＤＡＣの比率Ｋ１を算出する（ステップＳ４１）。そして、この比率Ｋ１が所定の最大値ＫＭＡＸよりも大きいか否かを判定する（ステップＳ４２）。この最大値ＫＭＡＸは１より小さい値を適宜設定することができ、例えば、０．７とすることができる。ステップＳ４２にて、比率Ｋ１が最大値ＫＭＡＸよりも大きいと判定した場合（ステップＳ４２：ＹＥＳ）は、ステップＳ４１で算出した値に代えて最大値ＫＭＡＸを比率Ｋ１の値とする（ステップＳ４３）。
【００７６】
ステップＳ４２にて比率Ｋ１が最大値ＫＭＡＸ以下であると判定した場合（ステップＳ４２：ＮＯ）、又はステップＳ４３を終えた場合は、次に示す式
比率Ｋ２＝比率Ｋ１＊（１−ｅ）
によって比率Ｋ２（＜１）を算出する（ステップＳ４４）。ここで、式中のｅは１より小さい所定の値であり、点ＰＦに基準点５０ａが位置するカメラ領域５０を下方へどれだけ移動させるかを決定する１つの要素である。このｅの値は適宜設定することができ、例えば、０．０２とすることができる。
【００７７】
次に、点ＰＡ及び点ＰＦ間の距離ＤＡＦに対して上記比率Ｋ２を乗じることにより、距離ＤＡＧを算出する（ステップＳ４５）。なお、比率Ｋ２が１より小さい値であるから、この距離ＤＡＧは距離ＤＡＦより小さいものとなる。そして、中心５０ａが点ＰＦに仮設定されているカメラ領域５０の位置を、点ＰＡから距離ＤＡＧだけ上方の点ＰＧに中心５０ａが位置するように下方へ移動させた位置に正式に設定する（ステップＳ４６）。これにより、図１３に示す処理が終了すると共に、図１１のステップＳ３２に示した処理が終了する。なお、本実施の形態２に係るカメラ位置補正処理では、この後、図１１のステップＳ３３の処理を実行する。即ち、正式に設定されたカメラ領域５０の中心５０ａから、ここに視点５１がある場合の視軸５２（点ＰＣ及び点ＰＧを結ぶ直線）に沿って後方へ向かい、カメラ領域５０の輪郭線上に至った点ＰＨを、視点５１の位置として設定する。
【００７８】
なお、図８にて説明したのと同様に、カメラ領域５０を図１０（ｃ）の実線で示した位置に設定する処理では、図１０（ａ）にて破線で示す位置から、図１０（ｃ）にて実線で示す位置まで、実際にカメラ領域５０を移動させる必要はない。即ち、図１２において、カメラ領域５０は、点ＰＤに中心５０ａが位置する状態から、点ＰＧに中心５０ａが位置する状態へ、直接的に位置を変更して設定すればよい。同様に、視点５１を図１０（ｄ）に示した位置に設定する処理では、図１０（ａ）に示す候補位置から、図１０（ｂ），（ｃ）に示す中心５０ａの位置を経て、図１０（ｄ）に示す位置まで、実際に視点５１を移動させる必要はない。即ち、図１２において、点ＰＤから点ＰＨへ、直接的に視点５１の位置を変更して設定すればよい。
【００７９】
以上に説明した実施の形態２に係るカメラ位置補正処理によれば、プレイヤキャラクタＣ１の移動に伴って仮想カメラＣａが障害物４２内に進入することになる場合であっても、仮想カメラＣａ（カメラ領域５０及び視点５１）を障害物４２外へ移動させるため、障害物４２内から撮影した画像がディスプレイ２に表示されてしまうのを回避することができる。また、仮想カメラＣａを障害物４２外へ出しつつも、そのカメラ領域５０内における後方位置に視点５１を設定しているため、プレイヤキャラクタＣ１によって仮想カメラＣａの視界が大きく遮られるのを抑制し、極力広い視野を有する画像を撮影することができる。更に、実施の形態１の場合に比べて視点５１の位置をより低く設定するため、仮想ゲーム空間４０をより遠くまで見渡した画像を撮影することができ、プレイヤの視野を広げることができる。
【００８０】
なお、上記点ＰＤから点ＰＨへの視点５１の位置の変更設定は、１フレームで完結させなくてもよく、点ＰＤと点ＰＨとの間の一又は複数の点を経由するように、複数のフレームを用いて行うようにしてもよい。この場合、上記点ＰＤから、点ＰＦ，点ＰＧを経て、点ＰＨに至るように、視点５１の位置をフレーム毎に順次設定していくようにしてもよい。更に、視点５１を上記点ＰＤから点ＰＦに変更設定し、その後、点ＰＦから点ＰＨへ至る間を、一又は複数の点を経由するように複数のフレームを用いて変更設定するようにしてもよい。
【００８１】
（実施の形態３）
図１４は、実施の形態３に係るカメラ位置補正処理を説明するための模式図である。なお、カメラ領域５０を障害物４２と重複しないように該障害物４２の外に設定するまでは、実施の形態１にて説明した処理（図８（ａ），（ｂ），図９のステップＳ２１参照）と同様であるのでその説明は省略し、ここでは、図８（ｂ）に示す状態の後、視点５１を設定する態様について説明する。
【００８２】
図１４に示す例では、カメラ領域５０には、その中心５０ａに対し、該中心５０ａに視点５１を位置させた場合の該視点５１の向き（基準点５０ａから注視点ＸＡへ向かう方向）とは反対側に、半円形状の後側領域６０が設定されている。そして、本実施の形態３に係るカメラ位置補正処理では、視点５１を、この後側領域６０内の任意の位置に設定することとしている。
【００８３】
このように視点５１の位置を設定することにより、障害物４２内に入り込んだ仮想カメラＣａにより撮影された画像がディスプレイ２に表示されてしまうのを回避しつつ、プレイヤキャラクタＣ１によって仮想カメラＣａの視界が大きく遮られるのを抑制し、広い視野を有する画像を撮影することができる。なお、仮想カメラＣａの視界を極力広く確保するためには、後側領域６０の円弧状の輪郭線部分において、視軸５２の延長線が交差する点、即ち、実施の形態１の図８（ｃ）を用いて説明したのと同様の位置に、視点５１を設定するのが好ましい。また、仮想ゲーム空間４０をより遠くまで見渡した画像を撮影するためには、後側領域６０を視軸５２の延長線により上下分割した場合の下側の領域に、視点５１を設定することが好ましい。
【００８４】
（実施の形態４）
図１５は、実施の形態４に係るカメラ位置補正処理を説明するための模式図である。なお、本実施の形態４においても、カメラ領域５０を障害物４２と重複しないように該障害物４２の外に設定するまでは、実施の形態１にて説明した処理（図８（ａ），（ｂ），図９のステップＳ２１参照）と同様であるのでその説明は省略し、ここでは、図８（ｂ）に示す状態の後、視点５１を設定する態様について説明する。
【００８５】
図１５に示す例では、カメラ領域５０の中心５０ａと注視点ＸＡとを結ぶ直線が、カメラ領域５０の輪郭線を成す円周６１と交わる点のうち、注視点ＸＡから遠い方の点が交点６２として設定されている。そして、本実施の形態４に係るカメラ位置補正処理では、上記円周６１上であって、中心５０ａ及び交点６２を結ぶ線分６３に対し、中心５０ａの回りに＋９０°〜−９０°（反時計回り方向を正とする）の範囲内の角度となる任意の位置に、視点５１を設定することとしている。
【００８６】
このように視点５１の位置を設定することにより、障害物４２内に入り込んだ仮想カメラＣａにより撮影された画像がディスプレイ２に表示されてしまうのを回避しつつ、プレイヤキャラクタＣ１によって仮想カメラＣａの視界が大きく遮られるのを抑制し、広い視野を有する画像を撮影することができる。なお、仮想カメラＣａの視界を極力広く確保するためには、交点６２、即ち、実施の形態１の図８（ｃ）を用いて説明したのと同様の位置に、視点５１を設定するのが好ましい。また、仮想ゲーム空間４０をより遠くまで見渡した画像を撮影するためには、線分６３に対する角度が０°〜９０°の範囲内になる位置のうち、より角度が大きくなる位置に、視点５１を設定することが好ましい。
【００８７】
（その他の実施の形態）
ところで、以上の説明では、注視点ＸＡがプレイヤキャラクタＣ１の上方の所定位置に固定的に設けられていることとしているが、これに限られない。例えば、カメラ領域５０が障害物４２と重複することとなった場合には、プレイヤキャラクタＣ１の真上の位置から、障害物４２に対して離隔する方向へ注視点ＸＡの位置を移動させてもよい。この場合、カメラ領域５０の中心５０ａから障害物４２の境界までの距離に応じて、注視点ＸＡを移動させる距離を異ならせることができる。また、このように注視点ＸＡの位置をプレイヤキャラクタＣ１の真上の位置から移動させる場合、移動後の注視点ＸＡの位置を採用して、上述した実施の形態１〜４に係るカメラ位置補正処理を行えばよい。
【００８８】
また、注視点ＸＡの位置はプレイヤキャラクタＣ１の上方に限られず、プレイヤキャラクタＣ１を基準とする他の所定位置、例えば、プレイヤキャラクタＣ１の足元の位置（即ち、プレイヤキャラクタＣ１の原点座標である点ＸＢ）に設定されていてもよい。更に、注視点ＸＡはプレイヤキャラクタＣ１を基準として位置決めされず、視点５１から所定距離の位置に設定され、視点５１を中心にしてプレイヤの操作によって自由に視点５１の向きを変更できるような仮想カメラＣａの制御においても、本発明を適用することができる。また、プレイヤの操作によっては、仮想カメラＣａの位置や向きを変更することができないようなゲームにおいても、本発明を適用することができる。
【産業上の利用可能性】
【００８９】
本発明は、仮想カメラが障害物内に入り込んでしまうのを回避しつつ、仮想カメラによって極力広い視野を有する画像を撮影することができるゲームプログラム、及びゲーム装置を提供することができる。
【符号の説明】
【００９０】
１      ゲーム装置
５ａ    ゲームプログラム
３０    制御部
３１    ゲーム空間生成手段
３２    キャラクタ制御手段
３３    仮想カメラ制御手段
３４    禁止領域重複判定手段
５０    カメラ領域
５０ａ  中心
５１    視点
５２    視軸
Ｃ１    プレイヤキャラクタ
Ｃａ    仮想カメラ
ＸＡ    注視点
【図１】
0005539133.tif 000002
【図２】
0005539133.tif 000003
【図３】
0005539133.tif 000004
【図４】
0005539133.tif 000005
【図５】
0005539133.tif 000006
【図６】
0005539133.tif 000007
【図７】
0005539133.tif 000008
【図８】
0005539133.tif 000009
【図９】
0005539133.tif 000010
【図１０】
0005539133.tif 000011
【図１１】
0005539133.tif 000012
【図１２】
0005539133.tif 000013
【図１３】
0005539133.tif 000014
【図１４】
0005539133.tif 000015
【図１５】
0005539133.tif 000016