説明

ゲームプログラムおよびゲーム装置

【課題】オブジェクトが着地する際の様子を簡易な方法で表現することができるとともに、オブジェクトが着地する向きとその向きの着地しやすさとを自由に設定することができるゲームプログラムおよびゲーム装置を提供する。
【解決手段】オブジェクトには、その向きおよびその先端の位置がオブジェクトに対して固定的に設定されるベクトルが複数設定されている。ゲーム装置は、3次元ゲーム空間においてオブジェクトを移動させる。また、オブジェクトの一部が所定面に接したか否かを判定する。オブジェクトの一部が所定面に接したと判定されたとき、複数のベクトルのうちでその先端が最も所定方向の側に位置するベクトルが特定される。また、オブジェクトの一部が所定面に接したと判定されたとき、ゲーム装置は、特定されたベクトルが所定面の方向を向きかつ当該ベクトルが所定面に垂直になる姿勢でオブジェクトを所定面に着地させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームプログラムおよびゲーム装置に関し、特に例えば、仮想ゲーム空間内においてオブジェクトが地面に着地する際の挙動を表示するゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来のテレビゲームでは、仮想の3次元空間を落下するオブジェクトが地面に着地する様子を表現することがある。例えば、サイコロのようなオブジェクトが投げられて地面に落下し、地面でバウンドしたり転がったりした後、地面上で静止する様子を表現することがある。このような様子を表現する具体的な方法として、以下に示す第1および第2の方法が考えられる。
【0003】
第1の方法としては、実際の物理挙動に基づく方法が考えられる。すなわち、落下するオブジェクトの一部が地面に接した時に、接した位置やオブジェクトの速度に基づいて跳ね返りの力を計算する。さらに、跳ね返りの力に基づいてオブジェクトの各頂点についてその後の挙動を計算する。この挙動に基づいて、地面に接したオブジェクトがバウンドしたり転がったりする挙動が表現される。そして、オブジェクトの一部が次に地面に接した時には、上記と同様に跳ね返りの力を計算し、オブジェクトの各頂点の挙動を計算する。以降、オブジェクトが停止するまで上記の計算を繰り返すことによって、オブジェクトが地面上に停止するまでの挙動を計算することができる。第1の方法によれば、オブジェクトの挙動をリアルに表現することができる。
【0004】
また、第2の方法としては、地面に最も近い面をオブジェクトの着地面として決定する方法が考えられる。この方法では、オブジェクトが地面に接した時に、地面に最も近い面(例えば、地面とのなす角が最も小さい面)を算出し、その面をオブジェクトの着地面とする。図14は、落下してきたオブジェクトが地面に接した時の様子を示す図である。なお、図14は地面を真横から見た図である。図14においては、オブジェクト91の面ABCDが地面に最も近い(地面とのなす角が最も小さい)と判断されるので、面ABCDが着地面に決定される。したがって、図15に示すように、オブジェクトは面ABCDが地面に接する姿勢で停止する。第2の方法によれば、オブジェクトが最終的に着地する面を少ない処理量で計算することができ、オブジェクトの挙動を比較的簡易な処理で表現することができる。
【0005】
なお、仮想空間内におけるオブジェクトに衝撃が加わった場合に当該オブジェクトのその後の挙動を計算する方法は、例えば特許文献1および特許文献2に記載されている。特許文献1に記載の方法においては、回転軸が予め設定されているオブジェクトに衝撃が加わった場合、当該オブジェクトに衝撃が加わった位置および衝撃ベクトルを計算する。そして、オブジェクトの回転軸または回転中心と当該位置との距離および衝撃ベクトルに基づいてオブジェクトの回転動作を行う。これによって、オブジェクトの回転動作をリアルに表現することができる。また、特許文献2に記載の方法は、プレイヤキャラクタの武器と敵キャラクタの武器とが衝突した際に武器弾き動作を行わせるものである。この方法においては、プレイヤキャラクタの武器と敵キャラクタの武器とが衝突した場合、各武器の衝突前の移動方向等に基づいて各武器の衝突後の移動方向を計算する。
【特許文献1】特開2001−43397号公報
【特許文献2】特開平11−216269号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
上記第1の方法では、オブジェクトが着地する様子をリアルに表現することができるものの、計算量が膨大になるという課題がある。ゲーム装置の中には処理能力が高くないものも多くあることを鑑みれば、ゲーム処理として第1の方法を採用することは難しい。
【0007】
一方、上記第2の方法では、オブジェクトが停止した時の着地面は、オブジェクトが地面に接した時の着地面が地面に最も近い面に決定される。上記図14および図15の例で言えば、オブジェクト91の着地面は、地面に最も近い面ABCDに決まる。このように、上記第2の方法では、オブジェクトは各面のいずれかで着地し、各面における着地のしやすさは同じである。ここで、ゲームにおいてオブジェクトが地面に着地する様子を表現する場合、ゲームの内容によってはオブジェクトが地面に着地する向きとその向きの着地しやすさとを自由に設定することが好ましいことがある。例えば、オブジェクトが自然に着地する様子を表現する場合、図14および図15の例で言えば、面BCGFが着地面となるようにするのが自然であり望ましい。しかし、第2の方法では、オブジェクトの着地面は、オブジェクトが地面に接した時における地面とのなす角に基づいて一義的に決まってしまい、オブジェクトの各面の着地しやすさを自由に設定することができなかった。また、ゲームの内容によっては、頂点を真下にした向き(頂点が地面にささったような向き)でオブジェクト91が着地することが望ましい場合も考えられる。しかし、第2の方法では、オブジェクト91の形状によってオブジェクトの着地可能な向きが決まるので、頂点で立つような向きで着地させることはできない。また、第2の方法では、曲面を有するオブジェクトについては着地する向きを決定することができない。以上のように、第2の方法では、オブジェクトが着地可能な向きおよびその向きにおける着地しやすさはオブジェクトの形状によって一義的に決定されてしまい、ゲーム製作者の意図通りに決めることができない場合がある。
【0008】
なお、特許文献1は、回転軸が予め設定されているオブジェクトに関する計算方法である。地面に落下するオブジェクトのように、回転軸が設定されていないオブジェクトに対しては特許文献1に記載の方法を適用することはできない。また、特許文献2は、移動している2つのオブジェクトが衝突した場合に、衝突後において各オブジェクトがどの方向に移動するかを計算する方法である。この方法では、各オブジェクトが衝突後に移動することが前提であり、2つのオブジェクトが接した状態で停止することは考慮されていない。さらに言えば、接した状態で停止した場合に各オブジェクトがどのような姿勢となるか(どの向きで停止するか)については考慮されていない。したがって、一方のオブジェクトを地面と考え、他方のオブジェクトを落下するオブジェクトと考えても、落下するオブジェクトが着地する際の挙動を表現する処理に対して特許文献2の方法を適用することはできない。
【0009】
それ故、本発明の目的は、オブジェクトが着地する際の様子を簡易な方法で表現することができるとともに、オブジェクトが着地する向きとその向きの着地しやすさとを自由に設定することができるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0010】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、この欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述の実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
第1の発明は、仮想の3次元ゲーム空間において、オブジェクト(40,50,60)が所定面(地面)に着地する様子を表示装置(第1のLCD11)に表示させる処理をゲーム装置(10)に実行させるゲームプログラムである。ゲームプログラムは、移動制御手段(ステップS6を実行するCPUコア21等。以下、単にステップ番号のみを示す。)と、判定手段(S7またはS32)と、特定手段(S11)と、着地手段(S12)としてゲーム装置のコンピュータ(CPUコア21等)を機能させる。なお、オブジェクトには、その向きおよびその先端の位置がオブジェクトに対して固定的に設定されるベクトル(41〜46,51〜54,61〜66)が複数設定されている。移動制御手段は、3次元ゲーム空間においてオブジェクトを移動させる。判定手段は、オブジェクトの一部が所定面に接したか否かを判定する。特定手段は、判定手段によってオブジェクトの一部が所定面に接したと判定されたとき、複数のベクトルのうちでその先端が最も所定方向(重力方向)の側に位置するベクトルを特定する。着地手段は、判定手段によってオブジェクトの一部が所定面に接したと判定されたとき、特定手段によって特定されたベクトルが所定面の方向を向きかつ当該ベクトルが所定面に垂直になる姿勢でオブジェクトを所定面に着地させる。
【0011】
また、第2の発明においては、オブジェクトは複数の面によって構成され、各面には点が設定されていてもよい。このとき、判定手段は、オブジェクトの面に設定された点のいずれかが所定面に接したことに応じて、オブジェクトの一部が所定面に接したと判定する。
【0012】
また、第3の発明においては、判定手段は、ベクトルのうちのいずれかのベクトルの先端が所定面に接したことに応じて、オブジェクトの一部が所定面に接したと判定してもよい。
【0013】
また、第4の発明においては、オブジェクトは複数の面によって構成されていてもよい。このとき、ベクトルは、オブジェクトの各面について1つずつ設定され、当該面と垂直な向きに設定される(図3参照)。
【0014】
また、第5の発明においては、オブジェクトの中心から各ベクトルの先端までの長さは、そのベクトルが対応する面の面積に応じて長くなるように設定されてもよい。
【0015】
また、第6の発明においては、着地手段は、回転手段(S21)と、平行移動手段(S23)とを含んでいてもよい。このとき、回転手段は、特定手段によって特定されたベクトルが所定面の方向を向きかつ所定面に垂直になるようにオブジェクトを回転させる。平行移動手段は、回転手段によって回転された後のオブジェクトが所定方向の逆側で所定面に接するように当該オブジェクトを平行移動させる。
【0016】
また、第7の発明においては、ゲームプログラムは、速度算出手段(S8)としてコンピュータをさらに機能させてもよい。速度算出手段は、判定手段によってオブジェクトの一部が所定面に接したと判定されたとき、オブジェクトが所定面に接した時点におけるオブジェクトの移動速度を算出する。このとき、着地手段は、速度算出手段による算出結果が予め定められた所定の速度以下であるときにのみオブジェクトを所定面に着地させる。
【0017】
また、本発明は、上記各手段の機能を有するゲーム装置の形態で提供されてもよい。
【発明の効果】
【0018】
第1の発明によれば、オブジェクトに設定されるベクトルの向きおよび先端の位置を用いて、オブジェクトが着地する向きおよびその向きの着地しやすさを決定することができる。すなわち、オブジェクトが着地する向きはオブジェクトの形状とは無関係に設定できるので、オブジェクトの形状による制限を受けずに着地面を自由に決定することができる。また、各ベクトルの先端の位置は着地する向きを特定するために用いられるので、着地する向きの着地しやすさを自由に決定することができる。さらに、各ベクトルの先端の位置を判断することのみによって着地する向きを決定することができるので、オブジェクトが着地する向きを簡単な計算で決定することができる。
【0019】
第2の発明によれば、オブジェクトが着地する挙動を表現する際に、オブジェクトが所定面に不自然にめり込んで表示されることがないので、オブジェクトが着地する様子をより自然に表現することができる。また、オブジェクトの一部が所定面に接したか否かを簡単に判断することができる。
【0020】
第3の発明によれば、オブジェクトの一部が所定面に接したか否かを簡単に判断することができる。
第4の発明によれば、オブジェクトを構成する複数の面のそれぞれについて、各面と垂直な向きにベクトルを設定することができる。
【0021】
第5の発明によれば、面の面積に応じて着地のしやすさを示すベクトルの先端までの長さが決定されるので、オブジェクトが所定面に落ちたときの着地動作をリアルに表現することができる。
【0022】
第6の発明によれば、多面体のオブジェクトが各面のいずれかで着地する様子を簡単な方法で表現することができる。
【0023】
第7の発明によれば、オブジェクトの移動速度が所定の速度よりも大きい場合には、オブジェクトは着地動作を行わない(この場合、典型的にはオブジェクトは所定面でバウンドする動作を行う。)。したがって、オブジェクトの速度がある程度遅い場合にのみ着地動作が行われるので、オブジェクトが所定面に着地する際の挙動をよりリアルに表現することができる。
【発明を実施するための最良の形態】
【0024】
以下、本発明の一実施形態に係るゲーム装置の構成および動作を説明する。
【0025】
(第1の実施形態)
図1は、本発明の第1の実施形態に係るゲーム装置の外観図である。図1において、ゲーム装置10は、第1のLCD(Liquid Crystal Display:液晶表示装置)11および第2のLCD12を含む。ハウジング13は上側ハウジング13aと下側ハウジング13bとによって構成されており、第1のLCD11は上側ハウジング13aに収納され、第2のLCD12は下側ハウジング13bに収納される。第1のLCD11および第2のLCD12の解像度はいずれも256dot×192dotである。なお、第1の実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用することができる。また任意の解像度のものを利用することができる。
【0026】
上側ハウジング13aには、後述する1対のスピーカ(図2の30)からの音を外部に放出するための音抜き孔18aおよび18bが形成されている。
【0027】
下側ハウジング13bには、入力装置として、十字スイッチ14a、スタートスイッチ14b、セレクトスイッチ14c、Aボタン14d、Bボタン14e、Xボタン14f、Yボタン14g、Lボタン14LおよびRボタン14Rが設けられている。また、さらなる入力装置として、第2のLCD12の画面上にタッチパネル15(図1に示す2点鎖線)が装着されている。また、下側ハウジング13bには、電源スイッチ19や、メモリカード17やスティック16を収納するための挿入口(図1に示す一点鎖線)も設けられている。
【0028】
タッチパネル15としては、例えば抵抗膜方式や光学式(赤外線方式)や静電容量結合式など、任意の方式のものを利用することができる。タッチパネル15は、その表面をスティック16で触れると、その接触位置に対応する座標データを出力する機能を有している。なお、以下ではプレイヤがタッチパネル15をスティック16で操作するものとして説明を行うが、スティック16の代わりにペン(スタイラスペン)や指でタッチパネル15を操作することももちろん可能である。第1の実施形態では、タッチパネル15として、第2のLCD12の解像度と同じく256dot×192dotの解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル15の解像度と第2のLCD12の解像度が一致している必要はない。
【0029】
メモリカード17はゲームプログラムを記録した記録媒体であり、下部ハウジング13bに設けられた挿入口に着脱自在に装着される。
【0030】
次に、図2を参照してゲーム装置10の内部構成を説明する。図2において、ハウジング13に収納される電子回路基板20には、CPUコア21が実装される。CPUコア21には、バス22を介して、コネクタ23が接続されるとともに、入出力インターフェース回路(図面ではI/F回路と記す)25、第1GPU(Graphics Processing Unit)26、第2GPU27、RAM24およびLCDコントローラ31が接続される。コネクタ23には、メモリカード17が着脱自在に接続される。メモリカード17は、ゲームプログラムを記憶するROM171と、バックアップデータを書き換え可能に記憶するRAM172を搭載する。メモリカード17のROM171に記憶されたゲームプログラムはRAM24にロードされ、RAM24にロードされたゲームプログラムがCPUコア21によって実行される。RAM24には、ゲームプログラムの他にも、CPUコア21がゲームプログラムを実行して得られる一時的なデータや、ゲーム画像を生成するためのデータが記憶される。I/F回路25には、タッチパネル15と、スピーカ30と、図1の十字スイッチ14aやAボタン14d等からなる操作スイッチ部14とが接続される。スピーカ30は、音抜き孔18aおよび18bの内側に配置される。
【0031】
第1GPU26には、第1VRAM(Video RAM)28が接続され、第2GPU27には、第2VRAM29が接続される。第1GPU26は、CPUコア21からの指示に応じて、RAM24に記憶されているゲーム画像を生成するためのデータに基づいて第1のゲーム画像を生成し、第1VRAM28に描画する。第2GPU27は、同様にCPUコア21からの指示に応じて第2のゲーム画像を生成し、第2VRAM29に描画する。第1VRAM28および第2VRAM29はLCDコントローラ31に接続されている。
【0032】
LCDコントローラ31はレジスタ32を含む。レジスタ32はCPUコア21からの指示に応じて0または1の値を記憶する。LCDコントローラ31は、レジスタ32の値が0の場合は、第1VRAM28に描画された第1のゲーム画像を第1のLCD11に出力し、第2VRAM29に描画された第2のゲーム画像を第2のLCD12に出力する。また、レジスタ32の値が1の場合は、第1VRAM28に描画された第1のゲーム画像を第2のLCD12に出力し、第2VRAM29に描画された第2のゲーム画像を第1のLCD11に出力する。
【0033】
なお、上記のようなゲーム装置10の構成は単なる一例に過ぎず、本発明は、少なくとも1つの表示装置を有する任意のコンピュータシステムに適用することができる。また、本発明のゲームプログラムは、メモリカード17などの外部記憶媒体を通じてコンピュータシステムに供給されるだけでなく、有線または無線の通信回線を通じてコンピュータシステムに供給されてもよいし、さらにはコンピュータシステム内部の不揮発性記憶装置に予め記録されていてもよい。
【0034】
以下、ゲーム装置10において行われるゲームについて説明する。本ゲームは、仮想の3次元ゲーム空間において地面およびオブジェクトが登場するゲームである。ゲームのジャンルはどのようなものであってもよい。本ゲームでは、仮想の3次元ゲーム空間において当該オブジェクトが投げられて地面に着地する様子が第1のLCD11に表示される。また、オブジェクトの形状はどのような形状であってもよいが、第1の実施形態においては、直方体のオブジェクトを例として説明する。
【0035】
図3は、第1の実施形態におけるオブジェクトを示す図である。図3に示すように、オブジェクト40には複数のベクトル41〜46が設定される。なお、図3においては、図面を見やすくする目的で、オブジェクト40の内部にある部分については各ベクトル41〜46を点線で示している。各ベクトル41〜46は、オブジェクト40の中心を始点とするベクトルである。各ベクトル41〜46は、オブジェクト40を構成する各面にそれぞれ対応するように設定される。具体的には、ベクトルは、オブジェクト40の中心からそのベクトルが伸びる方向に存在する面に対応する。例えば、ベクトル41は、オブジェクト40の中心から面ABCDの方へ伸びるベクトルであるので、面ABCDと対応する。これと同様に、ベクトル42は面EFGHと対応し、ベクトル43は面AEHDと対応し、ベクトル44は面BFGCと対応し、ベクトル45は面ABFEと対応し、ベクトル46は面CGHDと対応する。また、第1の実施形態では、ベクトルは、対応する面に対して垂直な方向を向くように設定される。第1の実施形態では、ベクトルは、オブジェクトを構成する各面について1つ設定され、当該面と垂直な向きに設定される。なお、ベクトルはオブジェクトに仮想的に設定されるものであり、オブジェクトが第1のLCD11に表示されている場合であってもベクトルは第1のLCD11に表示されない。
【0036】
各ベクトル41〜46の長さは、直方体であるオブジェクト40の各辺の長さに基づいて設定される。オブジェクト40の辺ABの長さをxとし、辺ADの長さをyとし、辺AEの長さをzとすると、各ベクトル41〜46の長さは次の式(1)に従って決定される。
(ベクトル41の長さ)=(ベクトル42の長さ)=x・y/2z
(ベクトル43の長さ)=(ベクトル44の長さ)=y・z/2x
(ベクトル45の長さ)=(ベクトル46の長さ)=x・z/2y …(1)
式(1)のように、各ベクトル41〜46の長さは、そのベクトルが対応する面の面積とそのベクトルに平行な辺の長さとに基づいて算出される。なお、詳細は後述するが、ベクトルの長さは、オブジェクトが着地する際における、そのベクトルに対応する面での着地しやすさ(立ちやすさ)を示している。
【0037】
各ベクトル41〜46は、ゲーム中においてオブジェクト40が投げられたタイミングで設定される。すなわち、ゲーム装置10は、ゲーム中においてオブジェクト40が投げられたことに応じて各ベクトル41〜46の向きおよび長さを決定する。上述したように、各ベクトル41〜46の向きは、そのベクトルが対応する面と垂直な向きに設定される。各ベクトル41〜46の長さは、上記式(1)に従って設定される。第1の実施形態では、各ベクトル41〜46の始点はオブジェクト40の中心であることが予め定められているので、各ベクトル41〜46は、オブジェクト40の中心からそのベクトルの先端までの3次元ベクトル(x,y,z)として表現することができる。なお、他の実施形態においては、各ベクトル41〜46は、オブジェクト40に対して予め設定されていてもよい。つまり、各ベクトル41〜46を示すデータは、オブジェクト40を示すデータとともにゲームデータとしてメモリカード17のROM171に記憶されていてもよい。
【0038】
各ベクトル41〜46は、オブジェクト40に対して固定的に設定される。オブジェクト40がゲーム空間を移動する場合であっても、オブジェクト40と各ベクトル41〜46との相対的な位置関係は変化しない。つまり、オブジェクト40の3次元ゲーム空間における座標が変化すれば、各ベクトル41〜46の3次元ゲーム空間における座標は、オブジェクト40の座標の変化分だけ変化する。また、オブジェクト40の3次元ゲーム空間における姿勢(向き)が変化すれば、各ベクトル41〜46の3次元ゲーム空間における向きは、オブジェクト40の姿勢が変化した角度だけ変化する。
【0039】
なお、第1の実施形態では、各ベクトル41〜46の始点をオブジェクト40の中心とした。ここで、他の実施形態においては、各ベクトル41〜46は、その向きおよび先端の位置がオブジェクト40に対して固定的に設定されていればよく、始点の位置はどの位置にあってもよい。例えば、各ベクトル41〜46の始点の位置はそのベクトルが対応する面の中心(あるいは面上の任意の位置)であってもよい。ただし、第1の実施形態のように、各ベクトル41〜46の始点の位置を同一の位置にすることによって、複数のベクトル41〜46を簡単に表すことができるというメリットがある。
【0040】
ゲーム中において、上記オブジェクト40は3次元ゲーム空間を移動する。例えば、プレイヤが操作するプレイヤキャラクタ(図示しない)が3次元ゲーム空間に登場するゲームにおいては、当該プレイヤキャラクタがオブジェクト40を掴んでオブジェクト40を投げることによってオブジェクト40が移動する。オブジェクト40が投げられるとゲーム装置10は、3次元ゲーム空間の予め定められた所定方向に働く仮想的な重力を考慮してオブジェクト40の移動を制御する。すなわち、オブジェクト40は仮想的な重力に基づく落下運動を行う。なお、第1の実施形態においては上記所定方向は地面に垂直な下方向であるとするが、他の実施形態においては当該所定方向は下方向に限らない。仮想的な重力が働く方向は、ゲームの内容に応じて適宜設定されればよい。オブジェクト40が落下運動を行った結果、オブジェクト40が地面に接すると、オブジェクト40が着地する挙動が以下に示す方法で計算される。
【0041】
図4は、図3に示すオブジェクトが地面に接した状態を示す図である。オブジェクト40が落下運動(図4に示す一点鎖線の矢印参照。)を行う間、ゲーム装置10は、オブジェクト40の一部が地面に接したか否かを判定する。オブジェクト40の一部が地面に接したか否かの判定は、どのような方法であってもよい。第1の実施形態では、オブジェクト40の各面の中心のいずれかが地面に接したことによって、オブジェクト40の一部が地面に接したと判定する。なお、オブジェクト40の一部が地面に接したか否かの判定は、オブジェクト40のいずれかの頂点が地面に接したか否かによって行ってもよい。また、この判定は、オブジェクト40の各面に予め設定された点(面の中心に限らない)のいずれかが地面に接したか否かによって行ってもよい。図4では、面ABFEの中心が接したことによって、オブジェクト40の一部が地面に接したと判定される。なお、図4は、地面に平行な視線で3次元ゲーム空間を見たときの図である。
【0042】
オブジェクト40の一部が地面に接したと判定されたとき、ゲーム装置10は、ベクトル41〜46のうちで、先端が最も下側に位置するベクトルを特定する。ここで特定されるベクトルは、オブジェクト40に設定されている他の全てのベクトルよりも先端が下側に位置するベクトルである。図4の例においては、ベクトル44がゲーム装置10によって特定される。
【0043】
ベクトルが特定されると、ゲーム装置10は、地面に接した状態(図4に示す状態)のオブジェクト40を地面に着地させる。具体的には、オブジェクト40の一部が地面に接したと判定されたとき、ゲーム装置10は、特定されたベクトルが地面に垂直に下向きになる姿勢でオブジェクト40を地面に着地させて停止させる。つまり、特定されたベクトルに対応する面が着地面に決定され、オブジェクト40は、着地面が地面に面する状態で着地される。図5は、図4に示すオブジェクト40が着地した状態を示す図である。図5は、地面の上方から斜め下向きの視線で3次元ゲーム空間を見たときの図である。図4においてはベクトル44が特定されるので、ベクトル44が地面に垂直に下向きになる状態でオブジェクトが着地される。したがって、オブジェクト40の着地時の着地面は、ベクトル44に対応する面BFGCとなる。
【0044】
図4からわかるように、オブジェクト40の一部が地面に接した時点において先端が最も下側に位置するベクトルは、地面に接したときのオブジェクトの向きと各ベクトルの長さ(または各ベクトルの先端の位置)に応じて変化する。例えば、ベクトル42やベクトル45の長さが図4に示した長さより長ければ、図4において先端が最も下側に位置するベクトルは、ベクトル44ではなくベクトル42またはベクトル45となる可能性もある。ベクトルの先端が最も下側になる確率は、そのベクトルの長さに応じて変化し、そのベクトルの長さが長いほど高くなる。したがって、オブジェクトの各面の着地しやすさ(その面が着地面となるなりやすさ)は、その面に対応するベクトルの長さによって決まる。したがって、第1の実施形態によれば、オブジェクトに設定される各ベクトルの長さを設定することによって、オブジェクトの各面の着地しやすさを自由に設定することができる。さらに、第1の実施形態によれば、オブジェクトの各面の着地しやすさはオブジェクトの形状に起因しないので、ゲーム製作者は、オブジェクトの各面の着地しやすさを、オブジェクトの形状によって制限されずに自由に設定することができる。
【0045】
例えば、オブジェクト40の形状に則したリアルな着地の挙動を表現することを望む場合、ゲーム製作者は、オブジェクト40の形状に則した着地しやすさに応じて、各ベクトル41〜46の長さを決定すればよい。具体的には、各ベクトル41〜46の長さを、対応する面の面積に応じた長さとすることによって、オブジェクト40の着地時の挙動をリアルに表現することができる。つまり、面積の大きな面に対応するベクトルは長く設定し、面積の小さな面に対応するベクトルは短く設定することによって、広い面ほど着地しやすくなるように設定することができる。従って、オブジェクトの狭い面が容易に着地面となってしまうような不自然さをなくし、オブジェクトの着地時の挙動が自然になるように表現することができる。また例えば、ある特定の面の着地しやすさを他の面よりも高くしたい場合、ゲーム製作者は、その特定の面に対応するベクトルの長さを長く設定すればよい。例えば、オブジェクト40について面ABFEで立ちやすいような設定(例えば、オブジェクト40の内部における面ABFEの側に錘が入っているような設定)にしたければ、面ABFEに対応するベクトル45を他のベクトルよりも長くすればよい。以上のように、第1の実施形態によれば、ベクトルの長さを変更することによって、オブジェクトの各面の着地しやすさを容易に変更することができる。
【0046】
次に、ゲーム装置10がメモリカード17のゲームプログラムを実行することによって行われるゲーム処理の詳細について説明する。ゲーム装置10の電源が投入されると、ゲーム装置10のCPUコア21はメモリカード17に格納されているゲームプログラムを実行し、それによってゲーム処理が開始される。以下、図6および図7を参照してゲーム処理の詳細について説明する。
【0047】
図6は、ゲーム装置10において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム処理が開始されると、まず、ステップS1において、プレイヤの操作に基づくゲーム処理が行われる。このゲーム処理は、プレイヤの操作によってゲーム空間に何らかの事象を生じさせ、その様子を表示する処理である。ここで言うゲーム処理とは、投げられたオブジェクトが着地する様子を表示する処理以外のゲーム処理を指し、このゲーム処理の詳細な内容はどのようなものであってもよい。
【0048】
ステップS1の次のステップS2においては、上記立方体のオブジェクト40が投げられる対象として選択されたか否かが判定される。第1の実施形態では、CPUコア21は、プレイヤキャラクタがオブジェクト40を掴んだ場合、オブジェクト40が投げられる対象として選択されたと判定する。なお、プレイヤキャラクタがオブジェクト40を掴む動作は、例えば、当該動作を指示するゲーム操作をプレイヤが行ったことに応じて行われる。ステップS2の判定において、オブジェクト40が選択されていないと判定された場合、ステップS1の処理が再度行われる。以降、オブジェクト40が選択されるまでステップS1およびS2の処理が繰り返される。
【0049】
一方、ステップS2の判定において、オブジェクト40が選択されたと判定された場合、ステップS3の処理が行われる。すなわち、ステップS3において、ステップS2で選択されたオブジェクト40に対してベクトルが設定される。具体的には、オブジェクト40の中心から各面を向く方向であってかつ各面に垂直な方向であり、上記式(1)に従ってその長さが算出される6つのベクトル41〜46が設定される(図3参照)。
【0050】
ステップS3の次のステップS4において、ステップS3でベクトルが設定されたオブジェクト40が投げられたか否かが判定される。すなわち、第1の実施形態においては、プレイヤキャラクタがオブジェクト40を投げる動作が行われた否かが判定される。なお、この動作は、例えばプレイヤが所定のゲーム操作を行うことに応じて行われる。
【0051】
ステップS4の判定において、オブジェクト40が投げられていないと判定された場合、ステップS5の処理が行われる。すなわち、ステップS5において、オブジェクト40の選択がキャンセルされたか否かが判定される。具体的には、CPUコア21は、プレイヤキャラクタがオブジェクト40を離した場合、オブジェクト40の選択がキャンセルされたと判定する。ステップS5の判定において、オブジェクト40の選択がキャンセルされたと判定された場合、処理はステップS1に戻り、ステップS1の処理が再度実行される。一方、ステップS5の判定において、オブジェクト40の選択がキャンセルされていないと判定された場合、処理はステップS4に戻り、ステップS4の処理が再度実行される。
【0052】
一方、ステップS4の判定において、オブジェクト40が投げられたと判定された場合、ステップS6の処理が行われる。すなわち、ステップS6において、プレイヤキャラクタによって投げられたオブジェクト40が3次元ゲーム空間を移動する様子が第1のLCD11に表示される。具体的には、CPUコア21は、次に表示すべきフレームでのオブジェクト40の位置を計算し、計算した結果得られた位置にオブジェクト40を移動させる。そして、移動後の位置にあるオブジェクト40を第1のLCD11に表示させる。なお、ステップS6の処理において、CPUコア21は、仮想の重力を考慮してオブジェクト40の挙動(移動速度の大きさおよび向き)を計算する。また、ステップS6でオブジェクト40の位置が計算される際には、オブジェクト40に設定される各ベクトル41〜46の位置(第1の実施形態では、ベクトルの先端の位置によって表される。)も計算される。
【0053】
ステップS6の次のステップS7においては、オブジェクト40の各面の中心のうちのいずれかが地面に接したか否かが判定される。ステップS7の判定処理は、オブジェクト40の一部が地面に接したか否かを判定するために行われる処理である。ステップS7の判定において、オブジェクト40の全ての面の中心が地面に接していないと判定された場合、ステップS6の処理が再度実行される。ステップS6およびS7の処理は、単位時間(例えば1フレーム)毎に実行される。つまり、ステップS6およびS7においては、移動するオブジェクト40の位置が単位時間毎に計算されて表示され、オブジェクト40の一部が地面に接したか否かが単位時間毎に判定される。
【0054】
一方、ステップS7の判定において、オブジェクト40の各面の中心のうちのいずれかが地面に接したと判定された場合、ステップS8の処理が行われる。すなわち、ステップS8において、オブジェクト40の移動速度の大きさおよび向きが算出される。ここで算出される移動速度は、オブジェクト40の一部が地面に接した時点におけるオブジェクト40の移動速度であり、3次元のベクトルで表される。第1の実施形態では、オブジェクト40の移動速度は、オブジェクト40全体としての移動速度、すなわち、オブジェクト40の中心の移動速度であるとする。
【0055】
ステップS8の次のステップS9において、ステップS8で算出された移動速度の大きさが予め定められた所定値以下であるか否かが判定される。ステップS9の判定処理は、オブジェクト40のその後の挙動を決定する処理であり、具体的には、オブジェクト40をバウンドさせるかそれとも着地させるかを決定するための処理である。ステップS9の判定において、移動速度の大きさが上記所定値以下でないと判定された場合、ステップS10以降の処理が行われる。ステップS10以降の処理は、オブジェクト40をバウンドさせる処理である。一方、ステップS9の判定において、移動速度の大きさが上記所定値以下であると判定された場合、ステップS11およびS12の処理が行われる。ステップS11およびS12の処理は、オブジェクト40を地面に着地させる処理である。
【0056】
ステップS10においては、オブジェクト40のバウンド後の移動速度の大きさおよび向きが算出される。バウンド後の移動速度は、バウンド前の移動速度、すなわち、ステップS8で算出された移動速度に基づいて算出される。具体的には、3次元ゲーム空間における座標系をXYZ座標系とし、地面をXZ平面(X=0、かつ、Z=0の平面)とした場合、バウンド後の移動速度(v2x,v2y,v2z)は以下の式(2)に従って算出される。なお、式(2)では、バウンド前の移動速度を(v1x,v1y,v1z)とする。
v2x=v1x×Nx
v2y=v1y×Ry
v2x=v1z×Nz …(2)
ここで、NxはX方向に関する摩擦係数であり、0<Nx<1の範囲の定数である。RyはY方向に関する反射係数であり、−1<Ry<0の範囲の定数である。NzはZ方向に関する摩擦係数であり、0<Nz<1の範囲の定数である。
【0057】
なお、ステップS10の後、ステップS6およびS7のループ処理が実行される。このループ処理では、その一部が地面に接したオブジェクト40がバウンドする挙動が上記バウンド後の移動速度に基づいて計算され、オブジェクト40がバウンドする様子が第1のLCD11に表示される。そして、ステップS7でオブジェクト40の一部が地面に接したと判定されるまで、ステップS6およびS7の処理が繰り返される。
【0058】
ステップS11においては、オブジェクト40に設定されている各ベクトル41〜46のうち、先端が最も下側に位置するベクトルが特定される(図4参照)。ステップS11の処理は、具体的には、直前のステップS6で算出された各ベクトル41〜46の先端の位置に基づいて行われる。ここで、第1の実施形態においては、地面がXZ平面であり、かつ、重力方向(仮想的な重力が働く方向)は地面に垂直な下向き方向であるので、重力方向はY軸の負方向である。したがって、ベクトルの先端の位置を示す座標のY座標値が最も小さいベクトルが、ステップS11で特定されるベクトルである。
【0059】
ステップS11の次のステップS12においては、着地処理が行われる。着地処理は、オブジェクトの一部が地面に接したと判定された場合において、ステップS12で特定されたベクトルが地面の方向を向きかつ当該ベクトルが地面に垂直になるようにオブジェクト40を地面に着地させる処理である。以下、図7を用いて着地処理の詳細を説明する。
【0060】
図7は、図6に示すステップS12の着地処理の詳細を示すフローチャートである。なお、図7に示すステップS21〜S25のループ処理は所定の単位時間(例えば1フレーム)毎に行われる処理である。着地処理においては、まず、ステップS21において、オブジェクト40を所定角度だけ回転させた位置が計算される。この所定角度は、上記所定の単位時間の間にオブジェクト40が回転する角度である。所定角度は、予め定められた値であってもよいし、上記ステップS11で特定されたベクトルの現在の向きと地面に垂直な下向き方向との角度の差を整数で割ることによって着地処理の度に算出されてもよい。また、ステップS21でオブジェクト40が回転移動した位置が計算される際には、回転移動に応じた各ベクトル41〜46の位置が計算される。
【0061】
ステップS21の次のステップS22において、ステップS21で計算されたオブジェクト40の新たな位置について、各面の中心のいずれかが地面の下側に位置するか否かが判定される。ステップS22の判定において、各面の中心のいずれかが地面の下側に位置すると判定された場合、ステップS23の処理が行われる。すなわち、ステップS23において、オブジェクト40を上側に平行移動させた位置が計算される。具体的には、地面の下側に位置している中心が地面に接する位置となるようにオブジェクト40の位置を上側に平行移動させた位置が計算される。なお、ステップS23でオブジェクト40が平行移動した位置が計算される際には、平行移動に応じた各ベクトル41〜46の位置が計算される。
【0062】
なお、ステップS21でオブジェクト40を回転させると、オブジェクト40の各面の中心のいずれかが地面よりも下側に位置することがあり、その結果、オブジェクト40が地面にめり込んだように表示されることがある。そこで、第1の実施形態では、回転された後のオブジェクト40が地面上で接した位置となるように、ステップS23でオブジェクト40を上側に平行移動するのである。これによって、オブジェクト40は地面上に表示されることとなる。つまり、上記ステップS22およびステップS23の処理は、オブジェクト40が地面にめり込んだように表示されることを防止するための処理である。
【0063】
一方、ステップS22の判定において、オブジェクト40の全ての面の中心が地面の上側に位置すると判定された場合、ステップS23の処理はスキップされ、ステップS24の処理が行われる。また、ステップS23の処理の後、ステップS24の処理が行われる。ステップS24においては、ステップS21およびS23で計算された位置でオブジェクト40が第1のLCD11に表示される。続くステップS25においては、ステップS11で特定されたベクトルの方向が地面に垂直になったか否かが判定される。なお、上記ステップS21における所定角度が予め定められた角度である場合、当該ベクトルと地面に垂直な方向とが完全に一致しないことがある。したがって、この場合には、当該ベクトルと地面に垂直な方向とがほぼ一致していれば(具体的には、当該ベクトルと地面に垂直な方向との角度の差が所定値以下であれば)、両者が一致していると判定するようにしてもよい。ステップS25の判定において、当該ベクトルの方向が地面に垂直になっていないと判定される場合、さらにオブジェクト40を回転移動させる必要があるので、ステップS21の処理が行われる。以降、当該ベクトルの方向が地面に垂直な方向に一致するまでステップS21〜S25の処理が繰り返される。一方、ステップS25の判定において、当該ベクトルの方向が地面に垂直になったと判定される場合、CPUコア21は着地処理を終了する。
【0064】
図6の説明に戻り、ステップS12の次のステップS13において、ゲームを終了するか否かが判定される。この判定は、ゲームがクリアされたか否か、ゲームオーバーになったか否か、および、ゲームを終了する指示がプレイヤによって行われたか否か等に基づいて行われる。ステップS13の判定において、ゲームを終了しないと判定された場合、ステップS1の処理が再度行われる。以降、ゲームが終了するまで、ステップS1〜S13の処理が繰り返される。一方、ステップS13の判定において、ゲームを終了すると判定された場合、CPUコア21は、図6に示すゲーム処理を終了する。
【0065】
以上のように、第1の実施形態によれば、着地処理を行う対象となるオブジェクトにベクトルを設定することによって、当該ベクトルを用いて着地面を決定することができる。したがって、従来のようにオブジェクトの形状を考慮して着地面を決定する必要がないので、オブジェクトの形状の制限を受けずに着地面を自由に決定することができる。また、着地面を決定する際には、オブジェクトに設定された各ベクトルの先端の位置を判断するのみであるので、着地面の計算を簡単に行うことができる。
【0066】
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。第2の実施形態に係るゲーム装置は、図1および図2に示した構成と同じであるので、第2の実施形態に係るゲーム装置の外観図およびブロック図は省略する。以下、第2の実施形態について第1の実施形態との相違点を中心に説明する。
【0067】
図8は、第2の実施形態におけるオブジェクトを示す図である。図8に示すオブジェクト50は、断面が楕円形の柱状の立体である。また、この柱状のオブジェクト50は、断面の楕円形の径が一方の端に行くに従って小さくなっている形状である。本発明における着地処理の対象となるオブジェクトは、上述した直方体のオブジェクトに限らず、オブジェクト50のような曲面を含むオブジェクトであってもよい。また、後述する図13に示すように曲面のみからなる(平面を含まない)オブジェクトであってもよい。
【0068】
図8に示すオブジェクト50については、第1ベクトル51、第2ベクトル52、第3ベクトル53、および第4ベクトル54という4つのベクトル51〜54が設定される。図8に示す例においては、ベクトル51および52は、オブジェクト50の断面である楕円形の短径方向に平行な向きのベクトルである。ベクトル53および54は、オブジェクト50の断面である楕円形に垂直な向きのベクトルである。なお、各ベクトル51〜54の始点の位置は、上記第1の実施形態と同様、オブジェクト50の中心である。
【0069】
なお、図8においては、第3ベクトル53は円柱状のオブジェクト50の底面のうちの面積が大きい方の底面に対応しており、ベクトル54は円柱状のオブジェクト50の底面のうちの面積が小さい方の底面に対応していると言える。しかし、ベクトル51および52については対応する平面がない。このように、本発明におけるベクトルは、オブジェクトのいずれかの平面に必ずしも対応している必要はない。換言すれば、本発明は、曲面を有するオブジェクトについても適用することができ、曲面を有するオブジェクトについても着地位置を容易に計算することができるというメリットがある。
【0070】
第2の実施形態においては、各ベクトル51〜54は、予め用意されたベクトル設定テーブルを参照することによって、その向きおよび先端の位置が決定される。図9は、ベクトル設定テーブルの一例を示す図である。図9に示すように、ベクトル設定テーブルには、長さおよび方向を示すデータがベクトル毎に関連付けられている。例えば、第1ベクトル51については、長さが“20”であり、方向が“(xa,ya,za)”である。この方向は、オブジェクトの中心からの方向である。なお、各オブジェクトの始点の位置が予め決まっている場合には、ベクトル設定テーブルにおいてベクトルの先端の位置のみをベクトル毎に格納するようにしてもよい。このようなベクトル設定テーブルによっても、ベクトルの先端の位置とベクトルの方向とを一義的に定めることができる。
【0071】
以上の図8および図9に示したように、第2の実施形態においては、オブジェクト50にベクトルが設定される際、このベクトル設定テーブルに基づいて各ベクトル51〜54が設定される。上記第1の実施形態では各ベクトルの長さを直方体の各辺の長さを用いて算出するようにしたが、第2の実施形態のように、予め各ベクトルの長さを設定しておいてもよい。第2の実施形態の場合でも、第1の実施形態と同様、オブジェクトに対して自由にベクトルを設定することができ、オブジェクトの各位置での着地しやすさを自由に設定することができる。なお、ベクトル設定テーブルは、ゲームプログラムとともにメモリカード17に予め記憶しておけばよい。また、ゲームの内容に応じて、または、プレイヤによる指示に応じて、ベクトル設定テーブルの内容を後から変更できるようにしてもよい。
【0072】
次に、オブジェクト50の一部が地面に接したか否かの判定方法について説明する。第2の実施形態においては、オブジェクト50の一部が地面に接したか否かの判定において、各ベクトル51〜54が用いられる。具体的には、オブジェクト50が投げられると、ゲーム装置10は、各ベクトル51〜54のいずれかの先端が地面に接したか否かによって、オブジェクト50の一部が地面に接したか否かを判定する。図10は、図8に示すオブジェクト50が地面に接した状態を示す図である。図10においては、第2ベクトル52の先端が地面に接しているので、オブジェクト50は地面に接していると判断される。
【0073】
また、第2の実施形態においても第1の実施形態と同様、オブジェクト50の一部が地面に接したと判定されたとき、各ベクトル51〜54のうちで、先端が最も下側に位置するベクトルが特定される。ここで特定されるベクトルは、その先端が地面に接しているベクトル、すなわち、第2ベクトル52となる。したがって、オブジェクト50は、第2ベクトル52が地面に対して垂直でかつ下向きになる姿勢で着地するように移動制御される。図11は、図8に示すオブジェクト50が着地した状態を示す図である。
【0074】
図12は、第2の実施形態におけるゲーム処理の流れを示すメインフローチャートである。図12に示すフローチャートは、ステップS3に代えてステップS31の処理、および、ステップS7に代えてステップS32の処理が実行される点以外は図6に示すフローチャートと同様である。したがって、図6に示す各ステップと同様の処理を行うステップについては同じステップ番号を付し、詳細な説明を省略する。
【0075】
第2の実施形態においては、ステップS2の判定が肯定(YES)であった場合、ステップS31の処理が行われる。ステップS31においては、ベクトル設定テーブルを参照してオブジェクト50に各ベクトル51〜54が設定される。また、第2の実施形態においては、ステップS6の次にステップS32が実行される。ステップS32においては、オブジェクト50に設定された各ベクトル51〜54のいずれかの先端が地面に接したか否かが判定される。3次元ゲーム空間における座標系をXYZ座標系とし、地面をXZ平面(X=0、かつ、Z=0の平面)とした場合、ステップS32の判定は、各ベクトル51〜54の先端の位置座標のY成分が0以下となったか否かによって行われる。ステップS32の判定において、各ベクトル51〜54のいずれかの先端が地面に接したと判定された場合、ステップS8の処理が行われる。一方、ステップS32の判定において、各ベクトル51〜54の全ての先端が地面に接していないと判定された場合、ステップS6の処理が再度行われる。
【0076】
なお、図12においては、図6に示すステップS7に代えてステップS32の処理を行うこととしたが、第2の実施形態においても第1の実施形態と同様にステップS7の処理を行うようにしてもよい。
【0077】
以上のように、第2の実施形態によっても、オブジェクトに各ベクトルを自由に設定することができるので、オブジェクトの形状の制限を受けずに着地面を自由に決定することができ、第1の実施形態と同様の効果を得ることができる。
【0078】
なお、上記第1および第2の実施形態においては、オブジェクトの形状を直方体または円柱状の立体として説明したが、本発明は、オブジェクトの形状によらず適用することができる。例えば形状が複雑なオブジェクトについても本発明を適用することが可能であり、上記実施形態と同様の効果を得ることができる。
【0079】
図13は、他の実施形態におけるオブジェクトおよびそれに設定されるベクトルの一例を示す図である。図13に示すように、本発明は、人型のオブジェクト60のような複雑な形状のオブジェクトについても適用することが可能である。また、図13では、6つのベクトル61〜66がオブジェクト60に設定されているが、オブジェクト60に設定するベクトルの数は、オブジェクト60を着地させたい向きの数だけ設定すればよい。例えば、人型のオブジェクト60の頭が下になる向き、または、足が下になる向きのいずれかを向くようにオブジェクト60を着地させたければ、ベクトル65および66のみを残し、後のベクトル61〜64を設定しないようにすればよい。また、各ベクトル61〜66の長さは、そのベクトルの向きで着地する着地しやすさに応じて適宜設定すればよい。同様に、各ベクトル61〜66の向きも、着地させたい向きに応じて適宜設定すればよい。ベクトルをどのように設定しても、上述の実施形態で説明した処理によって、オブジェクト60がどの向きで着地するかを簡単に決定することができる。
【0080】
なお、他の実施形態においては、オブジェクトに設定されるベクトルは、その先端の位置(オブジェクトに対して相対的に決まる位置)および向きが定められるものであれば、どのような形で表されるものであってもよい。例えば、オブジェクトが平面で構成される多面体である場合、オブジェクトに設定されるベクトルは、各面に関連付けて設定される点として表されてもよい。この場合、設定される点の位置はベクトルの先端の位置を示し、点からその点に関連付けられる面に下ろした垂線の向きがベクトルの向きを示す。このように、オブジェクトに設定されるベクトルは、その向きと先端の位置を示すベクトルデータとして表される必要はなく、オブジェクトに対して相対的に決まる位置を示す座標データとして表されるものであってもよい。
【0081】
また、上記実施形態では、重力方向が下方向であるとして説明したが、重力方向はゲームの内容や進行に応じて適宜設定されればよく、どの方向であっても本発明を適用することが可能である。例えば、重力方向が上方向であり、オブジェクトが天井に転がる様子を表現する場合にも本発明を適用することができる。また、上記実施形態では、地面は重力方向に垂直な面である場合を説明したが、地面の向きは重力方向に垂直でなくてもよい。地面が重力方向に対して斜めに設定されている場合であっても、上述の実施形態で説明した処理によって、オブジェクトが着地する様子を表現することができる。
【図面の簡単な説明】
【0082】
【図1】第1の実施形態に係るゲーム装置の外観図
【図2】ゲーム装置の内部構成図
【図3】第1の実施形態におけるオブジェクトを示す図
【図4】図3に示すオブジェクトが地面に接した状態を示す図
【図5】図4に示すオブジェクト40が着地した状態を示す図
【図6】ゲーム装置10において実行されるゲーム処理の流れを示すメインフローチャート
【図7】図6に示すステップS12の着地処理の詳細を示すフローチャート
【図8】第2の実施形態におけるオブジェクトを示す図
【図9】ベクトル設定テーブルの一例を示す図
【図10】図8に示すオブジェクト50が地面に接した状態を示す図
【図11】図8に示すオブジェクト50が着地した状態を示す図
【図12】第2の実施形態におけるゲーム処理の流れを示すメインフローチャート
【図13】他の実施形態におけるオブジェクトおよびそれに設定されるベクトルの一例を示す図
【図14】従来の方法における、落下してきたオブジェクトが地面に接した時の様子を示す図
【図15】図14に示すオブジェクトが着地した状態を示す図
【符号の説明】
【0083】
10 ゲーム装置
11,12 LCD
21 CPUコア
24 RAM
40,50,60 オブジェクト
41〜46,51〜54,61〜66 ベクトル

