説明

ゲームプログラム、ゲーム装置及びゲームの表示方法

【課題】仮想カメラの視点を注視対象から離すことなく仮想カメラの視野範囲に含まれていないオブジェクトを表示することができるゲームプログラム、ゲーム装置及びゲームの表示方法を提供すること。
【解決手段】ゲーム装置3では、各オブジェクトの位置座標が位置座標算出部102によって算出される。そして、ミサイル41〜47の位置座標が、プレイヤオブジェクト31よりも仮想カメラ30側に位置するか否かが座標判定部103によって判定される。仮想カメラ30側に位置すると判定されたミサイル43〜47に対して、位置座標をプレイヤオブジェクト31側へ移動させた補正座標が補正座標算出部104によって算出される。この場合、プレイヤオブジェクト31がその位置座標に位置すると共に、ミサイル43〜47が補正座標に位置する仮想ゲーム空間の画像が液晶テレビ2に表示される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム装置のコンピュータに実行させるゲームプログラム、ゲーム装置及びゲームの表示方法に関し、より特定的には、仮想ゲーム空間内のオブジェクトを仮想カメラの視点から見た画像を表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラム、ゲーム装置及びゲームの表示方法に関する。
【背景技術】
【0002】
いわゆるシューティングゲームやアクションゲームでは、仮想ゲーム空間内に存在するオブジェクトを同じく仮想ゲーム空間内に存在する仮想カメラから見た画像を描画する処理がゲーム装置によって行われる(例えば特許文献1参照)。特許文献1には、ゲームのプレイヤによって視点切替スイッチが操作された場合に、プレイヤが操作する飛行機が飛行している状態を飛行機内のコクピットの視点(1人称視点)から見た画像と、飛行機が飛行している状態を飛行機後方のビハインドビュー視点(3人称視点)から見た画像とを切り替えて画面表示するための仮想カメラの視点制御に関する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−107465号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、特許文献1に記載されている従来のゲームでは、注視対象のオブジェクト(特許文献1では飛行機)が常に画面の中心付近に表示されるように仮想カメラを制御する場合に、例えば仮想カメラの後方などの仮想カメラの視野範囲外に位置する他のオブジェクトは、注視対象のオブジェクトと近接しているとしても表示することができなかった。このため、例えば飛行機の近くに位置するミサイルが仮想カメラの視野範囲外に位置しているために画面に表示されず、プレイヤが不利益を被るおそれがあった。この問題を解決するために、他のオブジェクトが仮想カメラの視野範囲内に含まれるように仮想カメラの視点を注視対象のオブジェクトから離すことが考えられるが、この場合、仮想カメラの視点が注視対象のオブジェクトから離れるために注視対象のオブジェクトが小さく表示されるという別の問題が生じる。
【0005】
それ故に、本発明の目的は、仮想カメラの視点を注視対象から離すことなく仮想カメラの視野範囲に含まれていないオブジェクトを表示することができるゲームプログラム、ゲーム装置及びゲームの表示方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明に係るゲームプログラムは、仮想ゲーム空間に含まれるオブジェクトを仮想カメラで撮像した画像を表示装置に表示させるゲーム装置のコンピュータに実行させるゲームプログラムである。このゲームプログラムは、コンピュータを位置座標算出手段、座標判定手段、補正座標算出手段、及び表示手段として機能させる。位置座標算出手段は、仮想カメラによって注視されるオブジェクトである第1オブジェクト、及び第1オブジェクトとは異なる少なくとも1つのオブジェクトである第2オブジェクトの位置座標を算出する。座標判定手段は、第2オブジェクトの位置座標に基づいて、その第2オブジェクトが仮想カメラの前方の所定点よりも仮想カメラ側に位置するか否かを判定する。補正座標算出手段は、座標判定手段によって仮想カメラ側に位置すると判定された第2オブジェクトに対して、その第2オブジェクトの位置座標を所定点側へ移動させた座標である補正座標を算出する。表示手段は、第1オブジェクトがその位置座標に位置し、且つ座標判定手段によって仮想カメラ側に位置すると判定された第2オブジェクトが補正座標に位置する仮想ゲーム空間の画像を表示装置に表示させる。
【0007】
このゲームプログラムに基づくゲーム処理がゲーム装置で実行されることにより、第1オブジェクトを注視するように仮想カメラの視点位置や視野角等の仮想カメラに関する各パラメータが制御される。その結果、第1オブジェクトが表示装置の画面の中央付近に表示される。仮想ゲーム空間には、このように仮想カメラによって注視される第1オブジェクトの他に、第2オブジェクトが存在する。この第2オブジェクトは、仮想カメラによって注視されないオブジェクトである。例えば、第1オブジェクトはプレイヤによって操作されるプレイヤオブジェクトであり、第2オブジェクトはプレイヤオブジェクトとは異なるノンプレイヤオブジェクトである。ただし、例えば、第1オブジェクトが所定のノンプレイヤオブジェクトであり、第2オブジェクトがプレイヤオブジェクト及びその他のノンプレイヤオブジェクトであってもよい。ゲーム装置では、これらの第1オブジェクト及び第2オブジェクトに対して、仮想ゲーム空間における位置座標が位置座標算出手段によって算出される。これを受けて、第2オブジェクトが仮想カメラの前方の所定点よりも仮想カメラ側に位置するか否かが座標判定手段によって判定される。所定点としては、第1オブジェクトの位置座標が例として挙げられるが、所定点はこれに限定されるものではない。所定点は、例えば仮想カメラと第1オブジェクトとの間に設定されてもよいし、或いは仮想カメラから見た第1オブジェクトの前方に設定されてもよい。
【0008】
座標判定手段による判定処理が行われると、所定点よりも仮想カメラ側に位置すると判定された第2オブジェクトに対して、その第2オブジェクトの位置座標を所定点側へ移動させた補正座標が算出される。そして、第1オブジェクト及び所定点よりも仮想カメラ側に位置しない第2オブジェクトがそれぞれの位置座標に位置し、且つ所定点よりも仮想カメラ側に位置する第2オブジェクトがその補正座標に位置する仮想ゲーム空間を仮想カメラで撮像した仮想ゲーム空間の画像が表示手段によって表示装置に表示される。この仮想ゲーム空間の画像は、所定点よりも仮想カメラ側に位置する第2オブジェクトが所定点側へ移動した状態で仮想カメラに撮像されたものである。このため、第1オブジェクトから仮想カメラの視点までの距離を変更することなく、例えば仮想カメラの後方などの仮想カメラの視野範囲外に位置する第2オブジェクトを視野範囲に含めた状態の仮想ゲーム空間の画像を表示することが可能となる。
【0009】
補正座標算出手段は、座標判定手段によって仮想カメラ側に位置すると判定された第2オブジェクトに対して、その第2オブジェクトの位置座標を仮想カメラの撮像方向へ移動させた座標をその第2オブジェクトの補正座標として算出してもよい。
【0010】
この構成によれば、第2オブジェクトの位置座標を仮想カメラの撮像方向(仮想カメラの視点から所定点へ向けた方向)へ移動させた補正座標が算出されるので、第2オブジェクトの画面上の位置が変化するといった不自然な表示がなされることが防止される。
【0011】
補正座標算出手段は、座標判定手段によって仮想カメラ側に位置すると判定された第2オブジェクトに対して、その第2オブジェクトの位置座標を所定点へ向けて移動させた座標をその第2オブジェクトの補正座標として算出してもよい。
【0012】
第2オブジェクトの位置座標や位置座標から補正座標までの移動距離によっては、位置座標を仮想カメラの撮像方向に移動させた補正座標が仮想カメラの視野範囲外に位置し、その結果、第2オブジェクトを仮想カメラで撮像できない場合がある。上記構成によれば、仮想カメラの前方の所定点へ向けて直線的に近づくように第2オブジェクトの補正座標が算出される。このため、位置座標を仮想カメラの撮像方向に移動させた描画座標を算出したにも拘わらず仮想カメラの視野範囲外に位置してしまうような第2オブジェクトを仮想カメラの視野範囲に含めて画面に表示させることが可能となる。
【0013】
補正座標算出手段は、座標判定手段によって仮想カメラ側に位置すると判定された第2オブジェクトの位置座標を所定点よりも仮想カメラ側に移動させた座標を、その第2オブジェクトの補正座標として算出してもよい。
【0014】
第2オブジェクトの補正座標として、仮想カメラの前方の所定点よりも更に前方の座標が算出された場合、例えば本来は第1オブジェクトよりも後方に位置するはずの第2オブジェクトが第1オブジェクトよりも前方に位置した状態で表示されるおそれがある。上記構成によれば、補正座標算出手段によって算出される補正座標が所定点よりも仮想カメラ側の座標であるため、上述した問題が生じることが防止される。
【0015】
補正座標算出手段は、仮想カメラの撮像方向における所定点から、座標判定手段によって仮想カメラ側に位置すると判定された第2オブジェクトの位置座標までの第1距離に基づいて、その第2オブジェクトの補正座標を算出してもよい。
【0016】
仮想カメラの撮像方向における所定点から第2オブジェクトの補正座標までの距離が第1距離よりも小さくなるように補正座標を算出すれば、第2オブジェクトを所定点側へ移動させた補正座標が算出されることになる。このため、上記構成によれば、第2オブジェクトの補正座標を容易に算出することが可能となる。
【0017】
補正座標算出手段は、座標判定手段によって仮想カメラ側に位置すると判定された第2オブジェクトに対して、仮想カメラの撮像方向における所定点からその第2オブジェクトの補正座標までの距離が第1距離の所定割合となるように、その第2オブジェクトの補正座標を算出してもよい。
【0018】
この構成によれば、例えば仮想ゲーム空間内に複数の第2オブジェクトが存在する場合に、各第2オブジェクトの位置座標が同じ割合で移動するように補正されるので、各第2オブジェクトがそれぞれの補正座標に配置された結果、仮想カメラの撮像方向における所定点からの距離が相対的に遠い第2オブジェクトが、所定点からの距離が相対的に近い第2オブジェクトよりも所定点に近い状態で表示されるといった不自然な表示が行われることが効果的に防止される。
【0019】
座標判定手段は、仮想カメラの撮像方向に対して、第2オブジェクトが所定点よりも仮想カメラ側に位置するか否かを判定してもよい。
【0020】
この構成によれば、第2オブジェクトの位置座標が所定点よりも仮想カメラ側に位置するか否かの判定に、その位置座標の撮像方向成分のみを使用すればよいので、座標判定手段による判定が容易になる。
【0021】
座標判定手段は、仮想カメラの位置座標と所定点とを端点とする線分の方向、及び所定点と第2オブジェクトの位置座標とを端点とする線分の方向に基づいて、その第2オブジェクトが所定点よりも仮想カメラ側に位置するか否かを判定してもよい。
【0022】
この構成によれば、座標判定手段による判定が容易になる。
【0023】
座標判定手段は、ベクトル算出手段、及びベクトル判定手段を含んでいてもよい。ベクトル算出手段は、仮想カメラの位置を始点とし且つ所定点を終点とするカメラ方向ベクトル、及び所定点を始点とし且つ第2オブジェクトの位置座標を終点とするオブジェクト方向ベクトルを算出する。ベクトル判定手段は、ベクトル算出手段によって算出されたカメラ方向ベクトル及びオブジェクト方向ベクトルに基づいて、第2オブジェクトが所定点よりも仮想カメラ側に位置するか否かを判定する。
【0024】
この構成によれば、座標判定手段による判定が一層容易になる。
【0025】
座標判定手段は、カメラ方向ベクトルとオブジェクト方向ベクトルとの内積を算出する内積算出手段を更に含んでいてもよい。この場合、ベクトル判定手段は、内積算出手段によって算出された内積に基づいて、第2オブジェクトが所定点よりも仮想カメラ側に位置するか否かを判定する。
【0026】
この構成によれば、座標判定手段による判定がさらに容易になる。
【0027】
ベクトル判定手段は、内積算出手段によって算出された内積と所定の閾値との大小関係に基づいて、第2オブジェクトが所定点よりも仮想カメラ側に位置するか否かを判定する。
【0028】
この構成によれば、第2オブジェクトが所定点よりも仮想カメラ側に位置するか否かが内積算出手段によって算出された内積と閾値との大小関係に基づいて判定されるので、例えば複数の第2オブジェクトに対して判定を行う場合に、正確な判定を行うことが可能となる。
【0029】
位置座標算出手段は、2つ以上の第2オブジェクトの位置座標を算出する。これに対して、座標判定手段は、位置座標算出手段によって位置座標が算出された第2オブジェクト毎に、所定点よりも仮想カメラ側に位置するか否かを判定する。
【0030】
この構成により、仮想カメラの視野範囲外に位置する複数の第2オブジェクトを視野範囲に含めた状態の仮想ゲーム空間の画像が表示される。このため、仮想カメラの視野範囲外に位置する一方の第2オブジェクトは画面に表示されるのに対して、同じく視野範囲外に位置する他方の第2オブジェクトは画面に表示されないといった不自然な表示が行われることが防止される。
【0031】
所定点は、仮想カメラの撮像方向に対して、仮想カメラの位置と第1オブジェクトとの間、又は仮想カメラの位置と仮想カメラによって注視される注視点との間に設定されていることが好ましい。
【0032】
所定点が第1オブジェクトよりも仮想カメラの撮像方向の前方に設定された場合、第1オブジェクトの前方に位置する第2オブジェクトに対して補正座標を算出する処理が行われ、その結果、第2オブジェクトをかえって第1オブジェクトから遠ざけた状態の画像が表示されることが考えられる。これは、仮想カメラの撮像方向に関して所定点が注視点の前方に設定された場合も同様である。上記構成によれば、仮想カメラの撮像方向に関して、第1オブジェクトの後方に位置するはずの第2オブジェクトが第1オブジェクトの前方に位置した状態で表示されたり、或いは所定点の後方に位置するはずの第2オブジェクトが所定点の前方に位置した状態で表示されるといった不自然な表示が行われることが防止される。
【0033】
所定点は、第1オブジェクトの位置座標又は注視点であってもよい。
【0034】
この構成によれば、第2オブジェクトを仮想カメラの撮像方向へ第1オブジェクト又は注視点に近づけた、自然な画像を表示することが可能になる。
【0035】
表示手段は、第1オブジェクト及び第2オブジェクトがそれぞれの位置座標に位置する空間とは異なる描画用空間の画像を、仮想カメラで撮像した画像として表示装置に表示させる。
【0036】
ゲーム装置では、第1オブジェクト及び第2オブジェクトがそれぞれの位置座標に位置する空間に基づいて、各オブジェクトの移動制御や接触判定等の一般的なゲーム処理が行われる。上記構成によれば、この空間とは別の描画用空間の画像が表示装置に表示される。このように、本発明の処理によってゲーム空間内の各オブジェクトの位置座標が変更される訳ではないので、各種ゲームで一般的に行われているゲーム処理に支障をきたすことなく、仮想カメラの視野範囲外に位置する第2オブジェクトを視野範囲に含めた状態の仮想ゲーム空間の画像を表示することが可能になる。
【0037】
表示手段は、第1オブジェクト及び座標判定手段によって仮想カメラ側に位置しないと判定された第2オブジェクトの位置座標と、座標判定手段によって仮想カメラ側に位置すると判定された第2オブジェクトの補正座標とを各オブジェクトの重心座標として仮想カメラで撮像した画像を表示装置に表示させることが好ましい。
【0038】
この構成によれば、仮想カメラの視野範囲外に位置する第2オブジェクトを視野範囲に含めた状態の仮想ゲーム空間の画像をより自然に表示することが可能になる。
【0039】
ゲームプログラムは、コンピュータを、プレイヤによって操作される入力手段からの操作情報の入力を受け付ける入力受付手段として更に機能させる。この場合、位置座標算出手段は、入力受付手段によって受け付けられた操作情報に基づいて第1オブジェクトの位置座標を算出する。
【0040】
第1オブジェクトは、プレイヤによって操作されるプレイヤオブジェクトであり、表示装置の画面には、プレイヤオブジェクトを注視した仮想ゲーム空間の画像が表示される。その画像には、仮想カメラの視野範囲外に位置する第2オブジェクトとして、例えばプレイヤオブジェクトを攻撃する敵オブジェクトや敵オブジェクトから出射されたミサイル等が表示される。このため、敵オブジェクトが、プレイヤオブジェクトの近くに位置しているにも拘わらず仮想カメラの視野範囲外に位置しているために表示されないといった不利益をプレイヤが被ることが効果的に防止される。
【0041】
また、本発明は、仮想ゲーム空間に含まれるオブジェクトを仮想カメラで撮像した画像を表示装置に表示させるゲーム装置として捉えることもできる。このゲーム装置は、位置座標算出手段、座標判定手段、補正座標算出手段、及び表示手段を備える。位置座標算出手段は、仮想カメラによって注視されるオブジェクトである第1オブジェクト、及び第1オブジェクトとは異なる少なくとも1つのオブジェクトである第2オブジェクトの位置座標を算出する。座標判定手段は、第2オブジェクトの位置座標に基づいて、その第2オブジェクトが仮想カメラの前方の所定点よりも仮想カメラ側に位置するか否かを判定する。補正座標算出手段は、座標判定手段によって仮想カメラ側に位置すると判定された第2オブジェクトに対して、その第2オブジェクトの位置座標を所定点側へ移動させた座標である補正座標を算出する。表示手段は、第1オブジェクトがその位置座標に位置し、且つ座標判定手段によって仮想カメラ側に位置すると判定された第2オブジェクトが補正座標に位置する仮想ゲーム空間の画像を表示装置に表示させる。
【0042】
また、本発明は、仮想ゲーム空間に含まれるオブジェクトを仮想カメラで撮像した画像を表示装置に表示させるゲームの表示方法として捉えることもできる。この表示方法では、まず、仮想カメラによって注視されるオブジェクトである第1オブジェクト、及び第1オブジェクトとは異なる少なくとも1つのオブジェクトである第2オブジェクトの位置座標を算出するステップが実行される。次に、第2オブジェクトの位置座標に基づいて、その第2オブジェクトが仮想カメラの前方の所定点よりも仮想カメラ側に位置するか否かを判定するステップが実行される。続いて、仮想カメラ側に位置すると判定された第2オブジェクトに対して、その第2オブジェクトの位置座標を所定点側へ移動させた座標である補正座標を算出するステップが実行される。そして、第1オブジェクトがその位置座標に位置し、且つ仮想カメラ側に位置すると判定された第2オブジェクトが補正座標に位置する仮想ゲーム空間の画像を表示装置に表示させるステップが実行される。
【発明の効果】
【0043】
この発明によれば、例えば仮想カメラの後方などの仮想カメラの視野範囲外に位置するオブジェクトを視野範囲内に含めた状態の仮想ゲーム空間の画像を表示することができる。このため、仮想カメラの視点を注視対象から離すことなく、従来の描画方法では写らないオブジェクトを表示することができる。
【図面の簡単な説明】
【0044】
【図1】ゲームシステム1の外観斜視図
【図2】本発明の一実施形態に係るゲーム装置3の構成を示すブロック図
【図3】コントローラ7の上面後方から見た斜視図
【図4】コントローラ7を下面前方から見た斜視図
【図5】コントローラ7の構成を示すブロック図
【図6】仮想ゲーム空間の模式図
【図7】外部メインメモリ12のメモリ構成の一例を示す図
【図8】本発明の一実施形態に係るゲームプログラムを実行するゲーム装置3の機能構成の一例を示す機能構成図
【図9】座標判定部103による判定処理を説明するための図
【図10】ノンプレイヤオブジェクトの補正座標の算出方法を説明するための図
【図11】ミサイル43〜47が撮像方向81へ移動した状態を示す仮想ゲーム空間の模式図
【図12】ゲーム装置3で実行されるメイン処理の一例を示すフローチャート
【図13】図12のステップS6における描画処理の詳細フローチャート
【図14】図13のステップS61における補正座標算出処理の詳細フローチャート
【図15】位置座標に対する補正座標の移動方向の変形例について説明するための図
【図16】プレイヤオブジェクト31の位置座標80とは異なる注視点77を所定点とした場合の位置座標と補正座標との位置関係について説明するための図
【図17】補正フラグ136の設定方法の変形例について説明するための図
【発明を実施するための形態】
【0045】
以下、適宜図面を参照しつつ、本発明の一実施形態について説明する。図1は、本発明の一実施形態に係るゲーム装置3を含むゲームシステム1の外観斜視図である。本実施形態では、本発明に係るゲーム装置が据置型のゲーム装置3である場合を例にして、本発明に係るゲーム装置及びゲームプログラムについて説明するが、本発明に係るゲーム装置は、例えばゲーム装置と表示装置とが一体的に構成された携帯型のゲーム装置であってもよい。
【0046】
[ゲームシステム1の全体構成]
まず、ゲームシステム1の各構成の概略を説明する。図1において、ゲームシステム1は、液晶テレビ2、ゲーム装置3、光ディスク4、マーカ部6、及びコントローラ7を含む。本システム1は、コントローラ7を用いたプレイヤのゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0047】
ゲーム装置3には、ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が着脱可能に挿入される。光ディスク4には、ゲーム装置3において実行されるゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4からゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0048】
ゲーム装置3には、液晶テレビ2(表示装置の一例)が接続コードを介して接続される。後述するが、ゲーム装置3は、仮想カメラ30(図6参照)の視点から見たオブジェクトを含む仮想ゲーム空間の画像(ゲーム画像)を生成して液晶テレビ2へ出力する。この一連の処理は、本実施形態では、フレーム単位(例えば1/60秒間隔)で行われる。液晶テレビ2は、このようにしてゲーム装置3から出力されるゲーム画像を受信して表示画面に表示する。
【0049】
液晶テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6R及び6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1個以上の赤外LEDであって、液晶テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。また、マーカ部6には、不図示のマイクロフォンが配設され、該マイクロフォンを介して入力された音声情報は、ゲーム装置3に入力される。
【0050】
コントローラ7は、プレイヤによって操作される入力手段であって、自機に対して行われた操作の内容を示す操作データをゲーム装置3へ出力する入力装置である。コントローラ7とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ7とゲーム装置3との間の無線通信にBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においては、コントローラ7とゲーム装置3とは有線で接続されてもよい。
【0051】
[ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、及びAV−IC15等を有する。
【0052】
CPU10は、光ディスク4に格納されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、及びAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。
【0053】
外部メインメモリ12は、揮発性メモリである。外部メインメモリ12は、光ディスク4から読み出されたゲームプログラム、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを格納したり、各種データを格納したりするものであり、CPU10のワーク領域、バッファ領域等として用いられる。
【0054】
ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆる、ブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。
【0055】
ディスクドライブ14は、光ディスク4からプログラムデータ、テクスチャデータ等を読み出し、後述する内部メインメモリ11e又は外部メインメモリ12に読み出したデータを書き込む。
【0056】
システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、及び内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0057】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータ、テクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0058】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11e、外部メインメモリ12等に格納されるサウンドデータ、音波形(音色)データ等を用いて、音声データを生成する。
【0059】
上述のように生成された画像データ及び音声データは、AV−IC15によって読み出
される。AV−IC15は、読み出した画像データを、AVコネクタ16を介して液晶テレビ2に出力するとともに、読み出した音声データを、液晶テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像が液晶テレビ2に表示されるとともに音がスピーカ2aから出力される。
【0060】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、及びメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0061】
入出力プロセッサ11aは、無線通信モジュール18及びアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データがある場合には、無線通信モジュール18及びアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22及び無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記録する。CPU10は、ゲームプログラムを実行することにより、フラッシュメモリ17に格納されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データ又は途中データ)が格納されてもよい。
【0062】
また、入出力プロセッサ11aは、コントローラ7から送信される操作データをアンテナ23及び無線コントローラモジュール19を介して受信し、内部メインメモリ11e又は外部メインメモリ12のバッファ領域に格納(一時記憶)する。
【0063】
更に、入出力プロセッサ11aには、拡張コネクタ20及びメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に換えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0064】
ゲーム装置3には、電源ボタン24、リセットボタン25、及びイジェクトボタン26が設けられる。電源ボタン24及びリセットボタン25は、システムLSI11に接続される。電源ボタン24が押下されると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押下されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押下されると、ディスクドライブ14から光ディスク4が排出される。
【0065】
[コントローラ7の構成]
図3及び図4を参照して、コントローラ7の外部構成について説明する。図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
【0066】
図3及び図4に示されるように、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有している。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供が片手で把持可能な大きさに構成されている。このハウジング71には、操作部72が配置されている。
【0067】
ハウジング71の上面に配置された操作部72は、十字キー72a、操作ボタン72b〜72g、及び操作ボタン72hから構成されている。
【0068】
十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって、前後左右いずれかの方向が選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤオブジェクト等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0069】
操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、及びAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、及びプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプの操作ボタンである。
【0070】
操作ボタン72hは、遠隔からゲーム装置3の電源をオン/オフする電源スイッチである。この操作ボタン72hは、ハウジング71の上面に埋没しており、操作ボタン72fと同じタイプの操作ボタンである。
【0071】
ハウジング71の上面には、操作部72の他に複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から無線通信モジュール18(図2参照)へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702の内、種別に対応するLEDが点灯する。
【0072】
また、ハウジング71の上面には、操作ボタン72b及び操作ボタン72e〜72gの間に、ハウジング71に内蔵されたスピーカ706(図5参照)からの音を外部に放出するための音抜き孔が形成されている。
【0073】
図4に示されているように、ハウジング71の下面には、凹部が形成されている。ハウジング71の下面の凹部は、プレイヤがコントローラ7の前面をマーカ6L及び6Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、プレイヤがボタン頭部を押下することによって、操作ボタン72iに割り当てられた操作信号を出力するものであり、例えばBボタンとして機能する。
【0074】
ハウジング71の前面には、撮像情報演算部74(図5参照)の一部を構成する撮像素子743(図5参照)が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0075】
次に、図5を参照して、コントローラ7の内部構成について説明する。図5は、コントローラ7の構成を示すブロック図である。
【0076】
図5に示されるように、コントローラ7は、上述した操作部72の他に、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、アンプ708、及び通信部75を備えている。
【0077】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、及び画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサや或いはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。すなわち、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、この撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによって、その撮像方向が変更される。
【0078】
加速度センサ701は、図3に示されている3軸(X、Y、Z軸)の加速度センサである。この加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、及び前後方向(図3に示すZ軸)で直線加速度を検知する。
【0079】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、及びアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置3からのデータに応じて、サウンドIC707及びバイブレータ704の動作を制御する。無線モジュール753及びアンテナ754を備えていることにより、コントローラ7がワイヤレスコントローラとして機能する。
【0080】
サウンドIC707は、通信部75を介してゲーム装置3から送信されたサウンドデータ等を処理する。このサウンドデータがアンプ708で増幅されてスピーカ706へ送られることで、スピーカ706から音声が出力される。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、通信部75を介してゲーム装置3から送信された振動データ(例えば、バイブレータ704をON又はOFFする信号)等に応じて作動する。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【0081】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、及びZ軸方向加速度データ)、及び撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力された各データ(キーデータ、X、Y、及びZ軸方向加速度データ、処理結果データ)を無線通信モジュール18(図2参照)へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線通信モジュール18への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥースで構成される通信部75の送信間隔は5msである。マイコン751は、無線通信モジュール18への送信タイミングが到来すると、メモリ752に格納されている操作情報を一連の操作データとして出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥースの技術を用いて、所定周波数の搬送波を用いて操作データをその電波信号としてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、及びZ軸方向加速度データ、及び撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置3の無線通信モジュール18でその電波信号(操作データ)を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、及びZ軸方向加速度データ、及び処理結果データ)を取得する。そして、ゲーム装置3のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を実行する。
【0082】
なお、上述したハードウェア構成は単なる一例に過ぎず、ゲーム装置3やコントローラ7の構成は適宜変更可能である。
【0083】
[ゲームの概要]
次に、ゲーム装置3のCPU10がゲームプログラムを実行することによって進行するシューティングゲームの概要について説明する。図6は、仮想ゲーム空間の模式図である。図6に示されるように、仮想ゲーム空間には、プレイヤオブジェクト31(第1オブジェクトの一例)、ミサイル41〜47(第2オブジェクトの一例)、及び仮想カメラ30が存在する。プレイヤオブジェクト31は、プレイヤによるコントローラ7の操作に応じて仮想ゲーム空間内を移動するオブジェクトである。ミサイル41〜47は、プレイヤオブジェクトを攻撃する不図示の敵オブジェクトから出射されたミサイルであり、いわゆるノンプレイヤオブジェクトである。仮想カメラ30は、プレイヤオブジェクト31と一定の距離を保ちながらプレイヤオブジェクト31を注視するように、その視点位置、視野角、位置座標、移動速度等が制御される。これにより、仮想カメラ30の視点からプレイヤオブジェクト31を見た仮想ゲーム空間の画像が液晶テレビ2の画面に表示される。プレイヤオブジェクト31は、仮想カメラ30によって注視されているため、液晶テレビ2の画面中央部に表示される。なお、仮想ゲーム空間内には、プレイヤオブジェクト31やミサイル41〜47の他に、ミサイル41〜47を出射した敵オブジェクト、地面や海などの地形オブジェクトが存在するが、図6以降に示す仮想ゲーム空間の模式図においては、これらのオブジェクトが省略されている。また、本実施形態では、ゲームプログラムに基づいてシューティングゲームが実行される場合について説明するが、本発明は、仮想ゲーム空間内のオブジェクトを仮想カメラの視点(3人称視点)から見た画像を表示するゲームであれば、例えばアクションゲーム等の他のゲームにも適用可能である。
【0084】
図6に示されるように、ミサイル41〜47のうち、仮想カメラ30の視野範囲内に含まれているのは、ミサイル41〜43である。このため、従来の描画方法であれば、仮想カメラ30の視野範囲外に存在するミサイル44〜47については、プレイヤオブジェクト31と共に液晶テレビ2の画面に表示することはできない。これに対して、本実施形態に係るゲーム装置3は、通常であれば液晶テレビ2の画面に表示されないミサイル44,45,47を表示可能としたことを主な特徴としている。以下、ミサイル44,45,47を表示可能とするためのゲーム装置3の構成、及びゲーム装置3において行われる処理について詳細に説明する。
【0085】
[主要データ]
図7は、外部メインメモリ12のメモリ構成の一例を示す図である。図7に示されるように、外部メインメモリ12は、プログラム記憶領域121、データ記憶領域125、及び作業領域132を有している。プログラム記憶領域121には、CPU10によって実行されるゲームプログラムが記憶される。プログラム記憶領域121及びデータ記憶領域125内のデータは、光ディスク4に予め記憶されたデータが、ゲーム処理に際して光ディスク4から外部メインメモリ12に読み出されたものである。
【0086】
プログラム記憶領域121には、メイン処理プログラム122、描画処理プログラム123、補正座標算出処理プログラム124が記憶されている。メイン処理プログラム122は、後述する図12に示されているメイン処理をCPU10に実行させるためのプログラムである。描画処理プログラム123は、後述する図13に示されている描画処理をCPU10に実行させるためのプログラムである。補正座標算出処理プログラム124は、後述する図14に示されている補正座標算出処理をCPU10に実行させるためのプログラムである。
【0087】
データ記憶領域125には、プレイヤオブジェクトデータ126、ノンプレイヤオブジェクトデータ127、地形オブジェクトデータ128、閾値データ129、移動割合データ130、エフェクトデータ131が記憶されている。
【0088】
プレイヤオブジェクトデータ126は、プレイヤオブジェクト31に関するデータであり、プレイヤオブジェクト31のモデリングデータ、テクスチャーデータ(RGB値)等から構成される。ノンプレイヤオブジェクトデータ127は、ミサイル41〜47、敵オブジェクト等のノンプレイヤオブジェクトに関するデータであり、ノンプレイヤオブジェクトのモデリングデータ、テクスチャーデータ(RGB値)等から構成される。地形オブジェクトデータ128は、仮想ゲーム空間内の地面、海、川等の様々な地形に関するデータである。エフェクトデータ131は、ゲーム中に用いられる各種エフェクトに用いられる画像データである。エフェクトデータ131としては、例えばミサイル41がプレイヤオブジェクト31に命中したことを示す画像データが挙げられる。
【0089】
閾値データ129は、後述する図14の補正座標算出処理において使用される閾値を示すデータであり、補正座標算出処理に際してデータ記憶領域125から適宜読み出される。移動割合データ130は、仮想カメラ30の視野範囲内に含まれていないミサイル44〜47を仮想カメラ30の撮像方向81(図6参照)へ移動させる割合を規定するデータである。この移動割合データ130は、閾値データ129と同様に補正座標算出処理において使用されるデータであり、補正座標算出処理に際して閾値データ129と共に適宜読み出される。
【0090】
作業領域132は、ゲーム処理において生成されたデータを一時的に格納する記憶領域である。この作業領域132には、操作データ133、位置座標データ134、仮想カメラデータ135、補正フラグ136、及び補正座標データ137が格納される。
【0091】
操作データ133は、コントローラ7からゲーム装置3へ送信された操作データである。操作データは、コントローラ7からゲーム装置3へ5ms毎に送信される。このため、操作データ133は、コントローラ7から送信された操作データがゲーム装置3によって受信される毎に更新される。
【0092】
位置座標データ134は、プレイヤオブジェクト30やミサイル41〜47等の各種オブジェクトの仮想ゲーム空間における位置座標を示すデータであり、例えばワールド座標系によって表される座標のデータである。これらの各オブジェクトの位置座標に基づいて、例えばプレイヤオブジェクト30とミサイル41〜47との接触判定等の一般的なゲーム処理が行われる。なお、図には示されていないが、作業領域132には、各オブジェクトに関するデータとして、各オブジェクトが移動する向きを示すデータ、各オブジェクトの1フレーム毎の移動量を示すデータ等が記憶されている。
【0093】
仮想カメラデータ135は、仮想カメラ30に関するデータであり、仮想カメラ30の視点位置を示すデータ、仮想カメラ30の撮像方向81を示すデータ、仮想カメラ30の仰角を示すデータ等から構成されている。
【0094】
補正フラグ136は、仮想カメラ30の視野範囲内に含めるべきオブジェクトであることを示すためのデータである。作業領域132には、仮想ゲーム空間内に存在するプレイヤオブジェクト31を除くその他のオブジェクト毎に、補正フラグ136が記憶されている。例えばプレイヤオブジェクト31に対して近付いてくる或いは攻撃してくるミサイル41〜47や敵オブジェクト等のノンプレイヤオブジェクトについては、仮想カメラ30の視野範囲内に含めることが必要な場合がある。これは、ノンプレイヤオブジェクトがプレイヤオブジェクト31の近くに位置しているにも拘わらず仮想カメラ30の視野範囲に含まれないために液晶テレビ2の画面に表示されず、プレイヤが不利益を被る可能性があるからである。このため、本実施形態では、ノンプレイヤオブジェクトに対しては、補正フラグ136が“1”に設定される。一方、ゲームの進行に伴ってプレイヤオブジェクト31から離れていく地形オブジェクト等のその他のオブジェクトは、プレイヤオブジェクト31に近付いてきたり或いはプレイヤオブジェクト31を攻撃することはないため、必ずしも仮想カメラ30の視野範囲内に含める必要はない。このため、本実施形態では、地形オブジェクト等のその他のオブジェクトに対しては、補正フラグ136が“0”に設定される。ただし、地形オブジェクトであっても、例えばプレイヤオブジェクト31に近付いてきてプレイヤオブジェクト31に衝突した場合にプレイヤオブジェクト31に対してダメージを与えるような壁オブジェクトについては、補正フラグ136が“1”に設定される。このように、補正フラグ136の設定は、ゲームの内容に応じて適宜設定される。
【0095】
補正座標データ137は、補正フラグ136が“1”に設定されているオブジェクトのうち、仮想ゲーム空間の画像を描画するに際して、仮想カメラ30の視野範囲内に含めるための補正座標を示すデータである。後に詳述するが、補正座標データ137が記憶されていないオブジェクト(例えばプレイヤオブジェクト31やミサイル41,42)は、位置座標データ134が示す位置座標に位置した状態で液晶テレビ2の画面に表示され、補正座標データ137が記憶されているオブジェクト(例えばミサイル43〜47)は、この補正座標データ137が示す補正座標に位置した状態で液晶テレビ2の画面に表示される。なお、補正座標に位置した状態においても仮想カメラ30の視野範囲内に位置しないオブジェクトについては、液晶テレビ2に表示されることはない。
【0096】
なお、以上説明した主要データは、外部メインメモリ12に換えて内部メインメモリ11eに記憶されてもよいし、或いは外部メインメモリ12及び内部メインメモリ11eの両方に記憶されてもよい。
【0097】
[ゲーム装置3の機能構成]
図8は、本実施形態に係るゲームプログラムを実行するゲーム装置3の機能構成の一例を示す機能構成図である。図8に示されるように、ゲーム装置3のCPU10は、機能的に、入力受付手段として機能する入力受付部101、位置座標算出手段として機能する位置座標算出部102、座標判定手段として機能する座標判定部103、補正座標算出手段として機能する補正座標算出部104、及び表示手段として機能する表示部105を備えている。
【0098】
ゲーム装置3のCPU10は、光ディスク4等に予め格納された本発明に係るゲームプログラムを実行することにより、入力受付部101、位置座標算出部102、座標判定部103、補正座標算出部104、及び表示部105として機能する。以下、図6に示されているように仮想ゲーム空間内にプレイヤオブジェクト31及びミサイル41〜47が存在する場合を例に、各機能部によって行われる処理について説明する。
【0099】
入力受付部101は、コントローラ7からの操作情報の入力を受け付ける。具体的には、入力受付部101は、コントローラ7から送信された電波信号を無線通信モジュール19によって受信し、その電波信号を復調又は複合して得られた操作情報を操作データ133として作業領域132(図7参照)に格納する。
【0100】
位置座標算出部102は、仮想ゲーム空間におけるプレイヤオブジェクト31、ミサイル41〜47、及び仮想カメラ30の視点の位置座標を算出する。上述したように、プレイヤがコントローラ7を操作することにより、コントローラ7から送信された操作データが操作データ133として入力受付部101によって作業領域132に格納される。位置座標算出部102は、この入力受付部101によって受け付けられた操作データ133が示す操作情報に基づいて、プレイヤオブジェクト31の位置座標を算出する。このプレイヤオブジェクト31の位置座標、及びミサイル41〜47の位置座標は、位置座標データ134として作業領域132に格納される。コントローラ7から操作データが送信される毎に(例えば5ms間隔で)操作データ133が更新されるのに対して、この位置座標データ134は、最新の操作データ133に基づいて、フレーム単位(例えば1/60秒間隔)で更新される。
【0101】
座標判定部103は、仮想カメラ30の撮像方向81に関して、ミサイル41〜47がプレイヤオブジェクト31よりも仮想カメラ30側に位置するか否かを判定するものである。図9は、座標判定部103による判定処理を説明するための図である。図6及び図9(A)に示されるように、座標判定部103は、仮想カメラ30の撮像方向81に関して、プレイヤオブジェクト31の重心位置の位置座標80(所定点の一例)よりも仮想カメラ30側に位置するか否かの判定処理を、ミサイル41〜47の各ノンプレイヤオブジェクトに対して行う。図6に示される仮想ゲーム空間の状態では、ミサイル41,42がプレイヤオブジェクト31よりも仮想カメラ30側に位置していないと判定され、ミサイル43〜47がプレイヤオブジェクト31よりも仮想カメラ30側に位置していると判定される(図9(A)参照)。座標判定部103は、このような判定処理を容易に行うために、本実施形態においては、ベクトル算出部1031、内積算出部1032、及びベクトル判定部1033から構成されている。
【0102】
ベクトル算出部1031は、位置座標算出部102によって算出されたミサイル41〜47の位置座標に基づいて、ミサイル41〜47の各オブジェクトに対して、オブジェクト方向ベクトルV1及びカメラ方向ベクトルV2を計算する。ここで、カメラ方向ベクトルV2は、仮想カメラ30の位置(例えば仮想カメラ30の視点)を始点とし且つプレイヤオブジェクト31の位置座標を終点とするベクトルである。オブジェクト方向ベクトルV1は、プレイヤオブジェクト31の位置座標を始点とし且つノンプレイヤオブジェクト(例えばミサイル44)の位置座標を終点とするベクトルである。
【0103】
例えばミサイル44に対してベクトルV1,V2を算出する場合、図9(B)に示されるように、ベクトル算出部1031は、位置座標算出部102によって算出された仮想カメラ30の視点の位置座標29、及びプレイヤオブジェクト31の位置座標80に基づいて、仮想カメラ30の視点の位置座標29を始点とし且つプレイヤオブジェクト31の位置座標80を終点とするカメラ方向ベクトルV2を計算する。そして、ベクトル算出部1031は、位置座標算出部102によって算出されたプレイヤオブジェクト31の位置座標80、及びミサイル44の位置座標34に基づいて、プレイヤオブジェクト31の位置座標80を始点とし且つミサイル44の位置座標34を終点とするミサイル44のオブジェクト方向ベクトルV1を算出する。なお、ここではミサイル44に対するオブジェクト方向ベクトルV1を算出する場合を例に説明したが、ミサイル43,45〜47についても同様の方法でオブジェクト方向ベクトルV1が算出される。また、ここではカメラ方向ベクトルV2の始点が仮想カメラ30の視点の位置座標29である場合を例に説明したが、カメラ方向ベクトルV2の始点は、仮想カメラ30の他の位置であってもよい。
【0104】
内積算出部1032は、ミサイル41〜47のそれぞれに対して、カメラ方向ベクトルV2とオブジェクト方向ベクトルV1との内積を算出する。これにより、仮想カメラ30の撮像方向81におけるプレイヤオブジェクト31の位置座標80から各ノンプレイヤオブジェクトの位置座標までの距離を求めることができる。
【0105】
ベクトル判定部1033は、内積算出部1032によって算出された内積と、データ記憶領域125に記憶されている閾値データ129(図7参照)が示す閾値(所定の閾値の一例)との大小関係に基づいて、ノンプレイヤオブジェクトがプレイヤオブジェクト31よりも仮想カメラ30側に位置するか否かを判定する。本実施形態においては、閾値として“0”を示す閾値データ129がデータ記憶領域125に記憶されている。このため、ベクトル判定部1033は、内積算出部1032によって算出された内積が“0”未満であるか否かに基づいて、ノンプレイヤオブジェクトがプレイヤオブジェクト31よりも仮想カメラ30側に位置するか否かを判定する。
【0106】
例えばミサイル44の場合、カメラ方向ベクトルV2とオブジェクト方向ベクトルV1とのなす角度が90°以上であるため、ミサイル44に対する内積、すなわち仮想カメラ30の撮像方向81における位置座標80から位置座標34までの距離がマイナスとなる。このため、ベクトル判定部1033は、ミサイル44に対しては、プレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置していると判定する。
【0107】
なお、ミサイル43,45〜47は、カメラ方向ベクトルV2とオブジェクト方向ベクトルV1とのなす角度が90°以上であるため、ミサイル44と同様に、プレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置していると判定される。これに対して、ミサイル41,42は、カメラ方向ベクトルV2とオブジェクト方向ベクトルV1とのなす角度が90°未満であるために両ベクトルの内積がプラスとなる。このため、ミサイル41,42については、プレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置していないと判定される。
【0108】
このように、座標判定部103は、仮想カメラ30の撮像方向81、及びプレイヤオブジェクト31の位置座標80からノンプレイヤオブジェクトへの向きに基づいて、ノンプレイヤオブジェクトがプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置しているか否かを、ノンプレイヤオブジェクト毎に判定する。
【0109】
補正座標算出部104は、仮想カメラ30側に位置すると座標判定部103によって判定されたノンプレイヤオブジェクト(ここではミサイル43〜47)に対して、各ミサイル43〜47の位置座標を仮想カメラ30の撮像方向81へ移動させた補正座標を算出する。
【0110】
ところで、ノンプレイヤオブジェクト(例えばミサイル44)の補正座標がプレイヤオブジェクト31の位置座標80に対して撮像方向81の前方(図9に示されている一点鎖線よりも上側)となった場合、本来はプレイヤオブジェクト31の後方に位置するはずのノンプレイヤオブジェクトがプレイヤオブジェクト31の前方に位置した状態で液晶テレビ2の画面に表示されることになる。このため、このような不自然な表示が行われないように、補正座標算出部104は、本実施形態では、仮想カメラ30側に位置すると判定されたノンプレイヤオブジェクトの位置座標をプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側(図9に示されている一点鎖線よりも下側)に移動させた座標を、そのノンプレイヤオブジェクトの補正座標として算出する。言い換えれば、補正座標算出部104は、算出すべき補正座標が撮像方向81に関して位置座標80の前方(図9に示されている一点鎖線よりも上側)に位置しないように、補正座標を算出する。
【0111】
図10は、ノンプレイヤオブジェクトの補正座標の算出方法を説明するための図である。以下、図10を参照しつつ、ミサイル44の補正座標を算出する場合を例に、補正座標の具体的な算出方法について説明する。補正座標算出部104は、補正座標を算出すべきノンプレイヤオブジェクトの位置座標から仮想カメラ30の撮像方向81における成分を消すために、以下の式(1)で示される演算処理を実行する。
【0112】
【数1】

