ゲームプログラムおよびゲーム装置
【課題】標的オブジェクトの数によってシステムの処理負荷が変動することなく、安定した負荷でゲーム処理を実行する。
【解決手段】ゲーム装置は、入力装置に対する入力が受け付けられたことを条件として、所定の武器オブジェクトから移動オブジェクトを射出して3次元空間内を移動させる。移動オブジェクトに設定される接触判定領域の大きさ、形状、および数のうち少なくとも1つは、当該移動オブジェクトが3次元空間を移動した距離に応じて変化する。ゲーム装置は、移動オブジェクトの接触判定領域と標的オブジェクトの接触判定領域とが接触したか否かを判定する。接触判定ステップにおける判定結果が肯定である場合、所定のゲーム処理が実行される。
【解決手段】ゲーム装置は、入力装置に対する入力が受け付けられたことを条件として、所定の武器オブジェクトから移動オブジェクトを射出して3次元空間内を移動させる。移動オブジェクトに設定される接触判定領域の大きさ、形状、および数のうち少なくとも1つは、当該移動オブジェクトが3次元空間を移動した距離に応じて変化する。ゲーム装置は、移動オブジェクトの接触判定領域と標的オブジェクトの接触判定領域とが接触したか否かを判定する。接触判定ステップにおける判定結果が肯定である場合、所定のゲーム処理が実行される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームプログラムおよびゲーム装置に関し、より特定的には、仮想の3次元空間内において標的となるオブジェクトを射撃するゲームを実行するためのゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来、仮想の3次元空間内において標的となる標的オブジェクトを射撃するゲームを実行するゲーム装置がある。このようなゲーム装置は、標的オブジェクトおよび銃等から射出される弾オブジェクトについて接触判定領域を設定することにより、標的に弾が命中したかどうかを判定している。具体的には、標的に弾が命中したかどうかは、標的オブジェクトと弾オブジェクトとが接触したかどうかによって行われる。ここで、標的オブジェクトおよび弾オブジェクトの接触判定領域の大きさおよび形状は、ゲーム状況にかかわらず一定であるのが通常である。したがって、標的オブジェクトが移動する場合には、標的オブジェクトの接触判定領域も標的オブジェクトに付随して移動するので、移動している標的に弾を命中させることは難しく、プレイヤにとってはゲームが難しくなりすぎるおそれがあった。
【0003】
そこで、移動している標的に弾を命中させることの困難性を緩和する方法として、特許文献1に記載の方法がある。特許文献1に記載の画像生成システムは、標的オブジェクトが移動しているか否かを判定し、標的オブジェクトが移動していると判定された場合、標的オブジェクトの接触判定領域を大きくする。これによれば、弾オブジェクトの接触判定領域が標的オブジェクトの接触判定領域に接触しやすくなるので、移動している標的に弾を命中させやすくなり、上記困難性を緩和することができる。
【特許文献1】特開2005−246071号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の画像生成システムでは、3次元空間に登場する標的オブジェクトの全てについて、移動しているか否かを判定し、判定結果に応じて接触判定領域を設定しなければならない。したがって、上記画像生成システムでは、3次元空間に登場する標的オブジェクトの数によってシステムの処理負荷が変動し、標的オブジェクトが多数になるとシステムの処理負荷が増加してしまうという問題があった。
【0005】
それ故、本発明の目的は、標的オブジェクトの数によってシステムの処理負荷が変動することなく、安定した負荷でゲーム処理を実行することができるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0007】
第1の発明は、入力装置(コントローラ5)からの入力に応じて仮想の3次元空間(ゲーム空間)の標的オブジェクト(51〜54)を射撃するゲームを実行するゲーム装置(3)のコンピュータ(CPU10等)に実行させるゲームプログラム(60)である。ゲームプログラムは、入力受付ステップ(S2)と、射出ステップ(S12,S14)と、領域変化ステップ(S17,S18)と、接触判定ステップ(S7)と、接触処理ステップ(S8)とをコンピュータに実行させる。入力受付ステップにおいて、コンピュータは、射出の指示の入力を受け付ける。射出ステップにおいて、コンピュータは、入力受付ステップにおいて入力が受け付けられたことを条件として、3次元空間において移動オブジェクト(矢オブジェクト55)を射出して当該移動オブジェクトを移動させる。領域変化ステップにおいて、コンピュータは、移動オブジェクトの移動によって値が変化する変数に基づいて、当該移動オブジェクトに設定される接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させる。接触判定ステップにおいて、コンピュータは、移動オブジェクトの接触判定領域と標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する。接触処理ステップにおいて、コンピュータは、接触判定ステップにおける判定結果が肯定である場合、所定のゲーム処理(接触処理)を実行する。
【0008】
第2の発明においては、変数は、当該移動オブジェクトが射出されてからの経過時間を示す変数であってもよい。
【0009】
第3の発明においては、領域変化ステップにおいて、コンピュータは、移動オブジェクトが射出されてからの経過時間が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させてもよい。
【0010】
第4の発明においては、変数は、当該移動オブジェクトが3次元空間を移動した距離を示す変数であってもよい。
【0011】
第5の発明においては、領域変化ステップにおいて、コンピュータは、移動オブジェクトの移動距離が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させてもよい。
【0012】
第6の発明においては、領域変化ステップにおいて、コンピュータは、移動オブジェクトの移動方向から見た場合における接触判定領域の面積が変数の値の大きさに応じて大きくなるように、当該接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させてもよい。
【0013】
第7の発明においては、ゲームプログラムは、移動オブジェクトが射出される方向が画面の手前側から奥側に向かう方向となるように3次元空間の画像を生成して表示装置に当該画像を表示させる表示制御ステップをコンピュータにさらに実行させてもよい。
【0014】
第8の発明においては、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められていてもよい。このとき、領域変化ステップは、倍率算出ステップ(S17)と、変形ステップ(S18)とを含む。倍率算出ステップにおいて、コンピュータは、移動オブジェクトが射出されてからの経過時間に応じて決められる倍率を算出する。変形ステップにおいて、コンピュータは、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を倍率で拡大または縮小するように変形する。
【0015】
第9の発明においては、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められていてもよい。このとき、領域変化ステップは、倍率算出ステップ(S17)と、変形ステップ(S18)とを含む。倍率算出ステップにおいて、コンピュータは、移動オブジェクトの移動距離に応じて決められる倍率を算出する。変形ステップにおいて、コンピュータは、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を倍率で拡大または縮小するように変形する。
【0016】
第10の発明においては、射出ステップにおいて、コンピュータは、入力装置に対する入力に基づいて、移動オブジェクトを射出する方向を決定してもよい。
【0017】
第11の発明においては、3次元空間には、複数種類の移動オブジェクトが射出されてもよい。このとき、領域変化ステップにおいて、コンピュータは、移動オブジェクトの接触判定領域の変化度合いを、当該移動オブジェクトの種類に応じて決定する。
【0018】
また、本発明は、上記第1〜第11の発明における各ステップを実行するゲーム装置と同等の機能を有するゲーム装置の形態で提供されてもよい。なお、当該ゲーム装置においては、ゲームプログラムを実行するCPUによって上記各ステップが実行されてもよいし、ゲーム装置が備える専用の回路によって上記各ステップの一部または全部が実行されてもよい。
【発明の効果】
【0019】
第1の発明によれば、移動オブジェクトの接触判定領域は、当該移動オブジェクトの移動距離に応じて大きさ、形状、および数の少なくとも1つが変化する。これによって、標的オブジェクトに対する移動オブジェクトの命中しやすさは、移動距離に応じて変化する。例えば、移動距離に応じて接触判定領域を大きくすれば、命中しやすさが上がるので、ゲームの難易度を下げることができ、移動距離に応じて接触判定領域を小さくすれば、命中しやすさが下がるので、ゲームの難易度を上げることができる。つまり、接触判定領域の大きさ、形状、および数の少なくとも1つを移動距離に応じて変化させることによって、ゲームの難易度を容易に調整することができる。また、本実施形態においては、接触判定領域の大きさが変化するのは移動オブジェクトであるので、接触判定領域を変化させる処理の処理負荷は、標的オブジェクトの数に依存しない。したがって、標的オブジェクトの数によってゲーム装置の処理負荷が大きく変動することがなく、ゲーム装置における処理負荷を安定させることができる。
【0020】
第2の発明によれば、移動オブジェクトが射出されてからの経過時間を用いて接触判定領域を変化させるので、実際の移動距離を算出する場合よりも容易に接触判定領域を変化させる処理を行うことができる。
【0021】
第3の発明によれば、移動オブジェクトが射出されてからの経過時間が長くなるほど接触判定領域の大きさが大きくなるので、移動オブジェクトが射出された位置から遠くにある標的オブジェクトに対して移動オブジェクトを命中させやすくなる。これによって、射撃の難易度を下げることができ、初級者やゲームが苦手なプレイヤでも射撃を楽しむことができるようになる。
【0022】
第4の発明によれば、実際の移動距離を算出することによって移動距離を正確に反映して接触判定領域を変化させる処理を行うことができる。
【0023】
第5の発明によれば、移動オブジェクトの移動距離が大きくなるほど接触判定領域の大きさが大きくなるので、移動オブジェクトが射出された位置から遠くにある標的オブジェクトに対して移動オブジェクトを命中させやすくなる。これによって、射撃の難易度を下げることができ、初級者やゲームが苦手なプレイヤでも射撃を楽しむことができるようになる。
【0024】
第6の発明によれば、移動オブジェクトを標的オブジェクトに命中させやすくなるので、射撃の難易度を下げることができ、初級者やゲームが苦手なプレイヤでも射撃を楽しむことができるようになる。
【0025】
第7の発明によれば、移動オブジェクトは画面の手前側から奥側へ向かって移動するので、移動オブジェクトの射出位置から離れた標的オブジェクトは射出位置に近い標的オブジェクトに比べて小さく表示される。この場合、射出位置から離れた標的オブジェクトに移動オブジェクトを命中させにくくなるので、上記第3、第5または第6の発明のように、移動オブジェクトを標的オブジェクトに対して命中しやすくなるように変化させることが特に有効になる。
【0026】
第8または第9の発明によれば、経過時間または移動距離に応じて決められる倍率を用いて接触判定領域を拡大または縮小することによって、接触判定領域を経過時間または移動距離に応じて容易に変形させることができる。
【0027】
第10の発明によれば、プレイヤの意図した方向へ移動オブジェクトを射出することができる。
【0028】
第11の発明によれば、標的オブジェクトに対する移動オブジェクトの命中しやすさのレベルを、武器オブジェクト毎に設定することができる。
【発明を実施するための最良の形態】
【0029】
(ゲームシステムの全体構成)
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態に係るゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、コントローラ5、およびマーカ部6を含む。本システムは、コントローラ5を用いたゲーム操作に基づいてゲーム装置3において、仮想の3次元空間内において標的オブジェクトを射撃するゲームのためのゲーム処理を実行するものである。
【0030】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられ、データの読み取りが可能な情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。なお、ゲームプログラムはゲーム装置3の内部メモリ(不揮発であることが好ましいが揮発性でもよい)に予め記憶されていてもよいし、ゲーム装置3は、ゲーム装置3とネットワークを介して接続される所定のサーバ(または他のゲーム装置)からゲームプログラムをダウンロードして内部メモリに記憶するようにしても構わない。
【0031】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0032】
コントローラ5は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは通信可能に構成されればよく、有線で接続されてもよい。
【0033】
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0034】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10はシステムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0035】
システムLSI11には、入出力プロセッサ11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0036】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0037】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0038】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0039】
入出力プロセッサ(I/Oプロセッサ)11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0040】
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データがある場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0041】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0042】
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0043】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0044】
(コントローラ5の構成)
次に、図3〜図7を参照して、コントローラ5について説明する。図3および図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
【0045】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0046】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
【0047】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、他のコントローラ)を接続するために利用される。
【0048】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0049】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0050】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0051】
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0052】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図7)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0053】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0054】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
【0055】
なお、図3〜図6に示したコントローラ5の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられても構わない。
【0056】
図7は、コントローラ5の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、および加速度センサ37を備えている。コントローラ5は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置3へ送信するものである。
【0057】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示す操作ボタンデータを通信部36のマイコン42へ出力する。
【0058】
撮像情報演算部35は、撮像手段が撮像した画像データを解析し、画像内で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0059】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるマーカ部6のマーカ6Rおよび6Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ6Rおよび6Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ6Rおよび6L)の位置を算出する。以下では、算出されたマーカの位置を示す座標を「マーカ座標」と呼ぶ。画像処理回路41は、マーカ座標のデータ(マーカ座標データ)を通信部36のマイコン42へ出力する。マーカ座標データは、マイコン42によって操作データとしてゲーム装置3に送信される。マーカ座標はコントローラ5自体の向き(姿勢)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0060】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。検出された加速度は、コントローラ5を基準に設定されるXYZ座標系における3次元のベクトル(AX,AY,AZ)として表される。加速度センサ37が検出した加速度を示すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(姿勢)や動きに対応して変化するので、ゲーム装置3は加速度データを用いてコントローラ5の向きや動きを算出することができる。
【0061】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。
【0062】
操作部32、撮像情報演算部35、および加速度センサ37からマイコン42へ出力された各データ(操作ボタンデータ、マーカ座標データ、および加速度データ)は、一時的にメモリ43に格納される。これらの各データは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の無線コントローラモジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変換されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の無線コントローラモジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいてゲーム処理を行う。なお、通信部36から無線コントローラモジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の無線コントローラモジュール19へ出力する。
【0063】
上記コントローラ5を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5によって画面上の任意の位置を指示する操作、および、コントローラ5自体を動かす操作を行うことができる。図8は、コントローラ5を用いてゲーム操作を行うときの様子を示す図解図である。本実施形態では、プレイヤは、図8に示すように、コントローラ5を動かす(具体的には、コントローラ5の姿勢を変化させる)ゲーム操作、および、コントローラ5によってテレビ2の画面上の位置Pを指し示すゲーム操作を行うことができる。
【0064】
なお、図8に示す位置Pは、コントローラ5によって指し示される画面上の位置であり、理想的には、コントローラ5の前端部から上記長手方向に延ばした直線とテレビ2の画面とが交わる位置である。詳細は後述するが、ゲーム装置3は、上述したマーカ座標に基づいて位置Pを算出する。ただし、ゲーム装置3によって算出される位置は厳密に当該位置である必要はなく、ゲーム装置3はその周辺の位置を算出することができればよい。以下では、コントローラ5によって指し示される画面上の位置(図8に示す位置P)を「ポインティング位置」と呼ぶ。
【0065】
(ゲーム装置における処理の概要)
以下、図9および図10を参照して、ゲーム装置3で実行されるゲーム処理の概要について説明する。以下では、プレイヤが仮想の3次元空間内において標的となるオブジェクトを射撃するゲームを例としてゲーム処理を説明する。
【0066】
図9は、本実施形態におけるゲーム処理によって表示されるゲーム画面の一例を示す図である。図9に示すように、本ゲームにおいて構築される仮想の3次元空間(ゲーム空間)には、標的オブジェクト51〜54、および矢オブジェクト55が配置される。また、テレビ2の画面には、3次元空間の画像とともに照準56の画像が表示される。本ゲームは、矢オブジェクト55等の移動オブジェクトを射出して標的オブジェクト51〜54に命中させることを目的とした射撃ゲームである。
【0067】
標的オブジェクト51〜54は、射撃の標的となるオブジェクトである。図9では、標的オブジェクト51〜54は的を模したオブジェクトであるが、標的オブジェクトの大きさおよび形状はどのようなものであってもよい。例えば、他の実施形態では、標的オブジェクトはモンスターのオブジェクトであってもよい。また、標的オブジェクト51〜54はゲーム空間内を移動してもよい。
【0068】
矢オブジェクト55は、武器オブジェクトから射出され、ゲーム空間を移動する移動オブジェクトの一例である。図9では、武器オブジェクトを弓オブジェクト(図10に示す弓オブジェクト58)とし、移動オブジェクトを矢オブジェクト55とするが、武器オブジェクトおよび移動オブジェクトはどのようなものであってもよい。例えば、武器オブジェクトは銃のオブジェクトで、移動オブジェクトは弾丸のオブジェクトであってもよい。なお、本実施形態では、プレイヤオブジェクトが使用可能な武器オブジェクトは複数あるものとする。つまり、プレイヤは、複数の武器オブジェクトから1つを選択して射撃を行うことができる。
【0069】
照準56は、矢オブジェクト55を射出する際の照準を表す。照準56は、矢オブジェクトが射出される方向(射出方向)を示している。すなわち、矢オブジェクト55は、3次元のゲーム空間における武器オブジェクトの位置から照準56により指定される(ゲーム空間内の)位置に向かって射出される。また、本実施形態では、2次元のゲーム画像上における照準56の位置は、上記ポインティング位置に決定される。したがって、本実施形態では、コントローラ5が指し示す画面上の位置(ポインティング)によって矢オブジェクト55が射出される方向が決まるので、プレイヤは、コントローラ5自体を動かしてコントローラ5が指し示す画面上の位置を変更する操作を行うことによって、矢オブジェクト55の射出方向を操作することができる。
【0070】
なお、図9では、矢オブジェクト55を射出する弓オブジェクトや、弓オブジェクトを持つプレイヤキャラクタ(図10参照)が表示されていないが、他の実施形態においては、これら弓オブジェクトおよびプレイヤキャラクタが表示されていてもよい。
【0071】
また、本実施形態では、図9に示されるように、矢オブジェクト55の射出方向が画面の手前側から奥側に向かう方向となるように、ゲーム空間の画像が生成される。つまり、ゲーム空間に設定される仮想カメラの視線方向は、当該視線方向と矢オブジェクト55の射出方向が同じ側を向くように(視線方向と射出方向とのなす角が鋭角となるように)設定される。
【0072】
射撃ゲームをプレイする際、プレイヤは、コントローラ5を操作して照準56の位置を所望の位置にした状態で、例えばAボタン32dを押下することによって射撃指示を行う。射撃指示が行われたことに応じて、弓オブジェクトから矢オブジェクト55が射出される。つまり、矢オブジェクト55が生成され、生成された矢オブジェクト55が上記弓オブジェクトの位置から上記射出方向にゲーム空間を移動していく。
【0073】
上記射撃指示に応じて射出された矢オブジェクト55が標的オブジェクト51〜54のいずれかに命中したか否かは、各オブジェクト51〜55に設定される接触判定領域を用いて行われる。具体的には、矢オブジェクト55が標的オブジェクト51〜54のいずれかに命中したか否か、すなわち、矢オブジェクト55と標的オブジェクト51〜54のいずれかとが接触したか否かは、矢オブジェクト55に設定される接触判定領域と、各標的オブジェクト51〜54にそれぞれ設定される接触判定領域とが互いに接触したか否かによって判定される。ここで、接触判定領域とは、2つのオブジェクトが互いに接触したか否かを判定するためにオブジェクト毎に設定される領域である。本実施形態では、接触判定領域の形状は球形であるとし、1つのオブジェクトには1以上の球形の接触判定領域が設定される。また、オブジェクトに設定される接触判定領域の位置は、当該オブジェクトの位置に従って決められる。オブジェクト同士が接触しているか否かの判定処理(接触判定処理)は、ゲーム画像が生成する度に実行される、すなわち、毎フレーム実行される。
【0074】
図10は、矢オブジェクトの接触判定領域が変化する様子を示す図である。図10においては、矢オブジェクト55の進行方向に対して垂直な方向から見たゲーム空間が示されている。図10においては、プレイヤオブジェクト59が持つ弓オブジェクト58から射出された直後の位置における矢オブジェクト55およびそれにそれに設定される接触判定領域57を点線で示し、射出されてからある程度移動した矢オブジェクト55およびそれに設定される接触判定領域57を実線で示している。
【0075】
図10に示されるように、射出直後の位置における矢オブジェクト55の接触判定領域57は比較的小さい半径の球形であるのに対して、射出されてからある程度移動した矢オブジェクト55の接触判定領域57は比較的大きい半径の球形となっている。このように、本実施形態においては、矢オブジェクト55の接触判定領域57は、矢オブジェクト55の移動距離に応じて大きくなるように設定される。したがって、本実施形態によれば、矢オブジェクト55は、射出された位置(射出位置)から離れるほど標的オブジェクトに接触しやすくなる。つまり、射出位置から離れるほど矢は標的に命中しやすくなる。
【0076】
ここで、仮想カメラの視線方向と矢オブジェクトの射出方向とが同じ側を向くような射撃ゲーム(図9参照)では、射出位置からの距離が遠い標的オブジェクト(例えば図9に示す標的オブジェクト54)は、射出位置からの距離が近い標的オブジェクト(例えば図9に示す標的オブジェクト51)に比べて相対的に小さく表示されるので、矢オブジェクトを命中させることが難しい。そこで、本実施形態では、矢オブジェクトの接触判定領域を移動距離に応じて大きくすることで、矢を命中させる難易度を下げるようにしている。これによれば、初級者やゲームが苦手なプレイヤでも矢を的に命中させやすくなる。また、射出位置からの距離が近い位置では接触判定領域の大きさは大きくないので、ゲームが簡単になりすぎることがなく、ゲームの難易度を適度なレベルに設定することができる。また、他の実施形態においては、矢オブジェクトの接触判定領域を移動距離に応じて小さくすることも可能であり、これによれば、ゲームの難易度を上げることができる。このように、本発明によれば、矢オブジェクトの接触判定領域を移動距離に応じて変化させることで、射撃ゲームの難易度を容易に変更することができる。
【0077】
また、本実施形態においては、矢オブジェクトの接触判定領域を変化させるので、接触判定領域を変化させる処理の処理負荷は、標的オブジェクトの数に依存しない。これによれば、標的オブジェクトの数によってシステムの処理負荷が大きく変動することなく、ゲーム装置3は、安定した処理負荷でゲーム処理を実行することができる。
【0078】
(ゲーム処理の詳細)
以下、図11〜図15を参照して、本実施形態におけるゲーム処理の詳細について説明する。まず、本実施形態におけるゲーム処理において用いられるデータについて説明する。図11は、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11e)に記憶される主なデータを示す図である。図11に示すように、メインメモリには、ゲームプログラム60、操作データ61、およびゲーム処理用データ64等が記憶される。
【0079】
ゲームプログラム60は、後述するゲーム処理(図14)をゲーム装置3のCPU10に実行させるためのプログラムである。ゲームプログラム60は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。
【0080】
操作データ61は、コントローラ5からゲーム装置3へ送信されてきてメインメモリに記憶される操作データである。操作データ61には、マーカ座標データ62および操作ボタンデータ63が含まれる。マーカ座標データ62は、上記撮像情報演算部35によって算出される上記マーカ座標を示すデータである。操作ボタンデータ63は、各操作ボタン32a〜32iに対する入力状態を示すデータである。なお、マーカ座標データ62および操作ボタンデータ63の他、操作データ61には、加速度センサ37によって検出される加速度ベクトルを示す加速度データが含まれる。上述したように、操作データはコントローラ5からゲーム装置3へ1/200秒に1回の割合で送信されるので、メインメモリに記憶される操作データはこの割合で更新される。メインメモリには、最新の(最後に取得された)操作データのみが記憶されればよい。
【0081】
ゲーム処理用データ64は、後述するゲーム処理(図14)において用いられるデータである。ゲーム処理用データ64は、武器リストデータ65、現在武器データ66、移動オブジェクトデータ67、および標的データ75を含む。なお、ゲーム処理用データ64は、図11に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータを含む。
【0082】
武器リストデータ65は、武器オブジェクトに関する各種情報を示すデータである。本実施形態では、プレイヤオブジェクトが使用可能な武器は複数あり、それぞれ性能が異なっている。武器リストデータ65は、光ディスク4にゲームプログラムとともに予め記憶されており、ゲーム開始時等適宜のタイミングで光ディスク4から読み出される。図12は、武器リストデータ65の内容の一例を示す図である。図12に示されるように、本実施形態においては、武器リストデータ65は、各武器オブジェクトについてそれぞれ、武器ID、最大飛距離、速度、および基準半径の各情報を関連付けたデータである。武器IDとは、各武器オブジェクトを識別するための番号であり、武器オブジェクトに固有の番号である。最大飛距離とは、その武器オブジェクトによって移動オブジェクトを射出することができる最大の飛距離を示す情報である。速度とは、その武器オブジェクトによって射出された移動オブジェクトの速度(例えば1フレーム時間当たりに移動する距離)を示す情報である。なお、本実施形態では、移動オブジェクトは等速で移動するものとする。なお、他の実施形態においては、移動オブジェクトの速度は次第に減衰していってもよい。このとき、武器リストデータ65は、武器オブジェクトに対して移動オブジェクトの初速度および減速度合いを関連付けていてもよい。また、基準半径とは、その武器オブジェクトによって射出された移動オブジェクトに設定される接触判定領域の、射出時における半径である。
【0083】
現在武器データ66は、現在使用している武器オブジェクトを示すデータである。具体的には、現在武器データ66は現在使用している武器オブジェクトの武器IDを示す。本実施形態では、プレイヤオブジェクト(プレイヤ)は、武器リストデータ65により示される各武器オブジェクトのうちの1つを使用することが可能であるとする。なお、ゲーム装置3は、使用する武器オブジェクトをプレイヤにゲーム前に選択させるようにしてもよいし、使用する武器オブジェクトをゲーム途中に変更することができるようにしてもよい。
【0084】
移動オブジェクトデータ67は、ゲーム空間に配置されている各移動オブジェクトに関する各種情報を示すデータである。図13は、移動オブジェクトデータ67の内容の一例を示す図である。図13に示されるように、移動オブジェクトデータ67は、ゲーム空間に配置されている各移動オブジェクトについてそれぞれ、オブジェクトIDデータ68、武器IDデータ69、位置データ70、経過時間データ71、移動距離データ72、判定領域半径データ73、および射出方向データ74を含んでいる。1つの移動オブジェクトに関するこれらのデータは、互いに関連付けられて記憶されている。
【0085】
オブジェクトIDデータ68は、ゲーム空間に配置されている移動オブジェクトを識別するための番号であり、移動オブジェクトに固有の番号を示す。武器IDデータは、移動オブジェクトが射出された武器オブジェクトの武器IDを示す。位置データ70は、移動オブジェクトのゲーム空間における位置を示す。この位置は、上記ワールド座標系における座標値により表される。経過時間データ71は、移動オブジェクトが射出されてから経過した時間を示す。移動距離データ72は、移動オブジェクトが射出されてからゲーム空間を移動した距離を示す。判定領域半径データ73は、移動オブジェクトに設定される接触判定領域の現在の半径を示す。射出方向データ74は、移動オブジェクトが射出される方向を示す。この方向は、ゲーム空間における方向を示す3次元のベクトル(単位ベクトル)で表現される。
【0086】
標的データ75は、ゲーム空間に配置されている各標的オブジェクトに関する各種情報を示すデータである。具体的には、標的データ75は、各標的オブジェクトについて、標的オブジェクトのゲーム空間における位置を示す。
【0087】
次に、ゲーム装置3において行われるゲーム処理の詳細を、図14および図15を用いて説明する。図14は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図14に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0088】
図14に示すステップS1において、まずCPU10は、ゲームに関する初期処理を実行する。具体的には、CPU10は、プレイヤオブジェクト等のゲームキャラクタのデータ、および、3次元のゲーム空間を構築するための地形オブジェクトのデータ等を光ディスク4から読み込む。そして、読み込んだデータを用いて当該フィールドの3次元空間を構築し、プレイヤオブジェクトや他のオブジェクトを当該フィールドの初期位置に配置する処理等を実行する。このとき、標的データ75は、各標的オブジェクトの初期位置を示すように設定されてメインメモリに記憶される。また、本実施形態では、初期化処理において、武器リストデータ65がゲームプログラムから読み出されてメインメモリに記憶される。また、初期化処理において、ゲーム開始時に使用される武器が設定される。すなわち、予め定められた所定の武器オブジェクトを示すデータが現在武器データ66としてメインメモリに記憶される。なお、他の実施形態においては、ゲーム装置3は、ゲーム開始時に使用される武器をプレイヤに選択させるようにしてもよい。
【0089】
上記ステップS1の後、ステップS2〜S10の処理ループが、ゲームが実行される間繰り返し実行される。なお、1回の当該処理ループは、1フレーム時間(例えば1/60秒)に1回の割合で実行される。
【0090】
ステップS2において、CPU10は操作データを取得する。すなわち、コントローラ5から送信されてくる操作データがゲーム装置3で受信され、メインメモリに記憶されるので、CPU10は、操作データ61に含まれるマーカ座標データ62および操作ボタンデータ63をメインメモリから読み出す。ステップS2の後、ステップS3の処理が実行される。
【0091】
ステップS3において、CPU10は、フィールド上のオブジェクトを動作させる。つまり、プレイヤによるコントローラ5に対する操作に従ってプレイヤオブジェクトを動作させたり、予め定められたアルゴリズムに従って標的オブジェクトを移動させたりする。なお、標的オブジェクトが移動される場合には、メインメモリに記憶されている標的データ75の内容が更新される。すなわち、移動後の各標的オブジェクトの位置を示すデータが標的データ75としてメインメモリに記憶される。ステップS3の後、ステップS4の処理が実行される。
【0092】
ステップS4において、CPU10は、プレイヤによって武器変更指示が行われたか否かを判定する。武器変更指示とは、プレイヤオブジェクトが使用する武器を変更するための指示である。本実施形態では、プレイヤは、所定のメニュー表示ボタン(例えばマイナスボタン32e)を押下することによってメニュー画面を表示させた(ステップS4)上で、メニュー画面において例えば十字ボタン32aおよびAボタン32dを用いて武器を選択する(後述するステップS5)ことによって武器を変更することができる。具体的には、ステップS4においてCPU10は、ステップS2で取得した操作ボタンデータ63を参照して、上記メニュー表示ボタンが押下されたか否かを判定する。ステップS4の判定結果が肯定である場合、ステップS5の処理が実行される。一方、ステップS4の判定結果が否定である場合、ステップS5の処理がスキップされて後述するステップS6の処理が実行される。
【0093】
ステップS5において、CPU10は、プレイヤオブジェクトが使用する武器を変更する。具体的には、CPU10はまず、使用可能な武器のリストを含むメニュー画面をテレビ2に表示する。そして、メインメモリから操作データを所定時間間隔で取得することによって、武器を選択する操作を受け付ける。プレイヤは、メニュー画面が表示されている状態において、メニュー画面に含まれる武器のリストの中から武器を十字ボタン32aによって選択するとともに、所望の武器を選択した状態でAボタン32dを押下することによって使用する武器を決定する。プレイヤによって武器が決定されたことに応じて、CPU10は、プレイヤオブジェクトが使用する武器を変更する。すなわち、決定された武器を示すデータを現在武器データ66としてメインメモリに記憶する。以上によって、プレイヤオブジェクトが使用する武器が変更されたこととなる。
【0094】
ステップS6において、CPU10は、移動制御処理を実行する。移動制御処理は、ゲーム空間に配置されている移動オブジェクトを移動させるとともに、移動オブジェクトの接触判定領域を当該移動オブジェクトの移動距離に応じて拡大するための処理である。以下、図15を参照して、移動制御処理の詳細を説明する。
【0095】
図15は、図14に示す移動制御処理(ステップS6)の流れを示すフローチャートである。移動制御処理においては、まずステップS11において、CPU10は、射撃指示が行われたか否かを判定する。射撃指示は、武器オブジェクトから移動オブジェクトを射出させる指示である。本実施形態では、プレイヤは、所定の射撃ボタン(例えばAボタン32d)を押下することによって射撃指示を行うことができるものとする。したがって、CPU10は、ステップS2で取得した操作ボタンデータ63を参照して、上記射撃ボタンが押下されたか否かを判定する。ステップS11の判定結果が肯定である場合、ステップS12の処理が実行される。一方、ステップS11の判定結果が否定である場合、ステップS12の処理がスキップされて後述するステップS13の処理が実行される。
【0096】
ステップS12において、CPU10は、新たな移動オブジェクトを生成する。具体的には、ゲーム空間内における武器オブジェクト近傍の所定位置に移動オブジェクトを新たに配置する。また、CPU10は、メインメモリに記憶されている移動オブジェクトデータ67の内容を更新する。具体的には、移動オブジェクトデータ67には、互いに関連付けられるオブジェクトIDデータ、武器IDデータ、位置データ、経過時間データ、移動距離データ、半径データ、および射出方向データがそれぞれ1つずつ追加される。以下、これら各データの内容、すなわち、新たな移動オブジェクトに関して設定される各種情報の内容について説明する。
【0097】
新たな移動オブジェクトに関して設定される各種情報は、それぞれ次のように設定される。すなわち、新たな移動オブジェクトのオブジェクトIDは、移動オブジェクトデータ67にすでに含まれている他のオブジェクトIDデータにより示される番号とは異なる番号となるように設定される。新たな移動オブジェクトの武器IDは、現在武器データ66により示される番号と同じ番号に設定される。新たな移動オブジェクトの位置は、現在の武器オブジェクトの位置に基づいて決められる所定の位置となるように設定される。この所定の位置が移動オブジェクトが射出される位置(射出位置)となる。新たな移動オブジェクトの経過時間および移動距離は、それぞれ“0”に設定される。新たな移動オブジェクトに設定される接触判定領域の半径は、射出時点の半径、すなわち、基準半径の大きさに設定される。なお、この基準半径の値は、武器リストデータ65において、現在武器データ66により示される武器オブジェクトに設定されている基準半径の値である。また、新たな移動オブジェクトの射出方向は、射撃指示が行われた時点におけるポインティング位置に基づいて決められる。
【0098】
以下、射出方向の決定方法について説明する前に、まずポインティング位置の算出方法について説明する。コントローラ5によって指し示される画面上の位置であるポインティング位置は、マーカ座標データ62に基づいて算出される。具体的には、まずCPU10は、メインメモリに記憶されているマーカ座標データ62により示される2つのマーカ座標の中点を算出する。この中点の位置は、撮像画像に対応する平面上の位置を表すためのxy座標系によって表現される。このxy座標系は、撮像画像の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とするものとする。次に、CPU10は、当該中点の位置を示す座標を、テレビ2の画面上の位置を表すための座標系(x’y’座標系)の座標に変換する。なお、x’y’座標系が、画面の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とするものとすれば、上記変換は次のように行うことができる。すなわち、中点座標のx成分の正負を反転させて所定の割合(例えば、撮像画像のx軸方向の長さを、テレビ2の画面のx’軸方向の長さに一致させる割合)でスケーリングすることによって、ポインティング位置のx’成分を得ることができる。また、中点座標のy成分を所定の割合(例えば、撮像画像のy軸方向の長さを、テレビ2の画面のy’軸方向の長さに一致させる割合)でスケーリングすることによって、指示位置のy’成分を得ることができる。以上のようにして算出されたx’y’座標値により示される位置がポインティング位置となる。また、より正確なポインティング位置の算出方法の例としては、上記2つのマーカ座標を結ぶベクトルがy軸に平行になるように撮像画像の中央を中心として2つのマーカ座標の中点を回転する処理を行い、回転後の当該中点に対して上記変換処理を行う。このような回転による補正処理を行うことによって、コントローラ5が傾いている場合等にも、ポインティング位置を正確に算出することができる。なお、本実施形態では、算出されたポインティング位置に照準の画像が表示される。
【0099】
射出方向は、以上のようにして算出されたポインティング位置に基づいて算出される。具体的には、まず、CPU10は、ポインティング位置に基づいて目標位置を算出する。目標位置は、ポインティング位置に対応するゲーム空間内の位置である。さらに、CPU10は、上記射出位置から目標位置への方向を射出方向として算出する。算出された射出方向を示すデータは、移動オブジェクトデータ67に含まれる射出方向データとしてメインメモリに記憶される。なお、ここでは、射出方向を示すベクトルは単位ベクトルに正規化され、正規化後のベクトルを示すデータが射出方向データとして記憶される。
【0100】
なお、本実施形態では、プレイヤがコントローラ5によって画面上の位置を指し示す操作に従って射出方向を決定したが、射出方向は、プレイヤによる他の操作に従って決められてもよい。例えば、ゲーム装置3は、十字キー32aに対する操作に従って射出方向を変化させる(画面上の照準を移動させる)ようにしてもよい。したがって、コントローラ5は、撮像情報演算部35および加速度センサ37を必ずしも備えている必要はなく、一般的な操作ボタンのみを備える構成であっても構わない。また、他の実施形態においては、射出方向(または照準の位置)がゲーム装置3によって自動的に動かされてもよい。
【0101】
上記ステップS12によって、新たに射出される移動オブジェクトが生成され、当該移動オブジェクトに関する各種情報を示すデータが移動オブジェクトデータ67に追加されたこととなる。ステップS12の後、ステップS13の処理が実行される。
【0102】
ステップS13において、CPU10は、移動オブジェクトの経過時間を更新する。すなわち、ゲーム空間に配置されている各移動オブジェクトについて、経過時間が所定時間だけ加算される。本実施形態では1フレーム時間に1回の割合でステップS13の処理が実行されるので、上記所定時間は1フレーム時間である。具体的には、CPU10は、移動オブジェクトデータ67に含まれる経過時間データの内容を、現在の値から上記所定時間だけ加算した値に変更する。CPU10は、ゲーム空間に存在する全ての移動オブジェクトについて経過時間を更新する処理を行う。ステップS13の後、ステップS14の処理が実行される。
【0103】
ステップS14において、CPU10は移動オブジェクトを移動させる。移動オブジェクトは、当該移動オブジェクトに対応する射出方向に、当該移動オブジェクトに対応する速度で移動する。ここで、「移動オブジェクトに対応する射出方向」とは、移動オブジェクトデータ67において当該移動オブジェクトに関連付けられている射出方向データにより示される射出方向である。また、「移動オブジェクトに対応する速度」とは、武器リストデータ65において当該移動オブジェクトに対応する武器オブジェクトに関連付けられている速度である。ステップS14においては、ゲーム空間に存在する全ての移動オブジェクトが移動させられる。また、移動オブジェクトが移動される結果、移動オブジェクトデータ67に含まれる位置データの内容が更新される。すなわち、位置データの内容は、移動後の移動オブジェクトの位置を示す内容に更新される。
【0104】
上記ステップS14の処理によって、ゲーム空間に存在する各移動オブジェクトが移動される。なお、上記ステップS14では、各移動オブジェクトが等速直線運動を行うように移動オブジェクトの移動が制御されるが、他の実施形態では、ゲーム装置3は、重力方向や空気抵抗等の物理条件を考慮して移動オブジェクトの移動制御を実行してもよい。例えば、移動オブジェクトの速度が次第に減少していくように当該速度を制御してもよいし、移動オブジェクトの移動軌跡が放物線を描くように射出方向を制御してもよい。このとき、移動オブジェクトの射出方向および速度は毎フレーム更新されてもよい。なお、移動オブジェクトの速度を変化させる場合には、ゲーム装置3は、現在の速度を示すデータを移動オブジェクトデータ67に含めて記憶しておく。
【0105】
ステップS14の次のステップS15において、CPU10は、移動オブジェクトの移動距離を算出する。移動オブジェクトの移動距離は、当該移動オブジェクトの1フレーム毎の移動距離を累積することによって得ることができる。具体的には、移動オブジェクトの移動距離は、移動オブジェクトデータ67に含まれている移動距離データにより示される移動距離に、今回のループ処理におけるステップS14で移動された当該移動オブジェクトの移動距離を加算することによって算出される。算出された結果得られた移動距離を示すデータが、新たな移動距離データとしてメインメモリに記憶される。ステップS15においては、ゲーム空間に存在する全ての移動オブジェクトについて移動距離が算出される。なお、本実施形態のように移動オブジェクトが等速直線運動を行う場合には、移動オブジェクトの速度と移動オブジェクトの経過時間とを乗算することによって移動距離を算出してもよいし、移動オブジェクトの射出位置を記憶しておいて現在の位置と射出位置との差を算出することによって移動距離を算出してもよい。ステップS15の後、ステップS16の処理が実行される。
【0106】
ステップS16において、CPU10は、移動距離が最大飛距離を超えた移動オブジェクトをゲーム空間から削除する。すなわち、CPU10は、移動オブジェクトの現在の移動距離と、当該移動オブジェクトに設定されている最大飛距離とを比較し、当該移動距離が当該最大飛距離よりも大きい場合、当該移動オブジェクトをゲーム空間から削除する。ここで、移動オブジェクトの現在の移動距離は、移動オブジェクトデータ67に含まれる移動距離データにより示されている。また、移動オブジェクトに設定されている最大飛距離は、移動オブジェクトデータ67に含まれる武器IDデータと武器リストデータ65とを参照することにより知ることができる。すなわち、移動オブジェクトに設定される最大飛距離の値は、武器リストデータ65において、当該移動オブジェクトに対応する武器オブジェクトに関連付けられている最大飛距離の値である。ステップS16においては、ゲーム空間に存在する全ての移動オブジェクトについて移動距離と最大飛距離とが比較され、比較結果に応じて移動オブジェクトが削除される。なお、移動オブジェクトが削除される場合には、CPU10は、削除に応じて移動オブジェクトデータ67の内容を更新する。すなわち、削除された移動オブジェクトに関する各種情報を示すデータを移動オブジェクトデータ67から削除する。ステップS16の後、ステップS17の処理が実行される。
【0107】
以上のステップS15およびS16のように、本実施形態では、ゲーム装置3は、移動オブジェクトをゲーム空間から削除するために、移動オブジェクトの移動距離を算出し(ステップS15)、算出された移動距離が最大飛距離よりも大きい場合に移動オブジェクトを削除した(ステップS16)。ここで、他の実施形態においては、ゲーム装置3は、移動オブジェクトをゲーム空間から削除するために、移動オブジェクトの経過時間を用いてもよい。すなわち、経過時間が予め定められた制限時間を超えた移動オブジェクトをゲーム空間から削除するようにしてもよい。なお、この制限時間は、本実施形態における最大飛距離の情報と同様、武器オブジェクト毎に予め設定されてもよい。
【0108】
ステップS17において、CPU10は、移動オブジェクトの移動距離に基づいて接触判定領域の倍率を算出する。具体的には、本実施形態では、移動オブジェクトの移動によって値が変化する変数として、移動オブジェクトの経過時間を用いる。つまり、本実施形態では、経過時間に基づいて接触判定領域の倍率を算出する。この倍率は、移動距離が大きくなるほど接触判定領域が大きくなるように、すなわち、経過時間が長いほど倍率が大きくなるように算出される。例えば図12および図13の例では、オブジェクトIDが“001”である移動オブジェクトおよび“002”である移動オブジェクトは、武器IDが“001”である武器オブジェクトから射出される移動オブジェクトであり、基準半径が“2”である。ここで、オブジェクトIDが“001”である移動オブジェクトは、経過時間が“1”であり、半径は基準半径のままの“2”であるのに対して、オブジェクトIDが“002”である移動オブジェクトは、経過時間が“2”であり、半径は基準半径のままの“2.1”である。このように、接触判定領域の倍率は、経過時間(移動距離)が大きくなるほど接触判定領域が大きくなるように算出される。CPU10は、ゲーム空間に存在する全ての移動オブジェクトについて倍率を算出し、算出された各倍率を示すデータをメインメモリに記憶しておく。ステップS17の後、ステップS18の処理が実行される。
【0109】
なお、上記ステップS17においては、ゲーム装置3は、移動オブジェクトの移動によって値が変化する変数として経過時間を用いて上記倍率を算出したが、他の実施形態においては、ステップS15で算出される移動距離を用いて上記倍率を算出するようにしてもよい。その他、例えば移動オブジェクトの速度が、予め定められた初速度から移動オブジェクトの移動に伴って次第に減速していくように制御される場合には、当該速度によっても移動オブジェクトの移動距離を知ることができる。したがって、この場合、移動オブジェクトの速度を上記変数として用いてもよい。
【0110】
ステップS18において、CPU10は、移動オブジェクトに対して接触判定領域を設定する。本実施形態では、移動オブジェクトに設定される球形の接触判定領域は、当該接触判定領域の基準半径を、ステップS17で算出された倍率で拡大することによって生成される。つまり、接触判定領域の大きさは、移動オブジェクトに設定される接触判定領域の基準半径と、ステップS17で算出された倍率とに基づいて算出される。具体的には、球形である接触判定領域の半径は、上記基準半径に上記倍率を乗算することによって算出される。ここで、上記基準半径は、移動オブジェクトデータ67に含まれる武器IDデータと武器リストデータ65とを参照することにより知ることができる。すなわち、移動オブジェクトに設定される接触判定領域の基準半径の値は、武器リストデータ65において、当該移動オブジェクトに対応する武器オブジェクトに関連付けられている基準半径の値である。また、接触判定領域の位置は、移動オブジェクトの位置に基づいて決められる。具体的には、移動オブジェクトと接触判定領域とが予め定められた位置関係となるように、接触判定領域の位置が決定される。例えば、移動オブジェクトが矢オブジェクトである場合、CPU10は、鏃の位置を中心位置として球形の接触判定領域を配置する。上記ステップS18においては、ゲーム空間に存在する全ての移動オブジェクトについて接触判定領域が設定される。ステップS18の後、CPU10は図15に示す移動制御処理を終了する。
【0111】
なお、上記移動制御処理におけるステップS13〜S18の処理は、移動オブジェクトがゲーム空間に存在しない場合には、実行を省略してもよい。すなわち、CPU10は、ステップS12とステップS13との間に、移動オブジェクトがゲーム空間に存在するか否かを判定するステップをさらに実行するようにしてもよい。そして、当該ステップにおける判定結果が肯定である場合のみ、ステップS13〜S18の処理を実行するようにしてもよい。
【0112】
図14の説明に戻り、ステップS7において、CPU10は、移動オブジェクトと標的オブジェクトとが接触したか否かを判定する。上述したように、ステップS7の接触判定処理は、移動オブジェクトおよび標的オブジェクトに設定された接触判定領域を用いて行われる。すなわち、移動オブジェクトの接触判定領域と標的オブジェクトの接触判定領域とが接触する場合、移動オブジェクトと標的オブジェクトとが接触したと判定される。なお、本実施形態では、標的オブジェクトに設定される接触判定領域の大きさおよび形状は固定的に定められて変化しないものとする。標的オブジェクトに設定される接触判定領域の大きさおよび形状はどのようなものであってもよく、球形以外にも円柱形であってもよい。また、1つの標的オブジェクトに対して複数の接触判定領域が設定されてもよい。
【0113】
上記ステップS7において、CPU10は、移動オブジェクトと標的オブジェクトとの全ての組み合わせについて接触判定処理を行い、接触したと判定される組み合わせが1つでもある場合、移動オブジェクトと標的オブジェクトとが接触したと判定する。ステップS7の判定結果が肯定である場合、ステップS8の処理が実行される。一方、ステップS7の判定結果が否定である場合、ステップS8の処理がスキップされて後述するステップS9の処理が実行される。
【0114】
ステップS8において、CPU10は、ステップS7で接触したと判定された移動オブジェクトと標的オブジェクトとの組に対して接触処理を実行する。接触処理は、例えば、移動オブジェクトをゲーム空間から削除したり、標的オブジェクトが破壊されるアニメーションを表示させたり、(ゲームにおいて得点が設定されている場合には)得点を加算したりする処理である。なお、移動オブジェクトが削除される場合には、CPU10は、削除に応じて移動オブジェクトデータ67の内容を更新する。すなわち、削除された移動オブジェクトに関する各種情報を示すデータを移動オブジェクトデータ67から削除する。
【0115】
ステップS9において、CPU10は、テレビ2にゲーム画像を表示する。すなわち、CPU10(およびGPU11b)は、ゲーム空間内に設定される仮想カメラからゲーム空間を見たときの画像を生成する。さらに、生成した画像における上記ポインティング位置に照準の画像を重ねてテレビ2の画面に表示させる。このとき、前述したように、仮想カメラは、仮想カメラの視線方向が現時点での射出方向と同じ側を向くように設定される。
【0116】
ステップS10において、CPU10は、ゲームを終了するか否かを判定する。ステップS10の判定は、例えば、ゲームがクリアされたか否か、ゲームオーバーとなったか否か、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップS10の判定結果が否定である場合、ステップS2の処理が再度実行される。以降、ステップS10でゲームを終了すると判定されるまで、ステップS2〜S10の処理が繰り返し実行される。一方、ステップS10の判定結果が肯定である場合、CPU10は、図14に示すゲーム処理を終了する。以上で、ゲーム処理の説明を終了する。
【0117】
以上のように、本実施形態によれば、移動オブジェクトに設定される接触判定領域は、移動オブジェクトの移動距離に応じて次第に大きくなる(ステップS17およびS18)。これによれば、射出位置からの距離が遠い標的オブジェクトであっても移動オブジェクトを命中させることが容易になるので、初級者やゲームが苦手なプレイヤでも移動オブジェクトを標的オブジェクトに命中させることができるようになる。また、本実施形態においては、接触判定領域の大きさが変化するのは移動オブジェクトであるので、接触判定領域を変化させる処理の処理負荷は、標的オブジェクトの数に依存しない。したがって、標的オブジェクトの数によってシステムの処理負荷が大きく変動することがなく、ゲーム装置3における処理負荷を安定させることができる。
【0118】
なお、上記実施形態においては、移動オブジェクトの接触判定領域の半径を、移動オブジェクトの移動距離に基づいて算出される倍率を用いて算出した。ここで、他の実施形態においては、接触判定領域の半径は、所定時間(例えば1フレーム時間)が経過する毎に、予め定められた定数(例えば0.2)を基準半径に加算していくことによって算出されてもよい。また、この定数は、武器オブジェクトの種類毎に設定されてもよい。
【0119】
なお、上記実施形態においては、移動オブジェクトの接触判定領域を球形であるとし、移動距離に応じて半径を変化させる場合を例として説明した。ここで、他の実施形態においては、接触判定領域の形状は球形である必要はなく、円柱形や楕円形等他の形状であってもよい。また、他の実施形態においては、移動オブジェクトの接触判定領域の形状を移動距離に応じて変化させるようにしてもよい。例えば、ゲーム装置3は、移動オブジェクトの移動距離が所定値以下である場合、移動オブジェクトの接触判定領域を移動オブジェクトと同じ形状とし、当該移動距離が所定値よりも大きい場合、当該接触判定領域を球形にするようにしてもよい。これによれば、射出位置から(相対的に)近い範囲では正確に接触判定を行う一方、射出位置から(相対的に)遠い範囲では簡易な処理で接触判定を簡略化することができる。また、1つの移動オブジェクトに設定される接触判定領域は1つに限らず、複数であってもよい。例えば、上記実施形態における矢オブジェクトに対しては、球形の接触判定領域を複数個並べて配置するようにしてもよい。さらに、他の実施形態においては、1つの移動オブジェクトに設定される接触判定領域の数を、当該移動オブジェクトの移動距離に応じて変化させるようにしてもよい。例えば、移動距離が大きくなるほど接触判定領域の数を増加させるようにすれば、上記実施形態と同様、射出位置からの距離が遠い標的オブジェクトであっても移動オブジェクトを命中させることが容易になる。
【0120】
なお、標的オブジェクトに対する移動オブジェクトの命中しやすさを向上させる場合には、ゲーム装置3は、移動オブジェクトの移動方向から見た場合における接触判定領域の面積が大きくなるように、当該接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させることが好ましい。なお、上記面積とは、移動方向から、上記移動方向に垂直な面に対して接触判定領域を投影した場合における、投影面上に投影された接触判定領域の面積である。
【0121】
また、他の実施形態においては、移動オブジェクトの接触判定領域の大きさ、形状、または数に関する変化度合いを、当該移動オブジェクトの種類(移動オブジェクトに対応する武器オブジェクトの種類)によって、決定するようにしてもよい。例えば、上記実施形態において、武器オブジェクト毎に接触判定領域の半径の変化度合いを設定しておくようにしてもよい。すなわち、武器リストデータにおいて、各武器オブジェクトに対して上記変化度合いを関連付けておく。この変化度合いとは、例えば、「移動距離がa増加する毎に倍率をb増加する」といった情報である。ゲーム処理においては、上記ステップS17において、CPU10は、移動オブジェクトの倍率を算出する際、当該移動オブジェクトに対応する武器オブジェクトについて設定されている変化度合いに従って当該倍率を算出する。これによれば、武器オブジェクト毎に変化度合いを自由に設定することができるので、武器オブジェクト毎に命中の難易度を調整することができる。
【0122】
また、他の実施形態においては、移動オブジェクトの接触判定領域の大きさ、形状、および数のうち少なくとも1つを、当該移動オブジェクトの移動距離に加えて、他の条件(ゲームの状況)に応じて変化させるようにしてもよい。例えば、プレイヤオブジェクトが標的オブジェクトに対して相対的に移動している場合と、移動していない場合とで接触判定領域の大きさ、形状、および数のうち少なくとも1つを異ならせるようにしてもよい。プレイヤオブジェクトが標的オブジェクトに対して相対的に移動している場合には移動していない場合に比べて移動オブジェクトを標的オブジェクトに命中させにくくなるので、前者の場合には後者の場合に比べて例えば接触判定領域を大きくするようにしてもよい。また、他の実施形態においては、ゲームが開始されてからの経過時間や、(制限時間が設定されている場合に)制限時間までの残り時間に応じて、移動オブジェクトの接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させるようにしてもよい。また、移動オブジェクトの接触判定領域の大きさ、形状、および数のうち少なくとも1つをプレイヤの習熟度に応じて変化させるようにしてもよい。なお、プレイヤの習熟度は、例えば、ゲームをプレイした回数やプレイヤの得点の履歴等に基づいて決定することができる。
【産業上の利用可能性】
【0123】
以上のように、本発明は、標的オブジェクトの数によってシステムの処理負荷が変動することなく、安定した負荷でゲーム処理を実行すること等を目的として、例えばゲームプログラムやゲーム装置に利用することが可能である。
【図面の簡単な説明】
【0124】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の機能ブロック図
【図3】コントローラ5の外観構成を示す斜視図
【図4】コントローラ5の外観構成を示す斜視図
【図5】コントローラ5の内部構造を示す図
【図6】コントローラ5の内部構造を示す図
【図7】コントローラ5の構成を示すブロック図
【図8】コントローラ5を用いてゲーム操作を行うときの様子を示す図解図
【図9】本実施形態におけるゲーム処理によって表示されるゲーム画面の一例を示す図
【図10】矢オブジェクトの接触判定領域が変化する様子を示す図
【図11】ゲーム装置3のメインメモリに記憶される主なデータを示す図
【図12】武器リストデータ65の内容の一例を示す図
【図13】移動オブジェクトデータ67の内容の一例を示す図
【図14】ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャート
【図15】図14に示す移動制御処理(ステップS6)の流れを示すフローチャート
【符号の説明】
【0125】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ部
10 CPU
11c GPU
11e 内部メインメモリ
12 外部メインメモリ
51〜54 標的オブジェクト
52 壁オブジェクト
55 矢オブジェクト
57 接触判定領域
58 弓オブジェクト
【技術分野】
【0001】
本発明は、ゲームプログラムおよびゲーム装置に関し、より特定的には、仮想の3次元空間内において標的となるオブジェクトを射撃するゲームを実行するためのゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来、仮想の3次元空間内において標的となる標的オブジェクトを射撃するゲームを実行するゲーム装置がある。このようなゲーム装置は、標的オブジェクトおよび銃等から射出される弾オブジェクトについて接触判定領域を設定することにより、標的に弾が命中したかどうかを判定している。具体的には、標的に弾が命中したかどうかは、標的オブジェクトと弾オブジェクトとが接触したかどうかによって行われる。ここで、標的オブジェクトおよび弾オブジェクトの接触判定領域の大きさおよび形状は、ゲーム状況にかかわらず一定であるのが通常である。したがって、標的オブジェクトが移動する場合には、標的オブジェクトの接触判定領域も標的オブジェクトに付随して移動するので、移動している標的に弾を命中させることは難しく、プレイヤにとってはゲームが難しくなりすぎるおそれがあった。
【0003】
そこで、移動している標的に弾を命中させることの困難性を緩和する方法として、特許文献1に記載の方法がある。特許文献1に記載の画像生成システムは、標的オブジェクトが移動しているか否かを判定し、標的オブジェクトが移動していると判定された場合、標的オブジェクトの接触判定領域を大きくする。これによれば、弾オブジェクトの接触判定領域が標的オブジェクトの接触判定領域に接触しやすくなるので、移動している標的に弾を命中させやすくなり、上記困難性を緩和することができる。
【特許文献1】特開2005−246071号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1の画像生成システムでは、3次元空間に登場する標的オブジェクトの全てについて、移動しているか否かを判定し、判定結果に応じて接触判定領域を設定しなければならない。したがって、上記画像生成システムでは、3次元空間に登場する標的オブジェクトの数によってシステムの処理負荷が変動し、標的オブジェクトが多数になるとシステムの処理負荷が増加してしまうという問題があった。
【0005】
それ故、本発明の目的は、標的オブジェクトの数によってシステムの処理負荷が変動することなく、安定した負荷でゲーム処理を実行することができるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0007】
第1の発明は、入力装置(コントローラ5)からの入力に応じて仮想の3次元空間(ゲーム空間)の標的オブジェクト(51〜54)を射撃するゲームを実行するゲーム装置(3)のコンピュータ(CPU10等)に実行させるゲームプログラム(60)である。ゲームプログラムは、入力受付ステップ(S2)と、射出ステップ(S12,S14)と、領域変化ステップ(S17,S18)と、接触判定ステップ(S7)と、接触処理ステップ(S8)とをコンピュータに実行させる。入力受付ステップにおいて、コンピュータは、射出の指示の入力を受け付ける。射出ステップにおいて、コンピュータは、入力受付ステップにおいて入力が受け付けられたことを条件として、3次元空間において移動オブジェクト(矢オブジェクト55)を射出して当該移動オブジェクトを移動させる。領域変化ステップにおいて、コンピュータは、移動オブジェクトの移動によって値が変化する変数に基づいて、当該移動オブジェクトに設定される接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させる。接触判定ステップにおいて、コンピュータは、移動オブジェクトの接触判定領域と標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する。接触処理ステップにおいて、コンピュータは、接触判定ステップにおける判定結果が肯定である場合、所定のゲーム処理(接触処理)を実行する。
【0008】
第2の発明においては、変数は、当該移動オブジェクトが射出されてからの経過時間を示す変数であってもよい。
【0009】
第3の発明においては、領域変化ステップにおいて、コンピュータは、移動オブジェクトが射出されてからの経過時間が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させてもよい。
【0010】
第4の発明においては、変数は、当該移動オブジェクトが3次元空間を移動した距離を示す変数であってもよい。
【0011】
第5の発明においては、領域変化ステップにおいて、コンピュータは、移動オブジェクトの移動距離が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させてもよい。
【0012】
第6の発明においては、領域変化ステップにおいて、コンピュータは、移動オブジェクトの移動方向から見た場合における接触判定領域の面積が変数の値の大きさに応じて大きくなるように、当該接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させてもよい。
【0013】
第7の発明においては、ゲームプログラムは、移動オブジェクトが射出される方向が画面の手前側から奥側に向かう方向となるように3次元空間の画像を生成して表示装置に当該画像を表示させる表示制御ステップをコンピュータにさらに実行させてもよい。
【0014】
第8の発明においては、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められていてもよい。このとき、領域変化ステップは、倍率算出ステップ(S17)と、変形ステップ(S18)とを含む。倍率算出ステップにおいて、コンピュータは、移動オブジェクトが射出されてからの経過時間に応じて決められる倍率を算出する。変形ステップにおいて、コンピュータは、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を倍率で拡大または縮小するように変形する。
【0015】
第9の発明においては、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められていてもよい。このとき、領域変化ステップは、倍率算出ステップ(S17)と、変形ステップ(S18)とを含む。倍率算出ステップにおいて、コンピュータは、移動オブジェクトの移動距離に応じて決められる倍率を算出する。変形ステップにおいて、コンピュータは、移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を倍率で拡大または縮小するように変形する。
【0016】
第10の発明においては、射出ステップにおいて、コンピュータは、入力装置に対する入力に基づいて、移動オブジェクトを射出する方向を決定してもよい。
【0017】
第11の発明においては、3次元空間には、複数種類の移動オブジェクトが射出されてもよい。このとき、領域変化ステップにおいて、コンピュータは、移動オブジェクトの接触判定領域の変化度合いを、当該移動オブジェクトの種類に応じて決定する。
【0018】
また、本発明は、上記第1〜第11の発明における各ステップを実行するゲーム装置と同等の機能を有するゲーム装置の形態で提供されてもよい。なお、当該ゲーム装置においては、ゲームプログラムを実行するCPUによって上記各ステップが実行されてもよいし、ゲーム装置が備える専用の回路によって上記各ステップの一部または全部が実行されてもよい。
【発明の効果】
【0019】
第1の発明によれば、移動オブジェクトの接触判定領域は、当該移動オブジェクトの移動距離に応じて大きさ、形状、および数の少なくとも1つが変化する。これによって、標的オブジェクトに対する移動オブジェクトの命中しやすさは、移動距離に応じて変化する。例えば、移動距離に応じて接触判定領域を大きくすれば、命中しやすさが上がるので、ゲームの難易度を下げることができ、移動距離に応じて接触判定領域を小さくすれば、命中しやすさが下がるので、ゲームの難易度を上げることができる。つまり、接触判定領域の大きさ、形状、および数の少なくとも1つを移動距離に応じて変化させることによって、ゲームの難易度を容易に調整することができる。また、本実施形態においては、接触判定領域の大きさが変化するのは移動オブジェクトであるので、接触判定領域を変化させる処理の処理負荷は、標的オブジェクトの数に依存しない。したがって、標的オブジェクトの数によってゲーム装置の処理負荷が大きく変動することがなく、ゲーム装置における処理負荷を安定させることができる。
【0020】
第2の発明によれば、移動オブジェクトが射出されてからの経過時間を用いて接触判定領域を変化させるので、実際の移動距離を算出する場合よりも容易に接触判定領域を変化させる処理を行うことができる。
【0021】
第3の発明によれば、移動オブジェクトが射出されてからの経過時間が長くなるほど接触判定領域の大きさが大きくなるので、移動オブジェクトが射出された位置から遠くにある標的オブジェクトに対して移動オブジェクトを命中させやすくなる。これによって、射撃の難易度を下げることができ、初級者やゲームが苦手なプレイヤでも射撃を楽しむことができるようになる。
【0022】
第4の発明によれば、実際の移動距離を算出することによって移動距離を正確に反映して接触判定領域を変化させる処理を行うことができる。
【0023】
第5の発明によれば、移動オブジェクトの移動距離が大きくなるほど接触判定領域の大きさが大きくなるので、移動オブジェクトが射出された位置から遠くにある標的オブジェクトに対して移動オブジェクトを命中させやすくなる。これによって、射撃の難易度を下げることができ、初級者やゲームが苦手なプレイヤでも射撃を楽しむことができるようになる。
【0024】
第6の発明によれば、移動オブジェクトを標的オブジェクトに命中させやすくなるので、射撃の難易度を下げることができ、初級者やゲームが苦手なプレイヤでも射撃を楽しむことができるようになる。
【0025】
第7の発明によれば、移動オブジェクトは画面の手前側から奥側へ向かって移動するので、移動オブジェクトの射出位置から離れた標的オブジェクトは射出位置に近い標的オブジェクトに比べて小さく表示される。この場合、射出位置から離れた標的オブジェクトに移動オブジェクトを命中させにくくなるので、上記第3、第5または第6の発明のように、移動オブジェクトを標的オブジェクトに対して命中しやすくなるように変化させることが特に有効になる。
【0026】
第8または第9の発明によれば、経過時間または移動距離に応じて決められる倍率を用いて接触判定領域を拡大または縮小することによって、接触判定領域を経過時間または移動距離に応じて容易に変形させることができる。
【0027】
第10の発明によれば、プレイヤの意図した方向へ移動オブジェクトを射出することができる。
【0028】
第11の発明によれば、標的オブジェクトに対する移動オブジェクトの命中しやすさのレベルを、武器オブジェクト毎に設定することができる。
【発明を実施するための最良の形態】
【0029】
(ゲームシステムの全体構成)
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態に係るゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、コントローラ5、およびマーカ部6を含む。本システムは、コントローラ5を用いたゲーム操作に基づいてゲーム装置3において、仮想の3次元空間内において標的オブジェクトを射撃するゲームのためのゲーム処理を実行するものである。
【0030】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられ、データの読み取りが可能な情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。なお、ゲームプログラムはゲーム装置3の内部メモリ(不揮発であることが好ましいが揮発性でもよい)に予め記憶されていてもよいし、ゲーム装置3は、ゲーム装置3とネットワークを介して接続される所定のサーバ(または他のゲーム装置)からゲームプログラムをダウンロードして内部メモリに記憶するようにしても構わない。
【0031】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0032】
コントローラ5は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは通信可能に構成されればよく、有線で接続されてもよい。
【0033】
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0034】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10はシステムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0035】
システムLSI11には、入出力プロセッサ11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0036】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0037】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0038】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0039】
入出力プロセッサ(I/Oプロセッサ)11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0040】
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データがある場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0041】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0042】
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0043】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0044】
(コントローラ5の構成)
次に、図3〜図7を参照して、コントローラ5について説明する。図3および図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
【0045】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0046】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
【0047】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、他のコントローラ)を接続するために利用される。
【0048】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0049】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0050】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0051】
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0052】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図7)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0053】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0054】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
【0055】
なお、図3〜図6に示したコントローラ5の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられても構わない。
【0056】
図7は、コントローラ5の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、および加速度センサ37を備えている。コントローラ5は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置3へ送信するものである。
【0057】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示す操作ボタンデータを通信部36のマイコン42へ出力する。
【0058】
撮像情報演算部35は、撮像手段が撮像した画像データを解析し、画像内で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0059】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるマーカ部6のマーカ6Rおよび6Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ6Rおよび6Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ6Rおよび6L)の位置を算出する。以下では、算出されたマーカの位置を示す座標を「マーカ座標」と呼ぶ。画像処理回路41は、マーカ座標のデータ(マーカ座標データ)を通信部36のマイコン42へ出力する。マーカ座標データは、マイコン42によって操作データとしてゲーム装置3に送信される。マーカ座標はコントローラ5自体の向き(姿勢)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0060】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。検出された加速度は、コントローラ5を基準に設定されるXYZ座標系における3次元のベクトル(AX,AY,AZ)として表される。加速度センサ37が検出した加速度を示すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(姿勢)や動きに対応して変化するので、ゲーム装置3は加速度データを用いてコントローラ5の向きや動きを算出することができる。
【0061】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。
【0062】
操作部32、撮像情報演算部35、および加速度センサ37からマイコン42へ出力された各データ(操作ボタンデータ、マーカ座標データ、および加速度データ)は、一時的にメモリ43に格納される。これらの各データは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の無線コントローラモジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変換されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の無線コントローラモジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいてゲーム処理を行う。なお、通信部36から無線コントローラモジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の無線コントローラモジュール19へ出力する。
【0063】
上記コントローラ5を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5によって画面上の任意の位置を指示する操作、および、コントローラ5自体を動かす操作を行うことができる。図8は、コントローラ5を用いてゲーム操作を行うときの様子を示す図解図である。本実施形態では、プレイヤは、図8に示すように、コントローラ5を動かす(具体的には、コントローラ5の姿勢を変化させる)ゲーム操作、および、コントローラ5によってテレビ2の画面上の位置Pを指し示すゲーム操作を行うことができる。
【0064】
なお、図8に示す位置Pは、コントローラ5によって指し示される画面上の位置であり、理想的には、コントローラ5の前端部から上記長手方向に延ばした直線とテレビ2の画面とが交わる位置である。詳細は後述するが、ゲーム装置3は、上述したマーカ座標に基づいて位置Pを算出する。ただし、ゲーム装置3によって算出される位置は厳密に当該位置である必要はなく、ゲーム装置3はその周辺の位置を算出することができればよい。以下では、コントローラ5によって指し示される画面上の位置(図8に示す位置P)を「ポインティング位置」と呼ぶ。
【0065】
(ゲーム装置における処理の概要)
以下、図9および図10を参照して、ゲーム装置3で実行されるゲーム処理の概要について説明する。以下では、プレイヤが仮想の3次元空間内において標的となるオブジェクトを射撃するゲームを例としてゲーム処理を説明する。
【0066】
図9は、本実施形態におけるゲーム処理によって表示されるゲーム画面の一例を示す図である。図9に示すように、本ゲームにおいて構築される仮想の3次元空間(ゲーム空間)には、標的オブジェクト51〜54、および矢オブジェクト55が配置される。また、テレビ2の画面には、3次元空間の画像とともに照準56の画像が表示される。本ゲームは、矢オブジェクト55等の移動オブジェクトを射出して標的オブジェクト51〜54に命中させることを目的とした射撃ゲームである。
【0067】
標的オブジェクト51〜54は、射撃の標的となるオブジェクトである。図9では、標的オブジェクト51〜54は的を模したオブジェクトであるが、標的オブジェクトの大きさおよび形状はどのようなものであってもよい。例えば、他の実施形態では、標的オブジェクトはモンスターのオブジェクトであってもよい。また、標的オブジェクト51〜54はゲーム空間内を移動してもよい。
【0068】
矢オブジェクト55は、武器オブジェクトから射出され、ゲーム空間を移動する移動オブジェクトの一例である。図9では、武器オブジェクトを弓オブジェクト(図10に示す弓オブジェクト58)とし、移動オブジェクトを矢オブジェクト55とするが、武器オブジェクトおよび移動オブジェクトはどのようなものであってもよい。例えば、武器オブジェクトは銃のオブジェクトで、移動オブジェクトは弾丸のオブジェクトであってもよい。なお、本実施形態では、プレイヤオブジェクトが使用可能な武器オブジェクトは複数あるものとする。つまり、プレイヤは、複数の武器オブジェクトから1つを選択して射撃を行うことができる。
【0069】
照準56は、矢オブジェクト55を射出する際の照準を表す。照準56は、矢オブジェクトが射出される方向(射出方向)を示している。すなわち、矢オブジェクト55は、3次元のゲーム空間における武器オブジェクトの位置から照準56により指定される(ゲーム空間内の)位置に向かって射出される。また、本実施形態では、2次元のゲーム画像上における照準56の位置は、上記ポインティング位置に決定される。したがって、本実施形態では、コントローラ5が指し示す画面上の位置(ポインティング)によって矢オブジェクト55が射出される方向が決まるので、プレイヤは、コントローラ5自体を動かしてコントローラ5が指し示す画面上の位置を変更する操作を行うことによって、矢オブジェクト55の射出方向を操作することができる。
【0070】
なお、図9では、矢オブジェクト55を射出する弓オブジェクトや、弓オブジェクトを持つプレイヤキャラクタ(図10参照)が表示されていないが、他の実施形態においては、これら弓オブジェクトおよびプレイヤキャラクタが表示されていてもよい。
【0071】
また、本実施形態では、図9に示されるように、矢オブジェクト55の射出方向が画面の手前側から奥側に向かう方向となるように、ゲーム空間の画像が生成される。つまり、ゲーム空間に設定される仮想カメラの視線方向は、当該視線方向と矢オブジェクト55の射出方向が同じ側を向くように(視線方向と射出方向とのなす角が鋭角となるように)設定される。
【0072】
射撃ゲームをプレイする際、プレイヤは、コントローラ5を操作して照準56の位置を所望の位置にした状態で、例えばAボタン32dを押下することによって射撃指示を行う。射撃指示が行われたことに応じて、弓オブジェクトから矢オブジェクト55が射出される。つまり、矢オブジェクト55が生成され、生成された矢オブジェクト55が上記弓オブジェクトの位置から上記射出方向にゲーム空間を移動していく。
【0073】
上記射撃指示に応じて射出された矢オブジェクト55が標的オブジェクト51〜54のいずれかに命中したか否かは、各オブジェクト51〜55に設定される接触判定領域を用いて行われる。具体的には、矢オブジェクト55が標的オブジェクト51〜54のいずれかに命中したか否か、すなわち、矢オブジェクト55と標的オブジェクト51〜54のいずれかとが接触したか否かは、矢オブジェクト55に設定される接触判定領域と、各標的オブジェクト51〜54にそれぞれ設定される接触判定領域とが互いに接触したか否かによって判定される。ここで、接触判定領域とは、2つのオブジェクトが互いに接触したか否かを判定するためにオブジェクト毎に設定される領域である。本実施形態では、接触判定領域の形状は球形であるとし、1つのオブジェクトには1以上の球形の接触判定領域が設定される。また、オブジェクトに設定される接触判定領域の位置は、当該オブジェクトの位置に従って決められる。オブジェクト同士が接触しているか否かの判定処理(接触判定処理)は、ゲーム画像が生成する度に実行される、すなわち、毎フレーム実行される。
【0074】
図10は、矢オブジェクトの接触判定領域が変化する様子を示す図である。図10においては、矢オブジェクト55の進行方向に対して垂直な方向から見たゲーム空間が示されている。図10においては、プレイヤオブジェクト59が持つ弓オブジェクト58から射出された直後の位置における矢オブジェクト55およびそれにそれに設定される接触判定領域57を点線で示し、射出されてからある程度移動した矢オブジェクト55およびそれに設定される接触判定領域57を実線で示している。
【0075】
図10に示されるように、射出直後の位置における矢オブジェクト55の接触判定領域57は比較的小さい半径の球形であるのに対して、射出されてからある程度移動した矢オブジェクト55の接触判定領域57は比較的大きい半径の球形となっている。このように、本実施形態においては、矢オブジェクト55の接触判定領域57は、矢オブジェクト55の移動距離に応じて大きくなるように設定される。したがって、本実施形態によれば、矢オブジェクト55は、射出された位置(射出位置)から離れるほど標的オブジェクトに接触しやすくなる。つまり、射出位置から離れるほど矢は標的に命中しやすくなる。
【0076】
ここで、仮想カメラの視線方向と矢オブジェクトの射出方向とが同じ側を向くような射撃ゲーム(図9参照)では、射出位置からの距離が遠い標的オブジェクト(例えば図9に示す標的オブジェクト54)は、射出位置からの距離が近い標的オブジェクト(例えば図9に示す標的オブジェクト51)に比べて相対的に小さく表示されるので、矢オブジェクトを命中させることが難しい。そこで、本実施形態では、矢オブジェクトの接触判定領域を移動距離に応じて大きくすることで、矢を命中させる難易度を下げるようにしている。これによれば、初級者やゲームが苦手なプレイヤでも矢を的に命中させやすくなる。また、射出位置からの距離が近い位置では接触判定領域の大きさは大きくないので、ゲームが簡単になりすぎることがなく、ゲームの難易度を適度なレベルに設定することができる。また、他の実施形態においては、矢オブジェクトの接触判定領域を移動距離に応じて小さくすることも可能であり、これによれば、ゲームの難易度を上げることができる。このように、本発明によれば、矢オブジェクトの接触判定領域を移動距離に応じて変化させることで、射撃ゲームの難易度を容易に変更することができる。
【0077】
また、本実施形態においては、矢オブジェクトの接触判定領域を変化させるので、接触判定領域を変化させる処理の処理負荷は、標的オブジェクトの数に依存しない。これによれば、標的オブジェクトの数によってシステムの処理負荷が大きく変動することなく、ゲーム装置3は、安定した処理負荷でゲーム処理を実行することができる。
【0078】
(ゲーム処理の詳細)
以下、図11〜図15を参照して、本実施形態におけるゲーム処理の詳細について説明する。まず、本実施形態におけるゲーム処理において用いられるデータについて説明する。図11は、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11e)に記憶される主なデータを示す図である。図11に示すように、メインメモリには、ゲームプログラム60、操作データ61、およびゲーム処理用データ64等が記憶される。
【0079】
ゲームプログラム60は、後述するゲーム処理(図14)をゲーム装置3のCPU10に実行させるためのプログラムである。ゲームプログラム60は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。
【0080】
操作データ61は、コントローラ5からゲーム装置3へ送信されてきてメインメモリに記憶される操作データである。操作データ61には、マーカ座標データ62および操作ボタンデータ63が含まれる。マーカ座標データ62は、上記撮像情報演算部35によって算出される上記マーカ座標を示すデータである。操作ボタンデータ63は、各操作ボタン32a〜32iに対する入力状態を示すデータである。なお、マーカ座標データ62および操作ボタンデータ63の他、操作データ61には、加速度センサ37によって検出される加速度ベクトルを示す加速度データが含まれる。上述したように、操作データはコントローラ5からゲーム装置3へ1/200秒に1回の割合で送信されるので、メインメモリに記憶される操作データはこの割合で更新される。メインメモリには、最新の(最後に取得された)操作データのみが記憶されればよい。
【0081】
ゲーム処理用データ64は、後述するゲーム処理(図14)において用いられるデータである。ゲーム処理用データ64は、武器リストデータ65、現在武器データ66、移動オブジェクトデータ67、および標的データ75を含む。なお、ゲーム処理用データ64は、図11に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータを含む。
【0082】
武器リストデータ65は、武器オブジェクトに関する各種情報を示すデータである。本実施形態では、プレイヤオブジェクトが使用可能な武器は複数あり、それぞれ性能が異なっている。武器リストデータ65は、光ディスク4にゲームプログラムとともに予め記憶されており、ゲーム開始時等適宜のタイミングで光ディスク4から読み出される。図12は、武器リストデータ65の内容の一例を示す図である。図12に示されるように、本実施形態においては、武器リストデータ65は、各武器オブジェクトについてそれぞれ、武器ID、最大飛距離、速度、および基準半径の各情報を関連付けたデータである。武器IDとは、各武器オブジェクトを識別するための番号であり、武器オブジェクトに固有の番号である。最大飛距離とは、その武器オブジェクトによって移動オブジェクトを射出することができる最大の飛距離を示す情報である。速度とは、その武器オブジェクトによって射出された移動オブジェクトの速度(例えば1フレーム時間当たりに移動する距離)を示す情報である。なお、本実施形態では、移動オブジェクトは等速で移動するものとする。なお、他の実施形態においては、移動オブジェクトの速度は次第に減衰していってもよい。このとき、武器リストデータ65は、武器オブジェクトに対して移動オブジェクトの初速度および減速度合いを関連付けていてもよい。また、基準半径とは、その武器オブジェクトによって射出された移動オブジェクトに設定される接触判定領域の、射出時における半径である。
【0083】
現在武器データ66は、現在使用している武器オブジェクトを示すデータである。具体的には、現在武器データ66は現在使用している武器オブジェクトの武器IDを示す。本実施形態では、プレイヤオブジェクト(プレイヤ)は、武器リストデータ65により示される各武器オブジェクトのうちの1つを使用することが可能であるとする。なお、ゲーム装置3は、使用する武器オブジェクトをプレイヤにゲーム前に選択させるようにしてもよいし、使用する武器オブジェクトをゲーム途中に変更することができるようにしてもよい。
【0084】
移動オブジェクトデータ67は、ゲーム空間に配置されている各移動オブジェクトに関する各種情報を示すデータである。図13は、移動オブジェクトデータ67の内容の一例を示す図である。図13に示されるように、移動オブジェクトデータ67は、ゲーム空間に配置されている各移動オブジェクトについてそれぞれ、オブジェクトIDデータ68、武器IDデータ69、位置データ70、経過時間データ71、移動距離データ72、判定領域半径データ73、および射出方向データ74を含んでいる。1つの移動オブジェクトに関するこれらのデータは、互いに関連付けられて記憶されている。
【0085】
オブジェクトIDデータ68は、ゲーム空間に配置されている移動オブジェクトを識別するための番号であり、移動オブジェクトに固有の番号を示す。武器IDデータは、移動オブジェクトが射出された武器オブジェクトの武器IDを示す。位置データ70は、移動オブジェクトのゲーム空間における位置を示す。この位置は、上記ワールド座標系における座標値により表される。経過時間データ71は、移動オブジェクトが射出されてから経過した時間を示す。移動距離データ72は、移動オブジェクトが射出されてからゲーム空間を移動した距離を示す。判定領域半径データ73は、移動オブジェクトに設定される接触判定領域の現在の半径を示す。射出方向データ74は、移動オブジェクトが射出される方向を示す。この方向は、ゲーム空間における方向を示す3次元のベクトル(単位ベクトル)で表現される。
【0086】
標的データ75は、ゲーム空間に配置されている各標的オブジェクトに関する各種情報を示すデータである。具体的には、標的データ75は、各標的オブジェクトについて、標的オブジェクトのゲーム空間における位置を示す。
【0087】
次に、ゲーム装置3において行われるゲーム処理の詳細を、図14および図15を用いて説明する。図14は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図14に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0088】
図14に示すステップS1において、まずCPU10は、ゲームに関する初期処理を実行する。具体的には、CPU10は、プレイヤオブジェクト等のゲームキャラクタのデータ、および、3次元のゲーム空間を構築するための地形オブジェクトのデータ等を光ディスク4から読み込む。そして、読み込んだデータを用いて当該フィールドの3次元空間を構築し、プレイヤオブジェクトや他のオブジェクトを当該フィールドの初期位置に配置する処理等を実行する。このとき、標的データ75は、各標的オブジェクトの初期位置を示すように設定されてメインメモリに記憶される。また、本実施形態では、初期化処理において、武器リストデータ65がゲームプログラムから読み出されてメインメモリに記憶される。また、初期化処理において、ゲーム開始時に使用される武器が設定される。すなわち、予め定められた所定の武器オブジェクトを示すデータが現在武器データ66としてメインメモリに記憶される。なお、他の実施形態においては、ゲーム装置3は、ゲーム開始時に使用される武器をプレイヤに選択させるようにしてもよい。
【0089】
上記ステップS1の後、ステップS2〜S10の処理ループが、ゲームが実行される間繰り返し実行される。なお、1回の当該処理ループは、1フレーム時間(例えば1/60秒)に1回の割合で実行される。
【0090】
ステップS2において、CPU10は操作データを取得する。すなわち、コントローラ5から送信されてくる操作データがゲーム装置3で受信され、メインメモリに記憶されるので、CPU10は、操作データ61に含まれるマーカ座標データ62および操作ボタンデータ63をメインメモリから読み出す。ステップS2の後、ステップS3の処理が実行される。
【0091】
ステップS3において、CPU10は、フィールド上のオブジェクトを動作させる。つまり、プレイヤによるコントローラ5に対する操作に従ってプレイヤオブジェクトを動作させたり、予め定められたアルゴリズムに従って標的オブジェクトを移動させたりする。なお、標的オブジェクトが移動される場合には、メインメモリに記憶されている標的データ75の内容が更新される。すなわち、移動後の各標的オブジェクトの位置を示すデータが標的データ75としてメインメモリに記憶される。ステップS3の後、ステップS4の処理が実行される。
【0092】
ステップS4において、CPU10は、プレイヤによって武器変更指示が行われたか否かを判定する。武器変更指示とは、プレイヤオブジェクトが使用する武器を変更するための指示である。本実施形態では、プレイヤは、所定のメニュー表示ボタン(例えばマイナスボタン32e)を押下することによってメニュー画面を表示させた(ステップS4)上で、メニュー画面において例えば十字ボタン32aおよびAボタン32dを用いて武器を選択する(後述するステップS5)ことによって武器を変更することができる。具体的には、ステップS4においてCPU10は、ステップS2で取得した操作ボタンデータ63を参照して、上記メニュー表示ボタンが押下されたか否かを判定する。ステップS4の判定結果が肯定である場合、ステップS5の処理が実行される。一方、ステップS4の判定結果が否定である場合、ステップS5の処理がスキップされて後述するステップS6の処理が実行される。
【0093】
ステップS5において、CPU10は、プレイヤオブジェクトが使用する武器を変更する。具体的には、CPU10はまず、使用可能な武器のリストを含むメニュー画面をテレビ2に表示する。そして、メインメモリから操作データを所定時間間隔で取得することによって、武器を選択する操作を受け付ける。プレイヤは、メニュー画面が表示されている状態において、メニュー画面に含まれる武器のリストの中から武器を十字ボタン32aによって選択するとともに、所望の武器を選択した状態でAボタン32dを押下することによって使用する武器を決定する。プレイヤによって武器が決定されたことに応じて、CPU10は、プレイヤオブジェクトが使用する武器を変更する。すなわち、決定された武器を示すデータを現在武器データ66としてメインメモリに記憶する。以上によって、プレイヤオブジェクトが使用する武器が変更されたこととなる。
【0094】
ステップS6において、CPU10は、移動制御処理を実行する。移動制御処理は、ゲーム空間に配置されている移動オブジェクトを移動させるとともに、移動オブジェクトの接触判定領域を当該移動オブジェクトの移動距離に応じて拡大するための処理である。以下、図15を参照して、移動制御処理の詳細を説明する。
【0095】
図15は、図14に示す移動制御処理(ステップS6)の流れを示すフローチャートである。移動制御処理においては、まずステップS11において、CPU10は、射撃指示が行われたか否かを判定する。射撃指示は、武器オブジェクトから移動オブジェクトを射出させる指示である。本実施形態では、プレイヤは、所定の射撃ボタン(例えばAボタン32d)を押下することによって射撃指示を行うことができるものとする。したがって、CPU10は、ステップS2で取得した操作ボタンデータ63を参照して、上記射撃ボタンが押下されたか否かを判定する。ステップS11の判定結果が肯定である場合、ステップS12の処理が実行される。一方、ステップS11の判定結果が否定である場合、ステップS12の処理がスキップされて後述するステップS13の処理が実行される。
【0096】
ステップS12において、CPU10は、新たな移動オブジェクトを生成する。具体的には、ゲーム空間内における武器オブジェクト近傍の所定位置に移動オブジェクトを新たに配置する。また、CPU10は、メインメモリに記憶されている移動オブジェクトデータ67の内容を更新する。具体的には、移動オブジェクトデータ67には、互いに関連付けられるオブジェクトIDデータ、武器IDデータ、位置データ、経過時間データ、移動距離データ、半径データ、および射出方向データがそれぞれ1つずつ追加される。以下、これら各データの内容、すなわち、新たな移動オブジェクトに関して設定される各種情報の内容について説明する。
【0097】
新たな移動オブジェクトに関して設定される各種情報は、それぞれ次のように設定される。すなわち、新たな移動オブジェクトのオブジェクトIDは、移動オブジェクトデータ67にすでに含まれている他のオブジェクトIDデータにより示される番号とは異なる番号となるように設定される。新たな移動オブジェクトの武器IDは、現在武器データ66により示される番号と同じ番号に設定される。新たな移動オブジェクトの位置は、現在の武器オブジェクトの位置に基づいて決められる所定の位置となるように設定される。この所定の位置が移動オブジェクトが射出される位置(射出位置)となる。新たな移動オブジェクトの経過時間および移動距離は、それぞれ“0”に設定される。新たな移動オブジェクトに設定される接触判定領域の半径は、射出時点の半径、すなわち、基準半径の大きさに設定される。なお、この基準半径の値は、武器リストデータ65において、現在武器データ66により示される武器オブジェクトに設定されている基準半径の値である。また、新たな移動オブジェクトの射出方向は、射撃指示が行われた時点におけるポインティング位置に基づいて決められる。
【0098】
以下、射出方向の決定方法について説明する前に、まずポインティング位置の算出方法について説明する。コントローラ5によって指し示される画面上の位置であるポインティング位置は、マーカ座標データ62に基づいて算出される。具体的には、まずCPU10は、メインメモリに記憶されているマーカ座標データ62により示される2つのマーカ座標の中点を算出する。この中点の位置は、撮像画像に対応する平面上の位置を表すためのxy座標系によって表現される。このxy座標系は、撮像画像の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とするものとする。次に、CPU10は、当該中点の位置を示す座標を、テレビ2の画面上の位置を表すための座標系(x’y’座標系)の座標に変換する。なお、x’y’座標系が、画面の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とするものとすれば、上記変換は次のように行うことができる。すなわち、中点座標のx成分の正負を反転させて所定の割合(例えば、撮像画像のx軸方向の長さを、テレビ2の画面のx’軸方向の長さに一致させる割合)でスケーリングすることによって、ポインティング位置のx’成分を得ることができる。また、中点座標のy成分を所定の割合(例えば、撮像画像のy軸方向の長さを、テレビ2の画面のy’軸方向の長さに一致させる割合)でスケーリングすることによって、指示位置のy’成分を得ることができる。以上のようにして算出されたx’y’座標値により示される位置がポインティング位置となる。また、より正確なポインティング位置の算出方法の例としては、上記2つのマーカ座標を結ぶベクトルがy軸に平行になるように撮像画像の中央を中心として2つのマーカ座標の中点を回転する処理を行い、回転後の当該中点に対して上記変換処理を行う。このような回転による補正処理を行うことによって、コントローラ5が傾いている場合等にも、ポインティング位置を正確に算出することができる。なお、本実施形態では、算出されたポインティング位置に照準の画像が表示される。
【0099】
射出方向は、以上のようにして算出されたポインティング位置に基づいて算出される。具体的には、まず、CPU10は、ポインティング位置に基づいて目標位置を算出する。目標位置は、ポインティング位置に対応するゲーム空間内の位置である。さらに、CPU10は、上記射出位置から目標位置への方向を射出方向として算出する。算出された射出方向を示すデータは、移動オブジェクトデータ67に含まれる射出方向データとしてメインメモリに記憶される。なお、ここでは、射出方向を示すベクトルは単位ベクトルに正規化され、正規化後のベクトルを示すデータが射出方向データとして記憶される。
【0100】
なお、本実施形態では、プレイヤがコントローラ5によって画面上の位置を指し示す操作に従って射出方向を決定したが、射出方向は、プレイヤによる他の操作に従って決められてもよい。例えば、ゲーム装置3は、十字キー32aに対する操作に従って射出方向を変化させる(画面上の照準を移動させる)ようにしてもよい。したがって、コントローラ5は、撮像情報演算部35および加速度センサ37を必ずしも備えている必要はなく、一般的な操作ボタンのみを備える構成であっても構わない。また、他の実施形態においては、射出方向(または照準の位置)がゲーム装置3によって自動的に動かされてもよい。
【0101】
上記ステップS12によって、新たに射出される移動オブジェクトが生成され、当該移動オブジェクトに関する各種情報を示すデータが移動オブジェクトデータ67に追加されたこととなる。ステップS12の後、ステップS13の処理が実行される。
【0102】
ステップS13において、CPU10は、移動オブジェクトの経過時間を更新する。すなわち、ゲーム空間に配置されている各移動オブジェクトについて、経過時間が所定時間だけ加算される。本実施形態では1フレーム時間に1回の割合でステップS13の処理が実行されるので、上記所定時間は1フレーム時間である。具体的には、CPU10は、移動オブジェクトデータ67に含まれる経過時間データの内容を、現在の値から上記所定時間だけ加算した値に変更する。CPU10は、ゲーム空間に存在する全ての移動オブジェクトについて経過時間を更新する処理を行う。ステップS13の後、ステップS14の処理が実行される。
【0103】
ステップS14において、CPU10は移動オブジェクトを移動させる。移動オブジェクトは、当該移動オブジェクトに対応する射出方向に、当該移動オブジェクトに対応する速度で移動する。ここで、「移動オブジェクトに対応する射出方向」とは、移動オブジェクトデータ67において当該移動オブジェクトに関連付けられている射出方向データにより示される射出方向である。また、「移動オブジェクトに対応する速度」とは、武器リストデータ65において当該移動オブジェクトに対応する武器オブジェクトに関連付けられている速度である。ステップS14においては、ゲーム空間に存在する全ての移動オブジェクトが移動させられる。また、移動オブジェクトが移動される結果、移動オブジェクトデータ67に含まれる位置データの内容が更新される。すなわち、位置データの内容は、移動後の移動オブジェクトの位置を示す内容に更新される。
【0104】
上記ステップS14の処理によって、ゲーム空間に存在する各移動オブジェクトが移動される。なお、上記ステップS14では、各移動オブジェクトが等速直線運動を行うように移動オブジェクトの移動が制御されるが、他の実施形態では、ゲーム装置3は、重力方向や空気抵抗等の物理条件を考慮して移動オブジェクトの移動制御を実行してもよい。例えば、移動オブジェクトの速度が次第に減少していくように当該速度を制御してもよいし、移動オブジェクトの移動軌跡が放物線を描くように射出方向を制御してもよい。このとき、移動オブジェクトの射出方向および速度は毎フレーム更新されてもよい。なお、移動オブジェクトの速度を変化させる場合には、ゲーム装置3は、現在の速度を示すデータを移動オブジェクトデータ67に含めて記憶しておく。
【0105】
ステップS14の次のステップS15において、CPU10は、移動オブジェクトの移動距離を算出する。移動オブジェクトの移動距離は、当該移動オブジェクトの1フレーム毎の移動距離を累積することによって得ることができる。具体的には、移動オブジェクトの移動距離は、移動オブジェクトデータ67に含まれている移動距離データにより示される移動距離に、今回のループ処理におけるステップS14で移動された当該移動オブジェクトの移動距離を加算することによって算出される。算出された結果得られた移動距離を示すデータが、新たな移動距離データとしてメインメモリに記憶される。ステップS15においては、ゲーム空間に存在する全ての移動オブジェクトについて移動距離が算出される。なお、本実施形態のように移動オブジェクトが等速直線運動を行う場合には、移動オブジェクトの速度と移動オブジェクトの経過時間とを乗算することによって移動距離を算出してもよいし、移動オブジェクトの射出位置を記憶しておいて現在の位置と射出位置との差を算出することによって移動距離を算出してもよい。ステップS15の後、ステップS16の処理が実行される。
【0106】
ステップS16において、CPU10は、移動距離が最大飛距離を超えた移動オブジェクトをゲーム空間から削除する。すなわち、CPU10は、移動オブジェクトの現在の移動距離と、当該移動オブジェクトに設定されている最大飛距離とを比較し、当該移動距離が当該最大飛距離よりも大きい場合、当該移動オブジェクトをゲーム空間から削除する。ここで、移動オブジェクトの現在の移動距離は、移動オブジェクトデータ67に含まれる移動距離データにより示されている。また、移動オブジェクトに設定されている最大飛距離は、移動オブジェクトデータ67に含まれる武器IDデータと武器リストデータ65とを参照することにより知ることができる。すなわち、移動オブジェクトに設定される最大飛距離の値は、武器リストデータ65において、当該移動オブジェクトに対応する武器オブジェクトに関連付けられている最大飛距離の値である。ステップS16においては、ゲーム空間に存在する全ての移動オブジェクトについて移動距離と最大飛距離とが比較され、比較結果に応じて移動オブジェクトが削除される。なお、移動オブジェクトが削除される場合には、CPU10は、削除に応じて移動オブジェクトデータ67の内容を更新する。すなわち、削除された移動オブジェクトに関する各種情報を示すデータを移動オブジェクトデータ67から削除する。ステップS16の後、ステップS17の処理が実行される。
【0107】
以上のステップS15およびS16のように、本実施形態では、ゲーム装置3は、移動オブジェクトをゲーム空間から削除するために、移動オブジェクトの移動距離を算出し(ステップS15)、算出された移動距離が最大飛距離よりも大きい場合に移動オブジェクトを削除した(ステップS16)。ここで、他の実施形態においては、ゲーム装置3は、移動オブジェクトをゲーム空間から削除するために、移動オブジェクトの経過時間を用いてもよい。すなわち、経過時間が予め定められた制限時間を超えた移動オブジェクトをゲーム空間から削除するようにしてもよい。なお、この制限時間は、本実施形態における最大飛距離の情報と同様、武器オブジェクト毎に予め設定されてもよい。
【0108】
ステップS17において、CPU10は、移動オブジェクトの移動距離に基づいて接触判定領域の倍率を算出する。具体的には、本実施形態では、移動オブジェクトの移動によって値が変化する変数として、移動オブジェクトの経過時間を用いる。つまり、本実施形態では、経過時間に基づいて接触判定領域の倍率を算出する。この倍率は、移動距離が大きくなるほど接触判定領域が大きくなるように、すなわち、経過時間が長いほど倍率が大きくなるように算出される。例えば図12および図13の例では、オブジェクトIDが“001”である移動オブジェクトおよび“002”である移動オブジェクトは、武器IDが“001”である武器オブジェクトから射出される移動オブジェクトであり、基準半径が“2”である。ここで、オブジェクトIDが“001”である移動オブジェクトは、経過時間が“1”であり、半径は基準半径のままの“2”であるのに対して、オブジェクトIDが“002”である移動オブジェクトは、経過時間が“2”であり、半径は基準半径のままの“2.1”である。このように、接触判定領域の倍率は、経過時間(移動距離)が大きくなるほど接触判定領域が大きくなるように算出される。CPU10は、ゲーム空間に存在する全ての移動オブジェクトについて倍率を算出し、算出された各倍率を示すデータをメインメモリに記憶しておく。ステップS17の後、ステップS18の処理が実行される。
【0109】
なお、上記ステップS17においては、ゲーム装置3は、移動オブジェクトの移動によって値が変化する変数として経過時間を用いて上記倍率を算出したが、他の実施形態においては、ステップS15で算出される移動距離を用いて上記倍率を算出するようにしてもよい。その他、例えば移動オブジェクトの速度が、予め定められた初速度から移動オブジェクトの移動に伴って次第に減速していくように制御される場合には、当該速度によっても移動オブジェクトの移動距離を知ることができる。したがって、この場合、移動オブジェクトの速度を上記変数として用いてもよい。
【0110】
ステップS18において、CPU10は、移動オブジェクトに対して接触判定領域を設定する。本実施形態では、移動オブジェクトに設定される球形の接触判定領域は、当該接触判定領域の基準半径を、ステップS17で算出された倍率で拡大することによって生成される。つまり、接触判定領域の大きさは、移動オブジェクトに設定される接触判定領域の基準半径と、ステップS17で算出された倍率とに基づいて算出される。具体的には、球形である接触判定領域の半径は、上記基準半径に上記倍率を乗算することによって算出される。ここで、上記基準半径は、移動オブジェクトデータ67に含まれる武器IDデータと武器リストデータ65とを参照することにより知ることができる。すなわち、移動オブジェクトに設定される接触判定領域の基準半径の値は、武器リストデータ65において、当該移動オブジェクトに対応する武器オブジェクトに関連付けられている基準半径の値である。また、接触判定領域の位置は、移動オブジェクトの位置に基づいて決められる。具体的には、移動オブジェクトと接触判定領域とが予め定められた位置関係となるように、接触判定領域の位置が決定される。例えば、移動オブジェクトが矢オブジェクトである場合、CPU10は、鏃の位置を中心位置として球形の接触判定領域を配置する。上記ステップS18においては、ゲーム空間に存在する全ての移動オブジェクトについて接触判定領域が設定される。ステップS18の後、CPU10は図15に示す移動制御処理を終了する。
【0111】
なお、上記移動制御処理におけるステップS13〜S18の処理は、移動オブジェクトがゲーム空間に存在しない場合には、実行を省略してもよい。すなわち、CPU10は、ステップS12とステップS13との間に、移動オブジェクトがゲーム空間に存在するか否かを判定するステップをさらに実行するようにしてもよい。そして、当該ステップにおける判定結果が肯定である場合のみ、ステップS13〜S18の処理を実行するようにしてもよい。
【0112】
図14の説明に戻り、ステップS7において、CPU10は、移動オブジェクトと標的オブジェクトとが接触したか否かを判定する。上述したように、ステップS7の接触判定処理は、移動オブジェクトおよび標的オブジェクトに設定された接触判定領域を用いて行われる。すなわち、移動オブジェクトの接触判定領域と標的オブジェクトの接触判定領域とが接触する場合、移動オブジェクトと標的オブジェクトとが接触したと判定される。なお、本実施形態では、標的オブジェクトに設定される接触判定領域の大きさおよび形状は固定的に定められて変化しないものとする。標的オブジェクトに設定される接触判定領域の大きさおよび形状はどのようなものであってもよく、球形以外にも円柱形であってもよい。また、1つの標的オブジェクトに対して複数の接触判定領域が設定されてもよい。
【0113】
上記ステップS7において、CPU10は、移動オブジェクトと標的オブジェクトとの全ての組み合わせについて接触判定処理を行い、接触したと判定される組み合わせが1つでもある場合、移動オブジェクトと標的オブジェクトとが接触したと判定する。ステップS7の判定結果が肯定である場合、ステップS8の処理が実行される。一方、ステップS7の判定結果が否定である場合、ステップS8の処理がスキップされて後述するステップS9の処理が実行される。
【0114】
ステップS8において、CPU10は、ステップS7で接触したと判定された移動オブジェクトと標的オブジェクトとの組に対して接触処理を実行する。接触処理は、例えば、移動オブジェクトをゲーム空間から削除したり、標的オブジェクトが破壊されるアニメーションを表示させたり、(ゲームにおいて得点が設定されている場合には)得点を加算したりする処理である。なお、移動オブジェクトが削除される場合には、CPU10は、削除に応じて移動オブジェクトデータ67の内容を更新する。すなわち、削除された移動オブジェクトに関する各種情報を示すデータを移動オブジェクトデータ67から削除する。
【0115】
ステップS9において、CPU10は、テレビ2にゲーム画像を表示する。すなわち、CPU10(およびGPU11b)は、ゲーム空間内に設定される仮想カメラからゲーム空間を見たときの画像を生成する。さらに、生成した画像における上記ポインティング位置に照準の画像を重ねてテレビ2の画面に表示させる。このとき、前述したように、仮想カメラは、仮想カメラの視線方向が現時点での射出方向と同じ側を向くように設定される。
【0116】
ステップS10において、CPU10は、ゲームを終了するか否かを判定する。ステップS10の判定は、例えば、ゲームがクリアされたか否か、ゲームオーバーとなったか否か、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップS10の判定結果が否定である場合、ステップS2の処理が再度実行される。以降、ステップS10でゲームを終了すると判定されるまで、ステップS2〜S10の処理が繰り返し実行される。一方、ステップS10の判定結果が肯定である場合、CPU10は、図14に示すゲーム処理を終了する。以上で、ゲーム処理の説明を終了する。
【0117】
以上のように、本実施形態によれば、移動オブジェクトに設定される接触判定領域は、移動オブジェクトの移動距離に応じて次第に大きくなる(ステップS17およびS18)。これによれば、射出位置からの距離が遠い標的オブジェクトであっても移動オブジェクトを命中させることが容易になるので、初級者やゲームが苦手なプレイヤでも移動オブジェクトを標的オブジェクトに命中させることができるようになる。また、本実施形態においては、接触判定領域の大きさが変化するのは移動オブジェクトであるので、接触判定領域を変化させる処理の処理負荷は、標的オブジェクトの数に依存しない。したがって、標的オブジェクトの数によってシステムの処理負荷が大きく変動することがなく、ゲーム装置3における処理負荷を安定させることができる。
【0118】
なお、上記実施形態においては、移動オブジェクトの接触判定領域の半径を、移動オブジェクトの移動距離に基づいて算出される倍率を用いて算出した。ここで、他の実施形態においては、接触判定領域の半径は、所定時間(例えば1フレーム時間)が経過する毎に、予め定められた定数(例えば0.2)を基準半径に加算していくことによって算出されてもよい。また、この定数は、武器オブジェクトの種類毎に設定されてもよい。
【0119】
なお、上記実施形態においては、移動オブジェクトの接触判定領域を球形であるとし、移動距離に応じて半径を変化させる場合を例として説明した。ここで、他の実施形態においては、接触判定領域の形状は球形である必要はなく、円柱形や楕円形等他の形状であってもよい。また、他の実施形態においては、移動オブジェクトの接触判定領域の形状を移動距離に応じて変化させるようにしてもよい。例えば、ゲーム装置3は、移動オブジェクトの移動距離が所定値以下である場合、移動オブジェクトの接触判定領域を移動オブジェクトと同じ形状とし、当該移動距離が所定値よりも大きい場合、当該接触判定領域を球形にするようにしてもよい。これによれば、射出位置から(相対的に)近い範囲では正確に接触判定を行う一方、射出位置から(相対的に)遠い範囲では簡易な処理で接触判定を簡略化することができる。また、1つの移動オブジェクトに設定される接触判定領域は1つに限らず、複数であってもよい。例えば、上記実施形態における矢オブジェクトに対しては、球形の接触判定領域を複数個並べて配置するようにしてもよい。さらに、他の実施形態においては、1つの移動オブジェクトに設定される接触判定領域の数を、当該移動オブジェクトの移動距離に応じて変化させるようにしてもよい。例えば、移動距離が大きくなるほど接触判定領域の数を増加させるようにすれば、上記実施形態と同様、射出位置からの距離が遠い標的オブジェクトであっても移動オブジェクトを命中させることが容易になる。
【0120】
なお、標的オブジェクトに対する移動オブジェクトの命中しやすさを向上させる場合には、ゲーム装置3は、移動オブジェクトの移動方向から見た場合における接触判定領域の面積が大きくなるように、当該接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させることが好ましい。なお、上記面積とは、移動方向から、上記移動方向に垂直な面に対して接触判定領域を投影した場合における、投影面上に投影された接触判定領域の面積である。
【0121】
また、他の実施形態においては、移動オブジェクトの接触判定領域の大きさ、形状、または数に関する変化度合いを、当該移動オブジェクトの種類(移動オブジェクトに対応する武器オブジェクトの種類)によって、決定するようにしてもよい。例えば、上記実施形態において、武器オブジェクト毎に接触判定領域の半径の変化度合いを設定しておくようにしてもよい。すなわち、武器リストデータにおいて、各武器オブジェクトに対して上記変化度合いを関連付けておく。この変化度合いとは、例えば、「移動距離がa増加する毎に倍率をb増加する」といった情報である。ゲーム処理においては、上記ステップS17において、CPU10は、移動オブジェクトの倍率を算出する際、当該移動オブジェクトに対応する武器オブジェクトについて設定されている変化度合いに従って当該倍率を算出する。これによれば、武器オブジェクト毎に変化度合いを自由に設定することができるので、武器オブジェクト毎に命中の難易度を調整することができる。
【0122】
また、他の実施形態においては、移動オブジェクトの接触判定領域の大きさ、形状、および数のうち少なくとも1つを、当該移動オブジェクトの移動距離に加えて、他の条件(ゲームの状況)に応じて変化させるようにしてもよい。例えば、プレイヤオブジェクトが標的オブジェクトに対して相対的に移動している場合と、移動していない場合とで接触判定領域の大きさ、形状、および数のうち少なくとも1つを異ならせるようにしてもよい。プレイヤオブジェクトが標的オブジェクトに対して相対的に移動している場合には移動していない場合に比べて移動オブジェクトを標的オブジェクトに命中させにくくなるので、前者の場合には後者の場合に比べて例えば接触判定領域を大きくするようにしてもよい。また、他の実施形態においては、ゲームが開始されてからの経過時間や、(制限時間が設定されている場合に)制限時間までの残り時間に応じて、移動オブジェクトの接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させるようにしてもよい。また、移動オブジェクトの接触判定領域の大きさ、形状、および数のうち少なくとも1つをプレイヤの習熟度に応じて変化させるようにしてもよい。なお、プレイヤの習熟度は、例えば、ゲームをプレイした回数やプレイヤの得点の履歴等に基づいて決定することができる。
【産業上の利用可能性】
【0123】
以上のように、本発明は、標的オブジェクトの数によってシステムの処理負荷が変動することなく、安定した負荷でゲーム処理を実行すること等を目的として、例えばゲームプログラムやゲーム装置に利用することが可能である。
【図面の簡単な説明】
【0124】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の機能ブロック図
【図3】コントローラ5の外観構成を示す斜視図
【図4】コントローラ5の外観構成を示す斜視図
【図5】コントローラ5の内部構造を示す図
【図6】コントローラ5の内部構造を示す図
【図7】コントローラ5の構成を示すブロック図
【図8】コントローラ5を用いてゲーム操作を行うときの様子を示す図解図
【図9】本実施形態におけるゲーム処理によって表示されるゲーム画面の一例を示す図
【図10】矢オブジェクトの接触判定領域が変化する様子を示す図
【図11】ゲーム装置3のメインメモリに記憶される主なデータを示す図
【図12】武器リストデータ65の内容の一例を示す図
【図13】移動オブジェクトデータ67の内容の一例を示す図
【図14】ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャート
【図15】図14に示す移動制御処理(ステップS6)の流れを示すフローチャート
【符号の説明】
【0125】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ部
10 CPU
11c GPU
11e 内部メインメモリ
12 外部メインメモリ
51〜54 標的オブジェクト
52 壁オブジェクト
55 矢オブジェクト
57 接触判定領域
58 弓オブジェクト
【特許請求の範囲】
【請求項1】
入力装置からの入力に応じて仮想の3次元空間の標的オブジェクトを射撃するゲームを実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
射出の指示の入力を受け付ける入力受付ステップと、
前記入力受付ステップにおいて入力が受け付けられたことを条件として、前記3次元空間において移動オブジェクトを射出して当該移動オブジェクトを移動させる射出ステップと、
前記移動オブジェクトの移動によって値が変化する変数に基づいて、当該移動オブジェクトに設定される接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させる領域変化ステップと、
前記移動オブジェクトの接触判定領域と前記標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する接触判定ステップと、
前記接触判定ステップにおける判定結果が肯定である場合、所定のゲーム処理を実行する接触処理ステップとを前記コンピュータに実行させるゲームプログラム。
【請求項2】
前記変数は、前記移動オブジェクトが射出されてからの経過時間を示す、請求項1に記載のゲームプログラム。
【請求項3】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトが射出されてからの経過時間が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させる、請求項2に記載のゲームプログラム。
【請求項4】
前記変数は、前記移動オブジェクトが前記3次元空間を移動した距離を示す、請求項1に記載のゲームプログラム。
【請求項5】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの移動距離が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させる、請求項4に記載のゲームプログラム。
【請求項6】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの移動方向から見た場合における接触判定領域の面積が前記変数の値の大きさに応じて大きくなるように、当該接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させる、請求項2ないし請求項5に記載のゲームプログラム。
【請求項7】
前記移動オブジェクトが射出される方向が画面の手前側から奥側に向かう方向となるように前記3次元空間の画像を生成して表示装置に当該画像を表示させる表示制御ステップを前記コンピュータにさらに実行させる、請求項3、請求項5または請求項6に記載のゲームプログラム。
【請求項8】
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められており、
前記領域変化ステップは、
前記移動オブジェクトが射出されてからの経過時間に応じて決められる倍率を算出する倍率算出ステップと、
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を前記倍率で拡大または縮小するように変形する変形ステップとを含む、請求項2に記載のゲームプログラム。
【請求項9】
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められており、
前記領域変化ステップは、
前記移動オブジェクトの移動距離に応じて決められる倍率を算出する倍率算出ステップと、
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を前記倍率で拡大または縮小するように変形する変形ステップとを含む、請求項4に記載のゲームプログラム。
【請求項10】
前記射出ステップにおいて、前記コンピュータは、前記入力装置に対する入力に基づいて、前記移動オブジェクトを射出する方向を決定する、請求項2または請求項4に記載のゲームプログラム。
【請求項11】
前記3次元空間には、複数種類の前記移動オブジェクトが射出され、
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの接触判定領域の変化度合いを、当該移動オブジェクトの種類に応じて決定する、請求項1または請求項2に記載のゲームプログラム。
【請求項12】
入力装置からの入力に応じて仮想の3次元空間の標的オブジェクトを射撃するゲームを実行するゲーム装置であって、
射出の指示の入力を受け付ける入力受付手段と、
前記入力受付手段によって入力が受け付けられたことを条件として、前記3次元空間において移動オブジェクトを射出して当該移動オブジェクトを移動させる射出手段と、
前記移動オブジェクトの移動によって値が変化する変数に基づいて、当該移動オブジェクトに設定される接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させる領域変化手段と、
前記移動オブジェクトの接触判定領域と前記標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する接触判定手段と、
前記接触判定手段による判定結果が肯定である場合、所定のゲーム処理を実行する接触処理手段とを備える、ゲーム装置。
【請求項1】
入力装置からの入力に応じて仮想の3次元空間の標的オブジェクトを射撃するゲームを実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
射出の指示の入力を受け付ける入力受付ステップと、
前記入力受付ステップにおいて入力が受け付けられたことを条件として、前記3次元空間において移動オブジェクトを射出して当該移動オブジェクトを移動させる射出ステップと、
前記移動オブジェクトの移動によって値が変化する変数に基づいて、当該移動オブジェクトに設定される接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させる領域変化ステップと、
前記移動オブジェクトの接触判定領域と前記標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する接触判定ステップと、
前記接触判定ステップにおける判定結果が肯定である場合、所定のゲーム処理を実行する接触処理ステップとを前記コンピュータに実行させるゲームプログラム。
【請求項2】
前記変数は、前記移動オブジェクトが射出されてからの経過時間を示す、請求項1に記載のゲームプログラム。
【請求項3】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトが射出されてからの経過時間が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させる、請求項2に記載のゲームプログラム。
【請求項4】
前記変数は、前記移動オブジェクトが前記3次元空間を移動した距離を示す、請求項1に記載のゲームプログラム。
【請求項5】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの移動距離が大きくなるほど当該移動オブジェクトの接触判定領域の大きさが大きくなるように当該接触判定領域を変化させる、請求項4に記載のゲームプログラム。
【請求項6】
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの移動方向から見た場合における接触判定領域の面積が前記変数の値の大きさに応じて大きくなるように、当該接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させる、請求項2ないし請求項5に記載のゲームプログラム。
【請求項7】
前記移動オブジェクトが射出される方向が画面の手前側から奥側に向かう方向となるように前記3次元空間の画像を生成して表示装置に当該画像を表示させる表示制御ステップを前記コンピュータにさらに実行させる、請求項3、請求項5または請求項6に記載のゲームプログラム。
【請求項8】
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められており、
前記領域変化ステップは、
前記移動オブジェクトが射出されてからの経過時間に応じて決められる倍率を算出する倍率算出ステップと、
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を前記倍率で拡大または縮小するように変形する変形ステップとを含む、請求項2に記載のゲームプログラム。
【請求項9】
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域の大きさおよび形状は、予め定められており、
前記領域変化ステップは、
前記移動オブジェクトの移動距離に応じて決められる倍率を算出する倍率算出ステップと、
前記移動オブジェクトが射出される時点における当該移動オブジェクトの接触判定領域を前記倍率で拡大または縮小するように変形する変形ステップとを含む、請求項4に記載のゲームプログラム。
【請求項10】
前記射出ステップにおいて、前記コンピュータは、前記入力装置に対する入力に基づいて、前記移動オブジェクトを射出する方向を決定する、請求項2または請求項4に記載のゲームプログラム。
【請求項11】
前記3次元空間には、複数種類の前記移動オブジェクトが射出され、
前記領域変化ステップにおいて、前記コンピュータは、前記移動オブジェクトの接触判定領域の変化度合いを、当該移動オブジェクトの種類に応じて決定する、請求項1または請求項2に記載のゲームプログラム。
【請求項12】
入力装置からの入力に応じて仮想の3次元空間の標的オブジェクトを射撃するゲームを実行するゲーム装置であって、
射出の指示の入力を受け付ける入力受付手段と、
前記入力受付手段によって入力が受け付けられたことを条件として、前記3次元空間において移動オブジェクトを射出して当該移動オブジェクトを移動させる射出手段と、
前記移動オブジェクトの移動によって値が変化する変数に基づいて、当該移動オブジェクトに設定される接触判定領域の大きさ、形状、および数のうち少なくとも1つを変化させる領域変化手段と、
前記移動オブジェクトの接触判定領域と前記標的オブジェクトに設定される接触判定領域とが接触したか否かを判定する接触判定手段と、
前記接触判定手段による判定結果が肯定である場合、所定のゲーム処理を実行する接触処理手段とを備える、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2009−11748(P2009−11748A)
【公開日】平成21年1月22日(2009.1.22)
【国際特許分類】
【出願番号】特願2007−180292(P2007−180292)
【出願日】平成19年7月9日(2007.7.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成21年1月22日(2009.1.22)
【国際特許分類】
【出願日】平成19年7月9日(2007.7.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]