図1を参照して、この発明の実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含む。このLCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。この実施例では、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
操作スイッチないし操作キー20は、方向指示スイッチ(十字スイッチ)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面において、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面において、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部であり上側ハウジング16aとの連結部以外の部分において、当該連結部を挟むようにして左右に配置される。
なお、この実施例では、後述するように、タッチパネル22を用いて入力された座標に基づいてゲーム処理が実行されるので、ここでは、操作スイッチ20の一般的な働きを説明しておく。
方向指示スイッチ(方向キー)20aは、ディジタルジョイスティックとして機能し、操作対象の移動方向を指示するために用いられる。つまり、4つの押圧部の1つを操作することによって、プレイヤ(ユーザ)によって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)やカーソル等を当該操作した部分に対応する方向に移動させることができる。
スタートスイッチ20bは、プッシュボタンで構成され、ゲームの開始(再開)、や一時停止等のために用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等のために用いられる。
動作スイッチ(動作キー)20dすなわちAボタンは、プッシュボタンで構成され、移動方向以外の動作の指示のために用いられる。たとえばプレイヤキャラクタに、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプする、切る等の任意の動作(アクション)をさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、メニュー選択の際には、カーソルの表示された、すなわち、選択状態にあるメニュー項目を決定して当該項目に対応する動作ないし処理を実行させることが可能である。
動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、たとえばセレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。また、Bボタン20eも、Aボタン20dと同様に、プレイヤキャラクタの動作を指示するための動作キーとして使用され得る。
動作スイッチ20L(Lボタン)および動作スイッチ20R(Rボタン)は、プッシュボタンで構成され、Lボタン20LおよびRボタン20Rは、上述の各動作スイッチ20d、20eと同じまたは別の操作に用いることができ、また、上述の各動作スイッチ20d、20eの補助的な操作に用いることができる。なお、上述のプッシュボタンは、キートップを押し下げることにより作動するスイッチとして構成されてよい。したがって、各スイッチを押し下げるという簡単な操作によって、動作指示等を行うことができる。
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたり、叩いたりすることによって操作すると、スティック24等によって指示された(つまり、タッチ入力された)位置の座標を検出して、当該検出した座標を示す座標データを出力する。したがって、プレイヤはスティック24等でタッチパネル22を操作することにより、タッチ位置に対応する座標を入力することができる。
なお、この実施例では、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出精度(操作面)も表示画面に対応して256dot×192dotとしてある。ただし、図1では、タッチパネル22を分かり易く示すために、タッチパネル22をLCD14と異なる大きさで示してあるが、LCD14の表示画面の大きさとタッチパネル22の操作面の大きさとは同じ大きさである。なお、タッチパネル22の検出精度は、表示画面の解像度よりも低くてもよく、高くてもよい。
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(この実施例では、LCD14)の上面にタッチパネル22が設けられるので、2画面ないし2表示領域(12,14)と2系統の操作部(20,22)とを有する構成になっている。
また、この実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(穴ないし凹部)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要もない。
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含む。このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは底面(下端)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置であり、この下側ハウジング16bの内部には、スピーカ32(図2参照)が設けられる。
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなども設けられてよい。
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるとともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出力インターフェイス回路(以下、「I/F回路」という。)54、LCDコントローラ60およびワイヤレス通信部64に接続される。
コネコタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、オブジェクト画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像、カーソル画像など)データおよびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データや結果データを記憶(セーブ)する。
なお、ゲーム以外のアプリケーションが実行される場合、メモリカード28のROM28aには、当該アプリケーションについてのプログラムおよび当該アプリケーションの実行に必要な画像データ等が記憶される。また、必要に応じて音(音楽)データも記憶されてよい。
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたプログラム、画像データおよび音データ等をRAM48にロードし、ロードしたプログラムに従って処理を実行する。また、CPUコア42は、ゲーム等の進行に応じて発生または取得されるデータ(ゲームデータやフラグデータ等)をRAM48に記憶しつつ処理を実行する。
なお、プログラム、画像データおよび音データ等は、ROM28aから一度に全部または必要に応じて部分的にかつ順次的に読み出され、RAM48に記憶される。ただし、この実施例のように、固定的にプログラムおよびデータを記憶している記憶媒体をCPUコア42に直接接続可能なゲーム装置10の場合には、CPUコア42が記憶媒体に直接アクセスできるので、RAM48にプログラムやデータを転送して保持しなくてよい。
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphicscommand :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。ただし、CPUコア42は、描画に必要な画像データをRAM48から読み出し、GPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして表示のためのゲーム画像データを作成し、その画像データをVRAM56の描画バッファに記憶する。GPU52はVRAM58にアクセスして描画のためのゲーム画像データを作成し、その画像データをVRAM58の描画バッファに記憶する。描画バッファとしてはフレームバッファまたはラインバッファ等が採用されてよい。
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたゲーム画像データをLCD12に出力し、GPU52によって作成されたゲーム画像データをLCD14に出力する。一方、レジスタ62のデータ値が「1」である場合には、LCDコントローラ60は、GPU50によって作成されたゲーム画像データをLCD14に出力し、GPU52によって作成されたゲーム画像データをLCD12に出力する。
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接画像データを読み出すことができるし、あるいはGPU50およびGPU52を介してVRAM56およびVRAM58から画像データを読み出すこともできる。
また、VRAM56およびVRAM58はRAM48に設けられてもよいし、あるいはその描画バッファおよびZバッファがRAM48に設けられてもよい。
I/F回路54には、操作スイッチ20,タッチパネル22およびスピーカ32が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号(操作データ)がI/F回路54を介してCPUコア42に入力される。また、タッチパネル22から出力される操作データ(座標データ)がI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬制音)などのゲームに必要な音データをRAM48から読み出し、I/F回路54を介してスピーカ32からその音を出力する。
ワイヤレス通信部64は他のゲーム装置10との間で無線によってデータを送受信するための通信手段である。すなわち、ワイヤレス通信部64は、相手方への通信データを無線信号に変調してアンテナから送信し、また、相手方のゲーム装置10からの無線信号を同じアンテナで受信して通信データに復調する。
図3に示すように、この実施例では、LCD12が仮想ゲーム世界表示領域として使用され、タッチパネル22(LCD14)が操作領域として使用される。操作領域への入力に基づいて種々のゲーム処理が実行され、その結果生成されたゲーム画面がLCD12に表示される。たとえば、LCD12には、プレイヤキャラクタや敵キャラクタ等が登場する仮想3次元ゲーム世界を仮想カメラで撮影した画像が表示される。プレイヤによる操作領域への入力によって、仮想ゲーム空間内のプレイヤキャラクタの動作および移動もしくは向き等が制御され、あるいは仮想カメラの向き等が制御される。
操作領域は、異なる2つの領域(第1領域と第2領域)を含む。第1領域に対する入力に基づいて第1のゲーム処理が実行され、第2領域に対する入力に基づいて第1のゲーム処理と異なる第2のゲーム処理が実行される。この実施例では、第1のゲーム処理は操作対象の動作に関するゲーム処理であり、たとえば仮想空間においてキャラクタに動作をさせる処理であってよい。第2のゲーム処理は、操作対象の移動や向きなどの方向に関するゲーム処理であり、たとえばジョイスティックや方向指示スイッチ等の入力に対応するゲーム処理であってよい。代表的には、仮想空間においてキャラクタに移動をさせる処理、仮想空間におけるキャラクタの向きを変更する処理、および仮想空間を示す画面を生成するための仮想カメラの向きを変更する処理などである。このように、第1領域は動作指示を行うための領域であり、第2領域は方向指示を行うための領域である。なお、操作対象の動作は、敵オブジェクトを攻撃する動作、守備をする動作、ジャンプする動作、オブジェクトを拾う動作、オブジェクトを探す動作、キャラクタと会話する動作など種々のものがある。プレイヤオブジェクトがその場で移動を伴わずに行う動作であってもよいが、動作に伴って移動をしてもよい。
図4に操作領域の一例が示される。操作領域は動作入力領域および方向入力領域を含む。動作入力領域は、動作に関するゲーム処理に対する入力を行うための領域であり、方向入力領域は、方向に関するゲーム処理に対する入力を行うための領域である。この実施例では、動作入力領域と方向入力領域とをプレイヤに明示するため、LCD14には、動作入力領域と方向入力領域とを、色分けや線引き等で、区別可能にされた画像が表示される。つまり、LCD14は操作のための画面が表示された操作表示領域である。また、操作領域には入力座標系が規定されている。この実施例では、XY座標系が使用され、入力座標系の原点は画面のたとえば左下隅に設定され、画面右方向にX軸が、画面上方向にY軸が規定される。たとえば各座標ごとの所属領域を示すデータがROM28aに予め記憶されている。
動作入力領域と方向入力領域とは操作領域において固定的に設けられる。つまり、動作入力領域および方向入力領域は操作領域の所定の位置に配置されており、たとえばゲーム進行中に移動したり変形したりしない。したがって、操作領域において動作入力領域と方向入力領域の相対的な位置関係が変化しないので、プレイヤは、動作入力領域に対する入力操作も方向入力領域に対する入力操作も極めて容易に行うことができる。この実施例では、後述するが、方向に関するゲーム処理は、方向入力領域の入力座標の動作入力領域を基準とした相対座標や動作入力領域からの相対的な方向等に基づいて実行される。このような場合でも、動作入力領域と方向入力領域とが固定されていると、両領域の相対的な位置関係を容易に把握できるので、相対的な位置関係を考慮して行うべき方向入力領域への入力操作も非常にやり易くなる。したがって、プレイヤは簡単に入力操作を行うことができ、たとえば操作領域の画面を常に見なくても所望の入力を行うことも可能である。また、動作入力領域と方向入力領域が図4の円形等のようにシンプルなもしくは分かり易い形状に形成される場合には、操作領域の画面を初めに確認するだけで、その後は操作領域の画面を見ることなく入力操作を行うといったことも可能である。
また、この実施例では、方向入力領域は動作入力領域を囲むようにして設けられる。このため、方向入力領域のどの位置で入力を行っていても、動作入力領域へすぐに入力位置を移動させることができるし、逆に動作入力領域からもすぐに方向入力領域へ入力位置を移動させることができる。このように動作入力領域が方向入力領域に囲まれるように形成すれば、動作入力と方向入力の操作の連続性を高くすることができ、タッチパネル22上でスティック24等をスライドさせて入力位置を移動させるだけで、素早く動作入力と方向入力を切替えることができる。したがって、1本の指や手であっても、動作に関するゲーム処理と方向に関するゲーム処理とを素早く切替えつつ実行することができる。また、この実施例では、動作入力領域が操作領域の中心に配置されるので、方向入力領域との相対的な位置関係の把握が極めて容易である。したがって、方向入力領域での相対位置を考慮した入力操作すなわち方向指示操作を簡単に行うことができるし、動作入力領域と方向入力領域との間の入力位置の移動も簡単に行える。さらに、ある方向を入力しているときに、その反対方向に入力を変更したいような場合には、動作入力領域の存在によって入力位置の移動距離が大きくなり、近い方向への変更と比べると操作が比較的困難となる。このように、急激な方向変換が困難となるので、現実感の高い操作性を実現でき、したがって、プレイヤに感覚的に把握し易い操作を行わせることができる。
さらに、この実施例では、動作入力領域の全周囲が方向入力領域によって囲まれるように形成されている。このため、動作入力領域から360度全方向に方向入力領域を存在させることができる。したがって、動作入力領域から全方向について入力操作を連続的に行うことができるので、動作入力と方向入力の切替えを極めて容易にかつ素早く行うことができる。動作入力領域との相対的な位置関係を考慮すべき方向入力領域での入力操作も、全方向について簡単に行うことができる。
さらに、動作入力領域は閉じた領域であり、この実施例では円形に形成される。したがって、その形状によって動作入力領域からの方向を感覚的に容易に把握することができるので、方向入力領域における入力操作を全方向について非常に簡単に行うことができる。
さらにまた、この実施例では、方向入力領域は、円形にくりぬかれた領域であり、動作入力領域の全外周と方向入力領域の全内周とが接するようにして設けられる。このように、動作入力領域の縁と方向入力領域の縁とが隣接して両領域が連続しているので、動作入力と方向入力を連続させることができる。したがって、動作入力と方向入力を非常に素早く切替えることができ、動作に関するゲーム処理と方向に関するゲーム処理とを素早く切替えつつ実行することができる。
動作入力領域(第1領域)に対する入力座標が検出される場合には、当該検出座標に基づいて動作に関するゲーム処理(第1のゲーム処理)が実行される。動作入力領域の座標が検出されるときは常に、動作に関するゲーム処理が実行されるようにしてもよい。または、動作入力領域の座標が検出されても、所定の条件が満足されていなければ、所定の動作に関するゲーム処理は実行されないようにしてもよい。
また、方向入力領域の座標が検出された後に連続的に動作入力領域の座標が検出されたときに、動作入力領域での検出座標に基づいて動作に関するゲーム処理が実行されるようにしてもよい。この場合には、方向に関するゲーム処理のための入力と動作に関するゲーム処理のための入力とを、連続的に行うことができる。このため、連続的な入力によって、たとえば操作領域へのタッチ入力を継続したまま、方向指示から動作指示に素早く移行することができる。
動作に関するゲーム処理は、たとえば、動作入力領域内で連続的な座標入力が検出されたときに、当該連続的な座標入力に基づいて決まる処理であってもよい。この場合、たとえば、当該連続的な座標入力の軌跡が所定形状であるかどうかを判定し、所定形状である
ときに対応する所定処理を実行するようにしてよい。また、当該連続的な座標入力内の数箇所の点に応じて決まる処理であってもよい。また、動作に関するゲーム処理は、動作入力領域内の1点の入力座標に基づいて、当該入力座標が動作入力領域内のどこを入力したかに応じて決まる処理であってもよい。
たとえば、プレイヤはスライド入力やタップ入力等によってタッチパネル22を操作して座標を入力する。スライド入力とは、タッチ状態のまま入力位置を移動させるような入力(停止していてもよい)である。タップ入力とは、タッチパネル22に瞬間的に触って放すような入力である。
スライド入力が行われている場合には、動作入力領域で連続的に検出された座標のうち所定の条件を満たすと判定された座標のみに基づいて、所定のゲーム処理を実行するようにしてよい。このようにすれば、所定の条件を満たすような入力がなされた場合のみ所定の動作に関するゲーム処理が実行される。したがって、たとえば、プレイヤは動作入力領域上を常にタッチ状態にしたままでゲーム操作を行うことが可能である。ただし、所定の条件として、所定のゲーム処理に用いられる座標が、タッチパネル22へのタッチを開始してから終了するまでの検出座標であることという条件だけが設定される場合を除く。
座標入力があるときに常にゲーム処理を実行するような場合には、プレイヤは、座標入力を行う操作状態と座標入力を行わない無操作状態とを随時変更しなければならないという、操作上やや不利な面がある。この実施例のようにタッチパネル22を用いる場合には、変更の都度スティック24等の操作面への接触または操作面からの離脱のための移動が要求され不便である。しかし、スライド入力のうち所定条件を満たす座標のみによってゲーム処理が実行されるようにする場合には、操作状態(タッチオン状態)と無操作状態(タッチオフ状態)とを随時変更しなくてもよい。つまり、所定の動作を実行させようとするたびにタッチパネル22に触って放すという操作をしなくてよく、常にタッチしたままでもよいので、簡単に入力を行うことができる。また、所定条件を満たす座標のみが所定の動作に関するゲーム処理を実行させるための動作入力であると見なされるので、タッチ入力を継続したまま次々と種々の動作の指示を行うことができ、たとえば1回のスライド入力に基づいて多種多様なゲーム処理を実行させることができる。さらに、この実施例では、動作入力領域は方向入力領域に囲まれるように形成されているので、プレイヤは、たとえば方向入力領域のある座標から動作入力領域を横切って反対側の方向入力領域の座標を入力する際に、動作入力領域で所定条件を満たさないように連続的に座標入力を行えば、動作に関するゲーム処理を実行させずに、反対側の方向入力領域の座標を入力することができる。
所定の条件を満たす入力であるか否かを判定するために、この実施例では、当該入力の始点(動作入力始点)を判定するための条件と、当該入力の終点(動作入力終点)を判定するための条件とが設定される。
図5には、動作入力始点(第1座標)を決定するための条件(第2条件)の一例が示される。この実施例では、スライド入力において、タッチ移動速度が所定の閾値以上になったことが第2条件として設定される。タッチ移動速度は、入力位置の移動する速度であり、つまり、連続的に検出された入力座標の移動する速度、ないし連続的な座標入力の変位速度である。この実施例では、入力座標は一定時間ごとに検出されるので、前回のフレームで検出された座標と今回のフレームで検出された座標との距離(連続的に検出される座標の単位時間当たりの変位量)をタッチ移動速度として扱うことができる。タッチ移動速度が閾値以上であると判定されたときには、当該判定の直前のフレームすなわち前回のフレームで検出された座標が、動作入力始点として決定される。このような条件設定が行われる場合には、動作入力領域において座標入力が行われていても素早いスライド入力が行われない限り、動作入力始点が決定されないので、所定の動作に関するゲーム処理が実行されない。したがって、所定の動作に関するゲーム処理を実行させるための入力を明確かつ簡単にすることができる。なお、タッチ移動速度が閾値以上になったことという条件は第2条件の一つの例であり、他の実施例では、後述するように、他の条件が第2条件として設定されてもよいし、たとえば複数の条件のいずれか1つが満たされることを第2条件としてもよい。
図6には、動作入力終点(第2座標)を決定するための条件(第3条件)の一例が示される。この実施例では、スライド入力において第2条件が満足されたと判定された後、入力座標が動作入力始点から一定距離を移動したことが第3条件として設定される。移動距離は、入力座標と動作入力始点との間の直線距離で算出されてもよいし、あるいは、動作入力始点からの道のりの長さで算出されてもよい。動作入力始点からの移動距離が閾値を超えたと判定されるときには、今回のフレームで検出された座標が動作入力終点として決定される。このような条件設定が行われる場合には、動作入力領域において座標入力が行われていても素早くかつ所定距離以上のスライド入力が行われない限り、所定の動作に関するゲーム処理が実行されない。したがって、所定の動作に関するゲーム処理を実行させるための入力をより明確にかつ簡単にすることができる。なお、動作入力始点から一定距離を移動したことという条件は第3条件の一例である。他の実施例では、後述するように、他の条件が第3条件として設定されてもよいし、たとえば複数の条件のいずれか1つが満たされることを第3条件としてもよい。
このようにして決定された動作入力始点と動作入力終点との間の座標が所定の条件を満たす動作入力であると見なされ、当該動作入力に基づいて動作に関するゲーム処理が実行される。たとえば、所定の条件を満たす動作入力の座標のうち少なくとも2つの座標(この実施例では動作入力始点と動作入力終点)に基づいて、動作に関するゲーム処理の種類すなわち動作の種類が複数の動作のなかから選択され、当該選択された種類の動作に関するゲーム処理が実行される。このように、スライド入力によって動作入力領域で連続的に検出された座標のうちの少なくとも2つの座標に基づいて動作の種類が選択されるようにしたので、動作入力領域におけるスライド入力のやり方によって、実行するゲーム処理を選択でき、ゲーム入力の幅を広げることができる。
動作の種類は、動作決定のためのパラメータに基づいて決定される。たとえば複数の種類の動作のためのゲーム処理が予め準備されていて、実行すべき動作のためのゲーム処理が当該パラメータに基づいて選択される。
図7には、動作入力始点と動作入力終点とに基づく動作決定のためのパラメータの一例が示される。動作決定パラメータは、動作入力始点の属するサブ領域であってよい。図8に示すように、動作入力領域には、分割によって複数のサブ領域が設けられてよい。図8の例では、操作領域の縦方向に3分割かつ横方向に3分割されることによって、9つのサブ領域a―iが設けられている。たとえば、動作入力領域の各座標の属するサブ領域を示すデータがROM28aに記憶されていて、当該データを参照して動作入力始点の座標の属するサブ領域が特定される。また、動作入力始点の属するサブ領域のそれぞれと動作の種類とを対応付けたデータがROM28aに記憶されていて、当該データを参照して当該サブ領域に対応する動作の種類が特定される。
後述する格闘ゲームの実施例では、一例として、この動作入力始点の属するサブ領域が動作決定のためのパラメータとして採用されている。この格闘ゲームでは、プレイヤキャラクタと敵キャラクタとが剣と盾を持って戦う。プレイヤキャラクタの剣モーションの種類を選択する際に、動作入力始点の属するサブ領域に応じて剣の振り始めの位置が決められる。たとえばサブ領域aだと左上位置が選ばれ、サブ領域fだと右位置が選ばれるというように、各サブ領域の動作入力領域における配置位置に対応する振り始め位置が設定される。このため、感覚的に把握し易い入力操作が可能であり、プレイヤは、動作の種類を簡単に制御することができる。このように、動作入力領域に異なる動作が対応付けられた複数のサブ領域を設けるので、簡単な操作で多様な動作に関するゲーム処理を実行することが可能である。
動作決定パラメータは動作入力終点の属するサブ領域であってもよい。このパラメータが採用される場合、動作入力終点の属するサブ領域のそれぞれと動作の種類とを対応付けたデータがROM28aに記憶され、当該データを参照して当該サブ領域に対応する動作の種類が特定される。
動作決定パラメータは、動作入力始点と動作入力終点とを結ぶ直線の傾きであってもよい。この場合、たとえば、動作入力始点と動作入力終点とを結ぶ直線の傾きと動作の種類とを対応付けたデータがROM28aに記憶され、当該データを参照して当該直線の傾きに対応する動作の種類が特定される。動作入力始点と動作入力終点とを結ぶ直線の傾きは、たとえば、動作入力始点から動作入力終点へのベクトルの方向として、または、当該始点と終点を結ぶ直線と所定方向(入力座標系のX軸またはY軸等)とのなす角度として算出されてもよい。この場合には、たとえば、当該方向または角度を1つまたは複数の閾値によって複数の範囲に区分けし、当該複数の範囲のそれぞれと動作の種類とが対応付けられてもよい。このように、方向入力領域において方向入力を行うことに加えて、動作入力領域においても方向に関連する入力を行うことが可能であり、動作に関連する多様なゲーム処理を実行することができる。
後述する格闘ゲームの実施例では、一例として、この動作入力始点と動作入力終点とを結ぶ直線の傾きが動作決定のためのパラメータとして採用されている。たとえば、プレイヤキャラクタの剣を振る動作として、剣を振る方向に応じた複数のモーションデータが予め準備されている。プレイヤキャラクタの剣モーションの種類を選択する際に、当該直線の傾きすなわち動作入力始点から動作入力終点へのベクトルの向きに応じて、剣の振り抜かれる方向が決められる。たとえば、傾きが右下方向の場合には剣を右下方向へ振り抜く動作が選ばれるというように、動作入力始点から動作入力終点への向きと同じ方向に剣が振り抜かれる。そして、上述の動作入力始点の属するサブ領域に基づいて決定される剣の振り始め位置と、当該傾きに基づいて決定される剣の振り抜き方向とによって、実行すべき剣モーションの種類が決定される。このように、後述の実施例では、方向入力領域でプレイヤキャラクタの移動方向の入力を行うことに加えて、動作入力領域において動作方向の入力を行うことが可能である。しかも、直感的な入力操作が可能であり、プレイヤは、実行しようとする動作の種類を簡単に制御することができる。
動作決定パラメータは、動作入力始点と動作入力終点との間の長さであってもよい。この場合には、たとえば、動作入力始点と動作入力終点との長さが1つまたは複数の閾値によって複数の範囲に区分けされ、当該複数の範囲のそれぞれと動作の種類とを対応付けたデータがROM28aに記憶され、当該データを参照して当該長さに対応する動作の種類が特定される。動作入力始点と動作入力終点との間の長さは、たとえば、直線距離すなわち動作入力始点と動作入力終点とを結ぶ直線の長さであってもよいし、あるいは、道のりすなわち動作入力始点から動作入力終点までに通過した座標間の距離の累積であってもよい。
動作決定パラメータは、動作入力始点と動作入力終点との間の時間、すなわち始点決定から終点決定までに経過した時間であってもよい。この場合には、たとえば、動作入力始点と動作入力終点との間の時間が1つまたは複数の閾値によって複数の範囲に区分けされ、複数の範囲のそれぞれと動作の種類とを対応付けたデータがROM28aに記憶され、当該データを参照して当該時間に対応する動作の種類が特定される。
動作決定パラメータは、動作入力始点と動作入力終点との間のタッチ移動速度であってもよい。タッチ移動速度は、動作入力始点と動作入力終点との間の長さを動作入力始点と動作入力終点との間の時間で割ることで算出されてよい。あるいは、タッチ移動速度は、動作入力始点から動作入力終点までに通過した座標間の移動速度の平均、最大値や最小値等であってもよい。動作入力始点と動作入力終点との間のタッチ移動速度が当該パラメータとして採用される場合には、たとえば当該タッチ移動速度が1つまたは複数の閾値によって複数の範囲に区分され、当該複数の範囲のそれぞれと動作の種類とを対応付けたデータがROM28aに記憶され、当該データを参照して当該長さに対応する動作の種類が特定される。
動作決定パラメータは、動作入力始点の属するサブ領域と動作入力終点の属するサブ領域の組み合わせであってもよい。つまり、たとえば、動作入力始点の属するサブ領域が領域aであり、かつ、動作入力終点の属するサブ領域が領域dである場合には、動作Aが選択されてよい。この場合には、当該サブ領域の組み合わせと動作の種類とを対応付けたデータがROM28aに記憶され、当該データを参照して当該組み合わせに対応する動作の種類が特定される。
また、動作決定パラメータは、動作入力始点から動作入力終点までにタッチ軌跡が通過したサブ領域であってもよい。つまり、たとえば、始点から終点までの検出座標がサブ領域a、サブ領域b、サブ領域eの順に通過した場合には、動作Bが選択されてよい。この場合には、たとえば、通過したサブ領域の配列と動作の種類とを対応付けたデータがROM28aに記憶され、当該データを参照して当該通過したサブ領域に対応する動作の種類が特定される。
上述のような複数のパラメータのうちの少なくとも1つに基づいて、動作の種類が選択される。動作の種類は複数のパラメータの組み合わせで選択されてもよい。
なお、上述のパラメータのうちの少なくとも1つに基づいて、選択された動作による影響度ないし効果を変化させるようにしてもよい。具体的には、剣を振るような攻撃動作が選択される場合において当該攻撃が敵キャラクタにヒットしたとき、たとえば動作入力始点から動作入力終点までの時間(フレーム数)に応じて、当該攻撃によって与えられるダメージの大きさを変化させてもよい。
また、動作入力領域でスライド入力が行われている場合には、スライド入力の軌跡に基づいて、実行すべき動作に関するゲーム処理を決定するようにしてよい。つまり、たとえば図9に示すように、連続的に検出される座標が所定の軌跡パターンに一致するときは、当該所定の軌跡パターンに対応するゲーム処理を実行するようにしてよい。この場合には、たとえば複数の軌跡とゲーム処理の種類すなわち動作の種類とを対応付けたデータがROM28aに記憶され、当該データに基づいて連続的な検出座標が所定軌跡と一致するか否かが判定される。所定の軌跡パターンと比較判定される連続的な検出座標は、図9に示すように、動作入力始点からの座標であってよい。つまり、第2条件を満足すると判定された後の連続的な検出座標が所定の軌跡を描くか否かが判定される。プレイヤは、軌跡に対応する動作を実行しようとする際には、第2条件を満足する入力操作を行った後に所定の軌跡を描けばよい。また、動作入力始点から動作入力終点までの連続的な検出座標に基づいて軌跡判定をするようにしてもよい。この場合には、プレイヤは、軌跡に対応する動作を実行しようとする際には、第2条件を満足する入力操作を行った後に所定の軌跡を描いて、第3条件を満足する入力操作を行えばよい。あるいは、動作入力始点からの座標に限定せずに、動作入力領域内のスライド入力による検出座標の全てに基づいて軌跡判定を行うようにしてもよい。このように、スライド入力の軌跡に応じて多様なゲーム処理を実行することができる。なお、上述の動作入力始点と動作入力終点とに基づく動作選択と同時に軌跡に基づく動作選択も実行されるような場合には、スライド入力の軌跡に応じて選択されるゲーム処理は、上述の動作入力始点と動作入力終点とに基づいて選択されるゲーム処理とは異なるゲーム処理であってよい。たとえば、特殊な動作に関するゲーム処理がスライド入力の所定の軌跡に応じて選択されてよい。
また、動作入力領域でスライド入力が行われている場合には、スライド入力中の各座標に基づいて、実行すべき動作に関するゲーム処理を決定するようにしてもよい。つまり、たとえば図10に示すように、スライド入力における各タッチ位置に基づいて動作の種類を選択するようにしてよい。一例として、各座標の属するサブ領域に応じて動作の種類を選択するようにしてもよい。この場合には、たとえばサブ領域と動作の種類とを対応付けたデータがROM28aに記憶され、当該データを参照してタッチ位置の属するサブ領域に対応する動作の種類が特定される。スライド入力中の各座標によって実行されるゲーム処理の種類が変わるので、簡単な操作で多様なゲーム処理を実行することができる。
また、このスライド入力中の各座標に基づく動作選択は、スライド入力中の各座標のうちの所定条件を満たす座標のみに基づいて実行されてよい。たとえば、上述の動作入力始点と動作入力終点とに基づく動作選択や軌跡に基づく動作選択と同時に、このスライド入力中の各座標に基づく動作選択も実行されるような場合には、この所定条件は、たとえば動作入力始点から動作入力終点までの間の座標を除く座標であることであってよい。つまり、上述の動作入力始点と動作入力終点とに基づく動作決定における所定の条件(すなわち、動作入力始点と動作入力終点との間の座標であること)を満たさない座標であることであってよい。このような始点終点間以外の座標であることが条件として設定される場合には、動作入力始点を決定するための条件(第2条件)が満足されたと判定される前や、動作入力終点を決定するための条件(第3条件)が満足されたと判定された後のスライド入力中の各座標に基づいて、動作の種類が選択されて、当該選択された動作に関するゲーム処理が実行される。
スライド入力中の各座標に基づいて選択されるゲーム処理は、上述の動作入力始点と動作入力終点とに基づいて選択されるゲーム処理とは異なるゲーム処理であってよい。この場合には、動作入力領域に対する1回のスライド入力に基づいて、多種多様なゲーム処理を実行することができる。たとえば、キャラクタに異なる動作を実行させるようにしてもよい。また、たとえば、スライド入力中の各座標に基づいて選択される動作は、動作入力始点と動作入力終点とに基づく動作の前段階の動作や後段階の動作であってよい。後述する格闘ゲームの実施例では、動作入力始点と動作入力終点とに基づいて決定される動作種類が攻撃に関する動作(たとえば剣を振るモーション)であるので、たとえば、動作入力始点前の各座標に基づいて決定される動作種類は、攻撃準備ないし待機に関する動作(たとえば剣を構えるモーション)であってよい。これによって、プレイヤキャラクタが攻撃動作に入ろうとしていることをプレイヤに知らせることができる。また、たとえば、タッチ位置がサブ領域cに属する場合には、右上位置に剣を構えるモーションが選択されるというように、各サブ領域の動作入力領域における配置位置に対応する待機位置が設定される。したがって、感覚的に把握し易い入力操作が可能である。
動作入力領域においてタップ入力が行われた場合には、図11に示すように、タップ位置に基づいて、動作に関するゲーム処理の種類すなわち動作の種類が選択される。一例として、タップ位置(タップ入力による指示位置)の座標の属するサブ領域に応じて動作の種類が選択されてよい。この場合には、たとえばサブ領域と動作の種類とを対応付けたデータがROM28aに記憶され、当該データを参照してタップ位置の属するサブ領域に対応する動作の種類が特定される。なお、タップ位置の座標は、座標が検出されなくなった
ときの直前の検出座標であってよい。したがって、簡単な操作で多様なゲーム処理を実行することができる。さらに、タップ入力に基づいて選択されるゲーム処理は、上述のスライド入力に基づいて選択されるゲーム処理と異なるゲーム処理であってよい。このように、簡単な入力操作でさらに多様なゲーム処理を実行することができる。後述する格闘ゲームの実施例では、スライド入力に基づく動作種類が攻撃に関連する動作であるので、タップ入力に基づいて選択される動作種類は、防御に関する動作(たとえば盾を構えるモーション)であってよい。また、たとえばタップ位置がサブ領域dである場合には左位置に盾を構えるモーションが選択されるというように、各サブ領域の動作入力領域における配置位置に対応する防御位置が設定される。したがって、直感的で素早い入力操作が可能であり、プレイヤは動作の種類を簡単に制御できる。
一方、操作領域のうち方向入力領域(第2領域)は、プレイヤが方向を指示するための領域であり、この方向入力領域に対する入力座標が検出される場合には、方向に関するゲーム処理(第2のゲーム処理)が実行される。たとえば、方向入力領域の座標が検出されるときは常に方向に関するゲーム処理が実行されるようにしてもよい。
また、動作入力領域の座標が検出された後に連続的に方向入力領域の座標が検出されたときに、方向入力領域での検出座標に基づいて方向に関するゲーム処理が実行されるようにしてもよい。この場合には、プレイヤは、動作に関するゲーム処理のための入力と方向に関するゲーム処理のための入力とを、連続的に行うことができる。このため、たとえば操作領域へのタッチ状態を継続したまま、動作指示入力から方向指示入力に素早く移行することができる。
あるいは、方向入力領域の座標が検出されても、所定の条件が満足されていなければ、方向に関するゲーム処理は実行されないようにしてもよい。たとえば、動作入力領域から連続的な入力が検出された場合には、方向入力領域の座標の検出から一定時間が経過するまでに検出された座標に基づいては、方向に関するゲーム処理が実行されず、一定時間経過後の検出座標に基づいて方向に関するゲーム処理が実行されるようにしてよい。つまり、動作入力領域からの連続的な入力が方向入力領域において検出される場合において、方向入力領域の座標の検出から経過した時間が所定の閾値以上になったことが所定の条件(第1条件)として設定されてよい。たとえば動作入力領域で素早くスライド入力をした後にこのスライド入力が勢い余って方向入力領域にはみ出したような場合でも、一定時間は方向入力領域の検出座標が無視されることとなる。はみ出しの座標のようなプレイヤの意図しない入力に基づいて方向に関するゲーム処理が実行されてしまうのを防止できる。たとえばこの実施例のようにタッチ移動速度が閾値以上であることが動作入力領域における動作入力と見なすための条件の1つに設定されているような場合には、上記のようなはみ出しを無視可能な条件設定はプレイヤにとって有用かつ親切である。プレイヤは、はみ出しを気にしなくてよいので、動作入力領域における素早い入力操作を容易に行える。
なお、逆に、動作入力領域内の座標入力から連続的に方向入力領域内の座標入力をした場合に、動作入力領域内の座標入力から方向入力領域内の座標入力となった直後以降の座標入力について、所定条件が満たされるまでの間は、動作入力領域内の入力座標に基づく動作に関する処理が実行されないようにしてもよい。所定条件は、たとえば、方向入力領域内の座標入力となった直後から一定時間が経過すること、または、当該直後から一定距離(累積距離または直線距離)の連続的な入力があったこと等であってよい。
方向に関するゲーム処理は、方向入力領域で検出された座標に基づいて実行される。たとえば、方向入力領域の検出座標に応じて仮想ゲーム世界における方向を決定し、当該決定された方向に基づいて、方向に関するゲーム処理を実行するようにしてよい。
具体的には、方向入力領域には、異なる方向の割り当てられた複数のサブ領域が設けられてよい。図12(A)では、一例として代表的な8つの方向が複数のサブ領域に対応付けられる。すなわち、前方入力領域、右斜め前方入力領域、右方入力領域、右斜め後方入力領域、後方入力領域、左斜め後方入力領域、左方入力領域および左斜め前方入力領域が設けられる。入力座標の属するサブ領域に対応付けられた方向が、入力された方向として決定される。たとえば、方向入力領域の各座標の属するサブ領域を示すデータと各サブ領域に対応付けられた方向を示すデータがROM28aに記憶されていて、当該データを参照して、入力座標の属するサブ領域が検出され当該サブ領域に対応する方向が特定される。なお、方向入力領域の各座標ごとの方向を示すデータが予め記憶されてもよい。
図12(A)の例で各サブ領域に対応付けられた入力方向は、操作領域において動作入力領域から上方向(Y軸正方向)を前方に規定したとき、動作入力領域の所定座標(たとえば中心座標)から見て各サブ領域の存在する方向に相当する。つまり、プレイヤが操作領域に向かったときに、手前側が後方に向こう側が前方に対応するとともに左右側がそれぞれ左右方向に対応するというように、プレイヤにとって感覚的に把握し易いように各サブ領域の方向が設定されている。したがって、プレイヤは所望の方向の指示を直感的かつ容易に行うことができる。
なお、方向入力領域で入力される方向は、LCD12の画面内における方向であってもよい。つまり、図12(A)の例で、前方が上方向に置き換えられ、後方が下方向に置き換えられてよい。
方向入力領域は、各サブ領域の存在をプレイヤに明示するために、各サブ領域を色分けや線引き等で区別可能な画像を用いて表示されてもよい。あるいは、方向入力領域は各サブ領域を区別不可能な画像で表示されてもよいが、この場合であっても、プレイヤが方向を感覚的に把握し易い位置に各サブ領域が配置されているので、方向指示入力は容易に行える。
このように所定の方向が対応付けられた複数のサブ領域を設ける場合には、たとえば上下左右の方向が各押下げ部に割り当てられた従来の方向指示スイッチ(十字スイッチ)を用いた操作と似た感覚で方向入力を行えることとなる。たとえば、方向指示スイッチと同様に、仮想ゲーム世界(たとえば3次元または2次元ゲーム空間)におけるプレイヤキャラクタのような操作対象に対する方向指示や、表示画面内のカーソルのような操作対象に対する方向指示などのための入力を行える。
また、方向に関するゲーム処理は、動作入力領域の所定座標を基準とする入力座標の相対座標に基づいて実行されてよい。基準座標としての動作入力領域の所定座標はその中心座標であってよく、あるいは予め定められた他の座標であってもよい。たとえば、方向入力領域の検出座標と動作入力領域の所定座標との相対的な位置関係に基づいて、入力方向や入力量が決定され、当該入力方向や入力量に従ってゲーム処理が実行される。したがって、方向に関するゲーム処理を実行しようとする際には、プレイヤは、動作入力領域の所定座標からの方向、角度あるいは距離のような相対的な位置関係を考慮しつつ方向入力領域で入力すればよい。このように、感覚的に把握し易い相対量によって方向に関するゲーム処理を制御できるので、方向に関するゲーム処理を簡単かつ直感的な入力で実行できる。
入力方向は、たとえば、方向入力領域の検出座標と動作入力領域の所定座標とを結ぶ方向と、操作領域における所定方向とのなす角度に応じて決定されてよい。つまり、操作領域の所定方向を基準としたとき動作入力領域の所定座標から見て検出座標の存在する方向を、入力方向として決定してよい。
具体的には、入力方向は、図12(B)に示すように、動作入力領域の中心座標を基準とする入力座標の相対座標に基づいて決定されてよい。動作入力領域の中心座標を原点とし、かつ、入力座標系のX軸およびY軸の方向とそれぞれ同一方向のX´軸およびY´軸を有する座標系をX´Y´座標系とすると、入力座標の相対座標は、入力座標系における検出座標(X,Y)をX´Y´座標系の座標(X´,Y´)に変換することによって算出される。この相対座標の示すベクトルの方向が入力方向として決定されてよい。別の表現を使えば、入力座標と中心座標とを結ぶ線の傾きに基づいて、もしくは入力座標と中心座標とを結ぶ線の方向と所定の方向(X´軸もしくはY´軸)とのなす角度に基づいて、入力方向が決定されてもよい。
このようなサブ領域が設けられない方向入力領域でも、上述のサブ領域が設けられる場合と同様に、プレイヤにとって感覚的に把握し易い方向設定がなされるのが望ましい。つまり、たとえば、プレイヤが操作領域に向かったときに、動作入力領域の所定座標から手前側が後方(もしくは下方)に、向こう側が前方(もしくは上方)に、左右側が左右方向にそれぞれ対応付けられてよい。
入力量は、動作入力領域の所定座標(たとえば中心座標)からの距離に応じて決定されてよく、たとえば、相対座標の示すベクトルの大きさが入力量として決定されてよい。具体的には、動作入力領域の中心座標を基準とする入力座標のX方向成分(すなわちX´座標)の大きさが、X´軸に対応する方向(たとえば左右方向)への入力量として決定され、かつ、動作入力領域の中心座標を基準とする入力座標のY方向成分(すなわちY´座標)の大きさがY´軸に対応する方向(たとえば前後ないし上下方向)への入力量として決定されてよい。
このように動作入力領域の所定座標を基準としたときの入力座標の方向と距離に応じて入力方向と入力量とが決められるので、プレイヤは所望の方向および入力量の指示を容易に行うことができる。たとえば傾斜方向と傾斜量によって入力方向と入力量が決められる従来のアナログジョイスティックを用いた操作と似た感覚で方向入力を行える。
方向に関するゲーム処理は、たとえば、仮想3次元空間内に登場するプレイヤキャラクタやゲーム画面を生成するための仮想カメラの移動を制御するためのゲーム処理であってもよいし、プレイヤキャラクタや仮想カメラの向きを制御するためのゲーム処理であってもよい。
プレイヤキャラクタのような操作対象の移動を制御する場合には、上述の図12(A)と同様に、方向入力領域に移動方向の割り当てられた複数のサブ領域が形成されてよい。そして、入力座標の属するサブ領域に対応付けられた方向が操作対象の移動方向として決定されてよい。なお、移動を制御する場合の方向入力領域を移動入力領域と呼ぶこともある。または、上述の図12(B)と同様に、動作入力領域の所定座標を基準とする入力座標の相対座標に基づいて、操作対象の移動方向および移動量が決定されるようにしてもよい。たとえば、動作入力領域内の所定座標から方向入力領域内の入力座標に向かう方向に基づいて、仮想ゲーム世界における移動方向を決定するようにしてよい。後述する格闘ゲームの実施例では、プレイヤキャラクタの移動方向および移動量が入力座標の相対座標に基づいて決定される。つまり、操作対象の移動方向や移動量などは、移動入力領域の入力座標の動作入力領域の中心座標からの方向、角度あるいは距離のような相対的な位置関係に基づいて制御されることとなる。したがって、動作入力領域の中心座標との相対的な位置関係を考慮した移動入力領域への簡単で直感的な入力で、操作対象の移動を制御することができる。
プレイヤキャラクタを移動させる際には、プレイヤキャラクタがたとえば手足を動かして移動のための動作を行いつつある場所から別の場所へ行く画面を表示する必要がある。このプレイヤキャラクタの移動時の動作の見え方は移動方向に応じて本来異なるものである。たとえばプレイヤキャラクタの360度の移動方向のそれぞれに対応する移動モーションデータを予め準備してもよいが、これは非効率的である。そのため、実施例では、移動入力領域にたとえば代表的な移動方向への移動モーションに対応付けた複数のサブ領域を設けるようにしている。そして、入力座標の属するサブ領域に応じてプレイヤキャラクタの移動モーションが選択される。
具体的には、移動入力領域は、図13(A)に示すように、たとえば8つの代表的な移動方向に対応付けた8つのサブ領域に分割されてよい。つまり、前方移動モーション領域、右斜め前方移動モーション領域、右方移動モーション領域、右斜め後方移動モーション領域、後方移動モーション領域、左斜め後方移動モーション領域、左方移動モーション領域、および左斜め前方移動モーション領域が設けられてよい。移動入力領域の各座標の属するサブ領域を示すデータと各サブ領域に対応付けられた移動モーションデータがROM28aに記憶されていて、当該データを参照して、入力座標の属するサブ領域が検出され当該サブ領域に対応する移動モーションが特定される。この移動入力領域は、サブ領域を区別可能な画像で表示されてもよいし、サブ領域を区別不可能な画像で表示されてもよい。
なお、この移動入力領域でも、プレイヤにとって感覚的に把握し易い移動方向設定がなされるのが望ましい。たとえば、操作領域の上方向(Y軸正方向)がプレイヤキャラクタの現在の向きに対応付けられてよい。この場合には、図13(A)に示すように、プレイヤが操作領域に向かったときに、動作入力領域から向こう側の領域がプレイヤキャラクタの前方移動に、手前側の領域がプレイヤキャラクタの後方移動に、左右側の領域がプレイヤキャラクタの左右方向移動にそれぞれ対応付けられる。また、たとえば、操作領域の上方向(Y軸正方向)が、仮想3次元ゲーム空間を撮影する仮想カメラの向きに対応付けられてよい。この場合には、プレイヤが操作領域に向かったときに、動作入力領域から向こう側の領域がLCD12のゲーム空間表示画面の奥行き方向への移動に、手前側の領域が表示画面の手前方向への移動に、左右側の領域が表示画面の左右方向への移動にそれぞれ対応付けられる。
操作対象のゲーム空間内における移動方向は、たとえば上述の図12(B)の入力方向の場合と同様に、相対座標の示すベクトルの方向に応じて決定されてよい。
この実施例では、入力座標の相対座標に基づいて移動方向を算出し、当該移動方向と所定の移動速度に基づいて、移動量を算出するようにしている。具体的には、図13(B)に示すように、入力座標系において、入力座標が(X,Y)であり、動作入力領域の中心座標が(Xc,Yc)であるとする。また、中心座標を原点とし入力座標系のX軸およびY軸にそれぞれ平行なX´軸およびY´軸を有する座標系をX´Y´座標系と呼ぶものとする。相対座標は入力座標をX´Y´座標系に変換した座標であり、つまり、相対座標(X´,Y´)は(X−Xc,Y−Yc)である。移動方向は、動作入力領域の基準座標(中心座標)から見て入力座標の存在する方向に応じて、つまり、相対座標の示すベクトルの方向に応じて決定されてよい。中心座標と入力座標とを結ぶ方向と操作領域における所定方向(たとえばX´軸)とのなす角度をθとすると、角度θは、Y´座標(Y−Yc)のX´座標(X−Xc)に対する比の逆正接(アークタンジェント)によって算出される。この角度θに応じて、ゲーム空間におけるプレイヤキャラクタのような操作対象の移動方向が決定される。
操作対象のゲーム空間内における移動量は、たとえば上述の図12(B)の入力量の場合と同様に、相対座標の示すベクトルの大きさに応じて決定されてよい。また、操作対象の移動量は、X´軸方向成分とY´軸方向成分とに分解して算出されてよい。つまり、たとえば、X´座標の大きさがX´軸方向に対応する方向への移動量として決定され、かつ、Y´座標の大きさがY´軸方向に対応する方向への移動量として決定されてよい。あるいは、移動量は、移動方向(角度θ)のX´軸方向成分およびY´軸方向成分に移動速度を掛けることによって算出されてもよい。つまり、X´軸方向に対応する方向への移動成分は、角度θの余弦に移動速度を掛けることによって算出され、Y´軸方向に対応する方向への移動成分は、角度θの正弦に移動速度を掛けることによって算出されてよい。
移動速度は、移動入力領域の全ての座標で同一の所定の値であってもよいが、動作入力領域の所定の基準座標(中心座標)からの距離に応じて変化されてよい。たとえば、中心座標からの距離が大きいほど移動速度は大きくされてよい。この実施例では、図14に示すように、移動入力領域には、動作入力領域の外側に通常移動領域が設けられ、当該通常移動領域の外側にダッシュ移動領域が設けられる。通常移動領域は動作入力領域の基準座標から所定距離以内のサブ領域であり、ダッシュ移動領域は動作入力領域の基準座標から所定距離を超えたサブ領域である。なお、両サブ領域は画像上では区別不可能であってもよいし、線引きや色分け等で区別可能であってもよい。
通常移動領域には比較的遅い移動速度が対応付けられ、ダッシュ移動領域には比較的速い移動速度が対応付けられる。たとえば、移動入力領域の各座標の所属するサブ領域を示すデータとサブ領域ごとの移動速度を示すデータがROM28aに記憶され、当該データを参照して、入力座標の属するサブ領域が検出されて、移動速度が特定される。なお、移動速度は、実験により体感的に決定した固定値である。移動速度の値は、常に一定であってもよいし、たとえば所定数の処理フレームをかけて所定の初速度から所定の目標速度まで変化されてもよい。たとえば、通常移動領域の移動速度は、初速を遅い値に設定し、初速から目標速度まで徐々に速くなるように変化されてよいし、ダッシュ移動領域の移動速度は、初速を速い値に設定し、初速から目標速度まで徐々に遅くなるように変化されてよい。
この移動入力領域でも、上述の図13(A)の場合と同様にして、プレイヤにとって感覚的に把握し易い移動方向設定がなされるのが望ましい。たとえば、操作領域の上方向(Y軸正方向)をプレイヤキャラクタの向きに対応付ける場合には、プレイヤが操作領域に向かったときに、動作入力領域から向こう側の領域がプレイヤキャラクタの前方に、手前側の領域がプレイヤキャラクタの後方に、左右側の領域がプレイヤキャラクタの左右方向にそれぞれ対応付けられる。この場合、X´軸方向の移動成分がプレイヤキャラクタの左右方向への移動量に相当し、Y´軸方向の移動成分がプレイヤキャラクタの前後方向への移動量に相当する。また、たとえば、操作領域の上方向(Y軸正方向)を、仮想3次元ゲーム空間を撮影する仮想カメラの向きに対応付ける場合には、プレイヤが操作領域に向かったときに、動作入力領域から向こう側の領域がLCD12のゲーム空間表示画面の奥行き方向に、手前側の領域が表示画面の手前方向に、左右側の領域が表示画面の左右方向にそれぞれ対応付けられる。この場合、X´軸方向の移動成分が仮想カメラの向きに直交する方向への操作対象の移動量に相当し、Y´軸方向の移動成分が仮想カメラの向きまたはその反対方向への操作対象の移動量に相当する。
なお、操作対象の移動制御の場合には、操作対象の向きがターゲット(所定のオブジェクトまたは所定の位置等)の存在する方向となるように自動的に制御するようにしてもよい。具体的には、プレイヤキャラクタの移動制御では、プレイヤキャラクタがターゲットオブジェクトの存在方向を向くように制御されてよいし、仮想カメラの移動制御では、仮想カメラがターゲットオブジェクトの存在する方向を向くように制御されてよい。このようにすると、プレイヤキャラクタが常にターゲットオブジェクトの方を向き、またはターゲットオブジェクトを常に中央部にとらえたゲーム画像が生成される。したがって、プレイヤキャラクタや仮想カメラの注視点を常にターゲットの位置に注目させることができるので、プレイヤにターゲットを常に意識させることができるとともに、注目すべきオブジェクトや位置がいずれであるかをプレイヤに容易にかつ明確に知らせることができる。
そして、このようなターゲット注目制御を行う場合において、図15に示すように、X´軸方向の移動成分に基づく操作対象の左右方向への移動は、たとえば、ターゲットオブジェクトの存在する位置を中心とし、かつ、ターゲットオブジェクトと操作対象との間の距離を半径とする円の円周上に位置するように制御されてよい。そして、Y´軸方向の移動成分に基づく操作対象の前後方向への移動は、ターゲットオブジェクトとプレイヤキャラクタまたは仮想カメラとを結ぶ直線の方向に制御されてよく、具体的にはターゲットオブジェクトの存在する方向へ近付きまたはその反対方向へ離れるように制御されてよい。詳しくは、操作対象がプレイヤキャラクタであり、プレイヤキャラクタの向きが操作領域の上方向(Y軸正方向)に対応付けられる場合には、X´軸正方向への移動成分が上記円周上の右方向(反時計回り方向)への移動量に相当し、X´軸負方向への移動成分が上記円周上の左方向(時計回り方向)への移動量に相当する。また、Y´軸正方向への移動成分がプレイヤキャラクタの向いている方向すなわちターゲットオブジェクトの存在する方向への移動量に相当し、Y´軸負方向への移動成分がプレイヤキャラクタの向いている方向と反対方向への移動量に相当する。また、操作対象が仮想カメラであり、仮想カメラの向きが操作領域の上方向(Y軸正方向)に対応付けられる場合にも、上記プレイヤキャラクタの向きを基準とした場合と同様にして、X´軸正方向への移動成分が上記円周上の右方向(反時計回り方向)への移動量に相当し、X´軸負方向への移動成分が上記円周上の左方向(時計回り方向)への移動量に相当する。また、Y´軸正方向への移動成分が仮想カメラの向いている方向すなわちターゲットオブジェクトの存在する方向への移動量に相当し、Y´軸負方向への移動成分が仮想カメラの向いている方向と反対方向への移動量に相当する。たとえば、X´軸方向のみの入力があった場合には、操作対象とターゲットとの間の距離が変化せずに、操作対象がターゲットオブジェクトの周りを一定距離を保ったまま旋回するように移動される。このように、ターゲットオブジェクトを極めて容易に注目させつつ操作対象を移動させることができる。
なお、この実施例では、XY座標系を使用したが、他の実施例では、たとえば、ターゲットからプレイヤキャラクタまでの距離r、およびターゲットとプレイヤキャラクタとを結ぶ所定方向を基準とした移動方向の回転角θで表現した極座標系を使用してもよい。
そして、操作対象の移動後の座標は、現在の座標、移動方向および移動量に基づいて算出される。たとえば、上述の左右方向への移動量に基づいて仮想3次元ゲーム空間のワールド座標系での各軸方向の移動成分を算出し、算出した移動成分を現在の座標に加算することによって、ワールド座標系での移動後の座標が算出される。さらに、上述の前後方向への移動量に基づいて、ワールド座標系での各軸方向の移動成分を算出し、算出した移動成分を、上記左右方向移動後の座標に加算することによって、ワールド座標系での移動語の座標が算出される。
このようにして、入力座標の動作入力領域の所定座標を基準とした相対座標に基づいて決定された移動モーション、移動方向および移動量に従って、プレイヤキャラクタの移動が制御される。
このゲーム装置10では、一例として、プレイヤキャラクタと敵キャラクタとが剣と盾を持って格闘するゲームが実行される。他の実施例では、他の種類のゲームが実行されてもよいのは勿論である。
図16および図17には、ROM28aのメモリマップの一例が示される。なお、図16および図17にはメモリマップの一部のみが示されており、ROM28aには、ゲームやアプリケーションの実行に必要なプログラムおよびデータが記憶されている。
モーションデータ記憶領域70には、プレイヤキャラクタに仮想ゲーム空間内で所定の動作を実行させるための複数のモーションデータ(動作定義データ)が記憶されている。各モーションデータはその識別情報に対応付けて記憶される。
図16を参照して、剣モーションは剣を用いた攻撃動作であり、この実施例では、剣を振り始める位置および剣を振る軌道に応じて異なる複数のモーションを含む。各剣モーションの識別情報は、剣を振り始める位置および剣を振る軌道に対応付けられている。この実施例では、剣を振り始める位置は、動作入力始点の属するサブ領域によって決まる。図8に示すサブ領域a―iには、それぞれ、左上、上、右上、左、中央(正面)、右、左下、下および右下が対応付けられる。また、剣を振る軌道は、動作入力始点と動作入力終点との間の傾きに応じて決まる。具体的には、剣を降る軌道は、後述する判定データに基づいて、始点と終点とを結ぶ線の傾き(始点から終点までのベクトルの向き)または始点終点間における各サンプリング点間の最大傾き等によって決まり、たとえば右下方向、真下方向、左下方向、右水平方向、左水平方向、右上方向、真上方向および左上方向を含む。一例として、動作入力始点がサブ領域aに属しかつ傾きが右下方向である場合には、左上から右下方向へ剣を振るモーションが選択される。また、たとえば、動作入力始点がサブ領域bに属しかつ傾きが右水平方向である場合には、真上から右水平方向に剣を降るモーションが選択される。なお、傾き量に応じて剣を振る角度を変えるようにしてもよい。
構えモーションは、攻撃前に剣を構える動作であり、剣を構える位置に応じて異なる複数のモーションを含む。剣を構える位置は、この実施例では、動作入力領域におけるスライド入力のうち動作入力始点から動作入力終点までを除く各座標の属するサブ領域によって決まる。図8に示すサブ領域a―iには、それぞれ、左上、上、右上、左、中央(正面)、右、左下、下および右下が対応付けられる。一例として、検出座標がサブ領域aに属する場合には、左上位置に剣を振りかぶって構えるモーションが選択される。
防御モーションは、盾を用いた防御動作であり、盾を構える位置に応じて異なる複数のモーションを含む。盾を構える位置は、この実施例では、動作入力領域におけるタップ入力による座標の属するサブ領域に応じて決まる。図8に示すサブ領域a―iには、それぞれ、左上、上、右上、左、中央(正面)、右、左下、下および右下が対応付けられる。一例として、タップ入力座標がサブ領域aに属する場合には、左上位置に盾を構えるモーションが選択される。
特殊攻撃モーションは、通常の剣モーションとは異なる特殊な攻撃動作であり、軌跡パターンに応じて異なる複数のモーションを含む。この実施例では、動作入力始点からのスライド軌跡と軌跡パターンデータとを照合し、一致した場合には、対応する特殊攻撃動作が実行される。なお、スライド軌跡としては、動作入力領域内の全てのスライド入力の軌跡を取得してもよいし、タッチオンからタッチオフまでのスライド入力の軌跡を取得してもよいし、あるいは、動作入力領域に入ってから出るまでのスライド入力の軌跡を取得してもよい。
ニュートラルモーションは、入力が無いときにプレイヤキャラクタに実行させる動作であり、たとえば特段剣も盾も構えずに自然体のポーズである。
図17を参照して、移動モーションは、移動時における動作であり、移動方向に応じて異なる複数のモーションを含む。移動方向は、この実施例では、移動入力領域における検出座標の属するサブ領域によって決まり、図13(A)に示すように、たとえば前方、右斜め前方、右方、右斜め後方、後方、左斜め後方、左方および左斜め前方を含む。一例として、入力座標が前方領域に属する場合には、前方移動モーションが選択される。
軌跡パターンデータ記憶領域72には、スライド入力の軌跡と照合される複数の軌跡パターンに関するデータが記憶される。軌跡パターンとしては、たとえば直線、曲線、円、三角、四角、多角形、文字、記号といった一筆書き可能でありしかも容易に描画および識別可能である図形が使用されるのが望ましい。軌跡パターンデータは、たとえば、当該図形を示す複数の座標データ(座標群データ)、当該図形の寸法や原点等を示す図形パラメータデータを含む。入力軌跡と各軌跡パターンとを照合して、入力軌跡に一致する軌跡パターンを検出する。
記憶領域74には、軌跡パターンと特殊攻撃モーションとの対応データが記憶されている。たとえば軌跡パターンの識別情報と特殊攻撃モーションの識別情報とが対応付けられている。このデータに基づいて、入力軌跡に対応する特殊攻撃モーションが特定される。
領域データ記憶領域76には、操作領域に設けられる動作入力領域および方向入力領域を定義する領域データが記憶されている。この領域データに基づいて、入力座標が動作入力領域かまたは方向入力領域に属するのかが特定される。また、入力座標が動作入力領域および方向入力領域におけるどのサブ領域に属するのかが特定される。たとえば、領域データは、動作入力領域と方向入力領域の境界を示すデータ、当該境界を挟んでどちらが動作入力領域か方向入力領域かを示すデータ等を含んでよい。また、領域データは、動作入力領域または方向入力領域が所定の図形で示される場合には、当該図形の寸法や原点等を示す図形パラメータデータを含んでよい。また、領域データは、相対座標を算出する際の基準座標としての動作入力領域の所定座標を示す座標データを含んでよい。たとえば、動作入力領域が図4に示したように円形である場合には、当該円の中心座標データおよび半径データを含んでよい。あるいは、領域データは、動作入力領域に属する座標と方向入力領域に属する座標とを示す座標群データを含んでよい。または、領域データは、操作領域の各座標ごとの所属する領域(動作入力領域か方向入力領域)を示すデータであってもよい。また、動作入力領域に図8に示したように複数のサブ領域が設けられる場合には、たとえば各座標ごとの所属するサブ領域を示すデータが記憶されてよい。また、方向入力領域に図12等に示したように複数のサブ領域が設けられる場合には、たとえば各座標ごとの所属するサブ領域を示すデータが記憶されてよい。さらに、動作入力領域の各サブ領域と構えモーションの識別情報とを対応付けたデータ、動作入力領域の各サブ領域と防御モーションの識別情報とを対応付けたデータが記憶されてよい。また、方向入力領域の各サブ領域と移動モーションとを対応付けたデータが記憶されてよい。また、方向入力領域の各サブ領域と移動速度とを対応付けたデータが記憶されてよい。なお、この領域データはプログラム内データであってよい。
判定データ記憶領域78には、剣モーションにおける剣を振る軌道を特定するための判定データが記憶される。たとえば、この判定データでは、動作入力始点と動作入力終点との間の傾きと、剣を振る軌道とが対応付けられている。傾きは、たとえば始点から終点へのベクトルの向き、または始点と終点を結ぶ線の所定方向に対する角度等であってよく、図18に示すように、複数の範囲(この実施例では8つ)に分けられている。具体的には、傾きがα1からα2の範囲つまり左下方向を示すときには左下方向への振りが選択され、傾きがα2からα3の範囲(つまり左水平方向)を示すときには左水平方向への振りが選択され、傾きがα3からα4の範囲(つまり左上方向)を示すときには左上方向への振りが選択され、傾きがα4からα5の範囲(つまり真上方向)を示すときには真上方向への振りが選択され、傾きがα5からα6の範囲(つまり右上方向)を示すときには右上方向への振りが選択、傾きがα6からα7の範囲(つまり右水平方向)を示すときには右水平方向への振りが選択され、傾きがα7からα8の範囲(つまり右下方向)を示すときには右下方向への振りが選択され、傾きがα8からα1の範囲(つまり真下方向)を示すときには真下方向への振りが選択される。
図19には、RAM48のメモリマップの一例が示される。入力座標記憶領域90には、今回のフレームで検出されたタッチ座標を示すデータが記憶される。前回入力座標記憶領域92には、前回のフレームで検出されたタッチ座標を示すデータが記憶される。軌跡記憶領域94には、動作入力領域におけるプレイヤのスライド入力によって連続的に検出された入力座標の時系列すなわち入力軌跡を示すデータが記憶される。この実施例では、動作入力始点からの座標が記憶される。
動作入力始点記憶領域96には、動作入力始点の判定条件を満たしたときのタッチ座標を示すデータが記憶される。動作入力終点記憶領域98には、動作入力終点の判定条件を満たしたときのタッチ座標を示すデータが記憶される。累積距離記憶領域100には、動作入力始点から移動した道のりの距離を示すデータが記憶される。
タッチ開始時フレーム番号記憶領域102には、タッチオフ状態からタッチオン状態に変化したとき、すなわち、タッチ入力が開始されたときのフレーム番号を示すデータが記憶される。動作入力中フラグ記憶領域104には、動作入力領域における動作入力が行われているか否かを示すフラグが記憶される。この実施例では、動作入力始点が決定されてから動作入力終点が決定されるまでが動作入力中の状態であると見なされる。
プレイヤキャラクタ位置記憶領域106には、仮想ゲーム空間におけるプレイヤキャラクタが存在する位置の座標を示すデータが記憶される。プレイヤキャラクタ向きベクトル記憶領域108には、仮想ゲーム空間におけるプレイヤキャラクタの向きを示すベクトルを示すデータが記憶される。敵キャラクタ位置記憶領域110には、仮想ゲーム空間における敵キャラクタが存在する位置の座標を示すデータが記憶される。
入力無視フラグ記憶領域112には、入力座標を無視するか否かを示すフラグが記憶される。この実施例では、動作入力領域から連続的に方向入力領域の座標が検出された場合に、方向入力領域の座標が検出され始めてから一定時間が経過するまでの間は、この入力無視フラグがオンにされて、その間の検出座標に基づいては、方向に関するゲーム処理が実行されない。
選択モーション記憶領域114には、実行されるべきモーションとして選択されたモーションデータを示すデータが記憶される。また、その他のデータ領域116には、上述のデータ以外でゲーム処理の実行に必要なデータが記憶される。たとえば、プレイヤキャラクタ等を含むゲーム空間を示すゲーム画像を生成するための画像データ、BGMや効果音等の音を出力するためのサウンドデータ等が記憶されてよい。
図20を参照して、格闘ゲームの実施例におけるスライド入力に基づく動作の具体例を説明する。なお、この実施例では、動作入力始点の判定条件として、タッチ移動速度が所定の閾値以上になったことが設定され、動作入力終点の判定条件として、動作入力始点からの累積移動距離が所定の閾値以上になったことが設定されている。図20では、プレイヤによって、動作入力領域でタッチ入力が開始され、その後スライド入力が行われて移動入力領域へタッチ位置が移動している。符号t1、t2、…はフレーム番号を示しており、t1、t2、…の付与された丸印および星印は、当該フレームにおける検出座標を示している。
t1からt5では、各検出座標はサブ領域gに属する。動作入力始点の判定条件は満足されていない。したがって、サブ領域gに対応する左下に剣を構えるモーションが実行される。次のt6でも動作入力始点の判定条件が満足されていないので、検出座標の属するサブ領域hに対応する真下位置に剣を構えるモーションが実行される。
t7では、検出座標はサブ領域eに属するので、正面位置に剣を構えるモーションが実行される。続くt8では、t7での座標とt8での座標との間の距離が所定の閾値以上になったので、つまり、タッチ移動速度が所定の閾値以上になったので、動作入力始点の条件が満足されたと判定される。したがって、t7での検出座標が動作入力始点に決定される。また、t8では、前回と同じモーションすなわち正面位置に剣を構える動作が実行される。
続くt9およびt10では、動作入力終点の判定条件が満足されていない。したがって、t9およびt10でも、前回のモーションが保持される。
t11では、動作入力始点からの累積距離、すなわち、t7とt8の間の距離、t8とt9の間の距離、t9とt10の間の距離およびt10とt11との間の距離の総和が所定の閾値以上になったので、動作入力終点の条件が満足されたと判定される。したがって、t11での検出座標が動作入力終点に決定される。さらに、動作入力終点t11と動作入力始点t7の間の傾きの判定が行われ、剣を振る軌道は右水平方向であると判定される。したがって、動作入力始点と動作入力終点に基づく動作として、正面位置から右水平方向へ剣を振るモーションが実行される。
その後、t12およびt13では、検出座標は、サブ領域cに属し、かつ、動作入力始点終点間の座標ではないので、右上位置に剣を構えるモーションが実行される。
続いて、t14では、動作入力領域から連続的に移動入力領域の座標が検出されているので、この実施例ではt14から一定時間が経過するまでは、移動入力領域における検出座標は無視される。したがって、t14からt16での検出座標に基づく移動処理は実行されない。このため、動作制御のための素早いスライド入力が方向入力領域にはみ出しても無視されるので、プレイヤの意図していない入力に基づいて移動処理が実行されるのを防止できる。
そして、t17以降では、移動入力領域における検出が開始されてから一定時間が経過したので、移動処理が実行される。すなわち、移動入力領域における検出座標に基づいて、移動モーションが選択されるとともに、当該検出座標に基づいて決定された移動方向および移動量に従った移動処理が実行される。したがって、プレイヤは、動作入力領域と移動入力領域とを跨ぐような連続的な入力操作によって、意図どおりの動作制御と移動制御とを容易にかつ素早く行うことができる。
図20および図21には、上述の格闘ゲームの実施例の場合のゲーム装置10の動作の一例が示される。図20および図21のゲーム処理は、一定時間(たとえば1フレーム)ごとに繰り返し実行される。CPUコア42はフレーム番号をカウントしつつ当該フレームにおける処理を実行する。
ゲーム処理を開始すると、CPUコア42は、まずステップS1で、タッチ座標の検出が有りか無しかを判定する。具体的には、CPUコア42は、タッチパネル22からのタッチ入力データをI/F回路54のバッファから取得して、当該タッチ入力データにタッチ入力有りを示すデータが含まれるか否かを判断する。ステップS1で“YES”であれば、CPUコア42は、ステップS3で、タッチ入力データからタッチ位置の座標を示すタッチ座標データを取得してRAM48のワークエリアに記憶する。
続いて、ステップS5で、CPUコア42は、タッチ座標は方向入力領域内であるか否かを、領域データ記憶領域76のデータに基づいて判断する。ステップS5で“YES”であれば、つまり、方向入力領域でタッチ入力が行われている場合には、CPUコア42は、ステップS7で、入力座標記憶領域90に記憶されている座標データを、前回入力座標記憶領域92に記憶する。なお、入力座標記憶領域90には、初期値としては入力無しを示すデータが記憶され、前回のフレームでタッチ入力が検出されていなかった場合にも入力無しを示すデータが記憶され、前回のフレームでタッチ入力が検出されていた場合にはその検出座標データが記憶されている。続くステップS9で、CPUコア42は、ステップS3で検出されたタッチ座標を入力座標記憶領域90に記憶する。
そして、ステップS11で、CPUコア42は、今回方向入力領域内で検出された座標が動作入力領域から連続的に検出されたか否かを判断する。たとえば、CPUコア42は、前回入力座標記憶領域92のデータと領域データ記憶領域76のデータに基づいて、前回の入力座標が動作入力領域内であるか否かを判断する。
ステップS11で“YES”であれば、CPUコア42は、ステップS13で無視フラグをオンにする。つまり、CPUコア42は、入力無視フラグ記憶領域112にたとえば「1」を記憶する。また、ステップS15で、CPUコア42は、RAM48の所定領域に設けたカウンタをクリアし、たとえば初期値「0」を記憶する。このカウンタは、動作入力領域から方向入力領域への連続的な入力が行われた場合に、方向入力領域での座標が検出され始めてから経過した時間(フレーム数)を計測するためのものである。なお、ステップS15を終了すると、処理は図22のステップS43へ進む。
一方、ステップS11で“NO”であれば、つまり、前回入力座標が動作入力領域内ではなかった場合には、CPUコア42は、ステップS17で、入力無視フラグ記憶領域112のデータを参照して、無視フラグはオンであるか否かを判断する。ステップS17で“YES”であれば、CPUコア42は、ステップS19でカウンタが所定の閾値を超えたか否かを判断する。ステップS19で“NO”であれば、つまり、動作入力領域から連続する入力において方向入力領域での座標が検出され始めてから未だ一定時間が経過していない場合には、CPUコア42は、ステップS21でカウンタをインクリメントし、図22のステップS43へ進む。一方、ステップS19で“YES”であれば、つまり、動作入力領域から連続する入力において方向入力領域での座標が検出され始めてから一定時間経過した場合には、CPUコア42は、ステップS23で無視フラグをオフにする。つまり、CPUコア42は、入力無視フラグ記憶領域112にたとえば「0」を記憶する。
ステップS23を終了し、または、ステップS17で“NO”の場合、つまり、無視フラグがオフになっている場合には、CPUコア42は、ステップS25で、移動動作処理を実行する。この移動動作処理の詳細は後述する図23に示される。移動動作処理では、たとえば、プレイヤキャラクタの移動後の位置が算出されるとともに移動モーションが決定される。ステップS25を終了すると、CPUコア42は、ステップS27で軌跡記憶領域94のデータを消去する。方向入力領域における入力が行われたので、それ以前の動作入力領域における入力で取得されていた軌跡データを消去することができる。ステップS27を終了すると処理は図22のステップS43に進められる。
また、ステップS5で“NO”であれば、CPUコア42は、ステップS29で、タッチ座標が動作入力領域内であるか否かを領域データ記憶領域76のデータに基づいて判断する。ステップS29で“YES”であれば、つまり、動作入力領域でタッチ入力が行われている場合には、続くステップS31で、CPUコア42は剣・構え動作処理を実行する。この剣・構え動作処理の詳細は後述する図24および図25に示される。剣・構え動作処理では、プレイヤキャラクタの攻撃動作が決定される。ステップS31を終了し、または、ステップS29で“NO”であれば、処理は図22のステップS43へ進められる。
また、ステップS1で“NO”であれば、つまり、タッチ入力が行われていない場合には、処理は図22のステップS33へ進められる。
図22のステップS33では、CPUコア42は、軌跡記憶領域94のデータを消去する。つまり、動作入力始点からのスライド入力の軌跡を消去する。
続いて、ステップS35で、CPUコア42は、タッチオン状態(タッチ入力有りの状態)からタッチオフ状態(タッチ入力無しの状態)に変化したか否かを判断する。たとえば、CPUコア42は、入力座標記憶領域90に座標データが記憶されているか否か、すなわち、前回フレームではタッチ座標が検出されていたのか否かを判断する。
ステップS35で“YES”であれば、CPUコア42は、ステップS37で防御動作処理を実行する。防御動作は、動作入力領域におけるタップ入力に基づいて実行される。この防御動作処理の詳細は後述する図26に示される。ステップS37を終了すると、CPUコア42は、ステップS39で、入力座標記憶領域90に入力無しデータを記憶する。これによって、次フレームにおいては、前回のフレームがタッチオフ状態であったことを把握することが可能になる。
一方、ステップS35で“NO”であれば、つまり、前回もタッチオフ状態であった場合には、CPUコア42は、ステップS41で、ニュートラルモーションを選択する。たとえば、CPUコア42は、ニュートラルモーションデータの識別情報を、選択モーション記憶領域114に記憶する。
ステップS39またはステップS41を終了すると、CPUコア42は、ステップS43で、プレイヤキャラクタ動作処理を実行する。たとえば、CPUコア42は、プレイヤキャラクタを、プレイヤキャラクタ位置記憶領域106のデータの示すゲーム空間の座標に、プレイヤキャラクタ向きベクトル記憶領域108のデータの示す方向を前方にして配置する。そして、CPUコア42は、プレイヤキャラクタを、選択モーション記憶領域114のデータに対応するモーションデータに基づいて動作させる。なお、数フレームをかけて実行されるモーションであって当該モーションを継続中である場合には、このステップではモーションデータに基づいて前フレームの続きの動作が実行される。
また、ステップS45で、CPUコア42は、敵キャラクタ動作処理を実行する。たとえば、CPUコア42は敵キャラクタを、敵キャラクタ位置記憶領域110のデータの示すゲーム空間の座標に、敵キャラクタ向きベクトルの示す方向を前方にして配置するとともに、所定の動作を行わせる。
続いて、ステップS47で、CPUコア42は画面表示処理を実行して、LCD12にゲーム空間を示す画面を表示し、LCD14に操作領域を示す画面を表示する。たとえば、CPUコア42は、ステップS43で動作させたプレイヤキャラクタおよびステップS45で動作させた敵キャラクタ等の存在する仮想3次元ゲーム空間を仮想カメラを用いて撮影した画像を示すデータを、GPU50を用いてVRAM56に生成し、当該画像をLCDコントローラ60を用いてLCD12に表示する。また、CPUコア42は、動作入力領域および方向入力領域を含む操作領域の画像を示すデータを、GPU52を用いてVRAM58に書き込み、当該画像をLCDコントローラ60を用いてLCD14に表示する。
そして、ステップS49で、CPUコア42は、プレイヤキャラクタ向きベクトル記憶領域108のデータを更新する。具体的には、CPUコア42は、プレイヤキャラクタ位置記憶領域106のデータと敵キャラクタ位置記憶領域110のデータに基づいて、プレイヤキャラクタ位置から敵キャラクタ位置へ向かう方向を算出し、当該方向にプレイヤキャラクタ向きベクトルを設定する。これによって、プレイヤキャラクタが常に敵キャラクタ(すなわちターゲットオブジェクト)を向くように制御することができる。ステップS49を終了すると、処理は図21のステップS1に戻る。なお、図21では省略されるが、プレイヤキャラクタが倒されたり、敵キャラクタが全滅したりするなどの条件が満足されたときには、ゲーム処理は終了される。
図23には、図21のステップS25で実行される移動処理の動作の一例が示される。この実施例の移動処理では、図15に示したように、プレイヤキャラクタの移動は、ターゲットオブジェクト(敵キャラクタ)の周りを回るように制御される。
具体的には、図23のステップS61で、CPUコア42は、検出されたタッチ座標の含まれるサブ領域に応じて移動速度を設定する。ROM28aの領域データ記憶領域76には、たとえば図14に示すような各座標ごとの移動速度を示す領域データが記憶されているので、CPUコア42は、この移動速度に関する領域データを参照して、検出座標がダッシュ移動領域に属するのか通常移動領域に属するのかを特定し、特定されたサブ領域に対応する移動速度を設定する。
次に、ステップS63で、CPUコア42は、動作入力領域の中心座標を基準としたときの入力座標の相対座標から、移動方向θを算出する。図13(B)を参照して上述したように、入力座標の相対座標は(X−Xc,Y−Yc)で得られ、移動方向θは、相対座標のX´座標に対するY´座標の比の逆正接によって算出される。
続いて、ステップS65で、CPUコア42は、移動速度と移動方向から、プレイヤキャラクタの左右方向移動量と前後方向移動量を算出する。プレイヤキャラクタの左右方向移動量は、図13(B)を参照して上述したように、X´軸方向の移動成分に相当し、移動方向θの余弦に移動速度を掛けることによって算出される。また、プレイヤキャラクタの前後方向の移動量は、Y´軸方向の移動成分に相当し、移動方向θの正弦に移動速度を掛けることによって算出される。
そして、ステップS67では、CPUコア42は、プレイヤキャラクタの位置を左右方向に変更する。具体的には、CPUコア42は、図15に示したように、プレイヤキャラクタ位置記憶領域106の座標を、敵キャラクタ位置を中心とし敵キャラクタ位置とプレイヤキャラクタ位置の間の距離を半径とする円の円周に沿って(当該円弧方向へ)、左右方向移動量の値に応じて移動させることによって、ワールド座標系における移動後の座標を算出する。そして、CPUコア42は、算出した座標をプレイヤキャラクタ位置記憶領域106に記憶する。
また、ステップS69で、CPUコア42は、プレイヤキャラクタの位置を前後方向に変更する。具体的には、CPUコア42は、図15に示すように、プレイヤキャラクタ位置記憶領域106の座標を、敵キャラクタ位置の方向すなわちターゲットオブジェクトの存在する方向へ前後方向移動量の値に応じて移動させることによって、ワールド座標系における移動後の座標を算出する。そして、CPUコア42は、算出した座標をプレイヤキャラクタ位置記憶領域106に記憶する。
続いて、ステップS71で、CPUコア42は、プレイヤキャラクタ向きベクトルをターゲットに向かうように更新する。たとえば、CPUコア42は、プレイヤキャラクタ位置記憶領域106のデータと敵キャラクタ位置記憶領域110のデータに基づいて、プレイヤキャラクタ位置から敵キャラクタ位置に向かう方向を算出し、当該方向を示すベクトルをプレイヤキャラクタ向きベクトル記憶領域108に記憶する。
また、ステップS73で、CPUコア42は、検出されたタッチ座標の含まれる領域に応じて、移動モーションの1つを選択する。たとえば、CPUコア42は、ROM28aの領域データ記憶領域76のデータに基づいて、検出座標が図13(A)に示す移動入力領域のサブ領域のいずれに属するのかを特定し、さらに、当該サブ領域に対応する移動モーションの識別情報を特定して、当該モーションの識別情報を選択モーション記憶領域114に記憶する。CPUコア42は、ステップS73を終了すると、この移動動作処理を終了して、図21のステップS27へ戻る。
図24および図25には、図21のステップS31で実行される剣・構え動作処理の動作の一例が示される。図24のステップS81で、CPUコア42は、タッチオフ状態からタッチオン状態へ変化したか否かを判断する。たとえば、CPUコア42は、入力座標記憶領域90に入力無しデータが記憶されているか否か、すなわち、前回フレームではタッチ座標が検出されていなかったのか否かを判断する。
ステップS81で“YES”であれば、つまり、タッチ入力が開始された場合には、CPUコア42は、続くステップS83からステップS87でタッチ開始時処理を実行する。すなわち、ステップS83で、CPUコア42は、検出されたタッチ座標を入力座標記憶領域90に記憶する。また、ステップS85で、CPUコア42は、現在のフレーム番号をタッチ開始時フレーム番号記憶領域102に記憶する。このフレーム番号の記憶は、後にタッチオフに変化したときにタップ入力であったか否かを判定するために行われる。また、ステップS87で、CPUコア42は、入力座標記憶領域90の座標が含まれる領域に応じて、構えモーションの1つを選択する。具体的には、CPUコア42は、領域データ記憶領域76のデータに基づいて、入力座標が動作入力領域のサブ領域のいずれに属するのかを特定し、さらに当該サブ領域に対応する構えモーションデータの識別情報を特定して、当該モーションの識別情報を選択モーション記憶領域114に記憶する。CPUコア42は、ステップS87を終了すると、この剣・構え動作処理を終了して、図22のステップS43へ戻る。
一方、ステップS81で“NO”であれば、つまり、タッチ入力が継続されており、タッチ座標が連続的に検出されている場合には、CPUコア42は、ステップS89で、入力座標記憶領域90のデータを前回入力座標記憶領域92に記憶する。続くステップS91で、CPUコア42は、検出されたタッチ座標を入力座標記憶領域90に記憶する。
そして、ステップS93で、CPUコア42は、動作入力中フラグ記憶領域104のデータを参照して、動作入力中フラグがオンであるか否かを判断する。この実施例では、実質的な攻撃動作である剣モーションや特殊攻撃モーションを、動作入力始点からのスライド入力の座標に基づいて決定するようにしているので、後述するように、動作入力中フラグは、動作入力始点が決定されるときにオンに設定される。ステップS93で“NO”であれば、つまり、動作入力始点の判定条件が未だ満足されていない場合には、CPUコア42は、ステップS95で、上述のステップS87と同様にして、入力座標が含まれる領域に応じて構えモーションの1つを選択する。
続いて、ステップS97で、CPUコア42は、動作入力始点判定を行う。この実施例では、動作入力始点判定条件として、タッチ移動速度が閾値以上になったことが設定されている。すなわち、CPUコア42は、ステップS97で、入力座標記憶領域90の座標と前回入力座標記憶領域92の座標との距離を算出し、当該距離が所定の閾値以上であるか否かを判断する。この閾値は、比較的素早いスライド入力が行われているか否かを判定するのに適切な値が設定される。ステップS97で“NO”であれば、つまり、動作入力始点判定条件が満足されていない場合には、CPUコア42は、この剣・構え動作処理を終了して図22のステップS43へ戻る。
一方、ステップS97で“YES”であれば、つまり、スライド入力の速度が所定の閾値を超えた場合には、CPUコア42は、続くステップS99からステップS107で、動作入力始点設定処理を実行する。具体的には、ステップS99で、CPUコア42は前回入力座標記憶領域92のデータを動作入力始点記憶領域96に記憶する。つまり、前回のタッチ座標が動作入力始点として決定される。また、ステップS101で、CPUコア42は、前回入力座標記憶領域92の座標と入力座標記憶領域90の座標とを軌跡記憶領域94に順に記憶する。これによって、この実施例では動作入力始点からのスライド入力の軌跡の取得が開始される。
また、ステップS103では、CPUコア42は、動作入力中フラグをオンにする。たとえば、CPUコア42は、動作入力中フラグ記憶領域104に「1」を記憶する。さらに、ステップS105で、CPUコア42は、入力座標記憶領域90の座標と前回入力座標記憶領域92の座標との距離を、累積距離記憶領域100に記憶する。これによって、動作入力始点から現在のタッチ座標までの累積移動距離の計測が開始される。なお、入力座標と前回入力座標との距離はステップS97で判定のために算出されている。ステップS105を終了すると、CPUコア42は、この剣・構え動作処理を終了して図22のステップS43へ戻る。
一方、ステップS93で“YES”であれば、つまり、動作入力始点からのスライド入力が行われている場合には、CPUコア42は図25のステップS107へ進む。
図25のステップS107では、CPUコア42は、入力座標記憶領域90の座標と前回入力座標記憶領域92の座標との距離を算出し、当該距離が所定の閾値以下であるか否かを判断する。この実施例では、タッチ移動速度が遅い場合に動作入力始点をキャンセルするので、このステップS107の判定が行われる。したがって、この閾値としては、比較的遅い移動速度を示す値が設定される。ステップS107で“YES”であれば、つまり、スライド入力の速度が比較的遅くなった場合には、CPUコア42は、ステップS109で、軌跡記憶領域94のデータを消去し、つまり、動作入力始点からのスライド入力の軌跡を示すデータを消去する。また、ステップS111で、CPUコア42は、たとえば動作入力中フラグ記憶領域104に「0」を記憶して、動作入力中フラグをオフにする。ステップS111を終了すると、CPUコア42はこの剣・構え動作処理を終了して図22のステップS43へ戻る。
一方、ステップS107で“NO”であれば、CPUコア42は、ステップS113で入力座標記憶領域90の座標データを軌跡記憶領域94に追加する。つまり、CPUコア42は動作入力始点からのスライド入力の軌跡を示す座標データ群の取得を続ける。
そして、ステップS115で、CPUコア42は、スライド入力の軌跡が所定の軌跡パターンを示すか否かを判定する。すなわち、CPUコア42は、軌跡記憶領域94の座標データ群が軌跡パターンデータ記憶領域72に記憶されている複数の軌跡パターンのいずれかと一致するか否かを判定する。ステップS115で“YES”であれば、CPUコア42は、ステップS117で、一致パターンに対応する特殊攻撃モーションを選択する。具体的には、CPUコア42は、一致した軌跡パターンに対応する特殊攻撃モーションの識別情報を特定し、当該識別情報を選択モーション記憶領域114に記憶する。ステップ
S117を終了すると、CPUコア42はこの剣・構え動作処理を終了して図22のステップS43へ戻る。
一方、ステップS115で“NO”であれば、CPUコア42は、ステップS119で、累積距離記憶領域100の距離に、入力座標記憶領域90の座標と前回入力座標記憶領域92の座標との距離を加算することによって、新たな累積距離を算出し、当該算出値を累積距離記憶領域100に記憶する。なお、入力座標と前回入力座標との距離はステップS107で判定のために算出されている。
そして、ステップS121で、CPUコア42は累積距離記憶領域100の累積距離が所定の閾値以上になったか否かを判定する。この実施例では、動作入力終点判定条件として、動作入力始点から所定距離以上移動したことが設定されている。すなわち、このステップS121では動作入力終点判定が行われている。ステップS121で“NO”であれば、つまり、動作入力終点が未だ決定されない場合には、CPUコア42は、ステップS123で、前回と同じ構えモーションを選択する。なお、選択モーション記憶領域114には、動作入力始点を決定したときのフレームにおけるステップS95で選択された構えモーションの識別情報が記憶されているので、当該識別情報の記憶を維持すればよい。したがって、このステップS123ではCPUコア42は選択モーション記憶領域114の記憶更新をしなくてもよい。ステップS123を終了すると、CPUコア42はこの剣・構え動作処理を終了して図22のステップS43へ戻る。
一方、ステップS121で“YES”であれば、つまり、動作入力終点の決定条件が満足された場合には、CPUコア42は、ステップS125で、入力座標記憶領域90のデータと同じ座標データを動作入力終点記憶領域98に記憶する。つまり、今回の検出座標が動作入力終点として決定される。
そして、ステップS127で、CPUコア42は、動作決定パラメータに応じて剣モーションのうちの1つを選択する。具体的には、CPUコア42は、動作入力始点記憶領域96の座標の属するサブ領域を、領域データ記憶領域76のデータに基づいて特定し、当該サブ領域に対応する剣の振り始め位置を特定する。また、CPUコア42は、動作入力始点記憶領域96の座標と動作入力終点記憶領域98の座標とを結ぶ直線の傾き、すなわち、動作入力始点から動作入力終点へのベクトルの向きを算出し、判定データ記憶領域78のデータに基づいて、剣を振る軌道を特定する。そして、CPUコア42は、剣の振り始め位置と剣を振る軌道に応じた剣モーションを特定し、当該モーションの識別情報を選択モーション記憶領域114に記憶する。
また、ステップS129で、CPUコア42は、動作入力終点を決定したので、ステップS111と同様にして動作入力中フラグをオフにする。ステップS129を終了すると、CPUコア42はこの剣・構え動作処理を終了して図22のステップS43へ戻る。
図26には、図22のステップS37で実行される防御動作処理の動作の一例が示される。図26のステップS141で、CPUコア42は、現在のフレーム番号とタッチ開始時フレーム番号記憶領域102のフレーム番号との差を算出し、当該差が所定値以内であるか否かを判定する。つまり、タップ入力が行われたか否かの判定が行われる。算出される差は、タッチ入力が開始されてから終了されるまでに経過したフレーム数である。所定値はタップ入力の判定に適切な値(たとえば数フレームから数十フレームなど)に設定される。
ステップS143で“YES”であれば、つまり、タップ入力が行われた場合には、CPUコア42は、ステップS143で、入力座標記憶領域90の座標が動作入力領域内で
あるか否かを、領域データ記憶領域76のデータに基づいて判定する。
ステップS143で“YES”であれば、つまり、動作入力領域でタップ入力が行われた場合には、CPUコア42は、ステップS145で、入力座標が含まれるサブ領域に応じて、防御モーションの1つを選択する。具体的には、CPUコア42は、領域データ記憶領域76のデータに基づいて、入力座標記憶領域90の座標が属するサブ領域を特定し、さらに当該サブ領域に対応付けられた防御モーションの識別情報を特定し、当該識別情報を選択モーション記憶領域114に記憶する。
ステップS145を終了すると、CPUコア42はこの防御動作処理を終了して図222のステップS39に戻る。また、ステップS141で“NO”である場合、または、ステップS143で“NO”である場合には、防御動作を実行するための条件が満足されていないので、防御動作処理を終了する。
なお、上述の実施例では、動作入力領域は図4に示すように円形に形成されたが、動作入力領域の形状は適宜変更され得る。たとえば、その形状は、矩形(図27(A))、楕円形(図27(B))、八角形(図27(C))のような多角形、またはその上下部が切り取られた円形(図27(D))のような非定形形状であってもよい。なお、図27では、図4と同様に、動作入力領域は斜線で塗りつぶされ、方向入力領域は点模様で塗りつぶされる。
また、上述の各実施例では、動作入力領域の中心が操作領域すなわち画面の中心となるようにして動作入力領域が配置されたが、他の実施例では、動作入力領域の中心は、操作領域の中心からずれた所定位置に設定されてもよい。
また、上述の各実施例では、方向入力領域は動作入力領域の全周を囲むようにして形成された。たとえば、動作入力領域の外周が方向入力領域の内周と接するようにして設けられた。たとえば360度全方向の入力指示を可能にする場合などには、操作性や方向の把握のし易さ等の観点から動作入力領域の全周が方向入力領域によって囲まれるのが好ましい。しかし、場合によっては、他の実施例では、方向入力領域は動作入力領域の全周または全方向を囲まなくてもよい。
たとえば、図27(E)に示すように、操作領域の下辺中央から所定の距離内の範囲を動作入力領域とし、残りの領域を方向入力領域としてもよい。この場合、半円形の動作入力領域の円弧の部分のみが方向入力領域に囲まれる。たとえば、動作入力領域を円形と見た場合の中心座標を所定座標とすると、所定座標から円弧部分の座標への方向すなわち前方180度の範囲の方向に方向入力領域が設けられることとなる。したがって、たとえば前方180度の範囲の方向入力を行うことが可能である。後方への方向入力が不要な場合には、このような操作領域を適用するのが好ましい。
また、たとえば、図27(F)に示すように、動作入力領域から所定方向にのみ方向入力領域が設けられてもよい。図27(F)の例では、操作領域の中央に配置された動作入力領域の上下左右方向にのみ方向入力領域が形成される。この場合には、動作入力領域の外側に十字スイッチのような形状の方向入力領域が形成されるので、たとえば十字スイッチと同様な上下(前後)左右方向を指示する入力を行うことが可能である。
また、たとえば、図27(G)に示すように、動作入力領域と方向入力領域とを並べて設けるようにしてもよい。なお、並べる方向は上下に限られず左右でも斜め方向でもよい。このように2つの領域を並べる場合でも、たとえば、動作入力領域の所定座標(たとえば中心または重心座標)との相対位置関係を考慮して方向入力領域における方向を設定することによって、方向入力領域における方向入力を容易に行うことが可能であり、また、並べられた両領域間の素早い入力が可能である。なお、動作入力領域の所定座標から方向入力領域の各座標への実際の方向を、入力可能な方向としてもよい。この場合には、操作領域における実際の方向ないし角度等がそのまま入力方向ないし角度等として扱われるので、所望の方向入力を簡単に行える。あるいは、動作入力領域は方向入力領域に囲まれないので、動作入力領域の所定座標から方向入力領域の座標への実際の方向は限られた範囲となり全方向とはならないが、当該限られた範囲を360度全方向に対応付けることによって、全方向の入力が行えるようにしてもよい。
また、上述の各実施例では、動作入力領域と方向入力領域とは隣接すなわち境を接するようにして設けられた。しかし、他の実施例では、図27(H)に示すように、両領域間にはある程度の僅かな間隔が設けられてもよい。両領域が隣接していなくても近接しているので両領域間の素早い入力が可能である。また、たとえば一方の領域における入力が勢い余ってはみ出すような場合でも、当該はみ出しを隔たり領域の部分で吸収して当該はみ出しの入力によるゲーム処理を回避できる。したがって、プレイヤに意図ないし狙い通りの入力に基づくゲーム処理を実行することができる。
また、上述の各実施例では、動作入力始点を決定するために、図5に示したように、タッチ移動速度が所定の閾値以上になったことを条件として判定を行っていた。しかし、この動作入力始点を決定するための条件は適宜変更され得る。たとえば、図28(A)に示すように、タッチオンがあったこと、すなわち、タッチ入力が開始されたことを条件としてよい。この場合には、図24のステップS81で“YES”のときに、タッチ開始時処理とともに動作入力始点設定(ステップS99、S101およびS103)を実行する。
また、図28(B)に示すように、長押しがあったこと、すなわち、所定の閾値時間以上同じ点がタッチされたことを条件としてよい。この場合には、図24のステップS97で、まず、入力座標と前回入力座標との距離が、たとえば同一座標と見なせる程度に小さい所定の閾値以下であったか否かを判定する。さらに、この条件が満足されるとき、この状態の続いている時間(フレーム数)を計測し、当該時間が所定の閾値以上になったか否かを判定する。
また、図28(C)に示すように、タッチ入力が動作入力領域に入ったことを条件としてよい。この場合には、図24のステップS97で、前回入力座標が方向入力領域の座標であるか否かを判定する。
また、図28(D)に示すように、タッチ移動方向が所定の閾値以上変化したことを条件としてよい。この場合には、図24のステップS97で、タッチ入力の移動方向を入力座標と前回入力座標とに基づいて算出する。そして、今回算出された移動方向と前回算出された移動方向との差が、所定の閾値以上であったか否かを判定する。
また、上述した複数の条件(図5および図28)のいくつかまたは全てについて判定を行うようにして、その結果いずれか1つの条件が満足されることを、動作入力始点を決定するための条件としてもよい。
また、上述の各実施例では、動作入力終点を決定するために、図6に示したように、動作入力始点から一定距離を移動したことを条件として判定を行っていた。しかし、この動作入力終点を決定するための条件も適宜変更され得る。たとえば、図29(A)に示すように、スライド入力においてタッチオフがあったこと、すなわち、タッチオン状態からタッチオフ状態に変化したことを条件としてよい。この場合には、図22のステップS35で“YES”であり、かつ、図26のステップS141で“NO”であるとき、入力座標が動作入力領域内であるか否かを判定する。そして、この条件が満足されるときに、動作入力終点記憶領域98に前回入力座標を記憶する。続けて、図25のステップS127と同様にして剣モーションの選択を行い、ステップS129と同様にして動作入力中フラグをオフにする。
また、図29(B)に示すように、スライド入力が動作入力領域を出たことを条件としてよい。この場合には、図21のステップS11で“YES”であるときに、動作入力終点記憶領域98に前回入力座標を記憶する。続けて、図25のステップS127と同様にして剣モーションの選択を行い、ステップS129と同様にして動作入力中フラグをオフにする。
また、図29(C)に示すように、動作入力始点の入力時から一定時間を経過したことを条件としてもよい。この場合には、図25のステップS121で、動作入力始点からの経過時間(フレーム数)を算出し、当該時間が所定の閾値を超えたか否かを判定する。なお、ステップS99で動作入力始点を決定したときのフレーム番号を記憶しておく。
また、図29(D)に示すように、タッチ入力の移動方向が閾値以上変化したことを条件としてよい。この場合には、図25のステップS121で、タッチ入力の移動方向を入力座標と前回入力座標とに基づいて算出する。そして、今回算出された移動方向と前回算出された移動方向との差が、所定の閾値以上であったか否かを判定する。
また、図30(A)に示すように、長押しがあったこと、すなわち、所定の閾値時間以上同じ点がタッチされたことを条件としてよい。この場合には、図25のステップS121で、まず、入力座標と前回入力座標との距離が、たとえば同一座標と見なせる程度に小さい所定の閾値以下であったか否かを判定する。さらに、この条件が満足されるとき、この状態の続いている時間(フレーム数)を計測し、当該時間が所定の閾値以上になったか否かを判定する。
また、図30(B)に示すように、タッチ移動速度が所定の閾値以下になったことを条件としてよい。この場合には、図25のステップS121で、入力座標と前回入力座標との距離が所定の閾値以下になったか否かを判定する。
また、図30(C)に示すように、タッチ入力位置が所定数以上のサブ領域に入ったことを条件としてよい。この場合には、図25のステップS121で、まず、入力座標に対応するサブ領域を特定する。そして、過去に特定されたサブ領域の種類の数が所定の閾値以上になったか否かを判定する。
また、上述した複数の条件(図6、図29および図30)のいくつかまたは全てについて判定を行うようにして、その結果いずれか1つの条件が満足されることを、動作入力終点を決定するための条件としてもよい。
また、上述の各実施例では、図15および図23に示すように、プレイヤキャラクタや仮想カメラのような操作対象の移動制御において、操作対象の向きを常にターゲットの存在方向に向けつつ、相対座標に基づく左右方向移動量に応じて、ターゲット位置を中心としターゲットと操作対象との距離を半径とする円周上の左右方向に操作対象を移動させるようにしていた。しかし、他の実施例では、プレイヤキャラクタや仮想カメラなどの操作対象の移動はターゲットの存在に影響を受けずに入力方向に従って制御されてよい。たとえば、操作対象の向きは、ターゲットの存在する方向を向くように制御されなくてよい。また、図31に示すように、操作対象の向きを基準として、相対座標に基づく左右方向移動量に応じて、操作対象の向いている方向の直交方向に操作対象を移動させるようにして
よい。操作対象の向きの直交方向は、操作対象の向いている方向と直交する方向であって操作対象の向いている方向に向かって左方向および右方向を含む。また、相対座標に基づく前後方向移動量に応じて、操作対象の向いている方向および操作対象の向いている方向の反対方向にそれぞれ操作対象を移動させるようにしてよい。
このような移動制御を適用する場合の、移動動作処理(図21のステップS25)の動作の一例が図32に示される。図23の移動動作処理におけるステップと同じステップには同一の参照符号を付してその詳細な説明を省略する。ステップS65を終了すると、CPUコア42は、図32のステップS167で、プレイヤキャラクタ向きベクトルの直交方向を算出する。そして、CPUコア42は、プレイヤキャラクタ位置記憶領域106の座標を、直交方向のうちの左方向または右方向に左右方向移動量に応じて移動させることによって、ワールド座標系における移動後の座標を算出する。たとえば、CPUコア42は、左右方向移動量の値をワールド座標系での各軸方向の移動成分に変換し、各軸の移動成分を、プレイヤキャラクタ位置記憶領域106の座標に加算することによって、ワールド座標系での移動後の座標を算出してよい。そして、CPUコア42は、算出した座標をプレイヤキャラクタ位置記憶領域106に記憶する。続いて、ステップS169で、CPUコア42は、プレイヤキャラクタ位置記憶領域106の座標を、プレイヤキャラクタの向きベクトルの方向または反対方向に前後方向移動量に応じて移動させることによって、ワールド座標系での移動後の座標を算出する。そして、CPUコア42は、算出した座標をプレイヤキャラクタ位置記憶領域106に記憶する。ステップS169を終了すると、CPUコア42は、ステップS73で移動モーションの選択を実行する。
また、上述の各実施例では、方向入力領域への入力に基づくゲーム処理において、プレイヤキャラクタや仮想カメラなどの操作対象の移動を制御する場合を説明した。しかし、他の実施例では、方向入力領域への入力に基づくゲーム処理において、仮想カメラの向きやプレイヤキャラクタのようなオブジェクトの向きを制御するようにしてもよい。
図33を参照して、仮想カメラの向きは、動作入力領域の所定座標を基準としたときの、方向入力領域における入力座標の相対座標に基づいて制御されてよい。たとえば、上述の図12(B)の入力方向および図13(B)の移動方向の場合と同様に、仮想カメラの向きは、相対座標の示すベクトルの方向に応じて決定されてよい。なお、仮想カメラの向きを制御する場合、方向入力領域をカメラ方向入力領域とも呼ぶ。また、操作領域の上方向(Y´軸正方向)が現在の仮想カメラの向きに対応付けられる。
具体的には、動作入力領域の中心座標とタッチ座標とを結ぶ直線と操作領域における所定方向(たとえばY´軸)とのなす角度φを回転量(回転角度)として、仮想カメラを制御してよい。角度φは、相対座標のX´座標(X−Xc)のY´座標(Y−Yc)に対する比の逆正接によって算出される。たとえば、現在の仮想カメラの向き(すなわち視線方向)を基準として、カメラ座標系のxz平面上で角度φだけ、仮想カメラの向きを回転するようにしてよい。なお、仮想カメラの向きがカメラ座標系のz軸に規定され、z軸に直交する水平方向がカメラ座標系のx軸に、z軸に直交する鉛直方向がカメラ座標系のy軸にそれぞれ規定されている。したがって、方向入力領域における入力に応じて仮想カメラの向きが水平面内で角度φだけ回転される。なお、仮想カメラの向きをカメラ座標系のyz平面上で回転させるようにしてもよいし、カメラ座標系のxy平面上で回転させるようにしてもよい。このように、動作入力領域の所定座標と方向入力領域における入力座標との相対的な位置関係に応じて仮想カメラの向きが変化されるので、上述の操作対象の移動制御の場合と同様に、直感的かつ簡単に仮想カメラの向きを制御することができる。
また、図34を参照して、プレイヤキャラクタなどのオブジェクトの向きも、上述の仮想カメラの向きと同様にして制御されてよい。すなわち、オブジェクトの向きは、動作入力領域の所定座標を基準としたときの、方向入力領域における入力座標の相対座標に基づいて制御されてよい。たとえば、オブジェクトの向きは、相対座標の示すベクトルの方向に応じて決定されてよい。なお、オブジェクトの向きを制御する場合、方向入力領域をオブジェクト向き入力領域とも呼ぶ。また、操作領域の上方向(Y´軸正方向)が現在のオブジェクトの向きに対応付けられる。
具体的には、動作入力領域の中心座標とタッチ座標とを結ぶ直線と操作領域における所定方向(たとえばY´軸)とのなす角度φを回転量(回転角度)として、オブジェクトの向きを制御してよい。角度φは、相対座標のX´座標(X−Xc)のY´座標(Y−Yc)に対する比の逆正接によって算出される。たとえば、現在のオブジェクトの向き(オブジェクトの正面が向いている方向すなわち前方)を基準として、オブジェクト座標系のxz平面上で角度φだけ、オブジェクトの向きを回転するようにしてよい。なお、オブジェクトの向きがオブジェクト座標系のz軸に規定され、z軸に直交する水平方向がオブジェクト座標系のx軸に、z軸に直交する鉛直方向がオブジェクト座標系のy軸にそれぞれ規定されている。したがって、方向入力領域における入力に応じてオブジェクトの向きが水平面内で角度φだけ回転される。なお、オブジェクトの向きをオブジェクト座標系のyz平面上で回転させるようにしてもよいし、xy平面上で回転させるようにしてもよい。このように、オブジェクトの向きを操作する場合にも、動作入力領域の所定座標を基準としたときの相対的な位置関係を考慮しつつ方向入力領域で入力を行えばよい。したがって、簡単かつ直感的にオブジェクトの向きを制御することができる。
また、上述の各実施例では、第1領域(動作入力領域)に設定された基準座標は、たとえば第1領域の中心座標のように固定的であった。しかし、他の実施例では、第1領域の基準座標は変位するものであってよい。たとえば、ゲーム状況や操作履歴などに応じて基準座標が変更されてもよい。
また、上述の各実施例では、LCD14の画面上に設けられたタッチパネル22で座標を入力するようにしていた。しかし、他の実施例では、マウスのような他のポインティングデバイスが適用されてもよい。この場合には、操作領域を示す画面にマウスポインタを表示することによって入力位置を明示する。また、マウスのボタンが押されている状態をタッチオン状態とみなし、かつ、マウスのボタンが放された状態をタッチオフ状態とみなすことによって、ポインティングデバイスでの入力の有無を判断することができる。
また、上述の各実施例では、第1のLCD12と第2のLCD14とを縦方向に並べて配置するようにしていたが、2つのLCDの配置は適宜に変更され得る。たとえば他の実施例のゲーム装置10では、第1のLCD12と第2のLCD14とを横方向に並べて配置するようにしてもよい。
また、上述の各実施例では、2つのゲーム画面をそれぞれ表示する2つのLCDを設けるようにしていたが、表示手段としてのLCDの数は適宜変更され得る。たとえば他の実施例のゲーム装置10では、縦長形状の1つのLCDを設けて、表示領域を上下に分けて、2つのゲーム画面をそれぞれの表示領域に表示するようにしてもよいし、あるいは、横長形状の1つのLCDを設けて、表示領域を左右に分割し、2つゲーム画面をそれぞれの表示領域に表示するようにしてもよい。
また、上述の各実施例では、第1領域および第2領域は平面的な領域であった。しかし、他の実施例では、各領域は立体的な領域であってもよい。たとえば、典型的には、第1領域は球状の領域とされ、第2領域は第1領域の周囲を囲む球状の領域から第1領域を除いた領域としてもよい。なお、この場合、入力装置ないし座標検出手段は3次元の座標を検出する。たとえば磁気センサ、レンジファインダ、超音波距離センサ、赤外線測距センサ、イメージセンサ(カメラ)などのセンサを使ってプレイヤの指先やペン先などの3次元座標を検出してよい。