式(1)において、P1はミサイル44の位置座標であり、V2はカメラ方向ベクトルであり(図9(B)参照)、Fはカメラ方向ベクトルV2とオブジェクト方向ベクトルV1(図9(B)参照)との内積である。そして、P2は、ミサイル44を撮像方向81に関してプレイヤオブジェクト31の位置座標80の位置まで移動させた仮座標である。この仮座標の位置は、図10(A)にミサイル64として示されている。
【0113】
次に、補正座標算出部104は、仮想ゲーム空間内では位置座標P1に位置しているミサイル44の補正座標P3を算出するために、以下の式(2)で示される演算処理を実行する。
【0114】
【数2】

式(2)において、P2はミサイル44の仮座標であり、V2はカメラ方向ベクトルであり、Fはカメラ方向ベクトルV2とオブジェクト方向ベクトルV1(図9(B)参照)との内積であり、Nは補正座標をどの程度プレイヤオブジェクト31の位置座標80へ近付けた位置とするかを規定するための補正係数である。この式(2)に基づく演算処理が実行されることにより、図10(B)に示されるように、仮座標P2に位置するミサイル44(ミサイル64)を、位置座標をP1側へ戻した補正座標P3が算出される。図10(B)には、この補正座標P3に位置するミサイル44がミサイル54として例示されている。
【0115】
ミサイル44に対して式(1)及び式(2)に基づく演算処理が補正座標算出部104によって実行されることにより、ミサイル44が位置座標P1に位置している状態では撮像方向81における位置座標80からの距離がL(第1距離の一例)であるのに対して、補正座標P3に位置している状態では撮像方向81における位置座標80からの距離がL/Nとなっている。すなわち、撮像方向81における位置座標80からの距離が短くなり、位置座標80よりも仮想カメラ30側の空間が位置座標80を基準として圧縮されたような空間となる。
【0116】
図11は、ミサイル43〜47が撮像方向81へ移動した状態を示す仮想ゲーム空間の模式図である。補正座標算出部104は、ミサイル43,45〜47に対しても、ミサイル44と同様の方法でそれぞれの補正座標を算出する。図11には、ミサイル43〜47が、本来あるべき位置座標に位置している状態から補正座標算出部104によって算出された補正座標の位置に移動する様子が模式的に示されている。図11では、本来あるべき位置座標に位置しているミサイル43がミサイル53として示され、本来あるべき位置座標に位置しているミサイル44がミサイル54として示され、本来あるべき位置座標に位置しているミサイル45がミサイル55として示され、本来あるべき位置座標に位置しているミサイル46がミサイル56として示され、本来あるべき位置座標に位置しているミサイル47がミサイル57として示されている。図11から明らかなように、仮想カメラ30の視野範囲外に位置しているノンプレイヤオブジェクト(ここではミサイル44,45,47)が、補正座標に配置されることで仮想カメラ30の視野範囲内に含まれているのが分かる。
【0117】
以上説明したように、補正座標算出部104は、仮想カメラ30の撮像方向81におけるプレイヤオブジェクト31の位置座標80からノンプレイヤオブジェクトの位置座標までの距離(ミサイル44の場合にはL)に基づいて、仮想カメラ30の撮像方向81におけるプレイヤオブジェクト31の位置座標80からノンプレイヤオブジェクトの補正座標までの距離を、仮想カメラ30の撮像方向81におけるプレイヤオブジェクト31の位置座標からノンプレイヤオブジェクトの位置座標までの距離の所定割合(本実施形態では1/N)となるように、各ノンプレイヤオブジェクトの補正座標を算出する。
【0118】
なお、仮想カメラ30の視野範囲外に位置しているミサイル46については、補正座標に配置されたとしても仮想カメラ30の視野範囲内に含まれていないが、上記式(2)における補正係数Nの値を大きくすることで、ミサイル46の補正座標を仮想カメラ30の視野範囲内に含めることができる。すなわち、仮想カメラ30の視野範囲内に含まれるノンプレイヤオブジェクトの数を多くすることができる。しかしながら、補正係数Nの値を大きくし過ぎると、撮像方向81におけるプレイヤオブジェクト31の後方の空間が必要以上に圧縮され過ぎて、各ノンプレイヤオブジェクトが実際よりもプレイヤオブジェクト30に対してかなり近い位置に表示され、不自然さが目立つようになる。したがって、補正係数Nの値は、これらのことを考慮して、適切な値に設定される。
【0119】
表示部105は、プレイヤオブジェクト31、及びプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置しないと判定されたミサイル41,42がそれぞれの位置座標に位置すると共に、プレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置すると判定されたミサイル43〜47がそれぞれの補正座標に位置する状態を示す描画用空間の画像を生成する。その際、表示部105は、各オブジェクトの位置座標又は補正座標を各オブジェクトの重心座標として、描画用空間の画像を生成する。ここで、描画用空間は、全てのオブジェクトが本来あるべき位置座標に配置された仮想ゲーム空間とは異なる仮想ゲーム空間である。言い換えれば、描画用空間は、あくまでも本来ならば仮想カメラ30の視野範囲内に含まれないオブジェクトを視野範囲内の含ませるような補正座標に配置させた仮想ゲーム空間であり、各オブジェクトの位置座標の制御やオブジェクト同士の接触判定等は、全てのオブジェクトが本来あるべき位置座標に配置された仮想ゲーム空間に対して行われる。
【0120】
表示部105は、描画用空間の画像データを液晶テレビ2へ出力することにより、描画用空間の画像を仮想ゲーム空間の画像として液晶テレビ2に表示させる。これにより、本来ならば画面に写らないはずのオブジェクト(ここではミサイル44,45,47)がプレイヤオブジェクト31と共に表示される。
【0121】
[メイン処理]
次に、ゲーム装置3によって実行されるゲーム処理について説明する。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、ROM/RTC13に記憶されている起動プログラムを実行する。これにより、外部メインメモリ12等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムが外部メインメモリ12に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。
【0122】
図12は、ゲーム装置3で実行されるメイン処理の一例を示すフローチャートである。まず、入力受付部101は、以降の処理において用いられるデータの初期化処理を実行する(ステップS1)。具体的には、ゲーム開始時における仮想カメラ30の初期位置及び各種オブジェクトの初期配置を示すデータを外部メインメモリ12に記憶させる。また、以降の処理使用される作業領域132の各種変数やフラグも初期化する。
【0123】
続いて、3次元仮想ゲーム空間が構築されて液晶テレビ2に表示される。すなわち、CPU10は、3次元のゲーム空間を構築し、各種オブジェクトの初期配置を示すデータに従って各オブジェクトを配置する。以上のように構築されたゲーム空間を仮想カメラ30で撮像した描画用空間の画像が生成され、生成された画像が液晶テレビ2に表示される。以降、ステップS2〜S7の処理ループが1フレーム(本実施形態では1/60秒)毎に繰り返されることによって、ゲームが進行していく。
【0124】
ステップS1の初期化処理に続いて、入力受付部101は、コントローラ7からの操作情報の入力を受け付ける(ステップS2)。すなわち、プレイヤが行った操作内容を示す操作データをコントローラ7から取得する。これを受けて、位置座標算出部102は、各オブジェクトの移動処理を実行する(ステップS3)。具体的には、位置座標算出部102は、プレイヤオブジェクト31以外のオブジェクトを仮想ゲーム空間内において適宜移動させる。そして、位置座標算出部102は、仮想ゲーム空間内において、プレイヤオブジェクト30を操作データ(操作データ133)の内容に従って移動させる。
【0125】
続いて、位置座標算出部102は、プレイヤによるコントローラ7の操作に応じて仮想ゲーム空間内を移動するプレイヤオブジェクト31を注視するように仮想カメラ30に関する各パラメータ(仮想カメラ30の位置座標、プレイヤオブジェクト31からの距離、撮像方向81等)を制御する(ステップS4)。
【0126】
位置座標算出部102は、ステップS3及びステップS4の処理を踏まえて、プレイヤオブジェクト31、ミサイル41〜47等のノンプレイヤオブジェクト、地形オブジェクト等の位置座標を算出する(ステップS5)。この位置座標を算出する処理は、従来の方法と同様であるため、ここでの詳細な説明は省略する。
【0127】
次に、仮想カメラ30の視野範囲内に含まれていないノンプレイヤオブジェクトの補正座標を算出し、描画用空間の画像を液晶テレビ2に表示させる描画処理が行われる(ステップS6)。このステップS6における描画処理については、図13に基づいて詳述する。このステップS6の描画処理が行われた後、入力受付部101は、電源ボタン24、リセットボタン、又は操作ボタン72hの操作の有無に基づいて、ゲームが終了したか否かを判定する(ステップS7)。ゲームが終了していないと入力受付部101によって判定された場合(ステップS7:NO)、ステップS2以降のゲーム処理が繰り返される。逆に、ゲームが終了したと入力受付部101によって判定された場合(ステップS7:YES)、ゲーム処理が終了する。
【0128】
[描画処理]
図13は、図12のステップS6における描画処理の詳細フローチャートである。ステップS5において各オブジェクトの位置座標が算出されると、仮想カメラ30の視野範囲内に含めるべきノンプレイヤオブジェクトに対して補正座標を算出する補正座標算出処理が実行される(ステップS61)。この補正座標算出処理については、図14に基づいて詳述する。
【0129】
仮想カメラ30の視野範囲内に含めるべきノンプレイヤオブジェクトに対して補正座標が算出されると、表示部105は、描画用空間の画像を生成して液晶テレビ2へ出力する(ステップS62)。具体的には、表示部105は、補正座標が算出されてないノンプレイヤオブジェクト(本実施形態ではミサイル41,42)及びプレイヤオブジェクト31が位置座標に位置すると共に、補正座標が算出されたノンプレイヤオブジェクト(本実施形態ではミサイル43〜47)が補正座標に位置した状態で仮想カメラ30によって撮像された描画用空間の画像データをGPU11bに生成させる。そして、表示部105は、このようにして生成した描画用空間の画像データを液晶テレビ2へ出力して、液晶テレビ2の画面に仮想ゲーム空間の画像として表示させる。
【0130】
[補正座標算出処理]
図14は、図13のステップS61における補正座標算出処理の詳細フローチャートである。ベクトル算出部1031は、図14に示されるように、カメラ方向ベクトルV2を計算する(ステップS611)。具体的には、ベクトル算出部1031は、位置座標算出部102によって算出された仮想カメラ30の視点の位置座標29、及びプレイヤオブジェクト31の重心位置の位置座標80を取得する。そして、ベクトル算出部1031は、位置座標29を始点とし且つ位置座標80を終点とするカメラ方向ベクトルV2を計算する(図9(B)参照)。
【0131】
次に、ベクトル算出部1031は、オブジェクト方向ベクトルV1を計算する(ステップS612)。具体的には、ベクトル算出部1031は、位置座標算出部102によって算出されたプレイヤオブジェクト31の重心位置の位置座標80、及びノンプレイヤオブジェクトの位置座標(ミサイル44の場合は位置座標34)を取得する。そして、ベクトル算出部1031は、位置座標80を始点とし且つノンプレイヤオブジェクトの位置座標を終点とするオブジェクト方向ベクトルV1を計算する(図9(B)参照)。
【0132】
オブジェクト方向ベクトルV1が計算されると、内積算出部1032は、カメラ方向ベクトルV2とオブジェクト方向ベクトルV1との内積Fを算出する(ステップS613)。これを受けて、ベクトル判定部1033は、データ記憶部125から閾値データ129(例えば“0”)を読み出し、ステップS613の処理で算出された内積Fが閾値データ129で示される閾値“0”未満であるか否かを判定する(ステップS614)。このステップS614の処理が行われることにより、ステップS612の処理でオブジェクト方向ベクトルV1が算出されたノンプレイヤオブジェクトの位置座標が、撮像方向81におけるプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置するか否かが判定される。
【0133】
内積Fが“0”未満ではないとベクトル判定部1033によって判定された場合(ステップS614:NO)、対応するノンプレイヤオブジェクトが、撮像方向81に対してプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置していないと判断することができる。このため、補正座標算出部104は、対応するノンプレイヤオブジェクトに対してステップS5の計算処理によって算出された位置座標を、液晶テレビ2にそのノンプレイヤオブジェクトを表示するための表示用の座標に設定する(ステップS615)。この設定情報は、作業領域132に一時的に格納される。
【0134】
内積Fが“0”未満であるとベクトル判定部1033によって判定された場合(ステップS614:YES)、対応するノンプレイヤオブジェクトが、撮像方向81に対してプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置していると判断することができる。このため、補正座標算出部104は、対応するノンプレイヤオブジェクトに対して、ステップS5の計算処理によって算出された位置座標を基に上述した式(1)及び式(2)の演算処理を実行して、補正座標を算出する(ステップS616)。そして、補正座標算出部104は、対応するノンプレイヤオブジェクトに対してステップS616の処理によって算出された補正座標を、液晶テレビ2にそのノンプレイヤオブジェクトを表示するための表示用の座標に設定する(ステップS617)。この設定情報は、作業領域132に一時的に格納される。なお、補正座標が表示用の座標が設定されたとしても、その補正座標が仮想カメラ30の視野範囲内に位置していないことによって、対応するノンプレイヤオブジェクトが液晶テレビ2に表示されない場合もある。
【0135】
ステップS615の処理によって位置座標が表示用の座標に設定された場合、又はステップS617の処理によって補正座標が表示用の座標に設定された場合、座標判定部103は、補正フラグ136が“1”に設定されている全てのノンプレイヤオブジェクトに対して補正座標が表示用の座標が設定されたか否かを判定する(ステップS618)。補正フラグ136が“1”に設定されているにも拘わらず補正座標が表示用の座標が設定されていないノンプレイヤオブジェクトがある場合(ステップS618:NO)、そのノンプレイヤオブジェクトに対して、ステップS612以降の処理が行われる。補正フラグ136が“1”に設定されている全てのノンプレイヤオブジェクトの表示用の座標の設定が完了すると(ステップS618:YES)、上述した図13のステップS62へ処理が進められる。これにより、例えばプレイヤオブジェクト31及びミサイル41,42が位置座標に位置すると共に、ミサイル43〜47が補正座標に位置した状態の描画用空間を仮想カメラ30で撮像した描画用空間の画像が液晶テレビ2の画面に表示される。
【0136】
[本実施形態の作用効果]
以上説明したように、本実施形態によれば、プレイヤオブジェクト31及びプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置しないミサイル41,42がそれぞれの位置座標に位置し、且つ位置座標80よりも仮想カメラ30側に位置するミサイル43〜47がそれぞれの補正座標に位置した描画用空間の画像が液晶テレビ2の画面に表示される。このため、例えば撮像方向81における仮想カメラ30の後方などの仮想カメラ30の視野範囲外に位置するミサイル44,45,47を仮想カメラ30の視野範囲内に含めた状態のゲーム空間の画像を表示することができる(図11参照)。したがって、仮想カメラ30の視点を注視対象であるプレイヤオブジェクト31から離すことなく、従来の描画方法では写らないオブジェクトを表示することができる。
【0137】
また、本実施形態では、ミサイル44等のノンプレイヤオブジェクトを撮像方向81へ移動させた補正座標が算出されるので、各ノンプレイヤオブジェクトの画面上の位置が変化せず、各ノンプレイヤオブジェクトを自然な状態で表示することができる。
【0138】
また、本実施形態では、各ノンプレイヤオブジェクトの補正座標がプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置するように算出される。このため、例えば撮像方向81に関してプレイヤオブジェクト31の後方に位置するミサイル43がプレイヤオブジェクト31の前方に位置した状態で表示されるといった不自然な表示となることを防止することができる。
【0139】
また、本実施形態では、撮像方向81におけるプレイヤオブジェクト31の位置座標80からノンプレイヤオブジェクトの位置座標までの第1距離(ミサイル44については距離L:図10(C)参照)に基づいて補正座標が算出される。このため、補正座標を容易に算出することができる。
【0140】
また、本実施形態では、ミサイル43〜47の位置座標が同じ割合で補正される。すなわち、ミサイル43〜47の各ノンプレイヤオブジェクトの撮像方向81における位置座標80からの距離いずれも1/N倍となるように補正座標が算出される。このため、例えばプレイヤオブジェクト31からの距離がミサイル44よりも遠いミサイル45がミサイル44よりもプレイヤオブジェクト31に近い位置に位置した状態で表示されるといった不自然な表示が行われることを防止することができる。
【0141】
また、本実施形態では、撮像方向81に関して、各ノンプレイヤオブジェクトがプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置するか否かが判定される。この判定処理は、各ノンプレイヤオブジェクトの位置座標のうちの撮像方向成分のみを使用すればよいので、容易に行うことができる。
【0142】
また、本実施形態では、撮像方向81、及びプレイヤオブジェクト31の位置座標から各ノンプレイヤオブジェクトの位置座標への向きに基づいて計算されたカメラ方向ベクトルV2及びオブジェクト方向ベクトルV1の内積Fに基づいて、プレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置するか否かが判定される。このため、この判定処理を容易に行うことができる。また、この内積Fと閾値(本実施形態では“0”)との大小関係に基づいて仮想カメラ30側に位置するか否かが判定されるので、正確な判定処理を行うことができる。
【0143】
また、本実施形態では、仮想カメラ30の視野範囲に含まれていないノンプレイヤオブジェクトの全てに対して仮想カメラ30側に位置するか否かの判定が行われ、必要に応じて補正座標が算出される。このため、例えばプレイヤオブジェクト31から最も遠いミサイル47が液晶テレビ2の画面に表示されているのに対してミサイル47よりもプレイヤオブジェクト31に近いミサイル44が表示されないといった不自然な表示が行われることを防止することができる。
【0144】
また、本実施形態では、プレイヤオブジェクト31の位置座標80が本発明の所定点に設定されている。このため、仮想カメラ30によって注視すべきプレイヤオブジェクト31に対して各ノンプレイヤオブジェクトを撮像方向81へ近付けた自然な画像を表示することができる。
【0145】
また、本実施形態では、各オブジェクトの位置制御や接触判定等に使用されるゲーム空間とは別の描画用空間の画像が液晶テレビ2に表示される。すなわち、仮想ゲーム空間の画像を液晶テレビ2に表示するに際して、各オブジェクトの位置制御や接触判定等に使用されるゲーム空間における各オブジェクトの位置座標が実際に変更される訳ではない。このため、各種ゲームで一般的に行われているゲーム処理に支障をきたすことなく、仮想カメラ30の視野範囲外に位置するノンプレイヤオブジェクトを視野範囲内に含めた状態の仮想ゲーム空間の画像を表示することができる。
【0146】
[変形例]
以下、本実施形態の変形例について説明する。図15は、位置座標に対する補正座標の移動方向の変形例について説明するための図である。図15(A)に例示されるように、仮想カメラ30の視野範囲外に位置しているミサイル48が視野範囲内に位置するミサイル58として液晶テレビ2の画面に表示されるように、ミサイル48の位置座標を仮想カメラ30の撮像方向81と直行する方向(図15における右方向又は左方向)へ移動させた座標をミサイル48の補正座標として算出するようにしてもよい。
【0147】
また、図15(B)に例示されるように、仮想カメラ30の視野範囲外に位置するミサイル49がプレイヤオブジェクト31へ向けて矢印83で示される方向に移動したミサイル59として表示されるように、ミサイル49の位置座標をプレイヤオブジェクト31へ向けて移動させた座標をミサイル49の補正座標として算出してもよい。このように、ノンプレイヤオブジェクトがプレイヤオブジェクト31へ向けて移動するように補正座標を算出すれば、撮像方向81に移動させても仮想カメラ30の視野範囲内に含まれなかった例えばミサイル46(図11参照)を仮想カメラ30の視野範囲内に含めて液晶テレビ2の画面に写るようにすることができる。
【0148】
図16は、プレイヤオブジェクト31の位置座標80とは異なる注視点77を所定点とした場合の位置座標と補正座標との位置関係について説明するための図である。図16に例示されるように、仮想カメラ30は、プレイヤオブジェクト31に注視しつつも、プレイヤオブジェクト31の前方の注視点77(例えばプレイヤオブジェクト31の前方の地面)を注視するように制御される場合がある。この場合、液晶テレビ2の画面中央に注視点77が表示され、注視点77の直下にプレイヤオブジェクト31が表示される。このように、プレイヤオブジェクト31と共にプレイヤオブジェクト31とは別の注視点77に仮想カメラ30が注視するような制御が行われる場合、座標判定部103は、各ノンプレイヤオブジェクトに対して、注視点77よりも仮想カメラ30側に位置するか否かを判定すればよい。このような判定が行われる場合、上記実施形態では仮想カメラ30側に位置しないと判定されていたミサイル41が仮想カメラ30側に位置すると判定され、注視点77に近付いた状態でミサイル51として液晶テレビ2の画面に表示される。
【0149】
図17は、補正フラグ136の設定方法の変形例について説明するための図である。上記実施形態においては、仮想ゲーム空間内の全てのノンプレイヤオブジェクトに対して補正フラグ136が“1”に設定される場合について説明したが、プレイヤオブジェクト31から離れ続けて、プレイヤオブジェクト31に近付いたり或いは攻撃を加えたりすることのないミサイル50に対しては、補正フラグ136を“0”に設定して、座標判定部103による判定処理を行わないようにしてもよい。これは、ミサイル50が必ずしも画面に表示すべきオブジェクトではないからである。
【0150】
このように、ノンプレイヤオブジェクトによって補正フラグ136を異ならせるためには、各ノンプレイヤオブジェクトの位置座標データ134を使用すればよい。具体的には、ノンプレイヤオブジェクトの位置座標がプレイヤオブジェクト31の位置座標から所定時間連続して離れ続けるか否かの判定処理をフレーム単位で実行する。そして、例えば“100”フレーム分の時間だけノンプレイヤオブジェクトの位置座標がプレイヤオブジェクト31の位置座標から連続して離れ続けた場合には、補正フラグ136を“1”から“0”に変更する。これにより、液晶テレビ2に表示する必要があると考えられるノンプレイヤオブジェクトについてのみ、仮想カメラ30側に位置するか否かを判定することができる。
【0151】
なお、所定点としてのプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置するか否かの判定処理に複数の閾値を用いるようにしてもよい。例えば、仮想カメラ30から見てプレイヤオブジェクト31の左側に位置するノンプレイヤオブジェクト(例えばミサイル41,44,45)については閾値A(例えば‘0’)に基づいて仮想カメラ30側に位置するか否かを判定し、プレイヤオブジェクト31の右側に位置するノンプレイヤオブジェクト(例えばミサイル42,43,46,47)については閾値B(例えば‘−0.1’)に基づいて仮想カメラ30側に位置するか否かを判定してもよい。
【0152】
また、所定点としてのプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置するか否かを、内積Fと閾値との大小関係に基づいて判定する代わりに、内積Fが所定の数値範囲内に含まれるか否かに基づいて判定するようにしてもよい。例えば、内積Fが‘−10’以上且つ‘0’未満の範囲内に含まれることを条件として、ノンプレイヤオブジェクトが位置座標80よりも仮想カメラ30側に位置すると判定するようにしてもよい。これにより、カメラ方向ベクトルV2とオブジェクト方向ベクトルV1とのなす角度が90°より大きく(内積Fが‘0’未満であり)、且つプレイヤオブジェクト31からの距離が相対的に遠いノンプレイヤオブジェクト(例えばミサイル50)を、仮想カメラ30側に位置すると判定しないようにすることができる。これにより、図17に基づいて上述した補正フラグ136を変更するといった処理を行うことなく、プレイヤオブジェクト31に近付けた状態で表示したいノンプレイヤオブジェクトを容易に選別することができる。
【0153】
また、本実施形態ではプレイヤオブジェクト31の位置座標80が所定点に設定された場合について説明し、図16に基づいて上述した変形例では注視点77が所定点に設定された場合について説明したが、所定点の位置は位置座標80又は注視点77に限定されるものではない。すなわち、所定点は、仮想カメラ30の撮像方向81に関して、仮想カメラ30の視点とプレイヤオブジェクト31との間、又は仮想カメラ30の視点と注視点77との間に設定されれば、位置座標80又は注視点77でなくてもよい。なぜなら、例えば図16に示されている注視点77よりも仮想カメラ30の撮像方向81における前方の位置に所定点が設定されている場合、ミサイル42に対しても補正座標を算出する処理が行われ、その結果、ミサイル42をプレイヤオブジェクト31から遠ざけた状態で表示するといった不要且つ不自然な表示が行われることになるからである。
【0154】
また、本実施形態では、ノンプレイヤオブジェクトの位置座標がプレイヤオブジェクト31の位置座標80よりも仮想カメラ30側に位置するか否かを判定するために、カメラ方向ベクトルV2及びオブジェクト方向ベクトルV1が用いられる場合について説明したが、カメラ方向ベクトル及びオブジェクト方向ベクトルの組み合わせはこれに限定されるものではない。例えば、カメラ方向ベクトルV2、及びノンプレイヤオブジェクトの位置座標を始点とし且つプレイヤオブジェクト31の位置座標80を終点とするオブジェクト方向ベクトルを用いてもよい。また、例えば、プレイヤオブジェクト31の位置座標80を始点とし且つ仮想カメラ30の位置座標を終点とするカメラ方向ベクトル、及びオブジェクト方向ベクトルV1を用いてもよい。また、例えば、プレイヤオブジェクト31の位置座標80を始点とし且つ仮想カメラ30の位置座標を終点とするカメラ方向ベクトル、及びノンプレイヤオブジェクトの位置座標を始点とし且つプレイヤオブジェクト31の位置座標を終点とするオブジェクト方向ベクトルを用いてもよい。
【0155】
また、上述した本実施形態では、ミサイル44等のノンプレイヤオブジェクトが補正座標に位置した状態で液晶テレビ2の画面に表示されるので、例えばプレイヤオブジェクト31の位置座標80とミサイル44の位置座標34とに基づいて両オブジェクトの接触判定を行う代わりに、プレイヤオブジェクト31の位置座標80とミサイル44の補正座標とに基づいて両オブジェクトの接触判定を行ってもよい。
【0156】
また、本実施形態では、プレイヤオブジェクト31をその後方から注視するように仮想カメラ30が制御される場合について説明したが、仮想カメラ30は、例えばプレイヤオブジェクト31の前方からプレイヤオブジェクト31を注視するように制御されてもよい。この場合、プレイヤオブジェクト31の目の前にいるにも拘わらず仮想カメラ30の視野範囲内に位置していないために画面に表示されなかったノンプレイヤオブジェクトを画面に表示させることが可能になる。
【0157】
また、上述した実施形態では、上記のようなゲーム処理を1台のゲーム装置3で実現しているが、これは必須ではなく、複数の情報処理装置が協働することによって上記のようなゲーム処理を実現してもよい。すなわち、入力受付部101、位置座標算出部102、座標判定部103、補正座標算出部104、及び表示部105のうちの少なくとも1つの機能部の役割をゲーム装置3以外の例えばネットワーク上のサーバ装置が担うようにしてもよい。この場合、ゲーム装置3及びサーバ装置からなるシステムが、本発明のゲーム装置として機能する。
【産業上の利用可能性】
【0158】
本発明は、仮想ゲーム空間内のオブジェクトを仮想カメラの視点から見た画像を表示装置に表示させるゲーム装置のコンピュータに実行させるゲームプログラムやゲーム装置等に適用可能である。
【符号の説明】
【0159】
2 液晶テレビ(表示装置の一例)
3 ゲーム装置
7 コントローラ
10 CPU
12 外部メインメモリ
29 位置座標
30 仮想カメラ
31 プレイヤオブジェクト(第1オブジェクトの一例)
41,42,43,44,45,46,47,48,49,50 ミサイル(第2オブジェクトの一例)
80 位置座標
81 撮像方向
101 入力受付部
102 位置座標算出部
103 座標判定部
104 補正座標算出部
105 表示部
1031 ベクトル算出部
1032 内積算出部
1033 ベクトル判定部

