(57)【要約】    【構成】  ゲーム機１０はＣＰＵ４０を含み、ＣＰＵ４０は２次元のゲーム空間内に配置される正方形の回転オブジェクトとプレイヤオブジェクトとの当りを判定し、当たっている場合には、プレイヤオブジェクトの位置を補正して、それらの接触状態を示すゲーム画像をＬＣＤ１４に表示する。回転オブジェクトが回転するとき、当該回転オブジェクトは複数の直角三角形を用いて分解される。ＣＰＵ４０は、プレイヤオブジェクトの位置に基づいて、分解した直角三角形のいずれか１つを当りを判定する直角三角形に決定する。この直角三角形の斜辺であり、当該斜辺から直角三角形の外方向に所定距離離れている場合には当たっていないと判定し、所定距離離れていない場合には当たっていると判定する。    【効果】  多角形の回転オブジェクトであっても簡単に当りを判定できるので、ゲーム空間に配置するオブジェクトに自由度を与えることができる。【選択図】  図２
2005027921.tif 000002
【特許請求の範囲】
【請求項１】
２次元空間内に存在する第１オブジェクトと第２オブジェクトとの当りを判定するゲーム装置であって、
前記２次元空間内を自由に移動する第１オブジェクトを発生させる第１オブジェクト発生手段、
前記２次元空間内で回転する多角形の第２オブジェクトを発生させる第２オブジェクト発生手段、
前記第２オブジェクトが回転するとき、当該第２オブジェクトを複数の三角形を用いて分解する分解手段、
前記第１オブジェクトが存在する位置に基づいていずれか１つの三角形を決定する決定手段、および
前記第１オブジェクトが前記決定手段によって決定された１つの三角形の斜辺であり、当該斜辺から当該三角形の外方向に所定距離離れていなければ当りであると判定する当り判定手段を備える、ゲーム装置。
【請求項２】
前記当り判定手段が当りであると判定したとき、前記第１オブジェクトの位置を前記２次元空間のＸ軸方向およびＹ軸方向のいずれか一方に補正する位置補正手段をさらに備える、請求項１記載のゲーム装置。
【請求項３】
前記多角形は正方形を含む、請求項１または２記載のゲーム装置。
【請求項４】
前記三角形は前記２次元空間のＸ軸方向およびＹ軸方向のそれぞれに平行な辺を有する直角三角形である、請求項１ないし３のいずれかに記載のゲーム装置。
【請求項５】
前記正方形の第２オブジェクトが回転したとき、前記２次元空間のＹ軸方向の最大値および最小値となる前記正方形の頂点を基準点として選択する、請求項３または４記載のゲーム装置。
【請求項６】
２次元空間内に存在する第１オブジェクトと第２オブジェクトとの当りを判定するゲーム装置のゲームプログラムであって、
前記ゲーム装置のプロセサに、
前記２次元空間内を自由に移動する第１オブジェクトを発生させる第１オブジェクト発生ステップ、
前記２次元空間内で回転する多角形の第２オブジェクトを発生させる第２オブジェクト発生ステップ、
前記第２オブジェクトが回転するとき、当該第２オブジェクトを複数の三角形を用いて分解する分解ステップ、
前記第１オブジェクトが存在する位置に基づいていずれか１つの三角形を決定する決定ステップ、および
前記第１オブジェクトが前記決定ステップによって決定された１つの三角形の斜辺であり、当該斜辺から当該三角形の外方向に所定距離離れていなければ当りであると判定する当り判定ステップ、を実行させる、ゲームプログラム。
【請求項７】
前記当り判定ステップが当りであると判定したとき、前記第１オブジェクトの位置を前記２次元空間のＸ軸方向およびＹ軸方向のいずれか一方に補正する位置補正ステップをさらに実行させる、請求項６記載のゲームプログラム。
【請求項８】
前記多角形は正方形を含み、
前記当り判定ステップは、前記正方形の第２オブジェクトが回転したとき、前記２次元空間のＹ軸方向の最大値および最小値となる前記正方形の頂点を基準点として選択する基準点選択ステップを含む、請求項６または７記載のゲームプログラム。
【請求項９】
前記三角形は前記２次元空間のＸ軸方向およびＹ軸方向のそれぞれに平行な辺を有する直角三角形である、請求項６ないし７のいずれかに記載のゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はゲーム装置およびゲームプログラムに関し、特にたとえば、２次元空間内に存在する第１オブジェクトと第２オブジェクトとの当りを判定する、ゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
従来のこの種のゲーム装置の一例が特許文献１に開示される。この特許文献１に開示されるゲームシステムは、多数の判定領域を設け、それを回転体のようなキャラクタの回転などと一緒に移動させることにより、キャラクタの見た目に近い当り判定を行うものであった。
【特許文献１】特開平１１−４７４４８号［Ａ６３Ｆ  ９／２２，Ｇ０６Ｔ  １３／００，Ｇ０９Ｇ  ５／００］
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、この従来技術では、単に当たったかどうかを判定するものであり、正確な当りを判定することができなかった。したがって、たとえば、回転する矩形オブジェクトにプレイヤオブジェクトが乗って歩くような画像表示をする場合に、回転するオブジェクトとプレイヤオブジェクトとの間に隙間が出来てしまったり、プレイヤオブジェクトが回転するオブジェクトに埋もれてしまったりするという問題があった。さらには、判定領域を多数設けるため、判定処理が膨大になってしまうという問題もあった。
【０００４】
それゆえに、この発明の主たる目的は、多角形のオブジェクトであっても簡単で正確に当りを判定できる、ゲーム装置およびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００５】
請求項１は、２次元空間内に存在する第１オブジェクトと第２オブジェクトとの当りを判定するゲーム装置である。このゲーム装置は、第１オブジェクト発生手段、第２オブジェクト発生手段、分解手段、決定手段および当り判定手段を備える。第１オブジェクト発生手段は、２次元空間内を自由に移動する第１オブジェクトを発生させる。第２オブジェクト発生手段は、２次元空間内で回転する多角形の第２オブジェクトを発生させる。分解手段は、第２オブジェクトが回転するとき、当該第２オブジェクトを複数の三角形を用いて分解する。決定手段は、第１オブジェクトが存在する位置に基づいていずれか１つの三角形を決定する。そして、当り判定手段は、第１オブジェクトが決定手段によって決定された１つの三角形の斜辺であり、当該斜辺から当該三角形の外方向に所定距離離れていなければ当りであると判定する。
【０００６】
請求項１によれば、ゲーム装置（１０：実施例で相当する参照番号。以下、同じ。）は、２次元空間（２次元のゲーム空間）内に存在する第１オブジェクト（２０２）と第２オブジェクト（２００）との当りを判定する。第１オブジェクト発生手段（４０，Ｓ４１）は、ゲーム空間を自由に移動する第１オブジェクト（２０２）を発生させる。第２オブジェクト発生手段（４０，Ｓ４１）は、ゲーム空間内で回転する多角形の第２オブジェクト（２００）を発生させる。分割手段（４０，Ｓ３５）は、多角形の第２オブジェクト（２００）が回転するとき、当該第２オブジェクト（２００）を複数の三角形を用いて分解する。決定手段（４０，Ｓ３７）は、第１オブジェクト（２０２）が存在する位置に基づいていずれか１つの三角形を決定する。当り判定手段（４０，Ｓ４３，Ｓ４７，Ｓ５３，Ｓ５７）は、第１オブジェクト（２０２）が、決定手段（４０，Ｓ３７）によって決定された１つの三角形の斜辺であり、当該斜辺から当該三角形の外方向に所定距離離れていなければ当りであると判定する。なお、所定距離は、第１オブジェクト（２０２）が第２オブジェクト（２００）をすり抜けてしまうのを防止するため、第１オブジェクト（２０２）が１フレームの間に移動する距離を考慮して決定される。
【０００７】
当り判定手段（４０，Ｓ４３，Ｓ４７，Ｓ５３，Ｓ５７）が当りであると判断したとき、必要に応じて、画像データ出力手段（４０，Ｓ５）は、第１オブジェクト（２０２）と第２オブジェクト（２００）との接触状態を表すための画像データを出力する。したがって、たとえば、第１オブジェクト（２０２）が第２オブジェクト（２００）の上に乗ったり、第１オブジェクト（２０２）が第２オブジェクト（２００）の下からぶつかったりするようなゲーム画像が表示される。
【０００８】
この発明によれば、回転する多角形のオブジェクトを複数の三角形を用いて分解し、いずれか１つの三角形との当りを判定するので、多角形のオブジェクトであっても簡単で正確に当りを判定することができる。
【０００９】
請求項２は請求項１に従属し、当り判定手段が当りであると判定したとき、第１オブジェクトの位置を２次元空間のＸ軸方向およびＹ軸方向のいずれか一方に補正する位置補正手段をさらに備える。
【００１０】
請求項２によれば、当り判定手段（４０，Ｓ４３，Ｓ４７，Ｓ５３，Ｓ５７）が当りであると判断したとき、位置補正手段（４０，Ｓ４５，Ｓ４９，Ｓ５５，Ｓ５９）は、第１オブジェクト（２０２）の位置をＸ軸方向およびＹ軸方向のいずれか一方に補正する。つまり、第１オブジェクト（２０２）は、上下または左右に移動される。これにより、第１オブジェクト（２０２）が第２オブジェクト（２００）に当たった場合であっても、接触状態のゲーム画像を表示することができる。
【００１１】
請求項３は請求項１または２に従属し、多角形は正方形を含む。
【００１２】
請求項３によれば、多角形は正方形であり、第２オブジェクト（２００）が回転すると、たとえば、４つの直角三角形と１つの正方形とに分解することができる。
【００１３】
請求項４は請求項１ないし３のいずれかに従属し、三角形は２次元空間のＸ軸方向およびＹ軸方向のそれぞれに平行な辺を有する直角三角形である。
【００１４】
請求項４によれば、三角形はゲーム空間のＸ軸方向およびＹ軸方向のそれぞれに平行な２つの辺を有する直角三角形であるため、決定手段（４０，Ｓ３７）が第１オブジェクト（２０２）の位置に基づいて１つの直角三角形を決定すると、当り判定手段（４０，Ｓ４３，Ｓ４７，Ｓ５３，Ｓ５７）は、Ｘ軸方向およびＹ軸方向についての当り判定を、それぞれ１回行えばよい。このため、判定回数を減らすことができる。
【００１５】
請求項５は請求項３または４に従属し、正方形の第２オブジェクトが回転したとき、２次元空間のＹ軸方向の最大値および最小値となる正方形の頂点を基準点として選択する。
【００１６】
請求項５によれば、正方形の第２オブジェクト（２００）が回転したとき、ゲーム空間のＹ軸方向の最大値および最小値となる正方形の頂点を基準点として選択するので、たとえば、最大値となる頂点をまたぐように、第１オブジェクト（２０２）が第２オブジェクト（２００）の上を移動したとしても、頂点付近の当りを正確に判断できるので、画面表示が乱れることはない。したがって、プレイヤは違和感を感じることもない。
【００１７】
請求項６は、２次元空間内に存在する第１オブジェクトと第２オブジェクトとの当りを判定するゲーム装置のゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサに、第１オブジェクト発生ステップ、第２オブジェクト発生ステップ、分解ステップ、決定ステップおよび当り判定ステップを実行させる。第１オブジェクト発生ステップは、２次元空間内を自由に移動する第１オブジェクトを発生させる。第２オブジェクト発生ステップは、２次元空間内で回転する多角形の第２オブジェクトを発生させる。分解ステップは、第２オブジェクトが回転するとき、当該第２オブジェクトを複数の三角形を用いて分解する。決定ステップは、第１オブジェクトが存在する位置に基づいていずれか１つの三角形を決定する。そして、当り判定ステップは、第１オブジェクトが決定ステップによって決定された１つの三角形の斜辺であり、当該斜辺から当該三角形の外方向に所定距離離れていなければ当りであると判定する。
【００１８】
請求項６の発明においても、請求項１の発明と同様に、多角形のオブジェクトであっても簡単で正確に当りを判定することができる。
【００１９】
請求項７は請求項６に従属し、当り判定ステップが当りであると判定したとき、第１オブジェクトの位置を２次元空間のＸ軸方向およびＹ軸方向のいずれか一方に補正する位置補正ステップをさらに実行させる。
【００２０】
請求項８は請求項６または７に従属し、多角形は正方形を含み、当り判定ステップは、正方形が回転したとき、２次元空間のＹ軸方向の最大値および最小値となる正方形の頂点を基準点として選択する基準点選択ステップを含む。
【００２１】
請求項９は請求項６ないし７のいずれかに従属し、三角形は２次元空間のＸ軸方向およびＹ軸方向のそれぞれに平行な辺を有する直角三角形である。
【発明の効果】
【００２２】
この発明によれば、回転する多角形のオブジェクトを複数の三角形を用いて分解し、いずれか１つの三角形との当りを判定するので、多角形のオブジェクトであっても簡単で正確に当りを判定することができる。
【００２３】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００２４】
図１を参照して、この発明の一実施例であるゲーム機１０はケース１２を含む。このゲーム機１０としては、ゲームボーイアドバンス（GAMEBOY ADVANCE ：商品名）のような携帯型のゲーム機などを適用することができる。ケース１２の表面には、その略中央にカラーの液晶表示器（以下、「ＬＣＤ」という。）１４が設けられる。このＬＣＤ１４には、ゲーム空間およびそのゲーム空間内に存在するプレイヤオブジェクト等のゲームキャラクタが表示されるとともに、必要に応じてメッセージが表示される。また、ケース１２の表面には、操作ボタン１６，１８，２０，２２，２４，２６，２８が設けられる。操作ボタン１６，１８および２０はＬＣＤ１４の左方に配置され、操作ボタン２２および２４はＬＣＤ１４の右方に配置される。さらに、操作ボタン２６および２８は、ケース１２の上側（ＬＣＤ１４の上方）の端面（天面）に配置される。
【００２５】
操作ボタン１６は、ディジタルジョイスティックとして機能する十字ボタンであり、４つの押圧部の１つを操作することによって、ＬＣＤ１４上に表示されたゲームキャラクタの移動方向を指示したり、カーソルを移動させたりすることができる。操作ボタン１８は、プッシュボタンで構成されたスタートボタンであり、ゲーム開始を指示するため等に利用される。操作ボタン２０は、プッシュボタンで構成されたセレクトボタンであり、ゲームモードの選択等に利用される。
【００２６】
操作ボタン２２は、プッシュボタンで構成されたＡボタンであり、ＬＣＤ１４上に表示されたゲームキャラクタ（プレイヤオブジェクト）に打つ、投げる、つかむ、ジャンプする、飛び乗る、剣で斬る、話かけるなどの任意のアクションをさせることができる。操作ボタン２４は、プッシュボタンで構成されたＢボタンであり、セレクトボタン２０で選択したゲームモードの変更やＡボタン２２で決定したアクションの取り消し等のために利用される。操作ボタン２６は、プッシュボタンで構成された左押しボタン（Ｌボタン）であり、操作ボタン２８は、プッシュボタンで構成された右押しボタン（Ｒボタン）である。操作ボタン２６および操作ボタン２８は、Ａボタン２２およびＢボタン２４と同様の操作をすることができ、また、Ａボタン２２およびＢボタン２４の補助的な操作をすることができる。
【００２７】
また、ケース１２の裏面上端部には、挿入口３０が形成される。この挿入口３０には、ゲームカートリッジ３２が挿入される。図示は省略するが、挿入口３０の奥部とゲームカートリッジ３２の挿入方向先端部とには、それぞれコネクタが設けられており、ゲームカートリッジ３２が挿入口３０に挿入されたとき、２つのコネクタが互いに接続される。このため、ゲームカットリッジ３２がゲーム機１０のＣＰＵ４０（図２参照）でアクセス可能となる。
【００２８】
さらに、ケース１２の表面でありＡボタン２２およびＢボタン２４の下方には、ゲーム中にＢＧＭやゲームキャラクタの音声或いは擬声音などを出力するためのスピーカ３４が設けられる。
【００２９】
なお、図示は省略するが、ケース１２の天面側にはさらに、外部拡張コネクタが設けられ、ケース１２の裏面側には、電池収容ボックスが設けられ、そして、ケース１２の底面側には電源スイッチ、音量ボリュームおよびイヤフォンジャックなどが設けられる。
【００３０】
ゲーム機１０の電気的な構成は図２のように示される。この図２を参照して、ゲーム機１０には、上述したようにＣＰＵ４０が設けられ、このＣＰＵ４０は、コンピュータまたはプロセサなどとも呼ばれ、ゲーム機１０の全体制御を司る。ＣＰＵ４０またはコンピュータには、内部バスを介して上述したＬＣＤ１４，操作部４２およびワークメモリ４４が接続されるとともに、コネクタ４６および送受信バッファ４８等も接続される。
【００３１】
ＬＣＤ１４にはＣＰＵ４０から表示データが与えられて、ゲーム画像が表示される。なお、図示は省略しているが、ＣＰＵ４０にはたとえばＶＲＡＭおよびＬＣＤコントローラ等が接続されていて、ＣＰＵ４０の指示の下、ＶＲＡＭに背景画像データ，プレイヤオブジェクト等のオブジェクト画像データやゲーム画像データが描画される。そして、ＬＣＤコントローラは、ＣＰＵ４０の指示に従ってＶＲＡＭに描画されたゲーム画像データ（表示データ）を読み出し、ＬＣＤ１４にオブジェクトやゲーム画面（表示画面）等を表示する。
【００３２】
操作部４２は上述した各操作ボタン１６，１８，２０，２２，２４，２６，２８を含み、これら各操作ボタンの操作に応じた操作入力信号がＣＰＵ４０に与えられる。したがって、ＣＰＵ４０は操作部４２を通して与えられたプレイヤ（ユーザ）の指示に従った処理を実行する。
【００３３】
ワークメモリ４４は書込み読出し可能なメモリであって、ＣＰＵ４０の作業領域またはバッファ領域として用いられる。送受信バッファ４８は、たとえば、多人数用ゲームの通信プレイ等の際の送受信データを一時的に蓄積しておくためのものであり、外部拡張コネクタ５０に接続される。このコネクタ５０に、図示しない通信ケーブルを用いて他のゲーム機１０と接続することによって、複数のゲーム機１０の間でデータ通信が可能になる。
【００３４】
また、図示は省略してあるが、ＣＰＵ４０にはサウンド回路を介して図１に示したスピーカ３４が接続されていて、ＣＰＵ４０からサウンド回路に音声データが与えられてスピーカ３４からゲーム音楽や効果音などのゲームに必要な音が出力される。
【００３５】
ゲームカートリッジ３２にはＲＯＭ５２およびＲＡＭ５４が内蔵されており、ＲＯＭ５２とＲＡＭ５４とは互いにバスで接続されるとともに、コネクタ５６に接続される。したがって、上述したように、ゲームカートリッジ３２がゲーム機１０に装着されて、コネクタ４６とコネクタ５６とが接続されると、ＣＰＵ４０はＲＯＭ５２およびＲＡＭ５４に電気的に接続される。したがって、ＣＰＵ４０は、たとえばＲＯＭ５２の所定の領域から所定のプログラムデータを読み出してワークメモリ４４に展開したり、ＲＡＭ５４から所定のバックアップデータを読み出してワークメモリ４４に書き込んだり、ゲームの進行状況に応じてワークメモリ４４に生成したゲームデータ等をＲＡＭ５４の所定の領域に書き込んで保存したりすることができる。
【００３６】
なお、ＲＡＭ５４としては、不揮発性メモリであるフラッシュメモリを適用することができるが、他の不揮発性メモリとして、たとえば強誘電体メモリ（ＦｅＲＡＭ）やＥＥＰＲＯＭ等を適用することもできる。また、電池を電源とするＳＲＡＭやＤＲＡＭ等を用いることもできる。
【００３７】
図３は、ＲＯＭ５２のメモリマップの一例を示す図解図である。この図３を参照して、ＲＯＭ５２は、ゲームプログラム記憶領域５２ａおよびゲームデータ記憶領域５２ｂを含む。ゲームプログラム記憶領域５２ａには、コントローラ入力検出プログラム６０，オブジェクト制御プログラム６２，背景制御プログラム６４，オブジェクト表示プログラム６６，背景表示プログラム６８，通信制御プログラム７０，サウンド制御プログラム７２，ゲーム進行制御プログラム７４およびその他のゲームプログラム７６のようなゲームプログラムが予め格納される。
【００３８】
コントローラ入力検出プログラム６０は、操作部４２に設けられるコントロールバッファ（図示せず）に保持されたプレイヤの各ボタン操作に従う操作入力信号を検出するプログラムである。オブジェクト制御プログラム６２は、ゲーム空間内に存在するオブジェクトを発生したり、配置したり、移動を制御したりするプログラムである。たとえば、プレイヤの操作等に従って、プレイヤオブジェクトを発生したり、配置したり、ゲーム空間内を自由に移動させたりする。また、プレイヤの操作等に従って、敵オブジェクト、ブロック（床や階段を含む。）オブジェクト或いはアイテムのようなノンプレイヤオブジェクトを発生したり、配置したり、回転させるなどの動作（移動）をさせたりする。背景制御プログラム６４は、後述する背景表示プログラム６８によって表示される背景画像を、背景画像データ８２やマップデータ８４等に基づいて発生させるためのプログラムである。
【００３９】
オブジェクト表示プログラム６６は、オブジェクト画像データ８０に基づいて、プレイヤオブジェクトやノンプレイヤオブジェクトをＬＣＤ１４に表示するためのプログラムである。背景表示プログラム６８は、上述したように、背景制御プログラム６４によって発生された背景画像をＬＣＤ１４に表示するためのプログラムである。通信制御プログラム７０は、他のゲーム機１０との間におけるデータ通信を制御するためのプログラムである。
【００４０】
サウンド制御プログラム７２は、ゲーム音楽（ＢＧＭ）、効果音のようなうゲームに必要な音を生成および出力するためのプログラムである。ゲーム進行制御プログラム７４は、プログラマ等の開発者が作成したシナリオもしくはストーリまたはコース（ステージ）に従ってゲームを進行させるためのプログラムである。その他のゲームプログラム７６としては、バックアップ制御プログラムなどが該当する。このバックアップ制御プログラムは、ゲームの進行に従って生成され、ワークメモリ４４に一時記憶されるゲームデータを、プレイヤの指示に従って、或いは所定のイベントに応じて自動で、バックアップメモリとしてのＲＡＭ５４に保存（セーブ）するプログラムである。
【００４１】
また、ゲームデータ記憶領域５２ｂには、オブジェクト画像データ８０，背景画像データ８２，マップデータ８４，サウンドデータ８６およびその他のデータ９０が予め格納される。オブジェクト画像データ８０は、プレイヤオブジェクト、ノンプレイヤオブジェクトなどのオブジェクトについてのポリゴンデータやテクスチャデータのような画像データ（以下、同様である。）である。背景画像データ８２は、ゲーム空間の背景についての画像データである。マップデータ８４は、ゲームプログラマ等の開発者が意図するゲーム空間（マップ）を構成するためのデータであり、マス目で切ったマップにおいてその１マスないしユニットにどんな背景（足場（床、階段、ブロック）、壁等の地形や移動可能領域等）が配置されているかを示すものである。この実施例のゲーム空間は、たとえば、いくつかのコースないしステージを含み、背景画像は、たとえば１つのコースないしステージ全体に相当するものであり、ＬＣＤ１４の表示領域よりも大きい。サウンドデータ８６は、ゲームに必要な音（音楽）を生成するためのデータである。オブジェクト配置データ８８は、プレイヤオブジェクトやノンプレイヤオブジェクトなどのオブジェクトをゲーム世界に配置するための位置データである。その他のデータ９０としては、ゲームの進行に従って発生され、または更新されるゲームデータ（バックアップデータ）などが該当する。
【００４２】
図４は、ワークメモリ４４のメモリマップの一例を示す図解図である。この図４を参照して、ワークメモリ４４は、プログラム記憶領域４４ａおよびデータ記憶領域４４ｂを含む。プログラム記憶領域４４ａには、ゲームカートリッジ３２のＲＯＭ５２から読み出したゲームプログラムが、一度に全部または部分的かつ順次的に記憶される。具体的には、プログラム記憶領域４４ａには、コントローラ入力検出プログラム６０およびオブジェクト制御プログラム６２、そして、図示は省略するが、その他のプログラム（６４，６６，６８，７０，７２，７４，７６）が記憶される。ＣＰＵ４０はこのゲームプログラムに従ってゲーム処理を実行する。
【００４３】
オブジェクト制御プログラム６２は、さらに、オブジェクト配置プログラム６２０、プレイヤオブジェクトプログラム６２２および回転オブジェクトプログラム６２４によって構成される。オブジェクト配置プログラム６２０は、プレイヤオブジェクトやノンプレイヤオブジェクトなどのオブジェクトを発生し、そのようなオブジェクトを、オブジェクト配置データ８８に従ってゲーム空間に配置するプログラムである。プレイヤオブジェクトプログラム６２２は、プレイヤオブジェクト位置検出プログラム６２２ａ、プレイヤオブジェクト動作プログラム６２２ｂおよび位置補正プログラム６２２ｃを含む。プレイヤオブジェクト位置検出プログラム６２２ａは、ゲーム空間におけるプレイヤオブジェクトの位置を検出するプログラムである。この実施例では、２次元のゲーム空間が展開されるため、プレイヤオブジェクトのＸ座標およびＹ座標が検出される。プレイヤオブジェクト動作プログラム６２２ｂは、コントローラ入力検出プログラム６０によって検出された操作入力信号に基づいて、プレイヤオブジェクトをジャンプさせたり、移動させたりするなどのアクションをさせるためのプログラムである。位置補正プログラム６２２ｃは、後述する回転オブジェクトなど、プレイヤオブジェクトが乗ることができるオブジェクト（床や階段のようなオブジェクトを含む。）に対するプレイヤオブジェクトの位置を補正（調整）するためのプログラムである。
【００４４】
また、回転オブジェクトプログラム６２４は、回転角検出プログラム６２４ａ，チェック三角形判別プログラム６２４ｂ，三角形位置計算プログラム６２４ｃおよび当り判定プログラム６２４ｄを含む。回転角検出プログラム６２４ａは、注目（着目）すべき回転オブジェクトの回転角を検出するプログラムである。ここで、注目すべき回転オブジェクトは、プレイヤオブジェクトの位置に基づいて、当りを判定される回転オブジェクトを意味する。チェック三角形判別プログラム６２４ｂは、回転オブジェクトを複数の三角形を用いて分解した場合に、プレイヤオブジェクトの位置に基づいて、当該プレイヤオブジェクトと回転オブジェクトとの当りを判定する（チェックする）三角形を判別（決定）するプログラムである。三角形位置計算プログラム６２４ｃは、チェック三角形判別プログラム６２４ｂによって決定された三角形の位置（頂点座標）を計算するプログラムである。当り判定プログラム６２４ｄは、チェック三角形決定プログラム６２４ｂによって決定された三角形とプレイヤオブジェクトとの当りを判定するプログラムである。
【００４５】
データ記憶領域４４ｂには、ゲームカートリッジ３２のＲＯＭ５２から読み出したゲームデータおよびゲーム中に生成されたゲームデータが記憶される。具体的には、プレイヤオブジェクト位置データ９２、プレイヤオブジェクト向きデータ９４、プレイヤオブジェクト画像データ９６、回転オブジェクト位置データ９８、回転オブジェクト回転角度データ１００、チェック三角形フラグ１０２、当り判定座標データ１０４および位置補正量データ１０６が、データ記憶領域４４ｂに記憶される。
【００４６】
プレイヤオブジェクト位置データ９２は、プレイヤオブジェクト検出プログラム６２２ａによって検出されたプレイヤオブジェクトの位置（座標）を示すデータである。プレイヤオブジェクト向きデータ９４は、２次元のゲーム空間内におけるプレイヤオブジェクトの移動方向（上、下、右、左）を示すデータである。プレイヤオブジェクト画像データ９６は、上述したように、プレイヤオブジェクトをＬＣＤ１４に表示するための画像データである。
【００４７】
回転オブジェクト位置データ９８は、２次元のゲーム空間に配置される回転オブジェクトの位置すなわちＸ座標およびＹ座標を示すデータである。ただし、複数の回転オブジェクトが存在する場合には、各々のＸ座標およびＹ座標を示すデータが記述される。この回転オブジェクト位置データ９８は、ＲＯＭ５２のデータ記憶領域５２ｂからロードされたオブジェクト配置データ８８から取得される。回転オブジェクト回転角度データ１００は、回転角検出プログラム６２４ａによって検出された回転オブジェクトの回転角度についてのデータである。
【００４８】
チェック三角形フラグ１０２は、回転オブジェクトを分解した複数の（この実施例では、後述するように、４つの）三角形についてのフラグであり、当該複数に相当するビット数のレジスタで構成される。各ビットは、分解した複数の三角形のそれぞれに対応し、チェック三角形決定プログラム６２４ｂによって決定された三角形についてのフラグがオンされ、それ以外の三角形についてのフラグはオフされる。フラグがオンされると、対応するレジスタのデータ値が“１”にされ、フラグがオフされると、対応するレジスタのデータ値が“０”にされる。
【００４９】
当り判定座標データ１０４は、当りを判定する三角形が決定された場合に、その基準となる点（基準点）のＸ座標およびＹ座標を示すデータである。位置補正量データ１０６は、プレイヤオブジェクトと回転オブジェクトとの当りを判定した場合に、プレイヤオブジェクトの位置を上下方向（Ｙ軸方向）或いは左右方向（Ｘ軸方向）に補正する補正量のデータである。
【００５０】
なお、図示は省略するが、その他のデータとして、上述したようなプレイヤオブジェクト以外のオブジェクトについてのオブジェクト画像データ８０，背景画像データ８２、マップデータ８４およびサウンドデータ９２が記憶され、さらに、ゲーム進行に必要なその他のゲームデータやフラグデータ等も記憶される。
【００５１】
たとえば、図１に示したゲーム機１０では、プレイヤオブジェクトが敵オブジェクトを倒したり、所定のアイテムを獲得したりしながら、各コースないしはステージのゴールを目指し、最終的な目標を達成するようなゲームが実行される。各コースないしはステージは、デザイナやプログラマのような開発者によって設計され、様々な背景オブジェクトやアイテム、さらには、敵オブジェクト等が配置される。
【００５２】
図５（Ａ）および図５（Ｂ）は、コースに配置される背景オブジェクトとしての回転オブジェクト２００とプレイヤオブジェクト２０２との関係を示す図解図である。この実施例では、回転オブジェクト２００は正方形であり、１または複数の回転オブジェクト２００が各コースの所定の位置であり、空中に浮いて配置される。ただし、一部のコースのみに配置するようにしてもよい。図５（Ａ）に示すように、回転オブジェクト２００が回転していない状態では、プレイヤオブジェクト２０２は、当該回転オブジェクト２００の上に乗ることができ、さらに、その上を歩くことができる。また、プレイヤオブジェクト２０２は、回転オブジェクト２００の横或いは下から当該回転オブジェクト２００の方向へ移動すると、プレイヤオブジェクト２０２の体或いは頭部が回転オブジェクト２００の側面或いは下面に当たる。
【００５３】
また、図５（Ｂ）に示すように、回転オブジェクト２００が任意の角度だけ回転した状態では、プレイヤオブジェクト２０２は、当該回転オブジェクト２００の上に乗ることができるが、回転オブジェクト２００が回転することにより形成された斜面を下に向いている方向に滑る。また、プレイヤオブジェクト２０２は、回転オブジェクト２００の横或いは下から当該回転オブジェクト２００の方向へ移動すると、プレイヤオブジェクト２０２の頭部が回転オブジェクト２００の下方斜面に当たる。ただし、斜面が急な場合には、プレイヤオブジェクト２０２の体が回転オブジェクト２００の斜面に当たる場合もある。
【００５４】
このような回転オブジェクト２００とプレイヤオブジェクト２０２との当りを正確に判断しない場合には、ＬＣＤ１４に表示されるゲーム画像では、プレイヤオブジェクト２０２が回転オブジェクト２００をすり抜けてしまったり、回転オブジェクト２００に埋もれてしまったり、さらには、回転オブジェクト２００との間に隙間ができてしまったりしてしまう。これでは、プレイヤは違和感を感じてしまい、ゲームへの興味を減退させてしまうことになる。
【００５５】
このため、プレイヤオブジェクト２０２と回転オブジェクト２００との当りを正確に判断して、プレイヤオブジェクト２０２の位置を補正する必要がある。このような補正をする場合には、たとえば、所定フレーム（この実施例では、１フレーム）毎のプレイヤオブジェクト２０２の位置を検出して、回転オブジェクト２００との当りを判定し、当たっていると判定した場合には、次の１フレームにおけるプレイヤオブジェクト２０２の位置を補正する。
【００５６】
たとえば、図６（Ａ）に示すように、プレイヤオブジェクト２０２が回転オブジェクト２００の上側右斜面に乗る場合には、当りを判定する上側右斜面を決定した後に、図６（Ｂ）に示すように、プレイヤオブジェクト２０２のＸ方向の当りと、Ｙ方向の当りとが判定される。さらに、Ｙ方向では、プレイヤオブジェクト２０２が回転オブジェクト２００のようなオブジェクトをすり抜けるなどの不都合を無くすために、Ｊ線およびＫ線で挟む範囲（Ｊ線およびＫ線の両方）のように、Ｙ方向に厚みを設けて、当該範囲について当りを判定するのが一般的である。
【００５７】
しかし、このような当り判定方法では、Ｙ方向について２回当りを判定する必要があるため、判定回数が多くなってしまう。
【００５８】
そこで、この実施例では、回転オブジェクト２００が回転した場合には、当該回転オブジェクト２００を複数の（この実施例では、正方形であるため、４つの）直角三角形を用いて分解し、当り判定の対象となる１の直角三角形を決定し、図６（Ｃ）に示すように、当該直角三角形とプレイヤオブジェクト２０２との当りを判定するようにしてある。かかる場合には、後述するように、Ｙ方向では、Ｍ線についての判定処理を実行する必要がなく、Ｌ線についての判定処理のみを実行すればよいので、Ｘ方向およびＹ方向のそれぞれについて１回の判定処理を実行すればよい。以下、詳細に説明することにする。
【００５９】
図７に示すように、当りを判定する場合には、まず、回転オブジェクト２００は、直角三角形（１）〜（４）とこれらに囲まれる１つの正方形とに分解される。ここで、２次元のゲーム空間では、図面の左右方向がＸ軸方向であり、上下方向がＹ軸方向である。これらの直角三角形（１）〜（４）は、Ｘ軸およびＹ軸と平行な２つ辺を有し、その２つの辺と回転オブジェクト２００の１つの辺とによって形成される。ただし、Ｘ軸およびＹ軸に平行な辺は、回転オブジェクト２００の各頂点から回転オブジェクト２００の内側に延びる線分である。
【００６０】
当り判定では、プレイヤオブジェクト２０２の位置に基づいて、当りを判定するための１つの直角三角形が、直角三角形（１）〜（４）から決定される。図７からも分かるように、直角三角形（１）〜（４）のそれぞれは、Ｘ軸およびＹ軸と平行な２つ辺を含み、その２つの辺を回転オブジェクト２００の外側に伸ばした２本の直線で挟む領域（Ｉ）〜（IV）（コメント：領域（Ｉ）と（IV）についての文字が（・）というように表示されていましたので、訂正しましたが、どれであったかは定かでありません。すみません。）、それぞれ、直角三角形（１）〜（４）に対応する。つまり、領域（Ｉ）は直角三角形（１）に対応し、領域（II）は直角三角形（２）に対応し、領域（III ）は直角三角形（３）に対応し、そして、領域（IV）は直角三角形（４）に対応する。
【００６１】
したがって、領域（Ｉ）内にプレイヤオブジェクト２０２が存在する場合には、当りを判定する直角三角形に直角三角形（１）が決定され、領域（II）内にプレイヤオブジェクト２０２が存在する場合には、当りを判定する直角三角形に直角三角形（２）が決定され、領域（III ）内にプレイヤオブジェクト２０２が存在する場合には、当りを判定する直角三角形に直角三角形（３）が決定され、そして、領域（IV）内にプレイヤオブジェクト２０２が存在する場合には、当りを判定する直角三角形に直角三角形（４）が決定される。これは、回転オブジェクト２００の外側に伸びた直線とプレイヤオブジェクト２０２の位置（座標）とによって決定される。
【００６２】
当りを判定するための１の直角三角形が決定されると、次にプレイヤオブジェクト２０２が当該直角三角形の範囲内にあるか否かが判断される。つまり、プレイヤオブジェクト２０２が当該直角三角形に当たっているかどうかが判断される。図８（Ａ）および図８（Ｂ）を用いて、プレイヤオブジェクト２０２が回転オブジェクト２００に当たっているかどうかの判定方法を説明する。図８（Ａ）では、プレイヤオブジェクト２０２は領域（Ｉ）に存在し、当りを判定する直角三角形（１）に斜線を付して示してある。また、簡単のため、プレイヤオブジェクト２０２は点Ａ（ｘ，ｙ）で示してある。回転オブジェクト２００は、角度「θ」だけ回転され、その中心は、原点Ｏ（０，０）で示してある。また、当該回転オブジェクト２００の一辺の長さは「ａ」としてある。
【００６３】
なお、図８（図９も同じ。）では、分かり易く説明するため、回転オブジェクト２００の中心を原点としてあるが、実際には、このような２次元のゲーム空間の原点は、たとえば、横長の長方形状に展開される背景画像の左上の頂点である。
【００６４】
図８（Ｂ）は、図８（Ａ）に示す斜線を付した直角三角形（１）を拡大した拡大図である。この図８（Ｂ）に示すように、当該直角三角形（１）の頂点を、点Ｐ、点Ｐ１および点Ｐ２のように決定すると、直角を有する頂点Ｐの座標（ｍ，ｎ）は数１で表される。
【００６５】
【数１】
2005027921.tif 000003
【００６６】
また、点Ｐ（ｍ，ｎ）としたとき、点Ｐ１の座標を（ｍ，ｎ＋ａｓｉｎθ）と表すことができ、点Ｐ２の座標を（ｍ＋ａｃｏｓθ，ｎ）と表すことができる。当該直角三角形（１）とプレイヤオブジェクト２０２との当りを判定する場合には、当該直角三角形（１）の内部にプレイヤオブジェクト２０２（ここでは、点Ａ）が埋まっているかどうかが判断される。言い換えると、当該直角三角形（１）の斜辺を超えて、その内部に点Ａが在るか否かが判断される。したがって、まず、Ｘ方向について判定するために、点Ａ（ｘ，ｙ）のＸ座標が数２を満たすかどうかが判断される。つまり、図中の（ｉ）で示す範囲内に点Ａが存在するかどうか、すなわち、点ＡのＸ座標が当該直角三角形（１）の範囲内に存在するかどうかが判断される。
【００６７】
【数２】
2005027921.tif 000004
【００６８】
次に、Ｙ方向について判定をするために、点Ａ（ｘ，ｙ）のＹ座標が数３を満たすかどうかが判断される。つまり、図中の（ii）で示す範囲に点Ａが存在するかどうか、すなわち、点ＡのＹ座標が当該直角三角形（１）の範囲内に存在するかどうかが判断される。ただし、Ｙ方向では、点ＡのＸ座標の位置によって、数３の右辺に示す値は変動する。
【００６９】
【数３】
2005027921.tif 000005
【００７０】
点Ａ（ｘ，ｙ）が数２および数３を満たす場合には、点Ａが当該直角三角形（１）の範囲内（内部）に存在するため、プレイヤオブジェクト２０２が当該直角三角形（１）すなわち回転オブジェクト２００に当たっていると判定する。
【００７１】
このように、Ｙ方向の判定は、数３を用いて１回だけ実行すればよい。これは、当該直角三角形（１）を決定する際に、プレイヤオブジェクト２０２が点Ｐと点Ｐ２とを通る直線よりも上方に位置することを既に検出しているためである。
【００７２】
また、直角三角形（２）が当りを判定する直角三角形として決定された場合について、図９（Ａ）および図９（Ｂ）を用いて説明することにする。ただし、図８（Ａ）および図８（Ｂ）と同じ内容については、簡単に説明することにする。この図９（Ａ）では、プレイヤオブジェクト２０２は領域（II）に存在し、当りを判定する直角三角形（２）に斜線を付して示してある。また、図８（Ａ）および図８（Ｂ）に示した場合と同様に、プレイヤオブジェクト２０２は点Ａ（ｘ，ｙ）で示し、回転オブジェクト２００は、角度「θ」だけ回転され、その中心は、原点Ｏ（０，０）で示してある。さらに、当該回転オブジェクト２００の一辺の長さは「ａ」である。
【００７３】
図９（Ｂ）は、図９（Ａ）に示す斜線を付した直角三角形（２）を拡大した拡大図である。この図９（Ｂ）に示すように、当該直角三角形（２）の頂点を、点Ｐ、点Ｐ１および点Ｐ２のように決定すると、直角を有する頂点Ｐ（ｍ，ｎ）は数４で表される。
【００７４】
【数４】
2005027921.tif 000006
【００７５】
また、点Ｐ（ｍ，ｎ）とすると、点Ｐ１の座標を（ｍ，ｎ＋ａｓｉｎθ）と表すことができ、点Ｐ２の座標を（ｍ＋ａｃｏｓθ，ｎ）と表すことができる。したがって、まず、Ｘ方向についての判定をするために、点Ａ（ｘ，ｙ）のＸ座標が数５を満たすかどうかが判断される。つまり、図中の（ｉ）で示す範囲内に点Ａが存在するかどうかが判断される。
【００７６】
【数５】
2005027921.tif 000007
【００７７】
次に、Ｙ方向の判定をするために、点Ａ（ｘ，ｙ）のＹ座標が数６を満たすかどうかが判断される。つまり、図中の（ii）で示す範囲に点Ａが存在するかどうかが判断される。
【００７８】
【数６】
2005027921.tif 000008
【００７９】
点Ａ（ｘ，ｙ）が数５および数６を満たす場合には、点Ａが当該直角三角形（１）の範囲内に存在すると判断して、プレイヤオブジェクト２０２の位置を補正する。
【００８０】
なお、Ｙ方向についての判定を１回行えば十分であることは、上述した通りである。
【００８１】
以上のようにして、直角三角形（１）または（２）の範囲内にプレイヤオブジェクト２０２が存在するかどうかが判断され、直角三角形（１）または（２）の範囲内に存在すると判断された場合には、プレイヤオブジェクト２０２が回転オブジェクト２００に当たっていると判断して、プレイヤオブジェクト２０２の位置が補正され、プレイヤオブジェクト２０２が回転オブジェクト２００の上に乗るように画面表示される。言い換えると、プレイヤオブジェクト２０２と回転オブジェクト２００との接触状態を示すゲーム画像が表示される。
【００８２】
なお、直角三角形（３）や（４）の範囲内に存在するか否かの判断は、直角三角形（１）や（２）の場合と同様であるため、ここでは説明は省略することにする。ただし、直角三角形（３）や（４）の範囲内に存在すると判断された場合には、プレイヤオブジェクト２０２の位置が補正され、当該プレイヤオブジェクト２０２の頭部或いは体が回転オブジェクト２００に接触する（突き当たる）ように画面表示される。
【００８３】
また、図８および図９に示した例では、決定した直角三角形（１）または（２）の範囲内に存在するか否かを判断するようにしてあるが、実際には、プレイヤオブジェクト２０２が１フレームで移動する移動量を考慮し、図６（Ｃ）にも示したように、すり抜けなどを防止するために、直角三角形（１）〜（４）に一定の厚みを設けた範囲で判断するようにしてある。したがって、プレイヤオブジェクト２０２は、当りを判定する直角三角形の斜辺から当該直角三角形の外方向に一定の厚みに相当する所定距離よりも離れている場合には、回転オブジェクト２００とプレイヤオブジェクト２０２とは当たっていないと判定され、逆に、所定距離離れていない場合には、回転オブジェクト２００とプレイヤオブジェクト２０２とは当たっていると判定される。このため、上述したように、直角三角形の範囲内にプレイヤオブジェクト２０２が存在するか否かを判断する場合には、数３の右辺および数６の左辺の値に、当該厚みに相当する値が加算されることになる。
【００８４】
たとえば、直角三角形（１）について説明すると、図１０（Ａ）に示すように、Ｙ軸方向に厚みが設けられる。プレイヤオブジェクト２０２が回転オブジェクト２００を分解した直角三角形（１）に着地しようとする場合には、直角三角形（１）と厚みとで形成される範囲内に移動しなければ、回転オブジェクト２００とプレイヤオブジェクト２０２とが当たっているとは判定されない。
【００８５】
しかし、図１０（Ｂ）に示すように、直角三角形（１）の内部にまで、プレイヤオブジェクト２０２が移動した場合には、回転オブジェクト２００とプレイヤオブジェクト２０２とが当たっていると判定される。また、図１０（Ｃ）に示すように、直角三角形（１）から少し離れた位置に、プレイヤオブジェクト２０２が移動している場合であっても、厚みの部分にプレイヤオブジェクト２０２が移動しているため、回転オブジェクト２００とプレイヤオブジェクト２０２とが当たっていると判定される。
【００８６】
上述したように、回転オブジェクト２００とプレイヤオブジェクト２０２とが当たっていると判定された場合には、プレイヤオブジェクト２０２の位置が補正されるため、図１０（Ｂ）に示すような場合には、矢印で示すように、プレイヤオブジェクト２０２の位置が直角三角形（１）の斜辺の上、すなわち回転オブジェクト２００上に乗るように、上方向に位置が補正される。また、図１０（Ｃ）に示すような場合には、矢印で示すように、プレイヤオブジェクト２０２の位置がプレイヤオブジェクト２０２上に乗るように、下方向に位置が補正される。
【００８７】
このような補正は、単にプレイヤオブジェクト２０２のＹ座標に補正量を加算または減算することにより、実現できる。図示は省略するが、回転オブジェクト２００の下方向からプレイヤオブジェクト２０２の頭部が当たる場合についても同様に考えることができる。
【００８８】
また、図８および図９においては、簡単のため、プレイヤオブジェクト２０２を１つの点Ａで示して、当りを判定する方法について説明したが、実際には、この実施例では、図１０（Ａ）〜（Ｃ）に示すように、プレイヤオブジェクト２０２について、当りを判定する点は４つ設けられる。具体的には、頭部の点２０２ａ、足元の点２０２ｂ、右側面の点２０２ｃおよび左側面の点２０２ｄが設けられる。
【００８９】
なお、右側面の点２０２ｃはプレイヤオブジェクト２０２の右手の方向に設けられ、左側面の点２０２ｄはプレイヤオブジェクト２０２の左手の方向に設けられる。
【００９０】
当り判定では、このうちの２点が用いられるが、いずれの２点を用いるかは、プレイヤオブジェクト２０２の移動方向と、回転オブジェクト２００の位置およびプレイヤオブジェクト２０２の位置とによって選択される。
【００９１】
図７を用いて詳しく説明することにする。ただし、図７において、プレイヤオブジェクト２０２は、それぞれ回転オブジェクト２００に向かう方向に移動しているものと仮定する。プレイヤオブジェクト２０２が領域（Ｉ）に存在する場合には、プレイヤオブジェクト２０２の移動方向は左または下であるため、当りを判定する点として、足元の点２０２ｂおよび右側面の点２０２ｃが選択される。また、プレイヤオブジェクト２０２が領域（II）に存在する場合には、プレイヤオブジェクト２０２の移動方向は右または下であるため、当りを判定する点として、足元の点２０２ｂおよび左側面の点２０２ｄが選択される。さらに、プレイヤオブジェクト２０２が領域（III ）に存在する場合には、プレイヤオブジェクトの移動方向は右または上であるため、当りを判定する点として、頭部の点２０２ａおよび左側面の点２０２ｄが選択される。さらにまた、プレイヤオブジェクト２０２が領域（IV）に存在する場合には、プレイヤオブジェクト２０２の移動方向は左または上であるため、当りを判定する点として、頭部の点２０２ａおよび右側面の点２０２ｃが選択される。
【００９２】
このように、頭部や足元だけでなく、右側面および左側面にも当りを判定する点を設けるのは、図１１（Ａ）に示すように、回転オブジェクト２００の回転角度によっては、当りを判定する直角三角形が急な斜辺を有する場合があり、かかる場合には、図１１（Ｂ）に示すように、プレイヤオブジェクト２０２の足元が当該回転オブジェクト２００に当たるよりも、プレイヤオブジェクト２０２の体（側面）が当該回転オブジェクト２００に先に当たってしまうからである。また、図示は省略するが、プレイヤオブジェクト２０２が回転オブジェクト２００に対して横方向から当たる場合にも、正確に当りを判定する必要があるからでもある。このような場合であっても正確に当りを判断して、プレイヤオブジェクト２０２の位置を補正するようにしてある。このとき、プレイヤオブジェクト２０２のＸ座標に補正量を加算または減算することにより、つまりプレイヤオブジェクト２０２を左右に移動させることにより、回転オブジェクト２００とプレイヤオブジェクト２０２とが接触するように位置を補正される。
【００９３】
また、図１２（Ａ）に示すように、当り判定では、プレイヤオブジェクト２０２が直角三角形の範囲内に存在するか否かをＹ方向について判断する場合は、直角三角形（１）では頂点Ａを基準点とし、直角三角形（２）では頂点Ｂを基準点とし、直角三角形（３）では頂点Ｃを基準点とし、直角三角形（４）では頂点Ｄを基準点とするのが一般的である。しかし、このように基準点を決定した場合には、たとえば、図１３（Ａ）に示すように、プレイヤオブジェクト２０２が直角三角形（２）の上から直角三角形（１）の上に移動する場合には、頂点Ａがずれてしまう場合があり、プレイヤオブジェクト２０２が不自然な動きをしてしまう。
【００９４】
これは、直角三角形の範囲内に存在するか否かをＹ方向について調べる場合の数３の右辺および数６の左辺の項に起因している。つまり、θの値が０度または９０度に近づくと、ｔａｎθの値が０または∞に近づくため、ｔａｎθを含む数３および数６の項についての計算誤差が大きくなってしまうからである。このため、直角三角形（２）の基準点を点Ｂに決定した場合には、点Ｂから点Ａに向かう直線に誤差が生じてしまい、たとえば、図１３（Ａ）に示すように、頂点Ａが頂点Ａ′のようにずれてしまう。これは、点Ａから点Ｄに向かう直線、点Ｄから点Ｃに向かう直線および点Ｃから点Ｂに向かう直線についても同様である。
【００９５】
したがって、この実施例では、直角三角形（１）および（２）については、基準点を点Ａに決定し、直角三角形（３）および直角三角形（４）については、基準点を点Ｃに決定するようにしてある。ただし、実際のゲーム中では、回転オブジェクト２００は回転するため、当りを判定する際に、Ｙ座標が最大または最小となる回転オブジェクト２００の頂点を基準点に決定するようにしてある。
【００９６】
このため、図１３（Ｂ）に示すように、頂点Ａでの誤差をなくすことができ、プレイヤオブジェクト２０２が直角三角形（２）の上から直角三角形（１）の上に移動する場合に、頂点Ａをまたいでも、プレイヤオブジェクト２０２の動きが不自然になることはない。
【００９７】
なお、このように、Ｙ座標が最大または最小となる点Ａおよび点Ｃを基準点とした場合には、点Ｂおよび点Ｄにおいて、上述したような誤差が生じることとなるが、点Ｂや点Ｄをプレイヤオブジェクト２０２がまたいで移動するようなことがないため、画面表示に不都合が生じることはない。
【００９８】
また、上述の当り判定の説明においては省略したが、図８（Ｂ）および図９（Ｂ）では、この計算誤差を考慮して、Ｙ座標が最大となる頂点Ｐ１を基準点に決定した場合について説明してある。つまり、Ｙ方向についての判定をするための数３および数６については、点Ｐ２の要素を含まないようにしてある。
【００９９】
図１４は、このゲーム機１０のゲーム動作の一例を示すフロー図である。ゲームカートリッジ３２を装着したゲーム機１０の電源を投入すると、ゲームカートリッジ３２のＲＯＭ５２から必要なプログラムおよびデータが読み出され、ワークメモリ４４にロード（記憶）されて、ＣＰＵ４０によって処理が開始される。プレイヤによる操作部４２の操作入力によってゲーム開始が指示されると、図１４に示すように、最初のステップＳ１で、コースないしステージに必要な背景画像データ８２、マップデータ８４およびオブジェクト配置データ８８をＲＯＭ５２から読み出して、ワークメモリ４４のデータ記憶領域４４ｂにロードする。これにより、このコースの背景が発生され、当該コースに存在するオブジェクトも発生される。
【０１００】
なお、ステップＳ１では、ゲームを始めから開始する場合には、最初のコースについての背景画像データ８２等がロードされるが、前回の続きからゲームを始める場合には、前回の続きとなるコースについての背景画像データ８２等がロードされる。
【０１０１】
次にステップＳ３で、背景画像をＬＣＤ１４に表示し、ステップＳ５で、プレイヤオブジェクト２０２およびノンプレイヤオブジェクトを表示する。つまり、プレイヤオブジェクト２０２および表示されるべき回転オブジェクト２００や敵オブジェクトなどが表示される。次に、ステップＳ７では、操作部４２から操作入力信号を取得（検出）する。
【０１０２】
なお、ゲーム開始時等に最初の画面を表示するまでは、このステップＳ５の処理を不能化して、操作入力を受け付けないようにしてもよい。この場合、ステップＳ９以降の処理が実行されて最初の画面が表示されることとなり、プレイヤはその最初の画面を見てゲームプレイを開始する。
【０１０３】
続くステップＳ９では、プレイヤオブジェクト２０２およびノンプレイヤオブジェクトの動作処理を実行する。すなわち、ステップＳ５において取得した操作入力信号およびプログラムに基づいてプレイヤオブジェクト２０２を動作させる。たとえば、プレイヤが操作部４２の十字ボタン１６を操作した場合、ＣＰＵ４０は、ゲーム空間においてプレイヤオブジェクト２０２を操作された方向に移動させ、現フレームにおけるプレイヤオブジェクト２０２の位置を更新する。また、ＣＰＵ４０は、敵キャラクタや回転オブジェクト２００のようなノンプレイヤオブジェクトについても、操作入力信号およびプログラムに基づいて、必要に応じて動作させる。
【０１０４】
そして、ステップＳ１１では、回転オブジェクト２００がプレイヤオブジェクト２０２の近辺に存在するかどうかを判断する。つまり、ＣＰＵ４０は、ワークメモリ４４のデータ記憶領域４４ｂに記憶されるプレイヤオブジェクト位置データ９２と回転オブジェクト位置データ９８とを参照して、プレイヤオブジェクト２０２の位置を中心とする所定範囲内に回転オブジェクト２００が存在するかどうかを判断する。ここで、所定範囲は、ゲームプログラマ等の開発者が予め設定した範囲であり、たとえば、プレイヤオブジェクト２０２の１フレーム期間における最大の移動範囲に決定される。ステップＳ１１で“ＮＯ”であれば、つまり回転オブジェクト２００がプレイヤオブジェクト２０２の近辺に存在しない場合には、そのままステップＳ１５に進む。一方、ステップＳ１１で“ＹＥＳ”であれば、つまり回転オブジェクト２００がプレイヤオブジェクト２０２の近辺に存在する場合には、ステップＳ１３で、後述するプレイヤオブジェクト２０２の位置補正処理（図１５および図１６参照）を実行して、ステップＳ１５に進む。
【０１０５】
ステップＳ１５では、プレイヤオブジェクト２０２がこのコースのゴールに達したか否かを判断する。ステップＳ１５で“ＹＥＳ”であれば、つまりプレイヤオブジェクト２０２がこのコースのゴールに達すれば、このコースのゲーム処理を終了する。一方、ステップＳ１５で“ＮＯ”であれば、つまりプレイヤオブジェクト２０２がこのコースのゴールに達していなければ、ステップＳ１７で、エリア切替かどうかを判断する。つまり、プレイヤオブジェクト２０２が、スクロール可能な範囲を超えて移動したかどうかを判断する。
【０１０６】
ステップＳ１７で“ＹＥＳ”であれば、つまりエリア切替であれば、ステップＳ１９でエリア切替処理を実行して、ステップＳ１に戻る。エリア切替処理では、次の（隣の）背景画像を取得し、かつプレイヤオブジェクト２０２がゲーム画面の左右方向における中央に表示されるように、ゲーム画面の開始位置を取得する。したがって、その後、ステップＳ１の処理を実行することにより、エリアを切り替えたゲーム画面が表示される。
【０１０７】
一方、ステップＳ１７で“ＮＯ”であれば、つまりエリア切替でなければ、ステップＳ２１でスクロール移動処理を実行してステップＳ３に戻る。スクロール移動処理では、プレイヤオブジェクト２０２が移動した移動量に応じて画面をスクロールし、すなわち上下または左右に移動し、プレイヤオブジェクト２０２が画面の左右方向における中央に表示されるように、当該エリア内のゲーム画面の開始位置を取得する。したがって、その後、ステップＳ３の処理を実行することにより、スクロールされたゲーム画面が表示される。
【０１０８】
図１５および図１６は、図１４のステップＳ１３のプレイヤオブジェクト２０２の位置補正処理を示すフロー図である。ＣＰＵ４０は、位置補正処理を開始すると、図１５に示すように、ステップＳ３１で回転オブジェクト２００が回転しているかどうかを判断する。ステップＳ３１で“ＮＯ”であれば、つまり回転オブジェクト２００が回転していなければ、ステップＳ３３で、通常の正方形のオブジェクトとして当り判定処理等を実行し、位置補正処理をリターンする。つまり、ステップＳ３３では、プレイヤオブジェクト２０２の位置に基づいて、正方形のいずれの辺との当りを判定するかを決定し、決定した当該辺を含む一定範囲についての当りを判定する。具体的には、図６（Ｂ）に示した場合と同じように、当該辺に一定の厚みを与えて、その厚みの上下或いは左右の座標とプレイヤオブジェクト２０２との位置を比較し、静止している回転オブジェクト２００との当りを判定し、プレイヤオブジェクト２０２の位置を補正しているのである。
【０１０９】
一方、ステップＳ３１で“ＹＥＳ”であれば、つまり回転オブジェクト２００が回転している場合には、ステップＳ３５で、当該回転オブジェクト２００を、周りの４つの直角三角形と中心に１つの正方形とに分解する。続くステップＳ３７では、プレイヤオブジェクト２０２の座標から当りをチェック（判定）する１つの直角三角形を決定する。つまり、図７に示したように、回転オブジェクト２００に対してプレイヤオブジェクト２０２がいずれの領域に存在するのかを検出することにより、１つの直角三角形が決定される。
【０１１０】
そして、ステップＳ３９では、プレイヤオブジェクト２０２のＹ方向の速度が当該直角三角形に近づく方向かどうかを判断する。ステップＳ３９で“ＮＯ”であれば、つまりプレイヤオブジェクト２０２が当該直角三角形から離れる方向に移動している場合には、Ｙ方向の当りを判定する必要がないため、図１６に示すステップＳ５１に進む。
【０１１１】
一方、ステップＳ３９で“ＹＥＳ”であれば、つまりプレイヤオブジェクト２０２が当該直角三角形に近づく方向に移動している場合には、Ｙ方向の当りを判定する必要があるため、ステップＳ４１で、プレイヤオブジェクト２０２が上昇中かどうかを判断する。ステップＳ４１で“ＮＯ”であれば、つまりプレイヤオブジェクト２０２が下降中であれば、ステップＳ４３で、足元が当たっているかどうかを判断する。つまり、当該直角三角形の範囲内に、プレイヤオブジェクト２０２、厳密には、足元の点２０２ｂが存在するか否かを判断する。また、直角三角形には、図１０（Ａ）〜図１０（Ｃ）に示したように、厚みに相当する領域も含むものとする。以下、この実施例において同じである。
【０１１２】
なお、ステップＳ４１の判断処理により、当りを判定する点２０２ａまたは２０２ｂを選択しているのである。
【０１１３】
ステップＳ４３で“ＮＯ”であれば、つまり足元が当たっていなければ、そのままステップＳ５１に進む。一方、ステップＳ４３で“ＹＥＳ”であれば、つまり足元が当たっていれば、ステップＳ４５で、着地処理すなわち上下方向の補正（上下補正）をして、位置補正処理を終了する。ステップＳ４５においては、プレイヤオブジェクト２０２が回転オブジェクト２００に当たっていると判定すると、実際の回転オブジェクト２００の外形線すなわち当該直角三角形の斜辺（かかる場合には、厚みを含まない実際の直角三角形を意味する。）とプレイヤオブジェクト２０２との位置の差分を検出し、当該差分が無くなるように、プレイヤオブジェクト２０２が上下方向に移動される。
【０１１４】
また、ステップＳ４１で“ＹＥＳ”であれば、つまりプレイヤオブジェクト２０２が上昇中であれば、ステップＳ４７で、プレイヤオブジェクト２０２の頭部の点２０２ａが当該直角三角形の範囲内に存在するかどうかを判断する。ステップ４７で“ＮＯ”であれば、つまり頭部の点２０２ａが当該直角三角形の範囲内に存在しなければ、そのままステップＳ５１に進む。一方、ステップＳ４７で“ＹＥＳ”であれば、つまり頭部の点２０２ａが当該直角三角形の範囲内に存在すれば、プレイヤオブジェクト２０２が回転オブジェクト２００に当たっていると判定して、ステップＳ４９で、プレイヤオブジェクトを上下方向に補正し、位置補正処理をリターンする。
【０１１５】
なお、ステップＳ４９における処理は、ステップＳ４５における処理と同じであるため、重複した説明は省略することにする。
【０１１６】
図１６に示すように、ステップＳ５１では、プレイヤオブジェクト２０２が右に移動中であるかどうかを判断する。このステップＳ５１の判断処理により、当りを判定する点２０２ｃまたは点２０２ｄを選択しているのである。ステップＳ５１で“ＮＯ”であれば、つまりプレイヤオブジェクト２０２が左に移動中であれば、ステップＳ５３でプレイヤオブジェクト２０２の右側面すなわち右側面の点２０２ｃが当該直角三角形の範囲内に存在するかどうかを判断する。ステップＳ５３で“ＹＥＳ”であれば、つまりプレイヤオブジェクト２０２の右側面の点２０２ｃが当該直角三角形の範囲内に存在すれば、プレイヤオブジェクト２０２が回転オブジェクト２００に当たっていると判断して、ステップＳ５５で、プレイヤオブジェクト２０２を左右方向に補正して、図１５に示したように、位置補正処理をリターンする。
【０１１７】
ステップＳ５５においては、プレイヤオブジェクト２０２が回転オブジェクト２００に当たっていると判定すると、実際の回転オブジェクト２００の外形線すなわち当該直角三角形の斜辺（かかる場合には、厚みを含まない実際の直角三角形を意味する。）とプレイヤオブジェクト２０２との位置の差分を検出し、当該差分が無くなるように、プレイヤオブジェクト２０２が左右方向に移動される。
【０１１８】
一方、ステップＳ５１で“ＹＥＳ”であれば、つまりプレイヤオブジェクト２０２が右に移動中であれば、ステップＳ５７で、プレイヤオブジェクト２０２の左側面すなわち左側面の点２０２ｄが当該直角三角形の範囲内に存在するかどうかを判断する。ステップＳ５７で“ＮＯ”であれば、つまりプレイヤオブジェクト２０２の左側面の点２０２ｄが当該直角三角形の範囲内になければ、そのまま位置補正処理を終了する。一方、ステップＳ５７で“ＹＥＳ”であれば、つまりプレイヤオブジェクト２０２の左側面の点２０２ｄが当該三角形の範囲内に在れば、プレイヤオブジェクト２０２が回転オブジェクト２００に当たっていると判断して、ステップＳ５９で、プレイヤオブジェクト２０２を左右方向に補正して、位置補正処理をリターンする。
【０１１９】
なお、ステップＳ５９における左右方向の補正は、ステップＳ５５の処理と同じであるため、重複した説明は省略する。
【０１２０】
この実施例によれば、回転オブジェクトが任意の角度だけ回転すると、当該オブジェクトを４つの直角三角形を用いて分解し、プレイヤオブジェクトの位置に応じて決定した直角三角形の範囲にプレイヤオブジェクトが存在するか否かによって当りを判定するので、回転する正方形のオブジェクトであっても当り判定を正確で簡単に行うことができる。
【０１２１】
また、正方形の回転オブジェクトの頂点うち、Ｙ座標が最大または最小となる点を基準点に決定するので、当該基準点における計算誤差を無くすことができ、当該基準点付近における当りを正確に判定することができる。
【０１２２】
上述の実施例では、回転オブジェクトの形状を正方形とした場合について示したが、回転オブジェクトの形状はこれに限定されるべきでなく、任意の形状を採ることができる。たとえば、図１７（Ａ）〜図１７（Ｃ）に示すように、回転オブジェクト２００は、正五角形、正六角形または正八角形とすることができる。このような矩形であっても、Ｘ軸およびＹ軸に平行な２つの辺を有する複数の直角三角形に分解することができるので、プレイヤオブジェクトの位置に基づいていずれか１つの直角三角形を決定するようにすれば、簡単に当りを判定し、プレイヤオブジェクトの位置を補正することができる。
【０１２３】
また、上述の実施例では、回転するオブジェクトについて示したが、これに限定される必要はなく、たとえば、正方形のような形状の矩形オブジェクトを斜めに固定的に配置した場合であっても、当該矩形オブジェクトを、上述の場合と同様に、複数の直角三角形を用いて分解して、当りを判定し、プレイヤオブジェクトの位置を補正することができる。つまり、オブジェクトの形や配置する方向（角度）を任意に設定することができるので、ゲームのコースやステージのバリエーションを増やすことができる。これにより、ゲームの趣向性を向上させることができるのである。
【０１２４】
なお、上述の実施例では、回転オブジェクトの頂点のうち、Ｙ座標が最大または最小となる点を基準点に決定するようにしたが、基準点をプレイヤオブジェクトの位置からより近い点に決定するようにすれば、回転オブジェクトのどの位置においても正確な当り判定を行うことができる。たとえば、基準点は、頂点と頂点との間（回転オブジェクトの外形線の線分）を、１／２，１／４，１／８，１／１６，…のように、細かく分けて複数の基準点を設けるようにすればよい。ただし、かかる場合には、プレイヤオブジェクトの位置に応じて、いずれの基準点を使用するのかを判定する処理が増えるため、基準点の個数を増やし過ぎた場合には、処理負担が大きくなることに留意すべきである。
【０１２５】
また、上述の実施例では、携帯型のゲーム機についてのみ説明したが、これに限定される必要はない。たとえば、家庭用のビデオゲーム装置やゲーム機能を有する携帯電話機などにも適用することができる。また、ゲームカートリッジに変えて、ＣＤ−ＲＯＭ，ＤＶＤなどの光学式情報記録媒体、光磁気ディスクまたは磁気ディスクなどの種々の情報記録媒体を適用することが可能である。
【図面の簡単な説明】
【０１２６】
【図１】この発明のゲーム機の一例を示す図解図である。
【図２】図１に示すゲーム機の電気的な構成を示すブロック図である。
【図３】図２に示すゲームカートリッジ内に設けられるＲＯＭのメモリメモリマップを示す図解図である。
【図４】図２に示すゲーム機に設けられるワークメモリのメモリマップを示す図解図である。
【図５】図１に示すゲーム機のＬＣＤに表示されるゲーム空間に存在する回転オブジェクトおよびプレイヤオブジェクトの一例を示す図解図である。
【図６】図１に示すゲーム機のＬＣＤに表示されるゲーム空間に存在する回転オブジェクトとプレイヤオブジェクトとの当りを判定する場合の判定領域を示す図解図である。
【図７】回転オブジェクトとプレイヤオブジェクトとの当りを判定する場合に、回転オブジェクトを４つの直角三角形と中心の正方形とに分解し、当りを判定する直角三角形とプレイヤオブジェクトとの位置関係を示す図解図である。
【図８】回転オブジェクトとプレイヤオブジェクトとの当りを判定する判定方法の一例を説明するための図解図である。
【図９】回転オブジェクトとプレイヤオブジェクトとの当りを判定する判定方法の他の一例を説明するための図解図である。
【図１０】回転オブジェクトとプレイヤオブジェクトとが当たると判定された場合のプレイヤオブジェクトの位置を補正する補正方法を説明するための図解図である。
【図１１】回転オブジェクトとプレイヤオブジェクトとの当りを判定する判定方法のその他の一例を示す図解図である。
【図１２】回転オブジェクトとプレイヤオブジェクトとの当りを判定する場合の回転オブジェクトの基準点の決定方法を説明するための図解図である。
【図１３】図１２に示すように基準点を決定した場合のプレイヤオブジェクトの動きを説明するための図解図である。
【図１４】図２に示すＣＰＵのゲーム処理の一例を示すフロー図である。
【図１５】図２に示すＣＰＵのプレイヤオブジェクトの位置補正処理の一部を示すフロー図である。
【図１６】図２に示すＣＰＵのプレイヤオブジェクトの位置補正処理の他の一部を示すフロー図である。
【図１７】回転オブジェクトの他の例を示す図解図である。
【符号の説明】
【０１２７】
１０  …ゲーム機
１４  …ＬＣＤ
３２  …ゲームカートリッジ
４０  …ＣＰＵ
４２  …操作部
４４  …ワークメモリ
５２  …ＲＯＭ
５４  …ＲＡＭ
【図１】
2005027921.tif 000009
【図２】
2005027921.tif 000010
【図３】
2005027921.tif 000011
【図４】
2005027921.tif 000012
【図５】
2005027921.tif 000013
【図６】
2005027921.tif 000014
【図７】
2005027921.tif 000015
【図８】
2005027921.tif 000016
【図９】
2005027921.tif 000017
【図１０】
2005027921.tif 000018
【図１１】
2005027921.tif 000019
【図１２】
2005027921.tif 000020
【図１３】
2005027921.tif 000021
【図１４】
2005027921.tif 000022
【図１５】
2005027921.tif 000023
【図１６】
2005027921.tif 000024
【図１７】
2005027921.tif 000025