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