説明

プログラム、情報記憶媒体及び画像生成装置

【課題】操作オブジェクトと衝突対象オブジェクトとの衝突を要素にして進行するビデオゲームにおいて、ゲーム画面奥行き感をサポートする。
【解決手段】刀剣5(操作オブジェクト)の先端の移動軌跡を記憶しておき、現在の先端位置P2と、少し前の時間の位置P1を結ぶ辺を底辺として、仮想カメラCMから当該底辺を見る方向へ拡張したヒット可能範囲30を設定する。そして、ヒット可能範囲30と砲弾10(衝突対象オブジェクト)とのヒット判定を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータに所与の仮想カメラから見た仮想3次元空間の画像を生成させるためのプログラム等に関する。
【背景技術】
【0002】
ビデオゲームの中には、仮想3次元空間内に多数の衝突対象オブジェクトを配置して、プレーヤが操作する操作オブジェクトとの衝突を判定して進行するゲームがある。
例えば、仮想3次元空間内に対象オブジェクトとして多数の竹オブジェクトを配置し、刀型コントローラによる操作入力に従って、操作オブジェクトである刀オブジェクトを移動させ、衝突した竹オブジェクトを切断するゲームが知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−85585号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1のゲームのように、仮想3次元空間に配置されたオブジェクトの衝突を、2次元のゲーム画面で表示する場合、画面奥行方向の距離感が掴み難い。操作オブジェクトや衝突対象オブジェクトが動いている場合は特にそうである。その為、プレーヤの感覚としては、操作オブジェクトと衝突対象オブジェクトとを衝突させることができたと思ってもゲーム処理上は衝突しているとは判定されない場合が発生し、ゲームプレイ中にフラストレーションを与えてしまう場合がある。
【0005】
本発明は、こうした事情を鑑みてなされたものであり、その目的とするところは、プレーヤの操作入力により移動制御される操作オブジェクトと衝突対象オブジェクトとを仮想3次元空間に形成されたゲーム空間に配置するとともに、ゲーム空間内の様子を仮想カメラで撮影した画像をゲーム画面とし、操作オブジェクトと衝突対象オブジェクトとの衝突を要素にゲームが進行するビデオゲームにおいて、ゲーム画面奥行き感をサポートすることである。より具体的には、プレーヤの感覚として、操作オブジェクトと衝突対象オブジェクトとを衝突させることができたと思ってもゲーム処理上は衝突しているとは判定されず、ゲームプレイ中にフラストレーションを与えるという事態を低減することである。
【課題を解決するための手段】
【0006】
以上の課題を解決するための第1の形態は、コンピュータに、衝突対象オブジェクト(例えば、図3の砲弾10)が存在する仮想3次元空間内でユーザ操作に従って操作オブジェクトを移動させ、所与の仮想カメラから見た前記仮想3次元空間の画像を生成させるためのプログラムであって、
前記操作オブジェクトの所与の基準点の移動軌跡に基づき前記仮想カメラの視線方向に沿った方向に拡張したヒット可能範囲を設定するヒット可能範囲設定手段(例えば、図6の処理部200、ゲーム演算部210、ヒット可能範囲設定部216、図10のステップS82)、
前記ヒット可能範囲と前記衝突対象オブジェクトとのヒット判定を行うヒット判定手段(例えば、図6の処理部200、ゲーム演算部210、図10のステップS150)、
として前記コンピュータを機能させるためのプログラムである。
【0007】
また、別形態として、衝突対象オブジェクトが存在する仮想3次元空間内でユーザ操作に従って操作オブジェクトを移動させ、所与の仮想カメラから見た前記仮想3次元空間の画像を生成する画像生成装置であって、
前記操作オブジェクトの所与の基準点の移動軌跡に基づき前記仮想カメラの視線方向に沿った方向に拡張したヒット可能範囲を設定するヒット可能範囲設定手段(例えば、図1の制御ユニット1210、図6の処理部200、ゲーム演算部210、ヒット可能範囲設定部216、図10のステップS82)と、
前記ヒット可能範囲と前記衝突対象オブジェクトとのヒット判定を行うヒット判定手段(例えば、図1の制御ユニット1210、図6の処理部200、ゲーム演算部210、図10のステップS150)と、
を備えた画像生成装置とすることができる。
【0008】
ここで言う「仮想カメラの視線方向」とは、仮想カメラの焦点(仮想カメラの位置としても勿論良い。)と撮影範囲中心位置を結ぶ方向は勿論のこと、仮想カメラの焦点から撮影範囲の任意点への方向を含む意味である。第1の形態によれば、操作オブジェクトから画面奥行方向へ拡張したヒット可能範囲を設けることができる。そして、ヒット可能範囲と衝突対象オブジェクトとの間でヒット判定を実現する。よって、操作オブジェクトと衝突対象オブジェクトとが画面奥行方向に位置がズレていて、実際にはヒットしていなくとも、ヒット(衝突)したものとして扱うことができる。
画面奥行方向のヒット判定を補助することで、プレーヤの感覚としてはヒットさせることができたと思ってもゲーム処理上はヒットしているとは判定されないといった実態を低減し、プレーヤにフラストレーションを与えるのを抑制できる。
【0009】
第2の形態は、前記ヒット可能範囲設定手段が、前記ヒット可能範囲を面状に設定するように前記コンピュータを機能させるための第1の形態のプログラムである。
【0010】
第2の形態によれば、第1の形態のプログラムと同様の効果を発揮するとともに、ヒット可能範囲の形状を面状に設定することができる。
【0011】
第3の形態は、前記ヒット判定手段によりヒットしたと判定された場合に、前記衝突対象オブジェクトを切断制御する切断制御手段(例えば、図6の処理部200、ゲーム演算部210、砲弾切断制御部218、図10のステップS158〜S160)として前記コンピュータを更に機能させるための第1又は第2の形態のプログラムである。
【0012】
第3の形態によれば、第1又は第2の形態のプログラムと同様の効果を発揮するとともに、ヒット可能範囲と衝突対象オブジェクトとがヒットした場合に、衝突対象オブジェクトを切断したように制御できる。
【0013】
第4の形態は、前記ヒット判定手段によりヒットしたと判定された場合に、前記衝突対象オブジェクトを前記ヒット可能範囲の面に基づき二分することで切断制御する切断制御手段として前記コンピュータを更に機能させるための第2の形態のプログラムである。
【0014】
第4の形態によれば、第2の形態のプログラムと同様の効果を発揮するとともに、ヒット可能範囲を切断面とすることで、操作オブジェクトによって衝突対象オブジェクトが切断された見かけ上の感覚を上手く表現できる。
【0015】
第5の形態は、前記衝突対象オブジェクトを移動制御する衝突対象オブジェクト制御手段(例えば、図6の処理部200、ゲーム演算部210、図9のステップS34〜S40)として前記コンピュータを機能させ、前記ヒット可能範囲設定手段が、前記衝突対象オブジェクトの移動速度に応じて前記拡張の程度を可変して前記ヒット可能範囲を設定するように前記コンピュータを機能させるための第1〜4の何れか一項の形態のプログラムである。
【0016】
第5の形態によれば、第1〜第4の形態何れかのプログラムと同様の効果を奏するとともに、衝突対象オブジェクトの移動速度に応じて画面奥行方向の距離感のズレが変化するのをサポートできる。
【0017】
第6の形態は、前記ヒット可能範囲設定手段が、前記操作オブジェクトの移動速度に応じて前記拡張の程度を可変して前記ヒット可能範囲を設定するように前記コンピュータを機能させるための第1〜第5の何れかの形態のプログラムである。
【0018】
第6の形態によれば、第1〜第5の形態の何れかのプログラムと同様の効果を発揮するとともに、操作オブジェクトの移動速度に応じて画面奥行方向の距離感のズレが変化するのをサポートできる。
【0019】
第7の形態は、前記操作オブジェクトは刀剣であり、前記ヒット可能範囲設定手段が、前記刀剣の先端部を前記基準点として前記ヒット可能範囲を設定するように前記コンピュータを機能させるための第1〜第6の何れかの形態のプログラムである。
【0020】
第7の形態によれば、第1〜第6の形態の何れかのプログラムと同様の効果を奏するとともに、刀剣で衝突対象オブジェクトを切るゲームの設定をヒット可能範囲の設定に上手くマッチさせ、刀剣で切断する際の距離感を上手く表現できる。
【0021】
第8の形態は、前記操作オブジェクトは刀剣であり、前記ヒット可能範囲設定手段が、前記操作オブジェクトの前記基準点から前記仮想カメラの視線方向に沿った方向に仮想刀身を設定し、この仮想刀身の通過範囲に基づいて前記ヒット可能範囲を設定することで、前記視線方向に沿った方向に拡張させたヒット可能範囲を設定する、ように前記コンピュータを機能させるための第1〜第7の何れかの形態のプログラムである。
【0022】
第8の形態によれば、第1〜第7の何れかの形態のプログラムと同様の効果を発揮するとともに、刀剣で衝突対象オブジェクトを切るゲームの設定をヒット可能範囲の設定に上手くマッチさせ、刀剣で切断する際の距離感を上手く表現できる。
【0023】
第9の形態は、前記ヒット可能範囲設定手段が、前記画像生成の直近所定時間分の前記操作オブジェクトの移動軌跡によって定まる軌跡線又は軌跡面を、前記仮想カメラの視線方向に沿った方向に拡張させることで前記ヒット可能範囲を設定するように前記コンピュータを機能させるための第1〜第8の何れかの形態のプログラムである。
【0024】
第9の形態によれば、第1〜第8の形態の何れかのプログラムと同様の効果を奏するとともに、刀剣で衝突対象オブジェクトを切るゲームの設定をヒット可能範囲の設定に上手くマッチさせ、刀剣で切断する際の距離感を上手く表現できる。
【0025】
第10の形態は、第1〜第9の何れかの形態のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体である。ここで言う「情報記憶媒体」とは、例えば磁気ディスクや光学ディスク、ICメモリなどを含む。第10の形態によれば、第1〜第9の何れか一つの形態のプログラムをコンピュータに読み取らせて実行させることによって、コンピュータに第1〜第9の形態の何れかと同様の効果を発揮させることができる。
【図面の簡単な説明】
【0026】
【図1】家庭用ゲーム装置のシステム構成の一例を示す図。
【図2】ゲームコントローラの構成例を示す正面図及び右側面図。
【図3】ゲームプレイのスタイルと、ゲーム画面の一例とを示す図。
【図4】仮想3次元空間に配置されるプレーヤキャラクタのオブジェクトと仮想カメラとの相対位置関係の例を示す概念図。
【図5】ヒット可能範囲と砲弾とのヒットが検知された場合の当該砲弾の処理の一例について説明する概念図。
【図6】機能構成例を示す機能ブロック図。
【図7】プレーヤキャラクタ設定データのデータ構成の一例を示す図。
【図8】プレイデータのデータ構成の一例を示す図。
【図9】第1実施形態における主たる処理の流れを説明するためのフローチャート。
【図10】図9より続くフローチャート。
【図11】図10より続くフローチャート。
【図12】第1実施形態におけるヒット可能範囲設定処理の流れを説明するためのフローチャート。
【図13】第2実施形態におけるヒット可能範囲の設定方法の原理を説明するための概念図。
【図14】第2実施形態におけるヒット可能範囲設定処理の流れを説明するためのフローチャート。
【図15】第3実施形態におけるヒット可能範囲の設定方法の原理を説明するための概念図。
【図16】第3実施形態におけるヒット可能範囲設定処理の流れを説明するためのフローチャート。
【図17】第3実施形態におけるヒット可能範囲の設定方法の原理の変形例を説明するための概念図。
【図18】イメージセンサモジュールで撮影したプレーヤの姿に基づいてプレーヤキャラクタが刀剣を振る方向の入力を取得する第1の概念を説明する図。
【図19】イメージセンサモジュールで撮影したプレーヤの姿に基づいてプレーヤキャラクタが刀剣を振る方向の入力を取得する第2の概念を説明する図。
【図20】イメージセンサモジュールで撮影したプレーヤの姿に基づいてプレーヤの動作をボーンモデルの動作に置き換え、ボーンモデルの動きからプレーヤキャラクタが刀剣を振る方向の入力を取得する概念を説明する図。
【図21】画像生成装置の変形例と、タッチ操作でプレーヤの姿に基づいてプレーヤキャラクタが刀剣を振る方向の入力を取得する概念を説明する図。
【発明を実施するための形態】
【0027】
〔第1実施形態〕
第1実施形態として、本発明を適用した画像生成装置である据え置き型の家庭用ゲーム装置においてゲームコントローラを振るなどの動作で方向入力しながら楽しむビデオゲームを実行する例について説明する。
【0028】
[ゲーム装置の構成]
図1は、本実施形態における家庭用ゲーム装置のシステム構成の一例を示す図である。家庭用ゲーム装置1200は、ゲーム装置本体1201と、ビデオモニタ1220と、ゲームコントローラ1230と、光信号出力装置1226と、イメージセンサモジュール1227と、を備える。
【0029】
ゲーム装置本体1201は、例えばCPUや画像処理用LSI、ICメモリ等が実装された制御ユニット1210と、光学ディスク1202やメモリカード1204といった情報記憶媒体の読み取り装置1206,1208とを備える。そして、家庭用ゲーム装置1200は、光学ディスク1202やメモリカード1204からゲームプログラム及び各種設定データを読み出し、ゲームコントローラ1230に為される操作入力等に基づいて制御ユニット1210が各種のゲーム演算を実行してビデオゲームを実行する。
【0030】
制御ユニット1210は、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)及びDSP(Digital Signal Processor)などの各種マイクロプロセッサ、ASIC(Application Specific Integrated Circuit)、ICメモリなどの電気電子機器を備え家庭用ゲーム装置1200の各部を制御する。
また、制御ユニット1210は、インターネットやLAN(Local Area Network)、WAN(Wide Area Network)と言った通信回線1と有線又は無線接続し、外部装置との間でデータ通信を実現する通信装置1212を備える。また、近距離無線通信モジュール1214を備え、近距離無線を介して複数のゲームコントローラ1230との間でデータの送受信を実現する。近距離無線の形式としては、例えばBluetooth(登録商標)やUWB(超広帯域無線)、無線LANなどが適宜適用可能である。
【0031】
そして、制御ユニット1210は、ゲームコントローラ1230から受信した操作入力信号に基づいてゲーム画面やゲーム音を生成してビデオゲームを実行する。生成されたゲーム画面やゲーム音に基づく映像信号や音信号がケーブル1209で接続されたビデオモニタ1220(ディスプレイモニタ、音声信号やビデオ信号などの外部入力が可能なテレビを含む意)に出力される。ビデオモニタ1220には、ビデオ画像を表示する画像表示装置1222と、音声を出力するスピーカ1224とが備えられており、プレーヤは画像表示装置1222に映し出されるゲーム画面を見ながら、スピーカ1224から放音されるゲーム音を聞きつつゲームをプレイする。
【0032】
図2は、本実施形態において用いられるゲームコントローラ1230の一例を示す外観図であって、(1)正面図(=上面図)、(2)右側面図である。ゲームコントローラ1230は面取りされた略四角断面を有する棒状を成しており、プレーヤは棒を握る要領で片手把持して操作する。
【0033】
ゲームコントローラ1230は、内蔵するコントローラ制御ユニット1260を中心に、各種入力デバイス及び出力デバイスを、例えばIIC(Inter-Integrated Circuit)バスなどによって実現されるローカルバス回路によって接続しており、コントローラ制御ユニット1260によって各デバイス間の入出力を制御する。
【0034】
具体的には、例えばスイッチ類の入力デバイスとしては、正面側(上面側)の下端部から中央部に掛けて操作ボタン1240a,1240b,1240cを備える。また、正面側の上部(先端側)には、十字状の四隅を押下することで上下左右の方向を個別に入力することのできる方向入力キー1242を備え、背面側の中央部にはトリガー1246を備える。
【0035】
また、その他の入力デバイスとしては、ゲームコントローラ1230の動きや傾きを検出するための加速度センサ1248と、ジャイロスコープ1249と、イメージセンサ1256とを備える。
【0036】
加速度センサ1248はゲームコントローラ1230の長手先端方向(図2(1)で言うところの図面上方向)をZ軸のプラス方向、正面に向かって右方向(図2(1)で言うところの図面右方向)をX軸のプラス方向、正面に向かって手前方向(図2(2)で言うところの図面左方向)をY軸のプラス方向とする直交3軸方向の各加速度を検出し、検出した加速度に応じた情報を含む操作入力信号をコントローラ制御ユニット1260に出力する。
【0037】
イメージセンサ1256は、CCDセンサやCMOSセンサなどの撮影素子の前方に赤外光のみを透過するフィルタを装着して実現され、ゲームコントローラ1230の先端に設けられて長手方向前方の様子を撮影し、画像信号をコントローラ制御ユニット1260に出力する。
【0038】
また、本実施形態におけるゲームコントローラ1230は、スピーカ1252を備える。スピーカ1252は、コントローラ制御ユニット1260から出力された音出力信号に従って音を発生させ、正面側に向けて放音する。
【0039】
コントローラ制御ユニット1260は、例えば、CPUやローカルバス回路におけるデータ通信を制御するバスコントローラICなどの各種マイクロチップやICメモリなどの電子部品、ゲーム装置本体1201の近距離無線通信モジュール1214と無線通信を実現する近距離無線通信モジュール1262などを搭載する。
【0040】
そして、コントローラ制御ユニット1260は、ローカルバス回路を介して各種入力デバイスから送信された信号に基づいて操作入力信号を生成し、生成した操作入力信号を近距離無線通信モジュール1262でゲーム装置本体1201へ送信する。また、近距離無線通信モジュール1262によって、ゲーム装置本体1201から送出された出力信号を受信した場合には、受信した出力信号に対応づけられている出力デバイスへ制御信号を生成・送出する。尚、コントローラ制御ユニット1260及び各部が必要とする電力は、ゲームコントローラ1230の背面側に凹設されたバッテリー室内に内蔵されたバッテリー1270から供給される。
【0041】
図1の光信号出力装置1226は、赤外光を発する複数の点光源を内蔵する。光信号出力装置1226は、ビデオモニタ1220付近の所定位置(例えば上部)に設置され、ビデオモニタ1220の前方へ赤外光を投光することができる。
【0042】
また、イメージセンサモジュール1227は、例えば、レンズ、メカシャッター、シャッタードライバ、CCDイメージセンサモジュールやCMOSイメージセンサモジュールといった光電変換素子、光電変換素子から電荷量を読み出し画像データを生成するデジタルシグナルプロセッサ(DSP)、ICメモリなどで実現される。
【0043】
[ゲームの概要の説明]
次に、本実施形態におけるビデオゲームの概要について説明する。
図3は、ゲームプレイのスタイルと、ゲーム画面の一例とを示す図であって、吹き出し内がゲーム画面の一例である。図4は、仮想3次元空間に配置されるプレーヤキャラクタ4のオブジェクトと仮想カメラCMとの相対位置関係の例を示す概念図である。
【0044】
本実施形態のビデオゲームは、仮想3次元空間に形成されたゲーム空間でプレーヤ2が操作するプレーヤキャラクタ4と敵キャラクタ6とが戦う様子を仮想カメラCMで撮影した画像をレンダリングしてゲーム空間画像を生成し、ゲーム空間画像に各種情報表示を合成してゲーム画面を形成する所謂3DCGを用いたビデオゲームである。
【0045】
本実施形態では、仮想カメラCMは、ゲーム中の操作オブジェクトである刀剣5を持ったプレーヤキャラクタ4の後方斜め上に配置され、視線方向をプレーヤキャラクタ4の正面に向けて配置される。よって、本実施形態のゲーム画面W2は、基本的には画面手前にプレーヤキャラクタ4が配置されて、画面奥の敵キャラクタ6が配置される。
【0046】
敵キャラクタ6は、NPC(Non Playable Character)であって、プレーヤキャラクタ4の前方に陣取って、プレーヤキャラクタ4へ向けて砲弾10を発射して攻撃するように自動制御される。そして、砲弾10は、発射後、疑似物理法則に従って放物運動するように自動制御される。図中では、破線矢印によって砲弾10の移動経路の一例を示しているが、実際のゲーム画面にはこれは表示されない。砲弾10がプレーヤキャラクタ4に着弾すれば、プレーヤキャラクタ4はダメージを受け、ヒットポイント表示欄22に表示されるヒットポイントが減算され、「0」になるとゲームオーバーとなる。
【0047】
プレーヤ2は、ゲームコントローラ1230を把持して、ビデオモニタ1220の正面に立って構え、砲弾10がプレーヤキャラクタ4の正面、刀剣5の攻撃範囲に入ったタイミングでゲームコントローラ1230を剣を振る要領でスイング操作して方向入力する。本実施形態では、3次元のゲームコントローラ移動ベクトルVcnとして入力される。
【0048】
このゲームコントローラ移動速度ベクトルVcnから、入力速度ベクトルVinが算出される。入力速度ベクトルVinは、ゲームコントローラ移動速度ベクトルVcnの直交3軸成分のうち、画面の上下左右に相当するXY軸成分が抽出されて求められる。そして、プレーヤキャラクタ4は、この2次元の入力速度ベクトルVinの方向へ刀剣5を振るように動作制御される。飛んでくる砲弾10を上手く刀剣5で切ることができれば砲弾10を切断してその移動方向を逸らせて着弾を防ぐことができる。敵キャラクタ6の攻撃が終わるまでヒットポイントが「0」にならないように着弾を防げればゲームクリアとなる。尚、ゲームコントローラ移動速度ベクトルVcnの算出には、ジャイロスコープ1249の検出値を用いるとしても良い。
【0049】
ここで着目すべきは、ゲーム空間は3次元なのにゲーム画面は2次元である、ということである。減った1次元が画面奥行方向であるため、従来のこうした画面奥行方向に標的となるオブジェクトが移動するビデオゲームでは、正確な奥行方向の距離感を掴みにくいものである。本実施形態の例で言えば、飛んでくる砲弾10を上手く刀剣5で切るタイミングが掴み難くなるのに相当する。その為、切ったつもりが切れなかったりといったことが起こり、プレーヤに要らぬフラストレーションを与えることがあった。そこで本実施形態では、砲弾10の切断判定をするためのヒット可能範囲の設定に工夫を凝らすことで、掴みにくい画面奥行き感をサポートする。
【0050】
具体的には、図4に示すように、プレーヤキャラクタ4が振った刀剣5の所定基準位置(本実施形態では先端)を、制御サイクル(例えば、1/30秒)周期で記憶する。図中では記憶された各サイクルにおける先端位置を白丸で示している。そして、1周期前の先端位置(第1頂点P1)と仮想カメラCMの焦点P0とを通る直線上のプレーヤキャラクタ4の前方に第4頂点P4を設定し、現在の先端位置(第2頂点P2)と仮想カメラCMの焦点P0とを通る直線上のプレーヤキャラクタ4前方に第3頂点P3を設定する。
【0051】
そして、第1頂点P1・第2頂点P2・第3頂点P3・第4頂点P4の4点で囲まれる領域を、砲弾10と刀剣5とのヒット判定に利用可能な範囲(ヒット可能範囲30)とする。つまり、第1頂点P1から第2頂点P2までを底辺として、仮想カメラCMの視線方向に沿った方向へ、より厳密には仮想カメラCMの位置から刀剣5の先端を通る方向へ拡張したヒット判定領域を作成し、プレーヤの画面奥行方向の距離感が上手く掴めていなくとも、砲弾10を刀剣5で切れるように補助する。勿論、刀剣5自体に設定されるヒット判定領域も砲弾10とのヒット判定は行われるが、刀剣5自体はヒット判定領域から除外してもよい。
尚、本実施形態では、現在の周期と1つ前の周期とにおける4点の位置を用いているが、現在の周期から所定周期前までの所定周期分(例えば4周期分など)の多数の位置を記録し、これらを結ぶ多面体としてヒット可能範囲30を構成してもよい。
【0052】
尚、焦点P0は、実質的に仮想カメラCMの代表点となるが、それに限らず仮想カメラCMの近傍に別途設けた所定の基準点としても良い。更には、仮想カメラCMとプレーヤキャラクタ4との相対位置関係は、図4の例のように、後方斜め上に限らず適宜設定できる。例えば、プレーヤキャラクタ4の両目の中心位置としてもよい。
【0053】
図5は、本実施形態におけるヒット可能範囲30と砲弾10とのヒットが検知された場合の砲弾10の処理の一例について説明する概念図である。
図5(1)に示すように、ヒット可能範囲30と砲弾10とがヒットしたならば、本実施形態ではヒット可能範囲30を含む分割面を設定し、砲弾10のオブジェクトをこの分割面で分割する。具体的には、ポリゴンモデルを指定面で分割して分割する公知の技術を用いて、分割後の分割後砲弾12及び14の2つに分割して、それぞれに切断面のポリゴンを追加する。そして、分割後砲弾12及び14に、互いに反対向きとなるヒット可能範囲30の法線方向に向いた離間速度ベクトルVsc2,Vsc4を付与する。結果、図5(2)に示すように、分割後砲弾12及び14は、それぞれ分割時点の速度ベクトルV0と付与された離間速度ベクトルVsc2,Vsc4とによって、それぞれ白矢印の方向に移動し、あたかも切断面から二手に分かれるように制御される。
【0054】
尚、発射される砲弾10の正面には、ランダムに指定切断方向マーク18が付与される。指定切断方向マーク18は、画面座標系で見た上下左右斜めの8方向それぞれの正逆2方向の合計16方向の中から何れかが自動的に選択・設定される。そして、入力速度ベクトルVinと指定切断方向マーク18の方向との角度差が所定の許容範囲内であれば、ヒットポイントが所定値だけ回復される。
【0055】
[機能ブロックの説明]
次に、上述のようなゲームを実行するための機能構成について説明する。
図6は、本実施形態における機能構成の一例を示す機能ブロック図である。同図に示すように本実施形態では、操作入力部100と、プレーヤ撮影部110と、処理部200と、光信号発生部330と、音出力部350と、画像表示部360と、通信部370と、記憶部500とを備える。
【0056】
操作入力部100は、ボタンスイッチや、トリガー、ダイヤル、ジョイスティック、タッチパネル、トラックボール、傾斜センサなど、プレーヤによって為された各種の操作入力に応じて操作入力信号を処理部200に出力する手段である。図2のゲームコントローラ1230が、操作入力部100に相当する。そして、本実施形態では、光信号受光部102と、加速度検出部104と、角速度検出部105と、通信部106とを含む。
【0057】
光信号受光部102は、光信号発生部330から投光される光信号を受光し電気信号に変換することで画像データに変換するデバイスであって、例えばCCDセンサやCMOSセンサ、レンズ、光学フィルタ、信号変換処理をするDSP(デジタルシグナルプロセッサ)などによって実現される。図2のイメージセンサ1256や信号処理を行うコントローラ制御ユニット1260がこれに該当する。
尚、光信号発生部330は、LED等の発光素子、特定周波数の光のみを透過するフィルタなどにより実現され、ゲームコントローラ1230をポインティングデバイスとして利用するための基準位置を示す光信号を特定方向へ投光する。図1の光信号出力装置1226がこれに該当する。
【0058】
加速度検出部104は、各種加速度センサによって実現され、ゲームコントローラ1230に作用する加速度を検出して検出値の情報を出力する。図2の加速度センサ1248がこれに該当する。本実施形態では、一つで直交3軸を検出できる3軸加速度センサとするが、単独の加速度3つで構成しても良い。
【0059】
角速度検出部105は、例えばジャイロスコープによって実現され、ゲームコントローラ230の加速度の検出3軸周りの角速度を検出し、検出値の情報を出力する。図2のジャイロスコープ1249がこれに該当する。
【0060】
通信部106は、ゲームコントローラ1230とゲーム装置本体1201との間のデータ通信を実現する。本実施形態では図2の近距離無線通信モジュール1262がこれに該当する。
【0061】
プレーヤ撮影部110は、プレーヤ2の様子を撮影して電気信号に変換し、デジタル画像データを生成し処理部200へ出力する。例えば、レンズ、メカシャッター、シャッタードライバ、CCDイメージセンサやCMOSイメージセンサといった光電変換素子、光電変換素子から電荷量を読み出し画像データを生成するデジタルシグナルプロセッサ(DSP)、ICメモリなどで実現される。図1ではイメージセンサモジュール1227がこれに該当する。
【0062】
処理部200は、例えばCPUやGPU等のマイクロプロセッサや、ASIC、ICメモリなどの電子部品によって実現され、操作入力部100や記憶部500を含む各機能部との間でデータの入出力を行う。そして、所定のプログラムやデータ、操作入力部100からの操作入力信号に基づいて各種の演算処理を実行してゲーム装置の動作を制御する。図1では制御ユニット1210がこれに該当する。そして本実施形態における処理部200は、ゲーム演算部210と、音生成部250と、画像生成部260と、通信制御部270とを備える。
【0063】
ゲーム演算部210は、ゲームの進行に関する各種処理を実行する。例えば、(1)仮想3次元空間に背景モデルを配置してゲーム空間を形成する処理、(2)プレーヤキャラクタ4や敵キャラクタ6のオブジェクトをゲーム空間内に配置する処理、(3)プレーヤキャラクタ4が入力された方向へ刀剣5を振るように動作させる処理、(4)敵キャラクタ6の自動制御処理、(5)砲弾10や分割後砲弾12,14を疑似物理法則に則って移動させる処理、(6)砲弾10とプレーヤキャラクタ4のヒット判定、砲弾10とヒット可能範囲30とのヒット判定などオブジェクト間のヒット判定処理、(7)ダメージの算出処理とその反映処理、などが含まれる。
【0064】
そして、本実施形態のゲーム演算部210は、入力方向判定部212と、刀剣基準位置周期記憶制御部214と、ヒット可能範囲設定部216と、砲弾切断制御部218とを含む。
【0065】
入力方向判定部212は、操作入力部100で検出した信号からプレーヤ2が入力した方向を判定する。本実施形態では、加速度検出部104で検出された直交3軸の各加速度からゲームコントローラ1230が振られた方向を示す情報としてゲームコントローラ移動速度ベクトルVcnを算出する。角速度検出部105で検出された加速度検出の直交3軸周りの角速度を更に算出に用いるとしても良い。そして、当該速度ベクトルが所定の基準値を超えたところで、ゲームコントローラ移動ベクトルVcnのXYZの直交3軸成分の内、画面の上下左右に相当するXY軸成分を抽出して2次元の入力速度ベクトルVinとする。尚、ゲームコントローラ移動速度ベクトルVcnから入力速度ベクトルVinを算出する方法は別の方法であってもよいのは勿論である。プレーヤ2によるゲームコントローラ1230の操作に応じた刀剣5の移動制御がなされればよい。
【0066】
刀剣基準位置周期記憶制御部214は、本実施形態におけるゲーム内の操作オブジェクトの移動軌跡に関する情報をサンプリングする。具体的には、刀剣5の所定基準位置を周期的に記憶する制御を行う。本実施形態では、後述する制御サイクル(例えば、1/30秒)を1周期とし、記憶部500のプレイデータ550に所定周期分だけ、基準点のゲーム空間内での位置座標と、基準点の速度ベクトルとを対応づけて格納する。
【0067】
ヒット可能範囲設定部216は、操作オブジェクトの移動軌跡と仮想カメラCMの焦点P0(実質的には仮想カメラCMの代表点)とを用いて、移動軌跡を焦点P0から当該移動軌跡を見た方向へ引き延ばしてヒット可能範囲を設定する。具体的には、焦点P0から刀剣基準位置の周期記憶1サイクル前の第1頂点P1を通る直線上に、プレーヤキャラ4に最寄りの砲弾10の速度と、入力速度ベクトルVinとに基づいた距離離れたところに第4頂点P4を設定する。また、同様にして焦点P0から現在の刀剣基準位置である第2頂点P2を通る直線上に第3頂点P3を設定する。そして、第1頂点P1、第2頂点P2、第3頂点P3、第4頂点P4で囲まれる矩形領域をヒット可能範囲30とする。
【0068】
砲弾切断制御部218は、刀剣5で切られた砲弾10から分割後砲弾12,14を生成し置き換える。具体的には、砲弾10がヒット可能範囲30又は刀剣5のヒット判定領域とヒットした場合に、前者とヒットした場合にはヒット可能範囲30を含む面を分割面とし、後者とヒットした場合には刀剣5の刀身を含む面を分割面として、当該砲弾10のポリゴンモデルを分割面で2分割し、それぞれに切断面を覆うポリゴンを設定する。そして、切断面から互いに離間するように離間速度ベクトルを付与する。
【0069】
音生成部250は、例えばデジタルシグナルプロセッサ(DSP)、音声合成ICなどのプロセッサや、音声ファイル再生可能なオーディオコーデックによって実現され、ゲーム演算部210による処理結果に基づいてゲームに係る効果音やBGM、各種操作音の音信号を生成し、音出力部350に出力する。
【0070】
音出力部350は、音生成部250から入力される音信号に基づいて効果音やBGM等を音出力する装置によって実現される。図1ではスピーカ1224がこれに該当する。
【0071】
画像生成部260は、例えば、GPU(Graphics Processing Unit)、デジタルシグナルプロセッサ(DSP)などのプロセッサ、ビデオ信号IC、ビデオコーデックなどのプログラム、フレームバッファ等の描画フレーム用ICメモリ等によって実現される。画像生成部260は、ゲーム演算部210による処理結果に基づいて1フレーム時間(例えば1/60秒)で1枚のゲーム画像を生成し、生成したゲーム画像の画像信号を画像表示部360に出力する。
【0072】
画像表示部360は、画像生成部260から入力される画像信号に基づいて各種ゲーム画像を表示する。例えば、フラットパネルディスプレイ、ブラウン管(CRT)、プロジェクター、ヘッドマウントディスプレイといった画像表示装置によって実現できる。図1では画像表示装置1222がこれに該当する。
【0073】
通信制御部270は、データ通信に係るデータ処理を実行し、通信部370を介して外部装置とのデータのやりとりを実現する。
【0074】
通信部370は、通信回線1と接続して通信を実現する。また、操作入力部100の通信部106との通信を実現する。例えば、無線通信機、モデム、TA(ターミナルアダプタ)、有線用の通信ケーブルのジャックや制御回路等によって実現され、図1の通信装置1212、近距離無線通信モジュール1214がこれに該当する。
【0075】
記憶部500は、処理部200に家庭用ゲーム装置1200を統合的に制御させるための諸機能を実現するためのシステムプログラムや、ゲームを実行させるために必要なゲームプログラム、各種データ等を記憶する。また、処理部200の作業領域として用いられ、処理部200が各種プログラムに従って実行した演算結果や操作入力部100から入力される入力データ等を一時的に記憶する。この機能は、例えばRAMやROMなどのICメモリ、ハードディスク等の磁気ディスク、CD−ROMやDVD、BD(Blueray Disc(登録商標))などの光学ディスクなどによって実現される。図1では制御ユニット1210が搭載するICメモリや光ディスク1202、メモリカード1204がこれに該当する。
【0076】
本実施形態では、記憶部500はシステムプログラム501と、ゲームプログラム502とを記憶している。システムプログラム501は、家庭用ゲーム装置1200の基本機能を実現するためのプログラムであり、各機能部をアプリケーションソフト側で呼び出して利用可能な各種ファームウェアを含む。ゲームプログラム502は、処理部200が読み出して実行することによってゲーム演算部210としての機能を実現させるためのソフトウェアである。
【0077】
また、記憶部500には、予め用意されるデータとして、ゲーム空間設定データ510と、敵キャラクタ設定データ512と、砲弾設定データ514と、プレーヤキャラクタ設定データ520とが記憶されている。更に、ゲームの準備や進行に伴って随時生成や更新が行われるデータとして、プレイデータ550を記憶する。また、ゲームの進行に係る処理を実行するにあたり必要となるデータ(例えば、タイマー値やカウンタ)も適宜記憶されるものとする。
【0078】
ゲーム空間設定データ510は、仮想3次元空間にゲーム空間を形成し、ゲームステージとするための情報が格納されている。背景となる障害物等を配置するための背景オブジェクトのモデルデータとテクスチャデータ、配置位置、姿勢などを定義するデータが含まれる。
【0079】
敵キャラクタ設定データ512は、敵キャラクタ6のオブジェクトを配置させ、動作を制御するための情報を格納する。例えば、モデルデータや、テクスチャデータ、モーションデータなどが含まれる。
【0080】
砲弾設定データ514は、砲弾10のオブジェクトを配置させるための情報を格納する。例えば、モデルデータやテクスチャデータ、指定切断方向マーク18のテクスチャデータが含まれる。衝突対象オブジェクトを砲弾10ではなく何らかの可動物とする場合には、可動させるモーションデータに相当するデータを含むものとする。
【0081】
プレーヤキャラクタ設定データ520は、プレーヤキャラクタ4と刀剣5のオブジェクトを配置させ、動作させるための各種情報を格納する。
例えば、図7に示すように、プレーヤキャラクタモデルデータ522と、プレーヤキャラクタテクスチャデータ524と、プレーヤキャラクタモーションデータ526と、刀剣モデルデータ528と、刀剣テクスチャデータ532とを含む。
【0082】
プレーヤキャラクタモーションデータ526は、ゲームコントローラ1230による入力速度ベクトルVinの条件を定義する入力速度条件526a毎に、プレーヤキャラクタ4が刀剣5を振るスイングモーションセット526bを対応づけて格納する。スイングモーションセット526bには、プレーヤキャラクタ4が振ることのできる全方向(上下左右斜め32方向×振り方向2=64方向)に対応するスイングモーションが含まれており、プレーヤキャラクタ4に刀剣5を振らせる制御をするときには、該当するスイングモーションセット526bから入力速度ベクトルVinの方向に最も類似するスイングモーションが選択され適用されるものとする。
【0083】
プレイデータ550は、ゲーム進行状況を定義する情報を格納する。
例えば、図8に示すように、現在プレイ中のゲームステージの識別情報を格納するステージID552と、現在プレイ中のゲームステージにおける発射済み砲弾数554と、ヒットポイント556と、敵キャラクタ6の動作制御に関する情報、例えばモーションデータのフレーム番号などを格納する敵キャラクタ動作制御データ558とを含む。
【0084】
ステージID552のゲーム開始時初期状態は第1ステージを示す情報である。
発射済み砲弾数554のゲーム開始時初期状態は「0」である。
【0085】
また、プレイデータ550は、砲弾データ560と、分割後砲弾データ562とを含む。
砲弾データ560は、敵キャラクタ6から砲弾10が発射されると、砲弾ID560aが新規に付与され、それと対応づけてゲーム空間内における位置座標560bと、速度ベクトル560cと、指定切断方向560dとが格納される。位置座標560bと速度ベクトル560cは、制御サイクル毎に更新される。指定切断方向560dは、その砲弾が生成されたタイミングで設定され変更されない。
そして、砲弾10がプレーヤキャラクタ4にヒットしたと判定された場合には、当該砲弾に対応するこれらの情報は抹消される。また、砲弾10がヒット可能範囲30又は刀剣5とヒットしたと判定され、分割後砲弾12,14に置換された場合にも抹消される。
【0086】
分割後砲弾データ562は、砲弾10がヒット可能範囲30又は刀剣5とヒットしたと判定されると、当該砲弾から生成される分割後砲弾12,14の情報を格納する。具体的には、自動的に砲弾ID562aが新規に付与され、それと対応づけてゲーム空間内における位置座標562bと、離間速度ベクトルVsc2やVsc4(図5参照)が合成された速度ベクトル562cと、生成時のシステム時刻を示す配置システム時刻562dとを格納する。
【0087】
また、プレイデータ550は、プレーヤキャラクタ動作制御データ564と、刀剣基準位置周期記録データ566と、ゲームコントローラ移動速度ベクトルVcn570と、入力速度ベクトルVin572と、ヒット可能範囲設定データ574とを含む。
【0088】
プレーヤキャラクタ動作制御データ564は、プレーヤキャラクタ4を動作制御するための各種情報、例えばモーションデータのフレーム番号などを格納する。
刀剣基準位置周期記録データ566は、刀剣5の先端位置の移動軌跡を定義する情報を格納する。例えば、システム時刻566aに対応づけた刀剣5の先端のゲーム空間内における位置座標566bと、その時々の入力速度ベクトル566cとを一定周期分だけ格納する。尚、刀剣5の先端位置のみでなく、刀剣5の各部位の位置を同様に記録・格納してもよい。
【0089】
[処理の流れの説明]
次に、本実施形態における処理の流れについて説明する。ここで説明される処理は、処理部200がシステムプログラム501並びにゲームプログラム502を読み出して実行することによって実現される。
尚、ここではゲーム画面の画像信号の生成と出力、並びにゲーム音の音信号の生成と出力についての説明は省略するが、公知のゲームと同様にして画像生成部260が画像表示部360(画像表示装置1222)のリフレッシュレートよりも十分に短いサイクルでゲーム画面を表示させるための画像信号を生成し出力する。その際、ゲーム画面を3DCGで生成する場合には、レンダリング等の処理が行われる。同様に、音生成部250でゲーム音の音信号を生成して音出力部350(スピーカ1224)から放音させるものとする。
【0090】
図9〜図11は、本実施形態における主たる処理の流れを説明するためのフローチャートである。先ず処理部200は、ゲーム空間設定データ510を参照して、仮想3次元空間内にゲーム空間を作成し(ステップS2)、敵キャラクタ設定データ512とプレーヤキャラクタ設定データ520とを参照して、そこに刀剣5を持ったプレーヤキャラクタ4と敵キャラクタ6とを配置する(ステップS4)。初期状態のプレーヤキャラクタ4は刀剣5を構えた状態にある。そして、仮想カメラCMをプレーヤキャラクタ4の後方斜め上に配置し、視線方向をプレーヤキャラクタ4の前方に向けて配置する(ステップS8)。
【0091】
ゲームを開始したならば(ステップS10)、処理部200は、ステップS12〜S204を所定の制御サイクルで繰り返し実行する。
すなわち、処理部200は、操作入力部100の加速度検出部104の加速度検出信号に基づいて今制御サイクルにおけるゲームコントローラ移動ベクトルVcnを算出し(ステップS12)、算出されたゲームコントローラ移動速度ベクトルVcnから入力速度ベクトルVinを算出する(ステップS14)。算出されたゲームコントローラ移動速度ベクトルVcnと入力速度ベクトルVinは、記憶部500に一時記憶されるものとする。そして、刀剣5の先端位置の周期記録処理をする(ステップS16)。
【0092】
次に、処理部200は、砲弾10の発射タイミング決定処理を実行して、砲弾10を発射するか否か、発射するならばどの敵キャラクタ6から発射させるかを決定する(ステップS32)。具体的には、乱数を発生させてゲームステージが進むほど砲弾発射の間隙が短くなるようにして発射タイミングを決定し、また乱数を発生させて複数の敵キャラクタ6の内、何れから発射させるかを決定する。
【0093】
砲弾10を発射するタイミングであると決定された場合(ステップS34のYES)、処理部200は、次に砲弾10の発射速度を所定の範囲内からランダムに決定し(ステップS36)、更に指定切断方向をランダムに決定する(ステップS38)。
そして、プレーヤキャラクタ4へ向けて、選択された敵キャラクタ6から指定切断方向マーク18が描かれた砲弾10を発射するように表示制御し(ステップS40)、この新たな砲弾10の情報をプレイデータ550の砲弾データ560に格納し(ステップS42)、発射済み砲弾数554を「1」アップする(ステップS44)。
【0094】
次いで、処理部200は、砲弾データ560に登録済みのデータが有れば、移動中の砲弾10が有ると判断して(ステップS50のYES)、移動中の砲弾10の位置座標560bと速度ベクトル560cを更新する(ステップS52)。
【0095】
図10のフローチャートに移って、処理部200はゲームコントローラ1230を振る操作入力の検知判定をする(ステップS60)。
本実施形態では、制御サイクル毎にゲームコントローラ移動速度ベクトルVcnを算出しているので、今制御サイクルにおける当該速度ベクトルが、明らかにゲームコントローラ1230を振っていると判断できる基準値以上であれば肯定判定する(ステップS60のYES)。そして、プレーヤキャラクタ4が刀剣5を振っているスイング制御中でなければ(ステップS62のNO)、処理部200は、プレーヤキャラクタモーションデータ526を参照して、入力速度ベクトルVinに基づいて刀剣5のスイングモーションを決定し(ステップS64)、決定したスイングモーションデータに従って、プレーヤキャラクタ4のスイング制御を開始し、入力速度ベクトルVinの方向へ刀剣5を振らせる(ステップS66)。
一方、刀剣5のスイング制御が実行されている場合には(ステップS62のYES)、実行中のスイング制御を継続する(ステップS68)。
また、今制御サイクルのゲームコントローラ移動速度ベクトルVcnが基準値に満たなければ(ステップS60のNO)、これらの処理はスキップされる。
【0096】
次に、処理部200は、プレーヤキャラクタ4に最も近い移動中の砲弾10を抽出し(ステップS80)、ヒット可能範囲設定処理を実行する(ステップS82)。
【0097】
図12は、本実施形態におけるヒット可能範囲設定処理の流れを説明するためのフローチャートである。同処理は、仮想カメラCMの視線方向に沿った追加のヒット判定領域としてヒット可能範囲を設定する処理である。
【0098】
同処理において、処理部200は先ず、ステップS80で抽出された砲弾10の移動速度(図8の速度ベクトル560c参照)に基づく所定の関数を用いて第1拡張係数k1を算出する(ステップS100)。本実施形態における第1拡張係数k1は、0.8〜1.2の値をとる。その算出関数では、移動速度が高いほど第1拡張係数k1が大きく算出される。また、スイング速度(図8の入力速度ベクトルVin572参照)に基づく所定の関数を用いて第2拡張係数k2を算出する(ステップS102)。本実施形態における第2拡張係数k2は、0.8〜1.2の値をとる。その算出関数では、移動速度が高いほど第2拡張係数k2が大きく算出される。
【0099】
次に、処理部200は、所定の基準拡張長さL0を、第1拡張係数k1と第2拡張係数k2を掛けて補正し、適用拡張長さLaを算出する(ステップS104)。基準拡張長さL0は、砲弾10の大きさや、仮想カメラCMの画角などとの兼ね合いで、適宜事前のテストをもって適当な値を決定しておく。
【0100】
次に、処理部200は、仮想カメラCMの焦点P0から現在の刀剣5の先端位置(第2頂点P2;図3参照)を通る直線上で、先端位置から適用拡張長さLaだけ画面奥に移動した位置を算出し、ここに第3頂点P3を設定する(ステップS106)。
また、仮想カメラCMの焦点P0から一つ前の制御サイクルにおける刀剣5の先端位置(第1頂点P1)を通る直線上で、先端位置から適用拡張長さLaだけ画面奥に移動した位置を算出し、ここに第4頂点P4を設定する(ステップS108)。
そして、第1頂点P1〜第4頂点P4で囲まれる領域をヒット可能範囲30(図3参照)として設定し(ステップS110)、ヒット可能範囲設定処理を終了する。
【0101】
図10のフローチャートに戻って、処理部200は次に、ヒット可能範囲30とヒットする砲弾10が有るかを検索する。もし、該当する砲弾10が有れば(ステップS150のYES)、ヒット可能範囲30を含む分割面を設定する(ステップS152)。分割面を定義する情報は、プレイデータ550に一時的に格納する。
また、ヒット可能範囲30とヒットする砲弾10が無い場合には(ステップS150のNO)、刀剣5とヒットする砲弾10が有るかを検索する(ステップS154)。そしてもし、該当する砲弾10が有れば(ステップS154のYES)、刀剣5の刃面に沿った分割面を設定する(ステップS156)。
【0102】
そして、分割面を設定したならば、処理部200は、ヒット可能範囲30又は刀剣5とヒットした砲弾10が、その分割面で分割された分割後砲弾12,14を生成して置換し(ステップS158)、分割後砲弾12,14それぞれに離間速度ベクトルVsc2,Vsc4を付与し、元の砲弾10の速度ベクトルに合成して、速度ベクトル562cとする(ステップS160;図5、図8参照)。
【0103】
図11のフローチャートに移って、処理部200は次に、切断された砲弾10に設定されている指定切断方向560dと、入力速度ベクトルVinとの角度差を算出し(ステップS170)、角度差が所定の許容範囲内であれば(ステップS172のYES)、ヒットポイント556を所定値だけ回復させる(ステップS174;図8参照)。
【0104】
次に、処理部200は、生成してから所定時間経過した分割後砲弾12,14を検索し、該当するものがあれば(ステップS180のYES)、それらを消去する(ステップS182)。これで、プレーヤキャラクタ4により切られた砲弾が分割され消えるように制御できる。
【0105】
次に、処理部200は、プレーヤキャラクタ4にヒットした砲弾10を検索し、該当する砲弾10が有れば(ステップS190のYES)、ヒットポイント556を砲弾1つ当たり所定の数値を削減し(ステップS192)、その砲弾10を消去する(ステップS194)。これで、プレーヤキャラクタ4が切り損なった砲弾10が着弾して、ダメージを受けるように制御できる。
【0106】
次いで、処理部200は、ヒットポイント556が「0」になっているかを判定する。「0」になっていなければ(ステップS200のNO)、発射された砲弾数が所定数に達したかを判定する(ステップS204)。
【0107】
発射された砲弾数が所定数に達していなければ(ステップS204のNO)、ゲーム続行可能と判断して、ステップS12に戻る。
反対に、所定数に達していれば(ステップS204のYES)、ゲームクリアできたと判断して、処理部200はゲームクリア終了処理を実行し、例えばゲーム画面にゲームクリアした旨の通知表示を行うなどの演出表示制御を実行して(ステップS206)、一連の処理を終了する。尚、複数のゲームステージで構成されている場合には、ここで最終ステージがクリアされたかどうかを判定し、まだ最終ステージがクリアされていなければ、次のステージに進むようにする。
【0108】
また、そもそもヒットポイント556が「0」になった場合には(ステップS200のYES)、処理部200はゲームクリアできなかったと判断して、ゲームオーバー終了処理を実行し、例えばゲーム画面にゲームのクリアミスした旨の通知表示を行うなどの演出表示制御を実行して(ステップS208)、一連の処理を終了する。
【0109】
以上、本実施形態によれば、操作オブジェクト(刀剣5)に関して画面奥行方向に拡張したヒット判定領域を設けることで、画面手前/奥行方向に移動してくる衝突対象オブジェクト(砲弾10)に対して、操作オブジェクトが厳密にはヒットしていないが、普通の感覚ではヒットしているかのように感じる距離にあるとき、それをヒットしているものと判定することができる。
【0110】
そして、本実施形態では、ヒット判定領域(ヒット可能範囲30)を、仮想カメラCMの視線方向に沿って(より厳密には仮想カメラCMの焦点P0及び近傍の固定点の何れかからオブジェクトの基準点(刀剣5の先端)を通る方向に)拡張して設ける。そして、ヒット判定領域を含む面を衝突対象オブジェクト(砲弾10)を分割する分割面とするので、切断時(ヒット時)における切断面が生成画像上の奥行方向に平行となる。切断面が奥行方向に平行な面となることと、2次元画像に対する視覚上の奥行き感の鈍感性(視認の困難性)とが相俟って、分割される様子を美しく表現することができる。刀剣5の刃面のみをヒット判定領域とし、またそれを切断面とする場合よりも「切れた!」感じがより直感的で爽快に感じられるようになる。同様に、ヒット判定領域を単にゲーム空間のZ軸方向に追加しただけでは、やはり切断面が仮想カメラCMに沿わない場合もあり、本実施形態のように仮想カメラCMの視線方向に沿ってヒット判定領域を拡張した方が、「切れた!」感じがより直感的で爽快に感じられる。
【0111】
〔第2実施形態〕
次に、本発明を適用した第2実施形態について説明する。本実施形態は、基本的に第1実施形態と同様に実現されるが、ヒット判定領域を設定する方法が異なる。
尚、ここでは、主に第1実施形態との差異について述べることとし、第1実施形態と同様の構成要素については、同じ符号を付与して説明は省略するものとする。
【0112】
図13は、本実施形態におけるヒット可能範囲の設定方法の原理を説明するための概念図である。本実施形態では、プレーヤキャラクタ設定データ520に、刀剣モデルデータ528とは別に、刀剣5の先端に追加される透明で棒状の仮想刀身5bのモデルが予め記憶されている。そして、仮想刀身5bは、一端が刀剣5の先端に接続され、他端が仮想カメラCMの焦点P0又は近傍の所定点から刀剣5の先端を通る直線上、ゲーム空間奥側となるように配置される。
【0113】
そして、本実施形態における処理部200は、この仮想刀身の通過範囲を記憶するために、第1実施形態で刀剣5の先端位置を周期的に記憶した代わりに、仮想刀身5bの一端P6と他端P7の各位置座標を周期的に記憶する処理を実行する(図9のステップS16参照)。或いは、仮想刀身5bの一端P6と他端P7のそれぞれの移動軌跡関数を記憶する。
【0114】
図14は、本実施形態におけるヒット可能範囲設定処理(ヒット可能範囲設定処理B)の流れを説明するためのフローチャートである。同処理において、処理部200は第1実施形態のヒット可能範囲設定処理と同様にして第1拡張係数k1と第2拡張係数k2とを算出する(ステップS100〜S102)。
【0115】
次いで、処理部200は、一つ前の制御サイクルの仮想刀身5bの位置から、現在の仮想刀身5bの位置までの通過範囲を基礎ヒット可能範囲30Bとして設定する(ステップS120;図13参照)。
具体的には、仮想刀身5bの一端P6と他端P7の各位置座標を周期的に記憶する構成ならば、一つ前の制御サイクルの一端P6a、今制御サイクルの一端P6b、一つ前の制御サイクルの他端P7a、今制御サイクルの他端P7bで囲まれる範囲を基礎ヒット可能範囲30Bとする(図9参照)。仮想刀身5bの一端P6と他端P7のそれぞれの移動軌跡関数を記憶する構成ならば、各移動軌跡関数における一つ前の制御サイクルから今制御サイクルまでの軌跡を抽出し、抽出された軌跡の両端を対向する端部同士で連結して平面を定義し、これを基礎ヒット可能範囲30Bとする。
【0116】
そして、基礎ヒット可能範囲30Bを設定できたならば、処理部200は第1拡張係数k1の倍数分だけ基礎ヒット可能範囲30Bを画面奥行方向へ拡大又は縮小して補正し(ステップS122)、更に補正された基礎ヒット可能範囲30Bを第2拡張係数k2の倍数分だけ基礎ヒット可能範囲30Bを画面奥行方向へ拡大又は縮小してヒット判定に使用されるヒット可能範囲として(ステップS124)、ヒット可能範囲設定処理Bを終了する。
【0117】
〔第3実施形態〕
次に、本発明を適用した第3実施形態について説明する。本実施形態は、基本的に第1実施形態と同様に実現されるが、追加のヒット判定領域を設定する方法が異なる。
尚、ここでは、主に第1実施形態との差異について述べることとし、第1及び第2実施形態と同様の構成要素については、同じ符号を付与して説明は省略するものとする。
【0118】
図15は、本実施形態におけるヒット可能範囲の設定方法の原理を説明するための概念図である。本実施形態の処理部200は、第1実施形態で刀剣5の先端位置を周期的に記憶した代わりに、刀剣5の先端位置の移動軌跡L8を移動軌跡関数として記憶・更新する。
【0119】
図16は、本実施形態におけるヒット可能範囲設定処理(ヒット可能範囲設定処理C)の流れを説明するためのフローチャートである。同処理において、処理部200は第1実施形態のヒット可能範囲設定処理と同様にして第1拡張係数k1と第2拡張係数k2とを算出する(ステップS100〜S102)。
【0120】
次いで、処理部200は、一つ前の制御サイクルから今制御サイクルまでの一部である軌跡線L9を抽出し(ステップS130;図15参照)、抽出した軌跡線L9を仮想カメラCMの視線方向に沿った方向、厳密には仮想カメラCMから軌跡線L9を向いた方向に拡張させて基礎ヒット可能範囲30Cを設定する(ステップS132)。
【0121】
そして、基礎ヒット可能範囲30Cを設定できたならば、処理部200は第1拡張係数k1の倍数分だけ基礎ヒット可能範囲30Cを画面奥行方向へ拡大又は縮小して補正し(ステップS134)、更に補正された基礎ヒット可能範囲30Cを第2拡張係数k2の倍数分だけ画面奥行方向へ拡大又は縮小してヒット判定に使用されるヒット可能範囲として(ステップS136)、ヒット可能範囲設定処理Cを終了する。
【0122】
尚、本実施形態では軌跡線L9を、仮想カメラCMの視線方向に沿った方向に投影的に拡張して基礎ヒット可能範囲30Cを設定したが、例えば図17に示すように、刀剣5の移動軌跡面のうち、一つ前の制御サイクルから今制御サイクルまでの一部である軌跡面32を抽出し、これを仮想カメラCMから当該面の中心を通る方向へ投影的に拡張して基礎ヒット可能範囲30Dを形成するとしても良い。
【0123】
〔変形例〕
以上、本発明を適用した第1〜第3実施形態について説明したが、本発明の実施形態はこれらの構成に限定されるものではなく、適宜、構成要素の追加・省略・変更を施すことができる。
【0124】
例えば、ゲームの内容は、画面奥行方向に存在する二つのオブジェクトのヒットタイミングに合わせた操作入力が要求されるゲームであれば、そのジャンルや内容は問わない。
【0125】
[その1]
例えば、上記実施形態では、プレーヤキャラクタ4が刀剣5を振る方向の入力を、ゲームコントローラ1230の加速度からゲームコントローラ移動ベクトルVcnを算出し、そこから入力速度ベクトルVinを求めて取得する構成としたがこれに限らない。
【0126】
例えば図18は、イメージセンサモジュール1227で撮影したプレーヤ2の姿に基づいてプレーヤキャラクタ4が刀剣5を振る方向の入力を取得する概念を説明する図である。この例では、ゲーム開始に先立って、ビデオモニタ1220に所定のプレイ準備ガイドを画面表示して、プレーヤ2に指示を与えつつ、イメージセンサモジュール1227でキャリブレーション用の画像を取得する。
【0127】
より具体的には、プレイ準備ガイドでは先ず、ビデオモニタ1220の前にはプレーヤが一定時間立たないように指示し、その間に背景のみの第1キャリブレーション画像をイメージセンサモジュール1227で撮影する。次いで、プレーヤにイメージセンサモジュール1227に対して正面向いて両手を広げるように指示して、第2キャリブレーション画像C2を撮影する。そして、第1キャリブレーション画像C1と第2キャリブレーション画像C2を取得したならば、制御ユニット1210は、両画像の差分からプレーヤ2の人体シルエット39を抽出する。
【0128】
次いで、制御ユニット1210は、第2キャリブレーション画像C2から人体シルエット39を抽出し、抽出された人体シルエット39から中央上向き凸部と、左右端部の凸部を抽出する。そして、抽出された中央上向き凸部をプレーヤ2の頭部に相当する頭部特徴部分40として認識し、その代表点(例えば先端位置や該当部分の中心位置)の画面座標系の座標を取得する。同じように、人体シルエット39の画面向かって左方向への凸部を左特徴部分42として識別し、画面向かって右方向への凸部を右特徴部分44として識別する。
【0129】
ゲームプレイ中は、常時イメージセンサモジュール1227によってプレーヤ2の様子が撮影され、撮影されたフレーム毎(例えば、プレーヤ画像W4,W5,・・・)に頭部特徴部分40、ゲームコントローラ1230を持つ左特徴部分42、右特徴部分44の座標が取得され続ける。そして、左特徴部分42の座標のフレーム間の変化から得た方向と速さとから入力速度ベクトルVinを算出する。尚、イメージセンサモジュール1227で撮影された画像はプレーヤ2の正面像なので、入力速度ベクトルVinの算出の際には、左右方向の反転を行う。
【0130】
[その2]
また、プレーヤキャラクタ4が刀剣5を振る方向の情報を次のように算出してもよい。すなわち、イメージセンサモジュール1227で撮影した画像を画像処理して当該モジュールからプレーヤ2までの距離を求め、求めたプレーヤキャラクタ2までの距離に基づいて算出する方法である。
【0131】
例えば、図19に示すように、光信号出力装置1226から所定サイクルで赤外線をプレーヤ2に向けて照射する。イメージセンサモジュール1227は、光信号出力装置1226から赤外線が照射されていないタイミングで取得したバックグランド画像W10と、照射されているタイミングで取得したプレーヤ距離画像W12とを繰り返し取得する(W12(1)〜W12(n))。
【0132】
プレーヤ距離画像W12は、赤外線を反射した画像であり、イメージセンサモジュール1227からの距離が近い部分はより強く反射して、画面上は高輝度となり、距離が離れた部分ほど反射が弱まり輝度が下がって写る。例えば、ゲームコントローラ1230を持って突き出したコントローラ及びそのコントローラを持つ右腕の部分の輝度が高く、次いで、左腕、体、背景の順に輝度が低くなる。図では、輝度が低いほど黒く、高いほど白っぽく表現している。
【0133】
処理部200のゲーム演算部210は、(1)バックグランド画像W10とプレーヤ距離画像W12とを比較して、プレーヤ2で反射赤外線が撮影されている部分を抽出する第1の画像処理と、(2)プレーヤ距離画像W12のプレーヤ2が写っている部分の各画素の輝度に基づいて各画素までの距離Zを算出する第2の画像処理と、(3)類似する距離の画素集合の重心位置などから右手代表点46を抽出する第3の画像処理とを行う。そして、入力方向判定部212は、第3の画像処理で抽出された右手代表点46の移動から、ゲームコントローラ移動速度ベクトルVcn570や入力速度ベクトルVin572(図8参照)を算出する構成とする。
【0134】
[その3]
また、プレーヤキャラクタ4が刀剣5を振る方向の情報を次のように求めても良い。すなわち、イメージセンサモジュール1227で撮影した画像を画像処理して当該モジュールからプレーヤ2までの距離を求める。そして、求めたプレーヤキャラクタ2までの距離に基づいて更にプレーヤ2の仮想モデル(例えば、ボーンモデル)を制御し、その仮想モデルの腕の位置から取得する構成としても良い。
【0135】
具体的には、処理部200のゲーム演算部210が、(4)イメージセンサモジュール1227で撮影したプレーヤ距離画像W12からプレーヤ2のシルエット47を切り出す第4の画像処理と、(5)予め記憶部500にボーンモデルライブラリ590を用意しておいて、このボーンモデルライブラリ590に登録されているさまざまなポーズのボーンモデル48(48a,48b,48c,…)と、切り出したシルエット47とを照合し、最もシルエット47に類似するボーンモデルを選択する処理と、(6)選択されたボーンモデル48をシルエット47のポーズに近似するように、ノードの位置等を補正する処理と、を行う。つまり、プレーヤ2の動作をボーンモデル48でトレースする。そして、入力方向判定部212は、周期的に取得されるプレーヤ距離画像W12に応じて選択されるボーンモデル48の腕の動きからゲームコントローラ移動速度ベクトルVcn570や入力速度ベクトルVin572(図8参照)を算出する構成とする。尚、ここで言うボーンモデルは、全身モデルに限らず、腕や足のように、人物を構成する部位単位としても良い。また、選択されたボーンモデル48の情報は、そのままプレーヤキャラクタ4の制御に利用するとしても良い。
【0136】
更には、光信号出力装置1226からの光信号をゲームコントローラ1230で撮影し、その情報に基づいてゲーム画面にポインター3を表示させることができる場合には、ポインター3の変位から入力速度ベクトルVinを算出する構成とすることもできる。
【0137】
[その4]
また、上記実施形態では画像生成装置として据え置き型の家庭用ゲーム装置1200を例示したが、携帯型ゲーム装置や業務用ゲーム装置として実現しても良い。更にはゲーム装置とする電子機器は、“ゲーム装置”として販売される電子機器に限らず、アプリケーションソフトが実行可能な携帯電話機やコンパクトデジタルカメラ、音楽プレーヤ、パソコン、カーナビと言った電子機器も、プログラムを実行可能なコンピュータを内蔵している、或いはコンピュータそのものと言えるため、本発明を実現するゲーム装置の一形態とすることができる。
【0138】
具体的には、例えば図21に示すように、液晶ディスプレイ1508の表示域をカバーするタッチパネル1509を備えた携帯端末装置1500をゲーム装置として用いることができる。この携帯端末装置1500は、スピーカ1510とマイク1511及び基地局との交信に使用される無線装置を備え、携帯電話又はPHSとして機能する。更に、携帯端末装置1500は、アプリケーションプログラムをメモリカード読取装置1518でメモリカード1540から読み出したり、通信回線1に接続して外部装置からダウンロードして取得し、制御基板1550に搭載されたCPU等のプロセッサで実行することができる。また、携帯端末装置1500は方向入力キー1502を備える。上記実施形態のゲームプログラム502や各種データをメモリカード1540等から読み込ませることとすれば、上記実施形態と同様に本発明を実現するゲーム装置として機能させることができる。
そして、こうしたゲーム装置の構成では、タッチパネル1509にてプレーヤキャラクタ4が刀剣5を振る方向の入力をさせると好適である。
【0139】
[その他]
また、上記実施形態では、操作オブジェクトとして刀剣5を設定したが、刀剣に限らず、斧、ビームサーベル、布、キャラクタの手、多足類の足などとしても良い。要は切断の用に供することができる切断具であればよい。また、接触判定オブジェクトについても砲弾10に限らない。木や竹、柱、人形、敵キャラクタなどとしてもよい。ヒット可能範囲は、ヒット(衝突)判定のための範囲であるため、接触判定オブジェクトに切断面を形成せず、ヒット(衝突)したと判定した時点で別の方向に移動させたり、消失したりするように制御してもよい。
【0140】
また、上記実施形態では、仮想カメラCMをプレーヤキャラクタ4の背後としているが、これに限らない。例えば、プレーヤキャラクタ4の側方からプレーヤキャラクタ4を写す位置関係や、プレーヤキャラクタ4の始点位置で視線方向を向くように配置しても良い。そして、仮想カメラCMとプレーヤキャラクタ4の相対位置は、ゲームの内容や進行状況に応じて適宜変更することができる。
【0141】
また、上記実施形態では、ヒット可能範囲30の奥行方向の長さを有限としているがこれに限らない。つまり、上記実施形態では、仮想カメラCMの焦点P0を通る直線上のプレーヤキャラクタ4の前方無限遠(例えばゲーム空間を設定する際の背景相当位置)に第4頂点P4を設定し、現在の先端位置(第2頂点P2)と仮想カメラCMの焦点P0とを通る直線上のプレーヤキャラクタ4の前方無限遠(例えばゲーム空間を設定する際の背景相当位置)に第3頂点P3を設定するとしても良い。
【符号の説明】
【0142】
2 プレーヤ
4 プレーヤキャラクタ
5 刀剣
6 敵キャラクタ
10 砲弾
18 指定切断方向マーク
30 ヒット可能範囲
100 操作入力部
104 加速度検出部
110 プレーヤ撮影部
200 処理部
210 ゲーム演算部
212 入力方向判定部
214 刀剣基準位置周期記憶制御部
216 ヒット可能範囲設定部
218 砲弾切断制御部
500 記憶部
502 ゲームプログラム
510 ゲーム空間設定データ
512 敵キャラクタ設定データ
514 砲弾設定データ
520 プレーヤキャラクタ設定データ
550 プレイデータ
560 砲弾データ
562 分割後砲弾データ
566 刀剣基準位置周期記録データ
570 ゲームコントローラ移動速度ベクトルVcn
572 入力速度ベクトルVin
574 ヒット可能範囲設定データ
1200 家庭用ゲーム装置
1201 装置本体
1210 制御ユニット
1220 ビデオモニタ
1222 画像表示装置
1230 ゲームコントローラ
1248 加速度センサ

