(57)【要約】【課題】入力装置の動作方向に応じて、被衝突オブジェクトの反応を示す演出を容易に切り替えることを可能にするゲームプログラム、ゲーム装置、ゲームシステム、及びゲーム処理方法を提供すること。【解決手段】ゲーム装置３には、第１コントローラ７の位置及び姿勢を特定するための角速度データが入力される。この角速度データに基づいて、第１コントローラ７の振り方向が判別され、また、仮想ゲーム空間内で動作する剣オブジェクト１０４が敵オブジェクトと衝突するか否かが判定される。剣オブジェクト１０４が敵オブジェクトに衝突すると判定された場合、第１コントローラ７の振り方向に基づいて、敵オブジェクトに対してヒット処理を行うか否かが決定される。【選択図】図１７
2011240000.tif 000002
【特許請求の範囲】
【請求項１】
入力装置の位置及び姿勢の少なくとも一方を検出する状態検出手段から出力された状態信号に基づいてゲーム処理を行うゲーム装置のコンピュータを、
前記状態信号に基づいて、前記入力装置の動作方向を判別する方向判別手段と、
前記状態信号に基づいて仮想ゲーム空間内で動作する第１オブジェクトが判定対象と衝突するか否かを判定する衝突判定手段と、
前記第１オブジェクトが前記判定対象に衝突すると前記衝突判定手段によって判定された場合に、前記方向判別手段によって判別された動作方向に基づいて、当該判定対象に対してヒット処理を行うか否かを決定する衝突処理決定手段として機能させる、ゲームプログラム。
【請求項２】
前記ゲーム装置のコンピュータを、前記仮想ゲーム空間内における前記第１オブジェクトと前記判定対象との位置関係を検出する位置関係検出手段として更に機能させ、
前記衝突処理決定手段は、前記方向判別手段によって判別された動作方向、及び前記位置関係検出手段によって検出された位置関係に基づいて、前記判定対象に対してヒット処理を行うか否かを決定する、請求項１に記載のゲームプログラム。
【請求項３】
前記ゲーム装置のコンピュータを、前記第１オブジェクトが複数の判定対象と衝突すると前記衝突判定手段によって判定された場合に、前記方向判別手段によって判別された動作方向、及び前記位置関係検出手段によって検出された位置関係に基づいて、前記複数の判定対象に対して優先順位を設定する優先順位設定手段として更に機能させ、
前記衝突処理決定手段は、前記優先順位が最上位の判定対象に対してヒット処理を行うか否かを決定する、請求項２に記載のゲームプログラム。
【請求項４】
前記ゲーム装置のコンピュータを、前記状態信号に基づいて、前記入力装置の振り操作が開始されたか否かを判定する開始判定手段として更に機能させ、
前記方向判別手段は、前記入力装置の振り操作が開始されたと前記開始判定手段によって判定されたときに、当該入力装置の動作方向を判別する、請求項１に記載のゲームプログラム。
【請求項５】
前記状態検出手段は、角速度センサを含み、
前記状態信号は、前記角速度センサから出力される角速度データを含む、請求項１に記載のゲームプログラム。
【請求項６】
入力装置の位置及び姿勢の少なくとも一方を検出する状態検出手段から出力された状態信号に基づいてゲーム処理を行うゲーム装置であって、
前記状態信号に基づいて、前記入力装置の動作方向を判別する方向判別手段と、
前記状態信号に基づいて仮想ゲーム空間内で動作する第１オブジェクトが判定対象と衝突するか否かを判定する衝突判定手段と、
前記第１オブジェクトが前記判定対象に衝突すると前記衝突判定手段によって判定された場合に、前記方向判別手段によって判別された動作方向に基づいて、当該判定対象に対してヒット処理を行うか否かを決定する衝突処理決定手段とを備える、ゲーム装置。
【請求項７】
入力装置の位置及び姿勢の少なくとも一方を検出する状態検出手段から出力された状態信号に基づいてゲーム処理を行うゲームシステムであって、
前記状態信号に基づいて、前記入力装置の動作方向を判別する方向判別手段と、
前記状態信号に基づいて仮想ゲーム空間内で動作する第１オブジェクトが判定対象と衝突するか否かを判定する衝突判定手段と、
前記第１オブジェクトが前記判定対象に衝突すると前記衝突判定手段によって判定された場合に、前記方向判別手段によって判別された動作方向に基づいて、当該判定対象に対してヒット処理を行うか否かを決定する衝突処理決定手段とを備える、ゲームシステム。
【請求項８】
入力装置の位置及び姿勢の少なくとも一方を検出する状態検出手段から出力された状態信号に基づいてゲーム処理を行うためのゲーム処理方法であって、
前記状態信号に基づいて、前記入力装置の動作方向を判別するステップと、
前記状態信号に基づいて仮想ゲーム空間内で動作する第１オブジェクトが判定対象と衝突するか否かを判定するステップと、
前記第１オブジェクトが前記判定対象に衝突すると判定された場合に、前記判別された動作方向に基づいて、当該判定対象に対してヒット処理を行うか否かを決定するステップとを含む、ゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置のコンピュータに実行させるゲームプログラム、ゲーム装置、ゲームシステム、及びゲーム処理方法に関し、より特定的には、仮想ゲーム空間内のオブジェクト同士の衝突判定を行い、その判定結果に応じてゲーム処理を行うゲーム装置のコンピュータに実行させるゲームプログラム、ゲーム装置、ゲームシステム、及びゲーム処理方法に関する。
【背景技術】
【０００２】
いわゆるシューティングゲームやアクションゲームでは、仮想ゲーム空間内に登場するプレイヤオブジェクトをプレイヤが操作するコントローラの動きに応じて移動させ、そのプレイヤオブジェクトが他のオブジェクトと衝突したか否かを判定する衝突判定が行われている（例えば特許文献１及び特許文献２参照）。
【０００３】
特許文献１に記載のゲーム装置では、コントローラに内蔵された加速度センサから出力される加速度データに基づいてコントローラの動きが検出され、検出された動きがゲーム処理に反映される。具体的には、プレイヤによってコントローラが振り動かされると、仮想ゲーム空間内の剣オブジェクト（プレイヤオブジェクト）がコントローラの振り方向に応じた方向に振り動かされる。その際、剣オブジェクトが丸太オブジェクトに衝突したか否かが判定される。そして、剣オブジェクトが丸太オブジェクトに衝突したと判定された場合、丸太オブジェクトが上記振り方向に応じた方向に切断される。
【０００４】
特許文献２に記載のゲーム装置は、コントローラの位置を検出するためのＣＣＤカメラを備えている。コントローラには、赤外光を発するＬＥＤが設けられており、ゲーム装置では、この赤外光をＣＣＤカメラで検出することによってコントローラの位置が検出され、その検出結果がゲーム処理に反映される。具体的には、プレイヤによってコントローラが振り動かされると、ＣＣＤカメラによる赤外光の検出結果に応じて、剣を振ったり、或いは剣で突くといった仮想ゲーム空間内の剣オブジェクトの動作が画面に表示される。これに伴い、剣オブジェクトが例えば敵オブジェクトに衝突したか否かが判定される。そして、衝突したと判定されると、剣オブジェクトの速度、及び敵オブジェクトに剣オブジェクトのどの部分が衝突したかに基づいて、当たり度の判定が行われる。ここで、当たり度の判定は、剣オブジェクトの動作によって、「服だけが切れた」、「敵オブジェクトの身が切れた」、及び「敵オブジェクトの骨まで切れた」のいずれの結果になったかを判定するものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１７３３４５号公報
【特許文献２】特許第４００９４３３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上述した従来のゲーム装置では、コントローラの動きに基づいて剣オブジェクトが他のオブジェクトと衝突したときの反応がリアルに表現される。しかしながら、従来のゲーム装置は、コントローラの振り方向（動作方向）に応じて、剣オブジェクト等の衝突オブジェクトが丸太や敵等の被衝突オブジェクトに衝突した際の反応を示す演出を容易に切り替えられるものではなかった。
【０００７】
それ故に、本発明の目的は、入力装置の動作方向に応じて、被衝突オブジェクトの反応を示す演出を容易に切り替えることを可能にするゲームプログラム、ゲーム装置、ゲームシステム、及びゲーム処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るゲームプログラムは、入力装置の位置及び姿勢の少なくとも一方を検出する状態検出手段から出力された状態信号に基づいてゲーム処理を行うゲーム装置のコンピュータを、方向判別手段、衝突判定手段、及び衝突処理決定手段として機能させる。方向判別手段は、状態信号に基づいて、入力装置の動作方向を判別する。衝突判定手段は、状態信号に基づいて仮想ゲーム空間内で動作する第１オブジェクトが判定対象と衝突するか否かを判定する。衝突処理決定手段は、第１オブジェクトが判定対象に衝突すると衝突判定手段によって判定された場合に、方向判別手段によって判別された動作方向に基づいて、その判定対象に対してヒット処理を行うか否かを決定する。
【０００９】
プレイヤによって操作される入力装置は、状態検出手段によってその状態が検出される。状態検出手段の検出結果である状態信号は、ゲーム装置に入力される。ゲーム装置では、この状態信号に基づいて、プレイヤによって操作される仮想ゲーム空間内の第１オブジェクトを移動させたり第１オブジェクトの姿勢を変化させたりするゲーム処理が行われる。なお、プレイヤが入力装置の位置や姿勢を変化させることによって、ゲーム装置に入力される状態信号が変化する。このため、状態信号の変化を監視することによって、入力装置の位置や姿勢を変化させるプレイヤの操作を、第１オブジェクトの位置や姿勢に正確に反映させることが可能である。
【００１０】
ゲーム装置では、このようなゲーム処理に際して、第１オブジェクトが判定対象と衝突するか否かを判定する衝突判定が衝突判定手段によって実行される。ここで、判定対象は、仮想ゲーム空間内で第１オブジェクトが接触する可能性がある敵オブジェクトや敵オブジェクトが所持する武器等のいわゆるノンプレイヤオブジェクトに対して設定された判定領域である。また、ゲーム装置では、この衝突判定と共に、入力装置の動作方向（入力装置が動かされた方向）が状態信号に基づいて判別される。第１オブジェクトが判定対象に衝突すると衝突判定手段によって判定された場合、判別された入力装置の動作方向に基づいて、その判定対象に対してヒット処理を行うか否かが衝突処理決定手段によって決定される。ここで、ヒット処理は、第１オブジェクトが判定対象にヒットしたことを示す演出を画面に表示するための処理である。ヒット処理を行うと決定された場合、例えば第１オブジェクトとしての剣オブジェクトが敵オブジェクトにヒットして敵オブジェクトに対してダメージが与えられる様子を示すアニメーションが画面に表示される。一方、ヒット処理を行わないと決定された場合、例えば第１オブジェクトとしての剣オブジェクトが敵オブジェクトに弾き返される様子を示すアニメーションが画面に表示される。
【００１１】
ゲーム装置のコンピュータを、仮想ゲーム空間内における第１オブジェクトと判定対象との位置関係を検出する位置関係検出手段として更に機能させてもよい。この場合、衝突処理決定手段は、方向判別手段によって判別された動作方向、及び位置関係検出手段によって検出された位置関係に基づいて、判定対象に対してヒット処理を行うか否かを決定する。
【００１２】
この構成によれば、入力装置の動作方向に加えて、第１オブジェクトと判定対象との位置関係を考慮して、判定対象に対してヒット処理を行うか否かが決定される。このため、第１オブジェクトと判定対象との位置関係が変化したとしても判定対象に対してヒット処理を行うか否かが適切に決定される。
【００１３】
ゲーム装置のコンピュータを、第１オブジェクトが複数の判定対象と衝突すると衝突判定手段によって判定された場合に、方向判別手段によって判別された動作方向、及び位置関係検出手段によって検出された位置関係に基づいて、複数の判定対象に対して優先順位を設定する優先順位設定手段として更に機能させてもよい。この場合、衝突処理決定手段は、優先順位が最上位の判定対象に対してヒット処理を行うか否かを決定する。
【００１４】
この構成によれば、例えば複数の判定対象のうち第１オブジェクトが最初に衝突する判定対象の優先順位が最も高くなるように優先順位を設定して、最優先の判定対象に対してヒット処理を行うか否かを決定することが可能となる。このため、ヒット処理を行うか否かを決定すべき判定対象に対して、ヒット処理を行うか否かが適切に決定される。
【００１５】
ゲーム装置のコンピュータを、状態信号に基づいて、入力装置の振り操作が開始されたか否かを判定する開始判定手段として更に機能させてもよい。この場合、方向判別手段は、入力装置の振り操作が開始されたと開始判定手段によって判定されたときに、入力装置の動作方向を判別する。
【００１６】
この構成によれば、第１オブジェクトが判定対象に衝突したときに入力装置の動作方向を判別する場合に比べて、判定対象に対してヒット処理を行うか否かをより早いタイミングで決定することが可能になる。その結果、入力装置の振り操作が行われてから衝突時の演出が画面に表示されるまでのタイムラグが短縮される。
【００１７】
状態検出手段は、角速度センサを含み、状態信号は、角速度センサから出力される角速度データを含んでいてもよい。
【００１８】
この構成によれば、例えば状態検出手段として加速度センサを使用する場合に比べて、入力装置の動作方向の判別、及び第１オブジェクトが判定対象と衝突するか否かの判定をより正確に行うことが可能になる。その結果、判定対象に対して当たり処理を行うか否かの判定が、より正確に行われる。
【００１９】
本発明は、入力装置の位置及び姿勢の少なくとも一方を検出する状態検出手段から出力された状態信号に基づいてゲーム処理を行うゲーム装置として捉えることもできる。このゲーム装置は、方向判別手段、衝突判定手段、及び衝突処理決定手段を備える。方向判別手段は、状態信号に基づいて、入力装置の動作方向を判別する。衝突判定手段は、状態信号に基づいて仮想ゲーム空間内で動作する第１オブジェクトが判定対象と衝突するか否かを判定する。衝突処理決定手段は、第１オブジェクトが判定対象に衝突すると衝突判定手段によって判定された場合に、方向判別手段によって判別された動作方向に基づいて、その判定対象に対してヒット処理を行うか否かを決定する。
【００２０】
また、本発明は、入力装置の位置及び姿勢の少なくとも一方を検出する状態検出手段から出力された状態信号に基づいてゲーム処理を行うゲームシステムとして捉えることもできる。このゲームシステムは、方向判別手段、衝突判定手段、及び衝突処理決定手段を備える。方向判別手段は、状態信号に基づいて、入力装置の動作方向を判別する。衝突判定手段は、状態信号に基づいて仮想ゲーム空間内で動作する第１オブジェクトが判定対象と衝突するか否かを判定する。衝突処理決定手段は、第１オブジェクトが判定対象に衝突すると衝突判定手段によって判定された場合に、方向判別手段によって判別された動作方向に基づいて、その判定対象に対してヒット処理を行うか否かを決定する。
【００２１】
また、本発明は、入力装置の位置及び姿勢の少なくとも一方を検出する状態検出手段から出力された状態信号に基づいて例えばゲーム装置のコンピュータがゲーム処理を行うためのゲーム処理方法として捉えることもできる。このゲーム処理方法では、状態信号に基づいて、入力装置の動作方向が判別される。また、状態信号に基づいて仮想ゲーム空間内で動作する第１オブジェクトが判定対象と衝突するか否かが判定される。そして、第１オブジェクトが判定対象に衝突すると判定された場合に、判別された動作方向に基づいて、その判定対象に対してヒット処理を行うか否かが決定される。
【００２２】
なお、入力装置の動作方向の判別は、第１オブジェクトが判定対象と衝突するか否かの衝突判定に先立って行われてもよいし、衝突判定の後に行われてもよい。
【発明の効果】
【００２３】
この発明によれば、入力装置の動作方向に応じて、判定対象に対してヒット処理を行うか否かが決定されるので、入力装置の動作方向に応じて、被衝突オブジェクトの反応を示す演出を容易に切り替えることができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施形態に係るゲーム装置３を含むゲームシステム１の外観斜視図
【図２】第１コントローラ７及びジャイロセンサユニット９を上面後方から見た斜視図
【図３】第１コントローラ７を下面前方から見た斜視図
【図４】第２コントローラ８の斜視図
【図５】ゲーム装置３の構成を示すブロック図
【図６】コントローラ５の内部構成を示すブロック図
【図７】ジャイロセンサユニット９によって角速度が検出されるロール角、ピッチ角、及びヨー角について説明するための第１コントローラ７及びジャイロセンサユニット９の斜視図
【図８】プレイヤが第１コントローラ７及び第２コントローラ８を持った状態を例示する説明図
【図９】液晶テレビ２に表示されるゲーム画像の一例を示す画面図
【図１０】プレイヤが第１コントローラ７を左から右へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図
【図１１】プレイヤが第１コントローラ７を右から左へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図
【図１２】外部メインメモリ１２のメモリマップを例示する図
【図１３】ゲーム装置３で実行されるメイン処理の一例を示すフローチャート
【図１４】プレイヤによる第１コントローラ７の振り操作について説明するための説明図
【図１５】図１３のステップＳ９における構え処理の詳細フローチャート
【図１６】図１３のステップＳ１０における攻撃開始処理の詳細フローチャート
【図１７】図１３のステップＳ１２における当たり判定処理の詳細フローチャート
【図１８】図１３のステップＳ１２における当たり判定処理の詳細フローチャート
【図１９】プレイヤが第１コントローラ７を左から右へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図
【図２０】プレイヤが第１コントローラ７を右から左へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図
【図２１】プレイヤが第１コントローラ７を右から左へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図
【図２２】プレイヤが第１コントローラ７を右から左へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図
【図２３】当たり判定処理の変形例を示すフローチャート
【図２４】プレイヤが第１コントローラ７を右から左へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図
【図２５】プレイヤが第１コントローラ７を左から右へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図
【図２６】プレイヤが第１コントローラ７を右から左へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図
【発明を実施するための形態】
【００２５】
以下、適宜図面を参照しつつ、本発明の一実施形態について説明する。図１は、本発明の一実施形態に係るゲーム装置３を含むゲームシステム１の外観斜視図である。本実施形態では、本発明のゲーム装置が据置型のゲーム装置３である場合を例にして、本発明について説明するが、本発明のゲーム装置は、例えばゲーム装置と表示装置とが一体的に構成された携帯型のゲーム装置であってもよい。
【００２６】
［ゲームシステム１の全体構成］
まず、ゲームシステム１の各構成の概略を説明する。図１において、ゲームシステム１は、液晶テレビ２、ゲーム装置３、光ディスク４、マーカ部６、及びコントローラ５を含む。ゲームシステム１は、コントローラ５を用いたプレイヤのゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００２７】
ゲーム装置３には、ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が着脱可能に挿入される。光ディスク４には、ゲーム装置３において実行されるゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４からゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００２８】
ゲーム装置３には、液晶テレビ２が接続コードを介して接続される。後述するが、ゲーム装置３は、仮想ゲーム空間に配置された仮想カメラの視点から見たオブジェクトを含む仮想ゲーム空間の画像（以下「ゲーム画像」という。）を生成して液晶テレビ２へ出力する。この一連の処理は、本実施形態では、フレーム単位（例えば１／６０秒間隔）で行われる。液晶テレビ２は、このようにしてゲーム装置３から出力されるゲーム画像を受信して画面に表示する。
【００２９】
液晶テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒ及び６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１個以上の赤外ＬＥＤであって、液晶テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。また、マーカ部６には、不図示のマイクロフォンが配設され、該マイクロフォンを介して入力された音声情報は、ゲーム装置３に入力される。
【００３０】
コントローラ５は、プレイヤによって操作される入力手段である。コントローラ５は、本実施形態では、それぞれプレイヤが片手で把持可能な第１コントローラ７及び第２コントローラ８と、第１コントローラ７に着脱可能に装着されるジャイロセンサユニット９とから構成されている。第１コントローラ７は、プレイヤによって操作される入力装置であって、第１コントローラ７に対して行われた操作の内容を示す操作データを生成する。ジャイロセンサユニット９は、この第１コントローラ７に装着された状態で、第１コントローラ７の位置及び姿勢を検出する状態検出手段として機能する。ジャイロセンサユニット９は、第１コントローラ７の角速度を検出して、検出された角速度を示す角速度データを第１コントローラ７へ出力する。ここで、角速度データは、第１コントローラ７の位置及び姿勢を特定するための第１コントローラ７の状態を示す状態信号である。第２コントローラ８は、第２コントローラ８に対して行われた操作の内容を示す操作データを生成する。この操作データは、ジャイロセンサユニット９を介して第１コントローラ７へ出力される。第１コントローラ７は、第１コントローラ７の操作データ、第２コントローラ８の操作データ、ジャイロセンサユニット９からの角速度データ等を含むコントローラデータをゲーム装置３へ送信する。
【００３１】
コントローラデータを送信するために、第１コントローラ７とゲーム装置３とは無線通信によって接続される。本実施形態では、第１コントローラ７とゲーム装置３との間の無線通信にＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においては、第１コントローラ７とゲーム装置３とは有線で接続されてもよい。
【００３２】
［第１コントローラ７の外部構成］
図２は、第１コントローラ７及びジャイロセンサユニット９を上面後方から見た斜視図である。図３は、第１コントローラ７を下面前方から見た斜視図である。
【００３３】
図２及び図３に示されるように、第１コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有している。ハウジング７１は、その前後方向（図２，３におけるＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供が片手で把持可能な大きさに構成されている。このハウジング７１には、操作部７２が配置されている。
【００３４】
ハウジング７１の上面に配置された操作部７２は、十字キー７２ａ、操作ボタン７２ｂ〜７２ｇ、及び操作ボタン７２ｈから構成されている。
【００３５】
十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって、前後左右いずれかの方向が選択される。プレイヤが十字キー７２ａを操作することによって、例えば複数の選択肢からいずれかの選択肢を選択することができる。
【００３６】
操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、及びＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、及びプラスボタン等としての機能が割り当てられる。これらの操作ボタン７２ａ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプの操作ボタンである。
【００３７】
操作ボタン７２ｈは、遠隔からゲーム装置３の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈは、ハウジング７１の上面に埋没しており、操作ボタン７２ｆと同じタイプの操作ボタンである。
【００３８】
ハウジング７１の上面には、操作部７２の他に複数のＬＥＤ７０２が設けられる。ここで、第１コントローラ７は、他の第１コントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、第１コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、第１コントローラ７から無線コントローラモジュール１９（図５参照）へコントローラデータを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【００３９】
また、ハウジング７１の上面には、操作ボタン７２ｂ及び操作ボタン７２ｅ〜７２ｇの間に、ハウジング７１に内蔵されたスピーカ７０６（図６参照）からの音を外部に放出するための音抜き孔７１１が形成されている。
【００４０】
図３に示されているように、ハウジング７１の下面には、凹部が形成されている。ハウジング７１の下面の凹部は、プレイヤが第１コントローラ７の前面をマーカ６Ｌ及び６Ｒに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、プレイヤがボタン頭部を押下することによって、操作ボタン７２ｉに割り当てられた操作信号を出力するものであり、例えばＢボタンとして機能する。
【００４１】
ハウジング７１の前面には、撮像情報演算部７４（図３参照）の一部を構成する撮像素子７４３（図６参照）が設けられる。ここで、撮像情報演算部７４は、第１コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速な第１コントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３（図２参照）が設けられている。コネクタ７３は、例えばエッジコネクタである。
【００４２】
［ジャイロセンサユニット９の外部構成］
図２には現れていないが、ジャイロセンサユニット９の先端面には、第１コントローラ７のコネクタ７３と接続可能なコネクタ９１（図６参照）が設けられている。コネクタ９１がコネクタ７３に接続されることで、ジャイロセンサユニット９が第１コントローラ７と物理的及び電気的に接続される。ジャイロセンサユニット９は、このようにして第１コントローラ７に一体化された状態で、第１コントローラ７の３軸（Ｘ、Ｙ、Ｚ軸）周りの角速度を検出する。第１コントローラ７の角速度が検出されると、その検出結果を示す角速度データがジャイロセンサユニット９から第１コントローラ７へ出力される。
【００４３】
ジャイロセンサユニット９の後端面には、第２コントローラ８のコネクタ８２（図１参照）と接続可能なコネクタ９２（図６参照）が設けられている。コネクタ８２がコネクタ９２に接続されることで、第２コントローラ８がジャイロセンサユニット９を介して第１コントローラ７と接続される。なお、図２では、コネクタ９２にコネクタカバー９３が取り付けられた状態が表記されており、コネクタ９２は現れていない。
【００４４】
ジャイロセンサユニット９の側面には、リリースボタン９４が設けられている。図には示されていないが、ジャイロセンサユニット９には、ジャイロセンサユニット９の先端面から突出するフックが設けられている。ジャイロセンサユニット９が第１コントローラ７に装着される際に、このフックがハウジング７１の後面に形成された孔７６（図２参照）を介してハウジング７１内に挿入されて、ハウジング７１の内壁と係合する。これにより、ジャイロセンサユニット９が第１コントローラ７に固定される。リリースボタン９４は、このフックと連結されている。プレイヤは、リリースボタン９４を押下したままフックをハウジング７１から引き抜くことで、ジャイロセンサユニット９を第１コントローラ７から取り外すことができる。
【００４５】
［第２コントローラ８の外部構成］
第２コントローラ８のコネクタ８２（図１参照）は、第１コントローラ７のコネクタ７３（図２及び図６参照）又はジャイロセンサユニット９のコネクタ９２（図６参照）と接続可能である。コネクタ８２がコネクタ７３に接続された場合、第２コントローラ８の操作データがケーブル８１及びコネクタ８２を介して第１コントローラ７に直接入力される。一方、コネクタ９１がコネクタ７３に接続され、且つコネクタ８２がコネクタ９２に接続された場合、第２コントローラ８の操作データは、ケーブル８１、コネクタ８２、及びジャイロセンサユニット９を介して第１コントローラ７に入力される。
【００４６】
図４は、第２コントローラ８の斜視図であり、図４（Ａ）は第２コントローラ８を上面後方から見た斜視図であり、図４（Ｂ）は第２コントローラ８を下面前方から見た斜視図である。なお、図４では、第２コントローラ８のケーブル８１及びコネクタ８２の図示が省略されている。
【００４７】
第２コントローラ８は、例えばプラスチック成型によって形成されたハウジング８３を有している。ハウジング８３は、その前後方向（図４におけるＺ軸方向）に細長い楕円形状を有し、後端側の左右方向（Ｘ軸方向）の幅が先端側の左右方向の幅よりも狭くなっている。また、ハウジング８３は、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している。ハウジング８３は、第１コントローラ７のハウジング７１と同様に、全体として大人や子供が片手で把持可能な大きさに構成されているが、長手方向（Ｚ軸方向）の長さは、ハウジング７１よりも若干短く設定されている。このハウジング８３には、操作部８４が配置されている。
【００４８】
ハウジング８３の上面の先端側には、操作部８４としてのアナログジョイスティック８４ａが設けられている。また、ハウジング８３の先端面には、Ｃボタン８４ｂ及びＺボタン８４ｃが設けられている。アナログジョイスティック８４ａ、Ｃボタン８４ｂ、及びＺボタン８４ｃは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。プレイヤは、アナログジョイスティック８４ａを傾けたりボタン８４ｂ，８４ｃを押下したりすることによって、ゲーム操作を行うことができる。
【００４９】
［ゲーム装置３の内部構成］
次に、図５を参照しつつ、ゲーム装置３の内部構成について説明する。図５は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、及びＡＶ−ＩＣ１５等を有する。
【００５０】
ＣＰＵ１０は、光ディスク４に格納されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、及びＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩ１１の内部構成については後述する。
【００５１】
外部メインメモリ１２は、揮発性メモリである。外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラム、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを格納したり、各種データを格納したりするものであり、ＣＰＵ１０のワーク領域、バッファ領域等として用いられる。
【００５２】
ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆる、ブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。
【００５３】
ディスクドライブ１４は、光ディスク４からプログラムデータ、テクスチャデータ等を読み出し、読み出したデータを後述する内部メインメモリ１１ｅ又は外部メインメモリ１２に書き込む。
【００５４】
システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、及び内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００５５】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータ、テクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００５６】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅ、外部メインメモリ１２等に格納されるサウンドデータ、音波形（音色）データ等を用いて、音声データを生成する。
【００５７】
上述のように生成された画像データ及び音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データを、ＡＶコネクタ１６を介して液晶テレビ２に出力するとともに、読み出した音声データを、液晶テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像が液晶テレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００５８】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、及びメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００５９】
入出力プロセッサ１１ａは、無線通信モジュール１８及びアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データがある場合には、無線通信モジュール１８及びアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２及び無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に格納する。ＣＰＵ１０は、ゲームプログラムを実行することにより、フラッシュメモリ１７に格納されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データ又は途中データ）が格納されてもよい。
【００６０】
また、入出力プロセッサ１１ａは、コントローラ７から送信されるコントローラデータをアンテナ２３及び無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅ又は外部メインメモリ１２のバッファ領域に格納（一時記憶）する。
【００６１】
更に、入出力プロセッサ１１ａには、拡張コネクタ２０及びメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に換えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００６２】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、及びイジェクトボタン２６が設けられる。電源ボタン２４及びリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４が押下されると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押下されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押下されると、ディスクドライブ１４から光ディスク４が排出される。
【００６３】
［コントローラ５の内部構成］
次に、図６を参照しつつ、コントローラ５の内部構成について説明する。図６は、コントローラ５の内部構成を示すブロック図である。なお、図６には、第１コントローラ７にジャイロセンサユニット９が接続され、更にジャイロセンサユニット９に第２コントローラ８が接続された状態が示されている。
【００６４】
図６に示されるように、第１コントローラ７は、上述した操作部７２の他に、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、アンプ７０８、及び通信部７５を備えている。
【００６５】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、及び画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、第１コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ入射させる。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ７４２が集光した赤外線を受光して画像信号を出力する。ところで、液晶テレビ２に固定されたマーカ部６のマーカ６Ｒ及び６Ｌからは、液晶テレビ２の前方に向かって赤外光が出射されている。このため、赤外線フィルタ７４１を設けることによって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒ及び６Ｌの画像を正確に撮像することができる。以下では、撮像素子７４３によって撮像された画像を撮像画像と呼ぶ。撮像素子７４３によって生成された画像データは、画像処理回路７４４で処理される。画像処理回路７４４は、撮像画像内における撮像対象（マーカ６Ｒ及び６Ｌ）の位置を算出する。画像処理回路７４４は、算出された位置を示す座標を通信部７５のマイコン７５１へ出力する。この座標のデータは、マイコン７５１によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標は第１コントローラ７自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３は、このマーカ座標を用いて第１コントローラ７の向きや位置を算出することができる。
【００６６】
加速度センサ７０１は、第１コントローラ７の位置及び姿勢を検出するものである。この加速度センサ７０１は、３方向、すなわち、上下方向（図２に示すＹ軸）、左右方向（図２に示すＸ軸）、及び前後方向（図２に示すＺ軸）の３軸方向のそれぞれに関して直線加速度を検出する。加速度センサ７０１によって検出された加速度を示す状態信号（加速度データ）は、通信部７５へ出力され、通信部７５によってゲーム装置３へ送信される。加速度センサ７０１が検出した加速度は、第１コントローラ７の向き（傾斜角度）や動きに応じて変化するので、ゲーム装置３は、加速度データに基づいて第１コントローラ７の位置及び姿勢を算出することが可能である。本実施形態では、ゲーム装置３は、後述する角速度データに基づいて第１コントローラ７の位置及び姿勢を算出するが、加速度データに基づいて第１コントローラ７の位置及び姿勢を算出することも可能である。
【００６７】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、及びアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置３からのデータに応じて、サウンドＩＣ７０７及びバイブレータ７０４の動作を制御する。無線モジュール７５３及びアンテナ７５４を備えていることにより、第１コントローラ７がワイヤレスコントローラとして機能する。
【００６８】
サウンドＩＣ７０７は、通信部７５を介してゲーム装置３から送信されたサウンドデータ等を処理する。このサウンドデータがアンプ７０８で増幅されてスピーカ７０６へ送られることで、スピーカ７０６から音声が出力される。バイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４は、通信部７５を介してゲーム装置３から送信された振動データ（例えば、バイブレータ７０４をＯＮ又はＯＦＦする信号）等に応じて作動する。バイブレータ７０４が作動することによって第１コントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【００６９】
第２コントローラ８は、図６に示されるように、操作部８４及び加速度センサ８５を有する。加速度センサ８５としては、例えば３軸加速度センサが適用され、第２コントローラ８の上下方向（図４に示すｙ軸方向）、左右方向（図４に示すｘ軸方向）、及び前後方向（図４に示すｚ軸方向）の３軸方向のそれぞれの方向に関して直線加速度を検出する。加速度センサ８５が検出した加速度を示す加速度データは、第１コントローラ７へ送られ、通信部７５によってゲーム装置３へ送信される。加速度センサ８５が検出した加速度は、第２コントローラ８の向き（傾斜角度）や動きに応じて変化するので、ゲーム装置３は、第１コントローラ７と同様に、加速度センサ８５からの加速度データに基づいて、第２コントローラ８の位置及び姿勢を算出することが可能である。
【００７０】
操作部８４は、上述したアナログジョイスティック８４ａ、Ｃボタン８４ｂ、及びＺボタン８４ｃから構成されている。操作部８４が操作されると、その操作内容を示す操作データが生成される。操作データは、ケーブル８１、コネクタ８２、及びコネクタ９２を介してジャイロセンサユニット９へ送られる。また、加速度センサ８５によって検出された第２コントローラ８の加速度を示す加速度データも、同様にジャイロセンサユニット９へ送られる。これらの操作データ及び加速度データは、ジャイロセンサ９によって第１コントローラ７の通信部７５へ送られる。
【００７１】
ジャイロセンサユニット９は、３軸（本実施形態ではＸＹＺ軸）周りの角速度を検出し、検出した角速度を示す角速度データを第１コントローラ７へ出力するものである。このジャイロセンサユニット９は、図６に示されるように、その内部にマイコン９５、２軸ジャイロセンサ９６（角速度センサ）、及び１軸ジャイロセンサ（角速度センサ）９７を有している。
【００７２】
図７は、ジャイロセンサユニット９によって角速度が検出されるロール角、ピッチ角、及びヨー角について説明するための第１コントローラ７及びジャイロセンサユニット９の斜視図である。２軸ジャイロセンサ９６は、ロール角及びピッチ角に関する２つの（単位時間当たりの）角速度（Ｚ軸周りの角速度及びＸ軸周りの角速度）を検出する。１軸ジャイロセンサ９７は、ヨー角に関する（単位時間当たりの）角速度（Ｙ軸周りの角速度）を検出する。なお、本明細書では、図７に示されるように、第１コントローラ７の撮像方向であるＺ軸正方向を基準として、Ｚ軸周り、Ｘ軸周り、Ｙ軸周りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。
【００７３】
２軸ジャイロセンサ９６及び１軸ジャイロセンサ９７で検出された角速度を示すデータは、マイコン９５に出力される。したがって、マイコン９５には、ＸＹＺ軸の３軸周りの角速度を示すデータが入力されることになる。マイコン９５は、上記３軸周りの角速度を示すデータを角速度データとしてコネクタ９１を介して第１コントローラ７へ出力する。なお、マイコン９５から第１コントローラ７へのデータ送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。後述するが、角速度データは、第１コントローラ７からゲーム装置３へ送信される。ジャイロセンサユニット９によって検出される第１コントローラ７の角速度は、第１コントローラ７の向き（傾斜角度）や動きに応じて変化するので、ゲーム装置３は、角速度データに基づいて、第１コントローラ７の位置及び姿勢を正確に算出することが可能である。
【００７４】
第１コントローラ７の説明に戻り、メモリ７５２には、操作部７２からの操作データ、撮像情報演算部７４からのマーカ座標、加速度センサ７０１からの加速度データが一時的に格納される。また、第１コントローラ７にジャイロセンサユニット９が装着されているので、メモリ７５２には、２軸ジャイロセンサ９６及び１軸ジャイロセンサ９７からの角速度データ（第１コントローラ７の状態信号）が一時的に格納される。さらに、第１コントローラ７にジャイロセンサユニット９を介して第２コントローラ８が接続されているので、メモリ７５２には、操作部８４からの操作データ、及び加速度センサ８５からの加速度データが一時的に格納される。マイコン７５１は、ゲーム装置３の無線コントローラモジュール１９（図５参照）への送信タイミングが到来すると、メモリ７５２に格納されているデータを上記コントローラデータとして無線モジュール７５３へ出力する。無線モジュール７５３は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）の技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ７５４から放射する。つまり、コントローラデータは、無線モジュール７５３で微弱電波信号に変調されて第１コントローラ７から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３はコントローラデータを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得したコントローラデータとゲームプログラムとに基づいて、ゲーム処理を行う。
【００７５】
なお、通信部７５から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。第１コントローラ７の通信部７５は、例えば１／２００秒に１回の割合で各コントローラデータをゲーム装置３の無線コントローラモジュール１９へ送信する。
【００７６】
以上説明したコントローラ５を用いることによって、各操作ボタンを押下する従来のボタン操作だけでなく、コントローラ５自体を動かすことによっても、ゲームなどのアプリケーションに対する入力を行うことができる。ゲームをプレイするに際して、プレイヤは、例えば図８に示されるように、右手で第１コントローラ７を持ち、左手で第２コントローラ８を持つ。上述のように、第１コントローラ７には、加速度センサ７０１が内蔵されると共にジャイロセンサユニット９が固定されている。また、第２コントローラ８には、加速度センサ８５が内蔵されている。第１コントローラ７がプレイヤによって動かされると、加速度センサ７０１によって第１コントローラ７の３軸方向の加速度が検出されると共に、ジャイロセンサユニット９の２軸ジャイロセンサ９６及び１軸ジャイロセンサ９７によって第１コントローラ７の３軸周りの角速度が検出される。一方、第２コントローラ８がプレイヤによって動かされると、加速度センサ８５によって第２コントローラ８の３軸方向の加速度が検出される。これらの検出結果を示すデータは、上述のようにコントローラデータとしてゲーム装置３へ送信されて、ゲーム処理に反映される。このため、プレイヤは、第１コントローラ７や第２コントローラ８を振り動かすといったゲーム操作を行うことができる。
【００７７】
なお、上述したハードウェア構成は単なる一例に過ぎず、ゲーム装置３やコントローラ５の構成は適宜変更可能である。
【００７８】
［ゲームの概要］
次に、図９〜図１１を参照しつつ、ゲーム装置３のＣＰＵ１０がゲームプログラムを実行することによって進行するゲームの概要について説明する。
【００７９】
本実施形態において実行されるゲームでは、仮想ゲーム空間（仮想３次元空間）内に配置されたプレイヤオブジェクト１０１及び剣オブジェクト１０４を操作して敵を倒すアクションアドベンチャーゲームである。図９は、液晶テレビ２に表示されるゲーム画像の一例を示す画面図である。図９に例示されるように、液晶テレビ２の画面には、プレイヤによって操作されるプレイヤオブジェクト１０１が敵オブジェクト１０２に遭遇した様子が表示されている。プレイヤは、第２コントローラ８のアナログジョイスティック８４ａ（図８参照）を操作することによってプレイヤオブジェクト１０１を移動させることができる。
【００８０】
例えば、プレイヤオブジェクト１０１が敵オブジェクト１０２を攻撃可能な位置まで移動すると、図には示されていないが、プレイヤオブジェクト１０１が背負っている剣オブジェクト１０４（第１オブジェクトの一例）を鞘から抜いて剣オブジェクト１０４を構える様子が液晶テレビ２の画面に表示される。その際、プレイヤオブジェクト１０１が攻撃可能な敵オブジェクト１０２が複数存在する場合、いずれかの敵オブジェクト１０２と重なるようにカーソル１０３が表示される。カーソル１０３は、プレイヤオブジェクト１０１の攻撃対象となる敵オブジェクトを切り替えるためのものである。例えば第２コントローラ８のＺボタン８４ｃが押下されると、カーソル１０３は、ボタン操作前に重なるように表示されていた敵オブジェクト１０２とは異なる敵オブジェクト１０２と重なるように表示される。したがって、攻撃可能な敵オブジェクト１０２が複数存在する場合、プレイヤは、Ｚボタン８４ｃを押下することによって、攻撃対象となる敵オブジェクトを切り替えることができる。なお、このようにしていずれかの敵オブジェクトが選択されたとしても、剣オブジェクト１０４が振られた際に複数の敵オブジェクトと衝突するような場合には、これら複数の敵オブジェクトに対して攻撃を加えることが可能である。
【００８１】
プレイヤは、第１コントローラ７を剣に見立てて、第１コントローラ７を構えることによって、プレイヤオブジェクト１０１に剣オブジェクト１０４を構えさせることができる。また、プレイヤは、第１コントローラ７を構えた状態から任意の振り方向（動作方向）へ第１コントローラ７を振る動作（ゲーム操作）を行うことで、プレイヤオブジェクト１０１に剣オブジェクト１０４で敵オブジェクト１０２を斬りつける攻撃動作を行わせることができる。なお、第１コントローラ７の位置及び姿勢がジャイロセンサユニット９によって検出されるので、プレイヤが第１コントローラ７を振るのと同じような方向に、プレイヤオブジェクト１０１に剣オブジェクト１０４を振らせることができる。
【００８２】
図１０は、プレイヤが第１コントローラ７を左から右へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図である。図１１は、プレイヤが第１コントローラ７を右から左へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図である。プレイヤが第１コントローラ７を左から右へ振った場合、図１０に例示されるように、剣オブジェクト１０４が敵オブジェクト１０２に命中（ヒット）して敵オブジェクト１０２にダメージが与えられる様子を示すアニメーション（モーションブラー効果を示す動画像）が表示される。一方、プレイヤが第１コントローラ７を右から左へ振った場合、図１１に例示されるように、剣オブジェクト１０４が敵オブジェクト１０２に命中（ヒット）せずに弾き返されるアニメーションが表示される。このように、本発明は、第１コントローラ７の振り方向（剣オブジェクト１０４の振り方向）に応じて、剣オブジェクト１０４が敵オブジェクト（本実施形態では敵オブジェクト１０２）に衝突した場合の敵オブジェクトの反応を示す演出を容易に切り替えることができることを主な特徴としている。以下、第１コントローラ７の振り方向に応じて、敵オブジェクト１０２の反応を示す演出を切り替えるためのゲーム装置３の構成、及びゲーム装置３で行われるゲーム処理について詳細に説明する。
【００８３】
［主要データ］
以下、図１２を参照しつつ、ゲーム処理の際に外部メインメモリ１２に記憶されるデータについて説明する。ここで、図１２は、外部メインメモリ１２のメモリマップを例示する図である。図１２に例示されるように、外部メインメモリ１２は、プログラム記憶領域１２１及びデータ記憶領域１２６を有している。プログラム記憶領域１２１には、ＣＰＵ１０によって実行されるゲームプログラムが記憶される。データ記憶領域１２６には、ゲーム処理に必要な各種データが記憶される。プログラム記憶領域１２１内のプログラム、及びデータ記憶領域１２６内のデータの一部は、光ディスク４に予め記憶されたデータが、ゲーム処理に際して光ディスク４から読み出されたものである。
【００８４】
プログラム記憶領域１２１には、メイン処理プログラム１２２、構え処理プログラム１２３、攻撃開始処理プログラム１２４、当たり判定処理プログラム１２５等が記憶されている。メイン処理プログラム１２２は、図１３に示されている後述するメイン処理をＣＰＵ１０に実行させるためのプログラムである。構え処理プログラム１２３は、図１５に示されている後述する構え処理をＣＰＵ１０に実行させるためのプログラムである。攻撃開始処理プログラム１２４は、図１６に示されている後述する攻撃開始処理をＣＰＵ１０に実行させるためのプログラムである。当たり判定処理プログラム１２５は、図１７及び図１８に示されている後述する当たり判定処理をＣＰＵ１０に実行させるためのプログラムである。
【００８５】
データ記憶領域１２６には、コントローラデータ１２７、推定姿勢データ１２８、剣姿勢データ１２９、剣位置データ１３０、振り方向データ１３１、攻撃フラグ１３２、位置関係データ１３３、移動軌跡データ１３４、指向性データ１３５、優先順位データ１３６、剣振りアニメーションデータ１３７、アニメーション設定データ１３８、オブジェクトデータ１３９等が記憶される。
【００８６】
コントローラデータ１２７は、第１コントローラ７からゲーム装置３へ送信されたコントローラデータである。上述したように、コントローラデータは、第１コントローラ７からゲーム装置３へ１／２００秒に１回の割合で送信される。このため、外部メインメモリ１２に記憶されるコントローラデータ１２７は、この割合で更新される。本実施形態においては、データ記憶領域１２６には、古いコントローラデータが最新のコントローラデータに書き換えられることによって古いコントローラデータは破棄されるが、古いコントローラデータを利用してデータの補正等を行う場合には、例えば数回分のコントローラデータを記憶しておくようにしてもよい。
【００８７】
コントローラデータ１２７には、角速度データ１２７１、加速度データ１２７２、マーカ座標データ１２７３、及び操作データ１２７４が含まれる。角速度データ１２７１は、ジャイロセンサユニット９（図６参照）によって検出された図７に示すＸＹＺの３軸周りに関する第１コントローラ７の角速度を示すデータである。加速度データ１２７２は、加速度センサ７０１（図６参照）によって検出された図２に示すＸＹＺの３軸方向に関する第１コントローラ７の加速度を示すデータ、及び加速度センサ８５（図６参照）によって検出された図４に示すｘｙｚの３軸方向に関する第２コントローラ８の加速度を示すデータである。
【００８８】
マーカ座標データ１２７３は、撮像情報演算部７４の画像処理回路７４４によって算出されるマーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための２次元座標系で表現される。なお、撮像素子７４３によって２つのマーカ６Ｒ及び６Ｌが撮像される場合には、２つのマーカ座標が算出される。一方、撮像素子７４３の撮像可能な範囲内にマーカ６Ｒ及び６Ｌのいずれか一方しか位置しない場合には、撮像素子７４３によって１つのマーカのみが撮像され、１つのマーカ座標が算出される。また、撮像素子７４３の撮像可能な範囲内にマーカ６Ｒ及び６Ｌが両方とも位置しない場合には、撮像素子７４３によってマーカが撮像されず、マーカ座標は算出されない。したがって、マーカ座標データ１２７３は、２つのマーカ座標を示す場合もあるし、１つのマーカ座標を示す場合もあるし、マーカ座標がないことを示す場合もある。
【００８９】
操作データ１２７４は、第１コントローラ７の操作ボタン７２ａ〜７２ｉの入力状態を示すデータと、第２コントローラ８のアナログジョイスティック８４ａ、Ｃボタン８４ｂ、及びＺボタン８４ｃの入力状態を示すデータとを含む。ゲーム装置３のＣＰＵ１０は、操作データ１２７４によって示される機能を実現するための処理を行う。
【００９０】
推定姿勢データ１２８は、第１コントローラ７の姿勢を示すデータである。この推定姿勢データ１２８は、無線コントローラモジュール１９によって第１コントローラ７からのコントローラデータが受信されて角速度データ１２７１が更新される毎に、角速度データ１２７１に基づいて更新される。
【００９１】
剣姿勢データ１２９は、剣オブジェクト１０４の姿勢を示すデータである。剣位置データ１３０は、仮想ゲーム空間における剣オブジェクト１０４の位置を示すデータである。剣姿勢データ１２９及び剣位置データ１３０は、第１コントローラ７の姿勢及び位置を反映したものとなるように、推定姿勢データ１２８に基づいて適宜更新される。
【００９２】
振り方向データ１３１は、プレイヤによって第１コントローラ７が振られた方向（第１コントローラ７が動いた方向）を示すデータである。この振り方向データ１３１は、角速度データ１２７１に基づいて算出される。
【００９３】
攻撃フラグ１３２は、剣オブジェクト１０４による攻撃動作の開始が指示されたか否かを示すデータである。後に詳述するが、プレイヤが第１コントローラ７を振るゲーム操作を行うと、ＣＰＵ１０は、第１コントローラ７の角速度（角速度データ１２７１が示す角速度）が所定値以上であるか否かを判定する。そして、ＣＰＵ１０は、第１コントローラ７の角速度が所定値以上であると判定した場合、剣オブジェクト１０４による攻撃動作が指示されたものと判断して、攻撃フラグ１３２をＯＮに設定する。また、この攻撃フラグ１３２は、プレイヤオブジェクト１０１が剣オブジェクト１０４を振る様子を示す剣振りのアニメーションの内容が設定された後に（後述する図１７のステップＳ１２６の処理が行われた後に）、ＯＦＦに設定される。
【００９４】
位置関係データ１３３は、攻撃フラグ１３２がＯＮに設定されたときのプレイヤオブジェクト１０１と敵オブジェクト等のノンプレイヤオブジェクトとの位置関係を示すデータである。この位置関係データ１３３には、プレイヤオブジェクト１０１の重心座標と敵オブジェクトの重心座標との位置関係を示す情報のみならず、敵オブジェクトの構えや敵オブジェクトが向いている方向といった敵オブジェクト１０２の姿勢を示す情報も含まれている。
【００９５】
移動軌跡データ１３４は、プレイヤオブジェクト１０１が剣オブジェクト１０４を振る剣振り動作を行う際の剣オブジェクト１０４の移動軌跡を示すデータである。この移動軌跡データ１３４が示す移動軌跡は、剣姿勢データ１２９、剣位置データ１３０、及び振り方向データ１３１に基づいて計算される。
【００９６】
指向性データ１３５は、一部の敵オブジェクト（本実施形態では敵オブジェクト１０２）に対して設定されるデータである。この指向性データ１３５は、敵オブジェクト１０２に対して剣オブジェクト１０４がヒット可能なヒット方向を示すデータである。
【００９７】
プレイヤオブジェクト１０１が敵オブジェクト１０２を剣オブジェクト１０４で攻撃する際に、振り方向データ１３１が示す第１コントローラ７の振り方向が攻撃対象である敵オブジェクト１０２に対応する指向性データ１３５が示すヒット方向と一致した場合、その敵オブジェクト１０２に対してヒット処理が行われる。ここで、ヒット処理は、剣オブジェクト１０４を敵オブジェクト１０２にヒットさせると共に、剣オブジェクト１０４がヒットした敵オブジェクト１０２に対してダメージを与える処理である。
【００９８】
一方、振り方向データ１３１が示す第１コントローラ７の振り方向がヒット方向と一致しなかった場合、攻撃対象である敵オブジェクト１０２に対して弾き処理が行われる。ここで、弾き処理は、敵オブジェクト１０２に剣オブジェクト１０４を弾き返す動作を行わせる処理である。この弾き処理が行われた場合には、剣オブジェクト１０４が敵オブジェクト１０２に衝突したとしても、敵オブジェクト１０２にダメージが与えられることはない。
【００９９】
優先順位データ１３６は、移動軌跡データ１３４が示す剣オブジェクト１０４の移動軌跡上に攻撃対象となる複数の敵オブジェクトが存在する場合に設定されるデータである。この優先順位データ１３６は、剣オブジェクト１０４の移動軌跡上に存在する複数の敵オブジェクトに対する優先順位を示すデータである。本実施形態では、振り方向データ１３１が示す振り方向に対応する方向に剣オブジェクト１０４が振られた際に剣オブジェクト１０４が最初に衝突する敵オブジェクトの優先順位が最も高くなるように、上記複数の敵オブジェクトに対して優先順位が設定される。後述するが、この優先順位データ１３６が示す優先順位が最も高い敵オブジェクトに対して、ヒット処理を行うか又は弾き処理を行うかを決定する処理が行われ、その処理の結果を示すアニメーションが液晶テレビ２の画面に表示される。
【０１００】
剣振りアニメーションデータ１３７は、モーションブラー効果を利用して、プレイヤオブジェクト１０１が剣オブジェクト１０４を振る様子を画面表示するための動画像データである。本実施形態では、剣振りアニメーションデータ１３７として、ヒット処理用アニメーションデータ、弾き処理用アニメーションデータ、及び空振り処理用アニメーションデータの３種類のアニメーションデータがデータ記憶領域１２６に記憶されている。ここで、ヒット処理用アニメーションデータは、剣オブジェクト１０４が敵オブジェクトにヒットする様子を画面表示するためのアニメーションデータである。弾き処理用アニメーションデータは、剣オブジェクト１０４が敵オブジェクト（例えば敵オブジェクト１０２）に弾き返される様子を画面表示するためのアニメーションデータである。空振り処理用アニメーションデータは、プレイヤオブジェクト１０１が剣オブジェクト１０４を空振りする様子を画面表示するためのアニメーションデータである。
【０１０１】
なお、剣オブジェクト１０４の空振りは、剣オブジェクト１０４が敵オブジェクトにヒットする場合と同様に、プレイヤオブジェクト１０１が剣を振り切る動作である。このため、ヒット処理用アニメーションデータを、空振り処理用アニメーションデータとして使用してもよい。すなわち、プレイヤオブジェクト１０１が剣を振る様子を示すアニメーションを、ヒット処理用アニメーションデータ、及び弾き処理用アニメーションデータの２種類のアニメーションデータによって実現してもよい。また、本実施形態では、剣オブジェクト１０４が敵オブジェクト１０２に弾き返される様子を画面表示するために弾き処理用アニメーションデータが使用される場合について説明するが、弾き処理に応じた画面表示を、ヒット処理用アニメーションデータ、及び弾き処理用アニメーションデータを連続再生することによって実現してもよい。
【０１０２】
アニメーション設定データ１３８は、剣オブジェクト１０４による攻撃動作が行われた結果として液晶テレビ２に画面表示すべきアニメーションの内容を示すデータである。剣オブジェクト１０４による攻撃動作が行われた場合、このアニメーション設定データ１３８が示す設定情報に応じたアニメーションが再生される。例えば「ヒット処理」を示すアニメーション設定データ１３８がデータ記憶領域１２６に記憶されている場合、剣振りアニメーションデータ１３７のうちのヒット処理用アニメーションデータが再生される。また、例えば「弾き処理」を示すアニメーション設定データ１３８がデータ記憶領域１２６に記憶されている場合、剣振りアニメーションデータ１３７のうちの弾き処理用アニメーションデータが再生される。
【０１０３】
オブジェクトデータ１３９は、ゲーム処理で使用されるプレイヤオブジェクト１０１や敵オブジェクト１０２等の各オブジェクトに関するデータであり、各オブジェクトの位置座標データ、モデリングデータ、テクスチャーデータ（ＲＧＢ値）等から構成される。
【０１０４】
なお、図には示されていないが、データ記憶領域１２６には、ゲーム処理中に用いられる音声データや、仮想ゲーム空間の様子を画面表示するための仮想カメラの制御に関するデータ等が記憶されるが、これらのデータは本発明とは直接関係しないので、ここでの詳細な説明は省略する。
【０１０５】
［メイン処理］
次に、ゲーム装置３によって実行されるゲーム処理について説明する。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動プログラムを実行する。これにより、外部メインメモリ１２等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムが外部メインメモリ１２に読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。
【０１０６】
図１３は、ゲーム装置３で実行されるメイン処理の一例を示すフローチャートである。まず、ＣＰＵ１０は、以降の処理において用いられるデータの初期化処理を実行する（ステップＳ１）。具体的には、ＣＰＵ１０は、以降の処理に使用される外部メインメモリ１２のデータ記憶領域１２６内の各種変数やフラグ等を初期化する。そして、ＣＰＵ１０は、プレイヤオブジェクト１０１、及び敵オブジェクト１０２等のノンプレイヤオブジェクトを仮想ゲーム空間に配置する（ステップＳ２）。具体的には、ＣＰＵ１０は、ゲーム開始時における仮想カメラの初期位置、及び各種オブジェクトの初期配置を示すデータをデータ記憶領域１２６に格納する。
【０１０７】
続いて、仮想ゲーム空間が構築されてゲーム画像が液晶テレビ２に表示される。すなわち、ＣＰＵ１０は、３次元の仮想ゲーム空間を構築し、各オブジェクトの初期配置を示すデータに従って各オブジェクトを仮想ゲーム空間内に配置する。そして、ＣＰＵ１０は、この仮想ゲーム空間を仮想カメラの視点から見たゲーム画像をＧＰＵ１１ｂに生成させる。このゲーム画像が液晶テレビ２へ出力されることによって、液晶テレビ２にゲーム画像が表示される。以降、ステップＳ３〜Ｓ１６の処理ループが１フレーム（本実施形態では１／６０秒）毎に繰り返されることによって、ゲームが進行していく。
【０１０８】
ステップＳ２の処理に続いて、ＣＰＵ１０は、データ記憶領域１２６に記憶されている情報に基づいて、プレイヤオブジェクト１０１が剣オブジェクト１０４を振る剣振りのアニメーションの再生中であるか否かを判定する（ステップＳ３）。剣振りアニメーションの再生中であるとＣＰＵ１０によって判定された場合（ステップＳ３：ＹＥＳ）、後述するステップＳ１４へ処理が進められる。
【０１０９】
ＣＰＵ１０は、剣振りアニメーションの再生中ではないと判定した場合（ステップＳ３：ＮＯ）、コントローラデータを取得する（ステップＳ４）。具体的には、ＣＰＵ１０は、無線コントローラモジュール１９によって受信された第１コントローラ７からのコントローラデータをコントローラデータ１２７としてデータ記憶領域１２６に格納する。
【０１１０】
次に、ＣＰＵ１０は、プレイヤオブジェクト１０１の移動が指示されたか否かを判定する（ステップＳ５）。具体的には、ＣＰＵ１０は、コントローラデータ１２７の一部としてデータ記憶領域１２６に格納された操作データ１２７４に、第２コントローラ８のアナログジョイスティック８４ａが操作されたことを示す操作データが含まれているか否かを判定する。
【０１１１】
ＣＰＵ１０は、プレイヤオブジェクト１０１の移動が指示されたと判定した場合（ステップＳ５：ＹＥＳ）、すなわち操作データ１２７４にアナログジョイスティック８４ａの操作データが含まれていた場合、その操作データに応じた位置へプレイヤオブジェクト１０１を移動させる（ステップＳ６）。このステップＳ６の処理が行われることにより、オブジェクトデータ１３９がプレイヤオブジェクト１０１の最新の位置を示すように更新される。一方、プレイヤオブジェクト１０１の移動が指示されていないとＣＰＵ１０によって判定された場合（ステップＳ５：ＮＯ）、すなわち操作データ１２７４にアナログジョイスティック８４ａの操作データが含まれていなかった場合、後述するステップＳ７へ処理が進められる。
【０１１２】
ＣＰＵ１０は、ステップＳ６においてプレイヤオブジェクト１０１の移動処理を行った場合、又はステップＳ５において「ＮＯ」と判定した場合、攻撃フラグ１３２がＯＮに設定されているか否かを判定する（ステップＳ７）。
【０１１３】
ここで、プレイヤによる第１コントローラ７の振り操作について説明する。上述したように角速度データ１２７１が示す角速度は、図７に示されるように、Ｚ軸周りのロール角に関する角速度、Ｘ軸周りのピッチ角に関する角速度、及びＹ軸周りのヨー角に関する角速度の３方向の角速度である。プレイヤが第１コントローラ７を左から右へ振った場合（図１０参照）、又はプレイヤが第１コントローラ７を右から左へ振った場合（図１１参照）、第１コントローラ７の振り操作に伴ってＹ軸周りのヨー角に関する角速度が一時的に大きくなる。また、図１４に例示されるように、プレイヤが第１コントローラ７を振り下ろした場合、第１コントローラ７の振り操作に伴ってＸ軸周りのピッチ角に関する角速度が一時的に大きくなる。したがって、プレイヤオブジェクト１０１に剣オブジェクト１０４を振る動作を行わせるためにプレイヤによって第１コントローラ７の振り操作が開始されたか否かを、Ｙ軸周りのヨー角に関する角速度、及びＸ軸周りのピッチ角に関する角速度に基づいて判定することが可能である。
【０１１４】
ＣＰＵ１０は、攻撃フラグ１３２がＯＦＦに設定されていると判定した場合（ステップＳ７：ＮＯ）、角速度データ１２７１が示す第１コントローラ７の角速度が所定値以上であるか否かを判定する（ステップＳ８）。上述のように、Ｙ軸周りのヨー角に関する角速度、及びＸ軸周りのピッチ角に関する角速度に基づいて第１コントローラ７の振り操作が開始されたか否かを判定することができる。このため、このステップＳ８において、開始判定手段として機能するＣＰＵ１０は、角速度データ１２７１が示すＹ軸周りのヨー角に関する角速度、又はＸ軸周りのピッチ角に関する角速度が所定値以上であるか否かを判定する。本実施形態では、Ｙ軸周りのヨー角に関する角速度、及びＸ軸周りのピッチ角に関する角速度のいずれか一方でも所定値上である場合、このステップＳ８において「ＹＥＳ」と判定されて、後述するステップＳ１０へ処理が進められる。一方、Ｙ軸周りのヨー角に関する角速度、及びＸ軸周りのピッチ角に関する角速度がいずれも所定値未満である場合、このステップＳ８において「ＮＯ」と判定されて、後述するステップＳ９へ処理が進められる。
【０１１５】
このように、ＣＰＵ１０は、ジャイロセンサユニット９からの角速度データに基づいて、第１コントローラ７の振り操作が開始されたか否かを判定する。
【０１１６】
なお、Ｙ軸周りのヨー角に関する角速度の判定に使用される所定値と、Ｘ軸周りのピッチ角に関する角速度に使用される所定値とは、同じ値であってもよいし、異なる値であってもよい。所定値は、ゲームの内容等に応じて適切な値に設定される。
【０１１７】
ＣＰＵ１０は、角速度データ１２７１が示す第１コントローラ７の角速度が所定値未満であると判定した場合（ステップＳ８：ＮＯ）、プレイヤオブジェクト１０１に対して攻撃指示がなかったものと判断して、プレイヤオブジェクト１０１に剣オブジェクト１０４を構えさせるための構え処理を実行する（ステップＳ９）。この構え処理の詳細については、図１５に基づいて後述する。
【０１１８】
ＣＰＵ１０は、角速度データ１２７１が示す第１コントローラ７の角速度が所定値以上であると判定した場合（ステップＳ８：ＹＥＳ）、プレイヤオブジェクト１０１に対して攻撃指示があったと判断して、プレイヤオブジェクト１０１に剣オブジェクト１０４を振る動作を開始させるための攻撃開始処理を実行する（ステップＳ１０）。この攻撃開始処理の詳細については、図１６に基づいて後述する。
【０１１９】
一方、ステップＳ７において攻撃フラグ１３２がＯＮに設定されていると判定した場合（ステップＳ７：ＹＥＳ）、ＣＰＵ１０は、剣オブジェクト１０４が敵オブジェクト（例えば敵オブジェクト１０２）にヒットしたか否かを判定する当たり判定処理を実行する（ステップＳ１２）。この当たり判定処理の詳細については図１７及び図１８に基づいて後述するが、当たり判定処理が行われることによって、当たり判定処理の結果を示す剣オブジェクト１０４の剣振りアニメーションが設定される。このため、ＣＰＵ１０は、ステップＳ１２において当たり判定処理を行った後、設定された剣振りアニメーションの再生を開始する（ステップＳ１３）。
【０１２０】
ＣＰＵ１０は、ステップＳ３で「ＹＥＳ」と判定した場合、ステップＳ９の処理を実行した場合、ステップＳ１０の処理を実行した場合、又はステップＳ１３の処理を実行した場合、その他の処理を行う（ステップＳ１４）。具体的には、ＣＰＵ１０は、仮想ゲーム空間に登場するプレイヤオブジェクト１０１及び剣オブジェクト１０４以外のノンプレイヤオブジェクト（例えば敵オブジェクト１０２）を移動させるといった処理を行う。そして、ＣＰＵ１０は、ステップＳ３〜ステップＳ１４の処理を行った結果を示すゲーム画像をＧＰＵ１１ｂに生成させて、生成されたゲーム画像を液晶テレビ２に表示させる（ステップＳ１５）。
【０１２１】
ステップＳ１５の処理に続いて、ＣＰＵ１０は、電源ボタン２４、リセットボタン２５、又は操作ボタン７２ｈの操作の有無に基づいて、ゲームの終了が指示されたか否かを判定する（ステップＳ１６）。ゲームの終了が指示されていないとＣＰＵ１０によって判定された場合（ステップＳ１６：ＮＯ）、ステップＳ３へ処理が戻されて、ステップＳ３以降のゲーム処理が繰り返される。逆に、ゲームの終了が指示されたとＣＰＵ１０によって判定された場合（ステップＳ１６：ＹＥＳ）、一連のゲーム処理が終了する。
【０１２２】
［構え処理］
図１５は、図１３のステップＳ９における構え処理の詳細フローチャートである。上述したステップＳ８において第１コントローラ７の角速度が所定値未満であると判定した場合（ステップＳ８：ＮＯ）、ＣＰＵ１０は、角速度データ１２７１に基づいて、第１コントローラ７の姿勢を算出する（ステップＳ９１）。具体的には、ＣＰＵ１０は、推定姿勢データ１２８が示す第１コントローラ７の姿勢を、角速度データ１２７１が示す角速度に基づいて更新することによって、第１コントローラ７の現在の姿勢を算出する。
【０１２３】
続いて、ＣＰＵ１０は、推定姿勢データ１２８が示す第１コントローラ７の最新の姿勢に基づいて、剣オブジェクト１０４の姿勢及び位置を算出する（ステップＳ９２）。具体的には、ＣＰＵ１０は、推定姿勢データ１２８が示す第１コントローラ７の姿勢に基づいて、剣オブジェクト１０４が第１コントローラ７と同じ向きを向くように、剣オブジェクト１０４の姿勢を算出する。そして、ＣＰＵ１０は、オブジェクトデータ１３９が示すプレイヤオブジェクト１０１の位置やプレイヤオブジェクト１０１の腕の長さ等を考慮して、仮想ゲーム空間における剣オブジェクト１０４の位置を算出する。このステップＳ９２の処理で算出された剣オブジェクト１０４の姿勢及び位置は、剣姿勢データ１２９及び剣位置データ１３０としてデータ記憶部１２６に記憶される。
【０１２４】
このステップＳ９２の処理が行われることにより、第１コントローラ７の姿勢が剣オブジェクト１０４の姿勢及び位置に反映される。そして、剣姿勢データ１２９、剣位置データ１３０、オブジェクトデータ１３９等に基づいてステップＳ１５の表示処理が行われることで、プレイヤが第１コントローラ７を構えた姿勢と同じようにプレイヤオブジェクト１０１が剣オブジェクト１０４を構えた状態を示すゲーム画像が液晶テレビ２に表示される。
【０１２５】
［攻撃開始処理］
図１６は、図１３のステップＳ１０における攻撃開始処理の詳細フローチャートである。上述したステップＳ８において第１コントローラ７の角速度が所定値以上であると判定した場合（ステップＳ８：ＹＥＳ）、ＣＰＵ１０は、仮想ゲーム空間における剣オブジェクト１０４の姿勢を変化させる（ステップＳ１０１）。具体的には、ＣＰＵ１０は、角速度データ１２７１が示す３軸周りの角速度に基づいて、剣姿勢データ１２９を更新する。
【０１２６】
このステップＳ１０１の処理が行われてからステップＳ１５の表示処理が行われることで、プレイヤが第１コントローラ７の振り操作を開始した時点の第１コントローラ７の姿勢と同じ姿勢でプレイヤオブジェクト１０１が剣オブジェクト１０４を振っている状態を示すゲーム画像が液晶テレビ２に表示される。
【０１２７】
ステップＳ１０１の処理に続いて、方向判別手段として機能するＣＰＵ１０は、第１コントローラ７の振り方向を判別する（ステップＳ１０２）。具体的には、ＣＰＵ１０は、角速度データ１２７１が示すＹ軸周りのヨー角に関する角速度、及びＸ軸周りのピッチ角に関する角速度に基づいて、第１コントローラ７の振り方向（動作方向）を判別する。本実施形態では、第１コントローラ７の振り方向は、下方向、上方向、右方向、及び左方向の４方向に判別される。このステップＳ１０２の処理で判別された振り方向は、振り方向データ１３１としてデータ記憶領域１２６に記憶される。
【０１２８】
ここで、下方向は、プレイヤが第１コントローラ７を上から下へ向けて振る操作を行ったときの第１コントローラ７の動作方向である（図１４参照）。上方向は、プレイヤが第１コントローラ７を下から上へ向けて振る操作を行ったときの第１コントローラ７の動作方向である。右方向は、プレイヤが第１コントローラ７を左から右へ向けて振る操作を行ったときの第１コントローラ７の動作方向である（図１０参照）。左方向は、プレイヤが第１コントローラ７を右から左へ向けて振る操作を行ったときの第１コントローラ７の動作方向である（図１１参照）。
【０１２９】
なお、本実施形態では、第１コントローラ７の振り方向を上述した４方向に判別する場合について説明するが、判別される振り方向は４方向に限定されるものではない。例えば、第１コントローラ７の振り方向は、上記４方向に右斜め下方向、左斜め下方向、右斜め上方向、及び左斜め上方向を加えた８方向に判別されてもよい。
【０１３０】
ところで、このステップＳ１０２における振り方向を判別する処理は、ステップＳ８において角速度が所定値以上であると判定された場合に、ステップＳ８の処理に続けて実行される。すなわち、第１コントローラ７の振り方向を判別する処理は、本実施形態では、第１コントローラ７の振り操作が開始されたと判定されたときに行われる。
【０１３１】
ＣＰＵ１０は、第１コントローラ７の振り方向を判別した後、攻撃フラグ１３２をＯＮに設定する（ステップＳ１０３）。攻撃フラグ１３２がＯＮに設定されることにより、上記ステップＳ７において「ＹＥＳ」と判定されて、後述する当たり判定処理へ処理が進められる。
【０１３２】
［当たり判定処理］
図１７及び図１８は、図１３のステップＳ１２における当たり判定処理の詳細フローチャートである。上記ステップＳ７において攻撃フラグ１３２がＯＮに設定されていると判定した場合（ステップＳ７：ＹＥＳ）、位置関係検出手段として機能するＣＰＵ１０は、データ記憶領域１２６に記憶されている剣位置データ１３０及びオブジェクトデータ１３９を参照して、剣オブジェクト１０４と、敵オブジェクトとの位置関係を検出する（ステップＳ１２１）。このステップＳ１２１の処理による検出結果は、位置関係データ１３３としてデータ記憶手段１２６に格納される。
【０１３３】
ステップＳ１２１の処理に続いて、ＣＰＵ１０は、剣姿勢データ１２９、剣位置データ１３０、及び振り方向データ１３１に基づいて、剣オブジェクト１０４の移動軌跡を計算する（ステップＳ１２２）。すなわち、振り方向データ１３１が示す振り方向と対応する方向に剣オブジェクト１０４が振られた場合に、剣姿勢データ１２９及び剣位置データ１３０が示す位置及び姿勢に構えられた剣オブジェクト１０４がどのような軌跡を描きながら動作するかを計算する。そして、衝突判定手段として機能するＣＰＵ１０は、剣オブジェクト１０４が判定対象としての敵オブジェクトと衝突するか否かを判定する（ステップＳ１２３）。具体的には、ＣＰＵ１０は、ステップＳ１２１の処理によって得られた位置関係データ１３３を参照して、ステップＳ１２２の処理で計算した移動軌跡上に敵オブジェクト（例えば敵オブジェクト１０２）が存在するか否かに基づいて、剣オブジェクト１０４が敵オブジェクトに衝突するか否かを判定する。
【０１３４】
ＣＰＵ１０は、ステップＳ１２３において衝突判定を行った後、その判定結果に基づいて、剣オブジェクト１０４が衝突する判定対象（以下「衝突対象」という。）があるか否かを判定する（ステップＳ１２４）。衝突対象がないと判定した場合（ステップＳ１２４：ＮＯ）、ＣＰＵ１０は、剣オブジェクト１０４を空振りさせる空振り処理を行う（ステップＳ１２５）。
【０１３５】
ＣＰＵ１０は、ステップＳ１２５において空振り処理を行った後、剣振りアニメーションを設定する（ステップＳ１２６）。具体的には、ＣＰＵ１０は、空振り処理を示すアニメーション設定データ１３８をデータ記憶領域１２６に格納する。そして、ＣＰＵ１０は、ステップＳ１０３の処理によってＯＮに設定した攻撃フラグ１３２をＯＦＦに設定する（ステップＳ１２７）。
【０１３６】
このステップＳ１２７の処理が行われた後、処理がステップＳ１３へ進められる。すなわち、ＣＰＵ１０は、ステップＳ１２６の処理で設定した内容の剣振りアニメーションの再生を開始する（ステップＳ１３）。ここでは、ステップＳ１２５の処理が行われてからステップＳ１２６の処理が行われることによって、「空振り処理」を示すアニメーション設定データ１３８がデータ記憶領域１２６に記憶されている。このため、ＣＰＵ１０は、剣振りアニメーションデータ１３７の中から空振り処理用アニメーションデータを選択してその再生を開始する。このように、空振り処理用アニメーションデータの再生が開始された場合、空振り処理用アニメーションの再生が完了するまで上記ステップＳ３において「ＹＥＳ」と判定され続けて、ステップＳ１５の表示処理が繰り返される。その結果、プレイヤオブジェクト１０１が剣オブジェクト１０４を空振りする様子が液晶テレビ２に表示される。
【０１３７】
一方、ＣＰＵ１０は、剣オブジェクト１０４が衝突する衝突対象があると判定した場合（ステップＳ１２４：ＹＥＳ）、衝突対象が複数あるか否かを判定する（ステップＳ１２９）。衝突対象が複数あるとＣＰＵ１０によって判定された場合（ステップＳ１２９：ＹＥＳ）、後述するステップＳ１３６（図１８参照）へ処理が進められる。
【０１３８】
ＣＰＵ１０は、衝突対象が１つであると判定した場合（ステップＳ１２９：ＮＯ）、その衝突対象が指向性を有しているか否かを判定する（ステップＳ１３０）。具体的には、ＣＰＵ１０は、衝突対象に対応する指向性データ１３５がデータ記憶領域１２６に記憶されているか否かを判定する。衝突対象に対応する指向性データ１３５がデータ記憶領域１２６に記憶されている場合、その衝突対象が指向性を有していると判定することができる。逆に、衝突対象に対応する指向性データ１３５がデータ記憶領域１２６に記憶されていない場合、その衝突対象が指向性を有していないと判定することができる。
【０１３９】
図１９は、プレイヤが第１コントローラ７を左から右へ振った場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図である。図１９に例示される敵オブジェクト１０６には、指向性データ１３５が設定されていない。この敵オブジェクト１０６のように指向性を有していない衝突対象と剣オブジェクト１０４が衝突する場合、第１コントローラ７の振り方向とは無関係に、衝突対象に対してヒット処理が行われる。
【０１４０】
衝突処理決定手段として機能するＣＰＵ１０は、衝突対象が指向性を有していないと判定した場合（ステップＳ１３０：ＮＯ）、衝突対象に対してヒット処理を行う（ステップＳ１３１）。具体的には、ＣＰＵ１０は、剣オブジェクト１０４を衝突対象（ここでは敵オブジェクト１０６）にヒットさせると共に、剣オブジェクト１０４がヒットした衝突対象に対してダメージを与える処理を実行する。
【０１４１】
このステップＳ１３１の処理が行われた場合にも、上述したステップＳ１２６以降の処理が行われる。ステップＳ１３１の処理に続いてステップＳ１２６の処理を行う場合、ＣＰＵ１０は、ステップＳ１２６の処理において、「ヒット処理」を示すアニメーション設定データ１３８をデータ記憶領域１２６に格納する。この場合、ＣＰＵ１０は、ステップＳ１３において、剣振りアニメーションデータ１３７の中からヒット処理用アニメーションデータを選択してその再生を開始する。このように、ヒット処理用アニメーションデータの再生が開始された場合、ヒット処理用アニメーションの再生が完了するまで上記ステップＳ３において「ＹＥＳ」と判定され続けて、ステップＳ１５の表示処理が繰り返される。その結果、剣オブジェクト１０４が衝突対象にヒットしてその衝突対象にダメージが与えられる様子が液晶テレビ２に表示される。図１９には、衝突対象としての敵オブジェクト１０６に対してステップＳ１３１の処理でヒット処理が行われた場合に液晶テレビ２に表示されるゲーム画像が例示されている。なお、敵オブジェクト１０６は指向性を有していないので、敵オブジェクト１０６に対する剣オブジェクト１０４の振り方向（第１コントローラ７の振り方向）がどの方向であったとしても、敵オブジェクト１０６に対してヒット処理が行われる。
【０１４２】
一方、ＣＰＵ１０は、衝突対象が指向性を有していると判定した場合（ステップＳ１３０：ＹＥＳ）、上述したステップＳ１２１の処理で検出した位置関係において、上述したステップＳ１０２（図１６参照）の処理で判別した第１コントローラ７の振り方向が、剣オブジェクト１０４が衝突する衝突対象に対して設定されている指向性データ１３５が示すヒット方向と一致するか否かを判定する（ステップＳ１３２）。第１コントローラ７の振り方向がヒット方向と一致するとＣＰＵ１０によって判定された場合（ステップＳ１３２：ＹＥＳ）、処理がステップＳ１３１へ進められる。すなわち、指向性を有する衝突対象（例えば敵オブジェクト１０２）に対して、ヒット処理が行われる。このように、指向性を有する衝突対象に対して振り方向とヒット方向とが一致すると判定された場合、例えば図１０に例示されるようなアニメーションが液晶テレビ２に表示される。
【０１４３】
ＣＰＵ１０は、第１コントローラ７の振り方向がヒット方向と一致しないと判定した場合（ステップＳ１３２：ＮＯ）、衝突対象に対して弾き処理を行う（ステップＳ１３３）。具体的には、ＣＰＵ１０は、指向性を有する衝突対象（例えば敵オブジェクト１０２）に剣オブジェクト１０４を弾き返す動作を行わせる。
【０１４４】
このステップＳ１３３の処理が行われた場合にも、上述したステップＳ１２６以降の処理が行われる。ステップＳ１３３の処理に続いてステップＳ１２６の処理を行う場合、ＣＰＵ１０は、ステップＳ１２６の処理において、「弾き処理」を示すアニメーション設定データ１３８をデータ記憶領域１２６に格納する。この場合、ＣＰＵ１０は、ステップＳ１３において、剣振りアニメーションデータ１３７の中から弾き処理用アニメーションデータを選択してその再生を開始する。このように、弾き処理用アニメーションデータの再生が開始された場合、弾き処理用アニメーションの再生が完了するまで上記ステップＳ３において「ＹＥＳ」と判定され続けて、ステップＳ１５の表示処理が繰り返される。その結果、剣オブジェクト１０４が指向性を有する衝突対象（例えば敵オブジェクト１０２）に弾き返される様子が液晶テレビ２に表示される（図１１参照）。
【０１４５】
このように、ＣＰＵ１０は、ステップＳ１３０〜ステップＳ１３３の処理を実行することによって、ステップＳ１０２の処理で判別した第１コントローラ７の振り方向に基づいて、剣オブジェクト１０４が衝突する衝突対象に対してヒット処理を行うか否か（本実施形態ではヒット処理を行うか或いは弾き処理を行うか）を決定する。
【０１４６】
例えば指向性を有する敵オブジェクト１０２（図１０及び図１１参照）に対しては、ヒット方向として右方向を示す指向性データ１３５がデータ記憶領域１２６に記憶されている。このため、ステップＳ１０２の処理で判別された第１コントローラ７の振り方向が右方向であった場合、振り方向とヒット方向とが一致するので、敵オブジェクト１０２に対してヒット処理が行われてその様子を示すアニメーションが液晶テレビ２に表示される（図１０参照）。一方、ステップＳ１０２の処理で判別された第１コントローラ７の振り方向が左方向であった場合に、振り方向とヒット方向とが一致しないので、敵オブジェクト１０２に対して弾き処理が行われてその様子を示すアニメーションが液晶テレビ２に表示される（図１１参照）。
【０１４７】
なお、ステップＳ１３２の判定処理は、上記ステップＳ１２１の処理で検出された剣オブジェクト１０４とノンプレイヤオブジェクトとの位置関係を考慮して行われる。例えば、敵オブジェクト１０２がプレイヤオブジェクト１０１の方を向いている状態（図１０及び図１１参照）と、プレイヤオブジェクト１０１に対して背を向けている状態（不図示）とでは、敵オブジェクト１０２に対する指向性データ１３５が示すヒット方向が相異なる。つまり、敵オブジェクト１０２がプレイヤオブジェクト１０１の方を向いているときには、敵オブジェクト１０２に対するヒット方向が右方向であるが、敵オブジェクト１０２がプレイヤオブジェクト１０１に背を向けているときには、敵オブジェクト１０２に対するヒット方向が左方向である。このように、剣オブジェクト１０４（プレイヤオブジェクト１０１）とノンプレイヤオブジェクトとの位置関係によって、指向性データ１３５が示すヒット方向が変化する。このため、剣オブジェクト１０４とノンプレイヤオブジェクトとの位置関係を考慮してヒット処理を行うか否かを決定することにより、ヒット処理を行うか否かを正確に決定することができる。
【０１４８】
また、例えば敵オブジェクト１０２が盾を上に向けることによって敵オブジェクト１０２のヒット方向が変化する場合や、例えば剣オブジェクト１０４と敵オブジェクト１０２との間に障害物となるオブジェクトが位置している場合にも、剣オブジェクト１０４とノンプレイヤオブジェクトとの位置関係を考慮してヒット処理を行うか否かを決定することは有効である。
【０１４９】
上述したステップＳ１２９において、優先順位設定手段として機能するＣＰＵ１０は、衝突対象が複数あると判定した場合（ステップＳ１２９：ＹＥＳ）、ステップＳ１２１の処理で検出したオブジェクト同士の位置関係、及びステップＳ１０２の処理で判別した第１コントローラ７の振り方向に基づいて、複数の衝突対象に対して優先順位を設定する（ステップＳ１３６）。具体的には、ＣＰＵ１０は、ステップＳ１２１において検出したオブジェクト同士の位置関係において、ステップＳ１０２において判別した振り方向で第１コントローラ７が振られた場合に剣オブジェクト１０４が最初に衝突する衝突対象の優先順位が最も高くなるように、複数の衝突対象のそれぞれに対して優先順位を設定する。
【０１５０】
例えば図２０に例示されるように衝突対象としての敵オブジェクト１０２と敵オブジェクト１０６とが並んでいる状態において第１コントローラ７が右から左へ振られた場合、剣オブジェクト１０４が最初に衝突する衝突対象は、敵オブジェクト１０６である。このため、ＣＰＵ１０は、敵オブジェクト１０６の優先順位が敵オブジェクト１０２の優先順位よりも高くなるように、敵オブジェクト１０２及び敵オブジェクト１０６に対して優先順位を設定する。
【０１５１】
また、例えば図２１に例示されるように衝突対象としての敵オブジェクト１０６と敵オブジェクト１０２とが並んでいる状態において第１コントローラ７が右から左へ振られた場合、剣オブジェクト１０４が最初に衝突する衝突対象は、敵オブジェクト１０２である。このため、ＣＰＵ１０は、敵オブジェクト１０２の優先順位が敵オブジェクト１０６の優先順位よりも高くなるように、敵オブジェクト１０２及び敵オブジェクト１０６に対して優先順位を設定する。
【０１５２】
このように、ＣＰＵ１０は、剣オブジェクト１０４が複数の衝突対象に衝突すると判定した場合に、第１コントローラ７の振り方向、及び剣オブジェクト１０４とノンプレイヤオブジェクトとの位置関係に基づいて、複数の衝突対象に対して優先順位を設定する。このステップＳ１３６の処理によって設定された優先順位は、優先順位データ１３６としてデータ記憶領域１２６に格納される。
【０１５３】
ステップＳ１３６の処理に続いて、ＣＰＵ１０は、最優先の衝突対象に指向性があるか否かを判定する（ステップＳ１３７）。具体的には、ＣＰＵ１０は、データ記憶領域１２６に記憶されている優先順位データ１３６を参照して、剣オブジェクト７が衝突する可能性がある複数の衝突対象の中から優先順位が最も高い衝突対象を特定する。そして、ＣＰＵ１０は、その衝突対象に対する指向性データ１３５がデータ記憶領域１２６に記憶されているか否かに基づいて、その衝突対象が指向性を有しているか否かを判定する。
【０１５４】
ＣＰＵ１０は、最優先の衝突対象に指向性がないと判定した場合（ステップＳ１３７：ＮＯ）、最優先の衝突対象に対してヒット処理を行う（ステップＳ１３８）。このステップＳ１３８のヒット処理は、ステップＳ１３０で「ＮＯ」と判定されてステップＳ１３１で行われるヒット処理と同様に行われる。このステップＳ１３８の処理が行われると、処理がステップＳ１２６（図１７参照）へ進められる。指向性がない衝突対象としては、本実施形態では敵オブジェクト１０６が挙げられる。敵オブジェクト１０６が最優先の衝突対象に設定されてヒット処理が行われた場合、図２０に例示されるように、剣オブジェクト１０４が敵オブジェクト１０６にヒットする様子を示すヒット処理用アニメーションが再生されることになる。
【０１５５】
ＣＰＵ１０は、最優先の衝突対象に指向性があると判定した場合（ステップＳ１３７：ＹＥＳ）、第１コントローラ７の振り方向が、最優先の衝突対象に対して設定されているヒット方向と一致するか否かを判定する（ステップＳ１３９）。具体的には、ＣＰＵ１０は、最優先の衝突対象に対する指向性データ１３５を参照して、最優先の衝突対象に対して予め設定されているヒット方向を判別する。そして、ＣＰＵ１０は、ステップＳ１０２の処理で判別した振り方向（振り方向データ１３１が示す振り方向）が、最優先の衝突対象のヒット方向と一致するか否かを判定する。
【０１５６】
ＣＰＵ１０は、振り方向とヒット方向とが一致すると判定した場合（ステップＳ１３９：ＹＥＳ）、最優先の衝突対象に対して上述したステップＳ１３８のヒット処理を行う。指向性がある衝突対象としては、本実施形態では敵オブジェクト１０２が挙げられる。敵オブジェクト１０２が最優先の衝突対象に設定されてヒット処理が行われた場合、図２２に例示されるように、剣オブジェクト１０４が敵オブジェクト１０２にヒットする様子を示すヒット処理用アニメーションが再生されることになる。
【０１５７】
逆に、振り方向とヒット方向とが一致しないと判定した場合（ステップＳ１３９：ＮＯ）、ＣＰＵ１０は、最優先の衝突対象に対して弾き処理を行う（ステップＳ１４０）。このステップＳ１４０の弾き処理は、ステップＳ１３３で行われる弾き処理と同様に行われる。このステップＳ１４０の処理が行われると、処理がステップＳ１２６（図１７参照）へ進められる。例えば敵オブジェクト１０２が最優先の衝突対象に設定されて弾き処理が行われた場合、図２１に例示されるように、剣オブジェクト１０４が敵オブジェクト１０２に弾き返される様子を示す弾き処理用アニメーションが再生されることになる。
【０１５８】
このように、ＣＰＵ１０は、複数の衝突対象に対して優先順位を設定した場合、優先順位が最上位の衝突対象に対してヒット処理を行うか弾き処理を行うかを決定する。
【０１５９】
［本実施形態の作用効果］
以上説明したように、本実施形態によれば、剣オブジェクト１０４が敵オブジェクトに衝突すると判定された場合に、第１コントローラ７の振り方向に基づいて、敵オブジェクトに対してヒット処理を行うか否かが決定される。すなわち、剣オブジェクト１０４が敵オブジェクトに衝突した場合に無条件にヒット処理が行われるのではなく、第１コントローラ７の振り方向に基づいて、ヒット処理を行うか否かが決定される。したがって、第１コントローラ７の振り方向（すなわち剣オブジェクト１０４が敵オブジェクトに衝突する方向）に応じて、衝突時の敵オブジェクトの反応を示す演出を容易に切り替えることができる。
【０１６０】
また、本実施形態では、第１コントローラ７の振り方向だけでなく、剣オブジェクト１０４と敵オブジェクトとの位置関係を考慮して、敵オブジェクトに対してヒット処理を行うか否かが決定される。このため、剣オブジェクト１０４と、剣オブジェクト１０４による攻撃を受ける敵オブジェクトとの位置関係（例えば敵オブジェクト１０２の向きや姿勢）が変化したとしても、敵オブジェクトに対してヒット処理を行うか否かを適切に決定することができる。
【０１６１】
また、本実施形態では、剣オブジェクト１０４が複数の敵オブジェクトと衝突する可能性がある場合に、複数の敵オブジェクトに対して優先順位が設定され、最上位の敵オブジェクトに対してヒット処理を行うか否かが決定される。このため、ヒット処理を行うか否かを決定すべき敵オブジェクトに対して、ヒット処理を行うか否かを適切に決定することができる。
【０１６２】
また、本実施形態では、剣オブジェクト１０４による攻撃動作を指示する第１コントローラ７の振り操作が開始されたと判定されたタイミングで、第１コントローラ７の振り方向が判別される。言い換えれば、剣オブジェクト１０４が敵オブジェクトに衝突するよりも前に、第１コントローラ７の振り方向が判別される。このため、剣オブジェクト１０４が敵オブジェクトに衝突したときに第１コントローラ７の振り方向を判別する場合に比べて、より早いタイミングで敵オブジェクトに対してヒット処理を行うか否かを決定することができる。その結果、第１コントローラ７の振り操作が行われてから剣振りのアニメーションの再生が開始されるまでのタイムラグを短縮することができる。
【０１６３】
また、本実施形態では、第１コントローラ７の振り方向を判別する判別処理や、剣オブジェクト１０４が敵オブジェクトと衝突するか否かの衝突判定が、ジャイロセンサユニット９から出力される角速度データに基づいて行われる。このため、例えば加速度センサ７０１から出力される加速度データを使用する場合に比べて、上記判別処理及び衝突処理をより正確に行うことができる。
【０１６４】
［当たり判定処理の変形例］
上述した本実施形態では、剣オブジェクト１０４が複数の衝突対象と衝突する可能性がある場合に、最優先の衝突対象のみにヒット処理を行うか否かを決定する場合について説明した。これに加えて、最優先の衝突対象に対してヒット処理を行うと決定した場合に、次優先の衝突対象に対してヒット処理を行うか否かを更に決定するようにしてもよい。
【０１６５】
以下、図２３を参照しつつ、当たり判定処理の変形例について説明する。ここで、図２３は、当たり判定処理の変形例を示すフローチャートである。本変形例では、上述したステップＳ１２９（図１７参照）において衝突対象が複数あるとＣＰＵ１０によって判定された場合（ステップＳ１２９：ＹＥＳ）、図１８におけるステップＳ１３６〜ステップＳ１４０の処理に代えて、以下に説明するステップＳ１５１以降の処理が行われる。
【０１６６】
ＣＰＵ１０は、衝突対象が複数あると判定した場合（ステップＳ１２９：ＹＥＳ）、ステップＳ１３６の処理と同様に、オブジェクト同士の位置関係、及び第１コントローラ７の振り方向に基づいて、複数の判定対象に対して優先順位を設定する（ステップＳ１５１）。
【０１６７】
そして、ＣＰＵ１０は、ステップＳ１３７の処理と同様に、最優先の衝突対象に指向性があるか否かを判定する（ステップＳ１５２）。最優先の衝突対象に指向性があると判定した場合（ステップＳ１５２：ＹＥＳ）、ＣＰＵ１０は、ステップＳ１３９の処理と同様に、第１コントローラ７の振り方向が、最優先の衝突対象に対して予め設定されたヒット方向と一致するか否かを判定する（ステップＳ１５３）。ここで、振り方向とヒット方向とが一致しないと判定した場合（ステップＳ１５３：ＮＯ）、ＣＰＵ１０は、ステップＳ１４０の処理と同様に、最優先の衝突対象に対して弾き処理を行う（ステップＳ１５４）。このステップＳ１５４の処理が行われた後、処理が上述したステップＳ１２６へ進められる。この場合、図２１に例示されるように、剣オブジェクト１０４が最優先の衝突対象である敵オブジェクト１０２に弾き返される様子を示す弾き処理用アニメーションが再生されることになる。
【０１６８】
一方、ＣＰＵ１０は、最優先の衝突対象に指向性がないと判定した場合（ステップＳ１５２：ＮＯ）、又は振り方向がヒット方向と一致すると判定した場合（ステップＳ１５３：ＹＥＳ）、ステップＳ１３８の処理と同様に、最優先の衝突対象に対してヒット処理を行う（ステップＳ１５５）。
【０１６９】
最優先の衝突対象にヒット処理が行われる場合、最優先の衝突対象を斬った剣オブジェクト１０４が、次に優先順位が高い衝突対象と衝突することになる。そこで、本変形例においては、ステップＳ１５５の処理が行われた場合に、最優先の衝突対象よりも優先順位が低い衝突対象に対して、以下に説明するステップＳ１５６以降の処理が行われる。
【０１７０】
ステップＳ１５５の処理を行った場合、ＣＰＵ１０は、次に優先順位が高い衝突対象に指向性があるか否かを判定する（ステップＳ１５６）。具体的には、ＣＰＵ１０は、次優先の衝突対象である敵オブジェクトに対する指向性データ１３５がデータ記憶領域１２６に記憶されているか否かを判定する。
【０１７１】
ＣＰＵ１０は、次優先の衝突対象に指向性があると判定した場合（ステップＳ１５６：ＹＥＳ）、第１コントローラ７の振り方向が、次優先の衝突対象に対して予め設定されているヒット方向と一致するか否かを判定する（ステップＳ１５７）。具体的には、ＣＰＵ１０は、ステップＳ１５６の処理で判定の対象となった次優先の衝突対象に対応する指向性データ１３５を参照して、次優先の衝突対象のヒット方向を特定する。そして、ＣＰＵ１０は、振り方向データ１３１が示す振り方向が、特定した次優先の衝突対象のヒット方向と一致するか否かを判定する。
【０１７２】
ＣＰＵ１０は、第１コントローラ７の振り方向と次優先の衝突対象のヒット方向とが一致しないと判定した場合（ステップＳ１５７：ＮＯ）、次優先の衝突対象に対して弾き処理を行う（ステップＳ１５８）。このステップＳ１５８における弾き処理は、弾き処理の対象が最優先の衝突対象ではなく次優先の衝突対象であることを除いて、ステップＳ１４０の処理と同様に行われる。
【０１７３】
このステップＳ１５８の処理が行われた後、処理が上述したステップＳ１２６へ進められる。この場合、最優先の衝突対象に対してヒット処理が行われ、且つ次優先の衝突対象に対して弾き処理が行われている。このため、図２４に例示されるようなアニメーションが再生されることになる。ここで、図２４は、敵オブジェクト１０６が最優先の衝突対象に設定され、敵オブジェクト１０６の隣に位置する敵オブジェクト１０２が次優先の衝突対象に設定され、更に第１コントローラ７の振り方向がその敵オブジェクト１０２に対するヒット方向と一致しない場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図である。図２４に例示されるように、敵オブジェクト１０６に対してヒット処理が行われ、且つ敵オブジェクト１０６の隣に位置する敵オブジェクト１０２に対して弾き処理が行われた様子が示されている。
【０１７４】
ＣＰＵ１０は、次優先の衝突対象に指向性がないと判定した場合（ステップＳ１５６：ＮＯ）、又は振り方向がヒット方向と一致すると判定した場合（ステップＳ１５７：ＹＥＳ）、次優先の衝突対象に対してヒット処理を行う（ステップＳ１５９）。このステップＳ１５９におけるヒット処理は、ヒット処理の対象が最優先の衝突対象ではなく次優先の衝突対象であることを除いて、ステップＳ１３８の処理と同様に行われる。
【０１７５】
ステップＳ１５９の処理を行った後、ＣＰＵ１０は、ヒット処理を行うか或いは弾き処理を行うかが決定されていない衝突対象があるか否かを判定する（ステップＳ１６０）。処理が未定である衝突対象があるとＣＰＵ１０によって判定された場合（ステップＳ１６０：ＹＥＳ）、処理がステップＳ１５６へ戻される。すなわち、ステップＳ１５５の処理でヒット処理された衝突対象、及びステップＳ１５９の処理でヒット処理された衝突対象以外の衝突対象が複数の衝突対象の中に含まれている場合に、処理がステップＳ１５６へ戻される。
【０１７６】
処理が未定の衝突対象がないとＣＰＵ１０によって判定された場合（ステップＳ１６０：ＮＯ）、処理が上述したステップＳ１２６へ進められる。この場合、最優先の衝突対象及び次優先の衝突対象に対してヒット処理が行われる。このため、図２５に例示されるようなアニメーションが再生されることになる。ここで、図２５は、敵オブジェクト１０６が最優先の衝突対象に設定され、敵オブジェクト１０６の隣に位置する敵オブジェクト１０６が次に優先順位が高い衝突対象に設定され、更にその隣に位置する敵オブジェクト１０２が最も優先順位が低い衝突対象に設定された場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図である。ここで、２体の敵オブジェクト１０６は指向性を有しておらず、また、第１コントローラ７の振り方向が敵オブジェクト１０２のヒット方向と一致している。このため、図２５に例示されるように、剣オブジェクト１０４が振り抜かれて、２体の敵オブジェクト１０６、及び敵オブジェクト１０２に対してヒット処理が行われた様子が表示される。
【０１７７】
一方、ステップＳ１６０の処理で「ＹＥＳ」と判定されてステップＳ１５６へ処理が戻され、更に優先順位が最も低い衝突対象に対してステップＳ１５８の弾き処理が行われた場合、図２６に例示されるようなアニメーションが再生されることになる。ここで、図２６は、敵オブジェクト１０６が最優先の衝突対象に設定され、その敵オブジェクト１０６の隣に位置する敵オブジェクト１０６が次に優先順位が高い衝突対象に設定され、更にその隣に位置する敵オブジェクト１０２が最も優先順位が低い衝突対象に設定された場合に液晶テレビ２に表示されるアニメーションの一例を示す画面図である。ここで、２体の敵オブジェクト１０６は指向性を有しておらず、また、第１コントローラ７の振り方向が敵オブジェクト１０２のヒット方向と一致していない。このため、図２６に例示されるように、剣オブジェクト１０４が２体の敵オブジェクト１０６にヒットした後に敵オブジェクト１０２によって弾き返される様子が表示される。
【０１７８】
なお、以上説明した当たり処理の変形例は、例えば剣オブジェクト１０４が最後まで振り切られる様子を表示するためのアニメーションデータ、振り動作を開始した剣オブジェクト１０４が最初の衝突対象の所で止まる様子を表示するためのアニメーションデータ、振り動作を開始した剣オブジェクト１０４が２番目の衝突対象の所で止まる様子を表示するためのアニメーションデータ、振り動作を開始した剣オブジェクト１０４が３番目の衝突対象の所で止まる様子を表示するためのアニメーションデータ、及び剣オブジェクト１０４が弾き返される様子を表示するためのアニメーションデータの５種類のアニメーションデータを用意することによって実現可能である。
【０１７９】
［その他の変形例］
本発明は上記実施形態に限定されるものではなく、例えば以下の形態であってもよい。
すなわち、上記実施形態では、剣オブジェクト１０４とノンプレイヤオブジェクトとの位置関係を考慮して衝突対象に対してヒット処理を行うか否かを決定する場合について説明したが、オブジェクト同士の位置関係を考慮せず、第１コントローラ７の振り方向のみに基づいて、衝突対象に対してヒット処理を行うか否かを決定するようにしてもよい。
【０１８０】
また、上記実施形態では、剣オブジェクト１０４が複数の衝突対象と衝突する可能性がある場合に優先順位を設定して優先順位が最も高い衝突対象に対してのみヒット処理を行うか否かを決定する場合について説明した。また、上記変形例では、複数の衝突対象に優先順位を設定して、優先順位の高い衝突対象にヒット処理を行うと決定した場合に、次に優先順位が高い衝突対象にヒット処理を行うか否かを決定する場合について説明した。これらに代えて、優先順位を設定せずに、複数の衝突対象の全てに対して、ヒット処理を行うか否かを決定するようにしてもよい。
【０１８１】
また、上記実施形態では、第１コントローラ７の振り操作が開始されたとき（角速度データ１２７１が示す角速度が所定値以上になったとき）に、第１コントローラ７の振り方向を判別する場合について説明した。これに代えて、剣オブジェクト１０４が衝突対象としての敵オブジェクトと衝突したと判定したタイミングで、第１コントローラ７の振り方向を判別するようにしてもよい。具体的には、図１６におけるステップＳ１０２の処理を、例えばステップＳ１２４（図１７参照）で「ＹＥＳ」と判定されたときに行うようにしてもよい。
【０１８２】
また、上記実施形態では、第１コントローラ７の振り操作が開始されたとき（角速度データ１２７１が示す角速度が所定値以上になったとき）に、剣オブジェクト１０４の移動軌跡を算出して、敵オブジェクトとの衝突を判定する場合について説明した。これに代えて、第１コントローラ７の振り操作が開始された後も角速度データを毎フレーム取得し、取得した角速度データに基づいてリアルタイムに剣オブジェクト１０４の移動（動作）を制御するようにしてもよい。この場合、取得した角速度データに基づいて算出された剣オブジェクト１０４の姿勢及び位置と敵オブジェクトの位置とによって衝突が判定される。
【０１８３】
また、上記実施形態では、衝突対象が複数あると判定された後に優先順位を設定する場合について説明したが、優先順位の設定は、ステップＳ１２３（図１７参照）の衝突判定に先立って行ってもよい。
【０１８４】
また、指向性データ１３５の他の例として、衝突判定用の判定領域のサイズを示すデータを用いるようにしてもよい。具体的には、構え処理（図１５参照）のときや、ステップＳ１２３の衝突判定前の任意のタイミングで第１コントローラ７の振り方向を判別して、判別した振り方向に応じて、衝突対象である敵オブジェクトに対して設定されている衝突判定用の判定領域のサイズを変化させる。例えば、プレイヤが第１コントローラ７を右から左へ振ったときには衝突対象の判定領域のサイズを相対的に大きくし、逆にプレイヤが第１コントローラ７を左から右へ振ったときには衝突対象の判定領域のサイズを相対的に小さくする。このようにすれば、プレイヤが第１コントローラ７を右から左へ振ったときには衝突対象の判定領域のサイズが相対的に大きいために衝突しやすく、逆にプレイヤが第１コントローラ７を左から右へ振ったときには衝突対象の判定領域のサイズが相対的に小さいために衝突しにくくなり、ヒット可能な方向を示すデータを用いた場合と同様の効果が得られる。
【０１８５】
また、上記実施形態では、３軸周りの角速度を検出するために、２軸ジャイロセンサ９６と１軸ジャイロセンサ９７とを用いる構成としたが、３軸周りの角速度を検出することができればよく、用いるジャイロセンサの数及び組み合わせはどのようなものであっても構わない。
【０１８６】
また、上記実施形態では、各ジャイロセンサ９６及び９７が角速度を検出する３つの軸は、加速度センサ７０１が加速度を検出する３つの軸（ＸＹＺ軸）と一致するように設定されていたが、各ジャイロセンサ９６及び９７が角速度を検出する３つの軸と、加速度センサ７０１が加速度を検出する３つの軸とは一致していなくてもよい。
【０１８７】
また、第１コントローラ７にジャイロセンサユニット９を装着せずに、第１コントローラ７に第２コントローラ８を直接装着してもよい。この場合、ジャイロセンサユニット９から出力される角速度データに代えて、加速度センサ７０１から出力される加速度データに基づいて第１コントローラ７の位置及び姿勢を算出するようにすればよい。
【０１８８】
また、上記実施形態では、剣オブジェクト１０４を持つプレイヤオブジェクト１０１を含まないアニメーションが表示される場合について説明したが、剣オブジェクト１０４及びプレイヤオブジェクト１０１を含むアニメーションを表示してもよい。また、剣オブジェクト１０４及びプレイヤオブジェクト１０１を含まず、剣オブジェクト１０４の移動軌跡のみを示すアニメーションを表示するようにしてもよい。すなわち、第１オブジェクト（本実施形態では剣オブジェクト１０４）を、液晶テレビ２に表示しないようにしてもよい。
【０１８９】
また、上記実施形態では、衝突判定用の判定領域としての衝突対象が１体の敵オブジェクトに対して１つ設定されている場合について説明したが、衝突対象は、１体の敵オブジェクトに対して相異なる位置に複数設定されてもよい。例えば、敵オブジェクトの中心から上下左右の異なる方向にそれぞれ４つの衝突対象を設定してもよい。
【０１９０】
また、上記実施形態では、上記のようなゲーム処理を１台のゲーム装置３で実現しているが、これは必須ではなく、複数の情報処理装置が協働することによって上記のようなゲーム処理を実現してもよい。すなわち、方向判別手段、衝突判定手段、及び衝突処理決定手段のうちの少なくとも１つの手段の機能を、ゲーム装置３以外の例えばネットワーク上のサーバ装置が実現するようにしてもよい。この場合、ゲーム装置３及びサーバ装置からなるゲームシステムが、上述したゲーム装置３と同様に機能する。
【産業上の利用可能性】
【０１９１】
本発明は、仮想ゲーム空間内のオブジェクト同士の衝突判定を行い、その判定結果に応じてゲーム処理を行うゲーム装置のコンピュータに実行させるゲームプログラム、ゲーム装置、ゲームシステム、及びゲーム処理方法等に適用可能である。
【符号の説明】
【０１９２】
１    ゲームシステム
３    ゲーム装置
４    光ディスク
５    コントローラ
７    第１コントローラ（入力装置）
８    第２コントローラ
９    ジャイロセンサユニット
１０    ＣＰＵ
１２    外部メインメモリ
９６    ２軸ジャイロセンサ（角速度センサ）
９７    １軸ジャイロセンサ（角速度センサ）
１０４    剣オブジェクト（第１オブジェクト）
１０２    敵オブジェクト（判定対象）
１０６    敵オブジェクト（判定対象）
【図１】
2011240000.tif 000003
【図２】
2011240000.tif 000004
【図３】
2011240000.tif 000005
【図４】
2011240000.tif 000006
【図５】
2011240000.tif 000007
【図６】
2011240000.tif 000008
【図７】
2011240000.tif 000009
【図８】
2011240000.tif 000010
【図９】
2011240000.tif 000011
【図１０】
2011240000.tif 000012
【図１１】
2011240000.tif 000013
【図１２】
2011240000.tif 000014
【図１３】
2011240000.tif 000015
【図１４】
2011240000.tif 000016
【図１５】
2011240000.tif 000017
【図１６】
2011240000.tif 000018
【図１７】
2011240000.tif 000019
【図１８】
2011240000.tif 000020
【図１９】
2011240000.tif 000021
【図２０】
2011240000.tif 000022
【図２１】
2011240000.tif 000023
【図２２】
2011240000.tif 000024
【図２３】
2011240000.tif 000025
【図２４】
2011240000.tif 000026
【図２５】
2011240000.tif 000027
【図２６】
2011240000.tif 000028
【手続補正書】
【提出日】平成22年11月22日(2010.11.22)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
それ故に、本発明の目的は、入力装置の動作方向に応じて、被衝突オブジェクトの反応を示す演出を容易に切り替えることを可能にするゲームプログラム、ゲーム装置、ゲームシステム、及びゲーム処理方法を提供することである。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
この構成によれば、例えば状態検出手段として加速度センサを使用する場合に比べて、入力装置の動作方向の判別、及び第１オブジェクトが判定対象と衝突するか否かの判定をより正確に行うことが可能になる。その結果、判定対象に対してヒット処理を行うか否かの判定が、より正確に行われる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１２３
【補正方法】変更
【補正の内容】
【０１２３】
続いて、ＣＰＵ１０は、推定姿勢データ１２８が示す第１コントローラ７の最新の姿勢に基づいて、剣オブジェクト１０４の姿勢及び位置を算出する（ステップＳ９２）。具体的には、ＣＰＵ１０は、推定姿勢データ１２８が示す第１コントローラ７の姿勢に基づいて、剣オブジェクト１０４が第１コントローラ７と同じ向きを向くように、剣オブジェクト１０４の姿勢を算出する。そして、ＣＰＵ１０は、オブジェクトデータ１３９が示すプレイヤオブジェクト１０１の位置やプレイヤオブジェクト１０１の腕の長さ等を考慮して、仮想ゲーム空間における剣オブジェクト１０４の位置を算出する。このステップＳ９２の処理で算出された剣オブジェクト１０４の姿勢及び位置は、剣姿勢データ１２９及び剣位置データ１３０としてデータ記憶領域１２６に記憶される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１３２
【補正方法】変更
【補正の内容】
【０１３２】
［当たり判定処理］
図１７及び図１８は、図１３のステップＳ１２における当たり判定処理の詳細フローチャートである。上記ステップＳ７において攻撃フラグ１３２がＯＮに設定されていると判定した場合（ステップＳ７：ＹＥＳ）、位置関係検出手段として機能するＣＰＵ１０は、データ記憶領域１２６に記憶されている剣位置データ１３０及びオブジェクトデータ１３９を参照して、剣オブジェクト１０４と、敵オブジェクトとの位置関係を検出する（ステップＳ１２１）。このステップＳ１２１の処理による検出結果は、位置関係データ１３３としてデータ記憶領域１２６に格納される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１８９
【補正方法】変更
【補正の内容】
【０１８９】
また、上記実施形態では、衝突判定用の判定領域としての衝突対象が１体の敵オブジェクトに対して１つ設定されている場合について説明したが、衝突対象は、１体の敵オブジェクトに対して相異なる位置に複数設定されてもよい。例えば、敵オブジェクトの中心から上下左右の異なる位置にそれぞれ４つの衝突対象を設定してもよい。