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