図面を参照して、本発明の一実施形態に係るゲームプログラムを実行するゲーム装置について説明する。本発明のゲームプログラムは、表示装置に表示可能な任意のコンピュータシステムで実行されることによって適用することができるが、情報処理装置(ゲーム装置)の一例としてゲーム装置1で実行されるゲームプログラムを用いて説明する。なお、図1は、本発明のゲームプログラムを実行するゲーム装置1の外観図である。ここでは、ゲーム装置1の一例として、携帯ゲーム装置を示す。
図1において、ゲーム装置1は、第1のLCD(Liquid Crystal Display:液晶表示装置)11および第2のLCD12を含む。ハウジング13は、上側ハウジング13aと下側ハウジング13bとによって構成されており、第1のLCD11は上側ハウジング13aに収納され、第2のLCD12は下側ハウジング13bに収納される。第1のLCD11および第2のLCD12の解像度は、いずれも256dot×192dotである。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を利用することができる。また、第1のLCD11および第2のLCD12は、任意の解像度のものを利用することができる。
上側ハウジング13aには、後述する1対のスピーカ(図2の30a、30b)からの音を外部に放出するための音抜き孔18a、18bが形成されている。
下側ハウジング13bには、入力装置として、十字スイッチ14a、スタートスイッチ14b、セレクトスイッチ14c、Aボタン14d、Bボタン14e、Xボタン14f、Yボタン14g、電源スイッチ14h、Lボタン14L、およびRボタン14Rが設けられている。また、さらなる入力装置として、第2のLCD12の画面上にタッチパネル15が装着されている。また、下側ハウジング13bには、メモリカード17やスティック16を収納するための挿入口も設けられている。
タッチパネル15としては、例えば抵抗膜方式や光学式(赤外線方式)や静電容量結合式等、任意の方式のものを利用することができる。タッチパネル15は、その表面をスティック16で触れると、その接触位置に対応する座標データを出力する機能を有するポインティングデバイスの一例である。なお、以下ではプレイヤがタッチパネル15をスティック16で操作するものとして説明を行うが、スティック16の代わりにペン(スタイラスペン)や指でタッチパネル15を操作することももちろん可能である。本実施形態では、タッチパネル15として、第2のLCD12の解像度と同じく256dot×192dotの解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル15の解像度と第2のLCD12との解像度が一致している必要はない。
メモリカード17は、ゲームプログラム等を記録した記録媒体であり、下部ハウジング13bに設けられた挿入口に着脱自在に装着される。
次に、図2を参照して、ゲーム装置1の内部構成を説明する。なお、図2は、ゲーム装置1の内部構成を示すブロック図である。
図2において、ハウジング13に収納される電子回路基板20には、CPUコア21が実装される。CPUコア21には、バス22を介して、コネクタ23が接続されるとともに、入出力インターフェース回路(図面ではI/F回路と記す)25、第1GPU(Graphics Processing Unit)26、第2GPU27、RAM24、LCDコントローラ31、およびワイヤレス通信部33が接続される。コネクタ23には、メモリカード17が着脱自在に接続される。メモリカード17は、ゲームプログラムを記憶するROM17aと、バックアップデータを書き換え可能に記憶するRAM17bを搭載する。メモリカード17のROM17aに記憶されたゲームプログラムは、RAM24にロードされ、RAM24にロードされたゲームプログラムがCPUコア21によって実行される。RAM24には、ゲームプログラムの他にも、適宜、CPUコア21がプログラムを実行して得られる一時的なデータを生成するためのデータ等が記憶される。I/F回路25には、タッチパネル15、右スピーカ30a、左スピーカ30b、および図1の十字スイッチ14aやAボタン14d等から成る操作スイッチ部14が接続される。右スピーカ30aおよび左スピーカ30bは、音抜き孔18aおよび18bの内側にそれぞれ配置される。
第1GPU26には、第1VRAM(Video RAM)28が接続され、第2GPU27には、第2VRAM29が接続される。第1GPU26は、CPUコア21からの指示に応じて、RAM24に記憶されている表示画像を生成するためのデータに基づいて第1の表示画像を生成し、第1VRAM28に描画する。第2GPU27は、同様にCPUコア21からの指示に応じて第2の表示画像を生成し、第2VRAM29に描画する。第1VRAM28および第2VRAM29は、LCDコントローラ31に接続されている。
LCDコントローラ31は、レジスタ32を含む。レジスタ32は、CPUコア21からの指示に応じて0または1の値を記憶する。LCDコントローラ31は、レジスタ32の値が0の場合は、第1VRAM28に描画された第1のゲーム画像を第1のLCD11に出力し、第2VRAM29に描画された第2のゲーム画像を第2のLCD12に出力する。また、レジスタ32の値が1の場合は、第1VRAM28に描画された第1のゲーム画像を第2のLCD12に出力し、第2VRAM29に描画された第2のゲーム画像を第1のLCD11に出力する。
ワイヤレス通信部33は、他のゲーム装置のワイヤレス通信部33との間で、ゲーム処理に利用されるデータやその他のデータをやりとりする機能を有しており、一例としてIEEE802.11の無線LAN規格に則った無線通信機能を提供する。そして、ワイヤレス通信部33は、受信したデータをCPUコア21に出力する。また、ワイヤレス通信部33は、CPUコア21から指示されたデータを他のゲーム装置へ送信する。なお、TCP/IP(Transmission Control Protocol/Internet Protocol)等のプロトコルや所定のブラウザをワイヤレス通信部33やゲーム装置1内の記憶部に実装することによって、ゲーム装置1は、ワイヤレス通信部33を介してインターネット等のネットワークとの接続が可能となる。そして、ゲーム装置1は、ネットワーク上で公開されている文書や画像等のデータを第1のLCD11および第2のLCD12で閲覧することができる。
なお、本発明のゲームプログラムは、メモリカード17等の外部記憶媒体を通じてコンピュータシステムに供給されるだけでなく、有線または無線の通信回線を通じてコンピュータシステムに供給されてもよい。また、ゲームプログラムは、コンピュータシステム内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、上記不揮発性半導体メモリに限らず、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
次に、図3〜図11を参照して、ゲーム装置1で実行されるゲームプログラムによる具体的な処理動作を説明する前に、当該処理動作によって第1のLCD11および第2のLCD12に表示される表示形態例や処理例等について説明する。なお、図3は、第1のLCD11および第2のLCD12に表示される画面表示例を示す図である。図4は、第2のLCD12に表示されるゲーム画像を得るためのドラム座標系およびタッチパネル15との位置関係を説明するための概略斜視図である。図5は、ドラム座標系とタッチパネル15との位置関係を説明するための側面図である。図6は、ゲーム処理を行う平面座標系を説明するための概略斜視図である。図7は、プレイヤキャラクタPCに設定される会話範囲A1を説明するための概略斜視図である。図8は、プレイヤキャラクタPCに設定される呼びかけ範囲A2を説明するための概略斜視図である。図9は、プレイヤキャラクタPCに設定されるアクション範囲A3を説明するための概略斜視図である。図10は、アクションの内容の一例を説明するための図である。図11は、プレイヤキャラクタPCの移動アクションを説明するための図である。
図3において、ゲーム装置1の第1のLCD11および第2のLCD12には、それぞれゲーム画像が表示される。本発明に関わるゲーム画像は、主に第2のLCD12に表示されるため、以下、第2のLCD12に表示される画像を単にゲーム画像と記載する。
第2のLCD12には、プレイヤキャラクタPCおよびノンプレイヤキャラクタNPCの他に、オブジェクトOBJがゲーム空間に設定された地形オブジェクトの一例であるドラムフィールドFD上に配置されてゲーム画像として表現される。図3に示したゲーム画像例では、1つのプレイヤキャラクタPCおよびノンプレイヤキャラクタNPCと6つのオブジェクトOBJ1〜OBJ6とが表示されている。ドラムフィールドFDは、その円筒曲面の一部がゲーム画像として表示される円筒形状のゲームフィールドであり、ゲーム空間内でその円筒軸が水平になるように設置される。プレイヤキャラクタPC、ノンプレイヤキャラクタNPC、およびオブジェクトOBJは、それぞれドラムフィールドFDの円筒曲面上に配置される。例えば、プレイヤキャラクタPCは、ゲーム空間内でドラムフィールドFDの円筒曲面上に沿って移動可能なキャラクタである。また、ドラムフィールドFD後方には、背景BI(例えば、空)が表示される。なお、図3で示した例では、ドラムフィールドFDの側方から円筒曲面を注視点とし、当該円筒曲面の一部を描画範囲とした仮想カメラから透視投影によって得たゲーム画像を示している。
図4において、上記ゲーム画像を得るための仮想カメラCおよびタッチパネル15が配置された仮想3次元ゲーム空間の様子が表示されている。ドラム座標系においては、ゲーム空間にドラムフィールドFD、背景BI、および仮想壁Wが設定される。仮想壁Wは、その一例としてドラムフィールドFDの円筒軸に対して平行に設定された仮想的な透過平面である。仮想カメラCは、ドラムフィールドFDの円筒曲面の側方に配置される。そして、仮想カメラCのカメラ位置を基準とした所定のクリップ面に挟まれた視体積に設定されるゲーム空間がゲーム画像として第2のLCD12に表示される。図4に示した例では、仮想カメラCからドラムフィールドFDの円筒曲面の一部を透視投影した画像IM1と、その後方の仮想壁Wの一部を透過してさらに後方に描画された背景BIを透視投影した画像IM2とによって、ゲーム画像が構成される。このとき、後述する位置座標をドラム座標系に変換した位置に基づいて各オブジェクトの描画モデルがドラムフィールドFD上に配置され(図4におけるプレイヤキャラクタPCおよびオブジェクトOBJ)、視体積内に含まれる描画モデルも第2のLCD12に表示される。そして、手前側(仮想カメラC側)クリップ面にタッチパネル15が配置されたようにタッチパネル座標系が設定され、タッチパネル15からの入力座標が仮想カメラCの視線方向に沿ってゲーム空間内に透視投影される。
図5において、プレイヤがタッチパネル15をタッチしたタッチ入力座標がゲーム空間内に透視投影される様子を示している。本実施例においては、プレイヤがタッチ操作した対象のオブジェクトを判定するために簡易モデルを用いる。ここで、簡易モデルとは、ゲーム画像を得るための描画モデルをそれぞれ簡素化したモデルであり、基本立体の種別とその大きさとによって定義される。各オブジェクトの簡易モデルは、後述する位置座標をドラム座標系に変換した位置に基づいてドラムフィールドFD上に配置される。例えば、図5の例では、プレイヤキャラクタPCは、円柱の上部に球を乗せた簡易モデルPCeとしてその位置座標を変換したドラムフィールドFD上の位置に配置されている。また、オブジェクトOBJは、円柱の上部に三角錐を乗せた簡易モデルOBJeとしてその位置座標を変換したドラムフィールドFD上の位置に配置されている。
例えば、プレイヤがタッチパネル15をスティック16aの位置でタッチ操作したとき、そのタッチ操作で得られるタッチ入力座標を仮想カメラCから放射状に延伸する視線方向に沿ってゲーム空間内に透視投影した直線(図5では、破線で示す)が簡易モデルPCeと交差または接触するとする。このとき、簡易モデルPCeに該当するプレイヤキャラクタPCがプレイヤによってタッチ操作されたと判断する。さらに、上記直線が簡易モデルPCeを通過してドラムフィールドFDと交差する交点TPDaを、プレイヤによってタッチ操作されたドラム座標系フィールド上の点であると判断する。
また、プレイヤがタッチパネル15をスティック16bの位置でタッチ操作したとき、そのタッチ操作で得られるタッチ入力座標を仮想カメラCの視線方向に沿ってゲーム空間内に透視投影した直線が簡易モデルOBJeと交差または接触するとする。このとき、簡易モデルOBJeに該当するオブジェクトOBJがプレイヤによってタッチ操作されたと判断する。さらに、上記直線が簡易モデルOBJeを通過してドラムフィールドFDと交差する交点TPDbを、プレイヤによってタッチ操作されたドラム座標系フィールド上の点であると判断する。
また、プレイヤがタッチパネル15をスティック16cの位置でタッチ操作したとき、そのタッチ操作で得られるタッチ入力座標を仮想カメラCの視線方向に沿ってゲーム空間内に透視投影した直線が直接ドラムフィールドFDと交差するとする。このとき、上記直線がドラムフィールドFDと交差する交点TPDcを、プレイヤによってタッチ操作されたドラム座標系フィールド上の点であると判断する。なお、この場合、プレイヤによってタッチ操作されたキャラクタやオブジェクトがないと判断する。
また、プレイヤがタッチパネル15をスティック16dの位置でタッチ操作したとき(つまり背景が表示されたゲーム画像上をタッチ)、そのタッチ操作で得られるタッチ入力座標を仮想カメラCの視線方向に沿ってゲーム空間内に透視投影した直線が直接仮想壁Wと交差する。このとき、上記直線が仮想壁Wと交差する交点TPDdを、プレイヤによってタッチ操作されたドラム座標系の点であると判断する。なお、この場合も、プレイヤによってタッチ操作されたキャラクタやオブジェクトがないと判断する。
このように、プレイヤがゲームフィールドを示すドラムフィールドFD以外の背景BIを示すゲーム画像をタッチ操作したとき、仮想壁Wとタッチ入力座標をゲーム空間内に透視投影した直線との交点がタッチ操作されたドラム座標系の点であると判断する。つまり、本実施例では、第2のLCD12に表示されたゲーム画像において、当該第2のLCD12を覆うタッチパネル15のどの位置をプレイヤがタッチ操作しても、必ず当該タッチ操作に対応するゲーム画像のドラム座標系における点として設定される。
ここで、仮想壁Wの配置について説明する。図4および図5に示した仮想壁Wは、仮想カメラCから見てドラムフィールドFDの地平線の後方に配置され、当該仮想カメラCの視線方向に対して垂直になるように設けられている。そして、仮想カメラCがドラムフィールドFDに対して移動したとき、仮想壁Wもその移動に応じて当該仮想カメラCの視線方向に対して垂直になるように移動する。例えば、プレイヤキャラクタPCの位置が注視点となるように仮想カメラCが配置される場合、プレイヤキャラクタPCがドラムフィールドFD上を移動すると仮想カメラCもドラムフィールドFDに対して移動する。このとき、仮想壁Wは仮想カメラCとの位置関係を維持した状態で移動する。換言すれば、仮想カメラC、タッチパネル15、および仮想壁Wの位置を固定した状態で、ドラムフィールドFDがプレイヤキャラクタPCの移動に応じて円筒軸を中心に回転していることになる。また、プレイヤキャラクタPCがドラムフィールドFD上を移動しても、当該プレイヤキャラクタPCと仮想壁Wとの距離が一定に保たれる。後述により明らかとなるが、プレイヤが背景BIを示すゲーム画像をタッチ操作したとき、当該タッチ操作した位置に最も近い仮想壁WとドラムフィールドFDとの交線上の位置が常にプレイヤキャラクタPCの移動目標となる。したがって、プレイヤが背景BIをタッチ操作し続けると、距離が一定に保たれた移動目標に向かってプレイヤキャラクタPCが常に移動し続けることになる。
なお、仮想壁Wは、仮想カメラCから見たドラムフィールドFDの地平線で当該ドラムフィールドFDと交差するように配置してもかまわない。後述により明らかとなるが、この場合、プレイヤが背景BIを示すゲーム画像をタッチ操作したとき、当該タッチ操作した位置に最も近いドラムフィールドFDの地平線上の位置が常にプレイヤキャラクタPCの移動目標となる。また、仮想壁Wを透過した後方に描画された背景BIを透視投影した画像IM2が上述したゲーム画像の背景(空)となるとしたが、仮想壁Wに直接背景を描画(つまり、背景BIと仮想壁Wとが同一)してもかまわない。また、仮想壁Wは、仮想カメラCの視線方向に対して垂直に配置されなくてもよく、プレイヤが背景BIをタッチ操作した際にそのタッチ入力座標をゲーム空間内に透視投影した直線が交差するように設置すれば、どのような角度に配置してもかまわない。
図6において、ゲーム装置1は、キャラクタの移動やアクションの動作を行う際、ドラム座標系を平面座標系に変換してそれらの処理を行う。そして、平面座標系で上記処理を行った後、各位置座標を再度ドラム座標系に変換してドラムフィールドFDに描画モデルを配置して、第2のLCD12に表示されるゲーム画像を生成する(図4参照)。
例えば、ドラムフィールドFDの円筒軸方向が平面座標系におけるX軸方向に変換される。また、ドラムフィールドFDの円筒曲面の円周方向が平面座標系におけるZ軸方向に変換される。さらに、ドラムフィールドFDの円筒曲面から離れる円筒軸と垂直な放射方向(重力方向)が平面座標系におけるY軸方向に変換される。これらの変換によって、ドラムフィールドFDの円筒曲面をY=0の平面に伸ばしたような平面フィールドFPが平面座標系に設定される。本実施例においては、ドラムフィールドFDの円筒軸方向の座標をそのまま平面座標系におけるX軸座標に変換する。また、ドラムフィールドFDの円筒曲面の円周長さの全周あるいは一部が平面座標系におけるZ軸方向の長さとなるように、ドラムフィールドFDの円周方向の座標を平面座標系におけるZ軸座標に変換する。
仮想壁Wは、図5に示すようにタッチパネル15(クリップ面)に対して平行にドラムフィールドFDの円筒曲面から起立するように当該円筒曲面と交わって設置されている。したがって、仮想壁Wと円筒曲面との交線を上記座標変換により平面座標系に変換した直線(Y=0、Z=Zw(一定値))を平面フィールドFPとの交線として、Y軸方向へ起立したZ=Zw(一定値)の平面が、仮想壁Wに対応する平面フィールドWpとして平面座標系に設定される。そして、ドラム座標系における仮想壁W上の座標は、平面フィールドWp上の座標に変換される。具体的には、仮想壁Wに沿った円筒軸方向の座標を平面座標系におけるX軸座標に変換する。また、仮想壁Wに沿った円筒軸に垂直な方向でドラムフィールドFDとの交線からの長さを平面座標系におけるY軸座標に変換する。さらに、仮想壁W上の座標は、平面座標系のZ軸座標Zwに変換する。
ここで、図6に示すように、平面フィールドFP上には、後述するオブジェクトデータ(位置座標)に応じて各オブジェクトが配置される。例えば、図6の例では、プレイヤキャラクタPCが位置座標PCP(Xpc、Ypc、Zpc)の平面フィールドFP上に配置され、オブジェクトOBJが位置座標OBJP(Xobj、Yobj、Zobj)の平面フィールドFP上に配置されている。また、上述したプレイヤによってタッチ操作されたドラムフィールドFD上の交点TPDaは、上記座標変換によって交点TPPaに変換される。上述したプレイヤによってタッチ操作されたドラムフィールドFD上の交点TPDbは、上記座標変換によって交点TPPbに変換される。上述したプレイヤによってタッチ操作されたドラムフィールドFD上の交点TPDcは、上記座標変換によって交点TPPcに変換される。
また、上述したプレイヤによってタッチ操作された仮想壁W上の交点TPDdは、上記座標変換によって平面フィールドWp上の交点TPPdに変換した後、Y=0(つまり、平面フィールドWpに沿ってY軸負方向に移動)とした目標点TGに変換する。このように、仮想壁W上に設定されたタッチ操作に対応する点は、ドラムフィールドFD上の点と同じ平面フィールドFP上の点に変換される。具体的には、仮想壁W上に設定されたタッチ操作に対応する点は、当該仮想壁Wを座標変換した平面フィールドWpに沿った平面フィールドFP上の最も近い点に変換される。したがって、本実施例では、第2のLCD12に表示されたゲーム画像において、当該第2のLCD12を覆うタッチパネル15のどの位置をプレイヤがタッチ操作しても、必ず当該タッチ操作に対応する平面フィールドFP上の点が設定される。
なお、上述した説明では、Y軸方向へ起立したZ=Zw(一定値)の平面を、仮想壁Wに対応する平面フィールドWpとして平面座標系に設定したが、他の平面を平面フィールドWpに設定してもかまわない。例えば、Y軸方向に対して斜めに起立した平面を仮想壁Wに対応する平面フィールドWpとして平面座標系に設定してもかまわない。Y軸方向と平行に平面フィールドWpを設定しなくても、同様に仮想壁W上の点を平面フィールドWp上の点に座標変換し、当該平面フィールドWp上の点を平面フィールドWpに沿った平面フィールドFP上の最も近い点に変換することができる。
図7において、プレイヤキャラクタPCには、会話範囲A1が設定されている。会話範囲A1は、プレイヤキャラクタPCの正面から左右所定角度ずつ所定の距離までの扇形状で平面フィールドFP上に設定される。例えば、会話範囲A1は、プレイヤキャラクタPCの正面から左右θ1ずつ距離L1までの扇形状で設定される。この会話範囲A1内にアクション対象(ノンプレイヤキャラクタNPC)が存在する場合、プレイヤキャラクタPCは、その対象(ノンプレイヤキャラクタNPC)と会話する動作(会話アクション)を行う。
図8において、プレイヤキャラクタPCには、呼びかけ範囲A2が設定されている。呼びかけ範囲A2は、プレイヤキャラクタPCの正面から左右所定角度ずつ所定の距離までの扇形状で平面フィールドFP上に設定される。例えば、呼びかけ範囲A2は、プレイヤキャラクタPCの正面から左右θ2(θ1≦θ2)ずつ距離L2(L1<L2)までの扇形状で設定される。この呼びかけ範囲A2内にアクション対象(ノンプレイヤキャラクタNPC)が存在する場合、プレイヤキャラクタPCは、その対象(ノンプレイヤキャラクタNPC)に呼びかける動作(呼びかけアクション)を行う。
図9において、プレイヤキャラクタPCには、アクション範囲A3が設定されている。アクション範囲A3は、プレイヤキャラクタPCの正面から左右所定角度ずつ所定の距離までの扇形状で平面フィールドFP上に設定される。例えば、アクション範囲A3は、プレイヤキャラクタPCの正面から左右θ3ずつ距離L3までの扇形状で設定される。このアクション範囲A3内にアクション対象(オブジェクトOBJ、ノンプレイヤキャラクタNPC、平面フィールドFP)が存在する場合、プレイヤキャラクタPCは、その対象(オブジェクトOBJ、ノンプレイヤキャラクタNPC、平面フィールドFP)やプレイヤキャラクタPCが所持している装備に応じた動作を行う。なお、アクション範囲A3は、プレイヤキャラクタPCの正面に扇形状で設定されるが、対象となるオブジェクトの種別や装備に応じて角度θ3および距離L3を変化させてもかまわない。
図10において、アクション範囲A3内に存在するタッチ操作された対象とプレイヤキャラクタPCの装備との組み合わせで決定される動作の一例を示している。このような動作は、プログラム処理の分岐によって実現されるが、これらの組み合わせに対する動作を記載したテーブルを用いて処理してもかまわない。例えば、プレイヤキャラクタPCがスコップを装備しており、タッチ操作された対象がアクション範囲A3内に存在する地面(平面フィールドFP)である場合、プレイヤキャラクタPCは、スコップを用いて地面(平面フィールドFP)を掘る動作を行う。また、プレイヤキャラクタPCが斧を装備しており、タッチ操作された対象がアクション範囲A3内に存在する木(オブジェクトOBJ)である場合、プレイヤキャラクタPCは、斧を用いて木(オブジェクトOBJ)を切る動作を行う。さらに、プレイヤキャラクタPCが釣竿を装備しており、タッチ操作された対象がアクション範囲A3内に存在する川(平面フィールドFP)である場合、プレイヤキャラクタPCは、釣竿を用いて川(平面フィールドFP)に向かって釣りをする動作を行う。このようにプレイヤキャラクタPCの装備(アイテム)とアクション範囲A3内に存在するタッチ操作された対象との組み合わせに応じて、特別な動作を行う当該対象をアイテムのアクション対象と記載する。また、プレイヤキャラクタPCの装備によらず、タッチ操作された対象がアクション範囲A3内に存在するポスト(オブジェクトOBJ)である場合、プレイヤキャラクタPCは、必ずポスト(オブジェクトOBJ)を開ける動作を行う。このようにプレイヤキャラクタPCの装備とは無関係にアクション範囲A3内に存在するタッチ操作された対象に対して共通の動作を通常アクションと記載し、当該通常アクションを行う対象を通常アクション対象と記載する。なお、図10の例においては、アクション範囲A3内に存在する対象をタッチ操作したとして説明したが、アクション範囲A3内に対象が存在するプレイヤキャラクタPCをタッチ操作した場合も、この組み合わせに応じてプレイヤキャラクタPCが同様の動作を行ってもかまわない。
このように、対象と装備との組み合わせに応じてプレイヤキャラクタPCの動作が決定されるが、当該組み合わせに応じてアクション範囲A3の大きさを変更する方が好ましい。例えば、プレイヤキャラクタPCがスコップを用いて動作する対象の範囲に対して、釣竿を用いて動作するアクション範囲A3の距離L3を長く設定する方が自然なアクションとなる。このように、装備の特性や対象の種別、キャラクタの特性等に応じて、アクション範囲A3の大きさを変化させてもかまわない。
一方、アクション範囲A3内に存在する対象の種別と装備によっては、プレイヤキャラクタPCが特別な動作を行わない組み合わせもある。例えば、プレイヤキャラクタPCがスコップを装備しており、タッチ操作された対象がアクション範囲A3内に存在する木(オブジェクトOBJ)である場合、プレイヤキャラクタPCは、移動動作を行う。また、プレイヤキャラクタPCが斧を装備しており、タッチ操作された対象がアクション範囲A3内に存在する地面や川(平面フィールドFP)である場合、プレイヤキャラクタPCは、移動動作を行う。さらに、プレイヤキャラクタPCが釣竿を装備しており、タッチ操作された対象がアクション範囲A3内に存在する地面(平面フィールドFP)や木および岩(オブジェクトOBJ)である場合、プレイヤキャラクタPCは、移動動作を行う。
図11において、タッチ操作された対象が上述した特別な動作や通常アクションを行わない組み合わせとなる場合、プレイヤキャラクタPCは、当該タッチ操作された平面フィールドWp上の交点TPP(図6参照)を目標点TGとして、その目標点TGに向かって所定の速度で移動する。ここで、タッチ操作された対象が仮想壁Wである場合、上述したようにタッチ入力座標が平面フィールドFP上の目標点TGに変換されているため、プレイヤキャラクタPCは、その目標点TGに向かって移動する。つまり、プレイヤがゲームフィールドを示すドラムフィールドFD以外の背景BIを示すゲーム画像をタッチ操作したとき、仮想壁Wとの交点に基づいて目標点TGが設定されるため、第2のLCD12を覆うタッチパネル15のどの位置をプレイヤがタッチ操作しても、必ず当該タッチ操作に対応する目標点TGが設定可能になる。したがって、ゲーム装置1は、プレイヤのタッチ操作に応じて、プレイヤキャラクタPCに対して何らかの動作制御が常に可能な状態となる。
そして、ゲーム装置1は、平面座標系でこれらの処理を行った後、各位置座標を再度ドラム座標系に変換してドラムフィールドFDにそれぞれ対応する描画モデルを配置する(図4参照)。そして、ドラムフィールドFDに描画モデルを配置して仮想カメラCによって捉えた状態を描画して、ゲーム画像を生成する。
次に、図12〜図18を参照して、ゲーム装置1で実行されるゲームプログラムによる具体的な処理動作について説明する。なお、図12は、当該ゲームプログラムを実行することによってゲーム装置1がゲーム処理を行う前半の動作を示すフローチャートである。図13は、当該ゲームプログラムを実行することによってゲーム装置1がゲーム処理を行う後半の動作を示すフローチャートである。図14は、図12におけるステップ54および図13におけるステップ64のドラム座標系の位置座標に変換する処理について詳細な動作を示すサブルーチンである。図15は、図13におけるステップ61のドラム座標系の交点座標を平面座標系に変換する処理について詳細な動作を示すサブルーチンである。図16は、図13におけるステップ62のアクション処理について前半の詳細な動作を示すサブルーチンである。図17は、図13におけるステップ62のアクション処理について後半の詳細な動作を示すサブルーチンである。図18は、図12および図13に基づいた処理動作でRAM24に記憶される各種データの一例を示す図である。なお、これらの処理を実行するためのプログラムは、ROM17aに格納されたゲームプログラムに含まれており、ゲーム装置1の電源がオンになったときに、ROM17aからRAM24に読み出されて、CPUコア21によって実行される。
まず、ゲーム装置1の電源(図示せず)がONされると、CPUコア21によってブートプログラム(図示せず)が実行され、これによりメモリカード17に格納されているゲームプログラムがRAM24にロードされる。当該ロードされたゲームプログラムがCPUコア21で実行されることによって、図12および図13に示すステップ(図12〜図17では「S」と略称する)が実行される。
図12において、CPUコア21は、ゲームの初期設定を行って(ステップ50)、処理を次のステップに進める。例えば、CPUコア21がステップ50で行う初期設定として、ゲーム空間に登場させるオブジェクトに関するデータを設定する。図18に示すように、初期設定において、RAM24には、ゲーム空間に各オブジェクトを配置するためのオブジェクトデータベースとして、各オブジェクトに対応するオブジェクトデータDO1〜DO5…等が記憶される。各オブジェクトデータDO1〜DO5…は、キャラクタID、描画モデル識別記号、簡易モデル種別と大きさ、および位置座標を示すデータをそれぞれ含んでいる。キャラクタIDは、オブジェクト毎に固有に付与される番号であり、この番号によって当該オブジェクトの種別(プレイヤキャラクタ、ノンプレイヤキャラクタ、その他のオブジェクト等)を区別することができる。描画モデル種別記号は、ゲーム画像を生成する際にドラムフィールドFD上に配置するオブジェクト毎の描画モデル画像データDI1を指示する記号である。簡易モデルの種別および大きさは、プレイヤがタッチ操作した対象のオブジェクトを判定するために用いられる簡易モデルデータDI2の種別およびその大きさをオブジェクト毎に指示する記号である。位置座標は、平面座標系において配置される各オブジェクトの位置を3次元座標(X、Y、Z)で示すデータである。さらに、ゲーム画像を生成したりタッチ操作の対象を検出したりするための画像/モデルデータとして、描画モデル画像データDI1、簡易モデルデータDI2、および背景画像データDI3等が適宜記憶される。ここで、簡易モデルデータDI2は、描画モデル画像データDI1と比較すると極めて単純な円柱、球、円錐等の立体モデルであり、オブジェクトデータDOに含まれる簡易モデルの種別によって選択される。そして、オブジェクトデータDOに含まれる簡易モデルの大きさに応じて、その立体モデルの大きさを変化させて配置される。
図12に戻り、CPUコア21は、ユーザの操作に応じたタッチパネル15からのタッチ入力を待つ(ステップ51)。そして、タッチ入力があると(ステップ51でYes)、CPUコア21は、現在タッチパネル15をタッチしている接触位置を示すタッチパネル座標系の座標をタッチ入力座標DC1としてRAM24に記憶し(ステップ52)、処理を次のステップに進める。
例えば、図18に示すように、タッチパネル15から入力するタッチパネル座標系の座標データは、適時、RAM24にタッチ入力座標DC1として記憶されている。また、RAM24には、タッチ入力座標DC1に対応するドラム座標系の位置データとして交点座標DC2および当該交点座標DC2に対応する平面座標系の位置データとして交点座標DC3等が適宜記憶される。
図12に戻り、CPUコア21は、オブジェクトデータベースのオブジェクトデータDOに基づいて、ゲーム空間に配置されているオブジェクト毎に平面座標系の位置座標および簡易モデル(種別、大きさ)を取得する(ステップ53)。そして、CPUコア21は、上記ステップ53で取得した各位置座標を平面座標系からドラム座標系に変換し(ステップ54)、処理を次のステップに進める。以下、図14を参照して、ステップ54における詳細な処理について説明する。
図14において、CPUコア21は、平面座標系において、予め設定されているZ軸方向の取りうる範囲に対して、各位置座標のZ軸座標の比率をそれぞれ算出し(ステップ71)、処理を次のステップに進める。ここで、Z軸方向の取りうる範囲とは、ドラムフィールドFD(図5参照)の円筒曲面の全部または一部を平面に伸ばしたような平面フィールドFP(図6参照)のZ軸方向長さに相当し、すなわち、ドラムフィールドFDの円筒曲面の円周長さの全周あるいは一部に相当する平面座標系の長さである。
次に、CPUコア21は、上記ステップ71で算出した各比率に基づいて、ドラムフィールドFDの円周方向の対応座標をそれぞれ算出し(ステップ72)、処理を次のステップに進める。例えば、上記Z軸方向の取りうる範囲が円筒曲面の円周長さ全周を示している場合、上記比率を全周に対する円周長さの比率であるとして、上記比率に対する円周長さを算出する。そして、ドラムフィールドFDの円周方向の原点座標を基準として、その円周長さの位置をドラムフィールドFDの円周方向の対応座標とする。また、上記Z軸方向の取りうる範囲が円筒曲面の円周長さの一部を示している場合、上記比率をその一部の円周に対する円周長さの比率であるとして、上記比率に対する円周長さを算出する。そして、ドラムフィールドFDの円周方向の原点座標を基準として、その円周長さの位置をドラムフィールドFDの円周方向の対応座標とする。
次に、CPUコア21は、各位置座標のX軸座標に基づいて、ドラムフィールドFDの軸方向の対応座標をそれぞれ算出して(ステップ73)、当該サブルーチンによる処理を終了する。例えば、ドラムフィールドFDの軸方向の原点座標を基準として、各位置座標のX軸座標をそのままドラムフィールドFDの軸方向の対応座標とする。なお、所定の換算式に基づいて、各位置座標のX軸座標をドラムフィールドFDの軸方向の対応座標に換算してもかまわない。これらステップ71〜73の処理によって、各オブジェクトの平面座標系の位置座標がドラムフィールドFDの円筒曲面上のドラム座標系に変換される。なお、上記ステップ71〜73の処理では、平面フィールドFP上の位置座標(つまり、Y=0)をドラムフィールドFDの円筒曲面上の対応座標に変換する動作を行っている。しかしながら、平面フィールドFPからY軸方向に離れた位置座標(つまり、Y>0)の場合、そのY軸座標をそのままドラムフィールドFDの円筒曲面から離れる円筒軸と垂直な半径方向の対応座標とすれば、平面フィールドFP上の点以外でも同様の座標変換ができることは言うまでもない。
図12に戻って、CPUコア21は、上記ステップ54で算出したドラム座標系の対応座標に応じて、各簡易モデルを配置し(ステップ55)、処理を次のステップに進める。具体的には、CPUコア21は、各オブジェクトデータDOに含まれている簡易モデルの種別および大きさに基づいて簡易モデルを生成し、ドラム座標系のゲーム空間における各対応座標の位置に当該簡易モデルを配置する(図5参照)。このステップ55によって、ゲーム空間に登場するプレイヤキャラクタPC、ノンプレイヤキャラクタNPC、およびその他のオブジェクトOBJに対応する簡易モデルがドラム座標系のゲーム空間に配置される。
次に、CPUコア21は、タッチ入力座標DC1を仮想カメラCから放射状に延伸する視線方向に沿ってドラム座標系のゲーム空間内に透視投影して延伸した直線を算出する(ステップ56;図5の破線参照)。そして、CPUコア21は、上記ステップ56で算出した直線と接触または交差する簡易モデルがあるか否かを判断する(ステップ57)。上記直線と接触または交差する簡易モデルがある場合、CPUコア21は、処理を次のステップ58に進める。一方、上記直線と接触または交差する簡易モデルがない場合、CPUコア21は、処理を次のステップ60(図13)に進める。
ステップ58において、CPUコア21は、上記直線と接触または交差すると判断された簡易モデルのうち、最前(仮想カメラC側)の簡易モデルに対応するオブジェクト(キャラクタID)をRAM24に記憶する。そして、CPUコア21は、最前の簡易モデルに対応するオブジェクト(キャラクタID)の平面座標系における位置座標をオブジェクトデータベースから取得して(ステップ59)、処理を次のステップ60(図13)に進める。以下、上記直線と接触または交差した最前の簡易モデルに対応するオブジェクトを、タッチ操作の対象オブジェクトと記載する。例えば、図5で示すようにタッチパネル15をスティック16bの位置でタッチ操作したとき、そのタッチ入力座標DC1から算出される直線と交差する簡易モデルOBJeに対応するキャラクタIDおよびその平面座標系における位置座標が取得され、簡易モデルOBJeに対応するオブジェクトがタッチ操作の対象オブジェクトとなる。
ステップ60において、CPUコア21は、上記ステップ56で算出した直線とドラムフィールドFDまたは仮想壁Wとの交点座標を取得して、RAM24に交点座標DC2として記憶する。例えば、図5で示すようにタッチパネル15をスティック16a〜16cの位置でそれぞれタッチ操作したとき、それらタッチ入力座標DC1から算出される直線とドラムフィールドFDとが交差する交点座標TPDa〜TPDcがそれぞれ取得される。また、図5で示すようにタッチパネル15をスティック16dの位置でタッチ操作したとき、そのタッチ入力座標DC1から算出される直線と仮想壁Wとが交差する交点座標TPDdが取得される。そして、CPUコア21は、上記ステップ60で取得した交点座標を平面座標系に変換して(ステップ61)、処理を次のステップに進める。以下、図15を参照して、ステップ61における詳細な処理について説明する。
図15において、CPUコア21は、上記ステップ60で得られた交点座標がドラムフィールドFD上であるか否かを判断する(ステップ81)。そして、交点座標がドラムフィールドFD上である場合、CPUコア21は、処理を次のステップ82に進める。一方、交点座標が仮想壁W上である場合、CPUコア21は、処理を次のステップ88に進める。
ステップ82において、CPUコア21は、交点座標におけるドラムフィールドFDの軸方向の対応座標に基づいて、平面座標系のX軸座標を算出する。次に、CPUコア21は、交点座標におけるドラムフィールドFDの円周方向の対応座標を取得し(ステップ83)、処理を次のステップ84に進める。このステップ82の処理は、上記ステップ73の逆変換を行う処理である。したがって、例えば、ドラムフィールドFDの軸方向の原点座標を基準としたドラムフィールドFDの軸方向の対応座標をそのまま平面座標系におけるX軸座標とする。また、所定の換算式に基づいて、ドラムフィールドFDの軸方向の対応座標を平面座標系におけるX軸座標に換算してもかまわない。
一方、ステップ88において、CPUコア21は、交点座標におけるドラムフィールドFDの円筒軸と平行な仮想壁Wに沿った方向への座標に基づいて、平面座標系のX軸座標を算出する。次に、CPUコア21は、仮想壁WとドラムフィールドFDの円筒曲面との交線におけるドラムフィールドFDの円周方向の対応座標を取得し(ステップ89)、処理を次のステップ84に進める。図5を用いて説明したように、仮想壁Wは、タッチパネル15(クリップ面)に対して平行にドラムフィールドFDの円筒曲面から起立するように当該円筒曲面と交わって設置されている。つまり、ステップ88では、仮想壁W上においてドラムフィールドFDの軸方向と同じ方向の対応座標を算出している。また、ステップ89では、仮想壁WがドラムフィールドFDと交差する円周方向の対応座標を算出している。
ステップ84において、CPUコア21は、上記ステップ83またはステップ89で算出したドラムフィールドFDの円周方向の対応座標に基づいて、円筒軸から円周方向対応座標への直線および当該円筒軸からドラムフィールドFDの円周方向の原点座標への直線間の角度を算出する。そして、CPUコア21は、ドラムフィールドFDの半径および上記ステップ84で算出した角度に基づいて、当該角度に相当する円周長さを算出する。そして、CPUコア21は、上述したZ軸方向の取りうる範囲と当該範囲に相当するドラムフィールドFDの円筒曲面の円周長さの全周あるいは一部との比率に基づいて、算出した円周長さをZ軸座標に変換し(ステップ85)、処理を次のステップに進める。ここで、このステップ85の処理は、上記ステップ71および72の逆変換を行う処理である。
次に、CPUコア21は、上記交点座標における平面座標系のY軸座標を0に設定する(ステップ86)。そして、CPUコア21は、ステップ82またはステップ88で算出したX軸座標、ステップ85で算出したZ軸座標、およびステップ86で設定したY軸座標をRAM24に平面座標系の交点座標DC3として記憶し(ステップ87)、当該サブルーチンによる処理を終了する。例えば、これらのステップ81〜89の処理によって、図5に示した交点座標TPDa〜TPDcが図6に示した交点座標(目標点)TPPa〜TPPcに変換される。また、これらのステップ81〜89の処理によって、図5に示した交点座標TPDdが図6に示した目標点TGに変換される。
図13に戻り、CPUコア21は、タッチ操作の対象オブジェクトおよび交点座標DC3に基づいて、プレイヤキャラクタPCのアクション処理を平面座標系で行い(ステップ62)、処理を次のステップに進める。以下、図16および図17を参照して、ステップ62における詳細な処理について説明する。
図16において、CPUコア21は、タッチ操作の対象オブジェクトがノンプレイヤキャラクタNPCか否かを判断する(ステップ91)。そして、CPUコア21は、対象オブジェクトがノンプレイヤキャラクタNPCである場合に処理を次のステップ92に進め、ノンプレイヤキャラクタNPCでない場合に処理を次のステップ101(図17)に進める。ここで、CPUコア21は、対象オブジェクトの種別を上記ステップ58で得られた対象オブジェクトのキャラクタIDから判断することができる。
ステップ92において、CPUコア21は、タッチ操作の対象オブジェクトであるノンプレイヤキャラクタNPCの平面座標系における位置座標を取得する。なお、この位置座標は、上記ステップ59で取得した位置座標と同じである。そして、CPUコア21は、オブジェクトデータベースを参照してプレイヤキャラクタPCの平面座標系での位置座標および向きを取得し、当該プレイヤキャラクタPCの会話範囲A1を平面フィールドFP上で算出し(ステップ93;図7参照)、処理を次のステップに進める。
次に、CPUコア21は、上記ステップ92で取得したノンプレイヤキャラクタNPCの位置座標が会話範囲A1内か否かを判断する(ステップ94)。そして、CPUコア21は、ノンプレイヤキャラクタNPCの位置座標が会話範囲A1外である場合、処理を次のステップ96に進める。一方、ノンプレイヤキャラクタNPCの位置座標が会話範囲A1内である場合、CPUコア21は、プレイヤキャラクタPCとタッチ操作の対象であるノンプレイヤキャラクタNPCとが会話する動作を表現するアクション処理を行って(ステップ95)、当該サブルーチンによる処理を終了する。ここで、プレイヤキャラクタPCとノンプレイヤキャラクタNPCとが会話する動作とは、プレイヤキャラクタPCとノンプレイヤキャラクタNPCとに、互いが言葉を受け答えするような動作をゲーム画像上で表現するアクション処理である。
ステップ96において、CPUコア21は、プレイヤキャラクタPCの位置座標および向きに基づいて、当該プレイヤキャラクタPCの呼びかけ範囲A2を平面フィールドFP上で算出する(図8参照)。次に、CPUコア21は、上記ステップ92で取得したノンプレイヤキャラクタNPCの位置座標が呼びかけ範囲A2内か否かを判断する(ステップ97)。そして、CPUコア21は、ノンプレイヤキャラクタNPCの位置座標が呼びかけ範囲A2内である場合、プレイヤキャラクタPCがタッチ操作の対象であるノンプレイヤキャラクタNPCに呼びかける動作を表現するアクション処理を行って(ステップ98)、当該サブルーチンによる処理を終了する。ここで、プレイヤキャラクタPCがノンプレイヤキャラクタNPCに呼びかける動作とは、プレイヤキャラクタPCが上記会話する距離とは相対的に遠くに存在するノンプレイヤキャラクタNPCに対して、一方的に言葉をかけるような動作をゲーム画像上で表現するアクション処理である。
一方、CPUコア21は、ノンプレイヤキャラクタNPCの位置座標が呼びかけ範囲A2外である場合、交点座標DC3を目標点TGにして、プレイヤキャラクタPCが平面フィールドFP上を所定の速度で移動させるアクション処理を行って(ステップ99;図11参照)、当該サブルーチンによる処理を終了する。具体的には、ステップ99の移動アクションにおいて、CPUコア21は、オブジェクトデータベースにおけるプレイヤキャラクタPCの位置座標を、交点座標DC3に向かって所定速度で移動するように変化させる。ここで、プレイヤがドラムフィールドFDの地平線付近のノンプレイヤキャラクタNPCをタッチ操作した場合、ドラム座標における交点座標DC2が当該ノンプレイヤキャラクタNPCを通過した背景BIとなることがある。しかしながら、上述したように本実施例では、背景BIがタッチ操作で指定されても、仮想壁Wを用いて適切な交点座標DC3を得ているため、他の位置と同様の処理を行うことができる。
図17において、対象オブジェクトがノンプレイヤキャラクタNPCでない場合、ステップ101においてCPUコア21は、タッチ操作の対象オブジェクトがプレイヤキャラクタPCか否かを判断する。そして、CPUコア21は、対象オブジェクトがプレイヤキャラクタPCでない場合、処理を次のステップ103に進める。一方、CPUコア21は、プレイヤキャラクタPCである場合、当該プレイヤキャラクタPCの装備を使う等の動作を表現するアクション処理を行って(ステップ102)、当該サブルーチンによる処理を終了する。具体的には、プレイヤがプレイヤキャラクタPCをタッチ操作した場合、プレイヤキャラクタPCが向いている方向にアクションの対象となるものがあるか否かにかかわらず、現在向いている方向に向かって装備しているアイテムを使う等アクションを行う。例えば、アイテムとして斧を装備しているプレイヤキャラクタPCをタッチ操作した場合、当該プレイヤキャラクタPCは、現在の向きで斧を振るような動作を行う。また、何のアイテムも装備していないプレイヤキャラクタPCをタッチ操作した場合、正面近傍に木(オブジェクトOBJ)があれば、当該木を揺するような動作を行う。
ステップ103において、CPUコア21は、現在プレイヤキャラクタPCが装備しているアイテム種別を取得する。そして、CPUコア21は、オブジェクトデータベースを参照してプレイヤキャラクタPCの位置座標および向きを取得し、アイテム種別とタッチ操作の対象オブジェクトまたは交点座標DC3が示す平面フィールドFPの種別との組み合わせに応じて当該プレイヤキャラクタPCのアクション範囲A3を平面フィールドFP上で算出し(ステップ104;図9参照)、処理を次のステップに進める。ここで、CPUコア21は、プレイヤキャラクタPCの位置座標および向きに基づいて基本的なアクション範囲A3を算出し、アイテム種別とタッチ操作に応じた対象オブジェクトまたは平面フィールドFPの種別との組み合わせに応じてアクション範囲A3の大きさを平面フィールドFP上で変化させる。例えば、CPUコア21は、釣竿を装備しているプレイヤキャラクタPCに対して、ポストがタッチ操作の対象オブジェクトとなったアクション範囲A3と比較して、川がタッチ操作に応じた平面フィールドFPの種別である場合に相対的に大きなアクション範囲A3に変化させる。
次に、CPUコア21は、上記ステップ59で取得したタッチ操作の対象オブジェクトの位置座標または交点座標DC3がアクション範囲A3内か否かを判断する(ステップ105)。そして、CPUコア21は、対象オブジェクトの位置座標または交点座標DC3がアクション範囲A3内である場合に処理を次のステップ106に進め、アクション範囲A3外である場合に処理を次のステップ112に進める。
ステップ106において、CPUコア21は、アクション範囲A3内にある対象オブジェクトがプレイヤキャラクタPCの装備しているアイテムのアクション対象(図10参照)であるか否かを判断する。そして、CPUコア21は、対象オブジェクトがプレイヤキャラクタPCの装備しているアイテムのアクション対象でない場合、処理を次のステップ108に進める。一方、CPUコア21は、対象オブジェクトがプレイヤキャラクタPCの装備しているアイテムのアクション対象である場合、プレイヤキャラクタPCがタッチ操作の対象オブジェクトに対して特別な動作を表現するアクション処理を行って(ステップ107)、当該サブルーチンによる処理を終了する。
このステップ106で判断するアイテムのアクション対象とは、プレイヤキャラクタPCが当該アイテムを用いて特別な動作を行うオブジェクトである。例えば、図10に示した一例では、プレイヤキャラクタPCが「スコップ」を装備している場合に「はじかれる」アクションを行う「岩」等が「スコップ」(アイテム)のアクション対象となる。また、プレイヤキャラクタPCが斧を装備している場合に「木を切る」および「はじかれる」アクションを行う「木」および「岩」等が「斧」(アイテム)のアクション対象となる。また、プレイヤキャラクタPCが「釣竿」を装備している場合は、アクション対象となるオブジェクトがない。このようにアイテムとアクション範囲A3内の対象オブジェクトとの組み合わせによって、上記ステップ106におけるアクション対象であるか否かを判断する。一方、特別な動作を行わない組み合わせとなる対象オブジェクト(例えば、「スコップ」に対する「木」)は、上記ステップ106においてアクション対象のオブジェクトではないと判断される。そして、上記ステップ107においては、アイテムとアクション範囲A3内の対象オブジェクトとの組み合わせに応じた特別な動作をゲーム画像上で表現するアクション処理が行われる。
ステップ108において、CPUコア21は、アクション範囲A3内である対象オブジェクトがプレイヤキャラクタPCの装備しているアイテムの種別および有無にかかわらずに同じ動作を行う通常アクション対象(図10参照)であるか否かを判断する。そして、CPUコア21は、対象オブジェクトが通常アクション対象でない場合、処理を次のステップ110に進める。一方、CPUコア21は、対象オブジェクトが通常アクション対象(例えば、図10に記載した「ポスト」)である場合、プレイヤキャラクタPCがタッチ操作の対象オブジェクトに対して共通の動作(通常アクション;例えば、「ポストを開ける」)を表現するアクション処理を行って(ステップ109)、当該サブルーチンによる処理を終了する。
ステップ110において、CPUコア21は、アクション範囲A3内である交点座標DC3が示す平面フィールドFPの種別(以下、地形と記載する)がプレイヤキャラクタPCの装備しているアイテムのアクション対象であるか否かを判断する。そして、CPUコア21は、地形がプレイヤキャラクタPCの装備しているアイテムのアクション対象でない場合、処理を次のステップ112に進める。一方、CPUコア21は、地形がプレイヤキャラクタPCの装備しているアイテムのアクション対象である場合、プレイヤキャラクタPCが交点座標DC3における平面フィールドFPに対して特別な動作を表現するアクション処理を行って(ステップ111)、当該サブルーチンによる処理を終了する。
このステップ110で判断するアイテムのアクション対象とは、プレイヤキャラクタPCが当該アイテムを用いて特別な動作を行う平面フィールドFPの種別である。例えば、図10に示した一例では、プレイヤキャラクタPCが「スコップ」を装備している場合に「地面に穴を掘る」および「空振りする」アクションを行う「地面」および「川」等が「スコップ」(アイテム)のアクション対象となる。また、プレイヤキャラクタPCが「釣竿」を装備している場合に「釣りをする」アクションを行う「川」等が「釣竿」(アイテム)のアクション対象となる。このようにアイテムとアクション範囲A3内の交点座標DC3における平面フィールドFPの種別との組み合わせによって、上記ステップ110におけるアクション対象を判断する。一方、特別な動作を行わない組み合わせとなる地形(例えば、「斧」に対する「地面」)は、上記ステップ110においてアクション対象ではないと判断される。そして、上記ステップ111においては、アイテムとアクション範囲A3内の交点座標DC3に応じた地形との組み合わせに応じた特別な動作をゲーム画像上で表現するアクション処理が行われる。
ステップ112において、CPUコア21は、交点座標DC3を目標点TGにして、プレイヤキャラクタPCが平面フィールドFP上を所定の速度で移動させるアクション処理を行って(図11参照)、当該サブルーチンによる処理を終了する。なお、この処理は、上記ステップ99と同様であるため、詳細な説明を省略する。ここで、プレイヤがドラムフィールドFDの地平線付近のオブジェクトOBJ等をタッチ操作した場合、ドラム座標における交点座標が当該オブジェクトOBJを通過した背景BIとなることがある。また、プレイヤが背景BIをタッチ操作した場合、ドラム座標における交点座標が背景BIとなる。しかしながら、上述したように本実施例では、背景BIがタッチ操作で指定されても、仮想壁Wを用いて適切な交点座標DC2およびDC3を得ているため、他の位置と同様の処理を行うことができる。
図13に戻り、CPUコア21は、平面座標系でアクション処理を行った後、オブジェクトデータベースのオブジェクトデータDOに基づいて、ゲーム空間に配置されているオブジェクト毎に平面座標系の位置座標および描画モデル種別記号を取得する(ステップ63)。そして、CPUコア21は、上記ステップ63で取得した各位置座標を平面座標系からドラム座標系に変換し(ステップ64)、処理を次のステップに進める。なお、ステップ64で行う各位置座標を平面座標系からドラム座標系に変換する処理は、上述したステップ54(図12)の動作と同様であるため、詳細な説明を省略する。
次に、CPUコア21は、上記ステップ64で算出したドラム座標系の対応座標に応じて、各描画モデルを配置して仮想カメラCを視点としたゲーム画像を描画して(ステップ65)、当該フローチャートによる処理を終了する。具体的には、CPUコア21は、各オブジェクトデータDOに含まれている描画モデルの種別記号に基づいて描画モデル画像データDI1を参照し、ドラム座標系のゲーム空間における各対応座標の位置に当該描画モデル画像を配置する(図4参照)。このステップ65によって、ゲーム空間に登場するプレイヤキャラクタPC、ノンプレイヤキャラクタNPC、およびその他のオブジェクトOBJに対応する描画モデルがドラム座標系のゲーム空間に配置されて仮想カメラCを視点としたゲーム画像として描画される。
このように、ゲーム装置1で実行されるゲーム処理では、タッチ位置に応じたゲーム空間のドラムフィールドFD(地形オブジェクト)の位置に向かってプレイヤキャラクタPCを移動させる制御を行っているが、プレイヤが背景BIをタッチ位置とした場合でも、ドラムフィールドFDをタッチ操作の対象とした場合と同様の処理を行うことができる。つまり、第2のLCD12に表示されるゲーム画像においてタッチ操作に応じた動作制御が不能となる領域がないため、プレイヤのタッチパネル15を用いた操作性が向上する。
なお、上述した説明においては、図5に示したようにタッチパネル座標系が設定される手前側クリップ面(タッチパネル15)と仮想壁Wとを互いに平行に設定したが、仮想壁Wが平行でなくてもタッチ入力座標の透視投影を同様に行うことができることは言うまでもない。また、図5に示したように仮想カメラCから透視投影によってゲーム画像が得られる説明をしたが、平行投影によってゲーム画像を生成してもかまわない。さらに、ドラム座標系に設定されるゲームフィールドを円筒状のドラムフィールドFDを用いて説明したが、球面状や平面状のゲームフィールド等を用いてもかまわない。それらのゲームフィールドに対する背景BIの手前またはその背景BIに相当する位置に仮想壁Wを設定し、上述したX軸およびZ軸方向に対する座標変換を、ゲームフィールドおよび仮想壁Wに応じて行えば、同様に本発明を実現することができる。
また、上述では、説明を具体的にするために、具体的な座標軸の設定して座標変換方法を説明し、具体的なゲームフィールドの形状等を示してゲーム処理を説明したが、これらは一実施例であり、本発明がこれらの方法や形状に限定されることはないことは言うまでもない。
また、上述した実施形態では、2画面分の液晶表示部の一例として、物理的に分離された第1のLCD11および第2のLCD12を互いに上下に配置した場合(上下2画面の場合)を説明した。しかしながら、2画面分の表示画面の構成は、他の構成でもかまわない。例えば、下側ハウジング13bの一方主面に第1のLCD11および第2のLCD12を左右に配置してもかまわない。また、第2のLCD12と横幅が同じで縦の長さが2倍のサイズからなる縦長サイズのLCD(すなわち、物理的には1つで、表示サイズが縦に2画面分あるLCD)を下側ハウジング13bの一方主面に配設して、第1および第2のゲーム画像を上下に表示(すなわち上下の境界部分無しに隣接して表示)するように構成してもよい。また、第2のLCD12と縦幅が同じで横の長さが2倍のサイズからなる横長サイズのLCDを下側ハウジング13bの一方主面に配設して、横方向に第1および第2のゲーム画像を左右に表示(すなわち左右の境界部分無しに隣接して表示)するように構成してもよい。すなわち、物理的に1つの画面を2つに分割して使用することにより第1および第2のゲーム画像を表示してもかまわない。いずれのゲーム画像の形態に対しても、第2のゲーム画像が表示される画面上にタッチパネル15を配設すれば、同様に本発明を実現することができる。また、物理的に1つの画面を2つに分割して使用することにより第1および第2のゲーム画像を表示する場合、当該画面全面にタッチパネル15を配設してもかまわない。
また、上述した実施例では、ゲーム装置1にタッチパネル15が一体的に設けられているが、ゲーム装置とタッチパネルとを別体にして構成しても、本発明を実現できることは言うまでもない。また、第1のLCD11の上面にタッチパネル15を設けても良い。さらに、上記実施例では表示画面を2つ(第1のLCD11、第2のLCD12)を設けたが、表示画面は1つであってもかまわない。すなわち、上記実施例において、第1のLCD11設けず単に第2のLCD12のみを表示画面としてタッチパネル15を設けるように構成してもよい。また、上記実施例において、第2のLCD12を設けず第1のLCD11の上面にタッチパネル15を設けても良い。
また、上記実施例では、ゲーム装置1の入力手段としてタッチパネルを用いたが、他のポインティングデバイスを用いてもかまわない。ここで、ポインティングデバイスは、画面上での入力位置や座標を指定する入力装置であり、例えば、マウス、トラックパッド、トラックボールなどを入力手段として使用し、入力手段から出力される出力値から計算されたドラム座標系の情報を用いれば、本発明を同様に実現することができる。
また、上記実施例では、携帯型のゲーム装置1を用いて説明しているが、一般的なパーソナルコンピュータなどの情報処理装置(ゲーム装置)でもかまわない。