以下に図面を参照して、本発明を適用した一実施形態にかかるゲーム装置について説明する。本ゲーム装置は、本発明の情報処理装置の一例であり、タッチパネル(座標入力手段の一例)を備えている。また、本実施形態で想定するゲームは、3次元仮想空間を舞台としたシューティングゲームである。本ゲームでは、基本的には、プレイヤキャラクタ(プレイヤオブジェクト)の後方に配置された仮想カメラで撮影されたゲーム画像が表示されてゲームが進行する(いわゆるTPS(Third Person Shooting Game))。この仮想カメラに関して、上記タッチパネルに対するプレイヤの操作に応じて三次元仮想空間に配置された仮想カメラの向き(撮像方向)を変更することが可能である。
本実施形態では、タッチパネルに対してプレイヤがスライド操作(タッチオンした後、タッチを継続しつつタッチ位置を移動する操作)を行っている間にこのスライド量に応じて仮想カメラの向きを変更するのに加え、タッチパネルに対してプレイヤがタッチ操作を行っていないときにも仮想カメラの向きを変更する場合がある点が第1の特徴である。すなわち、プレイヤが、スライド操作を行った後にタッチオフすると(以下、「スライドオフ」と言う)を行ったときには、タッチオフ直前のスライド操作(スライド方向、スライド速さ;少なくともスライド方向)に応じて、タッチオフ後において慣性的に仮想カメラの向きを変更する点が本実施形態の第1の特徴となる。ただし、後述のとおり、スライド操作の最後にタッチ位置を停止させた後タッチオフした場合には、慣性的な変更は行われない。なお、本明細書においてタッチオンとは非タッチ状態からタッチ状態に移行した瞬間のことを言い、タッチオフとはタッチ状態から非タッチ状態に移行した瞬間のことを言う。
また、本実施形態の第2の特徴は、タッチパネルの所定領域内(例えば、全面)におけるプレイヤの任意の位置でプレイヤがダブルタップ操作を行うことで、仮想カメラの画角の変更等によって画面をズームすることである。なお、ダブルタップ操作(連続入力)とは、プレイヤが所定時間内に所定回数(例えば2回)の断続的なタッチ操作(座標入力)を行うこと、例えば、1回目のタッチ操作があってから所定の期間以内に2回目のタッチ操作を行うことである。なお、2回目のタッチ位置が1回目のタッチ位置から所定距離以内であることをダブルタップ操作のさらなる条件としてもよい。また、本実施形態において、ズームアップのことを単にズームと記載する。
また、本実施形態では、上記のようなシューティングゲームを想定しているが、ゲーム画面上には、プレイヤのシューティング方向を示す照準が表示されている。そして、本実施形態では、当該照準の位置をプレイヤのタッチパネルに対するスライド操作に応じてデフォルト位置から変更することを第3の特徴とする。
以下、本実施形態にかかるゲーム装置1の構成について図1及び図2を用いて説明する。図1は、本発明の一実施形態にかかるゲーム装置の外観図である。ゲーム装置は、本発
明のプログラムを実行することで、本発明の情報処理装置として機能する。
図1において、ゲーム装置1は、折り畳み型の携帯ゲーム装置であり、開いた状態(開状態)のゲーム装置1を示している。ゲーム装置1は、開いた状態においてもプレイヤが両手または片手で把持することができるようなサイズで構成される。
ゲーム装置1は、下側ハウジング11及び上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に連結されている。図1の例では、下側ハウジング11及び上側ハウジング21は、それぞれ横長の長方形の板状で形成され、互いの長辺部分で回転可能に連結されている。通常、プレイヤは、開状態でゲーム装置1を使用する。また、プレイヤは、ゲーム装置1を使用しないときには閉状態としてゲーム装置1を保管する。また、図1に示した例では、ゲーム装置1は、上記閉状態及び開状態のみでなく、下側ハウジング11と上側ハウジング21とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング21を下側ハウジング11に対して任意の角度で静止させることができる。
下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12が設けられる。下側LCD12は横長形状であり、長辺方向が下側ハウジング11の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置1に内蔵されている表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を利用してもよい。また、ゲーム装置1は、任意の解像度の表示装置を利用することができる。なお、詳細は後述するが、下側LCD12は、主に、内側カメラ23または外側カメラ25で撮影されている画像をリアルタイムに表示するために用いられる。
下側ハウジング11には、入力装置として、各操作ボタン14A〜14K、アナログ操作子14L及びタッチパネル13が設けられる。図1に示されるように、各操作ボタン14A〜14Kのうち、方向入力ボタン14A、操作ボタン14B、操作ボタン14C、操作ボタン14D、操作ボタン14E、電源ボタン14F、スタートボタン14G、及びセレクトボタン14Hは、上側ハウジング21と下側ハウジング11とを折りたたんだときに内側となる、下側ハウジング11の内側主面上に設けられる。方向入力ボタン14Aは、例えば選択操作等に用いられる。各操作ボタン14B〜14Eは、例えば決定操作やキャンセル操作等に用いられる。電源ボタン14Fは、ゲーム装置1の電源をオン/オフするために用いられる。図1に示す例では、方向入力ボタン14A及び電源ボタン14Fは、下側ハウジング11の内側主面中央付近に設けられる下側LCD12に対して、左右一方側(図1では左側)の当該主面上に設けられる。また、操作ボタン14B〜14E、スタートボタン14G、及びセレクトボタン14Hは、下側LCD12に対して左右他方側(図1では右側)となる下側ハウジング11の内側主面上に設けられる。方向入力ボタン14A、操作ボタン14B〜14E、スタートボタン14G、及びセレクトボタン14Hは、ゲーム装置1に対する各種操作を行うために用いられる。
なお、図1においては、操作ボタン14I〜14Kの図示を省略している。例えば、Lボタン14Iは、下側ハウジング11の上側面の左端部に設けられ、Rボタン14Jは、下側ハウジング11の上側面の右端部に設けられる。Lボタン14I及びRボタン14Jは、ゲーム装置1に対して、例えば撮影指示操作(シャッター操作)を行うために用いられる。また、本ゲーム装置1は上述したようにシューティングゲームを実行するが、Lボタン14Iはプレイヤがシューティング操作を行うために用いられる。更に、音量ボタン14Kは、下側ハウジング11の左側面に設けられる。音量ボタン14Kは、ゲーム装置1が備えるスピーカの音量を調整するために用いられる。
また、ゲーム装置1はアナログ操作子14Lを備えている。このアナログ操作子14Lは、例えば365°の方向に傾倒可能なジョイスティック等であり、傾倒方向と傾倒量に応じた操作信号を出力する。本実施形態では、アナログ操作子14Lは、仮想空間内のプレイヤキャラクタの位置を移動させるための操作をプレイヤから受け付け、例えばスライドスティックのスライド方向とスライド量に応じてゲーム装置1はプレイヤキャラクタを移動させる。
更に、ゲーム装置1は、各操作ボタン14A〜14K及びアナログ操作子14Lとは別の入力装置として、さらにタッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上を覆うように装着されている。なお、本実施形態では、タッチパネル13は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル13は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル13として、例えば下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度とが一致している必要はない。
本実施形態では、このタッチパネル13は照準の位置の変更を指示する操作と、仮想カメラの向き及び位置の変更を指示する操作をプレイヤから受け付ける。タッチパネル13に対する操作に基づく具体的な照準の位置の変更方法、仮想カメラの向き及び位置の変更方法については説明を後述する。
また、下側ハウジング11の右側面には、挿入口(図1に示す破線)が設けられている。挿入口は、タッチパネル13に対する操作を行うために用いられるタッチペン27を収納することができる。なお、タッチパネル13に対する入力は、通常タッチペン27を用いて行われるが、タッチペン27に限らずプレイヤの指でタッチパネル13を操作することも可能である。
また、下側ハウジング11の右側面には、メモリカード28を収納するための挿入口(図1では、二点鎖線で示している)が設けられている。この挿入口の内側には、ゲーム装置1とメモリカード28とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード28は、例えばSD(Secure Digital)メモリカードであり、コネクタに着脱自在に装着される。メモリカード28は、例えば、ゲーム装置1によって撮影された画像を記憶(保存)したり、他の装置で生成された画像をゲーム装置1に読み込んだりするために用いられる。
さらに、下側ハウジング11の上側面には、カートリッジ29を収納するための挿入口(図1では、一点鎖線で示している)が設けられている。この挿入口の内側にも、ゲーム装置1とカートリッジ29とを電気的に接続するためのコネクタ(図示せず)が設けられる。カートリッジ29は、ゲームプログラム等を記録した記録媒体であり、下側ハウジング11に設けられた挿入口に着脱自在に装着される。
下側ハウジング11と上側ハウジング21との連結部の左側部分には、3つのLED15A〜15Cが取り付けられる。ここで、ゲーム装置1は、他の機器との間で無線通信を行うことが可能であり、第1LED15Aは、ゲーム装置1の電源がオンであるときに点灯する。第2LED15Bはゲーム装置1の充電中に点灯する。第3LED15Cは無線通信が確立している場合に点灯する。したがって、3つのLED15A〜15Cによって、ゲーム装置1の電源のオン/オフ状況、充電状況、及び、通信確立状況をプレイヤに通知することができる。
一方、上側ハウジング21には、上側LCD22が設けられる。上側LCD22は横長形状であり、長辺方向が上側ハウジング21の長辺方向に一致するように配置される。なお、下側LCD12と同様、上側LCD22に代えて、他の任意の方式及び任意の解像度の表示装置を利用してもよい。なお、上側LCD22上を覆うように、タッチパネルを設けてもかまわない。例えば、上側LCD22には、プレイヤに各操作ボタン14A〜14K、アナログ操作子14L及びタッチパネル13の役割を教えるための、操作説明画面が表示される。
また、上側ハウジング21には、2つのカメラ(内側カメラ23及び外側カメラ25)が設けられる。図1に示されるように、内側カメラ23は、上側ハウジング21の連結部付近の内側主面に取り付けられる。一方、外側カメラ25は、内側カメラ23が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング21の外側主面(ゲーム装置1が閉状態となった場合に外側となる面であり、図1に示す上側ハウジング21の背面)に取り付けられる。なお、図1においては、外側カメラ25を破線で示している。これによって、内側カメラ23は、上側ハウジング21の内側主面が向く方向を撮影することが可能であり、外側カメラ25は、内側カメラ23の撮像方向の逆方向、すなわち、上側ハウジング21の外側主面が向く方向を撮影することが可能である。このように、本実施形態では、2つの内側カメラ23及び外側カメラ25の撮像方向が互いに逆方向となるように設けられる。例えば、プレイヤは、ゲーム装置1からプレイヤの方を見た景色を内側カメラ23で撮影することができるとともに、ゲーム装置1からプレイヤの反対側の方向を見た景色を外側カメラ25で撮影することができる。
なお、上記連結部付近の内側主面には、音声入力装置としてマイク(図2に示すマイク41)が収納されている。そして、上記連結部付近の内側主面には、マイク41がゲーム装置1外部の音を検知できるように、マイクロフォン用孔16が形成される。マイク41を収納する位置及びマイクロフォン用孔16の位置は必ずしも上記連結部である必要はなく、例えば下側ハウジング11にマイク41を収納し、マイク41を収納位置に対応させて下側ハウジング11にマイクロフォン用孔16を設けるようにしても良い。
また、上側ハウジング21の外側主面には、第4LED26(図1では、破線で示す)が取り付けられる。第4LED26は、外側カメラ25によって撮影が行われた(シャッターボタンが押下された)時点で点灯する。また、外側カメラ25によって動画が撮影される間点灯する。第4LED26によって、ゲーム装置1による撮影が行われた(行われている)ことを撮影対象者や周囲に通知することができる。
また、上側ハウジング21の内側主面中央付近に設けられる上側LCD22に対して、左右両側の当該主面に音抜き孔24がそれぞれ形成される。音抜き孔24の奥の上側ハウジング21内にはスピーカが収納されている。音抜き孔24は、スピーカからの音をゲーム装置1の外部に放出するための孔である。
以上に説明したように、上側ハウジング21には、画像を撮影するための構成である内側カメラ23及び外側カメラ25と、例えば撮影の際に操作説明画面を表示する表示手段である上側LCD22とが設けられる。一方、下側ハウジング11には、ゲーム装置1に対する操作入力を行うための入力装置(タッチパネル13、各操作ボタン14A〜14K及びアナログ操作子14L)と、ゲーム画面を表示するための表示手段である下側LCD12とが設けられる。したがって、ゲーム装置1を使用する際には、プレイヤは、下側LCD12に表示される撮影画像(カメラによって撮影された画像)を見ながら、下側ハウジング11を把持して入力装置に対する入力を行うことができる。
次に、図2を参照して、ゲーム装置1の内部構成を説明する。なお、図2は、ゲーム装
置1の内部構成の一例を示すブロック図である。
図2において、ゲーム装置1は、CPU(Central Processing Unit)31、メインメモリ32、メモリ制御回路33、保存用データメモリ34、プリセットデータ用メモリ35、メモリカードインターフェース(メモリカードI/F)36及びカートリッジI/F43、無線通信モジュール37、リアルタイムクロック(RTC)38、電源回路39、及びインタフェース回路(I/F回路)40等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて、下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
CPU31は、所定のプログラム(本発明の情報処理プログラムを含む)を実行するための情報処理手段である。CPU31は、通信に関する処理を実行するコア31Aとアプリケーションの実行を行うコア31Bを備える。本実施形態では、所定のプログラムがゲーム装置1内のメモリ(例えば保存用データメモリ34)やメモリカード28、カートリッジ29に記憶されており、コア31Aは当該所定のプログラムを実行することによって通信処理の一部を実行する。
また、コア31Bは、当該所定のプログラムを実行することによって、所定のゲーム処理を実行する。この所定のゲーム処理としてはゲーム画像データの作成処理を含む。より具体的には、コア31Bは、ゲーム画像データの作成処理として、3Dグラフィックスの表示に必要な計算処理、例えば、モデリング処理、仮想カメラ及び光源の設定処理及びレンダリング処理等の実行によって所定期間毎(例えば1/60秒毎)にゲーム画像データを作成してメインメモリ32のVRAM領域に書き込む。また、所定のゲーム処理にはメイン処理も含まれる。メイン処理についての詳細は図24を用いて後述する。
本実施形態では、コア31Aが専ら通信処理を行うため、コア31Bがアプリケーションを実行している間もアプリケーションの実行処理とは無関係に他のゲーム装置との間の通信処理を行うことができる。なお、CPU31によって実行されるプログラムは、ゲーム装置1内のメモリに予め記憶されていてもよいし、メモリカード28及び/またはカートリッジ29から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。例えば、インターネットを経由して所定のサーバからダウンロードすることで取得しても良いし、据置型ゲーム装置と通信を行うことで、当該据置型ゲーム装置に記憶されている所定のプログラムをダウンロードすることで取得しても良い。
CPU31には、メインメモリ32、メモリ制御回路33、及びプリセットデータ用メモリ35が接続される。また、メモリ制御回路33には、保存用データメモリ34が接続される。メインメモリ32は、CPU31のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ32は、上記したCPU31の実行する処理に用いられる各種データを記憶したり、外部(メモリカード28及び29や他の機器等)から取得されるプログラムを記憶したりする。また、メインメモリ32には、画面表示を行う為に使用するVRAM領域が設定されている。本実施形態では、メインメモリ32として、例えばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ34は、CPU31によって実行されるプログラムや内側カメラ23及び外側カメラ25によって撮影された画像のデータ等を記憶するための記憶手段である。保存用データメモリ34は、不揮発性の記憶媒体によって構成されており、例えば本実施例ではNAND型フラッシュメモリで構成される。メモリ制御回路33は、CPU31の指示に従って、保存用データメモリ34に対するデータの読み出し及び書き込みを制御する回路である。プリセットデータ用メモリ35は、ゲーム装置1において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ35としては、SPI(Serial Peripheral Interface)バスによ
ってCPU31と接続されるフラッシュメモリを用いることができる。
メモリカードI/F36はCPU31に接続される。メモリカードI/F36は、コネクタに装着されたメモリカード28に対するデータの読み出し及び書き込みを、CPU31の指示に応じて行う。本実施形態では、外側カメラ25によって撮像された画像データがメモリカード28に書き込まれたり、メモリカード28に記憶された画像データがメモリカード28から読み出されて保存用データメモリ34に記憶されたりする。
カートリッジI/F43はCPU31に接続される。カートリッジI/F43は、コネクタに装着されたカートリッジ29に対するデータの読み出し及び書き込みをCPU31の指示に従って行う。本実施形態では、アプリケーションプログラムがカートリッジ29から読み出されてCPU31によって実行されたり、当該アプリケーションプログラムに関するデータ(例えばゲームのセーブデータ等)がカートリッジ29に書き込まれたりする。
無線通信モジュール37は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。無線通信モジュール37はコア31Aに接続される。コア31Aは、無線通信モジュール37を用いてインターネットを介して、又は介さないで他の機器との間でデータを送受信することができる。
また、無線通信モジュール37は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。ここで、無線通信モジュール37は、この無線通信で使用する電波は例えば無線局の免許が不要な程の微弱電波であり、例えばデータ伝送距離が10mの範囲内の近距離無線通信を行う。従って、コア31Aは、他のゲーム装置1の通信可能範囲内(例えば、両機間の距離が10m以内)に位置するときに、無線通信モジュール37を用いて当該他のゲーム装置1とデータを送受信することができる。このデータの送受信は、プレイヤの指示があったときに行われるのに加え、プレイヤの指示を条件とせずに所定周期毎に自動的に繰り返し行われる。
また、CPU31にはRTC38及び電源回路39が接続される。RTC38は時間をカウントしてCPU31に出力する。例えば、CPU31はRTC38によって計時された時間に基づいて、現在時刻(日付)等を計算することもできる。電源回路39は、ゲーム装置1が有する電源(典型的には電池であり、下側ハウジング11に収納される)から供給される電力を制御し、ゲーム装置1の各部品に電力を供給する。
また、ゲーム装置1はマイク41及びアンプ42を備えている。マイク41及びアンプ42はそれぞれI/F回路40に接続される。マイク41は、ゲーム装置1に向かって発声されたプレイヤの音声を検知して、当該音声を示す音声信号をI/F回路40に出力する。アンプ42はI/F回路40から音声信号を増幅してスピーカ(図示せず)から出力させる。I/F回路40はCPU31に接続される。
また、タッチパネル13はI/F回路40に接続される。I/F回路40はマイク41及びアンプ42(スピーカ)の制御を行う音声制御回路と、タッチパネル13の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換及びD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成してCPU31に出力する。例えば、タッチ位置データは、タッチパネル13の入力面に対して入力が行われた位置の座標を示すデータである。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、及び、タッチ位置データの生成を所定時間に1回の割合で行う。CPU31は、I/F回路40を介して、タッチ位置データを取得
することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
操作子14は、上記各操作ボタン14A〜14K及びアナログ操作子14Lから構成され、CPU31に接続される。操作子14からCPU31へは、各操作ボタン14A〜14K及びアナログ操作子14Lに対する入力状況(押下されたか否か)を示す操作情報が出力される。CPU31は、操作子14から操作情報を取得することによって、操作子14に対する入力に応じた処理を実行する。
内側カメラ23及び外側カメラ25は、それぞれCPU31に接続される。内側カメラ23及び外側カメラ25は、CPU31の指示に応じて画像を撮影し、撮影した画像データをCPU31に出力する。本実施形態では、CPU31は、内側カメラ23及び外側カメラ25のいずれか一方に対して撮影指示を行い、撮影指示を受けたカメラが画像を撮影して画像データをCPU31に送る。
また、下側LCD12及び上側LCD22は、それぞれCPU31に接続される。下側LCD12及び上側LCD22は、それぞれCPU31の指示に従って画像を表示する。
以下、図3〜図22を用いて本ゲーム装置1が実行するシューティングゲームの内容を説明する。このシューティングゲームでは、複数のステージが用意されており、プレイヤが1のステージをクリアすると次のステージに進むようになっている。また、これらのステージの種類として、空中戦ステージと地上戦ステージの2種類のステージがある。空中戦ステージは、空又は宇宙等の空中を表す仮想空間内をプレイヤキャラクタが飛行するステージである。また、地上戦ステージは、陸上を表す仮想空間内をプレイヤキャラクタが徒歩又は走行するステージである。空中戦ステージは、プレイヤキャラクタの移動経路が予め決まっていて、プレイヤキャラクタはその経路に沿って自動的に移動する。そして、プレイヤ操作によりプレイヤキャラクタはその経路から一定範囲だけ離れることが可能である。一方、地上戦ステージでは、プレイヤキャラクタは自動的に移動せずプレイヤ操作によって自由に移動する。空中戦ステージ及び地上戦ステージの何れのステージにおいても、仮想空間内にスタート地点とゴール地点(または、例えばボスキャラを倒すなどのゴールとなる条件)が設定されている。そして、プレイヤが、キャラクタ移動操作を行うことによって、プレイヤキャラクタをスタート地点からゴール地点まで移動させることができたらゲームクリアとなる。
ここで、スタート地点からゴール地点までの道中には敵キャラクタが出現して、この敵キャラクタの攻撃によってプレイヤキャラクタの体力値が0になると、ゲームは終了してしまう。プレイヤは、プレイヤキャラクタを移動操作したり、射撃動作の指示操作をおこなって、敵キャラクタを射撃(シューティング)して倒したり、敵キャラクタからの攻撃を回避することができる。このシューティング方向は上述しように仮想空間における照準の位置に基づいて決定される。
本実施形態においては、照準の位置、仮想カメラの向き、位置及び画角がプレイヤのタッチパネル13に対する操作に応じて変更されることが特徴である。以下、本実施形態の特徴となる照準位置、仮想カメラの向き、位置及び画角の変更について記載する。ここで、地上戦ステージと空中戦ステージとでは照準位置、仮想カメラの向き、位置及び画角の変更に関する処理が異なるため、地上戦ステージと空中戦ステージとに分けて照準位置、仮想カメラの向き、位置及び画角の変更に関する処理を説明する。
(地上戦ステージ上のスライド操作中における照準位置の変更)
図3は地上戦ステージにおける表示画面の一例を示す図である。地上戦ステージにおいては上側LCD22には、仮想カメラCa(図4を参照)から見た仮想空間が表示されて
いる。この仮想空間には、プレイヤキャラクタG1、このプレイヤキャラクタを攻撃するノンプレイヤキャラクタである複数の敵キャラクタG2、及び照準G3(常に仮想カメラの方向を向くように制御される板ポリゴンオブジェクト)が配置されている。また図示を省略しているが地上を表す背景オブジェクトも仮想空間に配置されている。地上戦ステージでは、プレイヤキャラクタG1はプレイヤのアナログ操作子14Lによるキャラクタ移動操作に応じて仮想空間内を自由に移動することが可能となっている。
そして、本実施形態では、仮想カメラCaの制御については、基本的には、キャラクタの移動に追従して仮想カメラCaの位置及び向きも移動するように制御される。図4は仮想カメラCaのデフォルトでの位置と向きを示す図である。図4では仮想空間を上方から真下に見た状態を示している。なお、図7、図10、図13〜図15、図17、図18、図19及び図22Bについても同様である。
図4で示すように、仮想カメラCaの位置(図面では「P1」で示す)は、デフォルトでは、プレイヤキャラクタG1の代表点P2と同一水平面上でこの代表点P2から所定距離だけ離れた位置で、かつプレイヤキャラクタG1の水平方向での向き(プレイヤキャラクタG1の前方方向)と仮想カメラCaの水平方向での向きとが一致する位置に設定される。なお、仮想カメラの向きは、デフォルトでは水平方向、かつプレイヤキャラクタG1(代表点P2)を向くように設定される。また、代表点P2は、例えば、プレイヤキャラクタG1の所定部位の位置(例えば頭部の重心位置)に設定される。
次に、同図(図4)を用いて照準G3のデフォルト位置を説明する。照準G3の代表点P3は、デフォルトでは、プレイヤキャラクタG1の代表点P2から仮想カメラCaの向いている方向に延びる直線とスクリーン面G4との交点に配置される。例えば、代表点P3は照準G3の板ポリゴンオブジェクトの所定位置(例えば中心位置)に設定される。なお、本実施形態では、照準G3はスクリーン面G4上に配置されるが、この構成に代えて、照準G3は、代表点P2から仮想カメラCaの向いている方向に所定距離だけ離れた仮想カメラCaの撮像方向に垂直な平面上に配置されてもよい。また、本実施形態では、プレイヤキャラクタG1及び敵キャラクタG2に隠れて照準G3が表示されないことを防止するために、照準G3の手前に重なるオブジェクトに対して透過処理を施すことで、他のオブジェクトに隠されることなく照準G3を必ず表示している。なお、この構成に代えて、照準G3の仮想空間における位置をスクリーン上の位置(スクリーン上位置)に変換し、仮想カメラCaの撮像画像のスクリーン上位置に照準G3の画像を合成する構成であってもよい。
図5は照準G3の位置とプレイヤのシューティング方向の関係を示す図である。この図5は仮想空間を上方から見た状態を示す。図5で示すように、シューティング方向は、プレイヤキャラクタG1の代表点P2から照準G3の代表点P3に向かう方向であり、この方向に向けて代表点P2から弾丸オブジェクトG5が発射されて飛行する。そして、弾丸オブジェクトG5と衝突した敵キャラクタG2がシューティングされて倒される。なお、本実施形態では、プレイヤキャラクタG1の代表点P2と照準P3の代表点P3を結ぶ直線を基準として、水平方向で所定角度以内に敵キャラクタG2が位置するときには、シューティング方向がその敵キャラクタG2に向かうように補正される。
次に、図6〜図8を用いてスライド操作中(スライド操作をしてタッチオフしていない状態)の照準の移動について説明する。図6は地上戦ステージにおける表示画面の一例を示す図である。この図では、スライド操作に応じて照準G3が移動されている。本実施形態では、プレイヤがタッチパネル13に対してスライド操作を行うと、このスライド量に応じた移動量及び移動方向で照準G3が仮想空間を移動する。図6では、タッチペン27が図1で示すタッチ位置からスライド量a1だけX軸正方向にスライド操作されている。
なお、ここのでX軸正方向とはタッチパネル13の座標を基準とした方向であり、タッチパネル13の座標では図6における右方向がX軸正方向、左方向がX軸負方向、上方向がY軸正方向、下方向がY軸負方向となる。このとき、照準G3が、カメラ座標系のX軸方向にスライド量a1に応じた移動量だけデフォルト位置から移動する。ここで、照準G3は、スライド操作に応じて無制限に移動可能ではなく、図6に点線で示す範囲(照準移動可能範囲)でのみ移動可能になっている。なお、この点線は画面には表示されない。
図7は照準移動可能領域を示す図である。照準移動可能範囲は、スクリーン面G4上における仮想カメラG4の画角θ1よりも小さい角度の範囲に設定されている。具体的には、代表点P2から仮想カメラG4の向いている方向に延びる直線を基準として、照準G3は水平方向に左右にθ2x(θ1より小さい)の範囲まで移動可能である。また、この直線を基準として照準G3は垂直方向に上下にθ2y(θ1より小さい)の範囲まで移動可能である。
前述の通り、照準G3の代表点P3は、デフォルトでは、プレイヤキャラクタG1の代表点P2から仮想カメラCaの向いている方向に延びる直線上に存在し、また、照準移動可能範囲は、当該直線を基準として、水平方向に左右にθ2x、上下にθ2yの範囲である。すなわち、照準G3の位置や照準移動可能範囲は、仮想カメラの位置および向きに基づいて決定されるものであり、仮想カメラCaの位置および向きに追従して変更される。
そして、図8で示すように、スライド操作におけるタッチ位置の変化は、タッチパネル13の座標におけるX成分の変化と、Y成分の変化に分けて検出される。ここでは、スライド量a1のうち、X成分の変化量が変化量axであり、Y成分の変化量が変化量ayである。そして、このX成分の変化量axに応じた移動量で、照準G3における代表点P3が仮想カメラCaの座標系を基準としてX軸方向に移動する。そして、このY成分の変化量ayに応じた移動量で、照準G3における代表点P3が仮想カメラCaの座標系を基準としてY軸方向に移動する。なお、仮想カメラCaの座標系では、図7における右方向が、X軸正方向、左方向がX軸負方向、手前方向がY軸正方向、奥方向がY軸負方向となる。
上述したように、本実施形態では、照準G3の仮想空間における位置をプレイヤのスライド操作という直感的で簡易な操作で変更することができる。なお、従来技術では、常に表示画面の中央に位置するように照準G3が配置され、照準の位置を移動させるためには仮想カメラの向きそのものを変更しなければならなかったが、本実施形態では仮想カメラCaの向き又は位置を変更しなくても一定の範囲で照準G3の位置を変更させてシューティング方向を変えることができる。
(地上戦ステージにおけるスライド操作による仮想カメラの向き、位置の変更)
次に、図9〜図11を用いてスライド操作中の仮想カメラ向き及び仮想カメラ位置の移動について説明する。図9は地上戦ステージにおける表示画面の一例を示す図である。この図9の例では、タッチペン27が図6で示すタッチ位置から更にスライド量a2だけスライド操作されている。従って、この例では、タッチペン27はタッチオンした位置からスライド量a(スライド量a1+スライド量a2)移動している。この例では、照準G3がスライド量a1に応じた移動量で移動すると照準移動可能範囲の境界に到るが、本実施形態では、照準G3が境界位置に到るまではスライド操作によって照準G3の位置が変更され、到った後には、スライド操作によって仮想カメラCaの向きと位置の移動が行われる。
すなわち、仮想カメラCaの向きおよび向きは、照準G3が境界に至った後のスライド操作の方向に応じた方向にスライド量a2に応じた度合いで変更される。
なお、以下の説明において、照準G3がX軸方向の境界位置に至ってからのX軸方向(タッチパネル13の座標系におけるX軸方向)のスライド量をa2xとし、照準G3がY軸方向の境界位置に至ってからのY軸方向(タッチパネル13の座標系におけるY軸方向)のスライド量をa2yとして説明する。
図10はスライド操作中における仮想カメラCaの向き及び位置の水平方向における変更を示す図である。仮想カメラCaの位置は、プレイヤキャラクタG1の代表点P2を含む水平面において、当該P2を中心とする所定半径r1の円上に設定される。すなわち、仮想カメラCaの水平方向についての移動可能範囲(仮想カメラ移動可能範囲)はこの円上である。そして、図1の右方向(X軸正方向)にスライド操作があったときには、照準G3がX軸方向の右側境界に至った後、仮想カメラCaの位置が現在位置からC1の方向にスライド量a2xに応じて移動する。また、図1の左方向(X軸負方向)にスライド操作があったときには、照準G3がX軸方向の左側境界に至った後、仮想カメラCaの位置がデフォルト位置からC2の方向にスライド量a2xに応じて移動する。
そして、仮想カメラCaの向きは仮想カメラCaの移動後においてもプレイヤキャラクタG1の代表点P2を向くように変更される。同図では、仮想カメラCaの向きは、デフォルトでは矢印Aの方向を向いていたが、位置の変更後には矢印Bの方向に向くように変更されている。上述したように仮想カメラCaの位置はスライド量a2xとスライド操作の方向に応じて変更されるため、仮想カメラCaの向きもスライド量a2xとスライド操作の方向に応じて変更されることになる。
図11はスライド操作中における仮想カメラCaの向き及び位置の垂直方向における変更を示す図である。仮想カメラCaの位置は、プレイヤキャラクタG1の代表点P2を含む垂直面において、当該P2を中心とする所定半径r1の円弧上に設定される。すなわち、仮想カメラの垂直方向についての移動可能範囲はこの円弧上であり、仮想カメラCaは、直線r1を基準として下方向にα1°(90°よりも小さい角度)、上方向にα2°(例えば90°)の範囲で移動可能である。そして、図1の上方向にスライド操作があったときには、照準G3がY軸方向の上側境界に至った後、仮想カメラCaの位置がデフォルト位置からC3の方向にスライド量a2yに応じて移動する。また、図1の下方向にスライド操作があったときには、照準G3がY軸方向の下側境界に至った後、仮想カメラCaの位置がデフォルト位置からC4の方向にスライド量a2yに応じて移動する。
そして、仮想カメラCaの向きは仮想カメラCaの移動後もプレイヤキャラクタG1の代表点P2を向くように変更される。同図では、仮想カメラCaの向きは、デフォルトでは矢印Aの方向を向いていたが、位置の変更後には矢印Cの方向に向くように変更されている。上述したように垂直方向においても、仮想カメラCaの位置はスライド量a2yとスライド操作の方向に応じて変更されるため、仮想カメラCaの向きもスライド量a2yとスライド操作の方向に応じて変更されることになる。
上述したように、本実施形態では、スライド操作によって照準G3の位置、仮想カメラCaの向き及び位置を変更することができるが、さらに、「スライドオフ」(スライド操作をしてタッチオフすること)の後においても、照準G3の位置、仮想カメラCaの向き及び位置は慣性力によって変化する。なお、スライド操作中は慣性力による変化はしない。
以下、この慣性力による照準G3の位置、仮想カメラCaの向き及び位置の変化について図7、図10、図12〜図15を用いて説明する。
(地上戦ステージにおけるスライドオフ後の照準位置の変更)
まず、スライドオフの時点において、照準が照準移動可能範囲の境界に到達していないときには、照準G3の位置が慣性的に変化する。
照準G3の慣性力による移動について説明する。まず、照準移動可能範囲を説明すると、この照準移動可能範囲については図7を用いて説明したスライド操作中のものと同一である。スライド操作中と相違する点は、スライド操作中は照準G3がスライド操作の方向に応じた方向とスライド量に応じた移動量で移動するが、スライドオフ後には照準G3がタッチオフ直前のスライド方向とスライド量に応じた慣性力に応じて移動し、かつ徐々に減速して停止することである。ここで、慣性停止する前にプレイヤがタッチパネル13上の任意の1点をタッチすると、照準G3の移動は瞬時に停止する。このため、プレイヤが、自己の所望の位置に照準G3が移動させるためには、スライドオフ後、慣性移動している照準が所望の位置まで移動したときに任意の位置をタッチオンするだけの操作でよい。これによって、タッチ操作を行い続けなくても、操作性よく照準G3を所望の位置まで移動させることができる。
(地上戦ステージのスライドオフ後における仮想カメラの向き、位置の変更)
スライドオフの時点において、照準が照準移動可能範囲の境界に既に到達しているとき、または、慣性力で移動する照準G3が照準移動可能範囲の境界に到達した後には、仮想カメラの向き、位置が慣性力で変化する。
仮想カメラCaの向きの慣性力による変更及び仮想カメラCaの位置の慣性力による移動について説明する。ここで、水平方向における仮想カメラ移動可能範囲及び仮想カメラCaの向きの変化は図10を用いて説明したスライド操作中のものと同一である。しかしながら、垂直方向における仮想カメラ移動可能範囲及び仮想カメラCaの向きの変化については、スライド操作中とは異なっている。
図12は、スライドオフ後の、垂直方向における仮想カメラ移動可能範囲及び仮想カメラCaの向きの変化を示す図である。図12で示すように、スライドオフ後においてもスライド操作中と同様に、仮想カメラCaの位置は、プレイヤキャラクタG1の代表点P2を含む垂直面において、当該P2を中心とする所定半径r1の円弧上に設定され、この円弧上で変更可能である。しかしながら、仮想カメラ移動可能範囲が、直線r1を基準として下方向にα1°(90°よりも小さい角度)、上方向にα1°の範囲で移動可能である点が異なっている。なお、スライド操作中には仮想カメラCaは上方向にα2°の範囲で移動可能であるが、このα2°はα1°よりも大きい角度となっている。このように、仮想カメラ移動可能範囲がスライド操作中よりも狭くなっている。そして、仮想カメラCaの向きについてもスライド操作中と同様にして変更される。もっとも、垂直方向における仮想カメラ移動可能範囲がスライド操作中よりも狭くなっているため、垂直方向における仮想カメラCaの向きについてはスライド操作中よりも小さい度合いでのみ変更可能(D方向からE方向まで変更可能)になっている。
照準G3が照準移動可能範囲の境界に到達した後は、スライドオフ後に、仮想カメラCaの向き及び位置がタッチオフ直前のスライド方向とスライド量に応じた慣性力で変化又は移動する。そして、仮想カメラCaの向きの変化及び位置の移動が徐々に減速して停止する。ここで、慣性力による仮想カメラCaの向きの変化及び位置の移動が停止する前にプレイヤがタッチパネル13上の任意の1点をタッチすると、仮想カメラCaの向きの変化及び位置の移動が瞬時に停止する。このため、自己の所望の仮想カメラCaの向き及び位置にするためには、スライドオフをした後、慣性で変化している仮想カメラCaが自己の所望の向き及び位置に到ったときに任意の位置をタッチオンするだけの操作でよい。これにより、プレイヤがタッチ操作を行い続けなくても、所望の向き及び位置に仮想カメラ
Caの向き及び位置させることができ、操作性よく仮想カメラCaの向き及び位置の変更を行うことができる。
なお、スライドオフ後には垂直方向の仮想カメラCaの位置及び向きは、自動的にデフォルト位置(プレイヤキャラクタG1の代表点P2と同一水平面)及びデフォルト向き(水平方向)に徐々に戻っていく。
なお、前述の通り、照準G3の位置は仮想カメラCaの位置および向きに基づいて決定されるので、スライド操作により、または、スライドオフ後に慣性的に、仮想カメラCaの位置および向きが変化する場合、それに応じて、照準G3の位置も変化する。ただし、照準G3の画面上の位置は変化しない(例えば、照準が境界位置に達した後、仮想カメラCaが慣性移動する場合において、照準G3は境界位置のままである)。
(仮想カメラの慣性制御の減速度合いの変化:仮想カメラの撮像方向の一定範囲内にNPCが存在する場合)
上述したように、スライドオフ後には、照準G3の位置、仮想カメラCaの向き及び位置が慣性力によって変化していき、徐々にこの変化が減速していくが、本実施例では、この変化の減速度合いをある条件で大きくする。具体的には、ノンプレイヤキャラクタ(NPC)が仮想カメラの撮像方向の一定範囲内に存在するときに減速度合いを大きくする。例えば、図13に示すように、慣性移動中の仮想カメラCaの位置から仮想カメラCaの向きに延びる直線と、仮想カメラCaの位置から或るNPCの位置に延びる直線の構成する角度が所定角度α3°以内であるときには、仮想カメラCaの向き及び位置の慣性力による変化の減速度合いを大きくする。ここで、撮像方向の一定範囲内に存在するときに減速度合いを大きくする対象は、任意のNPCとしてもよいし、特定のNPC(例えば、す
べての敵キャラクタ、または、特定種類の敵キャラクタ)としてもよいし、プレイヤキャ
ラクタG1が敵キャラクタから攻撃を受けてダメージを受けたときに、その敵キャラクタG2の識別情報を記憶しておいて、当該敵キャラクタのみとしてもよい(または、当該敵キャラクタについての減速力をさらに強くしてもよい)。なお、NPCの種類によって減速度合いを変更してもよい。これによって、プレイヤがシューティングすべき敵キャラクタG2が仮想カメラの中心付近に表示されているとき等には仮想カメラCaの向き及び位置の変化がゆるやかになり、敵キャラクタG2を仮想カメラでとらえることが容易となる。
(仮想カメラの慣性制御の減速度合いの変化:プレイヤキャラクタの近くに所定数以上のNPCが存在する場合)
また、図14で示すように、プレイヤキャラクタG1を中心として所定距離以内に居る敵キャラクタG2の数が所定数以上のときには(または、現在のプレイエリアに存在する敵キャラクタG2の数が所定数以上のときには)、上述の「仮想カメラCaの撮像方向の一定範囲内にNPCが存在する場合の減速度合いの変化」の処理を停止してもよい。これは、多数の敵キャラクタG2が存在するときには、敵キャラクタG2が撮像方向に存在する頻度が高く、頻繁に強く減速することになって、慣性によるカメラ制御が有効に働かない。このため、敵キャラクタG2がプレイヤキャラクタG2の周辺に多くいるときには、上述の減速度合いの変更処理を停止するようにする。
(仮想カメラの慣性制御の減速度合いの変化:プレイヤキャラクタの進行すべき方向に撮像方向が向いている場合)
また、本実施形態において、地上戦ステージでは、当該ステージのスタート地点からゴール地点を結ぶ所定のルートがパスとして定義されている。当該パスは、プレイヤキャラクタG1の進行すべき方向(ルート)をガイドするためのものであり、仮想ゲーム空間においてその座標およびその座標それぞれについて進行方向(水平方向のみ)が定義されて
いる。(または、地面オブジェクトに埋め込む形で設定されていてもよい。)そして、例えば、プレイヤキャラクタG1がパスの近辺に居るとき(一定距離以内等)には進行方向を示す矢印オブジェクトが表示される。ここで、図15で示すように、仮想カメラCa(またはプレイヤキャラクタG1)が、パスの近辺(例えば、仮想カメラCaからパスへの距離が一定以内、または、プレイヤキャラクタG1からパスへの距離が一定以内)に位置するときに、仮想カメラCaの向き及び位置の慣性力による変化の減速度合いを大きくしてもよい。具体的には、仮想カメラCaが位置する地点(またはプレイヤキャラクタG1の地点)から一番近いパス上の点に設定された進行方向(水平方向)が仮想カメラCaの向いている方向(水平方向)から角度α4°以内で場合である。従って、仮想カメラCaの位置(またはプレイヤキャラクタG1の位置)がパスの近辺にあり、かつ仮想カメラCaの向きがパス方向に近いときには、仮想カメラCaの向き及び位置の変化がゆるやかになり、プレイヤが、仮想カメラCaをプレイヤキャラクタG1の進行すべき方向に向くように制御することが容易になる。
(地上戦ステージにおけるズーム処理)
次に、図16〜18を用いて地上戦ステージにおけるズーム処理について説明する。図16は仮想空間をズームで表示する上側LCD22を示す図である。地上戦ステージにおいては、プレイヤがダブルタップ操作をタッチパネル13に対して行うことで、図16で示すように、仮想カメラCaの視点が主観視点に変更され、かつ通常時よりもズームして仮想空間を仮想カメラCaに投影する。具体的には、注視点を同一に維持した状態で仮想カメラCaの画角θ1を変更することで、仮想空間がズームで表示される。図17は通常時(地上戦ステージにおいてズーム時ではない時)の画角を説明するための図であり、図18はズーム表示がなされている期間(ズーム時)の画角を説明するための図である。ダブルタップ操作があると、仮想カメラCaの画角θ1を小さく変更することで、敵キャラクタG2等のオブジェクトのスクリーン面G4上における投影範囲が大きくなる。なお、図17及び図18の斜線部分が敵キャラクタG2の投影範囲を示している。従って、画角θ1を小さく変更することでズーム表示が行われる。
上述したズーム処理はダブルタップ操作によって行われるが、このダブルタップ操作はタッチパネル13の所定領域内(たとえば、全面)の何れの領域で行ってもよい。これに
よって、プレイヤのタッチパネル13における所望の位置でダブルタップ操作を行うという簡易な操作によって、ズーム処理の実行をゲーム装置1に指示することができる。
なお、ズームは、ダブルタップにおける2回目のタッチ操作を継続している間だけ行われ、当該2回目のタッチ操作をオフすると、ズーム処理は解除されて、通常の処理に戻る。ダブルタップにおける2回目のタッチ操作が継続している限り、そのタッチ位置が移動してもズーム処理は継続する。
なお、ズーム時には、上述したように、仮想カメラCaの視点は主観視点に変更される。すなわち、プレイヤキャラクタG1の代表点P2の位置に仮想カメラCa位置が設定される(図19を参照)。また、ズーム中にスライド操作を行っても(すなわち、ダブルタップしてそのままタッチ操作を継続しつつタッチ位置を移動させても)仮想カメラCaの向き及び位置は変更しない。ズーム中にスライド操作を行うと、照準G3の位置が移動する。
(ズーム処理時の照準G3の移動)
以下に、図19を用いて、ズーム中の照準G3の移動について説明する。ズーム中においても照準G3は、スクリーン面G4上に配置され、デフォルト位置についても通常時(非ズーム時)と同一である。また、ズーム中のスライド操作の方向とスライド量に応じて、照準G3がデフォルト位置から移動する。ただし、ズーム時ではスライド操作によって
のみ照準G3の位置を変更することができ、慣性力によって照準G3を移動させることができない。
また、図19はズーム中の照準移動可能範囲を示す図であるが、図19で示すように、照準移動可能範囲が通常時の照準移動可能範囲よりも広く、具体的には、スクリーン面G4の全域である点が異なっている。すなわち、移動可能範囲を規定する角度θ2(θ2x、θ2y)が通常時のθ2(θ2x、θ2y)よりも大きく、具体的には、画角θ1と同一に設定される。更に、スライド操作の量に対する照準G3の移動量が通常時よりも小さい点が異なっている。これによって、ズーム時ではプレイヤは通常時よりも緻密に照準G3の位置を変更することができる。
(空中戦ステージにおける照準位置、カメラ向き及び位置の変更)
次に、空中戦ステージにおける照準G3の位置、仮想カメラCaの向き及び位置に関する処理を説明する。なお、空中戦ステージでは仮想カメラCaの画角θ1の変更は行われず、仮想空間がズーム表示されることはない。図20は空中戦ステージにおける表示画面の一例を示す図である。
図20で示すように、空中戦ステージにおいても地上戦ステージと同様に、上側LCD22には仮想カメラCa(図4を参照)から見た仮想空間が表示されている。そして、地上戦ステージと同様に、この仮想空間には、プレイヤキャラクタG1、このプレイヤキャラクタを攻撃するノンプレイヤキャラクタである複数の敵キャラクタG2、及び照準G3が配置されている。また、図示を省略しているが、空中戦ステージでは地上戦ステージとは異なり、空中(宇宙や空)を表す背景オブジェクトも仮想空間に配置されている。
本実施形態では、空中戦ステージにおいても、上述したような、スタート地点からゴール地点に至るまでの仮想区間内の所定のルートがパスとして設定されている。但し、地上戦ステージとは異なり、プレイヤがキャラクタ移動操作を行わなくても、プレイヤキャラクタG1が当該設定されたパスに沿って自動的に移動する。図21Aは仮想空間に配置されたパスとプレイヤキャラクタの移動ルートとの関係を示す図である。図21Aでは上方から真下に見た状態の仮想空間が示されている。同図では、二点鎖線矢印がパスの位置及び向きを示している。なお、パスは画面には表示されない。ここでは、プレイヤがキャラクタ移動操作を全く行わず(つまり、アナログ操作子14Lを一切操作せず)、プレイヤキャラクタG1が自動的に移動したときの状態を示している。この様に、キャラクタ移動操作を行わなければ、プレイヤキャラクタG1はパスに沿って代表点P2が通るように移動する。但し、プレイヤはキャラクタ移動操作によってパスを基準として所定範囲まではプレイヤキャラクタG1を移動させることができる。
次に、図21Bを用いてキャラクタ移動操作に基づくプレイヤキャラクタG1の移動を説明する。図21BはプレイヤキャラクタG1の移動可能方向を示す図である。図21Bで示すように、本実施形態では、プレイヤキャラクタG1のローカル座標系のZ軸方向はパス方向と一致するように設定される。そして、プレイヤキャラクタG1のローカル座標系のZ軸方向の移動は、プレイヤのキャラクタ移動操作によって移動されず、自動で移動される。もっとも、ローカル座標系のX軸方向とY軸方向についてはパスの位置から所定範囲以内に限って、プレイヤのキャラクタ移動操作によってプレイヤキャラクタG1の位置を移動させることができる。
具体的には、プレイヤがアナログ操作子14Lを図1における左にスライドさせるとプレイヤキャラクタG1はパスに向かって左側に移動するように(X軸負方向に)移動する。また、プレイヤがアナログ操作子14Lを図1における右にスライドさせるとプレイヤキャラクタG1はパスに向かって右側に移動するように(X軸正方向に)移動する。また
、プレイヤがアナログ操作子14Lを図1における上にスライドさせるとプレイヤキャラクタG1はパスに向かって上側に移動するように(Y軸正方向に)移動する。プレイヤがアナログ操作子14Lを図1における下にスライドさせるとプレイヤキャラクタG1はパスに向かって下側に移動するように(Y軸負方向に)移動する。
ここで、空中戦ステージにおけるデフォルトでの仮想カメラCaの向き及び位置を説明する。まず、上記パスの全域に亘って対応点が配置されている。この対応点には仮想カメラCaのデフォルト位置及び向きが設定されている。そして、図21Aを参照して、仮想カメラCaのデフォルトでの位置及び向きは、プレイヤキャラクタG2が位置する対応点に設定された位置及び向きで決定される。なお、仮想カメラCaのデフォルトでの位置は必ずプレイヤキャラクタG1と同一水平面上に設定される。また、仮想カメラCaのデフォルトでの向きは必ずプレイヤキャラクタG1の代表点P2を向くように設定されている。従って、プレイヤキャラクタG1の移動がなければ、画面の中心に必ずプレイヤキャラクタG1が表示されている状態になる。
しかしながら、プレイヤ操作によりプレイヤキャラクタG1がパスから上下左右方向に移動したときでも基本的には仮想カメラCaの位置及び向きの変更はされないため、このときには、プレイヤキャラクタG1は画面の中心から移動した位置に表示される(図22Cを参照)。
なお、空中戦ステージにおいては、スライド操作に応じて仮想カメラCaの位置及び向きが変更されることはないし、スライドオフ後も仮想カメラCaの位置及び向きが変更されることはない。
次に、図22Aを用いて空中戦ステージにおける照準G3について説明する。図22Aは空中戦ステージにおける表示画面の一例を示す図である。
照準G3のデフォルト位置は、地上戦ステージと同様、プレイヤキャラクタG1の代表点P2から仮想カメラCaの向いている方向に延びる直線とスクリーン面G4(または、代表点P2から仮想カメラCaの向いている方向に所定距離だけ離れた仮想カメラCaの向きに垂直な平面)との交点に配置される。プレイヤキャラクタG1が移動したときには、図22Bで示すように、移動後におけるプレイヤキャラクタG1の代表点P2の位置に基づいて照準G3のデフォルト位置も変更される。図22Bは、プレイヤキャラクタG1が移動した場合の照準位置G3のスクリーン画面G4におけるデフォルト位置の変更を示す図である。なお、同図では、照準G3のデフォルト位置について、プレイヤキャラクタG1の移動前の位置を斜線で示し、プレイヤキャラクタG1の移動後の位置を黒塗で示す。
上記のように、プレイヤキャラクタG1の移動に応じて照準G3のデフォルト位置が変化する。スライド操作がされなければ、照準G3の位置はこのデフォルト位置に設定される。そして、スライド操作中は、地上戦ステージの通常時(ズーム中でないとき)と同様、スライド操作の移動方向及びスライド量に応じて、照準G3はデフォルト位置から移動する。また、スライドオフ後にも、地上戦ステージの通常時と同様、慣性により照準G3は移動する。図22Aでは、照準G3の位置がデフォルト位置から移動されている。図22Cは、図22Aの状態から、プレイヤキャラクタG1が移動した場合の上側LCD22を示す図である。
なお、上述のように照準G3の位置がデフォルト位置から変更されて算出されることで、プレイヤキャラクタG1が移動することによって、照準G3(代表点P3)の位置がスクリーン面G4の境界位置を超えるときがある。このときには、図22Cで示すように、
スクリーン面G4の境界位置に照準G3の位置が補正される。なお、空中戦ステージにおける照準G3は、照準移動可能範囲がスクリーン面G4の全域である。また、空中戦ステージにおいても、地上戦ステージと同様、照準G3は仮想カメラの方向を向く板ポリゴンオブジェクトである。
次に、図23を参照して、ゲーム装置1がメインメモリ32に記憶する各種プログラムや各種データについて説明する。
図23はメインメモリ32が記憶するプログラム及び各種データの一例を示す図である。各種データはプログラムをゲーム装置1が実行することに応じて記憶される。
メインメモリ32は、プログラム記憶領域32aとデータ記憶領域32bを備える。プログラム記憶領域32aは、図24を用いて後述のメイン処理等を実行するメイン処理プログラム321等を記憶する。
データ記憶領域32bは、タッチパネル操作情報322、ステージ情報323、プレイヤキャラクタ情報324、ノンプレイヤキャラクタ情報325、照準情報326、カメラ情報327及びダブルタップフラグ328等を記憶する。タッチパネル操作情報322はタッチの有無、及びタッチパネル13におけるプレイヤにタッチされた位置(タッチ座標、すなわち入力座標)を示す情報である。タッチパネル13からの入力信号は所定周期毎(例えば1/60秒の描画周期毎)に検出されるが、タッチパネル操作情報322はこの入力信号に基づくタッチ座標を示す。なお、タッチデータ記憶領域32bには複数回分の操作情報322が記憶される。また、ステージ情報323は各ステージの仮想空間の生成に必要な情報であり、例えば背景オブジェクトに関する情報、仮想空間に設定されるパスの位置等に関する情報、スタート地点とゴール地点を示す情報等を含む。
そして、プレイヤキャラクタ情報324は、プレイヤキャラクタG1を仮想空間に生成するための情報であり、例えばプレイヤキャラクタG1のポリゴンデータやテクスチャデータ、保有アイテムを示すデータ等が含まれる。また、ノンプレイヤキャラクタ情報325は、敵キャラクタG2を仮想空間に生成するための情報であり、例えば敵キャラクタG2の種類、初期配置位置を示すデータ、ポリゴンデータやテクスチャデータ、動作パターンを示すデータ等が含まれる。ノンプレイヤキャラクタ情報325は、仮想空間に配置する敵キャラクタG2の数だけ記憶されている。また、プレイヤに特定の攻撃を加えた敵キャラクタG2に対応するノンプレイヤキャラクタ情報325には所定のフラグが一定時間の間、オンとして設定される。
また、照準情報326は、照準G3のスクリーン面G4上の位置を、例えば、スクリーン面G4上のデフォルト位置からのベクトルで示す情報である。更に、照準情報326は仮想空間における照準326の位置及び向きを示す。なお、最新の照準情報326だけでなく、過去数回分の照準情報326も記憶されている。そして、カメラ情報327は、仮想カメラCaの仮想空間における位置、向き、注視点の位置及び画角を示す情報である。そして、ダブルタップフラグ328は、プレイヤのダブルタップ操作が行われたことを示すフラグであり、ダブルタップ操作が検出されたときから2回目のタッチ操作がオフになるまで記憶される。
以下、図24を用いてゲーム装置1が実行するメイン処理を説明する。図24はゲーム装置1が実行するメイン処理の一例を示すフローチャートである。まず、コア31Bがゲームに関する初期処理を実行する(S1)。具体的には、コア31Bは、プレイヤの選択によって、複数のキャラクタの中からゲームに使用するプレイヤキャラクタG1及びこのプレイヤキャラクタG1の装備(保有アイテム)等の選択を行う。そして、コア31Bは
、複数のステージの中からステージを選択する(S2)。ここで、最初はファーストステージを選択する。そして、コア31Bは、プレイヤキャラクタG1及び敵キャラクタG2等のゲームキャラクタのデータ、および、選択したステージの仮想空間を構築するための地形オブジェクトのデータ等をカートリッジ29から読み込んで、仮想空間を構築する処理を行う(S3)。具体的には、コア31Bは、読み込んだデータを用いて当該ステージの3次元空間を構築し、プレイヤキャラクタG1、及び敵キャラクタG2や他のオブジェクトを仮想空間の初期位置に配置する処理等を実行する。また、コア31Bは、デフォルト位置で照準G3及び仮想カメラCaを仮想空間に設定するとともに、仮想カメラCaの向きをデフォルトの向きに設定する。
次に、コア31Bは操作情報を取得する。すなわち、操作子14から送信されてくる操作情報がメインメモリに記憶されるので、CPU10は、この操作情報を取得して操作内容を判別する(S4)。例えば、コア31Bは、タッチパネル13に対するタッチの有無やタッチ位置を判別してタッチパネル操作情報322を生成してデータ記憶領域32bに記憶させる。また、アナログ操作子14Lの操作方向及び操作量、Lボタン14Iの押下の有無等を判別して、この判別内容をデータ記憶領域32bに記憶させる。
次に、コア31BはステップS2で選択したステージが地上戦ステージか否かを判断する(S5)。そして、地上戦ステージであると判断したときには(S5でYES)、コア31Bは地上戦キャラクタ制御処理を実行する(S6)。この地上戦キャラクタ制御処理では、コア31Bは、アナログ操作子14Lの操作方向及び操作量に基づいてプレイヤキャラクタG1の位置、向き及び動作を変更するようメインメモリ32に設定する。このメインメモリ32へのプレイヤキャラクタG1の位置、向き及び動作の設定に基づいて、後述のステップS11の描画処理が行われる。なお、上述したように、地上戦ステージにおいては、コア31Bはアナログ操作子14の操作に基づいて仮想空間内を水平方向に移動するように制御される。更に、地上戦キャラクタ制御処理では、コア31Bは敵キャラクタG2の仮想空間における向き、位置及び動作を所定のアルゴリズムを用いて決定してメインメモリ32に設定する。なお、このメインメモリ32への敵キャラクタG2の位置、向き及び動作の設定に基づいて、後述のステップS11の描画処理が行われる。
続いて、コア31Bは地上戦時照準位置・カメラ制御処理を実行する(S7)。この地上戦時照準位置・カメラ制御処理は、上述したような、プレイヤのスライド操作中及びスライドオフ後における照準位置の変更及びカメラ制御(位置及び向きの変更)を行う。また、地上戦照準位置・カメラ制御処理では、上述したようなズーム処理とズーム時の照準位置の変更が行われる場合もある。この地上戦照準位置・カメラ制御処理についての詳細は図25等を用いて後述する。この後、コア31Bは続くステップS10に処理を進める。
一方、地上戦ステージではないと判断したとき、すなわち空中戦ステージであると判断したときには(S5でNO)、コア31Bは空中戦時キャラクタ制御処理を実行する(S8)。この空中戦時キャラクタ制御処理は、アナログ操作子14Lの操作方向及び操作量とパスに基づいてプレイヤキャラクタG1の位置、向き及び動作をメインメモリ32に設定するための処理である。なお、上述したように、空中戦ステージでは地上戦ステージとは異なり、プレイヤキャラクタG1は仮想空間に設定されたパスに沿って自動的に移動する。そして、プレイヤキャラクタG1は、アナログ操作子14Lの操作方向及び操作量に基づいて、プレイヤキャラクタG1のローカル座標系のX軸方向とY軸方向に所定範囲だけパスから移動することになっている。従って、コア31Bは、プレイヤキャラクタG1の位置を、プレイヤキャラクタG1のZ軸方向に所定量だけ自動的に移動させる。また、アナログ操作子14Lの操作があったときには、更に、アナログ操作子14Lの操作方向及び操作量に基づいて、プレイヤキャラクタG1のローカル座標系のX軸方向とY軸方向
に所定範囲だけパスから移動させてプレイヤキャラクタG1の位置がメインメモリ32に設定される。そして、プレイヤキャラクタG1の向きは常にパス方向を向くようにメインメモリ32に設定される。なお、このメインメモリ32へのプレイヤキャラクタG1の位置、向き及び動作の設定に基づいて、後述のステップS11の描画処理が行われる。更に、空中戦キャラクタ制御処理では、敵キャラクタG2の仮想空間における向き、位置及び動作を所定のアルゴリズムを用いて決定して、メインメモリ32に設定する。なお、このメインメモリ32への敵キャラクタG2の位置、向き及び動作の設定に基づいて、後述のステップS11の描画処理が行われる。
次に、コア31Bは空中戦時照準位置・カメラ制御処理を実行する(S9)。この空中戦時照準位置・カメラ制御処理では、上述したような、プレイヤのスライド操作中の照準G3の位置の変更を行う。また、パスに設定された仮想カメラCaの向き及び位置と、仮想空間におけるプレイヤキャラクタG1の位置に応じてカメラ制御(位置及び向きの設定)を行う。この空中戦照準位置・カメラ制御処理についての詳細は図33等を用いて後述する。この後、コア31Bは続くステップS10に処理を進める。
ステップS10では、コア31Bは攻撃関連処理を行う(S10)。この攻撃関連処理では、プレイヤキャラクタG1のシューティングに関連するシューティング処理と敵キャラクタG2からプレイヤキャラクタG1への攻撃に関連する敵攻撃処理が行われる。シューティング処理では、シューティング操作の入力の有無が判断され、この操作の入力があったときには後の描画処理S11で弾が発射するように描画されるように設定する。また、シューティング操作があったときには、コア31Bはシューティング方向を算出する。このシューティング方向はプレイヤキャラクタG1の代表点P2の位置から照準G3の代表点P3の位置に向かう方向である。
この後、コア31Bは敵キャラクタG2のシューティングの成否を判断する。具体的には、コア31BはプレイヤキャラクタG1の代表点P2からシューティング方向に発射された弾丸オブジェクトG5が敵キャラクタG2に衝突したか否かを判断し、衝突したときにはこの敵キャラクタG2のシューティングが成功した(射撃が命中した)と決定する。なお、上述したように、シューティング直線(プレイヤキャラクタG1の代表点P2からシューティング方向に発射された弾丸オブジェクトG5が所定距離だけ延びる直線)上に敵キャラクタG2が居ないときでも、敵キャラクタG2の位置がこのシューティング直線から所定角度以内の位置でありかつプレイヤキャラクタG1から所定距離以内であるときには、このシューティング方向は敵キャラクタG2に向かうように補正される。そして、当該敵キャラクタG2へのシューティングの成功が決定される。
そして、敵攻撃処理では、コア31Bは、敵キャラクタG2にプレイヤキャラクタG1に対して攻撃動作(例えばシューティング動作)を行わせるか否かを所定のアルゴリズムを用いて決定する。そして、攻撃動作を行わせると決定したときには、コア31Bは後の描画処理S11で数フレームかけて敵キャラクタG2に攻撃モーションをさせるように設定する。そして、コア31Bは、所定のアルゴリズムを用いて敵キャラクタG2の攻撃が成功したか否かを決定し、成功したときにはプレイヤの体力値を所定値だけ減少させる。
この後、コア31Bは、仮想空間を上側LCD22に表示するための描画処理を実行する(S11)。なお、コア13Bは下側LCD12にも所定の画像を表示するための処理を実行する。
その後、コア31Bは、プレイヤキャラクタG1がゴール地点に到達し、ステップS2で選択したステージを攻略(ステージクリア)したか否かを判断する(S12)。そして、ステップS2でステージクリアしたと判断したときには(S12でYES)、コア31
BはステップS2に戻って新たなステージを選択し、上記ステップS3移行の処理を繰り返す。一方、ステップS2でステージクリアしていないと判断したときには(S12でNO)、コア31Bは、プレイヤの体力値が0になり、ゲーム終了であるか否かを判断する(S13)。そして、ゲーム終了であると判断したときには(S13でNO)、コア31Bは処理をステップS4に戻す。一方、ゲーム終了でないと判断したときには(S13でYES)、コア31Bは本メイン処理を終了させる。
以下、図25を用いて、上記ステップS11の地上戦時照準位置・カメラ制御処理を説明する。図25は地上戦時照準位置・カメラ制御処理の一例を示すフローチャートである。まず、コア31は、最新のタッチパネル操作情報322を参照してタッチ有りか否か(入力状態か否か)を判断する(S21)。ここで、タッチ有りと判断したときには(S21でYES)、コア31Bは、タッチが継続中であるか否かを判断する(S22)。なお、タッチが継続中か否かは前回のフレームにかかる処理ループにおいてもタッチ有りであったか否かで判断される。この判断には、前回のタッチパネル操作情報322が使用される。
ここで、タッチ継続中ではないと判断したときには(S22でNO)、コア31Bは、デフォルト戻しフラグ(このフラグについては詳細を後述)をオフに設定して(S23)、タイマの作動がないか否かを判断する(S24)。なお、タイマの作動がないときとは、ダブルタップ操作の2回目のタッチがオフされた後からタッチオンのときと初回時だけであり、他のときにはタイマが作動されている。そして、タイマ作動なしと判断した場合には(S24でYES)、コア31Bは、タイマのカウント値をリセットした後にタイマを作動させ(S25)、処理をステップS36に進める。一方、タイマ作動ありと判断した場合には(S24でNO)、コア31Bは、タイマのカウント期間が所定期間以内であるか否かを判断し(S26)、所定期間以内であるときには(S26でYES)、タイマのカウント値をリセットした後にタイマの作動を停止し、ダブルタップフラグ328をオンする(S27)。この後、コア31Bは、本地上戦時照準位置・カメラ制御処理を終了させ、処理を図24のステップS10に戻す。
また、タイマのカウント期間が所定期間以内でないときには(S26でNO)、コア31Bは、タイマのカウント値をリセットする。これによって、タイマのカウント期間が所定期間を超えたときには、タイマが初期値に戻されて再度初期値からカウントが開始される。この後、コア31Bは処理をステップS35に進める。すなわち、タイマは、前回のタッチオンから今回のタッチオンまでの時間を計測するものである。これは、ダブルタップの判定に用いられる。
次に、ステップS22でタッチ継続中であると判断したとき(S22でYES)の処理を説明する。このときには、コア31Bはダブルタップフラグ328がオンか否かを判断する(S28)。ここで、ダブルタップフラグ328がオンでないと判断したとき、すなわちダブルタップ操作がないと判断したときには(S28でNO)、コア31Bは後述のステップS36の処理を実行する。一方、ダブルタップフラグ328がオンであると判断したときには(S28でYES)、コア31Bは、仮想空間をズームで表示するためのズーム処理(S29)と、プレイヤの所望の位置にスクリーン面G4における照準G3の位置を設定するためのズーム時照準位置設定処理を実行する(S30)。このズーム処理及びズーム時照準位置設定処理についての詳細は図31及び図32を用いて後述する。この後、コア31Bは、設定されているスクリーン面G4における照準G3の位置に基づいて、照準G3のワールド座標上の位置を算出してメインメモリ32に設定する(S31)。なお、この設定された照準G3の位置に基づいて、図24のステップS11で照準G3が描画される。そして、コア31Bは、本地上戦時照準位置・カメラ制御処理を終了させ、処理を図24のステップS10に戻す。
次に、ステップS21でタッチ無し(非入力状態)と判断されたときの処理を説明する。タッチ無しと判断したときには(S21でNO)、コア31Bは、ダブルタップフラグ328がオンか否かを判断する(S32)。ここで、ダブルタップフラグ328がオンであると判断したときには(S32でYES)、コア31Bは仮想カメラCaの画角θ1の設定を通常設定に戻す(S33)。これによって、タッチオフになったときには、ダブルタップ操作によって変更された特別な設定が解除される。
そして、コア31Bは、ダブルタップフラグ328をオフに設定する(S34)。続いて、コア31Bは、プレイヤキャラクタG1の代表点P2の位置に(主観視点で)配置された仮想カメラCaを、水平方向かつ仮想カメラCaの撮像方向と反対の方向に代表点P2から所定距離だけ離れた位置に移動させる(S35)。その後、通常照準位置・カメラ制御処理を実行する(S36)。この通常照準位置・カメラ制御処理についての詳細は図31及び図32を用いて後述する。なお、この処理で設定された仮想カメラCaの向き及び位置に基づいて図24のステップS11で描画処理が行われる。この後、コア31Bは、上記ステップS31を実行して、照準Gのワールド座標上の位置を算出してメインメモリ32に設定する(S31)。そして、コア31Bは、本地上戦時照準位置・カメラ制御処理を終了させ、処理を図24のステップS10に戻す。
次に、図26〜図30を用いて、図25のステップS35の通常照準位置・カメラ制御処理を説明する。図26は通常照準位置・カメラ制御処理の一例を示すフローチャートである。まず、コア31Bは、照準G3の位置、仮想カメラCaの向き及び位置を算出するために必要な各種パラメータを設定するための処理(パラメータ設定処理)を実行する(S41)。このパラメータ設定処理の詳細については図27を用いて後述する。次に、コア31Bは、照準G3のスクリーン面G4上の位置を算出するとともに、この位置に基づいて仮想空間における照準G3の位置及び向きを決定するための処理(照準位置設定処理)を実行する(S42)。この照準位置設定処理の詳細については図28を用いて後述する。
この後、コア31Bは、仮想カメラCaの仮想空間における向きを算出して設定するための処理(カメラ向き設定処理)を実行する(S43)。このカメラ向き設定処理の詳細については図29を用いて後述する。そして、コア31Bは、ステップS43によって算出された仮想カメラCaの向きに基づいて仮想空間における仮想カメラCaの位置を算出して設定するための処理(カメラ位置設定処理)を実行する(S44)。このカメラ位置設定処理の詳細については図30を用いて後述する。この後、コア31Bは本通常照準位置・カメラ制御処理を終了させて、図25のステップS31に処理を進める。
図27を参照して、上記ステップS41のパラメータ設定処理を説明する。図27はパラメータ設定処理の一例を示すフローチャートである。まず、コア31Bは、仮想カメラCaの位置から仮想カメラCaの撮像方向に延びる直線と、仮想カメラCaの位置から特定の敵キャラクタG2に延びる直線の構成する角度が所定角度以内であるか否かを判断する(S51)。
なお、特定の敵キャラクタG2か否かは、例えば図23で示すノンプレイヤキャラクタ情報315にフラグが含まれるか否かで判断される。また、本実施形態では、特定の敵キャラクタG2についてのみステップS51の判断が行われているが、全ての敵キャラクタG2についてステップS51の判断が行われてもよい。更に、敵キャラクタG2ではなくノンプレイヤキャラクタについてステップS51の判断を行ってもよい。また、上記ステップS51に代えて、スクリーン面G4において、特定の敵キャラクタG2が前回の照準G3の位置から所定範囲以内に位置するか否かを判断してもよい。
ステップS51でNoと判断したときには、コア31Bは、係数A(詳細は後述する)をリセットして(すなわち、係数Aに1を設定して)(S52)、処理をステップS55に進める。一方、ステップS51でYesと判断したときには、コア31BはプレイヤキャラクタG1における代表点P2を中心として所定距離以内に居る敵キャラクタG2の数が所定数以上であるか否かを判断する(S53)。なお、代表点P2に代えて、仮想カメラCaの位置を中心として所定距離以内に居る敵キャラクタG2の数が所定数以上であるか判断する構成を採用してもよい。そして、代表点P2を中心として所定距離以内に居る敵キャラクタG2の数が所定数以上であると判断したときには(S53でYES)、コア31Bは、係数Aをリセットして(S52)、処理をステップS55に進める。また、代表点P2を中心として所定距離以内に居る敵キャラクタG2の数が所定数以上でないと判断したときには(S53でNO)、コア31Bは、係数Aをセットして(すなわち、係数Aに1より小さい正の小数を設定して)(S54)、処理をステップS55に進める。
次に、ステップS55の処理について説明する。ステップS55では、コア31Bは、仮想カメラCaがパスから一定距離以内に位置し、かつ仮想カメラCaの向きとパスの向きとの差が一定以内であるか否かを判断する(S55)。ここで、仮想カメラCaの向きとパスの向きとの差が一定以内であると判断したときには(S55でYES)、コア31Bは、係数Bをセットして(すなわち、係数Bに1より小さい正の小数を設定して)(S56)、続くステップS58に処理を進める。また、仮想カメラCaの向きとパスの向きとの差が一定より大きいと判断したときには(S55でNO)、コア31Bは、係数Bをリセットして(すなわち、係数Bに1を設定して)(S57)、続くステップS58に処理を進める。
ステップS58では、コア31Bはタッチオンかどうかを判断する。このタッチオンとは、上述したように、直前のフレームにかかる処理ループにおいて非タッチ(タッチ無し)が検出されており、今回のフレームにかかる処理ループにおいてタッチ有りが検出された状態(すなわち、タッチした瞬間)のことである。ここで、タッチオンであると判断したときには(S58でYES)、コア31Bは制御ベクトルに0をセットして(S59)、コア31Bは、本照準位置設定処理を終了させ、処理を図26のステップS43で示すカメラ向き設定処理に進める。
一方、タッチオンではないと判断したときには(S58でNO)、コア31Bは、制御ベクトルを算出する(S60)。この制御ベクトルとは、照準G3の位置、仮想カメラCaの位置及び向きを算出するために用いられる値である。以下、制御ベクトルの算出方法について詳細に説明する。制御ベクトルの算出方法は、「タッチオン時」(タッチオンした瞬間)、「タッチ継続中」、「タッチオフ時」(タッチオフした瞬間)及び「非タッチ継続中」で異なっている。 次に、「タッチ継続中」の制御ベクトルの算出方法を説明する。「タッチ継続中」とは、タッチパネル13に対するタッチが継続して検出されている状態のことである。このときは、以下の式(A)を用いて制御ベクトルを算出する。
制御ベクトル=最新のタッチ位置−前回のタッチ位置・・・式(A)
そして、上述したように、タッチ位置の変化はX座標の変化とY座標の変化に分解することができるため、X座標とY座標の両方について上記式(A)で制御ベクトルを算出する。以下、X座標の制御ベクトルとY座標の制御ベクトルを区別する場合には、「X制御ベクトル」と「Y制御ベクトル」と記載する。なお、タッチ位置がスライドしているとき(スライド操作中)は、制御ベクトルの値は0にはならないが、タッチパネル13の1点で停止してタッチが継続されているときには、最新のタッチ位置と前回のタッチ位置が同一になるため、制御ベクトルが0になる。最新のタッチ位置と前回のタッチ位置の取得には、タッチパネル操作情報322が使用される。
次に、「タッチオフ時」の制御ベクトルの算出方法について説明する。「タッチオフ時」とは、直前のフレームにかかる処理ループにおいて、タッチが検出されており、今回のフレームにかかる処理ループにおいて非タッチが検出された時である。このときには、下記の式(B)を使用して制御ベクトルを算出する。なお、X制御ベクトル、Y制御ベクトルの両方を算出する点は上記「タッチ継続中」の制御ベクトルの算出方法と同一である。制御ベクトル=(タッチ位置(n)−タッチ位置(n+1))+(タッチ位置(n−1)−タッチ位置(n))…(タッチ位置(1)−タッチ位置(2))/n・・・式(B)
なお、上記式(B)において、nは2以上の自然数であり、タッチ位置(n)とはタッチオフが検出されたフレームのnフレーム前のタッチ位置のことであり、タッチ位置(n+1)とはn+1フレーム前のタッチ位置のことであり、タッチ位置(n−1)とはn−1フレーム前のタッチ位置のことである。また、タッチ位置(1)はタッチオフの検出がされたフレームの1フレーム前のタッチ位置で、タッチ位置(2)はタッチオフの検出がされたフレームの2フレーム前のタッチ位置である。上記式(B)では、過去nフレーム分のタッチ位置について前回のタッチ位置との差を算出し、この差の平均値を算出している。すなわち、上記式(B)は、過去nフレーム分のスライド量(1フレーム当たりのタッチ位置の変化量)の平均である。なお、nは本実施例では固定値である。
上記式(B)において、過去nフレーム分のうち1回分でもスライド操作がなされていたときには、上記式(B)で算出された制御ベクトルは0にはならない。もっとも、過去n回分の全ての操作においてタッチ位置が変化していないとき(タッチパネル13の1点で停止してタッチされているとき)には、上記式(B)で算出された制御ベクトルは0になる。
続いて、「非タッチ継続中」の制御ベクトルの算出方法を説明する。ここで、「非タッチ継続中」とは、上記「タッチオフ時」を除く、タッチパネル13に対するタッチがない期間のことである。このときには、下記の式(C)を使用して制御ベクトルを算出する。なお、X制御ベクトル、Y制御ベクトルの両方を算出する点は上記「タッチ継続中」「タッチオフ時」の制御ベクトルの算出方法と同一である。
制御ベクトル=(前回の制御ベクトル+(前回の制御ベクトル×減衰率))÷2×係数A×係数B・・・式(C)
なお、上述したように、タッチオフ直前の過去nフレーム分の操作において1回分もスライド操作がなされていないときには、上記式(B)で算出された制御ベクトルは0になる。このときには、上記式(C)において前回の制御ベクトルは0になるため、上記式(C)においても制御ベクトルが0に算出される。
上述のようにして算出した制御ベクトルを、コア31Bがメインメモリ32にセットする(S61)。この制御ベクトルは、図26の上記ステップ42の照準位置設定処理において照準の位置を算出するために使用されるとともに、上記ステップS43のカメラ向き設定処理において仮想カメラCaの向きを算出するために使用される。この後、コア31Bは、本パラメータ設定処理を終了させ、処理を図26のステップS42で示す照準位置設定処理に進める。
次に、図28を参照して、上記ステップS42の照準位置設定処理を説明する。図28は照準位置設定処理の一例を示すフローチャートである。まず、コア31Bは一定期間、タッチパネル13へのタッチ及びシューティング操作のいずれもなかったか否かを判断する(S71)。このステップS71でYESのときには、コア31Bは、照準G3のスクリーン面G4上の位置をデフォルト位置に設定し(S72)、消去フラグをオンする(S
73)。この消去フラグがオンのときには、後の描画処理(ステップS11)において照準G3が描画されない(S11)。この様に、一定期間、プレイヤがタッチ操作及びシューティング操作のいずれも行わなければ照準G3はデフォルト位置に戻ることになる。なお、この後、コア31Bは、本照準位置設定処理を終了させ、処理を図26のステップS43で示すカメラ向き設定処理に進める。
一方、ステップS71において、一定期間内にタッチ及びシューティング操作の何れかがあったと判断したときの処理を説明する。このときには(S71でNO)、コア31Bは、消去フラグをオフして(S74)、照準G3のスクリーン面G4上の位置を算出する(S75)。以下に、照準位置の算出方法を説明する。照準G3のスクリーン面G4上の位置(照準位置)は下記式(D)を用いて算出する。
今回の照準位置=前回の照準位置+制御ベクトル・・・式(D)
なお、照準位置についてもX座標における位置とY座標における位置に分けて算出される。また、ここで照準位置はデフォルト位置を基準(X=0,Y=0)とした座標で算出される。
ここで、上述したように、制御ベクトルは、スライドオフ後の慣性制御中とスライド操作中は0にならないため、今回の照準位置が前回の照準位置から移動することになる。一方、タッチをしていないとき(スライドオフ後の慣性制御中を除く)、または、タッチオン時や同じ位置をタッチし続けているときは、制御ベクトルは0になるため、今回の照準位置は前回の照準位置から変化しない。なお、タッチオン時には制御ベクトルが0になるので、このことを利用して、スライドオフ後に慣性力によって照準G3の位置が変化しているときに、プレイヤがタッチパネル13の任意の点をタッチオンすることにより、慣性移動中の照準G3の位置の変化を停止させることができる。
次に、コア31Bは、ステップS75で算出した照準G3の位置がX座標において境界位置外(照準移動可能範囲外)になるか否かを判断する(S76)。ここで、X座標において境界位置外になると判断したときには(S76でYES)、コア31Bは照準G3のスクリーン面G4上のX座標を境界位置(算出した座標が超えてしまった境界の座標)に設定する(S77)。この後、コア31Bは処理をステップS79に進める。一方、X座標において境界位置外にならないと判断したときには(S76でNO)、コア31Bは照準G3のスクリーン面G4上のX座標をステップS75で算出した位置に設定する(S78)。この後、コア31Bは処理をステップS79に進める。
次に、ステップS79の処理を説明する。コア31Bは、ステップS75で算出した照準G3の位置がY座標において境界位置外(照準移動可能範囲外)になるか否かを判断する(S79)。ここで、Y座標において境界位置外になると判断したときには(S79でYES)、コア31Bは照準G3のスクリーン面G4上のY座標を境界位置(算出した座標が超えてしまった境界の座標)に設定する(S80)。この後、コア31Bは処理をステップS79に進める。一方、Y座標において境界位置外にならないと判断したときには(S79でNO)、コア31Bは照準G3のスクリーン面G4上のY座標をステップS75で算出した位置に設定する(S81)。この後、コア31Bは、本照準位置設定処理を終了させ、処理を図26のステップS43で示すカメラ向き設定処理に進める。
図29を参照して、上記ステップS43のカメラ向き設定処理を説明する。図29はカメラ向き設定処理の一例を示すフローチャートである。まず、コア31Bはプレイヤのデフォルト戻し操作があったかを判断する(S91)。ここで、デフォルト戻し操作とは例えばRボタン14Jの押下等である。そして、デフォルト戻し操作があったと判断したときには(S91でYES)、コア31Bは、仮想カメラ92の向きをデフォルトに設定し
て(S92)、本カメラ向き設定処理を終了させ、処理を図26のステップS44で示すカメラ位置設定処理に進める。なお、S92では、具体的には、仮想カメラCaの向きは、デフォルトでは水平方向、かつプレイヤキャラクタG1(代表点P2)を向くように設定される。また、仮想カメラCaの向きがこの様に設定されることで、後述のステップS44で示すカメラ位置設定処理において、仮想カメラの位置は、プレイヤキャラクタG1の代表点P2と同一水平面上でこの代表点P2から所定距離だけ離れた位置で、かつプレイヤキャラクタG1の水平方向での向きと仮想カメラCaの水平方向での向きとが一致する位置に設定される。
一方、デフォルト戻し操作がなかったと判断したときには(S91でNO)、コア31Bは、デフォルト戻しフラグがオンしているかを判断する(S93)。ここで、デフォルト戻しフラグがオンしているときには(S93でYES)、コア31Bは、垂直方向で所定角度分だけデフォルト位置に戻す(S94)。このように、このデフォルト戻しフラグがオンしているときには、垂直方向の仮想カメラCaの垂直方向における角度がデフォルト向きまで徐々に戻される状態(デフォルト戻し状態)になる。なお、図25で示すように、タッチオンがなされたときにデフォルト戻しフラグがオフされるためステップ(S23)、プレイヤのタッチオンによってデフォルト戻し状態が解除される。
そして、コア31Bは、仮想カメラCaの向きがデフォルトに戻ったか否かを判断する(S95)。ここで、仮想カメラCaの向きがデフォルトに戻っているときには(S95でYES)、コア31Bはデフォルト戻しフラグをオフする(S96)。この後、コア31Bは処理をステップS102に進める。また、仮想カメラCaの向きがデフォルトに戻っていないときには(S95でNO)、デフォルト戻しフラグをオフに設定することなく、コア31Bは処理をステップS102に進める。
次に、ステップS93でNOと判断したときのコア31Bの処理を説明する。デフォルト戻しフラグがオフしているときには(S93でNO)、コア31Bは、垂直方向の仮想カメラCaの向きを算出する(S97)。以下に、仮想カメラCaの向きの算出方法を説明する。なお、ステップS97では垂直方向の仮想カメラCaの向きしか算出されないが、後述のステップS102で実行される水平方向における仮想カメラCaの向きの算出方法についてもここで説明する。まず、下記式(E)を用いてカメラ回頭用ベクトルを算出する。
カメラ回頭用ベクトル=制御ベクトル−(今回の照準位置−前回の照準位置)・・・式(E)
上記式(E)では制御ベクトルから今回の照準位置と前回の照準位置との差分を除いているがこの理由は次のようなものである。すなわち、制御ベクトルの成分のうち、図9で示すように、照準G3の位置が境界に到るまでのスライド操作のスライド量a1が照準G3の移動に用いられ、照準G3の位置が境界に到ってからのスライド量a2が仮想カメラの向きの変更に用いられる。また、スライドオフ後においても、照準G3の位置が境界に到るまでの制御ベクトルの成分は照準G3の移動に用いられる。従って、上記式(E)によって、制御ベクトルから照準G3の移動に用いる成分を除くことで、仮想カメラCaの向きの変更に用いるカメラ回頭用制御ベクトルを算出するのである。ここで、上述したように制御ベクトルはY制御ベクトルとX制御ベクトルとがあるため、カメラ回頭用ベクトルについてもX成分とY成分に分けて算出される。このX成分とY成分のカメラ回頭用ベクトルを区別するときには、「Xカメラ回頭用ベクトル」と「Yカメラ回頭用ベクトル」と記載する。
なお、上述したように、制御ベクトルは、スライドオフ後の慣性制御中及びスライド操作中は0にならない。従って、このときにはカメラ回頭用ベクトルも0にはならない。一
方、タッチをしていないとき(スライドオフ後の慣性制御中を除く)、タッチオン時、または、同じ位置をタッチし続けているときは、制御ベクトルは0になるため、カメラ回頭用ベクトルも0になる。なお、タッチオン時はカメラ回頭用ベクトルが0になるので、このことを利用して、スライドオフ後に慣性力によって仮想カメラCaの位置や向きが変化しているときに、プレイヤがタッチパネル13の任意の点をタッチオンしてタッチ位置を変化させなければ、仮想カメラCaの位置や向きの変化を停止させることができる。
次に、下記式(F)を用いてカメラ角速度が算出される。
カメラ角速度=カメラ回頭用ベクトル×係数D・・・式(F)
なお、Yカメラ回頭用ベクトルを用いて垂直方向のカメラ角速度(垂直方向カメラ角速度)が算出されるとともに、Xカメラ回頭用ベクトルを用いて水平方向のカメラ角速度(水平方向カメラ角速度)が算出される。
そして、水平方向カメラ角速度分だけ仮想カメラCaの向きを垂直方向に回転するように、仮想カメラCaの垂直方向の向きを算出する。また、水平方向カメラ角速度分だけ仮想カメラCaの向きを水平方向に回転するように、仮想カメラCaの水平方向の向きを算出する。なお、仮想カメラCaの回転をするときの中心は、プレイヤキャラクタの代表点P2である。
なお、上述したように、カメラ回頭用ベクトルは、スライドオフ後の慣性制御中及びスライド操作中は0にならない。従って、カメラ角速度も0にならず、仮想カメラCaの向きが変更される。一方、タッチをしていないとき(スライドオフ後の慣性制御中を除く)、タッチオン時、または、同じ位置をタッチし続けているときは、は、カメラ回頭用ベクトルは0になる。このため、カメラ角速度も0になり、仮想カメラCaの向きが変更されない。
上述した仮想カメラCaの向きの算出方法を用いて、ステップS97で垂直方向の仮想カメラCaの向きを算出した後、コア31Bは非タッチ状態か否かを判断する(S98)。非タッチ状態であると判断したときには(S98でYES)、コア31Bは、算出した垂直方向での仮想カメラCaの向きがデフォルトの向きから所定角度以内を向いているか否かを判断する(S99)。この所定角度は、スライドオフ後における仮想カメラCaの向きの変更可能範囲を示す角度であり、例えば図12の角度α1°等である。以下、この所定角度を慣性限界角度と記載する。
そして、算出した垂直方向での仮想カメラCaの向きがデフォルトの向きから慣性限界角度以内を向いていないと判断したときには(S99でNO)、コア31Bは、仮想カメラCaの向きが慣性限界角度を向くように、ステップS97で算出した向きを補正し、この補正後の向きに仮想カメラCaの向きを設定する(S100)。この後、コア31Bはデフォルト戻しフラグをオンする(S101)。これによって、垂直方向での仮想カメラCaの向きがデフォルトの向きから慣性限界角度に到ったときには、上述のステップS94〜S96の実行によって、垂直方向での仮想カメラCaの向きが徐々にデフォルト向きにもどされることになる。この後、コア31Bは、上述した仮想カメラCaの向きの算出方法を用いて仮想カメラCaの水平方向での向きを算出して、この算出した向きに仮想カメラCaの水平方向での向きを設定する(S102)。この後、コア31Bは、本カメラ向き設定処理を終了させ、処理を図26のステップS44で示すカメラ位置設定処理に進める。
一方、算出した垂直方向での仮想カメラCaの向きがデフォルトの向きから慣性限界角度以内を向いていると判断したときには(S99でYES)、コア31Bは、垂直方向での仮想カメラCaの向きがステップS97で算出した向きを向くように設定する(S10
3)。そして、コア31Bは、上記ステップS102によって水平方向での仮想カメラCaの向きを算出及び設定し、この後、本カメラ向き設定処理を終了させ、処理を図26のステップS44で示すカメラ位置設定処理に進める。
次に、ステップS98でNOと判断されたときの処理を説明する。コア31Bが非タッチ状態であると判断したときには(S98でNO)、コア31Bは、算出した垂直方向での仮想カメラCaの向きがデフォルトの向きから所定角度以内を向いているか否かを判断する(S104)。この所定角度は、ステップS99における角度とは異なっており、スライド操作における仮想カメラCaの向きの変更可能範囲を示す角度である。この所定角度は例えば図11の角度α1°及びα2°等である。以下、この所定角度をスライド操作中限界角度と記載する。
そして、算出した垂直方向での仮想カメラCaの向きがデフォルトの向きからスライド操作中限界角度以内を向いていないと判断したときには(S104でNO)、コア31Bは仮想カメラCaの向きがスライド操作中限界角度を向くようにステップS97で算出した向きを補正し、この補正後の向きに仮想カメラCaの向きを設定する(S105)。そして、コア31Bは、上記ステップS102によって水平方向での仮想カメラCaの向きを算出及び設定し、この後、本カメラ向き設定処理を終了させ、処理を図26のステップS44で示すカメラ位置設定処理に進める。
一方、算出した垂直方向での仮想カメラCaの向きがデフォルトの向きからスライド操作中限界角度以内を向いていると判断したときには(S104でYES)、コア31Bは、垂直方向での仮想カメラCaの向きがステップS97で算出した向きを向くように設定する(S103)。そして、コア31Bは、上記ステップS102によって水平方向での仮想カメラCaの向きを算出及び設定し、この後、本カメラ向き設定処理を終了させ、処理を図26のステップS44で示すカメラ位置設定処理に進める。
次に、図30を参照して、上記ステップS44のカメラ位置設定処理を説明する。図30はカメラ位置設定処理の一例を示すフローチャートである。この処理において、コア31Bは、上記カメラ位置設定処理によって設定した仮想カメラCaの向きに基づいて仮想カメラCaの仮想空間における位置を算出して、メインメモリ32に設定する(S111)。ここで、仮想カメラCaの位置は、図10〜図12に示すようにプレイヤキャラクタG1の代表点P2から所定距離だけ離れた位置でこの代表点P2を向くように算出され、設定される。
そして、コア31Bはシューティング操作があったか否かを判断する(S112)。ここで、シューティング操作があったと判断したときには(S112でYES)、コア31BはステップS111で算出した仮想カメラCaの位置を仮想カメラCaの座標でX軸方向に所定値だけスライド移動(シフト)するよう補正する(S113)。この後、コア31Bはシフトフラグをオンに設定する(S114)。本実施形態では、図3で示すように、照準G3の位置はデフォルト位置ではプレイヤキャラクタG1に重ねて表示される。従って、仮想カメラCaの位置をシフトさせないと、プレイヤキャラクタG1の表示に妨げられて、仮想空間におけるシューティングの様子をプレイヤが視認することができない。ステップS113によって、シューティング時には仮想カメラCaの位置がスライドするため、プレイヤはプレイヤキャラクタG1の表示に妨げられずにシューティングの様子を視認することができる。この後、コア31Bは、本カメラ位置設定処理及び通常照準位置・カメラ制御処理を終了させて、処理を図25のステップS31に進める。
一方、シューティング操作がなかったと判断したときには(S112でNO)、コア31Bは、シフトフラグがオンか否かを判断する(S115)。そして、シフトフラグがオ
ンであると判断したときには(S115でYES)、コア31BはステップS111で算出した仮想カメラCaの位置をステップS113でスライド移動させた分だけ戻すよう補正する(S116)。この後、コア31Bは、シフトフラグをオフに設定する(S117)。そして、コア31Bは本カメラ位置設定処理及び通常照準位置・カメラ制御処理を終了させて、処理を図25のステップS31に進める。また、シフトフラグがオンでないと判断したときには(S115でNO)、コア31Bは、上記ステップS116及びS117の処理を実行することなく、本カメラ位置設定処理及び通常照準位置・カメラ制御処理を終了させて、処理を図25のステップS31に進める。
ここまで、図25で示す地上戦時照準位置・カメラ制御処理のステップS36の処理について説明してきたが、続いて、図31及び図32を用いてステップS29のズーム処理とステップS30のズーム時照準位置設定処理とを説明する。
図31はズーム処理の一例を示すフローチャートである。まず、コア31Bは、仮想カメラCaの画角θ1をズームの角度に変更済みか否かを判断する(S121)。ここで、ズームの角度は図17及び図18を用いて上述したように、通常時の角度よりも小さい角度である。
そして、画角θ1をズームの画角に変更済みでないと判断したときには(S121でYES)、コア31Bは仮想カメラCaの画角θ1をズームの角度に変更する(S122)。なお、このステップS121において、プレイヤが特定アイテム(例えば、武器アイテ
ム等)を保有しているか否かで、画角θ1が異なった角度で設定されてもよい。また、特定アイテムを複数種類設定し、何れの種類の特定アイテムを保持しているかによって、画角θ1に設定される角度が異なるようにしてもよい。例えば、特定アイテムとこのアイテムに対応する角度を登録したテーブルをメインメモリ32に記憶し、コア31Bは、プレイヤキャラクタ情報324で示す保有アイテムでこのテーブルを検索する。この検索の結果、保有アイテムが登録されているときには、このアイテムに対応する角度で画角θ1を変更する。続いて、コア31Bは、ステップS123において、仮想カメラCaの撮像方向を維持したまま、仮想カメラCaの位置をプレイヤキャラクタG1の代表点P2の位置に移動させる(主観視点に変更する)。この後、コア31Bは、本ズーム処理を終了させて、処理を図25のステップS30で示すズーム時照準設定処理に進める。
一方、画角θ1をズーム時の画角に変更済みであると判断したときには(S121でYES)、コア31Bは、仮想カメラCaの画角θ1をズームの角度に変更することなく、本ズーム処理を終了させて、処理を図25のステップS30で示すズーム時照準設定処理に進める。
次に、図32を参照して図25のステップS30で示すズーム時照準設定処理を説明する。図32はズーム時照準設定処理の一例を示すフローチャートである。まず、コア31Bは下記式(F)を用いて制御ベクトルを算出する(S131)。
制御ベクトル=(最新のタッチ位置−前回のタッチ位置)×係数C・・・式(F)
なお、この係数Cは正の小数である。式(A)と異なり、最新のタッチ位置と前回のタッチ位置の差分に係数C(C<1である正の数)が乗算されている。このため、同じ量だけスライド操作を行ったときには、ズーム時の方が通常時よりも制御ベクトルが小さく算出されることになる。
そして、コア31Bは上記式(D)を用いて照準G3のスクリーン面G4上の位置を算出する(S132)。ここで、上述したように、同じ量だけスライド操作を行ったときには、ズーム時の方が通常時よりも制御ベクトルが小さく算出される。このため、同じ量だ
けスライド操作を行ったときには、ズーム時の方が通常時よりも小さく照準G3の位置が移動することになる。この後、コア31Bは、ステップS132で算出したX座標の位置がスクリーン面G4の範囲外(照準移動可能範囲外)になるどうかを判断する(S133)。そして、ステップS132で算出したX座標の位置がスクリーン面G4の範囲外になるときには(S133でYES)、コア31Bは、照準G3のX座標をスクリーン面G4の境界の座標(算出した座標が超えてしまった境界の座標)に設定する(S134)。この後、コア31Bは、処理をステップS136に進める。
一方、ステップS132で算出したX座標の位置がスクリーン面G4の範囲内になるときには(S133でNO)、コア31Bは、照準G3のX座標をステップS132で算出した座標に設定する(S135)。この後、コア31Bは、処理をステップS136に進める。ステップS136では、コア31Bは、ステップS132で算出したY座標の位置がスクリーン面G4の範囲外(照準移動可能範囲外)になるどうかを判断する(S136)。ここで、ステップS132で算出したY座標の位置がスクリーン面G4の範囲外になるときには(S136でYES)、コア31Bは、照準G3のY座標をスクリーン面G4の境界の座標(算出した座標が超えてしまった境界の座標)に設定する(S137)。この後、コア31Bは、本ズーム時照準設定処理を終了させて、処理を図25のステップS31に進める。
また、ステップS132で算出したY座標の位置がスクリーン面G4の範囲内になるときには(S136でNO)、コア31Bは、照準G3のY座標をステップS132で算出した座標に設定する(S138)。この後、コア31Bは、本ズーム時照準設定処理を終了させて、処理を図25のステップS31に進める。
以上、地上戦ステージにおける照準G3の位置、仮想カメラCaの向き及び位置の制御処理を説明してきたが、以下に図28及び図33を用いて空中戦ステージにおける照準G3の位置、仮想カメラCaの向き及び位置の制御処理を説明する。
図33は図24で示すメイン処理のステップS9で実行される空中戦時キャラクタ制御処理の一例を示すフローチャートである。本処理では、コア31Bは、タッチオンかどうかを判断する(S140)。そして、タッチオンでないと判断したときには(S140でNO)、コア31Bは、地上戦時と同様、上記式(A)、式(B)及び式(C)を用いて制御ベクトルを算出する(S141)。この制御ベクトルの算出の方法は、図27のステップS58における方法と同一である。これによって、空中戦ステージにおいても通常時の地上戦ステージと同様に、スライド操作中だけでなくスライドオフ後においても照準G3の位置が変更されることになる。
次に、コア31Bは照準位置設定処理を実行する(S142)。ここで図28を参照して、ステップS142の照準位置設定処理を説明する。ステップS142の照準位置設定処理は、スクリーン面G4における照準G3の位置を設定するための処理であり、図28で示す通常時の地上戦ステージにおける照準位置処理と同じである。しかしながら、ステップS142の照準位置設定処理においては、通常時の地上戦ステージにおける照準位置設定処理とは、ステップS76とステップS79で判断されるX座標及びY座標における境界位置が異なった位置に設定されている。すなわち、ステップS142の照準位置設定処理では、ステップS76とステップS79で判断されるX座標及びY座標における境界位置がスクリーン面G4の端に設定されている。これによって、照準移動可能範囲はスクリーン面G4全域になる。
そして、コア31Bは、プレイヤキャラクタG1の位置を取得するとともに、パスに設定された対応点のうちプレイヤキャラクタG1の位置に最寄りの対応点を決定する。そし
て、コア31Bは、この決定した対応点に関連付けられた仮想カメラCaのデフォルトでの位置及び向きを取得する。この後、コア31Bは、取得した仮想カメラCaのデフォルトでの位置と、後述のステップS145でメインメモリ32に記憶された補正値に基づいて、仮想空間の仮想カメラCaの位置を算出してメインメモリ32に設定する(S143)。そして、コア31Bは、取得した仮想カメラCaのデフォルトでの向きに、仮想空間の仮想カメラCaの向きをメインメモリ32に設定する(S144)。なお、このメインメモリ32に設定された仮想カメラCaの位置及び向きに基づいて、図24のステップS11で仮想空間の描画が行われる。
そして、コア31Bは、設定されているスクリーン面G4における照準G3の位置に基づいて、照準Gのワールド座標上の位置を算出してメインメモリ32に設定する(S145)。なお、この設定された照準G3の位置に基づいて、図24のステップS11で照準G3が描画される。この後、コア31Bは、本空中戦時照準位置・カメラ制御処理を終了させ、図24のステップS10に処理を進める。
なお、ステップS140でYES、すなわち、タッチオンであると判断したときには、コア31Bは、制御パラメータを0にセットし(S146)、上記ステップS142の照準位置設定処理を実行する。これによって、空中戦ステージにおいても地上戦ステージと同様に、タッチパネル13に対してタッチオンするだけの操作で、照準G3の移動を停止させることができる。
上述したように、本実施形態では、タッチパネル13に対してプレイヤがスライド操作を行っている間にはこのスライド量に応じて仮想カメラの向きが変更されるのに加え、タッチパネル13に対してプレイヤがタッチ操作を行っていないときにも仮想カメラの向きを変更することが可能である。すなわち、プレイヤがスライドオフを行ったときには、タッチオフ直前のスライド操作(スライド方向、スライド速さ)に応じて慣性的に仮想カメラの向きが変更される。これによって、タッチ操作を行っていないときにも、プレイヤのそれまでの操作に応じて、仮想カメラCaの向きを変更することができる。すなわち、本実施形態では、自己の所望の向きに仮想カメラCaが向くまでスライド操作を行わなくても、スライドオフを行った後、慣性力によって仮想カメラCaが所望の向きになったときにタッチパネル13をタッチ(1点で停止してタッチ)するだけの操作で、プレイヤが自己の所望の向きに仮想カメラCaの向きを設定することができる。このため、仮想カメラCaの向きを変更するための操作性を向上させることができる。
また、タッチパネル全面におけるプレイヤの任意の位置でプレイヤがダブルタップ操作を行うことで、仮想カメラの画角の変更等によって画面をズームさせることができる。従って、オブジェクト上をタッチすることで画面がズームされていた従来技術に比較して、画面をズームさせるためのプレイヤの操作性を向上させることができる。また、入力座標に応じて仮想カメラの撮像方向が変更しないので、プレイヤは入力座標を気にせずに、簡単にズームアップ入力を行うことができる。
更に、本実施形態では、照準G3のスクリーン面G4上の位置及び三次元仮想空間での位置をプレイヤのタッチパネルに対するスライド操作に応じてデフォルト位置から変更することができる。これによって、常に表示画面の中央に位置するように照準G3が配置されていた従来技術のように、照準G3の位置を移動させるために、仮想カメラの向き又は位置を移動しなくてもよい。本実施形態では、タッチパネル13に対するスライド操作という直感的で簡易な操作で、仮想カメラの位置又は向きを変えることなくシューティング方向を変えることができる。
なお、本実施形態では、スライドオフ後における慣性力による照準G3の移動、仮想カ
メラCaの向き及び位置の移動が減速していく度合について、プレイヤの設定変更によって変更することができないが、プレイヤによって設定変更することができるようにしてもよい。例えば、プレイヤの設定変更によって、式(C)における減衰率を変更するか、所定の係数を乗算してもよい。
また、本実施形態では、スライド操作中及びスライドオフ後において、仮想カメラCaの向き及び位置が、プレイヤキャラクタG1に設定された代表点P2の位置を中心に回転するように変更されているが、この構成に限られず、プレイヤキャラクタG1外にプレイヤキャラクタG1と所定の位置関係で設定された所定位置を中心に回転するように変更されてもよい。例えば、回転の中心は、仮想カメラCaの位置であってもよいし、仮想カメラCaの注視点であってもよいし、特定のオブジェクトの位置であってもよい。また、仮想カメラCaの位置の変更を伴わず、仮想カメラCaの向きだけ回転する構成であってもよい。
そして、本実施形態では、本発明の情報処理装置をゲーム装置1に適用したものであるが、本発明はゲーム装置に限定されない。例えば、携帯電話機、簡易型携帯電話機(PHS)、携帯情報端末(PDA)等の携帯端末情報にも本発明の適用は可能である。また、据え置き型ゲーム機やパーソナルコンピュータにも本発明の適用は可能である。また、本発明の情報処理装置は、複数の装置(例えば、サーバとクライアント等)から構成されてもよい。例えば、上述した情報処理装置の処理のうち、主要な処理をサーバ側で実行し、他の処理をクライアント側で実行してもよい。