【特許請求の範囲】
【請求項1】
仮想の3次元ゲーム空間において、オブジェクトが所定面に着地する様子を表示装置に表示させる処理をゲーム装置に実行させるゲームプログラムであって、
前記オブジェクトには、その向きおよびその先端の位置が前記オブジェクトに対して固定的に設定されるベクトルが複数設定されており、
前記3次元ゲーム空間において前記オブジェクトを移動させる移動制御手段と、
前記オブジェクトの一部が前記所定面に接したか否かを判定する判定手段と、
前記判定手段によって前記オブジェクトの一部が前記所定面に接したと判定されたとき、複数の前記ベクトルのうちでその先端が最も所定方向の側に位置するベクトルを特定する特定手段と、
前記特定手段によって特定されたベクトルが前記所定面の方向を向きかつ当該ベクトルが前記所定面に垂直になる姿勢で前記オブジェクトを前記所定面に着地させる着地手段として前記ゲーム装置のコンピュータを機能させるためのゲームプログラム。
【請求項2】
前記オブジェクトは複数の面によって構成され、各面には点が設定されており、
前記判定手段は、前記オブジェクトの面に設定された点のいずれかが前記所定面に接したことに応じて、前記オブジェクトの一部が前記所定面に接したと判定する、請求項1に記載のゲームプログラム。
【請求項3】
前記判定手段は、前記ベクトルのうちのいずれかのベクトルの先端が前記所定面に接したことに応じて、前記オブジェクトの一部が前記所定面に接したと判定する、請求項1に記載のゲームプログラム。
【請求項4】
前記オブジェクトは複数の面によって構成され、
前記ベクトルは、前記オブジェクトの各面について1つずつ設定され、当該面と垂直な向きに設定される、請求項1に記載のゲームプログラム。
【請求項5】
前記オブジェクトの中心から各前記ベクトルの先端までの長さは、そのベクトルが対応する面の面積に応じて長くなるように設定される、請求項4に記載のゲームプログラム。
【請求項6】
前記着地手段は、
前記特定手段によって特定されたベクトルが前記所定面の方向を向きかつ前記所定面に垂直になるように前記オブジェクトを回転させる回転手段と、
前記回転手段によって回転された後の前記オブジェクトが前記所定方向の逆側で前記所定面に接するように当該オブジェクトを平行移動させる平行移動手段とを含む、請求項1に記載のゲームプログラム。
【請求項7】
前記判定手段によって前記オブジェクトの一部が前記所定面に接したと判定されたとき、前記オブジェクトが前記所定面に接した時点における前記オブジェクトの移動速度を算出する速度算出手段として前記コンピュータをさらに機能させ、
前記着地手段は、前記速度算出手段による算出結果が予め定められた所定の速度以下であるときにのみ前記オブジェクトを前記所定面に着地させる、請求項1に記載のゲームプログラム。
【請求項8】
仮想の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