(57)【要約】【課題】入力装置を振る操作に応じて進行するゲームにおいて、当該入力装置が振られた方向を適正に設定することができるゲーム装置およびゲームプログラムを提供する。【解決手段】入力装置に加えられた動きに基づいてゲーム処理を行うゲーム装置である。ゲーム装置は、動き方向特定手段、移動方向設定手段、補正手段、および移動制御手段を備える。動き方向特定手段は、入力装置の動き方向を特定する。移動方向設定手段は、動き方向に基づいて、仮想ゲーム世界内のプレイヤオブジェクトの移動方向を設定する。補正手段は、仮想ゲーム世界内におけるプレイヤオブジェクトと当該プレイヤオブジェクトとは異なる目標物との位置関係に基づいて、移動方向設定手段が設定した移動方向を補正する。移動制御手段は、移動方向に応じて、仮想ゲーム世界内におけるプレイヤオブジェクトを移動させる。【選択図】図１０Ａ
2010131321.tif 000002
【特許請求の範囲】
【請求項１】
入力装置に加えられた動きに基づいてゲーム処理を行うゲーム装置であって、
前記入力装置の動き方向を特定する動き方向特定手段と、
前記動き方向に基づいて、仮想ゲーム世界内のプレイヤオブジェクトの移動方向を設定する移動方向設定手段と、
前記仮想ゲーム世界内における前記プレイヤオブジェクトと当該プレイヤオブジェクトとは異なる目標物との位置関係に基づいて、前記移動方向設定手段が設定した移動方向を補正する補正手段と、
前記移動方向に応じて、前記仮想ゲーム世界内における前記プレイヤオブジェクトを移動させる移動制御手段とを備える、ゲーム装置。
【請求項２】
前記補正手段は、前記仮想ゲーム世界内における前記プレイヤオブジェクトが前記目標物へ向かう方向に近づくように、前記移動方向設定手段が設定した移動方向を補正する、請求項１に記載のゲーム装置。
【請求項３】
前記目標物を中心として当該目標物の大きさよりも大きな誘導先範囲を前記仮想ゲーム世界内に設定する誘導先範囲設定手段を、さらに備え、
前記補正手段は、前記仮想ゲーム世界内における前記プレイヤオブジェクトが前記目標物に設定されている誘導先範囲内を通るように、前記移動方向設定手段が設定した移動方向を補正する、請求項２に記載のゲーム装置。
【請求項４】
前記補正手段は、前記移動方向設定手段が設定した移動方向と前記仮想ゲーム世界内における前記プレイヤオブジェクトが前記目標物へ向かう方向とを比較して、当該方向同士が所定の基準より近い場合に当該移動方向を補正する、請求項１または２に記載のゲーム装置。
【請求項５】
前記目標物を中心として当該目標物の大きさよりも大きな誘導元範囲を前記仮想ゲーム世界内に設定する誘導元範囲設定手段を、さらに備え、
前記補正手段は、前記移動方向設定手段が設定した移動方向が前記プレイヤオブジェクトから見て前記誘導元範囲内を通る場合、当該移動方向を補正する、請求項４に記載のゲーム装置。
【請求項６】
前記目標物を中心として前記誘導先範囲よりも大きな誘導元範囲を前記仮想ゲーム世界内に設定する誘導元範囲設定手段を、さらに備え、
前記補正手段は、前記移動方向設定手段が設定した移動方向が前記プレイヤオブジェクトから見て前記誘導元範囲内を通る場合、当該誘導元範囲を設定している前記目標物の誘導先範囲内を前記プレイヤオブジェクトが通るように、当該移動方向を補正する、請求項３に記載のゲーム装置。
【請求項７】
前記補正手段は、前記誘導元範囲の大きさに対する前記誘導先範囲の大きさの比率に応じて、前記プレイヤオブジェクトが前記目標物へ向かう方向に前記移動方向設定手段が設定した移動方向が近づくように補正する、請求項６に記載のゲーム装置。
【請求項８】
前記誘導先範囲設定手段は、前記プレイヤオブジェクトと前記目標物とを結ぶ直線に対して垂直な当該目標物を通る垂線に沿って、当該目標物を中心とした所定の範囲を前記誘導先範囲として設定し、
前記誘導元範囲設定手段は、前記垂線に沿って、当該目標物を中心とした前記誘導先範囲よりも大きな範囲を前記誘導元範囲として設定し、
前記補正手段は、前記プレイヤオブジェクトから見た前記移動方向設定手段が設定した移動方向が前記誘導元範囲と交わる場合、当該誘導元範囲を設定している前記目標物の誘導先範囲と交わるように当該移動方向を補正する、請求項６に記載のゲーム装置。
【請求項９】
前記誘導先範囲設定手段は、前記目標物を中心とした所定半径の円を前記誘導先範囲として設定し、
前記誘導元範囲設定手段は、前記目標物を中心とした前記誘導先範囲よりも大きな半径の円を前記誘導元範囲として設定し、
前記補正手段は、前記プレイヤオブジェクトから見た前記移動方向設定手段が設定した移動方向が前記誘導元範囲内を通る場合、当該誘導元範囲を設定している前記目標物の誘導先範囲の半径より小さな半径で、かつ当該目標物を中心とした円と接するように当該移動方向を補正する、請求項６に記載のゲーム装置。
【請求項１０】
前記プレイヤオブジェクトおよび複数の前記目標物を前記仮想ゲーム世界内に配置し、当該仮想ゲーム世界の少なくとも一部を表示手段に表示する表示制御手段と、
前記目標物に対して、それぞれ補正対象とする優先度を予め設定する優先度設定手段とを、さらに備え、
前記補正手段は、前記表示手段が表示する表示画面内に複数の前記目標物が存在する場合、当該目標物に設定されている優先度順に前記仮想ゲーム世界内における前記プレイヤオブジェクトが当該目標物へ向かう方向と前記移動方向設定手段が設定した移動方向とを順次比較し、当該方向同士が所定の基準より近くなった最初の目標物を用いて当該移動方向を補正する、請求項４に記載のゲーム装置。
【請求項１１】
前記誘導先範囲設定手段は、時間経過に応じて前記誘導先範囲の大きさを漸減的に小さく変化させる、請求項３に記載のゲーム装置。
【請求項１２】
前記プレイヤオブジェクトおよび前記目標物を前記仮想ゲーム世界内に配置し、当該仮想ゲーム世界の少なくとも一部を表示手段に表示する表示制御手段を、さらに備え、
前記誘導元範囲設定手段は、前記表示手段に対して前記目標物が表示される位置に応じて前記誘導元範囲の大きさを変化させる、請求項５に記載のゲーム装置。
【請求項１３】
前記移動方向設定手段が設定した移動方向を前記プレイヤオブジェクトが前記目標物へ向かう方向に前記補正手段が近づけた量に基づいて、前記プレイヤオブジェクトを操作するプレイヤの操作能力を算出するスキル算出手段を、さらに備える、請求項７に記載のゲーム装置。
【請求項１４】
前記入力装置は、加速度センサを備え、
前記動き方向特定手段は、前記加速度センサから出力される加速度データが示す加速度を用いて、前記入力装置の動き方向を特定する、請求項１に記載のゲーム装置。
【請求項１５】
前記動き方向特定手段は、
前記加速度データが示す加速度の推移を用いて、当該加速度の大きさが重力加速度の大きさに相当する状態が所定期間以上続いた場合、当該加速度の方向を前記入力装置に作用する重力方向とする重力方向特定手段と、
前記加速度データが示す加速度から前記重力方向の成分を取り除くことによって算出された加速度に基づいて、前記入力装置の動き方向を特定する動き算出手段とを含む、請求項１４に記載のゲーム装置。
【請求項１６】
前記動き方向特定手段は、前記入力装置の動き方向を特定した時点から所定の時間が経過した後、前記入力装置の次の動き方向を特定する処理を行う、請求項１４に記載のゲーム装置。
【請求項１７】
入力装置に加えられた動きに基づいてゲーム処理を行うゲーム装置のコンピュータで実行されるゲームプログラムであって、
前記コンピュータを、
前記入力装置の動き方向を特定する動き方向特定手段と、
前記動き方向に基づいて、仮想ゲーム世界内のプレイヤオブジェクトの移動方向を設定する移動方向設定手段と、
前記仮想ゲーム世界内における前記プレイヤオブジェクトと当該プレイヤオブジェクトとは異なる目標物との位置関係に基づいて、前記移動方向設定手段が設定した移動方向を補正する補正手段と、
前記移動方向に応じて、前記仮想ゲーム世界内における前記プレイヤオブジェクトを移動させる移動制御手段として機能させる、ゲームプログラム。
【請求項１８】
前記補正手段は、前記仮想ゲーム世界内における前記プレイヤオブジェクトが前記目標物へ向かう方向に近づくように、前記移動方向設定手段が設定した移動方向を補正する、請求項１７に記載のゲームプログラム。
【請求項１９】
前記目標物を中心として当該目標物の大きさよりも大きな誘導先範囲を前記仮想ゲーム世界内に設定する誘導先範囲設定手段として、前記コンピュータをさらに機能させ、
前記補正手段は、前記仮想ゲーム世界内における前記プレイヤオブジェクトが前記目標物に設定されている誘導先範囲内を通るように、前記移動方向設定手段が設定した移動方向を補正する、請求項１８に記載のゲームプログラム。
【請求項２０】
前記補正手段は、前記移動方向設定手段が設定した移動方向と前記仮想ゲーム世界内における前記プレイヤオブジェクトが前記目標物へ向かう方向とを比較して、当該方向同士が所定の基準より近い場合に当該移動方向を補正する、請求項１７または１８に記載のゲームプログラム。
【請求項２１】
前記目標物を中心として当該目標物の大きさよりも大きな誘導元範囲を前記仮想ゲーム世界内に設定する誘導元範囲設定手段として、前記コンピュータをさらに機能させ、
前記補正手段は、前記移動方向設定手段が設定した移動方向が前記プレイヤオブジェクトから見て前記誘導元範囲内を通る場合、当該移動方向を補正する、請求項２０に記載のゲームプログラム。
【請求項２２】
前記目標物を中心として前記誘導先範囲よりも大きな誘導元範囲を前記仮想ゲーム世界内に設定する誘導元範囲設定手段として、前記コンピュータをさらに機能させ、
前記補正手段は、前記移動方向設定手段が設定した移動方向が前記プレイヤオブジェクトから見て前記誘導元範囲内を通る場合、当該誘導元範囲を設定している前記目標物の誘導先範囲内を前記プレイヤオブジェクトが通るように、当該移動方向を補正する、請求項１９に記載のゲームプログラム。
【請求項２３】
前記補正手段は、前記誘導元範囲の大きさに対する前記誘導先範囲の大きさの比率に応じて、前記プレイヤオブジェクトが前記目標物へ向かう方向に前記移動方向設定手段が設定した移動方向が近づくように補正する、請求項２２に記載のゲームプログラム。
【請求項２４】
前記誘導先範囲設定手段は、前記プレイヤオブジェクトと前記目標物とを結ぶ直線に対して垂直な当該目標物を通る垂線に沿って、当該目標物を中心とした所定の範囲を前記誘導先範囲として設定し、
前記誘導元範囲設定手段は、前記垂線に沿って、当該目標物を中心とした前記誘導先範囲よりも大きな範囲を前記誘導元範囲として設定し、
前記補正手段は、前記プレイヤオブジェクトから見た前記移動方向設定手段が設定した移動方向が前記誘導元範囲と交わる場合、当該誘導元範囲を設定している前記目標物の誘導先範囲と交わるように当該移動方向を補正する、請求項２２に記載のゲームプログラム。
【請求項２５】
前記誘導先範囲設定手段は、前記目標物を中心とした所定半径の円を前記誘導先範囲として設定し、
前記誘導元範囲設定手段は、前記目標物を中心とした前記誘導先範囲よりも大きな半径の円を前記誘導元範囲として設定し、
前記補正手段は、前記プレイヤオブジェクトから見た前記移動方向設定手段が設定した移動方向が前記誘導元範囲内を通る場合、当該誘導元範囲を設定している前記目標物の誘導先範囲の半径より小さな半径で、かつ当該目標物を中心とした円と接するように当該移動方向を補正する、請求項２２に記載のゲームプログラム。
【請求項２６】
前記プレイヤオブジェクトおよび複数の前記目標物を前記仮想ゲーム世界内に配置し、当該仮想ゲーム世界の少なくとも一部を表示手段に表示する表示制御手段と、
前記目標物に対して、それぞれ補正対象とする優先度を予め設定する優先度設定手段として、前記コンピュータをさらに機能させ、
前記補正手段は、前記表示手段が表示する表示画面内に複数の前記目標物が存在する場合、当該目標物に設定されている優先度順に前記仮想ゲーム世界内における前記プレイヤオブジェクトが当該目標物へ向かう方向と前記移動方向設定手段が設定した移動方向とを順次比較し、当該方向同士が所定の基準より近くなった最初の目標物を用いて当該移動方向を補正する、請求項２０に記載のゲームプログラム。
【請求項２７】
前記誘導先範囲設定手段は、時間経過に応じて前記誘導先範囲の大きさを漸減的に小さく変化させる、請求項１９に記載のゲームプログラム。
【請求項２８】
前記プレイヤオブジェクトおよび前記目標物を前記仮想ゲーム世界内に配置し、当該仮想ゲーム世界の少なくとも一部を表示手段に表示する表示制御手段として、前記コンピュータをさらに機能させ、
前記誘導元範囲設定手段は、前記表示手段に対して前記目標物が表示される位置に応じて前記誘導元範囲の大きさを変化させる、請求項２１に記載のゲームプログラム。
【請求項２９】
前記移動方向設定手段が設定した移動方向を前記プレイヤオブジェクトが前記目標物へ向かう方向に前記補正手段が近づけた量に基づいて、前記プレイヤオブジェクトを操作するプレイヤの操作能力を算出するスキル算出手段として、前記コンピュータをさらに機能させる、請求項２３に記載のゲームプログラム。
【請求項３０】
前記入力装置は、加速度センサを備え、
前記動き方向特定手段は、前記加速度センサから出力される加速度データが示す加速度を用いて、前記入力装置の動き方向を特定する、請求項１７に記載のゲームプログラム。
【請求項３１】
前記動き方向特定手段は、
前記加速度データが示す加速度の推移を用いて、当該加速度の大きさが重力加速度の大きさに相当する状態が所定期間以上続いた場合、当該加速度の方向を前記入力装置に作用する重力方向とする重力方向特定手段と、
前記加速度データが示す加速度から前記重力方向の成分を取り除くことによって算出された加速度に基づいて、前記入力装置の動き方向を特定する動き算出手段とを含む、請求項３０に記載のゲームプログラム。
【請求項３２】
前記動き方向特定手段は、前記入力装置の動き方向を特定した時点から所定の時間が経過した後、前記入力装置の次の動き方向を特定する処理を行う、請求項３０に記載のゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、入力装置に加えられた動きに基づいてゲーム処理を行うゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
特許文献１には、コントローラ等の入力装置に搭載された加速度センサが出力する加速度データに基づいて、当該入力装置の移動方向を算出する技術が開示されている。上記特許文献１で開示された移動方向算出装置は、所定期間中に得られた加速度データの推移を用いて、上記入力装置が振られている方向を特定している。
【特許文献１】特開２００７−２９５９９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、入力装置を振り動かすことによって行う操作は、当該入力操作の動きを認識する精度が高い場合であっても、ユーザが正確な方向に入力装置を振り動かすこと自体が難しい。例えば、入力装置が振られた方向に仮想世界における所定のオブジェクトが移動するような操作を仮定した場合、当該仮想世界内の特定位置へ当該オブジェクトを移動させるような精密な操作が非常に難しい。つまり、入力装置を振り動かすことによって行う操作は、精密な操作には向かないことがある。
【０００４】
それ故に、本発明の目的は、入力装置の動かす操作に応じて仮想ゲーム世界内の移動方向が設定されるゲームにおいて、当該移動方向を適正に設定することができるゲーム装置およびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００５】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００６】
第１の発明は、入力装置（７）に加えられた動きに基づいてゲーム処理を行うゲーム装置（５）である。ゲーム装置は、動き方向特定手段（ステップ４１〜ステップ４７を実行するＣＰＵ１０；以下、単にステップ番号のみ記載する）、移動方向設定手段（Ｓ４８〜Ｓ５０）、補正手段（Ｓ５２）、および移動制御手段（Ｓ５３）を備える。動き方向特定手段は、入力装置の動き方向（差分ベクトル）を特定する。移動方向設定手段は、動き方向に基づいて、仮想ゲーム世界内のプレイヤオブジェクト（ＯＢＪ）の移動方向（移動ベクトル）を設定する。補正手段は、仮想ゲーム世界内におけるプレイヤオブジェクトと当該プレイヤオブジェクトとは異なる目標物（ＴＧ）との位置関係に基づいて、移動方向設定手段が設定した移動方向を補正する。移動制御手段は、移動方向に応じて、仮想ゲーム世界内におけるプレイヤオブジェクトを移動させる。
【０００７】
第２の発明は、上記第１の発明において、補正手段は、仮想ゲーム世界内におけるプレイヤオブジェクトが目標物へ向かう方向に近づくように、移動方向設定手段が設定した移動方向を補正する。
【０００８】
第３の発明は、上記第２の発明において、誘導先範囲設定手段（Ｄｆ４）を、さらに備える。誘導先範囲設定手段は、目標物を中心として当該目標物の大きさよりも大きな誘導先範囲（Ｒｔ）を仮想ゲーム世界内に設定する。補正手段は、仮想ゲーム世界内におけるプレイヤオブジェクトが目標物に設定されている誘導先範囲内を通るように、移動方向設定手段が設定した移動方向を補正する。
【０００９】
第４の発明は、上記第１または第２の発明において、補正手段は、移動方向設定手段が設定した移動方向と仮想ゲーム世界内におけるプレイヤオブジェクトが目標物へ向かう方向とを比較して、当該方向同士が所定の基準より近い場合に当該移動方向を補正する。
【００１０】
第５の発明は、上記第４の発明において、誘導元範囲設定手段（Ｄｆ３）を、さらに備える。誘導元範囲設定手段は、目標物を中心として当該目標物の大きさよりも大きな誘導元範囲（Ｒｏ）を仮想ゲーム世界内に設定する。補正手段は、移動方向設定手段が設定した移動方向がプレイヤオブジェクトから見て誘導元範囲内を通る場合、当該移動方向を補正する。
【００１１】
第６の発明は、上記第３の発明において、誘導元範囲設定手段を、さらに備える。誘導元範囲設定手段は、目標物を中心として誘導先範囲よりも大きな誘導元範囲を仮想ゲーム世界内に設定する。補正手段は、移動方向設定手段が設定した移動方向がプレイヤオブジェクトから見て誘導元範囲内を通る場合、当該誘導元範囲を設定している目標物の誘導先範囲内をプレイヤオブジェクトが通るように、当該移動方向を補正する。
【００１２】
第７の発明は、上記第６の発明において、補正手段は、誘導元範囲の大きさに対する誘導先範囲の大きさの比率（Ｒｏ：Ｒｔ）に応じて、プレイヤオブジェクトが目標物へ向かう方向に移動方向設定手段が設定した移動方向が近づくように補正する。
【００１３】
第８の発明は、上記第６の発明において、誘導先範囲設定手段は、プレイヤオブジェクトと目標物とを結ぶ直線に対して垂直な当該目標物を通る垂線（Ｌ）に沿って、当該目標物を中心とした所定の範囲を誘導先範囲として設定する。誘導元範囲設定手段は、垂線に沿って、当該目標物を中心とした誘導先範囲よりも大きな範囲を誘導元範囲として設定する。補正手段は、プレイヤオブジェクトから見た移動方向設定手段が設定した移動方向が誘導元範囲と交わる場合、当該誘導元範囲を設定している目標物の誘導先範囲と交わるように当該移動方向を補正する（図１０Ａ、図１０Ｂ）。
【００１４】
第９の発明は、上記第６の発明において、誘導先範囲設定手段は、目標物を中心とした所定半径の円を誘導先範囲として設定する。誘導元範囲設定手段は、当該目標物を中心とした誘導先範囲よりも大きな半径の円を誘導元範囲として設定する。補正手段は、プレイヤオブジェクトから見た移動方向設定手段が設定した移動方向が誘導元範囲内を通る場合、当該誘導元範囲を設定している目標物の誘導先範囲の半径より小さな半径で、かつ当該目標物を中心とした円（Ｃ１）と接するように当該移動方向を補正する（図１６Ａ、図１６Ｂ）。
【００１５】
第１０の発明は、上記第３の発明において、誘導先範囲設定手段は、時間経過に応じて誘導先範囲の大きさを漸減的に小さく変化させる。
【００１６】
第１１の発明は、上記第４の発明において、表示制御手段（Ｓ５４）および優先度設定手段（Ｄｆ１）を、さらに備える。表示制御手段は、プレイヤオブジェクトおよび複数の目標物を仮想ゲーム世界内に配置し、当該仮想ゲーム世界の少なくとも一部を表示手段（２）に表示する。優先度設定手段は、目標物に対して、それぞれ補正対象とする優先度を予め設定する。補正手段は、表示手段が表示する表示画面内に複数の目標物が存在する場合、当該目標物に設定されている優先度順に仮想ゲーム世界内におけるプレイヤオブジェクトが当該目標物へ向かう方向と移動方向設定手段が設定した移動方向とを順次比較し、当該方向同士が所定の基準より近くなった最初の目標物を用いて当該移動方向を補正する。
【００１７】
第１２の発明は、上記第５の発明において、表示制御手段を、さらに備える。表示制御手段は、プレイヤオブジェクトおよび目標物を仮想ゲーム世界内に配置し、当該仮想ゲーム世界の少なくとも一部を表示手段に表示する。誘導元範囲設定手段は、表示手段に対して目標物が表示される位置に応じて誘導元範囲の大きさを変化させる。
【００１８】
第１３の発明は、上記第７の発明において、スキル算出手段を、さらに備える。スキル算出手段は、移動方向設定手段が設定した移動方向をプレイヤオブジェクトが目標物へ向かう方向に補正手段が近づけた量に基づいて、プレイヤオブジェクトを操作するプレイヤの操作能力を算出する。
【００１９】
第１４の発明は、上記第１の発明において、入力装置は、加速度センサ（７０１）を備える。動き方向特定手段は、加速度センサから出力される加速度データ（Ｄａ）が示す加速度を用いて、入力装置の動き方向を特定する。
【００２０】
第１５の発明は、上記第１４の発明において、動き方向特定手段は、重力方向特定手段（Ｓ４３、Ｓ４４）および動き算出手段（Ｓ４５）を含む。重力方向特定手段は、加速度データが示す加速度の推移を用いて、当該加速度の大きさが重力加速度の大きさ（１Ｇ）に相当する状態が所定期間以上続いた場合、当該加速度の方向を入力装置に作用する重力方向とする。動き算出手段は、加速度データが示す加速度から重力方向の成分を取り除くことによって算出された加速度（差分ベクトル）に基づいて、入力装置の動き方向を特定する。
【００２１】
第１６の発明は、上記第１４の発明において、動き方向特定手段は、入力装置の動き方向を特定した時点から所定の時間が経過した後、入力装置の次の動き方向を特定する処理を行う（Ｓ４１）。
【００２２】
第１７の発明は、入力装置に加えられた動きに基づいてゲーム処理を行うゲーム装置のコンピュータ（１０）で実行されるゲームプログラムである。ゲームプログラムは、動き方向特定手段、移動方向設定手段、補正手段、および移動制御手段として、コンピュータを機能させる。動き方向特定手段は、入力装置の動き方向を特定する。移動方向設定手段は、動き方向に基づいて、仮想ゲーム世界内のプレイヤオブジェクトの移動方向を設定する。補正手段は、仮想ゲーム世界内におけるプレイヤオブジェクトと当該プレイヤオブジェクトとは異なる目標物との位置関係に基づいて、移動方向設定手段が設定した移動方向を補正する。移動制御手段は、移動方向に応じて、仮想ゲーム世界内におけるプレイヤオブジェクトを移動させる。
【００２３】
第１８の発明は、上記第１７の発明において、補正手段は、仮想ゲーム世界内におけるプレイヤオブジェクトが目標物へ向かう方向に近づくように、移動方向設定手段が設定した移動方向を補正する。
【００２４】
第１９の発明は、上記第１８の発明において、誘導先範囲設定手段として、コンピュータをさらに機能させる。誘導先範囲設定手段は、目標物を中心として当該目標物の大きさよりも大きな誘導先範囲を仮想ゲーム世界内に設定する。補正手段は、仮想ゲーム世界内におけるプレイヤオブジェクトが目標物に設定されている誘導先範囲内を通るように、移動方向設定手段が設定した移動方向を補正する。
【００２５】
第２０の発明は、上記第１７または第１８の発明において、補正手段は、移動方向設定手段が設定した移動方向と仮想ゲーム世界内におけるプレイヤオブジェクトが目標物へ向かう方向とを比較して、当該方向同士が所定の基準より近い場合に当該移動方向を補正する。
【００２６】
第２１の発明は、上記第２０の発明において、誘導元範囲設定手段として、コンピュータをさらに機能させる。誘導元範囲設定手段は、目標物を中心として当該目標物の大きさよりも大きな誘導元範囲を仮想ゲーム世界内に設定する。補正手段は、移動方向設定手段が設定した移動方向がプレイヤオブジェクトから見て誘導元範囲内を通る場合、当該移動方向を補正する。
【００２７】
第２２の発明は、上記第１９の発明において、誘導元範囲設定手段として、コンピュータをさらに機能させる。誘導元範囲設定手段は、目標物を中心として誘導先範囲よりも大きな誘導元範囲を仮想ゲーム世界内に設定する。補正手段は、移動方向設定手段が設定した移動方向がプレイヤオブジェクトから見て誘導元範囲内を通る場合、当該誘導元範囲を設定している目標物の誘導先範囲内をプレイヤオブジェクトが通るように、当該移動方向を補正する。
【００２８】
第２３の発明は、上記第２２の発明において、補正手段は、誘導元範囲の大きさに対する誘導先範囲の大きさの比率に応じて、プレイヤオブジェクトが目標物へ向かう方向に移動方向設定手段が設定した移動方向が近づくように補正する。
【００２９】
第２４の発明は、上記第２２の発明において、誘導先範囲設定手段は、プレイヤオブジェクトと目標物とを結ぶ直線に対して垂直な当該目標物を通る垂線に沿って、当該目標物を中心とした所定の範囲を誘導先範囲として設定する。誘導元範囲設定手段は、垂線に沿って、当該目標物を中心とした誘導先範囲よりも大きな範囲を誘導元範囲として設定する。補正手段は、プレイヤオブジェクトから見た移動方向設定手段が設定した移動方向が誘導元範囲と交わる場合、当該誘導元範囲を設定している目標物の誘導先範囲と交わるように当該移動方向を補正する。
【００３０】
第２５の発明は、上記第２２の発明において、誘導先範囲設定手段は、目標物を中心とした所定半径の円を誘導先範囲として設定する。誘導元範囲設定手段は、当該目標物を中心とした誘導先範囲よりも大きな半径の円を誘導元範囲として設定する。補正手段は、プレイヤオブジェクトから見た移動方向設定手段が設定した移動方向が誘導元範囲内を通る場合、当該誘導元範囲を設定している目標物の誘導先範囲の半径より小さな半径で、かつ当該目標物を中心とした円と接するように当該移動方向を補正する。
【００３１】
第２６の発明は、上記第２０の発明において、表示制御手段および優先度設定手段として、コンピュータをさらに機能させる。表示制御手段は、プレイヤオブジェクトおよび複数の目標物を仮想ゲーム世界内に配置し、当該仮想ゲーム世界の少なくとも一部を表示手段に表示する。優先度設定手段は、目標物に対して、それぞれ補正対象とする優先度を予め設定する。補正手段は、表示手段が表示する表示画面内に複数の目標物が存在する場合、当該目標物に設定されている優先度順に仮想ゲーム世界内におけるプレイヤオブジェクトが当該目標物へ向かう方向と移動方向設定手段が設定した移動方向とを順次比較し、当該方向同士が所定の基準より近くなった最初の目標物を用いて当該移動方向を補正する。
【００３２】
第２７の発明は、上記第１９の発明において、誘導先範囲設定手段は、時間経過に応じて誘導先範囲の大きさを漸減的に小さく変化させる。
【００３３】
第２８の発明は、上記第２１の発明において、表示制御手段として、コンピュータをさらに機能させる。表示制御手段は、プレイヤオブジェクトおよび目標物を仮想ゲーム世界内に配置し、当該仮想ゲーム世界の少なくとも一部を表示手段に表示する。誘導元範囲設定手段は、表示手段に対して目標物が表示される位置に応じて誘導元範囲の大きさを変化させる。
【００３４】
第２９の発明は、上記第２３の発明において、スキル算出手段として、コンピュータをさらに機能させる。スキル算出手段は、移動方向設定手段が設定した移動方向をプレイヤオブジェクトが目標物へ向かう方向に補正手段が近づけた量に基づいて、プレイヤオブジェクトを操作するプレイヤの操作能力を算出する。
【００３５】
第３０の発明は、上記第１７の発明において、入力装置は、加速度センサを備える。動き方向特定手段は、加速度センサから出力される加速度データが示す加速度を用いて、入力装置の動き方向を特定する。
【００３６】
第３１の発明は、上記第３０の発明において、動き方向特定手段は、重力方向特定手段および動き算出手段を含む。重力方向特定手段は、加速度データが示す加速度の推移を用いて、当該加速度の大きさが重力加速度の大きさに相当する状態が所定期間以上続いた場合、当該加速度の方向を入力装置に作用する重力方向とする。動き算出手段は、加速度データが示す加速度から重力方向の成分を取り除くことによって算出された加速度に基づいて、入力装置の動き方向を特定する。
【００３７】
第３２の発明は、上記第３０の発明において、動き方向特定手段は、入力装置の動き方向を特定した時点から所定の時間が経過した後、入力装置の次の動き方向を特定する処理を行う。
【発明の効果】
【００３８】
上記第１の発明によれば、入力装置の動きに応じてプレイヤオブジェクトを移動させるゲームにおいて、プレイヤオブジェクトの移動方向を当該プレイヤオブジェクトと目標物との位置関係に応じて適正に設定することができる。
【００３９】
上記第２の発明によれば、入力装置の動きに応じて移動するプレイヤオブジェクトが目標物に近づくように、プレイヤオブジェクトの移動方向が補正される。例えば、仮想ゲーム世界内の目標物にプレイヤオブジェクトを衝突させるような操作をプレイヤが望んでいる場合、プレイヤオブジェクトから目標物へ向かう方向と入力装置が動く方向とが完全に一致していなくても、当該衝突を実現することができる。つまり、プレイヤは、プレイヤオブジェクトから目標物へ向かう方向に、ある程度近づけた動きで入力装置を動かすことによって所望の操作が可能となり、精密な操作が求められない。
【００４０】
上記第３の発明によれば、プレイヤが入力装置を動かすことによって、必ず目標物と衝突するようなゲームとはならない。つまり、プレイヤが入力装置を動かせば必ず目標物と衝突するような設定にしてしまうと、ゲームが大味となって面白みがなくなってしまうが、目標物の周辺に誘導先範囲を設定することによって容易にこのような問題を防止することができる。
【００４１】
上記第４の発明によれば、プレイヤが入力装置を動かすことによって、必ず目標物を基準とした移動方向の補正が行われることにはならない。つまり、プレイヤは、ある程度目標物と衝突するように狙う必要があり、ゲームの興趣性を保つことができる。
【００４２】
上記第５の発明によれば、目標物の周辺に誘導元範囲を設定することによって、容易にゲームの興趣性を保つことができる。
【００４３】
上記第６の発明によれば、プレイヤオブジェクトから目標物へ向かう方向と入力装置が動く方向との差が過大である場合は、移動方向の補正対象とならない。また、移動方向が補正対象となったとしても、プレイヤオブジェクトから目標物へ向かう方向と入力装置が動く方向との差が大きい場合は、プレイヤオブジェクトが目標物と衝突しないように調整される。つまり、プレイヤは、目標物にプレイヤオブジェクトが衝突するようにある程度狙って入力装置を動かすことが必要となる。具体的には、誘導元範囲の大きさを調整することによって、移動方向が補正対象となる確率を調整することができる。また、誘導先範囲の大きさを調整することによって、補正対象となった移動方向をプレイヤオブジェクトが目標物へ向かう方向に近づける割合を調整することができる。
【００４４】
上記第７の発明によれば、目標物の誘導元範囲および誘導先範囲の大きさを調整することによって、補正対象となった移動方向をプレイヤオブジェクトが目標物へ向かう方向に近づける割合を調整することができる。したがって、誘導元範囲の大きさに対する誘導先範囲の大きさの比率を調整することによって、ゲームの難易度を調整することが可能である。
【００４５】
上記第８または第９の発明によれば、目標物の誘導元範囲および誘導先範囲を線分または円で設定することによって、移動方向の補正処理を容易に行うことができる。
【００４６】
上記第１０の発明によれば、目標物毎に補正対象とする優先度が設定されるため、プレイヤオブジェクトが誘導されやすい目標物とプレイヤオブジェクトが誘導されにくい目標物とを設定することができる。
【００４７】
上記第１１の発明によれば、ゲーム開始時点ではプレイヤオブジェクトが目標物と衝突しにくく、時間経過と共にプレイヤオブジェクトが目標物と衝突しやすくすることができる。
【００４８】
上記第１２の発明によれば、例えば、プレイヤオブジェクトに対して目標物がスクロール移動する場合、プレイヤオブジェクトと衝突させにくい位置（例えば、プレイヤオブジェクトの上または下方向等）となった目標物に対しては、プレイヤオブジェクトが当該目標物に誘導されやすくすることができる。
【００４９】
上記第１３の発明によれば、移動方向を補正する処理の結果を用いて、プレイヤのゲームスキルを判定することができる。
【００５０】
上記第１４の発明によれば、入力装置に生じる加速度を用いて、当該入力装置の動きを特定することができる。
【００５１】
上記第１５の発明によれば、入力装置に作用する重力方向を除去した加速度を用いて、当該入力装置の動きを特定することができる。
【００５２】
入力装置を振った場合、一連の振り動作において真逆方向の加速度が生じることがあり、これらの加速度全てを振り判定に用いると現実に入力装置を振っている方向の判定が難しくなることがある。上記第１６の発明によれば、入力装置の動き方向が特定された後の所定時間に生じる加速度を次の動き判定に用いないことによって、直前の動き判定で用いた加速度に対して真逆方向の加速度を用いた動き判定が次に行われることを防止することができる。
【００５３】
本発明のゲームプログラムによれば、上述したゲーム装置と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００５４】
図１を参照して、本発明の一実施形態に係るゲームプログラムを実行するゲーム装置について説明する。以下、説明を具体的にするために、当該装置の一例の据置型のゲーム装置本体５を含むゲームシステムについて説明する。なお、図１は据置型のゲーム装置３を含むゲームシステム１の外観図であり、図２はゲーム装置本体５のブロック図である。以下、当該ゲームシステム１について説明する。
【００５５】
図１において、ゲームシステム１は、表示手段の一例の家庭用テレビジョン受像機（以下、モニタと記載する）２と、当該モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置３から出力された音声信号を音声出力するためのスピーカ２ａを備える。また、ゲーム装置３は、本願発明のゲームプログラムの一例のゲームプログラムを記録した光ディスク４と、当該光ディスク４のゲームプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体５に与えるためのコントローラ７とを備えている。
【００５６】
また、ゲーム装置本体５は、無線コントローラモジュール１９（図２参照）を内蔵する。無線コントローラモジュール１９は、コントローラ７から無線送信されるデータを受信し、ゲーム装置本体５からコントローラ７へデータを送信して、コントローラ７とゲーム装置本体５とを無線通信によって接続する。さらに、ゲーム装置本体５には、当該ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。
【００５７】
また、ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ１７（図２参照）が搭載される。ゲーム装置本体５は、光ディスク４に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ２に表示する。また、ゲームプログラム等は、光ディスク４に限らず、フラッシュメモリ１７に予め記録されたものを実行するようにしてもよい。さらに、ゲーム装置本体５は、フラッシュメモリ１７に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００５８】
コントローラ７は、無線コントローラモジュール１９を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて操作情報等の送信データを無線送信する。コントローラ７は、主にモニタ２の表示画面に表示されるプレイヤオブジェクト等を操作するための操作手段である。コントローラ７は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン（十字キーやスティック等を含む）とが設けられている。また、後述により明らかとなるが、コントローラ７は、当該コントローラ７から見た画像を撮像する撮像情報演算部７４を備えている。そして、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって例えば赤外光を出力する。また、コントローラ７は、ゲーム装置本体５の無線コントローラモジュール１９から無線送信された送信データを通信部７５で受信して、当該送信データに応じた音や振動を発生させることもできる。
【００５９】
次に、図２を参照して、ゲーム装置本体５の内部構成について説明する。図２は、ゲーム装置本体５の構成を示すブロック図である。ゲーム装置本体５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ／Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）１３、ディスクドライブ１４、およびＡＶ−ＩＣ（Ａｕｄｉｏ  Ｖｉｄｅｏ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１５等を有する。
【００６０】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については、後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置本体５の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ３５または外部メインメモリ１２に読み出したデータを書き込む。
【００６１】
また、システムＬＳＩ１１には、入出力プロセッサ３１、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）３２、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３３、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３４、および内部メインメモリ３５が設けられる。図示は省略するが、これらの構成要素３１〜３５は、内部バスによって互いに接続される。
【００６２】
ＧＰＵ３２は、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ３４は、ＧＰＵ３２がグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ３２は、ＶＲＡＭ３４に記憶されたデータを用いて画像データを作成する。
【００６３】
ＤＳＰ３３は、オーディオプロセッサとして機能し、内部メインメモリ３５や外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００６４】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、ＡＶコネクタ１６を介して、読み出した画像データをモニタ２に出力するとともに、読み出した音声データをモニタ２に内蔵されるスピーカ２ａに出力する。これによって、画像がモニタ２に表示されるとともに音がスピーカ２ａから出力される。
【００６５】
入出力プロセッサ（Ｉ／Ｏプロセッサ）３１は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ３１は、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、および外部メモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００６６】
入出力プロセッサ３１は、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ３１は、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介して当該データをネットワークに送信する。また、入出力プロセッサ３１は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２、および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０は、ゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置本体５と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体５を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００６７】
また、入出力プロセッサ３１は、アンテナ２３および無線コントローラモジュール１９を介して、コントローラ７から送信される操作データ等を受信し、内部メインメモリ３５または外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。なお、内部メインメモリ３５には、外部メインメモリ１２と同様に、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、ＣＰＵ１０のワーク領域やバッファ領域として用いられてもかまわない。
【００６８】
さらに、入出力プロセッサ３１には、拡張コネクタ２０および外部メモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ３１は、拡張コネクタ２０や外部メモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００６９】
また、ゲーム装置本体５（例えば、前部主面）には、当該ゲーム装置本体５の電源ボタン２４、ゲーム処理のリセットボタン２５、光ディスク４を脱着する投入口、およびゲーム装置本体５の投入口から光ディスク４を取り出すイジェクトボタン２６等が設けられている。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置本体５の各構成要素に対して、図示しないＡＣアダプタを介して電力が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置本体５の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００７０】
図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面前方から見た斜視図である。
【００７１】
図３および図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００７２】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００７３】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に４つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、十字キー７２ａの代わりに設けてもかまわない。
【００７４】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置本体５が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００７５】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置本体５の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００７６】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、無線コントローラモジュール１９からコントローラ７へ、複数のＬＥＤ７０２のうち、上記コントローラ種別に対応するＬＥＤを点灯させるための信号が送信される。
【００７７】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図５に示すスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００７８】
一方、ハウジング７１下面には、凹部が形成されている。ハウジング７１下面の凹部は、プレイヤがコントローラ７の前面をマーカ８Ｌおよび８Ｒに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００７９】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００８０】
ここで、以下の説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するＸＹＺ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をＺ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コントローラ７の上下方向をＹ軸とし、ハウジング７１の上面（操作ボタン７２ａが設けられた面）方向をＹ軸正方向とする。さらに、コントローラ７の左右方向をＸ軸とし、ハウジング７１の右側面（図３では表されている側面）方向をＸ軸正方向とする。
【００８１】
次に、図５および図６を参照して、コントローラ７の内部構造について説明する。なお、図５は、コントローラ７の上筐体（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図６は、コントローラ７の下筐体（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図６に示す基板７００は、図５に示す基板７００の裏面から見た斜視図となっている。
【００８２】
図５において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図６、図７参照）に接続される。また、無線モジュール７５３（図７参照）およびアンテナ７５４によって、コントローラ７がワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。また、加速度センサ７０１は、操作ボタン７２ｄの左側の基板７００上（つまり、基板７００の中央部ではなく周辺部）に設けられる。したがって、加速度センサ７０１は、コントローラ７の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ７の動きを良好な感度でゲーム装置本体５等が判定することができる。
【００８３】
一方、図６において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置本体５から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。
【００８４】
そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。バイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４は、基板７００等に形成された配線によってマイコン７５１と接続され、ゲーム装置本体５から送信された振動データに応じてその作動をオン／オフする。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【００８５】
次に、図７を参照して、コントローラ７の内部構成について説明する。なお、図７は、コントローラ７の構成を示すブロック図である。
【００８６】
図７において、コントローラ７は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。
【００８７】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。
【００８８】
コントローラ７は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向（図３に示すＹ軸）、左右方向（図３に示すＸ軸）、および前後方向（図３に示すＺ軸）で直線加速度を検知する。また、少なくとも２軸方向（例えば、Ｘ軸、Ｙ軸）に沿った直線加速度をそれぞれ検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であることが好ましい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて、加速度センサ７０１が提供されてもよい。
【００８９】
加速度センサ７０１に用いられるような加速度検出手段は、加速度センサ７０１の持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、それら３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００９０】
しかしながら、加速度センサ７０１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ１０）またはコントローラのプロセッサ（例えばマイコン７５１）等のコンピュータが処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【００９１】
例えば、加速度センサ７０１を搭載するコントローラ７が静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサ７０１によって検出される加速度が重力加速度のみであるとして処理する場合）、コントローラ７が現実に静的な状態であれば、検出された加速度に基づいてコントローラ７の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ７０１の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に１Ｇ（重力加速度）が作用しているか否かだけでコントローラ７が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コントローラ７が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ７０１の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ７がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ７０１からの出力に基づいて、プロセッサがコントローラ７の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ７０１からの出力に基づいて、おおよそのコントローラ７の傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１をプロセッサと組み合わせて用いることによって、コントローラ７の傾き、姿勢、または位置を判定することができる。
【００９２】
一方、加速度センサ７０１が動的な状態であることを前提とする場合には、当該加速度センサ７０１が重力加速度成分に加えて加速度センサ７０１の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コントローラ７の動き方向等を知ることができる。具体的には、加速度センサ７０１を備えるコントローラ７がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７の様々な動きおよび／または位置を算出することができる。なお、加速度センサ７０１が動的な状態であることを前提とする場合であっても、加速度センサ７０１の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコントローラ７の傾きを知ることが可能である。
【００９３】
他の実施例では、加速度センサ７０１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ７０１が静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。加速度センサ７０１でそれぞれ検知された加速度を示すデータは、通信部７５に出力される。
【００９４】
また、他の実施例では、加速度センサ７０１の代わりに、少なくとも一方を回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるＭＥＭＳジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ７０１と異なり、ジャイロセンサは、それが内蔵する少なくとも１つのジャイロ素子の軸を中心とした回転（または角速度）を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【００９５】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、２つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロスコープとの基本的な差異と同様にジャイロスコープの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【００９６】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置本体５からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置本体５から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置本体５から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。
【００９７】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの３軸方向の加速度信号（Ｘ、Ｙ、およびＺ軸方向加速度データ）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、処理結果データ）を無線コントローラモジュール１９へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から無線コントローラモジュール１９への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、無線コントローラモジュール１９への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥース（登録商標）の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からのＸ、Ｙ、およびＺ軸方向加速度データ、および撮像情報演算部７４からの処理結果データがコントローラ７から送信される。そして、ゲーム装置本体５の無線コントローラモジュール１９でその電波信号を受信し、ゲーム装置本体５で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、および処理結果データ）を取得する。そして、ゲーム装置本体５のＣＰＵ１０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００９８】
次に、ゲーム装置本体５が行う具体的な処理を説明する前に、図８〜図１０を用いて本ゲーム装置本体５で行うゲームの概要について説明する。なお、図８は、モニタ２に表示されるゲーム画像の一例を示す図である。図９は、コントローラ７が振り動かされた際に、当該振り動作に応じてプレイヤオブジェクトＯＢＪが移動する一例を示す図である。図１０Ａおよび図１０Ｂは、コントローラ７の振り動作に応じて設定された移動方向が補正される一例を示す図である。
【００９９】
図８において、モニタ２にはプレイヤオブジェクトＯＢＪが仮想ゲーム世界を移動する様子が表示される。図８に示した一例では、プレイヤオブジェクトＯＢＪが２次元の仮想ゲーム世界を左方向に進む（ゲーム進行方向）ゲームを示している。例えば、モニタ２に表示される仮想ゲーム世界は、所定のスピードで左スクロールし、プレイヤオブジェクトＯＢＪがモニタ２に表示される仮想ゲーム世界内を移動する。つまり、仮想ゲーム世界内で仮想カメラが左方向に移動し、画面に表示される仮想ゲーム世界は右方向へ移動するので、ゲームは左に向かって進行することになる。そして、プレイヤは、プレイヤオブジェクトＯＢＪを、仮想ゲーム世界に登場するターゲットＴＧと衝突させることによって所定の点数を得ることができる。
【０１００】
図９において、プレイヤオブジェクトＯＢＪは、コントローラ７の振り方向に応じて仮想ゲーム世界内を移動する。図９では、実空間における右から左へコントローラ７が振られることに応じて、モニタ２に向かって仮想ゲーム世界の右から左へプレイヤオブジェクトＯＢＪが移動する様子を示している。例えば、プレイヤがコントローラ７を振ることによって生じる加速度が加速度センサ７０１で検出され、当該加速度を示すデータがゲーム装置本体５へ送信される。そして、ゲーム装置本体５では、受信した加速度データに基づいて、コントローラ７が振られた方向を算出し、算出された振り方向に応じてプレイヤオブジェクトＯＢＪの移動方向を設定する。この移動方向の設定において、ゲーム装置本体５では、プレイヤオブジェクトＯＢＪがターゲットＴＧに当たりやすいように移動方向を補正する。以下、プレイヤオブジェクトＯＢＪの移動方向を補正する対象となるターゲットＴＧを、補正ターゲットＴＧと称することがある。
【０１０１】
図１０Ａおよび図１０Ｂにおいて、補正ターゲットＴＧには、誘導元範囲と誘導先範囲とが設定されている。誘導元範囲は、コントローラ７の振り方向に応じて仮想ゲーム世界に設定されたプレイヤオブジェクトＯＢＪの移動方向を、補正対象とするか否かを判断する。設定された移動方向が現時点のプレイヤオブジェクトＯＢＪの位置から誘導元範囲内を示す場合、当該誘導元範囲を設定している補正ターゲットＴＧに当該移動方向を近づけるように補正する。例えば、誘導元範囲は、プレイヤオブジェクトＯＢＪと補正ターゲットＴＧとを結ぶ方向に対して垂直な方向（直線Ｌ）に沿って、補正ターゲットＴＧを中心とした範囲長さＲｏに設定される。
【０１０２】
誘導先範囲は、プレイヤオブジェクトＯＢＪの移動方向を補正ターゲットＴＧに近づける割合を設定する。例えば、補正対象となった移動方向は、誘導先範囲／誘導元範囲の割合で補正ターゲットＴＧに近づくように補正される。
【０１０３】
具体的には、誘導先範囲は、プレイヤオブジェクトＯＢＪと補正ターゲットＴＧとを結ぶ方向に対して垂直な方向（直線Ｌ）に沿って、補正ターゲットＴＧを中心とした範囲長さＲｔ（Ｒｔ＜Ｒｏ）に設定される。この場合、補正対象となった移動方向は、Ｒｔ／Ｒｏの割合で補正ターゲットＴＧに近づくように補正される。具体的には、補正前の移動方向と直線Ｌとの交点を点Ｐ０とし、点Ｐ０から補正ターゲットＴＧの中心までの距離をａ（ａ＜Ｒｏ／２）とする。この場合、距離ａに応じて、直線Ｌに沿って補正ターゲットＴＧの中心から距離ｂとなる点Ｐ０側の点Ｐ１が設定される。ここで、距離ｂは、ｂ＝ａ＊Ｒｔ／Ｒｏで算出される。そして、現時点のプレイヤオブジェクトＯＢＪの位置から点Ｐ０に向かう補正前の移動方向は、現時点のプレイヤオブジェクトＯＢＪの位置から点Ｐ１に向かう方向へ補正される。
【０１０４】
上述した移動方向の補正例から明らかなように、誘導先範囲のサイズ（範囲長さＲｔ）を補正ターゲットＴＧのサイズより大きく設定することによって、補正後の移動方向が必ず補正ターゲットＴＧと交差するとは限らず、結果的にプレイヤオブジェクトＯＢＪが補正ターゲットＴＧと衝突しないこともあり得る。つまり、移動方向が誘導元範囲内となった場合、当該移動方向が補正ターゲットＴＧに近づくように補正されるが、プレイヤオブジェクトＯＢＪと補正ターゲットＴＧとが衝突するか否かについては当該移動方向が補正ターゲットＴＧにある程度近づいている場合に限られる。そのため、補正が行われても必ず補正ターゲットＴＧに命中するわけではないので、ゲームが不自然に簡単になり過ぎることを抑えることができる。また、誘導元範囲は、移動方向を補正対象とするか否かを判断するものとなる。したがって、誘導先範囲（範囲長さＲｔ）のサイズおよび／または誘導元範囲のサイズ（範囲長さＲｏ）を変更することによって、様々なゲームの難易度を調整することが可能である。難易度を低くしたい場合には、誘導先範囲の幅を補正ターゲットＴＧと同じにすれば、移動方向が誘導元範囲に向かっている場合には、補正によって必ずプレイヤオブジェクトＯＢＪが補正ターゲットＴＧに命中することになる。
【０１０５】
次に、ゲームシステム１において行われるゲーム処理の詳細を説明する。まず、図１１を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図１１は、ゲーム装置本体５の外部メインメモリ１２および／または内部メインメモリ３５（以下、２つのメインメモリを総称して、単にメインメモリと記載する）に記憶される主なデータおよびプログラムを示す図である。
【０１０６】
図１１に示すように、メインメモリのデータ記憶領域には、加速度データＤａ、加速度ベクトルデータＤｂ、重力ベクトルデータＤｃ、差分ベクトルデータＤｄ、移動ベクトルデータＤｅ、補正ターゲットデータＤｆ、プレイヤオブジェクト位置データＤｇ、および画像データＤｈ等が記憶される。なお、メインメモリには、図１１に示す情報に含まれるデータの他、ゲームに登場するプレイヤオブジェクトＯＢＪ以外の他のオブジェクト等に関するデータ（位置データ等）や仮想ゲーム世界に関するデータ（背景のデータ等）等、ゲーム処理に必要なデータが記憶される。また、メインメモリのプログラム記憶領域には、ゲームプログラムを構成する各種プログラム群Ｐａが記憶される。
【０１０７】
加速度データＤａは、コントローラ７に生じた加速度を示すデータであり、コントローラ７から送信データとして送信されてくる一連の操作情報に含まれる加速度データが格納される。この加速度データＤａには、加速度センサ７０１がＸ軸成分に対して検出した加速度を示すＸ軸方向加速度データＤａ１、Ｙ軸成分に対して検出した加速度を示すＹ軸方向加速度データＤａ２、およびＺ軸成分に対して検出した加速度を示すＺ軸方向加速度データＤａ３が含まれる。なお、ゲーム装置本体５に備える無線コントローラモジュール１９は、コントローラ７から所定周期（例えば、１／２００秒毎）に送信される操作情報に含まれる加速度データを受信し、無線コントローラモジュール１９に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられた加速度データがゲーム処理周期である１フレーム毎（例えば、１／６０秒毎）に読み出されて、メインメモリの加速度データＤａが更新される。
【０１０８】
このとき、操作情報を受信する周期と処理周期とが異なるために、上記バッファには複数の時点に受信した操作情報が記述されていることになる。後述する処理の説明においては、後述する各ステップにおいて、複数の時点に受信した操作情報のうち最新の操作情報のみを常に用いて処理して、次のステップに進める態様を用いる。
【０１０９】
また、後述する処理フローでは、加速度データＤａがゲーム処理周期である１フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コントローラ７からの送信周期毎に加速度データＤａを更新し、当該更新された加速度データＤａをゲーム処理周期毎に利用する態様でもかまわない。この場合、加速度データＤａに記憶する加速度データＤａ１〜Ｄａ３を更新する周期と、ゲーム処理周期とが異なることになる。
【０１１０】
加速度ベクトルデータＤｂは、Ｘ軸方向加速度データＤａ１、Ｙ軸方向加速度データＤａ２、およびＺ軸方向加速度データＤａ３が示す加速度を用いて算出される加速度ベクトルを示すデータであり、コントローラ７に作用している加速度の方向および大きさを示すデータが格納される。重力ベクトルデータＤｃは、コントローラ７に生じている重力の方向および大きさを表す重力ベクトルを示すデータが格納される。差分ベクトルデータＤｄは、上記加速度ベクトルから上記重力ベクトルを減算したベクトル（差分ベクトル）を示すデータが格納される。移動ベクトルデータＤｅは、上記差分ベクトルに応じて仮想ゲーム世界に設定されるプレイヤオブジェクトＯＢＪの移動方向および移動速度を示すデータ（移動ベクトル）が格納される。
【０１１１】
補正ターゲットデータＤｆは、上述した補正ターゲットＴＧ毎に、優先度データＤｆ１、補正ターゲット位置データＤｆ２、誘導元範囲データＤｆ３、および誘導先範囲データＤｆ４を含んでおり、補正ターゲットＴＧ毎の各種情報を示すデータが格納される。優先度データＤｆ１は、補正ターゲットＴＧをプレイヤオブジェクトＯＢＪの移動方向を補正する補正対象とするか否かを判断するための優先度を示すデータである。補正ターゲット位置データＤｆ２は、仮想ゲーム世界において補正ターゲットＴＧが配置される位置を示すデータである。誘導元範囲データＤｆ３は、補正ターゲットＴＧに設定されている上記誘導元範囲を示すデータである。誘導先範囲データＤｆ４は、補正ターゲットＴＧに設定されている上記誘導先範囲を示すデータである。
【０１１２】
プレイヤオブジェクト位置データＤｇは、仮想ゲーム世界においてプレイヤオブジェクトＯＢＪが配置される位置を示すデータが格納される。
【０１１３】
画像データＤｈは、プレイヤオブジェクト画像データＤｈ１、補正ターゲット画像データＤｈ２、および背景画像データＤｈ３等を含んでいる。プレイヤオブジェクト画像データＤｈ１は、仮想ゲーム世界にプレイヤオブジェクトＯＢＪを配置してゲーム画像を生成するためのデータである。補正ターゲット画像データＤｈ２は、仮想ゲーム世界に補正ターゲットＴＧをそれぞれ配置してゲーム画像を生成するためのデータである。背景画像データＤｈ３は、仮想ゲーム世界に背景を配置してゲーム画像を生成するためのデータである。
【０１１４】
次に、図１２〜図１４を参照して、ゲーム装置本体５において行われるゲーム処理の詳細を説明する。なお、図１２は、ゲーム装置本体５において実行されるゲーム処理における前半の動作の一例を示すフローチャートである。図１３は、ゲーム装置本体５において実行されるゲーム処理における後半の動作の一例を示すフローチャートである。図１４は、図１３におけるステップ５３の移動方向補正処理の一例の詳細な動作を示すサブルーチンである。なお、図１２〜図１４に示すフローチャートにおいては、ゲーム処理のうち、プレイヤがコントローラ７を振ってプレイヤオブジェクトＯＢＪが移動させる処理について主に説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図１２〜図１４では、ＣＰＵ１０が実行する各ステップを「Ｓ」と略称する。
【０１１５】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１２〜図１４に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【０１１６】
図１２において、ＣＰＵ１０は、ゲーム処理の初期化を行い（ステップ４０）、次のステップに処理を進める。例えば、上記ステップ４０におけるゲーム処理初期化では、仮想ゲーム世界の設定やプレイヤオブジェクトＯＢＪ、補正ターゲットＴＧ、および補正対象等はならない他のターゲットの配置等の初期設定を行う。また、上記ステップ４０におけるゲーム処理初期化では、以降のゲーム処理で用いる各パラメータを初期化する。例えば、ＣＰＵ１０は、上述したメインメモリに格納される各データＤａ〜Ｄｅが示すパラメータをそれぞれ０に設定する。さらに、上記ステップ４０におけるゲーム処理初期化では、モニタ２に表示される仮想ゲーム世界において、ゲーム進行方向（図８参照）を設定する。例えば、ゲーム進行方向は、モニタ２に向かって左方向、右方向、上方向、または下方向の何れか等に設定される。ここで、ゲーム進行方向が左方向に設定される場合、コントローラ７を左手で把持するプレイヤ（すなわち、左利きのプレイヤ）は、遊技が難しくなることがある。また、ゲーム進行方向が右方向に設定される場合、コントローラ７を右手で把持するプレイヤ（すなわち、右利きのプレイヤ）は、遊技が難しくなることがある。このような利き手による有利／不利を考慮するために、予め設定されたプレイヤの利き手に応じて、ゲーム進行方向を設定してもかまわない。
【０１１７】
次に、ＣＰＵ１０は、コントローラ７が振られたと判定された後の経過時間が、所定時間に到達したか否かを判断する（ステップ４１）。後述により明らかとなるが、ＣＰＵ１０は、ステップ４７においてコントローラ７が振られたことを判定しており、当該ステップの処理からの経過時間を計時している。そして、ＣＰＵ１０は、上記経過時間が所定時間（例えば、０．３秒）に到達したか否かを判断する。ＣＰＵ１０は、上記経過時間が所定時間に到達した場合、処理を次のステップ４２に進める。一方、ＣＰＵ１０は、上記経過時間が所定時間に到達していない場合、処理を次のステップ５３（図１３参照）に進める。
【０１１８】
なお、上記ステップ４１の処理は、コントローラ７の振り判定後の誤判定を防止するために行われている。例えば、コントローラ７が振られていると判定した直後に生じている加速度は、コントローラ７を振る動作を止めるときに発生する逆方向の加速度や、プレイヤがコントローラ７を振る際のバックスイング（振りかぶり動作）直後に当該バックスイングの逆方向に振られるときに発生する加速度である可能性が高い。つまり、一連の振り動作において、真逆方向の加速度が生じることがあり、これらの加速度全てを振り判定に用いると現実にコントローラ７を振っている方向の判定が難しくなる。本実施形態では、コントローラ７が振られていると判定された後の一定時間（例えば、０．３秒）に生じる加速度を次の振り判定に用いないことによって、直前の振り判定で用いた加速度に対して真逆方向の加速度を用いた振り判定が次に行われることを防止している。
【０１１９】
ステップ４２において、ＣＰＵ１０は、コントローラ７から加速度を示すデータを取得して、次のステップに処理を進める。例えば、ＣＰＵ１０は、コントローラ７から受信した操作情報を取得し、当該操作情報に含まれる最新の加速度データが示す加速度を用いて加速度データＤａに格納する。具体的には、ＣＰＵ１０は、コントローラ７から受信した最新の操作情報に含まれるＸ軸方向の加速度データが示す加速度を用いて、Ｘ軸方向加速度データＤａ１を更新する。また、ＣＰＵ１０は、最新の操作情報に含まれるＹ軸方向の加速度データが示す加速度を用いて、Ｙ軸方向加速度データＤａ２を更新する。そして、ＣＰＵ１０は、最新の操作情報に含まれるＺ軸方向の加速度データが示す加速度を用いて、Ｚ軸方向加速度データＤａ３を更新する。
【０１２０】
次に、ＣＰＵ１０は、加速度ベクトルを算出して当該加速度ベクトルの大きさが１Ｇ（≒９．８ｍ／ｓ2）に近い状態で一定時間継続しているか否かを判断する（ステップ４３）。例えば、ＣＰＵ１０は、Ｘ軸方向加速度データＤａ１に格納されたＸ軸方向加速度、Ｙ軸方向加速度データＤａ２に格納されたＹ軸方向加速度、およびＺ軸方向加速度データＤａ３に格納されたＺ軸加速度を用いて、それぞれの方向の加速度成分を有する加速度ベクトルを算出し、当該加速度ベクトルを用いて加速度ベクトルデータＤｂを更新する。そして、上記加速度ベクトルの大きさが１．０Ｇ近傍（例えば、１．０Ｇ±１０％）となっている時間が所定時間（例えば、０．１秒）継続しているか否かを判断する。そして、ＣＰＵ１０は、加速度ベクトルの大きさが１Ｇに近い状態で一定時間継続している場合、次のステップ４４に処理を進める。一方、ＣＰＵ１０は、加速度ベクトルの大きさが１Ｇに近い状態で一定時間継続していない場合、次のステップ４５に処理を進める。
【０１２１】
ステップ４４において、ＣＰＵ１０は、現時点の加速度ベクトルを重力ベクトルに設定し、次のステップ４５に処理を進める。例えば、ＣＰＵ１０は、加速度ベクトルデータＤｂを参照して、加速度ベクトルデータＤｂが示す加速度ベクトルを用いて重力ベクトルデータＤｃを更新する。ここで、上記ステップ４４は、上記加速度ベクトルの大きさが１．０Ｇ近傍となっている時間が所定時間継続している場合に実行される。つまり、コントローラ７に作用する加速度の大きさが１．０Ｇ近傍で安定している場合であり、すなわちコントローラ７が静的な状態にあると推定される。したがって、コントローラ７が静的な状態で作用している加速度が重力加速度であると推定されるため、上記状態で検出される加速度ベクトルは、コントローラ７に作用する重力加速度のベクトル（重力ベクトル）として取り扱うことができる。
【０１２２】
ステップ４５において、ＣＰＵ１０は、加速度ベクトルから重力ベクトルを減算して差分ベクトルを算出し、次のステップに処理を進める。例えば、ＣＰＵ１０は、加速度ベクトルデータＤｂおよび重力ベクトルデータＤｃを参照して、加速度ベクトルデータＤｂが示す加速度ベクトルから重力ベクトルデータＤｃが示す重力ベクトルを減算して差分ベクトルを算出し、当該差分ベクトルを用いて差分ベクトルデータＤｄを更新する。
【０１２３】
次に、ＣＰＵ１０は、差分ベクトルのＺ軸成分を除外したＸＹ軸成分の大きさが所定値以上か否かを判断する（ステップ４６）。ここで、上記所定値は、プレイヤによってコントローラ７が振られたか否かを判定するための閾値であり、静的な状態でもコントローラ７に作用している重力加速度（すなわち、１．０Ｇ）より大きな値に設定される。なお、差分ベクトルのＺ軸成分については、コントローラ７が振られた場合の遠心力によって他軸成分（ＸＹ軸成分）より過大となるので、本実施形態ではＺ軸成分を除外してコントローラ７の振り判定を行っている。そして、ＣＰＵ１０は、差分ベクトルのＸＹ軸成分の大きさが所定値以上の場合、次のステップ４７に処理を進める。一方、ＣＰＵ１０は、差分ベクトルのＸＹ軸成分の大きさが所定値未満の場合、次のステップ５３（図１３参照）に処理を進める。
【０１２４】
ステップ４７において、ＣＰＵ１０は、コントローラ７が振られたと判定し、当該判定後の経過時間のカウントを開始する。そして、ＣＰＵ１０は、次のステップに処理を進める。
【０１２５】
次に、ＣＰＵ１０は、現時点の差分ベクトルを仮想ゲーム世界における移動ベクトルに変換し（ステップ４８）、次のステップに処理を進める。例えば、ＣＰＵ１０は、差分ベクトルデータＤｄを参照して、差分ベクトルデータＤｄが示す差分ベクトルを移動ベクトルに変換し、当該移動ベクトルを用いて移動ベクトルデータＤｅを更新する。以下、差分ベクトルを移動ベクトルに変換する一例を説明する。
【０１２６】
図１５Ａは、コントローラ７の底面から見た図を示している。図１５Ａに示すように、上記ステップ４５において、加速度ベクトルから重力ベクトルを減算した差分ベクトルが算出されている。ここで、上述したように、重力ベクトルは、コントローラ７が静的な状態で作用している重力加速度の方向および大きさを示している。一方、加速度ベクトルは、コントローラ７自体が動く（例えば、振られる）ことによって生じる加速度に上記重力加速度が加わった状態で検出される。したがって、差分ベクトルは、コントローラ７自体が動くことによって生じる加速度の方向および大きさを示すデータとして取り扱うことができる。
【０１２７】
重力ベクトルの方向と差分ベクトルの方向とが成す角度は、重力加速度の方向を基準としてコントローラ７自体が動くことによって生じる加速度の方向を示すパラメータとして用いることができる。後述するゲーム例では、２次元の仮想ゲーム世界を取り扱うため、重力ベクトルのＺ軸成分および差分ベクトルのＺ軸成分をそれぞれ０として、重力ベクトルの方向と差分ベクトルの方向とが成す角度θを算出する。
【０１２８】
一方、モニタ２には、例えば２次元の仮想ゲーム世界が表示されている。ここで、以下の説明を具体的にするために、仮想ゲーム世界に対して設定する座標系について定義する。図１５Ｂに示すように、互いに直交するｘｙ軸を２次元の仮想ゲーム世界に対して定義する。具体的には、仮想ゲーム世界における左右方向をｘ軸とし、モニタ２に向かって仮想ゲーム世界の右方向をｘ軸正方向とする。また、仮想ゲーム世界における上下方向をｙ軸とし、モニタ２に向かって仮想ゲーム世界の上方向をｙ軸正方向とする。
【０１２９】
差分ベクトルを移動ベクトルに変換する際、差分ベクトルのＸ軸成分およびＹ軸成分を、それぞれ仮想ゲーム世界のｘ軸成分およびｙ軸成分に置換したベクトルを設定する。そして、仮想ゲーム世界における下方向（すなわち、ｙ軸負方向）との間で成す角度が角度θとなるように上記ベクトルの方向を回転させて、仮想ゲーム世界における移動ベクトルを設定する。なお、移動ベクトルの大きさは、ゲームの操作環境や操作感度に応じて設定すればよく、例えば差分ベクトルの大きさに所定の割合を乗じた値に設定すればよい。
【０１３０】
図１２に戻り、ＣＰＵ１０は、上記ステップ４８で算出された移動ベクトルの方向が、ゲーム進行方向に対して逆方向か否かを判断する（ステップ４９）。一例として、図１５Ｂに示したように、ゲーム進行方向がｘ軸負方向である場合、ＣＰＵ１０は、上記ステップ４８で算出された移動ベクトルのｘ軸成分が正のときに当該移動ベクトルがゲーム進行方向に対して逆方向であると判断する。そして、ＣＰＵ１０は、移動ベクトルの方向が、ゲーム進行方向に対して逆方向である場合、次のステップ５０に処理を進める。一方、ＣＰＵ１０は、移動ベクトルの方向が、ゲーム進行方向に対して順方向である場合、次のステップ５１（図１３参照）に処理を進める。
【０１３１】
ステップ５０において、ＣＰＵ１０は、上記ステップ４８で算出された移動ベクトルの方向を反転させて、次のステップ５１に処理を進める。例えば、ＣＰＵ１０は、移動ベクトルデータＤｅを参照して、移動ベクトルデータＤｅが示す移動ベクトルのｘ軸成分およびｙ軸成分の正負をそれぞれ逆にすることによって当該移動ベクトルの方向を反転させ、反転させた移動ベクトルを用いて移動ベクトルデータＤｅを更新する。ここで、図８および図９に示したように、本実施形態は、ゲームコントローラ７の振り方向に応じてプレイヤオブジェクトＯＢＪを仮想ゲーム世界内で移動させながら、仮想ゲーム世界のゲーム進行方向に進んでいくゲームを用いている。したがって、プレイヤがコントローラ７を仮想ゲーム世界のゲーム進行方向とは逆に振る操作がないため、ゲーム進行方向とは逆の移動ベクトルが得られた場合は、プレイヤがコントローラ７を振る際のバックスイング（振りかぶり動作）の可能性が高い。この場合、本実施形態では、当該バックスイング直後にコントローラ７が振られ、当該バックスイングが直後の振り方向とは真逆の方向であると仮定し、当該仮定に基づいて移動ベクトルの反転を行っている。したがって、別の実施形態において、プレイヤオブジェクトがいずれの方向にも移動可能である場合には、ステップ５０の反転を行わないようにしてもよい。
【０１３２】
ステップ５１（図１３）において、ＣＰＵ１０は、プレイヤオブジェクトＯＢＪが移動可能な状態であるか否かを判断する。例えば、ゲーム進行上の演出において、プレイヤオブジェクトＯＢＪが停止状態となっている場合、ＣＰＵ１０は、プレイヤオブジェクトＯＢＪが移動可能な状態にないと判断する。そして、ＣＰＵ１０は、プレイヤオブジェクトＯＢＪが移動可能な状態である場合、次のステップ５２に処理を進める。一方、ＣＰＵ１０は、プレイヤオブジェクトＯＢＪが移動可能な状態にない場合、次のステップ５３に処理を進める。
【０１３３】
ステップ５２において、ＣＰＵ１０は、移動ベクトルの方向（移動方向）を補正する処理を行い、次のステップに処理を進める。以下、図１４を参照して、上記ステップ５２で行う移動方向補正処理の動作について説明する。
【０１３４】
図１４において、ＣＰＵ１０は、モニタ２に表示されている表示画面内に補正ターゲットＴＧがあるか否かを判断する（ステップ６０）。そして、ＣＰＵ１０は、表示画面内に補正ターゲットＴＧがある場合、次のステップ６１に処理を進める。一方、ＣＰＵ１０は、表示画面内に補正ターゲットＴＧがない場合、次のステップ６９に処理を進める。
【０１３５】
ステップ６１において、ＣＰＵ１０は、表示画面内に表示されている補正ターゲットＴＧに対する処理順序を設定し、次のステップに処理を進める。例えば、ＣＰＵ１０は、表示画面内に表示されている補正ターゲットＴＧ毎に優先度データＤｆ１が示す優先度を抽出し、当該優先度に基づいて補正ターゲットＴＧの処理順序を設定する。ここで、補正ターゲットＴＧの優先度は、補正ターゲットＴＧの種別等に応じて設定される。例えば、ゲームのルール上、他のターゲットと比較して重要なターゲットについては、その優先度を高くして処理対象となりやすくする。また、逆に他のターゲットと比較して重要なターゲットについては、その優先度を低くして処理対象となりにくくしてもよい。
【０１３６】
なお、上記ステップ６１における処理順序の設定においては、上記優先度を考慮しながら、補正ターゲット位置データＤｆ２およびプレイヤオブジェクト位置データＤｇを参照して、プレイヤオブジェクトＯＢＪとの距離に応じて処理順序を設定してもかまわない。一例として、上記優先度が同じ補正ターゲットＴＧについては、プレイヤオブジェクトＯＢＪからの距離が相対的に短い補正ターゲットＴＧの処理順序を先に設定する。他の例として、プレイヤオブジェクトＯＢＪからの距離が相対的に短い補正ターゲットＴＧの処理順序が優先されるように処理順序を設定し、当該距離が同じ補正ターゲットＴＧについては、上記優先度が高い補正ターゲットＴＧの処理順序を先に設定する。
【０１３７】
次に、ＣＰＵ１０は、上記ステップ６１で設定した処理順序の順に補正ターゲットＴＧを選択する（ステップ６２）。そして、ＣＰＵ１０は、選択された補正ターゲットＴＧの補正ターゲット位置データＤｆ２およびプレイヤオブジェクト位置データＤｇを参照して、上記ステップ６２で選択された補正ターゲットＴＧがプレイヤオブジェクトＯＢＪに対してゲーム進行方向側にあるか否かを判断する（ステップ６３）。そして、ＣＰＵ１０は、補正ターゲットＴＧがプレイヤオブジェクトＯＢＪに対してゲーム進行方向側にある場合、次のステップ６４に処理を進める。一方、ＣＰＵ１０は、補正ターゲットＴＧがプレイヤオブジェクトＯＢＪに対してゲーム進行方向側にない場合、次のステップ６８に処理を進める。
【０１３８】
ステップ６４において、選択された補正ターゲットＴＧに対する点Ｐ０を算出する。そして、ＣＰＵ１０は、点Ｐ０から補正ターゲットＴＧの中心までの距離ａが、選択された補正ターゲットＴＧの誘導元範囲の範囲長さＲｏの半分の長さ（Ｒｏ／２）より短いか否かを判断する（ステップ６５）。そして、ＣＰＵ１０は、ａ＜Ｒｏ／２の場合、次のステップ６６に処理を進める。一方、ＣＰＵ１０は、ａ≧Ｒｏ／２の場合、次のステップ６８に処理を進める。
【０１３９】
図１０Ａを用いて説明したように、点Ｐ０は、プレイヤオブジェクトＯＢＪと補正ターゲットＴＧとを結ぶ方向に対して垂直な方向（直線Ｌ）と移動ベクトルの方向（移動方向）との交点によって求められる。そして、点Ｐ０から補正ターゲットＴＧの中心までの距離ａと誘導元範囲の範囲長さＲｏの半分とを比較することによって、設定されている移動方向が現時点のプレイヤオブジェクトＯＢＪの位置から選択されている補正ターゲットＴＧの誘導元範囲内を示すか否か、すなわちから選択されている補正ターゲットＴＧを補正対象とするか否かを判定している。上記ステップ６４およびステップ６５においては、ＣＰＵ１０は、移動ベクトルデータＤｅとプレイヤオブジェクト位置データＤｇと選択されている補正ターゲットＴＧの補正ターゲット位置データＤｆ２および誘導元範囲データＤｆ３とを参照して、これらの判定を行う。
【０１４０】
ステップ６６において、ＣＰＵ１０は、ａ＜Ｒｏ／２の場合、すなわち選択された補正ターゲットＴＧが補正対象となる場合、当該補正ターゲットＴＧに対する点Ｐ１を算出する。そして、ＣＰＵ１０は、算出された点Ｐ１への方向となるように移動方向を補正し（ステップ６７）、次のステップに処理を進める。
【０１４１】
図１０Ｂを用いて説明したように、点Ｐ１は、直線Ｌに沿って補正ターゲットＴＧの中心から距離ｂ（＝ａ＊Ｒｔ／Ｒｏ）となる点Ｐ０側に設定される。これによって、移動方向は、補正対象となった補正ターゲットＴＧに対してＲｔ／Ｒｏの割合で近づくように補正される。上記ステップ６６およびステップ６７においては、ＣＰＵ１０は、プレイヤオブジェクト位置データＤｇと選択されている補正ターゲットＴＧの補正ターゲット位置データＤｆ２、誘導元範囲データＤｆ３、および誘導先範囲データＤｆ４とを参照して、これらの算出を行う。そして、ＣＰＵ１０は、移動ベクトルデータＤｅを参照して、移動ベクトルデータＤｅが示す移動ベクトルの方向を補正された移動方向に変更し、変更後の移動ベクトルを用いて移動ベクトルデータＤｅを更新する。
【０１４２】
一方、ステップ６８において、ＣＰＵ１０は、上記ステップ６１で処理順序が設定された補正ターゲットＴＧにおいて、未処理の補正ターゲットＴＧがあるか否かを判断する。そして、ＣＰＵ１０は、未処理の補正ターゲットＴＧがない場合、次のステップ６９に処理を進める。一方、ＣＰＵ１０は、未処理の補正ターゲットＴＧがある場合、上記ステップ６２に戻って処理を繰り返す。
【０１４３】
ステップ６９において、ＣＰＵ１０は、現時点の移動ベクトルデータＤｅが示す移動ベクトルを、以降のゲーム処理に用いる移動ベクトルとして決定し、当該サブルーチンによる処理を終了する。
【０１４４】
図１３に戻り、上記ステップ５２の移動方向補正処理の後、ＣＰＵ１０は、ゲーム処理を行い（ステップ５３）、当該ゲーム処理に応じたゲーム画像をモニタ２に表示する表示処理を行って（ステップ５４）、次のステップに処理を進める。例えば、ステップ５３において、ＣＰＵ１０は、移動ベクトルデータＤｅが示す移動ベクトルに基づいて、仮想ゲーム世界におけるプレイヤオブジェクトＯＢＪを移動させる。また、ＣＰＵ１０は、仮想ゲーム世界においてプレイヤオブジェクトＯＢＪが他のオブジェクト等と接触した場合、当該オブジェクトに応じた処理（オブジェクトを破壊する、オブジェクトで反射する等）を行う。また、ＣＰＵ１０は、プレイヤオブジェクトＯＢＪの移動とは関係しない他のゲーム処理等も行う。
【０１４５】
なお、移動ベクトルデータＤｅが示す移動ベクトルは、上記ステップ５３のゲーム処理の後、当該ゲーム処理内容に応じて変化させてもかまわない。例えば、上記ステップ５３のゲーム処理の後、移動ベクトルを所定の割合で減衰させてもいいし、上記ゲーム処理によってプレイヤオブジェクトＯＢＪが他のオブジェクトと接触した場合に移動ベクトルの方向を変化させてもかまわない。ＣＰＵ１０は、上記ステップ５３のゲーム処理の後に移動ベクトルを変化させた場合、変化後の移動ベクトルを用いて移動ベクトルデータＤｅを更新する。
【０１４６】
次に、ＣＰＵ１０は、ゲームを終了するか否かを判断する（ステップ５５）。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。ＣＰＵ１０は、ゲームを終了しない場合に上記ステップ４１（図１２参照）に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
【０１４７】
このように、上述したゲーム処理によれば、コントローラ７の振り方向に応じて移動するプレイヤオブジェクトＯＢＪが補正ターゲットＴＧに近づくように、プレイヤオブジェクトＯＢＪの移動方向が補正される。したがって、仮想ゲーム世界内の補正ターゲットＴＧにプレイヤオブジェクトＯＢＪを衝突させるような操作をプレイヤが望んでいる場合、プレイヤオブジェクトＯＢＪから補正ターゲットＴＧへ向かう方向とコントローラ７の振り方向とが完全に一致していなくても、当該衝突を実現することができる。つまり、プレイヤは、プレイヤオブジェクトＯＢＪから補正ターゲットＴＧへ向かう方向に、ある程度近づけた振り方向でコントローラ７を振ることによって所望の操作が可能となり、精密な操作が求められない。
【０１４８】
一方、プレイヤがコントローラ７を振り動かせば必ず補正ターゲットＴＧと衝突するような設定にしてしまうと、ゲームが大味となって面白みがなくなってしまう。上述したゲーム処理では、補正ターゲットＴＧの誘導元範囲および誘導先範囲のサイズを調整することによって、移動方向の補正割合を調整している。つまり、プレイヤオブジェクトＯＢＪから補正ターゲットＴＧへ向かう方向とコントローラ７の振り方向との差が大きい場合は、プレイヤオブジェクトＯＢＪが補正ターゲットＴＧと衝突しないように調整することも可能である。この場合、プレイヤは、補正ターゲットＴＧにプレイヤオブジェクトＯＢＪが衝突するようにある程度狙ってコントローラ７を振ることが必要となる。具体的には、補正ターゲットＴＧのサイズに対する誘導先範囲のサイズを調整することによって、上記補正割合が調整される。また、誘導元範囲のサイズを調整することによって、補正ターゲットＴＧが補正対象となる確率を調整することも可能である。このように、上述したゲーム処理では、誘導先範囲（範囲長さＲｔ）のサイズおよび／または誘導元範囲のサイズ（範囲長さＲｏ）を変更することによって、様々なゲームの難易度を調整することが可能である。
【０１４９】
なお、補正ターゲットＴＧに設定される誘導元範囲および誘導先範囲は、他の形状で設定されてもかまわない。以下、図１６Ａおよび図１６Ｂを用いて、他の形状で設定された誘導元範囲および誘導先範囲の一例について説明する。なお、図１６Ａおよび図１６Ｂは、補正ターゲットＴＧに対して誘導元範囲および誘導先範囲が円形で設定された一例を示す図である。
【０１５０】
図１６Ａおよび図１６Ｂにおいて、補正ターゲットＴＧには、補正ターゲットＴＧを中心とした円形の誘導元範囲と円形の誘導先範囲とが設定される。誘導元範囲は、補正ターゲットＴＧを中心とした直径Ｒｏの円で設定される。そして、誘導元範囲は、コントローラ７の振り方向に応じて仮想ゲーム世界に設定されたプレイヤオブジェクトＯＢＪの移動方向を、補正対象とするか否かを判断する。具体的には、設定された移動方向が現時点のプレイヤオブジェクトＯＢＪの位置から誘導元範囲の少なくとも一部を通る場合、当該異動元範囲を設定している補正ターゲットＴＧを補正対象として設定する。
【０１５１】
誘導元範囲は、補正ターゲットＴＧを中心とした直径Ｒｔ（Ｒｔ＜Ｒｏ）の円で設定される。そして、誘導先範囲は、プレイヤオブジェクトＯＢＪの移動方向を補正ターゲットＴＧに近づける割合を設定する。例えば、補正対象となった移動方向は、誘導先範囲の直径／誘導元範囲の直径の割合で補正ターゲットＴＧに近づくように補正される。
【０１５２】
具体的には、補正前の移動方向と接する補正ターゲットＴＧを中心とした円Ｃ０と設定し、円Ｃ０の半径をａ（ａ＜Ｒｏ／２）とする。そして、補正前の移動方向と円Ｃ０との接点をＰ０とする。この場合、半径ａに応じて、補正ターゲットＴＧを中心とした半径ｂの円Ｃ１が設定される。ここで、半径ｂは、ｂ＝ａ＊Ｒｔ／Ｒｏで算出される。そして、現時点のプレイヤオブジェクトＯＢＪの位置から円Ｃ０と接する補正前の移動方向は、現時点のプレイヤオブジェクトＯＢＪの位置から円Ｃ１と接する方向へ補正される。なお、補正後の移動方向と円Ｃ１との接点をＰ１とすると、接点Ｐ１は、補正ターゲットＴＧに対して設定された接点Ｐ０と同じ側に設定される。
【０１５３】
また、誘導元範囲および／または誘導先範囲は、ゲーム状況に応じて変化させてもかまわない。第１の例は、誘導元範囲および／または誘導先範囲のサイズを、モニタ２に表示される表示画面を基準とした補正ターゲットＴＧの位置に応じて変化させる。例えば、ゲーム進行方向とは逆方向に補正ターゲットＴＧがスクロール移動する場合、スクロール移動に応じて漸増的に当該補正ターゲットＴＧの誘導元範囲を拡大する。これによって、プレイヤオブジェクトＯＢＪの上または下方向に配置されることによって、プレイヤオブジェクトＯＢＪと衝突させにくい位置となった補正ターゲットＴＧに対しては、プレイヤオブジェクトＯＢＪが当該補正ターゲットＴＧに誘導されやすくすることができる。
【０１５４】
第２の例は、誘導元範囲および／または誘導先範囲のサイズを、時間経過に応じて変化させる。例えば、時間経過に応じて、漸減的に補正ターゲットＴＧの誘導先範囲を縮小する。このように補正ターゲットＴＧの誘導先範囲を変化させることによって、ゲーム開始時点ではプレイヤオブジェクトＯＢＪが補正ターゲットＴＧと衝突しにくく、時間経過と共にプレイヤオブジェクトＯＢＪが補正ターゲットＴＧと衝突しやすくすることができる。
【０１５５】
第３の例は、誘導元範囲および／または誘導先範囲のサイズを、ゲーム難易度に応じて変化させる。例えば、上記ゲームのスキルが高いプレイヤや難易度が高いゲームステージに対しては、誘導元範囲を相対的に小さくしたり、誘導先範囲を相対的に大きくしたりする。これによって、上記ゲームのスキルが高いプレイヤや難易度が高いゲームステージに対しては、プレイヤオブジェクトＯＢＪが補正ターゲットＴＧと衝突しにくい状況にすることができる。
【０１５６】
また、移動ベクトルの移動方向が補正された補正量を用いて、上記ゲームに対するプレイヤのスキルを判定してもかまわない。つまり、補正前の移動ベクトルと補正後の移動ベクトルとの差を評価して、上記ゲームに対するプレイヤのスキルを判定する。例えば、ゲーム中において、図１０Ｂを用いて説明した距離ａと距離ｂとの差の平均値を算出し、当該平均値が大きいほど上記ゲームに対するプレイヤのスキル（操作能力）が低いと判定する。また、図１６Ｂを用いて説明した半径ａと半径ｂとの差の平均値を算出し、当該平均値が大きいほど上記ゲームに対するプレイヤのスキルが低いと判定する。
【０１５７】
また、上述したゲーム処理においては、加速度センサ７０１から得られる３軸方向の加速度をそれぞれ示す加速度データを用いているが、２軸方向の加速度をそれぞれ示す加速度データを用いてもかまわない。この場合、当該２軸方向に対して垂直方向（例えばＺ軸方向）へ生じる加速度に対する分析ができなくなるが、上記ゲーム処理において遠心力が作用する方向の加速度を除去しているため、２軸方向（例えば、Ｘ軸方向とＹ軸方向）の加速度データのみを用いても同様の処理が可能となる。
【０１５８】
また、上述した説明では、コントローラ７が振られた方向に応じて、２次元の仮想ゲーム世界におけるプレイヤオブジェクトＯＢＪが左右に移動するゲームを用いたが、本発明は、他の態様のゲームにも適用できることは言うまでもない。第１の例として、補正ターゲットが配置された２次元の仮想ゲーム世界において、プレイヤオブジェクトが上下に移動するゲームであっても、本発明を適用することができる。この場合、プレイヤが上下方向にコントローラ７を振ることによって、プレイヤオブジェクトが仮想ゲーム世界の上下方向に移動させ、配置されている補正ターゲットに基づいてその移動方向を補正することになる。
【０１５９】
第２の例として、モニタ２に表示され、補正ターゲットが配置された仮想ゲーム世界に対して、その奥行方向にプレイヤオブジェクトが移動するゲームであっても、本発明を適用することができる。この場合、プレイヤがコントローラ７を把持して突くような動作を行い、当該突くような動作に応じて生じる加速度を用いて、プレイヤオブジェクトを上記奥行方向に移動させ、配置されている補正ターゲットに基づいてその移動方向を補正することになる。
【０１６０】
第３の例として、３次元の仮想ゲーム空間におけるプレイヤオブジェクトを、コントローラ７が上下左右前後に動く動作に応じて移動させるゲームであっても同様に本発明を適用することができる。この場合、加速度センサ７０１から得られる３軸方向の加速度データが示す加速度に対して、コントローラ７に作用するＺ軸成分の加速度を除去することなく３軸方向の加速度として取り扱い、当該加速度の方向および大きさを３次元の仮想ゲーム空間に適用させて、配置されている補正ターゲットに基づいてその方向を補正することになる。
【０１６１】
また、上述した説明では、加速度センサ７０１から得られる３軸方向の加速度データが示す加速度を用いて、コントローラ７の動きを検出している。しかしながら、コントローラ７に固設される他の形式のセンサから出力されるデータを用いて、コントローラ７の動きを検出してもかまわない。例えば、重力方向に対してコントローラ７の傾き（以下、単に「傾き」と言う）に応じたデータを出力するセンサ（加速度センサ、傾きセンサ）、コントローラ７の方位に応じたデータを出力するセンサ（磁気センサ）、コントローラ７の回転運動に応じたデータを出力するセンサ（ジャイロセンサ）等から出力されるデータを用いることができる。また、加速度センサおよびジャイロセンサは、多軸検出可能なものだけなく１軸検出のものでもよい。また、これらのセンサを組み合わせて、より正確な検出を行うものであってもかまわない。なお、コントローラ７に固定されたカメラ（例えば、撮像情報演算部７４）を、上記センサとして利用することも可能である。この場合、コントローラ７の動きに応じてカメラが撮像する撮像画像が変化するので、この画像を解析することにより、コントローラ７の動きを判断することができる。
【０１６２】
また、上記センサは、その種類によっては、コントローラ７の外部に別設されてもよい。一例として、センサとしてのカメラでコントローラ７の外部からコントローラ７全体を撮影し、撮像画像内に撮像されたコントローラ７の画像を解析することにより、コントローラ７の動きを判断することが可能である。さらに、コントローラ７に固設されたユニットとコントローラ７外部に別設されたユニットとの協働によるシステムを用いてもよい。この例としては、コントローラ７外部に発光ユニットを別設し、コントローラ７に固設されたカメラで発光ユニットからの光を撮影する。このカメラで撮像された撮像画像を解析することにより、コントローラ７の動きを判断することができる。また、他の例としては、コントローラ７外部に磁場発生装置を別設し、コントローラ７に磁気センサを固設するようなシステムなどが挙げられる。
【０１６３】
また、上述した説明では、据置型のゲーム装置に本願発明を適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置にも適用することができる。例えば、入力装置の加速度センサから出力される加速度データに応じて、情報処理装置が入力装置を把持しているユーザの振り方向を算出する等、入力装置に生じる加速度に基づいて様々なゲーム処理を行うことができる。
【０１６４】
また、上述した説明では、コントローラ７とゲーム装置本体５とが無線通信によって接続された態様を用いたが、コントローラ７とゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ７に接続されたケーブルをゲーム装置本体５の接続端子に接続する。
【０１６５】
また、上述したコントローラ７の形状や、それらに設けられている操作部７２の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した処理で用いられる係数、判定値、数式、処理順序等は、単なる一例に過ぎず他の値や数式や処理順序であっても、本発明を実現できることは言うまでもない。
【０１６６】
また、本発明のゲームプログラムは、光ディスク４等の外部記憶媒体を通じてゲーム装置本体５に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体５に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体５内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【０１６７】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【０１６８】
本発明に係るゲーム装置およびゲームプログラムは、入力装置が振られた方向を適正に設定することができ、入力装置を振る操作に応じて進行するゲーム等を実行するゲーム装置やゲームプログラムとして有用である。
【図面の簡単な説明】
【０１６９】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面前方から見た斜視図
【図５】図３のコントローラ７の上筐体を外した状態を示す斜視図
【図６】図４のコントローラ７の下筐体を外した状態を示す斜視図
【図７】図３のコントローラ７の構成を示すブロック図
【図８】モニタ２に表示されるゲーム画像の一例を示す図
【図９】コントローラ７が振り動かされた際に、当該振り動作に応じてプレイヤオブジェクトＯＢＪが移動する一例を示す図
【図１０Ａ】コントローラ７の振り動作に応じて設定された移動方向が補正される一例を示す図
【図１０Ｂ】コントローラ７の振り動作に応じて設定された移動方向が補正される一例を示す図
【図１１】ゲーム装置本体５のメインメモリに記憶される主なデータおよびプログラムを示す図
【図１２】ゲーム装置本体５において実行されるゲーム処理における前半の動作の一例を示すフローチャート
【図１３】ゲーム装置本体５において実行されるゲーム処理における後半の動作の一例を示すフローチャート
【図１４】図１３におけるステップ５３の移動方向補正処理の一例の詳細な動作を示すサブルーチン
【図１５Ａ】差分ベクトルが算出される一例を示す説明図
【図１５Ｂ】移動ベクトルが算出される一例を示す説明図
【図１６Ａ】コントローラ７の振り動作に応じて設定された移動方向が補正される他の例を示す図
【図１６Ｂ】コントローラ７の振り動作に応じて設定された移動方向が補正される他の例を示す図
【符号の説明】
【０１７０】
１…ゲームシステム
２…モニタ
２ａ、７０６…スピーカ
３…ゲーム装置
４…光ディスク
５…ゲーム装置本体
１０…ＣＰＵ
１１…システムＬＳＩ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…無線通信モジュール
１９…無線コントローラモジュール
２０…拡張コネクタ
２１…外部メモリカード用コネクタ
２２、２３…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
３１…入出力プロセッサ
３２…ＧＰＵ
３３…ＤＳＰ
３４…ＶＲＡＭ
３５…内部メインメモリ
７…コントローラ
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
８…マーカ
【図１】
2010131321.tif 000003
【図２】
2010131321.tif 000004
【図３】
2010131321.tif 000005
【図４】
2010131321.tif 000006
【図５】
2010131321.tif 000007
【図６】
2010131321.tif 000008
【図７】
2010131321.tif 000009
【図８】
2010131321.tif 000010
【図９】
2010131321.tif 000011
【図１０Ａ】
2010131321.tif 000012
【図１０Ｂ】
2010131321.tif 000013
【図１１】
2010131321.tif 000014
【図１２】
2010131321.tif 000015
【図１３】
2010131321.tif 000016
【図１４】
2010131321.tif 000017
【図１５Ａ】
2010131321.tif 000018
【図１５Ｂ】
2010131321.tif 000019
【図１６Ａ】
2010131321.tif 000020
【図１６Ｂ】
2010131321.tif 000021