JP2005027921A - ゲーム装置およびゲームプログラム - Google Patents

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

Info

Publication number
JP2005027921A
JP2005027921A JP2003271701A JP2003271701A JP2005027921A JP 2005027921 A JP2005027921 A JP 2005027921A JP 2003271701 A JP2003271701 A JP 2003271701A JP 2003271701 A JP2003271701 A JP 2003271701A JP 2005027921 A JP2005027921 A JP 2005027921A
Authority
JP
Japan
Prior art keywords
game
player object
hit
player
triangle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003271701A
Other languages
English (en)
Other versions
JP4117229B2 (ja
Inventor
Hiroyuki Kimura
浩之 木村
Keigo Nakanishi
桂剛 中西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2003271701A priority Critical patent/JP4117229B2/ja
Publication of JP2005027921A publication Critical patent/JP2005027921A/ja
Application granted granted Critical
Publication of JP4117229B2 publication Critical patent/JP4117229B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

【構成】 ゲーム機10はCPU40を含み、CPU40は2次元のゲーム空間内に配置される正方形の回転オブジェクトとプレイヤオブジェクトとの当りを判定し、当たっている場合には、プレイヤオブジェクトの位置を補正して、それらの接触状態を示すゲーム画像をLCD14に表示する。回転オブジェクトが回転するとき、当該回転オブジェクトは複数の直角三角形を用いて分解される。CPU40は、プレイヤオブジェクトの位置に基づいて、分解した直角三角形のいずれか1つを当りを判定する直角三角形に決定する。この直角三角形の斜辺であり、当該斜辺から直角三角形の外方向に所定距離離れている場合には当たっていないと判定し、所定距離離れていない場合には当たっていると判定する。
【効果】 多角形の回転オブジェクトであっても簡単に当りを判定できるので、ゲーム空間に配置するオブジェクトに自由度を与えることができる。
【選択図】 図2

Description

この発明はゲーム装置およびゲームプログラムに関し、特にたとえば、2次元空間内に存在する第1オブジェクトと第2オブジェクトとの当りを判定する、ゲーム装置およびゲームプログラムに関する。
従来のこの種のゲーム装置の一例が特許文献1に開示される。この特許文献1に開示されるゲームシステムは、多数の判定領域を設け、それを回転体のようなキャラクタの回転などと一緒に移動させることにより、キャラクタの見た目に近い当り判定を行うものであった。
特開平11−47448号[A63F 9/22,G06T 13/00,G09G 5/00]
しかし、この従来技術では、単に当たったかどうかを判定するものであり、正確な当りを判定することができなかった。したがって、たとえば、回転する矩形オブジェクトにプレイヤオブジェクトが乗って歩くような画像表示をする場合に、回転するオブジェクトとプレイヤオブジェクトとの間に隙間が出来てしまったり、プレイヤオブジェクトが回転するオブジェクトに埋もれてしまったりするという問題があった。さらには、判定領域を多数設けるため、判定処理が膨大になってしまうという問題もあった。
それゆえに、この発明の主たる目的は、多角形のオブジェクトであっても簡単で正確に当りを判定できる、ゲーム装置およびゲームプログラムを提供することである。
請求項1は、2次元空間内に存在する第1オブジェクトと第2オブジェクトとの当りを判定するゲーム装置である。このゲーム装置は、第1オブジェクト発生手段、第2オブジェクト発生手段、分解手段、決定手段および当り判定手段を備える。第1オブジェクト発生手段は、2次元空間内を自由に移動する第1オブジェクトを発生させる。第2オブジェクト発生手段は、2次元空間内で回転する多角形の第2オブジェクトを発生させる。分解手段は、第2オブジェクトが回転するとき、当該第2オブジェクトを複数の三角形を用いて分解する。決定手段は、第1オブジェクトが存在する位置に基づいていずれか1つの三角形を決定する。そして、当り判定手段は、第1オブジェクトが決定手段によって決定された1つの三角形の斜辺であり、当該斜辺から当該三角形の外方向に所定距離離れていなければ当りであると判定する。
請求項1によれば、ゲーム装置(10:実施例で相当する参照番号。以下、同じ。)は、2次元空間(2次元のゲーム空間)内に存在する第1オブジェクト(202)と第2オブジェクト(200)との当りを判定する。第1オブジェクト発生手段(40,S41)は、ゲーム空間を自由に移動する第1オブジェクト(202)を発生させる。第2オブジェクト発生手段(40,S41)は、ゲーム空間内で回転する多角形の第2オブジェクト(200)を発生させる。分割手段(40,S35)は、多角形の第2オブジェクト(200)が回転するとき、当該第2オブジェクト(200)を複数の三角形を用いて分解する。決定手段(40,S37)は、第1オブジェクト(202)が存在する位置に基づいていずれか1つの三角形を決定する。当り判定手段(40,S43,S47,S53,S57)は、第1オブジェクト(202)が、決定手段(40,S37)によって決定された1つの三角形の斜辺であり、当該斜辺から当該三角形の外方向に所定距離離れていなければ当りであると判定する。なお、所定距離は、第1オブジェクト(202)が第2オブジェクト(200)をすり抜けてしまうのを防止するため、第1オブジェクト(202)が1フレームの間に移動する距離を考慮して決定される。
当り判定手段(40,S43,S47,S53,S57)が当りであると判断したとき、必要に応じて、画像データ出力手段(40,S5)は、第1オブジェクト(202)と第2オブジェクト(200)との接触状態を表すための画像データを出力する。したがって、たとえば、第1オブジェクト(202)が第2オブジェクト(200)の上に乗ったり、第1オブジェクト(202)が第2オブジェクト(200)の下からぶつかったりするようなゲーム画像が表示される。
この発明によれば、回転する多角形のオブジェクトを複数の三角形を用いて分解し、いずれか1つの三角形との当りを判定するので、多角形のオブジェクトであっても簡単で正確に当りを判定することができる。
請求項2は請求項1に従属し、当り判定手段が当りであると判定したとき、第1オブジェクトの位置を2次元空間のX軸方向およびY軸方向のいずれか一方に補正する位置補正手段をさらに備える。
請求項2によれば、当り判定手段(40,S43,S47,S53,S57)が当りであると判断したとき、位置補正手段(40,S45,S49,S55,S59)は、第1オブジェクト(202)の位置をX軸方向およびY軸方向のいずれか一方に補正する。つまり、第1オブジェクト(202)は、上下または左右に移動される。これにより、第1オブジェクト(202)が第2オブジェクト(200)に当たった場合であっても、接触状態のゲーム画像を表示することができる。
請求項3は請求項1または2に従属し、多角形は正方形を含む。
請求項3によれば、多角形は正方形であり、第2オブジェクト(200)が回転すると、たとえば、4つの直角三角形と1つの正方形とに分解することができる。
請求項4は請求項1ないし3のいずれかに従属し、三角形は2次元空間のX軸方向およびY軸方向のそれぞれに平行な辺を有する直角三角形である。
請求項4によれば、三角形はゲーム空間のX軸方向およびY軸方向のそれぞれに平行な2つの辺を有する直角三角形であるため、決定手段(40,S37)が第1オブジェクト(202)の位置に基づいて1つの直角三角形を決定すると、当り判定手段(40,S43,S47,S53,S57)は、X軸方向およびY軸方向についての当り判定を、それぞれ1回行えばよい。このため、判定回数を減らすことができる。
請求項5は請求項3または4に従属し、正方形の第2オブジェクトが回転したとき、2次元空間のY軸方向の最大値および最小値となる正方形の頂点を基準点として選択する。
請求項5によれば、正方形の第2オブジェクト(200)が回転したとき、ゲーム空間のY軸方向の最大値および最小値となる正方形の頂点を基準点として選択するので、たとえば、最大値となる頂点をまたぐように、第1オブジェクト(202)が第2オブジェクト(200)の上を移動したとしても、頂点付近の当りを正確に判断できるので、画面表示が乱れることはない。したがって、プレイヤは違和感を感じることもない。
請求項6は、2次元空間内に存在する第1オブジェクトと第2オブジェクトとの当りを判定するゲーム装置のゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサに、第1オブジェクト発生ステップ、第2オブジェクト発生ステップ、分解ステップ、決定ステップおよび当り判定ステップを実行させる。第1オブジェクト発生ステップは、2次元空間内を自由に移動する第1オブジェクトを発生させる。第2オブジェクト発生ステップは、2次元空間内で回転する多角形の第2オブジェクトを発生させる。分解ステップは、第2オブジェクトが回転するとき、当該第2オブジェクトを複数の三角形を用いて分解する。決定ステップは、第1オブジェクトが存在する位置に基づいていずれか1つの三角形を決定する。そして、当り判定ステップは、第1オブジェクトが決定ステップによって決定された1つの三角形の斜辺であり、当該斜辺から当該三角形の外方向に所定距離離れていなければ当りであると判定する。
請求項6の発明においても、請求項1の発明と同様に、多角形のオブジェクトであっても簡単で正確に当りを判定することができる。
請求項7は請求項6に従属し、当り判定ステップが当りであると判定したとき、第1オブジェクトの位置を2次元空間のX軸方向およびY軸方向のいずれか一方に補正する位置補正ステップをさらに実行させる。
請求項8は請求項6または7に従属し、多角形は正方形を含み、当り判定ステップは、正方形が回転したとき、2次元空間のY軸方向の最大値および最小値となる正方形の頂点を基準点として選択する基準点選択ステップを含む。
請求項9は請求項6ないし7のいずれかに従属し、三角形は2次元空間のX軸方向およびY軸方向のそれぞれに平行な辺を有する直角三角形である。
この発明によれば、回転する多角形のオブジェクトを複数の三角形を用いて分解し、いずれか1つの三角形との当りを判定するので、多角形のオブジェクトであっても簡単で正確に当りを判定することができる。
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
図1を参照して、この発明の一実施例であるゲーム機10はケース12を含む。このゲーム機10としては、ゲームボーイアドバンス(GAMEBOY ADVANCE :商品名)のような携帯型のゲーム機などを適用することができる。ケース12の表面には、その略中央にカラーの液晶表示器(以下、「LCD」という。)14が設けられる。このLCD14には、ゲーム空間およびそのゲーム空間内に存在するプレイヤオブジェクト等のゲームキャラクタが表示されるとともに、必要に応じてメッセージが表示される。また、ケース12の表面には、操作ボタン16,18,20,22,24,26,28が設けられる。操作ボタン16,18および20はLCD14の左方に配置され、操作ボタン22および24はLCD14の右方に配置される。さらに、操作ボタン26および28は、ケース12の上側(LCD14の上方)の端面(天面)に配置される。
操作ボタン16は、ディジタルジョイスティックとして機能する十字ボタンであり、4つの押圧部の1つを操作することによって、LCD14上に表示されたゲームキャラクタの移動方向を指示したり、カーソルを移動させたりすることができる。操作ボタン18は、プッシュボタンで構成されたスタートボタンであり、ゲーム開始を指示するため等に利用される。操作ボタン20は、プッシュボタンで構成されたセレクトボタンであり、ゲームモードの選択等に利用される。
操作ボタン22は、プッシュボタンで構成されたAボタンであり、LCD14上に表示されたゲームキャラクタ(プレイヤオブジェクト)に打つ、投げる、つかむ、ジャンプする、飛び乗る、剣で斬る、話かけるなどの任意のアクションをさせることができる。操作ボタン24は、プッシュボタンで構成されたBボタンであり、セレクトボタン20で選択したゲームモードの変更やAボタン22で決定したアクションの取り消し等のために利用される。操作ボタン26は、プッシュボタンで構成された左押しボタン(Lボタン)であり、操作ボタン28は、プッシュボタンで構成された右押しボタン(Rボタン)である。操作ボタン26および操作ボタン28は、Aボタン22およびBボタン24と同様の操作をすることができ、また、Aボタン22およびBボタン24の補助的な操作をすることができる。
また、ケース12の裏面上端部には、挿入口30が形成される。この挿入口30には、ゲームカートリッジ32が挿入される。図示は省略するが、挿入口30の奥部とゲームカートリッジ32の挿入方向先端部とには、それぞれコネクタが設けられており、ゲームカートリッジ32が挿入口30に挿入されたとき、2つのコネクタが互いに接続される。このため、ゲームカットリッジ32がゲーム機10のCPU40(図2参照)でアクセス可能となる。
さらに、ケース12の表面でありAボタン22およびBボタン24の下方には、ゲーム中にBGMやゲームキャラクタの音声或いは擬声音などを出力するためのスピーカ34が設けられる。
なお、図示は省略するが、ケース12の天面側にはさらに、外部拡張コネクタが設けられ、ケース12の裏面側には、電池収容ボックスが設けられ、そして、ケース12の底面側には電源スイッチ、音量ボリュームおよびイヤフォンジャックなどが設けられる。
ゲーム機10の電気的な構成は図2のように示される。この図2を参照して、ゲーム機10には、上述したようにCPU40が設けられ、このCPU40は、コンピュータまたはプロセサなどとも呼ばれ、ゲーム機10の全体制御を司る。CPU40またはコンピュータには、内部バスを介して上述したLCD14,操作部42およびワークメモリ44が接続されるとともに、コネクタ46および送受信バッファ48等も接続される。
LCD14にはCPU40から表示データが与えられて、ゲーム画像が表示される。なお、図示は省略しているが、CPU40にはたとえばVRAMおよびLCDコントローラ等が接続されていて、CPU40の指示の下、VRAMに背景画像データ,プレイヤオブジェクト等のオブジェクト画像データやゲーム画像データが描画される。そして、LCDコントローラは、CPU40の指示に従ってVRAMに描画されたゲーム画像データ(表示データ)を読み出し、LCD14にオブジェクトやゲーム画面(表示画面)等を表示する。
操作部42は上述した各操作ボタン16,18,20,22,24,26,28を含み、これら各操作ボタンの操作に応じた操作入力信号がCPU40に与えられる。したがって、CPU40は操作部42を通して与えられたプレイヤ(ユーザ)の指示に従った処理を実行する。
ワークメモリ44は書込み読出し可能なメモリであって、CPU40の作業領域またはバッファ領域として用いられる。送受信バッファ48は、たとえば、多人数用ゲームの通信プレイ等の際の送受信データを一時的に蓄積しておくためのものであり、外部拡張コネクタ50に接続される。このコネクタ50に、図示しない通信ケーブルを用いて他のゲーム機10と接続することによって、複数のゲーム機10の間でデータ通信が可能になる。
また、図示は省略してあるが、CPU40にはサウンド回路を介して図1に示したスピーカ34が接続されていて、CPU40からサウンド回路に音声データが与えられてスピーカ34からゲーム音楽や効果音などのゲームに必要な音が出力される。
ゲームカートリッジ32にはROM52およびRAM54が内蔵されており、ROM52とRAM54とは互いにバスで接続されるとともに、コネクタ56に接続される。したがって、上述したように、ゲームカートリッジ32がゲーム機10に装着されて、コネクタ46とコネクタ56とが接続されると、CPU40はROM52およびRAM54に電気的に接続される。したがって、CPU40は、たとえばROM52の所定の領域から所定のプログラムデータを読み出してワークメモリ44に展開したり、RAM54から所定のバックアップデータを読み出してワークメモリ44に書き込んだり、ゲームの進行状況に応じてワークメモリ44に生成したゲームデータ等をRAM54の所定の領域に書き込んで保存したりすることができる。
なお、RAM54としては、不揮発性メモリであるフラッシュメモリを適用することができるが、他の不揮発性メモリとして、たとえば強誘電体メモリ(FeRAM)やEEPROM等を適用することもできる。また、電池を電源とするSRAMやDRAM等を用いることもできる。
図3は、ROM52のメモリマップの一例を示す図解図である。この図3を参照して、ROM52は、ゲームプログラム記憶領域52aおよびゲームデータ記憶領域52bを含む。ゲームプログラム記憶領域52aには、コントローラ入力検出プログラム60,オブジェクト制御プログラム62,背景制御プログラム64,オブジェクト表示プログラム66,背景表示プログラム68,通信制御プログラム70,サウンド制御プログラム72,ゲーム進行制御プログラム74およびその他のゲームプログラム76のようなゲームプログラムが予め格納される。
コントローラ入力検出プログラム60は、操作部42に設けられるコントロールバッファ(図示せず)に保持されたプレイヤの各ボタン操作に従う操作入力信号を検出するプログラムである。オブジェクト制御プログラム62は、ゲーム空間内に存在するオブジェクトを発生したり、配置したり、移動を制御したりするプログラムである。たとえば、プレイヤの操作等に従って、プレイヤオブジェクトを発生したり、配置したり、ゲーム空間内を自由に移動させたりする。また、プレイヤの操作等に従って、敵オブジェクト、ブロック(床や階段を含む。)オブジェクト或いはアイテムのようなノンプレイヤオブジェクトを発生したり、配置したり、回転させるなどの動作(移動)をさせたりする。背景制御プログラム64は、後述する背景表示プログラム68によって表示される背景画像を、背景画像データ82やマップデータ84等に基づいて発生させるためのプログラムである。
オブジェクト表示プログラム66は、オブジェクト画像データ80に基づいて、プレイヤオブジェクトやノンプレイヤオブジェクトをLCD14に表示するためのプログラムである。背景表示プログラム68は、上述したように、背景制御プログラム64によって発生された背景画像をLCD14に表示するためのプログラムである。通信制御プログラム70は、他のゲーム機10との間におけるデータ通信を制御するためのプログラムである。
サウンド制御プログラム72は、ゲーム音楽(BGM)、効果音のようなうゲームに必要な音を生成および出力するためのプログラムである。ゲーム進行制御プログラム74は、プログラマ等の開発者が作成したシナリオもしくはストーリまたはコース(ステージ)に従ってゲームを進行させるためのプログラムである。その他のゲームプログラム76としては、バックアップ制御プログラムなどが該当する。このバックアップ制御プログラムは、ゲームの進行に従って生成され、ワークメモリ44に一時記憶されるゲームデータを、プレイヤの指示に従って、或いは所定のイベントに応じて自動で、バックアップメモリとしてのRAM54に保存(セーブ)するプログラムである。
また、ゲームデータ記憶領域52bには、オブジェクト画像データ80,背景画像データ82,マップデータ84,サウンドデータ86およびその他のデータ90が予め格納される。オブジェクト画像データ80は、プレイヤオブジェクト、ノンプレイヤオブジェクトなどのオブジェクトについてのポリゴンデータやテクスチャデータのような画像データ(以下、同様である。)である。背景画像データ82は、ゲーム空間の背景についての画像データである。マップデータ84は、ゲームプログラマ等の開発者が意図するゲーム空間(マップ)を構成するためのデータであり、マス目で切ったマップにおいてその1マスないしユニットにどんな背景(足場(床、階段、ブロック)、壁等の地形や移動可能領域等)が配置されているかを示すものである。この実施例のゲーム空間は、たとえば、いくつかのコースないしステージを含み、背景画像は、たとえば1つのコースないしステージ全体に相当するものであり、LCD14の表示領域よりも大きい。サウンドデータ86は、ゲームに必要な音(音楽)を生成するためのデータである。オブジェクト配置データ88は、プレイヤオブジェクトやノンプレイヤオブジェクトなどのオブジェクトをゲーム世界に配置するための位置データである。その他のデータ90としては、ゲームの進行に従って発生され、または更新されるゲームデータ(バックアップデータ)などが該当する。
図4は、ワークメモリ44のメモリマップの一例を示す図解図である。この図4を参照して、ワークメモリ44は、プログラム記憶領域44aおよびデータ記憶領域44bを含む。プログラム記憶領域44aには、ゲームカートリッジ32のROM52から読み出したゲームプログラムが、一度に全部または部分的かつ順次的に記憶される。具体的には、プログラム記憶領域44aには、コントローラ入力検出プログラム60およびオブジェクト制御プログラム62、そして、図示は省略するが、その他のプログラム(64,66,68,70,72,74,76)が記憶される。CPU40はこのゲームプログラムに従ってゲーム処理を実行する。
オブジェクト制御プログラム62は、さらに、オブジェクト配置プログラム620、プレイヤオブジェクトプログラム622および回転オブジェクトプログラム624によって構成される。オブジェクト配置プログラム620は、プレイヤオブジェクトやノンプレイヤオブジェクトなどのオブジェクトを発生し、そのようなオブジェクトを、オブジェクト配置データ88に従ってゲーム空間に配置するプログラムである。プレイヤオブジェクトプログラム622は、プレイヤオブジェクト位置検出プログラム622a、プレイヤオブジェクト動作プログラム622bおよび位置補正プログラム622cを含む。プレイヤオブジェクト位置検出プログラム622aは、ゲーム空間におけるプレイヤオブジェクトの位置を検出するプログラムである。この実施例では、2次元のゲーム空間が展開されるため、プレイヤオブジェクトのX座標およびY座標が検出される。プレイヤオブジェクト動作プログラム622bは、コントローラ入力検出プログラム60によって検出された操作入力信号に基づいて、プレイヤオブジェクトをジャンプさせたり、移動させたりするなどのアクションをさせるためのプログラムである。位置補正プログラム622cは、後述する回転オブジェクトなど、プレイヤオブジェクトが乗ることができるオブジェクト(床や階段のようなオブジェクトを含む。)に対するプレイヤオブジェクトの位置を補正(調整)するためのプログラムである。
また、回転オブジェクトプログラム624は、回転角検出プログラム624a,チェック三角形判別プログラム624b,三角形位置計算プログラム624cおよび当り判定プログラム624dを含む。回転角検出プログラム624aは、注目(着目)すべき回転オブジェクトの回転角を検出するプログラムである。ここで、注目すべき回転オブジェクトは、プレイヤオブジェクトの位置に基づいて、当りを判定される回転オブジェクトを意味する。チェック三角形判別プログラム624bは、回転オブジェクトを複数の三角形を用いて分解した場合に、プレイヤオブジェクトの位置に基づいて、当該プレイヤオブジェクトと回転オブジェクトとの当りを判定する(チェックする)三角形を判別(決定)するプログラムである。三角形位置計算プログラム624cは、チェック三角形判別プログラム624bによって決定された三角形の位置(頂点座標)を計算するプログラムである。当り判定プログラム624dは、チェック三角形決定プログラム624bによって決定された三角形とプレイヤオブジェクトとの当りを判定するプログラムである。
データ記憶領域44bには、ゲームカートリッジ32のROM52から読み出したゲームデータおよびゲーム中に生成されたゲームデータが記憶される。具体的には、プレイヤオブジェクト位置データ92、プレイヤオブジェクト向きデータ94、プレイヤオブジェクト画像データ96、回転オブジェクト位置データ98、回転オブジェクト回転角度データ100、チェック三角形フラグ102、当り判定座標データ104および位置補正量データ106が、データ記憶領域44bに記憶される。
プレイヤオブジェクト位置データ92は、プレイヤオブジェクト検出プログラム622aによって検出されたプレイヤオブジェクトの位置(座標)を示すデータである。プレイヤオブジェクト向きデータ94は、2次元のゲーム空間内におけるプレイヤオブジェクトの移動方向(上、下、右、左)を示すデータである。プレイヤオブジェクト画像データ96は、上述したように、プレイヤオブジェクトをLCD14に表示するための画像データである。
回転オブジェクト位置データ98は、2次元のゲーム空間に配置される回転オブジェクトの位置すなわちX座標およびY座標を示すデータである。ただし、複数の回転オブジェクトが存在する場合には、各々のX座標およびY座標を示すデータが記述される。この回転オブジェクト位置データ98は、ROM52のデータ記憶領域52bからロードされたオブジェクト配置データ88から取得される。回転オブジェクト回転角度データ100は、回転角検出プログラム624aによって検出された回転オブジェクトの回転角度についてのデータである。
チェック三角形フラグ102は、回転オブジェクトを分解した複数の(この実施例では、後述するように、4つの)三角形についてのフラグであり、当該複数に相当するビット数のレジスタで構成される。各ビットは、分解した複数の三角形のそれぞれに対応し、チェック三角形決定プログラム624bによって決定された三角形についてのフラグがオンされ、それ以外の三角形についてのフラグはオフされる。フラグがオンされると、対応するレジスタのデータ値が“1”にされ、フラグがオフされると、対応するレジスタのデータ値が“0”にされる。
当り判定座標データ104は、当りを判定する三角形が決定された場合に、その基準となる点(基準点)のX座標およびY座標を示すデータである。位置補正量データ106は、プレイヤオブジェクトと回転オブジェクトとの当りを判定した場合に、プレイヤオブジェクトの位置を上下方向(Y軸方向)或いは左右方向(X軸方向)に補正する補正量のデータである。
なお、図示は省略するが、その他のデータとして、上述したようなプレイヤオブジェクト以外のオブジェクトについてのオブジェクト画像データ80,背景画像データ82、マップデータ84およびサウンドデータ92が記憶され、さらに、ゲーム進行に必要なその他のゲームデータやフラグデータ等も記憶される。
たとえば、図1に示したゲーム機10では、プレイヤオブジェクトが敵オブジェクトを倒したり、所定のアイテムを獲得したりしながら、各コースないしはステージのゴールを目指し、最終的な目標を達成するようなゲームが実行される。各コースないしはステージは、デザイナやプログラマのような開発者によって設計され、様々な背景オブジェクトやアイテム、さらには、敵オブジェクト等が配置される。
図5(A)および図5(B)は、コースに配置される背景オブジェクトとしての回転オブジェクト200とプレイヤオブジェクト202との関係を示す図解図である。この実施例では、回転オブジェクト200は正方形であり、1または複数の回転オブジェクト200が各コースの所定の位置であり、空中に浮いて配置される。ただし、一部のコースのみに配置するようにしてもよい。図5(A)に示すように、回転オブジェクト200が回転していない状態では、プレイヤオブジェクト202は、当該回転オブジェクト200の上に乗ることができ、さらに、その上を歩くことができる。また、プレイヤオブジェクト202は、回転オブジェクト200の横或いは下から当該回転オブジェクト200の方向へ移動すると、プレイヤオブジェクト202の体或いは頭部が回転オブジェクト200の側面或いは下面に当たる。
また、図5(B)に示すように、回転オブジェクト200が任意の角度だけ回転した状態では、プレイヤオブジェクト202は、当該回転オブジェクト200の上に乗ることができるが、回転オブジェクト200が回転することにより形成された斜面を下に向いている方向に滑る。また、プレイヤオブジェクト202は、回転オブジェクト200の横或いは下から当該回転オブジェクト200の方向へ移動すると、プレイヤオブジェクト202の頭部が回転オブジェクト200の下方斜面に当たる。ただし、斜面が急な場合には、プレイヤオブジェクト202の体が回転オブジェクト200の斜面に当たる場合もある。
このような回転オブジェクト200とプレイヤオブジェクト202との当りを正確に判断しない場合には、LCD14に表示されるゲーム画像では、プレイヤオブジェクト202が回転オブジェクト200をすり抜けてしまったり、回転オブジェクト200に埋もれてしまったり、さらには、回転オブジェクト200との間に隙間ができてしまったりしてしまう。これでは、プレイヤは違和感を感じてしまい、ゲームへの興味を減退させてしまうことになる。
このため、プレイヤオブジェクト202と回転オブジェクト200との当りを正確に判断して、プレイヤオブジェクト202の位置を補正する必要がある。このような補正をする場合には、たとえば、所定フレーム(この実施例では、1フレーム)毎のプレイヤオブジェクト202の位置を検出して、回転オブジェクト200との当りを判定し、当たっていると判定した場合には、次の1フレームにおけるプレイヤオブジェクト202の位置を補正する。
たとえば、図6(A)に示すように、プレイヤオブジェクト202が回転オブジェクト200の上側右斜面に乗る場合には、当りを判定する上側右斜面を決定した後に、図6(B)に示すように、プレイヤオブジェクト202のX方向の当りと、Y方向の当りとが判定される。さらに、Y方向では、プレイヤオブジェクト202が回転オブジェクト200のようなオブジェクトをすり抜けるなどの不都合を無くすために、J線およびK線で挟む範囲(J線およびK線の両方)のように、Y方向に厚みを設けて、当該範囲について当りを判定するのが一般的である。
しかし、このような当り判定方法では、Y方向について2回当りを判定する必要があるため、判定回数が多くなってしまう。
そこで、この実施例では、回転オブジェクト200が回転した場合には、当該回転オブジェクト200を複数の(この実施例では、正方形であるため、4つの)直角三角形を用いて分解し、当り判定の対象となる1の直角三角形を決定し、図6(C)に示すように、当該直角三角形とプレイヤオブジェクト202との当りを判定するようにしてある。かかる場合には、後述するように、Y方向では、M線についての判定処理を実行する必要がなく、L線についての判定処理のみを実行すればよいので、X方向およびY方向のそれぞれについて1回の判定処理を実行すればよい。以下、詳細に説明することにする。
図7に示すように、当りを判定する場合には、まず、回転オブジェクト200は、直角三角形(1)〜(4)とこれらに囲まれる1つの正方形とに分解される。ここで、2次元のゲーム空間では、図面の左右方向がX軸方向であり、上下方向がY軸方向である。これらの直角三角形(1)〜(4)は、X軸およびY軸と平行な2つ辺を有し、その2つの辺と回転オブジェクト200の1つの辺とによって形成される。ただし、X軸およびY軸に平行な辺は、回転オブジェクト200の各頂点から回転オブジェクト200の内側に延びる線分である。
当り判定では、プレイヤオブジェクト202の位置に基づいて、当りを判定するための1つの直角三角形が、直角三角形(1)〜(4)から決定される。図7からも分かるように、直角三角形(1)〜(4)のそれぞれは、X軸およびY軸と平行な2つ辺を含み、その2つの辺を回転オブジェクト200の外側に伸ばした2本の直線で挟む領域(I)〜(IV)(コメント:領域(I)と(IV)についての文字が(・)というように表示されていましたので、訂正しましたが、どれであったかは定かでありません。すみません。)、それぞれ、直角三角形(1)〜(4)に対応する。つまり、領域(I)は直角三角形(1)に対応し、領域(II)は直角三角形(2)に対応し、領域(III )は直角三角形(3)に対応し、そして、領域(IV)は直角三角形(4)に対応する。
したがって、領域(I)内にプレイヤオブジェクト202が存在する場合には、当りを判定する直角三角形に直角三角形(1)が決定され、領域(II)内にプレイヤオブジェクト202が存在する場合には、当りを判定する直角三角形に直角三角形(2)が決定され、領域(III )内にプレイヤオブジェクト202が存在する場合には、当りを判定する直角三角形に直角三角形(3)が決定され、そして、領域(IV)内にプレイヤオブジェクト202が存在する場合には、当りを判定する直角三角形に直角三角形(4)が決定される。これは、回転オブジェクト200の外側に伸びた直線とプレイヤオブジェクト202の位置(座標)とによって決定される。
当りを判定するための1の直角三角形が決定されると、次にプレイヤオブジェクト202が当該直角三角形の範囲内にあるか否かが判断される。つまり、プレイヤオブジェクト202が当該直角三角形に当たっているかどうかが判断される。図8(A)および図8(B)を用いて、プレイヤオブジェクト202が回転オブジェクト200に当たっているかどうかの判定方法を説明する。図8(A)では、プレイヤオブジェクト202は領域(I)に存在し、当りを判定する直角三角形(1)に斜線を付して示してある。また、簡単のため、プレイヤオブジェクト202は点A(x,y)で示してある。回転オブジェクト200は、角度「θ」だけ回転され、その中心は、原点O(0,0)で示してある。また、当該回転オブジェクト200の一辺の長さは「a」としてある。
なお、図8(図9も同じ。)では、分かり易く説明するため、回転オブジェクト200の中心を原点としてあるが、実際には、このような2次元のゲーム空間の原点は、たとえば、横長の長方形状に展開される背景画像の左上の頂点である。
図8(B)は、図8(A)に示す斜線を付した直角三角形(1)を拡大した拡大図である。この図8(B)に示すように、当該直角三角形(1)の頂点を、点P、点P1および点P2のように決定すると、直角を有する頂点Pの座標(m,n)は数1で表される。
Figure 2005027921
また、点P(m,n)としたとき、点P1の座標を(m,n+asinθ)と表すことができ、点P2の座標を(m+acosθ,n)と表すことができる。当該直角三角形(1)とプレイヤオブジェクト202との当りを判定する場合には、当該直角三角形(1)の内部にプレイヤオブジェクト202(ここでは、点A)が埋まっているかどうかが判断される。言い換えると、当該直角三角形(1)の斜辺を超えて、その内部に点Aが在るか否かが判断される。したがって、まず、X方向について判定するために、点A(x,y)のX座標が数2を満たすかどうかが判断される。つまり、図中の(i)で示す範囲内に点Aが存在するかどうか、すなわち、点AのX座標が当該直角三角形(1)の範囲内に存在するかどうかが判断される。
Figure 2005027921
次に、Y方向について判定をするために、点A(x,y)のY座標が数3を満たすかどうかが判断される。つまり、図中の(ii)で示す範囲に点Aが存在するかどうか、すなわち、点AのY座標が当該直角三角形(1)の範囲内に存在するかどうかが判断される。ただし、Y方向では、点AのX座標の位置によって、数3の右辺に示す値は変動する。
Figure 2005027921
点A(x,y)が数2および数3を満たす場合には、点Aが当該直角三角形(1)の範囲内(内部)に存在するため、プレイヤオブジェクト202が当該直角三角形(1)すなわち回転オブジェクト200に当たっていると判定する。
このように、Y方向の判定は、数3を用いて1回だけ実行すればよい。これは、当該直角三角形(1)を決定する際に、プレイヤオブジェクト202が点Pと点P2とを通る直線よりも上方に位置することを既に検出しているためである。
また、直角三角形(2)が当りを判定する直角三角形として決定された場合について、図9(A)および図9(B)を用いて説明することにする。ただし、図8(A)および図8(B)と同じ内容については、簡単に説明することにする。この図9(A)では、プレイヤオブジェクト202は領域(II)に存在し、当りを判定する直角三角形(2)に斜線を付して示してある。また、図8(A)および図8(B)に示した場合と同様に、プレイヤオブジェクト202は点A(x,y)で示し、回転オブジェクト200は、角度「θ」だけ回転され、その中心は、原点O(0,0)で示してある。さらに、当該回転オブジェクト200の一辺の長さは「a」である。
図9(B)は、図9(A)に示す斜線を付した直角三角形(2)を拡大した拡大図である。この図9(B)に示すように、当該直角三角形(2)の頂点を、点P、点P1および点P2のように決定すると、直角を有する頂点P(m,n)は数4で表される。
Figure 2005027921
また、点P(m,n)とすると、点P1の座標を(m,n+asinθ)と表すことができ、点P2の座標を(m+acosθ,n)と表すことができる。したがって、まず、X方向についての判定をするために、点A(x,y)のX座標が数5を満たすかどうかが判断される。つまり、図中の(i)で示す範囲内に点Aが存在するかどうかが判断される。
Figure 2005027921
次に、Y方向の判定をするために、点A(x,y)のY座標が数6を満たすかどうかが判断される。つまり、図中の(ii)で示す範囲に点Aが存在するかどうかが判断される。
Figure 2005027921
点A(x,y)が数5および数6を満たす場合には、点Aが当該直角三角形(1)の範囲内に存在すると判断して、プレイヤオブジェクト202の位置を補正する。
なお、Y方向についての判定を1回行えば十分であることは、上述した通りである。
以上のようにして、直角三角形(1)または(2)の範囲内にプレイヤオブジェクト202が存在するかどうかが判断され、直角三角形(1)または(2)の範囲内に存在すると判断された場合には、プレイヤオブジェクト202が回転オブジェクト200に当たっていると判断して、プレイヤオブジェクト202の位置が補正され、プレイヤオブジェクト202が回転オブジェクト200の上に乗るように画面表示される。言い換えると、プレイヤオブジェクト202と回転オブジェクト200との接触状態を示すゲーム画像が表示される。
なお、直角三角形(3)や(4)の範囲内に存在するか否かの判断は、直角三角形(1)や(2)の場合と同様であるため、ここでは説明は省略することにする。ただし、直角三角形(3)や(4)の範囲内に存在すると判断された場合には、プレイヤオブジェクト202の位置が補正され、当該プレイヤオブジェクト202の頭部或いは体が回転オブジェクト200に接触する(突き当たる)ように画面表示される。
また、図8および図9に示した例では、決定した直角三角形(1)または(2)の範囲内に存在するか否かを判断するようにしてあるが、実際には、プレイヤオブジェクト202が1フレームで移動する移動量を考慮し、図6(C)にも示したように、すり抜けなどを防止するために、直角三角形(1)〜(4)に一定の厚みを設けた範囲で判断するようにしてある。したがって、プレイヤオブジェクト202は、当りを判定する直角三角形の斜辺から当該直角三角形の外方向に一定の厚みに相当する所定距離よりも離れている場合には、回転オブジェクト200とプレイヤオブジェクト202とは当たっていないと判定され、逆に、所定距離離れていない場合には、回転オブジェクト200とプレイヤオブジェクト202とは当たっていると判定される。このため、上述したように、直角三角形の範囲内にプレイヤオブジェクト202が存在するか否かを判断する場合には、数3の右辺および数6の左辺の値に、当該厚みに相当する値が加算されることになる。
たとえば、直角三角形(1)について説明すると、図10(A)に示すように、Y軸方向に厚みが設けられる。プレイヤオブジェクト202が回転オブジェクト200を分解した直角三角形(1)に着地しようとする場合には、直角三角形(1)と厚みとで形成される範囲内に移動しなければ、回転オブジェクト200とプレイヤオブジェクト202とが当たっているとは判定されない。
しかし、図10(B)に示すように、直角三角形(1)の内部にまで、プレイヤオブジェクト202が移動した場合には、回転オブジェクト200とプレイヤオブジェクト202とが当たっていると判定される。また、図10(C)に示すように、直角三角形(1)から少し離れた位置に、プレイヤオブジェクト202が移動している場合であっても、厚みの部分にプレイヤオブジェクト202が移動しているため、回転オブジェクト200とプレイヤオブジェクト202とが当たっていると判定される。
上述したように、回転オブジェクト200とプレイヤオブジェクト202とが当たっていると判定された場合には、プレイヤオブジェクト202の位置が補正されるため、図10(B)に示すような場合には、矢印で示すように、プレイヤオブジェクト202の位置が直角三角形(1)の斜辺の上、すなわち回転オブジェクト200上に乗るように、上方向に位置が補正される。また、図10(C)に示すような場合には、矢印で示すように、プレイヤオブジェクト202の位置がプレイヤオブジェクト202上に乗るように、下方向に位置が補正される。
このような補正は、単にプレイヤオブジェクト202のY座標に補正量を加算または減算することにより、実現できる。図示は省略するが、回転オブジェクト200の下方向からプレイヤオブジェクト202の頭部が当たる場合についても同様に考えることができる。
また、図8および図9においては、簡単のため、プレイヤオブジェクト202を1つの点Aで示して、当りを判定する方法について説明したが、実際には、この実施例では、図10(A)〜(C)に示すように、プレイヤオブジェクト202について、当りを判定する点は4つ設けられる。具体的には、頭部の点202a、足元の点202b、右側面の点202cおよび左側面の点202dが設けられる。
なお、右側面の点202cはプレイヤオブジェクト202の右手の方向に設けられ、左側面の点202dはプレイヤオブジェクト202の左手の方向に設けられる。
当り判定では、このうちの2点が用いられるが、いずれの2点を用いるかは、プレイヤオブジェクト202の移動方向と、回転オブジェクト200の位置およびプレイヤオブジェクト202の位置とによって選択される。
図7を用いて詳しく説明することにする。ただし、図7において、プレイヤオブジェクト202は、それぞれ回転オブジェクト200に向かう方向に移動しているものと仮定する。プレイヤオブジェクト202が領域(I)に存在する場合には、プレイヤオブジェクト202の移動方向は左または下であるため、当りを判定する点として、足元の点202bおよび右側面の点202cが選択される。また、プレイヤオブジェクト202が領域(II)に存在する場合には、プレイヤオブジェクト202の移動方向は右または下であるため、当りを判定する点として、足元の点202bおよび左側面の点202dが選択される。さらに、プレイヤオブジェクト202が領域(III )に存在する場合には、プレイヤオブジェクトの移動方向は右または上であるため、当りを判定する点として、頭部の点202aおよび左側面の点202dが選択される。さらにまた、プレイヤオブジェクト202が領域(IV)に存在する場合には、プレイヤオブジェクト202の移動方向は左または上であるため、当りを判定する点として、頭部の点202aおよび右側面の点202cが選択される。
このように、頭部や足元だけでなく、右側面および左側面にも当りを判定する点を設けるのは、図11(A)に示すように、回転オブジェクト200の回転角度によっては、当りを判定する直角三角形が急な斜辺を有する場合があり、かかる場合には、図11(B)に示すように、プレイヤオブジェクト202の足元が当該回転オブジェクト200に当たるよりも、プレイヤオブジェクト202の体(側面)が当該回転オブジェクト200に先に当たってしまうからである。また、図示は省略するが、プレイヤオブジェクト202が回転オブジェクト200に対して横方向から当たる場合にも、正確に当りを判定する必要があるからでもある。このような場合であっても正確に当りを判断して、プレイヤオブジェクト202の位置を補正するようにしてある。このとき、プレイヤオブジェクト202のX座標に補正量を加算または減算することにより、つまりプレイヤオブジェクト202を左右に移動させることにより、回転オブジェクト200とプレイヤオブジェクト202とが接触するように位置を補正される。
また、図12(A)に示すように、当り判定では、プレイヤオブジェクト202が直角三角形の範囲内に存在するか否かをY方向について判断する場合は、直角三角形(1)では頂点Aを基準点とし、直角三角形(2)では頂点Bを基準点とし、直角三角形(3)では頂点Cを基準点とし、直角三角形(4)では頂点Dを基準点とするのが一般的である。しかし、このように基準点を決定した場合には、たとえば、図13(A)に示すように、プレイヤオブジェクト202が直角三角形(2)の上から直角三角形(1)の上に移動する場合には、頂点Aがずれてしまう場合があり、プレイヤオブジェクト202が不自然な動きをしてしまう。
これは、直角三角形の範囲内に存在するか否かをY方向について調べる場合の数3の右辺および数6の左辺の項に起因している。つまり、θの値が0度または90度に近づくと、tanθの値が0または∞に近づくため、tanθを含む数3および数6の項についての計算誤差が大きくなってしまうからである。このため、直角三角形(2)の基準点を点Bに決定した場合には、点Bから点Aに向かう直線に誤差が生じてしまい、たとえば、図13(A)に示すように、頂点Aが頂点A′のようにずれてしまう。これは、点Aから点Dに向かう直線、点Dから点Cに向かう直線および点Cから点Bに向かう直線についても同様である。
したがって、この実施例では、直角三角形(1)および(2)については、基準点を点Aに決定し、直角三角形(3)および直角三角形(4)については、基準点を点Cに決定するようにしてある。ただし、実際のゲーム中では、回転オブジェクト200は回転するため、当りを判定する際に、Y座標が最大または最小となる回転オブジェクト200の頂点を基準点に決定するようにしてある。
このため、図13(B)に示すように、頂点Aでの誤差をなくすことができ、プレイヤオブジェクト202が直角三角形(2)の上から直角三角形(1)の上に移動する場合に、頂点Aをまたいでも、プレイヤオブジェクト202の動きが不自然になることはない。
なお、このように、Y座標が最大または最小となる点Aおよび点Cを基準点とした場合には、点Bおよび点Dにおいて、上述したような誤差が生じることとなるが、点Bや点Dをプレイヤオブジェクト202がまたいで移動するようなことがないため、画面表示に不都合が生じることはない。
また、上述の当り判定の説明においては省略したが、図8(B)および図9(B)では、この計算誤差を考慮して、Y座標が最大となる頂点P1を基準点に決定した場合について説明してある。つまり、Y方向についての判定をするための数3および数6については、点P2の要素を含まないようにしてある。
図14は、このゲーム機10のゲーム動作の一例を示すフロー図である。ゲームカートリッジ32を装着したゲーム機10の電源を投入すると、ゲームカートリッジ32のROM52から必要なプログラムおよびデータが読み出され、ワークメモリ44にロード(記憶)されて、CPU40によって処理が開始される。プレイヤによる操作部42の操作入力によってゲーム開始が指示されると、図14に示すように、最初のステップS1で、コースないしステージに必要な背景画像データ82、マップデータ84およびオブジェクト配置データ88をROM52から読み出して、ワークメモリ44のデータ記憶領域44bにロードする。これにより、このコースの背景が発生され、当該コースに存在するオブジェクトも発生される。
なお、ステップS1では、ゲームを始めから開始する場合には、最初のコースについての背景画像データ82等がロードされるが、前回の続きからゲームを始める場合には、前回の続きとなるコースについての背景画像データ82等がロードされる。
次にステップS3で、背景画像をLCD14に表示し、ステップS5で、プレイヤオブジェクト202およびノンプレイヤオブジェクトを表示する。つまり、プレイヤオブジェクト202および表示されるべき回転オブジェクト200や敵オブジェクトなどが表示される。次に、ステップS7では、操作部42から操作入力信号を取得(検出)する。
なお、ゲーム開始時等に最初の画面を表示するまでは、このステップS5の処理を不能化して、操作入力を受け付けないようにしてもよい。この場合、ステップS9以降の処理が実行されて最初の画面が表示されることとなり、プレイヤはその最初の画面を見てゲームプレイを開始する。
続くステップS9では、プレイヤオブジェクト202およびノンプレイヤオブジェクトの動作処理を実行する。すなわち、ステップS5において取得した操作入力信号およびプログラムに基づいてプレイヤオブジェクト202を動作させる。たとえば、プレイヤが操作部42の十字ボタン16を操作した場合、CPU40は、ゲーム空間においてプレイヤオブジェクト202を操作された方向に移動させ、現フレームにおけるプレイヤオブジェクト202の位置を更新する。また、CPU40は、敵キャラクタや回転オブジェクト200のようなノンプレイヤオブジェクトについても、操作入力信号およびプログラムに基づいて、必要に応じて動作させる。
そして、ステップS11では、回転オブジェクト200がプレイヤオブジェクト202の近辺に存在するかどうかを判断する。つまり、CPU40は、ワークメモリ44のデータ記憶領域44bに記憶されるプレイヤオブジェクト位置データ92と回転オブジェクト位置データ98とを参照して、プレイヤオブジェクト202の位置を中心とする所定範囲内に回転オブジェクト200が存在するかどうかを判断する。ここで、所定範囲は、ゲームプログラマ等の開発者が予め設定した範囲であり、たとえば、プレイヤオブジェクト202の1フレーム期間における最大の移動範囲に決定される。ステップS11で“NO”であれば、つまり回転オブジェクト200がプレイヤオブジェクト202の近辺に存在しない場合には、そのままステップS15に進む。一方、ステップS11で“YES”であれば、つまり回転オブジェクト200がプレイヤオブジェクト202の近辺に存在する場合には、ステップS13で、後述するプレイヤオブジェクト202の位置補正処理(図15および図16参照)を実行して、ステップS15に進む。
ステップS15では、プレイヤオブジェクト202がこのコースのゴールに達したか否かを判断する。ステップS15で“YES”であれば、つまりプレイヤオブジェクト202がこのコースのゴールに達すれば、このコースのゲーム処理を終了する。一方、ステップS15で“NO”であれば、つまりプレイヤオブジェクト202がこのコースのゴールに達していなければ、ステップS17で、エリア切替かどうかを判断する。つまり、プレイヤオブジェクト202が、スクロール可能な範囲を超えて移動したかどうかを判断する。
ステップS17で“YES”であれば、つまりエリア切替であれば、ステップS19でエリア切替処理を実行して、ステップS1に戻る。エリア切替処理では、次の(隣の)背景画像を取得し、かつプレイヤオブジェクト202がゲーム画面の左右方向における中央に表示されるように、ゲーム画面の開始位置を取得する。したがって、その後、ステップS1の処理を実行することにより、エリアを切り替えたゲーム画面が表示される。
一方、ステップS17で“NO”であれば、つまりエリア切替でなければ、ステップS21でスクロール移動処理を実行してステップS3に戻る。スクロール移動処理では、プレイヤオブジェクト202が移動した移動量に応じて画面をスクロールし、すなわち上下または左右に移動し、プレイヤオブジェクト202が画面の左右方向における中央に表示されるように、当該エリア内のゲーム画面の開始位置を取得する。したがって、その後、ステップS3の処理を実行することにより、スクロールされたゲーム画面が表示される。
図15および図16は、図14のステップS13のプレイヤオブジェクト202の位置補正処理を示すフロー図である。CPU40は、位置補正処理を開始すると、図15に示すように、ステップS31で回転オブジェクト200が回転しているかどうかを判断する。ステップS31で“NO”であれば、つまり回転オブジェクト200が回転していなければ、ステップS33で、通常の正方形のオブジェクトとして当り判定処理等を実行し、位置補正処理をリターンする。つまり、ステップS33では、プレイヤオブジェクト202の位置に基づいて、正方形のいずれの辺との当りを判定するかを決定し、決定した当該辺を含む一定範囲についての当りを判定する。具体的には、図6(B)に示した場合と同じように、当該辺に一定の厚みを与えて、その厚みの上下或いは左右の座標とプレイヤオブジェクト202との位置を比較し、静止している回転オブジェクト200との当りを判定し、プレイヤオブジェクト202の位置を補正しているのである。
一方、ステップS31で“YES”であれば、つまり回転オブジェクト200が回転している場合には、ステップS35で、当該回転オブジェクト200を、周りの4つの直角三角形と中心に1つの正方形とに分解する。続くステップS37では、プレイヤオブジェクト202の座標から当りをチェック(判定)する1つの直角三角形を決定する。つまり、図7に示したように、回転オブジェクト200に対してプレイヤオブジェクト202がいずれの領域に存在するのかを検出することにより、1つの直角三角形が決定される。
そして、ステップS39では、プレイヤオブジェクト202のY方向の速度が当該直角三角形に近づく方向かどうかを判断する。ステップS39で“NO”であれば、つまりプレイヤオブジェクト202が当該直角三角形から離れる方向に移動している場合には、Y方向の当りを判定する必要がないため、図16に示すステップS51に進む。
一方、ステップS39で“YES”であれば、つまりプレイヤオブジェクト202が当該直角三角形に近づく方向に移動している場合には、Y方向の当りを判定する必要があるため、ステップS41で、プレイヤオブジェクト202が上昇中かどうかを判断する。ステップS41で“NO”であれば、つまりプレイヤオブジェクト202が下降中であれば、ステップS43で、足元が当たっているかどうかを判断する。つまり、当該直角三角形の範囲内に、プレイヤオブジェクト202、厳密には、足元の点202bが存在するか否かを判断する。また、直角三角形には、図10(A)〜図10(C)に示したように、厚みに相当する領域も含むものとする。以下、この実施例において同じである。
なお、ステップS41の判断処理により、当りを判定する点202aまたは202bを選択しているのである。
ステップS43で“NO”であれば、つまり足元が当たっていなければ、そのままステップS51に進む。一方、ステップS43で“YES”であれば、つまり足元が当たっていれば、ステップS45で、着地処理すなわち上下方向の補正(上下補正)をして、位置補正処理を終了する。ステップS45においては、プレイヤオブジェクト202が回転オブジェクト200に当たっていると判定すると、実際の回転オブジェクト200の外形線すなわち当該直角三角形の斜辺(かかる場合には、厚みを含まない実際の直角三角形を意味する。)とプレイヤオブジェクト202との位置の差分を検出し、当該差分が無くなるように、プレイヤオブジェクト202が上下方向に移動される。
また、ステップS41で“YES”であれば、つまりプレイヤオブジェクト202が上昇中であれば、ステップS47で、プレイヤオブジェクト202の頭部の点202aが当該直角三角形の範囲内に存在するかどうかを判断する。ステップ47で“NO”であれば、つまり頭部の点202aが当該直角三角形の範囲内に存在しなければ、そのままステップS51に進む。一方、ステップS47で“YES”であれば、つまり頭部の点202aが当該直角三角形の範囲内に存在すれば、プレイヤオブジェクト202が回転オブジェクト200に当たっていると判定して、ステップS49で、プレイヤオブジェクトを上下方向に補正し、位置補正処理をリターンする。
なお、ステップS49における処理は、ステップS45における処理と同じであるため、重複した説明は省略することにする。
図16に示すように、ステップS51では、プレイヤオブジェクト202が右に移動中であるかどうかを判断する。このステップS51の判断処理により、当りを判定する点202cまたは点202dを選択しているのである。ステップS51で“NO”であれば、つまりプレイヤオブジェクト202が左に移動中であれば、ステップS53でプレイヤオブジェクト202の右側面すなわち右側面の点202cが当該直角三角形の範囲内に存在するかどうかを判断する。ステップS53で“YES”であれば、つまりプレイヤオブジェクト202の右側面の点202cが当該直角三角形の範囲内に存在すれば、プレイヤオブジェクト202が回転オブジェクト200に当たっていると判断して、ステップS55で、プレイヤオブジェクト202を左右方向に補正して、図15に示したように、位置補正処理をリターンする。
ステップS55においては、プレイヤオブジェクト202が回転オブジェクト200に当たっていると判定すると、実際の回転オブジェクト200の外形線すなわち当該直角三角形の斜辺(かかる場合には、厚みを含まない実際の直角三角形を意味する。)とプレイヤオブジェクト202との位置の差分を検出し、当該差分が無くなるように、プレイヤオブジェクト202が左右方向に移動される。
一方、ステップS51で“YES”であれば、つまりプレイヤオブジェクト202が右に移動中であれば、ステップS57で、プレイヤオブジェクト202の左側面すなわち左側面の点202dが当該直角三角形の範囲内に存在するかどうかを判断する。ステップS57で“NO”であれば、つまりプレイヤオブジェクト202の左側面の点202dが当該直角三角形の範囲内になければ、そのまま位置補正処理を終了する。一方、ステップS57で“YES”であれば、つまりプレイヤオブジェクト202の左側面の点202dが当該三角形の範囲内に在れば、プレイヤオブジェクト202が回転オブジェクト200に当たっていると判断して、ステップS59で、プレイヤオブジェクト202を左右方向に補正して、位置補正処理をリターンする。
なお、ステップS59における左右方向の補正は、ステップS55の処理と同じであるため、重複した説明は省略する。
この実施例によれば、回転オブジェクトが任意の角度だけ回転すると、当該オブジェクトを4つの直角三角形を用いて分解し、プレイヤオブジェクトの位置に応じて決定した直角三角形の範囲にプレイヤオブジェクトが存在するか否かによって当りを判定するので、回転する正方形のオブジェクトであっても当り判定を正確で簡単に行うことができる。
また、正方形の回転オブジェクトの頂点うち、Y座標が最大または最小となる点を基準点に決定するので、当該基準点における計算誤差を無くすことができ、当該基準点付近における当りを正確に判定することができる。
上述の実施例では、回転オブジェクトの形状を正方形とした場合について示したが、回転オブジェクトの形状はこれに限定されるべきでなく、任意の形状を採ることができる。たとえば、図17(A)〜図17(C)に示すように、回転オブジェクト200は、正五角形、正六角形または正八角形とすることができる。このような矩形であっても、X軸およびY軸に平行な2つの辺を有する複数の直角三角形に分解することができるので、プレイヤオブジェクトの位置に基づいていずれか1つの直角三角形を決定するようにすれば、簡単に当りを判定し、プレイヤオブジェクトの位置を補正することができる。
また、上述の実施例では、回転するオブジェクトについて示したが、これに限定される必要はなく、たとえば、正方形のような形状の矩形オブジェクトを斜めに固定的に配置した場合であっても、当該矩形オブジェクトを、上述の場合と同様に、複数の直角三角形を用いて分解して、当りを判定し、プレイヤオブジェクトの位置を補正することができる。つまり、オブジェクトの形や配置する方向(角度)を任意に設定することができるので、ゲームのコースやステージのバリエーションを増やすことができる。これにより、ゲームの趣向性を向上させることができるのである。
なお、上述の実施例では、回転オブジェクトの頂点のうち、Y座標が最大または最小となる点を基準点に決定するようにしたが、基準点をプレイヤオブジェクトの位置からより近い点に決定するようにすれば、回転オブジェクトのどの位置においても正確な当り判定を行うことができる。たとえば、基準点は、頂点と頂点との間(回転オブジェクトの外形線の線分)を、1/2,1/4,1/8,1/16,…のように、細かく分けて複数の基準点を設けるようにすればよい。ただし、かかる場合には、プレイヤオブジェクトの位置に応じて、いずれの基準点を使用するのかを判定する処理が増えるため、基準点の個数を増やし過ぎた場合には、処理負担が大きくなることに留意すべきである。
また、上述の実施例では、携帯型のゲーム機についてのみ説明したが、これに限定される必要はない。たとえば、家庭用のビデオゲーム装置やゲーム機能を有する携帯電話機などにも適用することができる。また、ゲームカートリッジに変えて、CD−ROM,DVDなどの光学式情報記録媒体、光磁気ディスクまたは磁気ディスクなどの種々の情報記録媒体を適用することが可能である。
この発明のゲーム機の一例を示す図解図である。 図1に示すゲーム機の電気的な構成を示すブロック図である。 図2に示すゲームカートリッジ内に設けられるROMのメモリメモリマップを示す図解図である。 図2に示すゲーム機に設けられるワークメモリのメモリマップを示す図解図である。 図1に示すゲーム機のLCDに表示されるゲーム空間に存在する回転オブジェクトおよびプレイヤオブジェクトの一例を示す図解図である。 図1に示すゲーム機のLCDに表示されるゲーム空間に存在する回転オブジェクトとプレイヤオブジェクトとの当りを判定する場合の判定領域を示す図解図である。 回転オブジェクトとプレイヤオブジェクトとの当りを判定する場合に、回転オブジェクトを4つの直角三角形と中心の正方形とに分解し、当りを判定する直角三角形とプレイヤオブジェクトとの位置関係を示す図解図である。 回転オブジェクトとプレイヤオブジェクトとの当りを判定する判定方法の一例を説明するための図解図である。 回転オブジェクトとプレイヤオブジェクトとの当りを判定する判定方法の他の一例を説明するための図解図である。 回転オブジェクトとプレイヤオブジェクトとが当たると判定された場合のプレイヤオブジェクトの位置を補正する補正方法を説明するための図解図である。 回転オブジェクトとプレイヤオブジェクトとの当りを判定する判定方法のその他の一例を示す図解図である。 回転オブジェクトとプレイヤオブジェクトとの当りを判定する場合の回転オブジェクトの基準点の決定方法を説明するための図解図である。 図12に示すように基準点を決定した場合のプレイヤオブジェクトの動きを説明するための図解図である。 図2に示すCPUのゲーム処理の一例を示すフロー図である。 図2に示すCPUのプレイヤオブジェクトの位置補正処理の一部を示すフロー図である。 図2に示すCPUのプレイヤオブジェクトの位置補正処理の他の一部を示すフロー図である。 回転オブジェクトの他の例を示す図解図である。
符号の説明
10 …ゲーム機
14 …LCD
32 …ゲームカートリッジ
40 …CPU
42 …操作部
44 …ワークメモリ
52 …ROM
54 …RAM

Claims (9)

  1. 2次元空間内に存在する第1オブジェクトと第2オブジェクトとの当りを判定するゲーム装置であって、
    前記2次元空間内を自由に移動する第1オブジェクトを発生させる第1オブジェクト発生手段、
    前記2次元空間内で回転する多角形の第2オブジェクトを発生させる第2オブジェクト発生手段、
    前記第2オブジェクトが回転するとき、当該第2オブジェクトを複数の三角形を用いて分解する分解手段、
    前記第1オブジェクトが存在する位置に基づいていずれか1つの三角形を決定する決定手段、および
    前記第1オブジェクトが前記決定手段によって決定された1つの三角形の斜辺であり、当該斜辺から当該三角形の外方向に所定距離離れていなければ当りであると判定する当り判定手段を備える、ゲーム装置。
  2. 前記当り判定手段が当りであると判定したとき、前記第1オブジェクトの位置を前記2次元空間のX軸方向およびY軸方向のいずれか一方に補正する位置補正手段をさらに備える、請求項1記載のゲーム装置。
  3. 前記多角形は正方形を含む、請求項1または2記載のゲーム装置。
  4. 前記三角形は前記2次元空間のX軸方向およびY軸方向のそれぞれに平行な辺を有する直角三角形である、請求項1ないし3のいずれかに記載のゲーム装置。
  5. 前記正方形の第2オブジェクトが回転したとき、前記2次元空間のY軸方向の最大値および最小値となる前記正方形の頂点を基準点として選択する、請求項3または4記載のゲーム装置。
  6. 2次元空間内に存在する第1オブジェクトと第2オブジェクトとの当りを判定するゲーム装置のゲームプログラムであって、
    前記ゲーム装置のプロセサに、
    前記2次元空間内を自由に移動する第1オブジェクトを発生させる第1オブジェクト発生ステップ、
    前記2次元空間内で回転する多角形の第2オブジェクトを発生させる第2オブジェクト発生ステップ、
    前記第2オブジェクトが回転するとき、当該第2オブジェクトを複数の三角形を用いて分解する分解ステップ、
    前記第1オブジェクトが存在する位置に基づいていずれか1つの三角形を決定する決定ステップ、および
    前記第1オブジェクトが前記決定ステップによって決定された1つの三角形の斜辺であり、当該斜辺から当該三角形の外方向に所定距離離れていなければ当りであると判定する当り判定ステップ、を実行させる、ゲームプログラム。
  7. 前記当り判定ステップが当りであると判定したとき、前記第1オブジェクトの位置を前記2次元空間のX軸方向およびY軸方向のいずれか一方に補正する位置補正ステップをさらに実行させる、請求項6記載のゲームプログラム。
  8. 前記多角形は正方形を含み、
    前記当り判定ステップは、前記正方形の第2オブジェクトが回転したとき、前記2次元空間のY軸方向の最大値および最小値となる前記正方形の頂点を基準点として選択する基準点選択ステップを含む、請求項6または7記載のゲームプログラム。
  9. 前記三角形は前記2次元空間のX軸方向およびY軸方向のそれぞれに平行な辺を有する直角三角形である、請求項6ないし7のいずれかに記載のゲームプログラム。
JP2003271701A 2003-07-08 2003-07-08 ゲーム装置およびゲームプログラム Expired - Fee Related JP4117229B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003271701A JP4117229B2 (ja) 2003-07-08 2003-07-08 ゲーム装置およびゲームプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003271701A JP4117229B2 (ja) 2003-07-08 2003-07-08 ゲーム装置およびゲームプログラム

Publications (2)

Publication Number Publication Date
JP2005027921A true JP2005027921A (ja) 2005-02-03
JP4117229B2 JP4117229B2 (ja) 2008-07-16

Family

ID=34209481

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003271701A Expired - Fee Related JP4117229B2 (ja) 2003-07-08 2003-07-08 ゲーム装置およびゲームプログラム

Country Status (1)

Country Link
JP (1) JP4117229B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005095387A (ja) * 2003-09-25 2005-04-14 Dimps:Kk ゲーム装置及びコンピュータを機能させるためのプログラム
JP2012247832A (ja) * 2011-05-25 2012-12-13 Sony Computer Entertainment Inc 情報処理装置、情報処理方法、情報処理プログラム、情報処理プログラムを記憶したコンピュータ読み取り可能な記録媒体、厚み領域設定装置、厚み領域設定方法、厚み領域設定プログラム、厚み領域設定プログラムを記憶したコンピュータ読み取り可能な記録媒体、仮想空間における面に関するデータ構造

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0558994U (ja) * 1991-11-05 1993-08-03 周治 松村 ダンパ装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005095387A (ja) * 2003-09-25 2005-04-14 Dimps:Kk ゲーム装置及びコンピュータを機能させるためのプログラム
JP2012247832A (ja) * 2011-05-25 2012-12-13 Sony Computer Entertainment Inc 情報処理装置、情報処理方法、情報処理プログラム、情報処理プログラムを記憶したコンピュータ読み取り可能な記録媒体、厚み領域設定装置、厚み領域設定方法、厚み領域設定プログラム、厚み領域設定プログラムを記憶したコンピュータ読み取り可能な記録媒体、仮想空間における面に関するデータ構造
US9495485B2 (en) 2011-05-25 2016-11-15 Sony Corporation Information processing device, information processing method, computer readable storage medium storing information processing program, thickness area setting device, thickness area setting method, and computer readable storage medium storing thickness area setting program

Also Published As

Publication number Publication date
JP4117229B2 (ja) 2008-07-16

Similar Documents

Publication Publication Date Title
US8506398B2 (en) Game apparatus, game system, and storing medium storing game program in which display is divided between players
US8419538B2 (en) Storage medium storing game program, game apparatus and game control method
US7374490B2 (en) Game system using touch panel input
US8094153B2 (en) Game apparatus, storage medium storing a game program, and game controlling method
US7927215B2 (en) Storage medium storing a game program, game apparatus and game controlling method
US7425175B2 (en) Match game program
EP1850319A2 (en) Storage medium storing sound output program, sound output apparatus and sound output control method
EP1825895A2 (en) Game apparatus and storage medium storing game program
JP2004329517A (ja) ゲーム装置およびゲームプログラム
US20060258448A1 (en) Storage medium storing game program, game apparatus and game controlling method
JP4167710B2 (ja) ビデオゲーム処理装置、およびビデオゲーム処理プログラム
JP2006068027A (ja) ゲーム装置およびゲームプログラム
US8851986B2 (en) Game program and game apparatus
JP2007244536A (ja) ビデオゲーム処理装置、ビデオゲーム処理方法、およびビデオゲーム処理プログラム
US7229349B2 (en) Multi-player game system and multi-player game program
US8062110B2 (en) Storage medium storing game program and game apparatus
US20050202868A1 (en) Game apparatus and game program
JP4117229B2 (ja) ゲーム装置およびゲームプログラム
EP1854520B1 (en) Game program and game apparatus
JP4143590B2 (ja) 3次元画像処理装置、ゲーム装置、3次元画像処理プログラムおよびゲームプログラム
JP4287764B2 (ja) 競争ゲーム装置および競争ゲームプログラム
JP2005204755A (ja) ゲームプログラム
JP4150577B2 (ja) ゲームレベル選択プログラム、ゲーム機、ゲームレベル選択方法およびゲームシステム
JP2005013262A (ja) ゲーム装置およびゲームプログラム
JP2008200538A (ja) 競争ゲーム装置および競争ゲームプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080121

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080325

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080421

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110425

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4117229

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110425

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110425

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110425

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120425

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130425

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130425

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140425

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees