(57)【特許請求の範囲】
【請求項１】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置であって、
前記加速度データを逐次取得する取得手段と、
前記加速度データにより示される加速度ベクトルを平滑化した値を示す平滑化ベクトルを逐次算出する平滑化手段と、
前記加速度ベクトルと前記平滑化ベクトルとに基づいてゲーム処理を実行するゲーム処理手段とを備え、
前記平滑化手段は、前記取得手段によって前記加速度データが取得される度に平滑化ベクトルを算出し、前回に算出された平滑化ベクトルを、前記取得手段によって取得された加速度データが示す加速度ベクトルに所定の割合で近づける演算によって平滑化ベクトルを算出し、
前記ゲーム処理手段は、
ゲーム空間におけるプレイヤオブジェクトの第１の動作を決めるための状態を前記平滑化ベクトルに基づいて決定する第１動作制御手段と、
前記プレイヤオブジェクトの第２の動作を決めるための状態を前記加速度ベクトルに基づいて決定する第２動作制御手段とを含む、ゲーム装置。
【請求項２】
前記第１動作制御手段は、前記平滑化ベクトルに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第２動作制御手段は、前記加速度ベクトルに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項１に記載のゲーム装置。
【請求項３】
前記第２動作制御手段は、前記第１動作制御手段によって決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記加速度ベクトルに基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項２に記載のゲーム装置。
【請求項４】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置であって、
前記加速度データを逐次取得する取得手段と、
前記加速度データにより示される加速度ベクトルを平滑化した値を示す平滑化ベクトルを逐次算出する平滑化手段と、
前記加速度ベクトルと前記平滑化ベクトルとに基づいてゲーム処理を実行するゲーム処理手段とを備え、
前記平滑化手段は、前記取得手段によって前記加速度データが取得される度に平滑化ベクトルを算出し、前回に算出された平滑化ベクトルを、前記取得手段によって取得された加速度データが示す加速度ベクトルに所定の割合で近づける演算によって平滑化ベクトルを算出し、
前記ゲーム処理手段は、
前記加速度ベクトルにより示される加速度の値と前記平滑化ベクトルにより示される値との差分を算出する差分算出手段と、
ゲーム空間におけるプレイヤオブジェクトの第３の動作を決めるための状態を前記平滑化ベクトルに基づいて決定する第３動作制御手段と、
前記プレイヤオブジェクトの第４の動作を決めるための状態を前記差分に基づいて決定する第４動作制御手段とを含む、ゲーム装置。
【請求項５】
前記第３動作制御手段は、前記平滑化ベクトルに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第４動作制御手段は、前記差分に基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項４に記載のゲーム装置。
【請求項６】
前記第４動作制御手段は、前記第３動作制御手段によって決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記差分に基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項５に記載のゲーム装置。
【請求項７】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置であって、
前記加速度データを逐次取得する取得手段と、
前記加速度データにより示される加速度ベクトルを平滑化した値を示す平滑化ベクトルを逐次算出する平滑化手段と、
前記加速度ベクトルと前記平滑化ベクトルとに基づいてゲーム処理を実行するゲーム処理手段とを備え、
前記平滑化手段は、前記取得手段によって前記加速度データが取得される度に平滑化ベクトルを算出し、前回に算出された平滑化ベクトルを、前記取得手段によって取得された加速度データが示す加速度ベクトルに所定の割合で近づける演算によって平滑化ベクトルを算出し、
前記ゲーム処理手段は、
前記加速度ベクトルにより示される加速度の値と前記平滑化ベクトルにより示される値との差分を算出する差分算出手段と、
ゲーム空間内に登場する第１のプレイヤオブジェクトの動作を決めるための状態を前記平滑化ベクトルに基づいて決定する第５動作制御手段と、
前記ゲーム空間内に登場する第２のプレイヤオブジェクトの動作を決めるための状態を前記差分に基づいて決定する第６動作制御手段とを含む、ゲーム装置。
【請求項８】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置であって、
前記加速度データを逐次取得する取得手段と、
前記加速度データにより示される加速度ベクトルを平滑化した値を示す平滑化ベクトルを逐次算出する平滑化手段と、
前記加速度ベクトルと前記平滑化ベクトルとに基づいてゲーム処理を実行するゲーム処理手段とを備え、
前記平滑化手段は、前記取得手段によって前記加速度データが取得される度に平滑化ベクトルを算出し、前回に算出された平滑化ベクトルを、前記取得手段によって取得された加速度データが示す加速度ベクトルに所定の割合で近づける演算によって平滑化ベクトルを算出し、
前記ゲーム処理手段は、
ゲーム空間内に登場する第１のプレイヤオブジェクトの動作を決めるための状態を前記平滑化ベクトルに基づいて決定する第７動作制御手段と、
前記ゲーム空間内に登場する第２のプレイヤオブジェクトの動作を決めるための状態を前記加速度ベクトルに基づいて決定する第８動作制御手段とを含む、ゲーム装置。
【請求項９】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記加速度データを逐次取得する取得ステップと、
前記加速度データにより示される加速度ベクトルを平滑化した値を示す平滑化ベクトルを逐次算出する平滑化ステップと、
前記加速度ベクトルと前記平滑化ベクトルとに基づいてゲーム処理を実行するゲーム処理ステップとを前記コンピュータに実行させ、
前記平滑化ステップは、前記加速度データが取得される度に実行され、
前記平滑化ステップにおいて、前記コンピュータは、前回に算出された平滑化ベクトルを、前記取得ステップにおいて取得された加速度データが示す加速度ベクトルに所定の割合で近づける演算によって平滑化ベクトルを算出し、
前記ゲーム処理ステップは、
ゲーム空間におけるプレイヤオブジェクトの第１の動作を決めるための状態を前記平滑化ベクトルに基づいて決定する第１動作制御ステップと、
前記プレイヤオブジェクトの第２の動作を決めるための状態を前記加速度ベクトルに基づいて決定する第２動作制御ステップとを含む、ゲームプログラム。
【請求項１０】
前記第１動作制御ステップにおいて、前記コンピュータは、前記平滑化ベクトルに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第２動作制御ステップにおいて、前記コンピュータは、前記加速度ベクトルに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項９に記載のゲームプログラム。
【請求項１１】
前記第２動作制御ステップにおいて、前記コンピュータは、前記第１動作制御ステップにおいて決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記加速度ベクトルに基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項１０に記載のゲームプログラム。
【請求項１２】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記加速度データを逐次取得する取得ステップと、
前記加速度データにより示される加速度ベクトルを平滑化した値を示す平滑化ベクトルを逐次算出する平滑化ステップと、
前記加速度ベクトルと前記平滑化ベクトルとに基づいてゲーム処理を実行するゲーム処理ステップとを前記コンピュータに実行させ、
前記平滑化ステップは、前記加速度データが取得される度に実行され、
前記平滑化ステップにおいて、前記コンピュータは、前回に算出された平滑化ベクトルを、前記取得ステップにおいて取得された加速度データが示す加速度ベクトルに所定の割合で近づける演算によって平滑化ベクトルを算出し、
前記ゲーム処理ステップは、
前記加速度ベクトルにより示される加速度の値と前記平滑化ベクトルにより示される値との差分を算出する差分算出ステップと、
ゲーム空間におけるプレイヤオブジェクトの第３の動作を決めるための状態を前記平滑化ベクトルに基づいて決定する第３動作制御ステップと、
前記プレイヤオブジェクトの第４の動作を決めるための状態を前記差分に基づいて決定する第４動作制御ステップとを含む、ゲームプログラム。
【請求項１３】
前記第３動作制御ステップにおいて、前記コンピュータは、前記平滑化ベクトルに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第４動作制御ステップにおいて、前記コンピュータは、前記差分に基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項１２に記載のゲームプログラム。
【請求項１４】
前記第４動作制御ステップにおいて、前記コンピュータは、前記第３動作制御ステップにおいて決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記差分に基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項１３に記載のゲームプログラム。
【請求項１５】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記加速度データを逐次取得する取得ステップと、
前記加速度データにより示される加速度ベクトルを平滑化した値を示す平滑化ベクトルを逐次算出する平滑化ステップと、
前記加速度ベクトルと前記平滑化ベクトルとに基づいてゲーム処理を実行するゲーム処理ステップとを前記コンピュータに実行させ、
前記平滑化ステップは、前記加速度データが取得される度に実行され、
前記平滑化ステップにおいて、前記コンピュータは、前回に算出された平滑化ベクトルを、前記取得ステップにおいて取得された加速度データが示す加速度ベクトルに所定の割合で近づける演算によって平滑化ベクトルを算出し、
前記ゲーム処理ステップは、
前記加速度ベクトルにより示される加速度の値と前記平滑化ベクトルにより示される値との差分を算出する差分算出ステップと、
ゲーム空間内に登場する第１のプレイヤオブジェクトの動作を決めるための状態を前記平滑化ベクトルに基づいて決定する第５動作制御ステップと、
前記ゲーム空間内に登場する第２のプレイヤオブジェクトの動作を決めるための状態を前記差分に基づいて決定する第６動作制御ステップとを含む、ゲームプログラム。
【請求項１６】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記加速度データを逐次取得する取得ステップと、
前記加速度データにより示される加速度ベクトルを平滑化した値を示す平滑化ベクトルを逐次算出する平滑化ステップと、
前記加速度ベクトルと前記平滑化ベクトルとに基づいてゲーム処理を実行するゲーム処理ステップとを前記コンピュータに実行させ、
前記平滑化ステップは、前記加速度データが取得される度に実行され、
前記平滑化ステップにおいて、前記コンピュータは、前回に算出された平滑化ベクトルを、前記取得ステップにおいて取得された加速度データが示す加速度ベクトルに所定の割合で近づける演算によって平滑化ベクトルを算出し、
前記ゲーム処理ステップは、
ゲーム空間内に登場する第１のプレイヤオブジェクトの動作を決めるための状態を前記平滑化ベクトルに基づいて決定する第７動作制御ステップと、
前記ゲーム空間内に登場する第２のプレイヤオブジェクトの動作を決めるための状態を前記加速度ベクトルに基づいて決定する第８動作制御ステップとを含む、ゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、加速度センサからの出力に基づいてゲーム処理を実行するゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
特許文献１には、多軸加速度センサおよび多軸ジャイロセンサを備える入力制御装置が記載されている。この入力制御装置は、棒状の本体を有しており、加速度センサによって本体の加速度を検出するとともに、ジャイロセンサによって本体の傾きやひねりを検出する。特許文献１に記載の入力制御装置は、プレイヤが手に持って使用する入力装置の移動を検出するために加速度センサを用い、当該入力装置の回転（姿勢）を検知するためにジャイロセンサを用いるものである。このように、従来においては、入力装置の位置や姿勢や移動等に関する状態を複数種類検出し、入力装置の複数の状態をゲーム処理に反映させるために、複数のセンサを用いていた。
【特許文献１】特開２０００−３０８７５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来においては、入力装置の複数の状態を検出するために加速度センサおよびジャイロセンサという２種類のセンサを用いる必要があったので、入力装置が大型化してしまうという問題があった。また、入力装置に２種類のセンサを搭載しなければならないので、製造コストが高くなるという問題があった。
【０００４】
それ故、本発明は、簡易な構成によって入力装置の複数の状態をゲーム処理に反映させることができるゲーム装置およびゲームプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００６】
第１の発明は、入力装置（コントローラ７）に搭載された加速度センサ（３７）から逐次出力される加速度データ（６２１）に基づくゲーム処理を実行するゲーム装置（３）である。ゲーム装置は、取得手段（ステップＳ２を実行するＣＰＵ１０等。以下、ステップ番号のみを記載する。）と、平滑化手段（Ｓ３）と、ゲーム処理手段（Ｓ４）とを備えている。取得手段は、加速度データを逐次取得する。平滑化手段は、加速度データにより示される加速度を平滑化した値を示す平滑化データ（６３１）を逐次算出する。ゲーム処理手段は、加速度データと平滑化データとに基づいてゲーム処理を実行する。
【０００７】
第２の発明においては、ゲーム処理手段は、第１動作制御手段（Ｓ１１）と、第２動作制御手段（Ｓ１２）とを含んでいてもよい。第１動作制御手段は、ゲーム空間におけるプレイヤオブジェクト（５１）の第１の動作を決めるための状態を平滑化データに基づいて決定する。第２動作制御手段は、プレイヤオブジェクトの第２の動作を決めるための状態を加速度データに基づいて決定する。
【０００８】
第３の発明においては、第１動作制御手段は、平滑化データに基づいてプレイヤオブジェクトのゲーム空間内における姿勢を決定してもよい。このとき、第２動作制御手段は、加速度データに基づいてプレイヤオブジェクトのゲーム空間内における位置を決定する。
【０００９】
第４の発明においては、第２動作制御手段は、第１動作制御手段によって決定されるプレイヤオブジェクトの姿勢に基づいて移動方向を決定し、加速度データに基づいて移動量を決定することにより、ゲーム空間内における位置を決定してもよい。
【００１０】
第５の発明においては、ゲーム処理手段は、差分算出手段（Ｓ１２）と、処理実行手段（Ｓ１３〜Ｓ１７）とを含んでいてもよい。差分算出手段は、加速度データにより示される加速度の値と平滑化データにより示される値との差分（ａｙ−ｂｙ）を算出する。処理実行手段は、平滑化データと差分とを用いてゲーム処理を実行する。
【００１１】
第６の発明においては、ゲーム処理手段は、第３動作制御手段（Ｓ１１）と、第４動作制御手段（Ｓ１２）とを含んでいてもよい。第３動作制御手段は、ゲーム空間におけるプレイヤオブジェクトの第３の動作を決めるための状態を平滑化データに基づいて決定する。第４動作制御手段は、プレイヤオブジェクトの第４の動作を決めるための状態を差分に基づいて決定する。
【００１２】
第７の発明においては、第３動作制御手段は、平滑化データに基づいてプレイヤオブジェクトのゲーム空間内における姿勢を決定してもよい。このとき、第４動作制御手段は、差分に基づいてプレイヤオブジェクトのゲーム空間内における位置を決定する。
【００１３】
第８の発明においては、第４動作制御手段は、第３動作制御手段によって決定されるプレイヤオブジェクトの姿勢に基づいて移動方向を決定し、差分に基づいて移動量を決定することにより、ゲーム空間内における位置を決定してもよい。
【００１４】
第９の発明においては、前記ゲーム処理手段は、第５動作制御手段と、第６動作制御手段とを含んでいてもよい。第５動作制御手段は、ゲーム空間内に登場する第１のプレイヤオブジェクトの動作を決めるための状態を平滑化データに基づいて制御する。第６動作制御手段は、ゲーム空間内に登場する第２のプレイヤオブジェクトの動作を決めるための状態を差分に基づいて制御する。
【００１５】
第１０の発明においては、ゲーム処理手段は、第３動作制御手段と、第４動作制御手段とを含んでいてもよい。第３動作制御手段は、ゲーム空間内に登場する第１のオブジェクトの動作を加速度データに基づいて制御する。第４動作制御手段は、ゲーム空間内に登場する第２のオブジェクトの動作を平滑化データに基づいて制御する。
【００１６】
第１１の発明においては、平滑化手段は、加速度データが取得される度に平滑化データを算出し、前回に算出された平滑化データの値を、取得手段によって取得された加速度データの値に所定の割合で近づける演算によって平滑化を行うようにしてもよい（図１９参照）。
【００１７】
第１２の発明においては、ゲーム処理手段は、傾き算出手段（Ｓ１１）と、動き算出手段（Ｓ１２）と、処理実行手段（Ｓ１１〜Ｓ１７）とを備えていてもよい。傾き算出手段は、加速度センサを備える入力装置の傾きに対応する第１データ（翼角データ６３５）を平滑化データに基づいて算出する。動き算出手段は、入力装置の動きに対応する第２データ（オブジェクト姿勢データ６３２）を加速度データに基づいて算出する。処理実行手段は、第１データおよび第２データに基づいてゲーム処理を実行する。
【００１８】
また、本発明は、上記の動作をゲーム装置のコンピュータに実行させるためのゲームプログラムの形態で提供されてもよい。
【発明の効果】
【００１９】
第１の発明によれば、平滑化手段は、取得された加速度データから平滑化データを算出する。ここで、加速度データおよび平滑化データは、入力装置の位置や姿勢や移動等に関する状態を表すものであるが、両者は互いに異なる状態を表すものである。したがって、第１の発明によれば、平滑化データを算出することによって、入力装置の２種類の状態を示す情報を１つの加速度センサの出力から得ることができる。そして、加速度データおよび平滑化データという２種類のデータに基づいてゲーム処理が実行されるので、入力装置の複数の状態をゲーム処理に反映させることができる。さらに、本発明で用いられるセンサは加速度センサ１種類のみであるので、従来技術に比べて入力装置の構成を簡易にすることができる。つまり、第１の発明によれば、簡易な構成によって入力装置の複数の状態をゲーム処理に反映させることができる。
【００２０】
第２の発明によれば、第１動作制御手段は加速度データに基づいて第１の動作をオブジェクトに行わせるとともに、第２動作制御手段は平滑化データに基づいて第２の動作を当該オブジェクトに行わせる。すなわち、ゲーム装置は、加速度センサの出力から得られる２つのデータを用いて、１つのオブジェクトに２種類の動作を同時に行わせる。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、１つのオブジェクトに２種類の動作を行わせることができる。つまり、単純な操作方法で多彩な動作をオブジェクトに行わせることが可能となり、ゲームの操作性を向上することができる。
【００２１】
第３の発明によれば、平滑化データに基づいてオブジェクトの姿勢が決定されるとともに、加速度データに基づいてオブジェクトの位置が決定される。これによって、プレイヤは、入力装置自体を動かすという単純な操作方法によってオブジェクトの姿勢および位置を制御することができるので、簡単な操作で多彩な動作をオブジェクトに行わせることができる。
【００２２】
第４の発明によれば、オブジェクトの位置は、加速度データのみならず平滑化データにも基づいて決定される。これによれば、２種類のデータによってオブジェクトの位置が決定されるので、オブジェクトの位置をより詳細に制御することができる。
【００２３】
第５の発明によれば、加速度データにより示される加速度の値と平滑化データにより示される値との差分が算出され、ゲーム処理は当該差分と平滑化データとに基づいて実行される。上記差分は、入力装置の激しい動きに起因する成分のみを示すので、ゲーム装置は当該差分を算出することによって、入力装置の激しい動きをより正確に算出することができる。
【００２４】
第６の発明によれば、第３動作制御手段は平滑化データに基づいて第３の動作をオブジェクトに行わせるとともに、第４動作制御手段は差分に基づいて第４の動作を当該オブジェクトに行わせる。すなわち、ゲーム装置は、加速度センサの出力から得られる２つのデータを用いて、１つのオブジェクトに２種類の動作を同時に行わせる。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、１つのオブジェクトに２種類の動作を行わせることができる。つまり、単純な操作方法で多彩な動作をオブジェクトに行わせることが可能となり、ゲームの操作性を向上することができる。
【００２５】
第７の発明によれば、平滑化データに基づいてオブジェクトの姿勢が決定されるとともに、差分に基づいてオブジェクトの位置が決定される。これによって、プレイヤは、入力装置自体を動かすという単純な操作方法によってオブジェクトの姿勢および位置を制御することができるので、簡単な操作で多彩な動作をオブジェクトに行わせることができる。
【００２６】
第８の発明によれば、オブジェクトの位置は、差分のみならず平滑化データにも基づいて決定される。これによれば、２種類のデータによってオブジェクトの位置が決定されるので、オブジェクトの位置をより詳細に制御することができる。
【００２７】
第９の発明によれば、第５動作制御手段は平滑化データに基づいて第１のプレイヤオブジェクトの動作を制御するとともに、第６動作制御手段は差分に基づいて第２のオブジェクトの動作を制御する。すなわち、ゲーム装置は、加速度センサの出力から得られる２つのデータを用いて、互いに異なる２つのオブジェクトの動作を同時に制御する。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、２つのオブジェクトを同時に操作することができる。これによって、単純な操作方法で複数のオブジェクトを操作することが可能となり、ゲームの操作性を向上することができる。
【００２８】
第１０の発明によれば、第７動作制御手段は平滑化データに基づいて第１のオブジェクトの動作を制御するとともに、第８動作制御手段は加速度データに基づいて第２のオブジェクトの動作を制御する。すなわち、ゲーム装置は、加速度センサの出力から得られる２つのデータを用いて、互いに異なる２つのオブジェクトの動作を同時に制御する。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、２つのオブジェクトを同時に操作することができる。これによって、単純な操作方法で複数のオブジェクトを操作することが可能となり、ゲームの操作性を向上することができる。
【００２９】
第１１の発明によれば、平滑化手段は、前回に算出された平滑化データと今回に取得された加速度データとを用いて平滑化を行う。これによれば、現時点ですでに取得されているデータのみを用いて平滑化データを算出することができるので、平滑化データをリアルタイムに算出することができ、高い応答性のゲーム操作を実現することができる。
【００３０】
第１２の発明によれば、ゲーム装置は、入力装置の傾きを平滑化データに基づいて算出するとともに、入力装置の動きを加速度データに基づいて算出する。したがって、ゲーム装置は、入力装置の傾きおよび動きという２種類の状態を１つのセンサから得ることができる。つまり、ゲーム装置は、入力装置の傾きおよび動きを同時に検出することができる。
【発明を実施するための最良の形態】
【００３１】
図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、当該ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本発明のゲーム装置およびゲームプログラムについて説明する。
【００３２】
図１において、ゲームシステム１は、家庭用テレビジョン受像機等のスピーカを備えたディスプレイ（以下、モニタと記載する）２に、接続コードを介して接続される据置型ゲーム装置（以下、単にゲーム装置と記載する）３および当該ゲーム装置３に操作データを与えるコントローラ７によって構成される。また、モニタ２の周辺（図では画面の上側）には、２つのマーカ８ａおよび８ｂが設置される。マーカ８ａおよび８ｂは、具体的には赤外ＬＥＤであり、それぞれモニタ２の前方に向かって赤外光を出力する。ゲーム装置３は、接続端子を介して受信ユニット６が接続される。受信ユニット６は、コントローラ７から無線送信される操作データを受信し、コントローラ７とゲーム装置３とは無線通信によって接続される。なお、他の実施形態においてはコントローラ７とゲーム装置３とは有線で接続されてもよい。また、ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着される。ゲーム装置３の上部主面には、当該ゲーム装置３の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置３上部の蓋を開くＯＰＥＮスイッチが設けられている。ここで、プレイヤがＯＰＥＮスイッチを押下することによって上記蓋が開き、光ディスク４の脱着が可能となる。
【００３３】
また、ゲーム装置３には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード５が必要に応じて着脱自在に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ２に表示する。さらに、ゲーム装置３は、外部メモリカード５に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００３４】
コントローラ７は、その内部に備える通信部３６（後述）から受信ユニット６が接続されたゲーム装置３へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて操作データを無線送信する。コントローラ７は、複数の操作ボタンからなる操作部が設けられている。また、後述により明らかとなるが、コントローラ７は、直線方向の加速度を検出する加速度センサ３７（後述）を備えている。加速度センサ３７によって検出された加速度を示すデータは上記操作データの一部としてゲーム装置３へ送信される。ゲーム装置３は、当該加速度を示すデータに基づいてコントローラ７の傾き（姿勢）および動きを算出し、傾きおよび動きに応じた処理を適宜実行することができる。また、コントローラ７は、当該コントローラ７から見た画像を撮像するための撮像情報演算部３５（後述）を備えている。撮像情報演算部３５は、モニタ２の周辺に配置された各マーカ８ａおよび８ｂを撮像対象として、各マーカ８ａおよび８ｂの画像を撮像する。ゲーム装置３は、この画像に基づいた演算処理によってコントローラ７の位置および姿勢に応じた処理を実行することができる。
【００３５】
次に、図２を参照して、ゲーム装置３の構成について説明する。なお、図２は、ゲーム装置３の機能ブロック図である。
【００３６】
図２において、ゲーム装置３は、各種プログラムを実行する例えばリスク（ＲＩＳＣ）ＣＰＵ（セントラルプロセッシングユニット）１０を備える。ＣＰＵ１０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ１３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ１０には、メモリコントローラ１１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２、メインメモリ１３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１４、およびＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）１５が接続される。また、メモリコントローラ１１には、所定のバスを介して、コントローラＩ／Ｆ（インターフェース）１６、ビデオＩ／Ｆ１７、外部メモリＩ／Ｆ１８、オーディオＩ／Ｆ１９、およびディスクＩ／Ｆ２１が接続され、それぞれ受信ユニット６、モニタ２、外部メモリカード５、スピーカ２２、およびディスクドライブ２０が接続されている。
【００３７】
ＧＰＵ１２は、ＣＰＵ１０の命令に基づいて画像処理を行うものあり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ１２は、図示しない画像処理専用のメモリやメインメモリ１３の一部の記憶領域を用いて画像処理を行う。ＧＰＵ１２は、これらを用いてモニタ２に表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ１１およびビデオＩ／Ｆ１７を介してモニタ２に出力する。
【００３８】
メインメモリ１３は、ＣＰＵ１０で使用される記憶領域であって、ＣＰＵ１０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ１３は、ＣＰＵ１０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ１３に記憶されたゲームプログラムや各種データ等がＣＰＵ１０によって実行される。
【００３９】
ＤＳＰ１４は、ゲームプログラム実行時にＣＰＵ１０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ１５が接続される。ＡＲＡＭ１５は、ＤＳＰ１４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ１４は、ＡＲＡＭ１５に記憶されたサウンドデータを読み出し、メモリコントローラ１１およびオーディオＩ／Ｆ１９を介してモニタ２に備えるスピーカ２２に出力させる。
【００４０】
メモリコントローラ１１は、データ転送を統括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。コントローラＩ／Ｆ１６は、例えば４つのコントローラＩ／Ｆで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置３とを通信可能に接続する。例えば、受信ユニット６は、上記コネクタと嵌合し、コントローラＩ／Ｆ１６を介してゲーム装置３と接続される。上述したように受信ユニット６は、コントローラ７からの操作データを受信し、コントローラＩ／Ｆ１６を介して当該操作データをＣＰＵ１０へ出力する。なお、他の実施形態においては、ゲーム装置３は、受信ユニット６に代えて、コントローラ７から送信されてくる操作データを受信する受信モジュールをその内部に設ける構成としてもよい。この場合、受信モジュールが受信した操作データは、所定のバスを介してＣＰＵ１０に出力される。ビデオＩ／Ｆ１７には、モニタ２が接続される。外部メモリＩ／Ｆ１８には、外部メモリカード５が接続され、その外部メモリカード５に設けられたバックアップメモリ等とアクセス可能となる。オーディオＩ／Ｆ１９にはモニタ２に内蔵されるスピーカ２２が接続され、ＤＳＰ１４がＡＲＡＭ１５から読み出したサウンドデータや、ディスクドライブ２０から直接出力されるサウンドデータがスピーカ２２から出力される。ディスクＩ／Ｆ２１には、ディスクドライブ２０が接続される。ディスクドライブ２０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置３のバスやオーディオＩ／Ｆ１９に出力する。
【００４１】
次に、図３〜図８を参照して、コントローラ７について説明する。図３〜図４は、コントローラ７の外観構成を示す斜視図である。図３Ａは、コントローラ７の上側後方から見た斜視図であり、図３Ｂは、コントローラ７を下側後方から見た斜視図である。図４は、コントローラ７を前方から見た図である。
【００４２】
図３Ａ〜図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すｚ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ７を用いることによって、それに設けられたボタンを押下すること、コントローラ７自体の傾き（重力方向に対する角度）を変えること、および、コントローラ７自体の位置や向きを変えることによってゲーム操作を行うことができる。例えば、プレイヤは、コントローラ７の傾きを変化させたり、コントローラ７を動かしたりする（例えば、コントローラ７を上下方向に振る）ことによって、ゲーム空間に登場する操作対象に対する操作を行うことができる。また、例えば、プレイヤは、長手方向を軸としてコントローラ７を回転させたり、コントローラ７によって指し示される画面上の位置を変えたりする操作によって、操作対象に対する操作を行うことができる。ここで、「コントローラ７によって指し示される画面上の位置」とは、理想的には、コントローラ７の前端部から上記長手方向に延ばした直線とモニタ２の画面とが交わる位置であるが、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置３によって算出することができればよい。以下では、コントローラ７によって指し示される画面上の位置を「コントローラ７の指示位置」と呼ぶ。また、コントローラ７（ハウジング３１）の長手方向を、「コントローラ７の指示方向」と呼ぶことがある。
【００４３】
ハウジング３１には、複数の操作キーが設けられる。ハウジング３１の上面には、十字キー３２ａ、Ｘボタン３２ｂ、Ｙボタン３２ｃ、Ａボタン３２ｄ、セレクトスイッチ３２ｅ、メニュースイッチ３２ｆ、およびスタートスイッチ３２ｇが設けられる。一方、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作キー（ボタン）は、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないためここでは詳細な説明を省略する。また、ハウジング３１の上面には、遠隔からゲーム装置３本体の電源をオン／オフするための電源スイッチ３２ｈが設けられる。
【００４４】
また、コントローラ７は撮像情報演算部３５（図５Ｂ）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射口３５ａが設けられる。一方、ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、例えば３２ピンのエッジコネクタであり、コントローラ７に他の機器を接続するために利用される。また、ハウジング３１上面の後面側には複数のＬＥＤ３４が設けられる。ここで、コントローラ７には、他のコントローラ７と区別するためにコントローラ種別（番号）が付与される。ＬＥＤ３４は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７からゲーム装置３へ操作データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ３４のいずれか１つが点灯する。
【００４５】
次に、図５Ａおよび図５Ｂを参照して、コントローラ７の内部構造について説明する。図５Ａおよび図５Ｂは、コントローラ７の内部構造を示す図である。なお、図５Ａは、コントローラ７の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂは、コントローラ７の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図５Ｂに示す斜視図は、図５Ａに示す基板３００を裏面から見た斜視図となっている。
【００４６】
図５Ａにおいて、ハウジング３１の内部には基板３００が固設されており、当該基板３００の上主面上に操作キー３２ａ〜３２ｈ、加速度センサ３７、ＬＥＤ３４、水晶振動子４６、無線モジュール４４、およびアンテナ４５等が設けられる。そして、これらは、基板３００等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。また、無線モジュール４４およびアンテナ４５によって、コントローラ７がワイヤレスコントローラとして機能する。なお、水晶振動子４６は、後述するマイコン４２の基本クロックを生成する。
【００４７】
一方、図５Ｂにおいて、基板３００の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ７の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１によって構成されおり、それぞれ基板３００の下主面に取り付けられる。また、基板３００の下主面上の後端縁にコネクタ３３が取り付けられる。そして、撮像情報演算部３５の後方であって基板３００の下主面上にＡボタン３２ｉが取り付けられていて、それよりさらに後方に電池４７が収容される。電池４７とコネクタ３３との間の基板３００の下主面上には、バイブレータ４８が取り付けられる。このバイブレータ４８は、例えば振動モータやソレノイドであってよい。バイブレータ４８が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームを実現することができる。
【００４８】
なお、図３Ａ〜図５Ｂに示したコントローラ７の形状や、各操作キーの形状、数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができることは言うまでもない。また、コントローラ７における撮像情報演算部３５の位置（撮像情報演算部３５の光入射口３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。このとき、上記「コントローラ７の指示方向」は、光入射口に垂直な方向、すなわち、撮像素子４０の撮像方向となる。
【００４９】
図６は、コントローラ７の構成を示すブロック図である。コントローラ７は、操作部３２（各操作キー）、撮像情報演算部３５、通信部３６、および加速度センサ３７を備えている。なお、本実施形態において、コントローラ７は、加速度検出手段（加速度センサ３７）を備えていればよく、操作部３２および撮像情報演算部３５を備えていない構成であってもよい。
【００５０】
加速度センサ３７は、コントローラ７の加速度（重力加速度を含む）を検出する、すなわち、コントローラ７に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度の値を検出する。例えば、２軸または３軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度（直線加速度）をそれぞれ検出する。例えば、この３軸または２軸の加速度センサ３７は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。
【００５１】
本実施形態では、加速度センサ３７は、コントローラ７を基準とした上下方向（図３Ａおよび図３Ｂに示すｙ軸方向）、左右方向（図３Ａおよび図３Ｂに示すｘ軸方向）および前後方向（図３Ａおよび図３Ｂに示すｚ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ７を基準に設定されるｘｙｚ座標系における３次元のベクトルとして表される。以下では、加速度センサ３７によって検出される各軸の加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【００５２】
図７および図８は、コントローラ７の傾きと加速度センサの出力との関係を示す図である。図７は、重力加速度（図７に示すベクトルＶａ）がコントローラ７を基準とした下方向を向く状態を示している。なお、図７および図８では、コントローラ７は静止した状態にあるものとする。加速度センサ３７が静止した状態においては、コントローラ７には常に重力（重力加速度）が加わっているので、加速度ベクトルＶａは重力加速度のみを示すものとなる。例えば、図７に示す状態においては加速度ベクトルＶａはｙ軸負方向を向く。つまり、加速度センサ３７のｙ軸に１Ｇの重力加速度が加わり、ｘ軸およびｚ軸の加速度はほぼ０となる。一方、図８は、図７に示す状態から、ｚ軸を中心として回転させるようにコントローラ７を傾けた状態を示している。図８に示す状態では、加速度ベクトルＶａの向きは図７に示す状態から変化し、加速度ベクトルＶａのｘ座標値およびｙ座標値が０でない値となり、ｚ軸を中心として回転させているのでｚ座標値は０となる。このように、加速度センサ３７によって検出される加速度ベクトルの向きはコントローラ７の姿勢によって変化するので、当該加速度ベクトルを用いることによってコントローラ７の傾き（姿勢）を算出することができる。
【００５３】
加速度センサ３７が検出した加速度（加速度ベクトル）を示すデータ（加速度データ）は、通信部３６へ出力される。なお、本実施形態では、コントローラ７の通信部３６は、逐次（具体的には１フレーム時間毎）に加速度データをゲーム装置３へ出力する。ゲーム装置３は、この加速度データからコントローラ７の傾き（姿勢）および動きを算出し、当該傾きおよび動きに応じたゲーム処理を実行する。なお、加速度センサ３７は、各軸に沿った直線成分の加速度を検出するものであるので、ゲーム装置３は、コントローラ７の傾きを直接検出することはできない。このため、加速度センサ３７を搭載したデバイスの傾きは、加速度センサの各軸毎に検出される加速度に所定の演算処理を施すことによって算出される。
【００５４】
また、本実施形態においては、コントローラ７が静止している状態で加速度センサ３７によって検出される加速度の大きさ、すなわち、加速度センサ３７によって検出される加速度が重力加速度のみを表すときの当該加速度の大きさを、１と表す。例えば、図７に示す状態において検出される加速度ベクトルＶａの各成分の値は、（ｘ，ｙ，ｚ）＝（０，−１，０）となる。
【００５５】
図６の説明に戻り、撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ７の動きでも追跡して解析することができる。
【００５６】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ７の前方から入射する光から赤外線のみを通過させる。ここで、モニタ２の表示画面近傍に配置されるマーカ８ａおよび８ｂは、モニタ２の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ３８を設けることによってマーカ８ａおよび８ｂの画像をより正確に撮像することができる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ３９が集光した赤外線を撮像する。したがって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置を算出する。
【００５７】
撮像画像が入力されると、画像処理回路４１は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。ここで、所定条件とは、撮像対象の画像（対象画像）を特定するための条件であり、所定条件の具体的な内容は、輝度が所定値以上の領域（高輝度領域）であり、かつ、領域の大きさが所定範囲内の大きさであることである。なお、所定条件は撮像対象を特定するための条件であればよく、他の実施形態においては、画像の色に関する条件を含んでいてもよい。
【００５８】
対象画像の位置を算出する際、まず、画像処理回路４１は、撮像画像の領域から上記高輝度領域を対象画像の候補として特定する。撮像画像の画像データにおいて対象画像は高輝度領域として現れるからである。次に、画像処理回路４１は、特定された高輝度領域の大きさに基づいて、その高輝度領域が対象画像であるか否かを判定する判定処理を行う。撮像画像には、対象画像である２つのマーカ８ａおよび８ｂの画像の他、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれている場合がある。この場合、マーカ８ａおよび８ｂの画像以外の画像も高輝度領域として現れてしまう。上記の判定処理は、対象画像であるマーカ８ａおよび８ｂの画像とそれ以外の画像とを区別し、対象画像を正確に特定するための処理である。具体的には、当該判定処理においては、特定された高輝度領域が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度領域が所定範囲内の大きさである場合、当該高輝度領域は対象画像を表すと判定され、高輝度領域が所定範囲内の大きさでない場合、当該高輝度領域は対象画像以外の画像を表すと判定される。
【００５９】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度領域について、画像処理回路４１は当該高輝度領域の位置を算出する。具体的には、当該高輝度領域の重心位置を算出する。なお、重心位置は撮像素子４０の解像度よりも詳細なスケールで算出することが可能である。例えば、撮像素子４０によって撮像された撮像画像の解像度が１２６×９６である場合でも、重心位置を１０２４×７６８のスケールで算出することが可能である。このとき、重心位置の座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。
【００６０】
以上のようにして、画像処理回路４１は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。画像処理回路４１は、算出された座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。この座標はコントローラ７自体の向き（姿勢）や位置に対応して変化するので、ゲーム装置３はこの座標値を用いてコントローラ７の向きや位置を算出することができる。なお、本実施形態では、上記座標のデータはゲーム処理に用いられないので、コントローラ７は撮像情報演算部３５を備えていない構成であってもよい。
【００６１】
操作部３２は、上述した十字キー３２ａ等の各操作キー３２ａ〜３２ｉに相当し、各操作キー３２ａ〜３２ｉに対する入力状態（各操作キー３２ａ〜３２ｉが押下されたか否か）を示すデータを通信部３６のマイコン４２へ出力する。
【００６２】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理の際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータを無線送信する無線モジュール４４を制御する。
【００６３】
操作部３２および撮像情報演算部３５および加速度センサ３７からマイコン４２へ出力されたデータは、一時的にメモリ４３に格納される。ここで、通信部３６から受信ユニット６への無線送信は所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。マイコン４２は、受信ユニット６への送信タイミングが到来すると、メモリ４３に格納されているデータを操作データとして無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ７から送信される。微弱電波信号はゲーム装置３側の受信ユニット６で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。
【００６４】
上記コントローラ７を用いることによって、プレイヤは、各操作キーを押下する従来の一般的なゲーム操作に加えて、コントローラ７の姿勢を変化させたり、コントローラ７自身の位置を動かしたり、コントローラ７を回転させたりするというゲーム操作を行うことができる。
【００６５】
図９は、コントローラ７を用いてゲーム操作するときの状態を概説する図解図である。図９に示すように、ゲームシステム１でコントローラ７を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ７を把持する。ここで、マーカ８ａおよび８ｂは、モニタ２の画面の横方向と平行に、画面の上側に配置されている。なお、他の実施形態においては、マーカ８ａおよび８ｂの配置位置、ならびに、２つのマーカ８ａおよび８ｂを配置する向きは任意であり、例えば、マーカ８ａおよび８ｂが画面の下側に配置されてもよいし、２つのマーカ８ａおよび８ｂが画面の縦方向に沿って配置されてもよい。本実施形態では、プレイヤは、コントローラ７を把持し、コントローラ７の傾きを変化させたり、コントローラ７を上下に動かしたりすることによってゲーム操作を行う。
【００６６】
以下、上述したゲームシステム１を用いて行われるゲームの具体例について説明する。図１０は、本実施形態においてモニタ２に表示されるゲーム画面の一例を示す図である。図１０に示すように、モニタ２には、鳥を模したオブジェクト５１が表示される。本実施形態では、画面の奥に向かってオブジェクト５１が移動するゲーム画像が表示される場合を例として説明するが、他の実施形態においては、オブジェクトが画面の左右方向または上下方向に移動するとともに、背景の画像が左右方向または上下方向にスクロールするゲーム画像を表示するようにしてもよい（後述する図２１参照）。
【００６７】
本ゲームは、このオブジェクト５１を操作して遊ぶゲームである。ゲームのプレイヤは、ゲーム操作によってオブジェクト５１に２種類の動作を行わせることが可能である。第１の動作は、オブジェクト５１自身の傾きを変化させる動作である。第２の動作は、オブジェクト５１の翼を羽ばたかせる動作である。プレイヤは、これら２種類の動作を行わせることによって、２次元または３次元の仮想のゲーム空間である空中においてオブジェクト５１を移動させる。
【００６８】
図１１は、オブジェクト５１が第１の動作を行っている場合のゲーム画面の一例を示す図である。図１１に示す矢印のように、オブジェクト５１は、画面に垂直な軸を中心に回転するように傾きを変化させることが可能である。ゲーム装置３は、コントローラ７の長手方向を軸とした回転に関する傾きに応じてオブジェクト５１の第１の動作を制御する。例えば、コントローラ７の上面が上方向を向く状態（図７に示す状態）から、ｚ軸負方向から正方向の向きに見て右回りに所定角度だけコントローラ７を回転させた場合、図１１に示すように、右回りに所定角度だけ回転するようにオブジェクト５１の姿勢が制御される。上述した図７および図８において示したように、コントローラ７が静止した状態にある場合、コントローラ７の傾きは、加速度センサ３７によって検出される加速度ベクトルに基づいて算出することができる。なお、本実施形態の説明では、「コントローラ７の回転」とは「コントローラ７の長手方向を軸とした回転」を指し、「コントローラ７の傾き」とは「コントローラ７の長手方向を軸とした回転量に関する傾き」を指すものとする。
【００６９】
図１２は、オブジェクト５１が第２の動作を行っている場合のゲーム画面の一例を示す図である。図１２に示すように、オブジェクト５１は、翼を上下に羽ばたかせる動作を行うことが可能である（図１２に示す矢印参照）。ゲーム装置３は、コントローラ７の上下方向（ｙ軸方向）に関する動きに応じてオブジェクト５１の第２の動作を制御する。コントローラ７の上下方向に関する動きは、上記加速度ベクトルから算出可能である。以下、加速度ベクトルからコントローラ７の上下方向に関する動きを算出する方法を説明する。
【００７０】
図１３および図１４は、コントローラ７の動きと加速度ベクトルとの関係を示す図である。図１３においては、コントローラ７は静止されておらず、ある大きさの加速度で上方向に動かされている。このとき、加速度センサ３７の検出部には、重力に加えて下向きの慣性力が加えられる。そのため、加速度センサ３７によって検出される加速度ベクトルＶａは、静止状態において検出される加速度ベクトルよりも大きさが大きくなる。具体的には、図１３に示す状態において検出される加速度ベクトルＶａのｙ成分は、−１よりも小さい値となる。
【００７１】
一方、図１４においては、コントローラ７は、ある大きさの加速度で下方向に動かされている。このとき、加速度センサ３７の検出部には、重力に加えて上向きの慣性力が加えられる。そのため、加速度センサ３７によって検出される加速度ベクトルＶａは、静止状態において検出される加速度ベクトルよりも大きさが小さくなったり、場合によってはその向きが逆になったりする。具体的には、図１４に示す状態において検出される加速度ベクトルＶａのｙ成分は、−１よりも大きい値となる。図１４においては、上向きの慣性力の大きさが重力よりも大きいために、加速度ベクトルＶａのｙ成分は正の値となっている。
【００７２】
以上のように、コントローラ７の上下方向に関する移動に応じて加速度ベクトルＶａのｙ成分の値が変化するので、ゲーム装置３は、加速度ベクトルＶａに基づいてコントローラ７の上下方向の動きを算出することができる。本実施形態では、ゲーム装置３は、コントローラ７の上下方向の動きに応じてオブジェクト５１が羽ばたくように翼の動きを制御する。したがって、プレイヤがコントローラ７を上下に振ると、オブジェクト５１の翼が上下に動かされる（図１２に示す矢印参照）。そして、オブジェクト５１が羽ばたき動作を行う場合、ゲーム装置３は、オブジェクト５１を上昇させる。なお、オブジェクト５１が羽ばたき動作を行っていない間、ゲーム装置３は、オブジェクト５１をゆっくりと下降させる。したがって、プレイヤは、オブジェクト５１が落下してしまわないように、適宜のタイミングでコントローラ７の上下方向に動かすことによって、オブジェクト５１に羽ばたき動作を行わせる。
【００７３】
上述したように、ゲーム装置３は、コントローラ７の傾きを変化させる操作と、コントローラ７を上下に動かす操作とに従って、オブジェクト５１の動作を制御する。ここで、図７および図８において示したように、コントローラ７が静止状態にある場合、加速度ベクトルからコントローラ７の傾きを算出することは可能である。しかし、コントローラ７が静止状態にない場合、すなわち、コントローラ７が上下に動かされている場合、加速度ベクトルをそのまま用いるとコントローラ７の傾きを正確に算出することはできない。例えば、図１４に示す状態では、コントローラ７の上面が上方向を向いているにもかかわらず加速度ベクトルＶａは上方向を向いており、本来の向きとは逆になっている。このとき、ゲーム装置３は、コントローラ７の傾きを正確に算出することはできず、コントローラ７の傾きを正しい向きとは逆向きに算出してしまう。コントローラ７の傾きは、コントローラ７に加わる重力加速度の向きを検出することによって算出することが可能となる。しかし、コントローラ７が動かされている時にはコントローラ７に慣性力が加わるので、コントローラ７に加わる重力加速度のみを検出することはできず、コントローラ７の傾きを正確に算出することができない。
【００７４】
そこで、本実施形態では、ゲーム装置３は、逐次検出される加速度の値を平滑化し、平滑化によって得られた値を用いてコントローラ７の傾きを算出する。ここで、コントローラ７の上下方向に関する動きは、加速度信号（逐次検出される加速度の値を時系列に並べた信号）の激しく変動する成分として現れる。すなわち、コントローラ７を上下方向に動かす頻度とほぼ同様の頻度で加速度が変動する。一方、コントローラ７の傾きは、加速度信号の緩やかに変動する成分として現れる。したがって、加速度信号から上記激しく変動する成分を除去することによって、コントローラ７の傾きに対応する成分を抽出することができる。すなわち、ゲーム装置３は、加速度信号を平滑化した値を用いることによって、コントローラ７の傾きを正確に算出することができる。
【００７５】
図１５は、加速度センサ３７によって検出された加速度の値と、当該検出された加速度を平滑化した値とを示す図である。なお、本実施形態では加速度ベクトルのｚ成分の値は無関係であるので、図１５においては加速度ベクトルの値を２次元のｘｙ座標によって表している。図１５に示す点線は、その上面が上方向を向いた状態で静止状態にあったコントローラ７を上下方向に振りながら、ｚ軸負方向から正方向の向きに見て右回りに所定角度だけ、当該コントローラ７をｚ軸周りに次第に回転させた場合に検出される加速度信号（加速度ベクトルの推移）を示している。つまり、加速度ベクトルは、ｘｙ座標系の原点を始点とし、図１５に示す点線上を終点とするように推移する。また、図１５に示す実線は、点線で示す加速度信号を理想的に平滑化した信号を示している。上記の場合にはコントローラ７が上下に振られるので、検出される加速度信号そのものの値は、図１５に示す点線のように、ｙ成分の値が激しく変動するように変化する。一方、コントローラ７はｚ軸周りに次第に回転させられるので、回転による加速度信号のｘｙ成分の値の変動は、コントローラ７の振りによるｙ成分の変動よりも緩やかに変化していく。したがって、点線で示される加速度信号を平滑化して激しく変動する成分を除去することによって、実線で示される信号を得ることができる。なお、本実施形態では、ｘ成分およびｙ成分からなる２次元の加速度ベクトルを平滑化しているので、平滑化された結果も２次元のベクトルとなる。以下では、平滑化されたベクトルを平滑化ベクトルと呼ぶ。上記実線で示される信号は、ｘｙ座標系の原点を始点とし、当該実線上を終点とする平滑化ベクトルの推移を示している。つまり、上記実線は、コントローラ７の傾きの変化を表している。このように、加速度センサ３７によって検出された加速度信号を平滑化することによって、コントローラ７の傾きの変化を表す信号を得ることができる。
【００７６】
以上のように、本実施形態によれば、ゲーム装置３は、加速度センサ３７によって検出された加速度の値をそのまま用いてコントローラ７の動きを算出するとともに、当該検出された加速度を平滑化した値を用いてコントローラ７の傾きを算出する。これによれば、ゲーム装置３は、加速度センサ３７によって検出された加速度ベクトルから、コントローラ７の動きおよび傾きを同時に算出することができる。したがって、ゲーム装置３は、１つのセンサによって、コントローラ７の傾きおよび動きという２種類の状態を同時に得ることができる。
【００７７】
次に、本実施形態においてゲーム装置３で実行されるプログラム処理について説明する。まず、ゲーム処理において用いられる主なデータについて図１６を用いて説明する。図１６は、ゲーム装置３のメインメモリ１３に記憶される主なデータを示す図である。図１６に示すように、メインメモリ１３には、ゲームプログラム６１、操作データ６２、およびゲーム処理用データ６３等が記憶される。なお、メインメモリ１３には、図１６に示すデータの他、ゲームに登場するオブジェクトの画像データ等、ゲーム処理に必要なデータが記憶される。
【００７８】
ゲームプログラム６１は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリ１３に記憶される。ゲームプログラム６１には、後述するゲーム処理の実行に必要なプログラムが含まれている。
【００７９】
操作データ６２は、コントローラ７からゲーム装置３へ送信されてきて、メインメモリ１３に記憶される。操作データ６２には、加速度データ６２１が含まれる。加速度データ６２１は、加速度センサ３７によって検出された加速度ベクトルＶａを示すデータである。なお、操作データ６２には、加速度データ６２１の他、撮像画像内における撮像対象（マーカ８ａおよび８ｂ）の位置を示すデータや、操作部３２の各ボタンに対して行われた操作内容を示すデータが含まれていてもよい。
【００８０】
ゲーム処理用データ６３は、後述するゲーム処理において用いられるデータである。ゲーム処理用データ６３は、平滑化データ６３１、オブジェクト姿勢データ６３２、オブジェクト速度データ６３３、オブジェクト位置データ６３４、翼角データ６３５、前回翼角データ６３６、および翼速度データ６３７を含む。
【００８１】
平滑化データ６３１は、逐次検出される加速度ベクトルからなる加速度信号を平滑化することによって得られる値を示すデータである。ここでは、平滑化データ６３１は、加速度ベクトルのｘ成分およびｙ成分を平滑化することによって得られる２次元のベクトル（平滑化ベクトル）である。平滑化データ６３１は、加速度データが取得される度に算出され、取得された加速度データと、前回に算出された平滑化データとに基づいて算出される。
【００８２】
データ６３２〜６３７は、オブジェクト５１に関するパラメータである。図１７は、オブジェクト５１に関する各パラメータを示す図である。オブジェクト姿勢データ６３２は、オブジェクト５１の姿勢を示すデータである。オブジェクト５１の姿勢は、オブジェクト５１の上方向が向いている方向を表すベクトルＶｕ（図１７参照）によって表される。このベクトルＶｕは、画面上の位置を示すＸＹ座標系におけるベクトルである。なお、本実施形態では、ＸＹ座標系は、画面の右方向をＸ軸正方向とし、画面の上方向をＹ軸正方向とする座標系である（図１７参照）。
【００８３】
オブジェクト速度データ６３３は、オブジェクト５１の速度、すなわち、オブジェクト５１が画面上において単位時間（１フレーム時間）当たりに移動する移動量および移動方向を表すベクトルを示すデータである。具体的には、オブジェクト速度データ６３３は、上記ＸＹ座標系における２次元のベクトルを示す。また、オブジェクト位置データ６３４は、画面上におけるオブジェクト５１の位置Ｐ（図１７参照）を示すデータである。具体的には、オブジェクト位置データ６３４は、上記ＸＹ座標系における座標値を示す。オブジェクト位置データ６３４は、オブジェクト速度データ６３３に基づいて算出される。
【００８４】
翼角データ６３５は、オブジェクト５１の翼の角度θを示すデータである。図１７に示すように、オブジェクト５１の翼の角度θは、オブジェクト５１を基準として翼が真横を向いている状態を０°とし、翼が真横よりも上側に向いた状態を正とし、翼が真横よりも上側に向いた状態を負とする角度で表される。また、翼の角度θは、−９０°≦θ≦９０°の範囲内の値をとる。また、前回翼角データ６３６は、前回に算出された翼角データ６３５である。
【００８５】
翼速度データ６３７は、オブジェクト５１の翼の角度の単位時間（１フレーム時間）当たりの変化量を示すデータである。具体的には、翼速度データ６３７は、今回算出された翼の角度と、前回に算出された翼の角度との差分Δθを示す。
【００８６】
次に、ゲーム装置３において行われる処理の詳細を、図１８〜図２０を用いて説明する。図１８は、ゲーム装置３において実行される処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ１３等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリ１３に読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１８に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【００８７】
まず、ステップＳ１において、以降の処理において用いられるデータの初期化処理が実行される。すなわち、ＣＰＵ１０は、平滑化データ６３１、オブジェクト速度データ６３３、オブジェクト位置データ６３４、および前回翼角データ６３６の内容を次のように設定してメインメモリ１３に記憶する。平滑化データ６３１の内容は、ｘｙ座標系において（０，−１）を表す２次元ベクトルに設定される。オブジェクト速度データ６３３の内容は、ＸＹ座標系において（０，０）を表す２次元ベクトルに設定される。オブジェクト位置データ６３４の内容は、ＸＹ座標系における予め定められた初期位置を示す座標値に設定される。前回翼角データ６３６の内容は、０°に設定される。ステップＳ１の実行後、ステップＳ２〜Ｓ６の処理ループが１フレーム毎に繰り返されることによって、ゲームが進行していく。
【００８８】
ステップＳ２において、ＣＰＵ１０は、コントローラ７から操作データを取得する。すなわち、コントローラ７は所定時間間隔（例えば、１フレーム時間間隔以内）で操作データをゲーム装置３へ送信してくるので、ＣＰＵ１０は、送信されてきた操作データをメインメモリ１３に記憶する。この操作データには、少なくとも上記加速度データが含まれている。ＣＰＵ１０は、加速度データをメインメモリ１３に記憶する。なお、本実施形態においてステップＳ２の処理は１フレーム時間毎に実行されるので、ゲーム装置３は、加速度データを逐次取得することができる。
【００８９】
続くステップＳ３において、ステップＳ２で取得された加速度データに基づいて平滑化ベクトルが算出される。本実施形態では、ＣＰＵ１０は、平滑化ベクトルは、ステップＳ２で取得された加速度データ６２１により示される加速度ベクトルと、前回の平滑化ベクトルとを用いて算出される。なお、前回の平滑化ベクトルは、ステップＳ３の実行直前の時点でメインメモリ１３に記憶されている平滑化データ６３１により示されるベクトルである。具体的には、平滑化ベクトル（ｂｘ，ｂｙ）は次式（１）に従って算出される。
ｂｘ＝ｂｘ’＋（ａｘ−ｂｘ’）×ｋ１
ｂｙ＝ｂｙ’＋（ａｙ−ｂｙ’）×ｋ１  …（１）
上式（１）において、変数ａｘは加速度ベクトルのｘ成分の値であり、変数ａｙは加速度ベクトルのｙ成分の値である。変数ｂｘ’は前回の平滑化ベクトルのｘ成分の値であり、変数ｂｙ’は前回の平滑化ベクトルのｙ成分の値である。定数ｋ１の値は予め定められている。定数ｋ１は、コントローラ７の上下方向の動きに応じた加速度ベクトルの変化を除去すべく、例えばｋ１＝０．０３に設定される。ステップＳ３において算出された平滑化ベクトル（ｂｘ，ｂｙ）を示すデータは、平滑化データとしてメインメモリ１３に記憶される。
【００９０】
図１９は、平滑化ベクトルの算出方法を説明するための図である。図１９において、ベクトルＶａは加速度ベクトル（ｘ成分およびｙ成分のみ）であり、ベクトルＶｂ’は前回の平滑化ベクトルである。このとき、上式（１）から、算出すべき平滑化ベクトルはベクトルＶｂと算出される。図１９に示すように、平滑化ベクトルＶｂは、前回の平滑化ベクトルＶｂ’を加速度ベクトルＶａの方向に所定の割合（ｋ）で近づけたベクトルとなる。具体的には、平滑化ベクトルＶｂは、原点を始点とし、前回の平滑化ベクトルＶｂ’の終点と加速度ベクトルＶａの終点とを結ぶ線分をｋ：（１−ｋ）に内分する点Ｐを終点とするベクトルとなる。図１９に示すように、本実施形態では、加速度ベクトルの変化に追従して変化する平滑化ベクトルを算出することによって、加速度センサ３７により検出された加速度を平滑化する。
【００９１】
図１８の説明に戻り、ステップＳ３の次のステップＳ４において、オブジェクト制御処理が実行される。オブジェクト制御処理は、ステップＳ２およびＳ３で得られた加速度データおよび平滑化データに基づいてオブジェクト５１の動作を制御するゲーム処理である。以下、図２０を参照してオブジェクト制御処理の詳細について説明する。
【００９２】
図２０は、図１８に示すオブジェクト制御処理（ステップＳ４）の詳細を示すフローチャートである。オブジェクト制御処理においては、まずステップＳ１１において、ＣＰＵ１０はオブジェクト５１の姿勢を算出する。オブジェクト５１の姿勢は、コントローラ７の姿勢に基づいて、すなわち、上記平滑化データ６３１に基づいて算出される。具体的には、ＣＰＵ１０は、オブジェクト５１の姿勢を示すベクトルＶｕ＝（ＵＸ，ＵＹ）を次式（２）に従って算出する。
ＵＸ＝ｂｘ
ＵＹ＝−ｂｙ  …（２）
上式（２）において、変数ｂｘは、平滑化データ６３１により示される平滑化ベクトルのｘ成分の値であり、変数ｂｙは当該平滑化ベクトルのｙ成分の値である。上式（２）によって、ｘｙ座標系における方向を示す平滑化ベクトルがＸＹ座標系における方向を示すベクトルＶｕに変換されたこととなる。ステップＳ１１において算出されたベクトルＶｕを示すデータは、オブジェクト姿勢データ６３２としてメインメモリ１３に記憶される。
【００９３】
続くステップＳ１２において、ＣＰＵ１０は、オブジェクト５１の翼の角度を算出する。翼の角度θは、コントローラ７の上下方向の動きに基づいて、すなわち、上記加速度データ６２１に基づいて算出される。具体的には、ＣＰＵ１０は、翼の角度θを次式（３）に従って算出する。
θ＝（ａｙ−ｂｙ）×ｋ２  …（３）
上式（３）において、変数ａｙは、加速度データ６２１により示される加速度ベクトルのｙ成分の値であり、変数ｂｙは、平滑化データ６３１により示される平滑化ベクトルのｙ成分の値である。また、定数ｋ２は予め定められている。定数ｋ２の値は、翼の角度θが−９０°≦θ≦９０°の範囲の値をとるように、変数ａｙの取りうる範囲（加速度センサ３７の測定可能範囲）を考慮して定められる。
【００９４】
なお、加速度ベクトルのｙ成分そのもの（変数ａｙ）には、コントローラ７の振りに起因する成分と、コントローラ７の回転に起因する成分（変数ｂｙ）とが含まれている。上式（３）においては、加速度ベクトルのｙ成分のうちから、コントローラ７の振りに起因する成分を抽出するために、加速度ベクトルのｙ成分ａｙと平滑化ベクトルのｙ成分ｂｙとの差分を算出している。これによって、コントローラ７の振りに起因する成分のみを抽出することができるので、コントローラ７の動き（振り）をより正確に算出することができる。また、上記差分を用いて翼の角度θを算出することによって、コントローラ７が静止状態となった時点（すなわち、ａｙ＝ｂｙとなる時点）ではθ＝０となる。これによって、コントローラ７が静止した状態ではオブジェクト５１の翼は左右に水平な傾きとなるので、オブジェクト５１の動作をより自然に表現することができる。なお、他の実施形態においては、上式（３）において、上記差分（ａｙ−ｂｙ）に代えて加速度ベクトルそのもの（変数ａｙ）を用いるようにしてもよい。つまり、オブジェクトの翼の角度θ（ひいては、角度θに基づいて決められるオブジェクトの速度または位置）は、加速度ベクトルのみに基づいて算出されてもよい。
【００９５】
ステップＳ１２で算出された翼の角度θを示すデータは、翼角データ６３５としてメインメモリ１３に記憶される。このとき、ステップＳ１３において翼速度を算出する際に用いる目的で、更新前の翼角データ６３５の内容は、新たな前回翼角データ６３６としてメインメモリ１３に記憶される。
【００９６】
続くステップＳ１３において、ＣＰＵ１０は、オブジェクト５１の翼の速度を算出する。翼の速度Δθは、翼角データ６３５により示される翼の角度θと、前回翼角データ６３６により示される翼の角度θ’とに基づいて算出される。ＣＰＵ１０は、翼の速度Δθを次式（４）に従って算出する。
Δθ＝θ−θ’  …（４）
ステップＳ１３で算出された翼の速度Δθを示すデータは、翼速度データ６３７としてメインメモリ１３に記憶される。
【００９７】
ステップＳ１３の次に、ステップＳ１４〜Ｓ１６の一連の処理によってオブジェクト５１の速度が決定される。まず、ステップＳ１４において、ＣＰＵ１０は、オブジェクト５１の速度を算出する。なお、ステップＳ１４で算出される速度は、仮の速度であり、後述するステップＳ１６において必要に応じて補正されることがある。ステップＳ１４において、オブジェクト５１の速度は、前回のオブジェクトの速度に基づいて算出される。なお、前回のオブジェクトの速度は、ステップＳ１４の直前の時点でメインメモリ１３に記憶されているオブジェクト速度データ６３３により示される。ＣＰＵ１０は、オブジェクト５１の仮の速度Ｖ”＝（ＶＸ”，ＶＹ”）を次式（５）に従って算出する。
ＶＸ”＝ＶＸ’×ｋ３
ＶＹ”＝ＶＹ’×ｋ３＋ｇ  …（５）
上式（５）において、変数ＶＸ’は、前回のオブジェクトの速度を示すベクトルのＸ成分の値であり、変数ＶＹ’は、前回のオブジェクトの速度を示すベクトルのＹ成分の値である。また、定数ｋ３および定数ｇは予め定められている。定数ｋ３は、前回の速度が減衰されるように、０＜ｋ３＜１の範囲で設定される。定数ｇは、仮想の重力によってオブジェクト５１が画面の下方向に移動するように、ｇ＜０の範囲で設定される。ステップＳ１４で算出されたオブジェクト５１の速度Ｖを示すデータは、オブジェクト速度データ６３３としてメインメモリ１３に記憶される。
【００９８】
続くステップＳ１５において、ＣＰＵ１０は、オブジェクト５１の翼が下方に移動しているか否かを判定する。ステップＳ１５の判定は、翼速度データ６３７により示される翼の速度Δθに基づいて行われる。すなわち、翼の速度Δθが負の値であれば、オブジェクト５１の翼が下方に移動していると判定され、翼の速度Δθが０または正の値であれば、オブジェクト５１の翼が下方に移動していないと判定される。ステップＳ１５の判定の結果、オブジェクト５１の翼が下方に移動していると判定される場合にはステップＳ１６の処理が実行される。ステップＳの処理が実行される場合、ステップＳ１４で算出された仮の速度が補正されて、補正後の速度がオブジェクト５１の速度に決定されることとなる。一方、オブジェクト５１の翼が上方に移動していると判定される場合にはステップＳ１６の処理がスキップされてステップＳ１７の処理が実行される。ステップＳ１６の処理がスキップされる場合、ステップＳ１４で算出された仮の速度がそのままオブジェクト５１の速度に決定される。
【００９９】
ステップＳ１６においては、ステップＳ１４で算出されたオブジェクト５１の仮の速度が補正される。仮の速度は、コントローラ７の上下方向の動きに基づいて、具体的には、翼速度データ６３７により示される翼の速度Δθに基づいて補正される。具体的には、ＣＰＵ１０は、次式（６）に従って補正後の速度Ｖ＝（ＶＸ，ＶＹ）を算出する。
ＶＸ＝ＶＸ”＋ＵＸ×Δθ
ＶＹ＝ＶＹ”＋ＵＹ×Δθ  …（６）
上式（６）において、変数ＶＸ”はステップＳ１４で算出された仮の速度を示すベクトルのＸ成分であり、変数ＶＹ”は当該仮の速度を示すベクトルのＹ成分である。変数ＵＸは、オブジェクト５１の姿勢を示すベクトルのＸ成分の値であり、変数ＵＹは当該ベクトルのＹ成分の値である。なお、オブジェクト５１の姿勢を示すベクトルは、オブジェクト姿勢データ６３２により示される。
【０１００】
上式（６）からわかるように、オブジェクト５１の速度は、仮の速度Ｖ”に、オブジェクト５１を基準とした上方向（オブジェクト５１の姿勢を示すベクトルの方向）の速度を加算することによって算出される。したがって、本実施形態においては、コントローラ７の上下方向の動きに応じて翼が下方向に移動する場合、オブジェクト５１を基準とした上方向の速度がオブジェクト５１に与えられ、オブジェクト５１は上方向に移動する。つまり、オブジェクト５１の位置を変化させる方向（すなわち、速度）は、平滑化ベクトルに基づいて決定されるオブジェクト５１の姿勢に基づいて決定される。このように、加速度ベクトルに基づいて決定される変数（本実施形態では翼の速度）と、平滑化ベクトルに基づいて決定される変数（本実施形態ではオブジェクトの姿勢）との両方を用いてオブジェクト５１の動作（本実施形態ではオブジェクトの速度）を決定することによって、より複雑なオブジェクトの制御が可能となる。
【０１０１】
なお、上式（６）では、コントローラ７の上下方向の動きに応じて翼が下方向に移動する場合、オブジェクト５１を基準とした上方向の速度がオブジェクト５１に与えられる。ここで、他の実施形態では、コントローラ７の動きの方向とオブジェクト５１に与えられる速度の方向とは必ずしも一致している必要はない。例えば、他の実施形態では、図２１に示すように、鳥を模したオブジェクト５１を側面から見たゲーム画像が表示され、オブジェクト５１が左右方向を向くように表示されてもよい。この場合、オブジェクト５１の姿勢を示すベクトルＶ１を所定角度θ１だけオブジェクト５１の前側に傾けた方向の速度がオブジェクト５１に与えられるようにしてもよい。図２１においては、ベクトルＶ２がオブジェクト５１の速度を示している。
【０１０２】
また、式（６）からわかるように、ステップＳ１６の補正において加算される速度は翼の速度Δθの大きさに応じて変化し、翼の速度Δθが大きいほど、加算される速度は大きくなる。したがって、本実施形態においては、コントローラ７を上下方向に速く動かすほど、オブジェクト５１は速く移動することとなる。以上のステップＳ１６の補正によって得られたオブジェクト５１の速度Ｖを示すデータは、オブジェクト速度データ６３３としてメインメモリ１３に記憶される。
【０１０３】
ステップＳ１７においては、ＣＰＵ１０はオブジェクト５１の位置を算出する。オブジェクト５１の位置は、ステップＳ１４〜Ｓ１６の処理で算出されたオブジェクト５１の速度に基づいて、すなわち、オブジェクト速度データ６３３により示されるベクトル（ＶＸ，ＶＹ）に基づいて算出される。具体的には、ＣＰＵ１０は、オブジェクト５１の位置を示す座標（ＰＸ，ＰＹ）を次式（７）に従って算出する。
ＰＸ＝ＰＸ’＋ＶＸ
ＰＹ＝ＰＹ’＋ＶＹ  …（７）
上式（７）において、変数ＰＸ’は、前回のオブジェクト５１の位置を示すＸ座標値であり、変数ＰＹ’は、前回のオブジェクト５１の位置を示すＹ座標値である。なお、前回のオブジェクト５１の位置を示す座標（ＰＸ’，ＰＹ’）は、ステップＳ１７の実行時点でメインメモリ１３に記憶されているオブジェクト位置データ６３４により示される。ステップＳ１７で算出された、オブジェクト５１の位置を示すデータは、オブジェクト位置データ６３４としてメインメモリ１３に記憶される。ステップＳ１７の処理が終了すると、ＣＰＵ１０はオブジェクト制御処理を終了する。
【０１０４】
図１８の説明に戻り、ステップＳ４の次のステップＳ５において、ステップＳ４で実行されたゲーム処理の結果を反映したゲーム画像が生成されて、ゲーム画像がモニタ２に表示される。このとき、オブジェクト５１は、オブジェクト位置データ６３４により示される位置に、オブジェクト姿勢データ６３２により示される姿勢となるように表示される。また、オブジェクト５１の翼は、翼角データ６３５により示される角度θに応じた角度となるように表示される。
【０１０５】
続くステップＳ６において、ＣＰＵ１０はゲームを終了するか否かを判定する。ステップＳ６の判定は、例えば、プレイヤがゲームをクリアしたか否かや、ゲームに制限時間が設けられている場合には当該制限時間が経過したか否かによって行われる。ステップＳ６の判定結果が否定である場合、ステップＳ２の処理が再度実行され、以降、ゲームを終了すると判定されるまでステップＳ２〜Ｓ６の処理ループが実行される。一方、ステップＳ６の判定結果が肯定である場合、ＣＰＵ１０は図１８に示す処理を終了する。以上で、ゲーム装置３における処理の説明を終了する。
【０１０６】
以上のように、本実施形態においては、ゲーム装置３は、加速度センサ３７によって検出される加速度ベクトルに基づいてオブジェクト５１の翼の角度を算出する（ステップＳ１２）。そして、翼の角度に基づいてオブジェクト５１の位置を決定する（ステップＳ１３〜Ｓ１７）。また、ゲーム装置３は、加速度ベクトルを平滑化した平滑化ベクトルに基づいてオブジェクト５１の姿勢を算出する（ステップＳ１１）。これによって、ゲーム装置３は、コントローラ７の上下方向の動きに応じてオブジェクト５１の翼の角度（オブジェクト５１の位置）を制御することができ、それと同時に、コントローラ７の傾きに応じてオブジェクト５１の姿勢を制御することができる。
【０１０７】
なお、上記実施形態においては、加速度を平滑化する方法は、今回取得された加速度ベクトルと前回に算出された平滑化ベクトルとを用いて平滑化ベクトルを算出する方法であった。ここで、加速度を平滑化する方法はこれに限らず、加速度の（相対的に）急激に変化する成分の影響を除去して、（相対的に）緩やかに変化する成分を抽出する方法であれば、どのような方法であってもよい。例えば、他の実施形態においては、所定期間の間に順次検出される複数の加速度ベクトルからなる加速度信号にローパスフィルタを適用することによって、加速度信号の低周波成分を抽出するようにしてもよい。加速度信号の低周波成分を抽出することによって、加速度信号の成分のうちのコントローラ７の回転に起因する成分を抽出することができる。同様に、上記ステップＳ１２において、差分を算出することに代えて、ハイパスフィルタを用いて加速度信号の高周波成分を抽出することによって、加速度信号の成分のうちのコントローラ７の上下方向の動きに起因する成分を抽出することができる。また、ゲーム装置３は、あるフレームにおける平滑化ベクトルを次のように算出してもよい。すなわち、ゲーム装置は、前回のフレームにおいて取得された加速度ベクトルと、当該あるフレームにおいて取得された加速度ベクトルと、次のフレームにおける加速度ベクトルという３つの加速度ベクトルに基づいて、あるフレームにおける平滑化ベクトルを算出してもよい。より具体的には、当該３つの加速度ベクトルの平均値を平滑化ベクトルとしてもよい。なお、上記実施形態における平滑化方法によれば、前回のフレームおよび今回のフレームにおいて取得されるデータのみを用いて平滑化ベクトルを算出することができるので、リアルタイムに平滑化ベクトルを算出することができる。これによって、応答性の高い操作を実現することができるので、操作に高い応答性が要求されるゲームにとって上記実施形態における平滑化方法は非常に有効である。
【０１０８】
なお、上記実施形態においては、ゲーム装置３は、ｘ軸方向およびｙ軸方向に関するコントローラ７の傾きをゲーム操作として用いるものであったので、ｘ成分およびｙ成分からなる２次元の加速度ベクトルを平滑化して２次元の平滑化ベクトルを算出するようにした。ここで、他の実施形態においては、ゲーム装置３は、ｘ軸方向、ｙ軸方向、およびｚ軸方向の３次元の加速度ベクトルを平滑化して３次元の平滑化ベクトルを算出するようにしてもよい。これによって、ゲーム装置３は、３次元の各方向に関するコントローラ７の傾きを算出することができる。また、他の実施形態においては、ゲーム装置３は、いずれか１軸方向の加速度のみを平滑化し、平滑化した値（スカラー値）を用いてゲーム処理を実行するようにしてもよい。例えば、ｙ軸方向の加速度の大きさのみに基づいてｘ軸方向およびｙ軸方向に関するコントローラ７の傾きを推測することが可能である。これによれば、コントローラ７の構成の簡易化およびゲーム処理の簡易化を図ることができる。
【０１０９】
また、上記実施形態においては、ゲーム装置３は、上下方向（すなわち、ｙ軸方向）に関するコントローラ７の動きを算出するものであったので、加速度ベクトルのうちのｙ成分のみを用いてゲーム処理を実行した（上式（３））。ここで、他の実施形態においては、ゲーム装置３は、加速度ベクトルのｘ成分、ｙ成分、およびｚ成分のうちのいずれか２つまたは３つの成分に基づいてコントローラ７の動きを算出するようにしてもよい。例えば、加速度ベクトルのうちのｘ成分およびｙ成分を用いてゲーム処理を実行してもよい。これによれば、上下方向および左右方向に関するコントローラ７の動きをゲーム処理に反映させることができる。
【０１１０】
また、上記実施形態においては、加速度データおよび平滑化データに基づいて実行されるゲーム処理の一例として、加速度データに基づいてオブジェクトの位置を算出するとともに、平滑化データに基づいてオブジェクトの姿勢を算出するゲーム処理を例として説明した。ここで、本発明は、加速度データおよび平滑化データに基づいて実行される種々のゲーム処理を行うゲーム装置およびゲームプログラムに適用することが可能である。
【０１１１】
例えば、競馬ゲームに本発明を適用することが考えられる。この競馬ゲームにおいて、プレイヤは、馬に乗った騎手を模したオブジェクトをコントローラ７を用いて操作する。ゲーム装置３は、例えば、加速度データに基づいて馬の速度を決定するとともに、平滑化データに基づいて馬の進行方向を決定する。具体的には、ゲーム装置３は、コントローラ７のｚ軸周りの回転に関する傾きを平滑化データに基づいて算出する。そして、コントローラ７の傾きに応じて馬の移動方向を決定する。一方、ゲーム装置３は、検出された加速度データを用いてコントローラ７の上下方向の動きを算出することによって、コントローラ７が下向きに動かされたか否かを判断し、オブジェクトの速度を算出する。具体的には、コントローラ７が下向きに動かされたと判断される場合、ゲーム装置３は、騎手に鞭を振る動作を行わせる。さらに、所定の単位時間当たりに騎手が鞭を振る回数に応じて馬の速度を算出する。これによって、プレイヤは、コントローラ７を傾ける操作によって馬の移動方向を操作するとともに、コントローラ７を鞭のようにして用いて馬の速度を操作することができるので、今までにはない新規なゲーム操作を味わうことができる。
【０１１２】
なお、コントローラ７が下向きに動かされたか否かの判断は、例えば、加速度ベクトルのｙ成分が所定値よりも大きい状態が所定期間だけ継続されたか否かによって行うことができる。より具体的には、加速度ベクトルのｙ成分が正の値となる状態が所定のフレーム数だけ継続された場合、ゲーム装置３は、コントローラ７が下向きに動かされたと判断する。そして、ゲーム装置３は、コントローラ７が下向きに動かされたと判断された場合、オブジェクトの速度を増加する。
【０１１３】
また、一輪車に乗るオブジェクトを操作するゲームに本発明を適用することも考えられる。このゲームにおいて、ゲーム装置３は、例えば、加速度データに基づいてオブジェクトにジャンプ動作を行わせるとともに、平滑化データに基づいてオブジェクトを移動させる。具体的には、ゲーム装置３は、コントローラ７のｚ軸周りの回転に関する傾きを平滑化データに基づいて算出し、コントローラ７の傾きに応じてオブジェクトの移動方向を決定する。一方、ゲーム装置３は、加速度データを用いてコントローラ７の上下方向の動きを算出することによって、コントローラ７が上向きに動かされたか否かを判断し、上向きに動かされたと判断される場合にはオブジェクトに所定の動作（例えばジャンプ動作）を行わせる。これによれば、上記実施形態や競馬ゲームの例と同様、コントローラ７を動かすという１種類の操作によって、１つの操作対象（オブジェクト）に異なる２つの動作を行わせることができる。
【０１１４】
また、本発明は、１つの操作対象（オブジェクト）に異なる２つの動作を行わせる場合だけでなく、互いに異なる２つの操作対象にそれぞれ動作を行わせる場合にも適用することができる。すなわち、ゲーム装置３は、第１のオブジェクトの動作を加速度データに基づいて制御するとともに、第１のオブジェクトとは異なる第２のオブジェクトの動作を平滑化データに基づいて制御するようにしてもよい。例えば、ランナーを模した２つのオブジェクトの速度を制御するゲームを例として考える。このゲームでは、プレイヤは、２つのオブジェクトが併走するように（すなわち、２つのオブジェクトの速度がほぼ等しくなるように）ゲーム操作を行うことを目的とする。このようなゲームにおいて、ゲーム装置３は、加速度データに基づいて一方のオブジェクトの速度を算出するとともに、平滑化データに基づいて他方のオブジェクトの速度を算出する。加速度データに基づいてオブジェクトの速度を算出する方法としては、上記実施形態において説明した方法や、上記競馬ゲームの例で示した方法が考えられる。また、平滑化データに基づいてオブジェクトの速度を算出する方法としては、例えば、予め決められた基準方向に対してコントローラ７が傾いている角度の大きさに応じてオブジェクトの速度を算出する方法が考えられる。
【産業上の利用可能性】
【０１１５】
以上のように、本発明は、簡易な構成によって入力装置の複数の状態をゲーム処理に反映させること等を目的として、ゲーム装置やゲームプログラムに利用することが可能である。
【図面の簡単な説明】
【０１１６】
【図１】本発明の一実施形態に係るゲーム装置を含むゲームシステムの外観図
【図２】ゲーム装置３の機能ブロック図
【図３Ａ】コントローラ７の斜視図
【図３Ｂ】コントローラ７の斜視図
【図４】コントローラ７を前方から見た図
【図５Ａ】コントローラ７の内部構造を示す図
【図５Ｂ】コントローラ７の内部構造を示す図
【図６】コントローラ７の構成を示すブロック図
【図７】コントローラ７の傾きと加速度センサの出力との関係を示す図
【図８】コントローラ７の傾きと加速度センサの出力との関係を示す図
【図９】コントローラ７を用いてゲーム操作するときの状態を概説する図解図
【図１０】本実施形態においてモニタ２に表示されるゲーム画面の一例を示す図
【図１１】オブジェクト５１が第１の動作を行っている場合のゲーム画面の一例を示す図
【図１２】オブジェクト５１が第２の動作を行っている場合のゲーム画面の一例を示す図
【図１３】コントローラ７の動きと加速度ベクトルとの関係を示す図
【図１４】コントローラ７の動きと加速度ベクトルとの関係を示す図
【図１５】加速度センサ３７によって検出された加速度の値と、当該検出された加速度を平滑化した値とを示す図
【図１６】ゲーム装置３のメインメモリ１３に記憶される主なデータを示す図
【図１７】オブジェクト５１に関する各パラメータを示す図
【図１８】ゲーム装置３において実行される処理の流れを示すメインフローチャート
【図１９】平滑化ベクトルの算出方法を説明するための図
【図２０】図１８に示すオブジェクト制御処理（ステップＳ４）の詳細を示すフローチャート
【図２１】他の実施形態においてモニタに表示されるゲーム画面の一例を示す図
【符号の説明】
【０１１７】
１  ゲームシステム
２  モニタ
３  ゲーム装置
４  光ディスク
５  外部メモリカード
７  コントローラ
８ａ，８ｂ  マーカ
１０  ＣＰＵ
１３  メインメモリ
３２  操作部
３５  撮像情報演算部
３６  通信部
３７  加速度センサ
４０  撮像素子
５１  オブジェクト
６１  ゲームプログラム
【図１】
0004795087.tif 000002
【図２】
0004795087.tif 000003
【図３Ａ】
0004795087.tif 000004
【図３Ｂ】
0004795087.tif 000005
【図４】
0004795087.tif 000006
【図５Ａ】
0004795087.tif 000007
【図５Ｂ】
0004795087.tif 000008
【図６】
0004795087.tif 000009
【図７】
0004795087.tif 000010
【図８】
0004795087.tif 000011
【図９】
0004795087.tif 000012
【図１０】
0004795087.tif 000013
【図１１】
0004795087.tif 000014
【図１２】
0004795087.tif 000015
【図１３】
0004795087.tif 000016
【図１４】
0004795087.tif 000017
【図１５】
0004795087.tif 000018
【図１６】
0004795087.tif 000019
【図１７】
0004795087.tif 000020
【図１８】
0004795087.tif 000021
【図１９】
0004795087.tif 000022
【図２０】
0004795087.tif 000023
【図２１】
0004795087.tif 000024