【解決手段】ゲームプログラムは、コンピュータに実行させるゲームプログラムであって、コンピュータを、仮想空間を生成する仮想空間生成手段、仮想空間内におけるキャラクタの移動を制御するキャラクタ制御手段、複数のオブジェクトの位置情報と、キャラクタの位置情報とに基づき、複数のオブジェクトの夫々とキャラクタとの間の距離を算出する距離算出手段、距離算出手段により算出された距離に基づき、複数のオブジェクトの中から1のオブジェクトを対象オブジェクトとして特定する特定手段、及び、対象オブジェクトが特定された場合に、当該対象オブジェクトとキャラクタとの接触を示すリアクションを実行するリアクション実行手段、として機能させる。
仮想空間に固定的に配置された複数のオブジェクトの位置情報を記憶する記憶部とコンピュータとを備えるゲームシステムにおいて、前記コンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記仮想空間を生成する仮想空間生成手段、
前記仮想空間内におけるキャラクタの移動を制御するキャラクタ制御手段、
前記複数のオブジェクトの位置情報と、前記キャラクタの位置情報とに基づき、前記複数のオブジェクトの夫々と前記キャラクタとの間の距離を算出する距離算出手段、
前記距離算出手段により算出された距離に基づき、前記複数のオブジェクトの中から1のオブジェクトを対象オブジェクトとして特定する特定手段、及び、
前記対象オブジェクトが特定された場合に、当該対象オブジェクトと前記キャラクタとの接触を示すリアクションを実行するリアクション実行手段、
として機能させる、ゲームプログラム。
前記特定手段は、前記複数のオブジェクトのうち前記キャラクタに最も近いオブジェクトを抽出し、抽出された前記オブジェクトと前記キャラクタとの距離が所定の設定値以下である場合に、当該オブジェクトを前記対象オブジェクトとして特定する、
請求項1又は2に記載のゲームプログラム。
前記特定手段は、前記キャラクタから所定の第1範囲に位置する前記オブジェクトを抽出し、抽出された前記オブジェクトのうち、当該オブジェクトに予め設定された所定の第2範囲内に最初に前記キャラクタが進入した1のオブジェクトを、前記対象オブジェクトとして特定する、
請求項1又は2に記載のゲームプログラム。
前記記憶部には、前記キャラクタが前記複数のオブジェクトの夫々に接触する際に発生する音声が、接触音として前記複数のオブジェクトの夫々に関連付けて記憶されており、
前記ゲームシステムは、前記記憶部に記憶された音声を出力する出力部を備え、
前記リアクション実行手段は、前記対象オブジェクトが特定された場合に、当該対象オブジェクトに関連付けた前記接触音を前記出力部から出力させる、
請求項1〜4のいずれか1項に記載のゲームプログラム。
前記リアクション実行手段は、前記対象オブジェクトが特定された場合でも、前記仮想空間内において前記キャラクタが移動していないときは、前記接触音を前記出力部から出力させない、
請求項5に記載のゲームプログラム。
前記リアクション実行手段は、前記対象オブジェクトが特定されている間、前記キャラクタの移動速度が高くなるにつれて、リアクションを実行してから次のリアクションを実行するまでの時間間隔を短くする、
請求項1〜6のいずれか1項に記載のゲームプログラム。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述のように衝突判定領域同士の重なりを判定する方法では、仮想空間内に配置された多数のオブジェクトの衝突判定領域に対して、キャラクタに設定された衝突判定領域と重なったか判定する必要がある。このため、キャラクタとオブジェクトとの接触の判定に要する処理負荷が大きいという問題が生じていた。
【0006】
そこで本発明は、キャラクタとオブジェクトとの接触を判定する際の処理負荷を低減することができるゲームプログラム及びゲームシステムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明に係るゲームプログラムは、仮想空間に固定的に配置された複数のオブジェクトの位置情報を記憶する記憶部とコンピュータとを備えるゲームシステムにおいて、前記コンピュータに実行させるゲームプログラムであって、前記コンピュータを、前記仮想空間を生成する仮想空間生成手段、前記仮想空間内におけるキャラクタの移動を制御するキャラクタ制御手段、前記複数のオブジェクトの位置情報と、前記キャラクタの位置情報とに基づき、前記複数のオブジェクトの夫々と前記キャラクタとの間の距離を算出する距離算出手段、前記距離算出手段により算出された距離に基づき、前記複数のオブジェクトの中から1のオブジェクトを対象オブジェクトとして特定する特定手段、及び、前記対象オブジェクトが特定された場合に、当該対象オブジェクトと前記キャラクタとの接触を示すリアクションを実行するリアクション実行手段、として機能させる。
【0008】
上記のゲームプログラムによれば、複数のオブジェクトの夫々とキャラクタとの間の距離に基づいて、特定手段が複数のオブジェクトの中から1のオブジェクトを対象オブジェクトとして特定し、リアクション実行手段が当該対象オブジェクトとキャラクタとの接触を示すリアクションを実行する。このため、衝突判定領域同士の重なりを判定する方法に比べて、キャラクタとオブジェクトとの接触を判定する際の処理負荷を低減することができる。
【0009】
上記のゲームプログラムにおいて、前記オブジェクトは、例えば植物オブジェクトである。
【0010】
上記のゲームプログラムにおいて、前記特定手段は、前記複数のオブジェクトのうち前記キャラクタに最も近いオブジェクトを抽出し、抽出された前記オブジェクトと前記キャラクタとの距離が所定の設定値以下となった場合に、当該オブジェクトを前記対象オブジェクトとして特定してもよい。このゲームプログラムによれば、キャラクタとオブジェクトとの接触を判定する際の処理負荷をより低減することができる。
【0011】
上記のゲームプログラムにおいて、前記特定手段は、前記キャラクタから所定の第1範囲に位置する前記オブジェクトを抽出し、抽出された前記オブジェクトのうち、当該オブジェクトに予め設定された所定の第2範囲内に最初に前記キャラクタが進入した1のオブジェクトを、前記対象オブジェクトとして特定してもよい。
【0012】
上記のゲームプログラムにおいて、前記記憶部には、前記キャラクタが前記複数のオブジェクトの夫々に接触する際に発生する音声が、接触音として前記複数のオブジェクトの夫々に関連付けて記憶されており、前記ゲームシステムは、前記記憶部に記憶された音声を出力する出力部を備え、前記リアクション実行手段は、前記対象オブジェクトが特定された場合に、当該対象オブジェクトに関連付けた前記接触音を前記出力部から出力させてもよい。
【0013】
上記のゲームプログラムにおいて、前記リアクション実行手段は、前記対象オブジェクトが特定された場合でも、前記仮想空間内において前記キャラクタが移動していないときは、前記接触音を前記出力部から出力させなくてもよい。このゲームプログラムによれば、キャラクタが移動していないときは接触音が発生しないため、キャラクタがオブジェクトと接触する際のリアリティをより高めることができる。
【0014】
上記のゲームプログラムは、前記リアクション実行手段は、前記対象オブジェクトが特定されている間、前記キャラクタの移動速度が高くなるにつれて、リアクションを実行してから次のリアクションを実行するまでの時間間隔を短くしてもよい。このゲームプログラムによれば、キャラクタが速く動いているときは接触音の単位時間当たりの発生数が多くなるため、キャラクタがオブジェクトと接触する際のリアリティをより高めることができる。
【0015】
また、本発明に係るゲームシステムは、上記のゲームプログラムを記憶したプログラム記憶部と、前記プログラム記憶部に記憶されたプログラムを実行するコンピュータとを備える。
【発明の効果】
【0016】
本発明によれば、キャラクタとオブジェクトとの接触を判定する際の処理負荷を低減することができるゲームプログラム及びゲームシステムを提供することができる。
【発明を実施するための形態】
【0018】
以下、本発明の実施の形態に係るゲームプログラムおよびゲームシステムについて、図面を参照しつつ説明する。
【0019】
[ハードウェア構成]
図1は、ゲームシステム1のハードウェア構成を示すブロック図である。ゲームシステム1は、ゲーム装置2及びサーバ装置3を備えている。ゲーム装置2は、他のゲーム装置2及びサーバ装置3との間で、インターネット又はLANなどの通信ネットワークNWを介して互いに通信可能である。このゲーム装置2は、その動作を制御するコンピュータであるCPU10を備え、このCPU10にはバス11を介して、ディスクドライブ12、メモリカードスロット13、記憶部(プログラム記憶部)を成すHDD14及びROM15、並びにRAM16が接続されている。
【0020】
ディスクドライブ12には、DVD−ROM等のディスク型記録媒体30が装填可能である。該ディスク型記録媒体30には、本実施の形態に係るゲームプログラム30a及びゲームデータ30bが記録されている。このゲームデータ30bには、各キャラクタや仮想空間の形成に必要なデータ、及び、ゲーム中で再生されるサウンドデータなど、本ゲームの進行に必要な各種のデータが含まれる。また、メモリカードスロット13にはカード型記録媒体31が装填でき、ゲームの途中経過等のプレイ状況を示すセーブデータを、CPU10からの指示に応じて記録可能である。
【0021】
HDD14はゲーム装置2が内蔵する大容量記録媒体であって、ディスク型記録媒体30から読み込んだゲームプログラム30a及びゲームデータ30b、更にはセーブデータ等を記録する。ROM15は、マスクROM又はPROMなどの半導体メモリであり、ゲーム装置2を起動する起動プログラムや、ディスク型記録媒体30が装填されたときの動作を制御するプログラムなどを記録している。RAM16は、DRAM又はSRAMなどから成り、CPU10が実行すべきゲームプログラム30aや、その実行の際に必要になるゲームデータ30bなどを、ゲームのプレイ状況に応じてディスク型記録媒体30又はHDD14から読み込んで一時的に記録する。
【0022】
また、CPU10には更に、バス11を介してグラフィック処理部17、オーディオ合成部20、無線通信制御部23、及びネットワークインタフェース26が接続されている。
【0023】
このうちグラフィック処理部17は、CPU10の指示に従って仮想ゲーム空間や各キャラクタ等を含むゲーム画像を描画する。すなわち、仮想空間中に設定した仮想カメラの位置、向き、ズーム率(画角)等を調整し、仮想空間を撮影する。そして、撮影した画像をレンダリング処理し、表示用の二次元のゲーム画像を生成する。また、グラフィック処理部17には、ビデオ変換部18を介して外部のディスプレイ(表示部)19が接続されている。グラフィック処理部17にて描画されたゲーム画像は、ビデオ変換部18において動画形式に変換され、このディスプレイ19にて表示される。
【0024】
オーディオ合成部20は、CPU10の指示に従って、ゲームデータ30bに含まれるデジタル形式のサウンドデータを再生及び合成する。また、オーディオ合成部20にはオーディオ変換部21を介して外部のスピーカ(出力部)22が接続されている。従って、オーディオ合成部20にて再生及び合成されたサウンドデータは、オーディオ変換部21にてアナログ形式にデコードされ、スピーカ22から外部へ出力される。その結果、本ゲームをプレイしているユーザは、再生されたサウンドを聴取することができる。
【0025】
無線通信制御部23は、2.4GHz帯の無線通信モジュールを有し、ゲーム装置2に付属するコントローラ24との間で無線により接続され、データの送受信が可能となっている。ユーザは、このコントローラ24に設けられたボタン等の操作部を操作することにより、ゲーム装置2へ信号を入力することができ、ディスプレイ19に表示されるプレイヤキャラクタの動作を制御する。
【0026】
ネットワークインタフェース26は、インターネット又はLANなどの通信ネットワークNWに対してゲーム装置2を接続するものであり、他のゲーム装置2及びサーバ装置3との間で通信可能である。そして、ゲーム装置2を、通信ネットワークNWを介して他のゲーム装置2と接続し、互いにデータを送受信することにより、同一の仮想空間内で同期して複数のプレイヤキャラクタを表示させることができる。従って、複数人が共同してゲームを進行させるマルチプレイが可能になっている。
【0027】
[ゲーム装置の機能的構成]
図2は、ゲームシステム1が備えるゲーム装置2の機能的な構成を示すブロック図である。ゲーム装置2は、本発明のゲームプログラム30aを実行することで、仮想空間生成手段41、キャラクタ制御手段42、距離算出手段43、特定手段44、及びリアクション実行手段45として機能する。なお、このような各機能は、ハード的には
図1に示すCPU10,HDD14,ROM15,RAM16,グラフィック処理部17,ビデオ変換部18、オーディオ合成部20、オーディオ変換部21、無線通信制御部23等から構成されている。
【0028】
仮想空間生成手段41は、所定の広がりを有する三次元の仮想空間Sを生成する。
図3は、当該仮想空間Sが表示されたディスプレイ19のゲーム画面Dの一例を示す。仮想空間S内には、キャラクタ制御手段42によりその動作を制御されるキャラクタCが存在している。また、仮想空間S内においてキャラクタC近傍の所定位置には、仮想空間Sを撮像するための仮想カメラ(図示せず)が配置されており、該仮想カメラにより撮像された仮想空間Sの画像が、
図3に示すように、ゲーム画面D上に表示される。
【0029】
また、仮想空間生成手段41は、仮想空間Sを生成する際に、背景物として草や花などの複数のオブジェクトを固定的に配置する。
図3には、これらオブジェクトの一例として、2種類の草オブジェクトA,Bがそれぞれ複数配置されている。
図3には、互いに近接して配置されることにより1つの草むらRAを形成した7つの草オブジェクトA(A1〜A7)と、互いに近接して配置されることにより1つの草むらRBを形成した9つの草オブジェクトB(B1〜B9)が示されている。また、
図3には、符号を付していないが、木オブジェクトなども示されている。
【0030】
但し、
図3に示したオブジェクトは一例であり、仮想空間S内のオブジェクトの種類や配置は
図3に示したものに限定されない。例えば、異なる種類の草オブジェクトが互いに近接して配置されて草むらを形成してもよいし、複数の草オブジェクトが草むらを形成することなく互いに離れて配置されてもよい。
【0031】
ゲームデータ30bには、各オブジェクトに関連付けられた仮想空間Sにおける位置データ(位置情報)が含まれており、仮想空間生成手段41は、当該位置データに基づき、オブジェクトを仮想空間Sに夫々固定的に配置する。
図4は、
図3に示された草オブジェクトA1〜A7,B1〜B9と、仮想空間Sにおける位置X1〜X16との対応関係を示す図表である。草オブジェクトA1〜A7,B1〜B9の位置X1〜X16は、例えば仮想空間S内の草オブジェクトA1〜A7,B1〜B9の所定の点のワールド座標系の位置座標として記憶されている。
【0032】
また、ゲームデータ30bには、キャラクタCがオブジェクトの夫々に接触する際に再生される音声(接触音)データが含まれている。これら接触音データは、草オブジェクトA1〜A7,B1〜B9等のオブジェクトの夫々に関連付けて記憶されている。
図4には、草オブジェクトA1〜A7,B1〜B9と接触音データとの対応関係についても示されている。本実施形態では、同じ種類のオブジェクトには同一の接触音が設定されている。例えばキャラクタCが草オブジェクトAに接触した場合には接触音SD1が発生し、例えばキャラクタCが草オブジェクトBに接触した場合には接触音SD2が発生する。接触音の発生についての詳細は後述する。
【0033】
なお、本実施形態では、接触音データと関連付けられたオブジェクトは、仮想空間S内の全てのオブジェクトではなく、植物オブジェクトなど、キャラクタCの移動を制限しないオブジェクトに限定している。具体的には、キャラクタCが移動する際に身体の一部が接触してもキャラクタCの移動方向を変更しない水たまりや草花、茂みなどのオブジェクトが、接触音データと関連付けられている。キャラクタCが移動する際に身体の一部が接触するとキャラクタCの移動方向を変更する、あるいはキャラクタCを停止させる壁などのオブジェクトは、接触音データと関連付けられていない。
【0034】
キャラクタ制御手段42は、当該仮想空間S内におけるキャラクタCの移動を制御する。具体的には、キャラクタ制御手段42は、キャラクタCの移動の開始及び停止、キャラクタCの移動方向及び移動速度、キャラクタCの移動態様(走る、歩く、這う)などを制御する。
図3のゲーム画面Dに表示されたキャラクタCは、コントローラ24の操作によりユーザが直接的にその動作を制御することのできるプレイヤキャラクタである。即ち、本ゲームでは、ユーザがディスプレイ19に表示された仮想空間Sを見ながら、コントローラ24を操作して、キャラクタCを仮想空間S内で移動できるようになっている。
【0035】
但し、キャラクタ制御手段42が移動を制御するキャラクタは、プレイヤキャラクタに限定されない。例えば、仮想空間S内にノンプレイヤキャラクタ(例えば、プレイヤキャラクタが戦う敵キャラクタや、プレイヤキャラクタの味方となって一緒に敵キャラクタを攻撃するキャラクタ、味方でも敵でもない村人などのキャラクタ)が存在する場合、キャラクタ制御手段42は、仮想空間S内にノンプレイヤキャラクタの一部又は全部の移動を制御してもよい。この場合、オブジェクトと接触した際の接触音を、キャラクタの種類に応じて異なるように設定してもよく、例えば敵キャラクタが草オブジェクトA1に接触した場合に、
図4に示す接触音SD1以外の音声を発生してもよい。
【0036】
本実施形態では、キャラクタCと仮想空間S内のオブジェクトとが接触した際のリアクションとして、接触音をスピーカ22から発生させる。距離算出手段43及び特定手段44は、キャラクタCに接触して、リアクションを実行する対象となる対象オブジェクトを特定するオブジェクト特定処理を実行する。距離算出手段43は、複数のオブジェクトの位置情報と、キャラクタCの位置情報とに基づき、複数のオブジェクトの夫々とキャラクタCとの間の距離を算出する。特定手段44は、距離算出手段43により算出された距離に基づき、複数のオブジェクトの中から1のオブジェクトを対象オブジェクトとして特定する。
【0037】
距離算出手段43及び特定手段44により実行されるオブジェクト特定処理について、
図5を参照しながら説明する。
図5は、オブジェクト特定処理の流れを示すフローチャートである。
【0038】
オブジェクト特定処理では、まず、距離算出手段43が、接触音データと関連付けられた複数のオブジェクトの位置情報と、キャラクタCの現在の位置情報とに基づき、これら複数のオブジェクトの夫々とキャラクタCとの間の距離を算出する(ステップS1)。具体的には、三次元の仮想空間SにおけるキャラクタCの所定の点(例えばキャラクタCの頭頂部に当たる点)とオブジェクトの所定の点との間の距離を、各オブジェクトについて算出する。
【0039】
次に、特定手段44は、距離算出手段43により算出された距離に基づき、複数のオブジェクトの中から1のオブジェクトを対象オブジェクトとして特定する。具体的には、特定手段44は、複数のオブジェクトのうちキャラクタCに最も近いオブジェクトを抽出する(ステップS2)。言い換えれば、距離算出手段43により算出されたキャラクタCとの距離が最短である1のオブジェクトを抽出する。
【0040】
特定手段44は、抽出されたオブジェクトとキャラクタCとの距離が所定の設定値Ls以下であるか否かを判定する(ステップS3)。これにより、特定手段44は、抽出されたオブジェクトとキャラクタCとが接触しているか否かを判定する。
【0041】
本実施形態では、オブジェクトの種類によらず、設定値Lsは一定である。設定値Lsやオブジェクトの大きさ等は、キャラクタCが抽出されたオブジェクトに設定値Lsの距離まで近づいたときに互いに接触するようにユーザに見えるよう適宜設定されている。但し、オブジェクトの種類に応じて、設定値Lsが異なるように設定されていてもよい。
【0042】
抽出されたオブジェクトとキャラクタCとの距離が所定の設定値Ls以下であると判定した場合(ステップS3:Yes)、特定手段44は、抽出されたオブジェクトとキャラクタCが接触していると判断して、当該オブジェクトを対象オブジェクトとして特定し(ステップS4)、オブジェクト特定処理を終了する。
【0043】
このように本実施形態では、抽出されたオブジェクトとキャラクタCとの距離が所定の設定値Ls以下である場合に、抽出されたオブジェクトとキャラクタCとが「接触した」と判断されるが、これらが実際に接触している必要はなく、例えば、接触しているように見える程度に近い距離であればよい。
【0044】
抽出されたオブジェクトとキャラクタCとの距離が所定の設定値Ls以下でないと判定した場合(ステップS3:No)、特定手段44は、仮想空間S内にキャラクタCと接触したオブジェクトがないものと判断し、対象オブジェクトを特定することなく、オブジェクト特定処理を終了する。
【0045】
以上のオブジェクト特定処理は、毎フレーム実行される。但し、オブジェクト特定処理は、数フレームおきに実行されてもよい。
【0046】
リアクション実行手段45は、オブジェクト特定処理により特定された対象オブジェクトに対応した接触音を発生させるリアクション実行処理を実行する。
【0047】
まず、リアクション実行処理によりリアクションが実行されるタイミングについて説明する。リアクション実行処理は、オブジェクト特定処理により対象オブジェクトが特定されている間、毎フレーム実行される。但し、リアクション実行処理では、対象オブジェクトが特定されている間、リアクションが毎フレーム実行されるわけではなく、リアクションを実行してから次のリアクションを実行するまでの時間間隔を調整している。
【0048】
本実施形態では、リアクション実行手段45は、タイマーによりリアクションを実行してから次のリアクションを実行するまでの時間間隔を管理している。具体的には、リアクション実行手段45は、対象オブジェクトが特定されている間、予め設定された初期値からゼロまで、タイマー値を後述のタイマー進行速度でカウントダウンする。そして、タイマー値がゼロに達してタイマーが満了すると、リアクション実行手段45は、所定のリアクションを実行する。但し、リアクション実行手段45は、タイマー値をゼロから予め設定された値までカウントアップしてもよい。
【0049】
本実施形態では、タイマーの進行速度は、キャラクタCの移動速度に応じて変更される。具体的には、リアクション実行手段45は、キャラクタCの移動速度が高いほどタイマー進行速度を高くして、タイマーが満了するまでの時間間隔を短くする。キャラクタCの移動速度が連続的に増減される場合、リアクションを実行する時間間隔は、連続的に変更されてもよいし、段階的に変更されてもよい。リアクション実行手段45は、キャラクタCの移動速度がゼロである(即ち、キャラクタCが移動していない)場合、タイマー進行速度をゼロにする(即ち、タイマー値を変更しない)。このように、タイマーの進行速度がキャラクタCの移動速度に応じて変更されることによって、リアクションを実行する時間間隔が変更される。
【0050】
図6(A)は、キャラクタCが歩いて移動しているときのリアクション実行タイミングを模式的に示した図であり、
図6(B)は、キャラクタCが走って移動しているときのリアクション実行タイミングを模式的に示した図である。
図6(A)及び(B)において、横矢印は、時間軸を示しており、時間軸を指す複数の縦矢印は、リアクションが実行されたタイミングを示している。キャラクタCが走って移動している
図6(B)では、キャラクタCが歩いて移動している
図6(A)のタイマー進行速度に比べて、タイマー進行速度が高くなる。このため、
図6(B)におけるリアクションを実行する時間間隔t2は、
図6(A)におけるリアクションを実行する時間間隔t1に比べて短くなる。
【0051】
但し、リアクションを実行する時間間隔の変更は、キャラクタCの移動速度に応じてタイマーの進行速度を変更する方法に限定されない。例えば、タイマーの進行速度を一定として、リアクションを実行してから次のリアクションを実行するまでにタイマーがカウントする値を、キャラクタCの移動速度に応じて変更してもよい。
【0052】
なお、
図6(A)及び(B)に示した時間t0は、一回のリアクションにつき再生される接触音の継続時間である。接触音の継続時間は、対象オブジェクトに関連付けられた接触音データ(
図4参照)による。但し、接触音の継続時間も、キャラクタCの移動速度に応じて変更されてもよい。
【0053】
図7は、リアクション実行手段45により実行されるリアクション実行処理の流れを示すフローチャートである。
【0054】
リアクション実行処理は、特定手段44により対象オブジェクトが特定された場合に実行される。リアクション実行処理では、まず、リアクション実行手段45が、仮想空間S内においてキャラクタCが移動中にあるか否かを判定する(ステップT1)。言い換えれば、リアクション実行手段45は、キャラクタCの移動速度がゼロでないかを判定する。
【0055】
キャラクタCが仮想空間S内において移動中にあると判定した場合(ステップT1:Yes)、リアクション実行手段45は、キャラクタCの移動速度に応じたタイマー進行速度でタイマーを進行させる(ステップT2)。
【0056】
キャラクタCが仮想空間S内において移動中にない(停止している)と判定した場合(ステップT1:No)、リアクション実行手段45は、タイマーの進行を停止させる、即ちタイマー進行速度をゼロにする(ステップT3)。
【0057】
ステップT2,T3の後、タイマーが満了したか否かを判定する(ステップT4)。タイマーが満了した場合(ステップT4:Yes)、対象オブジェクトに関連付けられた接触音を出力する(ステップT5)。その後、タイマー値を初期値に戻し(ステップT6)、リアクション実行処理を終了する。タイマーが満了していない場合(ステップT4:No)、接触音を出力することなく、リアクション実行処理を終了する。
【0058】
次に、接触音を発生させる流れの一例として、キャラクタCが草むらRAを通過する際の接触音の発生について、
図8を参照しながら説明する。
図8は、仮想空間Sを上方から見た平面模式図であり、実線で示されたキャラクタCが位置X0から、位置X0’、 位置X0’’の順に紙面左側から右側へと移動して草むらRAを通過する様子を示している。なお、
図8では、図面を見やすくするために、草オブジェクトA1〜A7については、それら自体の図示は省略し、仮想空間Sにおける位置X1〜X7と、位置X1〜X7の夫々から設定値Lsだけ離れた線のみ示す。
【0059】
オブジェクト特定処理により、草オブジェクトA1〜A7の夫々と、キャラクタCとの間の距離L1〜L7が算出される。キャラクタCが草むらRAに入る前である位置X0にいるとき、距離L1〜L7うち最も短い距離は、草オブジェクトA3とキャラクタCとの距離L3である。この距離L3が設定値Lsより大きいため、位置X3に対応する草オブジェクトA3は対象オブジェクトとして特定されない。
【0060】
更にキャラクタCが進み、キャラクタCが位置X0’に到達して草むらRAに入ると、草オブジェクトA3とキャラクタCとの距離L3が設定値Ls以下となる。このため、草オブジェクトA3が対象オブジェクトとして特定され、リアクション実行処理が実行される。即ち、キャラクタCの移動速度に応じてタイマーを進行させ、タイマーが満了した際に草オブジェクトA3に関連付けられた接触音SD1を発生させる。
【0061】
更にキャラクタCが位置X0’から位置X0’’へと移動して、草むらRAから出るまでの間、対象オブジェクトとして特定されるオブジェクトは、草オブジェクトA3から、草オブジェクトA4、草オブジェクトA5の順に変更され、それらに対応するリアクション実行処理が実行される。但し、草オブジェクトA1〜A7はいずれも接触音SD1と関連付けられているため、キャラクタCが草むらRAを移動している間、接触音SD1がキャラクタCの移動速度に応じた時間間隔でスピーカ22から出力される。
【0062】
以上に示したように、本実施形態に係るゲームシステム1では、複数のオブジェクトの夫々とキャラクタCとの間の距離に基づいて、特定手段44が複数のオブジェクトの中から1のオブジェクトを対象オブジェクトとして特定する。そして、リアクション実行手段45が当該対象オブジェクトとキャラクタCとの接触を示すリアクションを実行する。このため、衝突判定領域同士の重なりを判定する方法に比べて、キャラクタCとオブジェクトとの接触を判定する際の処理負荷を低減することができる。
【0063】
また、本実施形態では、特定手段44は複数のオブジェクトのうちキャラクタCに最も近いオブジェクトを抽出し、抽出されたオブジェクトとキャラクタCとの距離が所定の設定値Ls以下となった場合に、当該オブジェクトを対象オブジェクトとして特定する。このため、キャラクタCとオブジェクトとの接触を判定する際の処理負荷をより低減することができる。
【0064】
また、本実施形態では、リアクション実行手段45は、対象オブジェクトが特定された場合でも、仮想空間S内においてキャラクタCが移動していないときは、接触音をスピーカ22から出力させない。このため、キャラクタCがオブジェクトと接触する際のリアリティをより高めることができる。
【0065】
また、本実施形態では、リアクション実行手段45は、対象オブジェクトが特定されている間、キャラクタCの移動速度が高くなるにつれて、リアクションを実行してから次のリアクションを実行するまでの時間間隔を短くする。このため、キャラクタCが速く動いているときは接触音の単位時間当たりの発生数が多くなるため、キャラクタCがオブジェクトと接触する際のリアリティをより高めることができる。
【0066】
本発明は上述した実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲で種々の変形が可能である。
【0067】
例えば、上記実施形態では、特定手段44により特定された対象オブジェクトとキャラクタCとの接触を示すリアクションとして、対象オブジェクトに関連付けた接触音の発生が示されたが、対象オブジェクトとキャラクタCとの接触を示すリアクションは接触音の発生に限定されない。例えば、リアクション実行手段45により実行されるリアクションは、対象オブジェクトの揺れや飛散などのゲーム画面D上に表現される視覚的なエフェクトであってもよい。
【0068】
また、特定手段44による対象オブジェクトの特定方法も上記実施形態で説明された方法に限定されない。例えば、上記実施形態では、特定手段44がキャラクタCに最も近いオブジェクトを抽出したが、特定手段44は、キャラクタCに近い複数のオブジェクトを抽出し、その中で所定の条件を満たす1のオブジェクトを特定してもよい。
【0069】
特定手段44による対象オブジェクトの特定方法の変形例について、
図9を参照して説明する。
図9は、仮想空間Sを上方から見た平面模式図であり、仮想空間Sを移動中のキャラクタCが、2つのオブジェクトD1,D2(それぞれ位置Y1,Y2のみ示す)の傍を通過する様子を示している。
【0070】
この変形例では、まず特定手段44は、キャラクタCから所定の第1距離Lc以下の範囲(第1範囲)に位置するオブジェクトD1,D2を抽出する。オブジェクトD1,D2には、第2距離Ls1,Ls2が予め設定されている。特定手段44は、第2距離以下の範囲(第2範囲)内に最初にキャラクタCが進入した1のオブジェクト(即ち図例では位置Y2にあるオブジェクトD2)を対象オブジェクトとして特定する。このように対象オブジェクトを特定する場合も、上記実施形態と同様の効果を得ることができる。