(57)【特許請求の範囲】
【請求項１】
接触判定領域を設定された複数のオブジェクトが配置される仮想の３次元空間を表示装置に表示させる画像処理装置のコンピュータにおいて実行される画像処理プログラムであって、
所定のオブジェクトが移動している間、当該所定のオブジェクトに設定される接触判定領域の大きさを、増減を繰り返すように時間に応じて変化させる変化ステップと、
前記所定のオブジェクトと他のオブジェクトとが接触しているか否かをそれぞれの接触判定領域を用いて判定する接触判定ステップと、
前記所定のオブジェクトに接触していると判定されるオブジェクトに対して所定の影響を与えた様子を前記表示装置に表示させる表示制御ステップとを前記コンピュータに実行させる画像処理プログラム。
【請求項２】
前記所定のオブジェクトには、前記接触判定領域とは異なる予備領域が設定され、
前記画像処理プログラムは、前記他のオブジェクトに設定される接触判定領域と前記予備領域とが接触しているか否かを判定する予備判定ステップをさらに前記コンピュータに実行させ、
前記変化ステップおよび前記接触判定ステップは、前記予備判定ステップにて他のオブジェクトに設定される接触判定領域と前記予備領域とが接触していると判定されたときにのみ実行される、請求項１に記載の画像処理プログラム。
【請求項３】
前記変化ステップにおいて、前記コンピュータは、所定時間間隔で接触判定領域の大きさを変化させる、請求項１に記載の画像処理プログラム。
【請求項４】
前記変化ステップにおいて、前記コンピュータは、前記接触判定領域の大きさを所定の範囲内でランダムに変化させる、請求項１に記載の画像処理プログラム。
【請求項５】
前記表示制御ステップにおいて、前記コンピュータは、前記所定のオブジェクトに接触していると判定されるオブジェクトが前記所定のオブジェクトに接触しない位置に移動する動作を表示するか、または、当該オブジェクトの表示態様を変化させて表示する、請求項１に記載の画像処理プログラム。
【請求項６】
接触判定領域を設定された複数のオブジェクトが配置される仮想の３次元空間を表示装置に表示させる画像処理装置であって、
所定のオブジェクトが移動している間、当該所定のオブジェクトに設定される接触判定領域の大きさを、増減を繰り返すように時間に応じて変化させる変化手段と、
前記所定のオブジェクトと他のオブジェクトとが接触しているか否かをそれぞれの接触判定領域を用いて判定する接触判定手段と、
前記所定のオブジェクトに接触していると判定されるオブジェクトに対して所定の影響を与えた様子を前記表示装置に表示させる表示制御手段とを備える、画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理プログラムおよび画像処理装置に関し、より特定的には、仮想の３次元空間内に登場するオブジェクトについて接触判定を行うための画像処理プログラムおよび画像処理装置に関する。
【背景技術】
【０００２】
従来、仮想の３次元空間内に複数のオブジェクト（プレイヤキャラクタ等）が登場するゲームにおいてオブジェクト同士の接触判定（衝突判定、当たり判定とも言う。）を行う技術として、特許文献１に記載の技術がある。この技術は、接触判定を行うためにオブジェクトに設定される領域（接触判定領域）として複数の球形領域を用いるものである。すなわち、特許文献１に記載の画像処理装置は、各オブジェクトにそれぞれ複数の球形領域を設定し、各球形の中心座標と半径とを用いて、オブジェクト同士に設定される球形領域同士のめり込み値を算出する。そして、めり込み値が所定の値より大きい場合にオブジェクト同士が接触したと判定する。このように、オブジェクトを複数の球体として近似することによって接触判定を行うことが可能であり、これによって、オブジェクトを四角柱として近似する場合に比べて、接触判定に要するメモリ量が減少させることができ、処理速度の高速化および接触判定の正確化を図ることができる。
【特許文献１】特開平７−２３０５５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述した従来の技術では、オブジェクトに設定される接触判定領域の大きさは一定である。そのため、従来の技術では、オブジェクト同士が接触した際に行われる動作の結果が、自然に（リアルに）表現できない場合があった。図１７は、従来の技術を用いて表示される仮想空間の画像の一例を示す図である。図１７では、たくさんの落ち葉１１１が落ちている地面上を竜巻が移動する様子を表現する場合を例として説明する。この例では、落ち葉１１１および竜巻に接触判定領域が設定され、落ち葉１１１と竜巻との接触判定が行われる。そして、接触すれば、落ち葉１１１が竜巻によって巻き上げられるように動作させる。ここで、竜巻の接触判定領域の大きさが一定である場合、竜巻の接触判定領域の幅と同じ一定の幅で落ち葉１１１が巻き上げられるので、竜巻の通過後においては、一定の幅の帯状領域Ａ２（図１８参照）上の落ち葉１１１が吹き飛んでなくなっている。しかし、一定の幅の領域のみについて落ち葉１１１が吹き飛び、その領域外については落ち葉１１１が全く吹き飛んでいないという状態は、現実には起こりえず不自然である。このように、従来においては、オブジェクト同士の接触によって起こる動作結果が自然に表現することができないことがあった。
【０００４】
それ故、本発明の目的は、オブジェクト同士の接触によって行われる動作結果がより自然になるようにオブジェクトを動作させることができる画像処理プログラムおよび画像処理装置を提供することである。
【課題を解決するための手段】
【０００５】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００６】
第１の発明は、接触判定領域を設定された複数のオブジェクト（竜巻オブジェクト７２および落ち葉オブジェクト７３等）が配置される仮想の３次元空間を表示装置（テレビ２）に表示させる画像処理装置（ゲーム装置３）のコンピュータ（ＣＰＵ３１）において実行される画像処理プログラム（ゲームプログラム８０）である。画像処理プログラムは、変化ステップ（ステップＳ５）と、接触判定ステップ（ステップＳ６）と、表示制御ステップ（ステップＳ９）とをコンピュータに実行させる。変化ステップにおいて、コンピュータは、所定のオブジェクト（竜巻オブジェクト７２）が移動している間、当該所定のオブジェクトに設定される接触判定領域（７５）の大きさを、増減を繰り返すように時間に応じて変化させる。接触判定ステップにおいて、所定のオブジェクトと他のオブジェクト（落ち葉オブジェクト７３）とが接触しているか否かをそれぞれの接触判定領域（７５および７６）を用いて判定する。表示制御ステップにおいて、所定のオブジェクトに接触していると判定されるオブジェクトに対して所定の影響（吹き飛ばされる等）を与えた様子を表示装置に表示させる。
【０００７】
第２の発明においては、前記所定のオブジェクトには、接触判定領域とは異なる予備領域（７７）が設定されてもよい。このとき、画像処理プログラムは、予備判定ステップ（ステップＳ３およびＳ４）をさらにコンピュータに実行させる。コンピュータは、予備判定ステップにおいて、他のオブジェクトに設定される接触判定領域と予備領域とが接触しているか否かを判定する。このとき、変化ステップおよび接触判定ステップは、前記予備判定ステップにて他のオブジェクトに設定される接触判定領域と予備領域とが接触していると判定されたときにのみ実行される。
【０００８】
第３の発明においては、変化ステップにおいて、コンピュータは、所定時間間隔（例えば１フレーム時間間隔）で接触判定領域の大きさを変化させるようにしてもよい。
【０００９】
第４の発明においては、変化ステップにおいて、コンピュータは、接触判定領域の大きさを所定の範囲内でランダムに変化させるようにしてもよい。
【００１０】
第５の発明においては、表示制御ステップにおいて、コンピュータは、所定のオブジェクトに接触していると判定されるオブジェクトが所定のオブジェクトに接触しない位置に移動する動作を表示するか、または、当該オブジェクトの表示態様を変化させて表示するようにしてもよい。
【００１１】
また、本発明は、上記画像処理プログラムを実行することによって実現される機能と同等の機能を有する画像処理装置の形態で提供されてもよい。
【発明の効果】
【００１２】
第１の発明によれば、所定のオブジェクトが移動している間は、変化ステップにおいて接触判定領域の大きさが変化する。このとき、所定のオブジェクトが滑らかに移動しても、当該所定のオブジェクトに他のオブジェクトが接触したと判定される範囲の外縁は、所定のオブジェクトの移動軌跡に沿った滑らかな形状とはならず、凹凸を有する形状となる。これによって、当該範囲が不自然に整った外縁とならないので、接触によって行われる動作結果をより自然に表現することができる。
【００１３】
第２の発明によれば、所定のオブジェクトに予備領域を設定し、予備領域が他のオブジェクトの接触判定領域に接触している場合のみ、所定のオブジェクトの接触判定領域の大きさを決定して接触判定処理を行う。したがって、接触判定領域の大きさを決定する処理が不要な場合（例えば、所定のオブジェクトの周囲に他のオブジェクトが存在しない場合）には当該処理を省略することができるので、コンピュータの処理負担を軽減することができる。
【００１４】
第３の発明によれば、所定時間間隔で接触判定領域の大きさを変化させることによって、第２の発明のように予備領域を設定する必要がないので、画像処理装置で用意する記憶容量を低減することができる。
【００１５】
第４の発明によれば、接触判定領域の大きさをランダムに変化させることによって、規則性を持たせて変化させる場合よりも、接触によって行われる動作結果をより自然に表現することができる。
【００１６】
第５の発明によれば、所定のオブジェクトに接触していると判定される他のオブジェクトを移動させたり（例えば、後述する実施形態のように吹き飛ばされたかのように移動させる）、当該他のオブジェクトの表示態様を変化させたり（例えば、後述する変形例のように形状を変化させる）する。これによって、所定のオブジェクトに接触する範囲と接触しない範囲とのゲーム空間における状態の違いを、ユーザにわかりやすく見せることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の一実施形態に係る画像処理装置の一例であるゲーム装置および当該ゲーム装置を含むゲームシステムについて説明する。図１は、当該ゲームシステム１の外観図である。なお、本実施形態では、本発明に係る画像処理装置の一例として据置型ゲーム装置を例に挙げて説明するが、画像処理装置はこれに限定されるものではない。例えば携帯型ゲーム装置、アーケードゲーム装置、携帯端末、携帯電話またはパーソナルコンピュータなどのように、ゲームプログラム（画像処理プログラム）を実行するコンピュータを搭載する機器に適用することができる。
【００１８】
図１において、ゲームシステム１は、据置型ゲーム装置（以下、単にゲーム装置と記載する）３と、当該ゲーム装置３に接続コードを介して接続される表示装置の一例であるテレビジョン受像機（以下、単にテレビと記載する）２とを含む。ゲーム装置３には、プレイヤによって操作可能な複数の操作スイッチを有するコントローラ６が接続される。また、ゲーム装置３には、本実施形態に係るゲームプログラムを記憶した情報記憶媒体の一例である光ディスク４が着脱自在に装着される。さらに、ゲーム装置３には、ゲームのセーブデータ等を記憶するフラッシュメモリ等を搭載するカートリッジ５が必要に応じて着脱自在に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムを実行することによって得られるゲーム画像をテレビ２に表示する。さらに、ゲーム装置３は、カートリッジ５に記憶されたセーブデータを用いて、過去に実行されたゲームの続きを実行したり、過去に実行されたゲーム状態を再現して、ゲーム画像をテレビ２に表示することもできる。そして、ゲーム装置３のプレイヤは、テレビ２に表示されたゲーム画像を見ながらコントローラ６を操作することによってゲームを楽しむことができる。
【００１９】
コントローラ６は、上述したように接続コードを介してゲーム装置３に着脱自在に接続される。コントローラ６は、テレビ２に表示されるゲーム空間に登場するプレイヤオブジェクト（プレイヤの操作対象であるオブジェクト（キャラクタ））を主に操作するための操作手段であり、複数の操作スイッチとして、操作ボタン、キー、およびスティック等の入力部を備えている。具体的には、コントローラ６には、プレイヤによって把持されるグリップ部が形成される。また、コントローラ６は、プレイヤの左手の親指等によって操作可能なメインスティック６１および十字キー６２と、右手の親指等によって操作可能なＣスティック６７およびＡボタン６３等を含む。なお、コントローラ６は、上記ボタンの他、Ｂボタン６４、Ｘボタン６５、Ｙボタン６６、およびスタート−ポーズボタンや、プレイヤの右手の人差し指等によって操作可能なＲボタンおよびＺボタン、プレイヤの左手の人差し指等によって操作可能なＬボタンを含む。また、ゲームシステム１は、ゲーム装置３に複数のコントローラ６を接続することによって、複数のプレイヤが同時にゲームをプレイすることができる。
【００２０】
次に、図２を参照して、本発明に係るゲーム装置３の構成について説明する。図２は、ゲームシステム１の機能ブロック図である。図２において、ゲーム装置３は、各種プログラムを実行するＣＰＵ（セントラルプロセッシングユニット）３１を備える。ＣＰＵ３１は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、ワークメモリ３２等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムをワークメモリ３２に一旦読み込んだ後に当該ゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理を行うものである。なお、他の実施形態においては、ゲームプログラムはネットワークを介して通信によってゲーム装置３の外部から取得される形態であっても構わない。ＣＰＵ３１には、ワークメモリ３２、ビデオＲＡＭ（ＶＲＡＭ）３３、外部メモリインターフェース（Ｉ／Ｆ）３４、コントローラインターフェース（Ｉ／Ｆ）３５、ＧＰＵ（Ｇｒａｐｈｉｃｓ  ＰｒｏｃｅＳｉｎｇ  Ｕｎｉｔ）３６、および光ディスクドライブ３７がバスを介して接続される。
【００２１】
ワークメモリ３２は、ＣＰＵ３１で使用される記憶領域であって、ＣＰＵ３１の処理に必要なゲームプログラム等を適宜記憶する。例えば、ワークメモリ３２は、ＣＰＵ３１によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このワークメモリ３２に記憶されたゲームプログラムや各種データ等がＣＰＵ３１によって実行される。ＶＲＡＭ３３は、テレビ２にゲーム画像を表示するためのゲーム画像データを格納する。外部メモリＩ／Ｆ３４は、図示しないコネクタにカートリッジ５を嵌合させることによってゲーム装置３とカートリッジ５とを通信可能に接続する。ＣＰＵ３１は、カートリッジ５に設けられたバックアップメモリに外部メモリＩ／Ｆ３４を介してアクセスする。コントローラＩ／Ｆ３５は、図示しないコネクタによって外部機器とゲーム装置３とを通信可能に接続する。例えば、コントローラ６は、接続コードを介して当該コネクタと嵌合し、コントローラＩ／Ｆ３５を介してゲーム装置３と接続される。コントローラ６は、プレイヤによるメインスティック６１およびＣスティック６７の操作や各操作ボタン６２〜６６等の押圧操作に応じて、操作内容を示す操作データをゲーム装置３に出力する。ＧＰＵ３６は、例えば、３Ｄグラフィックスの表示に必要なベクトル演算やレンダリング処理等の処理をＣＰＵ３１からの指示に応じて行う半導体チップで構成され、当該ＧＰＵ３６によってレンダリングされたゲーム画像はテレビ２に表示される。光ディスクドライブ３７は、ＣＰＵ３１からの指示に応じて、光ディスク４に記憶されたゲームプログラム、画像データ、サウンドデータなどの各種のデータを読み出す。
【００２２】
以下、光ディスク４に格納されたゲームプログラムによってゲーム装置３において実行されるゲーム処理について説明する。まず、本実施形態におけるゲームの概要を説明する。本ゲームは、３次元の仮想のゲーム空間において複数のオブジェクトが登場するアクションゲームである。このゲームでは、プレイヤによって操作されるプレイヤオブジェクトや、ゲーム装置３によって動作が制御される敵オブジェクト等が登場する。さらに、このゲームでは、ゲーム空間には、地面に複数の落ち葉オブジェクト（単に落ち葉と記載することもある。）が配置されたり、例えばプレイヤオブジェクトによって発生される竜巻オブジェクト（単に竜巻と記載することもある。）が登場したりする。ゲーム装置３は、ゲーム処理中において、これらのオブジェクト同士が接触したか否かの判定（接触判定）を行う。以下では、落ち葉と竜巻との接触判定を例として説明する。
【００２３】
図３は、ゲーム装置３によってテレビ２に表示されるゲーム画面の一例を示す図である。図３に示すゲーム画面は、プレイヤオブジェクト（図示せず）が魔法のブーメラン７１を用いて竜巻７２を発生させた様子を表している。竜巻７２は、地面７４に沿って（ここでは、ブーメラン７１と一緒に）移動する。このとき、竜巻７２が通過する地面上の落ち葉７３は、竜巻７２によって巻き上げられて吹き飛ばされる。その結果、竜巻７２の通過した場所については落ち葉７３が吹き飛ばされ、竜巻７２の通過した跡が残る。なお、図３は、画面の手前から奥に向かって竜巻７２が移動している場合のゲーム画面である。
【００２４】
竜巻７２と落ち葉７３との接触判定は、それぞれのオブジェクトに設定される接触判定領域を用いて行われる。つまり、ゲーム装置３は、接触判定領域同士が接触した場合、接触した接触判定領域に対応するオブジェクト同士が接触したと判定する。そして、例えば竜巻７２と落ち葉７３とが接触したと判定される場合、ゲーム装置３は、竜巻７２によって巻き上げられるように落ち葉７３を移動させる。なお、本実施形態では、ゲーム空間に登場する各オブジェクトには、円柱形の接触判定領域がそれぞれ設定される。この円柱形の接触判定領域は、その中心軸が地面に垂直となるような向きにそれぞれ配置される。なお、接触判定領域の形状はどのような形状であってもよく、例えば球形であってもよいし四角柱であってもよい。
【００２５】
次に、竜巻７２が落ち葉７３を吹き飛ばす様子の詳細を図４および図５を用いて説明する。図４は、図３に示す地面を真上から見たときの図である。図４に示す矢印は、竜巻７２（および接触判定領域）の中心が通過する軌跡を示している。つまり、竜巻７２は、図４に示す矢印に沿って移動する。また、図４に示す領域Ａ１は、竜巻７２が通過した際に落ち葉７３が吹き飛ばされる領域である。図４に示すように、本実施形態では、領域Ａ１の幅は一定ではない。すなわち、ゲーム装置３は、竜巻７２の移動中に竜巻７２の接触判定領域の大きさ（具体的には円柱の半径）を変化させることによって、領域Ａ１の幅が変化するようにしている。このとき、領域Ａ１上の落ち葉７３が竜巻７２によって吹き飛ばされる。図５は、竜巻７２が通った後の地面７４の様子を示す図である。図５に示すように、本実施形態では、落ち葉７３が吹き飛ばされた領域Ａ１については、幅が大きい場所や小さい場所があって幅はばらばらである。そのため、図５では、落ち葉７３の吹き飛ばされる領域の幅が一定である場合（図１７参照）に比べて、竜巻７２が通った後の落ち葉７３の様子がよりリアルで自然に近いものとなっている。
【００２６】
次に、竜巻７２と落ち葉７３との接触判定処理の概要を図６および図７を用いて説明する。図６は、竜巻７２および落ち葉７３に設定される接触判定領域を示す図である。図６に示すように、落ち葉７３には円柱形の接触判定領域７６が設定され、竜巻７２には円柱形の接触判定領域７５が設定される。接触判定領域の配置位置は、それに対応するオブジェクトの位置に基づいて決定され、当該オブジェクトが移動すればその移動に応じて移動する。また、本実施形態では、ゲーム空間の位置を示すためのワールド座標系（ｘｙｚ座標系）は、ｘｚ平面が地面７４と平行になるように設定される。各接触判定領域７５および７６は、その中心軸がｙ軸と平行になるように設定される。なお、本実施形態において、接触判定領域はオブジェクトに対して仮想的に設定される。つまり、接触判定領域は、ポリゴンによって構築されてゲーム空間に配置されるものではなく、接触判定領域がテレビ２に表示されることはない。
【００２７】
また、竜巻７２には円柱形の予備領域７７が設定される。予備領域７７とは、接触判定領域７５を用いた接触判定を行うか否かを判定するために用いられる領域である。つまり、ゲーム装置３は、竜巻７２の予備領域７７が他のオブジェクトの接触判定領域に接触した場合にのみ、竜巻７２の接触判定領域７５と当該他のオブジェクトの接触判定領域とが接触したか否かを判定する。予備領域７７の大きさは一定である。以上のように、接触判定領域７５は、大きさが変化する領域であり、落ち葉を吹き飛ばすか否かを判定するための領域であるのに対して、予備領域７７は、大きさが不変の領域であり、接触判定を行うか否かを判定するための領域である点で両者は異なる。また、図６では、接触判定領域７５の半径は予備領域７７の半径よりも大きい状態を示しているが、接触判定領域の半径が変化する際、接触判定領域７５の半径は予備領域７７の半径よりも大きく変化してもよいし、予備領域７７の半径と同じになってもよい。また、予備領域７７は、各接触判定領域と同様、その中心軸がｙ軸と平行になるように設定される。予備領域７７の配置位置は、それに対応するオブジェクト（竜巻７２）の位置に基づいて決定され、当該オブジェクトが移動すればその移動に応じて移動する。予備領域７７は、接触判定領域と同様、オブジェクトに対して仮想的に設定されるものであり、画面に表示されない。
【００２８】
図７は、接触判定処理を説明するための図である。ここでは、３つの落ち葉７３ａ〜７３ｃと竜巻（図７では図示せず）との接触判定を例として説明する。図７では、落ち葉７３ａには接触判定領域７６ａが設定され、落ち葉７３ｂには接触判定領域７６ｂが設定され、落ち葉７３ｃには接触判定領域７６ｃが設定される。なお、図７は、仮想のゲーム空間における上側（ｙ軸正方向から負方向への向き）から地面７４を見た図である。
【００２９】
ゲーム装置３は、ゲーム空間に竜巻７２が登場している場合、まず、落ち葉７３ａ〜７３ｃの接触判定領域７６ａ〜７６ｃと竜巻の予備領域７７との接触を判定する。図７においては、落ち葉７３ａの接触判定領域７６ａと予備領域７７とが接触していると判定される。少なくとも１つの接触判定領域と予備領域７７とが接触していると判定される場合、ゲーム装置３は、竜巻の接触判定領域７５の半径の長さを決定する。本実施形態では、接触判定領域７５の半径は、時間の経過に応じて増減を繰り返すように決定される。なお、接触判定領域７５の高さは予め決められている。接触判定領域７５の大きさが決定されると、ゲーム装置３は、接触判定領域７５と各接触判定領域７６ａ〜７６ｃとが接触しているか否かを判定する。図７では、落ち葉７３ａの接触判定領域７６ａおよび落ち葉７３ｂの接触判定領域７６ｂが接触判定領域７５と接触していると判定されるので、ゲーム装置３は、落ち葉７３ａおよび７３ｂが竜巻に接触していると判断する。その結果、落ち葉７３ａおよび７３ｂは竜巻によって吹き飛ばされる。ゲーム装置３は、以上に示した処理を所定時間毎（例えば１フレーム毎）に実行する。このとき、接触判定領域７５の大きさは時間の経過に応じて変化するように決定されるので、接触判定領域７５の大きさは毎回異なる大きさとなる。そのため、竜巻が移動する間に接触判定領域７５が通過する領域は、図４に示すようにその幅が一定とならない。これによって、竜巻が通った後の落ち葉の様子をリアルに表現することができる。
【００３０】
以下、ゲーム装置３において実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる主なデータについて図８を用いて説明する。図８は、ゲーム装置３のワークメモリ３２に記憶される主なデータを示す図である。図８に示すように、ワークメモリ３２には、ゲームプログラム８０およびゲームデータ８１が記憶される。ゲームプログラム８０は、後述するゲーム処理（図９参照）をゲーム装置３に実行させるためのゲームプログラムである。
【００３１】
ゲームデータ８１には、第１および第２オブジェクトデータ８２ａおよび８２ｂ、ならびに、予備判定フラグデータ９４等が含まれる。本実施形態では、第１オブジェクトデータ８２ａは、予備領域が設定されるオブジェクト、すなわち、上記竜巻オブジェクト７２に関するデータであり、第２オブジェクトデータ８２ｂは、予備領域が設定されないオブジェクト、すなわち、落ち葉オブジェクト７３に関するデータである。図８では、第１オブジェクトデータ８２ａおよび第２オブジェクトデータ８２ｂという２つのオブジェクトに関するデータのみを示しているが、ワークメモリ３２には、ゲーム空間に登場する各オブジェクトに関するデータが記憶される。第２オブジェクトデータ８２ｂは、１つの落ち葉に関するデータであり、複数の落ち葉が登場する場合には各落ち葉についてそれぞれ、第２オブジェクトデータ８２ｂと同様のオブジェクトデータが記憶される。なお、ワークメモリ３２には、図８に示すデータの他、各オブジェクト（竜巻や落ち葉やプレイヤオブジェクトや敵オブジェクト等）の画像データや、ゲーム空間に関するデータ（地形データ等）等、ゲーム処理に必要なデータが記憶される。
【００３２】
第１オブジェクトデータ８２ａには、オブジェクト位置データ８３ａ、姿勢データ８４ａ、予備領域データ８５ａ、接触判定領域データ８９ａ、および接触オブジェクトデータ９３ａが含まれる。オブジェクト位置データ８３ａは、ゲーム空間における第１オブジェクトの位置を示す。当該位置は、上記ワールド座標系における３次元の座標値によって表される。また、姿勢データ８４ａは、ゲーム空間における第１オブジェクトの姿勢（向き）を示す。当該姿勢は、ゲーム空間における方向を示す３次元のベクトルによって表される。
【００３３】
予備領域データ８５ａは、第１オブジェクトに設定される予備領域に関する情報を示す。具体的には、予備領域データ８５ａには、基準位置データ８６ａ、半径データ８７ａ、および高さデータ８８ａが含まれる。基準位置データ８６ａは、予備領域を設定すべき位置を示す。ここでは、基準位置データ８６ａは、円柱形の予備領域の下側底面の中心位置を設定すべき位置を示す。当該位置は、第１オブジェクトを基準とした座標系、すなわち、第１オブジェクトの所定位置を原点とし、第１オブジェクトの位置に対する相対位置を表すための座標系（キャラクタ座標系）における３次元の座標値によって表されてもよいし、上記ワールド座標系における座標値によって表されてもよい。また、半径データ８７ａは、円柱形の予備領域の半径を示す。また、高さデータ８８ａは、円柱形の予備領域の高さを示す。予備領域の半径および高さの値は一定であるので、半径データ８７ａおよび高さデータ８８ａの内容は予め決められている。
【００３４】
接触判定領域データ８９ａは、第１オブジェクトに設定される接触判定領域に関する情報を示す。具体的には、接触判定領域データ８９ａには、基準位置データ９０ａ、半径データ９１ａ、および高さデータ９２ａが含まれる。基準位置データ９０ａは、第１オブジェクトの位置を基準として接触判定領域を設定すべき位置を示す。具体的には、基準位置データ９０ａは、円柱形の接触判定領域の下側底面の中心位置を設定すべき位置を示す。当該位置は、上記キャラクタ座標系における座標値によって表されてもよいし、上記ワールド座標系における座標値によって表されてもよい。また、半径データ９１ａは、円柱形の接触判定領域の半径を示す。上述したように接触判定領域の半径の値は可変であるので、ゲーム処理中において半径データ９１ａの内容はＣＰＵ３１によって適宜更新されて書き換えられる。また、高さデータ９２ａは、円柱形の接触判定領域の高さを示す。接触判定領域の高さの値は一定であり、高さデータ９２ａの内容は予め決められている。
【００３５】
接触オブジェクトデータ９３ａは、第１オブジェクトに接触中の他のオブジェクトを示す。すなわち、第１オブジェクトに他のオブジェクトが接触している時点では接触オブジェクトデータ９３ａは当該他のオブジェクトを示し、第１オブジェクトに他のオブジェクトが接触していない時点では接触オブジェクトデータ９３ａは、接触しているオブジェクトが存在しないことを示す。ゲーム処理中において接触オブジェクトデータ９３ａの内容はＣＰＵ３１によって適宜更新されて書き換えられる。
【００３６】
一方、第２オブジェクトデータ８２ｂには、オブジェクト位置データ８３ｂ、姿勢データ８４ｂ、接触判定領域データ８９ｂ、および接触オブジェクトデータ９３ｂが含まれる。オブジェクト位置データ８３ｂは、ゲーム空間における第２オブジェクトの位置を示す。当該位置は、上記ワールド座標系における３次元の座標値によって表される。また、姿勢データ８４ｂは、ゲーム空間における第２オブジェクトの姿勢（向き）を示す。当該姿勢は、ゲーム空間における方向を示す３次元のベクトルによって表される。また、接触判定領域データ８９ｂは、第２オブジェクトに設定される接触判定領域に関する情報を示す。図示していないが、接触判定領域データ８９ｂには、接触判定領域データ８９ａと同様、基準位置データ、半径データ、および高さデータが含まれる。接触オブジェクトデータ９３ｂは、第１オブジェクトに関する接触オブジェクトデータ９３ａと同様、第２オブジェクトに接触中の他のオブジェクトを示す。
【００３７】
予備判定フラグデータ９４は、予備判定フラグの値を示す。予備判定フラグは、後述する予備判定処理の判定結果を表す。すなわち、予備判定処理において、予備領域と接触する接触判定領域が存在すると判定された場合、予備判定フラグの値は“１”に設定され、予備領域と接触する接触判定領域が存在しないと判定された場合、予備判定フラグの値は“０”に設定される。
【００３８】
次に、ゲームプログラム８０を実行することによってゲーム装置３において行われるゲーム処理の詳細を、図９〜図１１を用いて説明する。図９は、ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ３１は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、ワークメモリ３２等の各ユニットが初期化される。そして、カートリッジ５に格納されたゲームプログラム８０がワークメモリ３２に読み込まれ、ＣＰＵ３１によってゲームプログラム８０の実行が開始される。図９に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図９〜図１１においては、ゲーム処理のうち、第１オブジェクト（すなわち、竜巻７２）と他のオブジェクト（すなわち、落ち葉７３）とがゲーム中に接触したか否かを判定する処理について詳細に示し、本願発明と関連しない他のゲーム処理については詳細な説明を省略する。また、図９〜図１１に示すゲーム処理では、第１オブジェクト以外のオブジェクトについては予備領域は設定されないものとする。
【００３９】
ステップＳ１において、仮想の３次元のゲーム空間が構築され、ゲーム空間の一部を表示するための仮想カメラの初期状態における位置および向き（視線方向）が決定される。また、構築されたゲーム空間の初期位置に所定の姿勢で各オブジェクトが配置される。つまり、ＣＰＵ３１は、各オブジェクトの初期位置を示すデータをオブジェクト位置データとしてワークメモリ３２に記憶し、各オブジェクトの姿勢を示すデータを姿勢データとしてワークメモリ３２に記憶する。本実施形態では、ゲームの初期状態において複数の落ち葉オブジェクトが地面の上に配置される。以上のステップＳ１の後のステップＳ２以降の処理において、コントローラ６を用いたゲーム操作が受け付けられ、ゲームが進行する。なお、ステップＳ２〜Ｓ１０の処理ループは、１回の処理ループが１フレームの間に実行される。
【００４０】
ステップＳ２において、各オブジェクトの動作の制御が行われる。例えば、プレイヤオブジェクトの動作は、プレイヤによるコントローラ６の操作に従って制御される。また、敵オブジェクトの動作は、ゲームプログラム８０に含まれている所定のアルゴリズムに従ってＣＰＵ３１によって制御される。また、ゲーム空間において竜巻オブジェクトが出現している場合には、竜巻オブジェクトの移動はゲームプログラム８０に含まれている所定のアルゴリズムに従ってＣＰＵ３１によって制御される。なお、上述したように、例えばプレイヤオブジェクトが魔法のブーメランを投げることによって竜巻オブジェクトが出現し、竜巻オブジェクトはブーメランとともに移動する。ステップＳ２の処理によって、オブジェクトが動作することによってオブジェクトのゲーム空間における位置や姿勢が変化する場合、ＣＰＵ３１は、当該オブジェクトのオブジェクトデータ（第１オブジェクトデータ８２ａ等）に含まれるオブジェクト位置データの内容を、変化後の位置を示すデータに更新し、当該オブジェクトデータに含まれる姿勢データの内容を、変化後の姿勢を示すデータに更新する。例えば、第１オブジェクト（竜巻オブジェクト）の位置および姿勢が変更された場合、第１オブジェクトデータ８２ａのオブジェクト位置データ８３ａおよび姿勢データ８４ａの内容が更新される。
【００４１】
続くステップＳ３において、予備判定処理が実行される。予備判定処理は、竜巻オブジェクトの接触判定領域と落ち葉オブジェクトの接触判定領域との接触判定を行うか否か、すなわち、竜巻オブジェクトの予備領域と落ち葉オブジェクトの接触判定領域とが接触しているか否かを判定するための処理である。以下、予備判定処理の詳細について図１０を用いて説明する。
【００４２】
図１０は、図９に示すステップＳ３の詳細な処理の流れを示すフローチャートである。なお、図１０では竜巻オブジェクトと落ち葉オブジェクトとについての予備判定処理を例として説明するが、他のオブジェクト同士について行われる予備判定処理も図１０と同様に行うことができる。
【００４３】
予備判定処理においてはまずステップＳ２１において、地面に配置されている全ての落ち葉オブジェクトを後述するステップＳ２２で選択したか否かが判定される。まだ選択していない落ち葉オブジェクトが存在する場合、ステップＳ２２の処理が再度実行される。ステップＳ２１の処理は、竜巻オブジェクトと地面に配置されている落ち葉オブジェクトとの予備判定が全て完了したか否かを判定するために実行される。以降、ステップＳ２１における判定結果が肯定となるまで、ステップＳ２２〜Ｓ２８の処理ループが繰り返される。一方、すでに全ての落ち葉オブジェクトを選択している場合、または、地面に落ち葉が配置されていない状態である場合、ＣＰＵ３１は予備判定処理を終了する。
【００４４】
ステップＳ２２において、ＣＰＵ３１は、地面に配置されている複数の落ち葉オブジェクトから１つを選択する。なお、ステップＳ２２の処理は、ステップＳ２１〜Ｓ２８の処理ループが繰り返される間に繰り返し実行される。この間におけるステップＳ２２では、ＣＰＵ３１は、地面に配置されている落ち葉オブジェクトのうちで、まだ選択されていない落ち葉オブジェクトを選択する。なお、ステップＳ２２では、竜巻によって巻き上げられている落ち葉は選択されない。
【００４５】
ステップＳ２３では、竜巻オブジェクトに設定される予備領域と、ステップＳ２２で選択された落ち葉オブジェクトに設定される接触判定領域とのｘｚ平面に関する距離が算出される。ここで算出される距離は、当該予備領域と当該接触判定領域との中心間距離である。具体的には、予備領域の位置を示す座標を（ｘ１，ｙ１，ｚ１）とし、接触判定領域の位置を示す座標を（ｘ２，ｙ２，ｚ２）としたとき、上記距離ｄは、次の式に従って算出される。
ｄ＝（（ｘ１−ｘ２）2 ＋（ｚ１−ｚ２）2 ）１／２
なお、ここでは、予備領域の位置とは、円柱形である予備領域の下底面の中心位置である。竜巻オブジェクトの予備領域のゲーム空間における位置は、ゲーム空間における竜巻オブジェクトの位置を示すオブジェクト位置データ８３ａ、および、竜巻オブジェクトに対して予備領域を設定すべき位置を示す基準位置データ８６ａから算出することができる。一方、接触判定領域の位置とは、円柱形である接触判定領域の下底面の中心位置である。落ち葉オブジェクトの接触判定領域のゲーム空間における位置は、ゲーム空間における落ち葉オブジェクトの位置を示すオブジェクト位置データ（例えばオブジェクト位置データ８３ｂ）、および、落ち葉オブジェクトに対して接触判定領域を設定すべき位置を示す基準位置データから算出することができる。
【００４６】
ステップＳ２４においては、竜巻オブジェクトの予備領域と、ステップＳ２２で選択された落ち葉オブジェクトの接触判定領域とがｘｚ平面に関して重なっているか否かが判定される。この判定処理は、ステップＳ２３で算出された距離ｄと、上記予備領域の半径ｒ１と、上記接触判定領域の半径ｒ２とを用いて行うことができる。なお、半径ｒ１は、ワークメモリ３２に記憶されている半径データ８７ａにより示され、半径ｒ２は、ワークメモリ３２に記憶されている、上記落ち葉オブジェクトの接触判定領域データに含まれる半径データにより示される。具体的には、ＣＰＵ３１は、次の式が満たされるか否かによって、予備領域と接触判定領域とがｘｚ平面に関して重なっているか否かを判定する。
ｒ１＋ｒ２≧ｄ
すなわち、ｒ１＋ｒ２≧ｄとなる場合、２つの領域（予備領域および接触判定領域）はｘｚ平面に関して重なっていると判定され、ｒ１＋ｒ２＜ｄとなる場合、２つの領域はｘｚ平面に関して重なっていないと判定される。ステップＳ２４の判定において、２つの領域はｘｚ平面に関して重なっていると判定される場合、ステップＳ２５の処理が実行される。一方、２つの領域はｘｚ平面に関して重なっていないと判定される場合、ステップＳ２８の処理が実行される。
【００４７】
ステップＳ２５において、竜巻オブジェクトの予備領域と、ステップＳ２２で選択された落ち葉オブジェクトの接触判定領域とについて、それぞれ、円柱の高さ方向の幅が算出される。予備領域の幅は、ワールド座標系におけるｙ座標値の範囲として表され、予備領域の高さと、当該予備領域のゲーム空間における位置（上記ステップＳ２３を参照）とに基づいて算出することができる。例えば、予備領域のゲーム空間における位置を示す座標値を（ｘ３，ｙ３，ｚ３）とし、予備領域の高さをｈとする。このとき、上記幅は、ｙ３≦ｙ≦ｙ３＋ｈとなる。また、接触判定領域の幅は、予備領域の幅と同様、ワールド座標系におけるｙ座標値の範囲として表され、接触判定領域の高さと、当該接触判定領域のゲーム空間における位置（上記ステップＳ２３を参照）とに基づいて算出することができる。以上のようにして、２つの領域についてｙ座標値の取り得る範囲が算出される。ステップＳ２５の次にステップＳ２６の処理が実行される。
【００４８】
ステップＳ２６において、竜巻オブジェクトの予備領域と、ステップＳ２２で選択された落ち葉オブジェクトの接触判定領域とがｙ軸方向に関して重なっているか否かが判定される。この判定処理は、ステップＳ２５で算出された幅の範囲値を用いて行うことができる。具体的には、ＣＰＵ３１は、ステップＳ２５で算出された２つの範囲が重複するか否かによって、予備領域と接触判定領域とがｙ軸方向に関して重なっているか否かを判定する。例えば、２つの範囲が“１≦ｙ≦５”と“４≦ｙ≦６”であった場合、当該２つの範囲は重複するので、２つの領域がｙ軸方向に関して重なっていると判定される。一方、２つの範囲が“１≦ｙ≦５”と“７≦ｙ≦９”であった場合、当該２つの範囲は重複しないので、２つの領域がｙ軸方向に関して重なっていないと判定される。ステップＳ２６において、２つの領域がｙ軸方向に関して重なっていると判定される場合、ステップＳ２７の処理が実行される。一方、ステップＳ２６において、２つの領域がｙ軸方向に関して重なっていないと判定される場合、ステップＳ２８の処理が実行される。
【００４９】
ステップＳ２７においては、竜巻オブジェクトの予備領域と、ステップＳ２２で選択された落ち葉オブジェクトの接触判定領域とが接触していると判断される。このとき、ＣＰＵ３１は、予備領域と接触する接触判定領域が存在することを示す内容に予備判定フラグを変更する。すなわち、“１”を示すデータを予備判定フラグデータ９４としてワークメモリ３２に記憶する。ステップＳ２７の後、ＣＰＵ３１は予備判定処理を終了する。
【００５０】
一方、ステップＳ２８においては、竜巻オブジェクトの予備領域と、ステップＳ２２で選択された落ち葉オブジェクトの接触判定領域とが接触していないと判断される。このとき、ＣＰＵ３１は、予備領域と接触する接触判定領域が存在しないことを示す内容に予備判定フラグを変更する。すなわち、“０”を示すデータを予備判定フラグデータ９４としてワークメモリ３２に記憶する。ステップＳ２８の後、ＣＰＵ３１はステップＳ２１の処理を再度実行する。以上で予備判定処理の説明を終了する。
【００５１】
図９の説明に戻り、ステップＳ４において、竜巻オブジェクトの予備領域に接触判定領域が接触している落ち葉オブジェクトが存在するか否かが判定される。この判定は、予備判定フラグの内容に基づいて行うことができる。すなわち、ＣＰＵ３１は、予備判定フラグが“１”を示すとき、竜巻オブジェクトの予備領域に接触している落ち葉オブジェクトが存在すると判定し、予備判定フラグが“０”を示すとき、竜巻オブジェクトの予備領域に接触している落ち葉オブジェクトが存在しないと判定する。ステップＳ４の判定において、竜巻オブジェクトの予備領域に接触判定領域が接触している落ち葉オブジェクトが存在する場合、ステップＳ５の処理が実行される。一方、竜巻オブジェクトの予備領域に接触判定領域が接触している落ち葉オブジェクトが存在しない場合、ステップＳ５〜Ｓ８の処理がスキップされてステップＳ９の処理が実行される。
【００５２】
ステップＳ５においては、竜巻オブジェクトの接触判定領域の大きさが決定される。本実施形態では、円柱形の接触判定領域の半径の長さがステップＳ５において決定され、接触判定領域の高さは予め定められている。ＣＰＵ３１は、所定の範囲内で、乱数を用いて半径の長さをランダムに決定する。決定した半径の長さは、半径データ９１ａとしてワークメモリ３２に記憶される。なお、本実施形態では、ステップＳ５で円柱領域の半径の長さを変化させるようにしたが、接触判定領域が設定されるオブジェクトの移動方向に垂直な長さの幅を少なくとも変化させるようにすればよい。
【００５３】
続くステップＳ６において、接触判定処理が実行される。接触判定処理は、竜巻オブジェクトの接触判定領域と落ち葉オブジェクトの接触判定領域との接触判定を行う処理である。以下、接触判定処理の詳細について図１１を用いて説明する。
【００５４】
図１１は、図９に示すステップＳ６の詳細な処理の流れを示すフローチャートである。なお、図１１では図１０と同様、竜巻オブジェクトと落ち葉オブジェクトとについての接触判定処理を例として説明するが、他のオブジェクト同士について行われる接触判定処理も図１１と同様に行うことができる。
【００５５】
接触判定処理においてはまずステップＳ３１において、地面に配置されている複数の落ち葉オブジェクトから１つを選択する。ステップＳ３１の処理は上記ステップＳ２２の処理と同様である。
【００５６】
続くステップＳ３２において、ＣＰＵ３１は、竜巻オブジェクトに設定される接触判定領域と、ステップＳ３１で選択された落ち葉オブジェクトに設定される接触判定領域とのｘｚ平面に関する距離が算出される。ステップＳ３２の処理は、竜巻オブジェクトの予備領域に代えて接触判定領域となっている点を除いて、ステップＳ２３の処理と同様である。なお、竜巻オブジェクトの接触判定領域の位置とは、円柱形である接触判定領域の下底面の中心位置である。竜巻オブジェクトの接触判定領域のゲーム空間における位置は、ゲーム空間における竜巻オブジェクトの位置を示すオブジェクト位置データ８３ａ、および、竜巻オブジェクトに対して接触判定領域を設定すべき位置を示す基準位置データ９０ａから算出することができる。
【００５７】
ステップＳ３３においては、竜巻オブジェクトの接触判定領域と、ステップＳ３１で選択された落ち葉オブジェクトの接触判定領域とがｘｚ平面に関して重なっているか否かが判定される。ステップＳ３３の処理は、竜巻オブジェクトの予備領域に代えて接触判定領域となっている点を除いて、ステップＳ２４の処理と同様である。ステップＳ３３の判定において、２つの領域はｘｚ平面に関して重なっていると判定される場合、ステップＳ３４の処理が実行される。一方、２つの領域はｘｚ平面に関して重なっていないと判定される場合、ステップＳ３７の処理が実行される。
【００５８】
ステップＳ３４において、竜巻オブジェクトの接触判定領域と、ステップＳ３１で選択された落ち葉オブジェクトの接触判定領域とについて、それぞれ、円柱の高さ方向の幅が算出される。続くステップＳ３５において、竜巻オブジェクトの接触判定領域と、ステップＳ３１で選択された落ち葉オブジェクトの接触判定領域とがｙ軸方向に関して重なっているか否かが判定される。ステップＳ３４およびＳ３５の処理は、竜巻オブジェクトの予備領域に代えて接触判定領域となっている点を除いて、ステップＳ２５およびＳ２６の処理と同様である。ステップＳ３５において、２つの領域がｙ軸方向に関して重なっていると判定される場合、ステップＳ３６の処理が実行される。一方、ステップＳ３５において、２つの領域がｙ軸方向に関して重なっていないと判定される場合、ステップＳ３７の処理が実行される。
【００５９】
ステップＳ３６においては、２つのオブジェクト同士（竜巻オブジェクトとステップＳ３１で選択された落ち葉オブジェクト）が接触していると判断される。具体的には、ＣＰＵ３１は、ワークメモリ３２に記憶されている第１オブジェクトデータ８２ａに含まれる接触オブジェクトデータ９３ａの内容を更新する。より具体的には、ステップＳ３１で選択された落ち葉オブジェクトを示すデータを、上記接触オブジェクトデータ９３ａとして追加する。ステップＳ３６の次にステップＳ３８の処理が実行される。
【００６０】
一方、ステップＳ３７においては、上記２つのオブジェクト同士（竜巻オブジェクトとステップＳ３１で選択された落ち葉オブジェクト）が接触していると判断される。具体的には、ＣＰＵ３１は、ステップＳ３１で選択された落ち葉オブジェクトを示すデータが上記接触オブジェクトデータ９３ａに含まれている場合、当該オブジェクトを示すデータを削除する。ステップＳ３７の次にステップＳ３９の処理が実行される。
【００６１】
続くステップＳ３８において、地面に配置されている全ての落ち葉オブジェクトを上記ステップＳ３１で選択したか否かが判定される。まだ選択していない落ち葉オブジェクトが存在する場合、ステップＳ３１の処理が再度実行される。ステップＳ３８の処理は、竜巻オブジェクトと地面に配置されている落ち葉オブジェクトとの接触判定が全て完了したか否かを判定するために実行される。以降、ステップＳ３８における判定結果が肯定となるまで、ステップＳ３１〜Ｓ３８の処理ループが繰り返される。一方、すでに全ての落ち葉オブジェクトを選択している場合、ＣＰＵ３１は接触判定処理を終了する。
【００６２】
図９の説明に戻り、ステップＳ６の接触判定処理の次のステップＳ７において、地面に配置されている落ち葉オブジェクトのいずれかと竜巻オブジェクトとが接触しているか否かが判定される。この判定は、ワークメモリ３２に記憶されている第１オブジェクトデータ８２ａの接触オブジェクトデータ９３ａに基づいて行うことができる。すなわち、ＣＰＵ３１は、落ち葉オブジェクトを示すデータが接触オブジェクトデータ９３ａに含まれているか否かを判定する。そして、落ち葉オブジェクトを示すデータが接触オブジェクトデータ９３ａに含まれている場合、落ち葉オブジェクトのいずれかと竜巻オブジェクトとが接触していると判定する。逆に、落ち葉オブジェクトを示すデータが接触オブジェクトデータ９３ａに含まれていない場合、落ち葉オブジェクトと竜巻オブジェクトとが接触していないと判定する。ステップＳ７の判定において、落ち葉オブジェクトのいずれかと竜巻オブジェクトとが接触していると判定される場合、ステップＳ８の処理が実行される。一方、落ち葉オブジェクトと竜巻オブジェクトとが接触していないと判定される場合、ステップＳ８の処理がスキップされてステップＳ９の処理が実行される。
【００６３】
ステップＳ８においては、接触に応じた動作の制御が行われる。具体的には、竜巻オブジェクトに接触している落ち葉オブジェクトが地面から巻き上げられるように移動される。ステップＳ８の処理によって落ち葉オブジェクトのゲーム空間における位置や姿勢が変化する場合、ＣＰＵ３１は、当該落ち葉オブジェクトのオブジェクト位置データの内容を、変化後の位置を示すデータに更新し、当該落ち葉オブジェクトの姿勢データの内容を、変化後の姿勢を示すデータに更新する。なお、ステップＳ８においては、地面に配置されていた落ち葉を移動させることに加えて、新たに落ち葉オブジェクトを追加して竜巻の周囲を移動させること等によって、竜巻の周囲を舞う落ち葉の数を増やすような表現を行うようにしてもよい。これによって、竜巻によって巻き上げられている落ち葉をより強調して表現することができる。
【００６４】
ステップＳ９においては、ゲーム空間内において各オブジェクトが動作する様子がテレビ２に表示される。ＣＰＵ３１は、ステップＳ２およびＳ８において決定された位置および姿勢となった各オブジェクトを仮想カメラから見たゲーム画像を生成し、生成したゲーム画像をテレビ２に表示させる。続くステップＳ１０において、ゲームを終了するか否かが判定される。ステップＳ１０の判定は、例えば、プレイヤオブジェクトの体力が０になったか否かや、プレイヤオブジェクトが全ての敵オブジェクトを倒したか否か等によって行われる。ステップＳ１０の判定において、ゲームを終了すると判定された場合、ＣＰＵ３１は、図９に示すゲーム処理を終了する。一方、ゲームを終了しないと判定された場合、ステップＳ２の処理が行われ、以降、ステップＳ１０においてゲームを終了すると判定されるまでステップＳ２〜Ｓ１０の一連の処理が繰り返される。以上で、ゲーム処理の詳細な説明を終了する。
【００６５】
以上に説明した、図９〜図１１に示すゲーム処理によれば、竜巻の接触判定領域の大きさは１フレーム毎に変化するので、竜巻が落ち葉を巻き上げる範囲は時間に応じて変化することになる。したがって、竜巻によって落ち葉が吹き飛ばされる領域の幅は一定ではなくなり（図４に示す領域Ａ１参照）、竜巻が通った後の落ち葉の様子をよりリアルで自然に近いものとして表現することができる。
【００６６】
さらに、上記ゲーム処理によれば、ゲーム装置３は、竜巻に予備領域を設定し、予備領域と落ち葉の接触判定領域とが接触する場合（上記ステップＳ４の判定結果が肯定の場合）にのみ、竜巻の接触判定領域の大きさを決定し（ステップＳ５）、竜巻と落ち葉との接触判定処理（上記ステップＳ６）を実行する。したがって、予備領域と落ち葉の接触判定領域とが接触しない場合には、ステップＳ５およびＳ６の処理を省略することができるので、ゲーム装置３の処理負担を軽減することができる。なお、他の実施形態においては、ステップＳ３およびＳ４の処理を実行せず、ステップＳ５およびＳ６の処理を毎フレーム実行するようにしてもよい。
【００６７】
次に、本発明の変形例に係るゲーム処理について、図１２〜図１６を用いて説明する。本変形例では、地面に配置される草のオブジェクト（単に草と記載することもある。）が、例えばプレイヤオブジェクトが持つ剣のオブジェクト（単に剣と記載することもある。）の影響を受けて動作する場合を例として説明する。
【００６８】
図１２は、変形例におけるゲーム画面の一例を示す図である。図１２に示すゲーム画面では、図示しないプレイヤオブジェクトが持つ剣１０１と、ゲーム空間の地面上に配置された複数の草１０２とが表示されている。図１２に示す矢印のように剣１０１が草を通過すると、図１２に示すように、草は剣１０１によって切断されて表示される。つまり、剣１０１と草とが接触したと判定される場合、当該草は通常の草のオブジェクト１０２から切断された草のオブジェクト１０２’に変化する。
【００６９】
次に、変形例において剣によって草が切られる処理の概要を説明する。図１３および図１４は、ゲーム空間における地面を真上から見たときの図である。なお、図１３および１４では、図面を見やすくする目的で、剣オブジェクト１０１を点線で示すとともに、草オブジェクトの記載を省略している。変形例においても上記実施形態と同様、各オブジェクトに設定される接触判定領域は、円柱形であり、その中心軸が地面に垂直に配置される。図１３に示すように、剣オブジェクト１０１には、５つの接触判定領域１０３ａ〜１０３ｄおよび１０４が設定される。剣オブジェクト１０１の最も先端の位置に設定される接触判定領域１０４は、増減を繰り返すように時間に応じて大きさ（具体的には、円柱の半径）が変化する接触判定領域である。他の接触判定領域１０３ａ〜１０３ｄは、大きさが一定の接触判定領域である。このように、１つのオブジェクトに対して複数の接触判定領域が設定されてもよく、また、当該複数の接触判定領域の一部または全部が、大きさの変化する接触判定領域であってもよい。一方、各草オブジェクトには大きさが一定の接触判定領域１０５がそれぞれ設定される。なお、本変形例においては、剣オブジェクトおよび草オブジェクトに予備領域は設定されない。
【００７０】
ここで、剣オブジェクト１０１に設定される接触判定領域１０４は、大きさが時間に応じて変化するので、剣オブジェクト１０１がゲーム空間中を移動すると、剣オブジェクト１０１が草オブジェクトに影響を与える範囲の外縁は、図１３に示す実線Ｌ１のようになる。一方、もし接触判定領域１０４の大きさが変化しないとすれば、上記範囲の外縁は図１３に示す点線Ｌ２のようになる。実線Ｌ１および点線Ｌ２から明らかなように、接触判定領域１０４の大きさが変化しない場合、上記範囲の外縁は円弧状になるのに対して、接触判定領域１０４の大きさが変化する場合、上記範囲の外縁は正確な円弧状にはならない。図１４において点線で示される接触判定領域は、剣オブジェクト１０１が移動する際に接触判定領域１０４に接触する草の接触判定領域である。図１４に示すように、本変形例によれば、剣によって切られた草の跡は正確な円弧状にはならないので、上記実施形態と同様、草の切られた跡をより自然に表現することができる。なお、本変形例では、草オブジェクトの接触判定領域の直径は、剣オブジェクトの接触判定領域の隙間の間隔よりも十分に大きいものとし、剣オブジェクトの接触判定領域の間を草オブジェクトの接触判定領域が通り抜けてしまうことはないものとする。つまり、接触判定領域１０４と接触判定領域１０３ｄとの間隔よりも草オブジェクトの接触判定領域が大きくなる範囲で接触判定領域１０４の大きさは変化する。このように、１つのオブジェクトに複数の接触判定領域が設定される場合、当該複数の接触判定領域のうちで大きさの変化する接触判定領域は、当該接触判定領域とその接触判定領域に最も近い位置に配置される接触判定領域との間隔が、当該オブジェクトに接触し得る他のオブジェクトの接触判定領域の大きさよりも小さくなる範囲で、その大きさが決定される。
【００７１】
さらに、本変形例では、剣オブジェクト１０１に設定される接触判定領域１０４が草オブジェクトに対して与える効果は、時間に応じて変化するものとする。具体的には、剣オブジェクトの接触判定領域１０４と草オブジェクトの接触判定領域とが接触した場合、当該草オブジェクトは、切断されるか、または剣を振った風圧で揺れているかのように動作するか、いずれかの動作を行う。剣オブジェクトが草に与える効果、すなわち、いずれの動作が行われるかは、ランダムに決定される。これによっても、剣によって着られた草の跡は正確な円弧状にはならなくなるので、草の跡をより自然に表現することができる。
【００７２】
図１５は、変形例においてゲーム装置３のワークメモリ３２に記憶される主なデータを示す図である。なお、図１５では、図８と同じデータについては同じ参照符号を付し、詳細な説明を省略する。ワークメモリ３２には、ゲームプログラム８０’およびゲームデータ８１が記憶される。ゲームプログラム８０’は、後述するゲーム処理（図９参照）をゲーム装置３に実行させるためのゲームプログラムである。
【００７３】
本変形例においては、第１オブジェクトデータ８２ａに予備領域データが含まれない点、および、接触判定領域データ８９ａに効果データ９５が含まれる点で上記実施形態とは異なる。それ以外の点は上記実施形態と同様のデータがワークメモリ３２に記憶される。また、本変形例においては、第１オブジェクトデータ８２ａは、剣オブジェクトに関するデータであり、第２オブジェクトデータ８２ｂは、草オブジェクトに関するデータである。なお、第２オブジェクトデータ８２ｂは、１つの草オブジェクトに関するデータであり、複数の草オブジェクトが登場する場合には各草オブジェクトについてそれぞれ、第２オブジェクトデータ８２ｂと同様のオブジェクトデータが記憶される。
【００７４】
効果データ９５は、剣オブジェクトが草オブジェクトに接触すると判断された場合に、剣オブジェクトが草オブジェクトに対して与える効果を示す。具体的には、効果データ９５は、「切断される」または「なびく」を示す。効果データ９５が「切断される」を示す場合において剣オブジェクトが草オブジェクトに接触すると判断されたとき、当該草オブジェクトは切断される。一方、効果データ９５が「なびく」を示す場合において剣オブジェクトが草オブジェクトに接触すると判断されたとき、当該草オブジェクトは風になびいているように動作する。上述したように剣オブジェクトが草オブジェクトに対して与える効果はゲーム中において変化するので、ゲーム処理中において効果データ９５の内容はＣＰＵ３１によって適宜更新されて書き換えられる。
【００７５】
図１６は、変形例においてゲーム装置３で実行されるゲーム処理の流れを示すフローチャートである。図１６において、図９と同じ処理については図９と同じステップ番号を付し、詳細な説明を省略する。
【００７６】
ステップＳ１およびステップＳ２の処理は、上記実施形態と同様である。変形例においては、ステップＳ２の次にステップＳ５の処理が実行される。ステップＳ３およびＳ４の処理は本変形例においては実行されない。ステップＳ５〜Ｓ７の処理は、上記実施形態と同様である。すなわち、ステップＳ５において剣オブジェクトの接触判定領域の大きさが所定範囲内でランダムに決定され、ステップＳ６およびＳ７において草オブジェクトが剣オブジェクトに接触するか否かが判定される。
【００７７】
本変形例においては、ステップＳ７の判定結果が肯定であった場合、ステップＳ８の実行前にステップＳ４１の処理が実行される。ステップＳ４１においては、ＣＰＵ３１は、剣オブジェクトに接触すると判断された草オブジェクトの動作内容を決定する。具体的には、当該草オブジェクトが切断されるか、それとも風になびく動作を行うかを決定する。この決定は、予め用意された乱数を用いてランダムに行われる。ステップＳ４１において動作が決定されると、ワークメモリ３２に記憶されている効果データ９５の内容は、当該動作を示す内容に書き換えられる。続くステップＳ８においては、剣オブジェクトに接触すると判断された草オブジェクトについて、接触に応じた動作の制御が行われる。すなわち、ステップＳ４１で決定された草オブジェクトの動作がステップＳ８で行われる。なお、ステップＳ９およびＳ１０の処理は上記実施形態と同様である。
【００７８】
以上のように、上記変形例においては、剣オブジェクトの接触判定領域の大きさを一定時間毎（１フレーム毎）に変化させることによって、剣オブジェクトが移動する場合における剣オブジェクトの影響範囲（他のオブジェクトと接触する範囲）の外縁は凸凹の形状になる。これによって、剣によって着られた草の跡をより自然に表現することができる。
【００７９】
なお、上記実施形態および変形例では、接触判定領域の大きさをランダムに決定するとしたが、接触判定領域は時間に応じて増減を繰り返すように変化すればよく、他の実施形態においては、接触判定領域の大きさの変化に規則性を持たせるようにしてもよい。
【産業上の利用可能性】
【００８０】
本発明は、接触によって行われる動作結果がより自然になるようにオブジェクトを動作させること等を目的として、例えばゲームシステム等に利用することが可能である。
【図面の簡単な説明】
【００８１】
【図１】ゲームシステム１の外観図
【図２】ゲームシステム１の機能ブロック図
【図３】ゲーム装置３によってテレビ２に表示されるゲーム画面の一例を示す図
【図４】図３に示す地面を真上から見たときの図
【図５】竜巻７２が通った後の地面７４の様子を示す図
【図６】竜巻７２と落ち葉７３に設定される接触判定領域を示す図
【図７】接触判定処理を説明するための図
【図８】ゲーム装置３のワークメモリ３２に記憶される主なデータを示す図
【図９】ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャート
【図１０】図９に示すステップＳ３の詳細な処理の流れを示すフローチャート
【図１１】図９に示すステップＳ６の詳細な処理の流れを示すフローチャート
【図１２】変形例におけるゲーム画面の一例を示す図
【図１３】変形例におけるゲーム空間における地面を真上から見たときの図
【図１４】変形例におけるゲーム空間における地面を真上から見たときの図
【図１５】変形例においてゲーム装置３のワークメモリ３２に記憶される主なデータを示す図
【図１６】変形例においてゲーム装置３で実行されるゲーム処理の流れを示すフローチャート
【図１７】従来の技術を用いて表示される仮想空間の画像の一例を示す図
【図１８】従来の技術を用いて表示される仮想空間の画像の一例を示す図
【符号の説明】
【００８２】
１  ゲームシステム
２  テレビジョン受像機
３  ゲーム装置
４  光ディスク
６  コントローラ
３１  ＣＰＵ
３２  ワークメモリ
７２  竜巻オブジェクト
７３  落ち葉オブジェクト
７５，７６  接触判定領域
７７  予備領域
【図１】
0004719579.tif 000002
【図２】
0004719579.tif 000003
【図３】
0004719579.tif 000004
【図４】
0004719579.tif 000005
【図５】
0004719579.tif 000006
【図６】
0004719579.tif 000007
【図７】
0004719579.tif 000008
【図８】
0004719579.tif 000009
【図９】
0004719579.tif 000010
【図１０】
0004719579.tif 000011
【図１１】
0004719579.tif 000012
【図１２】
0004719579.tif 000013
【図１３】
0004719579.tif 000014
【図１４】
0004719579.tif 000015
【図１５】
0004719579.tif 000016
【図１６】
0004719579.tif 000017
【図１７】
0004719579.tif 000018
【図１８】
0004719579.tif 000019