JP5539133B2 - ゲームプログラム、及びゲーム装置 - Google Patents

ゲームプログラム、及びゲーム装置 Download PDF

Info

Publication number
JP5539133B2
JP5539133B2 JP2010207351A JP2010207351A JP5539133B2 JP 5539133 B2 JP5539133 B2 JP 5539133B2 JP 2010207351 A JP2010207351 A JP 2010207351A JP 2010207351 A JP2010207351 A JP 2010207351A JP 5539133 B2 JP5539133 B2 JP 5539133B2
Authority
JP
Japan
Prior art keywords
camera
area
viewpoint
game
virtual camera
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010207351A
Other languages
English (en)
Other versions
JP2012063958A (ja
Inventor
勝博 江口
幸雄 西村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Capcom Co Ltd
Original Assignee
Capcom Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Capcom Co Ltd filed Critical Capcom Co Ltd
Priority to JP2010207351A priority Critical patent/JP5539133B2/ja
Publication of JP2012063958A publication Critical patent/JP2012063958A/ja
Application granted granted Critical
Publication of JP5539133B2 publication Critical patent/JP5539133B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Description

本発明は、仮想ゲーム空間内に配置されて該仮想ゲーム空間を撮影すると共に、プレイヤキャラクタ等に伴って移動する仮想カメラを制御するゲームプログラム、及びゲーム装置に関する。
従来、三次元の仮想ゲーム空間内のプレイヤキャラクタを、プレイヤの操作に応じて動作させるゲームプログラムがある。この種のゲームプログラムでは、プレイヤキャラクタを含む仮想ゲーム空間内の様子を、該仮想ゲーム空間内に設定した仮想カメラにより、プレイヤキャラクタとは別の視点で撮影し、その画像を、ゲーム装置の表示部に表示させるようにしたものがある。また、仮想ゲーム空間は、平坦な地形だけで構成されているのではなく、切り立った崖や巨大な岩石、建物の壁などの障害物(仮想カメラの進入禁止領域)があり、仮想カメラを、このような障害物内に入ってしまうことがないように制御する方法が提案されている(特許文献1,2参照)。
このうち特許文献1には、仮想カメラと障害物との衝突判定を行い、衝突したと判定した場合には、障害物の前方へ出るまで被写体側へ仮想カメラを移動させる方法が開示されている。また、特許文献2には、プレイヤキャラクタ等の被写体と仮想カメラとを含む所定の領域に障害物が存在するか否かを判定し、存在する場合には仮想カメラを被写体に近づける方法が開示されている。更に、特許文献2の仮想カメラには、視点を中心とする球形状のカメラ周辺領域が、障害物との衝突判定を行う対象領域として設定されており、障害物の存在により仮想カメラを被写体に近づけるほど、このカメラ周辺領域の径が小さくなるように制御されている。
特開平11−137842号公報 特許第4489800号公報
しかしながら、特許文献1,2のように、障害物の存在により仮想カメラを被写体側へ移動させると、移動前に仮想カメラの前方に位置していて該仮想カメラにより撮影された画像に含まれていたオブジェクトが、被写体側へ移動した後の仮想カメラによっては撮影されなくなる場合がある。また、仮想カメラに撮影されてゲーム装置の表示部に表示される画像に占めるプレイヤキャラクタの画像面積の割合が、移動前に比べて大きくなってしまう。そのため、仮想ゲーム空間の奥行き感のある画像を撮影することができず、プレイヤに広い視野を有するゲーム画像を提供できない可能性がある。
そこで本発明は、仮想カメラが障害物内に入り込んでしまうのを回避しつつ、仮想カメラによって極力広い視野を有する画像を撮影することができるゲームプログラム、及びゲーム装置を提供することを目的とする。
本発明に係るゲームプログラムは、コンピュータを、仮想のゲーム空間を生成するゲーム空間生成手段、前記ゲーム空間を撮影すべく、少なくとも該ゲーム空間内の仮想カメラの視点の位置及び向きを制御し、ゲームの進行に応じて該仮想カメラの視点を設定するための候補位置を算出する仮想カメラ制御手段、及び前記ゲーム空間内に設定された前記仮想カメラの進入禁止領域に、前記候補位置を領域内に含むように設定されたカメラ領域の少なくとも一部が重複したか否かを判定する禁止領域重複判定手段、として機能させ、前記仮想カメラ制御手段は、前記カメラ領域が前記進入禁止領域と重複していない場合には、前記候補位置を前記視点の位置として決定する一方、前記カメラ領域の少なくとも一部が前記進入禁止領域と重複している場合には、前記候補位置を含む前記カメラ領域を前記進入禁止領域外に設定すると共に、該カメラ領域内において前記候補位置に対し前記視点の向きとは反対側の領域の所定位置を、前記視点の位置として決定するよう構成されている。
また、前記仮想カメラ制御手段は、前記ゲーム空間内に設定された注視点を前記仮想カメラの視点の視軸が通るように、該視点の向きを制御するよう構成されていてもよい。
また、前記注視点は、前記ゲーム空間内で動作するプレイヤキャラクタを基準とする所定位置に配置され、該プレイヤキャラクタに伴って移動するよう設定されていてもよい。
また、前記仮想カメラ制御手段は、前記カメラ領域の少なくとも一部が前記進入禁止領域と重複していると判定された場合は、前記候補位置を含む前記カメラ領域を、前記候補位置及び前記注視点を結ぶ直線に沿って前記進入禁止領域外へ、前記カメラ領域が該進入禁止領域に隣接するまで移動させた後の位置に設定するよう構成されていてもよい。
また、前記仮想カメラ制御手段は、前記進入禁止領域外へ移動した後の前記カメラ領域の境界と、該カメラ領域における前記候補位置及び前記注視点を結ぶ直線との交点のうち、該注視点から遠い方の交点を、前記視点の位置として決定するよう構成されていてもよい。
また、前記仮想カメラ制御手段は、前記候補位置を含む前記カメラ領域を、前記直線に沿って前記進入禁止領域外へ移動させた位置から更に所定距離だけ下方へ移動させた後の位置に設定するよう構成されていてもよい。
また、カメラ領域は、前記候補位置を中心とする略球形状を成していてもよい。
本発明に係るゲーム装置は、上述した何れかに記載のゲームプログラムを記録したプログラム記憶部、及び、該プログラム記憶部に記憶されたゲームプログラムを実行するコンピュータ、を備えるゲーム装置である。
本発明によれば、仮想カメラが障害物内に入り込んでしまうのを回避しつつ、仮想カメラによって極力広い視野を有する画像を撮影することができるゲームプログラム、及びゲーム装置を提供することができる。
本発明の実施の形態に係るゲーム装置の内部構成を示すブロック図である。 ゲーム装置が備える制御部の機能的な構成を示すブロック図である。 プレイヤキャラクタの移動に伴って仮想カメラの位置が変更される様子を側面視で示す模式図である。 プレイヤキャラクタに対して仮想カメラの上下方向位置が変更される様子を側面視で示す模式図である。 プレイヤキャラクタ回りに仮想カメラの位置が変更される様子を平面視で示す模式図である。 フレーム毎に実行される処理の概要を示すフローチャートである。 図6に示すカメラ処理の詳細を示すフローチャートである。 実施の形態1に係るカメラ位置補正処理の態様を示す模式図である。 実施の形態1に係るカメラ位置補正処理の流れを示すフローチャートである。 実施の形態2に係るカメラ位置補正処理の態様を示す模式図である。 実施の形態2に係るカメラ位置補正処理の流れを示すフローチャートである。 図11のステップS32の処理を説明するための模式図である。 図12に示すカメラ領域の移動処理の流れを示すフローチャートである。 実施の形態3に係るカメラ位置補正処理を説明するための模式図である。 実施の形態4に係るカメラ位置補正処理を説明するための模式図である。
以下、本発明の実施の形態に係るゲームプログラム、記憶媒体、及びゲーム装置について、図面を参照しつつ説明する。なお本実施の形態に係るゲームプログラムにより実現されるゲームは、いわゆるハンティングアクションゲームであって、プレイヤによる所定操作により、プレイヤキャラクタを仮想ゲーム空間内で行動させ、モンスター等の敵キャラクタを討伐するミッションを遂行するものを例示する。
[ハードウェアの構成]
図1は、本発明の実施の形態に係るゲーム装置1の内部構成を示すブロック図である。図1に示すようにゲーム装置1は制御部30を備えており、該制御部30にはCPU11、描画データ生成プロセッサ12、RAM(Random Access Memory)13、ROM(Read Only Memory)14、描画処理プロセッサ15、及び音声処理プロセッサ18が含まれている。更にゲーム装置1は、この他にもVRAM(Video-RAM)16、アンプ19、スピーカ20、イヤホン端子21、操作部22、メディアインタフェース23、無線LANモジュール24、及びバス25を備えている。そして、これらのうちCPU11、描画データ生成プロセッサ12、RAM13、ROM14、描画処理プロセッサ15、音声処理プロセッサ18、操作部22、メディアインタフェース23、及び無線LANモジュール24が、バス25によって相互にデータ伝送可能に接続されている。
操作部22は、方向キー及びその他のボタン群(図示せず)を含んでおり、プレイヤの操作を受け付けて、その操作内容に応じた操作信号をCPU11に入力する。また、方向キー及びボタン群が有する各種のボタンは、プレイヤキャラクタの特定の動作を指示するための操作子である。また、操作部22には、これら操作子以外にゲーム機1の電源の入/切を行うための電源スイッチ等が含まれる。
メディアインタフェース23は、図示しないメディア装着部にセットされたゲームメディア5にアクセスしてゲームプログラム5a及びゲームデータ5bを読み出す。このうちゲームプログラム5aは、上述したアクションゲームをゲーム装置1に実行させるものである。また、ゲームデータ5bには、上記ゲームを実行する上で必要なデータとして、キャラクタや背景の画像データ、ステータスなどの情報表示用の画像データ、効果音やBGMなどの音声データ、文字や記号によるメッセージデータ等が含まれている。なお、記憶媒体であるゲームメディア5は、半導体メモリのほか、光ディスクの一種であるUMD(Universal Media Disc)(登録商標)を採用することができる。
RAM13には、ゲームの進行に応じてゲームメディア5から読み込まれたゲームプログラム5a及びゲームデータ5bを格納するロードエリア、並びに、CPU11がゲームプログラム5aを処理する際に使用するためのワークエリアが設定されている。ROM14には、ディスクローディング機能などのゲーム装置1の基本的機能や、ゲームメディア5に記憶されているゲームプログラム5a及びゲームデータ5bの読み出し処理を制御する基本プログラムが記憶されている。
CPU11は、ゲームメディア5に記録されているゲームプログラム5a及びゲームデータ5bの全部または一部を、メディアインタフェース23を通じてRAM13に読み込み、プレイヤによる操作部22の操作に応じてこれを実行し、ゲーム進行を制御する。より具体的には、プレイヤに操作されることによって操作部22から操作信号が入力されると、CPU11は、ゲームプログラム5aに従ってその操作信号に対応する所定のゲーム進行処理を行い、その処理結果を、ゲーム進行を示す画像(以下、「ゲーム画像」とも称する)としてディスプレイ2に表示すると共に、ゲーム進行を示す音声信号(以下、「ゲーム音声」とも称する)をスピーカ20やイヤホン端子21に出力する。
上記ゲーム画像の描画は、CPU11の指示により、描画処理プロセッサ15が行う。即ち、CPU11は、操作部22から入力される操作信号に基づき、ディスプレイ2に表示すべきゲーム画像の内容を決定し、その内容に対して必要な描画データを描画データ生成プロセッサ12に生成させる。そして、その描画データを描画処理プロセッサ15に転送して描画処理を行わせる。描画処理プロセッサ15は、描画データに基づいて1/60秒毎にゲーム画像を生成し、生成したゲーム画像をVRAM16に書き込む。ディスプレイ2は、半透過型カラー液晶ディスプレイとバックライトLED(Light Emitting Diode)とを有し、VRAM16に書き込まれたゲーム画像を表示する。
また、CPU11は、ゲームの進行に応じて、スピーカ20から出力すべき効果音やBGM等の音声を決定し、その音声を発音するための音声データをRAM13から読み出して音声処理プロセッサ18に入力する。即ち、CPU11は、ゲームの進行に伴って発音イベントが発生すると、その発音イベントに応じた音声データ(ゲームメディア5からロードされた音声データ)をRAM13から読み出して音声処理プロセッサ18に入力する。音声処理プロセッサ18は、DSP(Digital Signal Processor)で構成されており、CPU11によって入力された音声データに対して所定の効果(例えば、リバーブ、コーラスなど)を付与したのちアナログ信号に変換して、アンプ19に出力する。アンプ19は、音声処理プロセッサ18から入力された音声信号を増幅したのち、スピーカ20及びイヤホン端子21に出力する。
無線LANモジュール24は、通信規格IEEE802.11b(使用周波数帯2.4GHz、通信速度11Mbps)に準拠した無線LANによって他のゲーム装置1とデータ通信を行い、ネットワークを構成するための通信モジュールである。
[制御部の機能的構成]
図2は、ゲーム装置1が備える制御部30の機能的な構成を示すブロック図である。制御部30は、ゲームメディア5から読み込んだゲームプログラム5a及びゲームデータ5bを実行することにより、ゲーム空間生成手段31,キャラクタ制御手段32,仮想カメラ制御手段33,禁止領域重複判定手段34などの機能を発揮する。
ゲーム空間生成手段31は、プレイヤキャラクタC1が行動する仮想ゲーム空間40(図3参照)を生成するものである。本実施の形態に係る仮想ゲーム空間40は、所定の三次元的な広がりを有する仮想的なゲーム空間として設定されており、プレイヤキャラクタC1が移動可能になっている。仮想ゲーム空間40としては、例えば地面41上の空間があるが、これに限られず、水中や空中を含んでいてもよい。
キャラクタ制御手段32は、仮想ゲーム空間40におけるプレイヤキャラクタC1及び敵キャラクタを含む様々のキャラクタの動作を制御する。なお、このプレイヤキャラクタC1とは、プレイヤが操作部22を操作することによって、仮想ゲーム空間40内での動作を直接的に制御することができるキャラクタであり、本ゲームではこのプレイヤキャラクタC1がハンターとなって敵キャラクタを討伐する。但し、プレイヤが操作する対象はプレイヤキャラクタC1などの人型のオブジェクトに限られず、例えば車両や航空機などのオブジェクトであってもよい。また、敵キャラクタとは、プレイヤによる操作部22の操作によっては直接的に動作を制御することができず、状況に応じてCPU11がその動作を制御するノンプレイヤキャラクタである。
仮想カメラ制御手段33は、仮想ゲーム空間40内に配置された仮想カメラCa(図3参照)の位置及び向きを制御する。該仮想カメラCaは、プレイヤキャラクタC1及び敵キャラクタを含む仮想ゲーム空間40の様子を撮影するものであり、撮影された画像(仮想ゲーム空間40を透視変換して二次元化した画像)は、ゲーム装置1のディスプレイ2に出力(表示)される。仮想カメラ制御手段33は、仮想カメラCa(視点)の位置および向きを、プレイヤキャラクタC1の少なくとも一部が撮影範囲に含まれるように、かつ、
プレイヤキャラクタC1を追従するように制御する。また、仮想カメラ制御手段33は、仮想カメラCaの位置および向きを、プレイヤによる操作部22を介してのカメラ操作(カメラの移動指示)に基づいても制御する(図4,5参照)。具体的には、仮想カメラ制御手段33は、仮想カメラCaの位置の変更先(更新先)の候補である候補位置を決定する「カメラ候補位置決定処理」を行い、更にこれに加えて、所定の場合には「カメラ位置補正処理」を行った上で、仮想カメラCaの位置を決定する。
ここで、仮想カメラの構成と、仮想カメラ制御手段33が行う「カメラ候補位置決定処理」とについて、図3〜図5を参照して説明する。なお、「カメラ位置補正処理」については、図8〜図15を用いて後に別途詳述する。
図3〜図5は、仮想カメラCaに対するカメラ候補位置決定処理を説明すべく、仮想ゲーム空間40内に位置するプレイヤキャラクタC1及び仮想カメラCaを示す模式図である。このうち図3は、プレイヤキャラクタC1の移動に伴って仮想カメラCaの位置が変更(更新)される様子を側面視で示している。また、図4は、プレイヤが仮想カメラCaを移動させる操作をした場合に、停止しているプレイヤキャラクタC1に対して仮想カメラCaの上下方向位置が変更される様子を側面視で示している。図5は、プレイヤが仮想カメラCaを移動させる操作をした場合に、停止しているプレイヤキャラクタC1の回りに仮想カメラCaの位置が変更される様子を平面視で示している。
なお、図3〜図5は何れも、平坦な地面41上に切り立った崖が障害物(進入禁止領域)42として存在する仮想ゲーム空間40において、地面41上にプレイヤキャラクタC1が位置している様子を例示している。この地面41は、プレイヤキャラクタC1及び仮想カメラCaの何れもが移動可能な領域として設定されている(以下、「地面41」を適宜「移動可能領域41」とも称する)。また、障害物42は、プレイヤキャラクタC1及び仮想カメラCaの何れの進入も禁止される進入禁止領域として設定されている(以下、「障害物42」を適宜「進入禁止領域42」とも称する)。例えば切り立った崖の内方から仮想ゲーム空間40を撮影したような画像は、プレイヤに違和感を覚えさせる可能性があるため、仮想カメラCaがこのような画像を撮影することがないようにするのが好ましい。そのため、図3に示すように、仮想ゲーム空間40内には仮想カメラCaを進入させて撮影させるのを禁止する領域として、進入禁止領域42が設定されている。
移動可能領域41としては平坦な地面に限られず、所定の傾斜面を成す地面なども含まれる。また、進入禁止領域42としては切り立った崖に限られず、巨大な岩石や建物の壁などであってもよく、又は敵キャラクタ等の他のキャラクタであってもよい。また、移動可能領域及41及び進入禁止領域42は何れも、プレイヤキャラクタC1及び仮想カメラCaの夫々に対して別個に設定してもよい。更に、本実施の形態では、障害物42をプレイヤによって視認可能な所定の外観形状を有するオブジェクトとして描画し、進入禁止領域を当該障害物42の外観形状と同一領域に設定しているが、これに限られない。即ち、障害物42の外観形状と一致しない領域として、例えば障害物42より若干大きく又は小さく、進入禁止領域を設定してもよい。
次に、図3を参照して、まずは仮想カメラCaの構成(設定内容)について説明する。本ゲームにおいて仮想カメラCaは、視点51と、該視点51を含むように設定されたカメラ領域50とを有している。このうち視点51は、文字通り仮想カメラCaの視点であって、仮想カメラCaはこの視点51から仮想ゲーム空間40を撮影するように設定されている。カメラ領域50は、仮想カメラCaが障害物(進入禁止領域)42と重複するか否かの判定(いわゆる、「衝突判定」)を行う際に用いられる領域であり、本実施の形態では所定の半径rを有する球形状の領域として設定されている。
また、図3において位置100にいるプレイヤキャラクタC1に対応する仮想カメラCaのように、カメラ領域50が進入禁止領域41から離れて位置している状態(以下、「離隔状態」ともいう)では、球形状のカメラ領域50は、視点51が中心50aとなるように設定されている。但し、離隔状態における視点51の位置を、カメラ領域50内において中心50a以外の位置に設定してもよい。また、カメラ領域50は球形状に限られず、多角形状など他の形状であってもよく、この場合にはその領域内の適宜位置に視点51を設定することができる。
仮想カメラCaの視点51は、プレイヤキャラクタC1を基準とする所定位置に設けられた注視点Xを基準とし、所定の位置に配置されている。即ち、本実施の形態では、地面41に対するプレイヤキャラクタC1の原点座標となる接地点Xから、プレイヤキャラクタC1の設定身長より高い所定の高さHの位置に注視点Xが設けられている。そして、注視点Xを通る水平線に対して所定の角度(仰角)A3を成し、且つ注視点Xから距離Rだけ離れた点XC3が、視点51の高さの初期位置として設定されている。また、水平方向に関しては、プレイヤキャラクタC1の背後(即ち、プレイヤキャラクタC1の視線の方向とは反対の方向)に視点51の初期位置が設定されている。すなわち、視点51は、プレイヤキャラクタC1の背後の斜め上方の所定距離離れた位置から、プレイヤキャラクタC1を基準にして設けられた注視点Xを向くように、初期位置が設定されている。図3では、プレイヤキャラクタC1の視線の方向(向き)を、プレイヤキャラクタC1を示すイラストに付した矢印の向きによって示している(図4,図5でも同様)。
なお、上述したようにカメラ領域50が進入禁止領域42から離れた離隔状態のときは、視点51はカメラ領域50の中心50aに位置しているが、カメラ領域50の少なくとも一部が進入禁止領域42と重複することで後述の「カメラ位置補正処理」が行われた場合には、上記にかかわらず、視点51はカメラ領域50内にて中心50aとは異なる位置に設定されることになる(詳しくは後述する)。そして、視点51が何れに位置する場合であっても、仮想カメラ制御手段33は、視点51を通って該視点51の向きに沿った軸線、即ち視軸52が、常に注視点Xを通るように制御している。
次に、図3を参照して、仮想カメラ制御手段33が行う「カメラ候補位置決定処理」について、プレイヤキャラクタC1と共に移動するように仮想カメラCaの位置を変更する場合を例にして説明する。なお、この「カメラ候補位置決定処理」は、仮想カメラCaを移動させる際に、その視点51の位置の変更先の候補となる位置を決定する処理である。図3に示すように、プレイヤキャラクタC1が、位置100から、カメラ領域50が障害物42に重複しない位置101へ移動した場合、注視点Xは、プレイヤキャラクタC1が移動するのに伴って、接地点Xからの高さHを維持しつつ水平に移動する。そして、注視点Xの移動に伴って、上述した距離R,角度A3,及びプレイヤキャラクタC1の向きに対する水平位置を維持することで、注視点Xに対する相対位置を保って追従するように視点51を移動させた点を候補位置として決定し、その位置(座標)を取得することにより「カメラ候補位置決定処理」を終了する。
なお、上記のように、位置100から、カメラ領域50が障害物42と重複しない位置101へ、プレイヤキャラクタC1が移動する場合には、この候補位置に視点51の位置を変更し、該視点51を中心50aとするカメラ領域50を設定することで、仮想カメラCaの位置の変更が完了することとなる。従って、プレイヤが操作部22を操作してプレイヤキャラクタC1を移動させると、仮想カメラCaの位置もこれに追従して更新されるため、移動中のプレイヤキャラクタC1を含む仮想ゲーム空間40内の様子をディスプレイ2に表示させることができる。
一方、プレイヤキャラクタC1が更に移動し、位置101から位置102へ到達した場合、上記と同様にして決定した候補位置に視点51を変更すると、該視点51を中心50aとするカメラ領域50は障害物(進入禁止領域)42と重複することとなる。従って、この状況のまま、候補位置にある視点51から撮影された画像をディスプレイ2に表示させると、障害物42内から見た画像が表示される場合があり、不自然である。そこで、本ゲームでは、これを解消するために後述の「カメラ位置補正処理」を行う。なお、このように位置100から位置101へ、及び、位置101から位置102へのプレイヤキャラクタC1の移動に伴う仮想カメラCaの位置の変更は、プレイヤによる操作部22への操作によりプレイヤキャラクタC1が移動した場合に限らず、敵キャラクタからの攻撃をプレイヤキャラクタC1が受けることで注視点Xが移動した場合などにも生じる。
次に、図4を参照して、仮想カメラ制御手段33が行う「カメラ候補位置決定処理」について、プレイヤキャラクタC1に対して仮想カメラCaの上下方向位置を変更する場合を例にして説明する。図4に示すように、仮想カメラCaの視点51は、注視点Xを中心として上述した距離Rを半径とする円周C上の所定の地点に位置することができるようになっている。即ち、円周C上であって、注視点Xを通る水平線に対して所定の角度A1〜A5を成す5つの点XC1〜XC5に、視点51を選択的に配置できるようになっている。ここで、図4では点XC1は水平線より下方に位置し、その他の点XC2〜XC5は水平線より上方に位置するものを例示しているが、これに限られない。また、選択できる位置の個数も図4に示す例(5つ)に限定されない。
点XC1〜XC5のうち角度A3を成す点XC3は、上述した視点51の初期位置である。従って、本ゲームでは、この初期位置の点XC3を基準として、下方の2点(XC1,XC2)及び上方の2点(XC4,XC5)の合計5段階に、視点51の上下方向位置を変更可能になっている。また、各点XC1〜XC5は、一定の半径Rの円周C上に設定されている必要はなく、例えば、各点のうち何れか一又は複数の点について、注視点Xからの距離が他の点と異なっていてもよい。
仮想カメラCaの位置を上下方向に変更する態様について具体的に説明する。図4に示すように、点XC3に仮想カメラCaの視点51が位置している状況で、プレイヤによって操作部22に対し所定の操作が行われると、点XC3に隣接する点XC2,XC4のうち、プレイヤの操作に応じた何れか一方の点を候補位置として決定し、その位置(座標)を取得することにより「カメラ候補位置決定処理」を終了する。なお、決定された候補位置に視点51を設定した場合に、カメラ領域50が障害物42と重複しない場合には、該候補位置へ視点51の位置が変更される。図4では、上方の点XC4に位置が変更された場合を白抜きの矢印で示している。そして、変更後の視点51を中心50aとしてカメラ領域50が設定されると共に、視点51がプレイヤキャラクタC1上の注視点Xに向けられることで、仮想カメラCaの位置の変更が完了する。なお、視点51の位置は、プレイヤによる仮想カメラCaの操作及びプレイヤキャラクタC1の情報(位置及び向きなど)に基づいて求められ、視点51の向きは視点位置及びプレイヤキャラクタC1の情報(位置)に基づく注視点Xにより求められる。
視点51が点XC2にある場合も同様に、プレイヤの操作に応じて隣接する点XC1,XC3の何れか一方の点が候補位置として決定され、視点51が点XC4にある場合も同様に、プレイヤの操作に応じて隣接する点XC3,XC5の何れか一方の点が候補位置として決定される。そして、決定された候補位置に視点51を設定した場合に、カメラ領域50が障害物42と重複しない場合には、この候補位置に視点51の位置が変更される。更に、視点51が最下方の点XC1にある場合は、直上の点XC2が候補位置とされ、最上方の点XC5にある場合は、直下の点XC4が候補位置とされる。そして、これらの場合も、決定された候補位置に視点51を設定した場合に、カメラ領域50が障害物42と重複しない場合には、その候補位置に視点51の位置が変更され、該視点51を中心50aとしてカメラ領域50が設定されると共に、視点51が注視点Xに向けられることで、仮想カメラCaの位置の変更が完了する。
従って、プレイヤは、操作部22を操作することによって仮想カメラCaの上下方向の位置を変更することができ、これに伴って視点51の向き(撮影角度)を変更することができる。そして、最下方の点XC1に近づくほど視点51は地面41に近づくと共に仰角が大きくなり、プレイヤキャラクタC1を下方から見上げるような画像が撮影される。逆に、最上方の点XC5に近づくほど視点51は地面から遠ざかって俯角が大きくなり、プレイヤキャラクタC1を上方から見下ろすような画像が撮影される。なお、このような仮想カメラCaの上下方向の位置の変更は、プレイヤキャラクタC1の移動中にも行うことができる。この場合には、図3を参照して説明した、プレイヤキャラクタC1の移動方向への仮想カメラCaの位置の変更と共に、上下方向の位置の変更を行う。
一方、図4に示すように、点XC3に視点51が位置する仮想カメラCaの近傍に障害物(進入禁止領域)42が存在する場合、仮想カメラCaを更に下方へ位置させるような操作がプレイヤによって行われると、点XC2が候補位置に設定されるが、この候補位置に視点51の位置を変更すると、更新後の視点51を中心50aとするカメラ領域50は障害物42と重複することとなる。従って、本ゲームでは、この場合にも後述の「カメラ位置補正処理」を行う。
次に、図5を参照して、仮想カメラ制御手段33が行う「カメラ候補位置決定処理」について、プレイヤキャラクタC1の回りに仮想カメラCaの位置を変更する場合を例にして説明する。図5に示すように、仮想カメラCaは、注視点Xを中心として所定の距離Rを半径とする円周C上の任意の地点に視点51を位置させることができるようになっている。この半径Rは、上述した仮想カメラCaの上下位置を定める角度A1〜A5によって特定され、具体的には、各角度での注視点Xと視点51とを結ぶ線分を、平面上(例えば、地面41上)に投影したときにできる線分の長さ寸法となっている。なお、図5の説明では便宜上、仮想カメラCaの視点51の上下位置が図4の点XC3にある場合を例とする。
図5に示すように、円周C上の点XC31(初期位置)に仮想カメラCaの視点51が位置している状況で、プレイヤが操作部22に対して所定の操作を行うと、該操作に応じて仮想カメラCaは円周C上を移動させることができる。例えば、操作部22に含まれる十字ボタンの左右何れかが押圧操作されると、十字ボタンが操作されている方向に対応する方向へ円周Cに沿って移動した点を候補位置として決定し、その位置(座標)を取得することにより「カメラ候補位置決定処理」を終了する。そして、決定された候補位置に視点51を設定した場合に、カメラ領域50が障害物42と重複しない場合には、この候補位置に視点51の位置が変更される。位置が変更された結果、視点51が地点XC32に位置していたとすると、そこでの視点51を中心50aとしてカメラ領域50が設定されると共に、該視点51が注視点Xに向けられることで、仮想カメラCaの位置の変更が完了する。なお、仮想カメラCaの視点51の上下位置が、図4に示す他の点XC1,XC2,XC4,XC5にある場合も同様である。
従って、プレイヤは、操作部22を操作することによって、プレイヤキャラクタC1回りの仮想カメラCaの位置(換言すれば、注視点X回りの位置)を任意の位置に変更することができ、プレイヤキャラクタC1を任意の水平方向から撮影し、その画像をディスプレイ2にて表示させることができる。また、このような仮想カメラCaの位置の変更は、プレイヤキャラクタC1の移動中にも行うことができる。この場合には、図3を参照して説明したプレイヤキャラクタC1の移動方向への仮想カメラCaの位置の変更と共に、プレイヤキャラクタC1回りの位置の変更を行う。
一方、図5に示すように、円周Cの一部が障害物(進入禁止領域)42と重複しており、プレイヤの操作によって候補位置が点XC33に決定された場合、この候補位置に視点51の位置を変更すると、変更後の視点51を中心50aとするカメラ領域50は障害物42と重複してしまう。従って、本ゲームではこの場合にも後述の「カメラ位置補正処理」を行う。
以上、図3〜図5を用いて説明したように、仮想カメラ制御手段33は、プレイヤキャラクタC1の移動があった場合(図3参照)や、プレイヤによる仮想カメラCaに対する移動操作があった場合(図4及び図5参照)に、仮想カメラCaの位置(座標)を変更するために、視点51の位置を変更する候補位置を決定すべく、「カメラ候補位置決定処理」を行う。そして、決定した候補位置に視点51の位置を変更すると、カメラ領域50が進入禁止領域42と重複してしまう場合には、後述の「カメラ位置補正処理」を行う。
ここで、図2の説明に戻ると、禁止領域重複判定手段34は、仮想カメラCaのカメラ領域50が上述した進入禁止領域42と重複するか否かを判定するものである。本ゲームでは、このカメラ領域50と進入禁止領域42との重複の有無判定の結果に基づき、上記仮想カメラ制御手段33が仮想カメラCaに対して「カメラ位置補正処理」を実行する。
なお、本ゲームでは、プレイヤキャラクタC1の位置(地面41への接地点の位置)を基準(原点)とする座標系(ローカル座標系)に基づいて、注視点X、敵キャラクタ、候補位置、視点51、カメラ領域50、その中心50a、及び進入禁止領域42の境界(輪郭)の、各位置を取得している。但し、これに限られず、仮想ゲーム空間40に固定された座標系(ワールド座標系)に基づいて、これらの位置を取得するようにしてもよい。
[フレーム毎の動作フロー]
ところで、上記でも触れたが、仮想カメラ制御手段33は、仮想カメラCaの位置を制御するに際し、「カメラ候補位置決定処理」及び「カメラ位置補正処理」を行う。これらの処理は、各フレームが生成される際に、他の処理と共に実行される。以下では、本ゲームにおいてフレーム毎に実行される一連の処理について概要を説明する。
図6は、フレーム毎に実行される処理の概要を示すフローチャートである。また、図7は、図6中のカメラ処理(ステップS3)の詳細を示すフローチャートである。図6に示すように、本ゲームでは、プレイヤキャラクタ処理(ステップS1)、敵キャラクタ処理(ステップS2)、カメラ処理(ステップS3)、及び描画処理(ステップS4)が、この順序でフレーム毎に実行される。
このうちプレイヤキャラクタ処理(ステップS1)では、プレイヤキャラクタC1に関してゲームの進行上で必要な各種の処理を行う。例えば、プレイヤにより、プレイヤキャラクタC1を動作させる操作入力が操作部22に対して行われた場合に、該操作入力に応じて、プレイヤキャラクタC1の動作後の位置及び姿勢等を示すデータを取得する。例えば、プレイヤがプレイヤキャラクタC1を歩行させるように操作部22を操作した場合には、歩行するプレイヤキャラクタC1が、次のフレームにてとるべき姿勢及び位置に関するデータを算出して取得する。このようなデータの取得は、主にキャラクタ制御手段32(図2参照)によって行われる。また、プレイヤが操作部22を操作していない場合であっても、例えば敵キャラクタからの攻撃を受けた反動でプレイヤキャラクタC1が移動する場合がある。従って、このようにしてプレイヤキャラクタC1が移動した場合も、移動後の位置及び姿勢等を示すデータを取得する。また、この他にも、プレイヤキャラクタC1が他のオブジェクトと衝突した場合に、該オブジェクトと重複することがないようにプレイヤキャラクタC1の位置を調整する処理や、ゲームの進行に伴って変化する体力やスタミナなど、プレイヤキャラクタC1のステータスを更新する処理などを行う。
敵キャラクタ処理(ステップS2)では、敵キャラクタに関してゲームの進行上で必要な各種の処理を行う。例えば、プレイヤキャラクタC1の動作や仮想ゲーム空間40内の周辺の状況(例えば、近くに設置された爆弾の爆発など)に応じて動作する敵キャラクタについて、その動作後の位置及び姿勢等を示すデータを取得する。例えば、敵キャラクタがプレイヤキャラクタC1に対して火炎を吐く動作をする場合には、敵キャラクタの位置及び姿勢を示すデータに加えて、火炎の形状及び位置を示すデータを算出して取得する。このようなデータの取得も、主にキャラクタ制御手段32によって行われる。なお、仮想カメラCaにより撮影される範囲内に敵キャラクタが存在しない場合には、敵キャラクタの位置を示すデータのみを取得すればよい。また、この他にも、他のオブジェクトと衝突した場合の敵キャラクタの位置を調整する処理や、ゲームの進行に伴って変化する体力などの敵キャラクタのステータスを更新する処理などを行う。
カメラ処理(ステップS3)では、仮想カメラ制御手段33により、仮想カメラCaの位置を変更する処理を行う。即ち、図7に示すように、プレイヤによる仮想カメラCaを移動させる操作部22への操作、及び、プレイヤキャラクタC1の移動(位置情報及び向きなど)に基づき、図3〜図5で説明したようにして、カメラ候補位置決定処理を行い(ステップS11)、決定した候補位置の位置(座標)を取得する。
次に、カメラ候補位置決定処理(ステップS11)を終えると、決定した候補位置に視点51を設定した場合に、該視点51を中心50aとするカメラ領域50が進入禁止領域42と重複することになるか否かを判定する。(ステップS12)。そして、進入禁止領域42と重複すると判定した場合(ステップS12:YES)は、後述の「カメラ位置補正処理」を行い(ステップS13)、補正後の視点51の位置を示すデータを取得する。なお、この「カメラ位置補正処理」は、仮想カメラCaを進入禁止領域42から出すと共に、仮想カメラCaの視野を可及的に広く確保するための処理であり、詳しくは後述する。
一方、進入禁止領域42と重複しないと判定した場合(ステップS12:NO)、又はカメラ位置補正処理(ステップS13)を終えた場合は、仮想カメラCaの位置を決定する処理を行い(ステップS14)、このカメラ処理を終了する。即ち、ステップS12でNOの場合には、ステップS11で取得した候補位置を視点51の位置として決定する。また、ステップS13を経た場合には、そこでのカメラ位置補正処理により取得した視点51を中心とするカメラ領域50を設定する。また、決定された視点51の位置と注視点Xに基づいて、視点51の向きが決定される。
以上のように、カメラ処理では、毎フレーム更新されたゲーム進行(位置及び向きなど)に応じてカメラ候補位置決定処理(ステップS11)と、必要に応じて更にカメラ位置補正処理(ステップS13)とを行うことで視点51を決定する。なお、既に説明した図3において、位置100〜102にいるプレイヤキャラクタC1に対応して示されているカメラ領域50の中心50aの位置は、上記ステップS11の処理により決定された候補位置の例である。また、図4の点XC1〜XC5及び図5の点XC31〜XC33についても、上記ステップS11の処理により決定された候補位置の例である。なお、毎フレーム更新する必要はなく、プレイヤキャラクタC1の移動、プレイヤによる仮想カメラCaの操作がなければ、上記ステップS11〜ステップS13を実行せず、前フレームの仮想カメラCaの位置を維持すればよい。
次に、図6のフローチャートの説明に戻り、上述したカメラ処理に続く描画処理(ステップS4)では、プレイヤキャラクタC1(仮想カメラCaの撮影範囲に敵キャラクタが存在する場合には、該敵キャラクタも)が存在する仮想ゲーム空間40を、仮想カメラCaにより撮影したときの画像データを生成し、これをディスプレイ2に出力する。より詳しく説明すると、この処理では、ステップS1,S2にて取得した位置及び姿勢となっているプレイヤキャラクタC1及び敵キャラクタが、仮想ゲーム空間40に位置する情景を、ステップS3により位置が変更された仮想カメラCaによって撮影したときの画像を示す画像データを生成する。
[カメラ位置補正処理]
次に、図7のステップS13に示した「カメラ位置補正処理」の詳細について説明する。なお、前述したようにこのカメラ位置補正処理は、ステップS11で変更した候補位置に基づく仮想カメラCaのカメラ領域50が障害物42と重複することとなった場合(図7のステップS12:YES)に、該仮想カメラCaを進入禁止領域42から出すと共に、仮想カメラCaの視野を可及的に広く確保するための処理である。ここで、仮想カメラCaのカメラ領域50が障害物(進入禁止領域)42と重複する態様としては、図3〜図5に示したような様々のシチュエーションがあるが、何れの態様においても、同一のカメラ位置補正処理を行うことができる。
(実施の形態1)
図8は、実施の形態1に係るカメラ位置補正処理の態様を示す模式図である。ここで、図8中の(a)は、カメラ領域50が障害物(進入禁止領域)42と重複した状態を、(b)は、(a)の状態から、カメラ領域50を障害物42の外に移動させた位置に設定した状態を、(c)は、(b)の状態から、視点51をカメラ領域50内で候補位置に対して後方へ移動させた位置に設定した状態を、それぞれ示している。また、図9は、実施の形態1に係るカメラ位置補正処理の流れを示すフローチャートである。なお、図8では、仮想カメラCaの視点51が初期位置である点XC3に位置する状態で、カメラ領域50が障害物42と重複することになった場合(図7のステップS12:YES)について示しているが、視点51が他の位置にある場合も同様である。
まず、図8(a)に示す状態は、上述した図3〜図5に示したシチュエーションなどにおいて、カメラ候補位置決定処理(図7のステップS11)により候補位置が決定され、その候補位置に仮に視点51を設定した場合に、該視点51を中心50aとするカメラ領域50が障害物42と重複する(図7のステップS12:YES)ことになる状態を示している。本実施の形態1では、この図8(a)に示す状態になる場合に、カメラ位置補正処理(図7のステップS14)として、図8(b),(c)に示す処理を実行する。即ち、該カメラ位置補正処理では、はじめに、図8(b)に示すように、図8(a)に示す位置から視軸52に沿って障害物42外へ移動させた所定の位置にカメラ領域50を設定する(図10のステップS21)。より具体的には、図8(a)に示す候補位置と注視点Xとを結ぶ視軸52に沿って、注視点Xに向かって障害物42に対して外方から接する位置まで移動させたときの移動後の位置に、カメラ領域50を設定する。なお、このようにして設定されたカメラ領域50の中心50aと注視点Xとの距離は、図8(a)に示す候補位置と注視点Xとの距離Rよりも小さい距離R1となっている。
次に、図8(c)に示すように、視点51を、図8(b)に示す設定後のカメラ領域50の中心50aから上記視軸52の延長線に沿って後方へ移動させた場合の所定位置に設定する(図9のステップS22)。即ち、ステップS21にて障害物42外に設定したカメラ領域50の位置は固定しておき、その中心50aから視軸52に沿って後方へ向かい、カメラ領域50の輪郭線上に至った点を、視点51の位置として設定(補正)する。これにより、図8(c)のように決定された視点51と注視点Xとの距離は、上記距離R1よりも大きい距離R2となる。そして、このステップS22の処理を実行することで、本実施の形態1に係るカメラ位置補正処理を終了し(図9,図7のステップS13参照)、この位置が仮想カメラCa(視点51)の位置として決定される(図7のステップS14)。そして、この決定された仮想カメラCa(視点51)の位置において撮影したときの画像がゲーム装置1のディスプレイ2に出力(表示)される。
なお、上述のようにカメラ領域50を図8(b)の実線で示した位置に設定する処理では、図8(a)にて破線で示す位置から、図8(b)にて実線で示す位置まで、実際にカメラ領域50を移動させる必要はない。即ち、カメラ候補位置決定処理(図7のステップS11)によって決定された候補位置に視点51を「仮に」設定した場合に、図8(a)に示すようにカメラ領域50が設定される場合には、図8(a)に示す破線の位置にカメラ領域50を設定することなく、図8(b)の実線で示す位置にカメラ領域50を直接設定すればよい。同様に、上述のように視点51を図8(c)に示した位置に設定する処理では、図8(a)に示す候補位置から、図8(b)の中心50aの位置を経て、図8(c)に示す位置まで、実際に視点51を移動させる必要はない。即ち、カメラ候補位置決定処理(図7のステップS11)によって決定された候補位置に視点51を「仮に」設定した場合に、図8(a)に示すようにカメラ領域50が設定される場合には、上述した手順により取得される図8(c)に示す位置に、視点51を直接設定すればよい。
以上のカメラ位置補正処理により、仮想カメラCaが障害物42内に入り込んで、障害物42内から撮影した画像がディスプレイ2に表示されてしまうのを回避することができる。また、仮想カメラCaを障害物42外へ出しつつも、そのカメラ領域50内における後方位置に視点51を設定しているため、プレイヤキャラクタC1によって仮想カメラCaの視界が大きく遮られるのを抑制し、極力広い視野を有する画像を撮影することができる。
(実施の形態2)
図10は、実施の形態2に係るカメラ位置補正処理の態様を示す模式図である。ここで、図10(a),(b)は図8(a),(b)と同じであり、図10(c)は、図10(b)の状態からカメラ領域50を下方へ移動させた位置に設定した状態を、図10(d)は、図10(c)の状態から視点51をカメラ領域50内で後方へ移動させた位置に設定した状態を、それぞれ示している。また、図11は、実施の形態2に係るカメラ位置補正処理の流れを示すフローチャートである。なお、図10でも図8と同様に、仮想カメラCaの視点51が初期位置である点XC3に位置する状態で、カメラ領域50が障害物42と重複することになった場合(図7のステップS12:YES)について示しているが、視点51が他の位置にある場合も同様である。
まず、図10(a)に示す状態は、上述した図3〜図5に示したシチュエーションなどにおいて、カメラ候補位置決定処理(図7のステップS11)により候補位置が決定され、その候補位置に仮に視点51を設定した場合に、該視点51を中心50aとするカメラ領域50が障害物42と重複する(図7のステップS12:YES)ことになる状態を示している。本実施の形態2では、この図10(a)に示す状態になる場合に、カメラ位置補正処理(図7のステップS14)として、図10(b)〜(d)に示す処理を実行する。即ち、該カメラ位置補正処理では、はじめに、図10(b)に示すように、図10(a)に示す位置から視軸52に沿って障害物42外へ移動させた所定の位置にカメラ領域50の位置を仮に設定する(図11のステップS31)。より具体的には、図10(a)に示す候補位置と注視点Xとを結ぶ視軸52に沿って、注視点Xに向かって障害物42に対して外方から接する位置まで移動させたときの移動後の位置に、カメラ領域50を仮に設定する。なお、このようにして仮設定されたカメラ領域50の中心50aと注視点Xとの距離は、図10(a)に示す候補位置と注視点Xとの距離Rよりも小さい距離R1となっている。
次に、ステップS31で障害物42外に仮設定したカメラ領域50(及び視点51)を、下方へ向かって所定距離だけ移動させた位置に、カメラ領域50の位置を正式に設定する(図12のステップS32)。この時点で、正式に設定したカメラ領域50の中心50aと注視点Xとの距離は、上述した距離R,R1よりも小さい距離R3となる。そして最後に、図11(d)に示すように、視点51を、図10(c)に示す正式に設定されたカメラ領域50の中心50aから上記視軸52の延長線に沿って後方へ移動させた場合の所定位置に設定する(図11のステップS33)。即ち、ステップS32にて正式に設定されたカメラ領域50はその位置は固定しておき、その中心50aから視軸52に沿って後方へ向かい、カメラ領域50の輪郭線上に至った点を、視点51の位置として設定する。この結果、設定された視点51と注視点Xとの距離は、上記距離R3よりも大きい距離R4となる。そして、このステップS33の処理を実行することで、本実施の形態2に係るカメラ位置補正処理を終了し(図11,図7のステップS13参照)、この位置が仮想カメラCa(視点51)の位置として決定される(図7のステップS14)。そして、この決定された仮想カメラCa(視点51)の位置において撮影したときの画像がゲーム装置1のディスプレイ2に出力(表示)される。
ここで、カメラ領域50を図10(c)に示す位置に正式に設定する上記ステップS32の処理について更に詳しく説明する。図12は、実施の形態2のカメラ位置補正処理において、カメラ領域50を正式に設定する図11のステップS32の処理を説明するための模式図であり、図13は、この処理の流れを示すフローチャートである。
図12では、はじめに注視点Xが点Pで示す位置にある状態から、プレイヤキャラクタC1の移動によって点Pへ移動した場合を例示している。そしてこの場合、注視点Xが点Pに位置するときには、仮想カメラCaは、障害物42にカメラ領域50が外方から接することとなる点Pに中心50a及び視点51が位置している状態となっているが、注視点Xが点Pへ移動した結果、カメラ候補位置決定処理(図7のステップS11)により、障害物42とカメラ領域50とが重複することとなる点Pに視点51の候補位置が設定されたものとする。なお、点Pを通る水平面と点Pから下ろした垂線との交点を点Pとする。また、注視点Xが点Pにある場合の仮想カメラCaの視点51の位置である点Pは、カメラ位置補正処理が施されていないものとし、この点P及び点P間の距離は上述した距離Rとなっている。
このように、プレイヤキャラクタC1の移動によって設定された候補位置(点P)に視点を設定すると、カメラ領域50が障害物42と重複することとなる場合、上述したように、まず、点Pに位置する候補位置と点Pに位置する注視点Xとを結ぶ視軸52(点P及び点Pを結ぶ直線)に沿って、カメラ領域50を障害物42外へ移動させて障害物42に外方から接するように仮設定する。すなわち、点Pに中心50aが位置するようにカメラ領域50を仮設定する(図11のステップS31参照)。なお、このときの点P及び点P間の距離は、上述した距離R1(<R)となっている。
これ以後、図11のステップS32の詳細である図13のフローチャートに示す処理が行われる。即ち、仮想カメラ制御手段33は、点P及び点P間の距離DABに対する点P及び点P間の距離DACの比率K1を算出する(ステップS41)。そして、この比率K1が所定の最大値KMAXよりも大きいか否かを判定する(ステップS42)。この最大値KMAXは1より小さい値を適宜設定することができ、例えば、0.7とすることができる。ステップS42にて、比率K1が最大値KMAXよりも大きいと判定した場合(ステップS42:YES)は、ステップS41で算出した値に代えて最大値KMAXを比率K1の値とする(ステップS43)。
ステップS42にて比率K1が最大値KMAX以下であると判定した場合(ステップS42:NO)、又はステップS43を終えた場合は、次に示す式
比率K2=比率K1*(1−e)
によって比率K2(<1)を算出する(ステップS44)。ここで、式中のeは1より小さい所定の値であり、点Pに基準点50aが位置するカメラ領域50を下方へどれだけ移動させるかを決定する1つの要素である。このeの値は適宜設定することができ、例えば、0.02とすることができる。
次に、点P及び点P間の距離DAFに対して上記比率K2を乗じることにより、距離DAGを算出する(ステップS45)。なお、比率K2が1より小さい値であるから、この距離DAGは距離DAFより小さいものとなる。そして、中心50aが点Pに仮設定されているカメラ領域50の位置を、点Pから距離DAGだけ上方の点Pに中心50aが位置するように下方へ移動させた位置に正式に設定する(ステップS46)。これにより、図13に示す処理が終了すると共に、図11のステップS32に示した処理が終了する。なお、本実施の形態2に係るカメラ位置補正処理では、この後、図11のステップS33の処理を実行する。即ち、正式に設定されたカメラ領域50の中心50aから、ここに視点51がある場合の視軸52(点P及び点Pを結ぶ直線)に沿って後方へ向かい、カメラ領域50の輪郭線上に至った点Pを、視点51の位置として設定する。
なお、図8にて説明したのと同様に、カメラ領域50を図10(c)の実線で示した位置に設定する処理では、図10(a)にて破線で示す位置から、図10(c)にて実線で示す位置まで、実際にカメラ領域50を移動させる必要はない。即ち、図12において、カメラ領域50は、点Pに中心50aが位置する状態から、点Pに中心50aが位置する状態へ、直接的に位置を変更して設定すればよい。同様に、視点51を図10(d)に示した位置に設定する処理では、図10(a)に示す候補位置から、図10(b),(c)に示す中心50aの位置を経て、図10(d)に示す位置まで、実際に視点51を移動させる必要はない。即ち、図12において、点Pから点Pへ、直接的に視点51の位置を変更して設定すればよい。
以上に説明した実施の形態2に係るカメラ位置補正処理によれば、プレイヤキャラクタC1の移動に伴って仮想カメラCaが障害物42内に進入することになる場合であっても、仮想カメラCa(カメラ領域50及び視点51)を障害物42外へ移動させるため、障害物42内から撮影した画像がディスプレイ2に表示されてしまうのを回避することができる。また、仮想カメラCaを障害物42外へ出しつつも、そのカメラ領域50内における後方位置に視点51を設定しているため、プレイヤキャラクタC1によって仮想カメラCaの視界が大きく遮られるのを抑制し、極力広い視野を有する画像を撮影することができる。更に、実施の形態1の場合に比べて視点51の位置をより低く設定するため、仮想ゲーム空間40をより遠くまで見渡した画像を撮影することができ、プレイヤの視野を広げることができる。
なお、上記点Pから点Pへの視点51の位置の変更設定は、1フレームで完結させなくてもよく、点Pと点Pとの間の一又は複数の点を経由するように、複数のフレームを用いて行うようにしてもよい。この場合、上記点Pから、点P,点Pを経て、点Pに至るように、視点51の位置をフレーム毎に順次設定していくようにしてもよい。更に、視点51を上記点Pから点Pに変更設定し、その後、点Pから点Pへ至る間を、一又は複数の点を経由するように複数のフレームを用いて変更設定するようにしてもよい。
(実施の形態3)
図14は、実施の形態3に係るカメラ位置補正処理を説明するための模式図である。なお、カメラ領域50を障害物42と重複しないように該障害物42の外に設定するまでは、実施の形態1にて説明した処理(図8(a),(b),図9のステップS21参照)と同様であるのでその説明は省略し、ここでは、図8(b)に示す状態の後、視点51を設定する態様について説明する。
図14に示す例では、カメラ領域50には、その中心50aに対し、該中心50aに視点51を位置させた場合の該視点51の向き(基準点50aから注視点Xへ向かう方向)とは反対側に、半円形状の後側領域60が設定されている。そして、本実施の形態3に係るカメラ位置補正処理では、視点51を、この後側領域60内の任意の位置に設定することとしている。
このように視点51の位置を設定することにより、障害物42内に入り込んだ仮想カメラCaにより撮影された画像がディスプレイ2に表示されてしまうのを回避しつつ、プレイヤキャラクタC1によって仮想カメラCaの視界が大きく遮られるのを抑制し、広い視野を有する画像を撮影することができる。なお、仮想カメラCaの視界を極力広く確保するためには、後側領域60の円弧状の輪郭線部分において、視軸52の延長線が交差する点、即ち、実施の形態1の図8(c)を用いて説明したのと同様の位置に、視点51を設定するのが好ましい。また、仮想ゲーム空間40をより遠くまで見渡した画像を撮影するためには、後側領域60を視軸52の延長線により上下分割した場合の下側の領域に、視点51を設定することが好ましい。
(実施の形態4)
図15は、実施の形態4に係るカメラ位置補正処理を説明するための模式図である。なお、本実施の形態4においても、カメラ領域50を障害物42と重複しないように該障害物42の外に設定するまでは、実施の形態1にて説明した処理(図8(a),(b),図9のステップS21参照)と同様であるのでその説明は省略し、ここでは、図8(b)に示す状態の後、視点51を設定する態様について説明する。
図15に示す例では、カメラ領域50の中心50aと注視点Xとを結ぶ直線が、カメラ領域50の輪郭線を成す円周61と交わる点のうち、注視点Xから遠い方の点が交点62として設定されている。そして、本実施の形態4に係るカメラ位置補正処理では、上記円周61上であって、中心50a及び交点62を結ぶ線分63に対し、中心50aの回りに+90°〜−90°(反時計回り方向を正とする)の範囲内の角度となる任意の位置に、視点51を設定することとしている。
このように視点51の位置を設定することにより、障害物42内に入り込んだ仮想カメラCaにより撮影された画像がディスプレイ2に表示されてしまうのを回避しつつ、プレイヤキャラクタC1によって仮想カメラCaの視界が大きく遮られるのを抑制し、広い視野を有する画像を撮影することができる。なお、仮想カメラCaの視界を極力広く確保するためには、交点62、即ち、実施の形態1の図8(c)を用いて説明したのと同様の位置に、視点51を設定するのが好ましい。また、仮想ゲーム空間40をより遠くまで見渡した画像を撮影するためには、線分63に対する角度が0°〜90°の範囲内になる位置のうち、より角度が大きくなる位置に、視点51を設定することが好ましい。
(その他の実施の形態)
ところで、以上の説明では、注視点XがプレイヤキャラクタC1の上方の所定位置に固定的に設けられていることとしているが、これに限られない。例えば、カメラ領域50が障害物42と重複することとなった場合には、プレイヤキャラクタC1の真上の位置から、障害物42に対して離隔する方向へ注視点Xの位置を移動させてもよい。この場合、カメラ領域50の中心50aから障害物42の境界までの距離に応じて、注視点Xを移動させる距離を異ならせることができる。また、このように注視点Xの位置をプレイヤキャラクタC1の真上の位置から移動させる場合、移動後の注視点Xの位置を採用して、上述した実施の形態1〜4に係るカメラ位置補正処理を行えばよい。
また、注視点Xの位置はプレイヤキャラクタC1の上方に限られず、プレイヤキャラクタC1を基準とする他の所定位置、例えば、プレイヤキャラクタC1の足元の位置(即ち、プレイヤキャラクタC1の原点座標である点X)に設定されていてもよい。更に、注視点XはプレイヤキャラクタC1を基準として位置決めされず、視点51から所定距離の位置に設定され、視点51を中心にしてプレイヤの操作によって自由に視点51の向きを変更できるような仮想カメラCaの制御においても、本発明を適用することができる。また、プレイヤの操作によっては、仮想カメラCaの位置や向きを変更することができないようなゲームにおいても、本発明を適用することができる。
本発明は、仮想カメラが障害物内に入り込んでしまうのを回避しつつ、仮想カメラによって極力広い視野を有する画像を撮影することができるゲームプログラム、及びゲーム装置を提供することができる。
1 ゲーム装置
5a ゲームプログラム
30 制御部
31 ゲーム空間生成手段
32 キャラクタ制御手段
33 仮想カメラ制御手段
34 禁止領域重複判定手段
50 カメラ領域
50a 中心
51 視点
52 視軸
C1 プレイヤキャラクタ
Ca 仮想カメラ
注視点

Claims (6)

  1. コンピュータを、
    仮想のゲーム空間を生成するゲーム空間生成手段、
    前記ゲーム空間を撮影すべく、少なくとも該ゲーム空間内の仮想カメラの視点の位置及び向きを制御し、ゲームの進行に応じて該仮想カメラの視点を設定するための候補位置を算出する仮想カメラ制御手段、及び
    前記ゲーム空間内に設定された前記仮想カメラの進入禁止領域に、前記候補位置を領域内に含むように設定されたカメラ領域の少なくとも一部が重複したか否かを判定する禁止領域重複判定手段、として機能させ、
    前記仮想カメラ制御手段は、
    前記カメラ領域が前記進入禁止領域と重複していない場合には、前記候補位置を前記視点の位置として決定する一方、
    前記カメラ領域の少なくとも一部が前記進入禁止領域と重複している場合には、前記候補位置を含む前記カメラ領域を前記進入禁止領域外に設定すると共に、該カメラ領域内において前記候補位置に対し前記視点の向きとは反対側の領域の所定位置を、前記視点の位置として決定するよう構成されていることを特徴とするゲームプログラム。
  2. 前記仮想カメラ制御手段は、前記ゲーム空間内に設定された注視点を前記仮想カメラの視点の視軸が通るように、該視点の向きを制御することを特徴とする請求項1に記載のゲームプログラム。
  3. 前記注視点は、前記ゲーム空間内で動作するプレイヤキャラクタを基準とする所定位置に配置され、該プレイヤキャラクタに伴って移動するよう設定されていることを特徴とする請求項2に記載のゲームプログラム。
  4. 前記仮想カメラ制御手段は、前記カメラ領域の少なくとも一部が前記進入禁止領域と重複していると判定された場合は、前記候補位置を含む前記カメラ領域を、前記候補位置及び注視点を結ぶ直線に沿って前記進入禁止領域外へ、前記カメラ領域が該進入禁止領域に隣接するまで移動させた後の位置に設定することを特徴とする請求項1乃至3の何れかに記載のゲームプログラム。
  5. 前記仮想カメラ制御手段は、前記候補位置を含む前記カメラ領域を、前記直線に沿って前記進入禁止領域外へ移動させた位置から更に所定距離だけ下方へ移動させた後の位置に設定することを特徴とする請求項4に記載のゲームプログラム。
  6. 請求項1乃至の何れかに記載のゲームプログラムを記録したプログラム記憶部、及び、該プログラム記憶部に記憶されたゲームプログラムを実行するコンピュータ、を備えることを特徴とするゲーム装置。
JP2010207351A 2010-09-15 2010-09-15 ゲームプログラム、及びゲーム装置 Active JP5539133B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010207351A JP5539133B2 (ja) 2010-09-15 2010-09-15 ゲームプログラム、及びゲーム装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010207351A JP5539133B2 (ja) 2010-09-15 2010-09-15 ゲームプログラム、及びゲーム装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014092688A Division JP2014184300A (ja) 2014-04-28 2014-04-28 ゲームプログラム、及びゲーム装置

Publications (2)

Publication Number Publication Date
JP2012063958A JP2012063958A (ja) 2012-03-29
JP5539133B2 true JP5539133B2 (ja) 2014-07-02

Family

ID=46059610

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010207351A Active JP5539133B2 (ja) 2010-09-15 2010-09-15 ゲームプログラム、及びゲーム装置

Country Status (1)

Country Link
JP (1) JP5539133B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5969531B2 (ja) * 2014-04-03 2016-08-17 株式会社スクウェア・エニックス 画像処理プログラム、画像処理装置及び画像処理方法。
JP2019000138A (ja) * 2017-06-09 2019-01-10 株式会社カプコン ゲームプログラム、ゲーム装置およびサーバ装置
JP6588942B2 (ja) * 2017-06-09 2019-10-09 株式会社カプコン ゲームプログラム、ゲーム装置およびサーバ装置
CN115176286A (zh) * 2020-04-21 2022-10-11 索尼集团公司 图像处理装置、图像处理方法和程序

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002360920A (ja) * 2001-06-05 2002-12-17 Atlus Co Ltd ゲーム画像制御装置
JP4489800B2 (ja) * 2007-08-30 2010-06-23 株式会社スクウェア・エニックス 画像生成装置及び方法、並びにプログラム及び記録媒体

Also Published As

Publication number Publication date
JP2012063958A (ja) 2012-03-29

Similar Documents

Publication Publication Date Title
JP5597837B2 (ja) プログラム、情報記憶媒体、及び、画像生成装置
US8262477B2 (en) Information storage medium, game device, and method of controlling game device
JP5161256B2 (ja) プログラム、情報記憶媒体、及び、画像生成装置
JP5800473B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム及び情報処理方法
JP6681352B2 (ja) 情報処理システム、情報処理プログラム、情報処理装置、情報処理方法、ゲームシステム、ゲームプログラム、ゲーム装置、及びゲーム方法
JP4792878B2 (ja) 対戦ビデオゲーム制御プログラム
JP2018081644A (ja) シミュレーションシステム及びプログラム
US20050266921A1 (en) Image processing program, game processing program and game information processing apparatus
JP2010017395A (ja) プログラム、情報記憶媒体及びゲーム装置
JP2005287801A (ja) 画像生成装置、画像表示方法及びプログラム
JP2019063174A (ja) ゲーム処理プログラム、ゲーム処理方法、および、ゲーム処理装置
JP7245605B2 (ja) ゲームシステム、ゲーム提供方法及びプログラム
JP4050658B2 (ja) ゲーム装置、ゲーム制御プログラムおよびそのプログラムが記録された記録媒体
US20120306869A1 (en) Game device, image display device, stereoscopic image display method and computer-readable non-volatile information recording medium storing program
JP5539133B2 (ja) ゲームプログラム、及びゲーム装置
CN111672102A (zh) 虚拟场景中的虚拟对象控制方法、装置、设备及存储介质
JP5559765B2 (ja) ゲーム装置、及びプログラム
JP2014184300A (ja) ゲームプログラム、及びゲーム装置
JP6273243B2 (ja) 仮想現実空間のオブジェクトと対話するための装置、方法、及びプログラム
JP2019000138A (ja) ゲームプログラム、ゲーム装置およびサーバ装置
JP2012215934A (ja) プログラム、情報記憶媒体、端末、及びサーバ
JP6313937B2 (ja) ゲームプログラムおよびゲームシステム
JP4330412B2 (ja) ゲーム装置及びコンピュータを機能させるためのプログラム
JP5677050B2 (ja) ゲームプログラム及びゲーム装置
JP6707497B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム及び情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130328

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140314

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140401

R150 Certificate of patent or registration of utility model

Ref document number: 5539133

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140430

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S802 Written request for registration of partial abandonment of right

Free format text: JAPANESE INTERMEDIATE CODE: R311802

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250