【特許請求の範囲】
【請求項1】
コンピュータに、衝突対象オブジェクトが存在する仮想3次元空間内でユーザ操作に従って操作オブジェクトを移動させ、所与の仮想カメラから見た前記仮想3次元空間の画像を生成させるためのプログラムであって、
前記操作オブジェクトの所与の基準点の移動軌跡に基づき前記仮想カメラの視線方向に沿った方向に拡張したヒット可能範囲を設定するヒット可能範囲設定手段、
前記ヒット可能範囲と前記衝突対象オブジェクトとのヒット判定を行うヒット判定手段、
として前記コンピュータを機能させるためのプログラム。
【請求項2】
前記ヒット可能範囲設定手段が、前記ヒット可能範囲を面状に設定するように前記コンピュータを機能させる、
ための請求項1に記載のプログラム。
【請求項3】
前記ヒット判定手段によりヒットしたと判定された場合に、前記衝突対象オブジェクトを切断制御する切断制御手段として前記コンピュータを更に機能させる、
ための請求項1又は2に記載のプログラム。
【請求項4】
前記ヒット判定手段によりヒットしたと判定された場合に、前記衝突対象オブジェクトを前記ヒット可能範囲の面に基づき二分することで切断制御する切断制御手段として前記コンピュータを更に機能させる、
ための請求項2に記載のプログラム。
【請求項5】
前記衝突対象オブジェクトを移動制御する衝突対象オブジェクト制御手段として前記コンピュータを機能させ、
前記ヒット可能範囲設定手段が、前記衝突対象オブジェクトの移動速度に応じて前記拡張の程度を可変して前記ヒット可能範囲を設定するように前記コンピュータを機能させる、
ための請求項1〜4の何れか一項に記載のプログラム。
【請求項6】
前記ヒット可能範囲設定手段が、前記操作オブジェクトの移動速度に応じて前記拡張の程度を可変して前記ヒット可能範囲を設定するように前記コンピュータを機能させる、
ための請求項1〜5の何れか一項に記載のプログラム。
【請求項7】
前記操作オブジェクトは刀剣であり、
前記ヒット可能範囲設定手段が、前記刀剣の先端部を前記基準点として前記ヒット可能範囲を設定するように前記コンピュータを機能させるための請求項1〜6の何れか一項に記載のプログラム。
【請求項8】
前記操作オブジェクトは刀剣であり、
前記ヒット可能範囲設定手段が、前記操作オブジェクトの前記基準点から前記仮想カメラの視線方向に沿った方向に仮想刀身を設定し、この仮想刀身の通過範囲に基づいて前記ヒット可能範囲を設定することで、前記視線方向に沿った方向に拡張させたヒット可能範囲を設定する、ように前記コンピュータを機能させる、
ための請求項1〜7の何れか一項に記載のプログラム。
【請求項9】
前記ヒット可能範囲設定手段が、前記画像生成の直近所定時間分の前記操作オブジェクトの移動軌跡によって定まる前記基準点の軌跡線又は軌跡面を、前記仮想カメラの視線方向に沿った方向に拡張させることで前記ヒット可能範囲を設定する、ように前記コンピュータを機能させる、
ための請求項1〜8の何れか一項に記載のプログラム。
【請求項10】
請求項1〜9の何れか一項に記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
【請求項11】
衝突対象オブジェクトが存在する仮想3次元空間内でユーザ操作に従って操作オブジェクトを移動させ、所与の仮想カメラから見た前記仮想3次元空間の画像を生成する画像生成装置であって、
前記操作オブジェクトの所与の基準点の移動軌跡に基づき前記仮想カメラの視線方向に沿った方向に拡張したヒット可能範囲を設定するヒット可能範囲設定手段と、
前記ヒット可能範囲と前記衝突対象オブジェクトとのヒット判定を行うヒット判定手段と、
を備えた画像生成装置。

【図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

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2011−210019(P2011−210019A)
【公開日】平成23年10月20日(2011.10.20)
【国際特許分類】
【出願番号】特願2010−77214(P2010−77214)
【出願日】平成22年3月30日(2010.3.30)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】