【特許請求の範囲】
【請求項1】
仮想ゲーム空間に含まれるオブジェクトを仮想カメラで撮像した画像を表示装置に表示させるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記仮想カメラによって注視されるオブジェクトである第1オブジェクト、及び前記第1オブジェクトとは異なる少なくとも1つのオブジェクトである第2オブジェクトの位置座標を算出する位置座標算出手段と、
前記第2オブジェクトの位置座標に基づいて、当該第2オブジェクトが前記仮想カメラの前方の所定点よりも前記仮想カメラ側に位置するか否かを判定する座標判定手段と、
前記座標判定手段によって前記仮想カメラ側に位置すると判定された前記第2オブジェクトに対して、当該第2オブジェクトの位置座標を前記所定点側へ移動させた座標である補正座標を算出する補正座標算出手段と、
前記第1オブジェクトがその前記位置座標に位置し、且つ前記座標判定手段によって前記仮想カメラ側に位置すると判定された前記第2オブジェクトが前記補正座標に位置する仮想ゲーム空間の画像を前記表示装置に表示させる表示手段として機能させる、ゲームプログラム。
【請求項2】
前記補正座標算出手段は、前記座標判定手段によって前記仮想カメラ側に位置すると判定された前記第2オブジェクトに対して、当該第2オブジェクトの位置座標を前記仮想カメラの撮像方向へ移動させた座標を当該第2オブジェクトの補正座標として算出する、請求項1に記載のゲームプログラム。
【請求項3】
前記補正座標算出手段は、前記座標判定手段によって前記仮想カメラ側に位置すると判定された前記第2オブジェクトに対して、当該第2オブジェクトの位置座標を前記所定点へ向けて移動させた座標を当該第2オブジェクトの補正座標として算出する、請求項1に記載のゲームプログラム。
【請求項4】
前記補正座標算出手段は、前記座標判定手段によって前記仮想カメラ側に位置すると判定された前記第2オブジェクトの位置座標を前記所定点よりも前記仮想カメラ側に移動させた座標を、当該第2オブジェクトの補正座標として算出する、請求項2又は3に記載のゲームプログラム。
【請求項5】
前記補正座標算出手段は、前記仮想カメラの撮像方向における前記所定点から、前記座標判定手段によって前記仮想カメラ側に位置すると判定された前記第2オブジェクトの位置座標までの第1距離に基づいて、当該第2オブジェクトの補正座標を算出する、請求項4に記載のゲームプログラム。
【請求項6】
前記補正座標算出手段は、前記座標判定手段によって前記仮想カメラ側に位置すると判定された前記第2オブジェクトに対して、前記仮想カメラの撮像方向における前記所定点から当該第2オブジェクトの補正座標までの距離が前記第1距離の所定割合となるように、当該第2オブジェクトの補正座標を算出する、請求項5に記載のゲームプログラム。
【請求項7】
前記座標判定手段は、前記仮想カメラの撮像方向に対して、前記第2オブジェクトが前記所定点よりも前記仮想カメラ側に位置するか否かを判定する、請求項1に記載のゲームプログラム。
【請求項8】
前記座標判定手段は、前記仮想カメラの位置座標と前記所定点とを端点とする線分の方向、及び前記所定点と前記第2オブジェクトの位置座標とを端点とする線分の方向に基づいて、当該第2オブジェクトが前記所定点よりも前記仮想カメラ側に位置するか否かを判定する、請求項1に記載のゲームプログラム。
【請求項9】
前記座標判定手段は、
前記仮想カメラの位置を始点とし且つ前記所定点を終点とするカメラ方向ベクトル、及び前記所定点を始点とし且つ前記第2オブジェクトの位置座標を終点とするオブジェクト方向ベクトルを算出するベクトル算出手段と、
前記ベクトル算出手段によって算出されたカメラ方向ベクトル及びオブジェクト方向ベクトルに基づいて、前記第2オブジェクトが前記所定点よりも前記仮想カメラ側に位置するか否かを判定するベクトル判定手段とを含む、請求項8に記載のゲームプログラム。
【請求項10】
前記座標判定手段は、
前記カメラ方向ベクトルと前記オブジェクト方向ベクトルとの内積を算出する内積算出手段を更に含み、
前記ベクトル判定手段は、前記内積算出手段によって算出された内積に基づいて、前記第2オブジェクトが前記所定点よりも前記仮想カメラ側に位置するか否かを判定する、請求項9に記載のゲームプログラム。
【請求項11】
前記ベクトル判定手段は、前記内積算出手段によって算出された内積と所定の閾値との大小関係に基づいて、前記第2オブジェクトが前記所定点よりも前記仮想カメラ側に位置するか否かを判定する、請求項10に記載のゲームプログラム。
【請求項12】
前記位置座標算出手段は、2つ以上の前記第2オブジェクトの位置座標を算出し、
前記座標判定手段は、前記位置座標算出手段によって位置座標が算出された前記第2オブジェクト毎に、前記所定点よりも前記仮想カメラ側に位置するか否かを判定する、請求項1に記載のゲームプログラム。
【請求項13】
前記所定点は、前記仮想カメラの撮像方向に対して、前記仮想カメラの位置と前記第1オブジェクトとの間、又は前記仮想カメラの位置と当該仮想カメラによって注視される注視点との間に設定されている、請求項1に記載のゲームプログラム。
【請求項14】
前記所定点は、前記第1オブジェクトの位置座標又は前記注視点である、請求項13に記載のゲームプログラム。
【請求項15】
前記表示手段は、前記第1オブジェクト及び前記第2オブジェクトがそれぞれの位置座標に位置する空間とは異なる描画用空間の画像を、前記仮想カメラで撮像した画像として前記表示装置に表示させる、請求項1に記載のゲームプログラム。
【請求項16】
前記表示手段は、前記第1オブジェクト及び前記座標判定手段によって前記仮想カメラ側に位置しないと判定された前記第2オブジェクトの前記位置座標と、前記座標判定手段によって前記仮想カメラ側に位置すると判定された前記第2オブジェクトの前記補正座標とを各オブジェクトの重心座標として前記仮想カメラで撮像した画像を前記表示装置に表示させる、請求項1に記載のゲームプログラム。
【請求項17】
前記ゲームプログラムは、前記コンピュータを、
プレイヤによって操作される入力手段からの操作情報の入力を受け付ける入力受付手段として更に機能させ、
前記位置座標算出手段は、前記入力受付手段によって受け付けられた操作情報に基づいて前記第1オブジェクトの位置座標を算出する、請求項1に記載のゲームプログラム。
【請求項18】
仮想ゲーム空間に含まれるオブジェクトを仮想カメラで撮像した画像を表示装置に表示させるゲーム装置であって、
前記仮想カメラによって注視されるオブジェクトである第1オブジェクト、及び前記第1オブジェクトとは異なる少なくとも1つのオブジェクトである第2オブジェクトの位置座標を算出する位置座標算出手段と、
前記第2オブジェクトの位置座標に基づいて、当該第2オブジェクトが前記仮想カメラの前方の所定点よりも前記仮想カメラ側に位置するか否かを判定する座標判定手段と、
前記座標判定手段によって前記仮想カメラ側に位置すると判定された前記第2オブジェクトに対して、当該第2オブジェクトの位置座標を前記所定点側へ移動させた座標である補正座標を算出する補正座標算出手段と、
前記第1オブジェクトがその前記位置座標に位置し、且つ前記座標判定手段によって前記仮想カメラ側に位置すると判定された前記第2オブジェクトが前記補正座標に位置する仮想ゲーム空間の画像を前記表示装置に表示させる表示手段とを備える、ゲーム装置。
【請求項19】
仮想ゲーム空間に含まれるオブジェクトを仮想カメラで撮像した画像を表示装置に表示させるゲームの表示方法であって、
前記仮想カメラによって注視されるオブジェクトである第1オブジェクト、及び前記第1オブジェクトとは異なる少なくとも1つのオブジェクトである第2オブジェクトの位置座標を算出するステップと、
前記第2オブジェクトの位置座標に基づいて、当該第2オブジェクトが前記仮想カメラの前方の所定点よりも前記仮想カメラ側に位置するか否かを判定するステップと、
前記仮想カメラ側に位置すると判定された前記第2オブジェクトに対して、当該第2オブジェクトの位置座標を前記所定点側へ移動させた座標である補正座標を算出するステップと、
前記第1オブジェクトがその前記位置座標に位置し、且つ前記仮想カメラ側に位置すると判定された前記第2オブジェクトが前記補正座標に位置する仮想ゲーム空間の画像を前記表示装置に表示させるステップとを含む、ゲームの表示方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2011−120645(P2011−120645A)
【公開日】平成23年6月23日(2011.6.23)
【国際特許分類】
【出願番号】特願2009−278794(P2009−278794)
【出願日】平成21年12月8日(2009.12.8)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】