(57)【特許請求の範囲】
【請求項１】
入力装置からの入力に応じて仮想の３次元空間の標的オブジェクトを射撃するゲームを実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
射出の指示の入力を受け付ける入力受付ステップと、
前記入力受付ステップにおいて入力が受け付けられたことを条件として、前記３次元空間において移動オブジェクトを射出して当該移動オブジェクトを移動させる射出ステップと、
前記移動オブジェクトの移動に応じて、当該移動オブジェクトに設定される立体形状を有する接触判定領域の大きさ、形状、および数のうち少なくとも１つを変化させる領域変化ステップと、
前記移動オブジェクトの接触判定領域と前記標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する接触判定ステップと、
前記接触判定ステップにおける判定結果が肯定である場合、所定のゲーム処理を実行する接触処理ステップとを前記コンピュータに実行させるゲームプログラム。
【請求項２】
前記立体形状は、球形または円柱形である、請求項１に記載のゲームプログラム。
【請求項３】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの移動に応じることとして、前記移動オブジェクトが射出されてからの経過時間に基づいて、当該移動オブジェクトに設定される接触判定領域を変化させる、請求項１に記載のゲームプログラム。
【請求項４】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトが射出されてからの経過時間が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させる、請求項３に記載のゲームプログラム。
【請求項５】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの移動に応じることとして、前記移動オブジェクトが前記３次元空間を移動した距離に基づいて、当該移動オブジェクトに設定される接触判定領域を変化させる、請求項１に記載のゲームプログラム。
【請求項６】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの移動距離が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させる、請求項５に記載のゲームプログラム。
【請求項７】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの移動方向から見た場合における接触判定領域の面積が当該移動オブジェクトの移動にともなって大きくなるように、当該接触判定領域の大きさ、形状、および数のうち少なくとも１つを変化させる、請求項３から請求項６のいずれか１項に記載のゲームプログラム。
【請求項８】
前記移動オブジェクトが射出される方向が画面の手前側から奥側に向かう方向となるように前記３次元空間の画像を生成して表示装置に当該画像を表示させる表示制御ステップを前記コンピュータにさらに実行させる、請求項４、請求項６または請求項７に記載のゲームプログラム。
【請求項９】
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められており、
前記領域変化ステップは、
前記移動オブジェクトが射出されてからの経過時間に応じて決められる倍率を算出する倍率算出ステップと、
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を前記倍率で拡大または縮小するように変形する変形ステップとを含む、請求項３に記載のゲームプログラム。
【請求項１０】
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域
の大きさおよび形状は、予め定められており、
前記領域変化ステップは、
前記移動オブジェクトの移動距離に応じて決められる倍率を算出する倍率算出ステップと、
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を前記倍率で拡大または縮小するように変形する変形ステップとを含む、請求項５に記載のゲームプログラム。
【請求項１１】
前記射出ステップにおいて、前記コンピュータは、前記入力装置に対する入力に基づいて、前記移動オブジェクトを射出する方向を決定する、請求項３または請求項５に記載のゲームプログラム。
【請求項１２】
前記３次元空間には、複数種類の前記移動オブジェクトが射出され、
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの接触判定領域の変化度合いを、当該移動オブジェクトの種類に応じて決定する、請求項１または請求項３に記載のゲームプログラム。
【請求項１３】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの移動に応じることとして、前記移動オブジェクトの移動によって値が変化する変数に基づいて、当該移動オブジェクトに設定される接触判定領域を変化させる、請求項１に記載のゲームプログラム。
【請求項１４】
入力装置からの入力に応じて仮想の３次元空間の標的オブジェクトを射撃するゲームを実行するゲーム装置であって、
射出の指示の入力を受け付ける入力受付手段と、
前記入力受付手段によって入力が受け付けられたことを条件として、前記３次元空間において移動オブジェクトを射出して当該移動オブジェクトを移動させる射出手段と、
前記移動オブジェクトの移動に応じて、当該移動オブジェクトに設定される立体形状を有する接触判定領域の大きさ、形状、および数のうち少なくとも１つを変化させる領域変化手段と、
前記移動オブジェクトの接触判定領域と前記標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する接触判定手段と、
前記接触判定手段による判定結果が肯定である場合、所定のゲーム処理を実行する接触処理手段とを備える、ゲーム装置。
【請求項１５】
入力装置からの入力に応じて仮想の３次元空間の標的オブジェクトを射撃するゲームを実行するゲームシステムであって、
射出の指示の入力を受け付ける入力受付手段と、
前記入力受付手段によって入力が受け付けられたことを条件として、前記３次元空間において移動オブジェクトを射出して当該移動オブジェクトを移動させる射出手段と、
前記移動オブジェクトの移動に応じて、当該移動オブジェクトに設定される立体形状を有する接触判定領域の大きさ、形状、および数のうち少なくとも１つを変化させる領域変化手段と、
前記移動オブジェクトの接触判定領域と前記標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する接触判定手段と、
前記接触判定手段による判定結果が肯定である場合、所定のゲーム処理を実行する接触処理手段とを備える、ゲームシステム。
【請求項１６】
入力装置からの入力に応じて仮想の３次元空間の標的オブジェクトを射撃するゲームを実行するゲーム装置のコンピュータが実行するゲーム処理方法であって、
射出の指示の入力を受け付ける入力受付ステップと、
前記入力受付ステップにおいて入力が受け付けられたことを条件として、前記３次元空間において移動オブジェクトを射出して当該移動オブジェクトを移動させる射出ステップと、
前記移動オブジェクトの移動に応じて、当該移動オブジェクトに設定される立体形状を有する接触判定領域の大きさ、形状、および数のうち少なくとも１つを変化させる領域変化ステップと、
前記移動オブジェクトの接触判定領域と前記標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する接触判定ステップと、
前記接触判定ステップにおける判定結果が肯定である場合、所定のゲーム処理を実行する接触処理ステップとを含む、ゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームプログラムおよびゲーム装置に関し、より特定的には、仮想の３次元空間内において標的となるオブジェクトを射撃するゲームを実行するためのゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
従来、仮想の３次元空間内において標的となる標的オブジェクトを射撃するゲームを実行するゲーム装置がある。このようなゲーム装置は、標的オブジェクトおよび銃等から射出される弾オブジェクトについて接触判定領域を設定することにより、標的に弾が命中したかどうかを判定している。具体的には、標的に弾が命中したかどうかは、標的オブジェクトと弾オブジェクトとが接触したかどうかによって行われる。ここで、標的オブジェクトおよび弾オブジェクトの接触判定領域の大きさおよび形状は、ゲーム状況にかかわらず一定であるのが通常である。したがって、標的オブジェクトが移動する場合には、標的オブジェクトの接触判定領域も標的オブジェクトに付随して移動するので、移動している標的に弾を命中させることは難しく、プレイヤにとってはゲームが難しくなりすぎるおそれがあった。
【０００３】
そこで、移動している標的に弾を命中させることの困難性を緩和する方法として、特許文献１に記載の方法がある。特許文献１に記載の画像生成システムは、標的オブジェクトが移動しているか否かを判定し、標的オブジェクトが移動していると判定された場合、標的オブジェクトの接触判定領域を大きくする。これによれば、弾オブジェクトの接触判定領域が標的オブジェクトの接触判定領域に接触しやすくなるので、移動している標的に弾を命中させやすくなり、上記困難性を緩和することができる。
【特許文献１】特開２００５−２４６０７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の画像生成システムでは、３次元空間に登場する標的オブジェクトの全てについて、移動しているか否かを判定し、判定結果に応じて接触判定領域を設定しなければならない。したがって、上記画像生成システムでは、３次元空間に登場する標的オブジェクトの数によってシステムの処理負荷が変動し、標的オブジェクトが多数になるとシステムの処理負荷が増加してしまうという問題があった。
【０００５】
それ故、本発明の目的は、標的オブジェクトの数によってシステムの処理負荷が変動することなく、安定した負荷でゲーム処理を実行することができるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、入力装置（コントローラ５）からの入力に応じて仮想の３次元空間（ゲーム空間）の標的オブジェクト（５１〜５４）を射撃するゲームを実行するゲーム装置（３）のコンピュータ（ＣＰＵ１０等）に実行させるゲームプログラム（６０）である。ゲームプログラムは、入力受付ステップ（Ｓ２）と、射出ステップ（Ｓ１２，Ｓ１４）と、領域変化ステップ（Ｓ１７，Ｓ１８）と、接触判定ステップ（Ｓ７）と、接触処理ステッ
プ（Ｓ８）とをコンピュータに実行させる。入力受付ステップにおいて、コンピュータは、射出の指示の入力を受け付ける。射出ステップにおいて、コンピュータは、入力受付ステップにおいて入力が受け付けられたことを条件として、３次元空間において移動オブジェクト（矢オブジェクト５５）を射出して当該移動オブジェクトを移動させる。領域変化ステップにおいて、コンピュータは、移動オブジェクトの移動に応じて、当該移動オブジェクトに設定される立体形状を有する接触判定領域の大きさ、形状、および数のうち少なくとも１つを変化させる。接触判定ステップにおいて、コンピュータは、移動オブジェクトの接触判定領域と標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する。接触処理ステップにおいて、コンピュータは、接触判定ステップにおける判定結果が肯定である場合、所定のゲーム処理（接触処理）を実行する。
【０００８】
第２の発明においては、コンピュータは、上述の移動オブジェクトの移動に応じることとして、当該移動オブジェクトが射出されてからの経過時間に基づいて、当該移動オブジェクトに設定される接触判定領域を変化させてもよい。
【０００９】
第３の発明においては、領域変化ステップにおいて、コンピュータは、移動オブジェクトが射出されてからの経過時間が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させてもよい。
【００１０】
第４の発明においては、コンピュータは、上述の移動オブジェクトの移動に応じることとして、当該移動オブジェクトが３次元空間を移動した距離に基づいて、当該移動オブジェクトに設定される接触判定領域を変化させてもよい。
【００１１】
第５の発明においては、領域変化ステップにおいて、コンピュータは、移動オブジェクトの移動距離が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させてもよい。
【００１２】
第６の発明においては、領域変化ステップにおいて、コンピュータは、移動オブジェクトの移動方向から見た場合における接触判定領域の面積が当該移動オブジェクトの移動にともなって大きくなるように、当該接触判定領域の大きさ、形状、および数のうち少なくとも１つを変化させてもよい。
【００１３】
第７の発明においては、ゲームプログラムは、移動オブジェクトが射出される方向が画面の手前側から奥側に向かう方向となるように３次元空間の画像を生成して表示装置に当該画像を表示させる表示制御ステップをコンピュータにさらに実行させてもよい。
【００１４】
第８の発明においては、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められていてもよい。このとき、領域変化ステップは、倍率算出ステップ（Ｓ１７）と、変形ステップ（Ｓ１８）とを含む。倍率算出ステップにおいて、コンピュータは、移動オブジェクトが射出されてからの経過時間に応じて決められる倍率を算出する。変形ステップにおいて、コンピュータは、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を倍率で拡大または縮小するように変形する。
【００１５】
第９の発明においては、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められていてもよい。このとき、領域変化ステップは、倍率算出ステップ（Ｓ１７）と、変形ステップ（Ｓ１８）とを含む。倍率算出ステップにおいて、コンピュータは、移動オブジェクトの移動距離に応じて決められる倍率を算出する。変形ステップにおいて、コンピュータは、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を倍率で拡大または縮小するように変形する。
【００１６】
第１０の発明においては、射出ステップにおいて、コンピュータは、入力装置に対する入力に基づいて、移動オブジェクトを射出する方向を決定してもよい。
【００１７】
第１１の発明においては、３次元空間には、複数種類の移動オブジェクトが射出されてもよい。このとき、領域変化ステップにおいて、コンピュータは、移動オブジェクトの接触判定領域の変化度合いを、当該移動オブジェクトの種類に応じて決定する。
【００１８】
また、本発明は、上記第１〜第１１の発明における各ステップを実行するゲーム装置と同等の機能を有するゲーム装置の形態で提供されてもよい。なお、当該ゲーム装置においては、ゲームプログラムを実行するＣＰＵによって上記各ステップが実行されてもよいし、ゲーム装置が備える専用の回路によって上記各ステップの一部または全部が実行されてもよい。
【発明の効果】
【００１９】
第１の発明によれば、移動オブジェクトの接触判定領域は、当該移動オブジェクトの移動距離に応じて大きさ、形状、および数の少なくとも１つが変化する。これによって、標的オブジェクトに対する移動オブジェクトの命中しやすさは、移動距離に応じて変化する。例えば、移動距離に応じて接触判定領域を大きくすれば、命中しやすさが上がるので、ゲームの難易度を下げることができ、移動距離に応じて接触判定領域を小さくすれば、命中しやすさが下がるので、ゲームの難易度を上げることができる。つまり、接触判定領域の大きさ、形状、および数の少なくとも１つを移動距離に応じて変化させることによって、ゲームの難易度を容易に調整することができる。また、本実施形態においては、接触判定領域の大きさが変化するのは移動オブジェクトであるので、接触判定領域を変化させる処理の処理負荷は、標的オブジェクトの数に依存しない。したがって、標的オブジェクトの数によってゲーム装置の処理負荷が大きく変動することがなく、ゲーム装置における処理負荷を安定させることができる。
【００２０】
第２の発明によれば、移動オブジェクトが射出されてからの経過時間を用いて接触判定領域を変化させるので、実際の移動距離を算出する場合よりも容易に接触判定領域を変化させる処理を行うことができる。
【００２１】
第３の発明によれば、移動オブジェクトが射出されてからの経過時間が長くなるほど接触判定領域の大きさが大きくなるので、移動オブジェクトが射出された位置から遠くにある標的オブジェクトに対して移動オブジェクトを命中させやすくなる。これによって、射撃の難易度を下げることができ、初級者やゲームが苦手なプレイヤでも射撃を楽しむことができるようになる。
【００２２】
第４の発明によれば、実際の移動距離を算出することによって移動距離を正確に反映して接触判定領域を変化させる処理を行うことができる。
【００２３】
第５の発明によれば、移動オブジェクトの移動距離が大きくなるほど接触判定領域の大きさが大きくなるので、移動オブジェクトが射出された位置から遠くにある標的オブジェクトに対して移動オブジェクトを命中させやすくなる。これによって、射撃の難易度を下げることができ、初級者やゲームが苦手なプレイヤでも射撃を楽しむことができるようになる。
【００２４】
第６の発明によれば、移動オブジェクトを標的オブジェクトに命中させやすくなるので、射撃の難易度を下げることができ、初級者やゲームが苦手なプレイヤでも射撃を楽しむことができるようになる。
【００２５】
第７の発明によれば、移動オブジェクトは画面の手前側から奥側へ向かって移動するので、移動オブジェクトの射出位置から離れた標的オブジェクトは射出位置に近い標的オブジェクトに比べて小さく表示される。この場合、射出位置から離れた標的オブジェクトに移動オブジェクトを命中させにくくなるので、上記第３、第５または第６の発明のように、移動オブジェクトを標的オブジェクトに対して命中しやすくなるように変化させることが特に有効になる。
【００２６】
第８または第９の発明によれば、経過時間または移動距離に応じて決められる倍率を用いて接触判定領域を拡大または縮小することによって、接触判定領域を経過時間または移動距離に応じて容易に変形させることができる。
【００２７】
第１０の発明によれば、プレイヤの意図した方向へ移動オブジェクトを射出することができる。
【００２８】
第１１の発明によれば、標的オブジェクトに対する移動オブジェクトの命中しやすさのレベルを、武器オブジェクト毎に設定することができる。
【発明を実施するための最良の形態】
【００２９】
（ゲームシステムの全体構成）
図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態に係るゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、コントローラ５、およびマーカ部６を含む。本システムは、コントローラ５を用いたゲーム操作に基づいてゲーム装置３において、仮想の３次元空間内において標的オブジェクトを射撃するゲームのためのゲーム処理を実行するものである。
【００３０】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられ、データの読み取りが可能な情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。なお、ゲームプログラムはゲーム装置３の内部メモリ（不揮発であることが好ましいが揮発性でもよい）に予め記憶されていてもよいし、ゲーム装置３は、ゲーム装置３とネットワークを介して接続される所定のサーバ（または他のゲーム装置）からゲームプログラムをダウンロードして内部メモリに記憶するようにしても構わない。
【００３１】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００３２】
コントローラ５は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与える入力装置である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは通信可能に構成されればよく、有線で接続されてもよい。
【００３３】
（ゲーム装置３の内部構成）
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００３４】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０はシステムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００３５】
システムＬＳＩ１１には、入出力プロセッサ１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００３６】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００３７】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００３８】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００３９】
入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００４０】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データがある場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００４１】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００４２】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００４３】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００４４】
（コントローラ５の構成）
次に、図３〜図７を参照して、コントローラ５について説明する。図３および図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００４５】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００４６】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００４７】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、他のコントローラ）を接続するために利用される。
【００４８】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００４９】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００５０】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４９（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００５１】
次に、図５および図６を参照して、コントローラ５の内部構造について説明する。図５および図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００５２】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図７）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００５３】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００５４】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４８が設けられている。バイブレータ４８は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４８が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４８は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４８がコントローラ５の中心よりも端側に配置することによって、バイブレータ４８の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５および図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４９に音声信号を出力するアンプ等を備えている。
【００５５】
なお、図３〜図６に示したコントローラ５の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられても構わない。
【００５６】
図７は、コントローラ５の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、および加速度センサ３７を備えている。コントローラ５は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００５７】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００５８】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析し、画像内で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００５９】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるマーカ部６のマーカ６Ｒおよび６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒおよび６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒおよび６Ｌ）の位置を算出する。以下では、算出されたマーカの位置を示す座標を「マーカ座標」と呼ぶ。画像処理回路４１は、マーカ座標のデータ（マーカ座標データ）を通信部３６のマイコン４２へ出力する。マーカ座標データは、マイコン４２によって操作データとしてゲーム装置３に送信される。マーカ座標はコントローラ５自体の向き（姿勢）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００６０】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。検出された加速度は、コントローラ５を基準に設定されるＸＹＺ座標系における３次元のベクトル（ＡＸ，ＡＹ，ＡＺ）として表される。加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（姿勢）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ５の向きや動きを算出することができる。
【００６１】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。
【００６２】
操作部３２、撮像情報演算部３５、および加速度センサ３７からマイコン４２へ出力された各データ（操作ボタンデータ、マーカ座標データ、および加速度データ）は、一時的にメモリ４３に格納される。これらの各データは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３の無線コントローラモジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変換されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいてゲーム処理を行う。なお、通信部３６から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の無線コントローラモジュール１９へ出力する。
【００６３】
上記コントローラ５を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５によって画面上の任意の位置を指示する操作、および、コントローラ５自体を動かす操作を行うことができる。図８は、コントローラ５を用いてゲーム操作を行うときの様子を示す図解図である。本実施形態では、プレイヤは、図８に示すように、コントローラ５を動かす（具体的には、コントローラ５の姿勢を変化させる）ゲーム操作、および、コントローラ５によってテレビ２の画面上の位置Ｐを指し示すゲーム操作を行うことができる。
【００６４】
なお、図８に示す位置Ｐは、コントローラ５によって指し示される画面上の位置であり、理想的には、コントローラ５の前端部から上記長手方向に延ばした直線とテレビ２の画面とが交わる位置である。詳細は後述するが、ゲーム装置３は、上述したマーカ座標に基づいて位置Ｐを算出する。ただし、ゲーム装置３によって算出される位置は厳密に当該位置である必要はなく、ゲーム装置３はその周辺の位置を算出することができればよい。以下では、コントローラ５によって指し示される画面上の位置（図８に示す位置Ｐ）を「ポインティング位置」と呼ぶ。
【００６５】
（ゲーム装置における処理の概要）
以下、図９および図１０を参照して、ゲーム装置３で実行されるゲーム処理の概要について説明する。以下では、プレイヤが仮想の３次元空間内において標的となるオブジェクトを射撃するゲームを例としてゲーム処理を説明する。
【００６６】
図９は、本実施形態におけるゲーム処理によって表示されるゲーム画面の一例を示す図である。図９に示すように、本ゲームにおいて構築される仮想の３次元空間（ゲーム空間）には、標的オブジェクト５１〜５４、および矢オブジェクト５５が配置される。また、テレビ２の画面には、３次元空間の画像とともに照準５６の画像が表示される。本ゲームは、矢オブジェクト５５等の移動オブジェクトを射出して標的オブジェクト５１〜５４に命中させることを目的とした射撃ゲームである。
【００６７】
標的オブジェクト５１〜５４は、射撃の標的となるオブジェクトである。図９では、標的オブジェクト５１〜５４は的を模したオブジェクトであるが、標的オブジェクトの大きさおよび形状はどのようなものであってもよい。例えば、他の実施形態では、標的オブジェクトはモンスターのオブジェクトであってもよい。また、標的オブジェクト５１〜５４はゲーム空間内を移動してもよい。
【００６８】
矢オブジェクト５５は、武器オブジェクトから射出され、ゲーム空間を移動する移動オブジェクトの一例である。図９では、武器オブジェクトを弓オブジェクト（図１０に示す弓オブジェクト５８）とし、移動オブジェクトを矢オブジェクト５５とするが、武器オブジェクトおよび移動オブジェクトはどのようなものであってもよい。例えば、武器オブジェクトは銃のオブジェクトで、移動オブジェクトは弾丸のオブジェクトであってもよい。なお、本実施形態では、プレイヤオブジェクトが使用可能な武器オブジェクトは複数あるものとする。つまり、プレイヤは、複数の武器オブジェクトから１つを選択して射撃を行うことができる。
【００６９】
照準５６は、矢オブジェクト５５を射出する際の照準を表す。照準５６は、矢オブジェクトが射出される方向（射出方向）を示している。すなわち、矢オブジェクト５５は、３次元のゲーム空間における武器オブジェクトの位置から照準５６により指定される（ゲーム空間内の）位置に向かって射出される。また、本実施形態では、２次元のゲーム画像上における照準５６の位置は、上記ポインティング位置に決定される。したがって、本実施形態では、コントローラ５が指し示す画面上の位置（ポインティング）によって矢オブジェクト５５が射出される方向が決まるので、プレイヤは、コントローラ５自体を動かしてコントローラ５が指し示す画面上の位置を変更する操作を行うことによって、矢オブジェクト５５の射出方向を操作することができる。
【００７０】
なお、図９では、矢オブジェクト５５を射出する弓オブジェクトや、弓オブジェクトを持つプレイヤキャラクタ（図１０参照）が表示されていないが、他の実施形態においては、これら弓オブジェクトおよびプレイヤキャラクタが表示されていてもよい。
【００７１】
また、本実施形態では、図９に示されるように、矢オブジェクト５５の射出方向が画面の手前側から奥側に向かう方向となるように、ゲーム空間の画像が生成される。つまり、ゲーム空間に設定される仮想カメラの視線方向は、当該視線方向と矢オブジェクト５５の射出方向が同じ側を向くように（視線方向と射出方向とのなす角が鋭角となるように）設定される。
【００７２】
射撃ゲームをプレイする際、プレイヤは、コントローラ５を操作して照準５６の位置を所望の位置にした状態で、例えばＡボタン３２ｄを押下することによって射撃指示を行う。射撃指示が行われたことに応じて、弓オブジェクトから矢オブジェクト５５が射出される。つまり、矢オブジェクト５５が生成され、生成された矢オブジェクト５５が上記弓オブジェクトの位置から上記射出方向にゲーム空間を移動していく。
【００７３】
上記射撃指示に応じて射出された矢オブジェクト５５が標的オブジェクト５１〜５４のいずれかに命中したか否かは、各オブジェクト５１〜５５に設定される接触判定領域を用いて行われる。具体的には、矢オブジェクト５５が標的オブジェクト５１〜５４のいずれかに命中したか否か、すなわち、矢オブジェクト５５と標的オブジェクト５１〜５４のいずれかとが接触したか否かは、矢オブジェクト５５に設定される接触判定領域と、各標的オブジェクト５１〜５４にそれぞれ設定される接触判定領域とが互いに接触したか否かによって判定される。ここで、接触判定領域とは、２つのオブジェクトが互いに接触したか否かを判定するためにオブジェクト毎に設定される領域である。本実施形態では、接触判定領域の形状は球形であるとし、１つのオブジェクトには１以上の球形の接触判定領域が設定される。また、オブジェクトに設定される接触判定領域の位置は、当該オブジェクトの位置に従って決められる。オブジェクト同士が接触しているか否かの判定処理（接触判定処理）は、ゲーム画像が生成する度に実行される、すなわち、毎フレーム実行される。
【００７４】
図１０は、矢オブジェクトの接触判定領域が変化する様子を示す図である。図１０においては、矢オブジェクト５５の進行方向に対して垂直な方向から見たゲーム空間が示されている。図１０においては、プレイヤオブジェクト５９が持つ弓オブジェクト５８から射出された直後の位置における矢オブジェクト５５およびそれにそれに設定される接触判定領域５７を点線で示し、射出されてからある程度移動した矢オブジェクト５５およびそれに設定される接触判定領域５７を実線で示している。
【００７５】
図１０に示されるように、射出直後の位置における矢オブジェクト５５の接触判定領域５７は比較的小さい半径の球形であるのに対して、射出されてからある程度移動した矢オブジェクト５５の接触判定領域５７は比較的大きい半径の球形となっている。このように、本実施形態においては、矢オブジェクト５５の接触判定領域５７は、矢オブジェクト５５の移動距離に応じて大きくなるように設定される。したがって、本実施形態によれば、矢オブジェクト５５は、射出された位置（射出位置）から離れるほど標的オブジェクトに接触しやすくなる。つまり、射出位置から離れるほど矢は標的に命中しやすくなる。
【００７６】
ここで、仮想カメラの視線方向と矢オブジェクトの射出方向とが同じ側を向くような射撃ゲーム（図９参照）では、射出位置からの距離が遠い標的オブジェクト（例えば図９に示す標的オブジェクト５４）は、射出位置からの距離が近い標的オブジェクト（例えば図９に示す標的オブジェクト５１）に比べて相対的に小さく表示されるので、矢オブジェクトを命中させることが難しい。そこで、本実施形態では、矢オブジェクトの接触判定領域を移動距離に応じて大きくすることで、矢を命中させる難易度を下げるようにしている。これによれば、初級者やゲームが苦手なプレイヤでも矢を的に命中させやすくなる。また、射出位置からの距離が近い位置では接触判定領域の大きさは大きくないので、ゲームが簡単になりすぎることがなく、ゲームの難易度を適度なレベルに設定することができる。また、他の実施形態においては、矢オブジェクトの接触判定領域を移動距離に応じて小さくすることも可能であり、これによれば、ゲームの難易度を上げることができる。このように、本発明によれば、矢オブジェクトの接触判定領域を移動距離に応じて変化させることで、射撃ゲームの難易度を容易に変更することができる。
【００７７】
また、本実施形態においては、矢オブジェクトの接触判定領域を変化させるので、接触判定領域を変化させる処理の処理負荷は、標的オブジェクトの数に依存しない。これによれば、標的オブジェクトの数によってシステムの処理負荷が大きく変動することなく、ゲーム装置３は、安定した処理負荷でゲーム処理を実行することができる。
【００７８】
（ゲーム処理の詳細）
以下、図１１〜図１５を参照して、本実施形態におけるゲーム処理の詳細について説明する。まず、本実施形態におけるゲーム処理において用いられるデータについて説明する。図１１は、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図１１に示すように、メインメモリには、ゲームプログラム６０、操作データ６１、およびゲーム処理用データ６４等が記憶される。
【００７９】
ゲームプログラム６０は、後述するゲーム処理（図１４）をゲーム装置３のＣＰＵ１０に実行させるためのプログラムである。ゲームプログラム６０は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。
【００８０】
操作データ６１は、コントローラ５からゲーム装置３へ送信されてきてメインメモリに記憶される操作データである。操作データ６１には、マーカ座標データ６２および操作ボタンデータ６３が含まれる。マーカ座標データ６２は、上記撮像情報演算部３５によって算出される上記マーカ座標を示すデータである。操作ボタンデータ６３は、各操作ボタン３２ａ〜３２ｉに対する入力状態を示すデータである。なお、マーカ座標データ６２および操作ボタンデータ６３の他、操作データ６１には、加速度センサ３７によって検出される加速度ベクトルを示す加速度データが含まれる。上述したように、操作データはコントローラ５からゲーム装置３へ１／２００秒に１回の割合で送信されるので、メインメモリに記憶される操作データはこの割合で更新される。メインメモリには、最新の（最後に取得された）操作データのみが記憶されればよい。
【００８１】
ゲーム処理用データ６４は、後述するゲーム処理（図１４）において用いられるデータである。ゲーム処理用データ６４は、武器リストデータ６５、現在武器データ６６、移動オブジェクトデータ６７、および標的データ７５を含む。なお、ゲーム処理用データ６４は、図１１に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータを含む。
【００８２】
武器リストデータ６５は、武器オブジェクトに関する各種情報を示すデータである。本実施形態では、プレイヤオブジェクトが使用可能な武器は複数あり、それぞれ性能が異なっている。武器リストデータ６５は、光ディスク４にゲームプログラムとともに予め記憶されており、ゲーム開始時等適宜のタイミングで光ディスク４から読み出される。図１２は、武器リストデータ６５の内容の一例を示す図である。図１２に示されるように、本実施形態においては、武器リストデータ６５は、各武器オブジェクトについてそれぞれ、武器ＩＤ、最大飛距離、速度、および基準半径の各情報を関連付けたデータである。武器ＩＤとは、各武器オブジェクトを識別するための番号であり、武器オブジェクトに固有の番号である。最大飛距離とは、その武器オブジェクトによって移動オブジェクトを射出することができる最大の飛距離を示す情報である。速度とは、その武器オブジェクトによって射出された移動オブジェクトの速度（例えば１フレーム時間当たりに移動する距離）を示す情報である。なお、本実施形態では、移動オブジェクトは等速で移動するものとする。なお、他の実施形態においては、移動オブジェクトの速度は次第に減衰していってもよい。このとき、武器リストデータ６５は、武器オブジェクトに対して移動オブジェクトの初速度および減速度合いを関連付けていてもよい。また、基準半径とは、その武器オブジェクトによって射出された移動オブジェクトに設定される接触判定領域の、射出時における半径である。
【００８３】
現在武器データ６６は、現在使用している武器オブジェクトを示すデータである。具体的には、現在武器データ６６は現在使用している武器オブジェクトの武器ＩＤを示す。本実施形態では、プレイヤオブジェクト（プレイヤ）は、武器リストデータ６５により示される各武器オブジェクトのうちの１つを使用することが可能であるとする。なお、ゲーム装置３は、使用する武器オブジェクトをプレイヤにゲーム前に選択させるようにしてもよいし、使用する武器オブジェクトをゲーム途中に変更することができるようにしてもよい。
【００８４】
移動オブジェクトデータ６７は、ゲーム空間に配置されている各移動オブジェクトに関する各種情報を示すデータである。図１３は、移動オブジェクトデータ６７の内容の一例を示す図である。図１３に示されるように、移動オブジェクトデータ６７は、ゲーム空間に配置されている各移動オブジェクトについてそれぞれ、オブジェクトＩＤデータ６８、武器ＩＤデータ６９、位置データ７０、経過時間データ７１、移動距離データ７２、判定領域半径データ７３、および射出方向データ７４を含んでいる。１つの移動オブジェクトに関するこれらのデータは、互いに関連付けられて記憶されている。
【００８５】
オブジェクトＩＤデータ６８は、ゲーム空間に配置されている移動オブジェクトを識別するための番号であり、移動オブジェクトに固有の番号を示す。武器ＩＤデータは、移動オブジェクトが射出された武器オブジェクトの武器ＩＤを示す。位置データ７０は、移動オブジェクトのゲーム空間における位置を示す。この位置は、上記ワールド座標系における座標値により表される。経過時間データ７１は、移動オブジェクトが射出されてから経過した時間を示す。移動距離データ７２は、移動オブジェクトが射出されてからゲーム空間を移動した距離を示す。判定領域半径データ７３は、移動オブジェクトに設定される接触判定領域の現在の半径を示す。射出方向データ７４は、移動オブジェクトが射出される方向を示す。この方向は、ゲーム空間における方向を示す３次元のベクトル（単位ベクトル）で表現される。
【００８６】
標的データ７５は、ゲーム空間に配置されている各標的オブジェクトに関する各種情報を示すデータである。具体的には、標的データ７５は、各標的オブジェクトについて、標的オブジェクトのゲーム空間における位置を示す。
【００８７】
次に、ゲーム装置３において行われるゲーム処理の詳細を、図１４および図１５を用いて説明する。図１４は、ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１４に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【００８８】
図１４に示すステップＳ１において、まずＣＰＵ１０は、ゲームに関する初期処理を実行する。具体的には、ＣＰＵ１０は、プレイヤオブジェクト等のゲームキャラクタのデータ、および、３次元のゲーム空間を構築するための地形オブジェクトのデータ等を光ディスク４から読み込む。そして、読み込んだデータを用いて当該フィールドの３次元空間を構築し、プレイヤオブジェクトや他のオブジェクトを当該フィールドの初期位置に配置する処理等を実行する。このとき、標的データ７５は、各標的オブジェクトの初期位置を示すように設定されてメインメモリに記憶される。また、本実施形態では、初期化処理において、武器リストデータ６５がゲームプログラムから読み出されてメインメモリに記憶される。また、初期化処理において、ゲーム開始時に使用される武器が設定される。すなわち、予め定められた所定の武器オブジェクトを示すデータが現在武器データ６６としてメインメモリに記憶される。なお、他の実施形態においては、ゲーム装置３は、ゲーム開始時に使用される武器をプレイヤに選択させるようにしてもよい。
【００８９】
上記ステップＳ１の後、ステップＳ２〜Ｓ１０の処理ループが、ゲームが実行される間繰り返し実行される。なお、１回の当該処理ループは、１フレーム時間（例えば１／６０秒）に１回の割合で実行される。
【００９０】
ステップＳ２において、ＣＰＵ１０は操作データを取得する。すなわち、コントローラ５から送信されてくる操作データがゲーム装置３で受信され、メインメモリに記憶されるので、ＣＰＵ１０は、操作データ６１に含まれるマーカ座標データ６２および操作ボタンデータ６３をメインメモリから読み出す。ステップＳ２の後、ステップＳ３の処理が実行される。
【００９１】
ステップＳ３において、ＣＰＵ１０は、フィールド上のオブジェクトを動作させる。つまり、プレイヤによるコントローラ５に対する操作に従ってプレイヤオブジェクトを動作させたり、予め定められたアルゴリズムに従って標的オブジェクトを移動させたりする。なお、標的オブジェクトが移動される場合には、メインメモリに記憶されている標的データ７５の内容が更新される。すなわち、移動後の各標的オブジェクトの位置を示すデータが標的データ７５としてメインメモリに記憶される。ステップＳ３の後、ステップＳ４の処理が実行される。
【００９２】
ステップＳ４において、ＣＰＵ１０は、プレイヤによって武器変更指示が行われたか否かを判定する。武器変更指示とは、プレイヤオブジェクトが使用する武器を変更するための指示である。本実施形態では、プレイヤは、所定のメニュー表示ボタン（例えばマイナスボタン３２ｅ）を押下することによってメニュー画面を表示させた（ステップＳ４）上で、メニュー画面において例えば十字ボタン３２ａおよびＡボタン３２ｄを用いて武器を選択する（後述するステップＳ５）ことによって武器を変更することができる。具体的には、ステップＳ４においてＣＰＵ１０は、ステップＳ２で取得した操作ボタンデータ６３を参照して、上記メニュー表示ボタンが押下されたか否かを判定する。ステップＳ４の判定結果が肯定である場合、ステップＳ５の処理が実行される。一方、ステップＳ４の判定結果が否定である場合、ステップＳ５の処理がスキップされて後述するステップＳ６の処理が実行される。
【００９３】
ステップＳ５において、ＣＰＵ１０は、プレイヤオブジェクトが使用する武器を変更する。具体的には、ＣＰＵ１０はまず、使用可能な武器のリストを含むメニュー画面をテレビ２に表示する。そして、メインメモリから操作データを所定時間間隔で取得することによって、武器を選択する操作を受け付ける。プレイヤは、メニュー画面が表示されている状態において、メニュー画面に含まれる武器のリストの中から武器を十字ボタン３２ａによって選択するとともに、所望の武器を選択した状態でＡボタン３２ｄを押下することによって使用する武器を決定する。プレイヤによって武器が決定されたことに応じて、ＣＰＵ１０は、プレイヤオブジェクトが使用する武器を変更する。すなわち、決定された武器を示すデータを現在武器データ６６としてメインメモリに記憶する。以上によって、プレイヤオブジェクトが使用する武器が変更されたこととなる。
【００９４】
ステップＳ６において、ＣＰＵ１０は、移動制御処理を実行する。移動制御処理は、ゲーム空間に配置されている移動オブジェクトを移動させるとともに、移動オブジェクトの接触判定領域を当該移動オブジェクトの移動距離に応じて拡大するための処理である。以下、図１５を参照して、移動制御処理の詳細を説明する。
【００９５】
図１５は、図１４に示す移動制御処理（ステップＳ６）の流れを示すフローチャートである。移動制御処理においては、まずステップＳ１１において、ＣＰＵ１０は、射撃指示が行われたか否かを判定する。射撃指示は、武器オブジェクトから移動オブジェクトを射出させる指示である。本実施形態では、プレイヤは、所定の射撃ボタン（例えばＡボタン３２ｄ）を押下することによって射撃指示を行うことができるものとする。したがって、ＣＰＵ１０は、ステップＳ２で取得した操作ボタンデータ６３を参照して、上記射撃ボタンが押下されたか否かを判定する。ステップＳ１１の判定結果が肯定である場合、ステップＳ１２の処理が実行される。一方、ステップＳ１１の判定結果が否定である場合、ステップＳ１２の処理がスキップされて後述するステップＳ１３の処理が実行される。
【００９６】
ステップＳ１２において、ＣＰＵ１０は、新たな移動オブジェクトを生成する。具体的には、ゲーム空間内における武器オブジェクト近傍の所定位置に移動オブジェクトを新たに配置する。また、ＣＰＵ１０は、メインメモリに記憶されている移動オブジェクトデータ６７の内容を更新する。具体的には、移動オブジェクトデータ６７には、互いに関連付けられるオブジェクトＩＤデータ、武器ＩＤデータ、位置データ、経過時間データ、移動距離データ、半径データ、および射出方向データがそれぞれ１つずつ追加される。以下、これら各データの内容、すなわち、新たな移動オブジェクトに関して設定される各種情報の内容について説明する。
【００９７】
新たな移動オブジェクトに関して設定される各種情報は、それぞれ次のように設定される。すなわち、新たな移動オブジェクトのオブジェクトＩＤは、移動オブジェクトデータ６７にすでに含まれている他のオブジェクトＩＤデータにより示される番号とは異なる番号となるように設定される。新たな移動オブジェクトの武器ＩＤは、現在武器データ６６により示される番号と同じ番号に設定される。新たな移動オブジェクトの位置は、現在の武器オブジェクトの位置に基づいて決められる所定の位置となるように設定される。この所定の位置が移動オブジェクトが射出される位置（射出位置）となる。新たな移動オブジェクトの経過時間および移動距離は、それぞれ“０”に設定される。新たな移動オブジェクトに設定される接触判定領域の半径は、射出時点の半径、すなわち、基準半径の大きさに設定される。なお、この基準半径の値は、武器リストデータ６５において、現在武器データ６６により示される武器オブジェクトに設定されている基準半径の値である。また、新たな移動オブジェクトの射出方向は、射撃指示が行われた時点におけるポインティング位置に基づいて決められる。
【００９８】
以下、射出方向の決定方法について説明する前に、まずポインティング位置の算出方法について説明する。コントローラ５によって指し示される画面上の位置であるポインティング位置は、マーカ座標データ６２に基づいて算出される。具体的には、まずＣＰＵ１０は、メインメモリに記憶されているマーカ座標データ６２により示される２つのマーカ座標の中点を算出する。この中点の位置は、撮像画像に対応する平面上の位置を表すためのｘｙ座標系によって表現される。このｘｙ座標系は、撮像画像の左上を原点とし、下向きをｙ軸正方向とし、右向きをｘ軸正方向とするものとする。次に、ＣＰＵ１０は、当該中点の位置を示す座標を、テレビ２の画面上の位置を表すための座標系（ｘ’ｙ’座標系）の座標に変換する。なお、ｘ’ｙ’座標系が、画面の左上を原点とし、下向きをｙ軸正方向とし、右向きをｘ軸正方向とするものとすれば、上記変換は次のように行うことができる。すなわち、中点座標のｘ成分の正負を反転させて所定の割合（例えば、撮像画像のｘ軸方向の長さを、テレビ２の画面のｘ’軸方向の長さに一致させる割合）でスケーリングすることによって、ポインティング位置のｘ’成分を得ることができる。また、中点座標のｙ成分を所定の割合（例えば、撮像画像のｙ軸方向の長さを、テレビ２の画面のｙ’軸方向の長さに一致させる割合）でスケーリングすることによって、指示位置のｙ’成分を得ることができる。以上のようにして算出されたｘ’ｙ’座標値により示される位置がポインティング位置となる。また、より正確なポインティング位置の算出方法の例としては、上記２つのマーカ座標を結ぶベクトルがｙ軸に平行になるように撮像画像の中央を中心として２つのマーカ座標の中点を回転する処理を行い、回転後の当該中点に対して上記変換処理を行う。このような回転による補正処理を行うことによって、コントローラ５が傾いている場合等にも、ポインティング位置を正確に算出することができる。なお、本実施形態では、算出されたポインティング位置に照準の画像が表示される。
【００９９】
射出方向は、以上のようにして算出されたポインティング位置に基づいて算出される。具体的には、まず、ＣＰＵ１０は、ポインティング位置に基づいて目標位置を算出する。目標位置は、ポインティング位置に対応するゲーム空間内の位置である。さらに、ＣＰＵ１０は、上記射出位置から目標位置への方向を射出方向として算出する。算出された射出方向を示すデータは、移動オブジェクトデータ６７に含まれる射出方向データとしてメインメモリに記憶される。なお、ここでは、射出方向を示すベクトルは単位ベクトルに正規化され、正規化後のベクトルを示すデータが射出方向データとして記憶される。
【０１００】
なお、本実施形態では、プレイヤがコントローラ５によって画面上の位置を指し示す操作に従って射出方向を決定したが、射出方向は、プレイヤによる他の操作に従って決められてもよい。例えば、ゲーム装置３は、十字キー３２ａに対する操作に従って射出方向を変化させる（画面上の照準を移動させる）ようにしてもよい。したがって、コントローラ５は、撮像情報演算部３５および加速度センサ３７を必ずしも備えている必要はなく、一般的な操作ボタンのみを備える構成であっても構わない。また、他の実施形態においては、射出方向（または照準の位置）がゲーム装置３によって自動的に動かされてもよい。
【０１０１】
上記ステップＳ１２によって、新たに射出される移動オブジェクトが生成され、当該移動オブジェクトに関する各種情報を示すデータが移動オブジェクトデータ６７に追加されたこととなる。ステップＳ１２の後、ステップＳ１３の処理が実行される。
【０１０２】
ステップＳ１３において、ＣＰＵ１０は、移動オブジェクトの経過時間を更新する。すなわち、ゲーム空間に配置されている各移動オブジェクトについて、経過時間が所定時間だけ加算される。本実施形態では１フレーム時間に１回の割合でステップＳ１３の処理が実行されるので、上記所定時間は１フレーム時間である。具体的には、ＣＰＵ１０は、移動オブジェクトデータ６７に含まれる経過時間データの内容を、現在の値から上記所定時間だけ加算した値に変更する。ＣＰＵ１０は、ゲーム空間に存在する全ての移動オブジェクトについて経過時間を更新する処理を行う。ステップＳ１３の後、ステップＳ１４の処理が実行される。
【０１０３】
ステップＳ１４において、ＣＰＵ１０は移動オブジェクトを移動させる。移動オブジェクトは、当該移動オブジェクトに対応する射出方向に、当該移動オブジェクトに対応する速度で移動する。ここで、「移動オブジェクトに対応する射出方向」とは、移動オブジェクトデータ６７において当該移動オブジェクトに関連付けられている射出方向データにより示される射出方向である。また、「移動オブジェクトに対応する速度」とは、武器リストデータ６５において当該移動オブジェクトに対応する武器オブジェクトに関連付けられている速度である。ステップＳ１４においては、ゲーム空間に存在する全ての移動オブジェクトが移動させられる。また、移動オブジェクトが移動される結果、移動オブジェクトデータ６７に含まれる位置データの内容が更新される。すなわち、位置データの内容は、移動後の移動オブジェクトの位置を示す内容に更新される。
【０１０４】
上記ステップＳ１４の処理によって、ゲーム空間に存在する各移動オブジェクトが移動される。なお、上記ステップＳ１４では、各移動オブジェクトが等速直線運動を行うように移動オブジェクトの移動が制御されるが、他の実施形態では、ゲーム装置３は、重力方向や空気抵抗等の物理条件を考慮して移動オブジェクトの移動制御を実行してもよい。例えば、移動オブジェクトの速度が次第に減少していくように当該速度を制御してもよいし、移動オブジェクトの移動軌跡が放物線を描くように射出方向を制御してもよい。このとき、移動オブジェクトの射出方向および速度は毎フレーム更新されてもよい。なお、移動オブジェクトの速度を変化させる場合には、ゲーム装置３は、現在の速度を示すデータを移動オブジェクトデータ６７に含めて記憶しておく。
【０１０５】
ステップＳ１４の次のステップＳ１５において、ＣＰＵ１０は、移動オブジェクトの移動距離を算出する。移動オブジェクトの移動距離は、当該移動オブジェクトの１フレーム毎の移動距離を累積することによって得ることができる。具体的には、移動オブジェクトの移動距離は、移動オブジェクトデータ６７に含まれている移動距離データにより示される移動距離に、今回のループ処理におけるステップＳ１４で移動された当該移動オブジェクトの移動距離を加算することによって算出される。算出された結果得られた移動距離を示すデータが、新たな移動距離データとしてメインメモリに記憶される。ステップＳ１５においては、ゲーム空間に存在する全ての移動オブジェクトについて移動距離が算出される。なお、本実施形態のように移動オブジェクトが等速直線運動を行う場合には、移動オブジェクトの速度と移動オブジェクトの経過時間とを乗算することによって移動距離を算出してもよいし、移動オブジェクトの射出位置を記憶しておいて現在の位置と射出位置との差を算出することによって移動距離を算出してもよい。ステップＳ１５の後、ステップＳ１６の処理が実行される。
【０１０６】
ステップＳ１６において、ＣＰＵ１０は、移動距離が最大飛距離を超えた移動オブジェクトをゲーム空間から削除する。すなわち、ＣＰＵ１０は、移動オブジェクトの現在の移動距離と、当該移動オブジェクトに設定されている最大飛距離とを比較し、当該移動距離が当該最大飛距離よりも大きい場合、当該移動オブジェクトをゲーム空間から削除する。ここで、移動オブジェクトの現在の移動距離は、移動オブジェクトデータ６７に含まれる移動距離データにより示されている。また、移動オブジェクトに設定されている最大飛距離は、移動オブジェクトデータ６７に含まれる武器ＩＤデータと武器リストデータ６５とを参照することにより知ることができる。すなわち、移動オブジェクトに設定される最大飛距離の値は、武器リストデータ６５において、当該移動オブジェクトに対応する武器オブジェクトに関連付けられている最大飛距離の値である。ステップＳ１６においては、ゲーム空間に存在する全ての移動オブジェクトについて移動距離と最大飛距離とが比較され、比較結果に応じて移動オブジェクトが削除される。なお、移動オブジェクトが削除される場合には、ＣＰＵ１０は、削除に応じて移動オブジェクトデータ６７の内容を更新する。すなわち、削除された移動オブジェクトに関する各種情報を示すデータを移動オブジェクトデータ６７から削除する。ステップＳ１６の後、ステップＳ１７の処理が実行される。
【０１０７】
以上のステップＳ１５およびＳ１６のように、本実施形態では、ゲーム装置３は、移動オブジェクトをゲーム空間から削除するために、移動オブジェクトの移動距離を算出し（ステップＳ１５）、算出された移動距離が最大飛距離よりも大きい場合に移動オブジェクトを削除した（ステップＳ１６）。ここで、他の実施形態においては、ゲーム装置３は、移動オブジェクトをゲーム空間から削除するために、移動オブジェクトの経過時間を用いてもよい。すなわち、経過時間が予め定められた制限時間を超えた移動オブジェクトをゲーム空間から削除するようにしてもよい。なお、この制限時間は、本実施形態における最大飛距離の情報と同様、武器オブジェクト毎に予め設定されてもよい。
【０１０８】
ステップＳ１７において、ＣＰＵ１０は、移動オブジェクトの移動距離に基づいて接触判定領域の倍率を算出する。具体的には、本実施形態では、移動オブジェクトの移動によって値が変化する変数として、移動オブジェクトの経過時間を用いる。つまり、本実施形態では、経過時間に基づいて接触判定領域の倍率を算出する。この倍率は、移動距離が大きくなるほど接触判定領域が大きくなるように、すなわち、経過時間が長いほど倍率が大きくなるように算出される。例えば図１２および図１３の例では、オブジェクトＩＤが“００１”である移動オブジェクトおよび“００２”である移動オブジェクトは、武器ＩＤが“００１”である武器オブジェクトから射出される移動オブジェクトであり、基準半径が“２”である。ここで、オブジェクトＩＤが“００１”である移動オブジェクトは、経過時間が“１”であり、半径は基準半径のままの“２”であるのに対して、オブジェクトＩＤが“００２”である移動オブジェクトは、経過時間が“２”であり、半径は基準半径のままの“２．１”である。このように、接触判定領域の倍率は、経過時間（移動距離）が大きくなるほど接触判定領域が大きくなるように算出される。ＣＰＵ１０は、ゲーム空間に存在する全ての移動オブジェクトについて倍率を算出し、算出された各倍率を示すデータをメインメモリに記憶しておく。ステップＳ１７の後、ステップＳ１８の処理が実行される。
【０１０９】
なお、上記ステップＳ１７においては、ゲーム装置３は、移動オブジェクトの移動によって値が変化する変数として経過時間を用いて上記倍率を算出したが、他の実施形態においては、ステップＳ１５で算出される移動距離を用いて上記倍率を算出するようにしてもよい。その他、例えば移動オブジェクトの速度が、予め定められた初速度から移動オブジェクトの移動に伴って次第に減速していくように制御される場合には、当該速度によっても移動オブジェクトの移動距離を知ることができる。したがって、この場合、移動オブジェクトの速度を上記変数として用いてもよい。
【０１１０】
ステップＳ１８において、ＣＰＵ１０は、移動オブジェクトに対して接触判定領域を設定する。本実施形態では、移動オブジェクトに設定される球形の接触判定領域は、当該接触判定領域の基準半径を、ステップＳ１７で算出された倍率で拡大することによって生成される。つまり、接触判定領域の大きさは、移動オブジェクトに設定される接触判定領域の基準半径と、ステップＳ１７で算出された倍率とに基づいて算出される。具体的には、球形である接触判定領域の半径は、上記基準半径に上記倍率を乗算することによって算出される。ここで、上記基準半径は、移動オブジェクトデータ６７に含まれる武器ＩＤデータと武器リストデータ６５とを参照することにより知ることができる。すなわち、移動オブジェクトに設定される接触判定領域の基準半径の値は、武器リストデータ６５において、当該移動オブジェクトに対応する武器オブジェクトに関連付けられている基準半径の値である。また、接触判定領域の位置は、移動オブジェクトの位置に基づいて決められる。具体的には、移動オブジェクトと接触判定領域とが予め定められた位置関係となるように、接触判定領域の位置が決定される。例えば、移動オブジェクトが矢オブジェクトである場合、ＣＰＵ１０は、鏃の位置を中心位置として球形の接触判定領域を配置する。上記ステップＳ１８においては、ゲーム空間に存在する全ての移動オブジェクトについて接触判定領域が設定される。ステップＳ１８の後、ＣＰＵ１０は図１５に示す移動制御処理を終了する。
【０１１１】
なお、上記移動制御処理におけるステップＳ１３〜Ｓ１８の処理は、移動オブジェクトがゲーム空間に存在しない場合には、実行を省略してもよい。すなわち、ＣＰＵ１０は、ステップＳ１２とステップＳ１３との間に、移動オブジェクトがゲーム空間に存在するか否かを判定するステップをさらに実行するようにしてもよい。そして、当該ステップにおける判定結果が肯定である場合のみ、ステップＳ１３〜Ｓ１８の処理を実行するようにしてもよい。
【０１１２】
図１４の説明に戻り、ステップＳ７において、ＣＰＵ１０は、移動オブジェクトと標的オブジェクトとが接触したか否かを判定する。上述したように、ステップＳ７の接触判定処理は、移動オブジェクトおよび標的オブジェクトに設定された接触判定領域を用いて行われる。すなわち、移動オブジェクトの接触判定領域と標的オブジェクトの接触判定領域とが接触する場合、移動オブジェクトと標的オブジェクトとが接触したと判定される。なお、本実施形態では、標的オブジェクトに設定される接触判定領域の大きさおよび形状は固定的に定められて変化しないものとする。標的オブジェクトに設定される接触判定領域の大きさおよび形状はどのようなものであってもよく、球形以外にも円柱形であってもよい。また、１つの標的オブジェクトに対して複数の接触判定領域が設定されてもよい。
【０１１３】
上記ステップＳ７において、ＣＰＵ１０は、移動オブジェクトと標的オブジェクトとの全ての組み合わせについて接触判定処理を行い、接触したと判定される組み合わせが１つでもある場合、移動オブジェクトと標的オブジェクトとが接触したと判定する。ステップＳ７の判定結果が肯定である場合、ステップＳ８の処理が実行される。一方、ステップＳ７の判定結果が否定である場合、ステップＳ８の処理がスキップされて後述するステップＳ９の処理が実行される。
【０１１４】
ステップＳ８において、ＣＰＵ１０は、ステップＳ７で接触したと判定された移動オブジェクトと標的オブジェクトとの組に対して接触処理を実行する。接触処理は、例えば、移動オブジェクトをゲーム空間から削除したり、標的オブジェクトが破壊されるアニメーションを表示させたり、（ゲームにおいて得点が設定されている場合には）得点を加算したりする処理である。なお、移動オブジェクトが削除される場合には、ＣＰＵ１０は、削除に応じて移動オブジェクトデータ６７の内容を更新する。すなわち、削除された移動オブジェクトに関する各種情報を示すデータを移動オブジェクトデータ６７から削除する。
【０１１５】
ステップＳ９において、ＣＰＵ１０は、テレビ２にゲーム画像を表示する。すなわち、ＣＰＵ１０（およびＧＰＵ１１ｂ）は、ゲーム空間内に設定される仮想カメラからゲーム空間を見たときの画像を生成する。さらに、生成した画像における上記ポインティング位置に照準の画像を重ねてテレビ２の画面に表示させる。このとき、前述したように、仮想カメラは、仮想カメラの視線方向が現時点での射出方向と同じ側を向くように設定される。
【０１１６】
ステップＳ１０において、ＣＰＵ１０は、ゲームを終了するか否かを判定する。ステップＳ１０の判定は、例えば、ゲームがクリアされたか否か、ゲームオーバーとなったか否か、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ１０の判定結果が否定である場合、ステップＳ２の処理が再度実行される。以降、ステップＳ１０でゲームを終了すると判定されるまで、ステップＳ２〜Ｓ１０の処理が繰り返し実行される。一方、ステップＳ１０の判定結果が肯定である場合、ＣＰＵ１０は、図１４に示すゲーム処理を終了する。以上で、ゲーム処理の説明を終了する。
【０１１７】
以上のように、本実施形態によれば、移動オブジェクトに設定される接触判定領域は、移動オブジェクトの移動距離に応じて次第に大きくなる（ステップＳ１７およびＳ１８）。これによれば、射出位置からの距離が遠い標的オブジェクトであっても移動オブジェクトを命中させることが容易になるので、初級者やゲームが苦手なプレイヤでも移動オブジェクトを標的オブジェクトに命中させることができるようになる。また、本実施形態においては、接触判定領域の大きさが変化するのは移動オブジェクトであるので、接触判定領域を変化させる処理の処理負荷は、標的オブジェクトの数に依存しない。したがって、標的オブジェクトの数によってシステムの処理負荷が大きく変動することがなく、ゲーム装置３における処理負荷を安定させることができる。
【０１１８】
なお、上記実施形態においては、移動オブジェクトの接触判定領域の半径を、移動オブジェクトの移動距離に基づいて算出される倍率を用いて算出した。ここで、他の実施形態においては、接触判定領域の半径は、所定時間（例えば１フレーム時間）が経過する毎に、予め定められた定数（例えば０．２）を基準半径に加算していくことによって算出されてもよい。また、この定数は、武器オブジェクトの種類毎に設定されてもよい。
【０１１９】
なお、上記実施形態においては、移動オブジェクトの接触判定領域を球形であるとし、移動距離に応じて半径を変化させる場合を例として説明した。ここで、他の実施形態においては、接触判定領域の形状は球形である必要はなく、円柱形や楕円形等他の形状であってもよい。また、他の実施形態においては、移動オブジェクトの接触判定領域の形状を移動距離に応じて変化させるようにしてもよい。例えば、ゲーム装置３は、移動オブジェクトの移動距離が所定値以下である場合、移動オブジェクトの接触判定領域を移動オブジェクトと同じ形状とし、当該移動距離が所定値よりも大きい場合、当該接触判定領域を球形にするようにしてもよい。これによれば、射出位置から（相対的に）近い範囲では正確に接触判定を行う一方、射出位置から（相対的に）遠い範囲では簡易な処理で接触判定を簡略化することができる。また、１つの移動オブジェクトに設定される接触判定領域は１つに限らず、複数であってもよい。例えば、上記実施形態における矢オブジェクトに対しては、球形の接触判定領域を複数個並べて配置するようにしてもよい。さらに、他の実施形態においては、１つの移動オブジェクトに設定される接触判定領域の数を、当該移動オブジェクトの移動距離に応じて変化させるようにしてもよい。例えば、移動距離が大きくなるほど接触判定領域の数を増加させるようにすれば、上記実施形態と同様、射出位置からの距離が遠い標的オブジェクトであっても移動オブジェクトを命中させることが容易になる。
【０１２０】
なお、標的オブジェクトに対する移動オブジェクトの命中しやすさを向上させる場合には、ゲーム装置３は、移動オブジェクトの移動方向から見た場合における接触判定領域の面積が大きくなるように、当該接触判定領域の大きさ、形状、および数のうち少なくとも１つを変化させることが好ましい。なお、上記面積とは、移動方向から、上記移動方向に垂直な面に対して接触判定領域を投影した場合における、投影面上に投影された接触判定領域の面積である。
【０１２１】
また、他の実施形態においては、移動オブジェクトの接触判定領域の大きさ、形状、または数に関する変化度合いを、当該移動オブジェクトの種類（移動オブジェクトに対応する武器オブジェクトの種類）によって、決定するようにしてもよい。例えば、上記実施形態において、武器オブジェクト毎に接触判定領域の半径の変化度合いを設定しておくようにしてもよい。すなわち、武器リストデータにおいて、各武器オブジェクトに対して上記変化度合いを関連付けておく。この変化度合いとは、例えば、「移動距離がａ増加する毎に倍率をｂ増加する」といった情報である。ゲーム処理においては、上記ステップＳ１７において、ＣＰＵ１０は、移動オブジェクトの倍率を算出する際、当該移動オブジェクトに対応する武器オブジェクトについて設定されている変化度合いに従って当該倍率を算出する。これによれば、武器オブジェクト毎に変化度合いを自由に設定することができるので、武器オブジェクト毎に命中の難易度を調整することができる。
【０１２２】
また、他の実施形態においては、移動オブジェクトの接触判定領域の大きさ、形状、および数のうち少なくとも１つを、当該移動オブジェクトの移動距離に加えて、他の条件（ゲームの状況）に応じて変化させるようにしてもよい。例えば、プレイヤオブジェクトが標的オブジェクトに対して相対的に移動している場合と、移動していない場合とで接触判定領域の大きさ、形状、および数のうち少なくとも１つを異ならせるようにしてもよい。プレイヤオブジェクトが標的オブジェクトに対して相対的に移動している場合には移動していない場合に比べて移動オブジェクトを標的オブジェクトに命中させにくくなるので、前者の場合には後者の場合に比べて例えば接触判定領域を大きくするようにしてもよい。また、他の実施形態においては、ゲームが開始されてからの経過時間や、（制限時間が設定されている場合に）制限時間までの残り時間に応じて、移動オブジェクトの接触判定領域の大きさ、形状、および数のうち少なくとも１つを変化させるようにしてもよい。また、移動オブジェクトの接触判定領域の大きさ、形状、および数のうち少なくとも１つをプレイヤの習熟度に応じて変化させるようにしてもよい。なお、プレイヤの習熟度は、例えば、ゲームをプレイした回数やプレイヤの得点の履歴等に基づいて決定することができる。
【産業上の利用可能性】
【０１２３】
以上のように、本発明は、標的オブジェクトの数によってシステムの処理負荷が変動することなく、安定した負荷でゲーム処理を実行すること等を目的として、例えばゲームプログラムやゲーム装置に利用することが可能である。
【図面の簡単な説明】
【０１２４】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の機能ブロック図
【図３】コントローラ５の外観構成を示す斜視図
【図４】コントローラ５の外観構成を示す斜視図
【図５】コントローラ５の内部構造を示す図
【図６】コントローラ５の内部構造を示す図
【図７】コントローラ５の構成を示すブロック図
【図８】コントローラ５を用いてゲーム操作を行うときの様子を示す図解図
【図９】本実施形態におけるゲーム処理によって表示されるゲーム画面の一例を示す図
【図１０】矢オブジェクトの接触判定領域が変化する様子を示す図
【図１１】ゲーム装置３のメインメモリに記憶される主なデータを示す図
【図１２】武器リストデータ６５の内容の一例を示す図
【図１３】移動オブジェクトデータ６７の内容の一例を示す図
【図１４】ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャート
【図１５】図１４に示す移動制御処理（ステップＳ６）の流れを示すフローチャート
【符号の説明】
【０１２５】
１    ゲームシステム
２    テレビ
３    ゲーム装置
４    光ディスク
５    コントローラ
６    マーカ部
１０    ＣＰＵ
１１ｃ  ＧＰＵ
１１ｅ  内部メインメモリ
１２    外部メインメモリ
５１〜５４    標的オブジェクト
５２    壁オブジェクト
５５    矢オブジェクト
５７    接触判定領域
５８    弓オブジェクト
【図１】
0005296338.tif 000002
【図２】
0005296338.tif 000003
【図３】
0005296338.tif 000004
【図４】
0005296338.tif 000005
【図５】
0005296338.tif 000006
【図６】
0005296338.tif 000007
【図７】
0005296338.tif 000008
【図８】
0005296338.tif 000009
【図９】
0005296338.tif 000010
【図１０】
0005296338.tif 000011
【図１１】
0005296338.tif 000012
【図１２】
0005296338.tif 000013
【図１３】
0005296338.tif 000014
【図１４】
0005296338.tif 000015
【図１５】
0005296338.tif 000016