図1は、この実施例のゲーム装置10の外観構成の限定しない一例を示す図である。この実施例におけるゲーム装置10の一例は、本体装置(情報処理装置;この実施例ではゲーム装置本体として機能する)12と左コントローラ14および右コントローラ16とを含む。この実施例では、ゲーム装置10は、左コントローラ14および右コントローラ16をそれぞれ本体装置12と一体的に設けた装置(手持ち型装置、携帯型装置、可搬型装置)として利用できる。
ただし、ゲーム装置10は、ゲーム専用機に限定される必要はなく、ゲーム機能を有する、汎用のPC(デスクトップPC、ノートPC、タブレットPCなどの各種のPC)、携帯電話機またはスマートフォンでもよい。また、ゲーム装置10としては、携帯型のゲーム装置、据置型のゲーム装置、または、携帯型と据置型との切り替えが可能なゲーム装置を用いることができ、アーケードゲーム機を用いることもできる。ゲーム装置10を据置型のゲーム装置として用いる場合には、本体装置12に、テレビジョン受像機のようなモニタおよびコントローラ(14、16)が接続されるため、この場合には、ゲーム装置10およびモニタを備えるゲームシステムが構成される。また、ゲーム装置10が他のゲーム装置またはコンピュータと通信可能に接続され、通信可能に接続された他のゲーム装置またはコンピュータに内蔵されるプロセッサと協働してゲーム処理等を実行する場合には、ゲーム装置10およびこれと通信可能に接続される他のゲーム装置またはコンピュータを備えるネットワークシステム(他のゲームシステム)が構成される。
また、左コントローラ14および右コントローラ16は、それぞれ、本体装置12に着脱可能に構成することもできる。かかる場合には、ゲーム装置10は、本体装置12と左コントローラ14および右コントローラ16とを通信可能に構成し、本体装置12と左コントローラ14および右コントローラ16とを別体として利用することもできる。
この実施例では、図1に示すように、左コントローラ14および右コントローラ16は、それぞれ、本体装置12に一体的に設けられる。本体装置12は、ゲーム装置10における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置12は、表示装置18を備える。左コントローラ14および右コントローラ16は、ユーザが入力を行うための操作部を備える装置である。
本体装置12は、略板状のハウジング20を備える。この実施例において、ハウジング20の主面(換言すれば、表側の面、すなわち、表示装置18が設けられる面)は、大略的には矩形形状である。
本体装置12は、ハウジング20の主面に設けられる表示装置18を備える。表示装置18は、本体装置12が生成した画像を表示する。この実施例においては、表示装置18は、液晶表示装置(LCD)とする。ただし、表示装置18は任意の種類の表示装置であってよい。
また、本体装置12は、ハウジング20の内部においてスピーカ(すなわち、図2に示すスピーカ44)を備えている。ハウジング20の主面には、スピーカ孔20aおよび20bが形成される。そして、スピーカ44の出力音は、これらのスピーカ孔20aおよび20bからそれぞれ出力される。
左コントローラ14は、アナログスティック14aを備え、アナログスティック14aは略板状のハウジング22の主面に設けられる。アナログスティック14aは、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック14aを傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。
なお、左コントローラ14は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、この実施例においては、アナログスティック14aを押下する入力が可能である。
左コントローラ14は、各種操作ボタンを備える。左コントローラ14は、ハウジング22の主面上に4つの操作ボタン14b、14c、14d、14e(具体的には、左方向ボタン14b、上方向ボタン14c、下方向ボタン14dおよび右方向ボタン14e)を備える。これらの操作ボタンは、本体装置12で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
右コントローラ16は、左コントローラ14と同様、方向入力部としてアナログスティック16aを備え、アナログスティック16aは略板状のハウジング24の主面に設けられる。この実施例においては、アナログスティック16aは、左コントローラ14のアナログスティック14aと同じ構成である。また、右コントローラ16は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。
また、右コントローラ16は、左コントローラ14と同様、ハウジング24の主面上に4つの操作ボタン16b、16c、16d、16e(具体的には、Yボタン16b、Xボタン16c、Bボタン16dおよびAボタン16e)を備える。
図2は、図1に示すゲーム装置10の電気的な構成の限定しない一例を示すブロック図である。図2に示すように、ゲーム装置10はプロセッサ30を含み、プロセッサ30は、RAM32、フラッシュメモリ34、通信モジュール36、入力装置38、表示ドライバ40およびディジタル/アナログ(D/A)変換器42に接続される。また、ゲーム装置10は、上記の表示装置18およびスピーカ44を含む。プロセッサ30は、表示ドライバ40を介して表示装置18に接続される。また、プロセッサ30は、D/A変換器42を介してスピーカ44に接続される。
プロセッサ30は、ゲーム装置10の全体制御を司る。具体的には、プロセッサ30は、CPUやGPUの機能を内蔵したSoCである。RAM32は、揮発性記憶媒体であり、プロセッサ30のワークメモリやバッファメモリとして使用される。フラッシュメモリ34は、不揮発性記憶媒体であり、ゲームのようなアプリケーションのプログラムを記憶したり、各種のデータを記憶(セーブ)したりするために使用される。たとえば、アプリケーショのプログラムは、フラッシュメモリ34から読み出され、RAM32に記憶される。
なお、ゲーム装置10に装着可能なSDカード、メモリスティックまたは光学ディスクのような外部メモリからアプリケーションのプログラムを読み出し、RAM32に記憶するようにしてもよい。また、ゲーム装置10は、通信可能に接続された外部のコンピュータからアプリケーションのプログラムをダウンロードし、RAM32記憶するようにしてもよい。これらについては、いずれか1つの方法または2つ以上の方法が採用される。
ただし、アプリケーションは、ゲームのアプリケーションに限定される必要は無く、文書作成アプリケーション、電子メールアプリケーション、お絵描きアプリケーション、文字練習用アプリケーション、語学トレーニングアプリケーション、学習アプリケーションなどの様々なアプリケーションも実行可能である。
通信モジュール36は、たとえばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。したがって、たとえば、プロセッサ30は、通信モジュール36を用いて、アクセスポイントおよびインターネット(ネットワーク)を介して他の機器(コンピュータや他のゲーム装置10など)との間でデータを送受信する。ただし、通信モジュール36を用いて、他の機器との間で直接データを送受信することもできる。
ただし、通信モジュール36は、無線LANに接続する機能に代えて、近距離無線通信を行う機能を有していてもよい。かかる場合、通信モジュール36は、所定の通信方式(たとえば、赤外線方式)により、他の機器(他のゲーム装置など)との間で赤外線信号の送受信を行う機能、および所定の通信プロトコル(たとえば、マルチリンクプロトコル)に従って、同種のゲーム装置との間で無線通信を行う機能を有する。したがって、たとえば、プロセッサ30は、通信モジュール36を用いて、同種の他のゲーム装置との間でデータを直接送受信することもできる。ただし、赤外線方式の近距離無線通信に代えて、Bluetooth(登録商標)のような他の無線通信規格に従う近距離無線通信を行うようにしてもよい。
また、無線LANに接続する機能を有する通信モジュールおよび近距離無線通信を行う機能を有する通信モジュールを備えるようにしてもよい。
入力装置38は、上記の左コントローラ14に設けられるアナログスティック14aおよび操作ボタン14b−14eと、右コントローラ16に設けられるアナログスティック16aおよび操作ボタン16b−16eを含む。入力装置38は、ユーザないしプレイヤ(以下、単に「プレイヤ」という)によって、メニュー選択、ゲーム操作、および、仮想カメラの移動およびズームなどの各種の操作ないし入力に用いられる。ただし、入力装置38としては、タッチパネルなどのポインティングデバイス、マイクおよびカメラなどの入力手段が、左コントローラ14および右コントローラ16に設けられる操作手段に代えて、または、これらの操作手段とともに設けられてもよい。また、タッチパネルは、後述する表示装置18に組み込まれる場合もある。この場合の表示装置18は、タッチパネル一体型表示装置である。
表示ドライバ40は、プロセッサ30の指示の下、表示装置18にゲーム画像などの各種画像を表示するために使用される。
D/A変換器42は、プロセッサ30から与えられる音声データをアナログのゲーム音声に変換し、スピーカ44に出力する。ただし、ゲーム音声は、ゲームのキャラクタないしオブジェクトの擬制音、効果音、音楽(BGM)のようなゲームに必要な音を意味する。
なお、図2に示すゲーム装置10の電気的な構成は単なる一例であり、これに限定される必要はない。たとえば、通信モジュール36は無くてもよい。
図3は、この実施例のゲームの通常モードにおいて、表示装置18に表示されるゲーム画面100の一例が示される。たとえば、プレイヤキャラクタ102および敵キャラクタ104のようなキャラクタオブジェクトとともに、道路オブジェクト106a、床または地面オブジェクト、空(雲を含む)オブジェクト、建物オブジェクト106bおよび草木(花も含む)オブジェクト106cのような仮想オブジェクト(背景オブジェクト)106が3次元の仮想空間(仮想ゲーム空間)内に配置される(設けられる)。この実施例では、建物オブジェクト106bおよび草木オブジェクト106cは奥行き方向の厚みが少ないオブジェクトである。
また、仮想ゲーム空間内には、動物を模したオブジェクト(動物オブジェクト)106dが配置される場合がある。ただし、この実施例の動物オブジェクト106dは、動物の絵を描いた置物のオブジェクトであり、道路、床、地面、建物および草木と同様に移動しないため、背景オブジェクト106として扱われる。この動物オブジェクト106dも奥行き方向の厚みが少ないオブジェクトである。
さらに、仮想ゲーム空間内には、プレイヤキャラクタ102および敵キャラクタ104以外のキャラクタオブジェクトが配置されることもある。さらにまた、仮想ゲーム空間内には、コインオブジェクト、道具(武器)オブジェクト、薬オブジェクト、食べ物オブジェクト、投げオブジェクト110(図4などを参照)のようなアイテムオブジェクトも配置される。ただし、アイテムオブジェクトは、背景オブジェクト106の背面側に隠されていたり、背景オブジェクト106を叩くまたは壊すことにより出現したりすることもある。
このような仮想ゲーム空間を仮想カメラ200(視点)で撮影した画像がゲーム画面100として表示装置18に表示される。具体的には、キャラクタオブジェクト(102、104など)、アイテムオブジェクト(110など)および背景オブジェクト106が仮想ゲーム空間内に配置(モデリング)され、仮想カメラ200から見た3次元画像(仮想カメラ200の撮影画像)が、仮想カメラ200の位置が原点となるように、視点座標ないしはカメラ座標に座標変換される。座標変換された画像は、視点位置を中心として、スクリーン(投影スクリーンまたは仮想スクリーン)上に透視投影される(透視投影変換)。投影スクリーン上に投影された画像が、ゲーム画面100として表示装置18に表示される。
なお、この明細書において、キャラクタオブジェクト(102、104など)、背景オブジェクト106およびアイテムオブジェクト(110など)を区別する必要が無い場合には、単に「オブジェクト」と言うことがある。
図3では、プレイヤキャラクタ102は、ゲーム画面100の左下であり、道路オブジェクト上に表示される。また、敵キャラクタ104がゲーム画面100の中央から下寄りに表示される。つまり、敵キャラクタ104は、プレイヤキャラクタ102の斜め前方に表示される。さらに、プレイヤキャラクタ102と敵キャラクタ104の間であり、道路オブジェクト106aよりも奥側に、家を模した建物オブジェクト106bが配置される。詳細な説明は省略するが、道路オブジェクト106a、建物オブジェクト106b、草木オブジェクト106cおよび動物オブジェクト106d以外の背景オブジェクト106は、地面オブジェクトおよび空オブジェクトである。このことは、他のゲーム画面100についても同じである。
通常モードでは、プレイヤキャラクタ102は、プレイヤの操作に従って、仮想ゲーム空間内に設けられたコース内を移動し、コースに設定された所定のゴールを目指す。この実施例のゲームは、横スクロールのゲームであり、プレイヤキャラクタ102の進行方向は基本的には右である。ただし、プレイヤは、操作ボタン14b−14eを操作することにより、プレイヤキャラクタ102を左右または上下或いは斜め方向に移動させることができる。したがって、通常モードは、プレイヤキャラクタ102を移動させるモードということもできる。
なお、プレイヤがプレイヤキャラクタ102を上に移動させる場合には、仮想ゲーム空間内においては、プレイヤキャラクタ102は奥に向かって(仮想カメラ200から離れる方向に)移動される。また、プレイヤがプレイヤキャラクタ102を下に移動させる場合には、仮想ゲーム空間内においては、プレイヤキャラクタ102は手前に向かって(仮想カメラ200に近づく方向に)移動される。
また、通常モードでは、プレイヤは、操作ボタン16eを操作することにより、プレイヤキャラクタ102をジャンプさせることができる。これにより、プレイヤキャラクタ102を段差の上に移動させることができ、または、プレイヤキャラクタ102に段差、穴または溝を飛び越えさせることもできる。また、プレイヤキャラクタ102に、空中に浮かぶ背景オブジェクト106を叩かせることもできる。このことにより、背景オブジェクト106から、所定のアイテムが出現することがある。または、背景オブジェクト106に代えて、所定のアイテムが出現することがある。
なお、プレイヤキャラクタ102が敵キャラクタ104に攻撃されたり、プレイヤキャラクタ102がコース外に出たり、プレイヤキャラクタ102が時間内にゴールに到達できなかったりした場合には、ゲームオーバになる。
また、プレイヤの操作に従ってプレイヤキャラクタ102に投げオブジェクト110を投げさせることもできる。プレイヤが、操作ボタン16cを操作すると、通常モードに代えて投げモードが設定される。投げモードが設定されると、図4に示すように、プレイヤキャラクタ102が所持する投げオブジェクト110が表示される。図4に示す例では、プレイヤキャラクタ102は右手で投げオブジェクト110を掴んでいる。
なお、投げモードにおいて、プレイヤが、操作ボタン16cを操作すると、投げモードに代えて通常モードが設定される。
また、図4に示すように、投げモードが設定された当初では、プレイヤキャラクタ102の進行方向(この実施例では、右)の前方に、第1所定距離だけ離れた位置に、ターゲットカーソル120が表示される。後述するように、ターゲットカーソル120が指定する対象オブジェクトとは異なり、プレイヤキャラクタ102とこの対象オブジェクトの間に配置される他のオブジェクトに投げオブジェクト110が衝突される場合を除いて、ターゲットカーソル120は所定の色(たとえば、緑色)で表示される。図4では(図6、図7、図8、図10も同じ)、ターゲットカーソル120を黒色で示してある。また、第1所定距離は、ゲームの開発者等によって予め設定される。また、投げモードでは、プレ
イヤキャラクタ102は、ターゲットカーソル120が指定(指示)する点(目標点)を見るように、顔および体の向きを制御される。したがって、プレイヤキャラクタ102の顔および体の向きから目標点または目標点の方向を知ることができる。目標点の決定方法については、後で詳細に説明する。
さらに、投げオブジェクト110の移動開始位置(起点)からターゲットカーソル120によって指定される目標点までを結ぶ線分上に経路オブジェクト122が表示される。この実施例では、起点は、プレイヤキャラクタ102の胸の中心位置に設定される。たとえば、プレイヤキャラクタ102の現在位置は、プレイヤキャラクタ102の両足の中心に設定されており、このプレイヤキャラクタ102の現在位置を仮想ゲーム空間の高さ方向に第2所定距離移動した位置が起点に設定される。ただし、第2所定距離は、プレイヤキャラクタ102の位置からプレイヤキャラクタ102の胸の中心までの距離である。
なお、この実施例では、プレイヤキャラクタ102の位置と起点の位置を別に設定するようにしてあるが、それらを同じ位置に設定してもよい。
投げオブジェクト110は、通常モードにおいて、プレイヤキャラクタ102が取得および所持するアイテムオブジェクトであり、投げモードにおいて、プレイヤキャラクタ102によって投げられる。プレイヤが操作ボタン16eを操作すると、プレイヤキャラクタ102は投げオブジェクト110を投げる。すると、投げオブジェクト110は、起点と目標点を結ぶ経路上を移動する。ただし、投げオブジェクト110は球体であるため、この実施例では、オブジェクト110の中心が経路上を移動する。
投げオブジェクト110が敵キャラクタ104に衝突すると、当該敵キャラクタ104は倒れる。また、投げオブジェクト110が所定の背景オブジェクト106に衝突すると、当該背景オブジェクト106は倒れる、または、破壊される。また、投げオブジェクト110が他の所定の背景オブジェクト106に衝突すると、当該背景オブジェクト106から所定のアイテムが出現する、または、当該背景オブジェクト106に代えて所定のアイテムが出現する。さらに、投げオブジェクト110がその他の所定の背景オブジェクト106に衝突すると、当該所定の背景オブジェクト106はこの投げオブジェクト110を跳ね返す。さらにまた、投げオブジェクト110がさらに他の所定の背景オブジェクト106に衝突すると、当該背景オブジェクト106の表示態様(色彩、模様および形状の少なくとも1つ)が変化される。以下、この明細書のおいては、上記のように、投げオブジェクト110が衝突することにより、所定の処理が実行される敵キャラクタ104および所定の背景オブジェクト106を「反応オブジェクト」と呼ぶことにする。
なお、この実施例のゲームでは、地面オブジェクトおよび道路オブジェクト106aは反応オブジェクトには含まないものとする。そのため、この実施例のゲームでは、ターゲットカーソル120が、反応オブジェクトでなく、地面オブジェクトまたは道路オブジェクト106aを指示しているときには、投げオブジェクト110が当該地面オブジェクトまたは当該道路オブジェクト106aに向かって移動しないようにする。
別の例においては、投げオブジェクト110が地面オブジェクトおよび道路オブジェクト106aに向かって移動するようにしてもよい。この場合、投げオブジェクト110が地面オブジェクトまたは道路オブジェクト106aに衝突すると、当該地面オブジェクトまたは当該道路オブジェクト106aは変化せずに、投げオブジェクト110が消去するようにしてもよい。
また、投げオブジェクト110を衝突させたくないオブジェクト(たとえば、空オブジェクト)についても、反応オブジェクトには含まないものとする。このように、反応オブジェクトに含まれるオブジェクトの種類は、ゲームの内容に応じて予め決定される。
この実施例のゲームでは、基本的には、ターゲットカーソル120が指定する反応オブジェクトが投げオブジェクト110を衝突させる対象のオブジェクト(対象オブジェクト)として決定される。したがって、プレイヤは、アナログスティック14aを操作して、投げオブジェクト110を衝突させたい反応オブジェクト上にターゲットカーソル120を重ねるように、ターゲットカーソル120を移動させる。
つまり、ターゲットカーソル120は、プレイヤキャラクタ102に投げオブジェクト110を投げさせる場合の目標点を指定または設定するためのオブジェクトであり、プレイヤの操作に従って移動される。ただし、ターゲットカーソル120は仮想ゲーム空間内の所定の平面上を移動する。所定の平面は、仮想カメラと所定の位置関係を有している。たとえば、所定の平面は、仮想カメラに対して設定されるニアクリップ面に設定することができる。これは一例であり、限定されるべきでないが、この実施例では、ターゲットカーソル120は、プレイヤキャラクタ102、敵キャラクタ104、背景オブジェクト106およびアイテムオブジェクトよりも前面(最前面)に表示されるようにしてあるため、仮想カメラから見た場合に、ニアクリップ面よりも奥側であり、ニアクリップ面に近い位置に設定する必要がある。
図5(A)は、仮想カメラ200の撮影範囲である錐体250を仮想カメラ200の斜め後方から見た図である。図5(B)は、3次元の仮想ゲーム空間の一部である錐体250を真上から俯瞰的に見た図である。ただし、錐体250のうち、ニアクリップ面252とファークリップ面254とで挟まれる四角錐台の部分が視体積である。また、図5(A)および図5(B)では、ターゲットカーソル120以外の各種のオブジェクトを省略してある。
図5(A)および図5(B)に示すように、仮想カメラ200から3次元の仮想ゲーム空間を見た場合に、ニアクリップ面252とファークリップ面254が設定され、ピラミッド状の錐体(四角錐)250は、仮想カメラ200(視点)とファークリップ面254で決定される。ただし、錐体の斜辺の傾き(仮想カメラ200の画角)は、仮想カメラ200とファークリップ面254の距離およびファークリップ面254の大きさによって決定される。
また、図5(A)および図5(B)に示すように、ターゲットカーソル120が指定する対象オブジェクトは、仮想カメラ200からターゲットカーソル120の位置に向かう方向の延長上に、ターゲットカーソル120の位置(中心位置)からファークリップ面254に向けて所定の大きさおよび形状の判定用のオブジェクト(第1判定オブジェクト)を移動させた(トレースチェック)場合に、第1判定オブジェクトが反応オブジェクトに衝突するかどうかを判定する(第1衝突判定処理)ことにより、決定される。たとえば、第1判定オブジェクトは、ターゲットカーソル120を構成する4つの棒の間に形成される空白領域の縦または横の長さを直径とする球状オブジェクトである。
第1判定オブジェクトが最初に衝突する反応オブジェクトが、対象オブジェクトとして決定される。また、第1判定オブジェクトが反応オブジェクトに衝突する点が投げオブジェクト110を衝突させる目標点として決定される。第1判定オブジェクトが、反応オブジェクトに衝突しない場合には、プレイヤキャラクタ102の位置を含み、仮想カメラ200の視線に垂直な平面(以下、「プレイヤライン平面」という)と、仮想カメラ200からターゲットカーソル120の位置に向かう線との交点が算出され、算出された交点が目標点として決定される。
なお、投げオブジェクト110が地面オブジェクトおよび道路オブジェクト106aに向かって移動し衝突することを許容する例においては、第1判定オブジェクトが反応オブジェクトに衝突せずに、地面オブジェクトおよび道路オブジェクト106aに衝突する場合には、当該地面オブジェクトまたは当該道路オブジェクト106a上で衝突する点が目標点として決定される。
また、プレイヤライン平面は仮想カメラ200の視線に垂直であるとしたが、仮想カメラ200の視線と常に垂直である必要はなく、仮想カメラ200の向きとは独立した水平面に直交する平面である。
さらに、第1衝突判定処理においては、第1判定オブジェクトを実際に移動させる必要はなく、移動させたと仮定して、計算により衝突するかどうかが判断される。以下、この明細書において、判定オブジェクトを移動させて衝突判定を行う場合について同様である。
図4に戻って、経路オブジェクト122は、プレイヤキャラクタ102によって投げられた投げオブジェクト110が移動する経路を、投げオブジェクト110が投げられる前に、プレイヤに提示するためのオブジェクトである。経路オブジェクト122は、複数の球状オブジェクト122aが直線上に等間隔で並べられたオブジェクトであり、各球状オブジェクト122aは一定速度で第3所定距離をループ移動される。つまり、各球状オブジェクト122aは、第3所定距離だけ移動されると、各々の移動開始位置(出現位置)から再度移動を開始する。ただし、各球状オブジェクト122aが移動される方向は、投げオブジェクト110が移動される方向と同じである。
経路オブジェクト122の各球状オブジェクト122aに対応して、影124が表示される。各球状オブジェクト122aから垂直下向きに当たり判定用のオブジェクト(第2判定オブジェクト)が移動され、第2判定オブジェクトが地面オブジェクトまたは他のオブジェクトに衝突するかどうかが判定される(第2衝突判定処理)。第2判定オブジェクトが地面オブジェクトまたは他のオブジェクトと衝突する位置が影124の位置に決定され、影124の位置に影(丸影)124が表示される。具体的には、マテリアルで影124を描画させることにより、第2判定オブジェクトが衝突する地面オブジェクトまたは他のオブジェクトの表面に影124がデカールで表示される。図示は省略するが、第2判定オブジェクトは、たとえば、球状オブジェクト122aと同じおよびほぼ同じ形状および大きさの球状オブジェクトである。
このように、経路オブジェクト122のみならず、経路オブジェクト122を構成する複数の球状オブジェクト122aの各々の影124を表示するので、つまり、経路オブジェクト122の影も表示するので、投げオブジェクト110が移動する経路を分かり易く示すことができる。
なお、この実施例では、経路オブジェクト122を構成する各球状オブジェクト122aの影124を分かり易く示すために、プレイヤキャラクタ102、敵キャラクタ104、背景オブジェクト106の影については省略してある。
図6は投げモードにおけるゲーム画面100の限定しない他の例を示す図である。図6には、図4に示したゲーム画面100において、敵キャラクタ104上にターゲットカーソル120が移動された場合のゲーム画面100が示される。
この場合、上記の第1衝突判定処理が実行されることにより、敵キャラクタ104(反応オブジェクト)が対象オブジェクトとして決定される。また、第1判定オブジェクトが敵キャラクタ104に衝突する点が目標点として決定され、起点と目標点を結ぶ線分上に経路オブジェクト122が配置(表示)され、第2衝突判定処理が実行されることにより、各球状オブジェクト122aの影124が表示される。また、プレイヤキャラクタ102の向きが目標点を向く方向に設定され、プレイヤキャラクタ102は設定された方向に向けられる。
また、図6に示すゲーム画面100では、目印オブジェクト126が表示される。この目印オブジェクト126は、投げオブジェクト110を目標点に向けて投げた場合に、当該投げオブジェクト110が衝突することが予測される位置(衝突予測点)を示す目印のオブジェクトである。また、目印オブジェクト126は、的の模様が表現されたオブジェクトであり、その中心が衝突予測点と重なる位置に表示される。目印オブジェクト126は、ターゲットカーソル120以外のオブジェクトよりも手前(前面)に表示される。
判定用のオブジェクト(第3判定オブジェクト)が起点から目標点に向けて移動され、第3判定オブジェクトが反応オブジェクトに衝突するかどうかが判定される(第3衝突判定処理)。第3判定オブジェクトが反応オブジェクトと衝突する位置が衝突予測点に決定される。第3判定オブジェクトは、投げオブジェクト110と同じまたはほぼ同じ形状および大きさの球状オブジェクトである。
また、衝突予測点を含む反応オブジェクト(ここでは、対象オブジェクトの敵キャラクタ104)の輪郭(外形線)を強調するように、強調オブジェクト130が表示される。この実施例では、強調オブジェクト130は、対象オブジェクトの輪郭を明るい色の太線で示したオブジェクトである。ただし、これは一例であり、限定されるべきでない。たとえば、対象オブジェクトと同じ形状のオブジェクトを所定の色または模様で塗り潰した強調オブジェクト130が表示されてもよい。また、強調オブジェクト130は、表示・非表示を繰り返すことにより、点滅表示されてもよい。
したがって、投げオブジェクト110を投げた場合に、当該投げオブジェクト110が衝突する反応オブジェクトをプレイヤに知らせることができる。この強調オブジェクト130は、仮想ゲーム空間内のターゲットカーソル120以外のオブジェクトの前面に表示される。したがって、強調オブジェクト130は、仮想ゲーム空間内において、ターゲットカーソル120以外のオブジェクトよりも手前側に配置されてもよいし、配置位置に拘わらず、ターゲットカーソル120以外のオブジェクトの前面に描画されてもよい。
図7は投げモードにおけるゲーム画面100の限定しないその他の例を示す図である。図7には、図6に示したゲーム画面100において、中央の右寄りに別の敵キャラクタ104がさらに表示される。説明の便宜上、図6のゲーム画面100にも表示されていた敵キャラクタ104を「敵キャラクタ104a」と呼び、別の敵キャラクタ104を「敵キャラクタ104b」と呼ぶ。
図7のゲーム画面100では、ターゲットカーソル120が敵キャラクタ104b上に位置し、上記の第1衝突判定処理が実行されることにより、敵キャラクタ104b(反応オブジェクト)が対象オブジェクトとして決定される。また、第1判定オブジェクトが敵キャラクタ104bに衝突する点が目標点として決定され、起点と目標点を結ぶ線分上に経路オブジェクト122が配置(表示)され、第2衝突判定処理が実行されることにより、各球状オブジェクト122aの影124が表示される。また、プレイヤキャラクタ102の向きが目標点を向く方向に設定され、プレイヤキャラクタ102は設定された方向に向けられる。
図7に示すゲーム画面100では、プレイヤキャラクタ102と対象オブジェクトの間に他の対象オブジェクト(ここでは、敵キャラクタ104a)が配置(表示)され、上記の第3衝突判定処理が実行されると、第3判定オブジェクトは敵キャラクタ104a(反応オブジェクト)に衝突する。上記のとおり、第3判定オブジェクトが反応オブジェクトに衝突する位置が衝突予測点に決定され、目印オブジェクト126が表示される。また、敵キャラクタ104aの輪郭に強調オブジェクト130が表示される。
この場合、衝突予測点は、対象オブジェクトでは無く、プレイヤキャラクタ102と対象オブジェクトの間に配置(表示)される他の反応オブジェクトである。以下、この他の反応オブジェクトを「衝突予測オブジェクト」と呼ぶことにする。
このように、衝突予測点が衝突予測オブジェクト上の点である場合には、投げオブジェクト110は対象オブジェクトに衝突しない。このため、このような場合には、ターゲットカーソル120をグレーアウトで表示するとともに、経路オブジェクト122を構成する複数の球状オブジェクト122aのうち、衝突予測オブジェクトと対象オブジェクトの間に配置される1または複数の球状オブジェクト122aをグレーアウトで表示するようにしてある。つまり、衝突予測オブジェクトが存在する場合と存在しない場合とで、ターゲットカーソル120の表示態様が異なる。同様に、経路オブジェクト122の表示態様も異なる。また、経路オブジェクト122は、起点から衝突予測点までの間に配置される球状オブジェクト122aの表示態様と、衝突予測点から目標点までの間に配置される球状オブジェクト122aの表示態様が異なるとも言える。
目印オブジェクト126は衝突予測点に表示されるため、ターゲットカーソル120が指定する対象オブジェクト以外の反応オブジェクト(衝突予測オブジェクト)に投げオブジェクト110が衝突することを事前に知ることができる。
図6および図7のゲーム画面100を用いて説明したように、第3衝突判定処理が実行されることにより、プレイヤキャラクタ102と対象オブジェクトの間に、他の反応オブジェクトが有るかどうかについても判断されていると言える。
図8は投げモードにおけるゲーム画面100の限定しない他の例を示す図である。図8に示すゲーム画面100は、図4に示したゲーム画面100のシーンとは異なるシーンについての画面である。
図8に示すゲーム画面100では、プレイヤキャラクタ102の進行方向の前方に2体の敵キャラクタ104(104a、104b)が存在し、一方の敵キャラクタ104aはゲーム画面100の右寄りに表示され、他方の敵キャラクタ104bはゲーム画面100の中央に表示される。また、敵キャラクタ104bおよび道路オブジェクト106aの手前側には、草木オブジェクト106cが表示される。したがって、敵キャラクタ104bは草木オブジェクト106cに隠れている。さらに、敵キャラクタ104aの奥側には、建物オブジェクト106bが表示される。
ターゲットカーソル120は建物オブジェクト106bを指定し、対象オブジェクトはこの建物オブジェクト106bである。したがって、プレイヤキャラクタ102は、ターゲットカーソル120が指定する建物オブジェクト106b上の目標点の方を向いている。図8に示すゲーム画面100では、プレイヤキャラクタ102と建物オブジェクト106bの間には、敵キャラクタ104bおよび草木オブジェクト106cが表示されるが、経路オブジェクト122は敵キャラクタ104bよりも奥側に表示される。また、第3判定オブジェクトは、敵キャラクタ104bおよび草木オブジェクト106cに衝突しないで、建物オブジェクト106bに衝突する。このため、建物オブジェクト106b上の衝突予測点を中心にして、目印オブジェクト126が表示される。したがって、ターゲットカーソル120の表示態様および経路オブジェクト122の表示態様は変化されない。また、この建物オブジェクト106bの輪郭を強調するように、強調オブジェクト130が表示される。
図9は、図8に示すゲーム画面100において、プレイヤがアナログスティック14aを操作して、ターゲットカーソル120を敵キャラクタ104a上に合わせたゲーム画面100を示す。
図9に示すゲーム画面100では、ターゲットカーソル120は敵キャラクタ104aを指定するが、プレイヤキャラクタ102と敵キャラクタ104a(対象オブジェクト)との間に敵キャラクタ104bが配置され、第3判定オブジェクトが敵キャラクタ104bに衝突する。つまり、敵キャラクタ104bが衝突予測オブジェクトであり、したがって、敵キャラクタ104bの輪郭を強調するように、強調オブジェクト130が草木オブジェクト106cよりも手前(前面)に表示される。また、ターゲットカーソル120の表示態様と、経路オブジェクト122の表示態様が変化される。上述したように、ターゲットカーソル120がグレーアウトで表示される。また、経路オブジェクト122を構成する複数の球状オブジェクト122aのうち、衝突予測点から目標点までの間に配置される球状オブジェクト122aがグレーアウトで表示される。
このように、ゲーム画面100において見えない反応オブジェクトであっても、ターゲットカーソル120の位置を調整することにより、衝突予測オブジェクトとして指定し、投げオブジェクト110を衝突させることができる。図示等は省略したが、プレイヤキャラクタ102の位置または/およびターゲットカーソル120の位置を調整するようにしてもよい。
図10は投げモードにおけるゲーム画面100の限定しないさらに他の例を示す図である。図10に示すゲーム画面100は、図4および図8に示したゲーム画面100のシーンとは異なるシーンについての画面である。
図10に示す例では、ゲーム画面100の右下において、道路オブジェクト106aよりも手前側に草木オブジェクト106c(1060)が表示される。また、ゲーム画面100の中央において、2つの動物オブジェクト106dが左右に並んで表示され、2つの動物オブジェクト106dよりも奥側に他の2つの草木オブジェクト106c(1062)が表示される。
この図10では、ターゲットカーソル120は、道路オブジェクト106aよりも手前側に配置(表示)されている草木オブジェクト1060を指定し、対象オブジェクトはこの草木オブジェクト1060である。したがって、プレイヤキャラクタ102は、ターゲットカーソル120が指定する草木オブジェクト1060上の目標点の方を向いている。また、第3判定オブジェクトが衝突する反応オブジェクト(ここでは、草木オブジェクト1060)の衝突予測点に目印オブジェクト126が表示される。図10に示すゲーム画面100では、プレイヤキャラクタ102と対象オブジェクト(ここでは、草木オブジェクト1060)の間において他の反応オブジェクトが配置(表示)されていないため、ターゲットカーソル120の表示態様および経路オブジェクト122の表示態様は変化されない。さらに、ターゲットカーソル120で指定された草木オブジェクト1060の輪郭を強調するように、強調オブジェクト130が表示される。
このため、プレイヤキャラクタ102よりも手前側に配置されている反応オブジェクトを狙うとともに、当該反応オブジェクトに投げオブジェクト110を衝突させることができる。
ただし、反応オブジェクトであっても、ニアクリップ面252(または仮想カメラ200)に近過ぎる場合には、ターゲットカーソル120で指定可能な対象オブジェクトの候補から除外される。ターゲットカーソル120で指定可能な対象オブジェクトから除外されるオブジェクト(対象外のオブジェクト)は、仮想カメラ200の位置等によってゲーム画面100に表示されたり表示されなかったりするからである。
図11および図12は図2に示したゲーム装置10のRAM32のメモリマップ300の一例を示す図である。図11に示すように、RAM32は、プログラム記憶領域302およびデータ記憶領域304を含む。プログラム記憶領域302には、この実施例のゲームのアプリケーションについてのプログラム(ゲームプログラム)が記憶され、ゲームプログラムは、メイン処理プログラム302a、画像生成プログラム302b、画像表示プログラム302c、操作検出プログラム302d、オブジェクト制御プログラム302e、ターゲットカーソル制御プログラム302f、目標点決定プログラム302g、対象オブジェクト決定プログラム302h、経路オブジェクト配置プログラム302i、影位置算出プログラム302j、衝突予測オブジェクト決定プログラム302k、表示態様設定プログラム302mおよび衝突判定プログラム302nなどを含む。
メイン処理プログラム302aは、この実施例のゲームについての全体処理(ゲーム全体処理)のメインルーチンを処理するためのプログラムである。
画像生成プログラム302bは、画像生成用データ304bを用いてゲーム画像の画像データを生成するためのプログラムである。たとえば、仮想ゲーム空間が描画され、描画された仮想ゲーム空間が透視投影変換されて、ゲーム画面100に対応するゲーム画像の画像データが生成(描画)される。画像表示プログラム302cは、画像生成プログラム302bに従って生成されたゲーム画像の画像データを表示装置18に出力するためのプログラムである。
操作検出プログラム302dは、プレイヤによる操作に応じて入力装置38から入力された操作データを検出するためのプログラムである。検出された操作データは、後述する操作データバッファ304aに記憶される。
オブジェクト制御プログラム302eは、操作データに従ってプレイヤキャラクタ102を移動等させたり、操作データに従わないで敵キャラクタ104を配置(出現)および移動等させたりするためのプログラムである。オブジェクト制御プログラム302eは、通常モードにおいて、操作検出プログラム302dに従って検出された操作データが操作ボタン14b−14eの操作を示す場合に、プレイヤキャラクタ102を左右、前後(奥行き方向)および斜め方向に移動させる。また、オブジェクト制御プログラム302eは、通常モードにおいて、操作データが操作ボタン16eの操作を示す場合に、プレイヤキャラクタ102をジャンプさせる。また、オブジェクト制御プログラム302eは、投げモードにおいて、検出された操作データが操作ボタン16eの操作を示す場合に、プレイヤキャラクタ102に投げオブジェクト110を投げさせる。
なお、メイン処理プログラム302aは、操作検出プログラム302dに従って検出された操作データが操作ボタン16cの操作を示す場合に、または、ゲームの進行状況に応じて、通常モードと投げモードの間でモードを設定(変更)する。
ターゲットカーソル制御プログラム302fは、投げモードにおいて、操作検出プログラム302dに従って検出された操作データがアナログスティック14aの操作を示す場合に、操作データが示すアナログスティック14aの傾倒方向および傾倒量に応じて、ターゲットカーソル120を移動させるためのプログラムである。
目標点決定プログラム302gは、現在のターゲットカーソル120の位置に基づいて上記の第1衝突判定処理を実行し、第1衝突判定処理の結果に応じて、当該ターゲットカーソル120が指定する目標点を決定するためのプログラムである。
対象オブジェクト決定プログラム302hは、ターゲットカーソル120が指定する反応オブジェクトを対象オブジェクトとして決定するためのプログラムである。つまり、目標点を含む反応オブジェクトが対象オブジェクトとして決定される。
経路オブジェクト配置プログラム302iは、投げオブジェクト110の起点から目標点決定プログラム302gに従って決定された目標点を結ぶ線分上に経路オブジェクト122を配置するためのプログラムである。ただし、経路オブジェクト配置プログラム302iは、経路オブジェクト122を構成する複数の球状オブジェクト122aを第3所定距離において巡回するように移動させるためのプログラムでもある。
影位置算出プログラム302jは、経路オブジェクト配置プログラム302iに従って配置された経路オブジェクト122を構成する複数の球状オブジェクト122aのそれぞれの影124の位置を、上記の第2衝突判定処理を実行することにより、算出するためのプログラムである。
衝突予測オブジェクト決定プログラム302kは、上記の第3衝突判定処理を実行し、第3衝突判定処理の結果に応じて、衝突予測点を算出するとともに、第3判定オブジェクトがプレイヤキャラクタ102と対象オブジェクトの間の他の反応オブジェクトに衝突する場合に、衝突予測点を含む他の反応オブジェクトを衝突予測オブジェクトとして決定するためのプログラムである。
表示態様設定プログラム302mは、ターゲットカーソル120を表示(描画)するときの色および経路オブジェクト122の含まれる複数の球状オブジェクト122aの各々について、表示(描画)するときの色を設定するためのプログラムである。
衝突判定プログラム302nは、投げモードにおいて、投げオブジェクト110がプレイヤキャラクタ102によって投げられた場合に、投げオブジェクト110は反応オブジェクトに衝突するかどうかを判定する(第4衝突判定処理を実行する)ためのプログラムである。第4衝突判定処理では、投げオブジェクト110に設定された判定用のオブジェクト(第4判定オブジェクト)が反応オブジェクトに衝突するかどうかが判定される。第4判定オブジェクトは、投げオブジェクト110と同じまたはほぼ同じ形状および大きさの球状オブジェクトである。
図示は省略するが、プログラム記憶領域302には、ゲームに必要な音を生成および出力するための音出力プログラム、他のゲーム装置またはコンピュータと通信するための通信プログラムおよびゲームデータを不揮発性のメモリに保存するためのセーブプログラムなども記憶される。
図12に示すように、データ記憶領域304には、操作データバッファ304aが設けられる。操作データバッファ304aは、操作検出プログラム302dに従って検出された操作データを時系列に従って記憶する。操作データバッファ304aに記憶された操作データは、プロセッサ30の処理に使用されると、操作データバッファ304aから消去される。
また、データ記憶領域304には、画像生成用データ304b、プレイヤキャラクタデータ304c、所持アイテムデータ304d、ターゲットカーソル位置データ304e、対象外データ304f、起点データ304g、目標点データ304h、対象オブジェクトデータ304i、経路オブジェクトデータ304j、影位置データ304k、衝突予測点データ304m、衝突予測オブジェクトデータ304nおよび衝突オブジェクトデータ304pなどのデータが記憶される。
操作データバッファ304aは、入力装置38からの操作データを一時記憶するための領域である。画像生成用データ304bは、ゲーム画面100の画像データなどを生成するためのポリゴンデータおよびテクスチャデータなどのデータである。
プレイヤキャラクタデータ304cは、仮想ゲーム空間内に配置されるプレイヤキャラクタ102の現在の向きを示す方向データおよび現在の3次元位置を示す座標データを含む。プレイヤキャラクタデータ304cは、プレイヤキャラクタ102の状態を示す状態データを含む場合もある。
所持アイテムデータ304dは、プレイヤキャラクタ102が所持するアイテム(投げオブジェクト110など)およびその個数についてのデータである。ターゲットカーソル位置データ304eは、ターゲットカーソル120の現在の3次元位置を示す座標データである。
対象外データ304fは、対象外の反応オブジェクトの識別情報についてのデータである。たとえば、ニアクリップ面252(または、仮想カメラ200)との距離が第4所定距離よりも短い(近い)位置に存在する反応オブジェクトが対象外のオブジェクトとして決定される。
起点データ304gは、投げオブジェクト110の起点の3次元位置を示す座標データであり、プレイヤキャラクタ102の現在の3次元位置に基づいて決定される。起点データ304gが示す投げオブジェクト110の起点は、プレイヤキャラクタ102の位置(3次元位置)を、第2所定距離だけ高さ方向(Y軸のプラス方向)に移動させた位置(胸の中心位置)である。
目標点データ304hは、ターゲットカーソル120が指定する目標点(3次元位置)の座標データである。対象オブジェクトデータ304iは、対象オブジェクトとして決定された反応オブジェクトの識別情報についてのデータである。
経路オブジェクトデータ304jは、経路オブジェクト122についてのデータであり、経路オブジェクト122を構成する複数の球状オブジェクト122aの各々の3次元位置の座標データおよび各々に付される色の情報についてのデータである。影位置データ304kは、経路オブジェクト122を構成する複数の球状オブジェクト122aの各々に対応する影124の位置についての座標データである。
衝突予測点データ304mは、経路オブジェクト122が衝突する点(位置)のうち、投げオブジェクト110の起点に最も近い位置の座標データである。衝突予測オブジェクトデータ304nは、衝突予測点データ304mが示す点を含むオブジェクト(衝突予測オブジェクト)の識別情報についてのデータである。衝突オブジェクトデータ304pは、プレイヤキャラクタ102が投げた投げオブジェクト110が衝突する衝突オブジェクトの識別情報についてのデータである。
また、データ記憶領域304には、投げフラグ304qが設けられる。投げフラグ304qは、投げモードが設定されているかどうかを判断するためのフラグであり、投げモードではオンされ、通常モードではオフされる。
図示は省略するが、データ記憶領域304には、ゲーム処理(情報処理)に必要な、他のデータが記憶されるとともに他のフラグおよびカウンタ(タイマ)が設けられる。
図13は、図2に示したプロセッサ30によって実行されるゲーム全体処理の限定しない一例についてのフロー図である。なお、図13に示すフロー図の各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。このことは、図14−図16に示す投げ処理についても同様である。
ゲーム装置10の電源が投入されると、ゲーム全体処理の実行に先だって、プロセッサ30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってRAM32等の各コンポーネントが初期化される。そして、不揮発性のメモリ等からゲームプログラムが読み出され、RAM32に記憶され、プロセッサ30によって当該ゲームプログラムの実行が開始される。
図13に示すように、プロセッサ30は、ゲーム全体処理を開始すると、ステップS1で、初期処理を実行する。初期処理では、たとえば、プロセッサ30は、ゲーム画像を生成および表示するための仮想ゲーム空間を構築し、この仮想ゲーム空間に登場するプレイヤキャラクタ102および敵キャラクタ104等のキャラクタオブジェクトを初期位置に配置するとともに、この仮想ゲーム空間に登場する背景オブジェクト106を所定の位置に配置する。さらに、プロセッサ30は、ゲーム制御処理(S5−S19)で用いる各種パラメータの初期値を設定する。また、プロセッサ30は、ステップS1で、投げフラグ304qをオフする。
続いて、ステップS3で、入力装置38から入力される操作データを取得し、ステップS5−S19において、ゲーム制御処理を実行する。ステップS5では、投げモードかどうかを判断する。ここでは、プロセッサ30は、投げフラグ304qがオンであるかどうかを判断する。
ステップS5で“YES”であれば、つまり、投げモードであれば、ステップS11に進む。一方、ステップS5で“NO”であれば、つまり、投げモードでなければ、ステップS7で、投げモードの設定かどうかを判断する。ここでは、プロセッサ30は、操作データバッファ304aに記憶される操作データが操作ボタン16cの操作を示すかどうかを判断する。このことは、後述するステップS11においても同じ。
ステップS7で“NO”であれば、つまり、投げモードの設定でなければ、ステップS9で、通常モードのゲーム制御処理を実行して、ステップS21に進む。ステップS9では、たとえば、プロセッサ30は、操作データに従って、プレイヤキャラクタ102を移動させ、または/および、プレイヤキャラクタ102に任意のアクションを実行させる。このとき、プロセッサ30は、プレイヤキャラクタ102と所定の位置関係を保つように仮想カメラ200を移動させる。ただし、プレイヤキャラクタ102が移動されると、プレイヤキャラクタ102の現在位置が更新される。これに伴って、起点データ304gも更新される。
また、プロセッサ30は、操作データに従わずに、敵キャラクタ104などのノンプレイヤキャラクタを移動させ、または/および、ノンプレイヤキャラクタに任意のアクションを実行される。さらに、プロセッサ30は、プレイヤキャラクタ102の勝敗または順位を判断する、または/および、ゲームクリアまたはゲームオーバを判断する。さらにまた、プロセッサ30は、操作データに従って、仮想カメラ200の位置、向きおよび画角の少なくとも1つを変化させる。ただし、通常、仮想カメラ200は、プレイヤキャラクタ102を注視するとともに、当該プレイヤキャラクタ102と所定の位置関係を保つように仮想ゲーム空間に配置されるが、プレイヤの操作によって、位置、向きおよび画角の少なくとも1つが変化された場合には、変化後の位置または/および向きに配置され、変更後の画角に設定される。ただし、プレイヤが操作しない場合にも、ゲームの文脈によって、自動的(強制的)に、仮想カメラ200の位置、向きおよび画角の少なくとも1つが変化されることもある。
ステップS7で“YES”であれば、つまり、投げモードの設定であれば、ステップS15で、投げフラグ304qをオンし、ステップS17で、ターゲットカーソル120を配置する。そして、プロセッサ30は、ステップS19で、投げ処理(図14−図16)を実行し、ステップS21に進む。ただし、ステップS17では、プロセッサ30は、プレイヤキャラクタ102の進行方向において第1所定距離だけ離れた位置に、ターゲットカーソル120を配置する。
また、ステップS11では、投げモードの解除かどうかを判断する。つまり、通常モードを設定するかどうかが判断される。具体的には、プロセッサ30は、投げモードにおいて、操作ボタン16cが操作されたかどうかを判断する。ステップS11で“YES”であれば、つまり、通常モードを設定する場合には、ステップS13で、投げフラグ304qをオフし、ステップS21に進む。一方、ステップS11で“NO”であれば、つまり、通常モードを設定しない場合には、ステップS19に進む。
ステップS21では、プロセッサ30は、ステップS5−S19のゲーム制御処理の結果に応じてゲーム画像を生成し、生成したゲーム画像を表示装置18に表示する。当該ゲーム画像の生成処理は、主にプロセッサ30に含まれるGPUによって行われる。次のステップS23では、プロセッサ30は、ステップS5−ステップS19のゲーム制御処理の結果に応じてゲーム音声を生成し、生成したゲーム音声を出力する。つまり、ステップS21およびステップS23の処理によって、ゲーム画像の画像データが表示ドライバ40から表示装置18に出力され、ゲーム音声の音声データがD/A変換器42を介してスピーカ44に出力される。
そして、ステップS25では、プロセッサ30は、ゲームを終了するかどうかを判断する。ステップS25の判断は、たとえば、ゲームオーバになったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。
ステップS25で“NO”であれば、つまり、ゲームを終了しない場合には、ステップS3に戻る。一方、ステップS25で“YES”であれば、つまり、ゲームを終了する場合には、ゲーム全体処理を終了する。
図14−図16は、図13に示したステップS19の投げ処理の限定しない一例についてのフロー図である。
図14に示すように、プロセッサ30は、投げ処理を開始すると、ステップS51で、投げオブジェクト110の移動中かどうかを判断する。ステップS51で“YES”であれば、つまり、投げオブジェクト110の移動中であれば、図16に示すステップS95に進む。一方、ステップS51で“NO”であれば、つまり、投げオブジェクト110の移動中でなければ、ステップS53で、投げ操作かどうかを判断する。ここでは、プロセッサ30は、ステップS3で検出した操作データが操作ボタン16eの操作を示すかどうかを判断する。
ステップS53で“YES”であれば、つまり、投げ操作であれば、図16に示すステップS97に進む。一方、ステップS53で“NO”であれば、つまり、投げ操作でなければ、ステップS55で、ターゲットカーソル120の移動操作かどうかを判断する。ここでは、プロセッサ30は、ステップS3で検出した操作データがアナログスティック14aの操作を示すかどうかを判断する。
ステップS55で“NO”であれば、つまり、ターゲットカーソル120の移動操作でなければ、ステップS59に進む。一方、ステップS55で“YES”であれば、つまり、ターゲットカーソル120の移動操作であれば、ステップS57で、アナログスティック14aの傾倒方向に傾倒量に応じた距離だけターゲットカーソル120を移動させ、ステップS59に進む。
ステップS59では、対象外のオブジェクトを決定する。ここでは、プロセッサ30は、ニアクリップ面252(仮想カメラ200)との距離が第4所定距離未満に存在するオブジェクトを対象外のオブジェクトに決定する。このとき、1または複数の対象外のオブジェクトの識別情報が対象外データ304fとしてデータ記憶領域304に記憶される。
次のステップS61では、第1衝突判定処理を実行する。ここでは、プロセッサ30は、ターゲットカーソル120の配置位置からZ軸方向に第1判定オブジェクトを移動させたと仮定して、反応オブジェクトに衝突するかどうかを判定する。ただし、第1判定オブジェクトが反応オブジェクトに衝突せずに、ファークリップ面に衝突する場合には、対象オブジェクトを決定せずに第1衝突判定処理は終了される。
続くステップS63では、第1判定オブジェクトが反応オブジェクトに衝突するかどうかを判断する。ステップS63で“NO”であれば、つまり、第1判定オブジェクトが反応オブジェクトに衝突しなければ、ステップS65で、プレイヤライン平面と、仮想カメラ200からターゲットカーソル120の位置に向かう線との交点を目標点として決定する。このステップS65では、プロセッサ30は、決定した目標点に対応する目標点データ304hをデータ記憶領域304に記憶(更新)する。後述するステップS69についても同様である。
次のステップS67では、プレイヤキャラクタ102の進行方向(この実施例では、右方向)にプレイヤキャラクタ102の向きを決定し、図15に示すステップS75に進む。ステップS67では、プロセッサ30はプレイヤキャラクタ102の視線および体の正面を進行方向に向けるように、プレイヤキャラクタ102に向きを決定し、プレイヤキャラクタデータ304cに含まれる方向データを更新する。このことは、後述するステップS73においても同様である。
一方、ステップS63で“YES”であれば、つまり、第1判定オブジェクトが反応オブジェクトに衝突すれば、ステップS69で、衝突する点を目標点に決定する。次のステップS71では、ステップS69で決定した目標点を含む反応オブジェクトを対象オブジェクトに決定し、ステップS73で、プレイヤキャラクタ102の向きを目標点の向きに決定して、ステップS75に進む。ステップS69では、プロセッサ30は、対象オブジェクトの識別情報を対象オブジェクトデータ304iとしてデータ記憶領域304に記憶(更新)する。
図15に示すように、次のステップS75では、起点データ304gが示す起点と目標点データ304hが示す目標点を結ぶ線分上に経路オブジェクト122を配置する。これ以降では、投げオブジェクト110が投げられるまで、経路オブジェクト122を構成する各球状オブジェクト122aが第3所定距離において巡回するように移動される。
続いて、ステップS77で、経路オブジェクト122を構成する複数の球状オブジェクト122aの各々の影124の位置を算出し、算出した影124の位置を記憶する。つまり、プロセッサ30は、第2衝突判定処理を実行し、各球状オブジェクト122aの真下方向における地面の位置を影124の位置として算出し、算出した影124の位置に対応する位置データを影位置データ304kとしてデータ記憶領域304に記憶(更新)する。
次のステップS79では、第3衝突判定処理を実行する。第3衝突判定処理では、第3判定オブジェクトを起点と目標点を結ぶ線上に移動させたと仮定した場合に、第3判定オブジェクトが、反応オブジェクトに衝突するかどうかを判定する。そして、ステップS81で、第3衝突判定処理において、第3判定オブジェクトが反応オブジェクトに衝突するかどうかを判断する。
ステップS81で“NO”であれば、つまり、第3衝突判定処理において、第3判定オブジェクトが反応オブジェクトに衝突していなければ、ステップS93に進む。一方、ステップS81で“YES”であれば、つまり、第3衝突判定処理において、第3判定オブジェクトが反応オブジェクトに衝突すれば、ステップS83で、第3判定オブジェクトが反応オブジェクトに衝突する点を衝突予測点として決定する。プロセッサ30は、ステップS83では、衝突予測点の座標データを衝突予測点データ304mとしてデータ記憶領域304に記憶(更新)する。
次のステップS85では、衝突予測点が対象オブジェクト上の点であるかどうかを判断する。言い換えると、ステップS85では、衝突予測点がプレイヤキャラクタ102と対象オブジェクトの間にある他の反応オブジェクト上の点であるかどうかを判断する。ステップS85で“YES”であれば、つまり、衝突予測点が対象オブジェクト上の点であれば、ステップS91に進む。図示は省略するが、このとき、プロセッサ30は、衝突予測オブジェクトデータ304nを消去する。
一方、ステップS85で“NO”であれば、つまり、衝突予測点がプレイヤキャラクタ102と対象オブジェクトの間にある他の反応オブジェクト上の点であれば、ステップS87で、衝突予測点を含む反応オブジェクトを衝突予測オブジェクトとして決定する。プロセッサ30は、ステップS87では、衝突予測オブジェクトの識別情報を衝突予測オブジェクトデータ304nとしてデータ記憶領域304に記憶(更新)する。
続いて、ステップS89では、ターゲットカーソル120の表示態様および経路オブジェクト122の表示態様を設定(変更)する。このステップS89では、ターゲットカーソル120と、経路オブジェクト122を構成する複数の球状オブジェクト122aのうち、衝突予測点(衝突予測オブジェクト)よりも目標点(対象オブジェクト)側に配置される球状オブジェクト122aがグレーアウトされることが設定される。そして、ステップS91で、衝突予測点に目印オブジェクト126を配置し、ステップS93で、対象オブジェクトまたは衝突予測オブジェクトに強調オブジェクト130を配置して、ゲーム全体処理にリターンする。
ステップS93では、衝突予測オブジェクトデータ304nが記憶されている場合には、このデータに対応する識別情報が示す衝突予測オブジェクトに、この衝突予想オブジェクトの輪郭を強調するための強調オブジェクト130が配置される。また、ステップS93では、衝突予測オブジェクトデータ304nが記憶されていない場合には、対象オブジェクトデータ304iに対応する識別情報が示す対象オブジェクトに、この対象オブジェクトの輪郭を強調するための強調オブジェクト130が配置される。
また、上述したように、ステップS51で“YES”であれば、図16に示すステップS95で、投げオブジェクト110の移動を開始し、ステップS97で、経路上で投げオブジェクト110を第5所定距離移動させる。ただし、経路は、投げ操作が行われたときに、起点と目標点を結ぶ線分で決定される投げオブジェクト110の経路である。
続くステップS99では、第4衝突判定処理を実行する。第4衝突判定処理では、投げオブジェクト110が対象オブジェクトまたは衝突予測オブジェクトに衝突するかどうかを判定する。次のステップS101では、第4衝突判定処理において、投げオブジェクト110が対象オブジェクトまたは衝突予測オブジェクトに衝突するかどうかを判断する。
ステップS101で“YES”であれば、つまり、第4衝突判定処理において、投げオブジェクト110が対象オブジェクトまたは衝突予測オブジェクトに衝突すれば、ステップS103で、衝突オブジェクトに応じた所定の処理を実行して、ステップS109に進む。一方、ステップS101で“NO”であれば、つまり、第4衝突判定処理において、投げオブジェクト110が対象オブジェクトまたは衝突予測オブジェクトに衝突していなければ、ステップS105で、投げオブジェクト110が最大距離移動したかどうかを判断する。たとえば、投げオブジェクト110がファークリップ面254に到達したかどうかを判断する。ステップS105で“NO”であれば、つまり、投げオブジェクト110が最大距離移動していなければ、ゲーム全体処理にリターンする。
一方、ステップS105で“YES”であれば、つまり、投げオブジェクト110が最大距離移動すれば、ステップS107で、投げオブジェクト110を消去して、ステップS109で、プレイヤキャラクタ102が別の投げオブジェクト110を所持しているかどうかを判断する。ステップS109で“YES”であれば、つまり、プレイヤキャラクタ102が別の投げオブジェクト110を所持している場合には、ゲーム制御処理にリターンする。一方、ステップS109で“NO”であれば、つまり、プレイヤキャラクタ102が別の投げオブジェクト110を所持していない場合には、ステップS111で、投げフラグ304qをオフして、ゲーム制御処理にリターンする。
この実施例によれば、プレイヤの操作に従ってターゲットカーソルを所定の平面内において移動させ、ターゲットカーソルで指定された仮想ゲーム空間内の位置を目標点として決定し、投げオブジェクトの移動を開始する起点から目標点までを結ぶ線分に経路オブジェクトを表示するので、投げオブジェクトを衝突させる対象オブジェクトを容易に知ることができる。
また、この実施例によれば、経路オブジェクトを構成する球状オブジェクトの影を表示するので、投げオブジェクトの移動経路を分かり易く示すことができる。
さらに、この実施例では、投げオブジェクトを移動させる方向にプレイヤキャラクタを向けるので、投げオブジェクトの移動方向を分かり易く示すことができる。
さらにまた、この実施例によれば、投げオブジェクトが衝突することが予測される衝突予測オブジェクトの輪郭に強調オブジェクトを表示するので、投げオブジェクトを衝突させる対象オブジェクトをより分かり易く示すことができる。
また、この実施例によれば、衝突予測点に目印オブジェクトを表示するので、投げオブジェクトを衝突させる対象オブジェクトをより分かり易く示すことができる。
なお、この実施例では、携帯型または据え置き型あるいはそれらの切り替えが可能なゲーム装置について説明したが、ゲーム処理の一部または全部がゲーム装置と通信可能に接続される他のゲーム装置またはコンピュータで実行されてもよい。かかる場合には、この実施例のゲーム装置と、当該ゲーム装置と通信可能に接続される他のゲーム装置またはコンピュータによって、ゲームシステム(画像処理システム)が構成される。
また、この実施例では、経路オブジェクトに含まれる各球状オブジェクトの真下の地面に影をマテリアルで描画するようにしたが、光源の光によって生成される影をシェーディングにより描画するようにしてもよい。または、ステップS71において、各球状オブジェクトの真下であり、地面の上に影のオブジェクトを配置するようにしてもよい。
さらに、この実施例では、第1衝突判定処理において、ターゲットカーソルから第1判定オブジェクトを移動させた場合に最初に衝突する反応オブジェクトを対象オブジェクトとして決定するようにしてあるが、これに限定される必要はない。たとえば、第1判定オブジェクトが衝突するすべての反応オブジェクトを対象オブジェクトとして決定するようにしてもよい。そして、複数の対象オブジェクトからプレイヤに1つの対象オブジェクトを選択させてもよい。
さらにまた、この実施例では、プレイヤキャラクタが投げた投げオブジェクトが1つの反応オブジェクトに衝突すると、投げオブジェクトを消去し、当該反応オブジェクトに設定された所定の処理を実行するようにしたが、投げオブジェクトが反応オブジェクトに当たったとしても、目標値まで移動させるようにしてもよい。
また、この実施例では、プレイヤオブジェクトが投げオブジェクトを投げる場合について説明したが、投げる(発射する)オブジェクトは限定される必要はない。ゲームの種類によっては、弾丸を模したオブジェクトを撃ったり(発射したり)、サッカーボールを模したオブジェクトを蹴ったり、矢を模したオブジェクトを射たりするようにしてもよい。これらのオブジェクトもまた、プレイヤキャラクタが発射するオブジェクトである。
また、この実施例で示したゲームの内容、ゲーム装置の構成および具体的数値は単なる例示であり、限定されるべきでなく、実際の製品に応じて適宜変更可能である。たとえば、プレイヤキャラクタの移動等、ターゲットカーソルの移動、通常モードと投げモードの切り替えを指示する操作手段(アナログスティック、操作ボタン)は、実施例で示した操作手段と異なる操作手段が使用されてもよい。