(57)【特許請求の範囲】
【請求項１】
プレイヤが片手で把持可能な第１ハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該第１ハウジングの動きを検出する第１動き検出手段とを含むゲームシステムであって、
前記ゲームコントローラは、前記第１ハウジングに設けられ、方向指示入力するための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場する第１オブジェクトの移動方向を決定する第１移動方向制御手段と、
前記第１動き検出手段による検出に応じて、仮想ゲーム世界における前記第１オブジェクトの姿勢を決定する姿勢制御手段とを備え、
前記第１移動方向制御手段は、仮想ゲーム世界における第１方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、
前記姿勢制御手段は、前記第１動き検出手段の検出に基づいて前記第１ハウジングの所定方向の傾きを判定して、仮想ゲーム世界における前記第１方向を基準とする方向への前記第１オブジェクトの傾きを決定する、ゲームシステム。
【請求項２】
前記第１ハウジングは、当該第１ハウジングの側周をプレイヤが片手で握持可能な形状および大きさで形成される、請求項１に記載のゲームシステム。
【請求項３】
前記第１ハウジングは、当該第１ハウジングの側周をプレイヤが片手で握持したときに、当該片手の親指で操作可能な位置に前記方向指示部が配設される、請求項２に記載のゲームシステム。
【請求項４】
前記姿勢制御手段は、前記第１動き検出手段による検出に基づいて前記第１ハウジングにおける所定方向の傾きおよび当該所定方向とは異なる方向の傾きのそれぞれを判定して、前記第１動き検出手段による検出のそれぞれに応じて、仮想ゲーム世界における２方向への前記第１オブジェクトの傾きをそれぞれ決定する、請求項１に記載のゲームシステム。
【請求項５】
前記第１動き検出手段は、前記第１ハウジングに対して互いに直交する３方向に生じる加速度を検出可能であり、
前記姿勢制御手段は、前記第１動き検出手段による３方向の加速度の検出のそれぞれに応じて、仮想ゲーム世界における前記第１オブジェクトの姿勢を示す３次元の姿勢ベクトルを決定する、請求項１に記載のゲームシステム。
【請求項６】
前記第１動き検出手段は、前記第１ハウジングに対して互いに直交する３軸を中心とする回転を検出可能であり、
前記姿勢制御手段は、前記第１動き検出手段による３軸を中心とする回転の検出のそれぞれに応じて、仮想ゲーム世界における前記第１オブジェクトの姿勢を示す３次元の姿勢ベクトルを決定する、請求項１に記載のゲームシステム。
【請求項７】
前記第１動き検出手段は、前記第１ハウジングに対して互いに直交する３方向に生じる加速度値を検出可能であり、
前記姿勢制御手段は、前記第１動き検出手段による検出値のそれぞれに応じて、仮想ゲーム世界における前記第１オブジェクトの姿勢を示す３次元の姿勢ベクトルの各成分値をそれぞれ決定する、請求項１に記載のゲームシステム。
【請求項８】
前記第１動き検出手段は、前記第１ハウジングに対して互いに直交する２方向に生じる加速度値を検出可能であり、
前記姿勢制御手段は、前記第１動き検出手段による検出値のそれぞれに応じて、仮想ゲーム世界における前記第１オブジェクトの姿勢を示す３次元の姿勢ベクトルの２成分値をそれぞれ決定する、請求項１に記載のゲームシステム。
【請求項９】
プレイヤが片手で把持可能な第１ハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該第１ハウジングの動きを検出する第１動き検出手段とを含むゲームシステムであって、
前記ゲームコントローラは、前記第１ハウジングに設けられ、方向指示入力するための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場する第１オブジェクトの移動方向を決定する第１移動方向制御手段と、
前記第１動き検出手段による検出に応じて、仮想ゲーム世界における前記第１オブジェクトの姿勢を決定する姿勢制御手段とを備え、
前記第１移動方向制御手段は、仮想ゲーム世界における第１方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、
前記第１動き検出手段は、前記第１ハウジングにおける所定軸を中心とした回転を少なくとも検出可能であり、
前記姿勢制御手段は、前記第１動き検出手段の検出に基づいて前記第１ハウジングの所定軸を中心とする回転を判定して、前記第１動き検出手段による所定軸を中心とする回転の検出に応じて、仮想ゲーム世界における前記第１方向軸を中心とする前記第１オブジェクトの回転を決定する、ゲームシステム。
【請求項１０】
前記姿勢制御手段は、前記第１動き検出手段による検出に基づいて前記第１ハウジングにおける所定軸を中心とした回転および当該所定軸とは異なる軸を中心とした回転のそれぞれを判定して、前記第１動き検出手段による検出のそれぞれに応じて、仮想ゲーム世界における２軸を中心とした前記第１オブジェクトの回転をそれぞれ決定する、請求項９に記載のゲームシステム。
【請求項１１】
前記方向指示部は、少なくともスティックを前記第１ハウジングの前方向に傾倒させることにより前方向の指示入力が可能なものであり、
前記第１移動方向制御手段は、前記スティックが前記第１ハウジングの前方向に傾倒されたときに、前記第１オブジェクトを前記第１方向に移動させ、
前記姿勢制御手段は、前記第１動き検出手段の検出に基づいて前記第１ハウジングの前方向の傾きを判定して、前記第１動き検出手段により前記第１ハウジングが前方向に傾いたことが検出されたときに、前記第１オブジェクトを前記第１方向に傾ける、請求項１に記載のゲームシステム。
【請求項１２】
前記方向指示部は、少なくともスティックを前記第１ハウジングの左右方向に傾倒させることにより左右方向の指示入力が可能なものであり、
前記第１移動方向制御手段は、前記スティックが前記第１ハウジングの左右方向に傾倒されたときに、前記第１オブジェクトを前記第１方向を基準とする左右方向に移動させ、
前記姿勢制御手段は、前記第１動き検出手段の検出に基づいて前記第１ハウジングが左右方向に傾いたことを判定して、前記第１オブジェクトを前記第１方向を基準とする左右方向に傾ける、請求項１または１１に記載のゲームシステム。
【請求項１３】
前記方向指示部は、少なくとも前後左右の方向指示が可能であり、
前記第１移動方向制御手段は、前記第１オブジェクトの現在の移動方向を前記第１方向に設定し、当該第１方向を基準として、前記方向指示部による指示方向に応じた方向を移動方向として更新設定し、
前記姿勢制御手段は、前記第１動き検出手段の検出に基づいて前記第１ハウジングの傾きを判定して、前記更新設定される移動方向を基準とする方向への前記第１オブジェクトの傾きを決定する、請求項１、１１、または、１２に記載のゲームシステム。
【請求項１４】
前記ゲームコントローラは、前記第１ハウジングと独立し、プレイヤが片手で把持可能な第２ハウジングを、さらに備え、
前記ゲームシステムは、前記第２ハウジングで指し示す向きを検出する第２動き検出手段を、さらに含み、
前記ゲーム装置は、前記第２動き検出手段による検出に応じて、前記第１オブジェクトと異なる第２オブジェクトの移動方向を決定する第２移動方向制御手段を、さらに備える、請求項１に記載のゲームシステム。
【請求項１５】
前記ゲームコントローラは、前記第１ハウジングと独立し、プレイヤが片手で把持可能な第２ハウジングを、さらに備え、
前記ゲームシステムは、前記第２ハウジングの動きを検出する第２動き検出手段を、さらに含み、
前記ゲーム装置は、前記第２動き検出手段による検出に応じて、前記第１オブジェクトと異なる第２オブジェクトの移動方向を決定する第２移動方向制御手段を、さらに備える、請求項１に記載のゲームシステム。
【請求項１６】
前記第１移動方向制御手段は、仮想ゲーム世界に登場する複数のオブジェクトから選ばれた前記第１オブジェクトの移動方向を決定し、
前記第２移動方向制御手段は、前記第２動き検出手段の検出に応じて、前記複数のオブジェクトのうちの少なくとも２つのオブジェクトの移動方向を決定する、請求項１４または１５に記載のゲームシステム。
【請求項１７】
前記第１動き検出手段は、前記第１ハウジングに設けられ、
前記第２動き検出手段は、前記第２ハウジングに設けられ、
前記ゲームコントローラは、
前記第１ハウジングおよび前記第２ハウジングとの間を有線または無線接続して、一方のハウジング内で発生したデータを他方のハウジング内へ出力する接続手段と、
前記第１ハウジングまたは前記第２ハウジングのうちの前記他方に設けられ、前記方向指示部の入力データ、前記第１動き検出手段の検出データ、および前記第２動き検出手段の検出データを前記ゲーム装置に送信する送信部とを備える、請求項１４乃至１６のいずれかに記載のゲームシステム。
【請求項１８】
前記ゲーム装置は、前記第１オブジェクトの仮想ゲーム世界における位置を基準とする位置を移動開始点として、前記第２移動方向制御手段により決定される移動方向に前記第２オブジェクトが移動するように制御する第２オブジェクト移動制御手段を、さらに備える、請求項１４乃至１６のいずれかに記載のゲームシステム。
【請求項１９】
前記第２移動方向制御手段は、前記第１動き検出手段の検出および前記第２動き検出手段の検出に応じて、前記第２オブジェクトの移動方向を決定する、請求項１４乃至１６のいずれかに記載のゲームシステム。
【請求項２０】
前記第２移動方向制御手段は、前記姿勢制御手段により決定された前記第１オブジェクトの姿勢および前記第２動き検出手段の検出に応じて、前記第２オブジェクトの移動方向を決定する、請求項１４乃至１６のいずれかに記載のゲームシステム。
【請求項２１】
前記第１動き検出手段は、前記第１ハウジングに設けられて、当該第１ハウジングの動きを検出する、請求項１に記載のゲームシステム。
【請求項２２】
前記第２動き検出手段は、前記第２ハウジングに設けられる、請求項１４または１５に記載のゲームシステム。
【請求項２３】
プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムであって、
前記ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成され、
前記ゲームコントローラは、前記ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置に配設され、方向指示入力するための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向制御手段と、
前記動き検出手段による検出に応じて、仮想ゲーム世界における前記オブジェクトの姿勢を決定する姿勢制御手段とを備え、
前記移動方向制御手段は、仮想ゲーム世界に登場するオブジェクトの前方方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、当該移動方向へ当該オブジェクトの前方方向を変化させ、
前記姿勢制御手段は、前記動き検出手段の検出に基づいて前記ハウジングの所定方向の傾きを判定して、プレイヤが前記方向指示部を用いて前後方向の入力操作を行う方向へ前記ハウジングが傾いたことを示すとき、仮想ゲーム世界における現在の前記前方方向を基準とする方向への前記オブジェクトの傾きを決定する、ゲームシステム。
【請求項２４】
プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムであって、
前記ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成さ
れ、
前記ゲームコントローラは、前記ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置に配設され、方向指示入力をするための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向制御手段と、
前記動き検出手段による検出に応じて、仮想ゲーム世界における前記オブジェクトの姿勢を決定する姿勢制御手段とを備え、
前記移動方向制御手段は、仮想ゲーム世界に登場するオブジェクトの前方方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、当該移動方向へ当該オブジェクトの前方方向を変化させ、
前記姿勢制御手段は、前記動き検出手段の検出に基づいて前記ハウジングの所定方向の傾きを判定して、プレイヤが前記方向指示部を用いて左右方向の入力操作を行う方向へ前記ハウジングが傾いたことを示すとき、仮想ゲーム世界における現在の前記前方方向に直交する方向を基準とする方向への前記オブジェクトの傾きを決定する、ゲームシステム。
【請求項２５】
プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムであって、
前記ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成され、
前記ゲームコントローラは、前記ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置に配設され、方向指示入力をするための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向制御手段と、
前記動き検出手段による検出に応じて、仮想ゲーム世界における前記オブジェクトの姿勢を決定する姿勢制御手段とを備え、
前記移動方向制御手段は、仮想ゲーム世界に登場するオブジェクトの前方方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、当該移動方向へ当該オブジェクトの前方方向を変化させ、
前記姿勢制御手段は、前記動き検出手段の検出に基づいて前記ハウジングの所定方向の傾きを判定して、プレイヤが前記方向指示部を用いて前後方向の入力操作を行う方向へ前記ハウジングが傾いたことを示すとき、仮想ゲーム世界における現在の前記前方方向を基準とする方向への前記オブジェクトの傾きを決定し、プレイヤが前記方向指示部を用いて左右方向の入力操作を行う方向へ前記ハウジングが傾いたことを示すとき、現在の前記前方方向に直交する方向を基準とする方向への前記オブジェクトの傾きを決定する、ゲームシステム。
【請求項２６】
プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムであって、
前記ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成され、
前記ゲームコントローラは、前記ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置に配設され、方向指示入力するための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向制御手段と、
前記動き検出手段による検出に応じて、仮想ゲーム世界における前記オブジェクトの姿勢を決定する姿勢制御手段とを備え、
前記移動方向制御手段は、仮想ゲーム世界に登場するオブジェクトの前方方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、
前記姿勢制御手段は、前記動き検出手段の検出に基づいて前記ハウジングの所定方向の傾きを判定して、プレイヤが前記方向指示部を用いて前後方向の入力操作を行う方向へ前記ハウジングが傾いたことを示すとき、仮想ゲーム世界における前記前方方向を基準とする方向への前記オブジェクトの傾きを決定する、ゲームシステム。
【請求項２７】
プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムであって、
前記ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成され、
前記ゲームコントローラは、前記ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置に配設され、方向指示入力をするための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向制御手段と、
前記動き検出手段による検出に応じて、仮想ゲーム世界における前記オブジェクトの姿勢を決定する姿勢制御手段とを備え、
前記移動方向制御手段は、仮想ゲーム世界に登場するオブジェクトの前方方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、
前記姿勢制御手段は、前記動き検出手段の検出に基づいて前記ハウジングの所定方向の傾きを判定して、プレイヤが前記方向指示部を用いて左右方向の入力操作を行う方向へ前記ハウジングが傾いたことを示すとき、仮想ゲーム世界における前記前方方向に直交する方向を基準とする方向への前記オブジェクトの傾きを決定する、ゲームシステム。
【請求項２８】
プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムであって、
前記ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成され、
前記ゲームコントローラは、前記ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置に配設され、方向指示入力をするための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向制御手段と、
前記動き検出手段による検出に応じて、仮想ゲーム世界における前記オブジェクトの姿勢を決定する姿勢制御手段とを備え、
前記移動方向制御手段は、仮想ゲーム世界に登場するオブジェクトの前方方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、
前記姿勢制御手段は、前記動き検出手段の検出に基づいて前記ハウジングの所定方向の傾きを判定して、プレイヤが前記方向指示部を用いて前後方向の入力操作を行う方向へ前記ハウジングが傾いたことを示すとき、仮想ゲーム世界における前記前方方向を基準とする方向への前記オブジェクトの傾きを決定し、プレイヤが前記方向指示部を用いて左右方向の入力操作を行う方向へ前記ハウジングが傾いたことを示すとき、前記前方方向に直交する方向を基準とする方向への前記オブジェクトの傾きを決定する、ゲームシステム。
【請求項２９】
前記動き検出手段は、前記ハウジングに設けられて、当該ハウジングの動きを検出する、請求項２３乃至２８のいずれかに記載のゲームシステム。
【請求項３０】
プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムであって、
前記ゲームコントローラは、
プレイヤが片手で把持可能な第１ハウジングと、
前記第１ハウジングに設けられ、方向指示入力をするための方向指示部と、
前記第１ハウジングと独立し、プレイヤが片手で把持可能な第２ハウジングと、
前記第２ハウジングの動きを検出する動き検出手段とを備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向制御手段と、
前記動き検出手段の検出に応じて、仮想ゲーム世界における前記オブジェクトの姿勢を決定する姿勢制御手段とを備え、
前記移動方向制御手段は、仮想ゲーム世界における第１方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、
前記姿勢制御手段は、前記動き検出手段の検出に基づいて前記第１ハウジングの所定方向の傾きを判定して、仮想ゲーム世界における前記第１方向を基準とする方向への前記オブジェクトの傾きを決定する、ゲームシステム。
【請求項３１】
プレイヤが片手で把持可能なハウジングと、方向指示入力するための方向指示部と、当該ハウジングの動きを検出する動き検出手段とを備えたゲームコントローラと接続されるゲーム装置のコンピュータで実行されるゲームプログラムであって、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向制御手段と、
前記動き検出手段の検出に応じて、仮想ゲーム世界における前記オブジェクトの姿勢を決定する姿勢制御手段として、前記コンピュータを機能させ、
前記移動方向制御手段は、仮想ゲーム世界における第１方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、
前記姿勢制御手段は、前記動き検出手段の検出に基づいて前記ハウジングの所定方向の傾きを判定して、仮想ゲーム世界における前記第１方向を基準とする方向への前記オブジェクトの傾きを決定する、ゲームプログラム。
【請求項３２】
仮想ゲーム世界内で、前記姿勢制御手段により決定された傾きで、前記移動方向制御手段によって決定された移動方向に前記オブジェクトを移動させて表示装置に表示する表示制御手段をさらに備える、請求項２３乃至２８のいずれかに記載のゲームシステム。
【請求項３３】
プレイヤが片手で把持可能なハウジングと、方向指示入力するための方向指示部と、当該ハウジングの動きを検出する動き検出手段とを備えたゲームコントローラと接続されるゲーム装置であって、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向制御手段と、
前記動き検出手段の検出に応じて、仮想ゲーム世界における前記オブジェクトの姿勢を決定する姿勢制御手段とを備え、
前記移動方向制御手段は、仮想ゲーム世界における第１方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、
前記姿勢制御手段は、前記動き検出手段の検出に基づいて前記ハウジングの所定方向の傾きを判定して、仮想ゲーム世界における前記第１方向を基準とする方向への前記オブジェクトの傾きを決定する、ゲーム装置。
【請求項３４】
プレイヤが片手で把持可能なハウジングと、方向指示入力するための方向指示部と、当該ハウジングの動きを検出する動き検出手段とを備えたゲームコントローラと接続されるゲーム装置において実行されるゲーム処理方法であって、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向制御ステップと、
前記動き検出手段の検出に応じて、仮想ゲーム世界における前記オブジェクトの姿勢を決定する姿勢制御ステップとを備え、
前記移動方向制御ステップでは、仮想ゲーム世界における第１方向を基準として、前記方向指示部による指示方向に応じた方向を前記移動方向として決定し、
前記姿勢制御手段ステップでは、前記動き検出手段の検出に基づいて前記ハウジングの所定方向の傾きを判定して、仮想ゲーム世界における前記第１方向を基準とする方向への前記オブジェクトの傾きを決定する、ゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームシステムおよびゲームプログラムに関し、より特定的には、コントローラのハウジングの動きを検出可能なセンサを備えたコントローラによって操作されるゲームシステムおよびゲームプログラムに関する。
【背景技術】
【０００２】
従来、プレイヤが入力装置を操作することによって、ゲームをプレイするゲーム装置が各種開発されている。例えば、プレイヤ操作する入力装置の方向指示入力手段からの出力に加えて、当該入力装置本体の傾きに応じたデータを出力するセンサからの出力を用いて、ゲーム処理する装置が開示されている（例えば、特許文献１）。上記特許文献１で開示されたゲーム装置では、実車オートバイを入力装置として、ハンドルの操舵角を方向指示入力手段とし、実車オートバイの傾動を検出する傾動センサを入力装置本体の傾きに応じた動きデータを出力するセンサとして、当該方向指示入力手段およびセンサからの出力に応じて操作されるオートバイゲームを実現している。
【０００３】
また、プレイヤ操作する入力装置本体の動きに応じたデータを出力するセンサからの出力を用いて、ゲーム処理する装置が開示されている（例えば、特許文献２）。上記特許文献２で開示された方向データ出力装置では、操縦かん３１を入力装置として、操縦かん３１に内蔵された前後方向センサ４と回転方向センサ５とからの出力を用いて、模擬的な操縦を行っている。具体的には、ユーザが操縦かん３１を両手で把持して、空間で前後に傾倒させたり回転させたりすることによって、模擬的な飛行機を操縦するような操作を行っている。
【特許文献１】特開平１−２１４３８５号公報
【特許文献２】特開２０００−８９９０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１で開示されたゲーム装置は、入力装置が実車オートバイであるために、非常に大きい。したがって、当該ゲーム装置は、家庭用ゲーム装置として用いるには不適であり、プレイヤによっては扱えないこともある。
【０００５】
また、上記特許文献２で開示された方向データ出力装置も、ユーザが両手で取り扱う操縦かんであり、大型の入力装置である。したがって、当該方向データ出力装置は、プレイヤが片手で取り扱って操作するようなゲーム装置の入力装置として用いることに適さず、汎用性も乏しい装置である。
【０００６】
それ故に、本発明の目的は、プレイヤがコントローラを把持しながらゲームをプレイするゲームシステムおよびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００８】
第１の発明は、プレイヤが片手で把持可能な第１ハウジング（７７）を有するゲームコントローラ（７）と、当該ゲームコントローラと接続されるゲーム装置（５）と、当該第１ハウジングの動きを検出する第１動き検出手段（７６１）とを含むゲームシステム（３）である。ゲームコントローラは、方向指示部（７８ａ）を備える。方向指示部は、第１ハウジングに設けられ、方向指示入力する。ゲーム装置は、第１移動方向制御手段（Ｓ４３）および姿勢制御手段（Ｓ４８）を備える。第１移動方向制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場する第１オブジェクト（ＰＣ）の移動方向を決定する。姿勢制御手段は、第１動き検出手段による検出に応じて、仮想ゲーム世界における第１オブジェクトの姿勢を決定する。なお、方向指示部は、例えば、ジョイスティック、十字キー、または、複数のボタンキー（それぞれに各方向が割り当てられる）とすることができる。
【０００９】
第２の発明は、上記第１の発明において、第１ハウジングは、当該第１ハウジングの側周をプレイヤが片手で握持可能な形状および大きさで形成される。
【００１０】
第３の発明は、上記第２の発明において、第１ハウジングは、当該第１ハウジングの側周をプレイヤが片手で握持したときに、当該片手の親指で操作可能な位置に方向指示部が配設される。より具体的には、第１ハウジングは、その一方側面（右側面または左側面の一方）に片手の掌を接触させ、他方側面（右側面または左側面の他方）に当該片手の指（人差指・中指・薬指・小指）のうちの少なくとも１つ（好ましくはこれらのうちの少なくとも２つであり、また、好ましくは少なくとも中指を含む）を接触させることによって把持し、当該把持した状態で親指が届く範囲に方向指示部が配置される。
【００１１】
第４の発明は、上記第１の発明において、姿勢制御手段は、第１動き検出手段による検出に基づいて第１ハウジングの所定方向への傾きを判定して、仮想３次元ゲーム空間における所定方向への第１オブジェクトの傾きを決定する。この発明において、第１動き検出手段は、第１ハウジングにおける所定方向（例えば、第１ハウジングの左右方向（後述のＸ軸方向）または前後方向（後述のＹ軸方向））への傾きを検出する。そして、姿勢制御手段は、その検出に応じて、第１オブジェクトを仮想３次元ゲーム空間における所定方向へ傾ける制御をおこなう。このとき、姿勢制御手段は、第１ハウジングにおける所定方向と仮想３次元ゲーム空間における所定方向とを対応付けて処理をおこなう。例えば、第１ハウジングにおける左右方向の傾き、前後方向の傾きの少なくともいずれかを検出し、第１オブジェクトを、仮想３次元ゲーム空間におけるワールド座標系におけるＸ軸方向、もしくは、Ｚ軸方向、または、第１オブジェクトの前後方向（オブジェクト座標系におけるＺ軸方向またはオブジェクトの移動方向ベクトルの方向）もしくは左右方向（オブジェクト座標系におけるＸ軸方向またはオブジェクトの移動方向ベクトルに直交する方向。後者の場合、当該移動方向ベクトルに直交しかつ仮想水平面上の方向であってもよいし当該移動方向ベクトルに直交しかつオブジェクトのローカル座標系のＹ軸方向に直交する方向であってもよい）のいずれかに傾ける処理をおこなう。典型的には、第１ハウジングにおける左右方向の傾きを検出して、第１オブジェクトを、第１オブジェクトの左右方向に傾ける処理をおこなう。または、第１ハウジングにおける前後方向の傾きを検出して、第１オブジェクトを、第１オブジェクトの前後方向に傾ける処理をおこなう。なお、この発明において、第１動き検出手段は、第１ハウジングの傾きが判定可能な検出データ（例えば、加速度データやカメラで撮影した画像データであってもよく、傾きを示すデータそのものであってもよい）を出力する。そして、姿勢制御手段は、当該検出データに基づいて第１ハウジングの傾きを判定する。
【００１２】
第５の発明は、上記第１の発明において、第１動き検出手段は、第１ハウジングにおける所定軸を中心とした回転を少なくとも検出可能である。姿勢制御手段は、第１動き検出手段による検出に基づいて第１ハウジングの所定軸を中心とした回転を判定して、第１オブジェクトを仮想３次元ゲーム空間における所定軸を中心として回転させる制御をおこなう。このとき、姿勢制御手段は、第１ハウジングにおける所定軸と仮想３次元ゲーム空間における所定軸との対応付けて処理をおこなう。例えば、第１ハウジングにおける左右方向軸（後述のＸ軸）、上下方向軸（後述のＹ軸）、または、前後方向軸（後述のＺ軸）を中心とする回転を検出し、第１オブジェクトを、仮想３次元ゲーム空間におけるワールド座標系のＸ軸、Ｙ軸、もしくは、Ｚ軸、または、第１オブジェクトの前後方向軸、左右方向軸、もしくは、上下方向軸（オブジェクト座標系におけるＹ軸）のいずれかを中心として回転させる処理をおこなう。典型的には、第１ハウジングの左右方向軸を中心とする回転を検出して、第１オブジェクトを、第１オブジェクトの左右方向軸を中心として回転させる処理をおこなう。または、第１ハウジングの前後方向軸を中心とする回転を検出して、第１オブジェクトを、第１オブジェクトの前後方向軸を中心として回転させる処理をおこなう。または、第１ハウジングの上下方向軸を中心とする回転を検出して、第１オブジェクトを、第１オブジェクトの上下方向軸を中心として回転させる処理をおこなう。なお、この発明において、第１動き検出手段は、第１ハウジングの回転が判定可能な検出データ（例えば、ジャイロスコープによるデータや、加速度データやカメラで撮影した画像データであってもよい）を出力する。そして、姿勢制御手段は、当該検出データに基づいて第１ハウジングの回転を判定する。
【００１３】
第６の発明は、上記第１の発明において、姿勢制御手段は、第１動き検出手段による検出に基づいて第１ハウジングにおける所定方向の傾きおよび当該所定方向とは異なる方向の傾きのそれぞれを判定して、第１動き検出手段による検出のそれぞれに応じて、仮想３次元ゲーム空間における２方向への第１オブジェクトの傾きをそれぞれ決定する。すなわち、この発明において、姿勢制御手段は、第１ハウジングにおける方向Ａの傾きに応じて、第１オブジェクトを仮想３次元ゲーム空間における方向ａに傾ける処理をし、さらに、第１ハウジングにおける方向Ｂ（方向Ａと異なる方向）の傾きに応じて、第１オブジェクトを仮想３次元ゲーム空間における方向ｂ（方向ｂと異なる方向）に傾ける処理をおこなう。なお、姿勢制御手段が判定する２つの方向を互いに直交する方向とし、かつ、仮想ゲーム空間における２つの方向を互いに直交する方向とすることが好ましい。
【００１４】
第７の発明は、上記第１の発明において、姿勢制御手段は、第１動き検出手段による検出に基づいて第１ハウジングにおける所定軸を中心とした回転および当該所定軸とは異なる軸を中心とした回転のそれぞれを判定して、第１動き検出手段による検出のそれぞれに応じて、仮想３次元ゲーム空間における２軸を中心とした第１オブジェクトの回転をそれぞれ決定する。すなわち、この発明において、姿勢制御手段は、第１ハウジングにおける軸Ａを中心とする回転に応じて、第１オブジェクトを仮想３次元ゲーム空間における軸ａを中心として回転させ、さらに、第１ハウジングにおける軸Ｂ（軸Ａと異なる軸）を中心とする回転に応じて、第１オブジェクトを仮想３次元ゲーム空間における軸ｂ（軸ｂと異なる軸）を中心として回転させる処理をおこなう。なお、姿勢制御手段が判定する２つの軸を互いに直交する軸とし、かつ、仮想３次元ゲーム空間における２つの軸を互いに直交する軸とすることが好ましい。
【００１５】
第８の発明は、上記第１の発明において、第１動き検出手段は、第１ハウジングに対して互いに直交する３方向に生じる加速度を検出可能である。姿勢制御手段は、第１動き検出手段による３方向の加速度の検出のそれぞれに応じて、仮想３次元ゲーム空間における第１オブジェクトの姿勢を示す３次元の姿勢ベクトルを決定する。
【００１６】
第９の発明は、上記第１の発明において、第１動き検出手段は、第１ハウジングに対して互いに直交する３軸を中心とする回転を検出可能である。姿勢制御手段は、第１動き検出手段による３軸を中心とする回転の検出のそれぞれに応じて、仮想３次元ゲーム空間における第１オブジェクトの姿勢を示す３次元の姿勢ベクトルを決定する。
【００１７】
第１０の発明は、上記第１の発明において、第１動き検出手段は、第１ハウジングに対して互いに直交する３方向に生じる加速度値を検出可能である。姿勢制御手段は、第１動き検出手段による検出値のそれぞれに応じて、仮想３次元ゲーム空間における第１オブジェクトの姿勢を示す３次元の姿勢ベクトルの各成分値をそれぞれ決定する。典型的には、姿勢制御手段は、第１動き検出手段による検出値のそれぞれに応じて第１オブジェクトのローカル座標系における姿勢ベクトルの各成分値をそれぞれ決定する。または、姿勢制御手段は、第１動き検出手段による検出値のそれぞれに応じて第１オブジェクトの移動方向ベクトルとそれに直交する２ベクトルで定義される座標系における姿勢ベクトルの各成分値をそれぞれ決定する。例えば、第１動き検出手段は、第１ハウジングの左右方向（後述のＸ軸方向）、上下方向（後述のＹ軸方向）、および、前後方向（後述のＺ軸方向）に生じる加速度値をそれぞれ検出し、姿勢制御手段は、第１ハウジングの左右方向の加速度値の検出に応じて、第１オブジェクトのローカル座標系における姿勢ベクトルの左右方向成分値（典型的には当該ローカル座標系のＸ成分値）を決定し、第１ハウジングの前後方向の加速度値の検出に応じて、第１オブジェクトのローカル座標系における姿勢ベクトルの前後方向成分値（典型的には当該ローカル座標系のＺ成分値）を決定し、第１ハウジングの上下方向の加速度値の検出に応じて、第１オブジェクトのローカル座標系における姿勢ベクトルの上下方向成分値（典型的には当該ローカル座標系のＹ成分値）を決定する。なお、第１ハウジングの上下方向の検出加速度値の正負を反転して、第１オブジェクトのローカル座標系における姿勢ベクトルの上下方向成分値を決定するのが好ましい。より具体的には、第１ハウジングの左右方向の加速度値：上下方向の加速度値（正負反転）：前後方向の加速度値＝姿勢ベクトルの左右方向成分値：上下方向成分値：前後方向成分値となるようにするのが好ましい。
【００１８】
第１１の発明は、上記第１の発明において、第１動き検出手段は、第１ハウジングに対して互いに直交する２方向に生じる加速度値を検出可能である。姿勢制御手段は、第１動き検出手段による検出値のそれぞれに応じて、仮想３次元ゲーム空間における第１オブジェクトの姿勢を示す３次元の姿勢ベクトルの２成分値をそれぞれ決定する。具体的には、第１動き検出手段は、第１ハウジングの左右方向に生じる加速度および前後方向に生じる加速度を検出可能である。そして、姿勢制御手段は、姿勢ベクトルの左右方向成分値と前後方向成分値をそれぞれ決定する。なお、姿勢ベクトルの上下方向成分値は例えば一定値などとしてもよい。より具体的には、第１ハウジングの左右方向の加速度値：前後方向の加速度値＝姿勢ベクトルの左右方向成分値：前後方向成分値となるようにするのが好ましい。
【００１９】
第１２の発明は、上記第４の発明において、第１移動方向制御手段は、仮想３次元ゲーム空間における第１方向を基準として、方向指示部による指示方向に応じた方向を移動方向として決定する。姿勢制御手段は、第１動き検出手段の検出に基づいて第１ハウジングの所定方向の傾きを判定して、仮想３次元ゲーム空間における第１方向を基準とする方向への第１オブジェクトの傾きを決定する。この発明において、第１移動方向制御手段は、第１方向として、仮想３次元ゲーム空間における第１オブジェクトの前方方向（前方方向が移動方向制御に応じて変化する場合には現在の前方方向）または現在の移動方向とすることができる。例えば、方向指示部により右方向が指示された場合、第１方向に対する右方向を今回の移動方向に決定する。例えば、姿勢制御手段を少なくとも第１ハウジングの前方向の傾きを判定可能とし、第１ハウジングの前方向の傾きが判定されたときに、第１オブジェクトを第１方向に傾ける処理をおこなう。さらには、それに加えて、姿勢制御手段を少なくとも第１ハウジングの後方向の傾きを判定可能とし、第１ハウジングの後方向の傾きが判定されたときに、第１オブジェクトを第１方向と反対方向に傾ける処理をおこなう。さらには、それらに加えてまたは独立して、姿勢制御手段を少なくとも第１ハウジングの左右方向の傾きを判定可能とし、第１ハウジングの左右方向の傾きが判定されたときに、第１オブジェクトを第１方向に対して左右方向に傾ける処理をおこなう。なお、方向指示手段を第１ハウジングの前方向に傾倒可能なスティックによる構成とし、第１移動方向制御手段は、スティックが第１ハウジングの前方向に傾倒されたときに、第１オブジェクトを第１方向に移動するように制御し、かつ、姿勢制御手段は第１ハウジングの前方向の傾きを判定可能として、第１ハウジングの前方向の傾きを判定したときに、第１オブジェクトを第１方向に傾ける処理をしてもよい。さらに、それに加えて、方向指示手段を第１ハウジングの後方向に傾倒可能なスティックによる構成とし、第１移動方向制御手段は、スティックが第１ハウジングの後ろ方向に傾倒されたときに、第１オブジェクトを第１方向と反対に移動するように制御し、かつ、姿勢制御手段は第１ハウジングの後ろ方向の判定を検出可能として、第１ハウジングの後ろ方向の傾きを判定したときに、第１オブジェクトを第１方向と反対方向に傾ける処理をしてもよい。さらには、それらに加えてまたは独立して、方向指示手段を第１ハウジングの左右方向に傾倒可能なスティックによる構成とし、第１移動方向制御手段は、スティックが第１ハウジングの左右方向に傾倒されたときに、第１オブジェクトを第１方向に対して左右方向に移動するように制御し、かつ、姿勢制御手段は第１ハウジングの左右方向の傾きを判定可能として、第１ハウジングの左右方向の傾きを判定したときに、第１オブジェクトを第１方向に対して左右方向に傾ける処理をしてもよい。
【００２０】
第１３の発明は、上記第５の発明において、第１移動方向制御手段は、仮想３次元ゲーム空間における第１方向を基準として、方向指示部による指示方向に応じた方向を移動方向として決定する。姿勢制御手段は、第１動き検出手段の検出に基づいて第１ハウジングの所定軸を中心とする回転を判定して、第１動き検出手段による所定軸を中心とする回転の検出に応じて、仮想３次元ゲーム空間における第１方向軸を中心とする第１オブジェクトの回転を決定する。この発明において、第１移動方向制御手段は、第１方向として、仮想３次元ゲーム空間における第１オブジェクトの前方方向（前方方向が移動方向制御に応じて変化する場合には現在の前方方向）または現在の移動方向とすることができる。例えば、方向指示部により右方向が指示された場合、第１方向に対する右方向を今回の移動方向に決定する。例えば、姿勢制御手段を少なくとも第１ハウジングの前後方向軸を中心とする回転を判定可能とし、第１ハウジングの前後方向軸を中心とする回転が判定されたときに、第１オブジェクトを第１方向軸を中心として回転させる処理をおこなう。さらには、それらに加えてまたは独立して、姿勢制御手段を少なくとも第１ハウジングの左右方向軸を中心とする回転を判定可能とし、第１ハウジングの左右方向軸を中心とする回転が判定されたときに、第１オブジェクトを第１方向軸を中心として回転させる処理をおこなう。なお、方向指示手段を第１ハウジングの前方向に傾倒可能なスティックによる構成とし、第１移動方向制御手段は、スティックが第１ハウジングの前方向に傾倒されたときに、第１オブジェクトを第１方向に移動するように制御し、かつ、姿勢制御手段は第１ハウジングの前後方向軸を中心とする回転を判定可能として、第１ハウジングの前後方向軸を中心とする回転を判定したときに、第１オブジェクトを第１方向軸を中心として回転させる処理をしてもよい。さらには、それらに加えてまたは独立して、方向指示手段を第１ハウジングの左右方向に傾倒可能なスティックによる構成とし、第１移動方向制御手段は、スティックが第１ハウジングの左右方向に傾倒されたときに、第１オブジェクトを第１方向に対して左右方向に移動するように制御し、かつ、姿勢制御手段は第１ハウジングの左右方向軸を中心とする回転を判定可能として、第１ハウジングの左右方向軸を中心とする回転を判定したときに、第１オブジェクトを第１方向に対して左右方向軸を中心として回転させる処理をしてもよい。
【００２１】
第１４の発明は、上記第１２の発明において、方向指示部は、少なくともスティックを第１ハウジングの前方向に傾倒させることにより前方向の指示入力が可能なものである。第１移動方向制御手段は、スティックが第１ハウジングの前方向に傾倒されたときに、第１オブジェクトを第１方向に移動させる。姿勢制御手段は、第１動き検出手段の検出に基づいて第１ハウジングの前方向の傾きを判定して、第１動き検出手段により第１ハウジングが前方向に傾いたことが検出されたときに、第１オブジェクトを第１方向に傾ける。
【００２２】
第１５の発明は、上記第１２または第１４の発明において、方向指示部は、少なくともスティックを第１ハウジングの左右方向に傾倒させることにより左右方向の指示入力が可能なものである。第１移動方向制御手段は、スティックが第１ハウジングの左右方向に傾倒されたときに、第１オブジェクトを第１方向を基準とする左右方向に移動させる。姿勢制御手段は、第１動き検出手段の検出に基づいて第１ハウジングが左右方向に傾いたことを判定して、第１オブジェクトを第１方向を基準とする左右方向に傾ける。
【００２３】
第１６の発明は、上記第１２、第１４、または第１５の発明において、方向指示部は、少なくとも前後左右の方向指示が可能である。第１移動方向制御手段は、第１オブジェクトの現在の移動方向を第１方向に設定し、当該第１方向を基準として、方向指示部による指示方向に応じた方向を移動方向として更新設定する。姿勢制御手段は、第１動き検出手段の検出に基づいて第１ハウジングの傾きを判定して、更新設定される移動方向を基準とする方向への第１オブジェクトの傾きを決定する。
【００２４】
第１７の発明は、上記第１の発明において、ゲームコントローラは、第２ハウジングを、さらに備える。第２ハウジングは、第１ハウジングと独立し、プレイヤが片手で把持可能である。ゲームシステムは、第２動き検出手段を、さらに含む。第２動き検出手段は、第２ハウジングで指し示す向きを検出する。ゲーム装置は、第２移動方向制御手段を、さらに備える。第２移動方向制御手段は、第２動き検出手段による検出に応じて、第１オブジェクトと異なる第２オブジェクトの移動方向を決定する。例えば、第１オブジェクトおよび第２オブジェクトは、スポーツゲームや戦争ゲームにおける味方チームに属するキャラクタのうちのオブジェクトである。または、第１オブジェクトが選手キャラクタで、第２オブジェクトがボールキャラクタであってもよい。さらには、第１オブジェクトがあるキャラクタで、第２オブジェクトが当該あるキャラクタが発射する発射キャラクタ（弾キャラクタなど）などでもよい。
【００２５】
第１８の発明は、上記第１の発明において、ゲームコントローラは、第２ハウジングを、さらに備える。第２ハウジングは、第１ハウジングと独立し、プレイヤが片手で把持可能である。ゲームシステムは、第２動き検出手段を、さらに含む。第２動き検出手段は、第２ハウジングの動きを検出する。ゲーム装置は、第２移動方向制御手段を、さらに備える。第２移動方向制御手段は、第２動き検出手段による検出に応じて、第１オブジェクトと異なる第２オブジェクトの移動方向を決定する。第２動き検出手段は、第１動き検出手段と同様の構成とすることができる。
【００２６】
第１９の発明は、上記第１７または第１８の発明において、第１移動方向制御手段は、仮想ゲーム世界に登場する複数のオブジェクトから選ばれた第１オブジェクトの移動方向を決定する。第２移動方向制御手段は、第２動き検出手段の検出に応じて、複数のオブジェクトのうちの少なくとも２つのオブジェクトの移動方向を決定する。ゲーム装置は、複数のオブジェクトのうちから第１オブジェクトを選択するが、この選択はユーザ操作に基づいてもよいしコンピュータで自動選択してもよい。また、第２移動方向制御手段によって制御される少なくとも２つのオブジェクトの選択はユーザ操作に基づいてもよいしコンピュータで自動選択してもよい。また、味方チームに属するキャラクタのうち、第１オブジェクト以外のキャラクタをコンピュータで自動制御してもよく、また、第１オブジェクトおよび第２オブジェクト以外のキャラクタをコンピュータで自動制御しても良い。また、第１オブジェクトはユーザ操作に基づいて味方チームから選択するのが好ましい。
【００２７】
第２０の発明は、上記第１７〜第１９の発明のいずれかにおいて、第１動き検出手段は、第１ハウジングに設けられる。第２動き検出手段は、第２ハウジングに設けられる。ゲームコントローラは、接続手段および送信部を備える。接続手段は、第１ハウジングおよび第２ハウジングとの間を有線または無線接続して、一方のハウジング内で発生したデータを他方のハウジング内へ出力する。送信部は、第１ハウジングまたは第２ハウジングのうちの他方に設けられ、方向指示部の入力データ、第１動き検出手段の検出データ、および第２動き検出手段の検出データをゲーム装置に送信する。なお、この発明において、他方のハウジング内にゲームコントローラの識別情報データまたは通信リンクの識別情報データを記憶する識別情報記憶手段を設けて、送信部は、当該識別情報データを付して、方向指示部の入力データ、第１動き検出手段の検出データ、第２動き検出手段の検出データを送信してもよい。
【００２８】
第２１の発明は、上記第１７〜第１９の発明のいずれかにおいて、ゲーム装置は、第２オブジェクト移動制御手段を、さらに備える。第２オブジェクト移動制御手段は、第１オブジェクトの仮想ゲーム世界における位置を基準とする位置を移動開始点として、第２移動方向制御手段により決定される移動方向に第２オブジェクトが移動するように制御する。第１オブジェクトは、例えば、サッカーゲームにおけるボールを保持した選手キャラクタであり、第２オブジェクトはボールキャラクタである。第１７の発明に従属する場合、例えば、第２オブジェクトは、移動開始点（例えば、第１オブジェクトの位置またはその周辺の所定位置）から第２動き検出手段により検出されるゲーム画面上の指示座標に対応する仮想空間座標に向けて移動する。また、第１８の発明に従属する場合、例えば、第２オブジェクトは、移動開始点から第２動き検出手段により検出される動き方向に対応する仮想空間内の方向に向けて移動する。
【００２９】
第２２の発明は、上記第１７〜第１９の発明のいずれかにおいて、第２移動方向制御手段は、第１動き検出手段の検出および第２動き検出手段の検出に応じて、第２オブジェクトの移動方向を決定する。
【００３０】
第２３の発明は、上記第１７〜第１９の発明のいずれかにおいて、第２移動方向制御手段は、姿勢制御手段により決定された第１オブジェクトの姿勢および第２動き検出手段の検出に応じて、第２オブジェクトの移動方向を決定する。
【００３１】
第２４の発明は、上記第１の発明において、第１動き検出手段は、第１ハウジングに設けられて、当該第１ハウジングの動きを検出する。
【００３２】
第２５の発明は、上記第１７または第１８の発明において、第２動き検出手段は、第２ハウジングに設けられる。
【００３３】
なお、本願発明において、第１動き検出手段および第２動き検出手段（以下、単に動き検出手段と記載する）は、ハウジングの動きやハウジングで指し示す位置を検出する手段であるが、典型的には、ハウジングに固設されるセンサである。なお、本願発明において、ハウジングの動きとは姿勢変化（傾きの変化と同義であり、ハウジングの軸を中心とする回転運動の意味である）を含む。このセンサとしては、加速度に応じたデータを出力するセンサ（加速度センサ）、方位に応じたデータを出力するセンサ（磁気センサ）、回転運動に応じたデータを出力するセンサ（ジャイロセンサ）などを用いることができる。また、加速度センサおよびジャイロセンサは、多軸検出可能なものだけなく１軸検出のものでもよい。また、これらのセンサを組み合わせて、より正確なハウジングの動きを検出するものであってもかまわない。なお、ハウジングに固定されたカメラを、上記センサとして利用することも可能である。この場合、ハウジングの動きや姿勢変化に応じてカメラが撮像する撮像画像が変化するので、この画像を解析することにより、ハウジングの動きや姿勢変化（回転）を判断することができ、さらにハウジングで指し示す位置も判断することができる。
【００３４】
また、動き検出手段は、センサの種類によっては、ハウジングの外部に別設されてもよい。一例として、センサとしてのカメラでハウジングの外部から当該ハウジングを撮影し、撮像画像内に撮像されたハウジングの画像を解析することにより、ハウジングの動きを判断することが可能である。さらに、ハウジングに固設されたユニットとハウジング外部に別設されたユニットとの協働によるシステムを用いてもよい。この例としては、ハウジング外部に発光ユニットを別設し、ハウジングに固設されたカメラで発光ユニットからの光を撮影する。このカメラで撮像された撮像画像を解析することにより、ハウジングの動きを判断することができる。また、他の例としては、ハウジング外部に磁場発生装置を別設し、ハウジングに磁気センサを固設するようなシステムなどが挙げられる。
【００３５】
ゲーム装置が備える処理手段において、センサの出力に基づいて、ハウジングの動きが判断される。前述の通り、本願発明は、ハウジングの直線的な動きを判断する場合と、ハウジングの姿勢変化（回転、傾き）を判断する場合があるが、後者について、以下に詳述する。ハウジングの姿勢変化を判断する場合、ハウジングの所定軸の周りに当該ハウジングが回転したことを判断してもよいし（第１種の補正手段）、現実世界における所定軸の周りにハウジングが回転したことを判断してもよい（第２種の補正手段）。
【００３６】
（１）第１種の補正手段の場合
まず、加速度センサをハウジングに固設する例を説明する。単純な例として、ハウジングの所定方向に生じる加速度を加速度センサで検出する。そして、加速度センサが検出した加速度を用いて、重力加速度成分の変化を分析することによって、重力加速度方向に直交する軸周りにハウジングが回転したことを判断することが可能である。例えば、ハウジングの上下方向に生じる加速度を検出して、重力加速度の当該上下方向成分の変化を分析することによって、ハウジングの左右軸周りに当該ハウジングが回転したことを判断することが可能である。
【００３７】
ここで、加速度センサを用いる場合、加速度センサの検出軸がハウジングの姿勢変化における回転軸と一致するケースなど、加速度センサの検出軸の傾きが変化しないハウジングの回転に対しては、重力加速度の検出軸方向の成分が変化しないので、ハウジングの回転を判断することが難しい。しかしながら、加速度センサの検出軸がハウジングの姿勢変化における回転軸と一致しない場合（典型的には、加速度センサの検出軸が鉛直面に沿って傾きを変化するような姿勢変化など）であれば、重力加速度の影響により当該検出軸についての出力値が変化するのでハウジングの回転が判断できる。
【００３８】
なお、本願発明が適用されるゲームの分野においては、ゲーム開発者が予め定める正しい操作方法に従って操作したときに正しいゲーム処理が行われるようにしておけば十分であって、それ以外の操作をした場合に正しいゲーム処理が行われないとしても格段の問題は生じない。したがって、ゲームの取扱説明書やゲーム画面などにおいて、正しい操作方法として、ハウジングの姿勢を変化させる方法（より具体的には、どの軸周りに回転操作させるか）を指示しておけば、プレイヤはその指示にしたがってハウジングを回転させる操作する。つまり、ある回転操作を前提として、ハウジングの姿勢が判断できれば十分である。なお、プレイヤが指示された操作から逸脱した操作を行った場合には、ハウジングの姿勢を正確に判断することができないが、その逸脱した程度が許容範囲内であれば、ゲーム処理としてもおおよそ正しい処理結果が得られる。また、ゲーム装置の用途においては、格段の正確性を必要としないことが多いため、そのような場合でも十分な実用性を有する。
【００３９】
なお、加速度センサを用いる場合、ハウジングに作用する重力加速度のみならず、ハウジングの動きに応じて作用する加速度を検出するが、当業者にとって既知の処理により、当該動きに応じて検出された加速度を除去することが可能である。例えば、単純な例としては、加速度センサが検出した加速度の値が重力加速度よりも大きな値（または、十分大きな値）を示すときには、検出された加速度の値が重力加速度を示していないと判断して除去するような処理としてもよい。また、加速度センサが検出した加速度の値の変動が小さいときにのみ、検出された加速度の値が重力加速度を示しているとして、姿勢の分析に採用するような処理としてもよい。さらに、加速度センサが検出した加速度の値の高周波成分を除去してもよい。また、ハウジングを激しく動かす必要のないゲームの場合には、ハウジングの動きに応じて作用する加速度を除去する処理をしなくてもよい。なぜなら、ハウジングの動きに応じた加速度が検出されても、プレイヤがハウジングを激しく動かさなければ、ある程度正しい結果が得られるのであって、十分な実用性を有するからである。
【００４０】
なお、多軸検出可能な加速度センサを用いて、当該多軸方向にそれぞれ生じた加速度の値を用いる場合には、基準姿勢からのハウジングの回転角度を算出して、より詳細な判断することが可能である。例えば、加速度センサが検出する２つの軸方向の加速度の値を用いて、所定の演算処理をすることにより、ハウジングの回転角度を算出することが可能である。典型的には、２つの軸方向の加速度の値を逆正接関数に代入するなどの、三角関数を利用した演算処理を、ハウジングの回転角度の算出に用いることができる。
【００４１】
また、多軸検出可能な加速度センサを用いる場合には、どの検出軸方向の加速度が変化するかに基づいて、どの検出軸周りにハウジングが回転したかの判定も可能である。また、３軸方向の加速度をそれぞれ検出する加速度センサを用いる場合に、例えば、第１の軸方向の加速度の値と第２の軸方向の加速度の値とを用いて演算処理をすることにより、第３の軸周りにハウジングが回転したことを判断することが可能である。また、第１の軸方向の加速度の値と第３の軸方向の加速度の値とを用いて演算処理をすることにより、第２の軸周りにハウジングが回転したこと判断することが可能である。
【００４２】
なお、ハウジングを実空間で回転移動させると、ハウジングに遠心力が生じる。この遠心力を加速度センサが検出することにより、ハウジングの姿勢変化の判断に利用してもかまわない。すなわち、例えば、ハウジングのある方向に加速度が生じたことが加速度センサにより検出された場合、それに直交する方向に伸びる軸周りにハウジングが回転した可能性があると判定できる。
【００４３】
次に、ジャイロセンサをハウジングに固設する場合を説明する。この場合、ハウジングの姿勢を変化させる（すなわち、ハウジングをローカル座標系における所定軸周りに回転させる）と、ジャイロセンサはその回転を直接検出して、角速度データを出力する。そして、出力された角速度データに基づいて、基準姿勢からのハウジングの姿勢変化を判断することが可能である。より具体的には、角速度データを用いてハウジング回転角度の変化を判断することが可能である。より典型的には、ハウジングの前後軸周りの回転角度の変化、ハウジングの左右軸周りの回転角度の変化、および／または、ハウジングの上下軸周りの回転角度の変化をそれぞれ判断することが可能である。また、初期状態におけるハウジングの回転角度を設定しておくことにより、ハウジングの前後軸周りの回転角度、ハウジングの左右軸周りの回転角度、および／または、ハウジングの上下軸周りの回転角度を判断することが可能である。
【００４４】
（２）第２種の補正手段の場合
典型的には、３軸方向の加速度をそれぞれ検出可能な加速度センサをハウジングに固設し、各軸方向に生じた加速度の値に基づいて、ハウジングに対する重力方向を判定することにより、水平軸周りのハウジングの回転角を判断することが可能である。または、例えば、３軸方向の加速度をそれぞれ検出可能な加速度センサについて、第１軸方向の加速度の値と第２軸方向の加速度の値とから合成ベクトルを算出する。そして、上記合成ベクトルの大きさと第３軸方向の加速度の値とからなる２次元ベクトルから、水平軸周りの当該第３軸の回転角を判断することも可能である。または、方位センサをハウジングに設けることにより、鉛直軸周りの回転角を判断することが可能である。
【００４５】
また、動き検出手段から出力されるデータを用いて、ハウジングで指し示された位置を検出する場合、動き検出手段は、例えば、ハウジングに設けられる撮影手段で撮影した画像を解析することにより動きを検出するもの（例えば、後述の撮像情報演算部７４とマーカ８により実現されるようなシステムを含む）など、ハウジングにおける所定軸が向いている方向が検出可能な手段である。また、ゲーム画面上の指示座標を検出可能なものであることが好ましい。
【００４６】
第２６の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムである。ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成される。ゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、方向指示入力をする。ゲーム装置は、移動方向制御手段、姿勢制御手段、および表示制御手段を備える。移動方向制御手段は、仮想３次元ゲーム空間に登場するオブジェクトの前方方向を基準として、方向指示部による指示方向を当該オブジェクトの移動方向として決定し、当該移動方向へ当該オブジェクトの前方方向を変化させる。姿勢制御手段は、動き検出手段の検出に基づいてハウジングの傾きを判定して、プレイヤが方向指示部を用いて前後方向の入力操作を行う方向へハウジングが傾いたことを示すとき、オブジェクトを現在の前方方向へ傾ける。表示制御手段は、仮想３次元ゲーム空間内で、姿勢制御手段により決定された傾きで、移動方向制御手段によって決定された移動方向にオブジェクトを移動させて表示装置に表示する。
【００４７】
第２７の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムである。ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成される。ゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、方向指示入力をする。ゲーム装置は、移動方向制御手段、姿勢制御手段、および表示制御手段を備える。移動方向制御手段は、仮想３次元ゲーム空間に登場するオブジェクトの前方方向を基準として、方向指示部による指示方向を当該オブジェクトの移動方向として決定し、当該移動方向へ当該オブジェクトの前方方向を変化させる。姿勢制御手段は、動き検出手段の検出に基づいてハウジングの傾きを判定して、プレイヤが方向指示部を用いて左右方向の入力操作を行う方向へハウジングが傾いたことを示すとき、オブジェクトを現在の前方方向に直交する方向へ傾ける。表示制御手段は、仮想３次元ゲーム空間内で、姿勢制御手段により決定された傾きで、移動方向制御手段によって決定された移動方向にオブジェクトを移動させて表示装置に表示する。
【００４８】
第２８の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムである。ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成される。ゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、方向指示入力をする。ゲーム装置は、移動方向制御手段、姿勢制御手段、および表示制御手段を備える。移動方向制御手段は、仮想３次元ゲーム空間に登場するオブジェクトの前方方向を基準として、方向指示部による指示方向を当該オブジェクトの移動方向として決定し、当該移動方向へ当該オブジェクトの前方方向を変化させる。姿勢制御手段は、動き検出手段の検出に基づいてハウジングの傾きを判定して、プレイヤが方向指示部を用いて前後方向の入力操作を行う方向へハウジングが傾いたことを示すとき、オブジェクトを現在の前方方向へ傾け、プレイヤが方向指示部を用いて左右方向の入力操作を行う方向へハウジングが傾いたことを示すとき、現在の前方方向に直交する方向へ傾ける。表示制御手段は、仮想３次元ゲーム空間内で、姿勢制御手段により決定された傾きで、移動方向制御手段によって決定された移動方向にオブジェクトを移動させて表示装置に表示する。
【００４９】
第２９の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムである。ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成される。ゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、方向指示入力をする。ゲーム装置は、移動方向制御手段、姿勢制御手段、および表示制御手段を備える。移動方向制御手段は、仮想３次元ゲーム空間に登場するオブジェクトの前方方向を基準として、方向指示部による指示方向を当該オブジェクトの移動方向として決定する。姿勢制御手段は、動き検出手段の検出に基づいてハウジングの傾きを判定して、プレイヤが方向指示部を用いて前後方向の入力操作を行う方向へハウジングが傾いたことを示すとき、オブジェクトを前方方向へ傾ける。表示制御手段は、仮想３次元ゲーム空間内で、姿勢制御手段により決定された傾きで、移動方向制御手段によって決定された移動方向にオブジェクトを移動させて表示装置に表示する。
【００５０】
第３０の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムである。ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成される。ゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、方向指示入力をする。ゲーム装置は、移動方向制御手段、姿勢制御手段、および表示制御手段を備える。移動方向制御手段は、仮想３次元ゲーム空間に登場するオブジェクトの前方方向を基準として、方向指示部による指示方向を当該オブジェクトの移動方向として決定する。姿勢制御手段は、動き検出手段の検出に基づいてハウジングの傾きを判定して、プレイヤが方向指示部を用いて左右方向の入力操作を行う方向へハウジングが傾いたことを示すとき、オブジェクトを前方方向に直交する方向へ傾ける。表示制御手段は、仮想３次元ゲーム空間内で、姿勢制御手段により決定された傾きで、移動方向制御手段によって決定された移動方向にオブジェクトを移動させて表示装置に表示する。
【００５１】
第３１の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムである。ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成される。ゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、方向指示入力をする。ゲーム装置は、移動方向制御手段、姿勢制御手段、および表示制御手段を備える。移動方向制御手段は、仮想３次元ゲーム空間に登場するオブジェクトの前方方向を基準として、方向指示部による指示方向を当該オブジェクトの移動方向として決定する。姿勢制御手段は、動き検出手段の検出に基づいてハウジングの傾きを判定して、プレイヤが方向指示部を用いて前後方向の入力操作を行う方向へハウジングが傾いたことを示すとき、オブジェクトを前方方向へ傾け、プレイヤが方向指示部を用いて左右方向の入力操作を行う方向へハウジングが傾いたことを示すとき、前方方向に直交する方向へ傾ける。表示制御手段は、仮想３次元ゲーム空間内で、姿勢制御手段により決定された傾きで、移動方向制御手段によって決定された移動方向にオブジェクトを移動させて表示装置に表示する。
【００５２】
第３２の発明は、上記第２６〜第３１の発明のいずれかにおいて、動き検出手段は、ハウジングに設けられて、当該ハウジングの動きを検出する。
【００５３】
第３３の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、第１ハウジング、方向指示部、第２ハウジング、および動き検出手段とを備える。第１ハウジングは、プレイヤが片手で把持可能である。方向指示部は、第１ハウジングに設けられ、方向指示入力をする。第２ハウジングは、第１ハウジングと独立し、プレイヤが片手で把持可能である。動き検出手段は、第２ハウジングの動きを検出する。ゲーム装置は、移動方向制御手段および姿勢制御手段を備える。移動方向制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する。姿勢制御手段は、動き検出手段の検出に応じて、仮想ゲーム世界におけるオブジェクトの姿勢を決定する。
【００５４】
第３４の発明は、プレイヤが片手で把持可能なハウジングと、方向指示入力するための方向指示部と、当該ハウジングの動きを検出する動き検出手段とを備えたゲームコントローラと接続されるゲーム装置のコンピュータで実行されるゲームプログラムである。ゲームプログラムは、移動方向制御手段および姿勢制御手段として、コンピュータを機能させる。移動方向制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する。姿勢制御手段は、動き検出手段の検出に応じて、仮想ゲーム世界におけるオブジェクトの姿勢を決定する。
【００５５】
第３５の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの動きを検出する動き検出手段とを含むゲームシステムである。ゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。典型的には、動き検出手段は、ハウジングの直線状の動きを検出し、または、ハウジングの軸を中心とする回転を検出する。ゲーム装置は、移動制御手段および動作制御手段を備える。移動制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動制御を行う。動作制御手段は、動き検出手段による検出に応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００５６】
なお、動作制御手段は、オブジェクトが、移動制御手段によって決定される仮想ゲーム世界の位置において、所定の動作をするように制御する。例えば、所定の動作は、オブジェクトがジャンプ動作する制御であってもよいし、オブジェクトがフェイント動作する制御であってもよいし、オブジェクトが他のオブジェクトを攻撃動作する制御等であってもよい。また、動作制御手段による動作制御によって、オブジェクトの仮想ゲーム世界における位置が変化しないようにするのが好ましい。
【００５７】
また、動作制御手段は、ハウジングが所定方向（ハウジングの所定方向または現実空間における所定方向（水平方向や鉛直方向など））に動いたこと、または、ハウジングが所定方向に回転したこと（ハウジングが当該ハウジングの所定軸を中心に回転したこと）、さらには、ハウジングが所定の動作パターンで動いたこと等に応じて、オブジェクトに所定の動作をさせる。
【００５８】
第３６の発明は、上記第３５の発明において、ハウジングは、当該ハウジングの側周をプレイヤが片手で握持可能な形状および大きさで形成される。
【００５９】
第３７の発明は、上記第３６の発明において、ハウジングは、当該ハウジングの側周をプレイヤが片手で握持したときに、当該片手の親指で操作可能な位置に方向指示部が配設される。
【００６０】
第３８の発明は、上記第３５の発明において、動き検出手段は、ハウジングに対して生じる加速度を検出可能である。動作制御手段は、動き検出手段による検出に基づいてハウジングの所定方向に生じた加速度を判定して、当該加速度が所定条件を満たすときに、オブジェクトに所定の動作をさせる。
【００６１】
第３９の発明は、上記第３８の発明において、動作制御手段は、動き検出手段による検出に基づいてハウジングの所定方向に生じた加速度の履歴を判定して、当該履歴が所定条件を満たすときに、オブジェクトに所定の動作をさせる。
【００６２】
第４０の発明は、上記第３５の発明において、動き検出手段は、ハウジングにおける所定軸を中心とした回転を少なくとも検出可能である。動作制御手段は、動き検出手段による検出に基づいてハウジングの所定軸を中心とした回転を判定して、当該回転が所定条件を満たすときに、オブジェクトに所定の動作をさせる。
【００６３】
第４１の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを所定方向に移動させる。動作制御手段は、ハウジングが所定方向に動いたことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００６４】
なお、方向指示部は、例えば、十字キー（十字状に配置されたボタンでもよい）やジョイスティック（操作部がスライドするものでもよい）であり、キーやスティックをハウジングの所定方向（ハウジングの前、後、左、およびまたは、右方向）に押す入力が可能である（スティックの場合にはハウジングの前、後、左、およびまたは、右方向に傾倒する入力が可能である）。移動制御手段は、例えば、操作部がハウジングの前方向に押す入力がされたときに、オブジェクトを当該オブジェクトの前方向に移動させる。
【００６５】
例えば、動き検出手段は、加速度センサであり、動作制御手段は、ハウジングの所定方向に所定の加速度が生じたことに応じて、オブジェクトに所定の動作をさせる。「所定の動作」とは典型的には、プログラムで予め動きデータ（モーションデータ）を設定しておき、当該モーションデータを参照して、オブジェクトに予め定める動作をさせるものである。なお、動作制御手段は、ハウジングの動きの速さまたは大きさが一定以下の動きのときには、オブジェクトに所定の動作をさせないようにしてもよい。また、動作制御手段は、ハウジングの動きの速さまたは大きさに応じて、仮想ゲーム世界におけるオブジェクトに異なる動作をさせるようにしてもよい。
【００６６】
第４２の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを第１方向に移動させる。動作制御手段は、ハウジングが所定方向に直交する方向に動いたことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００６７】
第４３の発明は、上記第４１の発明において、方向指示部は、操作部をハウジングの所定方向および当該所定方向に直交する方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを第１方向に移動させ、かつ、操作部を直交する方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを第１方向と直交する第２方向に移動させる。動作制御手段は、ハウジングが所定方向に動いたことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作としての第１動作をさせ、ハウジングが直交する方向に動いたことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作としての当該第１動作と異なった第２動作をさせる。
【００６８】
なお、上記第１動作と第２動作とは、異なる種類の動作である。典型的には、プログラムで予め動きデータ（モーションデータ）として、第１動作のモーションデータと、第２動作のモーションデータとを設定しておく。そして、動作制御手段は、ハウジングが上記所定方向に動いたことに応じて、第１動作のモーションデータを参照して、オブジェクトに第１動作をさせ、ハウジングが上記直交する方向に動いたことに応じて、第２動作のモーションデータを参照して、オブジェクトに第２動作をさせる。例えば、第１動作として、ある種類のフェイント動作（例えば、またぎフェイント）をさせ、第２動作としてそれとは異なる別の種類のフェイント動作（例えば、左右に体をゆらすフェイント）をさせてもよい。
【００６９】
第４４の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを当該オブジェクトの前方向に移動させ、かつ、当該押す入力の大きさに応じてオブジェクトの移動量を変更する。動作制御手段は、ハウジングが所定方向に直交する方向に動いたことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００７０】
なお、移動制御手段は、例えば、スティックの傾倒量、操作部のスライド量、キーの押す量または押す力に応じて、オブジェクトの移動量を決定する（例えば、傾倒量等が大きいほど、移動量が大きいようにする）。そして、動作制御手段は、直交する方向の動きを判定するので、方向指示部を用いてオブジェクトの前方向への移動を調整しつつ、ハウジングを直交する方向に動かすことによりオブジェクトに動作をさせることができる。
【００７１】
第４５の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを所定方向に移動させる。動作制御手段は、ハウジングが所定方向に動いた後、当該所定方向と反対方向に動いたことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００７２】
なお、動作制御手段は、ハウジングが所定方向への動きと当該所定方向の反対方向への動きが反復したことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせるようにしてもよい。また動作制御手段は、ハウジングが所定方向への動きと当該所定方向と反対方向への動きが反復した回数に応じて、動作の種類を変更してもよい。
【００７３】
第４６の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを所定方向に移動させる。動作制御手段は、ハウジングが所定方向と直交する軸を中心に回転したことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００７４】
なお、方向指示部は、上記第４１の発明の方向指示部と同様である。また、動き検出手段は、例えば加速度センサまたはジャイロセンサであり、動作制御手段は、ハウジングが所定方向と直交する所定軸（典型的には、ハウジングの所定軸または水平軸）まわりに回転したことに応じて、オブジェクトに所定の動作をさせる。「所定の動作」とは典型的には、プログラムで予め動きデータ（モーションデータ）を設定しておき、当該モーションデータを参照して、オブジェクトに予め定める動作をさせるものである。
【００７５】
第４７の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを所定方向に移動させる。動作制御手段は、ハウジングが所定方向の軸を中心に回転したことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００７６】
第４８の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向および当該所定方向に直交する方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを第１方向に移動させ、かつ、操作部を直交する方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを第１方向と直交する第２方向に移動させる。動作制御手段は、ハウジングが所定方向と直交する軸を中心に回転したことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作としての第１動作をさせ、ハウジングが所定方向の軸を中心に回転したことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作としての当該第１動作と異なる第２動作をさせる。
【００７７】
上記第１動作と第２動作とは、異なる種類の動作である。典型的には、プログラムで予め動きデータ（モーションデータ）として、第１動作のモーションデータと、第２動作のモーションデータとを設定しておく。そして、動作制御手段は、ハウジングが上記所定方向に動いたことに応じて、第１動作のモーションデータを参照して、オブジェクトに第１動作をさせ、ハウジングが上記直交する方向に動いたことに応じて、第２動作のモーションデータを参照して、オブジェクトに第２動作をさせる。例えば、第１動作として、ある種類のフェイント動作（例えば、またぎフェイント）をさせ、第２動作としてそれとは異なる別の種類のフェイント動作（例えば、左右に体をゆらすフェイント）をさせてもよい。
【００７８】
第４９の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを当該オブジェクトの前方向に移動させ、かつ、当該押す入力の大きさに応じてオブジェクトの移動量を変更する。動作制御手段は、ハウジングが所定方向の軸を中心に回転したことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００７９】
第５０の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを所定方向に移動させる。動作制御手段は、ハウジングが所定方向と直交する軸を中心に回転した後、当該軸を中心に逆回転したことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００８０】
なお、動作制御手段は、ハウジングが双方向へ反復して回転することに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせるようにしてもよい。また、その反復回数に応じて、動作の種類を変更してもよい。
【００８１】
第５１の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを当該オブジェクトの前方向に移動させ、かつ、当該押す入力の大きさに応じてオブジェクトの移動量を変更する。動作制御手段は、ハウジングが所定方向の軸を中心に回転したことに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００８２】
なお、移動制御手段は、例えば、スティックの傾倒量、操作部のスライド量、キーの押す量または押す力に応じてオブジェクトの移動量を決定する（傾倒量等が大きいほど、移動量が大きいようにする）。そして、動作制御手段は、所定方向の軸を中心とした回転を判定するので、方向指示部でオブジェクトの前方向への移動を調整しつつ、ハウジングを所定方向の軸を中心とした方向に回転することによりオブジェクトに動作をさせることができる。
【００８３】
第５２の発明は、上記第３５の発明において、方向指示部は、操作部をハウジングの所定方向に押す入力が可能なものである。移動制御手段は、操作部を所定方向に押す入力がされたときに、仮想ゲーム世界においてオブジェクトを当該オブジェクトの前方向に移動させ、かつ、当該押す入力の大きさに応じてオブジェクトの移動量を変更する。動作制御手段は、ハウジングが所定方向と直交する軸を中心として双方向へ反復して回転することに応じて、仮想ゲーム世界におけるオブジェクトに所定の動作をさせる。
【００８４】
第５３の発明は、上記第５２の発明において、動作制御手段は、反復の回数に応じて、仮想ゲーム世界におけるオブジェクトに異なる動作をさせる。
【００８５】
第５４の発明は、上記第４１の発明において、動作制御手段は、ハウジングの動きの速度に応じて、仮想ゲーム世界におけるオブジェクトに異なる動作をさせる。
【発明の効果】
【００８６】
上記第１の発明によれば、ゲームコントローラの第１ハウジングをプレイヤが片手で把持して操作可能であるため、入力装置が小型であり扱いやすい。また、プレイヤは、例えばプレイヤキャラクタ等の第１オブジェクトに対して、その移動方向制御と姿勢制御とを、片手で効率的かつ直感的に入力することができる。
【００８７】
上記第２の発明によれば、プレイヤが第１ハウジングを片手で包み込むように把持することができ、プレイヤの一方の手自体を自由に動かしてプレイすることができる。
【００８８】
上記第３の発明によれば、プレイヤが第１ハウジングを片手で包み込むように把持することができ、プレイヤの一方の手自体を自由に動かしながら、従来のコントローラと同じように親指による入力を行うことができる。
【００８９】
上記第４の発明によれば、プレイヤは、ゲームコントローラ本体を動かすことによって、オブジェクトを所定方向へ傾けることができる。
【００９０】
上記第６の発明によれば、プレイヤは、ゲームコントローラ本体を動かすことによって、オブジェクトを２方向へ傾けることができる。
【００９１】
上記第８の発明によれば、プレイヤは、ゲームコントローラ本体を動かすことによって、仮想３次元空間におけるオブジェクトの姿勢を変化させることができる。
【００９２】
上記第１０の発明によれば、プレイヤは、ゲームコントローラ本体を動かすことによって、仮想３次元空間におけるオブジェクトの姿勢を変化させることができる。また、ゲームコントローラ本体に対する３軸加速度成分を、それぞれ仮想３次元空間における姿勢を表す姿勢ベクトルの各成分に割り当てることによって、処理負担が軽減される。
【００９３】
上記第１２の発明によれば、プレイヤは、ゲームコントローラ本体を動かすことによって、オブジェクトの移動方向を基準として傾けることができる。
【００９４】
上記第１４の発明によれば、プレイヤは、ゲームコントローラ本体を前後方向に傾けることによって、オブジェクトを前後方向へ傾けることができる。
【００９５】
上記第１５の発明によれば、プレイヤは、方向入力操作を行うスティックを傾倒する前後方向にゲームコントローラ本体を傾けることによって、オブジェクトを前後方向へ傾けることができる。
【００９６】
上記第１６の発明によれば、プレイヤは、オブジェクトが向く方向を変化させながら、ゲームコントローラ本体を傾けることによって、そのオブジェクトが向いた方向を基準とした前後方向にオブジェクトを傾けることができる。
【００９７】
上記第１７および第１８の発明によれば、プレイヤが左右の手にそれぞれ第１ハウジングと第２ハウジングを把持することができ、プレイヤの左右の手で全く異なる操作をすることが可能になるので、従来にない新たな操作を提供することができる。例えば、プレイヤの一方の手で第１オブジェクトを操作し、他方の手で第２オブジェクトを操作するようなゲームが可能となる。
【００９８】
上記第１９の発明によれば、プレイヤが一方の手で第１オブジェクトを操作しながら、他方の手で複数のオブジェクトを操作することができる。
【００９９】
上記第２０の発明によれば、複数のハウジング内で生成される各データをまとめて１つの送信部からゲーム装置へ送信することができる。
【０１００】
上記第３３の発明によれば、ゲームコントローラの第１ハウジングおよび第２ハウジングをプレイヤが両手でそれぞれ把持して操作可能であるため、入力装置が小型であり扱いやすい。また、プレイヤは、例えばプレイヤキャラクタ等のオブジェクトに対して、その移動方向制御と姿勢制御とを、両手で効率的かつ直感的に入力することができる。
【０１０１】
上記第３５の発明によれば、ゲームコントローラのハウジングをプレイヤが片手で把持して操作可能であるため、入力装置が小型であり扱いやすい。また、プレイヤは、例えば指先による方向指示部の動きによりプレイヤキャラクタ等のオブジェクトを移動させるとともに、手全体による動きによってオブジェクトを動作させることができる。
【０１０２】
上記第４１の発明によれば、プレイヤが操作する指の動き方向と手の動き方向とを一致させることにより、両方の操作が容易となる。
【０１０３】
上記第４２の発明によれば、プレイヤが指の動き方向と手の動き方向とを独立させることにより、両方の操作が互いに影響しあうことがない。
【０１０４】
また、本発明のゲームプログラムによれば、上述したゲームシステムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【０１０５】
図１を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置の一例の据置型のゲーム装置を含むゲームシステムについて説明する。なお、図１は据置型のゲーム装置３を含むゲームシステム１の外観図であり、図２はゲーム装置本体５のブロック図である。以下、当該ゲームシステム１について説明する。
【０１０６】
図１において、ゲームシステム１は、表示手段の一例の家庭用テレビジョン受像機（以下、モニタと記載する）２と、当該モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置本体５から出力された音声信号を音声出力するためのスピーカ２ａを備える。また、ゲーム装置３は、本願発明のゲームプログラムを記録した光ディスク４と、当該光ディスク４のゲームプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体５に与えるためのコントローラ７とを備えている。
【０１０７】
また、ゲーム装置本体５は、通信ユニット６を内蔵する。通信ユニット６は、コントローラ７から無線送信されるデータを受信し、ゲーム装置本体５からコントローラ７へデータを送信して、コントローラ７とゲーム装置本体５とを無線通信によって接続する。さらに、ゲーム装置本体５には、当該ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。ゲーム装置本体５の前部主面には、当該ゲーム装置本体５の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、光ディスク４を脱着する投入口、およびゲーム装置本体５の投入口から光ディスク４を取り出すイジェクトスイッチ等が設けられている。
【０１０８】
また、ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ３８が搭載される。ゲーム装置本体５は、光ディスク４に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ２に表示する。さらに、ゲーム装置本体５は、フラッシュメモリ３８に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置本体５のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【０１０９】
コントローラ７は、通信ユニット６を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて操作情報等の送信データを無線送信する。コントローラ７は、２つのコントロールユニット（コアユニット７０およびサブユニット７６）が屈曲自在な接続ケーブル７９を介して互いに接続されて構成されており、主にモニタ２に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コアユニット７０およびサブユニット７６は、それぞれ複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コアユニット７０は、当該コアユニット７０から見た画像を撮像するための撮像情報演算部７４を備えている。また、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール８Ｌおよび８Ｒ（以下、マーカ８Ｌおよび８Ｒと記載する）が設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって赤外光を出力する。なお、本実施例では、コアユニット７０とサブユニット７６を屈曲自在なケーブルで接続したが、サブユニット７６に無線ユニットを搭載することで、接続ケーブル７９をなくすこともできる。例えば、無線ユニットとしてＢｌｕｅｔｏｏｔｈ（登録商標）ユニットをサブユニット７６に搭載することで、サブユニット７６からコアユニット７０へ操作データを送信することが可能になる。また、コントローラ７（例えば、コアユニット７０）は、ゲーム装置本体５の通信ユニット６から無線送信された送信データを通信部７５で受信して、当該送信データに応じた音や振動を発生させることもできる。
【０１１０】
図２において、ゲーム装置本体５は、各種プログラムを実行する例えばＣＰＵ（セントラルプロセッシングユニット）３０を備える。ＣＰＵ３０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ３３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ３０には、メモリコントローラ３１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３２、メインメモリ３３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）３５などが接続される。また、メモリコントローラ３１には、所定のバスを介して、通信ユニット６、ビデオＩ／Ｆ（インターフェース）３７、フラッシュメモリ３８、オーディオＩ／Ｆ３９、およびディスクＩ／Ｆ４１が接続され、それぞれのインターフェースにモニタ２、スピーカ２ａ、およびディスクドライブ４０が接続されている。
【０１１１】
ＧＰＵ３２は、ＣＰＵ３０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ３２は、図示しない画像処理専用のメモリやメインメモリ３３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ３２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ３１およびビデオＩ／Ｆ３７を介してモニタ２に出力する。
【０１１２】
メインメモリ３３は、ＣＰＵ３０で使用される記憶領域であって、ＣＰＵ３０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ３３は、ＣＰＵ３０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ３３に記憶されたゲームプログラムや各種データ等が、ＣＰＵ３０によって実行される。
【０１１３】
ＤＳＰ３４は、ゲームプログラム実行時にＣＰＵ３０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ３５が接続される。ＡＲＡＭ３５は、ＤＳＰ３４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ３４は、ＡＲＡＭ３５に記憶されたサウンドデータを読み出し、メモリコントローラ３１およびオーディオＩ／Ｆ３９を介してモニタ２に備えるスピーカ２ａに出力させる。
【０１１４】
メモリコントローラ３１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。上述したように通信ユニット６は、コントローラ７からの送信データを受信し、当該送信データをＣＰＵ３０へ出力する。また、通信ユニット６は、ＣＰＵ３０から出力された送信データをコントローラ７の通信部７５へ送信する。ビデオＩ／Ｆ３７には、モニタ２が接続される。オーディオＩ／Ｆ３９にはモニタ２に内蔵されるスピーカ２ａが接続され、ＤＳＰ３４がＡＲＡＭ３５から読み出したサウンドデータやディスクドライブ４０から直接出力されるサウンドデータをスピーカ２ａから出力可能に接続される。ディスクＩ／Ｆ４１には、ディスクドライブ４０が接続される。ディスクドライブ４０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置本体５のバスやオーディオＩ／Ｆ３９に出力する。
【０１１５】
次に、図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の外観構成を示す斜視図である。図４は、図３のコントローラ７の接続ケーブル７９をコアユニット７０から脱着する状態を示す斜視図である。
【０１１６】
図３において、コントローラ７は、コアユニット７０とサブユニット７６とが接続ケーブル７９で接続されて構成されている。コアユニット７０は、ハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。一方、サブユニット７６は、ハウジング７７を有しており、当該ハウジング７７に複数の操作部７８が設けられている。そして、コアユニット７０とサブユニット７６とは、接続ケーブル７９によって接続されている。
【０１１７】
図４において、接続ケーブル７９の一方端にはコアユニット７０のコネクタ７３に着脱自在なコネクタ７９１が設けられており、接続ケーブル７９の他方端は固定的にサブユニット７６と接続されている。そして、接続ケーブル７９のコネクタ７９１は、コアユニット７０の後面に設けられたコネクタ７３と嵌合し、コアユニット７０とサブユニット７６とが当該接続ケーブル７９を介して接続される。
【０１１８】
次に、図５および図６を参照して、コアユニット７０について説明する。なお、図５は、コアユニット７０の上面後方から見た斜視図である。図６は、コアユニット７０を下面前方から見た斜視図である。
【０１１９】
図５および図６において、コアユニット７０は、例えばプラスチック成型によって形成されたハウジング７１を有している。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【０１２０】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、矢印で示す４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【０１２１】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に４方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー７２ａの代わりに設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。また、少なくとも４つの方向（前後左右）をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。
【０１２２】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ｂ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、詳細は後述する。なお、図５に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【０１２３】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置５本体の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【０１２４】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（コントローラ識別番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コアユニット７０から通信ユニット６へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【０１２５】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図７のスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【０１２６】
一方、ハウジング７１下面には、凹部が形成されている。後述で明らかとなるが、ハウジング７１下面の凹部は、プレイヤがコアユニット７０を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部であり、サッカーゲームにおけるシュートのトリガスイッチや選手の切り替え操作等に用いられる。
【０１２７】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コアユニット７０が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコアユニット７０の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えば３２ピンのエッジコネクタであり、接続ケーブル７９のコネクタ７９１と嵌合して接続するために利用される。
【０１２８】
ここで、以下の説明を具体的にするために、コアユニット７０に対して設定する座標系について定義する。図５および図６に示すように、互いに直交するＸＹＺ軸をコアユニット７０に対して定義する。具体的には、コアユニット７０の前後方向となるハウジング７１の長手方向をＺ軸とし、コアユニット７０の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コアユニット７０の上下方向をＹ軸とし、ハウジング７１の上面（操作ボタン７２ａが設けられた面）方向をＹ軸正方向とする。さらに、コアユニット７０の左右方向をＸ軸とし、ハウジング７１の右側面（図６では表されずに図５で表されている側面）方向をＸ軸正方向とする。
【０１２９】
次に、図７および図８を参照して、コアユニット７０の内部構造について説明する。なお、図７は、コアユニット７０の上筐体（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図８は、コアユニット７０の下筐体（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図８に示す基板７００は、図７に示す基板７００の裏面から見た斜視図となっている。
【０１３０】
図７において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図８、図１１参照）に接続される。また、図示しない無線モジュール７５３（図１１参照）およびアンテナ７５４によって、コアユニット７０がワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。加速度センサ７０１が、基板７００の中央部ではなく周辺部に設けられていることにより、コアユニット７０の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコアユニット７０の回転を良好な感度で判定することができる。
【０１３１】
一方、図８において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コアユニット７０の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置本体５から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。このバイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４が作動することによってコアユニット７０に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【０１３２】
図９および図１０を参照して、サブユニット７６について説明する。なお、図９は、サブユニット７６の一例を示す斜視図である。図１０は、図９のサブユニット７６の上筐体（ハウジング７７の一部）を外した状態を示す斜視図である。
【０１３３】
図９において、サブユニット７６は、例えばプラスチック成型によって形成されたハウジング７７を有している。ハウジング７７は、その前後方向を長手方向とし、サブユニット７６において最太部となる頭部を前方に形成した流線型の立体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。さらに言えば、サブユニット７６のハウジング７７は、プレイヤの片手の手のひらおよび親指以外の指により包み込むように把持することが可能であり、当該把持をしたときにプレイヤの親指がスティック７８ａに位置するようにその形状が設計される。
【０１３４】
ハウジング７７上面の上記最太部近傍に、スティック７８ａが設けられる。スティック７８ａは、ハウジング７７上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向（さらには、付加的に傾倒量）を検出し、それに応じて操作信号を出力する操作部である。例えば、プレイヤがスティック先端を３６０°任意の方向に傾倒することによって任意の方向や位置を指定することができ、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。また、プレイヤは、スティック７８ａの傾倒量によって、プレイヤキャラクタやカーソル等の移動量を指示することができる。
【０１３５】
なお、スティック７８ａは、プレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、上述した十字キーやリング状に４方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記スティック７８ａの代わりに設けてもかまわない。また、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記スティック７８ａの代わりに設けてもかまわない。また、タッチパッドを、上記スティック７８ａの代わりに設けてもかまわない。また、少なくとも４つの方向（前後左右）をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記スティック７８ａの代わりに設けてもかまわない。
【０１３６】
サブユニット７６のハウジング７７の前面に、複数の操作ボタン７８ｄおよび７８ｅが設けられる。操作ボタン７８ｄおよび７８ｅは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７８ｄおよび７８ｅに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７８ｄおよび７８ｅには、ＸボタンおよびＹボタン等としての機能が割り当てられる。これら操作ボタン７８ｄおよび７８ｅは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図９に示した配置例では、操作ボタン７８ｄおよび７８ｅは、ハウジング７７前面の上下方向に沿って並設されている。
【０１３７】
図１０において、ハウジング７７の内部には基板が固設されており、当該基板の上主面上にスティック７８ａおよび加速度センサ７６１等が設けられる。そして、これらは、基板等に形成された配線（図示せず）を介して接続ケーブル７９と接続されている。加速度センサ７６１は、ハウジング７７の長手方向の中央部かつ短手方向の中央部に配置されるのが好ましい。また、プレイヤがハウジング７７を片手の手のひらおよび親指以外の指により包み込むように把持したときに、当該手のひらと指によって囲まれる空間（好ましくは、当該空間のほぼ中心）に配置されるのが好ましい。
【０１３８】
ここで、以下の説明を具体的にするために、サブユニット７６に対して設定する座標系について定義する。図９に示すように、互いに直交するＸＹＺ軸をサブユニット７６に対して定義する。具体的には、サブユニット７６の前後方向となるハウジング７７の長手方向をＺ軸とし、サブユニット７６の前面（操作ボタン７８ｄおよび７８ｅが設けられている面）方向をＺ軸正方向とする。また、サブユニット７６の上下方向をＹ軸とし、ハウジング７７の上面方向（スティック７８ａが突出する方向）をＹ軸正方向とする。さらに、サブユニット７６の左右方向をＸ軸とし、ハウジング７７の右側面（図９では表されない側面）方向をＸ軸正方向とする。
【０１３９】
次に、図１１を参照して、コントローラ７の内部構成について説明する。なお、図１１は、コントローラ７の構成を示すブロック図である。
【０１４０】
図１１において、コアユニット７０は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。また、サブユニット７６は、上述した操作部７８および加速度センサ７６１を備えており、接続ケーブル７９とコネクタ７９１および７３とを介して、マイコン７５１と接続されている。
【０１４１】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コアユニット７０の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コアユニット７０のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。
【０１４２】
コアユニット７０は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７０１を備えていることが好ましい。また、サブユニット７６は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７６１を備えていることが好ましい。この３軸の加速度センサ７０１および７６１は、それぞれ３方向、すなわち、上下方向、左右方向、および前後方向（上述したＸＹＺ軸方向）で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向（または他の対になった方向）のそれぞれに沿った直線加速度のみを検知する２軸の加速度検出手段や何れか１軸に沿った直線加速度のみを検知する１軸の加速度検出手段を使用してもよい。例えば、この１軸〜３軸の加速度センサ７０１および７６１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１および７６１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であることが好ましい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて１軸〜３軸の加速度センサ７０１および７６１が提供されてもよい。
【０１４３】
当業者には公知であるように、加速度センサ７０１および７６１に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１および７６１からの直接の出力は、その１軸〜３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１および７６１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【０１４４】
しかしながら、加速度センサ７０１および７６１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ３０）、コントローラ７またはサブユニット７６のプロセッサ（例えばマイコン７５１）等のコンピュータが処理を行うことによって、コアユニット７０およびサブユニット７６に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【０１４５】
例えば、加速度センサ７０１および７６１を搭載するコアユニット７０およびサブユニット７６が静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサ７０１および７６１によって検出される加速度が重力加速度のみであるとして処理する場合）、コアユニット７０およびサブユニット７６が現実に静的な状態であれば、検出された加速度に基づいてコアユニット７０およびサブユニット７６の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ７０１および７６１の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に１Ｇ（重力加速度）が作用しているか否かだけでコアユニット７０およびサブユニット７６が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コアユニット７０およびサブユニット７６が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ７０１および７６１の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコアユニット７０およびサブユニット７６がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ７０１および７６１からの出力に基づいて、プロセッサがコアユニット７０およびサブユニット７６の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ７０１および７６１からの出力に基づいて、おおよそのコアユニット７０およびサブユニット７６の傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１および７６１をプロセッサと組み合わせて用いることによって、コアユニット７０およびサブユニット７６の傾き、姿勢、または位置を判定することができる。
【０１４６】
一方、加速度センサ７０１および７６１が動的な状態であることを前提とする場合には、当該加速度センサ７０１および７６１が重力加速度成分に加えて加速度センサ７０１および７６１の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コアユニット７０およびサブユニット７６の動き方向等を知ることができる。具体的には、加速度センサ７０１および７６１を備えるコアユニット７０およびサブユニット７６がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ７０１および７６１によって生成される加速度信号を処理することによって、コアユニット７０およびサブユニット７６の様々な動きおよび／または位置を算出することができる。なお、加速度センサ７０１および７６１が動的な状態であることを前提とする場合であっても、加速度センサ７０１および７６１の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコアユニット７０およびサブユニット７６の傾きを知ることが可能である。
【０１４７】
他の実施例では、加速度センサ７０１および７６１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置をそれぞれ備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ７０１および７６１が静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角に変換するものであってもよい。加速度センサ７０１および７６１でそれぞれ検知された加速度を示すデータは、通信部７５に出力される。
【０１４８】
ここで、コアユニット７０やサブユニット７６を把持してプレイヤが振った場合、振り始めは加速して振り終わりは減速となる。したがって、コアユニット７０やサブユニット７６には、振り始めで振っている方向と同じ方向の加速度が生じた後、徐々に加速度の大きさが減少して、振り終わりで振っている方向とは逆の方向に加速度が生じる。一方、一般的に、加速度センサ７０１および７６１から出力される加速度ベクトル（あるいは、加速度の正負）は、コアユニット７０やサブユニット７６の加速方向とは真逆のベクトルとなる。
【０１４９】
他の実施形態の例では、加速度センサ７０１および７６１の代わりに、少なくとも一方を回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるＭＥＭＳジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ７０１および７６１と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転（または角速度）を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【０１５０】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、２つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロスコープとの基本的な差異と同様にジャイロスコープの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【０１５１】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置本体５からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置本体５から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置本体５から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。また、メモリ７５２または図示しない不揮発記憶手段には、コアユニット７０ごとに固有に設定される識別番号データが記憶される。
【０１５２】
コアユニット７０に設けられた操作部７２からの操作信号（コアキーデータ）、加速度センサ７０１からの加速度信号（コア加速度データ）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。また、接続ケーブル７９を介して、サブユニット７６に設けられた操作部７８からの操作信号（サブキーデータ）および加速度センサ７６１からの加速度信号（サブ加速度データ）は、マイコン７５１に出力される。マイコン７５１は、入力した各データ（コアキーデータ、サブキーデータ、コア加速度データ、サブ加速度データ、処理結果データ）を通信ユニット６へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から通信ユニット６への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期でデータを収集して送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ；登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、通信ユニット６への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として、コントローラ７に固有のコントローラ識別番号を付与して無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥース（登録商標）の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その微弱電波信号をアンテナ７５４から放射する。つまり、コアユニット７０に設けられた操作部７２からのコアキーデータ、サブユニット７６に設けられた操作部７８からのサブキーデータ、コアユニット７０に設けられた加速度センサ７０１からのコア加速度データ、サブユニット７６に設けられた加速度センサ７６１からのサブ加速度データ、撮像情報演算部７４からの処理結果データ、およびコントローラ識別番号は、無線モジュール７５３で微弱電波信号に変調されてコアユニット７０から放射される。そして、ゲーム装置３の通信ユニット６でその微弱電波信号を受信し、ゲーム装置３で当該微弱電波信号を復調や復号することによって、一連の操作情報（コアキーデータ、サブキーデータ、コア加速度データ、サブ加速度データ、および処理結果データ）およびコントローラ識別番号を取得することができる。そして、ゲーム装置３のＣＰＵ３０は、取得した操作情報およびコントローラ識別番号とゲームプログラムとに基づいて、ゲーム処理を行う。
【０１５３】
図１２に示すように、ゲームシステム１でコントローラ７を用いてゲームをプレイするためには、プレイヤは、一方の手（例えば右手）でコアユニット７０を把持し（図１３および図１４参照）、他方の手（例えば左手）でサブユニット７６を把持する（図１６参照）。そして、プレイヤは、コアユニット７０の前面（撮像情報演算部７４が撮像する光の入射口側）がモニタ２に向くようにコアユニット７０を把持する。一方、モニタ２の表示画面近傍には、２つのマーカ８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって赤外光を出力する。
【０１５４】
プレイヤがその前面がモニタ２に向くようにコアユニット７０を把持することによって、撮像情報演算部７４には２つのマーカ８Ｌおよび８Ｒが出力した赤外光が入射する。そして、赤外線フィルタ７４１およびレンズ７４２を介して、入射した赤外光を撮像素子７４３が撮像し、当該撮像画像を画像処理回路７４４が処理する。ここで、撮像情報演算部７４では、マーカ８Ｌおよび８Ｒから出力される赤外線成分を検出することで、当該マーカ８Ｌおよび８Ｒの位置や面積情報を取得する。具体的には、撮像情報演算部７４は、撮像素子７４３が撮像した画像データを解析して、面積情報からマーカ８Ｌおよび８Ｒからの赤外光ではあり得ない画像を除外し、輝度が高い位置をマーカ８Ｌおよび８Ｒそれぞれの位置として判別する。そして、撮像情報演算部７４は、判別されたそれらの位置座標やそれらの重心座標等を取得し、上記処理結果データとして出力する。このような処理結果データをゲーム装置３へ送信することによって、ゲーム装置３では、上記位置座標や重心座標に基づいて、マーカ８Ｌおよび８Ｒに対する撮像情報演算部７４、すなわちコアユニット７０の動き、姿勢、位置等に関連のある操作信号を得ることができる。具体的には、コアユニット７０が動かされることによって、通信部７５から送信される画像内の高輝度点の位置が変化するため、高輝度点の位置の変化に対応させた方向入力や座標入力を行うことで、コアユニット７０の移動方向に沿った方向入力や座標入力を行うことができる。
【０１５５】
このように、コアユニット７０の撮像情報演算部７４によって固定的に設置されたマーカ（実施例では、２つのマーカ８Ｌおよび８Ｒからの赤外光）を撮像することによって、ゲーム装置３におけるゲーム処理において、コアユニット７０の動き、姿勢、位置等に関連した処理結果データを用いることが可能となり、ボタンを押下するような操作ボタンや操作キーとは異なったより直感的な操作入力となる。また、上述したように上記マーカは、モニタ２の表示画面近傍に設置されているため、マーカに対する位置をモニタ２の表示画面に対するコアユニット７０の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コアユニット７０の動き、姿勢、位置等による処理結果データは、モニタ２の表示画面に直接作用する操作入力として用いることができる。
【０１５６】
図１３および図１４を参照して、プレイヤがコアユニット７０を一方の手で把持した状態について説明する。なお、図１３は、プレイヤがコアユニット７０を右手で把持した状態をコアユニット７０の前面側から見た一例である。図１４は、プレイヤがコアユニット７０を右手で把持した状態をコアユニット７０の左側面側から見た一例である。
【０１５７】
図１３および図１４に示すように、コアユニット７０は、全体として大人や子供の片手で把持可能な大きさである。そして、プレイヤの親指をコアユニット７０の上面（例えば、十字キー７２ａ付近）に添え、プレイヤの人差し指をコアユニット７０下面の凹部（例えば、操作ボタン７２ｉ付近）に添えたとき、コアユニット７０の前面に設けられている撮像情報演算部７４の光入射口がプレイヤの前方方向に露出する。なお、このようなコアユニット７０に対する把持状態は、プレイヤの左手であっても同様に行えることは言うまでもない。
【０１５８】
ここで、図１５に示すように、マーカ８Ｌおよび８Ｒは、それぞれ視野角θ１を有している。また、撮像素子７４３は、視野角θ２を有している。例えば、マーカ８Ｌおよび８Ｒの視野角θ１は共に３４°（半値角）であり、撮像素子７４３の視野角θ２は４１°である。そして、撮像素子７４３の視野角θ２の中にマーカ８Ｌおよび８Ｒが共に存在し、マーカ８Ｌの視野角θ１の中でかつマーカ８Ｒの視野角θ１の中に撮像素子７４３が存在するとき、ゲーム装置本体５は、２つのマーカ８Ｌおよび８Ｒによる高輝度点に関する位置データを用いてコアユニット７０の位置を判定する。
【０１５９】
一方、撮像素子７４３の視野角θ２の中に１つのマーカ８Ｌまたは８Ｒだけが存在するとき、またはマーカ８Ｌの視野角θ１およびマーカ８Ｒの視野角θ１の何れか一方の中に撮像素子７４３が存在するとき、２つのマーカ８Ｌおよび８Ｒの何れか一方だけによる高輝度点に関する位置データを用いてコアユニット７０の位置を判定する。
【０１６０】
また、上述したようにコアユニット７０に設けられた加速度センサ７０１からの出力（コア加速度データ）を用いることによって、コアユニット７０の傾き、姿勢、または位置を決定することができる。つまり、プレイヤがコアユニット７０を把持した手を上下左右等に動かすことによって、コアユニット７０は、プレイヤの手の運動や向きに応じた操作入力手段として機能する。
【０１６１】
次に、図１６を参照して、プレイヤがサブユニット７６を一方の手で把持した状態について説明する。なお、図１６は、プレイヤがサブユニット７６を左手で把持した状態をサブユニット７６の右側面側から見た一例である。
【０１６２】
図１６に示すように、サブユニット７６は、全体として大人や子供の片手で把持可能な大きさである。例えば、プレイヤの親指をサブユニット７６の上面（例えば、スティック７８ａ付近）に添え、プレイヤの人差し指をサブユニット７６前面（例えば、操作ボタン７８ｄおよび７８ｅ付近）に添え、プレイヤの中指、薬指、および小指をサブユニット７６下面に添えるように、サブユニット７６を把持することが可能である。なお、このようなサブユニット７６に対する把持状態は、プレイヤの右手であっても同様に行えることは言うまでもない。このように、サブユニット７６は、プレイヤが片手で把持した状態でスティック７８ａや操作ボタン７８ｄおよび７８ｅ等の操作部７８を容易に操作することができる。このように、サブユニット７６の本体（ハウジング７７）は、サブユニット７６全体の側周をプレイヤが片手で握持可能な形状および大きさで形成される。
【０１６３】
また、上述したようにサブユニット７６に設けられた加速度センサ７６１からの出力（サブ加速度データ）を用いることによって、サブユニット７６の傾き、姿勢、または位置を決定することができる。つまり、プレイヤがサブユニット７６を把持した手を上下左右等に動かすことによって、サブユニット７６は、プレイヤの手の運動や向きに応じた操作入力手段として機能する。
【０１６４】
本発明を適用して実現するゲームの一例として、仮想ゲーム空間で行うサッカーゲームがある。以下、サッカーゲームを一例として、ゲームシステム１において行われるゲーム処理の詳細を説明する。なお、図１７は、ゲーム装置本体５のメインメモリ３３に記憶される主なデータを示す図である。
【０１６５】
図１７に示すように、メインメモリ３３には、操作情報Ｄａ、コントローラ識別番号データＤｂ、移動ベクトルデータＤｃ、姿勢ベクトルデータＤｄ、指示座標データＤｅ、仮想空間位置座標データＤｆ、指示対象選手データＤｇ、位置データＤｈ、および画像データＤｉ等が記憶される。なお、後述するように、各コントローラ７は、監督モードまたは一時監督モードのときに、当該コントローラ７の座標入力により特定の選手キャラクタの動作を制御することができるが、当該特定の選手キャラクタのことを指示対象選手と呼ぶ。なお、メインメモリ３３には、図１７に示す情報に含まれるデータの他、ゲームに登場するオブジェクト等に関するデータや仮想ゲーム空間に関するデータ等、ゲーム処理に必要なデータが記憶される。これらのデータは、光ディスク４に記憶されるゲームプログラムをＣＰＵ３０が実行することにより生成されるデータである。
【０１６６】
操作情報Ｄａは、コントローラ７から送信データとして送信されてくる一連の操作情報であり、最新の操作情報に更新される。操作情報Ｄａには、上述の処理結果データに相当する第１座標データＤａ１および第２座標データＤａ２が含まれる。第１座標データＤａ１は、撮像素子７４３が撮像した撮像画像に対して、２つのマーカ８Ｌおよび８Ｒのうちの一方の画像の位置（撮像画像内における位置）を表す座標のデータである。第２座標データＤａ２は、他方のマーカの画像の位置（撮像画像内における位置）を表す座標のデータである。例えば、マーカの画像の位置は、撮像画像におけるＸＹ座標系によって表される。
【０１６７】
また、操作情報Ｄａには、撮像画像から得られる処理結果データの一例の座標データ（第１座標データＤａ１および第２座標データＤａ２）の他、キーデータＤａ３および加速度データＤａ４等が含まれる。具体的には、キーデータＤａ３は、操作部７２から得られるコアキーデータおよび操作部７８から得られるサブキーデータである。また、加速度データＤａ４は、加速度センサ７０１から得られるコア加速度データおよび加速度センサ７６１から得られるサブ加速度データである。なお、ゲーム装置３に備える通信ユニット６は、コントローラ７から所定間隔例えば５ｍｓごとに送信される操作情報Ｄａを受信し、通信ユニット６に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である例えば１フレーム毎（１／６０秒）に読み出され、その最新の情報がメインメモリ３３に記憶される。また、操作情報Ｄａには、最新の操作情報のみならず、必要に応じて、過去の所定時間分の操作情報が履歴として格納される。また、複数のコントローラ７によって、ゲーム装置本体５が操作される場合、各コントローラ７からそれぞれ送信された操作情報がコントローラ識別番号毎に対応付けられて、操作情報Ｄａに格納される。
【０１６８】
コントローラ識別番号データＤｂは、後述する操作チームおよび操作モード別に操作情報を採用するコントローラ識別番号が記述される。例えば、コントローラ識別番号データＤｂは、チームＡの選手モード用コントローラ識別番号Ｄｂ１、チームＡの監督モード用コントローラ識別番号Ｄｂ２、チームＢの選手モード用コントローラ識別番号Ｄｂ３、およびチームＢの監督モード用コントローラ識別番号Ｄｂ４等が記述される。なお、コントローラ識別番号データＤｂは、コアユニット７０内に記憶される識別番号データ（前述）が当該コアユニット７０から送信されて記憶されたものである。また、コントローラ識別番号Ｄｂは、常にすべてが設定されている必要はなく、プレイヤの希望がなかったものについては未設定を示す情報が設定される。また、未設定を示す情報が設定されたチーム・モードについては、コンピュータ制御するようにしてもかまわない。また、３以上のチームが存在するようなゲームであれば、そのチーム数に応じたコントローラ識別番号データＤｂが設定される。また、チームの概念が無いゲームであれば、選手モード用コントローラが少なくとも１つ設定されればよい。なお、１つのコントローラの識別番号データを、複数のコントローラ識別番号データＤｂに設定してもよい。この場合には、例えば、１つのコントローラの操作により、選手モードの処理と監督モードの処理とを実行できる。
【０１６９】
移動ベクトルデータＤｃは、仮想ゲーム空間に登場する各選手キャラクタやボールオブジェクトがそれぞれ仮想ゲーム空間内を移動する方向や速度を示す移動ベクトルデータである。例えば、移動ベクトルデータＤｃは、プレイヤキャラクタＰＣの移動ベクトルデータＤｃ１、ノンプレイヤキャラクタＮＰＣの移動ベクトルデータＤｃ２、指示対象選手の移動ベクトルデータＤｃ３、およびボールオブジェクトＢの移動ベクトルデータＤｃ４等が記述される。なお、本実施例では、仮想ゲーム空間は３次元空間である。しかしながら、本実施例には２次元空間のゲームにも適用可能な要素が含まれることは、当業者には容易に把握可能である。
【０１７０】
姿勢ベクトルデータＤｄは、仮想ゲーム空間におけるプレイヤキャラクタＰＣの上体の姿勢を示すデータである。例えば、姿勢ベクトルデータＤｄは、プレイヤキャラクタ座標系において、プレイヤキャラクタＰＣの腰から頭に向かうベクトルデータ（姿勢ベクトルデータＶｃ）が記述される。この姿勢ベクトルデータＶｃは、３次元ベクトルである。
【０１７１】
指示座標データＤｅは、第１座標データＤａ１および第２座標データＤａ２に基づいて得られるモニタ２の画面座標系に基づいた指示座標を示すデータである。例えば、指示座標は、第１座標データＤａ１から第２座標データＤａ２への方向を示す方向データ（例えば、第１座標データＤａ１の位置を始点とし第２座標データＤａ２の位置を終点とするベクトルデータ）や第１座標データＤａ１と第２座標データＤａ２との中点を示す中点座標データに基づいて算出される。ここで、２つのマーカ（マーカ８Ｌおよび８Ｒ）の画像を１つの対象画像としてみた場合、中点座標データは、対象画像の位置を示すことになる。仮想空間位置座標データＤｆは、上記指示座標に対応する仮想ゲーム空間の仮想空間位置を示す座標データである。仮想空間位置座標データＤｆは、指示座標データＤｅ、仮想カメラのパラメータ、および仮想空間の構成データ（地形データやオブジェクト位置データ）に基づいて算出される。なお、複数のコントローラ７によって、ゲーム装置本体５が操作される場合、各コントローラ７からそれぞれ送信された第１座標データＤａ１および第２座標データＤａ２に基づいて算出された指示座標および仮想空間位置がそれぞれコントローラ識別番号毎に対応付けられて、指示座標データＤｅおよび仮想空間位置座標データＤｆに格納される。
【０１７２】
指示対象選手データＤｇは、各コントローラ７の指示対象選手を示すデータである。例えば、指示対象選手データＤｇは、チームＡの選手モード用コントローラ７の指示対象選手を示すデータＤｇ１、チームＡの監督モード用コントローラ７の指示対象選手を示すデータＤｇ２、チームＢの選手モード用コントローラ７の指示対象選手を示すデータＤｇ３、およびチームＢの監督モード用コントローラ７の指示対象選手を示すデータＤｇ４等が記述される。
【０１７３】
位置データＤｈは、仮想ゲーム空間に登場するキャラクタやオブジェクトがそれぞれ配置される位置を示す仮想ゲーム空間における座標データである。画像データＤｉは、仮想ゲーム空間に登場するキャラクタやオブジェクトや背景を生成するための画像データである。
【０１７４】
次に、図１８〜図２９を参照して、ゲーム装置本体５において行われるゲーム処理の詳細を説明する。なお、図１８は、ゲーム装置本体５において実行されるゲーム処理の流れを示すフローチャートである。図１９は、図１８におけるステップ１５のサブユニット移動処理の詳細な動作を示すサブルーチンである。図２０は、図１８におけるステップ１６のパス処理の詳細な動作を示すサブルーチンである。図２１は、図１８におけるステップ１７の第１シュート処理の詳細な動作を示すサブルーチンである。図２２は、図１８におけるステップ１８の第２シュート処理の詳細な動作を示すサブルーチンである。図２３は、図１８におけるステップ１９の一時監督モード処理の詳細な動作を示すサブルーチンである。図２４は、図１８におけるステップ２０の監督モード処理の詳細な動作を示すサブルーチンである。図２５は、モニタ２に表示されるゲーム画像の一例である。図２６は、プレイヤキャラクタＰＣに設定される姿勢ベクトルＶｃを説明するための図である。図２７は、パスの目標位置ＴＰと領域ＡおよびＢを説明するための図である。図２８は、ボールオブジェクトＢが移動する軌道の一例を示す図である。図２９は、ノンプレイヤキャラクタＮＰＣに設定される移動ベクトルＶｍｎｐｃの一例を示す図である。なお、図１８〜図２４に示すフローチャートにおいては、ゲーム処理のうち、仮想ゲーム空間において、サッカーゲームが実行される処理について主に説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図１８〜図２４では、ＣＰＵ３０が実行する各ステップを「Ｓ」と略称する。なお、図２５に示される仮想ゲーム空間の座標軸は、左右方向（水平方向でありかつタッチラインが伸びる方向）がＸ方向であり、上下方向（垂直方向）がＹ方向であり、奥行き方向（水平方向でありかつゴールラインが伸びる方向）がＺ方向として説明する。
【０１７５】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ３０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ３３等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリ３３に読み込まれ、ＣＰＵ３０によって当該ゲームプログラムの実行が開始される。図１８〜図２４に示すフローチャートは、以上の処理が完了した後に当該ゲームプログラムをＣＰＵ３０が実行することにより行われるゲーム処理を示すフローチャートである。
【０１７６】
図１８において、ＣＰＵ３０は、ゲーム処理の初期設定処理を行い（ステップ１０）、処理を次のステップに進める。例えば、当該サッカーゲームは、選手キャラクタがチームＡとチームＢとに別れてゲームが進行し、プレイヤが何れか一方のチーム（チームＸとする）の選手キャラクタを操作することが可能となっている。そして、プレイヤは、チームＸの選手キャラクタを直接的に操作する選手モードと、チームＸの選手キャラクタを総合的に統率する監督モードとによって、操作モードを選択することが可能である。なお、選手モードと監督モードとの両方を設けることは必須ではなく、選手モードのみでも良いし、監督モードのみでもよい。したがって、上記ステップ１０において、ＣＰＵ３０は、各チームおよび各モードで操作するコントローラ７をそれぞれ区別して管理するために、チームＡの選手モード用コントローラ識別番号、チームＡの監督モード用コントローラ識別番号、チームＢの選手モード用コントローラ識別番号、およびチームＢの監督モード用コントローラ識別番号を設定して、コントローラ識別番号データＤｂに記述する。
【０１７７】
具体的には、使用するコントローラ７（複数の場合はそれぞれ）の操作により、モニタ２上に表示されるメニュ画面においてチーム（ＡまたはＢ）およびモード（選手または監督）を選択し、当該選択をしたコントローラ７内に記憶される識別番号データが、対応するコントローラ識別番号Ｄｂに設定される。例えば、あるコントローラ７の操作により、チームＡを選択し、選手モードを選択した場合、そのコントローラ７の識別番号が、チームＡの選手モード用コントローラ識別番号Ｄｂ１に設定される。また、上記ステップ１０においては、ＣＰＵ３０は、サッカーゲームを開始する前の初期設定（ゲームフィールドの設定、各選手キャラクタ、ボールオブジェクトの初期配置等）を行って、メインメモリ３３に記述された各データを更新する。
【０１７８】
次に、ＣＰＵ３０は、ゲームを開始するか否かを判断する（ステップ１１）。ゲームを開始する条件としては、例えば、ゲーム開始となる条件が満たされたことや、プレイヤがゲームを開始する操作を行ったこと等がある。ＣＰＵ３０は、ゲームを開始しない場合に上記ステップ１１の処理を繰り返し、ゲームを開始する場合に次のステップ１２に処理を進める。
【０１７９】
ステップ１２〜ステップ２４の各処理は、上述したゲームの処理単位（例えば、１／６０秒）毎に繰り返される処理であり、チームＡおよびチームＢそれぞれ（チームＸ）について行われる処理である。以下の説明では、チームＡおよびチームＢそれぞれについて行う処理を、チームＸについて行う処理として記載する。
【０１８０】
ステップ１２において、ＣＰＵ３０は、コントローラ７（複数の場合はそれぞれ）から操作情報を受信して、各コントローラ識別番号別に操作情報Ｄａに格納する。次に、ＣＰＵ３０は、コントローラ識別番号データＤｂを参照して、チームＸについて選手モード用のコントローラ識別番号Ｄｂが設定されているか否かを判断する（ステップ１３）。そして、ＣＰＵ３０は、チームＸについて選手モード用のコントローラ識別番号Ｄｂが設定されている場合、次のステップ１４に処理を進める。一方、ＣＰＵ３０は、チームＸについて選手モード用のコントローラ識別番号Ｄｂが設定されていない場合、次のステップ２５に処理を進める。
【０１８１】
ステップ１４において、ＣＰＵ３０は、チームＸの各ノンプレイヤキャラクタＮＰＣの移動ベクトルＶｍｎｐｃを所定の自動移動アルゴリズムを用いて設定して、移動ベクトルデータＤｃに格納する。次に、ＣＰＵ３０は、サブユニット移動処理（ステップ１５）、パス処理（ステップ１６）、第１シュート処理（ステップ１７）、第２シュート処理（ステップ１８）、一時監督モード処理（ステップ１９）、および監督モード処理（ステップ２０）を経て、処理をステップ２１に進める。なお、ステップ１５〜ステップ２０で行う詳細な処理については、後述する。
【０１８２】
例えば、図２５に示すように、プレイヤがチームＡに所属する選手キャラクタＰＡ（白抜き図形で示す）を選手モードで操作し、チームＢに所属するコンピュータ制御の選手キャラクタＰＢ（塗りつぶし図形で示す）とサッカーゲームで対戦する場合を想定する。この場合、プレイヤは、選手キャラクタＰＡの何れか（図２５においては、選手キャラクタＰＡ１）をプレイヤキャラクタＰＣとして直接的に操作し、他の選手キャラクタＰＡがノンプレイヤキャラクタＮＰＣとなる。また、選手キャラクタＰＢは、全てノンプレイヤキャラクタＮＰＣとなる。そして、選手キャラクタの何れかがボールオブジェクトＢをキープしているチームが攻撃側のチームであり（図２５においては、プレイヤキャラクタＰＡ１がボールオブジェクトＢをキープしているのでチームＡが攻撃側のチーム）と、他方のチームが守備側のチームである（図２５においては、チームＢ）。ここで、ＣＰＵ３０は、上記ステップ１４において、チームＸが守備側の場合（チームＸがチームＢの場合）、ボールオブジェクトＢをキープしている選手キャラクタ（プレイヤキャラクタＰＡ１）の位置データを基準とする所定範囲に配置されたチームＸ（チームＢ）の選手キャラクタ（図２５においては、選手キャラクタＰＢ１）の移動ベクトルを、ボールオブジェクトＢをキープしている選手キャラクタの上体の姿勢ベクトル（後述）に応じて設定する。具体的には、本実施例では、ＣＰＵ３０は、上記所定範囲に配置された選手キャラクタの移動ベクトルを、「ボールオブジェクトＢをキープしている選手キャラクタ（ＰＡ１）の姿勢ベクトルを仮想水平面に投影したベクトルＡ（Ｘ成分が姿勢ベクトルのＸ成分に等しく、Ｙ成分が０で、Ｚ成分が姿勢ベクトルのＺ成分に等しいベクトル）」に基づいた方向になるように設定する。なお、前述の自動移動アルゴリズムによって設定された当該選手キャラクタの移動ベクトルを、当該ベクトルＡで補正（典型的には加算）してもよい。
【０１８３】
一方、ステップ１３においてＮｏの場合（すなわち、チームＸの選手モード用のコントローラ７が未設定の場合）、ステップ２５において、ＣＰＵ３０は、チームＸの全選手キャラクタの移動ベクトルＶｍｎｐｃを所定の自動移動アルゴリズムを用いて設定して、移動ベクトルデータＤｃに格納する（つまり、チームＸに選手モード用のコントローラ７が設定されていないため、チームＸの全選手キャラクタがノンプレイヤキャラクタＮＰＣとなる）。なお、上記ステップ２５においても、上記ステップ１４と同様に上記所定範囲に配置された選手キャラクタの移動ベクトルの上記姿勢ベクトルに応じた設定または補正が行われる。次に、ＣＰＵ３０は、監督モード処理（ステップ２０）を経て、処理をステップ２１に進める。
【０１８４】
ステップ２１において、ＣＰＵ３０は、移動ベクトルデータＤｃに記述された各移動ベクトルデータに基づいて、各キャラクタやオブジェクトを仮想ゲーム空間内で移動させ、ゲーム画像をモニタ２に表示する。次に、ＣＰＵ３０は、移動ベクトルデータＤｃに記述された各移動ベクトルデータを、それぞれ所定量減衰させて移動ベクトルデータＤｃを更新する（ステップ２２）。そして、ＣＰＵ３０は、ゴール処理、ファウル処理、プレイヤキャラクタＰＣの切替処理等、サッカーゲームで行われる他の処理を行って（ステップ２３）、処理を次のステップに進める。
【０１８５】
次に、ＣＰＵ３０は、ゲームを終了するか否かを判断する（ステップ２４）。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。ＣＰＵ３０は、ゲームを終了しない場合に上記ステップ１２に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
【０１８６】
次に、図１９を参照して、上記ステップ１５におけるサブユニット移動処理について、詳細な動作を説明する。
【０１８７】
図１９において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれる最新のサブキーデータを参照し（ステップ４１）、処理を次のステップに進める。ここで、上記ステップ１２において、操作情報Ｄａは、各コントローラ識別番号別にそれぞれのコントローラ７から送信された操作情報が格納されており、コントローラＩＤデータＤｂには、チームＸの選手モード用コントローラ識別番号が記述されている。したがって、ＣＰＵ３０は、コントローラＩＤデータＤｂに記述されたチームＸの選手モード用コントローラ識別番号に基づいて、操作情報Ｄａから選手モード用サブユニットから送信された操作情報を抽出することが可能となる。
【０１８８】
次に、ＣＰＵ３０は、上記ステップ４１で参照した選手モード用サブユニットのサブキーデータに基づいて、プレイヤから方向指示入力があるか否かを判断する（ステップ４２）。上述したように、サブユニット７６は、スティック７８ａが設けられており、プレイヤが傾倒可能なスティック７８ａを倒すことによって方向指示入力が可能である。そして、ＣＰＵ３０は、プレイヤから方向指示入力がある場合、次のステップ４３に処理を進める。一方、ＣＰＵ３０は、プレイヤから方向指示入力がない場合、次のステップ４７に処理を進める。
【０１８９】
ステップ４３において、ＣＰＵ３０は、チームＸの選手モード用サブユニット７６からの方向指示入力に基づいて、チームＸのプレイヤキャラクタＰＣの移動ベクトルＶｍｐｃを算出して、移動ベクトルデータＤｃを更新し、処理を次のステップに進める。例えば、図２６に示すように、仮想ゲーム空間におけるプレイヤキャラクタＰＣの移動方向および移動速度を示すデータとして、移動ベクトルＶｍｐｃが設定される。上記ステップ４３において、ＣＰＵ３０は、移動ベクトルデータＤｃに格納されているプレイヤキャラクタＰＣの現在の移動ベクトルＶｍｐｃを基準として、スティック７８ａの傾倒方向に応じて決定される仮想ゲーム空間における方向で、かつスティック７８ａの傾倒角度に応じた大きさの新たな移動ベクトルＶｍｐｃを算出する。この処理によって、プレイヤが操作するチームＸのプレイヤキャラクタＰＣは、当該プレイヤが所持するサブユニット７６のスティック７８ａを操作することによって、仮想ゲーム空間における移動方向および移動速度が制御される。
【０１９０】
次に、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する（ステップ４４）。そして、ＣＰＵ３０は、サブ加速度データが示すＺ軸正方向（図９参照）の加速度が所定値以上であるか否かを判断する（ステップ４５）。そして、ＣＰＵ３０は、Ｚ軸正方向の加速度が所定値以上である場合、前述のようにステップ４３で決定された、チームＸにおけるプレイヤキャラクタＰＣの移動ベクトルＶｍｐｃの大きさを所定アルゴリズムにより増加させて（例えば、当該Ｚ軸正方向の加速度の大きさに応じて増加させて、または、所定値だけ増加させて、または、ｎ倍（ｎは１より大きい数値）して）、プレイヤキャラクタＰＣの移動ベクトルデータＤｃを更新し（ステップ４６）、次のステップ４７に処理を進める。このステップ４６の処理によって、プレイヤが操作するプレイヤキャラクタＰＣの仮想ゲーム空間における移動速度は、プレイヤがサブユニット７６を前方に傾けることによって（すなわち、Ｚ軸正方向がＺ軸負方向よりも低い位置を指す方向となるようにすることによって）加速される。一方、ＣＰＵ３０は、Ｚ軸方向の加速度の大きさが所定値未満である場合、そのまま次のステップ４７に処理を進める。なお、ステップ４５において、Ｚ軸負方向の加速度が所定値（マイナス値）よりも小さいか否かを判断し、当該判断がＹｅｓのときには、チームＸにおけるプレイヤキャラクタＰＣの移動ベクトルＶｍｐｃの大きさを所定アルゴリズムにより減少させて（例えば、当該Ｚ軸負方向の加速度の大きさに応じて減少させて、または、所定値だけ減少させて、または、ｍ倍（ｍは１より小さい数値）して）、プレイヤキャラクタＰＣの移動ベクトルデータＤｃを更新するようにしてもよい。
【０１９１】
ステップ４７において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する。そして、ＣＰＵ３０は、サブ加速度データに応じて、チームＸにおけるプレイヤキャラクタＰＣの姿勢ベクトルＶｃを算出して、姿勢ベクトルデータＤｄを更新し、処理を次のステップに進める。
【０１９２】
例えば、図２６に示すように、仮想ゲーム空間におけるプレイヤキャラクタＰＣの姿勢を示すデータとして、姿勢ベクトルＶｃが設定される。ここで、姿勢ベクトルＶｃは、プレイヤキャラクタ座標系に基づいて設定される。プレイヤキャラクタ座標系は、仮想ゲーム空間におけるプレイヤキャラクタＰＣの正面方向をＺｐ軸方向とし（典型的には、プレイヤキャラクタＰＣの移動ベクトルＶｍｐｃの方向をＺｐ軸方向とする。または、プレイヤキャラクタＰＣの移動方向ベクトルとプレイヤキャラクタＰＣの向きベクトル（前方ベクトル）とを独立して制御する場合には、プレイヤキャラクタＰＣの向きベクトルの方向を、Ｚｐ軸方向とが一致するようにしてもよい）、プレイヤキャラクタＰＣの前方方向をＺｐ軸正方向とする。また、仮想ゲーム空間におけるプレイヤキャラクタＰＣの左右方向をＸｐ軸方向とし、プレイヤキャラクタＰＣから見て右方向をＸｐ軸正方向とする。また、仮想ゲーム空間におけるプレイヤキャラクタＰＣの垂直方向をＹｐ軸方向とし、上方向をＹｐ軸正方向とする。姿勢ベクトルＶｃは、プレイヤキャラクタＰＣの腰部から頭部に向かうベクトルデータとして設定されている。姿勢ベクトルＶｃは、典型的にはプレイヤキャラクタ座標系におけるベクトルデータである。
【０１９３】
上記ステップ４８において、ＣＰＵ３０は、サブ加速度データが示すＸ軸方向（図９参照）の加速度をプレイヤキャラクタ座標系のＸｐ軸方向に対応付け、サブ加速度データが示すＹ軸方向の加速度をプレイヤキャラクタ座標系のＹｐ軸方向に対応付け、サブ加速度データが示すＺ軸方向の加速度をプレイヤキャラクタ座標系のＺｐ軸方向に対応付けて、姿勢ベクトルＶｃを算出する。
【０１９４】
例えば、上記ステップ４８では、一例としてサブユニット７６の傾きに応じて、プレイヤキャラクタＰＣの姿勢が制御される。この場合、具体的には、サブ加速度データが示すＸ軸方向の加速度の値に応じて（典型的には、比例して）、プレイヤキャラクタ座標系における姿勢ベクトルデータのＸｐ軸方向の値を決定し、サブ加速度データが示すＹ軸方向の加速度の正負を反転した値に応じて（典型的には、比例して）、プレイヤキャラクタ座標系における姿勢ベクトルデータのＹｐ軸方向の値を決定し、サブ加速度データが示すＺ軸方向の加速度の値に応じて（典型的には、比例して）、プレイヤキャラクタ座標系における姿勢ベクトルデータのＺｐ軸方向の値を決定する（それぞれの比例定数は、共通とするのが典型的であるがこれに限らない）。より具体的には、例えば、サブ加速度データが示すＸ軸方向の加速度の値：Ｙ軸方向の加速度の値：Ｚ軸方向の加速度の値＝プレイヤキャラクタ座標系における姿勢ベクトルデータのＸｐ軸方向の値：姿勢ベクトルデータのＹｐ軸方向の値：姿勢ベクトルデータのＺｐ軸方向の値となるように、姿勢ベクトルデータを決定する。または、サブ加速度データが示すＸ軸方向の加速度の値に応じて、プレイヤキャラクタ座標系における姿勢ベクトルデータのＸｐ軸方向の値を決定し、サブ加速度データが示すＺ軸方向の加速度の値に応じて、プレイヤキャラクタ座標系における姿勢ベクトルデータのＺｐ軸方向の値を決定するようにし、プレイヤキャラクタ座標系における姿勢ベクトルデータのＹｐ軸方向の値は一定としてもよい。
【０１９５】
例えば、上記ステップ４８では、一例としてサブユニット７６の動き（平行移動）に応じて、プレイヤキャラクタＰＣの姿勢が制御される。例えば、プレイヤがサブユニット７６を右方向に動かした場合、サブユニット７６にＸ軸正方向の加速度が生じる（プレイヤがサブユニット７６を右方向に動かした場合に、当該動きの当初に出力されるＸ軸正方向の加速度を検出してもよいし、当該動きを止めるときに出力されるＸ軸負方向の加速度を検出してもよい）。そして、サブユニット７６に設けられた加速度センサ７６１が上記Ｘ軸正方向の加速度を検出し、サブユニット７６から当該加速度を示すサブ加速度データがゲーム装置本体５へ送信される。一方、ＣＰＵ３０は、受信したサブ加速度データが示す上記Ｘ軸正方向の加速度に応じて、当該加速度の大きさでＸｐ軸正方向のベクトルを姿勢ベクトルＶｃに足して、新たな姿勢ベクトルＶｃを算出する。そして、プレイヤキャラクタＰＣの上体は、新たに算出された姿勢ベクトルＶｃに応じてＸｐ軸正方向に傾くことになる。そして、プレイヤがサブユニット７６を前方向に動かした場合、サブユニット７６にＺ軸正方向の加速度が生じる。そして、サブユニット７６に設けられた加速度センサ７６１が、上記Ｚ軸正方向の加速度を検出し、サブユニット７６から当該加速度を示すサブ加速度データがゲーム装置本体５へ送信される。一方、ＣＰＵ３０は、受信したサブ加速度データが示す上記Ｚ軸正方向の加速度に応じて、当該加速度の大きさでＺｐ軸正方向のベクトルを姿勢ベクトルＶｃに足して、新たな姿勢ベクトルＶｃを算出する。そして、プレイヤキャラクタＰＣの上体は、新たに算出された姿勢ベクトルＶｃに応じてＺｐ軸正方向に傾くことになる。このステップ４８の処理によって、プレイヤが操作するプレイヤキャラクタＰＣの仮想ゲーム空間における姿勢は、プレイヤがサブユニット７６全体を動かす動作に応じて変化する。
【０１９６】
ここで、上記ステップ１４およびステップ２５において、ボールオブジェクトＢをキープしているプレイヤキャラクタＰＣの所定範囲に配置された相手チームの選手キャラクタ（例えば、図２５に示す選手キャラクタＰＢ１）の移動ベクトルは、プレイヤキャラクタＰＣの姿勢ベクトルＶｃに応じて補正される。具体的には、姿勢ベクトルＶｃを仮想水平面に投影したベクトルを、上記相手チームの選手キャラクタの移動ベクトルに加えることによって補正されるため、当該選手キャラクタが移動する方向は、仮想ゲーム空間の垂直方向に対して姿勢ベクトルＶｃが傾く方向へ変化する。つまり、プレイヤがサブユニット７６全体を動かす動作によって変化したプレイヤキャラクタＰＣの姿勢に応じて相手チームの選手キャラクタが移動することになり、いわゆるサッカーゲームでドリブル中のフェイントに相手選手がつられるような動作が表現される。
【０１９７】
図１９に戻り、上記ステップ４８の処理の後、ＣＰＵ３０は、チームＸに所属する何れかの選手キャラクタがボールオブジェクトＢを保持しているか否かを判断する（ステップ４９）。そして、ＣＰＵ３０は、チームＸに所属する何れかの選手キャラクタがボールオブジェクトＢを保持している場合（すなわち、チームＸが攻撃側の場合）、次のステップ５０に処理を進める。一方、ＣＰＵ３０は、チームＸに所属する選手キャラクタがボールオブジェクトＢを保持していない場合、次の上記ステップ１９に処理を進める。
【０１９８】
ステップ５０において、ＣＰＵ３０は、上記ステップ４７で参照した最新のサブ加速度データが示すＸ軸方向の加速度の大きさ（絶対値）が所定加速度Ａ１以上（例えば、０．５Ｇ以上としてよいが、任意の値でよい）であるか否かを判断する。そして、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが当該所定加速度Ａ１以上である場合、次のステップ５１に処理を進める。一方、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが当該所定加速度Ａ１未満である場合、当該サブルーチンによる処理を終了して、上記ステップ１６の処理へ進める。
【０１９９】
ステップ５１において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれるサブ加速度データの履歴を参照し、サブ加速度データの履歴が示すＸ軸方向の加速度の方向が直近の所定時間内に所定加速度Ａ１以上の大きさでｎ回（ｎは、１以上の整数）反転しているか否かを判断する。例えば、サブ加速度データの履歴を参照して、「直近の過去所定時間内に、最新のサブ加速度データ（ステップ５０において加速度Ａ１以上と判定されたデータ）が示す加速度とは正負が反対でかつ絶対値が加速度Ａ１以上のデータが存在する」か否かを判断する（ｎ＝１の場合）。または、「直近の過去所定時間内に、最新のサブ加速度データが示す加速度とは正負が反対でかつ絶対値が加速度Ａ１以上のデータが存在し、さらに、当該データより前に、当該データとは正負が反対で絶対値が加速度Ａ１以上のデータが存在する」か否かを判断する（ｎ＝２の場合）。または、サブ加速度データの履歴が示すＸ軸方向の加速度の方向が所定加速度Ａ１以上の大きさでｎ回反転し、かつ、反転の間隔がそれぞれ所定時間以内であるか否かを判断してもよい。
【０２００】
そして、ＣＰＵ３０は、Ｘ軸方向の加速度の方向が所定時間内に反転している場合、チームＸにおけるプレイヤキャラクタＰＣの移動ベクトルＶｍｐｃにＸｐ軸方向の所定の大きさのベクトル（ベクトルの大きさは、固定でもよいし、サブ加速度データが示すＸ軸方向の加速度の大きさに比例した大きさとしてもよい。ベクトルの向きは、Ｘ軸方向の加速度が正ならＸｐ軸の正方向であり、Ｘ軸方向の加速度が負ならＸｐ軸の負方向）を加算して、移動ベクトルＶｍｐｃとする。（ステップ５２）、当該サブルーチンによる処理を終了して、上記ステップ１６の処理へ進める。このステップ５０〜ステップ５２の処理によって、プレイヤが操作するプレイヤキャラクタＰＣの仮想ゲーム空間における移動速度は、プレイヤがサブユニット７６を左右（つまり、Ｘ軸方向）に振り動かすことによってジグザグに移動するように移動制御される。一方、ＣＰＵ３０は、Ｘ軸方向の加速度の方向が所定時間内に反転していない場合、そのまま当該サブルーチンによる処理を終了して、上記ステップ１６の処理へ進める。
【０２０１】
なお、上述した処理は、次のようにしてもかまわない。一例として、光ディスク４にプレイヤキャラクタＰＣのモーションデータを記憶しておき、メインメモリ３３に読み出しておく。そして、上記ステップ５１においてＸ軸方向の加速度の方向が所定時間内に反転していると判定された場合、上述のステップ５２の処理に代えて、当該モーションデータに基づいて、プレイヤキャラクタＰＣに動作をさせる。なお、このモーションデータは、プレイヤキャラクタＰＣにフェイント動作をさせるようなモーションデータとしてもよい。
【０２０２】
また、他の例として、複数種類のモーションデータを光ディスク４に記憶しておいてメインメモリ３３に読み出しておく。そして、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれるサブ加速度データの履歴を参照し、サブ加速度データの履歴が示すパターンに応じて、利用するモーションデータを選択してもよい。例えば、またぎフェイントの動作をプレイヤキャラクタＰＣにさせるためのモーションデータＡと、左右に体をゆらすフェイントの動作をプレイヤキャラクタＰＣにさせるためのモーションデータＢを用意しておく。そして、Ｘ軸方向の加速度の方向が所定時間内に反転していると判定された場合に、モーションデータＡを読み出して、プレイヤキャラクタＰＣにまたぎフェイントの動作をさせ、Ｙ軸方向（Ｚ軸方向でもよい）の加速度の方向が所定時間内に反転していると判定された場合に、モーションデータＢを読み出して、プレイヤキャラクタＰＣに左右に体をゆらすフェイントの動作をさせるようにしてもよい。また、予め記憶したモーションデータを用いる代わりに、物理計算をしてプレイヤキャラクタの各部位の動きデータを生成するようにしてもよい。
【０２０３】
また、上述したサブユニット移動処理については、以下のようにしてもよい。第１の例として、最新のサブ加速度データが示すＸ軸方向の加速度の大きさ（絶対値）が所定値（例えば、重力加速度（１．０Ｇ））以内の場合、ステップ４８において、最新のサブ加速度データが示すＸ軸方向の加速度を用いた姿勢ベクトルの制御を行う。第２の例として、最新のサブ加速度データが示すＸ軸方向の加速度の大きさ（絶対値）が当該所定値より大きい場合、ステップ４８において、プレイヤキャラクタＰＣが上体または全身をＸｐ軸方向に大きく振る動作をするような（フェイントを表現した姿勢をするような）動作制御をする。
【０２０４】
さらに、上記サブユニット移動処理の第１の例について、以下のようにしてもよい。第３の例として、最新のサブ加速度データが示すＸ軸方向の加速度の大きさ（絶対値）が当該所定値以内で、かつ、サブ加速度データの履歴が示すＸ軸方向の加速度の方向が直近の所定時間内に加速度Ａ１以上の大きさでｎ回（ｎは１以上の整数）反転している場合、プレイヤキャラクタＰＣの移動ベクトルＶｍｐｃにＸｐ軸方向の所定の大きさのベクトルを加算して、移動ベクトルＶｍｐｃとする。第４の例として、最新のサブ加速度データが示すＸ軸方向の加速度の大きさ（絶対値）が所定値Ａ２以内で、かつ、上記第３の例以外の場合、ステップ４８において、最新のサブ加速度データが示すＸ軸方向の加速度を用いた姿勢ベクトルの制御を行う。そして、上記第１の例や第４の例の場合には、ステップ１４とステップ２５において前述した「プレイヤキャラクタＰＣの所定範囲に配置された相手チームの選手キャラクタ」が、プレイヤキャラクタＰＣのフェイントにつられる移動制御はしないようにしてもよい。
【０２０５】
このように、ステップ１５におけるサブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向（さらには、付加的に移動速度）が制御されながら、サブユニット７６に設けられた加速度センサ７６１から出力される加速度データに応じてプレイヤキャラクタＰＣの姿勢が制御される。つまり、プレイヤは、プレイヤキャラクタＰＣの移動方向制御と姿勢制御とを、片手で効率的かつ直感的に入力することができる。
【０２０６】
また、上記サブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向（さらには、付加的に移動速度）が制御されながら、当該移動方向が、サブユニット７６に設けられた加速度センサ７６１から出力される加速度データに応じて補正される。つまり、プレイヤは、プレイヤキャラクタＰＣの移動方向制御とその補正とを、片手で効率的かつ直感的に入力することができる。具体的には、以下のようにすることができる。スティック７８ａの傾倒方向に応じてプレイヤキャラクタＰＣの移動ベクトルの方向を決める。すなわち、例えば、上方向に指示したときに、プレイヤキャラクタＰＣのローカル座標系のＺ軸正方向（プレイヤキャラクタＰＣの前方向）に移動（プレイヤキャラクタＰＣの前進方向ベクトルの方向に移動）する。方向指示手段を下方向に指示したときに、プレイヤキャラクタＰＣのローカル座標系のＺ軸負方向に移動する。方向指示手段を右方向に指示したときに、ローカル座標系のＸ軸正方向に移動する。そして、方向指示手段を左方向に指示したときに、ローカル座標系のＸ軸負方向に移動するように移動制御する。移動ベクトルの大きさは、固定値でもよいし、スティック７８ａの傾倒量に応じて決めても良い。そして、加速度センサ７６１の出力に応じて、プレイヤキャラクタＰＣの移動方向を以下のように補正することができる。
【０２０７】
プレイヤキャラクタＰＣの移動方向を補正する第１の例として、加速度センサ７６１のＸ軸、Ｙ軸、Ｚ軸をそれぞれ、所定座標系のＸ軸、Ｙ軸、Ｚ軸に対応付けた（または、前進方向とそれに直交する２方向に対応付けて）加速度センサ７６１の出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。そして、上記方向ベクトルを補正ベクトルとして、当該補正ベクトルをスティック７８ａの傾倒により求めた上記移動ベクトルに加算する。上記補正ベクトルの大きさは、固定値でもよいし、上記出力ベクトルの大きさに応じて決めても良い。
【０２０８】
プレイヤキャラクタＰＣの移動方向を補正する第２の例として、加速度センサ７６１の所定方向（例えば、Ｘ軸方向）の出力値が所定値以上のときに、所定座標系の対応する方向（例えば、Ｘ軸方向）の補正ベクトルを、スティック７８ａの傾倒により求めた上記移動ベクトルに加算する。
【０２０９】
プレイヤキャラクタＰＣの移動方向を補正する第３の例として、加速度センサ７６１の所定方向（例えば、Ｘ軸方向）の出力値に応じた大きさで、所定座標系の対応する方向（例えば、Ｘ軸方向）の補正ベクトルを、スティック７８ａの傾倒により求めた上記移動ベクトルに加算する。
【０２１０】
なお、プレイヤキャラクタＰＣの移動方向を補正する第２および第３の例について、複数の方向について実施してもよい。すなわち、例えば、第３の例について、加速度センサ７６１のＸ軸方向の出力値に応じた大きさで、所定座標系のＸ軸方向の補正ベクトルを、スティック７８ａの傾倒により求めた上記移動ベクトルに加算し、さらに、加速度センサ７６１のＹ軸方向の出力値に応じた大きさで、所定座標系のＹ軸方向の補正ベクトルを加算してもよい。
【０２１１】
また、上記所定座標系は、プレイヤキャラクタＰＣのローカル座標系でもよいし、仮想ゲーム空間の座標系でもよいし（この場合、方向ベクトルは、典型的には仮想垂直方向や仮想水平方向などとなる）、カメラ座標系であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく座標系（例えば、上記補正ベクトルが当該移動方向に直交する方向など）であってもよい。
【０２１２】
また、上記サブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向が制御されながら、プレイヤキャラクタＰＣの移動速度の制御がされる。つまり、プレイヤは、プレイヤキャラクタＰＣの移動方向制御と移動速度の制御とを、片手で効率的かつ直感的に入力することができる。この場合、以下のようにすることができる。スティック７８ａの傾倒方向に応じて、プレイヤキャラクタＰＣの移動方向を決める。そして、プレイヤキャラクタＰＣの移動速度（絶対値）は、加速度センサ７６１の出力に応じて、以下のように決めることができる。
【０２１３】
プレイヤキャラクタＰＣの移動速度を決定する第１の例は、加速度センサ７６１の出力ベクトルの絶対値が所定値以上のときに、当該移動速度を所定速度とし、当該所定値より小さいときは当該移動速度を０とする。
【０２１４】
プレイヤキャラクタＰＣの移動速度を決定する第２の例は、当該移動速度を加速度センサ７６１の出力ベクトルの絶対値に応じた速度とする（当該絶対値が大きいほど、当該移動速度が大きくなるようにする）。このとき、上記出力ベクトルの所定成分（例えば、Ｚ軸方向成分）が正のときには、プレイヤキャラクタＰＣがスティック７８ａの傾倒方向に応じた移動方向に移動し、負のときには、プレイヤキャラクタＰＣがスティック７８ａの傾倒方向に応じた移動方向と反対方向に移動するようにしてもよい。また、上記所定方向の出力成分が正のときのみ、当該第２の例によって上記移動速度を決定するようにしてもよい。
【０２１５】
プレイヤキャラクタＰＣの移動速度を決定する第３の例は、加速度センサ７６１の所定方向の出力成分（例えば、Ｚ軸方向の出力値）が所定値以上のときに、当該移動速度を所定速度とし、当該所定値より小さいときは当該移動速度を０とする。
【０２１６】
プレイヤキャラクタＰＣの移動速度を決定する第４の例は、当該移動速度を加速度センサ７６１の所定方向の出力成分（例えば、Ｚ軸方向の出力値）の絶対値に応じた速度とする。
【０２１７】
なお、プレイヤキャラクタＰＣの移動速度を決定する第３および第４の例において、上記所定方向の出力成分が正のときにはスティック７８ａの傾倒方向に応じた移動方向にプレイヤキャラクタＰＣが移動し、上記所定方向の出力成分が負のときには、当該移動方向と反対の方向にプレイヤキャラクタＰＣが移動するようにしてもよい。また、上記所定方向の出力成分が正のときのみ、当該第３および第４の例によって上記移動速度を決定するようにしてもよい。
【０２１８】
プレイヤキャラクタＰＣの移動速度を決定する第５の例は、加速度センサ７６１の、スティック７８ａの傾倒方向に対応する方向の出力成分（例えば、スティック７８ａの傾倒方向が上方向のときにはＺ軸方向の出力値、スティック７８ａの傾倒方向が右方向のときにはＸ軸方向の出力値など）が、所定値以上のときに当該移動速度を所定速度とし、当該所定値より小さいときは当該移動速度を０とする。
【０２１９】
プレイヤキャラクタＰＣの移動速度を決定する第６の例は、当該移動速度を加速度センサ７６１の、スティック７８ａの傾倒方向に対応する方向の出力成分（例えば、スティック７８ａの傾倒方向が上方向のときにはＺ軸方向の出力値、スティック７８ａの傾倒方向が右方向のときにはＸ軸方向の出力値など）の絶対値に応じた速度とする。
【０２２０】
なお、プレイヤキャラクタＰＣの移動速度を決定する第５および第６の例において、上記対応する方向の出力成分が正のときにはスティック７８ａの傾倒方向に応じた移動方向にプレイヤキャラクタＰＣが移動し、上記対応する方向の出力成分が負のときには、当該移動方向と反対の方向にプレイヤキャラクタＰＣが移動するようにしてもよい。
【０２２１】
また、上記サブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向と移動速度とが制御されながら、移動速度の補正制御がされる。つまり、プレイヤは、プレイヤキャラクタＰＣの移動方向制御と移動速度の補正制御とを、片手で効率的かつ直感的に入力することができる。この場合、以下のようにすることができる。スティック７８ａの傾倒方向に応じてプレイヤキャラクタＰＣの移動方向を決めて、かつ、スティック７８ａの傾倒量に応じてプレイヤキャラクタＰＣの移動速度を決める。そして、加速度センサ７６１の出力に応じて、プレイヤキャラクタＰＣの移動速度を以下のように補正することができる。
【０２２２】
プレイヤキャラクタＰＣの移動速度を補正する第１の例は、加速度センサ７６１の出力ベクトルの絶対値が所定値以上のときに、スティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より小さいときはプレイヤキャラクタＰＣの移動速度を０に補正する。
【０２２３】
プレイヤキャラクタＰＣの移動速度を補正する第２の例は、加速度センサ７６１の出力ベクトルの絶対値が所定値以下のときに、スティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より大きいときはプレイヤキャラクタＰＣの移動速度を増加補正する（所定値を加算、ｎ倍（ｎ＞１）など）。
【０２２４】
プレイヤキャラクタＰＣの移動速度を補正する第３の例は、加速度センサ７６１の出力ベクトルの絶対値に応じて、スティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度に増加補正する（当該絶対値が大きいほど、増加量が大きくなるようにする）。
【０２２５】
なお、プレイヤキャラクタＰＣの移動速度を補正する第２および第３の例において、上記出力ベクトルの所定成分（例えばＺ軸方向成分）が正のときには、スティック７８ａの傾倒方向に応じた移動方向にプレイヤキャラクタＰＣが移動し、負のときには、スティック７８ａの傾倒方向に応じた移動方向と反対方向にプレイヤキャラクタＰＣが移動するようにしてもよい。また、上記所定方向の出力成分が正のときのみ、当該第２および第３の例によって上記移動速度を補正するようにしてもよい。
【０２２６】
プレイヤキャラクタＰＣの移動速度を補正する第４の例は、加速度センサ７６１の所定方向の出力成分（例えば、Ｚ軸方向の出力値）が所定値以上のときにスティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より小さいときはプレイヤキャラクタＰＣの移動速度を０に補正する。
【０２２７】
プレイヤキャラクタＰＣの移動速度を補正する第５の例は、加速度センサ７６１の所定方向の出力成分（例えば、Ｚ軸方向の出力値）が所定値以下のときにスティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より大きいときはプレイヤキャラクタＰＣの移動速度を増加補正する。なお、上記所定方向の出力成分が正のときのみ、当該第５の例によって上記移動速度を補正してもよいし、上記所定方向の出力成分が負のときにはスティック７８ａの傾倒量に応じた移動速度を用いてプレイヤキャラクタＰＣの移動速度を減少補正してもよい。
【０２２８】
プレイヤキャラクタＰＣの移動速度を補正する第６の例は、加速度センサ７６１の所定方向の出力成分（例えば、Ｚ軸方向の出力値）の大きさに応じて、スティック７８ａの傾倒量に応じた移動速度を用いてプレイヤキャラクタＰＣの移動速度を増加補正する（当該絶対値が大きいほど、増加量が大きくなるようにする）。なお、上記所定方向の出力成分が正のときのみ、当該第６の例によって上記移動速度を補正してもよいし、上記所定方向の出力成分が負のときにはスティック７８ａの傾倒量に応じた移動速度を用いてプレイヤキャラクタＰＣの移動速度を減少補正してもよい。
【０２２９】
プレイヤキャラクタＰＣの移動速度を補正する第７の例は、加速度センサ７６１の、スティック７８ａの傾倒方向に対応する方向の出力成分（例えば、スティック７８ａの傾倒方向が上方向のときにはＺ軸正方向の出力値、スティック７８ａの傾倒方向が右方向のときにはＸ軸正方向の出力値など）が、所定値以上のときにスティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より小さいときはプレイヤキャラクタＰＣの移動速度を０に補正する。
【０２３０】
プレイヤキャラクタＰＣの移動速度を補正する第８の例は、加速度センサ７６１の、スティック７８ａの傾倒方向に対応する方向の出力成分が、所定値以下のときにスティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より大きいときにプレイヤキャラクタＰＣの移動速度を増加補正する。
【０２３１】
プレイヤキャラクタＰＣの移動速度を補正する第９の例は、加速度センサ７６１の、スティック７８ａの傾倒方向に対応する方向の出力成分の大きさに応じて、スティック７８ａの傾倒量に応じた移動速度を用いてプレイヤキャラクタＰＣの移動速度を増加補正する（当該絶対値が大きいほど、増加量が大きくなるようにする）。
【０２３２】
なお、プレイヤキャラクタＰＣの移動速度を補正する第８および第９の例において、上記所定方向の出力成分が正のときのみ当該第８および第９の例によって上記移動速度を補正してもよいし、上記対応する出力値が正のときにはスティック７８ａの傾倒方向に応じた移動方向にプレイヤキャラクタＰＣが移動し、上記対応する出力値が負のとき（当該対応する方向と反対方向の出力があるとき）には、当該移動方向と反対の方向にプレイヤキャラクタＰＣが移動するようにしてもよい。
【０２３３】
また、上記サブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向（さらには、付加的に移動速度）が制御されながら、プレイヤキャラクタＰＣの動作制御（例えば、前述のフェイント動作）が行われる。つまり、プレイヤは、プレイヤキャラクタＰＣの移動方向制御と動作制御とを、片手で効率的かつ直感的に入力することができる。これは、加速度センサ７６１の出力が所定の条件を満たしたときに、プレイヤキャラクタＰＣに所定の動作をさせるように制御することにより実現される。さらに、上述したサブユニット移動処理の例の少なくとも１つと、加速度センサ７６１の出力が所定の条件を満たしたときにプレイヤキャラクタＰＣに所定の動作をさせるように制御する処理とを同時に実施する場合には、加速度センサ７６１の出力値の大きさが所定値以下のときに上述したサブユニット移動処理の例の少なくとも１つを実施し、所定値より大きいときに所定の動作をさせるように制御する処理を実施するようにしてもよい。
【０２３４】
次に、図２０を参照して、上記ステップ１６におけるパス処理について、詳細な動作を説明する。
【０２３５】
図２０において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコアキーデータを参照する（ステップ８１）。次に、ＣＰＵ３０は、上記ステップ８１で参照したコアキーデータに基づいて、プレイヤがコアユニット７０の操作部７２ｄ（Ａボタン）のみを押下しているか否かを判断する（ステップ８２）。そして、ＣＰＵ３０は、プレイヤがＡボタンのみを押下している場合、次のステップ８３に処理を進める。一方、ＣＰＵ３０は、プレイヤがＡボタンを押下していない、またはＡボタンと同時に他のボタン（例えば、Ｂボタン）を押下している場合、当該サブルーチンによる処理を終了して、上記ステップ１７の処理へ進める。
【０２３６】
ステップ８３において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新の第１座標データＤａ１および第２座標データＤａ２を参照する（ステップ８３）。次に、ＣＰＵ３０は、上記ステップ８３で参照した第１座標データＤａ１および第２座標データＤａ２に対応する指示座標、および当該指示座標に対応する仮想ゲーム空間の位置を算出して、それぞれチームＸの選手モード用コアユニットに対応する指示座標データＤｅおよび仮想空間位置座標データＤｆを更新して（ステップ８４）、処理を次のステップに進める。以下、座標データを用いて指示座標および仮想空間位置を算出する一例について詳述する。
【０２３７】
まず、ＣＰＵ３０は、第１座標データＤａ１から第２座標データＤａ２への方向データを算出する。具体的には、ＣＰＵ３０は、第１座標データＤａ１および第２座標データＤａ２を参照して、第１座標データＤａ１の位置を始点とし第２座標データＤａ２の位置を終点とするベクトルを算出する。そして、ＣＰＵ３０は、算出されたベクトルのデータを、方向データとしてメインメモリ３３に記憶する。この方向データと所定の基準方向との差によって、コアユニット７０の撮像面に垂直な方向を軸とするコアユニット７０本体の回転を算出することができる。
【０２３８】
また、ＣＰＵ３０は、第１座標データＤａ１と第２座標データＤａ２との中点を示す中点データを算出する。具体的には、ＣＰＵ３０は、第１座標データＤａ１および第２座標データＤａ２を参照して、当該中点の座標を算出する。そして、ＣＰＵ３０は、算出された中点の座標のデータを、メインメモリ３３に記憶する。ここで、中点データは、撮像画像内における対象画像（マーカ８Ｌおよび８Ｒ）の位置を示している。この中点データと所定の基準位置との差によって、コアユニット７０の位置の変化による画像位置の変化を算出することができる。
【０２３９】
ここで、マーカ８Ｌおよび８Ｒと、モニタ２の表示画面と、コアユニット７０との位置関係について考える。例えば、モニタ２の上面に２つのマーカ８Ｌおよび８Ｒを設置し（図１参照）、上面が上方向を向いたコアユニット７０を用いてプレイヤがモニタ２の表示画面の中央を指し示した場合（撮像情報演算部７４の撮像画像の中央に表示画面中央が撮像されている状態）を考える。このとき、撮像情報演算部７４の撮像画像において、対象画像の中点（マーカ８Ｌおよび８Ｒの中点）位置と指し示した位置（表示画面中央）とが一致しない。具体的には、上記撮像画像における対象画像の位置は撮像画像の中心から上方の位置となる。このような位置に対象画像が位置する場合に、表示画面中央を指し示しているという基準位置の設定を行う。一方、コアユニット７０の移動に対応して、撮像画像中の対象画像の位置も移動する（移動方向は逆方向となる）ので、撮像画像中の対象画像の位置の移動に対応させて表示画面を指し示す位置を移動させる処理を行うことによって、コアユニット７０で指し示された表示画面基準の位置（画面座標系の位置座標）を算出することができる。ここで、基準位置の設定は、予めプレイヤが表示画面の所定位置を指し示し、そのときの対象画像の位置を当該所定位置と対応させて記憶しておくようにしてもよいし、対象画像と表示画面との位置関係が固定的であれば、予め設定されていても良い。また、マーカ８Ｌおよび８Ｒが、モニタ２とは別体で設けられてモニタ２の近く（モニタ２の上や下など）に載置されて使用されるものである場合には、ゲーム開始前に、マーカ８Ｌおよび８Ｒをモニタに対してどの位置に載置しているかをプレイヤに入力させ（例えば、モニタ２の上に載置したか下に載置したか等の選択肢から選択させ）、光ディスク４やゲーム装置３の内蔵不揮発メモリなどに、モニタ２の上に載置した場合の基準位置データと、モニタ２の下に載置した場合の基準位置データをそれぞれ記憶しておいて、それらを選択して使用してもよい。このような画面座標系の位置座標は、中点データからモニタ２の表示画面基準の座標（指示座標）を算出する関数を用いた線形変換で算出される。この関数は、ある撮像画像から算出される中点座標の値を、当該撮像画像が撮像される時のコアユニット７０によって指し示される表示画面上の位置（画面座標系の位置座標）を表す座標に変換するものである。この関数によって、中点座標から表示画面を基準とした指示座標を算出することができる。
【０２４０】
しかしながら、上面が上方向以外（例えば、右方向）を向いたコアユニット７０を用いてプレイヤがモニタ２の表示画面の中央を指し示した場合、上記撮像画像における対象画像の位置は撮像画像の中心から上方以外（例えば、左方）の方向にずれた位置となる。つまり、コアユニット７０の傾きによって、コアユニット７０の移動方向と、表示画面基準の指し示し位置の移動方向が一致しないことになる。そこで、方向データに基づいて、中点データを補正する。具体的には、中点データを、コアユニット７０の上面が上方向を向いた状態であるとした場合における中点座標に補正する。より具体的には、上記基準位置の設定の際には方向データの基準も設定され、中点データを方向データと当該基準方向との角度差に応じた量だけ、撮像画像の中心を軸として中点データが示す座標を回転移動させて補正する。そして、補正された中点データを用いて上述したように指示座標を算出する。
【０２４１】
また、算出した画面座標系の指示座標を仮想ゲーム空間内における位置（仮想空間位置）を表す仮想空間座標に変換する場合には、当該画面座標系における位置に対応する仮想ゲーム空間内における位置にさらに変換すればよい。ここで、画面座標系における位置に対応する仮想ゲーム空間内における位置とは、モニタ２の表示画面上における位置に表示される仮想ゲーム空間内における位置（例えば、透視投影される位置）や画面座標系の位置座標から直接的に指定される仮想ゲーム空間の３次元座標値等である。
【０２４２】
上記指示座標の算出処理の本質的な原理は、コアユニット７０の移動による対象画像の位置の変化によって、指し示された２次元座標の所定の基準位置からの変位を算出し、座標を設定するというものである。したがって、画面座標系の位置座標は、他の２次元座標の入力としても幅広く用いることができる。例えば、画面座標系の位置座標をワールド座標系におけるｘ座標およびｙ座標の値として直接的に用いることができる。この場合、モニタ２の表示画面とは無関係に、対象画像の移動をワールド座標系におけるｘ座標およびｙ座標の基準位置からの移動に対応付ける算出処理を行えばよい。また、２次元のゲーム画像がモニタ２に表示されている場合などは、画面座標系の位置座標をそのまま２次元のゲーム座標系におけるｘ座標およびｙ座標の値として直接的に用いることができる。
【０２４３】
ステップ８４の処理の後、ＣＰＵ３０は、算出された指示座標に対応する仮想ゲーム空間の仮想空間位置が、仮想フィールド上の位置であるか否かを判断する（ステップ８５）。例えば、仮想フィールドは、仮想サッカーフィールドを含むゲーム空間の地面を示す仮想平面である。次に、ＣＰＵ３０は、仮想空間位置が仮想フィールド上である場合、次のステップ９０に処理を進める。一方、ＣＰＵ３０は、仮想空間位置が仮想フィールド上でない場合、上記画面座標系の指示座標がモニタ２の表示領域の上または下に外れているか否か（ステップ８６）、および上記画面座標系の指示座標がモニタ２の表示領域の左または右に外れているか否か（ステップ８７）を判断する。そして、ＣＰＵ３０は、指示座標がモニタ２の表示領域の上下に外れている場合（ステップ８６でＹｅｓ）、次のステップ８８に処理を進める。また、ＣＰＵ３０は、指示座標がモニタ２の表示領域の左右に外れている場合（ステップ８７でＹｅｓ）、次のステップ８９に処理を進める。一方、ＣＰＵ３０は、指示座標がモニタ２の表示領域の上下および左右以外に外れている、または指示座標が無効（例えば、算出不可）である場合（ステップ８６およびステップ８７でＮｏ）、次のステップ９５に処理を進める。
【０２４４】
ステップ８８において、ＣＰＵ３０は、ボールオブジェクトＢの移動方向および移動速度を示すボール移動ベクトルを、仮想ゲーム空間に設定されたサッカーフィールドのゴールラインと平行な方向に所定の大きさで設定し、移動ベクトルデータＤｃを更新して、次のステップ９５に処理を進める。なお、上記ステップ８８で設定するボール移動ベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に設定してもかまわない。
【０２４５】
ステップ８９において、ＣＰＵ３０は、ボールオブジェクトＢの移動方向および移動速度を示すボール移動ベクトルを、仮想ゲーム空間に設定されたサッカーフィールドのタッチラインと平行な方向に所定の大きさで設定し、移動ベクトルデータＤｃを更新して、次のステップ９５に処理を進める。なお、上記ステップ８９で設定するボール移動ベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に対して垂直な水平方向に設定してもかまわない。
【０２４６】
ステップ９０において、ＣＰＵ３０は、上記ステップ８４で算出された仮想空間位置を中心とした領域Ａ内（典型的には、当該仮想空間位置を中心とする所定半径Ｒ１の円領域内であるが、円領域でなくてもよい）に、チームＸの選手キャラクタが配置されているか否かを判断し、当該判断がＹｅｓの場合には当該選択キャラクタを選択する（複数の選手キャラクタが該当する場合には、当該仮想空間位置に一番近い選手キャラクタを選択する）。また、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが配置されていない場合、上記ステップ８４で算出された仮想空間位置を中心とした領域Ｂ内（典型的には、当該仮想空間位置を中心とする所定半径Ｒ２（＞Ｒ１）の円領域内であるが、円領域でなくてもよい）に、チームＸの選手キャラクタが配置されているか否かを判断し、当該判断がＹｅｓの場合には当該選択キャラクタを選択する（ステップ９２）（複数の選手キャラクタが該当する場合には、当該仮想空間位置に一番近い選手キャラクタを選択してもよいし、当該複数の選手キャラクタの全てまたは複数を選択してもよい）。そして、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが配置されている場合（ステップ９０でＹｅｓ）、次のステップ９１に処理を進める。また、ＣＰＵ３０は、領域Ｂ内にチームＸの選手キャラクタが配置されている場合（ステップ９２でＹｅｓ）、次のステップ９３に処理を進める。さらに、ＣＰＵ３０は、領域Ａおよび領域Ｂ内の何れにもチームＸの選手キャラクタが配置されていない場合（ステップ９０およびステップ９２でＮｏ）、次のステップ９４に処理を進める。例えば、図２７に示すように、領域Ａおよび領域Ｂは、仮想空間位置ＴＰを中心とした円形の領域でそれぞれ形成され、領域Ａより領域Ｂが大きい。そして、ＣＰＵ３０は、最新の位置データＤｈを参照して、仮想ゲーム空間における各選手キャラクタの配置位置に基づいて、領域Ａおよび領域Ｂ内に配置された選手キャラクタを判断する。
【０２４７】
ステップ９１において、ＣＰＵ３０は、ステップ９０で選択された選手キャラクタの配置位置に応じて、ボール移動ベクトルを設定して、移動ベクトルデータＤｃを更新する。例えば、ＣＰＵ３０は、現在のボールオブジェクトＢの位置から当該選手キャラクタの配置位置へ向かう方向をボール移動ベクトルの方向とする。さらに、現在のボールオブジェクトＢの位置から当該選手キャラクタの配置位置までの仮想距離に応じた大きさをボール移動ベクトルの大きさとして設定してもよい。そして、ＣＰＵ３０は、次のステップ９５に処理を進める。
【０２４８】
ステップ９３において、ＣＰＵ３０は、ステップ９２で選択された選手キャラクタの移動ベクトルを仮想空間位置ＴＰに応じて設定して、移動ベクトルデータＤｃを更新する。例えば、ＣＰＵ３０は、ステップ９２で選択された選手キャラクタの現在の配置位置から仮想空間位置ＴＰに向かう方向を当該選手キャラクタの移動ベクトルの方向とする。さらに、当該現在の配置位置から仮想空間位置ＴＰまでの仮想距離に応じた大きさを当該選手キャラクタの移動ベクトルの大きさとして設定してもよい。そして、ＣＰＵ３０は、次のステップ９４に処理を進める。
【０２４９】
ステップ９４において、ＣＰＵ３０は、仮想空間位置ＴＰに応じてボール移動ベクトルを設定して、移動ベクトルデータＤｃを更新する。例えば、ＣＰＵ３０は、現在のボールオブジェクトＢの位置から仮想空間位置ＴＰへ向かう方向をボール移動ベクトルの方向とする。さらに、現在のボールオブジェクトＢの位置から仮想空間位置ＴＰまでの仮想距離に応じた大きさをボール移動ベクトルの大きさとして設定してもよい。そして、ＣＰＵ３０は、次のステップ９５に処理を進める。
【０２５０】
このようにプレイヤがＡボタンを押下しているときに行われる上記ステップ９０〜ステップ９４の処理によってボールオブジェクトＢの移動ベクトルが設定され、当該ボールオブジェクトＢの移動方向（さらには、付加的に移動速度）が決定されるため、いわゆるサッカーゲームにおいてボールをパスする方向が設定される。ここで、上述から明らかなように、コアユニット７０で指し示された仮想空間位置ＴＰ近傍に自チームの選手が存在しない場合、ボールオブジェクトＢがパスされる目標地点は仮想空間位置ＴＰとなる。また、コアユニット７０で指し示された仮想空間位置ＴＰ近傍である領域Ａ内に自チームの選手が存在する場合、ボールオブジェクトＢがパスされる目標地点は領域Ａ内に存在する自チームの選手となる。さらに、コアユニット７０で指し示された仮想空間位置ＴＰから少し離れた領域Ｂ内に自チームの選手が存在する場合、ボールオブジェクトＢがパスされる目標地点は仮想空間位置ＴＰとなり、領域Ｂ内に存在する自チームの選手も仮想空間位置ＴＰへ移動する。
【０２５１】
ステップ９５において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する。そして、ＣＰＵ３０は、サブ加速度データが示すＺ軸方向の加速度が負（つまり、Ｚ軸負方向の加速度を検出）であるか否かを判断する（ステップ９６）。そして、ＣＰＵ３０は、Ｚ軸方向の加速度が負である場合、ボール移動ベクトルに垂直上方向のベクトルを加算する（ステップ９７）。なお、当該加算するベクトルは、当該Ｚ軸方向の加速度の大きさ（絶対値）に応じた大きさとしてもよい。そして、当該サブルーチンによる処理を終了して、上記ステップ１７の処理へ進める。このステップ９７の処理によって、プレイヤキャラクタＰＣがパスするボールオブジェクトＢの軌道は、プレイヤがサブユニット７６の前方を持ち上げるような動作を行う（つまり、Ｚ軸負方向の加速度が生じる）ことによって、仮想ゲーム空間内で高く蹴る軌道となる。一方、ＣＰＵ３０は、Ｚ軸方向の加速度が負でない場合、そのまま当該サブルーチンによる処理を終了して、上記ステップ１７の処理へ進める。
【０２５２】
このように、ステップ１６におけるパス処理においては、プレイヤがＡボタンのみを押下することによって、ボールオブジェクトＢをキープするプレイヤキャラクタＰＣの位置からボールオブジェクトＢが移動する動作を行う。そして、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向（さらには、付加的に移動速度）が制御されながら、コアユニット７０から得られる座標データ（第１座標データＤａ１および第２座標データＤａ２）によってボールオブジェクトＢの移動方向（さらには、付加的に移動速度）が制御される。したがって、プレイヤは、２つのユニットを操作しながらそれぞれ別のキャラクタ（オブジェクト）を操作することが可能である。つまり、プレイヤは、第１キャラクタ（プレイヤキャラクタＰＣ）の移動方向制御と当該第１キャラクタの位置（正確には、第１キャラクタの位置に付随して決定される第２キャラクタの位置）から移動する第２キャラクタ（ボールオブジェクトＢ）の移動方向制御とを、効率的かつ直感的に独立して入力することができる。また、プレイヤキャラクタＰＣを移動させる操作とパス方向を決定する操作とが独立している（さらには、プレイヤキャラクタＰＣを移動させる操作にかかるハウジング７７とパス方向を決定する操作にかかるハウジング７１とが独立している）ため、自由度が高くリアルなサッカーゲームが実現できる。
【０２５３】
また、第２キャラクタ（ボールオブジェクトＢ）の移動制御について、コアユニット７０による指示座標により決定された第１方向ベクトルに、サブユニット７６の加速度センサ７６１の出力に応じて決定される第２方向ベクトルを加えて、第２キャラクタの移動方向ベクトルとする。具体的には以下のようにすることができる。
【０２５４】
第２キャラクタの移動方向ベクトルを算出する第１の例として、加速度センサ７６１のＸ軸、Ｙ軸、Ｚ軸をそれぞれ、所定座標系のＸ軸、Ｙ軸、Ｚ軸に対応付けた（または前進方向とそれに直交する２方向に対応付けて）加速度センサ７６１の出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。そして、上記方向ベクトルを第２方向ベクトルとして、当該第２方向ベクトルを第１方向ベクトルに加算する。上記第２方向ベクトルの大きさは、固定値でもよいし、上記出力ベクトルの大きさに応じて決めても良い。
【０２５５】
第２キャラクタの移動方向ベクトルを算出する第２の例として、加速度センサ７６１の所定方向（例えば、Ｘ軸方向）の出力値が所定値以上のときに、所定座標系の対応する方向（例えば、Ｘ軸方向）の第２方向ベクトルを、第１方向ベクトルに加算する。
【０２５６】
第２キャラクタの移動方向ベクトルを算出する第３の例として、加速度センサ７６１の所定方向（例えば、Ｘ軸方向）の出力値に応じた大きさで、所定座標系の対応する方向（例えば、Ｘ軸方向）の第２方向ベクトルを、第１方向ベクトルに加算する。
【０２５７】
なお、第２キャラクタの移動方向ベクトルを算出する第２および第３の例について、複数の方向について実施してもよい。すなわち、例えば、第３の例について、加速度センサ７６１のＸ軸方向の出力値に応じた大きさで、所定座標系のＸ軸方向の第２方向ベクトルを第１方向ベクトルに加算し、さらに、加速度センサ７６１のＹ軸方向の出力値に応じた大きさで所定座標系のＹ軸方向の第２方向ベクトルを当該第１方向ベクトルに加算してもよい。
【０２５８】
なお、上記所定座標系は、プレイヤキャラクタＰＣのローカル座標系でもよいし、仮想ゲーム空間の座標系でもよいし（この場合、第２方向ベクトルは、典型的には仮想垂直方向や仮想水平方向などとなる）、カメラ座標系であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく座標系（例えば、上記第２方向ベクトルが当該移動方向に直交する方向など）であってもよい。
【０２５９】
これらにより、コアユニット７０による指示座標によりキャラクタの移動方向を制御しつつ、サブユニットを傾けたり動かしたりすることによりその方向を補正するような操作が実現できる。
【０２６０】
次に、図２１を参照して、上記ステップ１７における第１シュート処理について、詳細な動作を説明する。
【０２６１】
図２１において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコアキーデータを参照する（ステップ１０１）。次に、ＣＰＵ３０は、上記ステップ１０１で参照したコアキーデータに基づいて、プレイヤがコアユニット７０の操作部７２ｄ（Ａボタン）および操作部７２ｉ（Ｂボタン）を同時に押下しているか否かを判断する（ステップ１０２）。そして、ＣＰＵ３０は、プレイヤがＡおよびＢボタンを同時に押下している場合、次のステップ１０３に処理を進める。一方、ＣＰＵ３０は、プレイヤがＡおよびＢボタンを同時に押下していない場合、当該サブルーチンによる処理を終了して、上記ステップ１８の処理へ進める。
【０２６２】
ステップ１０３において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。そして、ＣＰＵ３０は、コア加速度データに応じて、ボール移動ベクトルを算出して、移動ベクトルデータＤｃを更新し（ステップ１０４）、処理を次のステップに進める。例えば、ＣＰＵ３０は、ボールオブジェクトＢをキープしているプレイヤキャラクタＰＣの前方方向（例えば、移動方向；すなわち、ＰＣの移動方向ベクトルの方向）で、参照したコア加速度データに含まれるＺ軸方向の加速度の大きさに応じた大きさのボール移動ベクトルを算出する。
【０２６３】
これにより、サブユニット７６に設けられた方向指示部（スティック７８ａ）でボールオブジェクトＢの移動方向が制御されながら、ボールオブジェクトＢの移動速度がコアユニット７０に設けられた加速度センサ７０１から出力される加速度データに応じて決定される。つまり、プレイヤは、ボールオブジェクトＢの移動方向制御と移動速度制御とを、それぞれの手で独立して効率的かつ直感的に入力することができる。さらに、サブユニット７６に設けられた方向指示部（スティック７８ａ）の傾斜量に応じてボールオブジェクトＢの移動速度を制御するようにして、ボールオブジェクトＢの移動速度をサブユニット７６に設けられた加速度センサ７６１から出力される加速度データ（または当該加速度データの所定軸方向の成分）に応じて補正するようにしてもよい（例えば、Ｚ軸方向の加速度があったときに、所定値を加算してもよいし、ｎ倍（ｎ＞１）するようにしてもよいし、Ｚ軸方向の加速度の大きさに応じて倍数を決定するようにしてもよい）。つまり、プレイヤは、ボールオブジェクトＢの移動方向制御と移動速度制御（または移動速度補正制御）とを、それぞれの手で独立して効率的かつ直感的に入力することができる。
【０２６４】
次に、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する（ステップ１０５）。そして、ＣＰＵ３０は、サブ加速度データが示すＺ軸方向の加速度が負（つまり、Ｚ軸負方向の加速度を検出）であるか否かを判断する（ステップ１０６）。そして、ＣＰＵ３０は、Ｚ軸方向の加速度が負である場合、仮想ゲーム空間に対する垂直上方向のベクトルを、ボール移動ベクトルに加えて移動ベクトルデータＤｃを更新し（ステップ１０７）、次のステップ１０８に処理を進める。なお、当該加える垂直上方向のベクトルは、当該Ｚ軸方向の加速度の大きさに応じた大きさとしてもよい。一方、ＣＰＵ３０は、Ｚ軸方向の加速度が負でない場合、そのまま次のステップ１０８へ処理を進める。
【０２６５】
ステップ１０８において、ＣＰＵ３０は、上記ステップ１０５で参照したサブ加速度データが示すＸ軸方向の加速度データに応じてボール移動ベクトルを変更し、処理を次のステップに進める。例えば、ＣＰＵ３０は、仮想水平面に平行で当該ボール移動ベクトルに直交する方向（向きは、Ｘ軸方向の加速度データの正負で決定する）で当該Ｘ軸方向の加速度の大きさに応じた大きさのベクトルを、現在のボール移動ベクトルに加えて、移動ベクトルデータＤｃを更新する。
【０２６６】
これにより、サブユニット７６に設けられた方向指示部（スティック７８ａ）でボールオブジェクトＢの移動方向が制御されながら、ボールオブジェクトＢの移動方向がサブユニット７６に設けられた加速度センサ７６１から出力される加速度データに応じて補正される。つまり、プレイヤは、ボールオブジェクトＢの移動方向制御と移動方向補正制御とを、片手で効率的かつ直感的に入力することができる。また、補正ベクトルの向きは、仮想ゲーム空間における固定方向（仮想垂直方向、仮想水平方向など）であってもよいし、仮想カメラの視線方向に基づく方向（当該視線方向または当該視線方向に直交する方向など）であってもよいし、方向指示部により決定される移動方向に基づく方向（当該移動方向に直交する方向など）であってもよいし、プレイヤキャラクタＰＣのローカル座標系における所定軸方向であってもよい。
【０２６７】
次に、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれるコア加速度データの履歴を参照し、ＸＹＺ軸方向それぞれに生じた直近の所定時間分の加速度平均を算出する（ステップ１０９）。そして、ＣＰＵ３０は、上記ステップ１０９で算出したＺ軸方向の加速度平均の大きさが所定値以上か否かを判断する（ステップ１１０）。そして、ＣＰＵ３０は、Ｚ軸方向の加速度平均の大きさが所定値以上である場合、ステップ１１１に処理を進める。一方、ＣＰＵ３０は、Ｚ軸方向の加速度平均の大きさが所定値未満である場合、ステップ１１２に処理を進める。
【０２６８】
ステップ１１１において、ＣＰＵ３０は、ボール移動ベクトルの大きさを増加させる。例えば、所定値を加算してもよいし、ｎ倍（ｎ＞１）してもよいし、上記ステップ１０９で算出したＺ軸方向の加速度平均の大きさに応じて増加させてもよい。
【０２６９】
ステップ１１２において、ＣＰＵ３０は、上記ステップ１０９で算出したＹ軸方向の加速度平均の大きさが所定値以上か否かを判断する。なお、図５等から明らかなように、コアユニット７０を水平に保持した場合、重力加速度がＹ軸負方向に常に作用するため、ステップ１１２における判定基準は、当該重力加速度を考慮した所定値を設定するのが好ましい。そして、ＣＰＵ３０は、Ｙ軸方向の加速度平均の大きさが所定値以上である場合、ステップ１１３に処理を進める。一方、ＣＰＵ３０は、Ｙ軸方向の加速度平均の大きさが所定値未満である場合、ステップ１１４に処理を進める。
【０２７０】
ステップ１１３において、ＣＰＵ３０は、垂直上方向のベクトルを、ボール移動ベクトルに加えて移動ベクトルデータＤｃを更新し、次のステップ１１４に処理を進める。当該垂直上方向のベクトルの大きさは、固定の大きさでもよいし、上記ステップ１０９で算出したＹ軸方向の加速度平均の大きさに応じた大きさでもよい。
【０２７１】
ステップ１１４において、ＣＰＵ３０は、上記ステップ１０９で算出したＸ軸方向の加速度平均の大きさが所定値以上か否かを判断する。そして、ＣＰＵ３０は、Ｘ軸方向の加速度平均の大きさが所定値以上である場合、ステップ１１５に処理を進める。一方、ＣＰＵ３０は、Ｘ軸方向の加速度平均の大きさが所定値未満である場合、当該サブルーチンによる処理を終了して、上記ステップ１８の処理へ進める。
【０２７２】
ステップ１１５において、ＣＰＵ３０は、仮想水平面に平行で当該ボール移動ベクトルに直交する方向（向きは、Ｘ軸方向の加速度平均の正負で決定する）のベクトルを、現在のボール移動ベクトルに加えて、移動ベクトルデータＤｃを更新する。そして、ＣＰＵ３０は、当該サブルーチンによる処理を終了して、上記ステップ１８の処理へ進める。なお、上記直交する方向のベクトルの大きさは、上記ステップ１０９で算出したＸ軸方向の加速度平均の大きさに応じた大きさとしてもよい。
【０２７３】
このように、所定操作ボタン（上述の例ではコアユニット７０の操作ボタンとしたがサブユニット７６の操作ボタンでもよい）を操作したときにキャラクタ（ボールオブジェクトＢ）が移動開始し、当該移動方向がサブユニット７６の方向指示部による指示方向に基づいて決定される。さらに、上記移動方向は、上記所定操作ボタンを操作する前のコアユニット７０の加速度センサ７０１の出力に応じて補正される（典型的には、上記所定操作ボタンを操作する前の、直近の所定時間における加速度センサ７０１の出力を利用する）。これにより、プレイヤは、ボールオブジェクトＢの移動方向制御と移動方向補正制御とを、それぞれの手で独立して効率的かつ直感的に入力することができる。なお、上記移動方向を、上記所定操作ボタンを操作する前の加速度センサ７６１の出力に応じて補正するようにしてもよい。また、補正ベクトルの向きは、仮想ゲーム空間の座標系における所定方向（典型的には、いずれかの軸の方向）であってもよいし、カメラ座標系における所定方向であってもよいし、ローカル座標系における所定方向であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく方向（当該移動方向に直交する方向など）であってもよい。これにより、プレイヤは、ボールオブジェクトＢの移動方向制御と移動方向補正制御とを、効率的かつ直感的に入力することができる。
【０２７４】
また、ステップ１７における第１シュート処理においては、プレイヤがＡおよびＢボタンを同時に押下することによって、ボールオブジェクトＢをキープするプレイヤキャラクタＰＣがシュートする動作を行う。そして、プレイヤキャラクタＰＣがシュートする初速度および初期方向は、プレイヤキャラクタＰＣが向く方向と、コアユニット７０から得られるコア加速度データが示す加速度の大きさと、サブユニット７６から得られるサブ加速度データが示す加速度の大きさとによって決定される。つまり、プレイヤキャラクタＰＣがシュートする初期軌道は、単純なボタン操作のみによって決定されるものではなく、プレイヤがシュート操作を行ったときのコアユニット７０およびサブユニット７６全体の動作に応じて決定される。したがって、プレイヤは、コアユニット７０およびサブユニット７６全体を動かしながら、自由度のあるシュートを放つことが可能でありリアルなサッカーゲームが実現できる。
【０２７５】
次に、図２２を参照して、上記ステップ１８における第２シュート処理について、詳細な動作を説明する。
【０２７６】
図２２において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれるコアキーデータの履歴を参照する（ステップ１２１）。次に、ＣＰＵ３０は、上記ステップ１２１で参照したコアキーデータに基づいて、プレイヤがコアユニット７０の操作部７２ｄ（Ａボタン）および操作部７２ｉ（Ｂボタン）を同時に押下してから所定時間内か否かを判断する（ステップ１２２）。そして、ＣＰＵ３０は、プレイヤがＡおよびＢボタンを同時に押下してから所定時間内の場合、次のステップ１２３に処理を進める。一方、ＣＰＵ３０は、プレイヤがＡおよびＢボタンを同時に押下してから所定時間内でない場合、当該サブルーチンによる処理を終了して、上記ステップ１９の処理へ進める。
【０２７７】
ステップ１２３において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。そして、ＣＰＵ３０は、上記ステップ１２３で参照したコア加速度データが示すＺ軸方向の加速度の大きさが所定値以上か否かを判断する（ステップ１２４）。そして、ＣＰＵ３０は、Ｚ軸方向の加速度の大きさが所定値以上である場合、ステップ１２５に処理を進める。一方、ＣＰＵ３０は、Ｚ軸方向の加速度の大きさが所定値未満である場合、ステップ１２６に処理を進める。
【０２７８】
ステップ１２５において、ＣＰＵ３０は、ボール移動ベクトルの大きさを増加させる。例えば、所定値を加算してもよいし、ｎ倍（ｎ＞１）してもよいし、上記ステップ１２３で参照したコア加速度データが示すＺ軸方向の加速度の大きさに応じて増加させてもよい。
【０２７９】
ステップ１２６において、ＣＰＵ３０は、上記ステップ１２３で参照したコア加速度データが示すＹ軸方向の加速度の大きさが所定値以上か否かを判断する。なお、図５等から明らかなように、コアユニット７０を水平に保持した場合、重力加速度がＹ軸負方向に常に作用するため、ステップ１２６における判定基準も、当該重力加速度を考慮した所定値を設定するのが好ましい。そして、ＣＰＵ３０は、Ｙ軸方向の加速度の大きさが所定値以上である場合、ステップ１２７に処理を進める。一方、ＣＰＵ３０は、Ｙ軸方向の加速度の大きさが所定値未満である場合、ステップ１２８に処理を進める。
【０２８０】
ステップ１２７において、ＣＰＵ３０は、仮想ゲーム空間に対する垂直上方向のベクトルを、ボール移動ベクトルに加えて移動ベクトルデータＤｃを更新し、次のステップ１２８に処理を進める。ここで、当該垂直方向のベクトルの大きさは固定の大きさとしてもよいし、上記ステップ１２３で参照したコア加速度データが示すＹ軸方向の加速度の大きさに応じた大きさとしてもよい。
【０２８１】
ステップ１２８において、ＣＰＵ３０は、上記ステップ１２３で参照したコア加速度データが示すＸ軸方向の加速度の大きさが所定値以上か否かを判断する。そして、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値以上である場合、ステップ１２９に処理を進める。一方、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値未満である場合、当該サブルーチンによる処理を終了して、上記ステップ１９の処理へ進める。
【０２８２】
ステップ１２９において、ＣＰＵ３０は、仮想水平面に平行で当該ボール移動ベクトルに直交する方向（向きは、Ｘ軸方向の加速度の正負で決定する）のベクトルを、現在のボール移動ベクトルに加えて、移動ベクトルデータＤｃを更新する。ここで、上記直交する方向のベクトルの大きさは固定の大きさとしてもよいし、上記ステップ１２３で参照したコア加速度データが示すＸ軸方向の加速度の大きさに応じた大きさとしてもよい。そして、ＣＰＵ３０は、当該サブルーチンによる処理を終了して、上記ステップ１９の処理へ進める。
【０２８３】
このように、所定操作ボタン（上述の例ではコアユニット７０の操作ボタンとしたがサブユニット７６の操作ボタンでもよい）を操作したときにキャラクタ（ボールオブジェクトＢ）が移動開始し、当該移動方向がサブユニット７６の方向指示部による指示方向に基づいて決定される。さらに、上記移動方向は、上記所定操作ボタンを操作した後におけるコアユニット７０の加速度センサ７０１の出力に応じて補正される（典型的には、上記所定操作ボタンを操作した直後の直近の所定時間における加速度センサ７０１の出力を利用する）。これにより、プレイヤは、ボールオブジェクトＢの移動方向制御と移動方向補正制御とを、それぞれの手で独立して効率的かつ直感的に入力することができる。なお、上記移動方向を、上記所定操作ボタンを操作した後のおける加速度センサ７６１の出力に応じて補正するようにしてもよい。また、仮想ゲーム空間の座標系における所定方向（典型的には、いずれかの軸の方向）であってもよいし、カメラ座標系における所定方向であってもよいし、ローカル座標系における所定方向であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく方向（当該移動方向に直交する方向など）であってもよい。これにより、プレイヤは、ボールオブジェクトＢの移動方向制御と移動方向補正制御とを、効率的かつ直感的に入力することができる。
【０２８４】
このように、ステップ１８における第２シュート処理においては、プレイヤがＡおよびＢボタンを同時に押下してシュート操作した後のボールの軌道は、コアユニット７０から得られるコア加速度データに応じて、移動速度、移動方向、移動距離等が決定される。例えば、図２８に示すように、ボールオブジェクトＢのボール移動ベクトルＶｍｂによって決定された軌道ａは、コアユニット７０から得られるコア加速度データに応じて軌道ｂや軌道ｃのように変化させることが可能である。つまり、プレイヤキャラクタＰＣの移動制御が方向入力で行われながら、シュートした後の軌道が単純なボタン操作のみによって決定されるものではなく、プレイヤがシュート操作を行った後のコアユニット７０全体の動作に応じて決定される。したがって、プレイヤは、プレイヤキャラクタＰＣの移動方向を制御しつつ、コアユニット７０全体を動かしながら直感的にシュート軌道を変化させることができ、リアルなサッカーゲームが実現できる。
【０２８５】
次に、図２３を参照して、上記ステップ１９における一時監督モード処理について、詳細な動作を説明する。
【０２８６】
図２３において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコアキーデータを参照する（ステップ１３１）。次に、ＣＰＵ３０は、上記ステップ１３１で参照したコアキーデータに基づいて、プレイヤがコアユニット７０の操作部７２ａ（十字キー）の上方向を押下しているか否かを判断する（ステップ１３２）。そして、ＣＰＵ３０は、プレイヤが十字キーの上方向を押下している場合、次のステップ１３３に処理を進める。一方、ＣＰＵ３０は、プレイヤが十字キーの上方向を押下していない場合、次のステップ１３６に処理を進める。
【０２８７】
ステップ１３３において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。次に、ＣＰＵ３０は、コア加速度データが示すＸ軸方向の加速度の大きさが所定値以上であるか否かを判断する（ステップ１３４）。そして、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値以上である場合、次のステップ１３５に処理を進める。一方、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値未満である場合、次のステップ１３６に処理を進める。
【０２８８】
ステップ１３５において、ＣＰＵ３０は、上記ステップ１３３で参照したコア加速度データが示すＸ軸方向の加速度の大きさに基づいて、チームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルを更新して、移動ベクトルデータＤｃを更新し、次のステップ１３６に処理を進める。例えば、図２９に示すように、ＣＰＵ３０は、仮想ゲーム空間に設定されたサッカーフィールドのタッチラインと平行な方向の補正ベクトルを、チームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルに加え、新たな移動ベクトルＶｍｎｐｃを算出する。上記補正ベクトルは、固定の大きさとしてもよいし、上記Ｘ軸方向の加速度の大きさに応じた大きさとしてもよい。なお、補正ベクトルの方向を、コア加速度データが示す加速度の方向に応じて決定してもよい。この場合、以下のような例が考えられる。
【０２８９】
補正ベクトルの方向を決定する第１の例として、コア加速度データの各軸を、それぞれ、仮想ゲーム空間座標の直交する３方向に対応付けて（典型的には、仮想空間座標の各軸に対応付けて）、コア加速度データの出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。
【０２９０】
補正ベクトルの方向を決定する第２の例として、コア加速度データの各軸を、それぞれ、所定キャラクタ（プレイヤキャラクタＰＣなど）のローカル座標系の各軸に対応付けて、コア加速度データの出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。
【０２９１】
補正ベクトルの方向を決定する第３の例として、コア加速度データの各軸を、それぞれ、カメラ座標系の各軸（またはカメラ座標系のＸ、Ｚ軸を仮想水平面に投影した軸）に対応付けて、コア加速度データの出力ベクトルを、仮想空間の方向ベクトルに変換する。
【０２９２】
補正ベクトルの方向を決定する第４の例として、コア加速度データの各軸を、所定キャラクタの移動方向ベクトル（または向きベクトル）とそれに直交する２方向とに対応付けて、コア加速度データの出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。
【０２９３】
なお、上記ステップ１３５の処理においては、コア加速度データの代わりに、サブ加速度データの出力を利用しても良い。
【０２９４】
また、上記ステップ１３５の処理においては、チームＸのプレイヤキャラクタＰＣの移動ベクトルについても、同様のベクトル加算を行って更新してもかまわない。また、チームＸのノンプレイヤキャラクタＮＰＣの何れか（例えば、チームＸのゴールキーパー）を、ベクトル加算の対象から外してもかまわない。また、上述した処理では、タッチラインと平行な方向でＸ軸方向の加速度の大きさに応じた大きさのベクトルを加算する例を示したが、当該ベクトルをそのままチームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルに設定してもかまわない。さらに、加算するベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に対して垂直な水平方向や、当該視線方向を基準とした他の方向に設定してもかまわない。また、一般的に、コアユニット７０をある方向に動かし始めのときに加速度センサ７０１によって検出される加速度ベクトルの方向は、当該動かす方向とは反対方向であるので、そのときに検出された加速度ベクトルの方向を反対にして利用してもかまわない。また、コアユニット７０をある方向に動かした後、その動きを止めたときに加速度センサ７０１によって検出される加速度ベクトルの方向は、当該動かす方向であるので、そのときの検出を使用してもかまわない。この点は、本願明細書の他の箇所に記載した同様の処理についても同じである。
【０２９５】
このように、プレイヤキャラクタＰＣの移動方向がサブユニット７６のスティック７８ａによって制御され、複数のノンプレイヤキャラクタＮＰＣ（プレイヤキャラクタＰＣを含めても良い）の移動方向がコアユニット７０から得られるコア加速度データ（またはサブ加速度データでもよい）に応じて制御される。つまり、プレイヤは、方向指示手段で特定キャラクタの移動方向を制御しながら、コアユニット７０全体（またはサブユニット７６全体）の動作によって複数のキャラクタの移動方向の制御を行うことができる。したがって、プレイヤは、特定キャラクタの移動方向を方向指示手段で制御しながら、複数のキャラクタの移動方向も直感的に操作することができる。
【０２９６】
ステップ１３６において、ＣＰＵ３０は、上記ステップ１３１で参照したコアキーデータに基づいて、プレイヤがコアユニット７０の十字キーの下方向を押下しているか否かを判断する。そして、ＣＰＵ３０は、プレイヤが十字キーの下方向を押下している場合、次のステップ１３７に処理を進める。一方、ＣＰＵ３０は、プレイヤが十字キーの下方向を押下していない場合、当該サブルーチンによる処理を終了して、次のステップ２０に処理を進める。
【０２９７】
ステップ１３７において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新の第１座標データＤａ１および第２座標データＤａ２を参照する。次に、ＣＰＵ３０は、上記ステップ１３７で参照した第１座標データＤａ１および第２座標データＤａ２に対応する指示座標、および当該指示座標に対応する仮想空間位置を算出して、それぞれチームＸの選手モード用コアユニットに対応する指示座標データＤｅおよび仮想空間位置座標データＤｆを更新して（ステップ１３８）、処理を次のステップに進める。なお、上記ステップ１３８で算出する指示座標および仮想空間位置の算出方法については、上記ステップ８４と同様であるため、詳細な説明を省略する。
【０２９８】
次に、ＣＰＵ３０は、指示対象選手データＤｇを参照して、チームＸの選手モード用コントローラ７の指示対象選手が設定されているか否かを判断する（ステップ１３９）。そして、ＣＰＵ３０は、指示対象選手が未設定の場合、次のステップ１４１に処理を進める。一方、ＣＰＵ３０は、指示対象選手が設定されている場合、次のステップ１４３に処理を進める。
【０２９９】
ステップ１４１において、ＣＰＵ３０は、上記ステップ１３８で算出された仮想空間位置を中心とした領域Ａ（図２７参照）内に、チームＸの選手キャラクタのいずれかが配置されているか否かを判断する。次に、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが配置されている場合、当該選手キャラクタをチームＸの選手モード用コントローラ７の指示対象選手に設定して、そのキャラクタ識別番号等を指示対象選手データＤｇに記述する（ステップ１４２）。なお、上記領域Ａ内にチームＸの選手キャラクタが複数存在する場合には、ステップ１３８で算出された仮想空間位置に最も近い選手キャラクタが指示対象選手に設定される。そして、ＣＰＵ３０は、当該サブルーチンによる処理を終了して、次のステップ２０に処理を進める。一方、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが１人も配置されていない場合、そのまま当該サブルーチンによる処理を終了して、次のステップ２０に処理を進める。
【０３００】
ステップ１４３において、ＣＰＵ３０は、算出された仮想空間座標が仮想ゲーム空間に設定されたサッカーフィールド内か否かを判断する。次に、ＣＰＵ３０は、仮想空間座標が上記サッカーフィールド内である場合、仮想空間位置に応じて指示対象選手の移動ベクトルを設定して移動ベクトルデータＤｃを更新する（ステップ１４４）。例えば、ＣＰＵ３０は、指示対象選手の現在の配置位置から仮想空間位置ＴＰ（図２７参照）に向かう方向を当該指示対象選手の移動ベクトルの方向とする。さらに、現在の配置位置から仮想空間位置ＴＰまでの仮想距離に応じた大きさを当該指示対象選手の移動ベクトルの大きさとして設定してもよい。そして、ＣＰＵ３０は、指示対象選手データＤｇに記述されたチームＸの選手モード用コントローラの指示対象選手をクリアし（ステップ１４５）、当該サブルーチンによる処理を終了して、次のステップ２０に処理を進める。一方、ＣＰＵ３０は、仮想空間座標が上記サッカーフィールド外である場合、そのまま当該サブルーチンによる処理を終了して、次のステップ２０に処理を進める。なお、ステップ１４５において、指示対象選手をクリアしなくてもよく、この場合には、指示対象選手を設定した後、その指示対象選手に対して複数回移動指示を出すことが可能になる（この場合には、ボタン操作や所定領域への座標指示などに応じて当該クリアの処理をするとよい）。
【０３０１】
次に、図２４を参照して、上記ステップ２０における監督モード処理について、詳細な動作を説明する。
【０３０２】
図２４において、ＣＰＵ３０は、コントローラ識別番号データＤｂを参照して、チームＸについて監督モード用のコントローラ識別番号が設定されているか否かを判断する（ステップ１５１）。そして、ＣＰＵ３０は、チームＸについて監督モード用のコントローラ識別番号が設定されている場合、次のステップ１５２に処理を進める。一方、ＣＰＵ３０は、チームＸについて監督モード用のコントローラ識別番号が設定されていない場合、当該サブルーチンによる処理を終了して、次のステップ２１に処理を進める。
【０３０３】
ステップ１５２において、ＣＰＵ３０は、操作情報ＤａからチームＸの監督モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。次に、ＣＰＵ３０は、コア加速度データが示すＸ軸方向の加速度の大きさが所定値以上であるか否かを判断する（ステップ１５３）。そして、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値以上である場合、次のステップ１５４に処理を進める。一方、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値未満である場合、次のステップ１５５に処理を進める。
【０３０４】
ステップ１５４において、ＣＰＵ３０は、上記ステップ１５２で参照したコア加速度データが示すＸ軸方向の加速度の大きさに基づいて、チームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルを更新して、移動ベクトルデータＤｃを更新し、次のステップ１５５に処理を進める。例えば、図２９に示すように、ＣＰＵ３０は、仮想ゲーム空間に設定されたサッカーフィールドのタッチラインと平行な方向の補正ベクトルを、チームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルに加え、新たな移動ベクトルＶｍｎｐｃを算出する。上記補正ベクトルは、固定の大きさとしてもよいし、当該Ｘ軸方向の加速度の大きさに応じた大きさとしてもよい。なお、補正ベクトルの方向を、コア加速度データが示す加速度の方向に応じて決定してもよい。具体的には上述した補正ベクトルの方向を決定する第１〜第４の例と同様である。
【０３０５】
なお、上記ステップ１５４の処理においても上記ステップ１３５の処理と同様に、チームＸのプレイヤキャラクタＰＣの移動ベクトルについても、同様のベクトル加算を行って更新してもかまわない。また、チームＸのノンプレイヤキャラクタＮＰＣの何れか（例えば、チームＸのゴールキーパー）を、ベクトル加算の対象から外してもかまわない。また、上述した処理では、タッチラインと平行な方向でＸ軸方向の加速度の大きさに応じた大きさのベクトルを加算する例を示したが、当該ベクトルをそのままチームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルに設定してもかまわない。さらに、加算するベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に対して垂直な水平方向や、当該視線方向を基準とした他の方向に設定してもかまわない。
【０３０６】
ステップ１５５において、ＣＰＵ３０は、操作情報ＤａからチームＸの監督モード用コアユニットから送信された操作情報に含まれる最新の第１座標データＤａ１および第２座標データＤａ２を参照する。次に、ＣＰＵ３０は、上記ステップ１５５で参照した第１座標データＤａ１および第２座標データＤａ２に対応する指示座標、および当該指示座標に対応する仮想空間位置を算出して、それぞれチームＸの監督モード用コアユニットに対応する指示座標データＤｅおよび仮想空間位置座標データＤｆを更新して（ステップ１５６）、処理を次のステップに進める。なお、上記ステップ１５６で算出する指示座標および仮想空間位置の算出方法については、上記ステップ８４と同様であるため、詳細な説明を省略する。
【０３０７】
次に、ＣＰＵ３０は、指示対象選手データＤｇを参照して、チームＸの監督モード用コントローラ７の指示対象選手が設定されているか否かを判断する（ステップ１５７）。そして、ＣＰＵ３０は、指示対象選手が未設定の場合、次のステップ１５８に処理を進める。一方、ＣＰＵ３０は、指示対象選手が設定されている場合、次のステップ１６０に処理を進める。
【０３０８】
ステップ１５８において、ＣＰＵ３０は、上記ステップ１５６で算出された仮想空間位置を中心とした領域Ａ（図２７参照）内に、チームＸの選手キャラクタのいずれかが配置されているか否かを判断する。次に、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが配置されている場合、当該選手キャラクタをチームＸの監督モード用コントローラの指示対象選手に設定して、そのキャラクタ識別番号等を指示対象選手データＤｇに記述する（ステップ１５９）。なお、上記領域Ａ内にチームＸの選手キャラクタが複数存在する場合には、ステップ１３８で算出された仮想空間位置に最も近い選手キャラクタが指示対象選手に設定される。そして、ＣＰＵ３０は、当該サブルーチンによる処理を終了して、次のステップ２１に処理を進める。一方、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが１人も配置されていない場合、そのまま当該サブルーチンによる処理を終了して、次のステップ２１に処理を進める。
【０３０９】
ステップ１６０において、ＣＰＵ３０は、算出された仮想空間座標が仮想ゲーム空間に設定されたサッカーフィールド内か否かを判断する。次に、ＣＰＵ３０は、仮想空間座標が上記サッカーフィールド内である場合、仮想空間位置に応じて指示対象選手の移動ベクトルを設定して移動ベクトルデータＤｃを更新する（ステップ１６１）。例えば、ＣＰＵ３０は、指示対象選手の現在の配置位置から仮想空間位置ＴＰ（図２７参照）に向かう方向を当該指示対象選手の移動ベクトルの方向とする。さらに、現在の配置位置から仮想空間位置ＴＰまでの仮想距離に応じた大きさを当該指示対象選手の移動ベクトルの大きさとして設定してもよい。そして、ＣＰＵ３０は、指示対象選手データＤｇに記述されたチームＸの監督モード用コントローラの指示対象選手をクリアし（ステップ１６２）、当該サブルーチンによる処理を終了して、次のステップ２１に処理を進める。一方、ＣＰＵ３０は、仮想空間座標が上記サッカーフィールド外である場合、そのまま当該サブルーチンによる処理を終了して、次のステップ２１に処理を進める。なお、ステップ１６２において、指示対象選手をクリアしなくてもよく、この場合には、指示対象選手を設定した後、その指示対象選手に対して複数回移動指示を出すことが可能になる（この場合には、ボタン操作や所定領域への座標指示などに応じて当該クリアの処理をするとよい）。
【０３１０】
このように、ステップ２０における監督モード処理においては、プレイヤが操作するコントローラ７を監督モードに設定することによって、チーム全体に対して総合的な操作が可能となる。具体的には、チーム内の複数のノンプレイヤキャラクタＮＰＣ（プレイヤキャラクタＰＣを含めても良い）の移動方向が、コアユニット７０から得られるコア加速度データ（またはサブ加速度データでもよい）に応じて制御される。つまり、プレイヤは、コアユニット７０全体（またはサブユニット７６全体）の動作によって複数のキャラクタの移動方向の制御を行うことができる。したがって、プレイヤは、監督モードで複数のキャラクタの移動方向を直感的に操作することができる。
【０３１１】
なお、上述したフローチャートの処理から明らかなように、ステップ１９における一時監督モード処理では、十字キーを操作する手順が異なるが、他の処理についてはステップ２０の監督モード処理と類似している。つまり、プレイヤが操作するコントローラ７が選手モードに設定されていても、十字キーの上下方向を操作することによって、上述した監督モードと同様の操作が可能になっている。
【０３１２】
また、上記ステップ２２の処理においては、移動ベクトルデータＤｃに記述された各移動ベクトルデータがそれぞれ所定量減衰するが、ノンプレイヤキャラクタＮＰＣが所定の地点まで到達するまで継続して動作させたい場合、当該ノンプレイヤキャラクタＮＰＣの移動ベクトルについては減衰しなくてもかまわない。例えば、指示対象選手をコアユニット７０で指し示した仮想空間位置ＴＰまで移動させたい場合、当該指示対象選手が仮想空間位置ＴＰに到達するまで当該指示対象選手の移動ベクトルの大きさおよび方向を維持してもかまわない。
【０３１３】
また、上述した説明では、表示画面に対して遠隔から座標指定するために、コアユニット７０に設けられた撮像素子７４３で撮像対象を撮像した画像データを解析することによって、モニタ２の表示画面に対して座標指定する態様を用いた。この態様は、表示画面近傍に撮像対象となる２つのマーカを設置し、撮像手段およびその撮像方向を自在に変更可能なハウジングを備えたデバイスが撮像画像中の２つのマーカを検出し、当該撮像画像におけるマーカの位置に基づいて当該デバイスが指定する座標位置を導出するものである。しかしながら、他の態様で上記座標指定を行ってもかまわない。
【０３１４】
例えば、表示画面近傍に設置する撮像対象は、上述した電気的なマーカ（ＬＥＤモジュール）の他に、光を反射する部材や特定色や特定形状を有する物理的なマーカでもかまわない。また、モニタ２の表示画面に撮像対象を表示してもかまわない。また、コアユニット７０が備える撮像手段でラスタスキャン型モニタの走査線を読み取ることによって、当該モニタ自体を撮像対象にしてもかまわない。また、磁気発生装置を設け、当該磁気発生装置から生じる磁気を利用して遠隔から座標指定してもかまわない。この場合、コアユニット７０には、上記磁気を検出するための磁気センサを設けることになる。
【０３１５】
また、上述した説明では、２つのマーカ８Ｌおよび８Ｒからの赤外光を、コアユニット７０の撮像情報演算部７４の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、１つまたは３つ以上のマーカをモニタ２の近傍に設置し、それらのマーカからの赤外光を撮像情報演算部７４の撮像対象としてもかまわない。例えば、所定の長さを有する１つのマーカをモニタ２の近傍に設置しても、本発明を同様に実現することができる。また、モニタ２の表示画面自体や他の発光体（室内灯等）を撮像情報演算部７４の撮像対象としてもかまわない。撮像対象とモニタ２の表示画面との配置関係に基づいて、当該表示画面に対するコアユニット７０の位置を演算すれば、様々な発光体を撮像情報演算部７４の撮像対象として用いることができる。
【０３１６】
また、コアユニット７０側にマーカ等の撮像対象を設けて、撮像手段をモニタ２側に設けてもかまわない。さらに他の例では、コアユニット７０の前面から光を放射する機構を設けてもかまわない。この場合、コアユニット７０およびモニタ２とは別の場所にモニタ２の表示画面を撮像する撮像装置を設置し、モニタ２の表示画面にコアユニット７０から放射された光が反射した位置を当該撮像装置が撮像した画像から解析することによって、同様に表示画面に対して遠隔から座標指定するためのデータを出力可能なポインティングデバイスを構成することができる。
【０３１７】
また、上述した説明では、コントローラ７とゲーム装置本体５とが無線通信によって接続された態様を用いたが、コントローラ７とゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、コアユニット７０とサブユニット７６とが接続ケーブル７９で接続され、コアユニット７０とゲーム装置本体５とが別のケーブルで接続される。
【０３１８】
また、上述したコントローラ７の形状や、それらに設けられている操作部７２および７８の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。
【０３１９】
また、本発明のゲームプログラムは、光ディスク４等の外部記憶媒体を通じてゲーム装置本体５に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体５に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体５内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【産業上の利用可能性】
【０３２０】
本発明に係るゲームシステムおよびゲームプログラムは、ゲームコントローラのハウジングをプレイヤが片手で把持して操作可能であるため、入力装置が小型であり扱いやすく、ゲーム装置本体等とゲームコントローラ等とが別体で構成されるゲームシステムや当該ゲーム装置本体で実行されるゲームプログラムとして有用である。
【図面の簡単な説明】
【０３２１】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１のコントローラ７の外観構成を示す斜視図
【図４】図３のコントローラ７の接続ケーブル７９をコアユニット７０から脱着する状態を示す斜視図
【図５】図３のコアユニット７０の上面後方から見た斜視図
【図６】図５のコアユニット７０を下面前方から見た斜視図
【図７】図５のコアユニット７０の上筐体を外した状態を示す斜視図
【図８】図６のコアユニット７０の下筐体を外した状態を示す斜視図
【図９】サブユニット７６の一例を示す斜視図
【図１０】図９のサブユニット７６の上筐体を外した状態を示す斜視図
【図１１】図３のコントローラ７の構成を示すブロック図
【図１２】図３のコントローラ７を用いてゲーム操作するときの状態を概説する図解図
【図１３】プレイヤがコアユニット７０を右手で把持した状態をコアユニット７０の前面側から見た一例
【図１４】プレイヤがコアユニット７０を右手で把持した状態をコアユニット７０の左側面側から見た一例
【図１５】ＬＥＤモジュール８Ｌおよび８Ｒと撮像素子７４３との視野角を説明するための図
【図１６】プレイヤがサブユニット７６を左手で把持した状態をサブユニット７６の右側面側から見た一例
【図１７】ゲーム装置本体５のメインメモリ３３に記憶される主なデータを示す図
【図１８】ゲーム装置本体５において実行されるゲーム処理の流れを示すフローチャート
【図１９】図１８におけるステップ１５のサブユニット移動処理の詳細な動作を示すサブルーチン
【図２０】図１８におけるステップ１６のパス処理の詳細な動作を示すサブルーチン
【図２１】図１８におけるステップ１７の第１シュート処理の詳細な動作を示すサブルーチン
【図２２】図１８におけるステップ１８の第２シュート処理の詳細な動作を示すサブルーチン
【図２３】図１８におけるステップ１９の一時監督モード処理の詳細な動作を示すサブルーチン
【図２４】図１８におけるステップ２０の監督モード処理の詳細な動作を示すサブルーチン
【図２５】モニタ２に表示されるゲーム画像の一例
【図２６】プレイヤキャラクタＰＣに設定される姿勢ベクトルＶｃを説明するための図
【図２７】パスの目標位置ＴＰと領域ＡおよびＢを説明するための図
【図２８】ボールオブジェクトＢが移動する軌道の一例を示す図
【図２９】ノンプレイヤキャラクタＮＰＣに設定される移動ベクトルＶｍｎｐｃの一例を示す図
【符号の説明】
【０３２２】
１…ゲームシステム
２…モニタ
２ａ、７０６…スピーカ
３…ゲーム装置
３０…ＣＰＵ
３１…メモリコントローラ
３２…ＧＰＵ
３３…メインメモリ
３４…ＤＳＰ
３５…ＡＲＡＭ
３６…コントローラＩ／Ｆ
３７…ビデオＩ／Ｆ
３８…フラッシュメモリ
３９…オーディオＩ／Ｆ
４０…ディスクドライブ
４１…ディスクＩ／Ｆ
４…光ディスク
５…ゲーム装置本体
６…通信ユニット
７…コントローラ
７０…コアユニット
７１、７７…ハウジング
７２、７８…操作部
７３、７９１…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１、７６１…加速度センサ
７０２…ＬＥＤ
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
７６…サブユニット
７９…接続ケーブル
８…マーカ
【図１】
0005525681.tif 000002
【図２】
0005525681.tif 000003
【図３】
0005525681.tif 000004
【図４】
0005525681.tif 000005
【図５】
0005525681.tif 000006
【図６】
0005525681.tif 000007
【図７】
0005525681.tif 000008
【図８】
0005525681.tif 000009
【図９】
0005525681.tif 000010
【図１０】
0005525681.tif 000011
【図１１】
0005525681.tif 000012
【図１２】
0005525681.tif 000013
【図１３】
0005525681.tif 000014
【図１４】
0005525681.tif 000015
【図１５】
0005525681.tif 000016
【図１６】
0005525681.tif 000017
【図１７】
0005525681.tif 000018
【図１８】
0005525681.tif 000019
【図１９】
0005525681.tif 000020
【図２０】
0005525681.tif 000021
【図２１】
0005525681.tif 000022
【図２２】
0005525681.tif 000023
【図２３】
0005525681.tif 000024
【図２４】
0005525681.tif 000025
【図２５】
0005525681.tif 000026
【図２６】
0005525681.tif 000027
【図２７】
0005525681.tif 000028
【図２８】
0005525681.tif 000029
【図２９】
0005525681.tif 000030