(57)【要約】【課題】より自由度の高い操作を可能とするゲームプログラムおよびゲーム装置を提供すること。【解決手段】まず、表示装置の画面上の所定の位置を指示するための操作装置から取得した操作情報に基づいて、操作装置が指示する指示位置を繰り返し算出する。次に、指示位置の変化量を算出する。そして、指示位置の変化量が第１の条件を満たしたか否かを判定する。その結果、指示位置の変化量が第１の条件を満たしていると判定されたとき、指示位置または当該指示位置に基づいて特定される位置において所定の処理を実行する。【選択図】図２９
2010104778.tif 000002
【特許請求の範囲】
【請求項１】
表示装置の画面上の位置を指示するための操作装置から取得した操作情報に基づいて所定の処理を実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記操作情報に基づいて、前記操作装置が指示する指示位置を繰り返し算出する指示位置算出手段と、
前記指示位置の変化量を算出する変化量算出手段と、
前記指示位置の変化量が第１の条件を満たしたか否かを判定する第１の判定手段と、
前記第１の判定手段によって前記指示位置の変化量が前記第１の条件を満たしていると判定されたとき、前記指示位置または当該指示位置に基づいて特定される位置において所定の処理を実行させる処理実行手段として機能させる、ゲームプログラム。
【請求項２】
前記ゲームプログラムは、前記コンピュータを、前記変化量算出手段によって算出された前記指示位置の変化量が第２の条件を満たしたか否かを判定する第２の判定手段として更に機能させ、
前記処理実行手段は、前記第１の判定手段によって前記指示位置の変化量が前記第１の条件を満たしたと判定されたときに前記所定の処理の実行を開始させ、前記第２の判定手段によって前記指示位置の変化量が前記第２の条件を満たしたと判定されたときに前記所定の処理の実行を終了させる、請求項１に記載のゲームプログラム。
【請求項３】
前記第１の条件は、前記指示位置の変化量が第１の所定値以上であることを含み、前記第２の条件は、前記指示位置の変化量が第２の所定値以下であることを含む、請求項２に記載のゲームプログラム。
【請求項４】
前記ゲームプログラムは、前記コンピュータを、前記指示位置が前記画面として割り当てられている範囲に含まれているか否かを判定する画面内指示判定手段として更に機能させ、
前記処理実行手段は、前記操作装置による指示位置が前記画面として割り当てられている範囲に含まれていると前記画面内指示判定手段で判定され、かつ、前記指示位置の変化量が前記第１の条件を満たしていると前記第１の判定手段で判定されたときに前記所定の処理の実行を開始させる、請求項１に記載のゲームプログラム。
【請求項５】
前記ゲームプログラムは、前記コンピュータを、前記指示位置が前記画面として割り当てられている範囲に含まれているか否かを判定する画面内指示判定手段として更に機能させ、
前記処理実行手段は、前記処理の実行を開始した後、前記画面内指示判定手段によって前記指示位置が前記画面として割り当てられている範囲に含まれていないと判定されたとき、前記所定の処理の実行を終了させる、請求項１に記載のゲームプログラム。
【請求項６】
前記処理実行手段は、前記指示位置または当該指示位置に基づいて特定される位置に所定のオブジェクトを描画する、請求項１に記載のゲームプログラム。
【請求項７】
前記処理実行手段は、前記指示位置または当該指示位置に基づいて特定される位置を時系列で結んだ軌跡を描画する、請求項１に記載のゲームプログラム。
【請求項８】
前記ゲームプログラムは、前記コンピュータを、
前記指示位置または当該指示位置に基づいて特定される位置に対応する仮想ゲーム空間内の位置に所定の標的オブジェクトが存在するか否かを判定する命中判定手段としてさらに機能させ、
前記処理実行手段は、前記命中判定手段において前記指示位置に対応する前記仮想ゲーム空間内の位置に前記所定の標的オブジェクトが存在すると判定されたとき、当該標的オブジェクトに対して命中処理を実行する、請求項１に記載のゲームプログラム。
【請求項９】
前記仮想ゲーム空間は仮想３次元空間であり、
前記ゲームプログラムは、前記コンピュータを、
前記指示位置または当該指示位置に基づいて特定される位置に対応する前記仮想３次元空間内の位置を示す３次元座標を算出する３次元座標算出手段と、
前記仮想３次元空間内の所定の位置と、前記３次元座標算出手段で算出された３次元座標で示される位置とを結ぶ直線を算出する直線算出手段と、
前記直線算出手段によって算出された直線に前記所定の標的オブジェクトが衝突しているか否か判定する直線衝突判定手段として更に機能させ、
前記処理実行手段は、前記直線衝突判定手段によって前記直線と前記標的オブジェクトが衝突していると判定されたときに、当該直線と衝突している標的オブジェクトに対して前記命中処理を実行する、請求項８に記載のゲームプログラム。
【請求項１０】
前記ゲームプログラムは、前記コンピュータを、
前記命中判定手段において前記所定の標的オブジェクトが存在すると判定されたとき、前記処理実行手段によって実行される処理を継続するか否かを示すためのパラメータである継続パラメータの値を変更する継続パラメータ変更手段と、
前記処理実行手段によって前記所定の処理の実行が開始された後、前記継続パラメータの値が第３の条件を満たしたか否かを判定する第３の判定手段として更に機能させ、
前記処理実行手段は、前記第３の判定手段によって前記継続パラメータの値が第３の条件を満たしたと判定されたときに、前記処理実行手段によって開始された所定の処理の実行を終了させる、請求項８に記載のゲームプログラム。
【請求項１１】
前記処理実行手段は、
仮想３次元空間内の所定の移動オブジェクトの移動方向を前記指示位置または当該指示位置に基づいて特定される位置から算出する移動方向算出手段と、
前記移動方向算出手段で算出された移動方向に基づいて前記仮想３次元空間内の所定の移動オブジェクトを移動させるオブジェクト移動手段とを含む、請求項１に記載のゲームプログラム。
【請求項１２】
前記処理実行手段は、
仮想３次元空間内における所定の移動オブジェクトの移動方向を示す３次元ベクトルを前記指示位置または当該指示位置に基づいて特定される位置に基づいて算出する３次元ベクトル算出手段と、
前記３次元ベクトル算出手段で算出された３次元ベクトルに基づいて前記仮想３次元空間内の所定の移動オブジェクトを移動させるオブジェクト移動手段とを含む、請求項１に記載のゲームプログラム。
【請求項１３】
前記方向算出手段は、前記指示位置または当該指示位置に基づいて特定される位置を前記仮想３次元空間内における前記指示位置または当該指示位置に基づいて特定される位置に対応する位置を示す３次元座標に変換し、仮想３次元空間内の所定の位置から当該３次元座標で示される位置に向かう方向を前記移動オブジェクトの移動方向として算出する、請求項１１に記載のゲームプログラム。
【請求項１４】
前記処理実行手段は、所定の条件が満たされるまで、前記方向算出手段および前記オブジェクト移動手段による処理を繰り返し実行する、請求項１１に記載のゲームプログラム。
【請求項１５】
前記処理実行手段は、所定の時間毎に前記方向算出手段および前記オブジェクト移動手段による処理を繰り返し実行する、請求項１４に記載のゲームプログラム。
【請求項１６】
前記処理実行手段は、
前記指示位置の変化量を累積する累積手段を含み、
前記変化量の累積値が所定値に達する毎に前記方向算出手段および前記オブジェクト移動手段による処理を繰り返し実行する、請求項１４に記載のゲームプログラム。
【請求項１７】
前記処理実行手段は、
仮想３次元空間内における前記指示位置または当該指示位置に基づいて特定される位置に対応する位置を示す３次元座標を当該指示位置または当該指示位置に基づいて特定される位置に基づいて算出し、当該仮想３次元空間内の所定の位置を始点、当該３次元座標を終点とするベクトルを算出するベクトル算出手段と、
前記ベクトル算出手段で算出されたベクトルに沿った前記仮想３次元空間内の方向に伸長していくオブジェクトを描画する伸長オブジェクト描画手段とを含む、請求項１に記載のゲームプログラム。
【請求項１８】
前記処理実行手段は、
仮想３次元空間内における前記指示位置または当該指示位置に基づいて特定される位置に対応する位置を示す３次元座標を前記指示位置または当該指示位置に基づいて特定される位置に基づいて算出し、当該仮想３次元空間内の所定の位置から当該３次元座標へと向かうベクトルを算出するベクトル算出手段と、
前記ベクトル算出手段で算出されたベクトルに沿って前記仮想３次元空間内の所定の位置から直線を伸ばしていく直線伸長手段と、
前記直線伸長手段によって伸長された直線上に所定の標的オブジェクトが存在しているか否か判定する衝突判定手段とを含み、
前記衝突判定手段によって前記直線上に前記標的オブジェクトが存在していると判定されたときに、当該標的オブジェクトに対して命中処理を実行する、請求項１に記載のゲームプログラム。
【請求項１９】
表示装置の画面上の位置を指示するための操作装置から取得した操作情報に基づいて所定の処理を実行するゲーム装置であって、
前記操作情報に基づいて、前記操作装置が指示する指示位置を繰り返し算出する指示位置算出手段と、
指示位置の変化量を算出する変化量算出手段と、
前記指示位置の変化量が第１の条件を満たしたか否かを判定する第１の判定手段と、
前記第１の判定手段で前記指示位置の変化量が前記第１の条件を満たしていると判定されたとき、前記指示位置または当該指示位置に基づいて特定される位置において所定の処理を実行させる処理実行手段とを備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームプログラムおよびゲーム装置に関し、より特定的には、少なくとも１つの撮像対象を撮像するための撮像手段を備える操作装置から、当該撮像手段によって得られる撮像情報に基づいて所定の処理を実行するゲームプログラムに関する。
【背景技術】
【０００２】
従来、撮像装置を備えた入力装置を用いた操作に基づいて、所定の動作を開始するゲーム装置が知られている（例えば、非特許文献１，２，３）。非特許文献１および２に開示されているゲームは、入力装置を剣に見立て、当該入力装置を振る事で、画面に表示されている敵オブジェクトを剣で切るゲームである。入力装置自体を縦、横、斜めに振ることで、振った方向に応じた「縦斬り」「横斬り」「斜め斬り」の３種類の斬撃を行うことができる。そして、これらの斬撃の太刀筋（剣の軌道）は上記縦横斜めの振りに応じた角度となる。当該斬撃操作を行う際に、所定のボタンを押すことで画面に表示されている「ポインタ」の位置を固定することができる（ポインタロック）。そして、ポインタの位置を固定した状態で入力装置を振ると、当該ポインタの位置が斬撃の太刀筋の中心となる。また、ポインタを固定しない場合は、画面中央を通る太刀筋となる。
【０００３】
一方、非特許文献３に開示されているゲームは、手術ゲームであり、入力装置をメスに見立てて操作する。例えば、画面表示患者の胴体部が表示されており、皮膚を切開する、という操作を行う場面では、まず、切開箇所を示すマーカが画面に表示される。そして、コントローラのボタンを押したまま、マーカに沿ってカーソルをスライドさせることで、切開の操作が行える。そして、マーカから大きく外れずにスライドできれば、切開成功となる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「電撃ＤＳ＆Ｗｉｉ  Ｓｔｙｌｅ  Ｖｏｌ．２」、株式会社メディアワークス、２００７年８月１日、Ｐ２８
【非特許文献２】「週刊ファミ通  ２００７年８月３日号」、株式会社エンターブレイン、２００７年８月３日、Ｐ１５２
【非特許文献３】「カドゥケウスＺ  ２つの超執刀  取扱説明書」、株式会社アトラス、２００６年１２月２日発売、Ｐ２５
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したようなゲーム装置においては、以下に示す問題点があった。まず、上記非特許文献１および２のゲームでは、斬撃操作を行う際に、ポインタを固定しない場合は、常に画面中心を通る太刀筋となる。そのため、画面中央を通らない太刀筋の斬撃を行いたい場合は、ポインタロックが必須となる。つまり、ポインタロックのためのボタン操作を行ってから、入力装置を振るという、２段階の操作を行う必要があった。そのため、ポインタロックという操作をおこなわなければ、好きなところを斬ることができない。また、このような２段階操作が必要となるため、スピーディな斬撃操作が行えないという問題がある。また、上記非特許文献１および２のゲームでは、プレイヤの振り方の大きさや速さにかかわらず、斬撃の軌跡（太刀筋）は常に画面の端から端となっており、その太刀筋も直線の太刀筋となっている。つまり、斬撃の際に表示される太刀筋のエフェクト（アニメーション）は予め決められたいくつかの太刀筋パターンから、縦横斜めの振り方向に応じたパターンが読み出され、再生されているに過ぎなかった。そのため、端から端ではなく、画面の一部分だけを斬るという操作ができなかった。これらのことから、斬撃操作の自由度に欠けたものとなっているという問題があった。
【０００６】
一方、非特許文献３に開示されたゲームでは、画面の一部分のみ切るという操作は可能ではある。しかし、このゲームでの切開操作は、画面に表示されたマーカに沿ってカーソルを動かすという操作であり、プレイヤが所望する場所を自由に切るという内容ではなかった。そのため、上記非特許文献１および２のゲームと同様に、好きなところを切るという操作の自由度に欠けているという問題があった。
【０００７】
それ故に、本発明の目的は、より自由度の高い操作を可能とするゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００８】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００９】
第１の発明は、表示装置の画面上の所定の位置を指示するための操作装置から取得した操作情報に基づいて所定の処理を実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、コンピュータを、指示位置算出手段と、変化量算出手段と、第１の判定手段と、処理実行手段として機能させる。指示位置算出手段は、操作情報に基づいて、操作装置が指示する指示位置を繰り返し算出する。変化量算出手段は、指示位置の変化量を算出する。第１の判定手段は、指示位置の変化量が第１の条件を満たしたか否かを判定する。処理実行手段は、第１の判定手段で指示位置の変化量が第１の条件を満たしていると判定されたとき、指示位置または当該指示位置に基づいて特定される位置において所定の処理を実行させる。
【００１０】
第１の発明によれば、プレイヤの所望する位置において、かつ、操作装置の指示位置の変化量が条件を満たしたときに処理を実行させることができ、より自由度の高い操作性を有するゲームをプレイヤに提供することができる。
【００１１】
第２の発明は、第１の発明において、ゲームプログラムは、コンピュータを、第２の判定手段として更に機能させる。第２の判定手段は、変化量算出手段によって算出された指示位置の変化量が第２の条件を満たしたか否かを判定する。そして、処理実行手段は、第１の判定手段によって指示位置の変化量が第１の条件を満たしたと判定されたときに所定の処理の実行を開始させ、第２の判定手段で指示位置の変化量が第２の条件を満たしたと判定されたときに、当該所定の処理を終了させる。
【００１２】
第３の発明は、第２の発明において、第１の条件は、指示位置の変化量が第１の所定値以上であることを含み、第２の条件は、指示位置の変化量が第２の所定値以下であることを含む。
【００１３】
第２乃至第３の発明によれば、任意の位置を処理の開始点、及び、終了点とすることができ、自由度の高い操作性を提供することができる。
【００１４】
第４の発明は、第１の発明において、ゲームプログラムは、コンピュータを、前記指示位置が前記画面として割り当てられている範囲に含まれているか否かを判定する画面内指示判定手段として更に機能させる。そして、処理実行手段は、操作装置による指示位置が画面として割り当てられている範囲に含まれていると画面内指示判定手段で判定され、かつ、指示位置の変化量が第１の条件を満たしていると第１の判定手段で判定されたときに所定の処理の実行を開始させる。
【００１５】
第４の発明によれば、画面内においてプレイヤが所望する位置を起点とし、かつ、操作装置の指示位置の変化量が条件を満たしたときに所定の処理を実行させることが可能となる。
【００１６】
第５の発明は、第１の発明において、ゲームプログラムは、コンピュータを、指示位置が画面として割り当てられている範囲に含まれているか否かを判定する画面内指示判定手段として更に機能させる。そして、処理実行手段は、処理の実行を開始した後、画面内指示判定手段によって指示位置が画面として割り当てられている範囲に含まれていないと判定されたとき、所定の処理の実行を終了させる。
【００１７】
第５の発明によれば、画面内においてプレイヤが所望する位置を起点として所定の処理を開始させた後、画面外を指示すれば、当該処理を終了させることができ、操作性をより高めることができる。
【００１８】
第６の発明は、第１の発明において、処理実行手段は、指示位置または当該指示位置に基づいて特定される位置に所定のオブジェクトを描画する。
【００１９】
第７の発明は、第１の発明において、処理実行手段は、指示位置または当該指示位置に基づいて特定される位置を時系列で結んだ軌跡を描画する。
【００２０】
第６乃至第７の発明によれば、処理が実行されている画面内の位置をプレイヤに把握させやすくすることができる。
【００２１】
第８の発明は、第１の発明において、ゲームプログラムは、コンピュータを、命中判定手段として更に機能させる。命中判定手段は、指示位置または当該指示位置に基づいて特定される位置に対応する仮想ゲーム空間内の位置に所定の標的オブジェクトが存在するか否かを判定する。そして、処理実行手段は、命中判定手段において、指示位置に対応する仮想ゲーム空間内の位置に所定の標的オブジェクトが存在すると判定されたとき、当該標的オブジェクトに対して命中処理を実行する。
【００２２】
第８の発明によれば、処理開始手段によって所定の処理が開始された後、指示位置が通過したオブジェクトに対して更に異なる処理を実行することができ、例えば所定のオブジェクトを「斬る」ような操作の臨場感を高め、ゲームの興趣性を高めることが可能となる。
【００２３】
第９の発明は、第８の発明において、仮想ゲーム空間は仮想３次元空間であり、ゲームプログラムは、コンピュータを、３次元座標算出手段と、直線算出手段と、直線衝突判定手段として更に機能させる。３次元座標算出手段は、指示位置または当該指示位置に基づいて特定される位置に対応する仮想３次元空間内の位置を示す３次元座標を算出する。直線算出手段は、仮想３次元空間内の所定の位置と、３次元座標算出手段で算出された３次元座標で示される位置とを結ぶ直線を算出する。直線衝突判定手段は、直線算出手段によって算出された直線に所定の標的オブジェクトが衝突しているか否か判定する。そして、処理実行手段は、直線衝突判定手段によって直線と標的オブジェクトが衝突していると判定されたときに、当該直線と衝突している標的オブジェクトに対して命中処理を実行する。
【００２４】
第９の発明によれば、３次元空間における衝突判定を容易におこなうことができるとともに、より現実感のあるゲームを提供することができる。
【００２５】
第１０の発明は、第８の発明において、前記ゲームプログラムは、前記コンピュータを、継続パラメータ変更手段と、第３の判定手段として更に機能させる。継続パラメータ変更手段は、命中判定手段において所定の標的オブジェクトが存在すると判定されたとき、処理実行手段によって実行される処理を継続するか否かを示すためのパラメータである継続パラメータの値を変更する。第３の判定手段は、処理実行手段によって所定の処理の実行が開始された後、継続パラメータの値が第３の条件を満たしたか否かを判定する。そして、処理実行手段は、第３の判定手段によって継続パラメータの値が第３の条件を満たしたと判定されたときに、処理実行手段によって開始された所定の処理の実行を終了させる。
【００２６】
第１０の発明によれば、指示位置の変化量が第２の条件を満たしていないときでも処理開始手段によって開始された処理を終了することが可能となり、ゲームの興趣性をより高めることができる。
【００２７】
第１１の発明は、第１の発明において、処理実行手段は、移動方向算出手段と、オブジェクト移動手段とを含む。移動方向算出手段は、仮想３次元空間内の所定の移動オブジェクトの移動方向を指示位置または当該指示位置に基づいて特定される位置から算出する。オブジェクト移動手段は、移動方向算出手段で算出された移動方向に基づいて仮想３次元空間内の所定の移動オブジェクトを移動させる。
【００２８】
第１１の発明によれば、画面上の指示位置に基づいて所定のオブジェクトを移動させることができるため、例えば、仮想３次元空間を舞台とするゲーム等において、プレイヤオブジェクトに射撃武器の弾オブジェクトを発射させる操作をプレイヤが行う際に、画面上の指示位置に基づいて弾オブジェクト等を移動させることができ、直感的な操作を可能とすることができる。
【００２９】
第１２の発明は、第１の発明において、処理実行手段は、仮想３次元空間内における所定の移動オブジェクトの移動方向を示す３次元ベクトルを指示位置または当該指示位置に基づいて特定される位置に基づいて算出する３次元ベクトル算出手段と、３次元ベクトル算出手段で算出された３次元ベクトルに基づいて仮想３次元空間内の所定の移動オブジェクトを移動させるオブジェクト移動手段とを含む。
【００３０】
第１３の発明は、第１１の発明において、方向算出手段は、指示位置または当該指示位置に基づいて特定される位置を仮想３次元空間内における指示位置または当該指示位置に基づいて特定される位置に対応する位置を示す３次元座標に変換し、仮想３次元空間内の所定の位置から当該３次元座標で示される位置に向かう方向を移動オブジェクトの移動方向として算出する。
【００３１】
第１２乃至第１３の発明によれば、２次元座標系で示される指示座標を３次元座標系の座標に変換してから、当該３次元座標系で示される座標に向けて移動オブジェクトを移動させることができ、より現実感のあるゲームを提供することができる。
【００３２】
第１４の発明は、第１１の発明において、処理実行手段は、所定の条件が満たされるまで、方向算出手段およびオブジェクト移動手段による処理を繰り返し実行する。
【００３３】
第１５の発明は、第１４の発明において、処理実行手段は、所定の時間毎に方向算出手段およびオブジェクト移動手段による処理を繰り返し実行する
【００３４】
第１６の発明は、第１４の発明において、処理実行手段は、指示位置の変化量を累積する累積手段を含む。そして、処理実行手段は、変化量の累積値が所定値に達する毎に、方向算出手段およびオブジェクト移動手段による処理を繰り返し実行する。
【００３５】
第１４乃至第１６の発明によれば、複数の移動オブジェクトを所定の間隔で連続して移動させることができ、ゲームの興趣性を高めることができる。
【００３６】
第１７の発明は、第１の発明において、処理実行手段は、仮想３次元空間内における指示位置または当該指示位置に基づいて特定される位置に対応する位置を示す３次元座標を当該指示位置または当該指示位置に基づいて特定される位置に基づいて算出し、当該仮想３次元空間内の所定の位置を始点、当該３次元座標を終点とするベクトルを算出するベクトル算出手段と、ベクトル算出手段で算出されたベクトルに沿った仮想３次元空間内の方向に伸長していくオブジェクトを描画する伸長オブジェクト描画手段とを含む。
【００３７】
第１７の発明によれば、例えば、レーザービームのような攻撃を表現することができ、ゲームの興趣性をより高めることが可能となる。
【００３８】
第１８の発明は、第１の発明において、処理実行手段は、ベクトル算出手段と、直線伸長手段と、衝突判定手段とを含む。ベクトル算出手段は、仮想３次元空間内における指示位置または当該指示位置に基づいて特定される位置に対応する位置を示す３次元座標を指示位置または当該指示位置に基づいて特定される位置に基づいて特定される位置として算出し、当該仮想３次元空間内の所定の位置から当該３次元座標へと向かうベクトルを算出する。直線伸長手段は、ベクトル算出手段で算出されたベクトルに沿って仮想３次元空間内の所定の位置から直線を伸ばしていく。衝突判定手段は、直線伸長手段によって伸長された直線上に所定の標的オブジェクトが存在しているか否か判定する。そして、処理実行手段は、衝突判定手段によって直線上に標的オブジェクトが存在していると判定されたときに、当該標的オブジェクトに対して命中処理を実行する。
【００３９】
第１８の発明によれば、仮想３次元空間における衝突判定を容易に行うことができるとともに、より現実感の高いゲームを提供する事ができる。
【００４０】
第１９の発明は、表示装置の画面上の所定の位置を指示するための操作装置から取得した操作情報に基づいて所定の処理を実行するゲーム装置であって、指示位置算出手段と、変化量算出手段と、第１の判定手段と、処理実行手段とを備える。指示位置算出手段は、操作情報に基づいて、操作装置が指示する指示位置を繰り返し算出する。変化量算出手段は、指示位置の変化量を算出する。第１の判定手段は、指示位置の変化量が第１の条件を満たしたか否かを判定する。処理開始手段は、第１の判定手段で指示位置の変化量が第１の条件を満たしていると判定されたとき、指示位置または当該指示位置に基づいて特定される位置において所定の処理を実行させる。
【００４１】
第１９の発明によれば、上記第１の発明と同様の効果を得ることができる。
【発明の効果】
【００４２】
本発明によれば、指示位置の変化量に基づいて所定の処理の画面上における起点を決めることができるため、自由度の高い操作性を有するゲームを提供する事が可能となる。
【図面の簡単な説明】
【００４３】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体３の機能ブロック図
【図３】図１のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面前方から見た斜視図
【図５】図３のコントローラ７の上ハウジングを外した状態を示す斜視図
【図６】図３のコントローラ７の下ハウジングを外した状態を示す斜視図
【図７】図３のコントローラ７の構成を示すブロック図
【図８】撮像画像の一例を示す図
【図９】本実施形態で想定するゲームの画面の一例
【図１０】拡張コントローラ３６をコントローラ７のコネクタ７３に接続した形態を示す図
【図１１】コントローラの持ち方の一例を示す図
【図１２】画面スクロール操作について説明するための図
【図１３】画面スクロール操作について説明するための図
【図１４】斬撃操作の一例を示す図
【図１５】斬撃操作の一例を示す図
【図１６】斬撃操作の処理の原理を説明するための図
【図１７】斬撃操作の処理の原理を説明するための図
【図１８】斬撃操作の処理の原理を説明するための図
【図１９】斬撃操作の処理の原理を説明するための図
【図２０】斬撃操作の処理の原理を説明するための図
【図２１】斬撃操作の処理の原理を説明するための図
【図２２】斬撃操作の処理の原理を説明するための図
【図２３】斬撃操作の処理の原理を説明するための図
【図２４】斬撃操作の処理の原理を説明するための図
【図２５】ゲーム画面の一例
【図２６】斬撃操作の処理の原理を説明するための図
【図２７】ゲーム画面の一例
【図２８】ゲーム装置本体３のメインメモリ１２のメモリマップを示す図
【図２９】第１の実施形態にかかるゲーム処理を示すフローチャート
【図３０】第１の実施形態にかかるゲーム処理を示すフローチャート
【図３１】図２９のステップＳ６およびＳ１７の変化量算出処理の詳細な動作を示すフローチャート
【図３２】図３０のステップＳ１４の当たり判定処理の詳細な動作を示すフローチャート
【図３３】当たり判定処理に関して説明するための図
【図３４】当たり判定処理に関して説明するための図
【図３５】ゲーム画面の一例
【図３６】貫通力パラメータを用いた場合のゲーム処理を示すフローチャート
【図３７】貫通力パラメータを用いた場合の当たり判定処理の一例を示すフローチャート
【図３８】第２の実施形態のゲーム画面の一例
【図３９】投擲方向の設定処理を説明するための図
【図４０】第２の実施形態にかかるゲーム装置本体３のメインメモリ１２のメモリマップを示す図
【図４１】第２の実施形態にかかるゲーム処理を示すフローチャート
【図４２】第２の実施形態にかかるゲーム処理を示すフローチャート
【図４３】図４２のステップＳ８０の投擲方向設定処理の詳細を示すフローチャート
【図４４】図４２のステップＳ８６の当たり判定処理の詳細を示すフローチャート
【発明を実施するための形態】
【００４４】
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
【００４５】
（ゲームシステムの全体構成）
各実施形態の詳細を説明するに先立ち、まず、各実施形態で共通して使用されるゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置本体３、光ディスク４、コントローラ７、およびマーカ部８を含む。本システムは、コントローラ７を用いたゲーム操作に基づいてゲーム装置本体３でゲーム処理を実行するものである。
【００４６】
ゲーム装置本体３には、当該ゲーム装置本体３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置本体３において実行されるためのゲームプログラムが記憶されている。ゲーム装置本体３の前面には光ディスク４の挿入口が設けられている。ゲーム装置本体３は、挿入口に挿入された光ディスク４に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００４７】
ゲーム装置本体３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２には、ゲーム装置本体３において実行されるゲーム処理の結果得られるゲーム画像が表示される。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部８が設置される。マーカ部８は、その両端に２つのマーカ８Ｒおよび８Ｌを備えている。マーカ８Ｒ（マーカ８Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部８はゲーム装置本体３に接続されており、ゲーム装置本体３はマーカ部８が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００４８】
コントローラ７は、当該コントローラ７自身に対して行われた操作の内容を示す操作データをゲーム装置本体３に与える入力装置である。コントローラ７とゲーム装置本体３とは無線通信によって接続される。本実施形態では、コントローラ７とゲーム装置本体３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ７とゲーム装置本体３とは有線で接続されてもよい。
【００４９】
（ゲーム装置本体３の内部構成）
次に、図２を参照して、ゲーム装置本体３の内部構成について説明する。図２は、ゲーム装置本体３の構成を示すブロック図である。ゲーム装置本体３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００５０】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩの内部構成について後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置本体３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００５１】
また、システムＬＳＩ１１には、入出力プロセッサ１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００５２】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。より具体的には、ＧＰＵ１１ｂは、当該グラフィクスコマンドに従って３Ｄグラフィックスの表示に必要な計算処理、例えば、レンダリングの前処理にあたる３Ｄ座標から２Ｄ座標への座標変換などの処理や、テクスチャの張り込みなどの最終的なレンダリング処理を行うことで、ゲーム画像データを生成する。ここで、ＣＰＵ１０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ１１ｂに与える。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００５３】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。また、内部メインメモリ１１ｅは、外部メインメモリ１２と同様に、プログラムや各種データを記憶したり、ＣＰＵ１０のワーク領域やバッファ領域としても用いられる。
【００５４】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００５５】
入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００５６】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置本体３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００５７】
また、入出力プロセッサ１１ａは、コントローラ７から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００５８】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００５９】
ゲーム装置本体３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンにされると、ゲーム装置本体３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。また、一旦電源がオンにされた状態で、再度電源ボタン２４を押すと、低電力スタンバイモードへの移行が行われる。この状態でも、ゲーム装置本体３への通電は行われているため、インターネット等のネットワークに常時接続しておくことができる。なお、一旦電源がオンにされた状態で、電源をオフにしたいときは、電源ボタン２４を所定時間以上長押しすることで、電源をオフとすることが可能である。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置本体３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００６０】
次に、図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面前方から見た斜視図である。
【００６１】
図３および図４において、コントローラ７は、ハウジング７１と、当該ハウジング７１の表面に設けられた複数個の操作ボタンで構成される操作部７２とを備える。本実施例のハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
【００６２】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤオブジェクト等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００６３】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に４つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。
【００６４】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置本体３が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００６５】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置本体３本体の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００６６】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７からゲーム装置本体３へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【００６７】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図５のスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００６８】
一方、ハウジング７１下面には、凹部が形成されている。後述で明らかとなるが、ハウジング７１下面の凹部は、プレイヤがコントローラ７の前面をマーカ８Ｌおよび８Ｒに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００６９】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００７０】
ここで、以下の説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するｘｙｚ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をｚ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をｚ軸正方向とする。また、コントローラ７の上下方向をｙ軸とし、ハウジング７１の上面（操作ボタン７２ａ等が設けられた面）方向をｙ軸正方向とする。さらに、コントローラ７の左右方向をｘ軸とし、ハウジング７１の左側面（図３では表されずに図４で表されている側面）方向をｘ軸正方向とする。
【００７１】
次に、図５および図６を参照して、コントローラ７の内部構造について説明する。なお、図５は、コントローラ７の上ハウジング（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図６は、コントローラ７の下ハウジング（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図６に示す基板７００は、図５に示す基板７００の裏面から見た斜視図となっている。
【００７２】
図５において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図６、図７参照）に接続される。マイコン７５１は本願発明のボタンデータ発生手段の一例として、操作ボタン７２ａ等の種類に応じた操作ボタンデータを発生させるように機能する。この仕組みは公知技術であるが、例えばキートップ下側に配置されたタクトスイッチなどのスイッチ機構による配線の接触／切断をマイコン７５１が検出することによって実現されている。より具体的には、操作ボタンが例えば押されると配線が接触して通電するので、この通電がどの操作ボタンにつながっている配線で発生したかをマイコン７５１が検出し、操作ボタンの種類に応じた信号を発生させている。
【００７３】
また、コントローラ７は、無線モジュール７５３（図７参照）およびアンテナ７５４によって、ワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。また、加速度センサ７０１は、操作ボタン７２ｄの左側の基板７００上（つまり、基板７００の中央部ではなく周辺部）に設けられる。したがって、加速度センサ７０１は、コントローラ７の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ７の回転を良好な感度でゲーム装置本体３等が判定することができる。
【００７４】
一方、図６において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置本体３から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。
【００７５】
そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。バイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４は、基板７００等に形成された配線によってマイコン７５１と接続され、ゲーム装置本体３から送信された振動データに応じてその作動をオン／オフする。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【００７６】
次に、図７を参照して、コントローラ７の内部構成について説明する。なお、図７は、コントローラ７の構成を示すブロック図である。
【００７７】
図７において、コントローラ７は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。
【００７８】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。ここで、モニタ２の表示画面近傍に配置されるマーカ８Ｌおよび８Ｒは、モニタ２の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ７４１を設けることによってマーカ８Ｌおよび８Ｒの画像をより正確に撮像することができる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ入射させる。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子７４３によって撮像された画像を撮像画像と呼ぶ。撮像素子７４３によって生成された画像データは、画像処理回路７４４で処理される。画像処理回路７４４は、撮像画像内における撮像対象（マーカ８Ｌおよび８Ｒ）の位置を算出する。以下、図８を用いて撮像対象の位置の算出方法を説明する。
【００７９】
図８は、撮像画像の一例を示す図である。図８に示す撮像画像においては、マーカ８Ｌの画像８Ｌ'およびマーカ８Ｒの画像８Ｒ'が左右に並んでいる。撮像画像が入力されると、まず、画像処理回路７４４は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。ここで、所定条件とは、撮像対象の画像（対象画像）を特定するための条件であり、所定条件の具体的な内容は、輝度が所定値以上の領域（高輝度領域）であり、かつ、領域の大きさが所定範囲内の大きさであることである。なお、所定条件は撮像対象を特定するための条件であればよく、他の実施形態においては、画像の色に関する条件を含んでいてもよい。
【００８０】
対象画像の位置を算出する際、まず、画像処理回路７４４は、撮像画像の領域から上記高輝度領域を対象画像の候補として特定する。撮像画像の画像データにおいて対象画像は高輝度領域として現れるからである。次に、画像処理回路７４４は、特定された高輝度領域の大きさに基づいて、その高輝度領域が対象画像であるか否かを判定する判定処理を行う。撮像画像には、対象画像である２つのマーカ８Ｌおよび８Ｒの画像８Ｌ'および８Ｒ'の他、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれている場合がある。この場合、マーカ８Ｌおよび８Ｒの画像８Ｌ'および８Ｒ'以外の画像も高輝度領域として現れてしまう。上記の判定処理は、対象画像であるマーカ８Ｌおよび８Ｒの画像８Ｌ'および８Ｒ'とそれ以外の画像とを区別し、対象画像を正確に特定するための処理である。具体的には、当該判定処理においては、特定された高輝度領域が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度領域が所定範囲内の大きさである場合、当該高輝度領域は対象画像を表すと判定され、高輝度領域が所定範囲内の大きさでない場合、当該高輝度領域は対象画像以外の画像を表すと判定される。
【００８１】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度領域について、画像処理回路７４４は当該高輝度領域の位置を算出する。具体的には、当該高輝度領域の重心位置を算出する。なお、重心位置は撮像素子７４３の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子７４３によって撮像された撮像画像の解像度が１２６×９６であるとし、重心位置は１０２４×７６８のスケールで算出されるものとする。つまり、重心位置の座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。なお、撮像画像における位置は、図８に示すように、撮像画像の左上を原点とし、下向きをｙ軸正方向とし、右向きをｘ軸正方向とする座標系（ｘｙ座標系）で表現されるものとする。
【００８２】
以上のようにして、画像処理回路７４４は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。なお、以下では、画像処理回路７４４によって算出される座標をマーカ座標と呼ぶ。マーカ座標は、撮像画像に対応する平面上の位置を表すための座標系において撮像対象の位置を示す座標である。画像処理回路７４４は、マーカ座標を通信部７５のマイコン７５１へ出力する。マーカ座標のデータは、マイコン７５１によって操作データとしてゲーム装置本体３に送信される。マーカ座標はコントローラ７自体の向き（姿勢）や位置に対応して変化するので、ゲーム装置本体３は当該座標値を用いてコントローラ７の向きや位置を算出することができる。なお、本実施形態では、撮像画像からマーカ座標を算出する処理までをコントローラ７の画像処理回路７４４および／またはマイコン７５１で行ったが、例えば撮像画像をゲーム装置本体３に送り、以降の処理と同等の処理をゲーム装置本体３のＣＰＵ１０等で行わせることもできる。
【００８３】
コントローラ７は、３軸（ｘ、ｙ、ｚ軸）の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向（または他の対になった方向）のそれぞれに沿った直線加速度のみを検知する２軸の加速度検出手段を使用してもよい。例えば、この３軸または２軸の加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であってもよい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて３軸または２軸の加速度センサ７０１が提供されてもよい。
【００８４】
当業者には公知であるように、加速度センサ７０１に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、その２軸または３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００８５】
しかしながら、加速度センサ７０１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ１０）またはコントローラ７のプロセッサ（例えばマイコン７５１）などのコンピュータが処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ７０１を搭載するコントローラ７が静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理する場合）、コントローラ７が現実に静的な状態であれば、検出された加速度に基づいてコントローラの姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかを知ることができる。具体的には、加速度センサ７０１の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かだけで傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかも知ることができる。また、多軸の加速度センサの場合には、さらに各軸の加速度の信号に対して処理を施すことによって、各軸が重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ７０１からの出力に基づいて、プロセッサがコントローラ７の傾き角度のデータを算出する処理をおこなってもよいが、当該傾き角度のデータを算出する処理をおこなうことなく、加速度センサ７０１からの出力に基づいて、おおよその傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１をプロセッサと組み合わせて用いることによって、コントローラ７の傾き、姿勢または位置を判定することができる。一方、加速度センサが動的な状態であることを前提とする場合には、重力加速度成分に加えて加速度センサの動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動き方向などを知ることができる。具体的には、加速度センサ７０１を備えるコントローラ７がユーザの手で動的に加速されて動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７のさまざまな動きおよび／または位置を算出することができる。なお、加速度センサが動的な状態であることを前提とする場合であっても、加速度センサの動きに応じた加速度を所定の処理により除去すれば、重力方向に対する傾きを知ることが可能である。他の実施例では、加速度センサ７０１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００８６】
他の実施形態の例では、コントローラ７の動きを検出する動きセンサとして、回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるＭＥＭＳジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ７０１と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転（または角速度）を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【００８７】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、２つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロセンサとの基本的な差異と同様にジャイロセンサの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【００８８】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置本体３からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置本体３から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置本体３から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。
【００８９】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの加速度信号（ｘ、ｙ、およびｚ軸方向加速度データ；以下、単に加速度データと記載する）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、加速度データ、処理結果データ）を無線コントローラモジュール１９へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から無線コントローラモジュール１９への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ）で構成される通信部７５の送信間隔は例えば５ｍｓである。マイコン７５１は、無線コントローラモジュール１９への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥースの技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その電波信号をアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からの加速度データ、および撮像情報演算部７４からの処理結果データが無線モジュール７５３で電波信号に変調されてコントローラ７から送信される。そして、ゲーム装置本体３の無線コントローラモジュール１９でその電波信号を受信し、ゲーム装置本体３で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、加速度データ、および処理結果データ）を取得する。そして、ゲーム装置本体３のＣＰＵ１０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥースの技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００９０】
（第１の実施形態）
次に、第１の実施形態にかかるゲームの概要について、図９〜図２７を用いて説明する。第１の実施形態で想定するゲームは、仮想３次元空間内を舞台にした剣劇ゲームである。図９は、第１の実施形態で想定するゲームの画面の一例である。図９において、ゲーム画面にはプレイヤオブジェクト１０１、カーソル１０２、敵オブジェクト１０３等が表示されている。本ゲームは、プレイヤオブジェクト１０１の後方に仮想カメラを配置した、いわゆる三人称視点でゲーム画面が描画される。そして、プレイヤオブジェクト１０１は、剣オブジェクト１０４を持っている。本ゲームは、プレイヤオブジェクト１０１が当該剣オブジェクト１０４を使って敵オブジェクト１０３を倒していくゲームである。
【００９１】
次に、本ゲームでの操作について説明する。本ゲームでは、図１０に示すように、拡張コントローラ３６をコントローラ７のコネクタ７３に接続した形態でプレイヤオブジェクト１０１の操作を行う。ここで、拡張コントローラ３６は、アナログ方式の入力が可能なアナログスティック３９を備えている。そして、ゲームをプレイする際には、例えば図１１に示すように、プレイヤは、その右手でコントローラ７を持ち、その左手で拡張コントローラ３６を持つ。このとき、プレイヤは、右手に持ったコントローラ７の前面（撮像情報演算部７４が撮像する光の入射口側）がマーカ８Ｌおよび８Ｒの方向を向く状態でコントローラ７を把持する。この状態で、プレイヤは、コントローラ７の傾きを変化させたり、コントローラ７が指し示す画面上の位置（指示位置）を変更したり、コントローラ７と各マーカ８Ｌおよび８Ｒとの距離を変更したりすることによってゲーム操作を行うことができる。そして、本実施形態のゲームでは、左手に持った拡張コントローラ３６を用いて、主にプレイヤオブジェクト１０１の移動操作を行い、右手に持ったコントローラ７を用いて、主にカーソル１０２の移動操作および剣オブジェクト１０４を用いた攻撃操作を行う。ここで、本ゲームは上述のように剣劇ゲームであり、プレイヤオブジェクト１０１の攻撃動作の内容は、剣オブジェクト１０４で敵オブジェクト１０３を「斬る」動作となる。そのため、以下では当該攻撃操作のことを「斬撃操作」と呼ぶ。
【００９２】
まず、拡張コントローラ３６を用いたプレイヤオブジェクト１０１の移動操作に関して説明する。プレイヤが、左手に持った拡張コントローラ３６のアナログスティック３９を上方向に入力すると、プレイヤオブジェクト１０１が前進する。また、下方向に入力すると、プレイヤオブジェクト１０１が後退する。右方向に入力したときは、プレイヤオブジェクト１０１は右に水平移動する（プレイヤオブジェクトの向きを変えずに右に移動する。例えば、前を向いたまま右に横歩きする動作）。左方向を入力したときは、プレイヤオブジェクト１０１は左に水平移動する。
【００９３】
次に、コントローラ７を用いた操作について説明する。まず、ゲーム画面には、コントローラ７が指し示す画面上の位置（指示位置）にカーソル１０２が表示されている。そして、本実施形態では、カーソル１０２を所定速度未満で動かせば、単純にポインティング位置にカーソルが表示される、通常カーソル移動操作を行うことができる。また、画面端近傍の所定領域（以下、画面スクロール領域と呼ぶ）内にカーソル１０２が移動した場合は、カーソル１０２の存在する位置に応じて仮想カメラの向きが変化し、画面をスクロールさせることが可能である。例えば、図１２（ａ）に示すようにカーソル１０２を画面の上端（画面スクロール領域内）に移動させたときは、図１２（ｂ）に示すように仮想カメラが上向きとなる。つまり、仮想カメラがｘ軸回りに回転する。その結果、注視点が上方向に移動し、上方を見上げるような描画がなされることになる。
【００９４】
同様に、例えば図１３（ａ）に示すように、カーソル１０２を画面右端に移動させたときは、図１３（ｂ）に示すように仮想カメラも右に向く（ｙ軸回りに右回転する）。また、このときは、プレイヤオブジェクト１０１自体も右方向に回転し、方向転換が可能となっている。例えば、カーソル１０２を画面右端に移動させ、カーソル１０２をその位置から動かさないようにすれば、仮想ゲーム空間内で右を向くことが可能となる。
【００９５】
一方、カーソル１０２を所定速度以上で移動させると、斬撃操作が可能となる。つまり、敵オブジェクト１０３を通過するように（例えば左から右に）カーソル１０２を素早く移動することで、敵オブジェクト１０３を「斬る」という直感的な操作を可能としている。
【００９６】
以下、当該斬撃操作について説明する。上述のように、カーソル１０２を所定速度以上で動かすと斬撃操作が可能となる。図１４および図１５は、斬撃操作の一例を示す図である。図１４は、斬撃開始直後の状態であり、カーソル１０２を右方向に所定速度以上で動かしている状態である。図１４では、斬撃の軌跡を示す斬撃軌跡１０８が表示され始めている。また、図１５は、斬撃中の状態であり、敵オブジェクト１０３に斬撃が当たった状態を示している。斬撃軌跡１０８のうち敵オブジェクト１０３に当たった箇所から右は、予め用意されている命中エフェクト１０９が斬撃軌跡に重ねて描画されており、斬撃が敵オブジェクト１０３に当たったことが示されている。
【００９７】
次に、斬撃操作についての処理（以下、単に斬撃処理と呼ぶ）の原理を説明する。本実施形態では、所定の単位時間、具体的には１フレーム（１／６０秒）あたりにおけるコントローラ７のポインティング位置（カーソル１０２の表示位置）の変化量（つまり、カーソル１０２の移動量）を算出する。そして、当該変化量が所定値未満であれば、上述の通常カーソル移動操作または画面スクロールにかかる処理を実行し、変化量が所定値以上であれば、斬撃処理を行う。
【００９８】
図１６〜図２３は、斬撃処理の原理を説明するための図であり、１フレーム毎のポインティング位置の遷移を示している。これらの図面において、黒塗りの点は現在のポインティング位置を示し、斜線のパターンで塗られた点は過去に検出されたポインティング位置を示す。また、星印は、斬撃の開始位置（以下、斬撃開始点と呼ぶ）を示し、三角印は、斬撃の終了位置（以下、斬撃終了点と呼ぶ）を示す。
【００９９】
まず、最初の状態として、図１６の点１１１で示される位置がポインティングされているとする。この状態から、１フレーム後の状態が、図１７に示すような状態であるとする。図１７では、現在のポインティング位置である点１１２と１フレーム前のポインティング位置である点１１１が示されている。そして、点１１１から点１１２までの変化量、例えば距離ｄ（両ポインティング位置の座標に基づいて算出可能である）が、予め定められている第１の所定値未満であるとする。この場合は、通常カーソル移動操作、または、画面スクロール領域内であれば、上述したような画面をスクロールする処理が実行される（図１７の例では、仮想カメラが少し右に回転することになる）。
【０１００】
一方、図１６の状態から１フレーム後の状態が、図１８に示すような状態であるとする。図１８では、前のフレームでのポインティング位置である点１１１から現在のポインティング位置である点１１２までの距離ｄが第１の所定値以上であるとする。つまり、変化量が第１の所定値以上であることが検出された状態とする。この場合は、斬撃処理が実行される。斬撃処理では、まず、斬撃の開始点が設定される。具体的には、前フレームの点１１１を、図１９に示すように、斬撃開始点１２１とする。そして、斬撃開始点１２１と点１１２との軌跡を算出し、この軌跡に基づいた斬撃軌跡の描画や敵オブジェクト１０３との当たり判定処理等が実行される。
【０１０１】
その後、１フレーム毎に、現在のポインティング位置と直前フレームでのポインティング位置との距離ｄを算出し、図２０および図２１に示すように、当該距離ｄが第２の所定値より大きい間は、上記斬撃軌跡の描画や当たり判定処理を継続する。
【０１０２】
次に、図２２に示すように、斬撃開始点１２１を決めた後において、現在のポインティング位置である点１１５と直前フレームでのポインティング位置である点１１４との距離ｄが第２の所定値以下となった場合、現在のポインティング位置である点１１５を、図２３に示すように斬撃終了点１２２とする。その結果、斬撃軌跡１０８は、斬撃開始点１２１から斬撃終了点１２２までに検出されたポインティング位置を通る軌跡となる。
【０１０３】
このように、本実施形態では、所定の単位時間（１フレーム毎）におけるポインティング位置の変化量（カーソル１０２の表示位置の変化量）が第１の所定値以上か否かで、通常カーソル移動操作またはスクロール処理と斬撃操作の２種類の操作を使い分ける。斬撃操作に際しては、上記変化量が第１の所定値以上であることが検出されたときに、１フレーム前のポインティング位置を斬撃開始点として設定している。その後、変化量が第２の所定値以下になれば、斬撃終了点の設定を行っている。これにより、所定速度以上でカーソル１０２を動かすことで、その軌跡を斬撃軌跡１０８とすることができる。そのため、上記図２３の例のような直線的な斬撃軌跡１０８に限らず、図２４に示すような曲線的な斬撃軌跡１０８とすることも可能である。図２４では、左下から右上、そして、右下方向へ連なる、山なりの斬撃軌跡１０８となっている。そして、このような軌跡の場合は、図２５に示すようなゲーム画面が描画される（なお、図２５では、斬撃軌跡１０８が敵オブジェクト１０３に命中していない状態であり、斬撃軌跡１０８には命中エフェクトがかかっていない）。つまり、直線的な斬り方に限らずに、画面内においてプレイヤが所望する任意の場所を自由に斬ることが可能であり、自由度の高い操作を実現している。
【０１０４】
なお、斬撃開始点１２１が設定された後、ポインティング位置が画面外となった場合は、ポインティング位置が画面外であることが検出されたときに斬撃終了点１２２が設定される。例えば、画面端を斬撃終了点１２２とする。図２６は、斬撃開始後、ポインティング位置が画面外となった場合の斬撃軌跡１０８の一例を示したものである。また、図２７は、この場合のゲーム画面の一例を示したものである。図２７では、ポインティング位置が画面外（画面の右上付近）となっているため、カーソル１０２は画面内に表示されていない状態である（代わりに、画面右上にカーソル１０２の移動方向を示す複数の三角形が表示されている）。
【０１０５】
次に、ゲーム装置本体３によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際に外部メインメモリ１２に記憶されるデータについて説明する。図２８は、ゲーム装置本体３の外部メインメモリ１２のメモリマップを示す図である。図２８において、外部メインメモリ１２は、プログラム記憶領域３３０およびデータ記憶領域３３２を含む。プログラム記憶領域３３０およびデータ記憶領域３３２のデータの一部は、光ディスク４に記憶され、ゲームプログラム実行時には外部メインメモリ１２に転送されて記憶される。
【０１０６】
プログラム記憶領域３３０には、後述の図２９等に示すフローチャートの処理を実行するメイン処理プログラム３３１等のプログラムが記憶される。
【０１０７】
データ記憶領域３３２には、操作データ３３３、今回ポインティング座標データ３３４、前回ポインティング座標データ３３５、ポインティング履歴データ３３６、攻撃不能時間データ３３７、インターバルカウンタ３３８、および斬撃発生フラグ３３９等のデータが記憶される。
【０１０８】
操作データ３３３は、コントローラ７から取得されるデータであり、上記マーカ座標（図８参照）を示すマーカ座標データ３３３１が含まれる。ここで、図８に示したような撮像画像内にマーカ８Ｌおよび８Ｒのいずれか一方が写っていないときは、そのことを示す値（例えばＮＵＬＬ値）が設定されるものとする。その他、操作データ３３３には、各種ボタンの押圧状態を示すデータや加速度データ、拡張コントローラ３６の操作内容（上記アナログスティック３９の操作等）を示すデータ等、プレイヤの操作内容を示すデータが含まれる。
【０１０９】
今回ポインティング座標データ３３４は、上記マーカ座標データ３３３１に基づいて算出されるデータであり、コントローラ７のポインティング座標を示すデータである。前回ポインティング座標データ３３５は、直前のフレームにおける処理で算出されたポインティング座標を示すデータである。
【０１１０】
ポインティング履歴データ３３６は、斬撃開始後、斬撃が終了するまでに検出されたポインティング座標の履歴を示すデータである。上記斬撃軌跡１０８を生成、描画するために用いられる。
【０１１１】
攻撃不能時間データ３３７は、一連の斬撃操作終了後に設けられている攻撃不能時間の長さを示すデータである。攻撃不能時間とは、本ゲームの内容に鑑みて、例えば、プレイヤがコントローラ７を手首だけ使って左右に素早く振るような操作等で続けざまに斬撃ができることを防ぐために設けられた時間である。すなわち、一回分の斬撃終了後は、すぐに続けて斬撃を行うことができない。
【０１１２】
インターバルカウンタ３３８は、上記攻撃不能時間の経過をカウントするためのカウンタである。初期値としては”０”が設定される。
【０１１３】
斬撃発生フラグ３３９は、斬撃中か否かを示すためのフラグである。オンであれば、斬撃中であることを示し、オフのときは斬撃が発生していない事を示す。初期値はオフに設定される。
【０１１４】
次に、図２９〜図３４を参照して、ゲーム装置本体３によって実行されるゲーム処理について説明する。なお、図２９および図３０はゲーム装置本体３によって実行されるゲーム処理を示すフローチャートである。また、図３１は、図２９の変化量算出処理の詳細な動作を示すサブルーチンであり、図３２は、図３０の当たり判定処理の詳細な動作を示すサブルーチンである。また、図２９〜図３０のフローチャートの処理が１フレーム毎に繰り返されることによって、ゲームが進行していく。なお、図２９〜図３０に示すフローチャートにおいては、ゲーム全体にかかる処理のうち、上述した斬撃操作についての処理について説明し、本願発明とは直接関連しない他の処理については詳細な説明を省略する。
【０１１５】
まず、ステップＳ１において、上記外部メインメモリ１２からマーカ座標データ３３３１が取得される。
【０１１６】
続くステップＳ２において、コントローラ７の撮像画像において、マーカ８Ｌ、８Ｒが検出されているか否かが判定される。すなわち、コントローラ７がテレビ２の方に向いているか否かが判定される。具体的には、ＣＰＵ１０は、図８に示したような撮像画像においてマーカ８の画像が撮像されていたか否かを判定する。上述のように、当該撮像画像内にマーカ８Ｌおよび８Ｒのいずれか一方が写っていないときは、そのことを示す値（例えばＮＵＬＬ値）がマーカ座標データ３３３１に設定されるため、当該値が設定されているか否かを判定することで、コントローラ７がテレビ２の方に向いているか否かを判定することができる。
【０１１７】
ステップＳ２の判定の結果、マーカ８Ｌまたは８Ｒのいずれか一方が検出されなかったときは（ステップＳ２でＮＯ）、後述するステップＳ１５へ処理が進められる。一方、マーカ８Ｌおよび８Ｒの双方が検出されたときは（ステップＳ２でＹＥＳ）、ステップＳ３において、ポインティング位置の算出が実行される。
【０１１８】
以下、ポインティング座標の算出方法の一例を説明する。上述のように、マーカ座標データ３３３１には、上記マーカ座標を示すデータが含まれる。当該データは、マーカ８Ｌおよび８Ｒに対応する２つのマーカ座標（図８参照）を示すので、まずＣＰＵ１０は、２つのマーカ座標の中点を算出する。この中点の位置は、撮像画像に対応する平面上の位置を表すための上記ｘｙ座標系によって表現される。次に、ＣＰＵ１０は、当該中点の位置を示す座標を、テレビ２の画面上の位置を表すための座標系（ｘ'ｙ'座標系とする）の座標に変換する。この変換は、ある撮像画像から算出される中点の座標を、当該撮像画像が撮像される時のコントローラ７の実際の指示位置に対応する画面上の座標に変換する関数を用いて行うことができる。その際、コントローラ７の指示位置と、撮像画像内でのマーカ座標の位置とは逆方向に移動することになるので、上下左右が反転するような変換を行う。以上のようにして算出されたｘ'ｙ'座標値により示される座標値がコントローラ７のポインティング座標となる。
【０１１９】
ポインティング座標の算出処理の次に、ステップＳ４において、斬撃発生フラグ３３９がオンに設定されているか否かが判定される。当該判定の結果、オンに設定されていれば（ステップＳ４でＹＥＳ）、既に斬撃が開始されているため、後述するステップＳ１６へと処理が進められる。
【０１２０】
一方、斬撃発生フラグ３３９がオフに設定されていれば（ステップＳ４でＮＯ）、続くステップＳ５において、ポインティング位置が画面内か否かが判定される。これは、例えばコントローラ７がテレビ２の外枠部分をポインティングしているような場合等、コントローラ７をテレビ２（マーカ８）には向けており、撮像画像には一応マーカ８が写ってはいるが、画面内はポインティングしていないような場合を想定したものである。ここでは、上記ステップＳ３においてマーカ座標を変換して得られたポインティング座標が、予め「画面外の座標」として定義されている所定の範囲内の値（例えば、画面外周を縁取ったような領域を当該所定の範囲として定義しておく）であるか否かで判定する。
【０１２１】
ステップＳ５の判定の結果、ポインティング位置が画面内でないときは（ステップＳ５でＮＯ）、後述のステップＳ１５に処理が進められる。一方、ポインティング位置が画面内のときは（ステップＳ５でＹＥＳ）、次に、ステップＳ６において、１フレーム前から現在のフレームまでのポインティング位置の変化量を算出するための変化量算出処理が実行される。図３１は、上記ステップＳ６で示した変化量算出処理の詳細を示すフローチャートである。図３１において、まず、ステップＳ３１において、上記ステップＳ３で得られたポインティング座標が今回ポインティング座標データ３３４に記憶される。
【０１２２】
続くステップＳ３２で、前回ポインティング座標データ３３５が外部メインメモリ１２から読み出される。
【０１２３】
そして、ステップＳ３３において、これら２つのポインティング座標データで示される座標（以下、それぞれ単に、今回ポインティング座標、前回ポインティング座標と呼ぶ）に基づいて変化量が算出される。具体的には、今回ポインティング座標を（Ｘ１，Ｙ１）とし、前回ポインティング座標を（Ｘ２，Ｙ２）とすると、以下の式で変化量Ｃが算出される。
【０１２４】
【数１】
2010104778.tif 000003
以上で、変化量算出処理は終了する。
【０１２５】
図２９に戻り、次に、ステップＳ７において、上記算出された変化量Ｃが予め設定されている第１の所定値以上か否かが判定される。つまり、プレイヤが上記カーソル１０２を素早く移動させたのか、ゆっくり移動させたのかが判定される。当該判定の結果、変化量が所定値未満のときは（ステップＳ７でＮＯ）、後述のステップＳ１５に処理が進められる。
【０１２６】
一方、変化量が所定値以上のときは（ステップＳ７でＹＥＳ）、続くステップＳ７００において、インターバルカウンタ３３８の修正処理が行われる。この処理は、プレイヤがコントローラ７を手首だけ使って左右に素早く振るような操作等で続けざまに斬撃を行おうとした場合に、コントローラ７が素早く左右に振られている間は斬撃を不能とするための処理である。このような処理を実現するため、本処理では、上記攻撃不能時間よりも短い時間として予め定義された”ペナルティ開始時間”というパラメータを用いて、以下のような処理が行われる。まず、インターバルカウンタ３３８の値が当該ペナルティ開始時間以上かつ攻撃不能時間未満であるか否かが判定される。そして、ペナルティ開始時間以上かつ攻撃不能時間未満であるときには、インターバルカウンタ３３８の値をペナルティ開始時間へと戻す処理が行われる。ペナルティ開始時間から攻撃不能時間までの期間をペナルティ期間と呼ぶとすると、ペナルティ期間内に所定速度以上でコントローラ７が操作されたときは、上述したような、プレイヤがコントローラ７を手首だけ使って左右に素早く振るような操作等で続けざまに斬撃を行おうとした状況であると考えられる。そのため、ここで、インターバルカウンタ３３８の値をペナルティ開始時間へと戻す（つまり、手首だけ使ってコントローラ７を左右に素早く振るような操作中は、インターバルカウンタ３３８の値が攻撃不能時間に達しないようにする）ことによって、続けざまの斬撃を行おうとする動作の後、ペナルティ期間が経過しないうちに再び続けざまの斬撃を行おうとする動作についても斬撃を不能にできる。すなわち、プレイヤは、続けざまの斬撃を行おうとした動作を行った後、ペナルティ期間が経過するまで（手首だけ使ってコントローラ７を左右に素早く振るような操作が止められた場合等が該当する）は、斬撃を行うことができない。なお、インターバルカウンタ３３８の値がペナルティ開始時間未満であるときは、斬撃後の反動でポインティング位置が斬撃終了時の位置から変化してしまった状況であると考えられる。このような場合については、プレイヤがコントローラ７を手首だけ使って左右に素早く振るような操作等で続けざまに斬撃を行おうとした状況であると判別しない。
【０１２７】
続くステップＳ８において、インターバルカウンタ３３８で示される経過時間が攻撃不能時間データ３３７で示される攻撃不能時間以上か否かが判定される。インターバルカウンタ３３８で示される経過時間が攻撃不能時間未満のときは（ステップＳ８でＮＯ）、後述のステップＳ１５に処理が進められる。
【０１２８】
一方、インターバルカウンタ３３８で示される経過時間が攻撃不能時間データ３３７で示される時間以上の時は（ステップＳ８でＹＥＳ）、続くステップＳ９において、インターバルカウンタ３３８のカウントアップの停止が行われる（なお、カウントの開始は、後述のステップＳ２３の処理で行われる）。更に、インターバルカウンタ３３８がリセットされる。
【０１２９】
次に、ステップＳ１０において、斬撃発生フラグ３３９にオンが設定される。続くステップＳ１１において、前回ポインティング座標が斬撃開始点１２１（図１９参照）として設定される。
【０１３０】
次に、ステップＳ１２において、上記ステップＳ３で算出されたポインティング座標がポインティング履歴データ３３６に追加される。
【０１３１】
次に、ステップＳ１３において、上記ポインティング履歴データ３３６が参照され、前回ポインティング座標から今回ポインティング座標を結ぶ斬撃軌跡１０８が算出される。そして、当該斬撃軌跡１０８の描画が実行される。なお、この斬撃軌跡１０８は、所定時間継続して表示される。併せて、今回ポインティング座標で示される画面上の位置にカーソル１０２が描画される。また、プレイヤオブジェクト１０１が剣を振っている様子が表示されるように、剣オブジェクト１０４も適宜移動され、プレイヤオブジェクト１０１の姿勢も適宜変更される。
【０１３２】
次に、ステップＳ１４において、斬撃が敵オブジェクト１０３に命中したか否かを判定するための、当たり判定処理が実行される。図３２は、上記ステップＳ１４で示した当たり判定処理の詳細を示すフローチャートである。図３２において、まず、ステップＳ４１において、上記ポインティング座標を仮想空間内における対応位置を示す３次元座標に変換する。具体的には、投影行列の逆行列を当該ポインティング座標に適用することで、２次元のポインティング座標を仮想空間内に存在する投影面上の座標に変換する（以下、投影面上座標と呼ぶ）。次に、ステップＳ４２において、仮想空間内における仮想カメラの位置から上記投影面上座標に向けて、仮想的なレイ（光線）が飛ばされる（なお、当該レイは画面には表示されない、不可視のものとして処理される）。そして、当該レイがいずれかの敵オブジェクト１０３と接触したか否かが判定される。ここで、当該レイについて補足すると、本実施形態では、ある程度の太さ（幅）を有したレイを飛ばしている。これは、以下のような理由による。本実施形態では、上記のように１フレーム毎に、そのフレームにおけるポインティング座標を変換した投影面上座標に基づいてレイを飛ばす。そのため、速い速度でカーソル１０２を動かした場合、直前のフレームにおけるポインティング座標に対応する投影面座標と現在のフレームにおけるポインティング座標に対応する投影面上座標との間に敵オブジェクト１０３が存在するようなときに、当該敵オブジェクト１０３の居る位置をレイが通過しないために敵オブジェクト１０３に攻撃が命中しないという結果となり得ることがある（図３３参照）。そこで、本実施形態では、レイにある程度の太さを持たせることによりレイを敵オブジェクト１０３に衝突させやすくし、このようなポインティング座標間に存在するような敵オブジェクト１０３に攻撃が命中しないという状況を防いでいる（図３４参照）。
【０１３３】
上記ステップＳ４２の判定の結果、上記レイがいずれの敵オブジェクト１０３と接触していないときは（ステップＳ４２でＮＯ）、攻撃は命中していないとして、当たり判定処理は終了する。一方、敵オブジェクト１０３と衝突していたときは（ステップＳ４２でＹＥＳ）、攻撃が命中したとして、次のステップＳ４３で命中処理が実行される。当該命中処理では、衝突した敵オブジェクト１０３にダメージを与える処理や、斬撃軌跡のうち、敵オブジェクト１０３に命中した箇所以降の軌跡に重ねて所定の命中エフェクト（図１５の命中エフェクト１０９参照）を描画する処理が実行される。なお、命中エフェクトに関しては、上記のような重ね描画に限らず、敵オブジェクト１０３に命中した箇所以降の軌跡の表示色を変更することで命中エフェクトとするようにしてもよい。以上で、当たり判定処理は終了する。
【０１３４】
続くステップＳ１５で、今回ポインティング座標データ３３４の値で前回ポインティング座標データ３３５を更新する処理が実行される。なお、ポインティング座標が画面外の位置を示すとき（上記ステップＳ２やＳ５でＮＯのとき）は、ポインティング座標が画面外の位置であることを示す値が前回ポインティング座標データ３３５に設定される。その後、ゲーム処理が終了する。
【０１３５】
次に、上記ステップＳ４の判定の結果、斬撃発生フラグ３３９がオンに設定されていたときの処理（ステップＳ４でＹＥＳ）について説明する。すなわち、斬撃が開始された後の処理について説明する。このときは、まず、ステップＳ１６において、ポインティング位置が画面内か否かが判定される。当該ステップＳ１６の処理は、上記ステップＳ５と同様の内容である。当該判定の結果、ポインティング位置が画面内でないときは（ステップＳ１６でＮＯ）、斬撃が開始された後にポインティング位置が画面外へ出たことになり、後述のステップＳ１９に処理が進められる。一方、ポインティング位置が画面内であるときは（ステップＳ１６でＹＥＳ）、ステップＳ１７において、変化量算出処理が実行される。当該ステップＳ１７の処理は上記ステップＳ６と同様の処理であるため、ここでは詳細な説明は省略する。
【０１３６】
次に、ステップＳ１８において、ステップＳ１７で算出された変化量Ｃが予め定義されている第２の所定値以下であるか否かが判定される。つまり、所定速度以上のカーソルの移動によって斬撃が開始された後、カーソルの移動速度が所定の速度以下になったか否かが判定される。当該判定の結果、変化量Ｃが第２の所定値以下ではないときは（ステップＳ１８でＮＯ）、斬撃状態が継続していることになるため、上記ステップＳ１２に処理が進められ、ポインティング履歴の追加や斬撃軌跡１０８の描画等が実行される。
【０１３７】
一方、変化量Ｃが第２の所定値以下になったときは（ステップＳ１８でＹＥＳ）、斬撃を終了させるため、以下の処理が実行される。まず、ステップＳ１９で、斬撃発生フラグ３３９にオフが設定される。次に、ステップＳ２０において、今回ポインティング座標が斬撃終了点１２２として設定される。このとき、ポインティング位置が画面外であるときは（上記ステップＳ１６でＮＯのとき）、ＣＰＵ１０は、前回ポインティング座標とその一つ前に検出されたポインティング座標とを結ぶ軌跡をそのまま画面の端まで延ばした軌跡を算出し、当該軌跡が交わった画面の端の座標を斬撃終了点１２２として設定する。
【０１３８】
次に、ステップＳ２１において、上記ステップＳ１３と同様の処理が行われることで、斬撃開始点１２１から今回ポインティング座標１２２を結ぶ斬撃軌跡が描画される。
【０１３９】
続くステップＳ２２において、ポインティング履歴データ３３６がクリアされる。更に、ステップＳ２３において、インターバルカウンタ３３８のカウントアップが開始される。その後、上記ステップＳ１５に処理が進められる。以上で、本実施形態にかかるゲーム処理は終了する。
【０１４０】
以上のように、第１の実施形態では、１フレームでのポインティング位置の変化量が所定値より大きいとき、すなわち、所定の速度以上でカーソルを動かしたときに、そのときのポインティング位置を起点とした斬撃を開始している。その後、カーソルの移動速度が所定値以下になれば、そのときのポインティング位置を斬撃の終点と設定して斬撃を終了している。これにより、撮像装置とマーカ８に基づいてポインティング位置を検出するようなゲームシステムにおいて、カーソルを移動する操作について、ゆっくり移動させたときと速く移動させたときとで異なる処理を実行することが可能となる。また、所定速度以上でカーソルを移動した際のポインティング位置を開始点に設定して処理を実行できる。その結果、より自由度の高い操作が可能となり、新しい楽しみ方をプレイヤに提供することができる。
【０１４１】
なお、上記実施形態では、ポインティング位置の変化量を画面の描画間隔である１フレーム（１／６０秒）単位で算出するようにしていたが、これに限らず、例えば、コントローラ７からゲーム装置本体３への操作データの送信間隔である５ｍｓ（１／２００秒）単位で上記変化量の算出を行うようにしても良い。例えば、コントローラ７から送信される操作データを１フレーム分、所定のバッファに溜めておき、当該バッファに蓄積されたデータの分だけ上記ステップＳ６およびＳ１７の変化量算出処理を繰り返して実行するようにしても良い。また、上記のような１フレーム前のポインティング位置（前回ポインティング座標）からの変化量ではなく、当該１フレーム分の操作データ内におけるポインティング位置の変化量に基づいて上記ステップＳ７やＳ１８の処理を実行するようにしてもよい。
【０１４２】
また、プレイヤオブジェクトの持つ武器の種類を複数設定しておき、上記当たり判定処理において、攻撃が奥行き方向に届く距離（武器の射程範囲、換言すれば、上記ステップＳ４２で飛ばすレイの長さ）を個別に設定するようにしても良い。この場合、複数種類の武器を示す「武器データ」を定義し、各「武器データ」に「射程距離」というデータを予め定義する。例えば、「片手剣」よりも「両手剣」のほうが射程距離を長くなるよう定義する。つまり、「両手剣」のほうが遠くの敵オブジェクトに攻撃が届く（つまり、両手剣の方が片手剣よりも刀身が長い）ような定義を行っておく。そして、上記ステップＳ１４の当たり判定処理において、現在使用している武器の「武器データ」から「射程距離」を読み込み、当該「射程距離」に応じた仮想ゲーム空間内の距離だけ、上記仮想カメラの位置から上記投影面上座標に向けて上記レイを飛ばし、当該レイと敵オブジェクト１０３との衝突判定を行うようにしてもよい。このように、「射程距離」というパラメータを用いることで、複数の武器をゲーム内で用いるときに、各武器毎に特色を出すことができ、ゲームの興趣性をより高めることが可能となる。
【０１４３】
また、斬撃軌跡１０８の描画に関して、当該斬撃軌跡１０８を描画する前に、カーソル１０２の移動軌跡を示す表示を行うようにしてもよい。例えば、図３５に示すように、カーソル１０２の移動軌跡１３１を斬撃軌跡１０８よりも先に描画するようにし、数フレーム遅らせて斬撃軌跡１０８を描画するようにしてもよい（斬撃軌跡１０８が移動軌跡１３１をなぞるような描画となる）。これにより、上記のように複数種類の武器を設定したおり、振り回すのに時間のかかるような重い武器をプレイヤオブジェクト１０１が用いているときに、その武器の重量感を表現することができ、よりゲームの興趣性を高めることができる。また、プレイヤがどのような軌跡を描いたかをより把握させやすくすることもできる。
【０１４４】
更には、上記武器データのパラメータとして、その武器の「切れ味」を示す「貫通力」というパラメータを設定し、これに基づいた処理を行うようにしても良い。例えば、斬撃軌跡１０８に複数の敵オブジェクト１０３が重なっている場合、貫通力の低い武器（切れ味の鈍い武器）は、一度の斬撃では一体の敵オブジェクト１０３しか斬ることができない（上記命中処理が一体の敵オブジェクト１０３についてのみ実行される）が、貫通力の高い武器（切れ味の鋭い武器）であれば、一度の斬撃で当該斬撃軌跡１０８と重なっている複数の敵オブジェクト１０３を斬る（上記命中処理が斬撃軌跡１０８と重なる各敵オブジェクト１０３に対して実行される）ことができるような処理が実行されるようにしても良い。より具体的には、「貫通力」パラメータの内容として、「最初に斬撃が敵オブジェクト１０３に命中した位置から斬撃を続けられる距離（ピクセル数）」を設定する。例えば、「貫通力」パラメータに“１００“という値を設定すれば、最初に命中した敵オブジェクト１０３の画面上における位置（最初に斬撃が命中した敵オブジェクト１０３の仮想空間内における位置を３次元座標系から２次元座標系（画面座標系）に変換した位置）から１００ピクセル分の距離までは斬撃が継続（斬撃軌跡を描画）し、この距離内では何体でも敵オブジェクト１０３を斬れるような処理を実行する（但し、奥行き方向に敵オブジェクト１０３が重なっていた場合は、一番手前の敵オブジェクト１０３にのみ命中処理を行うようにする）。このように、「貫通力」を「斬撃が継続する距離（ピクセル数）」として設定することで、複数の武器をゲーム内で用いるときに各武器毎に特色を出すことができ、ゲームの興趣性をより高めることが可能となる。また、例えば、仮想空間内において全長３０メートルの大型敵オブジェクトを登場させ、かつ、当該大型敵オブジェクトに複数の命中ポイントを設定する（つまり、一体の大型敵オブジェクトに対して複数回の命中処理が実行され得る）ことで、敵オブジェクト１０３についても特色を出すことができ、ゲームの興趣性を高めることができる。
【０１４５】
また、例えば上記「貫通力」パラメータに、一度の斬撃で同時に攻撃できる数を設定するようにしても良い。例えば、貫通力に“５”という値を設定しておく（一度の斬撃で同時に敵オブジェクト１０３を５体まで攻撃できることを示す）。そして、斬撃軌跡１０８に重なっている敵オブジェクト１０３が複数存在する場合、敵オブジェクト１０３の１体に斬撃が命中する度に（例えば、上記ステップＳ４３の処理において）「貫通力」パラメータから“１”を減算していく。そして、「貫通力」が“０”になったときに、斬撃終了とする処理（つまり、上記ステップＳ１８でＹＥＳと判定されたときの処理）を実行するようにすればよい。例えば、図３６に示すように、上記ステップＳ１８でＮＯと判定された後に、ステップＳ５１において当該「貫通力」が“０”か否かを判定し、“０”でなければ（ステップＳ５１でＮＯ）ステップＳ１２の処理に進み、“０”であると判定されたとき（ステップＳ５１でＹＥＳ；すなわち、上記変化量Ｃはまだ第２の所定値以下ではないが、貫通力が“０”となったとき）にはステップＳ１９の処理に進むような制御を実行しても良い。
【０１４６】
更には、上記「貫通力」パラメータの減算値を敵オブジェクト１０３の種類や、予め敵オブジェクト１０３毎に設定されている「防御力」というパラメータに応じて変化させてもよい。例えば、鎧を装備していない敵Ａ（例えば、防御力パラメータが「１」と設定されている）であれば、上記斬撃が命中した際、貫通力を「１」減算するが、鎧を装備している敵Ｂ（例えば、防御力パラメータが「３」と設定されている）については、貫通力を「３」減算するようにしてもよい。具体的には、上記ステップＳ１４の当たり判定処理において、図３７に示すような処理が実行されるようにする。図３７に示す処理は、ステップＳ６１の処理以外は、図３２を用いて説明した処理と同じである。そのため、ここでは、ステップＳ６１以外の処理については説明を省略する。図３７に示す当たり判定処理においては、ステップＳ４２の判定の結果、ＹＥＳと判定されたとき、ステップＳ６１において、レイが衝突した（つまり、攻撃が命中した）敵オブジェクト１０３に応じた値だけ貫通力を減算する。上述した防御力パラメータの例で言うと、攻撃が命中した敵が敵Ａであれば「貫通力」パラメータから「１」を減算し、敵Ｂであれば、「貫通力」パラメータからを「３」を減算する。これにより、敵オブジェクト１０３のそれぞれに個性を持たせることができ、よりゲームの興趣性を高めることができる。
【０１４７】
また、上記実施形態では、攻撃方法の一例として剣オブジェクト１０４による斬撃の場合を例に挙げたが、これに限らず、剣オブジェクト１０４の代わりに、棍棒オブジェクトのような打撃武器を用いるようにしても良い。この場合も、剣オブジェクト１０４の場合と同様に上記斬撃軌跡上の敵オブジェクト１０３に対して上記命中処理が実行される。そして、上記命中エフェクトとして、打撃武器に相応しいエフェクト（例えば、敵オブジェクト１０３が吹っ飛ぶ表示等）を用いるようにすればよい。
【０１４８】
また、斬撃開始点に関して、上記実施形態では、前回ポインティング座標を斬撃開始点１２１としていたが、これに限らず、今回ポインティング座標を斬撃開始点１２１としてもよい。また、前回ポインティング座標と今回ポインティング座標の中点を算出し、当該中点を斬撃開始点１２１と設定するようにしても良い。また、ポインティング座標と斬撃開始点１２１とを対応付けたテーブルを予め用意しておき、当該テーブルに基づいて斬撃開始点１２１を決定するようにしてもよい。斬撃終了点１２２についても、上記実施形態では今回ポインティング座標を用いていたが、前回ポインティング座標を斬撃終了点１２２として設定しても良いし、前回ポインティング座標と今回ポインティング座標の中点を斬撃終了点１２２と設定するようにしても良い。また、ポインティング座標と斬撃終了点１２２とを対応付けたテーブルを予め用意しておき、当該テーブルに基づいて斬撃終了点１２２を決定するようにしてもよい。更には、上記のように武器の種類を複数設定している場合には、上記斬撃開始点および斬撃終了点を設定するための上記第１の所定値および第２の所定値について、武器の種類によってそれぞれ異なる値を用いるようにしても良い。例えば、武器毎に上記第１の所定値および第２に所定値を定義したテーブルを予め用意し、ゲーム処理の実行の際に外部メインメモリ１２に読み込んでおく。そして、上記図２９に示したフローチャートの処理の開始時に当該テーブルを参照して、プレイヤオブジェクト１０１の装備武器として設定されている武器に応じた第１の所定値および第２の所定値を取得して用いるようにすればよい。
【０１４９】
また、斬撃軌跡が所定の図形を描いたとき、例えば円や三角形などの図形を描いたときに、上記ステップＳ１４の当たり判定処理における衝突判定を当該図形の内側の領域についてのみ行うようにしてもよい。
【０１５０】
また、上記のような剣劇ゲームだけでなく、例えば、所定の速度以上でポインティング位置を移動させたときにのみ所定の処理を実行させるものであれば、剣劇ゲーム以外にも本発明は適用可能である。例えば、カーソルを所定の速さ以上で動かしたときにのみ字を書くことが可能な「早書きゲーム」（綺麗な字を素早く書くことを競うゲーム）のようなゲームにも適用可能である。
【０１５１】
また、上記実施形態では、コントローラ７を用いたカーソルの操作、つまり、ポインティング位置の検出の例として、コントローラ７に備えられた撮像素子７４３でマーカ８Ｌ，８Ｒを撮像した撮像画像に基づいてポインティング位置を検出する場合を例に挙げた。この他、例えばテレビ２側に所定のカメラを配置し、当該カメラで撮像した画像に基づいてポインティング位置を検出してもよい。例えば、コントローラ７の前面に上記マーカ８を配置し、当該マーカを撮像した画像に基づいてポインティング位置を検出したり、テレビ２側に配置されたカメラで、（コントローラ７を持っている）プレイヤが映っている画像を撮像し、当該撮像した画像を解析してコントローラ７の位置を検出して、ポインティング位置を算出するようにしてもよい。また、その他のポインティングデバイスを用いて、画面上の所定の位置をポインティングするようにしてもよい。例えば、アナログスティックやマウスで画面に表示されているカーソルを操作することでポインティング位置を変化させてもよい。また、タッチパネルを用いて画面上の所定の位置をポインティングするようにしてもよい。
【０１５２】
（第２の実施形態）
次に、図３８から図４４を参照して、本発明の第２の実施形態について説明する。上述の第１の実施形態では、武器として剣を用いた場合、つまり、「斬撃」という攻撃方法を例として説明した。すなわち、所定の速度範囲内でカーソル１０２を動かしている間（つまり、カーソル１０２の移動速度が上記第１の所定値以上、第２の所定値以下の間）、「斬撃」を発生させていた。これに対して、第２の実施形態では、所定の速度範囲内でカーソルを動かしている間、斬撃ではなく、以下に述べるような投擲オブジェクトを投げるという攻撃方法（以下、投擲攻撃と呼ぶ）を用いる。より具体的には、武器として「杖」を用い、所定の速度範囲内でカーソルを動かしている間（つまり、杖を振っているのと同様の操作）、杖の先から「爆弾」を発射するという攻撃が行われる。なお、当該実施形態に係るゲームシステム１は、上述した第１の実施形態と同様であるため、同一の参照符号を付して詳細な説明を省略する。
【０１５３】
次に、第２の実施形態における処理の概要を説明する。図３８は、第２の実施形態にかかるゲーム画面の一例を示す図であり、プレイヤオブジェクト１０１が杖オブジェクト２０１を（右から左に）振った様子が示されている。また、画面内には、複数の爆弾２０２が表示されている。上述のように、第２の実施形態では、プレイヤオブジェクト１０１は、杖オブジェクト２０１を武器として装備する（なお、本ゲームでは、所定の操作で装備武器の切替が可能となっているものとする）。そして、第１の実施形態における斬撃の操作のときと同様の操作をプレイヤが行うと、ポインティング位置の移動に応じてプレイヤオブジェクト１０１は杖オブジェクト２０１を振る。このとき、図３８に示すように、振っている杖の先から投擲オブジェクトである爆弾２０２が発射されて、仮想空間内の奥行き方向に向かって移動していく（つまり、爆弾２０２が投擲されることになる）。なお、当該爆弾の移動については、本実施形態では、仮想空間内における重力の影響（つまり、物理法則に基づく自由落下）を考慮して移動するものとする。例えば、仮想空間内において斜め上方向に爆弾２０２を投擲すれば、放物線を描くような軌跡で移動することになる。また、図３８では、爆弾２０２は複数表示されている。すなわち、本実施形態では、所定の速度以上でカーソル１０２を動かしている間は、所定の時間間隔で連続的に爆弾２０２が杖の先から発射される。また、本実施形態では、当該爆弾２０２は、敵オブジェクト１０３に当たれば爆発する他、敵オブジェクト１０３に当たっていないときでも、時限式で爆発するものとする。そして、この爆発により、敵オブジェクト１０３にダメージを与えることが可能である。
【０１５４】
ここで、上記投擲オブジェクト（本実施形態では爆弾２０２）の投擲方向の決定処理の概要について説明する。図３９は、当該投擲方向決定の概念を示す図である。本実施形態では、カーソルの移動速度が第１の所定値以上と判定されたときに、投擲方向を決定する処理が実行される。まず、カーソルの移動速度が第１の所定値以上と判定されたときのポインティング座標２０３に基づき、上記第１の実施形態で説明したような投影面上座標２０４が算出される。
【０１５５】
次に、仮想カメラを始点とし、上記投影面上座標を終点とするベクトル２０５が算出される。続いて、当該ベクトル２０５の始点が上記杖の先端の位置に来るように、当該ベクトル２０５を平行移動することで求まるベクトル２０６（以下、射出ベクトルと呼ぶ）が算出される。そして、当該射出ベクトル２０６に基づいて投擲オブジェクトを発射する処理が実行される。その結果、例えば、画面の上部を横切るようにカーソル１０２を動かせば、斜め上の奥行き方向に向かう射出ベクトルが算出されるため、投擲オブジェクトは仮想空間内の斜め上方向に向けて発射される。そして、上記のように物理法則に基づく移動制御が行われるため、放物線を描くように仮想空間内の奥行き方向に移動していく（その結果、より遠くに投擲オブジェクトを飛ばせる）ことになる。また、画面の下部を横切るようにカーソル１０２を移動させた場合は、斜め下方向に向けて投擲オブジェクトが発射されることになる（この場合は、あまり遠くまで投擲オブジェクトを飛ばすことはできない）。
【０１５６】
次に、第２の実施形態にかかるゲーム処理の詳細を説明する。まず、第２の実施形態において外部メインメモリ１２に記憶されるデータについて説明する。図４０は、第２の実施形態におけるゲーム装置３のメインメモリ１２のメモリマップを示す図である。図４０において、外部メインメモリ１２には、上記第１の実施形態で図２８を用いて説明したデータに、投擲カウンタ３４０、投擲中フラグ３４１、投擲オブジェクト連続発生数データ３４２を追加したものが記憶される。そのため、ここでは追加分のデータについてのみ説明し、その他のデータについては第１の実施形態と同様であるため、説明を省略する。
【０１５７】
投擲カウンタ３４０は、投擲オブジェクトを連続して発射するときの発射間隔を測るために用いるカウンタである。投擲オブジェクトを一つ発射すると、当該カウンタのカウントアップが始まり、所定値に達するまでは、次の投擲オブジェクトは発射されない。所定値に達すれば、当該カウンタがリセットされ、次の投擲オブジェクトが発射され、再度カウントアップが始まる。
【０１５８】
投擲中フラグ３４１は、投擲攻撃中か否かを示すためのフラグである。オンであれば、投擲攻撃中であることを示し、オフのときは投擲攻撃が発生していない事を示す。初期値はオフに設定される。
【０１５９】
投擲オブジェクト連続発生数データ３４２は、一回の振りにおいて、連続して配置（生成）された投擲オブジェクトの数を示すデータである。投擲オブジェクト連続発生数データ３４２が一定の値に達すると、再度振り直しを行うまで、新たな投擲オブジェクトが配置されることはない。これは、長く振った場合と短く振った場合とで、投擲攻撃の強さが大きく変わってしまわないようにするためである。
【０１６０】
以下、図４１〜図４４を用いて、第２の実施形態におけるゲーム処理の詳細動作を説明する。図４１〜図４２は、第２の実施形態にかかるゲーム処理の詳細を示すフローチャートである。なお、図４１および図４２において、ステップＳ１からステップＳ３までの処理と、ステップＳ５からステップＳ９までの処理と、ステップＳ１５からＳ１８までの処理と、ステップＳ７００の処理は、上述の第１の実施形態で図２９、図３０を用いて説明した、同じステップ番号の各処理と同様の処理であるため、ここでは詳細な説明を省略する。
【０１６１】
図４１において、ステップＳ３の処理でポインティング座標が算出された後、ステップＳ７１において、投擲中フラグ３４１がオンであるか否かが判定される。当該判定の結果、投擲中フラグ３４１がオンではないと判定されたときは（ステップＳ７１でＮＯ）、投擲攻撃を行っていない状態であるため、上述したようなステップＳ５に処理が進められる。その後、ポインティング位置が画面内に収まっており（ステップＳ５でＹＥＳ）、ポインティング位置の変化量が第１の所定値以上であり、かつ、攻撃不能時間内でもなければ（ステップＳ７、Ｓ８で共にＹＥＳ）、投擲攻撃を開始する処理が実行される。すなわち、上記ステップＳ９の処理でインターバルカウンタのカウントアップが停止され、当該カウンタがリセットされた後、ステップＳ７２において、投擲中フラグ３４１がオンに設定される。次に、ステップＳ７３において、投擲カウンタ３４０のカウントアップが開始される。
【０１６２】
次に、図４２のステップＳ８０において、投擲方向設定処理が実行される。図４３は、上記ステップＳ８０で示した投擲方向設定処理の詳細を示すフローチャートである。図４３において、まず、ステップＳ９１で、２次元座標系で示されているポインティング座標を３次元座標系で示される座標に変換する処理が実行される。当該処理は、第１の実施形態の説明で上述したステップＳ４１と同様の処理が行われる。すなわち、投影行列の逆行列を上記ポインティング座標に適用し、仮想空間内に存在する投影面上の座標に変換することで、上記投影面上座標が算出される。また、このとき、上記ポインティング座標に応じて、杖オブジェクト２０１等を適宜移動させる処理（つまり、プレイヤオブジェクト１０１が杖を振っている様子を示すための処理）も実行される。
【０１６３】
次に、ステップＳ９２において、仮想カメラ位置を始点、上記投影面上座標を終点とするベクトル２０５（上記図３９参照）が算出される。
【０１６４】
次に、ステップＳ９３において、上記ステップＳ９２で算出されたベクトル２０５の始点位置が杖オブジェクト２０１の先端位置に来るように当該ベクトル２０５を平行移動することで求まるベクトルを、上記射出ベクトル２０６（上記図３９参照）として算出する。この射出ベクトル２０６が、投擲オブジェクトの投擲方向を示すことになる。以上で、投擲方向設定処理は終了する。
【０１６５】
図４２に戻り、ステップＳ８０の投擲方向設定処理の次に、ステップＳ８１において、投擲オブジェクトが一つ生成され、杖オブジェクト２０１の先端位置に配置される。
【０１６６】
次に、ステップＳ８２において、仮想空間内に投擲オブジェクトが存在するか否かが判定される。本実施形態では連続して投擲オブジェクトを投擲可能であるため、上記ステップＳ８１で新たに配置された投擲オブジェクトの他、先に投擲した投擲オブジェクトであって、まだ爆発（消滅）していない投擲オブジェクトも含めて、仮想空間内に投擲オブジェクトが１つ以上存在しているか否かが判定される。当該判定の結果、仮想空間内に投擲オブジェクトは１つ以上存在していると判定されたときは（ステップＳ８２でＹＥＳ）、ステップＳ８３において、仮想空間内に存在している全ての投擲オブジェクトを所定の距離だけ移動させる。ここで、当該投擲オブジェクトの移動の制御については、上記射出ベクトル２０６で示される移動方向と物理法則に基づいて制御される。その後、ステップＳ８４に処理が進められる。一方、上記ステップＳ８２の判定の結果、仮想空間内に投擲オブジェクトが存在していないと判定されたときは（ステップＳ８２でＮＯ）、上記ステップＳ８３の処理は実行されずに、次のステップＳ８４の処理へと進められる。
【０１６７】
次に、ステップＳ８４において、上記ステップＳ８１において杖オブジェクト２０１の先端（換言すれば、仮想空間内）に配置されてから所定時間が経過した投擲オブジェクトが存在するか否かが判定される。上記のように、本実施形態では、投擲オブジェクトは時限式で爆発するため、この時限として設定されている時間が経過したか否かが投擲オブジェクトそれぞれについて判定されることになる。当該判定の結果、所定時間が経過した投擲オブジェクトが存在すると判定されたときは（ステップＳ８４でＹＥＳ）、ステップＳ８５において、当該所定時間が経過した投擲オブジェクトを爆発させる。一方、所定時間が経過した投擲オブジェクトが存在しないと判定されたときは（ステップＳ８４でＮＯ）、ステップＳ８５の処理はスキップして、次のステップＳ８６に処理が進められる。
【０１６８】
次に、ステップＳ８６において、当たり判定処理が実行される。図４４は、上記ステップＳ８６で示した当たり判定処理の詳細を示すフローチャートである。図４４においては、まず、ステップＳ１０１において、仮想空間内に存在している投擲オブジェクトが、他の何れかのオブジェクトと衝突したか否かが判定される（投擲オブジェクトが複数存在している場合は、それぞれの投擲オブジェクト毎に判定される）。ここでいう他のオブジェクトには、敵オブジェクト１０３の他、地形オブジェクト等も含まれる。また、プレイヤオブジェクト１０１を含むようにしてもよい。その場合は、自分の投擲した投擲オブジェクトに衝突しないようにプレイヤは注意を払うようになり、興趣性が増す。当該判定の結果、仮想空間内に存在する投擲オブジェクトが他のオブジェクトに衝突していなければ（ステップＳ１０１でＮＯ）、当たり判定処理は終了する。
【０１６９】
一方、他のオブジェクトに衝突している投擲オブジェクトがあるときは（ステップＳ１０１でＹＥＳ）、続くステップＳ１０２において、投擲オブジェクトが衝突したオブジェクトに対して命中処理が実行される。当該命中処理における処理の内容は、衝突したオブジェクトに応じて異なる内容となり、例えば、衝突したオブジェクトが敵オブジェクト１０３であれば、投擲オブジェクトを爆発させて仮想空間内から消去させる処理と、当該敵オブジェクト１０３のＨＰを減算する処理が実行され、当該敵オブジェクト１０３のＨＰが０になれば、敵オブジェクト１０３を仮想空間内から消去させる処理が加えて実行される。また、例えば、岩オブジェクトや樹オブジェクト等の地形オブジェクトに投擲オブジェクトが衝突したときは、地形オブジェクトにはＨＰが設定されていないため、投擲オブジェクトを爆発させて仮想空間内から消去させる処理のみが実行される。なお、地形オブジェクトに衝突した場合は、投擲オブジェクトの爆発処理は行わずに、物理法則に基づいた処理（岩オブジェクトに当たって跳ね返る動き等）を行うようにしてもよい。命中処理が終われば、当該当たり判定処理は終了する。
【０１７０】
図４２に戻り、ステップＳ８６の当たり判定処理が終われば、次に、上記ステップＳ１５において、今回ポインティング座標データ３３４の値で前回ポインティング座標データ３３５を更新する処理が実行され、当該ゲーム処理が終了する。
【０１７１】
次に、上記図４１のステップＳ７１の判定の結果、投擲中フラグ３４１がオンと判定されたとき（ステップＳ７１でＹＥＳ）の処理について説明する。この場合は、投擲攻撃中であるため、投擲攻撃中にかかる各処理が実行される。具体的には、まず、上記ステップＳ１６において、ポインティング位置が画面内か否かが判定され、画面内と判定されたときは、上述したステップＳ１７の変化量算出処理が実行され、ポインティング座標の変化量（つまり、カーソルの移動速度）が算出される。そして、上記ステップＳ１８において変化量が第２の所定値以下であるか否かが判定される。その結果、第２の所定値以下ではないと判定されたときは（ステップＳ１８でＮＯ）、ステップＳ７４に処理が進められる。
【０１７２】
ステップＳ７４において、投擲オブジェクト連続発生数データ３４２の値が所定値に達したか否かが判定される。すなわち、今回の振りにおいて配置（生成）された投擲オブジェクトが所定数に達したか否かが判定される。その結果、投擲オブジェクト連続発生数データ３４２の値が所定値に達したと判定されたときは（ステップＳ７４でＹＥＳ）、上述したステップＳ８２に処理が進められる。一方、投擲オブジェクト連続発生数データ３４２の値が所定値に達していないと判定されたときは（ステップＳ７４でＮＯ）、ステップＳ７５に処理が進められる。
【０１７３】
ステップＳ７５において、上記ステップＳ７３でカウントアップを開始した投擲カウンタ３４０が所定値に達したか否かが判定される。その結果、投擲カウンタ３４０が所定値に達していないと判定されたときは（ステップＳ７５でＮＯ）、上述したステップＳ８２に処理が進められる。たとえば、所定値が“３”であるとすれば、投擲攻撃中は、３フレームごとに投擲オブジェクトが投擲されることになる。一方、投擲カウンタ３４０が所定値に達したと判定されたときは（ステップＳ７５でＹＥＳ）、ステップＳ７６において、投擲カウンタ３４０がリセットされ、続いてステップＳ７７において、投擲オブジェクト連続発生数データ３４２をインクリメントし、上述したステップＳ８０に処理が進められる。
【０１７４】
一方、上記ステップＳ１６の判定の結果、ポインティング位置が画面内ではないと判定されたとき（ステップＳ１６でＮＯ）、または、上記ステップＳ１８で変化量が第２の所定値以下であると判定されたときは（ステップＳ１８でＹＥＳ）、次に、ステップＳ７８において、投擲中フラグ３４１がオフに設定される。続いて、ステップＳ７９において、投擲オブジェクト連続発生数データ３４２をリセットする。そして、上記ステップＳ２３においてインターバルカウンタ３３８のカウントアップが開始され、その後、上記ステップＳ８２以降の処理が実行される。以上で、第２の実施形態にかかるゲーム処理の詳細の説明を終了する。
【０１７５】
このように、第２の実施形態では、１フレームでのポインティング位置の変化量が第１の所定値以上になったとき、すなわち、所定の速度以上でカーソルを動かしたときに、上述したような投擲攻撃を開始している。その後、カーソルの移動速度が第２の所定値以下になるまでは、所定の時間間隔で、投擲オブジェクトが杖オブジェクトの先から発射され続ける。これにより、第１の実施形態で説明したような斬撃操作と切替可能とすることで、より自由度の高い操作を可能としつつ、プレイヤオブジェクト１０１が装備する武器に応じて異なる攻撃方法を楽しませることができ、ゲームの興趣性をより高めることが可能となる。
【０１７６】
なお、上述した第２の実施形態では、投擲オブジェクトの発射位置（移動開始位置）が、移動している（振られている）杖オブジェクト２０１の先端の場合を例として説明していた。投擲オブジェクトの発射位置は、これに限るものではなく、発射位置は固定位置としてもよい。例えば、杖オブジェクト２０１の位置に関わらず、プレイヤオブジェクト１０１の正面位置（例えばお腹の位置等）から投擲オブジェクトが発射されるようにしてもよい。
【０１７７】
また、上記第２の実施形態では、連続して発射される投擲オブジェクトの発射間隔については、投擲カウンタ３４０を用いることによる「時間」単位で制御していた。これに限らず、杖オブジェクト２０１の先端の移動距離（あるいは、ポインティング座標や投影面座標の移動距離でもよい）に基づいて発射間隔を制御するようにしてもよい。例えば、ポインティング位置の変化量を累積するようにして、当該累積した変化量が所定値を越えたときに上記投擲オブジェクトの生成および杖オブジェクト２０１の先端位置への配置処理を実行し、累積した変化量をリセットするようにしてもよい。また、ポインティング位置の代わりに、杖オブジェクト２０１の先端の移動量を監視するようにし、当該杖オブジェクト２０１の先端が所定の距離だけ移動する毎に、上記投擲オブジェクトの生成および杖オブジェクト２０１の先端位置への配置処理を実行するようにしても良い。
【０１７８】
また、上述の第２の実施形態では、所定の条件が満たされたとき（変化量が第１の所定値以上となったとき、あるいは、投擲カウンタが所定値に達したとき）に、投擲オブジェクトはその都度生成され、配置されていた（上記ステップＳ７８）。このように、その都度投擲オブジェクトを生成することに限らず、既に存在している（予め生成済みの）投擲オブジェクトを配置するようにしてもよい。例えば、プレイヤオブジェクト１０１がゲーム中に取得できる「アイテム」という設定で、予め投擲オブジェクトを仮想空間内に生成しておく。プレイヤは、ゲーム進行において適宜、「アイテム」としての投擲オブジェクトをプレイヤオブジェクト１０１に取得させる。そして、上記投擲攻撃に際しては、プレイヤオブジェクト１０１が取得済みの投擲オブジェクトを発射するようにしてもよい。また、この場合は、発射可能な投擲オブジェクトの数を、プレイヤオブジェクト１０１が所有している投擲オブジェクトの数までに制限されるようにすればよい。
【０１７９】
また、上述の第２の実施形態では、１つの爆弾２０２が、敵オブジェクト１０３に当たれば爆発する機能と時限式で爆発する機能の双方を備えていた。しかし、敵オブジェクト１０３に当たれば爆発する機能のみを備える爆弾と、時限式で爆発する爆弾が別個に存在し、プレイヤによっていずれの爆弾を発射するかを選択できるようにしてもよい。このようにすることで、プレイヤによる戦略がより重視されるゲームとなる。
【０１８０】
また、攻撃方法（特に、いわゆる間接攻撃の方法）に関しては、上記第２の実施形態で説明したような杖オブジェクト２０１の先から投擲オブジェクトを発射するという攻撃方法の他、例えば、レーザー光線を発するという攻撃方法を選択可能としてもよい。この場合は、上述したような射出ベクトルを算出した後、当該射出ベクトルに沿って仮想空間の奥行き方向に伸長していく直線オブジェクト（レーザー光線）を描画するようにすればよい。そして、当該直線と上記敵オブジェクト１０３とが衝突しているか否かを判定することで、上記当たり判定を行ってもよい。
【産業上の利用可能性】
【０１８１】
本発明にかかるゲームプログラムおよびゲーム装置は、自由度の高い操作性を有するゲームをプレイヤに提供することができ、据置型ゲーム装置等に有用である。
【符号の説明】
【０１８２】
１…ゲームシステム
２…モニタ
２ａ…スピーカ
３…ゲーム装置
４…光ディスク
７…コントローラ
１０…ＣＰＵ
１１…システムＬＳＩ
１１ａ…入出力プロセッサ
１１ｂ…ＧＰＵ
１１ｃ…ＤＳＰ
１１ｄ…ＶＲＡＭ
１１ｅ…内部メインメモリ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…無線通信モジュール
１９…無線コントローラモジュール
２０…拡張コネクタ
２１…外部メモリカード用コネクタ
２２…アンテナ
２３…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０３…水晶振動子
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
【図１】
2010104778.tif 000004
【図２】
2010104778.tif 000005
【図３】
2010104778.tif 000006
【図４】
2010104778.tif 000007
【図５】
2010104778.tif 000008
【図６】
2010104778.tif 000009
【図７】
2010104778.tif 000010
【図８】
2010104778.tif 000011
【図９】
2010104778.tif 000012
【図１０】
2010104778.tif 000013
【図１１】
2010104778.tif 000014
【図１２】
2010104778.tif 000015
【図１３】
2010104778.tif 000016
【図１４】
2010104778.tif 000017
【図１５】
2010104778.tif 000018
【図１６】
2010104778.tif 000019
【図１７】
2010104778.tif 000020
【図１８】
2010104778.tif 000021
【図１９】
2010104778.tif 000022
【図２０】
2010104778.tif 000023
【図２１】
2010104778.tif 000024
【図２２】
2010104778.tif 000025
【図２３】
2010104778.tif 000026
【図２４】
2010104778.tif 000027
【図２５】
2010104778.tif 000028
【図２６】
2010104778.tif 000029
【図２７】
2010104778.tif 000030
【図２８】
2010104778.tif 000031
【図２９】
2010104778.tif 000032
【図３０】
2010104778.tif 000033
【図３１】
2010104778.tif 000034
【図３２】
2010104778.tif 000035
【図３３】
2010104778.tif 000036
【図３４】
2010104778.tif 000037
【図３５】
2010104778.tif 000038
【図３６】
2010104778.tif 000039
【図３７】
2010104778.tif 000040
【図３８】
2010104778.tif 000041
【図３９】
2010104778.tif 000042
【図４０】
2010104778.tif 000043
【図４１】
2010104778.tif 000044
【図４２】
2010104778.tif 000045
【図４３】
2010104778.tif 000046
【図４４】
2010104778.tif 000047