(57)【特許請求の範囲】
【請求項１】
プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムであって、
少なくとも前記ゲームコントローラは、前記ハウジングに設けられ、方向指示入力するための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する移動ベクトル制御手段と、
前記検出部の検出に基づき、前記ハウジングの基準姿勢からの姿勢変化に応じて、前記移動ベクトル制御手段によって決定された移動ベクトルを補正する補正手段と、
前記補正手段によって補正された移動ベクトルに基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段とを備える、ゲームシステム。
【請求項２】
前記補正手段は、前記ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界における所定方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する、請求項１に記載のゲームシステム。
【請求項３】
前記補正手段は、前記ハウジングの左右軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前方向への移動量が増加するように前記移動ベクトルを補正する、請求項２に記載のゲームシステム。
【請求項４】
前記補正手段は、前記ハウジングの前後軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界における前記オブジェクトの左右方向への移動量が増加するように前記移動ベクトルを補正する、請求項２に記載のゲームシステム。
【請求項５】
前記補正手段は、前記ハウジングの所定軸が当該所定軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における所定方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する、請求項１に記載のゲームシステム。
【請求項６】
前記補正手段は、前記ハウジングの第１軸が当該第１軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第１方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正し、
前記補正手段は、前記ハウジングの前記第１軸とは異なる第２軸が当該第２軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における前記第１方向とは異なる第２方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する、請求項１に記載のゲームシステム。
【請求項７】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向に傾倒させる入力が可能なものであり、
前記移動ベクトル制御手段は、前記スティックが前記所定方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを第１方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングが前記所定方向に傾くように回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前記第１方向への移動量が増加するように前記移動ベクトルを補正する、請求項１に記載のゲームシステム。
【請求項８】
前記方向指示部は、少なくともスティックが前記ハウジングの所定軸周りに回転するように傾倒させる入力が可能なものであり、
前記移動ベクトル制御手段は、前記スティックが前記所定軸周りに回転する方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを第１方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングが前記所定軸周りに回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前記第１方向への移動量が増加するように前記移動ベクトルを補正する、請求項１に記載のゲームシステム。
【請求項９】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能なものであり、
前記移動ベクトル制御手段は、前記スティックが前記所定方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを第１方向に移動させるように前記移動ベクトルを決定し、かつ、前記スティックが前記直交する方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを前記第１方向と直交する第２方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングが前記所定方向に傾くように回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前記第１方向への移動量が増加するように前記移動ベクトルを補正し、かつ、前記ハウジングが前記直交する方向に傾くように回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前記第２方向への移動量が増加するように前記移動ベクトルを補正する、請求項１に記載のゲームシステム。
【請求項１０】
前記方向指示部は、少なくともスティックを前記ハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能なものであり、
前記移動ベクトル制御手段は、前記方向指示部による指示方向に応じて、前記スティックが前記ハウジングの前方向に傾倒されたときに仮想ゲーム世界において前記オブジェクトが移動する方向である基準方向を変更し、前記オブジェクトを当該基準方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングが前記前方向に傾いたことに応じて、仮想ゲーム世界における前記オブジェクトの前記基準方向への移動量が増加するように前記移動ベクトルを補正する、請求項１に記載のゲームシステム。
【請求項１１】
プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムであって、
前記ゲームコントローラは、
その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジングと、
前記ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置に配設され、前記ハウジングの前後左右方向への指示入力するための方向指示部と、
前記ハウジングの動きを検出する動き検出手段とを備え、
前記ゲーム装置は、
前記方向指示部により前記ハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの後ろ方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの左右方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向として決定する移動ベクトル制御手段と、
前記方向指示部により前記ハウジングの前方向への指示がされ、かつ、前記動き検出手段の検出に基づいて前記ハウジングの前方向に当該ハウジングが回転したことを示すとき、仮想ゲーム世界における前記前方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する補正手段と、
仮想ゲーム世界内で、前記補正手段によって補正された移動ベクトルに基づいて前記オブジェクトを移動させる移動制御手段とを備える、ゲームシステム。
【請求項１２】
前記移動ベクトル制御手段は、前記方向指示部で操作された指示方向に応じて、仮想ゲーム世界における前記オブジェクトの前方向を基準とした前記移動ベクトルの方向を決定し、
前記ゲーム装置は、前記移動ベクトル制御手段によって決定され前記補正手段によって補正された移動ベクトルの方向を、前記オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界における前記オブジェクトの方向を変更するオブジェクト方向制御手段を、さらに備える、請求項２乃至１１の何れかに記載のゲームシステム。
【請求項１３】
プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムであって、
前記ゲームコントローラは、少なくとも、
プレイヤが片手で把持可能なハウジングと、
前記ハウジングに生じる加速度を検出する加速度検出手段と、
前記ハウジングに設けられ、方向指示入力するための方向指示部とを備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する移動ベクトル制御手段と、
前記加速度検出手段の検出に基づき、前記ハウジングに生じた加速度に応じて、前記移動ベクトル制御手段によって決定された移動ベクトルを補正する補正手段と、
前記補正手段によって補正された移動ベクトルに基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段とを備える、ゲームシステム。
【請求項１４】
前記補正手段は、前記ハウジングの所定軸方向に生じた加速度に応じて、仮想ゲーム世界における所定方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する、請求項１３に記載のゲームシステム。
【請求項１５】
前記補正手段は、前記ハウジングの前方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前方向への移動量が増加するように前記移動ベクトルを補正する、請求項１４に記載のゲームシステム。
【請求項１６】
前記補正手段は、前記ハウジングの左右方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの左右方向への移動量が増加するように前記移動ベクトルを補正する、請求項１４に記載のゲームシステム。
【請求項１７】
前記補正手段は、前記ハウジングの第１方向に生じた加速度に応じて、仮想ゲーム世界における第１方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正し、
前記補正手段は、前記ハウジングの前記第１方向とは異なる第２方向に生じた加速度に応じて、仮想ゲーム世界における前記第１方向とは異なる第２方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する、請求項１３に記載のゲームシステム。
【請求項１８】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向に傾倒させる入力が可能なものであり、
前記移動ベクトル制御手段は、前記スティックが前記所定方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを第１方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングの前記所定方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前記第１方向への移動量が増加するように前記移動ベクトルを補正する、請求項１３に記載のゲームシステム。
【請求項１９】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能なものであり、
前記移動ベクトル制御手段は、前記スティックが前記所定方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを第１方向に移動させるように前記移動ベクトルを決定し、かつ、前記スティックが前記直交する方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを前記第１方向と直交する第２方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングの前記所定方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前記第１方向への移動量が増加するように前記移動ベクトルを補正し、かつ、前記ハウジングの前記直交する方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前記第２方向への移動量が増加するように前記移動ベクトルを補正する、請求項１３に記載のゲームシステム。
【請求項２０】
前記方向指示部は、少なくともスティックを前記ハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能なものであり、
前記移動ベクトル制御手段は、前記方向指示部による指示方向に応じて、前記スティックが前記ハウジングの前方向に傾倒されたときに仮想ゲーム世界において前記オブジェクトが移動する方向である基準方向を変更し、前記オブジェクトを当該基準方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングの前記前方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前記基準方向への移動量が増加するように前記移動ベクトルを補正する、請求項１３に記載のゲームシステム。
【請求項２１】
プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムであって、
前記ゲームコントローラは、
その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジングと、
前記ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置に配設され、前記ハウジングの前後左右方向への指示入力するための方向指示部と、
少なくとも前記ハウジングの前方向に生じる加速度を検出する加速度検出手段とを備え、
前記ゲーム装置は、
前記方向指示部により前記ハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの後ろ方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの左右方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向として決定する移動ベクトル制御手段と、
前記方向指示部により前記ハウジングの前方向への指示がされ、かつ、前記加速度検出手段の検出に基づいて、前記ハウジングの前方向に加速度が生じたときに、仮想ゲーム世界における前記オブジェクトの前方向への移動量が増加するように前記移動ベクトルを補正する補正手段と、
仮想ゲーム世界内で、前記補正手段によって補正された移動ベクトルに基づいて前記オブジェクトを移動させる移動制御手段とを備える、ゲームシステム。
【請求項２２】
前記移動ベクトル制御手段は、前記方向指示部で操作された指示方向に応じて、仮想ゲーム世界における前記オブジェクトの前方向を基準とした前記移動ベクトルの方向を決定し、
前記ゲーム装置は、前記移動ベクトル制御手段によって決定され前記補正手段によって補正された移動ベクトルの方向を、前記オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界における前記オブジェクトの方向を変更するオブジェクト方向制御手段を、さらに備える、請求項１３乃至２１の何れかに記載のゲームシステム。
【請求項２３】
前記第１軸と前記第２軸とは、互いに直交し、
前記第１方向と前記第２方向とは、仮想ゲーム世界において互いに直交する、請求項６に記載のゲームシステム。
【請求項２４】
前記ハウジングの第１方向と第２方向とは、互いに直交し、
前記仮想ゲーム世界における第１方向と第２方向とは、仮想ゲーム世界において互いに直交する、請求項１７に記載のゲームシステム。
【請求項２５】
前記ハウジングは、当該ハウジングの側周をプレイヤが片手で握持可能な形状および大きさで形成される、請求項１または１３に記載のゲームシステム。
【請求項２６】
前記ハウジングは、当該ハウジングの側周をプレイヤが片手で握持したときに、当該片手の親指で操作可能な位置に前記方向指示部が配設される、請求項２５に記載のゲームシステム。
【請求項２７】
プレイヤが片手で把持可能なハウジングおよび当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムにおいて、当該ゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する移動ベクトル制御手段と、
前記検出部の検出に基づき、前記ハウジングの基準姿勢からの姿勢変化に応じて、前記移動ベクトル制御手段によって決定された移動ベクトルを補正する補正手段と、
前記補正手段によって補正された移動ベクトルに基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段として機能させる、ゲームプログラム。
【請求項２８】
その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジング、当該ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置に配設され、前記ハウジングの前後左右方向への指示入力するための方向指示部、および当該ハウジングの動きを検出する動き検出手段を備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部により前記ハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの後ろ方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの左右方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向として決定する移動ベクトル制御手段と、
前記方向指示部により前記ハウジングの前方向への指示がされ、かつ、前記動き検出手段の検出に基づいて前記ハウジングの前方向に当該ハウジングが回転したことを示すとき、仮想ゲーム世界における前記前方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する補正手段と、
仮想ゲーム世界内で、前記補正手段によって補正された移動ベクトルに基づいて前記オブジェクトを移動させる移動制御手段として機能させる、ゲームプログラム。
【請求項２９】
プレイヤが片手で把持可能なハウジング、当該ハウジングに生じる加速度を検出する加速度検出手段、および当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する移動ベクトル制御手段と、
前記加速度検出手段の検出に基づき、前記ハウジングに生じた加速度に応じて、前記移動ベクトル制御手段によって決定された移動ベクトルを補正する補正手段と、
前記補正手段によって補正された移動ベクトルに基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段として機能させる、ゲームプログラム。
【請求項３０】
その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジング、当該ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置に配設され、前記ハウジングの前後左右方向への指示入力するための方向指示部、および少なくとも当該ハウジングの前方向に生じる加速度を検出する加速度検出手段を備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部により前記ハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの後ろ方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの左右方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向として決定する移動ベクトル制御手段と、
前記方向指示部により前記ハウジングの前方向への指示がされ、かつ、前記加速度検出手段の検出に基づいて、前記ハウジングの前方向に加速度が生じたときに、仮想ゲーム世界における前記オブジェクトの前方向への移動量が増加するように前記移動ベクトルを補正する補正手段と、
仮想ゲーム世界内で、前記補正手段によって補正された移動ベクトルに基づいて前記オブジェクトを移動させる移動制御手段として機能させる、ゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームシステムおよびゲームプログラムに関し、より特定的には、コントローラのハウジングの姿勢変化やハウジングに生じる加速度を検出して操作されるゲームシステムおよびゲームプログラムに関する。
【背景技術】
【０００２】
従来、プレイヤが入力装置を操作することによって、ゲームをプレイするゲーム装置が各種開発されている。例えば、プレイヤ操作するゲームコントローラの方向指示入力手段からの出力を用いて、ゲーム処理する装置が開示されている（例えば、特許文献１参照）。上記特許文献１で開示されたゲーム装置は、方向指示入力手段としてジョイスティック３７を用いて選手キャラクタの仮想ゲーム世界における移動制御を行いつつ、Ｒ１ボタン３８を押下することによって当該選手キャラクタがダッシュして移動する。
【特許文献１】特開２００２−２６３３６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記特許文献１で開示されたゲーム装置は、方向指示入力手段（ジョイスティック３７）で決定された選手キャラクタの移動制御の内容を、ボタン（Ｒ１ボタン３８）押下操作で補正するものであるため、プレイヤの操作が煩雑となる。また、上記特許文献１で開示されたゲーム装置は、仮想ゲーム世界に対するゲーム入力のダイレクト感を効果的にプレイヤに感じさせるようなインターフェースではない。例えば、上記特許文献１で開示されたゲーム装置は、方向指示入力手段を用いた操作によって選手キャラクタの仮想ゲーム世界における移動方向と移動量との両方を入力するため、プレイヤの指先だけの操作となり、ゲーム入力のダイレクト感が得られない。
【０００４】
それ故に、本発明の目的は、上述した課題の少なくとも１つを解決するものであり、プレイヤキャラクタの移動制御を直感的かつ容易な操作で多様に制御する、または、ゲーム入力のダイレクト感を効果的に感じさせるゲームシステムおよびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００５】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００６】
第１の発明は、プレイヤが片手で把持可能なハウジング（７７）を有するゲームコントローラ（７、７６）と、当該ゲームコントローラと接続されるゲーム装置（５）と、当該ハウジングの姿勢を検出する検出部（７０１）とを含むゲームシステム（３）である。少なくともゲームコントローラは、方向指示部（７８ａ）を備える。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、移動ベクトル制御手段（Ｓ４３）、補正手段（Ｓ４６、Ｓ５２）、および移動制御手段（Ｓ２１）を備える。移動ベクトル制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクト（ＰＣ）の移動ベクトルを決定する。補正手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、移動ベクトル制御手段によって決定された移動ベクトルを補正する。移動制御手段は、補正手段によって補正された移動ベクトルに基づいて、オブジェクトを仮想ゲーム世界において移動制御する。なお、方向指示部は、例えば、ジョイスティック、十字キー、または、複数のボタンキー（それぞれに各方向が割り当てられる）とすることができる。
【０００７】
移動ベクトル制御手段は、少なくともオブジェクトの仮想ゲーム世界における移動方向を決定するものであり、それに加えて仮想ゲーム世界における移動量を決定してもよい。補正手段は、移動ベクトル制御手段によって決定された移動ベクトルを補正するが、移動ベクトル制御手段によって決定された移動方向を補正してもよいし、移動ベクトル制御手段が移動量も決定する場合には、当該移動量を補正してもよい。すなわち、以下のバリエーションが考えられる。
・移動ベクトル制御手段が移動方向を決定し、補正手段が移動方向を補正する。
・移動ベクトル制御手段が移動方向および移動量を決定し、補正手段が移動方向を補正する。
・移動ベクトル制御手段が移動方向および移動量を決定し、補正手段が移動量を補正する。
・移動ベクトル制御手段が移動方向および移動量を決定し、補正手段が移動方向および移動量を補正する。
・３次元の仮想ゲーム空間であり、移動ベクトル制御手段が２次元の移動成分（典型的には仮想水平２方向の移動量）を決定し、補正手段が残りの１次元の移動成分（典型的には仮想垂直方向の移動量）を決定する。
【０００８】
なお、上述における「移動量」に代えて、「移動速度」や「移動加速度」としてもよい。
【０００９】
検出部は所定のセンサを含むものであり、補正手段は当該センサの出力値に基づいてハウジングの基準姿勢からの姿勢変化を判断して移動ベクトルを補正する。補正手段は、ハウジングの基準姿勢からの姿勢変化を判断するが、より具体的には、ハウジングが基準姿勢から所定軸周りに回転したことを判断する。この所定軸は、ハウジングの所定軸であってもよいし、現実世界における所定軸であってもよい。すなわち、補正手段は、ハウジングの所定軸周りに当該ハウジングが回転したことを判断してもよいし、現実世界における所定軸周りに当該ハウジングが回転したことを判断してもよい。前者について、例えば、ハウジングの前後軸周り（例えば、ハウジングの長軸周り）の回転（ロール）、ハウジングの左右軸周り（例えば、ハウジングの左右短軸周り）の回転（ピッチ）、ハウジングの上下軸周り（例えば、ハウジングの上下短軸周り）の回転（ヨー）を判断してもよい。また、後者について、例えば、水平軸周りの回転や鉛直軸周りの回転を判断してもよい。補正手段は、基準姿勢からのハウジングの回転角度を算出してもよいが、これは必須ではない。例えば、後述の実施例のように、加速度センサによって所定軸方向にかかる重力加速度を検出する場合、回転角度を算出しなくても、検出した加速度の大小や方向に基づいて、基準姿勢から所定軸周りにハウジングが回転したことを判断することができる。
【００１０】
典型的には、検出部は、ハウジングに固設されるセンサである。このセンサとしては、重力方向に対する傾き（以下、単に「傾き」と言う）に応じたデータを出力するセンサ（加速度センサ、傾きセンサ）、方位に応じたデータを出力するセンサ（磁気センサ）、回転運動に応じたデータを出力するセンサ（ジャイロセンサ）などを用いることができる。また、加速度センサおよびジャイロセンサは、多軸検出可能なものだけなく１軸検出のものでもよい。また、これらのセンサを組み合わせて、より正確な検出を行うものであってもかまわない。なお、ハウジングに固定されたカメラを、上記センサとして利用することも可能である。この場合、ハウジングの姿勢の変化に応じてカメラが撮像する撮像画像が変化するので、この画像を解析することにより、ハウジングの基準姿勢からの姿勢変化を判断することができる。
【００１１】
また、検出部は、センサの種類によっては、ハウジングの外部に別設されてもよい。一例として、センサとしてのカメラでハウジングの外部から当該ハウジングを撮影し、撮像画像内に撮像されたハウジングの画像を解析することにより、ハウジングの基準姿勢からの姿勢変化を判断することが可能である。さらに、ハウジングに固設されたユニットとハウジング外部に別設されたユニットとの協働によるシステムを用いてもよい。この例としては、ハウジング外部に発光ユニットを別設し、ハウジングに固設されたカメラで発光ユニットからの光を撮影する。このカメラで撮像された撮像画像を解析することにより、ハウジングの基準姿勢からの姿勢変化を判断することができる。また、他の例としては、ハウジング外部に磁場発生装置を別設し、ハウジングに磁気センサを固設するようなシステムなどが挙げられる。
【００１２】
前述の通り、補正手段は、ハウジングの所定軸の周りに当該ハウジングが回転したことを判断してもよいし（第１種の補正手段）、現実世界における所定軸の周りにハウジングが回転したことを判断してもよい（第２種の補正手段）。
【００１３】
（１）第１種の補正手段の場合
まず、加速度センサをハウジングに固設する例を説明する。単純な例として、ハウジングの所定方向に生じる加速度を加速度センサで検出する。そして、加速度センサが検出した加速度を用いて、重力加速度成分の変化を分析することによって、重力加速度方向に直交する軸周りにハウジングが回転したことを判断することが可能である。例えば、ハウジングの上下方向に生じる加速度を検出して、重力加速度の当該上下方向成分の変化を分析することによって、ハウジングの左右軸周りに当該ハウジングが回転したことを判断することが可能である。
【００１４】
ここで、加速度センサを用いる場合、加速度センサの検出軸がハウジングの姿勢変化における回転軸と一致するケースなど、加速度センサの検出軸の傾きが変化しないハウジングの回転に対しては、重力加速度の検出軸方向の成分が変化しないので、ハウジングの回転を判断することが難しい。しかしながら、加速度センサの検出軸がハウジングの姿勢変化における回転軸と一致しない場合（典型的には、加速度センサの検出軸が鉛直面に沿って傾きを変化するような姿勢変化など）であれば、重力加速度の影響により当該検出軸についての出力値が変化するのでハウジングの回転が判断できる。
【００１５】
なお、本願発明が適用されるゲームの分野においては、ゲーム開発者が予め定める正しい操作方法に従って操作したときに正しいゲーム処理が行われるようにしておけば十分であって、それ以外の操作をした場合に正しいゲーム処理が行われないとしても格段の問題は生じない。したがって、ゲームの取扱説明書やゲーム画面などにおいて、正しい操作方法として、ハウジングの姿勢を変化させる方法（より具体的には、どの軸周りに回転操作させるか）を指示しておけば、プレイヤはその指示にしたがってハウジングを回転させる操作する。つまり、ある回転操作を前提として、ハウジングの姿勢が判断できれば十分である。なお、プレイヤが指示された操作から逸脱した操作を行った場合には、ハウジングの姿勢を正確に判断することができないが、その逸脱した程度が許容範囲内であれば、ゲーム処理としてもおおよそ正しい処理結果が得られる。また、ゲーム装置の用途においては、格段の正確性を必要としないことが多いため、そのような場合でも十分な実用性を有する。
【００１６】
なお、加速度センサを用いる場合、ハウジングに作用する重力加速度のみならず、ハウジングの動きに応じて作用する加速度を検出するが、当業者にとって既知の処理により、当該動きに応じて検出された加速度を除去することが可能である。例えば、単純な例としては、加速度センサが検出した加速度の値が重力加速度よりも大きな値（または、十分大きな値）を示すときには、検出された加速度の値が重力加速度を示していないと判断して除去するような処理としてもよい。また、加速度センサが検出した加速度の値の変動が小さいときにのみ、検出された加速度の値が重力加速度を示しているとして、姿勢の分析に採用するような処理としてもよい。さらに、加速度センサが検出した加速度の値の高周波成分を除去してもよい。また、ハウジングを激しく動かす必要のないゲームの場合には、ハウジングの動きに応じて作用する加速度を除去する処理をしなくてもよい。なぜなら、ハウジングの動きに応じた加速度が検出されても、プレイヤがハウジングを激しく動かさなければ、ある程度正しい結果が得られるのであって、十分な実用性を有するからである。
【００１７】
なお、多軸検出可能な加速度センサを用いて、当該多軸方向にそれぞれ生じた加速度の値を用いる場合には、基準姿勢からのハウジングの回転角度を算出して、より詳細な判断することが可能である。例えば、加速度センサが検出する２つの軸方向の加速度の値を用いて、所定の演算処理をすることにより、ハウジングの回転角度を算出することが可能である。典型的には、２つの軸方向の加速度の値を逆正接関数に代入するなどの、三角関数を利用した演算処理を、ハウジングの回転角度の算出に用いることができる。
【００１８】
また、多軸検出可能な加速度センサを用いる場合には、どの検出軸方向の加速度が変化するかに基づいて、どの検出軸周りにハウジングが回転したかの判定も可能である。また、３軸方向の加速度をそれぞれ検出する加速度センサを用いる場合に、例えば、第１の軸方向の加速度の値と第２の軸方向の加速度の値とを用いて演算処理をすることにより、第３の軸周りにハウジングが回転したことを判断することが可能である。また、第１の軸方向の加速度の値と第３の軸方向の加速度の値とを用いて演算処理をすることにより、第２の軸周りにハウジングが回転したこと判断することが可能である。
【００１９】
なお、ハウジングを実空間で回転移動させると、ハウジングに遠心力が生じる。この遠心力を加速度センサが検出することにより、ハウジングの姿勢変化の判断に利用してもかまわない。すなわち、例えば、ハウジングのある方向に加速度が生じたことが加速度センサにより検出された場合、それに直交する方向に伸びる軸周りにハウジングが回転した可能性があると判定できる。
【００２０】
次に、ジャイロセンサをハウジングに固設する場合を説明する。この場合、ハウジングの姿勢を変化させる（すなわち、ハウジングをローカル座標系における所定軸周りに回転させる）と、ジャイロセンサはその回転を直接検出して、角速度データを出力する。そして、出力された角速度データに基づいて、基準姿勢からのハウジングの姿勢変化を判断することが可能である。より具体的には、角速度データを用いてハウジング回転角度の変化を判断することが可能である。より典型的には、ハウジングの前後軸周りの回転角度の変化、ハウジングの左右軸周りの回転角度の変化、および／または、ハウジングの上下軸周りの回転角度の変化をそれぞれ判断することが可能である。また、初期状態におけるハウジングの回転角度を設定しておくことにより、ハウジングの前後軸周りの回転角度、ハウジングの左右軸周りの回転角度、および／または、ハウジングの上下軸周りの回転角度を判断することが可能である。
【００２１】
（２）第２種の補正手段の場合
典型的には、３軸方向の加速度をそれぞれ検出可能な加速度センサをハウジングに固設し、各軸方向に生じた加速度の値に基づいて、ハウジングに対する重力方向を判定することにより、水平軸周りのハウジングの回転角を判断することが可能である。または、例えば、３軸方向の加速度をそれぞれ検出可能な加速度センサについて、第１軸方向の加速度の値と第２軸方向の加速度の値とから合成ベクトルを算出する。そして、上記合成ベクトルの大きさと第３軸方向の加速度の値とからなる２次元ベクトルから、水平軸周りの当該第３軸の回転角を判断することも可能である。または、方位センサをハウジングに設けることにより、鉛直軸周りの回転角を判断することが可能である。
【００２２】
なお、補正手段は、基準姿勢からの姿勢変化量が閾値に到達したときに、移動ベクトルを所定量だけ補正するようなものでもよいし、姿勢変化量に応じて移動ベクトルを補正する量を変化させるようなものでもよい。より具体的には、姿勢変化量が大きくなることに応じて、移動ベクトルの補正量を大きくしてもよい。
【００２３】
さらに、補正手段は、所定軸周りのハウジングの回転に応じて、オブジェクトの仮想ゲーム世界における所定方向への移動量が増加するように移動ベクトルを補正してもよい。ここで、「仮想ゲーム世界における所定方向」とは、仮想ゲーム世界におけるワールド座標系における所定方向であってもよいし、オブジェクトのローカル座標系における所定方向であってもよいし、視点座標系における所定方向であってもよい。また、「方向指示手段により、前方向が指示されたときにオブジェクトが移動する方向」を基準として、所定方向を決定してもよい。典型的には、ハウジングの左右軸周りの当該ハウジングの回転を判断し、その判断に基づいて、オブジェクトの前方向（ローカル座標系における前方向および／または後ろ方向）への移動量を補正してもよい（より具体的には、ハウジングを前に倒すように回転させると、オブジェクトの前方向の移動量が増加するように補正し、および／または、ハウジングを後ろに倒すように回転させると、オブジェクトの後ろ方向の移動量が増加するように補正する。）。また、ハウジングの前後軸周りの当該ハウジングの回転を判断し、その判断に基づいて、オブジェクトの左右方向（ローカル座標系における左右方向）への移動量を補正してもよい。また、ハウジングの前後軸（または上下軸）が水平軸周りに回転したことを判断し、その判断に基づいて、オブジェクトの前方向の移動量を補正してもよい。さらに、ハウジングの左右軸が水平軸周りに回転したことを判断し、その判断に基づいて、オブジェクトの左右方向への移動量を補正してもよい。
【００２４】
なお、上述した「オブジェクトの前方向」とは、（Ａ）オブジェクトが向いている方向（典型的には、オブジェクトのローカル座標またはカメラ座標のＺ軸方向）、または、（Ｂ）オブジェクトの移動方向（「方向指示部の前方向の指示入力に応じてオブジェクトが移動する方向」）である。なお、方向指示部の前方向の指示入力に応じて、オブジェクトが向いている方向に移動する場合には、上記（Ａ）と上記（Ｂ）とが一致する。
【００２５】
移動ベクトル制御手段は、方向指示部の前方向の指示入力に応じて「オブジェクトの前方向」にオブジェクトを移動させる移動ベクトルを決定し、方向指示部の後方向の指示入力に応じて「オブジェクトの前方向」と反対方向にオブジェクトを移動させる移動ベクトルを決定し、方向指示部の左右方向の指示入力に応じて「オブジェクトの前方向」に直交する左右方向にオブジェクトを移動させる移動ベクトルを決定する。なお、「左右方向」は、ローカル座標系における左右方向で定義してもよいし、ワールド座標系における左右方向で定義してもよい。
【００２６】
なお、「オブジェクトの前方向」は、ワールド座標系において固定方向としてもよいし、方向指示部の指示入力に応じて変化させてもよい。後者の場合には、オブジェクトの移動ベクトルが決定されたときに、当該移動ベクトルの方向が新たな前方向に設定されるのが典型的である。
【００２７】
また、補正手段は、１つの軸周りのハウジングの回転を判断してもよいし、複数の軸周りのハウジングの回転を判断してもよい。後者の場合、各軸のそれぞれについて「仮想ゲーム世界における所定方向」が設定される。すなわち、軸Ａ周りのハウジングの回転に応じて、仮想ゲーム世界における方向Ａのオブジェクトの移動量を補正し、軸Ｂ周りのハウジングの回転に応じて、仮想ゲーム世界における方向Ｂのオブジェクトの移動量を補正する（軸Ａと軸Ｂとは異なり、方向Ａと方向Ｂとは異なる）。ここで、軸Ａと軸Ｂとが直交するように設定し、方向Ａと方向Ｂとが直交するように設定するのが好ましい。なお、３軸以上についてハウジングの回転を判定してもよく、すなわち、軸Ｃ周りのハウジングの回転に応じて、方向Ｃのオブジェクトの移動量を補正してもよい。
【００２８】
第２の発明は、上記第１の発明において、補正手段は、ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界における所定方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。
【００２９】
第３の発明は、上記第２の発明において、補正手段は、ハウジングの左右軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界におけるオブジェクトの前方向への移動量が増加するように移動ベクトルを補正する。
【００３０】
第４の発明は、上記第２の発明において、補正手段は、ハウジングの前後軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界におけるオブジェクトの左右方向への移動量が増加するように移動ベクトルを補正する。
【００３１】
第５の発明は、上記第１の発明において、補正手段は、ハウジングの所定軸が当該所定軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における所定方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。
【００３２】
第６の発明は、上記第１の発明において、補正手段は、ハウジングの第１軸が当該第１軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第１方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。補正手段は、ハウジングの第１軸とは異なる第２軸が当該第２軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第１方向とは異なる第２方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。
【００３３】
第７の発明は、上記第１の発明において、方向指示部は、少なくともスティック（７８ａ）をハウジングの所定方向に傾倒させる入力が可能なものである。移動ベクトル制御手段は、スティックが所定方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第１方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングが所定方向に傾くように回転したことに応じて、仮想ゲーム世界におけるオブジェクトの第１方向への移動量が増加するように移動ベクトルを補正する。
【００３４】
第８の発明は、上記第１の発明において、方向指示部は、少なくともスティックがハウジングの所定軸周りに回転するように傾倒させる入力が可能なものである。移動ベクトル制御手段は、スティックが所定軸周りに回転する方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第１方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界におけるオブジェクトの第１方向への移動量が増加するように移動ベクトルを補正する。
【００３５】
第９の発明は、上記第１の発明において、方向指示部は、少なくともスティックをハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能である。移動ベクトル制御手段は、スティックが所定方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第１方向に移動させるように移動ベクトルを決定し、かつ、スティックが直交する方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第１方向と直交する第２方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングが所定方向に傾くように回転したことに応じて、仮想ゲーム世界におけるオブジェクトの第１方向への移動量が増加するように移動ベクトルを補正し、かつ、ハウジングが直交する方向に傾くように回転したことに応じて、仮想ゲーム世界におけるオブジェクトの第２方向への移動量が増加するように移動ベクトルを補正する。
【００３６】
第１０の発明は、上記第１の発明において、方向指示部は、少なくともスティックをハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能である。移動ベクトル制御手段は、方向指示部による指示方向に応じて、スティックがハウジングの前方向に傾倒されたときに仮想ゲーム世界においてオブジェクトが移動する方向である基準方向を変更し、オブジェクトを当該基準方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングが前方向に傾いたことに応じて、仮想ゲーム世界におけるオブジェクトの基準方向への移動量が増加するように移動ベクトルを補正する。
【００３７】
第１１の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、ハウジングと、方向指示部と、動き検出手段（７６１）とを備える。ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成される。方向指示部は、ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、ハウジングの前後左右方向への指示入力するために設けられる。動き検出手段は、ハウジングの動きを検出する。ゲーム装置は、移動方向制御手段、補正手段、および移動制御手段を備える。移動方向制御手段は、方向指示部によりハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、方向指示部によりハウジングの後ろ方向への指示がされたときに、オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、方向指示部によりハウジングの左右方向への指示がされたときに、オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向とする決定する。補正手段は、動き検出手段の検出に基づいてハウジングの前方向に当該ハウジングが回転したことを示すとき、仮想ゲーム世界における前方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。移動制御手段は、仮想ゲーム世界内で、補正手段によって補正された移動ベクトルに基づいてオブジェクトを移動させる。
【００３８】
なお、動き検出手段は、ハウジングに設けられる加速度センサ、ハウジングに設けられるジャイロセンサ、ハウジングに設けられる撮影手段で撮影した画像を解析することにより動きを検出するもの（例えば、後述の撮像情報演算部７４とマーカ８とにより実現されるようなシステムを含む）、その他、ハウジングに設けられ傾きを検出できる傾きセンサなどとすることができる。なお、ジャイロセンサを採用する場合には、後述のような特別な処理が必要となる。
【００３９】
また、より具体的には、ハウジングは、その一方側面（右側面または左側面の一方）に片手の掌を接触させ、他方側面（右側面または左側面の他方）に当該片手の指（人差指・中指・薬指・小指）のうちの少なくとも１つ（好ましくはこれらのうちの少なくとも２つであり、また、好ましくは少なくとも中指を含む）を接触させることによって把持し、当該把持した状態で親指が届く範囲に方向指示部が配置される。
【００４０】
第１２の発明は、上記第２〜１１の何れかの発明において、移動ベクトル制御手段は、方向指示部で操作された指示方向に応じて、仮想ゲーム世界におけるオブジェクトの前方向を基準とした移動ベクトルの方向を決定する。ゲーム装置は、オブジェクト方向制御手段を、さらに備える。オブジェクト方向制御手段は、移動ベクトル制御手段によって決定され補正手段によって補正された移動ベクトルの方向を、オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界におけるオブジェクトの方向を変更する。
【００４１】
第１３の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、少なくとも、ハウジング、加速度検出手段、および方向指示部を備える。ハウジングは、プレイヤが片手で把持可能である。加速度検出手段は、ハウジングに生じる加速度を検出する。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、移動ベクトル制御手段、補正手段、および移動制御手段を備える。移動ベクトル制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する。補正手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、移動ベクトル制御手段によって決定された移動ベクトルを補正する。移動制御手段は、補正手段によって補正された移動ベクトルに基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【００４２】
第１４の発明は、上記第１３の発明において、補正手段は、ハウジングの所定軸方向に生じた加速度に応じて、仮想ゲーム世界における所定方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。
【００４３】
第１５の発明は、上記第１４の発明において、補正手段は、ハウジングの前方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの前方向への移動量が増加するように移動ベクトルを補正する。
【００４４】
第１６の発明は、上記第１４の発明において、補正手段は、ハウジングの左右方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの左右方向への移動量が増加するように移動ベクトルを補正する。
【００４５】
第１７の発明は、上記第１３の発明において、補正手段は、ハウジングの第１方向に生じた加速度に応じて、仮想ゲーム世界における第１方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。補正手段は、ハウジングの第１方向とは異なる第２方向に生じた加速度に応じて、仮想ゲーム世界における第１方向とは異なる第２方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。
【００４６】
第１８の発明は、上記第１３の発明において、方向指示部は、少なくともスティックをハウジングの所定方向に傾倒させる入力が可能なものである。移動ベクトル制御手段は、スティックが所定方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第１方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングの所定方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの第１方向への移動量が増加するように移動ベクトルを補正する。
【００４７】
第１９の発明は、上記第１３の発明において、方向指示部は、少なくともスティックをハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能である。移動ベクトル制御手段は、スティックが所定方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第１方向に移動させるように移動ベクトルを決定し、かつ、スティックが直交する方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第１方向と直交する第２方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングの所定方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの第１方向への移動量が増加するように移動ベクトルを補正し、かつ、ハウジングの直交する方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの第２方向への移動量が増加するように移動ベクトルを補正する。
【００４８】
第２０の発明は、上記第１３の発明において、方向指示部は、少なくともスティックをハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能である。移動ベクトル制御手段は、方向指示部による指示方向に応じて、スティックがハウジングの前方向に傾倒されたときに仮想ゲーム世界においてオブジェクトが移動する方向である基準方向を変更し、オブジェクトを当該基準方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングの前方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの基準方向への移動量が増加するように移動ベクトルを補正する。
【００４９】
第２１の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、ハウジング、方向指示部、および加速度検出手段を備える。ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成される。方向指示部は、ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、ハウジングの前後左右方向への指示入力するために設けられる。加速度検出手段は、少なくともハウジングの前方向に生じる加速度を検出する。ゲーム装置は、移動ベクトル制御手段、補正手段、および移動制御手段を備える。移動ベクトル制御手段は、方向指示部によりハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、方向指示部によりハウジングの後ろ方向への指示がされたときに、オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、方向指示部によりハウジングの左右方向への指示がされたときに、オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向として決定する。補正手段は、加速度検出手段の検出に基づいて、ハウジングの前方向に加速度が生じたときに、仮想ゲーム世界におけるオブジェクトの前方向への移動量が増加するように移動ベクトルを補正する。移動制御手段は、仮想ゲーム世界内で、補正手段によって補正された移動ベクトルに基づいてオブジェクトを移動させる。
【００５０】
第２２の発明は、上記第１３〜第２１の発明の何れかにおいて、移動ベクトル制御手段は、方向指示部で操作された指示方向に応じて、仮想ゲーム世界におけるオブジェクトの前方向を基準とした移動ベクトルの方向を決定する。ゲーム装置は、オブジェクト方向制御手段を、さらに備える。オブジェクト方向制御手段は、移動ベクトル制御手段によって決定され補正手段によって補正された移動ベクトルの方向を、オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界におけるオブジェクトの方向を変更する。
【００５１】
第２３の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムである。少なくともゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、移動方向決定手段、移動量決定手段、および移動制御手段を備える。移動方向決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する。移動量決定手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、オブジェクトの移動量を決定する。移動制御手段は、移動方向決定手段によって決定された移動方向、および、移動量決定手段によって決定された移動量に基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【００５２】
第２４の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、少なくとも、ハウジング、加速度検出手段、および方向指示部を備える。ハウジングは、プレイヤが片手で把持可能である。加速度検出手段は、ハウジングに生じる加速度を検出する。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、移動方向決定手段、移動量決定手段、および移動制御手段を備える。移動方向決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する。移動量決定手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、オブジェクトの移動量を決定する。移動制御手段は、移動方向決定手段によって決定された移動方向、および、移動量決定手段によって決定された移動量に基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【００５３】
第２５の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムである。少なくともゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、位置決定手段（Ｓ４３、Ｓ１７１）、変位決定手段（Ｓ１７２、Ｓ１７３）、および移動制御手段（Ｓ２１）を備える。位置決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する。変位決定手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、オブジェクトの仮想ゲーム世界における変位を決定する。移動制御手段は、位置決定手段によって決定されたオブジェクトの位置を、変位決定手段によって決定された変位だけ変化させて、オブジェクトが移動するように制御する。
【００５４】
第２６の発明は、上記第２５の発明において、変位決定手段は、ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界における所定方向へのオブジェクトの変位を決定する。
【００５５】
第２７の発明は、上記第２５の発明において、変位決定手段は、ハウジングの左右軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界におけるオブジェクトの前方向へ当該オブジェクトが変位するように変位を決定する。
【００５６】
第２８の発明は、上記第２５の発明において、変位決定手段は、ハウジングの前後軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界におけるオブジェクトの左右方向へ当該オブジェクトが変位するように変位を決定する。
【００５７】
第２９の発明は、上記第２５の発明において、変位決定手段は、ハウジングの所定軸が当該所定軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における所定方向へオブジェクトが変位するように変位を決定する。
【００５８】
第３０の発明は、上記第２５の発明において、変位決定手段は、ハウジングの第１軸が当該第１軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第１方向へオブジェクトが変位するように変位を決定する。変位決定手段は、ハウジングの第１軸とは異なる第２軸が当該第２軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第１方向とは異なる第２方向へオブジェクトが変位するように変位を決定する。
【００５９】
第３１の発明は、上記第２５の発明において、方向指示部は、少なくともスティックをハウジングの所定方向に傾倒させる入力が可能である。位置決定手段は、スティックが所定方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界における第１方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングが所定方向に傾くように回転したことに応じて、仮想ゲーム世界における第１方向へオブジェクトが変位するように変位を決定する。
【００６０】
第３２の発明は、上記第２５の発明において、方向指示部は、少なくともスティックがハウジングの所定軸周りに回転するように傾倒させる入力が可能である。位置決定手段は、スティックが所定軸周りに回転する方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界における第１方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界における第１方向へオブジェクトが変位するように変位を決定する。
【００６１】
第３３の発明は、上記第２５の発明において、方向指示部は、少なくともスティックをハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能である。位置決定手段は、スティックが所定方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界における第１方向に移動させて新たな位置を決定し、かつ、スティックが直交する方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界において第１方向と直交する第２方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングが所定方向に傾くように回転したことに応じて、第１方向へオブジェクトが変位するように変位を決定し、かつ、ハウジングが直交する方向に傾くように回転したことに応じて、第２方向へオブジェクトが変位するように変位を決定する。
【００６２】
第３４の発明は、上記第２５の発明において、方向指示部は、少なくともスティックをハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能である。位置決定手段は、方向指示部による指示方向に応じて、スティックがハウジングの前後左右方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界において前後左右方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングが左右方向に傾いたことに応じて、仮想ゲーム世界におけるオブジェクトの左右方向に当該オブジェクトが変位するように変位を決定する。
【００６３】
第３５の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、少なくとも、ハウジング、加速度検出手段、および方向指示部を備える。ハウジングは、プレイヤが片手で把持可能である。加速度検出手段は、前記ハウジングに生じる加速度を検出する。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、位置決定手段、変位決定手段、および移動制御手段を備える。位置決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する。変位決定手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、オブジェクトの仮想ゲーム世界における変位を決定する。移動制御手段は、位置決定手段によって決定されたオブジェクトの位置を、変位決定手段によって決定された変位だけ変化させて、オブジェクトが移動するように制御する。
【００６４】
第３６の発明は、上記第３５の発明において、変位決定手段は、ハウジングの前後方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの前後方向へ当該オブジェクトが変位するように変位を決定する。
【００６５】
第３７の発明は、上記第３５の発明において、変位決定手段は、ハウジングの第１方向に生じた加速度に応じて、仮想ゲーム世界における第１方向へオブジェクトが変位するように変位を決定する。変位決定手段は、ハウジングの第１方向とは異なる第２方向に生じた加速度に応じて、仮想ゲーム世界における第１方向とは異なる第２方向へオブジェクトが変位するように変位を決定する。
【００６６】
第３８の発明は、上記第３５の発明において、方向指示部は、少なくともスティックをハウジングの所定方向に傾倒させる入力が可能である。位置決定手段は、スティックが所定方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界における第１方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングの所定方向に生じた加速度に応じて、仮想ゲーム世界における第１方向へオブジェクトが変位するように変位を決定する。
【００６７】
第３９の発明は、上記第３５の発明において、方向指示部は、少なくともスティックをハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能である。位置決定手段は、スティックが所定方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界における第１方向に移動させて新たな位置を決定し、かつ、スティックが直交する方向に傾倒されたときに、オブジェクトの位置を第１方向と直交する第２方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングの所定方向に生じた加速度に応じて、仮想ゲーム世界における第１方向へオブジェクトが変位するように変位を決定し、かつ、ハウジングの直交する方向に生じた加速度に応じて、仮想ゲーム世界における第２方向へオブジェクトが変位するように変位を決定する。
【００６８】
第４０の発明は、上記第３５の発明において、方向指示部は、少なくともスティックをハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能である。位置決定手段は、方向指示部による指示方向に応じて、スティックがハウジングの前後左右方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトの位置を前後左右方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングの左右方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの左右方向に当該オブジェクトが変位するように変位を決定する。
【００６９】
第４１の発明は、上記第２５〜第４０の発明の何れかにおいて、位置決定手段は、方向指示部で操作された指示方向に応じて、仮想ゲーム世界におけるオブジェクトの前方向を基準として、オブジェクトの新たな位置を決定する。ゲーム装置は、オブジェクト方向制御手段を、さらに備える。オブジェクト方向制御手段は、位置決定手段がオブジェクトの位置を移動させた仮想ゲーム世界における方向を、オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界におけるオブジェクトの方向を変更する。
【００７０】
第４２の発明は、上記第６または第３０の発明において、第１軸と第２軸とは、互いに直交する。第１方向と第２方向とは、仮想ゲーム世界において互いに直交する。
【００７１】
第４３の発明は、上記第１７または第３７の発明において、ハウジングの第１方向と第２方向とは、互いに直交する。仮想ゲーム世界における第１方向と第２方向とは、仮想ゲーム世界において互いに直交する。
【００７２】
第４４の発明は、上記第１、第１３、第２３〜第２５、および第３５の発明の何れかにおいて、ハウジングは、当該ハウジングの側周をプレイヤが片手で握持可能な形状および大きさで形成される。
【００７３】
第４５の発明は、上記第４４の発明において、ハウジングは、当該ハウジングの側周をプレイヤが片手で握持したときに、当該片手の親指で操作可能な位置に方向指示部が配設される。
【００７４】
第４６の発明は、プレイヤが片手で把持可能なハウジングおよび当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムにおいて、当該ゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動ベクトル制御手段、補正手段、および移動制御手段として、コンピュータを機能させる。移動ベクトル制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する。補正手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、移動ベクトル制御手段によって決定された移動ベクトルを補正する。移動制御手段は、補正手段によって補正された移動ベクトルに基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【００７５】
第４７の発明は、その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジング、当該ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、ハウジングの前後左右方向への指示入力するための方向指示部、および当該ハウジングの動きを検出する動き検出手段を備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動方向制御手段、補正手段、および移動制御手段として、コンピュータを機能させる。移動方向制御手段は、方向指示部によりハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、方向指示部によりハウジングの後ろ方向への指示がされたときに、オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、方向指示部によりハウジングの左右方向への指示がされたときに、オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向とする決定する。補正手段は、動き検出手段の検出に基づいてハウジングの前方向に当該ハウジングが回転したことを示すとき、仮想ゲーム世界における前方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。移動制御手段は、仮想ゲーム世界内で、補正手段によって補正された移動ベクトルに基づいてオブジェクトを移動させる。
【００７６】
第４８の発明は、プレイヤが片手で把持可能なハウジング、当該ハウジングに生じる加速度を検出する加速度検出手段、および当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動ベクトル制御手段、補正手段、および移動制御手段として、コンピュータを機能させる。移動ベクトル制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する。補正手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、移動ベクトル制御手段によって決定された移動ベクトルを補正する。移動制御手段は、補正手段によって補正された移動ベクトルに基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【００７７】
第４９の発明は、その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジング、当該ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、ハウジングの前後左右方向への指示入力するための方向指示部、および少なくとも当該ハウジングの前方向に生じる加速度を検出する加速度検出手段を備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動ベクトル制御手段、補正手段、および移動制御手段として、コンピュータを機能させる。移動ベクトル制御手段は、方向指示部によりハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、方向指示部によりハウジングの後ろ方向への指示がされたときに、オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、方向指示部によりハウジングの左右方向への指示がされたときに、オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向として決定する。補正手段は、加速度検出手段の検出に基づいて、ハウジングの前方向に加速度が生じたときに、仮想ゲーム世界におけるオブジェクトの前方向への移動量が増加するように移動ベクトルを補正する。移動制御手段は、仮想ゲーム世界内で、補正手段によって補正された移動ベクトルに基づいてオブジェクトを移動させる。
【００７８】
第５０の発明は、プレイヤが片手で把持可能なハウジングおよび当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムにおいて、当該ゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、
移動方向決定手段、移動量決定手段、および移動制御手段として、コンピュータを機能させる。移動方向決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する。移動量決定手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、オブジェクトの移動量を決定する。移動制御手段は、移動方向決定手段によって決定された移動方向、および、移動量決定手段によって決定された移動量に基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【００７９】
第５１の発明は、プレイヤが片手で把持可能なハウジング、当該ハウジングに生じる加速度を検出する加速度検出手段、および当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動方向決定手段、移動量決定手段、および移動制御手段として、コンピュータを機能させる。移動方向決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する。移動量決定手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、オブジェクトの移動量を決定する。移動制御手段は、移動方向決定手段によって決定された移動方向、および、移動量決定手段によって決定された移動量に基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【００８０】
第５２の発明は、プレイヤが片手で把持可能なハウジングおよび当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムにおいて、当該ゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、位置決定手段、変位決定手段、および移動制御手段として、コンピュータを機能させる。位置決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する。変位決定手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、オブジェクトの仮想ゲーム世界における変位を決定する。移動制御手段は、位置決定手段によって決定されたオブジェクトの位置を、変位決定手段によって決定された変位だけ変化させて、オブジェクトが移動するように制御する。
【００８１】
第５３の発明は、プレイヤが片手で把持可能なハウジング、当該ハウジングに生じる加速度を検出する加速度検出手段、および当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、位置決定手段、変位決定手段、および移動制御手段として、コンピュータを機能させる。位置決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する。変位決定手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、オブジェクトの仮想ゲーム世界における変位を決定する。移動制御手段は、位置決定手段によって決定されたオブジェクトの位置を、変位決定手段によって決定された変位だけ変化させて、オブジェクトが移動するように制御する。
【発明の効果】
【００８２】
上記第１の発明によれば、方向指示部の操作で決定されたオブジェクトの移動制御の内容（移動ベクトル）が、当該方向指示部が設けられたハウジングの姿勢で補正されるため、プレイヤの操作が容易となる。したがって、プレイヤキャラクタ等のオブジェクトの移動のための入力にダイレクト感があり、直感的かつ容易な操作で多様に制御することができる。
【００８３】
上記第２〜第６の発明によれば、ハウジングが回転するように姿勢変化したことに応じて、その回転軸に応じた仮想ゲーム世界の方向への移動量が増加するようなオブジェクトの移動制御が可能となる。
【００８４】
上記第７〜第１１の発明によれば、方向指示部のスティック操作の傾倒方向とハウジングの姿勢変化の方向とを適切に対応付けることにより、より直感的かつ容易な操作で多様に制御することができる。
【００８５】
上記第１２の発明によれば、設定された移動ベクトルの方向にオブジェクトの前方向を向けて移動制御することができる。
【００８６】
上記第１３〜第２２の発明によれば、方向指示部の操作で決定されたオブジェクトの移動制御の内容（移動ベクトル）が、当該方向指示部が設けられたハウジングに生じる加速度を用いて補正されるため、プレイヤの操作が容易となる。したがって、プレイヤキャラクタ等のオブジェクトの移動制御を直感的かつ容易な操作で多様に制御することができ、上述したゲームシステムと同様の効果が得られる。
【００８７】
上記第２３の発明によれば、方向指示部の操作でオブジェクトの移動方向を決定し、当該方向指示部が設けられたハウジングの姿勢に応じてオブジェクトの移動量が決定されるようなプレイヤの操作が容易なゲームが可能となり、ゲーム入力のダイレクト感をプレイヤに効果的に感じさせることができる。
【００８８】
上記第２４の発明によれば、方向指示部の操作でオブジェクトの移動方向を決定し、当該方向指示部が設けられたハウジングに生じる加速度に応じてオブジェクトの移動量が決定されるようなプレイヤの操作が容易なゲームが可能となり、ゲーム入力のダイレクト感をプレイヤに効果的に感じさせることができる。
【００８９】
上記第２５〜第３４の発明によれば、方向指示部の操作でオブジェクトの基本的な位置を決定し、当該方向指示部が設けられたハウジングの姿勢によって当該基本的な位置からオブジェクトが変位するようなゲームが可能となる。したがって、プレイヤキャラクタ等のオブジェクトの移動制御を直感的かつ容易な操作で多様に制御することができ、違和感のない操作性が得られる。また、上述したゲームシステムと同様の効果が得られる。
【００９０】
上記第３５〜第４０の発明によれば、方向指示部の操作でオブジェクトの基本的な位置を決定し、当該方向指示部が設けられたハウジングに生じる加速度によって当該基本的な位置からオブジェクトが変位するようなゲームが可能となる。したがって、プレイヤキャラクタ等のオブジェクトの移動制御を直感的かつ容易な操作で多様に制御することができ、違和感のない操作性が得られる。また、上述したゲームシステムと同様の効果が得られる。
【００９１】
上記第４１の発明によれば、オブジェクトが基本的な位置へ移動する方向にオブジェクトの前方向を向けて移動制御することができる。
【００９２】
上記第４２および第４３の発明によれば、ハウジングの姿勢を判断するための２つの軸が直交し、当該姿勢に応じて仮想ゲーム世界に反映するための２つの軸も直交しており、それらの軸を対応付けて移動制御を行うことができる。したがって、実空間内に設定した仮想的な平面を仮想ゲーム世界内の仮想的な平面に対応させて、オブジェクトの移動制御を行うことができ、よりダイレクト感のあるゲーム入力とすることができる。
【００９３】
上記第４４の発明によれば、プレイヤがハウジングを片手で包み込むように把持することができ、プレイヤの一方の手自体を自由に動かしてプレイすることができる。
【００９４】
上記第４５の発明によれば、プレイヤがハウジングを片手で包み込むように把持することができ、プレイヤの一方の手自体を自由に動かしながら、従来のコントローラと同じように親指による入力を行うことができる。
【００９５】
また、本発明のゲームプログラムによれば、上述したゲームシステムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００９６】
図１を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置の一例の据置型のゲーム装置を含むゲームシステムについて説明する。なお、図１は据置型のゲーム装置３を含むゲームシステム１の外観図であり、図２はゲーム装置本体５のブロック図である。以下、当該ゲームシステム１について説明する。
【００９７】
図１において、ゲームシステム１は、表示手段の一例の家庭用テレビジョン受像機（以下、モニタと記載する）２と、当該モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置本体５から出力された音声信号を音声出力するためのスピーカ２ａを備える。また、ゲーム装置３は、本願発明のゲームプログラムを記録した光ディスク４と、当該光ディスク４のゲームプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体５に与えるためのコントローラ７とを備えている。
【００９８】
また、ゲーム装置本体５は、通信ユニット６を内蔵する。通信ユニット６は、コントローラ７から無線送信されるデータを受信し、ゲーム装置本体５からコントローラ７へデータを送信して、コントローラ７とゲーム装置本体５とを無線通信によって接続する。さらに、ゲーム装置本体５には、当該ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。ゲーム装置本体５の前部主面には、当該ゲーム装置本体５の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、光ディスク４を脱着する投入口、およびゲーム装置本体５の投入口から光ディスク４を取り出すイジェクトスイッチ等が設けられている。
【００９９】
また、ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ３８が搭載される。ゲーム装置本体５は、光ディスク４に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ２に表示する。さらに、ゲーム装置本体５は、フラッシュメモリ３８に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置本体５のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【０１００】
コントローラ７は、通信ユニット６を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて操作情報等の送信データを無線送信する。コントローラ７は、２つのコントロールユニット（コアユニット７０およびサブユニット７６）が屈曲自在な接続ケーブル７９を介して互いに接続されて構成されており、主にモニタ２に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コアユニット７０およびサブユニット７６は、それぞれ複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コアユニット７０は、当該コアユニット７０から見た画像を撮像するための撮像情報演算部７４を備えている。また、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール８Ｌおよび８Ｒ（以下、マーカ８Ｌおよび８Ｒと記載する）が設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって赤外光を出力する。なお、本実施例では、コアユニット７０とサブユニット７６を屈曲自在なケーブルで接続したが、サブユニット７６に無線ユニットを搭載することで、接続ケーブル７９をなくすこともできる。例えば、無線ユニットとしてＢｌｕｅｔｏｏｔｈ（登録商標）ユニットをサブユニット７６に搭載することで、サブユニット７６からコアユニット７０へ操作データを送信することが可能になる。また、コントローラ７（例えば、コアユニット７０）は、ゲーム装置本体５の通信ユニット６から無線送信された送信データを通信部７５で受信して、当該送信データに応じた音や振動を発生させることもできる。
【０１０１】
図２において、ゲーム装置本体５は、各種プログラムを実行する例えばＣＰＵ（セントラルプロセッシングユニット）３０を備える。ＣＰＵ３０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ３３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ３０には、メモリコントローラ３１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３２、メインメモリ３３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）３５などが接続される。また、メモリコントローラ３１には、所定のバスを介して、通信ユニット６、ビデオＩ／Ｆ（インターフェース）３７、フラッシュメモリ３８、オーディオＩ／Ｆ３９、およびディスクＩ／Ｆ４１が接続され、それぞれのインターフェースにモニタ２、スピーカ２ａ、およびディスクドライブ４０が接続されている。
【０１０２】
ＧＰＵ３２は、ＣＰＵ３０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ３２は、図示しない画像処理専用のメモリやメインメモリ３３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ３２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ３１およびビデオＩ／Ｆ３７を介してモニタ２に出力する。
【０１０３】
メインメモリ３３は、ＣＰＵ３０で使用される記憶領域であって、ＣＰＵ３０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ３３は、ＣＰＵ３０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ３３に記憶されたゲームプログラムや各種データ等が、ＣＰＵ３０によって実行される。
【０１０４】
ＤＳＰ３４は、ゲームプログラム実行時にＣＰＵ３０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ３５が接続される。ＡＲＡＭ３５は、ＤＳＰ３４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ３４は、ＡＲＡＭ３５に記憶されたサウンドデータを読み出し、メモリコントローラ３１およびオーディオＩ／Ｆ３９を介してモニタ２に備えるスピーカ２ａに出力させる。
【０１０５】
メモリコントローラ３１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。上述したように通信ユニット６は、コントローラ７からの送信データを受信し、当該送信データをＣＰＵ３０へ出力する。また、通信ユニット６は、ＣＰＵ３０から出力された送信データをコントローラ７の通信部７５へ送信する。ビデオＩ／Ｆ３７には、モニタ２が接続される。オーディオＩ／Ｆ３９にはモニタ２に内蔵されるスピーカ２ａが接続され、ＤＳＰ３４がＡＲＡＭ３５から読み出したサウンドデータやディスクドライブ４０から直接出力されるサウンドデータをスピーカ２ａから出力可能に接続される。ディスクＩ／Ｆ４１には、ディスクドライブ４０が接続される。ディスクドライブ４０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置本体５のバスやオーディオＩ／Ｆ３９に出力する。
【０１０６】
次に、図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の外観構成を示す斜視図である。図４は、図３のコントローラ７の接続ケーブル７９をコアユニット７０から脱着する状態を示す斜視図である。
【０１０７】
図３において、コントローラ７は、コアユニット７０とサブユニット７６とが接続ケーブル７９で接続されて構成されている。コアユニット７０は、ハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。一方、サブユニット７６は、ハウジング７７を有しており、当該ハウジング７７に複数の操作部７８が設けられている。そして、コアユニット７０とサブユニット７６とは、接続ケーブル７９によって接続されている。
【０１０８】
図４において、接続ケーブル７９の一方端にはコアユニット７０のコネクタ７３に着脱自在なコネクタ７９１が設けられており、接続ケーブル７９の他方端は固定的にサブユニット７６と接続されている。そして、接続ケーブル７９のコネクタ７９１は、コアユニット７０の後面に設けられたコネクタ７３と嵌合し、コアユニット７０とサブユニット７６とが当該接続ケーブル７９を介して接続される。
【０１０９】
次に、図５および図６を参照して、コアユニット７０について説明する。なお、図５は、コアユニット７０の上面後方から見た斜視図である。図６は、コアユニット７０を下面前方から見た斜視図である。
【０１１０】
図５および図６において、コアユニット７０は、例えばプラスチック成型によって形成されたハウジング７１を有している。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【０１１１】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、矢印で示す４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【０１１２】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に４方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー７２ａの代わりに設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。また、少なくとも４つの方向（前後左右）をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。
【０１１３】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ｂ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、詳細は後述する。なお、図５に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【０１１４】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置５本体の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【０１１５】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（コントローラ識別番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コアユニット７０から通信ユニット６へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【０１１６】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図７のスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【０１１７】
一方、ハウジング７１下面には、凹部が形成されている。後述で明らかとなるが、ハウジング７１下面の凹部は、プレイヤがコアユニット７０を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部であり、サッカーゲームにおけるシュートのトリガスイッチや選手の切り替え操作等に用いられる。
【０１１８】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コアユニット７０が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコアユニット７０の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えば３２ピンのエッジコネクタであり、接続ケーブル７９のコネクタ７９１と嵌合して接続するために利用される。
【０１１９】
ここで、以下の説明を具体的にするために、コアユニット７０に対して設定する座標系について定義する。図５および図６に示すように、互いに直交するＸＹＺ軸をコアユニット７０に対して定義する。具体的には、コアユニット７０の前後方向となるハウジング７１の長手方向をＺ軸とし、コアユニット７０の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コアユニット７０の上下方向をＹ軸とし、ハウジング７１の上面（操作ボタン７２ａが設けられた面）方向をＹ軸正方向とする。さらに、コアユニット７０の左右方向をＸ軸とし、ハウジング７１の右側面（図６では表されずに図５で表されている側面）方向をＸ軸正方向とする。
【０１２０】
次に、図７および図８を参照して、コアユニット７０の内部構造について説明する。なお、図７は、コアユニット７０の上筐体（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図８は、コアユニット７０の下筐体（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図８に示す基板７００は、図７に示す基板７００の裏面から見た斜視図となっている。
【０１２１】
図７において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図８、図１１参照）に接続される。また、図示しない無線モジュール７５３（図１１参照）およびアンテナ７５４によって、コアユニット７０がワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。加速度センサ７０１が、基板７００の中央部ではなく周辺部に設けられていることにより、コアユニット７０の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコアユニット７０の回転を良好な感度で判定することができる。
【０１２２】
一方、図８において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コアユニット７０の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置本体５から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。このバイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４が作動することによってコアユニット７０に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【０１２３】
図９および図１０を参照して、サブユニット７６について説明する。なお、図９は、サブユニット７６の一例を示す斜視図である。図１０は、図９のサブユニット７６の上筐体（ハウジング７７の一部）を外した状態を示す斜視図である。
【０１２４】
図９において、サブユニット７６は、例えばプラスチック成型によって形成されたハウジング７７を有している。ハウジング７７は、その前後方向を長手方向とし、サブユニット７６において最太部となる頭部を前方に形成した流線型の立体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。さらに言えば、サブユニット７６のハウジング７７は、プレイヤの片手の手のひらおよび親指以外の指により包み込むように把持することが可能であり、当該把持をしたときにプレイヤの親指がスティック７８ａに位置するようにその形状が設計される。
【０１２５】
ハウジング７７上面の上記最太部近傍に、スティック７８ａが設けられる。スティック７８ａは、ハウジング７７上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向（さらには、付加的に傾倒量）を検出し、それに応じて操作信号を出力する操作部である。例えば、プレイヤがスティック先端を３６０°任意の方向に傾倒することによって任意の方向や位置を指定することができ、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。また、プレイヤは、スティック７８ａの傾倒量によって、プレイヤキャラクタやカーソル等の移動量を指示することができる。
【０１２６】
なお、スティック７８ａは、プレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、上述した十字キーやリング状に４方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記スティック７８ａの代わりに設けてもかまわない。また、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記スティック７８ａの代わりに設けてもかまわない。また、タッチパッドを、上記スティック７８ａの代わりに設けてもかまわない。また、少なくとも４つの方向（前後左右）をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記スティック７８ａの代わりに設けてもかまわない。
【０１２７】
サブユニット７６のハウジング７７の前面に、複数の操作ボタン７８ｄおよび７８ｅが設けられる。操作ボタン７８ｄおよび７８ｅは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７８ｄおよび７８ｅに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７８ｄおよび７８ｅには、ＸボタンおよびＹボタン等としての機能が割り当てられる。これら操作ボタン７８ｄおよび７８ｅは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図９に示した配置例では、操作ボタン７８ｄおよび７８ｅは、ハウジング７７前面の上下方向に沿って並設されている。
【０１２８】
図１０において、ハウジング７７の内部には基板が固設されており、当該基板の上主面上にスティック７８ａおよび加速度センサ７６１等が設けられる。そして、これらは、基板等に形成された配線（図示せず）を介して接続ケーブル７９と接続されている。加速度センサ７６１は、ハウジング７７の長手方向の中央部かつ短手方向の中央部に配置されるのが好ましい。また、プレイヤがハウジング７７を片手の手のひらおよび親指以外の指により包み込むように把持したときに、当該手のひらと指によって囲まれる空間（好ましくは、当該空間のほぼ中心）に配置されるのが好ましい。
【０１２９】
ここで、以下の説明を具体的にするために、サブユニット７６に対して設定する座標系について定義する。図９に示すように、互いに直交するＸＹＺ軸をサブユニット７６に対して定義する。具体的には、サブユニット７６の前後方向となるハウジング７７の長手方向をＺ軸とし、サブユニット７６の前面（操作ボタン７８ｄおよび７８ｅが設けられている面）方向をＺ軸正方向とする。また、サブユニット７６の上下方向をＹ軸とし、ハウジング７７の上面方向（スティック７８ａが突出する方向）をＹ軸正方向とする。さらに、サブユニット７６の左右方向をＸ軸とし、ハウジング７７の右側面（図９では表されない側面）方向をＸ軸正方向とする。
【０１３０】
次に、図１１を参照して、コントローラ７の内部構成について説明する。なお、図１１は、コントローラ７の構成を示すブロック図である。
【０１３１】
図１１において、コアユニット７０は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。また、サブユニット７６は、上述した操作部７８および加速度センサ７６１を備えており、接続ケーブル７９とコネクタ７９１および７３とを介して、マイコン７５１と接続されている。
【０１３２】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コアユニット７０の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コアユニット７０のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。
【０１３３】
コアユニット７０は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７０１を備えていることが好ましい。また、サブユニット７６は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７６１を備えていることが好ましい。この３軸の加速度センサ７０１および７６１は、それぞれ３方向、すなわち、上下方向、左右方向、および前後方向（上述したＸＹＺ軸方向）で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向（または他の対になった方向）のそれぞれに沿った直線加速度のみを検知する２軸の加速度検出手段や何れか１軸に沿った直線加速度のみを検知する１軸の加速度検出手段を使用してもよい。例えば、この１軸〜３軸の加速度センサ７０１および７６１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１および７６１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であることが好ましい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて１軸〜３軸の加速度センサ７０１および７６１が提供されてもよい。
【０１３４】
当業者には公知であるように、加速度センサ７０１および７６１に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１および７６１からの直接の出力は、その１軸〜３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１および７６１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【０１３５】
しかしながら、加速度センサ７０１および７６１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ３０）、コントローラ７またはサブユニット７６のプロセッサ（例えばマイコン７５１）等のコンピュータが処理を行うことによって、コアユニット７０およびサブユニット７６に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【０１３６】
例えば、加速度センサ７０１および７６１を搭載するコアユニット７０およびサブユニット７６が静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサ７０１および７６１によって検出される加速度が重力加速度のみであるとして処理する場合）、コアユニット７０およびサブユニット７６が現実に静的な状態であれば、検出された加速度に基づいてコアユニット７０およびサブユニット７６の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ７０１および７６１の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に１Ｇ（重力加速度）が作用しているか否かだけでコアユニット７０およびサブユニット７６が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コアユニット７０およびサブユニット７６が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ７０１および７６１の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコアユニット７０およびサブユニット７６がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ７０１および７６１からの出力に基づいて、プロセッサがコアユニット７０およびサブユニット７６の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ７０１および７６１からの出力に基づいて、おおよそのコアユニット７０およびサブユニット７６の傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１および７６１をプロセッサと組み合わせて用いることによって、コアユニット７０およびサブユニット７６の傾き、姿勢、または位置を判定することができる。
【０１３７】
一方、加速度センサ７０１および７６１が動的な状態であることを前提とする場合には、当該加速度センサ７０１および７６１が重力加速度成分に加えて加速度センサ７０１および７６１の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コアユニット７０およびサブユニット７６の動き方向等を知ることができる。具体的には、加速度センサ７０１および７６１を備えるコアユニット７０およびサブユニット７６がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ７０１および７６１によって生成される加速度信号を処理することによって、コアユニット７０およびサブユニット７６の様々な動きおよび／または位置を算出することができる。なお、加速度センサ７０１および７６１が動的な状態であることを前提とする場合であっても、加速度センサ７０１および７６１の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコアユニット７０およびサブユニット７６の傾きを知ることが可能である。
【０１３８】
他の実施例では、加速度センサ７０１および７６１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置をそれぞれ備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ７０１および７６１が静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角に変換するものであってもよい。加速度センサ７０１および７６１でそれぞれ検知された加速度を示すデータは、通信部７５に出力される。
【０１３９】
ここで、コアユニット７０やサブユニット７６を把持してプレイヤが振った場合、振り始めは加速して振り終わりは減速となる。したがって、コアユニット７０やサブユニット７６には、振り始めで振っている方向と同じ方向の加速度が生じた後、徐々に加速度の大きさが減少して、振り終わりで振っている方向とは逆の方向に加速度が生じる。一方、一般的に、加速度センサ７０１および７６１から出力される加速度ベクトル（あるいは、加速度の正負）は、コアユニット７０やサブユニット７６の加速方向とは真逆のベクトルとなる。
【０１４０】
他の実施形態の例では、加速度センサ７０１および７６１の代わりに、少なくとも一方を回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるＭＥＭＳジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ７０１および７６１と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転（または角速度）を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【０１４１】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、２つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロスコープとの基本的な差異と同様にジャイロスコープの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【０１４２】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置本体５からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置本体５から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置本体５から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。また、メモリ７５２または図示しない不揮発記憶手段には、コアユニット７０ごとに固有に設定される識別番号データが記憶される。
【０１４３】
コアユニット７０に設けられた操作部７２からの操作信号（コアキーデータ）、加速度センサ７０１からの加速度信号（コア加速度データ）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。また、接続ケーブル７９を介して、サブユニット７６に設けられた操作部７８からの操作信号（サブキーデータ）および加速度センサ７６１からの加速度信号（サブ加速度データ）は、マイコン７５１に出力される。マイコン７５１は、入力した各データ（コアキーデータ、サブキーデータ、コア加速度データ、サブ加速度データ、処理結果データ）を通信ユニット６へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から通信ユニット６への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期でデータを収集して送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ；登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、通信ユニット６への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として、コントローラ７に固有のコントローラ識別番号を付与して無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥース（登録商標）の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その微弱電波信号をアンテナ７５４から放射する。つまり、コアユニット７０に設けられた操作部７２からのコアキーデータ、サブユニット７６に設けられた操作部７８からのサブキーデータ、コアユニット７０に設けられた加速度センサ７０１からのコア加速度データ、サブユニット７６に設けられた加速度センサ７６１からのサブ加速度データ、撮像情報演算部７４からの処理結果データ、およびコントローラ識別番号は、無線モジュール７５３で微弱電波信号に変調されてコアユニット７０から放射される。そして、ゲーム装置３の通信ユニット６でその微弱電波信号を受信し、ゲーム装置３で当該微弱電波信号を復調や復号することによって、一連の操作情報（コアキーデータ、サブキーデータ、コア加速度データ、サブ加速度データ、および処理結果データ）およびコントローラ識別番号を取得することができる。そして、ゲーム装置３のＣＰＵ３０は、取得した操作情報およびコントローラ識別番号とゲームプログラムとに基づいて、ゲーム処理を行う。
【０１４４】
図１２に示すように、ゲームシステム１でコントローラ７を用いてゲームをプレイするためには、プレイヤは、一方の手（例えば右手）でコアユニット７０を把持し（図１３および図１４参照）、他方の手（例えば左手）でサブユニット７６を把持する（図１６参照）。そして、プレイヤは、コアユニット７０の前面（撮像情報演算部７４が撮像する光の入射口側）がモニタ２に向くようにコアユニット７０を把持する。一方、モニタ２の表示画面近傍には、２つのマーカ８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって赤外光を出力する。
【０１４５】
プレイヤがその前面がモニタ２に向くようにコアユニット７０を把持することによって、撮像情報演算部７４には２つのマーカ８Ｌおよび８Ｒが出力した赤外光が入射する。そして、赤外線フィルタ７４１およびレンズ７４２を介して、入射した赤外光を撮像素子７４３が撮像し、当該撮像画像を画像処理回路７４４が処理する。ここで、撮像情報演算部７４では、マーカ８Ｌおよび８Ｒから出力される赤外線成分を検出することで、当該マーカ８Ｌおよび８Ｒの位置や面積情報を取得する。具体的には、撮像情報演算部７４は、撮像素子７４３が撮像した画像データを解析して、面積情報からマーカ８Ｌおよび８Ｒからの赤外光ではあり得ない画像を除外し、輝度が高い位置をマーカ８Ｌおよび８Ｒそれぞれの位置として判別する。そして、撮像情報演算部７４は、判別されたそれらの位置座標やそれらの重心座標等を取得し、上記処理結果データとして出力する。このような処理結果データをゲーム装置３へ送信することによって、ゲーム装置３では、上記位置座標や重心座標に基づいて、マーカ８Ｌおよび８Ｒに対する撮像情報演算部７４、すなわちコアユニット７０の動き、姿勢、位置等に関連のある操作信号を得ることができる。具体的には、コアユニット７０が動かされることによって、通信部７５から送信される画像内の高輝度点の位置が変化するため、高輝度点の位置の変化に対応させた方向入力や座標入力を行うことで、コアユニット７０の移動方向に沿った方向入力や座標入力を行うことができる。
【０１４６】
このように、コアユニット７０の撮像情報演算部７４によって固定的に設置されたマーカ（実施例では、２つのマーカ８Ｌおよび８Ｒからの赤外光）を撮像することによって、ゲーム装置３におけるゲーム処理において、コアユニット７０の動き、姿勢、位置等に関連した処理結果データを用いることが可能となり、ボタンを押下するような操作ボタンや操作キーとは異なったより直感的な操作入力となる。また、上述したように上記マーカは、モニタ２の表示画面近傍に設置されているため、マーカに対する位置をモニタ２の表示画面に対するコアユニット７０の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コアユニット７０の動き、姿勢、位置等による処理結果データは、モニタ２の表示画面に直接作用する操作入力として用いることができる。
【０１４７】
図１３および図１４を参照して、プレイヤがコアユニット７０を一方の手で把持した状態について説明する。なお、図１３は、プレイヤがコアユニット７０を右手で把持した状態をコアユニット７０の前面側から見た一例である。図１４は、プレイヤがコアユニット７０を右手で把持した状態をコアユニット７０の左側面側から見た一例である。
【０１４８】
図１３および図１４に示すように、コアユニット７０は、全体として大人や子供の片手で把持可能な大きさである。そして、プレイヤの親指をコアユニット７０の上面（例えば、十字キー７２ａ付近）に添え、プレイヤの人差し指をコアユニット７０下面の凹部（例えば、操作ボタン７２ｉ付近）に添えたとき、コアユニット７０の前面に設けられている撮像情報演算部７４の光入射口がプレイヤの前方方向に露出する。なお、このようなコアユニット７０に対する把持状態は、プレイヤの左手であっても同様に行えることは言うまでもない。
【０１４９】
ここで、図１５に示すように、マーカ８Ｌおよび８Ｒは、それぞれ視野角θ１を有している。また、撮像素子７４３は、視野角θ２を有している。例えば、マーカ８Ｌおよび８Ｒの視野角θ１は共に３４°（半値角）であり、撮像素子７４３の視野角θ２は４１°である。そして、撮像素子７４３の視野角θ２の中にマーカ８Ｌおよび８Ｒが共に存在し、マーカ８Ｌの視野角θ１の中でかつマーカ８Ｒの視野角θ１の中に撮像素子７４３が存在するとき、ゲーム装置本体５は、２つのマーカ８Ｌおよび８Ｒによる高輝度点に関する位置データを用いてコアユニット７０の位置を判定する。
【０１５０】
一方、撮像素子７４３の視野角θ２の中に１つのマーカ８Ｌまたは８Ｒだけが存在するとき、またはマーカ８Ｌの視野角θ１およびマーカ８Ｒの視野角θ１の何れか一方の中に撮像素子７４３が存在するとき、２つのマーカ８Ｌおよび８Ｒの何れか一方だけによる高輝度点に関する位置データを用いてコアユニット７０の位置を判定する。
【０１５１】
また、上述したようにコアユニット７０に設けられた加速度センサ７０１からの出力（コア加速度データ）を用いることによって、コアユニット７０の傾き、姿勢、または位置を決定することができる。つまり、プレイヤがコアユニット７０を把持した手を上下左右等に動かすことによって、コアユニット７０は、プレイヤの手の運動や向きに応じた操作入力手段として機能する。
【０１５２】
次に、図１６を参照して、プレイヤがサブユニット７６を一方の手で把持した状態について説明する。なお、図１６は、プレイヤがサブユニット７６を左手で把持した状態をサブユニット７６の右側面側から見た一例である。
【０１５３】
図１６に示すように、サブユニット７６は、全体として大人や子供の片手で把持可能な大きさである。例えば、プレイヤの親指をサブユニット７６の上面（例えば、スティック７８ａ付近）に添え、プレイヤの人差し指をサブユニット７６前面（例えば、操作ボタン７８ｄおよび７８ｅ付近）に添え、プレイヤの中指、薬指、および小指をサブユニット７６下面に添えるように、サブユニット７６を把持することが可能である。なお、このようなサブユニット７６に対する把持状態は、プレイヤの右手であっても同様に行えることは言うまでもない。このように、サブユニット７６は、プレイヤが片手で把持した状態でスティック７８ａや操作ボタン７８ｄおよび７８ｅ等の操作部７８を容易に操作することができる。このように、サブユニット７６の本体（ハウジング７７）は、サブユニット７６全体の側周をプレイヤが片手で握持可能な形状および大きさで形成される。
【０１５４】
また、上述したようにサブユニット７６に設けられた加速度センサ７６１からの出力（サブ加速度データ）を用いることによって、サブユニット７６の傾き、姿勢、または位置を決定することができる。つまり、プレイヤがサブユニット７６を把持した手を上下左右等に動かすことによって、サブユニット７６は、プレイヤの手の運動や向きに応じた操作入力手段として機能する。
【０１５５】
本発明を適用して実現するゲームの一例として、仮想ゲーム空間で行うサッカーゲームがある。以下、サッカーゲームを一例として、ゲームシステム１において行われるゲーム処理の詳細を説明する。なお、図１７は、ゲーム装置本体５のメインメモリ３３に記憶される主なデータを示す図である。
【０１５６】
図１７に示すように、メインメモリ３３には、操作情報Ｄａ、コントローラ識別番号データＤｂ、移動ベクトルデータＤｃ、姿勢ベクトルデータＤｄ、指示座標データＤｅ、仮想空間位置座標データＤｆ、指示対象選手データＤｇ、位置データＤｈ、および画像データＤｉ等が記憶される。なお、後述するように、各コントローラ７は、監督モードまたは一時監督モードのときに、当該コントローラ７の座標入力により特定の選手キャラクタの動作を制御することができるが、当該特定の選手キャラクタのことを指示対象選手と呼ぶ。なお、メインメモリ３３には、図１７に示す情報に含まれるデータの他、ゲームに登場するオブジェクト等に関するデータや仮想ゲーム空間に関するデータ等、ゲーム処理に必要なデータが記憶される。これらのデータは、光ディスク４に記憶されるゲームプログラムをＣＰＵ３０が実行することにより生成されるデータである。
【０１５７】
操作情報Ｄａは、コントローラ７から送信データとして送信されてくる一連の操作情報であり、最新の操作情報に更新される。操作情報Ｄａには、上述の処理結果データに相当する第１座標データＤａ１および第２座標データＤａ２が含まれる。第１座標データＤａ１は、撮像素子７４３が撮像した撮像画像に対して、２つのマーカ８Ｌおよび８Ｒのうちの一方の画像の位置（撮像画像内における位置）を表す座標のデータである。第２座標データＤａ２は、他方のマーカの画像の位置（撮像画像内における位置）を表す座標のデータである。例えば、マーカの画像の位置は、撮像画像におけるＸＹ座標系によって表される。
【０１５８】
また、操作情報Ｄａには、撮像画像から得られる処理結果データの一例の座標データ（第１座標データＤａ１および第２座標データＤａ２）の他、キーデータＤａ３および加速度データＤａ４等が含まれる。具体的には、キーデータＤａ３は、操作部７２から得られるコアキーデータおよび操作部７８から得られるサブキーデータである。また、加速度データＤａ４は、加速度センサ７０１から得られるコア加速度データおよび加速度センサ７６１から得られるサブ加速度データである。なお、ゲーム装置３に備える通信ユニット６は、コントローラ７から所定間隔例えば５ｍｓごとに送信される操作情報Ｄａを受信し、通信ユニット６に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である例えば１フレーム毎（１／６０秒）に読み出され、その最新の情報がメインメモリ３３に記憶される。また、操作情報Ｄａには、最新の操作情報のみならず、必要に応じて、過去の所定時間分の操作情報が履歴として格納される。また、複数のコントローラ７によって、ゲーム装置本体５が操作される場合、各コントローラ７からそれぞれ送信された操作情報がコントローラ識別番号毎に対応付けられて、操作情報Ｄａに格納される。
【０１５９】
コントローラ識別番号データＤｂは、後述する操作チームおよび操作モード別に操作情報を採用するコントローラ識別番号が記述される。例えば、コントローラ識別番号データＤｂは、チームＡの選手モード用コントローラ識別番号Ｄｂ１、チームＡの監督モード用コントローラ識別番号Ｄｂ２、チームＢの選手モード用コントローラ識別番号Ｄｂ３、およびチームＢの監督モード用コントローラ識別番号Ｄｂ４等が記述される。なお、コントローラ識別番号データＤｂは、コアユニット７０内に記憶される識別番号データ（前述）が当該コアユニット７０から送信されて記憶されたものである。また、コントローラ識別番号Ｄｂは、常にすべてが設定されている必要はなく、プレイヤの希望がなかったものについては未設定を示す情報が設定される。また、未設定を示す情報が設定されたチーム・モードについては、コンピュータ制御するようにしてもかまわない。また、３以上のチームが存在するようなゲームであれば、そのチーム数に応じたコントローラ識別番号データＤｂが設定される。また、チームの概念が無いゲームであれば、選手モード用コントローラが少なくとも１つ設定されればよい。なお、１つのコントローラの識別番号データを、複数のコントローラ識別番号データＤｂに設定してもよい。この場合には、例えば、１つのコントローラの操作により、選手モードの処理と監督モードの処理とを実行できる。
【０１６０】
移動ベクトルデータＤｃは、仮想ゲーム空間に登場する各選手キャラクタやボールオブジェクトがそれぞれ仮想ゲーム空間内を移動する方向や速度を示す移動ベクトルデータである。例えば、移動ベクトルデータＤｃは、プレイヤキャラクタＰＣの移動ベクトルデータＤｃ１、ノンプレイヤキャラクタＮＰＣの移動ベクトルデータＤｃ２、指示対象選手の移動ベクトルデータＤｃ３、およびボールオブジェクトＢの移動ベクトルデータＤｃ４等が記述される。なお、本実施例では、仮想ゲーム空間は３次元空間である。しかしながら、本実施例には２次元空間のゲームにも適用可能な要素が含まれることは、当業者には容易に把握可能である。
【０１６１】
姿勢ベクトルデータＤｄは、仮想ゲーム空間におけるプレイヤキャラクタＰＣの上体の姿勢を示すデータである。例えば、姿勢ベクトルデータＤｄは、プレイヤキャラクタ座標系において、プレイヤキャラクタＰＣの腰から頭に向かうベクトルデータ（姿勢ベクトルデータＶｃ）が記述される。この姿勢ベクトルデータＶｃは、３次元ベクトルである。
【０１６２】
指示座標データＤｅは、第１座標データＤａ１および第２座標データＤａ２に基づいて得られるモニタ２の画面座標系に基づいた指示座標を示すデータである。例えば、指示座標は、第１座標データＤａ１から第２座標データＤａ２への方向を示す方向データ（例えば、第１座標データＤａ１の位置を始点とし第２座標データＤａ２の位置を終点とするベクトルデータ）や第１座標データＤａ１と第２座標データＤａ２との中点を示す中点座標データに基づいて算出される。ここで、２つのマーカ（マーカ８Ｌおよび８Ｒ）の画像を１つの対象画像としてみた場合、中点座標データは、対象画像の位置を示すことになる。仮想空間位置座標データＤｆは、上記指示座標に対応する仮想ゲーム空間の仮想空間位置を示す座標データである。仮想空間位置座標データＤｆは、指示座標データＤｅ、仮想カメラのパラメータ、および仮想空間の構成データ（地形データやオブジェクト位置データ）に基づいて算出される。なお、複数のコントローラ７によって、ゲーム装置本体５が操作される場合、各コントローラ７からそれぞれ送信された第１座標データＤａ１および第２座標データＤａ２に基づいて算出された指示座標および仮想空間位置がそれぞれコントローラ識別番号毎に対応付けられて、指示座標データＤｅおよび仮想空間位置座標データＤｆに格納される。
【０１６３】
指示対象選手データＤｇは、各コントローラ７の指示対象選手を示すデータである。例えば、指示対象選手データＤｇは、チームＡの選手モード用コントローラ７の指示対象選手を示すデータＤｇ１、チームＡの監督モード用コントローラ７の指示対象選手を示すデータＤｇ２、チームＢの選手モード用コントローラ７の指示対象選手を示すデータＤｇ３、およびチームＢの監督モード用コントローラ７の指示対象選手を示すデータＤｇ４等が記述される。
【０１６４】
位置データＤｈは、仮想ゲーム空間に登場するキャラクタやオブジェクトがそれぞれ配置される位置を示す仮想ゲーム空間における座標データである。画像データＤｉは、仮想ゲーム空間に登場するキャラクタやオブジェクトや背景を生成するための画像データである。
【０１６５】
次に、図１８〜図２９を参照して、ゲーム装置本体５において行われるゲーム処理の詳細を説明する。なお、図１８は、ゲーム装置本体５において実行されるゲーム処理の流れを示すフローチャートである。図１９は、図１８におけるステップ１５のサブユニット移動処理の詳細な動作を示すサブルーチンである。図２０は、図１８におけるステップ１６のパス処理の詳細な動作を示すサブルーチンである。図２１は、図１８におけるステップ１７の第１シュート処理の詳細な動作を示すサブルーチンである。図２２は、図１８におけるステップ１８の第２シュート処理の詳細な動作を示すサブルーチンである。図２３は、図１８におけるステップ１９の一時監督モード処理の詳細な動作を示すサブルーチンである。図２４は、図１８におけるステップ２０の監督モード処理の詳細な動作を示すサブルーチンである。図２５は、モニタ２に表示されるゲーム画像の一例である。図２６は、プレイヤキャラクタＰＣに設定される姿勢ベクトルＶｃを説明するための図である。図２７は、パスの目標位置ＴＰと領域ＡおよびＢを説明するための図である。図２８は、ボールオブジェクトＢが移動する軌道の一例を示す図である。図２９は、ノンプレイヤキャラクタＮＰＣに設定される移動ベクトルＶｍｎｐｃの一例を示す図である。なお、図１８〜図２４に示すフローチャートにおいては、ゲーム処理のうち、仮想ゲーム空間において、サッカーゲームが実行される処理について主に説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図１８〜図２４では、ＣＰＵ３０が実行する各ステップを「Ｓ」と略称する。なお、図２５に示される仮想ゲーム空間の座標軸は、左右方向（水平方向でありかつタッチラインが伸びる方向）がＸ方向であり、上下方向（垂直方向）がＹ方向であり、奥行き方向（水平方向でありかつゴールラインが伸びる方向）がＺ方向として説明する。
【０１６６】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ３０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ３３等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリ３３に読み込まれ、ＣＰＵ３０によって当該ゲームプログラムの実行が開始される。図１８〜図２４に示すフローチャートは、以上の処理が完了した後に当該ゲームプログラムをＣＰＵ３０が実行することにより行われるゲーム処理を示すフローチャートである。
【０１６７】
図１８において、ＣＰＵ３０は、ゲーム処理の初期設定処理を行い（ステップ１０）、処理を次のステップに進める。例えば、当該サッカーゲームは、選手キャラクタがチームＡとチームＢとに別れてゲームが進行し、プレイヤが何れか一方のチーム（チームＸとする）の選手キャラクタを操作することが可能となっている。そして、プレイヤは、チームＸの選手キャラクタを直接的に操作する選手モードと、チームＸの選手キャラクタを総合的に統率する監督モードとによって、操作モードを選択することが可能である。なお、選手モードと監督モードとの両方を設けることは必須ではなく、選手モードのみでも良いし、監督モードのみでもよい。したがって、上記ステップ１０において、ＣＰＵ３０は、各チームおよび各モードで操作するコントローラ７をそれぞれ区別して管理するために、チームＡの選手モード用コントローラ識別番号、チームＡの監督モード用コントローラ識別番号、チームＢの選手モード用コントローラ識別番号、およびチームＢの監督モード用コントローラ識別番号を設定して、コントローラ識別番号データＤｂに記述する。
【０１６８】
具体的には、使用するコントローラ７（複数の場合はそれぞれ）の操作により、モニタ２上に表示されるメニュ画面においてチーム（ＡまたはＢ）およびモード（選手または監督）を選択し、当該選択をしたコントローラ７内に記憶される識別番号データが、対応するコントローラ識別番号Ｄｂに設定される。例えば、あるコントローラ７の操作により、チームＡを選択し、選手モードを選択した場合、そのコントローラ７の識別番号が、チームＡの選手モード用コントローラ識別番号Ｄｂ１に設定される。また、上記ステップ１０においては、ＣＰＵ３０は、サッカーゲームを開始する前の初期設定（ゲームフィールドの設定、各選手キャラクタ、ボールオブジェクトの初期配置等）を行って、メインメモリ３３に記述された各データを更新する。
【０１６９】
次に、ＣＰＵ３０は、ゲームを開始するか否かを判断する（ステップ１１）。ゲームを開始する条件としては、例えば、ゲーム開始となる条件が満たされたことや、プレイヤがゲームを開始する操作を行ったこと等がある。ＣＰＵ３０は、ゲームを開始しない場合に上記ステップ１１の処理を繰り返し、ゲームを開始する場合に次のステップ１２に処理を進める。
【０１７０】
ステップ１２〜ステップ２４の各処理は、上述したゲームの処理単位（例えば、１／６０秒）毎に繰り返される処理であり、チームＡおよびチームＢそれぞれ（チームＸ）について行われる処理である。以下の説明では、チームＡおよびチームＢそれぞれについて行う処理を、チームＸについて行う処理として記載する。
【０１７１】
ステップ１２において、ＣＰＵ３０は、コントローラ７（複数の場合はそれぞれ）から操作情報を受信して、各コントローラ識別番号別に操作情報Ｄａに格納する。次に、ＣＰＵ３０は、コントローラ識別番号データＤｂを参照して、チームＸについて選手モード用のコントローラ識別番号Ｄｂが設定されているか否かを判断する（ステップ１３）。そして、ＣＰＵ３０は、チームＸについて選手モード用のコントローラ識別番号Ｄｂが設定されている場合、次のステップ１４に処理を進める。一方、ＣＰＵ３０は、チームＸについて選手モード用のコントローラ識別番号Ｄｂが設定されていない場合、次のステップ２５に処理を進める。
【０１７２】
ステップ１４において、ＣＰＵ３０は、チームＸの各ノンプレイヤキャラクタＮＰＣの移動ベクトルＶｍｎｐｃを所定の自動移動アルゴリズムを用いて設定して、移動ベクトルデータＤｃに格納する。次に、ＣＰＵ３０は、サブユニット移動処理（ステップ１５）、パス処理（ステップ１６）、第１シュート処理（ステップ１７）、第２シュート処理（ステップ１８）、一時監督モード処理（ステップ１９）、および監督モード処理（ステップ２０）を経て、処理をステップ２１に進める。なお、ステップ１５〜ステップ２０で行う詳細な処理については、後述する。
【０１７３】
例えば、図２５に示すように、プレイヤがチームＡに所属する選手キャラクタＰＡ（白抜き図形で示す）を選手モードで操作し、チームＢに所属するコンピュータ制御の選手キャラクタＰＢ（塗りつぶし図形で示す）とサッカーゲームで対戦する場合を想定する。この場合、プレイヤは、選手キャラクタＰＡの何れか（図２５においては、選手キャラクタＰＡ１）をプレイヤキャラクタＰＣとして直接的に操作し、他の選手キャラクタＰＡがノンプレイヤキャラクタＮＰＣとなる。また、選手キャラクタＰＢは、全てノンプレイヤキャラクタＮＰＣとなる。そして、選手キャラクタの何れかがボールオブジェクトＢをキープしているチームが攻撃側のチームであり（図２５においては、プレイヤキャラクタＰＡ１がボールオブジェクトＢをキープしているのでチームＡが攻撃側のチーム）と、他方のチームが守備側のチームである（図２５においては、チームＢ）。ここで、ＣＰＵ３０は、上記ステップ１４において、チームＸが守備側の場合（チームＸがチームＢの場合）、ボールオブジェクトＢをキープしている選手キャラクタ（プレイヤキャラクタＰＡ１）の位置データを基準とする所定範囲に配置されたチームＸ（チームＢ）の選手キャラクタ（図２５においては、選手キャラクタＰＢ１）の移動ベクトルを、ボールオブジェクトＢをキープしている選手キャラクタの上体の姿勢ベクトル（後述）に応じて設定する。具体的には、本実施例では、ＣＰＵ３０は、上記所定範囲に配置された選手キャラクタの移動ベクトルを、「ボールオブジェクトＢをキープしている選手キャラクタ（ＰＡ１）の姿勢ベクトルを仮想水平面に投影したベクトルＡ（Ｘ成分が姿勢ベクトルのＸ成分に等しく、Ｙ成分が０で、Ｚ成分が姿勢ベクトルのＺ成分に等しいベクトル）」に基づいた方向になるように設定する。なお、前述の自動移動アルゴリズムによって設定された当該選手キャラクタの移動ベクトルを、当該ベクトルＡで補正（典型的には加算）してもよい。
【０１７４】
一方、ステップ１３においてＮｏの場合（すなわち、チームＸの選手モード用のコントローラ７が未設定の場合）、ステップ２５において、ＣＰＵ３０は、チームＸの全選手キャラクタの移動ベクトルＶｍｎｐｃを所定の自動移動アルゴリズムを用いて設定して、移動ベクトルデータＤｃに格納する（つまり、チームＸに選手モード用のコントローラ７が設定されていないため、チームＸの全選手キャラクタがノンプレイヤキャラクタＮＰＣとなる）。なお、上記ステップ２５においても、上記ステップ１４と同様に上記所定範囲に配置された選手キャラクタの移動ベクトルの上記姿勢ベクトルに応じた設定または補正が行われる。次に、ＣＰＵ３０は、監督モード処理（ステップ２０）を経て、処理をステップ２１に進める。
【０１７５】
ステップ２１において、ＣＰＵ３０は、移動ベクトルデータＤｃに記述された各移動ベクトルデータに基づいて、各キャラクタやオブジェクトを仮想ゲーム空間内で移動させ、ゲーム画像をモニタ２に表示する。次に、ＣＰＵ３０は、移動ベクトルデータＤｃに記述された各移動ベクトルデータを、それぞれ所定量減衰させて移動ベクトルデータＤｃを更新する（ステップ２２）。そして、ＣＰＵ３０は、ゴール処理、ファウル処理、プレイヤキャラクタＰＣの切替処理等、サッカーゲームで行われる他の処理を行って（ステップ２３）、処理を次のステップに進める。
【０１７６】
次に、ＣＰＵ３０は、ゲームを終了するか否かを判断する（ステップ２４）。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。ＣＰＵ３０は、ゲームを終了しない場合に上記ステップ１２に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
【０１７７】
次に、図１９を参照して、上記ステップ１５におけるサブユニット移動処理について、詳細な動作を説明する。
【０１７８】
図１９において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれる最新のサブキーデータを参照し（ステップ４１）、処理を次のステップに進める。ここで、上記ステップ１２において、操作情報Ｄａは、各コントローラ識別番号別にそれぞれのコントローラ７から送信された操作情報が格納されており、コントローラＩＤデータＤｂには、チームＸの選手モード用コントローラ識別番号が記述されている。したがって、ＣＰＵ３０は、コントローラＩＤデータＤｂに記述されたチームＸの選手モード用コントローラ識別番号に基づいて、操作情報Ｄａから選手モード用サブユニットから送信された操作情報を抽出することが可能となる。
【０１７９】
次に、ＣＰＵ３０は、上記ステップ４１で参照した選手モード用サブユニットのサブキーデータに基づいて、プレイヤから方向指示入力があるか否かを判断する（ステップ４２）。上述したように、サブユニット７６は、スティック７８ａが設けられており、プレイヤが傾倒可能なスティック７８ａを倒すことによって方向指示入力が可能である。そして、ＣＰＵ３０は、プレイヤから方向指示入力がある場合、次のステップ４３に処理を進める。一方、ＣＰＵ３０は、プレイヤから方向指示入力がない場合、次のステップ４７に処理を進める。
【０１８０】
ステップ４３において、ＣＰＵ３０は、チームＸの選手モード用サブユニット７６からの方向指示入力に基づいて、チームＸのプレイヤキャラクタＰＣの移動ベクトルＶｍｐｃを算出して、移動ベクトルデータＤｃを更新し、処理を次のステップに進める。例えば、図２６に示すように、仮想ゲーム空間におけるプレイヤキャラクタＰＣの移動方向および移動速度を示すデータとして、移動ベクトルＶｍｐｃが設定される。上記ステップ４３において、ＣＰＵ３０は、移動ベクトルデータＤｃに格納されているプレイヤキャラクタＰＣの現在の移動ベクトルＶｍｐｃを基準として、スティック７８ａの傾倒方向に応じて決定される仮想ゲーム空間における方向で、かつスティック７８ａの傾倒角度に応じた大きさの新たな移動ベクトルＶｍｐｃを算出する。この処理によって、プレイヤが操作するチームＸのプレイヤキャラクタＰＣは、当該プレイヤが所持するサブユニット７６のスティック７８ａを操作することによって、仮想ゲーム空間における移動方向および移動速度が制御される。
【０１８１】
次に、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する（ステップ４４）。そして、ＣＰＵ３０は、サブ加速度データが示すＺ軸正方向（図９参照）の加速度が所定値以上であるか否かを判断する（ステップ４５）。そして、ＣＰＵ３０は、Ｚ軸正方向の加速度が所定値以上である場合、前述のようにステップ４３で決定された、チームＸにおけるプレイヤキャラクタＰＣの移動ベクトルＶｍｐｃの大きさを所定アルゴリズムにより増加させて（例えば、当該Ｚ軸正方向の加速度の大きさに応じて増加させて、または、所定値だけ増加させて、または、ｎ倍（ｎは１より大きい数値）して）、プレイヤキャラクタＰＣの移動ベクトルデータＤｃを更新し（ステップ４６）、次のステップ４７に処理を進める。このステップ４６の処理によって、プレイヤが操作するプレイヤキャラクタＰＣの仮想ゲーム空間における移動速度は、プレイヤがサブユニット７６を前方に傾けることによって（すなわち、Ｚ軸正方向がＺ軸負方向よりも低い位置を指す方向となるようにすることによって）加速される。一方、ＣＰＵ３０は、Ｚ軸方向の加速度の大きさが所定値未満である場合、そのまま次のステップ４７に処理を進める。なお、ステップ４５において、Ｚ軸負方向の加速度が所定値（マイナス値）よりも小さいか否かを判断し、当該判断がＹｅｓのときには、チームＸにおけるプレイヤキャラクタＰＣの移動ベクトルＶｍｐｃの大きさを所定アルゴリズムにより減少させて（例えば、当該Ｚ軸負方向の加速度の大きさに応じて減少させて、または、所定値だけ減少させて、または、ｍ倍（ｍは１より小さい数値）して）、プレイヤキャラクタＰＣの移動ベクトルデータＤｃを更新するようにしてもよい。
【０１８２】
ステップ４７において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する。そして、ＣＰＵ３０は、サブ加速度データに応じて、チームＸにおけるプレイヤキャラクタＰＣの姿勢ベクトルＶｃを算出して、姿勢ベクトルデータＤｄを更新し、処理を次のステップに進める。
【０１８３】
例えば、図２６に示すように、仮想ゲーム空間におけるプレイヤキャラクタＰＣの姿勢を示すデータとして、姿勢ベクトルＶｃが設定される。ここで、姿勢ベクトルＶｃは、プレイヤキャラクタ座標系に基づいて設定される。プレイヤキャラクタ座標系は、仮想ゲーム空間におけるプレイヤキャラクタＰＣの正面方向をＺｐ軸方向とし（典型的には、プレイヤキャラクタＰＣの移動ベクトルＶｍｐｃの方向をＺｐ軸方向とする。または、プレイヤキャラクタＰＣの移動方向ベクトルとプレイヤキャラクタＰＣの向きベクトル（前方ベクトル）とを独立して制御する場合には、プレイヤキャラクタＰＣの向きベクトルの方向を、Ｚｐ軸方向とが一致するようにしてもよい）、プレイヤキャラクタＰＣの前方方向をＺｐ軸正方向とする。また、仮想ゲーム空間におけるプレイヤキャラクタＰＣの左右方向をＸｐ軸方向とし、プレイヤキャラクタＰＣから見て右方向をＸｐ軸正方向とする。また、仮想ゲーム空間におけるプレイヤキャラクタＰＣの垂直方向をＹｐ軸方向とし、上方向をＹｐ軸正方向とする。姿勢ベクトルＶｃは、プレイヤキャラクタＰＣの腰部から頭部に向かうベクトルデータとして設定されている。姿勢ベクトルＶｃは、典型的にはプレイヤキャラクタ座標系におけるベクトルデータである。
【０１８４】
上記ステップ４８において、ＣＰＵ３０は、サブ加速度データが示すＸ軸方向（図９参照）の加速度をプレイヤキャラクタ座標系のＸｐ軸方向に対応付け、サブ加速度データが示すＹ軸方向の加速度をプレイヤキャラクタ座標系のＹｐ軸方向に対応付け、サブ加速度データが示すＺ軸方向の加速度をプレイヤキャラクタ座標系のＺｐ軸方向に対応付けて、姿勢ベクトルＶｃを算出する。
【０１８５】
例えば、上記ステップ４８では、一例としてサブユニット７６の傾きに応じて、プレイヤキャラクタＰＣの姿勢が制御される。この場合、具体的には、サブ加速度データが示すＸ軸方向の加速度の値に応じて（典型的には、比例して）、プレイヤキャラクタ座標系における姿勢ベクトルデータのＸｐ軸方向の値を決定し、サブ加速度データが示すＹ軸方向の加速度の正負を反転した値に応じて（典型的には、比例して）、プレイヤキャラクタ座標系における姿勢ベクトルデータのＹｐ軸方向の値を決定し、サブ加速度データが示すＺ軸方向の加速度の値に応じて（典型的には、比例して）、プレイヤキャラクタ座標系における姿勢ベクトルデータのＺｐ軸方向の値を決定する（それぞれの比例定数は、共通とするのが典型的であるがこれに限らない）。より具体的には、例えば、サブ加速度データが示すＸ軸方向の加速度の値：Ｙ軸方向の加速度の値：Ｚ軸方向の加速度の値＝プレイヤキャラクタ座標系における姿勢ベクトルデータのＸｐ軸方向の値：姿勢ベクトルデータのＹｐ軸方向の値：姿勢ベクトルデータのＺｐ軸方向の値となるように、姿勢ベクトルデータを決定する。または、サブ加速度データが示すＸ軸方向の加速度の値に応じて、プレイヤキャラクタ座標系における姿勢ベクトルデータのＸｐ軸方向の値を決定し、サブ加速度データが示すＺ軸方向の加速度の値に応じて、プレイヤキャラクタ座標系における姿勢ベクトルデータのＺｐ軸方向の値を決定するようにし、プレイヤキャラクタ座標系における姿勢ベクトルデータのＹｐ軸方向の値は一定としてもよい。
【０１８６】
例えば、上記ステップ４８では、一例としてサブユニット７６の動き（平行移動）に応じて、プレイヤキャラクタＰＣの姿勢が制御される。例えば、プレイヤがサブユニット７６を右方向に動かした場合、サブユニット７６にＸ軸正方向の加速度が生じる（プレイヤがサブユニット７６を右方向に動かした場合に、当該動きの当初に出力されるＸ軸正方向の加速度を検出してもよいし、当該動きを止めるときに出力されるＸ軸負方向の加速度を検出してもよい）。そして、サブユニット７６に設けられた加速度センサ７６１が上記Ｘ軸正方向の加速度を検出し、サブユニット７６から当該加速度を示すサブ加速度データがゲーム装置本体５へ送信される。一方、ＣＰＵ３０は、受信したサブ加速度データが示す上記Ｘ軸正方向の加速度に応じて、当該加速度の大きさでＸｐ軸正方向のベクトルを姿勢ベクトルＶｃに足して、新たな姿勢ベクトルＶｃを算出する。そして、プレイヤキャラクタＰＣの上体は、新たに算出された姿勢ベクトルＶｃに応じてＸｐ軸正方向に傾くことになる。そして、プレイヤがサブユニット７６を前方向に動かした場合、サブユニット７６にＺ軸正方向の加速度が生じる。そして、サブユニット７６に設けられた加速度センサ７６１が、上記Ｚ軸正方向の加速度を検出し、サブユニット７６から当該加速度を示すサブ加速度データがゲーム装置本体５へ送信される。一方、ＣＰＵ３０は、受信したサブ加速度データが示す上記Ｚ軸正方向の加速度に応じて、当該加速度の大きさでＺｐ軸正方向のベクトルを姿勢ベクトルＶｃに足して、新たな姿勢ベクトルＶｃを算出する。そして、プレイヤキャラクタＰＣの上体は、新たに算出された姿勢ベクトルＶｃに応じてＺｐ軸正方向に傾くことになる。このステップ４８の処理によって、プレイヤが操作するプレイヤキャラクタＰＣの仮想ゲーム空間における姿勢は、プレイヤがサブユニット７６全体を動かす動作に応じて変化する。
【０１８７】
ここで、上記ステップ１４およびステップ２５において、ボールオブジェクトＢをキープしているプレイヤキャラクタＰＣの所定範囲に配置された相手チームの選手キャラクタ（例えば、図２５に示す選手キャラクタＰＢ１）の移動ベクトルは、プレイヤキャラクタＰＣの姿勢ベクトルＶｃに応じて補正される。具体的には、姿勢ベクトルＶｃを仮想水平面に投影したベクトルを、上記相手チームの選手キャラクタの移動ベクトルに加えることによって補正されるため、当該選手キャラクタが移動する方向は、仮想ゲーム空間の垂直方向に対して姿勢ベクトルＶｃが傾く方向へ変化する。つまり、プレイヤがサブユニット７６全体を動かす動作によって変化したプレイヤキャラクタＰＣの姿勢に応じて相手チームの選手キャラクタが移動することになり、いわゆるサッカーゲームでドリブル中のフェイントに相手選手がつられるような動作が表現される。
【０１８８】
図１９に戻り、上記ステップ４８の処理の後、ＣＰＵ３０は、チームＸに所属する何れかの選手キャラクタがボールオブジェクトＢを保持しているか否かを判断する（ステップ４９）。そして、ＣＰＵ３０は、チームＸに所属する何れかの選手キャラクタがボールオブジェクトＢを保持している場合（すなわち、チームＸが攻撃側の場合）、次のステップ５０に処理を進める。一方、ＣＰＵ３０は、チームＸに所属する選手キャラクタがボールオブジェクトＢを保持していない場合、次の上記ステップ１９に処理を進める。
【０１８９】
ステップ５０において、ＣＰＵ３０は、上記ステップ４７で参照した最新のサブ加速度データが示すＸ軸方向の加速度の大きさ（絶対値）が所定加速度Ａ１以上（例えば、０．５Ｇ以上としてよいが、任意の値でよい）であるか否かを判断する。そして、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが当該所定加速度Ａ１以上である場合、次のステップ５１に処理を進める。一方、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが当該所定加速度Ａ１未満である場合、当該サブルーチンによる処理を終了して、上記ステップ１６の処理へ進める。
【０１９０】
ステップ５１において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれるサブ加速度データの履歴を参照し、サブ加速度データの履歴が示すＸ軸方向の加速度の方向が直近の所定時間内に所定加速度Ａ１以上の大きさでｎ回（ｎは、１以上の整数）反転しているか否かを判断する。例えば、サブ加速度データの履歴を参照して、「直近の過去所定時間内に、最新のサブ加速度データ（ステップ５０において加速度Ａ１以上と判定されたデータ）が示す加速度とは正負が反対でかつ絶対値が加速度Ａ１以上のデータが存在する」か否かを判断する（ｎ＝１の場合）。または、「直近の過去所定時間内に、最新のサブ加速度データが示す加速度とは正負が反対でかつ絶対値が加速度Ａ１以上のデータが存在し、さらに、当該データより前に、当該データとは正負が反対で絶対値が加速度Ａ１以上のデータが存在する」か否かを判断する（ｎ＝２の場合）。または、サブ加速度データの履歴が示すＸ軸方向の加速度の方向が所定加速度Ａ１以上の大きさでｎ回反転し、かつ、反転の間隔がそれぞれ所定時間以内であるか否かを判断してもよい。
【０１９１】
そして、ＣＰＵ３０は、Ｘ軸方向の加速度の方向が所定時間内に反転している場合、チームＸにおけるプレイヤキャラクタＰＣの移動ベクトルＶｍｐｃにＸｐ軸方向の所定の大きさのベクトル（ベクトルの大きさは、固定でもよいし、サブ加速度データが示すＸ軸方向の加速度の大きさに比例した大きさとしてもよい。ベクトルの向きは、Ｘ軸方向の加速度が正ならＸｐ軸の正方向であり、Ｘ軸方向の加速度が負ならＸｐ軸の負方向）を加算して、移動ベクトルＶｍｐｃとする。（ステップ５２）、当該サブルーチンによる処理を終了して、上記ステップ１６の処理へ進める。このステップ５０〜ステップ５２の処理によって、プレイヤが操作するプレイヤキャラクタＰＣの仮想ゲーム空間における移動速度は、プレイヤがサブユニット７６を左右（つまり、Ｘ軸方向）に振り動かすことによってジグザグに移動するように移動制御される。一方、ＣＰＵ３０は、Ｘ軸方向の加速度の方向が所定時間内に反転していない場合、そのまま当該サブルーチンによる処理を終了して、上記ステップ１６の処理へ進める。
【０１９２】
なお、上述したサブユニット移動処理については、以下のようにしてもよい。第１の例として、最新のサブ加速度データが示すＸ軸方向の加速度の大きさ（絶対値）が所定値（例えば、重力加速度（１．０Ｇ））以内の場合、ステップ４８において、最新のサブ加速度データが示すＸ軸方向の加速度を用いた姿勢ベクトルの制御を行う。第２の例として、最新のサブ加速度データが示すＸ軸方向の加速度の大きさ（絶対値）が当該所定値より大きい場合、ステップ４８において、プレイヤキャラクタＰＣが上体または全身をＸｐ軸方向に大きく振る動作をするような（フェイントを表現した姿勢をするような）動作制御をする。
【０１９３】
さらに、上記サブユニット移動処理の第１の例について、以下のようにしてもよい。第３の例として、最新のサブ加速度データが示すＸ軸方向の加速度の大きさ（絶対値）が当該所定値以内で、かつ、サブ加速度データの履歴が示すＸ軸方向の加速度の方向が直近の所定時間内に加速度Ａ１以上の大きさでｎ回（ｎは１以上の整数）反転している場合、プレイヤキャラクタＰＣの移動ベクトルＶｍｐｃにＸｐ軸方向の所定の大きさのベクトルを加算して、移動ベクトルＶｍｐｃとする。第４の例として、最新のサブ加速度データが示すＸ軸方向の加速度の大きさ（絶対値）が所定値Ａ２以内で、かつ、上記第３の例以外の場合、ステップ４８において、最新のサブ加速度データが示すＸ軸方向の加速度を用いた姿勢ベクトルの制御を行う。そして、上記第１の例や第４の例の場合には、ステップ１４とステップ２５において前述した「プレイヤキャラクタＰＣの所定範囲に配置された相手チームの選手キャラクタ」が、プレイヤキャラクタＰＣのフェイントにつられる移動制御はしないようにしてもよい。
【０１９４】
このように、ステップ１５におけるサブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向（さらには、付加的に移動速度）が制御されながら、サブユニット７６に設けられた加速度センサ７６１から出力される加速度データに応じてプレイヤキャラクタＰＣの姿勢が制御される。つまり、プレイヤは、プレイヤキャラクタＰＣの移動方向制御と姿勢制御とを、片手で効率的かつ直感的に入力することができる。
【０１９５】
また、上記サブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向（さらには、付加的に移動速度）が制御されながら、当該移動方向が、サブユニット７６に設けられた加速度センサ７６１から出力される加速度データに応じて補正される。つまり、プレイヤは、プレイヤキャラクタＰＣの移動方向制御とその補正とを、片手で効率的かつ直感的に入力することができる。具体的には、以下のようにすることができる。スティック７８ａの傾倒方向に応じてプレイヤキャラクタＰＣの移動ベクトルの方向を決める。すなわち、例えば、上方向に指示したときに、プレイヤキャラクタＰＣのローカル座標系のＺ軸正方向（プレイヤキャラクタＰＣの前方向）に移動（プレイヤキャラクタＰＣの前進方向ベクトルの方向に移動）する。方向指示手段を下方向に指示したときに、プレイヤキャラクタＰＣのローカル座標系のＺ軸負方向に移動する。方向指示手段を右方向に指示したときに、ローカル座標系のＸ軸正方向に移動する。そして、方向指示手段を左方向に指示したときに、ローカル座標系のＸ軸負方向に移動するように移動制御する。移動ベクトルの大きさは、固定値でもよいし、スティック７８ａの傾倒量に応じて決めても良い。そして、加速度センサ７６１の出力に応じて、プレイヤキャラクタＰＣの移動方向を以下のように補正することができる。
【０１９６】
プレイヤキャラクタＰＣの移動方向を補正する第１の例として、加速度センサ７６１のＸ軸、Ｙ軸、Ｚ軸をそれぞれ、所定座標系のＸ軸、Ｙ軸、Ｚ軸に対応付けた（または、前進方向とそれに直交する２方向に対応付けて）加速度センサ７６１の出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。そして、上記方向ベクトルを補正ベクトルとして、当該補正ベクトルをスティック７８ａの傾倒により求めた上記移動ベクトルに加算する。上記補正ベクトルの大きさは、固定値でもよいし、上記出力ベクトルの大きさに応じて決めても良い。
【０１９７】
プレイヤキャラクタＰＣの移動方向を補正する第２の例として、加速度センサ７６１の所定方向（例えば、Ｘ軸方向）の出力値が所定値以上のときに、所定座標系の対応する方向（例えば、Ｘ軸方向）の補正ベクトルを、スティック７８ａの傾倒により求めた上記移動ベクトルに加算する。
【０１９８】
プレイヤキャラクタＰＣの移動方向を補正する第３の例として、加速度センサ７６１の所定方向（例えば、Ｘ軸方向）の出力値に応じた大きさで、所定座標系の対応する方向（例えば、Ｘ軸方向）の補正ベクトルを、スティック７８ａの傾倒により求めた上記移動ベクトルに加算する。
【０１９９】
なお、プレイヤキャラクタＰＣの移動方向を補正する第２および第３の例について、複数の方向について実施してもよい。すなわち、例えば、第３の例について、加速度センサ７６１のＸ軸方向の出力値に応じた大きさで、所定座標系のＸ軸方向の補正ベクトルを、スティック７８ａの傾倒により求めた上記移動ベクトルに加算し、さらに、加速度センサ７６１のＹ軸方向の出力値に応じた大きさで、所定座標系のＹ軸方向の補正ベクトルを加算してもよい。
【０２００】
また、上記所定座標系は、プレイヤキャラクタＰＣのローカル座標系でもよいし、仮想ゲーム空間の座標系でもよいし（この場合、方向ベクトルは、典型的には仮想垂直方向や仮想水平方向などとなる）、カメラ座標系であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく座標系（例えば、上記補正ベクトルが当該移動方向に直交する方向など）であってもよい。
【０２０１】
また、上記サブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向が制御されながら、プレイヤキャラクタＰＣの移動速度の制御がされる。つまり、プレイヤは、プレイヤキャラクタＰＣの移動方向制御と移動速度の制御とを、片手で効率的かつ直感的に入力することができる。この場合、以下のようにすることができる。スティック７８ａの傾倒方向に応じて、プレイヤキャラクタＰＣの移動方向を決める。そして、プレイヤキャラクタＰＣの移動速度（絶対値）は、加速度センサ７６１の出力に応じて、以下のように決めることができる。
【０２０２】
プレイヤキャラクタＰＣの移動速度を決定する第１の例は、加速度センサ７６１の出力ベクトルの絶対値が所定値以上のときに、当該移動速度を所定速度とし、当該所定値より小さいときは当該移動速度を０とする。
【０２０３】
プレイヤキャラクタＰＣの移動速度を決定する第２の例は、当該移動速度を加速度センサ７６１の出力ベクトルの絶対値に応じた速度とする（当該絶対値が大きいほど、当該移動速度が大きくなるようにする）。このとき、上記出力ベクトルの所定成分（例えば、Ｚ軸方向成分）が正のときには、プレイヤキャラクタＰＣがスティック７８ａの傾倒方向に応じた移動方向に移動し、負のときには、プレイヤキャラクタＰＣがスティック７８ａの傾倒方向に応じた移動方向と反対方向に移動するようにしてもよい。また、上記所定方向の出力成分が正のときのみ、当該第２の例によって上記移動速度を決定するようにしてもよい。
【０２０４】
プレイヤキャラクタＰＣの移動速度を決定する第３の例は、加速度センサ７６１の所定方向の出力成分（例えば、Ｚ軸方向の出力値）が所定値以上のときに、当該移動速度を所定速度とし、当該所定値より小さいときは当該移動速度を０とする。
【０２０５】
プレイヤキャラクタＰＣの移動速度を決定する第４の例は、当該移動速度を加速度センサ７６１の所定方向の出力成分（例えば、Ｚ軸方向の出力値）の絶対値に応じた速度とする。
【０２０６】
なお、プレイヤキャラクタＰＣの移動速度を決定する第３および第４の例において、上記所定方向の出力成分が正のときにはスティック７８ａの傾倒方向に応じた移動方向にプレイヤキャラクタＰＣが移動し、上記所定方向の出力成分が負のときには、当該移動方向と反対の方向にプレイヤキャラクタＰＣが移動するようにしてもよい。また、上記所定方向の出力成分が正のときのみ、当該第３および第４の例によって上記移動速度を決定するようにしてもよい。
【０２０７】
プレイヤキャラクタＰＣの移動速度を決定する第５の例は、加速度センサ７６１の、スティック７８ａの傾倒方向に対応する方向の出力成分（例えば、スティック７８ａの傾倒方向が上方向のときにはＺ軸方向の出力値、スティック７８ａの傾倒方向が右方向のときにはＸ軸方向の出力値など）が、所定値以上のときに当該移動速度を所定速度とし、当該所定値より小さいときは当該移動速度を０とする。
【０２０８】
プレイヤキャラクタＰＣの移動速度を決定する第６の例は、当該移動速度を加速度センサ７６１の、スティック７８ａの傾倒方向に対応する方向の出力成分（例えば、スティック７８ａの傾倒方向が上方向のときにはＺ軸方向の出力値、スティック７８ａの傾倒方向が右方向のときにはＸ軸方向の出力値など）の絶対値に応じた速度とする。
【０２０９】
なお、プレイヤキャラクタＰＣの移動速度を決定する第５および第６の例において、上記対応する方向の出力成分が正のときにはスティック７８ａの傾倒方向に応じた移動方向にプレイヤキャラクタＰＣが移動し、上記対応する方向の出力成分が負のときには、当該移動方向と反対の方向にプレイヤキャラクタＰＣが移動するようにしてもよい。
【０２１０】
また、上記サブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向と移動速度とが制御されながら、移動速度の補正制御がされる。つまり、プレイヤは、プレイヤキャラクタＰＣの移動方向制御と移動速度の補正制御とを、片手で効率的かつ直感的に入力することができる。この場合、以下のようにすることができる。スティック７８ａの傾倒方向に応じてプレイヤキャラクタＰＣの移動方向を決めて、かつ、スティック７８ａの傾倒量に応じてプレイヤキャラクタＰＣの移動速度を決める。そして、加速度センサ７６１の出力に応じて、プレイヤキャラクタＰＣの移動速度を以下のように補正することができる。
【０２１１】
プレイヤキャラクタＰＣの移動速度を補正する第１の例は、加速度センサ７６１の出力ベクトルの絶対値が所定値以上のときに、スティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より小さいときはプレイヤキャラクタＰＣの移動速度を０に補正する。
【０２１２】
プレイヤキャラクタＰＣの移動速度を補正する第２の例は、加速度センサ７６１の出力ベクトルの絶対値が所定値以下のときに、スティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より大きいときはプレイヤキャラクタＰＣの移動速度を増加補正する（所定値を加算、ｎ倍（ｎ＞１）など）。
【０２１３】
プレイヤキャラクタＰＣの移動速度を補正する第３の例は、加速度センサ７６１の出力ベクトルの絶対値に応じて、スティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度に増加補正する（当該絶対値が大きいほど、増加量が大きくなるようにする）。
【０２１４】
なお、プレイヤキャラクタＰＣの移動速度を補正する第２および第３の例において、上記出力ベクトルの所定成分（例えばＺ軸方向成分）が正のときには、スティック７８ａの傾倒方向に応じた移動方向にプレイヤキャラクタＰＣが移動し、負のときには、スティック７８ａの傾倒方向に応じた移動方向と反対方向にプレイヤキャラクタＰＣが移動するようにしてもよい。また、上記所定方向の出力成分が正のときのみ、当該第２および第３の例によって上記移動速度を補正するようにしてもよい。
【０２１５】
プレイヤキャラクタＰＣの移動速度を補正する第４の例は、加速度センサ７６１の所定方向の出力成分（例えば、Ｚ軸方向の出力値）が所定値以上のときにスティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より小さいときはプレイヤキャラクタＰＣの移動速度を０に補正する。
【０２１６】
プレイヤキャラクタＰＣの移動速度を補正する第５の例は、加速度センサ７６１の所定方向の出力成分（例えば、Ｚ軸方向の出力値）が所定値以下のときにスティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より大きいときはプレイヤキャラクタＰＣの移動速度を増加補正する。なお、上記所定方向の出力成分が正のときのみ、当該第５の例によって上記移動速度を補正してもよいし、上記所定方向の出力成分が負のときにはスティック７８ａの傾倒量に応じた移動速度を用いてプレイヤキャラクタＰＣの移動速度を減少補正してもよい。
【０２１７】
プレイヤキャラクタＰＣの移動速度を補正する第６の例は、加速度センサ７６１の所定方向の出力成分（例えば、Ｚ軸方向の出力値）の大きさに応じて、スティック７８ａの傾倒量に応じた移動速度を用いてプレイヤキャラクタＰＣの移動速度を増加補正する（当該絶対値が大きいほど、増加量が大きくなるようにする）。なお、上記所定方向の出力成分が正のときのみ、当該第６の例によって上記移動速度を補正してもよいし、上記所定方向の出力成分が負のときにはスティック７８ａの傾倒量に応じた移動速度を用いてプレイヤキャラクタＰＣの移動速度を減少補正してもよい。
【０２１８】
プレイヤキャラクタＰＣの移動速度を補正する第７の例は、加速度センサ７６１の、スティック７８ａの傾倒方向に対応する方向の出力成分（例えば、スティック７８ａの傾倒方向が上方向のときにはＺ軸正方向の出力値、スティック７８ａの傾倒方向が右方向のときにはＸ軸正方向の出力値など）が、所定値以上のときにスティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より小さいときはプレイヤキャラクタＰＣの移動速度を０に補正する。
【０２１９】
プレイヤキャラクタＰＣの移動速度を補正する第８の例は、加速度センサ７６１の、スティック７８ａの傾倒方向に対応する方向の出力成分が、所定値以下のときにスティック７８ａの傾倒量に応じた移動速度をプレイヤキャラクタＰＣの移動速度としてそのまま使用し、当該所定値より大きいときにプレイヤキャラクタＰＣの移動速度を増加補正する。
【０２２０】
プレイヤキャラクタＰＣの移動速度を補正する第９の例は、加速度センサ７６１の、スティック７８ａの傾倒方向に対応する方向の出力成分の大きさに応じて、スティック７８ａの傾倒量に応じた移動速度を用いてプレイヤキャラクタＰＣの移動速度を増加補正する（当該絶対値が大きいほど、増加量が大きくなるようにする）。
【０２２１】
なお、プレイヤキャラクタＰＣの移動速度を補正する第８および第９の例において、上記所定方向の出力成分が正のときのみ当該第８および第９の例によって上記移動速度を補正してもよいし、上記対応する出力値が正のときにはスティック７８ａの傾倒方向に応じた移動方向にプレイヤキャラクタＰＣが移動し、上記対応する出力値が負のとき（当該対応する方向と反対方向の出力があるとき）には、当該移動方向と反対の方向にプレイヤキャラクタＰＣが移動するようにしてもよい。
【０２２２】
また、上記サブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向（さらには、付加的に移動速度）が制御されながら、プレイヤキャラクタＰＣの動作制御（例えば、前述のフェイント動作）が行われる。つまり、プレイヤは、プレイヤキャラクタＰＣの移動方向制御と動作制御とを、片手で効率的かつ直感的に入力することができる。これは、加速度センサ７６１の出力が所定の条件を満たしたときに、プレイヤキャラクタＰＣに所定の動作をさせるように制御することにより実現される。さらに、上述したサブユニット移動処理の例の少なくとも１つと、加速度センサ７６１の出力が所定の条件を満たしたときにプレイヤキャラクタＰＣに所定の動作をさせるように制御する処理とを同時に実施する場合には、加速度センサ７６１の出力値の大きさが所定値以下のときに上述したサブユニット移動処理の例の少なくとも１つを実施し、所定値より大きいときに所定の動作をさせるように制御する処理を実施するようにしてもよい。
【０２２３】
また、上記サブユニット移動処理においては、サブユニット７６に設けられた方向指示部（スティック７８ａ）の操作に応じて決定されるプレイヤキャラクタＰＣの位置を、異なる態様によって決定してもかまわない。図３０は、サブユニット移動処理における他の例の詳細な動作を示すサブルーチンである。なお、図３０に示すサブユニット移動処理における他の例は、図１９で示したサブユニット移動処理と比較して、ステップ４３とステップ４４との間で行う処理、ステップ４６の処理、およびステップ５２の処理が異なる。以下、図１９で示したサブユニット移動処理と異なる処理について説明し、図１９で示したサブユニット移動処理と同様の処理については詳細な説明を省略する。なお、サブユニット移動処理における他の例においては、メインメモリ３３の図示しない領域に、仮想ゲーム空間におけるプレイヤキャラクタＰＣの位置を示す位置データが記憶される（以下、ＰＣ位置データと記載する）。
【０２２４】
図３０において、ＣＰＵ３０は、方向指示入力に基づいて上記ステップ４３で算出された算出された移動ベクトルＶｍｐｃに基づいて、メインメモリ３３のＰＣ位置データを更新し（ステップ１７１）、上記ステップ４４へ処理を進める。例えば、ステップ１７１の処理においては、メインメモリ３３に記憶されている直前のＰＣ位置データが示す仮想ゲーム空間における位置を、上記移動ベクトルＶｍｐｃで移動させた位置を算出し、当該算出された位置を示すＰＣ位置データに更新する。
【０２２５】
また、上記ステップ４５においてＺ軸正方向の加速度が所定値以上である場合、ＣＰＵ３０は、加速度データＤａ４に応じて変位ベクトルを算出し（ステップ１７２）、上記ステップ４７に処理を進める。ここで、ステップ１７２における変位ベクトルの算出方法は、ステップ４６について上述した補正ベクトルの算出方法（上述のバリエーションを含む）と同様である。
【０２２６】
また、上記ステップ５１においてＸ軸方向の加速度の方向が所定時間内に反転している場合、ＣＰＵ３０は、加速度データＤａ４に応じて変位ベクトルを算出し（ステップ１７３）、当該サブルーチンによる処理を終了する。ここで、ステップ１７３における変位ベクトルの算出方法は、ステップ５２について上述した補正ベクトルの算出方法（上述のバリエーションを含む）と同様である。
【０２２７】
そして、図１８に示したステップ２１の処理では、上記ステップ１７２で算出された変位ベクトルと上記ステップ１７３で算出された変位ベクトルとを加算した和ベクトルを算出し、ＰＣ位置データが示す仮想ゲーム空間の位置を当該和ベクトルで変位させた位置に、プレイヤキャラクタＰＣを仮想ゲーム空間内で移動させ、ゲーム画像をモニタ２に表示する。ただし、ステップ２１においては、メインメモリ３３に格納されたＰＣ位置データの更新は行わない。このような処理を行えば、プレイヤキャラクタＰＣの仮想ゲーム空間における基本的な位置（ＰＣ位置データが示す位置）は方向指示入力によって移動する。そして、加速度センサ７０１から出力された加速度データに応じて、上記基本的な位置を一時的に変位させた位置に、プレイヤキャラクタＰＣを移動させて表示する。このような処理によって、違和感のない操作性が得られる。
【０２２８】
次に、図２０を参照して、上記ステップ１６におけるパス処理について、詳細な動作を説明する。
【０２２９】
図２０において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコアキーデータを参照する（ステップ８１）。次に、ＣＰＵ３０は、上記ステップ８１で参照したコアキーデータに基づいて、プレイヤがコアユニット７０の操作部７２ｄ（Ａボタン）のみを押下しているか否かを判断する（ステップ８２）。そして、ＣＰＵ３０は、プレイヤがＡボタンのみを押下している場合、次のステップ８３に処理を進める。一方、ＣＰＵ３０は、プレイヤがＡボタンを押下していない、またはＡボタンと同時に他のボタン（例えば、Ｂボタン）を押下している場合、当該サブルーチンによる処理を終了して、上記ステップ１７の処理へ進める。
【０２３０】
ステップ８３において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新の第１座標データＤａ１および第２座標データＤａ２を参照する（ステップ８３）。次に、ＣＰＵ３０は、上記ステップ８３で参照した第１座標データＤａ１および第２座標データＤａ２に対応する指示座標、および当該指示座標に対応する仮想ゲーム空間の位置を算出して、それぞれチームＸの選手モード用コアユニットに対応する指示座標データＤｅおよび仮想空間位置座標データＤｆを更新して（ステップ８４）、処理を次のステップに進める。以下、座標データを用いて指示座標および仮想空間位置を算出する一例について詳述する。
【０２３１】
まず、ＣＰＵ３０は、第１座標データＤａ１から第２座標データＤａ２への方向データを算出する。具体的には、ＣＰＵ３０は、第１座標データＤａ１および第２座標データＤａ２を参照して、第１座標データＤａ１の位置を始点とし第２座標データＤａ２の位置を終点とするベクトルを算出する。そして、ＣＰＵ３０は、算出されたベクトルのデータを、方向データとしてメインメモリ３３に記憶する。この方向データと所定の基準方向との差によって、コアユニット７０の撮像面に垂直な方向を軸とするコアユニット７０本体の回転を算出することができる。
【０２３２】
また、ＣＰＵ３０は、第１座標データＤａ１と第２座標データＤａ２との中点を示す中点データを算出する。具体的には、ＣＰＵ３０は、第１座標データＤａ１および第２座標データＤａ２を参照して、当該中点の座標を算出する。そして、ＣＰＵ３０は、算出された中点の座標のデータを、メインメモリ３３に記憶する。ここで、中点データは、撮像画像内における対象画像（マーカ８Ｌおよび８Ｒ）の位置を示している。この中点データと所定の基準位置との差によって、コアユニット７０の位置の変化による画像位置の変化を算出することができる。
【０２３３】
ここで、マーカ８Ｌおよび８Ｒと、モニタ２の表示画面と、コアユニット７０との位置関係について考える。例えば、モニタ２の上面に２つのマーカ８Ｌおよび８Ｒを設置し（図１参照）、上面が上方向を向いたコアユニット７０を用いてプレイヤがモニタ２の表示画面の中央を指し示した場合（撮像情報演算部７４の撮像画像の中央に表示画面中央が撮像されている状態）を考える。このとき、撮像情報演算部７４の撮像画像において、対象画像の中点（マーカ８Ｌおよび８Ｒの中点）位置と指し示した位置（表示画面中央）とが一致しない。具体的には、上記撮像画像における対象画像の位置は撮像画像の中心から上方の位置となる。このような位置に対象画像が位置する場合に、表示画面中央を指し示しているという基準位置の設定を行う。一方、コアユニット７０の移動に対応して、撮像画像中の対象画像の位置も移動する（移動方向は逆方向となる）ので、撮像画像中の対象画像の位置の移動に対応させて表示画面を指し示す位置を移動させる処理を行うことによって、コアユニット７０で指し示された表示画面基準の位置（画面座標系の位置座標）を算出することができる。ここで、基準位置の設定は、予めプレイヤが表示画面の所定位置を指し示し、そのときの対象画像の位置を当該所定位置と対応させて記憶しておくようにしてもよいし、対象画像と表示画面との位置関係が固定的であれば、予め設定されていても良い。また、マーカ８Ｌおよび８Ｒが、モニタ２とは別体で設けられてモニタ２の近く（モニタ２の上や下など）に載置されて使用されるものである場合には、ゲーム開始前に、マーカ８Ｌおよび８Ｒをモニタに対してどの位置に載置しているかをプレイヤに入力させ（例えば、モニタ２の上に載置したか下に載置したか等の選択肢から選択させ）、光ディスク４やゲーム装置３の内蔵不揮発メモリなどに、モニタ２の上に載置した場合の基準位置データと、モニタ２の下に載置した場合の基準位置データをそれぞれ記憶しておいて、それらを選択して使用してもよい。このような画面座標系の位置座標は、中点データからモニタ２の表示画面基準の座標（指示座標）を算出する関数を用いた線形変換で算出される。この関数は、ある撮像画像から算出される中点座標の値を、当該撮像画像が撮像される時のコアユニット７０によって指し示される表示画面上の位置（画面座標系の位置座標）を表す座標に変換するものである。この関数によって、中点座標から表示画面を基準とした指示座標を算出することができる。
【０２３４】
しかしながら、上面が上方向以外（例えば、右方向）を向いたコアユニット７０を用いてプレイヤがモニタ２の表示画面の中央を指し示した場合、上記撮像画像における対象画像の位置は撮像画像の中心から上方以外（例えば、左方）の方向にずれた位置となる。つまり、コアユニット７０の傾きによって、コアユニット７０の移動方向と、表示画面基準の指し示し位置の移動方向が一致しないことになる。そこで、方向データに基づいて、中点データを補正する。具体的には、中点データを、コアユニット７０の上面が上方向を向いた状態であるとした場合における中点座標に補正する。より具体的には、上記基準位置の設定の際には方向データの基準も設定され、中点データを方向データと当該基準方向との角度差に応じた量だけ、撮像画像の中心を軸として中点データが示す座標を回転移動させて補正する。そして、補正された中点データを用いて上述したように指示座標を算出する。
【０２３５】
また、算出した画面座標系の指示座標を仮想ゲーム空間内における位置（仮想空間位置）を表す仮想空間座標に変換する場合には、当該画面座標系における位置に対応する仮想ゲーム空間内における位置にさらに変換すればよい。ここで、画面座標系における位置に対応する仮想ゲーム空間内における位置とは、モニタ２の表示画面上における位置に表示される仮想ゲーム空間内における位置（例えば、透視投影される位置）や画面座標系の位置座標から直接的に指定される仮想ゲーム空間の３次元座標値等である。
【０２３６】
上記指示座標の算出処理の本質的な原理は、コアユニット７０の移動による対象画像の位置の変化によって、指し示された２次元座標の所定の基準位置からの変位を算出し、座標を設定するというものである。したがって、画面座標系の位置座標は、他の２次元座標の入力としても幅広く用いることができる。例えば、画面座標系の位置座標をワールド座標系におけるｘ座標およびｙ座標の値として直接的に用いることができる。この場合、モニタ２の表示画面とは無関係に、対象画像の移動をワールド座標系におけるｘ座標およびｙ座標の基準位置からの移動に対応付ける算出処理を行えばよい。また、２次元のゲーム画像がモニタ２に表示されている場合などは、画面座標系の位置座標をそのまま２次元のゲーム座標系におけるｘ座標およびｙ座標の値として直接的に用いることができる。
【０２３７】
ステップ８４の処理の後、ＣＰＵ３０は、算出された指示座標に対応する仮想ゲーム空間の仮想空間位置が、仮想フィールド上の位置であるか否かを判断する（ステップ８５）。例えば、仮想フィールドは、仮想サッカーフィールドを含むゲーム空間の地面を示す仮想平面である。次に、ＣＰＵ３０は、仮想空間位置が仮想フィールド上である場合、次のステップ９０に処理を進める。一方、ＣＰＵ３０は、仮想空間位置が仮想フィールド上でない場合、上記画面座標系の指示座標がモニタ２の表示領域の上または下に外れているか否か（ステップ８６）、および上記画面座標系の指示座標がモニタ２の表示領域の左または右に外れているか否か（ステップ８７）を判断する。そして、ＣＰＵ３０は、指示座標がモニタ２の表示領域の上下に外れている場合（ステップ８６でＹｅｓ）、次のステップ８８に処理を進める。また、ＣＰＵ３０は、指示座標がモニタ２の表示領域の左右に外れている場合（ステップ８７でＹｅｓ）、次のステップ８９に処理を進める。一方、ＣＰＵ３０は、指示座標がモニタ２の表示領域の上下および左右以外に外れている、または指示座標が無効（例えば、算出不可）である場合（ステップ８６およびステップ８７でＮｏ）、次のステップ９５に処理を進める。
【０２３８】
ステップ８８において、ＣＰＵ３０は、ボールオブジェクトＢの移動方向および移動速度を示すボール移動ベクトルを、仮想ゲーム空間に設定されたサッカーフィールドのゴールラインと平行な方向に所定の大きさで設定し、移動ベクトルデータＤｃを更新して、次のステップ９５に処理を進める。なお、上記ステップ８８で設定するボール移動ベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に設定してもかまわない。
【０２３９】
ステップ８９において、ＣＰＵ３０は、ボールオブジェクトＢの移動方向および移動速度を示すボール移動ベクトルを、仮想ゲーム空間に設定されたサッカーフィールドのタッチラインと平行な方向に所定の大きさで設定し、移動ベクトルデータＤｃを更新して、次のステップ９５に処理を進める。なお、上記ステップ８９で設定するボール移動ベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に対して垂直な水平方向に設定してもかまわない。
【０２４０】
ステップ９０において、ＣＰＵ３０は、上記ステップ８４で算出された仮想空間位置を中心とした領域Ａ内（典型的には、当該仮想空間位置を中心とする所定半径Ｒ１の円領域内であるが、円領域でなくてもよい）に、チームＸの選手キャラクタが配置されているか否かを判断し、当該判断がＹｅｓの場合には当該選択キャラクタを選択する（複数の選手キャラクタが該当する場合には、当該仮想空間位置に一番近い選手キャラクタを選択する）。また、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが配置されていない場合、上記ステップ８４で算出された仮想空間位置を中心とした領域Ｂ内（典型的には、当該仮想空間位置を中心とする所定半径Ｒ２（＞Ｒ１）の円領域内であるが、円領域でなくてもよい）に、チームＸの選手キャラクタが配置されているか否かを判断し、当該判断がＹｅｓの場合には当該選択キャラクタを選択する（ステップ９２）（複数の選手キャラクタが該当する場合には、当該仮想空間位置に一番近い選手キャラクタを選択してもよいし、当該複数の選手キャラクタの全てまたは複数を選択してもよい）。そして、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが配置されている場合（ステップ９０でＹｅｓ）、次のステップ９１に処理を進める。また、ＣＰＵ３０は、領域Ｂ内にチームＸの選手キャラクタが配置されている場合（ステップ９２でＹｅｓ）、次のステップ９３に処理を進める。さらに、ＣＰＵ３０は、領域Ａおよび領域Ｂ内の何れにもチームＸの選手キャラクタが配置されていない場合（ステップ９０およびステップ９２でＮｏ）、次のステップ９４に処理を進める。例えば、図２７に示すように、領域Ａおよび領域Ｂは、仮想空間位置ＴＰを中心とした円形の領域でそれぞれ形成され、領域Ａより領域Ｂが大きい。そして、ＣＰＵ３０は、最新の位置データＤｈを参照して、仮想ゲーム空間における各選手キャラクタの配置位置に基づいて、領域Ａおよび領域Ｂ内に配置された選手キャラクタを判断する。
【０２４１】
ステップ９１において、ＣＰＵ３０は、ステップ９０で選択された選手キャラクタの配置位置に応じて、ボール移動ベクトルを設定して、移動ベクトルデータＤｃを更新する。例えば、ＣＰＵ３０は、現在のボールオブジェクトＢの位置から当該選手キャラクタの配置位置へ向かう方向をボール移動ベクトルの方向とする。さらに、現在のボールオブジェクトＢの位置から当該選手キャラクタの配置位置までの仮想距離に応じた大きさをボール移動ベクトルの大きさとして設定してもよい。そして、ＣＰＵ３０は、次のステップ９５に処理を進める。
【０２４２】
ステップ９３において、ＣＰＵ３０は、ステップ９２で選択された選手キャラクタの移動ベクトルを仮想空間位置ＴＰに応じて設定して、移動ベクトルデータＤｃを更新する。例えば、ＣＰＵ３０は、ステップ９２で選択された選手キャラクタの現在の配置位置から仮想空間位置ＴＰに向かう方向を当該選手キャラクタの移動ベクトルの方向とする。さらに、当該現在の配置位置から仮想空間位置ＴＰまでの仮想距離に応じた大きさを当該選手キャラクタの移動ベクトルの大きさとして設定してもよい。そして、ＣＰＵ３０は、次のステップ９４に処理を進める。
【０２４３】
ステップ９４において、ＣＰＵ３０は、仮想空間位置ＴＰに応じてボール移動ベクトルを設定して、移動ベクトルデータＤｃを更新する。例えば、ＣＰＵ３０は、現在のボールオブジェクトＢの位置から仮想空間位置ＴＰへ向かう方向をボール移動ベクトルの方向とする。さらに、現在のボールオブジェクトＢの位置から仮想空間位置ＴＰまでの仮想距離に応じた大きさをボール移動ベクトルの大きさとして設定してもよい。そして、ＣＰＵ３０は、次のステップ９５に処理を進める。
【０２４４】
このようにプレイヤがＡボタンを押下しているときに行われる上記ステップ９０〜ステップ９４の処理によってボールオブジェクトＢの移動ベクトルが設定され、当該ボールオブジェクトＢの移動方向（さらには、付加的に移動速度）が決定されるため、いわゆるサッカーゲームにおいてボールをパスする方向が設定される。ここで、上述から明らかなように、コアユニット７０で指し示された仮想空間位置ＴＰ近傍に自チームの選手が存在しない場合、ボールオブジェクトＢがパスされる目標地点は仮想空間位置ＴＰとなる。また、コアユニット７０で指し示された仮想空間位置ＴＰ近傍である領域Ａ内に自チームの選手が存在する場合、ボールオブジェクトＢがパスされる目標地点は領域Ａ内に存在する自チームの選手となる。さらに、コアユニット７０で指し示された仮想空間位置ＴＰから少し離れた領域Ｂ内に自チームの選手が存在する場合、ボールオブジェクトＢがパスされる目標地点は仮想空間位置ＴＰとなり、領域Ｂ内に存在する自チームの選手も仮想空間位置ＴＰへ移動する。
【０２４５】
ステップ９５において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する。そして、ＣＰＵ３０は、サブ加速度データが示すＺ軸方向の加速度が負（つまり、Ｚ軸負方向の加速度を検出）であるか否かを判断する（ステップ９６）。そして、ＣＰＵ３０は、Ｚ軸方向の加速度が負である場合、ボール移動ベクトルに垂直上方向のベクトルを加算する（ステップ９７）。なお、当該加算するベクトルは、当該Ｚ軸方向の加速度の大きさ（絶対値）に応じた大きさとしてもよい。そして、当該サブルーチンによる処理を終了して、上記ステップ１７の処理へ進める。このステップ９７の処理によって、プレイヤキャラクタＰＣがパスするボールオブジェクトＢの軌道は、プレイヤがサブユニット７６の前方を持ち上げるような動作を行う（つまり、Ｚ軸負方向の加速度が生じる）ことによって、仮想ゲーム空間内で高く蹴る軌道となる。一方、ＣＰＵ３０は、Ｚ軸方向の加速度が負でない場合、そのまま当該サブルーチンによる処理を終了して、上記ステップ１７の処理へ進める。
【０２４６】
このように、ステップ１６におけるパス処理においては、プレイヤがＡボタンのみを押下することによって、ボールオブジェクトＢをキープするプレイヤキャラクタＰＣの位置からボールオブジェクトＢが移動する動作を行う。そして、サブユニット７６に設けられた方向指示部（スティック７８ａ）でプレイヤキャラクタＰＣの移動方向（さらには、付加的に移動速度）が制御されながら、コアユニット７０から得られる座標データ（第１座標データＤａ１および第２座標データＤａ２）によってボールオブジェクトＢの移動方向（さらには、付加的に移動速度）が制御される。したがって、プレイヤは、２つのユニットを操作しながらそれぞれ別のキャラクタ（オブジェクト）を操作することが可能である。つまり、プレイヤは、第１キャラクタ（プレイヤキャラクタＰＣ）の移動方向制御と当該第１キャラクタの位置（正確には、第１キャラクタの位置に付随して決定される第２キャラクタの位置）から移動する第２キャラクタ（ボールオブジェクトＢ）の移動方向制御とを、効率的かつ直感的に独立して入力することができる。また、プレイヤキャラクタＰＣを移動させる操作とパス方向を決定する操作とが独立している（さらには、プレイヤキャラクタＰＣを移動させる操作にかかるハウジング７７とパス方向を決定する操作にかかるハウジング７１とが独立している）ため、自由度が高くリアルなサッカーゲームが実現できる。
【０２４７】
また、第２キャラクタ（ボールオブジェクトＢ）の移動制御について、コアユニット７０による指示座標により決定された第１方向ベクトルに、サブユニット７６の加速度センサ７６１の出力に応じて決定される第２方向ベクトルを加えて、第２キャラクタの移動方向ベクトルとする。具体的には以下のようにすることができる。
【０２４８】
第２キャラクタの移動方向ベクトルを算出する第１の例として、加速度センサ７６１のＸ軸、Ｙ軸、Ｚ軸をそれぞれ、所定座標系のＸ軸、Ｙ軸、Ｚ軸に対応付けた（または前進方向とそれに直交する２方向に対応付けて）加速度センサ７６１の出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。そして、上記方向ベクトルを第２方向ベクトルとして、当該第２方向ベクトルを第１方向ベクトルに加算する。上記第２方向ベクトルの大きさは、固定値でもよいし、上記出力ベクトルの大きさに応じて決めても良い。
【０２４９】
第２キャラクタの移動方向ベクトルを算出する第２の例として、加速度センサ７６１の所定方向（例えば、Ｘ軸方向）の出力値が所定値以上のときに、所定座標系の対応する方向（例えば、Ｘ軸方向）の第２方向ベクトルを、第１方向ベクトルに加算する。
【０２５０】
第２キャラクタの移動方向ベクトルを算出する第３の例として、加速度センサ７６１の所定方向（例えば、Ｘ軸方向）の出力値に応じた大きさで、所定座標系の対応する方向（例えば、Ｘ軸方向）の第２方向ベクトルを、第１方向ベクトルに加算する。
【０２５１】
なお、第２キャラクタの移動方向ベクトルを算出する第２および第３の例について、複数の方向について実施してもよい。すなわち、例えば、第３の例について、加速度センサ７６１のＸ軸方向の出力値に応じた大きさで、所定座標系のＸ軸方向の第２方向ベクトルを第１方向ベクトルに加算し、さらに、加速度センサ７６１のＹ軸方向の出力値に応じた大きさで所定座標系のＹ軸方向の第２方向ベクトルを当該第１方向ベクトルに加算してもよい。
【０２５２】
なお、上記所定座標系は、プレイヤキャラクタＰＣのローカル座標系でもよいし、仮想ゲーム空間の座標系でもよいし（この場合、第２方向ベクトルは、典型的には仮想垂直方向や仮想水平方向などとなる）、カメラ座標系であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく座標系（例えば、上記第２方向ベクトルが当該移動方向に直交する方向など）であってもよい。
【０２５３】
これらにより、コアユニット７０による指示座標によりキャラクタの移動方向を制御しつつ、サブユニットを傾けたり動かしたりすることによりその方向を補正するような操作が実現できる。
【０２５４】
次に、図２１を参照して、上記ステップ１７における第１シュート処理について、詳細な動作を説明する。
【０２５５】
図２１において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコアキーデータを参照する（ステップ１０１）。次に、ＣＰＵ３０は、上記ステップ１０１で参照したコアキーデータに基づいて、プレイヤがコアユニット７０の操作部７２ｄ（Ａボタン）および操作部７２ｉ（Ｂボタン）を同時に押下しているか否かを判断する（ステップ１０２）。そして、ＣＰＵ３０は、プレイヤがＡおよびＢボタンを同時に押下している場合、次のステップ１０３に処理を進める。一方、ＣＰＵ３０は、プレイヤがＡおよびＢボタンを同時に押下していない場合、当該サブルーチンによる処理を終了して、上記ステップ１８の処理へ進める。
【０２５６】
ステップ１０３において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。そして、ＣＰＵ３０は、コア加速度データに応じて、ボール移動ベクトルを算出して、移動ベクトルデータＤｃを更新し（ステップ１０４）、処理を次のステップに進める。例えば、ＣＰＵ３０は、ボールオブジェクトＢをキープしているプレイヤキャラクタＰＣの前方方向（例えば、移動方向；すなわち、ＰＣの移動方向ベクトルの方向）で、参照したコア加速度データに含まれるＺ軸方向の加速度の大きさに応じた大きさのボール移動ベクトルを算出する。
【０２５７】
これにより、サブユニット７６に設けられた方向指示部（スティック７８ａ）でボールオブジェクトＢの移動方向が制御されながら、ボールオブジェクトＢの移動速度がコアユニット７０に設けられた加速度センサ７０１から出力される加速度データに応じて決定される。つまり、プレイヤは、ボールオブジェクトＢの移動方向制御と移動速度制御とを、それぞれの手で独立して効率的かつ直感的に入力することができる。さらに、サブユニット７６に設けられた方向指示部（スティック７８ａ）の傾斜量に応じてボールオブジェクトＢの移動速度を制御するようにして、ボールオブジェクトＢの移動速度をサブユニット７６に設けられた加速度センサ７６１から出力される加速度データ（または当該加速度データの所定軸方向の成分）に応じて補正するようにしてもよい（例えば、Ｚ軸方向の加速度があったときに、所定値を加算してもよいし、ｎ倍（ｎ＞１）するようにしてもよいし、Ｚ軸方向の加速度の大きさに応じて倍数を決定するようにしてもよい）。つまり、プレイヤは、ボールオブジェクトＢの移動方向制御と移動速度制御（または移動速度補正制御）とを、それぞれの手で独立して効率的かつ直感的に入力することができる。
【０２５８】
次に、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する（ステップ１０５）。そして、ＣＰＵ３０は、サブ加速度データが示すＺ軸方向の加速度が負（つまり、Ｚ軸負方向の加速度を検出）であるか否かを判断する（ステップ１０６）。そして、ＣＰＵ３０は、Ｚ軸方向の加速度が負である場合、仮想ゲーム空間に対する垂直上方向のベクトルを、ボール移動ベクトルに加えて移動ベクトルデータＤｃを更新し（ステップ１０７）、次のステップ１０８に処理を進める。なお、当該加える垂直上方向のベクトルは、当該Ｚ軸方向の加速度の大きさに応じた大きさとしてもよい。一方、ＣＰＵ３０は、Ｚ軸方向の加速度が負でない場合、そのまま次のステップ１０８へ処理を進める。
【０２５９】
ステップ１０８において、ＣＰＵ３０は、上記ステップ１０５で参照したサブ加速度データが示すＸ軸方向の加速度データに応じてボール移動ベクトルを変更し、処理を次のステップに進める。例えば、ＣＰＵ３０は、仮想水平面に平行で当該ボール移動ベクトルに直交する方向（向きは、Ｘ軸方向の加速度データの正負で決定する）で当該Ｘ軸方向の加速度の大きさに応じた大きさのベクトルを、現在のボール移動ベクトルに加えて、移動ベクトルデータＤｃを更新する。
【０２６０】
これにより、サブユニット７６に設けられた方向指示部（スティック７８ａ）でボールオブジェクトＢの移動方向が制御されながら、ボールオブジェクトＢの移動方向がサブユニット７６に設けられた加速度センサ７６１から出力される加速度データに応じて補正される。つまり、プレイヤは、ボールオブジェクトＢの移動方向制御と移動方向補正制御とを、片手で効率的かつ直感的に入力することができる。また、補正ベクトルの向きは、仮想ゲーム空間における固定方向（仮想垂直方向、仮想水平方向など）であってもよいし、仮想カメラの視線方向に基づく方向（当該視線方向または当該視線方向に直交する方向など）であってもよいし、方向指示部により決定される移動方向に基づく方向（当該移動方向に直交する方向など）であってもよいし、プレイヤキャラクタＰＣのローカル座標系における所定軸方向であってもよい。
【０２６１】
次に、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれるコア加速度データの履歴を参照し、ＸＹＺ軸方向それぞれに生じた直近の所定時間分の加速度平均を算出する（ステップ１０９）。そして、ＣＰＵ３０は、上記ステップ１０９で算出したＺ軸方向の加速度平均の大きさが所定値以上か否かを判断する（ステップ１１０）。そして、ＣＰＵ３０は、Ｚ軸方向の加速度平均の大きさが所定値以上である場合、ステップ１１１に処理を進める。一方、ＣＰＵ３０は、Ｚ軸方向の加速度平均の大きさが所定値未満である場合、ステップ１１２に処理を進める。
【０２６２】
ステップ１１１において、ＣＰＵ３０は、ボール移動ベクトルの大きさを増加させる。例えば、所定値を加算してもよいし、ｎ倍（ｎ＞１）してもよいし、上記ステップ１０９で算出したＺ軸方向の加速度平均の大きさに応じて増加させてもよい。
【０２６３】
ステップ１１２において、ＣＰＵ３０は、上記ステップ１０９で算出したＹ軸方向の加速度平均の大きさが所定値以上か否かを判断する。なお、図５等から明らかなように、コアユニット７０を水平に保持した場合、重力加速度がＹ軸負方向に常に作用するため、ステップ１１２における判定基準は、当該重力加速度を考慮した所定値を設定するのが好ましい。そして、ＣＰＵ３０は、Ｙ軸方向の加速度平均の大きさが所定値以上である場合、ステップ１１３に処理を進める。一方、ＣＰＵ３０は、Ｙ軸方向の加速度平均の大きさが所定値未満である場合、ステップ１１４に処理を進める。
【０２６４】
ステップ１１３において、ＣＰＵ３０は、垂直上方向のベクトルを、ボール移動ベクトルに加えて移動ベクトルデータＤｃを更新し、次のステップ１１４に処理を進める。当該垂直上方向のベクトルの大きさは、固定の大きさでもよいし、上記ステップ１０９で算出したＹ軸方向の加速度平均の大きさに応じた大きさでもよい。
【０２６５】
ステップ１１４において、ＣＰＵ３０は、上記ステップ１０９で算出したＸ軸方向の加速度平均の大きさが所定値以上か否かを判断する。そして、ＣＰＵ３０は、Ｘ軸方向の加速度平均の大きさが所定値以上である場合、ステップ１１５に処理を進める。一方、ＣＰＵ３０は、Ｘ軸方向の加速度平均の大きさが所定値未満である場合、当該サブルーチンによる処理を終了して、上記ステップ１８の処理へ進める。
【０２６６】
ステップ１１５において、ＣＰＵ３０は、仮想水平面に平行で当該ボール移動ベクトルに直交する方向（向きは、Ｘ軸方向の加速度平均の正負で決定する）のベクトルを、現在のボール移動ベクトルに加えて、移動ベクトルデータＤｃを更新する。そして、ＣＰＵ３０は、当該サブルーチンによる処理を終了して、上記ステップ１８の処理へ進める。なお、上記直交する方向のベクトルの大きさは、上記ステップ１０９で算出したＸ軸方向の加速度平均の大きさに応じた大きさとしてもよい。
【０２６７】
このように、所定操作ボタン（上述の例ではコアユニット７０の操作ボタンとしたがサブユニット７６の操作ボタンでもよい）を操作したときにキャラクタ（ボールオブジェクトＢ）が移動開始し、当該移動方向がサブユニット７６の方向指示部による指示方向に基づいて決定される。さらに、上記移動方向は、上記所定操作ボタンを操作する前のコアユニット７０の加速度センサ７０１の出力に応じて補正される（典型的には、上記所定操作ボタンを操作する前の、直近の所定時間における加速度センサ７０１の出力を利用する）。これにより、プレイヤは、ボールオブジェクトＢの移動方向制御と移動方向補正制御とを、それぞれの手で独立して効率的かつ直感的に入力することができる。なお、上記移動方向を、上記所定操作ボタンを操作する前の加速度センサ７６１の出力に応じて補正するようにしてもよい。また、補正ベクトルの向きは、仮想ゲーム空間の座標系における所定方向（典型的には、いずれかの軸の方向）であってもよいし、カメラ座標系における所定方向であってもよいし、ローカル座標系における所定方向であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく方向（当該移動方向に直交する方向など）であってもよい。これにより、プレイヤは、ボールオブジェクトＢの移動方向制御と移動方向補正制御とを、効率的かつ直感的に入力することができる。
【０２６８】
また、ステップ１７における第１シュート処理においては、プレイヤがＡおよびＢボタンを同時に押下することによって、ボールオブジェクトＢをキープするプレイヤキャラクタＰＣがシュートする動作を行う。そして、プレイヤキャラクタＰＣがシュートする初速度および初期方向は、プレイヤキャラクタＰＣが向く方向と、コアユニット７０から得られるコア加速度データが示す加速度の大きさと、サブユニット７６から得られるサブ加速度データが示す加速度の大きさとによって決定される。つまり、プレイヤキャラクタＰＣがシュートする初期軌道は、単純なボタン操作のみによって決定されるものではなく、プレイヤがシュート操作を行ったときのコアユニット７０およびサブユニット７６全体の動作に応じて決定される。したがって、プレイヤは、コアユニット７０およびサブユニット７６全体を動かしながら、自由度のあるシュートを放つことが可能でありリアルなサッカーゲームが実現できる。
【０２６９】
次に、図２２を参照して、上記ステップ１８における第２シュート処理について、詳細な動作を説明する。
【０２７０】
図２２において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれるコアキーデータの履歴を参照する（ステップ１２１）。次に、ＣＰＵ３０は、上記ステップ１２１で参照したコアキーデータに基づいて、プレイヤがコアユニット７０の操作部７２ｄ（Ａボタン）および操作部７２ｉ（Ｂボタン）を同時に押下してから所定時間内か否かを判断する（ステップ１２２）。そして、ＣＰＵ３０は、プレイヤがＡおよびＢボタンを同時に押下してから所定時間内の場合、次のステップ１２３に処理を進める。一方、ＣＰＵ３０は、プレイヤがＡおよびＢボタンを同時に押下してから所定時間内でない場合、当該サブルーチンによる処理を終了して、上記ステップ１９の処理へ進める。
【０２７１】
ステップ１２３において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。そして、ＣＰＵ３０は、上記ステップ１２３で参照したコア加速度データが示すＺ軸方向の加速度の大きさが所定値以上か否かを判断する（ステップ１２４）。そして、ＣＰＵ３０は、Ｚ軸方向の加速度の大きさが所定値以上である場合、ステップ１２５に処理を進める。一方、ＣＰＵ３０は、Ｚ軸方向の加速度の大きさが所定値未満である場合、ステップ１２６に処理を進める。
【０２７２】
ステップ１２５において、ＣＰＵ３０は、ボール移動ベクトルの大きさを増加させる。例えば、所定値を加算してもよいし、ｎ倍（ｎ＞１）してもよいし、上記ステップ１２３で参照したコア加速度データが示すＺ軸方向の加速度の大きさに応じて増加させてもよい。
【０２７３】
ステップ１２６において、ＣＰＵ３０は、上記ステップ１２３で参照したコア加速度データが示すＹ軸方向の加速度の大きさが所定値以上か否かを判断する。なお、図５等から明らかなように、コアユニット７０を水平に保持した場合、重力加速度がＹ軸負方向に常に作用するため、ステップ１２６における判定基準も、当該重力加速度を考慮した所定値を設定するのが好ましい。そして、ＣＰＵ３０は、Ｙ軸方向の加速度の大きさが所定値以上である場合、ステップ１２７に処理を進める。一方、ＣＰＵ３０は、Ｙ軸方向の加速度の大きさが所定値未満である場合、ステップ１２８に処理を進める。
【０２７４】
ステップ１２７において、ＣＰＵ３０は、仮想ゲーム空間に対する垂直上方向のベクトルを、ボール移動ベクトルに加えて移動ベクトルデータＤｃを更新し、次のステップ１２８に処理を進める。ここで、当該垂直方向のベクトルの大きさは固定の大きさとしてもよいし、上記ステップ１２３で参照したコア加速度データが示すＹ軸方向の加速度の大きさに応じた大きさとしてもよい。
【０２７５】
ステップ１２８において、ＣＰＵ３０は、上記ステップ１２３で参照したコア加速度データが示すＸ軸方向の加速度の大きさが所定値以上か否かを判断する。そして、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値以上である場合、ステップ１２９に処理を進める。一方、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値未満である場合、当該サブルーチンによる処理を終了して、上記ステップ１９の処理へ進める。
【０２７６】
ステップ１２９において、ＣＰＵ３０は、仮想水平面に平行で当該ボール移動ベクトルに直交する方向（向きは、Ｘ軸方向の加速度の正負で決定する）のベクトルを、現在のボール移動ベクトルに加えて、移動ベクトルデータＤｃを更新する。ここで、上記直交する方向のベクトルの大きさは固定の大きさとしてもよいし、上記ステップ１２３で参照したコア加速度データが示すＸ軸方向の加速度の大きさに応じた大きさとしてもよい。そして、ＣＰＵ３０は、当該サブルーチンによる処理を終了して、上記ステップ１９の処理へ進める。
【０２７７】
このように、所定操作ボタン（上述の例ではコアユニット７０の操作ボタンとしたがサブユニット７６の操作ボタンでもよい）を操作したときにキャラクタ（ボールオブジェクトＢ）が移動開始し、当該移動方向がサブユニット７６の方向指示部による指示方向に基づいて決定される。さらに、上記移動方向は、上記所定操作ボタンを操作した後におけるコアユニット７０の加速度センサ７０１の出力に応じて補正される（典型的には、上記所定操作ボタンを操作した直後の直近の所定時間における加速度センサ７０１の出力を利用する）。これにより、プレイヤは、ボールオブジェクトＢの移動方向制御と移動方向補正制御とを、それぞれの手で独立して効率的かつ直感的に入力することができる。なお、上記移動方向を、上記所定操作ボタンを操作した後のおける加速度センサ７６１の出力に応じて補正するようにしてもよい。また、仮想ゲーム空間の座標系における所定方向（典型的には、いずれかの軸の方向）であってもよいし、カメラ座標系における所定方向であってもよいし、ローカル座標系における所定方向であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく方向（当該移動方向に直交する方向など）であってもよい。これにより、プレイヤは、ボールオブジェクトＢの移動方向制御と移動方向補正制御とを、効率的かつ直感的に入力することができる。
【０２７８】
このように、ステップ１８における第２シュート処理においては、プレイヤがＡおよびＢボタンを同時に押下してシュート操作した後のボールの軌道は、コアユニット７０から得られるコア加速度データに応じて、移動速度、移動方向、移動距離等が決定される。例えば、図２８に示すように、ボールオブジェクトＢのボール移動ベクトルＶｍｂによって決定された軌道ａは、コアユニット７０から得られるコア加速度データに応じて軌道ｂや軌道ｃのように変化させることが可能である。つまり、プレイヤキャラクタＰＣの移動制御が方向入力で行われながら、シュートした後の軌道が単純なボタン操作のみによって決定されるものではなく、プレイヤがシュート操作を行った後のコアユニット７０全体の動作に応じて決定される。したがって、プレイヤは、プレイヤキャラクタＰＣの移動方向を制御しつつ、コアユニット７０全体を動かしながら直感的にシュート軌道を変化させることができ、リアルなサッカーゲームが実現できる。
【０２７９】
次に、図２３を参照して、上記ステップ１９における一時監督モード処理について、詳細な動作を説明する。
【０２８０】
図２３において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコアキーデータを参照する（ステップ１３１）。次に、ＣＰＵ３０は、上記ステップ１３１で参照したコアキーデータに基づいて、プレイヤがコアユニット７０の操作部７２ａ（十字キー）の上方向を押下しているか否かを判断する（ステップ１３２）。そして、ＣＰＵ３０は、プレイヤが十字キーの上方向を押下している場合、次のステップ１３３に処理を進める。一方、ＣＰＵ３０は、プレイヤが十字キーの上方向を押下していない場合、次のステップ１３６に処理を進める。
【０２８１】
ステップ１３３において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。次に、ＣＰＵ３０は、コア加速度データが示すＸ軸方向の加速度の大きさが所定値以上であるか否かを判断する（ステップ１３４）。そして、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値以上である場合、次のステップ１３５に処理を進める。一方、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値未満である場合、次のステップ１３６に処理を進める。
【０２８２】
ステップ１３５において、ＣＰＵ３０は、上記ステップ１３３で参照したコア加速度データが示すＸ軸方向の加速度の大きさに基づいて、チームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルを更新して、移動ベクトルデータＤｃを更新し、次のステップ１３６に処理を進める。例えば、図２９に示すように、ＣＰＵ３０は、仮想ゲーム空間に設定されたサッカーフィールドのタッチラインと平行な方向の補正ベクトルを、チームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルに加え、新たな移動ベクトルＶｍｎｐｃを算出する。上記補正ベクトルは、固定の大きさとしてもよいし、上記Ｘ軸方向の加速度の大きさに応じた大きさとしてもよい。なお、補正ベクトルの方向を、コア加速度データが示す加速度の方向に応じて決定してもよい。この場合、以下のような例が考えられる。
【０２８３】
補正ベクトルの方向を決定する第１の例として、コア加速度データの各軸を、それぞれ、仮想ゲーム空間座標の直交する３方向に対応付けて（典型的には、仮想空間座標の各軸に対応付けて）、コア加速度データの出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。
【０２８４】
補正ベクトルの方向を決定する第２の例として、コア加速度データの各軸を、それぞれ、所定キャラクタ（プレイヤキャラクタＰＣなど）のローカル座標系の各軸に対応付けて、コア加速度データの出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。
【０２８５】
補正ベクトルの方向を決定する第３の例として、コア加速度データの各軸を、それぞれ、カメラ座標系の各軸（またはカメラ座標系のＸ、Ｚ軸を仮想水平面に投影した軸）に対応付けて、コア加速度データの出力ベクトルを、仮想空間の方向ベクトルに変換する。
【０２８６】
補正ベクトルの方向を決定する第４の例として、コア加速度データの各軸を、所定キャラクタの移動方向ベクトル（または向きベクトル）とそれに直交する２方向とに対応付けて、コア加速度データの出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。
【０２８７】
なお、上記ステップ１３５の処理においては、コア加速度データの代わりに、サブ加速度データの出力を利用しても良い。
【０２８８】
また、上記ステップ１３５の処理においては、チームＸのプレイヤキャラクタＰＣの移動ベクトルについても、同様のベクトル加算を行って更新してもかまわない。また、チームＸのノンプレイヤキャラクタＮＰＣの何れか（例えば、チームＸのゴールキーパー）を、ベクトル加算の対象から外してもかまわない。また、上述した処理では、タッチラインと平行な方向でＸ軸方向の加速度の大きさに応じた大きさのベクトルを加算する例を示したが、当該ベクトルをそのままチームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルに設定してもかまわない。さらに、加算するベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に対して垂直な水平方向や、当該視線方向を基準とした他の方向に設定してもかまわない。また、一般的に、コアユニット７０をある方向に動かし始めのときに加速度センサ７０１によって検出される加速度ベクトルの方向は、当該動かす方向とは反対方向であるので、そのときに検出された加速度ベクトルの方向を反対にして利用してもかまわない。また、コアユニット７０をある方向に動かした後、その動きを止めたときに加速度センサ７０１によって検出される加速度ベクトルの方向は、当該動かす方向であるので、そのときの検出を使用してもかまわない。この点は、本願明細書の他の箇所に記載した同様の処理についても同じである。
【０２８９】
このように、プレイヤキャラクタＰＣの移動方向がサブユニット７６のスティック７８ａによって制御され、複数のノンプレイヤキャラクタＮＰＣ（プレイヤキャラクタＰＣを含めても良い）の移動方向がコアユニット７０から得られるコア加速度データ（またはサブ加速度データでもよい）に応じて制御される。つまり、プレイヤは、方向指示手段で特定キャラクタの移動方向を制御しながら、コアユニット７０全体（またはサブユニット７６全体）の動作によって複数のキャラクタの移動方向の制御を行うことができる。したがって、プレイヤは、特定キャラクタの移動方向を方向指示手段で制御しながら、複数のキャラクタの移動方向も直感的に操作することができる。
【０２９０】
ステップ１３６において、ＣＰＵ３０は、上記ステップ１３１で参照したコアキーデータに基づいて、プレイヤがコアユニット７０の十字キーの下方向を押下しているか否かを判断する。そして、ＣＰＵ３０は、プレイヤが十字キーの下方向を押下している場合、次のステップ１３７に処理を進める。一方、ＣＰＵ３０は、プレイヤが十字キーの下方向を押下していない場合、当該サブルーチンによる処理を終了して、次のステップ２０に処理を進める。
【０２９１】
ステップ１３７において、ＣＰＵ３０は、操作情報ＤａからチームＸの選手モード用コアユニットから送信された操作情報に含まれる最新の第１座標データＤａ１および第２座標データＤａ２を参照する。次に、ＣＰＵ３０は、上記ステップ１３７で参照した第１座標データＤａ１および第２座標データＤａ２に対応する指示座標、および当該指示座標に対応する仮想空間位置を算出して、それぞれチームＸの選手モード用コアユニットに対応する指示座標データＤｅおよび仮想空間位置座標データＤｆを更新して（ステップ１３８）、処理を次のステップに進める。なお、上記ステップ１３８で算出する指示座標および仮想空間位置の算出方法については、上記ステップ８４と同様であるため、詳細な説明を省略する。
【０２９２】
次に、ＣＰＵ３０は、指示対象選手データＤｇを参照して、チームＸの選手モード用コントローラ７の指示対象選手が設定されているか否かを判断する（ステップ１３９）。そして、ＣＰＵ３０は、指示対象選手が未設定の場合、次のステップ１４１に処理を進める。一方、ＣＰＵ３０は、指示対象選手が設定されている場合、次のステップ１４３に処理を進める。
【０２９３】
ステップ１４１において、ＣＰＵ３０は、上記ステップ１３８で算出された仮想空間位置を中心とした領域Ａ（図２７参照）内に、チームＸの選手キャラクタのいずれかが配置されているか否かを判断する。次に、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが配置されている場合、当該選手キャラクタをチームＸの選手モード用コントローラ７の指示対象選手に設定して、そのキャラクタ識別番号等を指示対象選手データＤｇに記述する（ステップ１４２）。なお、上記領域Ａ内にチームＸの選手キャラクタが複数存在する場合には、ステップ１３８で算出された仮想空間位置に最も近い選手キャラクタが指示対象選手に設定される。そして、ＣＰＵ３０は、当該サブルーチンによる処理を終了して、次のステップ２０に処理を進める。一方、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが１人も配置されていない場合、そのまま当該サブルーチンによる処理を終了して、次のステップ２０に処理を進める。
【０２９４】
ステップ１４３において、ＣＰＵ３０は、算出された仮想空間座標が仮想ゲーム空間に設定されたサッカーフィールド内か否かを判断する。次に、ＣＰＵ３０は、仮想空間座標が上記サッカーフィールド内である場合、仮想空間位置に応じて指示対象選手の移動ベクトルを設定して移動ベクトルデータＤｃを更新する（ステップ１４４）。例えば、ＣＰＵ３０は、指示対象選手の現在の配置位置から仮想空間位置ＴＰ（図２７参照）に向かう方向を当該指示対象選手の移動ベクトルの方向とする。さらに、現在の配置位置から仮想空間位置ＴＰまでの仮想距離に応じた大きさを当該指示対象選手の移動ベクトルの大きさとして設定してもよい。そして、ＣＰＵ３０は、指示対象選手データＤｇに記述されたチームＸの選手モード用コントローラの指示対象選手をクリアし（ステップ１４５）、当該サブルーチンによる処理を終了して、次のステップ２０に処理を進める。一方、ＣＰＵ３０は、仮想空間座標が上記サッカーフィールド外である場合、そのまま当該サブルーチンによる処理を終了して、次のステップ２０に処理を進める。なお、ステップ１４５において、指示対象選手をクリアしなくてもよく、この場合には、指示対象選手を設定した後、その指示対象選手に対して複数回移動指示を出すことが可能になる（この場合には、ボタン操作や所定領域への座標指示などに応じて当該クリアの処理をするとよい）。
【０２９５】
次に、図２４を参照して、上記ステップ２０における監督モード処理について、詳細な動作を説明する。
【０２９６】
図２４において、ＣＰＵ３０は、コントローラ識別番号データＤｂを参照して、チームＸについて監督モード用のコントローラ識別番号が設定されているか否かを判断する（ステップ１５１）。そして、ＣＰＵ３０は、チームＸについて監督モード用のコントローラ識別番号が設定されている場合、次のステップ１５２に処理を進める。一方、ＣＰＵ３０は、チームＸについて監督モード用のコントローラ識別番号が設定されていない場合、当該サブルーチンによる処理を終了して、次のステップ２１に処理を進める。
【０２９７】
ステップ１５２において、ＣＰＵ３０は、操作情報ＤａからチームＸの監督モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。次に、ＣＰＵ３０は、コア加速度データが示すＸ軸方向の加速度の大きさが所定値以上であるか否かを判断する（ステップ１５３）。そして、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値以上である場合、次のステップ１５４に処理を進める。一方、ＣＰＵ３０は、Ｘ軸方向の加速度の大きさが所定値未満である場合、次のステップ１５５に処理を進める。
【０２９８】
ステップ１５４において、ＣＰＵ３０は、上記ステップ１５２で参照したコア加速度データが示すＸ軸方向の加速度の大きさに基づいて、チームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルを更新して、移動ベクトルデータＤｃを更新し、次のステップ１５５に処理を進める。例えば、図２９に示すように、ＣＰＵ３０は、仮想ゲーム空間に設定されたサッカーフィールドのタッチラインと平行な方向の補正ベクトルを、チームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルに加え、新たな移動ベクトルＶｍｎｐｃを算出する。上記補正ベクトルは、固定の大きさとしてもよいし、当該Ｘ軸方向の加速度の大きさに応じた大きさとしてもよい。なお、補正ベクトルの方向を、コア加速度データが示す加速度の方向に応じて決定してもよい。具体的には上述した補正ベクトルの方向を決定する第１〜第４の例と同様である。
【０２９９】
なお、上記ステップ１５４の処理においても上記ステップ１３５の処理と同様に、チームＸのプレイヤキャラクタＰＣの移動ベクトルについても、同様のベクトル加算を行って更新してもかまわない。また、チームＸのノンプレイヤキャラクタＮＰＣの何れか（例えば、チームＸのゴールキーパー）を、ベクトル加算の対象から外してもかまわない。また、上述した処理では、タッチラインと平行な方向でＸ軸方向の加速度の大きさに応じた大きさのベクトルを加算する例を示したが、当該ベクトルをそのままチームＸのノンプレイヤキャラクタＮＰＣ全ての移動ベクトルに設定してもかまわない。さらに、加算するベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に対して垂直な水平方向や、当該視線方向を基準とした他の方向に設定してもかまわない。
【０３００】
ステップ１５５において、ＣＰＵ３０は、操作情報ＤａからチームＸの監督モード用コアユニットから送信された操作情報に含まれる最新の第１座標データＤａ１および第２座標データＤａ２を参照する。次に、ＣＰＵ３０は、上記ステップ１５５で参照した第１座標データＤａ１および第２座標データＤａ２に対応する指示座標、および当該指示座標に対応する仮想空間位置を算出して、それぞれチームＸの監督モード用コアユニットに対応する指示座標データＤｅおよび仮想空間位置座標データＤｆを更新して（ステップ１５６）、処理を次のステップに進める。なお、上記ステップ１５６で算出する指示座標および仮想空間位置の算出方法については、上記ステップ８４と同様であるため、詳細な説明を省略する。
【０３０１】
次に、ＣＰＵ３０は、指示対象選手データＤｇを参照して、チームＸの監督モード用コントローラ７の指示対象選手が設定されているか否かを判断する（ステップ１５７）。そして、ＣＰＵ３０は、指示対象選手が未設定の場合、次のステップ１５８に処理を進める。一方、ＣＰＵ３０は、指示対象選手が設定されている場合、次のステップ１６０に処理を進める。
【０３０２】
ステップ１５８において、ＣＰＵ３０は、上記ステップ１５６で算出された仮想空間位置を中心とした領域Ａ（図２７参照）内に、チームＸの選手キャラクタのいずれかが配置されているか否かを判断する。次に、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが配置されている場合、当該選手キャラクタをチームＸの監督モード用コントローラの指示対象選手に設定して、そのキャラクタ識別番号等を指示対象選手データＤｇに記述する（ステップ１５９）。なお、上記領域Ａ内にチームＸの選手キャラクタが複数存在する場合には、ステップ１３８で算出された仮想空間位置に最も近い選手キャラクタが指示対象選手に設定される。そして、ＣＰＵ３０は、当該サブルーチンによる処理を終了して、次のステップ２１に処理を進める。一方、ＣＰＵ３０は、領域Ａ内にチームＸの選手キャラクタが１人も配置されていない場合、そのまま当該サブルーチンによる処理を終了して、次のステップ２１に処理を進める。
【０３０３】
ステップ１６０において、ＣＰＵ３０は、算出された仮想空間座標が仮想ゲーム空間に設定されたサッカーフィールド内か否かを判断する。次に、ＣＰＵ３０は、仮想空間座標が上記サッカーフィールド内である場合、仮想空間位置に応じて指示対象選手の移動ベクトルを設定して移動ベクトルデータＤｃを更新する（ステップ１６１）。例えば、ＣＰＵ３０は、指示対象選手の現在の配置位置から仮想空間位置ＴＰ（図２７参照）に向かう方向を当該指示対象選手の移動ベクトルの方向とする。さらに、現在の配置位置から仮想空間位置ＴＰまでの仮想距離に応じた大きさを当該指示対象選手の移動ベクトルの大きさとして設定してもよい。そして、ＣＰＵ３０は、指示対象選手データＤｇに記述されたチームＸの監督モード用コントローラの指示対象選手をクリアし（ステップ１６２）、当該サブルーチンによる処理を終了して、次のステップ２１に処理を進める。一方、ＣＰＵ３０は、仮想空間座標が上記サッカーフィールド外である場合、そのまま当該サブルーチンによる処理を終了して、次のステップ２１に処理を進める。なお、ステップ１６２において、指示対象選手をクリアしなくてもよく、この場合には、指示対象選手を設定した後、その指示対象選手に対して複数回移動指示を出すことが可能になる（この場合には、ボタン操作や所定領域への座標指示などに応じて当該クリアの処理をするとよい）。
【０３０４】
このように、ステップ２０における監督モード処理においては、プレイヤが操作するコントローラ７を監督モードに設定することによって、チーム全体に対して総合的な操作が可能となる。具体的には、チーム内の複数のノンプレイヤキャラクタＮＰＣ（プレイヤキャラクタＰＣを含めても良い）の移動方向が、コアユニット７０から得られるコア加速度データ（またはサブ加速度データでもよい）に応じて制御される。つまり、プレイヤは、コアユニット７０全体（またはサブユニット７６全体）の動作によって複数のキャラクタの移動方向の制御を行うことができる。したがって、プレイヤは、監督モードで複数のキャラクタの移動方向を直感的に操作することができる。
【０３０５】
なお、上述したフローチャートの処理から明らかなように、ステップ１９における一時監督モード処理では、十字キーを操作する手順が異なるが、他の処理についてはステップ２０の監督モード処理と類似している。つまり、プレイヤが操作するコントローラ７が選手モードに設定されていても、十字キーの上下方向を操作することによって、上述した監督モードと同様の操作が可能になっている。
【０３０６】
また、上記ステップ２２の処理においては、移動ベクトルデータＤｃに記述された各移動ベクトルデータがそれぞれ所定量減衰するが、ノンプレイヤキャラクタＮＰＣが所定の地点まで到達するまで継続して動作させたい場合、当該ノンプレイヤキャラクタＮＰＣの移動ベクトルについては減衰しなくてもかまわない。例えば、指示対象選手をコアユニット７０で指し示した仮想空間位置ＴＰまで移動させたい場合、当該指示対象選手が仮想空間位置ＴＰに到達するまで当該指示対象選手の移動ベクトルの大きさおよび方向を維持してもかまわない。
【０３０７】
また、上述した説明では、表示画面に対して遠隔から座標指定するために、コアユニット７０に設けられた撮像素子７４３で撮像対象を撮像した画像データを解析することによって、モニタ２の表示画面に対して座標指定する態様を用いた。この態様は、表示画面近傍に撮像対象となる２つのマーカを設置し、撮像手段およびその撮像方向を自在に変更可能なハウジングを備えたデバイスが撮像画像中の２つのマーカを検出し、当該撮像画像におけるマーカの位置に基づいて当該デバイスが指定する座標位置を導出するものである。しかしながら、他の態様で上記座標指定を行ってもかまわない。
【０３０８】
例えば、表示画面近傍に設置する撮像対象は、上述した電気的なマーカ（ＬＥＤモジュール）の他に、光を反射する部材や特定色や特定形状を有する物理的なマーカでもかまわない。また、モニタ２の表示画面に撮像対象を表示してもかまわない。また、コアユニット７０が備える撮像手段でラスタスキャン型モニタの走査線を読み取ることによって、当該モニタ自体を撮像対象にしてもかまわない。また、磁気発生装置を設け、当該磁気発生装置から生じる磁気を利用して遠隔から座標指定してもかまわない。この場合、コアユニット７０には、上記磁気を検出するための磁気センサを設けることになる。
【０３０９】
また、上述した説明では、２つのマーカ８Ｌおよび８Ｒからの赤外光を、コアユニット７０の撮像情報演算部７４の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、１つまたは３つ以上のマーカをモニタ２の近傍に設置し、それらのマーカからの赤外光を撮像情報演算部７４の撮像対象としてもかまわない。例えば、所定の長さを有する１つのマーカをモニタ２の近傍に設置しても、本発明を同様に実現することができる。また、モニタ２の表示画面自体や他の発光体（室内灯等）を撮像情報演算部７４の撮像対象としてもかまわない。撮像対象とモニタ２の表示画面との配置関係に基づいて、当該表示画面に対するコアユニット７０の位置を演算すれば、様々な発光体を撮像情報演算部７４の撮像対象として用いることができる。
【０３１０】
また、コアユニット７０側にマーカ等の撮像対象を設けて、撮像手段をモニタ２側に設けてもかまわない。さらに他の例では、コアユニット７０の前面から光を放射する機構を設けてもかまわない。この場合、コアユニット７０およびモニタ２とは別の場所にモニタ２の表示画面を撮像する撮像装置を設置し、モニタ２の表示画面にコアユニット７０から放射された光が反射した位置を当該撮像装置が撮像した画像から解析することによって、同様に表示画面に対して遠隔から座標指定するためのデータを出力可能なポインティングデバイスを構成することができる。
【０３１１】
また、上述した説明では、コントローラ７とゲーム装置本体５とが無線通信によって接続された態様を用いたが、コントローラ７とゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、コアユニット７０とサブユニット７６とが接続ケーブル７９で接続され、コアユニット７０とゲーム装置本体５とが別のケーブルで接続される。
【０３１２】
また、上述したコントローラ７の形状や、それらに設けられている操作部７２および７８の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。
【０３１３】
また、本発明のゲームプログラムは、光ディスク４等の外部記憶媒体を通じてゲーム装置本体５に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体５に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体５内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【産業上の利用可能性】
【０３１４】
本発明に係るゲームシステムおよびゲームプログラムは、プレイヤキャラクタの移動制御を直感的かつ容易な操作で多様に制御する、または、ゲーム入力のダイレクト感を効果的に感じさせることができ、仮想ゲーム世界におけるオブジェクトを移動させるゲームシステムや当該ゲーム装置本体で実行されるゲームプログラムとして有用である。
【図面の簡単な説明】
【０３１５】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１のコントローラ７の外観構成を示す斜視図
【図４】図３のコントローラ７の接続ケーブル７９をコアユニット７０から脱着する状態を示す斜視図
【図５】図３のコアユニット７０の上面後方から見た斜視図
【図６】図５のコアユニット７０を下面前方から見た斜視図
【図７】図５のコアユニット７０の上筐体を外した状態を示す斜視図
【図８】図６のコアユニット７０の下筐体を外した状態を示す斜視図
【図９】サブユニット７６の一例を示す斜視図
【図１０】図９のサブユニット７６の上筐体を外した状態を示す斜視図
【図１１】図３のコントローラ７の構成を示すブロック図
【図１２】図３のコントローラ７を用いてゲーム操作するときの状態を概説する図解図
【図１３】プレイヤがコアユニット７０を右手で把持した状態をコアユニット７０の前面側から見た一例
【図１４】プレイヤがコアユニット７０を右手で把持した状態をコアユニット７０の左側面側から見た一例
【図１５】ＬＥＤモジュール８Ｌおよび８Ｒと撮像素子７４３との視野角を説明するための図
【図１６】プレイヤがサブユニット７６を左手で把持した状態をサブユニット７６の右側面側から見た一例
【図１７】ゲーム装置本体５のメインメモリ３３に記憶される主なデータを示す図
【図１８】ゲーム装置本体５において実行されるゲーム処理の流れを示すフローチャート
【図１９】図１８におけるステップ１５のサブユニット移動処理の詳細な動作を示すサブルーチン
【図２０】図１８におけるステップ１６のパス処理の詳細な動作を示すサブルーチン
【図２１】図１８におけるステップ１７の第１シュート処理の詳細な動作を示すサブルーチン
【図２２】図１８におけるステップ１８の第２シュート処理の詳細な動作を示すサブルーチン
【図２３】図１８におけるステップ１９の一時監督モード処理の詳細な動作を示すサブルーチン
【図２４】図１８におけるステップ２０の監督モード処理の詳細な動作を示すサブルーチン
【図２５】モニタ２に表示されるゲーム画像の一例
【図２６】プレイヤキャラクタＰＣに設定される姿勢ベクトルＶｃを説明するための図
【図２７】パスの目標位置ＴＰと領域ＡおよびＢを説明するための図
【図２８】ボールオブジェクトＢが移動する軌道の一例を示す図
【図２９】ノンプレイヤキャラクタＮＰＣに設定される移動ベクトルＶｍｎｐｃの一例を示す図
【図３０】サブユニット移動処理における他の例の詳細な動作を示すサブルーチン
【符号の説明】
【０３１６】
１…ゲームシステム
２…モニタ
２ａ、７０６…スピーカ
３…ゲーム装置
３０…ＣＰＵ
３１…メモリコントローラ
３２…ＧＰＵ
３３…メインメモリ
３４…ＤＳＰ
３５…ＡＲＡＭ
３６…コントローラＩ／Ｆ
３７…ビデオＩ／Ｆ
３８…フラッシュメモリ
３９…オーディオＩ／Ｆ
４０…ディスクドライブ
４１…ディスクＩ／Ｆ
４…光ディスク
５…ゲーム装置本体
６…通信ユニット
７…コントローラ
７０…コアユニット
７１、７７…ハウジング
７２、７８…操作部
７３、７９１…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１、７６１…加速度センサ
７０２…ＬＥＤ
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
７６…サブユニット
７９…接続ケーブル
８…マーカ
【図１】
0005392986.tif 000002
【図２】
0005392986.tif 000003
【図３】
0005392986.tif 000004
【図４】
0005392986.tif 000005
【図５】
0005392986.tif 000006
【図６】
0005392986.tif 000007
【図７】
0005392986.tif 000008
【図８】
0005392986.tif 000009
【図９】
0005392986.tif 000010
【図１０】
0005392986.tif 000011
【図１１】
0005392986.tif 000012
【図１２】
0005392986.tif 000013
【図１３】
0005392986.tif 000014
【図１４】
0005392986.tif 000015
【図１５】
0005392986.tif 000016
【図１６】
0005392986.tif 000017
【図１７】
0005392986.tif 000018
【図１８】
0005392986.tif 000019
【図１９】
0005392986.tif 000020
【図２０】
0005392986.tif 000021
【図２１】
0005392986.tif 000022
【図２２】
0005392986.tif 000023
【図２３】
0005392986.tif 000024
【図２４】
0005392986.tif 000025
【図２５】
0005392986.tif 000026
【図２６】
0005392986.tif 000027
【図２７】
0005392986.tif 000028
【図２８】
0005392986.tif 000029
【図２９】
0005392986.tif 000030
【図３０】
0005392986.tif 000031