(57)【要約】【課題】ジャイロセンサ等の動きセンサを用いた場合に、当該センサの検出内容の誤差の影響を受けにくい操作が可能なゲーム装置およびゲームプログラムを提供すること。【解決手段】操作データ取得手段は、所定の入力装置自体の動きを示すデータである動きデータを少なくとも含む操作データを当該入力装置から取得する。動き変化量算出手段は、動きデータに基づき、所定の期間内における入力装置自体の変化量を算出する。位置姿勢算出手段は、仮想ゲーム空間内におけるプレイヤオブジェクトの位置および姿勢を算出する。接触度算出手段は、仮想ゲーム空間内におけるプレイヤオブジェクトとフィールドオブジェクトとの接触度合いを示す接触度を算出する。姿勢変化手段は、変化量および接触度に基づいて、プレイヤオブジェクトの姿勢を変化させる。【選択図】図３７
2010094338.tif 000002
【特許請求の範囲】
【請求項１】
仮想ゲーム空間内に存在するプレイヤオブジェクトとフィールドオブジェクトとを表示装置に表示させるゲーム装置であって、
所定の入力装置自体の動きを示すデータである動きデータを少なくとも含む操作データを当該入力装置から取得する操作データ取得手段と、
前記動きデータに基づき、所定の期間内における前記入力装置自体の変化量を算出する動き変化量算出手段と、
前記仮想ゲーム空間内における前記プレイヤオブジェクトの位置および姿勢を算出する位置姿勢算出手段と、
前記仮想ゲーム空間内における前記プレイヤオブジェクトと前記フィールドオブジェクトとの接触度合いを示す接触度を算出する接触度算出手段と、
前記変化量および接触度に基づいて、前記プレイヤオブジェクトの姿勢を変化させる姿勢変化手段とを備えるゲーム装置。
【請求項２】
前記入力装置はジャイロセンサを含み、
前記操作データ取得手段は、前記ジャイロセンサから出力される角速度データを前記動きデータとして取得し、
前記変化量算出手段は、前記角速度データに基づいて前記変化量を算出する、請求項１に記載のゲーム装置。
【請求項３】
前記入力装置は加速度センサを含み、
前記操作データ取得手段は、前記加速度センサから出力される加速度データを前記動きデータとして取得し、
前記変化量算出手段は、前記加速度データに基づいて前記変化量を算出する、請求項１に記載のゲーム装置。
【請求項４】
前記変化量算出手段は、前記加速度データで示される加速度を積分することで、前記所定の期間内における前記入力装置自体の動きにかかる移動速度を算出し、
前記姿勢変化手段は、前記移動速度と前記接触度に基づいて前記プレイヤオブジェクトの姿勢を変化させる、請求項３に記載のゲーム装置。
【請求項５】
前記姿勢変化手段は、前記プレイヤオブジェクトとフィールドオブジェクトとの接触度が所定値よりも低いときのみ、前記変化量に基づいてプレイヤオブジェクトの姿勢を変化させる、請求項１に記載のゲーム装置。
【請求項６】
前記姿勢変化手段は、前記プレイヤオブジェクトとフィールドオブジェクトとの接触度が低いほど、前記プレイヤオブジェクトの姿勢の変化に前記変化量を反映させる割合が高くなるように、姿勢を変化させる、請求項１に記載のゲーム装置。
【請求項７】
前記フィールドオブジェクトは、液体状のオブジェクトであり、
前記ゲーム装置は、前記プレイヤオブジェクトが前記フィールドオブジェクトに浸かっている部分の体積を算出する浸水体積算出手段を更に備え、
前記接触度算出手段は、前記体積に基づいて前記接触度を算出する、請求項１に記載のゲーム装置。
【請求項８】
前記フィールドオブジェクトは、地面を表すオブジェクトであり、
前記ゲーム装置は、前記プレイヤオブジェクトが前記フィールドオブジェクトに接している面積を算出する接地面積算出手段を更に備え、
前記接触度算出手段は、前記面積に基づいて前記接触度を算出する、請求項１に記載のゲーム装置。
【請求項９】
前記フィールドオブジェクトは、地面を表すオブジェクトであり、
前記ゲーム装置は、前記フィールドオブジェクトの地表から法線方向の所定の高さまでの空間に含まれている前記プレイヤオブジェクトの体積を算出する地表空間内体積算出手段を更に備え、
前記接触度算出手段は、前記体積に基づいて前記接触度を算出する、請求項１に記載のゲーム装置。
【請求項１０】
仮想ゲーム空間内に存在するプレイヤオブジェクトとフィールドオブジェクトとを表示装置に表示させるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
所定の入力装置自体の動きを示すデータである動きデータを少なくとも含む操作データを当該入力装置から取得する操作データ取得手段と、
前記動きデータに基づき、所定の期間内における前記入力装置自体の変化量を算出する動き変化量算出手段と、
前記仮想ゲーム空間内における前記プレイヤオブジェクトの位置および姿勢を算出する位置姿勢算出手段と、
前記仮想ゲーム空間内における前記プレイヤオブジェクトと前記フィールドオブジェクトとの接触度合いを示す接触度を算出する接触度算出手段と、
前記変化量および接触度に基づいて、前記プレイヤオブジェクトの姿勢を変化させる姿勢変化手段として機能させる、ゲームプログラム。
【請求項１１】
前記入力装置はジャイロセンサを含み、
前記操作データ取得手段は、前記ジャイロセンサから出力される角速度データを前記動きデータとして取得し、
前記変化量算出手段は、前記角速度データに基づいて前記変化量を算出する、請求項１０に記載のゲームプログラム。
【請求項１２】
前記入力装置は加速度センサを含み、
前記操作データ取得手段は、前記加速度センサから出力される加速度データを前記動きデータとして取得し、
前記変化量算出手段は、前記加速度データに基づいて前記変化量を算出する、請求項１０に記載のゲームプログラム。
【請求項１３】
前記変化量算出手段は、前記加速度データで示される加速度を積分することで、前記所定の期間内における前記入力装置自体の動きにかかる移動速度を算出し、
前記姿勢変化手段は、前記移動速度と前記接触度に基づいて前記プレイヤオブジェクトの姿勢を変化させる、請求項１２に記載のゲームプログラム。
【請求項１４】
前記姿勢変化手段は、前記プレイヤオブジェクトとフィールドオブジェクトとの接触度が所定値よりも低いときのみ、前記変化量に基づいてプレイヤオブジェクトの姿勢を変化させる、請求項１０に記載のゲームプログラム。
【請求項１５】
前記姿勢変化手段は、前記プレイヤオブジェクトとフィールドオブジェクトとの接触度が低いほど、前記プレイヤオブジェクトの姿勢の変化に前記変化量を反映させる割合が高くなるように、姿勢を変化させる、請求項１０に記載のゲームプログラム。
【請求項１６】
前記フィールドオブジェクトは、液体状のオブジェクトであり、
前記ゲームプログラムは、前記コンピュータを、前記プレイヤオブジェクトが前記フィールドオブジェクトに浸かっている部分の体積を算出する浸水体積算出手段として更に機能させ、
前記接触度算出手段は、前記体積に基づいて前記接触度を算出する、請求項１０に記載のゲームプログラム。
【請求項１７】
前記フィールドオブジェクトは、地面を表すオブジェクトであり、
前記ゲームプログラムは、前記コンピュータを、前記プレイヤオブジェクトが前記フィールドオブジェクトに接している面積を算出する接地面積算出手段として更に機能させ、
前記接触度算出手段は、前記面積に基づいて前記接触度を算出する、請求項１０に記載のゲームプログラム。
【請求項１８】
前記フィールドオブジェクトは、地面を表すオブジェクトであり、
前記ゲームプログラムは、前記コンピュータを、前記フィールドオブジェクトの地表から法線方向の所定の高さまでの空間に含まれている前記プレイヤオブジェクトの体積を算出する地表空間内体積算出手段として更に機能させ、
前記接触度算出手段は、前記体積に基づいて前記接触度を算出する、請求項１０に記載のゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想ゲーム空間内に存在するプレイヤオブジェクトとフィールドオブジェクトとを表示装置に表示させるゲーム装置およびゲームプログラムに関し、より特定的には、入力装置自体に加えられた動きに基づいて仮想ゲーム空間内のプレイヤオブジェクトの姿勢を制御するゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
従来より、ジャイロセンサで検出される角速度を使ったゲーム装置が知られている（例えば、特許文献１）。このゲーム装置は、プレイヤの把持可能な大きさのハウジングと、ハウジングに設けられる表示画面と、表示画面に垂直な軸回りの角速度を検出するジャイロセンサとを含む。そして、プレイヤがゲーム装置自体を表示画面に垂直な軸回りに回転させると、検出された角速度に基づいてハウジングの回転角度が算出され、回転角度に応じてゲーム画像を回転させている。
【０００３】
上記ゲーム装置では、ジャイロセンサは回転していなくても常に何らかの値を出力するので、回転しているときの実際の角速度値を算出するために、回転していないと見なされるときにジャイロセンサから出力される角速度値をニュートラルポジション値の初期値として設定し、記憶するという処理が行われている。また、上記のようにして設定したニュートラルポジション値は、ジャイロセンサの特性によりずれることがあるので、補正のための処理も行われる。たとえば、所定時間に取得された複数の角速度値が安定していると判断される場合に、ニュートラルポジション値と差が無いかどうかを判定する。差があるようであれば、ニュートラルポジション値を補正して、ゲームプレイに違和感が出ないようにするような処理を実行する。
【特許文献１】特開２００６−６８０２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したようなゲーム装置では、以下に示す問題点がある。一般的に、ジャイロセンサを使ったゲームでは、ジャイロセンサで検出される角速度の誤差の蓄積による影響を受けやすい。そのため、上記ゲーム装置ではニュートラルポジションや補正処理のような調整のための処理が必要となっているが、そのために、ゲーム処理としては煩雑な処理となっていた。また、上記のゲーム装置では、所定時間に取得された複数の角速度値を用いて補正処理を行う等の関係上、角速度の変化が急激に発生した場合には、これによる誤差を吸収しきれないという問題もあった。
【０００５】
それ故に、本発明の目的は、ジャイロセンサ等の動きセンサを用いた場合に、当該センサの検出内容の誤差の影響を受けにくい操作が可能なゲーム装置およびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、仮想ゲーム空間内に存在するプレイヤオブジェクトとフィールドオブジェクトとを表示装置（２６）に表示させるゲーム装置であって、操作データ取得手段（６０）と、動き変化量算出手段（６０）と、位置姿勢算出手段（６０）と、接触度算出手段（６０）と、姿勢変化手段（６０）とを備える。操作データ取得手段は、所定の入力装置（３４，３６）自体の動きを示すデータである動きデータを少なくとも含む操作データを当該入力装置から取得する。動き変化量算出手段は、動きデータに基づき、所定の期間内における入力装置自体の変化量を算出する。位置姿勢算出手段は、仮想ゲーム空間内におけるプレイヤオブジェクトの位置および姿勢を算出する。接触度算出手段は、仮想ゲーム空間内におけるプレイヤオブジェクトとフィールドオブジェクトとの接触度合いを示す接触度を算出する。姿勢変化手段は、変化量および接触度に基づいて、プレイヤオブジェクトの姿勢を変化させる。
ここで、フィールドオブジェクトとは、仮想ゲーム空間内においてプレイヤオブジェクトが各種行動を取るときの足場となるような場であって、例えば、地面オブジェクトや水面オブジェクトが該当する。また、「接触度合い」に関しては、例えば１〜１０のような所定の範囲内の値で段階的に示すようにしてもよいし、０と１の２段階で「接触度合い」を示すようにしても良い。
【０００８】
第１の発明によれば、フィールドオブジェクトとプレイヤオブジェクトの接触度合いに基づいたプレイヤオブジェクト姿勢制御が可能となり、誤差の影響が少ない、より正確な姿勢制御を実行可能なゲーム装置およびゲームプログラムを提供することができる。
【０００９】
第２の発明は、第１の発明において、入力装置はジャイロセンサを含む。また、操作データ取得手段は、ジャイロセンサから出力される角速度データを動きデータとして取得する。更に、変化量算出手段は、角速度データに基づいて変化量を算出する。
【００１０】
第２の発明によれば、角速度データを利用して姿勢制御を実行することができ、加速度では検出できないような入力装置の姿勢変化についても検知してプレイヤオブジェクトの姿勢に反映させることができるゲーム装置およびゲームプログラムを提供することができる。また、ジャイロセンサに発生する誤差の蓄積による影響を最小限に抑えた姿勢制御を実行可能なゲーム装置およびゲームプログラムを提供することができる。
【００１１】
第３の発明は、第１の発明において、入力装置は加速度センサを含む。また、操作データ取得手段は、加速度センサから出力される加速度データを動きデータとして取得する。更に、変化量算出手段は、加速度データに基づいて変化量を算出する。
【００１２】
第３の発明によれば、加速度データを利用して姿勢制御を実行することができ、入力装置に対する直感的な操作によってプレイヤオブジェクトの姿勢を変化させることができ、また、多様な操作を実現し、操作性を高めることが可能なゲーム装置およびゲームプログラムを提供することができる。
【００１３】
第４の発明は、第３の発明において、変化量算出手段は、加速度データで示される加速度を積分することで、所定の期間内における入力装置自体の動きにかかる移動速度を算出する。また、姿勢変化手段は、移動速度と接触度に基づいてプレイヤオブジェクトの姿勢を変化させる。
【００１４】
第４の発明によれば、入力装置の移動速度に基づいた姿勢制御が可能となり、多様な操作が実現可能なゲーム装置およびゲームプログラムを提供することが可能となる。
【００１５】
第５の発明は、第１の発明において、姿勢変化手段は、プレイヤオブジェクトとフィールドオブジェクトとの接触度が所定値よりも低いときのみ、変化量に基づいてプレイヤオブジェクトの姿勢を変化させる。
【００１６】
第５の発明によれば、例えば、重力が設定された空間内でプレイヤオブジェクトがジャンプ中のときのような、短時間だけ発生するような状態における姿勢制御において、誤差の影響が少ない、より正確な姿勢制御を実行することができる。
【００１７】
第６の発明は、第１の発明において、姿勢変化手段は、プレイヤオブジェクトとフィールドオブジェクトとの接触度が低いほど、プレイヤオブジェクトの姿勢の変化に変化量を反映させる割合が高くなるように姿勢を変化させる。
【００１８】
第６の発明によれば、プレイヤにとって違和感のないプレイヤオブジェクトの姿勢制御を実現することができる。
【００１９】
第７の発明は、第１の発明において、フィールドオブジェクトは、液体状のオブジェクトである。そして、ゲーム装置は、プレイヤオブジェクトがフィールドオブジェクトに浸かっている部分の体積を算出する浸水体積算出手段を更に備える。そして、接触度算出手段は、体積に基づいて接触度を算出する。
【００２０】
第７の発明によれば、例えば、水面に浮かぶボードのようなオブジェクトの姿勢制御について、違和感の少ない姿勢制御を実現することができる。
【００２１】
第８の発明は、第１の発明において、フィールドオブジェクトは、地面を表すオブジェクトである。また、ゲーム装置は、プレイヤオブジェクトがフィールドオブジェクトに接している面積を算出する接地面積算出手段を更に備える。そして、接触度算出手段は、面積に基づいて接触度を算出する。
【００２２】
第９の発明は、第１の発明において、フィールドオブジェクトは、地面を表すオブジェクトである。また、ゲーム装置は、フィールドオブジェクトの地表から法線方向の所定の高さまでの空間に含まれているプレイヤオブジェクトの体積を算出する地表空間内体積算出手段を更に備える。そして、接触度算出手段は、体積に基づいて接触度を算出する。
【００２３】
第８乃至第９の発明によれば、プレイヤオブジェクトの接地具合によって姿勢制御を行うことができ、違和感の少ない姿勢制御を実現することができる。
【００２４】
第１０の発明は、仮想ゲーム空間内に存在するプレイヤオブジェクトとフィールドオブジェクトとを表示装置に表示させるゲーム装置のコンピュータに実行させるゲームプログラムであって、コンピュータを、操作データ取得手段（Ｓ２）と、動き変化量算出手段（Ｓ２１）と、位置姿勢算出手段（Ｓ２２）と、接触度算出手段（Ｓ４１）と、姿勢変化手段（Ｓ４７）として機能させる。操作データ取得手段は、所定の入力装置自体の動きを示すデータである動きデータを少なくとも含む操作データを当該入力装置から取得する。動き変化量算出手段は、動きデータに基づき、所定の期間内における入力装置自体の変化量を算出する。位置姿勢算出手段は、仮想ゲーム空間内におけるプレイヤオブジェクトの位置および姿勢を算出する。接触度算出手段は、仮想ゲーム空間内におけるプレイヤオブジェクトとフィールドオブジェクトとの接触度合いを示す接触度を算出する。姿勢変化手段は、変化量および接触度に基づいて、プレイヤオブジェクトの姿勢を変化させる。
【００２５】
第１１の発明は、第１０の発明において、入力装置はジャイロセンサを含む。操作データ取得手段は、ジャイロセンサから出力される角速度データを動きデータとして取得する。そして、変化量算出手段は、角速度データに基づいて変化量を算出する。
【００２６】
第１２の発明は、第１０の発明において、入力装置は加速度センサを含む。また、操作データ取得手段は、加速度センサから出力される加速度データを動きデータとして取得する。そして、変化量算出手段は、加速度データに基づいて変化量を算出する。
【００２７】
第１３の発明は、第１２の発明において、変化量算出手段は、加速度データで示される加速度を積分することで、所定の期間内における入力装置自体の動きにかかる移動速度を算出する。また、姿勢変化手段は、移動速度と接触度に基づいてプレイヤオブジェクトの姿勢を変化させる。
【００２８】
第１４の発明は、第１０の発明において、姿勢変化手段は、プレイヤオブジェクトとフィールドオブジェクトとの接触度が所定値よりも低いときのみ、変化量に基づいてプレイヤオブジェクトの姿勢を変化させる。
【００２９】
第１５の発明は、第１０の発明において、姿勢変化手段は、プレイヤオブジェクトとフィールドオブジェクトとの接触度が低いほど、プレイヤオブジェクトの姿勢の変化に変化量を反映させる割合が高くなるように姿勢を変化させる。
【００３０】
第１６の発明は、第１０の発明において、フィールドオブジェクトは、液体状のオブジェクトである。また、ゲームプログラムは、コンピュータを、プレイヤオブジェクトがフィールドオブジェクトに浸かっている部分の体積を算出する浸水体積算出手段として更に機能させる。そして、接触度算出手段は、体積に基づいて接触度を算出する。
【００３１】
第１７の発明は、第１０の発明において、フィールドオブジェクトは、地面を表すオブジェクトである。また、ゲームプログラムは、コンピュータを、プレイヤオブジェクトがフィールドオブジェクトに接している面積を算出する接地面積算出手段として更に機能させる。そして、接触度算出手段は、面積に基づいて接触度を算出する。
【００３２】
第１８の発明は、第１０の発明において、フィールドオブジェクトは、地面を表すオブジェクトである。また、ゲームプログラムは、コンピュータを、フィールドオブジェクトの地表から法線方向の所定の高さまでの空間に含まれているプレイヤオブジェクトの体積を算出する地表空間内体積算出手段として更に機能させる。そして、接触度算出手段は、体積に基づいて接触度を算出する。
【００３３】
本発明のゲームプログラムによれば、上述した本発明のゲーム装置と同様の効果を得ることができる。
【発明の効果】
【００３４】
本発明によれば、フィールドオブジェクトとプレイヤオブジェクトの接触度合いに基づいたプレイヤオブジェクト姿勢制御が可能となり、誤差の影響を受けにくい姿勢制御を実行可能なゲーム装置およびゲームプログラムを提供することができる。
【発明を実施するための最良の形態】
【００３５】
図１を参照して、この発明の一実施例であるゲームシステム１０は、ビデオゲーム装置（以下、単に「ゲーム装置」ということがある。）１２およびコントローラ１４を含む。コントローラ１４は、ユーザないしプレイヤの入力装置ないし操作装置として機能する。ゲーム装置１２とコントローラ１４とは無線によって接続される。たとえば、無線通信は、Bluetooth（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。
【００３６】
ゲーム装置１２は、略直方体のハウジング１６を含み、ハウジング１６の前面にはディスクスロット１８および外部メモリカードスロットカバー２０が設けられる。ディスクスロット１８から、ゲームプログラムおよびデータを記憶した情報記憶媒体の一例である光ディスク２２が挿入されて、ハウジング１６内のディスクドライブ７４（図１０）に装着される。外部メモリカードスロットカバー２０の内側には外部メモリカード用コネクタ４８（図１０）が設けられており、その外部メモリカード用コネクタ４８には外部メモリカード（図示せず）が挿入される。メモリカードは、光ディスク２２から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイされたゲームのゲームデータ（結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。また、上記ゲームデータの保存は、外部メモリカードに代えて、たとえばフラッシュメモリ６４（図１０）等の内部メモリに対して行うようにしてもよい。
【００３７】
ゲーム装置１２のハウジング１６の後面には、ＡＶケーブルコネクタ（図示せず）が設けられ、当該コネクタを用いて、ゲーム装置１２はＡＶケーブル２４を介してモニタ（ディスプレイ）２６に接続される。このモニタ２６は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル２４は、ゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）２６の画面上にたとえば３Ｄビデオゲームのゲーム画像が表示され、内蔵されるスピーカ２８からゲーム音楽や効果音などのステレオゲーム音声が出力される。
また、モニタ２６の周辺（この実施例では、モニタ２６の上側）には、２つの赤外ＬＥＤ（マーカ）３０ａおよび３０ｂを備えるマーカ部３０が設けられる。このマーカ部３０は、電源ケーブル（図示せず）を通してゲーム装置１２に接続される。したがって、マーカ部３０には、ゲーム装置１２から電源が供給される。これによって、マーカ３０ａ，３０ｂは発光し、それぞれモニタ２６の前方に向けて赤外光を出力する。
なお、ゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに接続され、家庭用電源を、ゲーム装置１２を駆動するのに適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００３８】
コントローラ１４は、詳細は後述されるが、それぞれが片手で把持可能な第１コントローラ３４および第２コントローラ３６と、第１コントローラ３４に着脱可能に装着されるジャイロセンサユニット１００とを含む。第１コントローラ３４の後端面にはコネクタ４２（図２（Ａ）、図１１）が設けられ、第２コントローラ３６の後端から延びるケーブル３８の先端にはコネクタ４０（図１、図５、図１１）が設けられ、そしてジャイロセンサユニット１００の先端面および後端面にはコネクタ１０６および１０８（図６（Ａ）、図６（Ｂ）、図７および図１１）がそれぞれ設けられる。ジャイロセンサユニット１００の先端面側のコネクタ１０６は第１コントローラ３４のコネクタ４２と接続可能であり、第２コントローラ３６のコネクタ４０は第１コントローラ３４のコネクタ４２またはジャイロセンサユニット１００の後端面側のコネクタ１０８と接続可能である。
コネクタ１０６をコネクタ４２に接続することで、ジャイロセンサユニット１００は、第１コントローラ３４と物理的および電気的に結合される。こうして第１コントローラ３４に装着（一体化）されたジャイロセンサユニット１００からは、第１コントローラ３４の角速度を示す角速度データが出力される。
【００３９】
こうして第１コントローラ３４にジャイロセンサユニット１００が装着された場合、第２コントローラ３６のコネクタ４０は、ジャイロセンサユニット１００の後端面側のコネクタ１０８に接続される。すなわち、コネクタ４２は、コネクタ１０６とコネクタ４０の両者を選択的に接続可能な構造であって、コネクタ４０は、コネクタ４２とコネクタ１０８の両者に選択的に接続可能な構造である。したがって、ジャイロセンサユニット１００に設けられるコネクタ１０６とコネクタ１０８とは、同一のハウジングに設けられるため実際は接続できないが、コネクタの形状としては互いに接続可能な形状をしていることになる。第２コントローラ３６の入力データは、ケーブル３８およびジャイロセンサユニット１００を介して第１コントローラ３４に与えられる。第１コントローラ３４は、第１コントローラ３４自身の入力データと、ジャイロセンサユニット１００からの角速度データと、第２コントローラ３６の入力データとを含むコントローラデータをゲーム装置１２に送信する。
【００４０】
なお、コネクタ４０をコネクタ４２に接続した場合には、第２コントローラ３６の操作データないし入力データはケーブル３８を介して第１コントローラ３４に与えられ、第１コントローラ３４は、第１コントローラ３４自身の入力データと第２コントローラ３６の入力データとを含むコントローラデータをゲーム装置１２に送信する。
このとき、第１コントローラ３４の入力データと、第２コントローラ３６の入力データを送信するシステムにおいて、一度に送信するデータ量を追加することができないように設計されている場合もあるが、ジャイロセンサユニット１００を追加した場合に、ジャイロセンサユニット１００からの角速度データと、第２コントローラ３６からの入力データとを交互に第１コントローラ３６へ出力することによって、両者のデータを送信することができる。このデータ制御はジャイロセンサユニット１００で行うことができるので、第１コントローラ３４や第２コントローラ３６には何ら設計の変更をする必要がない。
【００４１】
このように、第１コントローラ３４がゲーム装置１２から離れて、無線などによって、そのコントローラ３４の操作信号や操作データ(データ)だけでなく、第２コントローラ３６やジャイロセンサユニット１００からの操作信号や操作データ(データ)を、ゲーム装置１２に対して入力するので、第１コントローラ３４を以下において、「リモコン」と呼ぶこともある。また、第２コントローラ３６は、その形態から「ヌンチャク」と愛称されているので、以下において、そのように呼ぶこともある。
【００４２】
このように、ジャイロセンサユニット１００は、既存の第１コントローラ３４および第２コントローラ３６をそのまま利用しながら、第１コントローラ３４にジャイロ機能を付加するための拡張ユニットである。
【００４３】
このゲームシステム１０において、ゲーム（または他のアプリケーション）をプレイするために、ユーザはまずゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくは実行したいと思う他のアプリケーション）を記憶している適宜の光ディスク２２を選択し、その光ディスク２２をゲーム装置１２のディスクスロット１８からディスクドライブ７４にローディングする。これに応じて、ゲーム装置１２がその光ディスク２２に記憶されているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置１２に入力を与えるためにコントローラ１４を操作する。
【００４４】
図２にはリモコンまたは第１コントローラ３４の外観の一例が示される。図２（Ａ）は、第１コントローラ３４を上面後方から見た斜視図であり、図２（Ｂ）は、第１コントローラ３４を下面前方から見た斜視図である。
【００４５】
第１コントローラ３４は、たとえばプラスチック成型によって形成されたハウジング４４を有している。ハウジング４４は、その前後方向（Ｚ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング４４は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、第１コントローラ３４を用いて、それに設けられたボタンを押下することと、第１コントローラ３４自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【００４６】
ハウジング４４には、複数の操作ボタンが設けられる。すなわち、ハウジング４４の上面には、十字キー４６ａ、１（いち）ボタン４６ｂ、２（に）ボタン４６ｃ、Ａボタン４６ｄ、−（マイナス)ボタン４６ｅ、ホーム（HOME）ボタン４６ｆ、および＋（プラス）ボタンないしスタートボタン４６ｇが設けられる。一方、ハウジング４４の下面には凹部が形成されており、当該凹部の後方側傾斜面にはＢボタン４６ｈが設けられる。これら各ボタン（スイッチ）４６ａ−４６ｈには、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。また、ハウジング４４の上面には、遠隔からゲーム装置１２本体の電源をオン／オフするための電源スイッチ４６ｉが設けられる。第１コントローラ３４に設けられる各ボタン（スイッチ）は、包括的に参照符号４６を用いて操作手段または入力手段として示されることもある。
【００４７】
十字キー４６ａは、４方向プッシュスイッチであり、矢印で示す４つの方向、前（または上）、後ろ（または下）、右および左の操作部を含む。この操作部のいずれか１つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト（プレイヤキャラクタまたはプレイヤオブジェクト）の移動方向を指示したり、カーソルの移動方向を指示したり、単に方向を指示したりすることができる。
【００４８】
１ボタン４６ｂおよび２ボタン４６ｃは、それぞれ、押しボタンスイッチである。たとえば３次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、１ボタン４６ｂおよび２ボタン４６ｃは、Ａボタン４６ｄおよびＢボタン４６ｈと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【００４９】
Ａボタンスイッチ４６ｄは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム（ＲＰＧ）やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、Ａボタンスイッチ４６ｄは、コントローラ３４をポインティングデバイスとして用いる場合に、ゲーム画面上でポインタ（指示画像）が指示するアイコンないしボタン画像の決定を指示するために使用される。たとえば、アイコンやボタン画像が決定されると、これらに対応して予め設定されている指示ないし命令（コマンド）を入力することができる。
【００５０】
−ボタン４６ｅ、ホームボタン４６ｆ、＋ボタン４６ｇおよび電源スイッチ４６ｉもまた、押しボタンスイッチである。−ボタン４６ｅは、ゲームモードを選択するために使用される。ホームボタン４６ｆは、ゲームメニュー（メニュー画面）を表示するために使用される。＋ボタン４６ｇは、ゲームを開始（再開）したり、一時停止したりするなどのために使用される。電源スイッチ４６ｉは、ゲーム装置１２の電源を遠隔操作によってオン／オフするために使用される。
【００５１】
なお、この実施例では、コントローラ３４自体をオン／オフするための電源スイッチは設けておらず、コントローラ３４の操作手段ないし入力手段４６のいずれかを操作することによってコントローラ３４はオンとナリ、一定時間（たとえば、３０秒）以上操作しなければ自動的にオフとなるようにしてある。
【００５２】
Ｂボタン４６ｈもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ３４で選択した位置を指定したりするために使用される。また、Ｂボタン４６ｈを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Ｂボタン４６ｈは、通常のＢボタンと同様に機能し、Ａボタン４６ｄによって決定したアクションやコマンドなどを取り消すなどのために使用される。
【００５３】
ハウジング４４内には、図２に示すＸ、ＹおよびＺの３軸方向（すなわち左右方向、上下方向および前後方向）の加速度を検出する加速度センサ８４（図１１）が設けられる。なお、加速度センサ８４としては、ハウジング４４の形状または第１コントローラ３４の持たせ方の限定等に応じて、上下方向、左右方向および前後方向のうちいずれか２方向の加速度を検出する２軸加速度センサが用いられてもよい。場合によっては１軸加速度センサが用いられてもよい。
【００５４】
ハウジング４４の前面には光入射口４４ｂが形成され、ハウジング４４内には撮像情報演算部５０がさらに設けられる。撮像情報演算部５０は、赤外線を撮像するカメラと撮像対象の画像内での座標を算出する演算部とによって構成され、上述のマーカ３０ａおよび３０ｂを含む被写界を赤外線で捉えて、マーカ３０ａおよび３０ｂの被写界内における位置座標を算出する。
【００５５】
また、ハウジング４４の後面には、上述のコネクタ４２が設けられている。コネクタ４２は、第１コントローラ３４に他の機器を接続するために利用される。この実施例では、コネクタ４２には第２コントローラ３６のコネクタ４０またはジャイロセンサユニット１００のコネクタ１０６が接続される。
【００５６】
ハウジング４４の後面にはまた、コネクタ４２を左右（Ｘ軸方向）に挟んで対向する位置に、一対の孔４８ａおよび４８ｂが形成されている。この一対の孔４８ａおよび４８ｂは、ジャイロセンサユニット１００をハウジング４４の後面に固定するためのフック１１２Ｆａおよび１１２Ｆｂ（図６（Ａ））が挿入される。ハウジング４４の後面にはさらに、ストラップ５６（図５）を装着するための孔４８ｃも形成されている。
【００５７】
図３にはヌンチャクまたは第２コントローラ３６の本体の外観の一例が示される。図３（Ａ）は、第２コントローラ３６を上面後方から見た斜視図であり、図３（Ｂ）は、第２コントローラ３６を下面前方から見た斜視図である。なお、図３では、第２コントローラ３６のケーブル３８は省略されている。
【００５８】
第２コントローラ３６は、たとえばプラスチック成型によって形成されたハウジング５２を有している。ハウジング５２は、平面視では、前後方向（Ｚ軸方向）に略細長い楕円形状を有し、後端側の左右方向（Ｘ軸方向）の幅が先端側のそれよりも狭くされている。また、ハウジング５２は、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している。ハウジング５２は、第１コントローラ３４と同様に、全体として大人や子供の片手で把持可能な大きさであるが、長手方向（Ｚ軸方向）の長さは、第１コントローラ３４のハウジング４４よりもやや短くされている。この第２コントローラ３６でも、プレイヤは、ボタンやスティックを操作することと、コントローラ自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【００５９】
ハウジング５２の上面の先端側には、アナログジョイスティック５４ａが設けられる。ハウジング５２の先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向（図３に示すＹ軸方向）に並べて、Ｃボタン５４bおよびＺボタン５４ｃが設けられる。アナログジョイスティック５４ａおよび各ボタン５４ｂ，５４ｃには、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。第２コントローラ３６に設けられるアナログジョイスティック５４ａおよび各ボタン５４ｂ，５４ｃは、包括的に参照符号５４を用いて示されることもある。
【００６０】
また、第２コントローラ３６のハウジング５２内には加速度センサ８６（図１１）が設けられている。この加速度センサ８６としては、第１コントローラ３４の加速度センサ８４と同様の加速度センサが適用される。具体的には、この実施例では３軸加速度センサが適用され、第２コントローラ３６の上下方向（Ｙ軸方向）、左右方向（Ｘ軸方向）および前後方向（Ｚ軸方向）の３軸方向のそれぞれで加速度を検知する。したがって、第１コントローラ３４の場合と同様に、検出された加速度に適宜な演算処理を施すことによって、第２コントローラ３６の傾きや回転、重力方向に対する加速度センサ８６の姿勢などを算出することができる。また、振り等によって第１コントローラ３４に加えられた動きについても同様に算出することができる。
【００６１】
図４には第２コントローラ３６のコネクタ４０の外観の一例が示される。図４は、コネクタ４０を下面前方から見た斜視図である。なお、ここでもケーブル３８は省略されている。コネクタ４０は、たとえばプラスチック成型によって形成されたハウジング１２２を有する。ハウジング１２２の下面にはフック１２４が設けられている。このフック１２４は、本来的には、図５に示すように、コネクタ４０を第１コントローラ３４（のコネクタ４２）と直に接続した場合に、第１コントローラ３４に装着されたストラップ５６のひもを掛け止めるためのものである。
【００６２】
図６にはジャイロセンサユニット１００の外観の一例が示される。図６（Ａ）は、ジャイロセンサユニット１００を上面前方から見た斜視図であり、図６（Ｂ）は、ジャイロセンサユニット１００を下面後方から見た斜視図である。
【００６３】
ジャイロセンサユニット１００は、たとえばプラスチック成型によって形成されたハウジング１１０を有している。ハウジング１１０は、略直方体形状を有しており、その長さは第１コントローラ３４のハウジング４４の長さのおよそ１／５、その幅および厚みはハウジング４４の幅および厚みとほぼ同じである。プレイヤは、第１コントローラ３４にジャイロセンサユニット１００を装着した状態でも、第１コントローラ３４自体の位置や向きを変えることによって、ゲーム操作を行うことができる。
【００６４】
ハウジング１１０の前面および後面には上述のコネクタ１０６および１０８が、ハウジング１１０の両側面には一対のリリースボタン１１２ａおよび１１２ｂが、そしてハウジング１１０の下面にはロックスイッチ１１４が、それぞれ設けられている。ハウジング１１０の前面下端から下面先端にかけては、第１コントローラ３４にジャイロセンサユニット１００を装着した状態でストラップ５６用の孔４８ｃが露見するように（図８）、略球面状の凹部１１０ａが設けられている。
【００６５】
ハウジング１１０の前面にはまた、コネクタ１０６を挟んで横方向（Ｘ軸方向）に対向する位置に、一対のリリースボタン１１２ａおよび１１２ｂとそれぞれ連繋する一対のフック１１２Ｆａおよび１１２Ｆｂが設けられている。ジャイロセンサユニット１００を第１コントローラ３４に装着するべく、コネクタ１０６をコネクタ４２に接続すると、一対のフック１１２Ｆａおよび１１２Ｆｂはハウジング４４後面の一対の孔４８ａおよび４８ｂ（図２（Ａ））に挿入され、フック１１２Ｆａおよび１１２Ｆｂの爪がハウジング４４の内壁に引っ掛かる。これによって、ジャイロセンサユニット１００は、第１コントローラ３４の後面に固定される。
【００６６】
こうして第１コントローラ３４に装着されたジャイロセンサユニット１００が図８に示される。この状態で一対のリリースボタン１１２ａおよび１１２ｂを押せば、爪の引っ掛かりは解け、ジャイロセンサユニット１００を第１コントローラ３４から取り外せるようになる。
【００６７】
ロックスイッチ１１４は、このようなリリースボタン１１２ａおよび１１２ｂにロックをかけるためのスライドスイッチである。リリースボタン１１２ａおよび１１２ｂは、ロックスイッチ１１４が第１位置（たとえば後ろ寄り）にあるとき押下不能（ロック状態）であり、ロックスイッチ１１４が第２位置（たとえば前寄り）にあるとき押下可能（解除状態）である。ハウジング１１０内には、ロックバネ１１８ａおよび１１８ｂ（図７）が設けられ、リリースボタン１１２ａおよび１１２ｂを押下すると反発するように構成され、押下されていないときは爪が引っ掛かった状態を維持するように構成されている。このため、ジャイロセンサユニット１００を取り外すには、ユーザは、ロックスイッチ１１４を第１位置から第２位置にスライドさせたうえで、リリースボタン１１２ａおよび１１２ｂを押す必要がある。
【００６８】
このように、ジャイロセンサユニット１００は、第１コントローラ３４の後面に装着されるため、ゲーム操作中にジャイロセンサユニット１００に加わる遠心力は専ら、ジャイロセンサユニット１００を第１コントローラ３４に押し付けるように作用する。また、ジャイロセンサユニット１００をフック１１２Ｆａおよび１１２Ｆｂで第１コントローラ３４の後面に固定する一方、フック１１２Ｆａおよび１１２Ｆｂを開放するためリリースボタン１１２ａおよび１１２ｂにはロックスイッチ１１４を設けたため、ジャイロセンサユニット１００を第１コントローラ３４に固定することができる。
【００６９】
ハウジング１１０の後面にはまた、コネクタ１０８に装着されるコネクタカバー１１６を収納可能な凹部１１０ｂが、このコネクタ１０８の周囲に形成される。コネクタカバー１１６は、その主面の一方端部に、前後（Ｚ軸方向）に長細い薄手の（すなわち曲折容易な）突起１１６ａを有する。この突起１１６ａの先端部分がハウジング１１０と係合されており、コネクタカバー１１６は、コネクタ１０８から取り外された状態でもハウジング１１０に係留される。
【００７０】
コネクタカバー１１６はまた、その主面の他方端部に、左右（Ｘ軸方向）に長細い厚手の（すなわち曲折困難な）突起１１６ｂを有する。突起１１６ｂの厚み（Ｚ軸方向の高さ）は、第２コントローラ３６のコネクタ４０に設けられたフック１２４（図４）の厚み（Ｙ軸方向の高さ）とほぼ同じである。第１コントローラ３４にジャイロセンサユニット１００を介して第２コントローラ３６が接続された場合、コネクタカバー１１６は、図９に示すように、その主面が水平となって、突起１１６ｂがフック１２４の側面と係合される。コネクタ１０８から取り外されたコネクタカバー１１６をこうしてコネクタ４０と一体化することで、操作性や見た目が改善されるだけでなく、コネクタ４０をジャイロセンサユニット１００に固定することができる。
【００７１】
図７にはジャイロセンサユニット１００の構成の一例が示される。ジャイロセンサユニット１００は、上述したハウジング１１０、コネクタ１０６および１０８、リリースボタン１１２ａおよび１１２ｂ、フック１１２Ｆａおよび１１２Ｆｂ、ロックスイッチ１１４、コネクタカバー１１６ならびにロックバネ１１８ａおよび１１８ｂに加え、ジャイロ基板１２０および支持部材１２６を備える。ジャイロ基板１２０はコネクタ１０６および１０８の各々と信号線で接続され、支持部材１２６はジャイロ基板１２０ならびにコネクタ１０６および１０８を支持する。
【００７２】
ジャイロ基板１２０にはジャイロセンサ１０４が設けられる。ジャイロセンサ１０４は、１軸のジャイロセンサ１０４ａおよび２軸のジャイロセンサ１０４ｂの２チップで構成される。ジャイロセンサ１０４ａはヨー角に関する角速度（Ｙ軸周りの角速度）を検出するためのものであり、ジャイロセンサ１０４ｂはロール角およびピッチ角に関する２つの角速度（Ｚ軸周りの角速度およびＸ軸周りの角速度）を検出するためのものである。ジャイロセンサ１０４ａおよび１０４ｂは、ジャイロ基板１２０の上面１２０ａに水平に並べて設けられる。
【００７３】
なお、ジャイロセンサ１０４ａおよび１０４ｂの配置は、図７に示されたものに限らない。他の実施例では、ジャイロセンサ１０４ａは、ジャイロ基板１２０の上面１２０ａおよび下面１２０ｂの一方に水平に設けられ、ジャイロセンサ１０４ｂは、ジャイロ基板１２０の上面１２０ａおよび下面１２０ｂの他方に水平に、ジャイロ基板１２０を挟んでジャイロセンサ１０４ａと対向するように設けられる。その他の実施例では、ジャイロセンサ１０４ａはジャイロ基板１２０の上面１２０ａおよび下面１２０ｂの一方に垂直に設けられ、ジャイロセンサ１０４ｂはジャイロ基板１２０の上面１２０ａおよび下面１２０ｂの他方に水平に設けられる。
【００７４】
また、ジャイロセンサ１０４は、２チップ構成とは限らず、３個の１軸ジャイロセンサ（３チップ）で構成してもよく、１個の３軸ジャイロセンサ（１チップ）で構成してもよい。いずれの場合も、上述の３つの角速度を適正に検出できるように、各チップの位置や向きが決定される。さらにまた、場合によっては、ジャイロセンサ１０４は、１個の２軸ジャイロセンサで構成しても、２個または１個の１軸ジャイロセンサで構成してもよい。
【００７５】
なお、図２に示した第１コントローラ３４、図３および図４に示した第２コントローラ３６、および図６に示したジャイロセンサユニット１００の形状や、ボタン（スイッチまたはスティック等）の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置等に適宜変更され得る。
【００７６】
なお、センサは、好ましい実施例ではジャイロセンサ（角速度センサ）であるが、たとえば加速度センサ、速度センサ、変位センサ、回転角センサなど、他のモーションセンサでもよい。モーションセンサ以外にも、傾斜センサ、イメージセンサ、光センサ、圧力センサ、磁気センサ、温度センサなどがあり、いずれのセンサを追加する場合でも、センサの検出対象を利用した操作が可能となる。いずれのセンサを用いた場合でも、従来操作装置に接続されていた他の装置をそのまま使用しながら、操作装置に当該センサを追加することができる。
【００７７】
また、コントローラ１４の電源は、第１コントローラ３４内に取替可能に収容されるバッテリ（図示せず）によって与えられる。第２コントローラ３６には、コネクタ４０およびケーブル３８を介してこの電源が供給される。第１コントローラ３４にジャイロセンサユニット１００が接続されている場合、ジャイロセンサユニット１００にはコネクタ４２および１０６を介してこの電源が供給される。さらにジャイロセンサユニット１００に第２コントローラ３６が接続されていれば、第１コントローラ３４からジャイロセンサユニット１００に供給された電源の一部は、コネクタ１０８、コネクタ４０およびケーブル３８を介して第２コントローラ３６にも与えられる。
【００７８】
図１０は図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。図示は省略するが、ハウジング１６内の各コンポーネントは、プリント基板に実装される。図２に示すように、ゲーム装置１２には、ＣＰＵ６０が設けられ、ゲームプロセッサとして機能する。また、ＣＰＵ６０には、システムＬＳＩ６２が接続される。このシステムＬＳＩ６２には、外部メインメモリ６６、ＲＯＭ／ＲＴＣ６８、ディスクドライブ７４およびＡＶ  ＩＣ７６が接続される。
【００７９】
外部メインメモリ６６は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、ＣＰＵ６０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ６８は、いわゆるブートＲＯＭであり、ゲーム装置１２の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ７４は、光ディスク２２からプログラム，画像データや音声データ等を読み出し、ＣＰＵ６０の制御の下で、後述する内部メインメモリ６２ｅまたは外部メインメモリ６６に書き込む。
【００８０】
システムＬＳＩ６２には、入出力プロセッサ６２ａ、ＧＰＵ(Graphics Processor Unit)６２ｂ，ＤＳＰ(Digital Signal Processor)６２ｃ，ＶＲＡＭ６２ｄおよび内部メインメモリ６２ｅが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。入出力プロセッサ（Ｉ／Ｏプロセッサ）６２ａは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後述する。
【００８１】
ＧＰＵ６２ｂは、描画手段の一部を形成し、ＣＰＵ６０からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、ＣＰＵ６０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ６２ｂに与える。
【００８２】
図示は省略するが、上述したように、ＧＰＵ６２ｂにはＶＲＡＭ６２ｄが接続される。ＧＰＵ６２ｂが作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンデータやテクスチャデータなどのデータ）は、ＧＰＵ６２ｂがＶＲＡＭ６２ｄにアクセスして取得する。ただし、ＣＰＵ６０は、描画に必要な画像データを、ＧＰＵ６２ｂを介してＶＲＡＭ６２ｄに書き込む。ＧＰＵ６２ｂは、ＶＲＡＭ６２ｄにアクセスして描画のためのゲーム画像データを作成する。
【００８３】
なお、この実施例では、ＧＰＵ６２ｂがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、ＧＰＵ６２ｂは当該任意のアプリケーションについての画像データを生成する。
【００８４】
また、ＤＳＰ６２ｃは、オーディオプロセッサとして機能し、内部メインメモリ６２ｅや外部メインメモリ６６に記憶されるサウンドデータや音波形（音色）データを用いて、スピーカ２８から出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【００８５】
上述のように生成されたゲーム画像データおよびオーディオデータは、ＡＶ  ＩＣ７６によって読み出され、ＡＶコネクタ７８を介してモニタ２６およびスピーカ２８に出力される。したがって、ゲーム画面がモニタ２６に表示され、ゲームに必要な音（音楽）がスピーカ２８から出力される。
【００８６】
また、入出力プロセッサ６２ａには、フラッシュメモリ６４、無線通信モジュール７０および無線コントローラモジュール７２が接続されるとともに、拡張コネクタ８０およびメモリカード用コネクタ８２が接続される。また、無線通信モジュール７０にはアンテナ７０ａが接続され、無線コントローラモジュール７２にはアンテナ７２ａが接続される。
【００８７】
図示は省略するが、入出力プロセッサ６２ａは、無線通信モジュール７０を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ６２ａは、定期的にフラッシュメモリ６４にアクセスし、ネットワークへ送信する必要があるデータ（「送信データ」とする）の有無を検出し、当該送信データが有る場合には、無線通信モジュール７０およびアンテナ７０ａを介してネットワークに送信する。また、入出力プロセッサ６２ａは、他のゲーム装置から送信されるデータ（「受信データ」とする）を、ネットワーク、アンテナ７０ａおよび無線通信モジュール７０を介して受信し、当該受信データをフラッシュメモリ６４に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ６２ａは、ダウンロードサーバからダウンロードしたデータ（ダウンロードデータとする）をネットワーク、アンテナ７０ａおよび無線通信モジュール７０を介して受信し、そのダウンロードデータをフラッシュメモリ６４に記憶する。
【００８８】
また、入出力プロセッサ６２ａは、コントローラ３４から送信される入力データをアンテナ７２ａおよび無線コントローラモジュール７２を介して受信し、内部メインメモリ６２ｅまたは外部メインメモリ６６のバッファ領域に記憶（一時記憶）する。入力データは、ＣＰＵ６０の処理（たとえば、ゲーム処理）によって利用された後、バッファ領域から消去される。
【００８９】
なお、この実施例では、上述したように、無線コントローラモジュール７２は、Bluetooth規格に従ってコントローラ３４との間で通信を行う。このため、コントローラ１４からデータを取得するだけでなく、ゲーム装置１２からコントローラ１４に所定の命令を送信し、コントローラ１４の動作をゲーム装置１２から制御することもできる。
【００９０】
さらに、入出力プロセッサ６２ａには、拡張コネクタ８０およびメモリカード用コネクタ８２が接続される。拡張コネクタ８０は、ＵＳＢやＳＣＳＩのようなインタフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、コントローラ３４とは異なる他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ８０に有線ＬＡＮアダプタを接続し、無線通信モジュール７０に代えて当該有線ＬＡＮを利用することもできる。メモリカード用コネクタ８２には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ６２ａは、拡張コネクタ８０やメモリカード用コネクタ８２を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００９１】
詳細な説明は省略するが、電源ボタンがオンされると、システムＬＳＩ６２には、ゲーム装置１２の各コンポーネントに図示しないＡＣアダプタを経て電源が供給され、通常の通電状態となるモード（「通常モード」と呼ぶこととする）が設定される。一方、電源ボタンがオフされると、システムＬＳＩ６２には、ゲーム装置１２の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード（以下、「スタンバイモード」という）が設定される。
【００９２】
この実施例では、スタンバイモードが設定された場合には、システムＬＳＩ６２は、入出力プロセッサ６２ａ、フラッシュメモリ６４、外部メインメモリ６６、ＲＯＭ／ＲＴＣ６８および無線通信モジュール７０、無線コントローラモジュール７２以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、ＣＰＵ６０がアプリケーションを実行することはない。
【００９３】
なお、システムＬＳＩ６２には、スタンバイモードにおいても電源が供給されるが、ＧＰＵ６２ｂ、ＤＳＰ６２ｃおよびＶＲＡＭ６２ｄへのクロックの供給を停止することにより、これらを駆動しないようにして、消費電力を低減するようにしてある。
【００９４】
また、図示は省略するが、ゲーム装置１２のハウジング１６内部には、ＣＰＵ６０やシステムＬＳＩ６２などのＩＣの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【００９５】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタンがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【００９６】
また、通常モードとスタンバイモードとの切り替えは、コントローラ３４の電源スイッチ８０ｉのオン／オフの切り替えによって、遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール７２ａへの電源供給を行わない設定にしてもよい。
【００９７】
リセットボタンもまた、システムＬＳＩ６２に接続される。リセットボタンが押されると、システムＬＳＩ６２は、ゲーム装置１２の起動プログラムを再起動する。イジェクトボタンは、ディスクドライブ７４に接続される。イジェクトボタンが押されると、ディスクドライブ７４から光ディスク２２が排出される。
【００９８】
図１１には、第１コントローラ３４と第２コントローラ３６とがジャイロセンサユニット１００を介して接続されたときのコントローラ１４全体の電気的構成の一例が示される。
【００９９】
第１コントローラ３４は、その内部に通信部８８を備え、通信部８８には、操作部４６、撮像情報演算部５０、加速度センサ８４およびコネクタ４２が接続される。操作部４６は、上述の操作ボタンないし操作スイッチ４６ａ‐４６ｉを示す。操作部４６が操作されると、その操作を示すデータが通信部８８に出力される。撮像情報演算部５０からは、マーカ３０ａおよび３０ｂの被写界内における位置座標を示すデータが通信部８８に出力される。
【０１００】
さらに、上述したように、コントローラ３４には、撮像情報演算部５０が設けられる。この撮像情報演算部５０は、赤外線フィルタ５０ａ、レンズ５０ｂ、撮像素子５０ｃおよび画像処理回路５０ｄによって構成される。赤外線フィルタ５０ａは、コントローラ３４の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ２６の表示画面近傍（周辺）に配置されるマーカ３０ａおよび３０ｂは、モニタ２６の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ５０ａを設けることによってマーカ３０ａおよび３０ｂの画像をより正確に撮像することができる。レンズ５０ｂは、赤外線フィルタ５０ａを透過した赤外線を集光して撮像素子５０ｃへ出射する。撮像素子５０ｃは、たとえばＣＭＯＳセンサあるいはＣＣＤのような固体撮像素子であり、レンズ５０ｂによって集光された赤外線を撮像する。したがって、撮像素子５０ｃは、赤外線フィルタ５０ａを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子５０ｃによって撮像された画像を撮像画像と呼ぶ。撮像素子５０ｃによって生成された画像データは、画像処理回路５０ｄで処理される。画像処理回路５０ｄは、撮像画像内における撮像対象（マーカ３０ａおよび３０ｂ）の位置を算出し、第４所定時間毎に、当該位置を示す各座標値を撮像データ（後述するマーカ座標データ）としてマイコン９０に出力する。なお、画像処理回路５０ｄにおける処理については後述する。
【０１０１】
図１２は、コントローラ３４を用いてゲームプレイするときの状態を概説する図解図である。ただし、ゲームプレイのみならず、他のアプリケーションを実行したり、ＤＶＤを再生したりする場合も同様である。図１２に示すように、ビデオゲームシステム１０でコントローラ３４を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ３４を把持する。厳密に言うと、プレイヤは、コントローラ３４の先端面（撮像情報演算部５０が撮像する光の入射口４４ｂ側）がマーカ３０ａおよび３０ｂの方を向く状態でコントローラ３４を把持する。ただし、図１からも分かるように、マーカ３０ａおよび３０ｂは、モニタ２６の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ３４が指示する画面上の位置を変更したり、コントローラ３４と各マーカ３０ａおよび３０ｂとの距離を変更したりすることによってゲーム操作を行う。
【０１０２】
なお、図１２では分かり難いが、上述したジャイロユニット１００がコントローラ３４に接続される場合も同様である。
【０１０３】
図１３は、マーカ３０ａおよび３０ｂと、コントローラ３４との視野角を説明するための図である。図１３に示すように、マーカ３０ａおよび３０ｂは、それぞれ、視野角θ１の範囲で赤外光を放射する。また、撮像情報演算部５０の撮像素子５０ｃは、コントローラ３４の視線方向を中心とした視野角θ２の範囲で入射する光を受光することができる。たとえば、マーカ３０ａおよび３０ｂの視野角θ１は、共に３４°（半値角）であり、一方、撮像素子５０ｃの視野角θ２は４１°である。プレイヤは、撮像素子５０ｃが２つのマーカ３０ａおよび３０ｂからの赤外光を受光することが可能な位置および向きとなるように、コントローラ３４を把持する。具体的には、撮像素子５０ｃの視野角θ２の中にマーカ３０ａおよび３０ｂの少なくとも一方が存在し、かつ、マーカ３０ａまたは３０ｂの少なくとも一方の視野角θ１の中にコントローラ３４が存在する状態となるように、プレイヤはコントローラ３４を把持する。この状態にあるとき、コントローラ３４は、マーカ３０ａおよび３０ｂの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ３４の位置および向きを変化させることによってゲーム操作を行うことができる。
【０１０４】
なお、コントローラ３４の位置および向きがこの範囲外となった場合、コントローラ３４の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
【０１０５】
操作可能範囲内でコントローラ３４が把持される場合、撮像情報演算部５０によって各マーカ３０ａおよび３０ｂの画像が撮像される。すなわち、撮像素子５０ｃによって得られる撮像画像には、撮像対象である各マーカ３０ａおよび３０ｂの画像（対象画像）が含まれる。図１４は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路５０ｄは、各マーカ３０ａおよび３０ｂの撮像画像における位置を表す座標（マーカ座標）を算出する。
【０１０６】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路５０ｄは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路５０ｄは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である２つのマーカ３０ａおよび３０ｂに対応する画像３０ａ’および３０ｂ’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像である画像３０ａ’および３０ｂ’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【０１０７】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路５０ｄは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子５０ｃの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子５０ｃによって撮像された撮像画像の解像度が１２６×９６であるとし、重心位置は１０２４×７６８のスケールで算出されるものとする。つまり、マーカ座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。
【０１０８】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをＹ軸正方向とし、右向きをＸ軸正方向とする座標系（ＸＹ座標系）で表現されるものとする。
【０１０９】
また、対象画像が正しく検出される場合には、判定処理によって２つの高輝度部分が対象画像として判定されるので、２箇所のマーカ座標が算出される。画像処理回路５０ｄは、算出された２箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ（マーカ座標データ）は、上述したように、マイコン９０によって入力データに含まれ、ゲーム装置１２に送信される。
【０１１０】
ゲーム装置１２（ＣＰＵ６０）は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ２６の画面上におけるコントローラ３４の指示位置（指示座標）と、コントローラ３４からマーカ３０ａおよび３０ｂまでの各距離とを算出することができる。具体的には、２つのマーカ座標の中点の位置から、コントローラ３４の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、コントローラ３４と、マーカ３０ａおよび３０ｂとの距離に応じて変化するので、２つのマーカ座標間の距離を算出することによって、ゲーム装置１２はコントローラ３４と、マーカ３３０ａおよび３０ｂとの間の距離を把握できる。
【０１１１】
図１１に戻って、加速度センサ８４が検出した加速度を示すデータもまた、通信部８８へ出力される。加速度センサ８４は、たとえば最大２００フレーム／秒程度のサンプリング周期を有する。
コネクタ４２には、ジャイロセンサユニットのコネクタ１０６が接続される。ジャイロセンサユニット１００は、その内部にマイコン１０２およびジャイロセンサ１０４を含む。ジャイロセンサ１０４は、上述のジャイロセンサ１０４ａおよび１０４ｂを示しており、たとえば加速度センサ８４と同様のサンプリング周期を有する。マイコン１０２は、ジャイロセンサ１０４が検出した角速度を示すデータをコネクタ１０６およびコネクタ４２を介して通信部８８に出力する。
【０１１２】
ジャイロセンサユニット１００のコネクタ１０８には、第２コントローラ３６から延びるケーブル３８のコネクタ４０が接続される。コネクタ４０には、第２コントローラ３６の操作部５４および加速度センサ８６が接続される。操作部５４は、上述のスティック５４ａおよび操作ボタン５４ｂ、５４ｃを示す。操作部５４が操作されると、その操作を示すデータがケーブル３８、コネクタ４０およびコネクタ４２を介してジャイロセンサユニット１００のマイコン１０２に与えられる。マイコン１０２は、このデータをコネクタ１０６、コネクタ４２を介して通信部８８に出力する。また、加速度センサ８６も、加速度センサ８４と同様のサンプリング周期を有しており、これにより検出された加速度を示すデータもまた、マイコン１０２によって通信部８８に出力される。
【０１１３】
なお、上述した通信部８８への各出力は、たとえば１／２００秒周期で実行される。したがって、任意の１／２００秒間に、操作部４６からの操作データと、撮像情報演算部５０のからの位置座標データと、加速度センサ８４からの加速度データと、ジャイロセンサ１０４からの角速度データと、操作部５４からの操作データと、加速度センサ８６からの加速度データとが、１回ずつ通信部８８に出力される。
【０１１４】
図１６には、図１１に示した全体構成のうちジャイロセンサユニット１００の要部構成が示される。上述のコネクタ４２、コネクタ１０６、コネクタ１０８およびコネクタ４０は、それぞれたとえば６ピンのコネクタであり、この６ピンの中に、コネクタ間の接続状態を示す変数“Attach”を制御するためのAttachピンが含まれている。Attachは、コネクタ間が切断されていることを示す“Ｌｏｗ”と、コネクタ間が接続されていることを示す“Ｈｉｇｈ”との間で変化する。以下では特に、コネクタ４２・コネクタ１０６間つまり第１コントローラ３４・ジャイロセンサユニット１００間のAttachを“Attach１”と呼び、コネクタ１０８・コネクタ４０間つまりジャイロセンサユニット１００・第２コントローラ３６間のAttachを“Attach２”と呼ぶ。
【０１１５】
Attach１は、第１コントローラ３４にジャイロセンサユニット１００が装着されていても、アプリケーションがジャイロ非対応型であり、かつジャイロセンサユニット１００に第２コントローラ３６が接続されていない場合には、このジャイロ非対応アプリからジャイロセンサユニット１００が見えなくなるように、ジャイロセンサユニット１００のマイコン１０２によって“Ｌｏｗ”に制御される（スタンバイモード：図１４参照）。スタンバイモードでは、ジャイロセンサ１０４への電源供給は停止され、ジャイロ機能は停止状態となる。マイコン１０２は専ら、Attach２に基づくモード切り替えと、ジャイロ対応アプリからの指示に基づく電源管理とを行う。
【０１１６】
上記６ピンのうち他の２つにはＩ２Ｃバスが割り当てられており、ジャイロセンサユニット１００は、第１コントローラ３４側のＩ２Ｃバスと第２コントローラ３６側のＩ２Ｃバスとを互いに接続／分離するためのバススイッチＳＷをさらに含む。バススイッチＳＷは、第２コントローラ３６がジャイロセンサユニット１００を介して第１コントローラ３４に接続された状態で、ジャイロ非対応アプリが実行されるときに、マイコン１０２によりオンされる。以降、第２コントローラ３６からのデータは、マイコン１０２を経由することなく、Ｉ２Ｃバスを通じて通信部８８に出力されるようになる（バイパスモード：図１４参照）。したがって、マイコン１０２は、スタンバイモードと同様、モード切り替えと電源管理とを行えばよく、消費電力が抑制される。また、ジャイロセンサユニット１００を装着したままでも、ジャイロ非対応アプリを実行できる。バススイッチＳＷがオフのときは、バスはマイコン１０２に接続され、第１コントローラ３４に出力するデータは、マイコン１０２によって制御される。
【０１１７】
バススイッチＳＷはまた、スタンバイモードでもオンされる。これによって、ジャイロ対応型のアプリケーションは、上述のようにAttach１が“Ｌｏｗ”に制御されていても、Ｉ２Ｃバスの特別なアドレスを参照することで、第１コントローラ３４にジャイロセンサユニット１００が装着されているかどうかを確認できる。
【０１１８】
なお、ジャイロセンサユニット１００には、上述した“スタンバイ”および“バイパス”に加え、“ジャイロ”および“ジャイロ＆第２コントローラ”の計４モードが準備されている。後の２つのモードでは、バススイッチＳＷはオフされる。
【０１１９】
ジャイロセンサユニット１００のマイコン１０２は、２種類のＡ／Ｄ変換回路１０２ａおよび１０２ｂを含んでおり、ジャイロセンサ１０４から出力される３軸周りの角速度信号は、これらＡ／Ｄ変換回路１０２ａおよび１０２ｂの各々に与えられる。Ａ／Ｄ変換回路１０２ａでは、ジャイロセンサ１０４の検出範囲の全部（たとえば±３６０度／秒）を対象とする高角速度モードのＡ／Ｄ変換処理が実行され、Ａ／Ｄ変換回路１０２ｂでは、ジャイロセンサ１０４の検出範囲の一部（たとえば±９０度／秒）を対象とする低角速度モードのＡ／Ｄ変換処理が実行される。マイコン１０２は、これら２種類のＡ／Ｄ変換結果のいずれか一方を角速度データとして出力する。
【０１２０】
具体的には、Ａ／Ｄ変換回路１０２ａおよび１０２ｂからある時刻に対応する２種類の角速度データが出力されると、マイコン１０２は最初、このうち低角速度モードの角速度データについて、その値Ａが第１閾値Ｔｈ１から第２閾値Ｔｈ２（＞Ｔｈ１）までの範囲内にあるかどうか、すなわち条件“Ｔｈ１≦Ａ≦Ｔｈ２”が満足されるか否かを、軸毎に、つまりヨー、ロールおよびピッチの各々について判定する。次に、これら３つの判定結果に基づいて、低角速度モードおよび高角速度モードのいずれか１つを選択する。たとえば、３つの判定結果それぞれに関して、ＹＥＳであれば低角速度モードを選択し、ＮＯであれば高角速度モードを軸ごとに選択する。そして、軸ごとに選択されたモードに従う角速度データを、選択されたモードを示すモード情報と共にそれぞれ出力する。つまり、角速度に応じてデータの精度を変えることによって、同じデータ量であっても、低速のときにはより精度の高いデータを出力することができる。
【０１２１】
図１６には、ジャイロセンサユニット１００が取り扱うデータのフォーマットが示される。図１６（Ａ）はジャイロセンサユニット１００用データのフォーマットを示し、図１６（Ｂ）は第２コントローラ３６用データのフォーマットを示す。ジャイロセンサユニット１００用のデータは、ヨー角速度データ、ロール角速度データおよびピッチ角速度データと、ヨー角速度モード情報、ロール角速度モード情報およびピッチ角速度モード情報と、第２コネクタ接続情報と、ジャイロ・第２コントローラ識別情報とを含む。
【０１２２】
ただし、図１７に示すように、ｙ軸の回転がヨー角で表わされ、ｘ軸の回転がピッチ角で表わされ、そして、ｚ軸の回転がロール角で表わされるものとする。
【０１２３】
ヨー角速度データ、ロール角速度データおよびピッチ角速度データは、ジャイロセンサ１０４から出力されるヨー角速度信号、ロール角速度信号およびピッチ角速度信号をＡ／Ｄ変換して得られる、たとえば各１４ビットのデータである。ヨー角速度モード情報、ロール角速度モード情報およびピッチ角速度モード情報は、それぞれ対応する角速度データのモードを示す各１ビットの情報であり、高角速度モードに対応する“０”と、低角速度モードに対応する“１”との間で変化する。
【０１２４】
第２コントローラ接続情報は、コネクタ１０６に第２コントローラ３６が接続されているか否かを示す１ビットの情報であり、非接続を示す“０”と、接続を示す“１”との間で変化する。ジャイロ・第２コントローラ識別情報は、当該データがジャイロセンサユニット１００から出力されたデータであるか第２コントローラ３６から出力されたデータであるかを識別する１ビットの情報であり、ジャイロセンサユニット１００からのデータであることを示す“１”と、第２コントローラ３６からのデータであることを示す“０”との間で変化する。
【０１２５】
一方、第２コントローラ３６用のデータは、左右方向（Ｘ軸方向）のスティック操作および前後方向（Ｚ軸方向）のスティック操作をそれぞれ示すＸスティック操作データおよびＹスティック操作データと、Ｘ軸方向の加速度、Ｙ軸方向の加速度およびＺ軸方向の加速度をそれぞれ示すＸ加速度データ、Ｙ加速度データおよびＺ加速度データと、ボタン操作データと、第２コネクタ接続情報と、ジャイロ・第２コントローラ識別情報とを含む。
【０１２６】
ジャイロセンサユニット１００は通信部８８に、図１６（ａ）のフォーマットに従うジャイロ用データと、図１６（Ｂ）のフォーマットに従う第２コントローラ用データとを、それぞれたとえば１／２００秒周期で交互に出力する。したがって、片方のフォーマットに関しては、１／１００秒周期で出力されることになるが、これはゲームの処理等で一般的な処理期間である１／６０秒周期よりも十分短いことから、データを交互に出力してもゲーム処理で両方のデータを１フレームで同時に利用することができる。
【０１２７】
図１１に示す通信部８８は、マイクロコンピュータ（マイコン）９０、メモリ９２、無線モジュール９４およびアンテナ９６を含む。マイコン９０は、処理の際にメモリ９２を記憶領域（作業領域やバッファ領域）として用いながら、無線モジュール９４を制御して、取得したデータをゲーム装置１２に送信したりゲーム装置１２からのデータを受信したりする。
【０１２８】
ジャイロセンサユニット１００から通信部８８に出力されたデータは、マイコン９０を経て一時的にメモリ９２に格納される。第１コントローラ３４内の操作部４６、撮像情報演算部５０および加速度センサ８４から通信部８８に出力されたデータもまた、メモリ９２に一時的に格納される。マイコン９０は、ゲーム装置１２への送信タイミングが到来すると、メモリ９２に格納されているデータをコントローラデータとして無線モジュール９４へ出力する。コントローラデータには、図１６（Ａ）および図１６（Ｂ）に示したジャイロ用データおよび／または第２コントローラ用データに加えて、第１コントローラ用データが含まれる。第１コントローラ用データには、加速度センサ８４の出力に基づくＸ加速度データ、Ｙ加速度データおよびＺ加速度データと、撮像情報演算部５０の出力に基づく位置座標データと、操作部または入力手段４６の出力に基づくボタン操作データ（キーデータ）とが含まれる。
【０１２９】
無線モジュール９４は、Bluetoothのような近距離無線通信技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ９６から放射する。つまり、コントローラデータは、無線モジュール９４で微弱電波信号に変調されて第１コントローラ３４から送信される。微弱電波信号はゲーム装置１２側のBluetooth通信ユニット７４で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置１２はコントローラデータを取得することができる。ゲーム装置１２のＣＰＵ６０は、コントローラ１４から取得したコントローラデータに基づいてゲーム処理を行う。なお、第１コントローラ３４とゲーム装置１２との無線通信は、無線ＬＡＮなど他の規格に従って実行されてもよい。
【０１３０】
このゲームシステム１０では、ボタン操作だけでなく、コントローラ１４自体を動かすことによっても、ゲームなどのアプリケーションに対する入力を行うことができる。ゲームをプレイする際には、たとえば図１８に示すように、プレイヤは、その右手で第１コントローラ３４（具体的にはハウジング４４の把持部４４ａ：図２）を持ち、その左手で第２コントローラ３６を持つ。上述のように、第１コントローラ３４には３軸方向の加速度を検出する加速度センサ８４が内蔵され、第２コントローラ３６にも同様の加速度センサ８６が内蔵されている。第１コントローラ３４および第２コントローラ３６がそれぞれプレイヤによって動かされると、加速度センサ８４および加速度センサ８６によって、それぞれのコントローラ自身の動きを示す３軸方向の加速度値が検出される。第１コントローラ３４にジャイロセンサユニット１００が装着されている場合には、第１コントローラ３４自身の動きを示す３軸周りの角速度値がさらに検出される。
【０１３１】
これらの検出値は、先述したコントローラデータの態様でゲーム装置１２に送信される。ゲーム装置１２（図１０）では、コントローラ１４からのコントローラデータは、入出力プロセッサ６２ａによってアンテナ７２ａおよび無線コントローラモジュール７２を介して受信され、受信されたコントローラデータは、内部メインメモリ６２ｅまたは外部メインメモリ６６のバッファ領域に書き込まれる。ＣＰＵ４４は、内部メインメモリ６２ｅまたは外部メインメモリ６６のバッファ領域に格納されたコントローラデータを読み出し、このコントローラデータから検出値つまりコントローラ１４によって検出された加速度および／または角速度の値を復元する。
【０１３２】
なお、角速度データには高角速度および低角速度の２つのモードがあるため、これら２つのモードにそれぞれ対応する２種類の角速度復元アルゴリズムが準備される。角速度データから角速度の値を復元するにあたっては、当該角速度データのモードに対応する角速度復元アルゴリズムが、角速度モード情報に基づいて選択される。
【０１３３】
ＣＰＵ６０はまた、このような復元処理と並行して、復元された加速度からコントローラ１４の速度を計算する処理を実行してもよい。さらに並行して、計算された速度からコントローラ１４の移動距離ないし位置を求めることもできる。一方、復元された角速度からは、コントローラ１４の回転角が求まる。なお、加速度を積算して速度を求めたり、角速度を積算して回転角を求めたりする際の初期値（積分定数）は、たとえば、撮像情報演算部５０のからの位置座標データに基づいて計算できる。位置座標データはまた、積算によって蓄積されていく誤差の修正にも用いることができる。
【０１３４】
ゲーム処理は、こうして求められた加速度、速度、移動距離、角速度および回転角などの変数に基づいて実行される。したがって、上記の処理は全てを行わなくともよく、ゲーム処理に必要な変数を適宜算出すればよい。なお、角速度や回転角も、原理的には加速度から計算し得るが、そのためには、ゲームプログラムに複雑なルーチンが必要で、ＣＰＵ６０にも重い処理負荷がかかる。ジャイロセンサユニット１００を利用することで、プログラム開発が容易になり、ＣＰＵ６０の処理負荷も軽減される。
【０１３５】
ところで、ゲームには、第１コントローラ３４しか利用しない１コントローラ用ゲームと、第１コントローラ３４および第２コントローラ３６を利用する２コントローラ用ゲームとがあり、そして各ゲームは、ジャイロ対応およびジャイロ非対応のいずれかに分類される。メインコントローラである第１コントローラ３４は、いずれのゲームをプレイする場合にも使用できる。また、拡張コントローラである第２コントローラ３６は、２コントローラ用ゲームをプレイするときジャイロセンサユニット１００を介して、または直に第１コントローラ３４に接続され、１コントローラゲームをプレイするときには通常取り外される。
【０１３６】
一方、拡張センサないし拡張コントローラであるジャイロセンサユニット１００は、ジャイロ非対応ゲームをプレイする場合には不要であるが、わざわざ取り外さなくてもよい。このため、ジャイロセンサユニット１００は通常、第１コントローラ３４に装着したままにされ、第１コントローラ３４と一体で取り扱われる。第２コントローラ３６は、コネクタ４０の接続先がコネクタ４２からコネクタ１０８に変わる点を除けば、ジャイロセンサユニット１００が介在しない場合と同様に着脱される。
【０１３７】
図１９には、ジャイロセンサユニット１００のマイコン１０２による制御がモード毎に記載したテーブルが示される。ジャイロセンサユニット１００に準備されているモードは、先述した“スタンバイ”、“バイパス”、“ジャイロ”および“ジャイロ＆第２コントローラ”の４種類であり、マイコン１０２の制御対象は、“ジャイロ機能”、“ジャイロ電源”、“バススイッチ”、“拡張コネクタ”、“Attach１”および“Ｉ２Ｃアドレス”の６項目に及ぶ。
【０１３８】
ジャイロ機能は、スタンバイおよびバイパスの各モードでは停止状態（No Active）に置かれる一方、ジャイロおよびジャイロ＆第２コントローラの各モードでは起動状態（Active）に置かれる。ジャイロ電源つまりジャイロセンサ１０４への電源供給は、スタンバイおよびバイパスの各モードで停止（ＯＦＦ）され、ジャイロおよびジャイロ＆第２コントローラの各モードではていし停止（ＯＮ）される。バススイッチＳＷは、スタンバイおよびバイパスの各モードで接続（Connect）され、ジャイロおよびジャイロ＆第２コントローラの各モードでは切断（Disconnect）される。
【０１３９】
拡張コネクタつまりコネクタ１０８は、バイパスおよびジャイロ＆第２コントローラの各モードで起動状態に置かれ、スタンバイおよびジャイロの各モードでは停止状態に置かれる。Ａｔｔａｃｈ１は、スタンバイモードで非接続状態を示す“Ｌｏｗ”に制御され、バイパス、ジャイロおよびジャイロ＆第２コントローラの各モードでは接続状態を示す“Ｈｉｇｈ”に制御される。Ｉ２Ｃアドレスに関しては、スタンバイおよびバイパスの各モードに限って、特別なアドレスが注目される。
【０１４０】
モード間の切り換えは、図２０に示す要領で行われる。図２０（Ａ）にはアプリケーションがジャイロ対応である場合の切り換え処理が、図２０（Ｂ）にはアプリケーションがジャイロ非対応である場合の切り換え処理が、それぞれ示される。図２０（Ａ）および図２０（Ｂ）に共通して、すなわちジャイロ対応アプリかジャイロ非対応アプリかによらず、ジャイロセンサユニット１００は、ジャイロセンサユニット１００自身が第１コントローラ３４に接続されるのに応答して起動し、初期モードであるスタンバイモードに入る。ここで第２コントローラ３６が接続されると、スタンバイモードからバイパスモードに移行し、その後に第２コントローラ３６が取り外されると、バイパスモードからスタンバイモードに復帰する。
【０１４１】
ここで、ジャイロ対応アプリは、必要に応じて角速度データを取得するべく、ジャイロセンサユニット１００に対して呼び出しおよびリセットをかける。上述のように、本実施例では、通信によってゲーム機からコントローラを制御することが可能であるので、アプリケーションによってジャイロセンサユニット１００を制御することが可能である。このため、図１９（Ａ）に示すように、ジャイロセンサユニット１００は、スタンバイモードでアプリケーションから呼び出しを受けるとジャイロモードに移行し、ジャイロモードでアプリケーションからリセットを受けるとスタンバイモードに復帰する。ジャイロセンサユニット１００はまた、ジャイロモードで第２コントローラ３６が接続されるとジャイロ＆第２コントローラモードに移行し、ジャイロ＆第２コントローラモードで第２コントローラ３６が取り外されるとジャイロモードに復帰する。ジャイロセンサユニット１００はさらにまた、ジャイロ＆第２コントローラモードでアプリケーションからリセットを受けるとバイパスモードに移行し、バイパスモードでアプリケーションから呼び出しを受けるとジャイロ＆第２コントローラモードに復帰する。
【０１４２】
一方、ジャイロ非対応アプリは、ジャイロセンサユニット１００に対して呼び出しやリセットといった働きかけを行う機能がない。このため、ジャイロ非対応アプリを実行する際には、図２０（Ｂ）に示すように、ジャイロセンサユニット１００のモードは、スタンバイモードおよびバイパスモードの間で切り換わるに止まる。
【０１４３】
ジャイロセンサユニット１００のこのようなモード切り替えは、マイコン１０２が、図１９に示したテーブルを参照して、実現するが、ここではこれ以上の詳細な説明は省略する。
【０１４４】
このようなゲームシステム１０を用いた仮想ゲームの一例を、図面を参照しながら説明することにする。まず、ゲームの概要について説明をする。図２１は、第１の実施例としてのゲームをプレイヤがプレイする様子を示した図である。第１の実施例は、プレイヤが、第１コントローラ３４と、第２コントローラ３６とを動かすことによってゲーム内の水上バイクを操作するゲームである。図２１に示すように、プレイヤは第１コントローラ３４と第２コントローラ３６とを向かい合わせ、２つを一体となったハンドルであるかのように持つ。そして、水上バイクのゲーム開始後は、２つのコントローラをなるべく一直線上にしたまま、実際の水上バイクのハンドルのように傾ける。実際の水上バイクと同様に、２つのコントローラをプレイヤから見てロール方向に傾ければ機体が傾くとともに進行方向を左右へ曲げることができる。たとえば図２１に示すように、プレイヤが両コントローラを左に傾けた場合には、図２２（ａ）に示すように、ゲーム空間内の水上バイク（および水上バイクと一体となったプレイヤオブジェクト）ＰＯは左に姿勢を傾けつつ左に曲がる。また、プレイヤが両コントローラをピッチ方向へ傾ければ、機体の姿勢を前後に傾けることができる。たとえば、プレイヤが、上を向く方向に両コントローラを傾ければ、図２２（ｂ）に示すように、ゲーム空間内において、水上バイクＰＯは機体の前部分を浮き上がらせるような姿勢をとる。ただし、図２２（ｂ）はゲーム空間内の水上バイクＰＯを横から示したもので、実際のゲーム画面は図２２（ａ）のように水上バイクＰＯを後ろから見たものになる。
【０１４５】
また、たとえばＢボタン４６ｈをアクセルボタンとして、Ｂボタン４６ｈを押し続けている間は前進できるものとする。したがって、実際の水上バイクのハンドルに設けられたアクセルと同じような感覚でアクセル操作をすることができる。
【０１４６】
ところで、水上バイクではなく通常のバイクのハンドルであれば、右手で握る側のハンドルをピッチ方向へひねることによって加速を行うが、本実施例のゲームにおいても、右手のひねりで加速をすることもできる。具体的には、第１コントローラ３４がｚ軸を中心に回転された場合に、ゲーム内の水上バイクＰＯを加速させる。つまり、右手を本物のバイクのアクセルのようにひねることで加速することができる。本実施例においては、アクセル操作は、上述のＢボタン４６ｈの操作を基本とし、さらにひねりを加えることによって、一時的にボタン操作での上限の速度以上に加速できる。
【０１４７】
すなわち、プレイヤは実際の水上バイクに近い直感的なハンドル操作とアクセル操作ができる。そしてさらに実際のバイクのアクセル操作に近い操作で水上バイクＰＯをさらに加速させることもできる。プレイヤは加速のために常にコントローラをひねり続けなくともボタンによって速度の制御ができ、特に加速したいタイミングでひねりを加えることで、通常走行以上の速度を出すことができるようになっているので、常にひねらせることに比べてプレイヤの負担を軽減している。したがって、水上バイクではなく通常のバイクのゲーム等の別実施例において、よりリアルな操作をさせることを優先させる場合には、第１コントローラ３４の姿勢のみからアクセルの強さを決定するようにしてもよい。
【０１４８】
更に、本実施例では、水上バイクＰＯが波を乗り越えたときの姿勢によっては、一時的に水上バイクＰＯが宙に浮いている状態となる（以下、この状態のことをジャンプ状態と呼ぶ）。そして、ジャンプ状態のときに、プレイヤが第１コントローラ３４をプレイヤから見たヨー方向（第１コントローラのｙ軸回り、もしくは場合によりｘ軸回り）に回転させると、図２２（ｃ）に示すように水上バイクＰＯを横方向に回転（スピン）させることができる。この操作に際しては、第１コントローラ３４を手元で回転させてもよいし、プレイヤ自身が２つのコントローラを持ったまま横に一回転してもよい。当該回転操作によって発生した角速度が、水上バイクＰＯの姿勢に反映されて、水上バイクＰＯが横に回転する様が描画される。換言すると、本実施例では、ジャンプ状態のときは、ジャイロセンサユニット１００から取得されるヨー方向の角速度データを水上バイクＰＯの姿勢に反映させるような制御を行っている。
【０１４９】
図２３および図２４において、上述のコントローラの姿勢に基づいた操作をより詳細に示す。図２３において、Ｍ１およびＭ２は、それぞれ第１コントローラ３４および第２コントローラ３６の姿勢である。姿勢はたとえば、３次元の回転行列として表され、基準となる状態からどのような回転をした姿勢であるかを表す。基準となる状態は、たとえば第１コントローラ３４と第２コントローラ３６を向かい合わせて水平にした状態であって、図２３（ａ）に示すような状態である。それぞれの加速度センサの各軸方向を、それぞれ第１コントローラ３４に関するものをｘ１、ｘ１、ｚ１、第２コントローラ３６に関するものをｘ２、ｙ２、ｚ２として示すが、図２３（ａ）の基準状態において、第１コントローラ３４と第２コントローラ３６の軸方向が一致せずに向かい合うことになる。回転の算出は、加速度センサの座標系ではなくて、空間内に定められた座標系（図２３（ａ）に示すxyz）で表される回転として算出される。本実施例における座標系の設定の例として、座標系のｘ方向をプレイヤから見て右方向、つまり基準状態のｚ２方向とし、ｙ方向をプレイヤの上方向、つまり基準状態でのｙ１およびｙ２方向、ｚ方向をプレイヤから見て正面方向、つまり基準状態でのｘ１方向になるように定める。
【０１５０】
姿勢Ｍ１およびＭ２は、加速度に基づいて決定される。すなわち、第１コントローラ３４および第２コントローラ３６からそれぞれ得られる加速度が重力加速度ｇ１およびｇ２であるとみなして、重力方向は鉛直下方向であるという前提から、コントローラの姿勢Ｍ１とＭ２を算出する。すなわち、加速度データｇ１およびｇ２がそれぞれの加速度センサの座標系における３次元のベクトルとして得られ、それらを空間座標系において鉛直下方向、ｙ軸負方向に向ければ、相対的にセンサの各軸が空間座標系で向いている方向が定められ、その姿勢が基準状態からどのような回転をしたものであるかを算出することで姿勢Ｍ１、Ｍ２も算出される。たとえば、図２３（ｂ）に示すように、第１コントローラ３４に加えられる加速度がｇ１’に変化した場合に、ｇ１’のベクトル方向を空間座標系でのｙ軸負方向へ向けた場合のｘ１、ｙ１、ｚ１の向きがｘ１’、ｙ１’、ｚ１’であるので、回転Ｍ１’を算出することができる。姿勢Ｍ１およびＭ２が算出された後、Ｍ１とＭ２を平均した姿勢Ｍｍを算出する。平均の姿勢Ｍｍが、ゲームでの水上バイクＰＯの制御に用いられる。平均の姿勢Ｍｍを制御に用いることで、誤入力等の影響を軽減できるだけでなく、片方のコントローラに並行して他の操作を行っても自然な入力になる。さらに、バイクのハンドルでは、左右のハンドルが一直線上でなく、ハの字状のように所定の角度をなしていたり、並行に近かったりするものもあるが、そのようなハンドルのような向きにプレイヤが２つのコントローラを把持したとしても、平均の姿勢は一直線上にハンドルを把持した場合と同じ姿勢になるので、プレイヤの持ち方のばらつきによる影響を軽減することができる。
【０１５１】
図２３において、３次元の回転とともに便宜上定めた特定のベクトルの向きがどのように変化するかを示し、各コントローラの回転と平均の回転がどのように変化するか説明する。ここでは第１コントローラ３４および第２コントローラ３６の姿勢に対して、上述の基準状態においてコントローラの上方向を向く２つのベクトル（ここではそれぞれｙ１、ｙ２方向）の平均のベクトルをベクトルａｖｅとし、ａｖｅを参照して平均の姿勢Ｍｍの説明をする。基準状態である図２３（ａ）においては、平均ベクトルａｖｅは上向き、つまりｙ軸正方向である。そして、それぞれのコントローラの姿勢の変化により、それぞれのコントローラの上向きベクトルが図２３（ｂ）のｙ１’、ｙ２’となったとき、平均ベクトルは図２３（ｂ）のａｖｅ’となる。図２３（ｂ）においては、第１コントローラ３４と第２コントローラ３６の傾き方が異なっているが、平均ベクトルａｖｅ’の傾きはそれらの平均となる。そして、この平均ベクトルの姿勢に対応するように水上バイクＰＯの姿勢も決定されることになる。実際にはベクトルを算出しなくともよく、ａｖｅがａｖｅ’となるような回転Ｍｍ’自体を算出すればよい。水上バイクＰＯの姿勢は、基準状態での姿勢に回転Ｍｍ’を加えたものとなり、図２３（ｃ）に示すように、右に傾くことになる。水上バイクＰＯの姿勢は、単に基準状態での姿勢を回転させるのではなく、Ｍｍの値に対応して予め姿勢が定められていてもよい。そのようにすれば、傾きに応じて水上バイクＰＯ上でのプレイヤオブジェクトのポーズ等を詳細に設定することができる。
【０１５２】
次に、図２４を参照して、第１コントローラ３４の角速度に基づいた操作を説明する。まず、第１コントローラ３４にひねりを加えることによる水上バイクＰＯの加速操作について説明する。図２４（ａ）および（ｂ）は、図２３と同様にそれぞれ基準状態と操作後におけるコントローラの状態と、平均の回転を示したものであるが、ここではプレイヤの横方向、つまり図２３で空間に定義されたｘ方向に沿って見た図である。図２４（ａ）は、図２３（ａ）同様、基準状態を示す。そして、第１コントローラ３４を手前にひねる操作が加えられた状態を図２４（ｂ）に示す。つまり、第１コントローラ３４をバイクのアクセルに見立てて、水上バイクＰＯを加速させる操作が行われた状態である。このとき、ジャイロセンサ１０４によって第１コントローラ３４のｚ軸回り（本実施例では第１コントローラ３４を横向きに持っているのでピッチ方向の回転となる）に角速度Ｒｚが検出される。コントローラの姿勢は、第１コントローラ３４が大きく傾いた状態となるが、第２コントローラ３６は傾いていないので、平均の回転Ｍｍ’は少ししか傾かない回転となる。すなわち、水上バイクＰＯの姿勢を傾ける目的で第１コントローラ３４と第２コントローラ３６の両方を傾けた場合は傾けた分だけ水上バイクＰＯが傾くが、加速目的で第１コントローラ３４のみをひねった場合は、水上バイクＰＯの傾きは限定的なものとなり、不自然に傾いてしまうことが抑制される。水上バイクＰＯは図２４（ｃ）に示されるように少しだけ浮き上がるように傾き、それと共に角速度Ｒｚの入力に基づいてゲーム空間内で加速される。すなわち、加速と共に浮き上がるので、水上バイクの挙動としても違和感が無いものとなる。このように、第１コントローラ３４の回転を加速操作に用いても、姿勢の反映が軽減され、かつ、加速と共に浮き上がらせるので、コントローラの姿勢によるオブジェクトの姿勢制御と、コントローラの回転によるオブジェクトの加速とを同時に、かつ違和感無く実現することができる。
【０１５３】
次に、上述したような、ジャンプ状態のときに水上バイクＰＯを横に回転させる操作およびこのときの制御処理の概要について説明する。上述のように、本実施例では、ジャンプ状態のような、仮想ゲーム空間内でプレイヤオブジェクト（本実施例では水上バイクＰＯ）が一時的に宙に浮いている状態の時、角速度データに基づいて姿勢制御を行っている。このようにジャンプ状態の時の姿勢制御をジャイロセンサ１０４からの角速度データを用いて行うことによって、以下のような利点がある。まず、第１コントローラ３４のヨー方向の回転に関して、加速度データを用いて検出することが困難な場合がある。例えば、第１コントローラ３４を地面と水平な姿勢を維持したまま、その場でヨー方向に回転させた場合、加速度データとしては、重力方向の加速度しか出力されない。そのため、回転操作にかかる姿勢の変化を正確に検出することが困難な場合がある。そのため、本実施例では、このような回転操作については、ジャイロセンサユニット１００から角速度データを用いることで、より正確な姿勢変化を検知している。このことによって、コントローラをヨー方向に回転させることで水上バイクＰＯをヨー方向に回転させるという直感的な操作が実現できる。また、ジャイロセンサ１０４はその特性上、一般的に誤差が発生しやすい側面があり、また、長期間にわたって姿勢を算出し続けると、角速度による誤差が蓄積して姿勢の誤差が大きくなるという問題がある。したがって、短時間における変化量に基づいて姿勢の変化量を算出した方が、姿勢の誤差が少なくなる。例えば、第１コントローラ３４を、１秒間にヨー方向に９０度回転させたとき、ジャイロセンサ１０４からは８９度というデータが得られるとする。つまり、実際には９０度回転させているにも関わらず、ジャイロセンサ１０４では８９度分の変化しか検出されておらず、１秒で１度の誤差が発生していると仮定する。この場合、例えば１０秒分のデータに基づいて姿勢制御を行う場合と、２秒分のデータに基づいて姿勢制御を行う場合では、誤差の蓄積が少ない後者のほうがより姿勢変化量の算出精度が高くなる。本実施例では、ジャンプ状態のような「一時的に」宙に浮いている、すなわち、その状態の継続時間が短時間であるような状態における姿勢制御に角速度データを用いているので、そのような性質を効果的に利用することができる。これにより、第１コントローラ３４のより正確な姿勢変化を検出し、水上バイクＰＯに反映できる。
【０１５４】
ところで、本実施例における仮想ゲームでは、基本的なゲーム画面としては、上記図２２（ａ）に示しているように、水上バイクＰＯを後方から見た視点で描画される。すなわち、仮想カメラの位置が水上バイクＰＯの後方に配置され、水上バイクＰＯを追尾するように仮想カメラの位置等が制御される。しかし、上記ジャンプ状態のときに水上バイクＰＯを回転させた場合、もし回転中も仮想カメラの位置を水上バイクＰＯの後方の位置に維持したままにすると、カメラの動きとしては、水上バイクＰＯを中心にその周囲をカメラが大きく回るような動きとなり、水上バイクＰＯを回転させていることがプレイヤにとってわかりにくくなる。また、回転中にプレイヤの方向感覚が失われて、ジャンプ後着水したときに、自分がどの方向を向いているのかが把握しづらくなり、ゲームの興趣を下げることにもなる。そこで、本実施例では、ジャンプ状態のときは一時的にカメラの位置が固定された状態となり、上記図２２（ｃ）に示したように、水上バイクＰＯが回転する様が客観的に描画されるような制御を行っている。そのため、回転に際して、水上バイクＰＯを前面や側面から見た画像も描画されることになる。
【０１５５】
以下、本実施例のジャンプ状態における制御処理の概要を図２５〜図３３を用いて説明する。まず、本実施例の処理では、姿勢制御のための制御層を２つ設けている。図２５は、当該制御層の概念を示す図である。図２５においては、第１制御層３０１と、その上に重なる第２制御層３０２とが示されている（水上バイクＰＯは、更にその上に載っているようなイメージである）。なお、この図は概念図であり、実際のゲーム画面には制御層は表示されない。ゲーム画面に表示されるのは、各制御層で決定された姿勢を反映した水上バイクＰＯである。
【０１５６】
第１制御層３０１は、水上バイクＰＯの基本的な動作・姿勢制御を行うための層であり、図２３や図２４を用いて上述したような第１コントローラ３４の姿勢に基づいた操作が反映される制御層である。また、仮想カメラの位置や画角等も当該第１制御層３０１における姿勢を基準として設定される。
【０１５７】
一方、第２制御層３０２はジャイロセンサユニット１００から出力される角速度データに基づいて姿勢を制御するための制御層である。より具体的には、第２制御層３０２は、ヨー方向における姿勢変化のみが反映される（それ以外の姿勢は第１制御層３０１と同じものとなる）。ここで、第２制御層３０２に対する角速度データの反映は、上記のように、ジャンプ状態のときにのみ行われる。そのため、第２制御層３０２は、ジャンプ中の姿勢制御にのみ用いられるものと言える。また、本実施例では、水上バイクＰＯから水面から離れ始めてから完全に水面から離れた状態となるまでの間（中間状態と呼ぶ）も、水面と水上バイクＰＯとの接触度合いに応じて段階的に姿勢変化を反映させる。具体的には、本実施例では、水面と水上バイクとの接触度Ｄを算出し、当該接触度Ｄの値に応じて、角速度データを第２制御層３０２に反映させる度合いを変化させる。本実施形態では、接触度Ｄの値は”０≦Ｄ≦１”の範囲を採る。そして、Ｄ＝“１”のときは、水上バイクＰＯが完全に水面に浸かっている状態であり、Ｄ＝“０”のときは、水上バイクＰＯが水面から完全に離れている状態を示す。なお、ここでいう”完全に水面に浸かっている状態”とは、水上バイクＰＯが静止している状態で水面に浮いているときと同じだけ、水上バイクＰＯの船底が水に浸かっている状態をいうものとする。つまり、Ｄが“０”のとき（水上バイクＰＯが宙に浮いている状態）は角速度データ２０１ｃが１００％の割合で水上バイクＰＯの姿勢制御に反映されるが、接触度Ｄが１のとき（ジャンプ状態ではない状態）は、角速度データが反映されない（その結果、Ｄが１のときは、第２制御層３０２は第１制御層３０１の上に乗ったまま移動するようなイメージとなる）。また、中間状態のときは、接触度Ｄに応じて、例えば角速度データ２０１ｃが５０％の割合で水上バイクＰＯの姿勢制御に反映される。
【０１５８】
なお、中間状態の時に上記のような段階的（アナログ的）な制御を行うのは、ジャンプ状態と非ジャンプ状態（換言すれば、宙に浮いた状態と接地（接水）している状態）の状態変化が細かく発生するような状況のときに、水上バイクＰＯに対してジャイロセンサ１０４の入力値が瞬間的に作用することを防ぐためである。例えば、水面の状況が図２６に示すような、ごく小さな傾斜（波）が連続しているような状態の時に、接触度Ｄを“０”と“１”の２段階だけを用いて制御を行うと、プレイヤにとってジャンプ中の回転操作を行うタイミングが掴みづらくなる。また、中間状態においてもある程度回転操作を反映させた方が、より違和感のないプレイ感覚をプレイヤに提供する事ができる。そのため、回転操作を行うタイミングをプレイヤに把握させやすくし、違和感のないプレイ感覚を提供すべく、上記のような段階的な姿勢制御を行っている。
【０１５９】
図２７は、水上バイクＰＯがジャンプ状態ではないときの仮想ゲーム空間を俯瞰して見たときの図である。また、図２８は、このときのゲーム画面の一例を示す図である。この状態では、第１制御層３０１と第２制御層３０２の姿勢が同じものになっており、結果的に、水上バイクＰＯの姿勢は第１制御層３０１の姿勢がそのまま反映されたものとなっている。また、仮想カメラは、第１制御層３０１から少し距離を置いた真後ろの位置にある。上記のように、仮想カメラは、第１制御層３０１を真後ろから追いかけるような移動制御が行われる。
【０１６０】
次に、図２９は、水上バイクＰＯがジャンプ状態のときの各制御層の状態の一例を示す図である。また、図３０は、ジャンプ状態のときの仮想ゲーム空間を俯瞰してみたときの図である。図２９および図３０では、第２制御層３０２のみがヨー方向に回転していることが示されている。また、仮想カメラは、第１制御層３０１の後方（図２９では左側）に位置したままである。そして、第２制御層３０２におけるヨー方向回転の姿勢が水上バイクに反映される。その結果、ゲーム画面としては、図３１に示すように、水上バイクＰＯが宙で回転している様が表示されることになる。
【０１６１】
次に、ジャンプ後、水上バイクＰＯが着水したときの処理概要について説明する。ジャンプ後、着水したときは、必ずしも丁度３６０度回転をした状態とは限らず、第１制御層３０１と第２制御層３０２の姿勢がずれていることがあるため、双方の姿勢を一致させるための処理が実行される。図３２は、着水時に実行される処理の概要を示す図である。まず、ジャンプした後、着水した直後の第１制御層３０１、第２制御層３０２の姿勢（接触度Ｄ＝“１”となったとき）が図３２（ａ）に示すような状態とする。図３２（ａ）では、第１制御層はｚ軸方向を示す矢印が上方向（仮想空間内では正面に相当）を向いた状態であり、第２制御層は、ｚ軸方向を示す矢印がやや右上を向いている状態である。そして、本実施例では、着水後、図３２（ｂ）に示すように、第１制御層３０１と第２制御層３０２とが互いに引き合うような姿勢制御が行われ、最終的に図３２（ｃ）に示すように両者の姿勢が一致すれば、この姿勢を新たな第１制御層３０１の姿勢とする処理が実行される。その結果、ジャンプして着水したときの水上バイクの姿勢は、図３３に示すように、ジャンプ前（図２７参照）に比べてやや右向きに変化することになる。このように双方を近づけることで、着水後の姿勢の調整の際に、急激なカメラの変化や急激な水上バイクＰＯの姿勢変化を抑えることができ、自然な調整を行うことができる。また、ジャンプ操作が必ずしも方向制御に影響しなくともよく、単に演技としてのジャンプ動作のみを行いたい場合には、第１制御層はそのままで、第２制御層を段階的に第１制御層に近づけていくような制御であってもよい。つまり、動作終了後に第２制御層が第１制御層と揃っていればよく、第１制御層が第２制御層へ近づく度合いはゲームの目的に応じて変えてもよい。
【０１６２】
このように、本実施例では、仮想ゲーム空間内において水上バイクＰＯが一時的に宙に浮いている状態のときは、角速度に基づく姿勢制御を行うようにしている。これにより、加速度センサだけでは正確に検出できない姿勢変化を、より正確に検出して、ゲーム処理に反映できる。また、ジャンプ状態のような、短期間における姿勢制御に用いるため、誤差の蓄積による影響を抑制することができ、プレイヤにとって違和感のない姿勢制御を行うことが可能となる。
【０１６３】
次に、本実施例で実行されるゲーム処理の詳細を説明する。図３４は、本実施例のプログラムの実行に用いられるデータのメモリマップである。これらのデータはゲーム装置１２の内部メインメモリ６２ｅや外部メインメモリ６６に記憶される。また、内部メインメモリ６２ｅや外部メインメモリ６６には、プログラムも記憶されるが、図示を省略している。
【０１６４】
操作データ２０１は、コントローラ１４から送信されてくる操作データである。これらの中には、加速度センサ８４の出力に基づいた第１コントローラ３４の３軸加速度を示す第１加速度データ２０１ａ、加速度センサ８６の出力に基づいた第２コントローラ３６の３軸加速度を示す第２加速度データ２０１ｂ、ジャイロセンサ１０４の出力に基づいた第１コントローラ３４の３軸の角速度を示す角速度データ２０１ｃや、それぞれのボタン操作に基づいたボタンデータ２０１ｄ等が含まれる。
【０１６５】
制御データ２０２は、操作データ２０１に基づいて算出される、ゲームの制御のためのデータである。制御データ２０２には、第１姿勢データ２０２ａ、第２姿勢データ２０２ｂ、平均姿勢データ２０２ｃ等が含まれる。第１姿勢データ２０２ａは、第１加速度データ２０１ａに基づいて算出される第１コントローラ３４の姿勢であって、図２３や図２４のＭ１にあたる。第２姿勢データ２０２ｂは、第２加速度データ２０１ｂに基づいて算出される第２コントローラ３６の姿勢であって、図２３や図２４のＭ２にあたる。平均姿勢データ２０２ｃは、第１姿勢データ２０２ａ、第２姿勢データ２０２ｂの平均の姿勢であって、図２３や図２４のＭｍにあたる。これらの姿勢データは、本実施例においては３次元の回転行列で表されるが、姿勢が特定できれば他の形式のデータで表されてもよい。
【０１６６】
オブジェクトデータ２０３は、ゲーム内のオブジェクトのデータであって、プレイヤオブジェクト（本実施例においては水上バイクＰＯ）のゲーム空間内での姿勢を示すオブジェクト姿勢データ２０３ａ、プレイヤオブジェクトのゲーム空間内での速さや進行方向を示すオブジェクト速度データ２０３ｂ、プレイヤオブジェクトの状態、たとえばジャンプ状態であるか否か等の状態を示すオブジェクト状態データ２０３ｃが少なくとも含まれる。なお、オブジェクトデータには、それ以外にも、オブジェクトの形状を示すモデルデータや、テクスチャ画像のデータ等も含まれるし、プレイヤオブジェクト以外に関するデータも含まれるが、ここでは図示を省略する。また、これら以外にも、ゲームに必要な音楽や画像のデータ等が適宜記憶されるが、ここでは省略している。
【０１６７】
次に、図３５〜図３９を参照して、ゲーム装置１２によって実行されるゲーム処理について説明する。ゲーム装置１２の電源が投入されると、ゲーム装置１２のＣＰＵ６０は、ＲＯＭ／ＲＴＣ６８に記憶されている起動プログラムを実行し、これによって外部メインメモリ６６等の各ユニットが初期化される。そして、光ディスク２２に記憶されたゲームプログラムが外部メインメモリ６６に読み込まれ、ＣＰＵ６０によって当該ゲームプログラムの実行が開始される。図３５に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。また、図３５に示すステップＳ２〜ステップＳ８の処理ループは、１フレーム毎に繰り返し実行される。なお、本実施形態においては、ジャンプ状態に関連する姿勢制御以外の状況におけるゲーム処理は本発明と直接関連しないので、最低限の説明に留めて詳細な説明は省略する。
【０１６８】
まず、ステップＳ１において、以降の処理において用いられるデータの初期化処理が実行される。具体的には、オブジェクト状態データ２０３ｃに、水上バイクＰＯが通常の走行状態である（つまり、ジャンプ状態ではない）“通常状態”を示すデータが設定される。その他、本処理で用いられる各種変数が初期化され、更に、水上バイクＰＯ等を配置した３次元のゲーム空間が構築されて、ゲーム画像としてモニタ２に描画される。
【０１６９】
次に、ステップＳ２において、コントローラ１４から送信されて随時メモリに記憶される操作データ２０１の取得処理が実行される。
【０１７０】
次に、ステップＳ３において、基本姿勢制御処理が実行される。この処理では、上述した第１制御層３０１での姿勢を制御するための処理が実行される。図３６は、上記ステップＳ３で示した基本姿勢制御処理の詳細を示すフローチャートである。図３６において、まず、ステップＳ２１において、上記取得した操作データ２０１から第１加速度データ２０１ａ、第２加速度データ２０１ｂ、角速度データ２０１ｃが取得される。
【０１７１】
次に、ステップＳ２２において、上記第１加速度データ２０１ａおよび第２加速度データ２０１ｂに基づいて第１制御層３０１における水上バイクＰＯの姿勢を算出するための処理が実行される。より具体的には、まず、ＣＰＵ６０は、上記第１加速度データ２０１ａおよび第２加速度データ２０１ｂから第１コントローラ３４および第２コントローラ３６の姿勢を算出し（３次元の回転行列として算出される）、第１姿勢データ２０２ａと第２姿勢データ２０２ｂとして記憶する。更に、ＣＰＵ６０は、第１姿勢データ２０２ａと第２姿勢データ２０２ｂとの平均となる回転行列を算出し、平均姿勢データ２０２ｃとして記憶する。そして、ＣＰＵ６０は、平均姿勢データ２０２ｃに基づいて第１制御層３０１における水上バイクＰＯの姿勢を決定する。
【０１７２】
次に、ステップＳ２３において、上記決定された第１制御層３０１における水上バイクＰＯの姿勢に対応させて水上バイクＰＯの移動方向（進行方向）および移動速度（１フレーム分の移動量）が設定される。またこのとき、第１制御層３０１における水上バイクＰＯの姿勢を基準として仮想カメラの位置や画角も設定される。以上で、基本姿勢制御処理が終了する。
【０１７３】
図３５に戻り、次に、ステップＳ４において、ジャンプ処理が実行される。本処理では、上述のように接触度Ｄに応じて上記第２制御層３０２における水上バイクＰＯの姿勢を変化させる処理等が実行される。図３７は、上記ステップＳ４で示したジャンプ処理の詳細を示すフローチャートである。図３７において、まず、ステップＳ４１において、水上バイクＰＯと水面との接触度Ｄを算出するための処理が実行される。接触度Ｄの算出手法はどのようなものでも良いが、例えば、水上バイクＰＯの水に浸かっている体積（以下、浸水体積と呼ぶ）に基づいて接触度Ｄを算出することが考えられる。具体的には、図３８に示すような、浸水体積と接触度Ｄとを対応付けたテーブルを予め定義しておく。図３８に示すテーブルでは、一例として、浸水体積を０〜１００の範囲の値で表すとして、浸水体積が７２以上の時は接触度Ｄに“１”が設定されることを示し、浸水体積が０の時は、接触度Ｄに“０”が設定されることが示されている。そして、浸水体積が０〜７２の間では、浸水体積に応じて段階的に接触度Ｄが設定されることが示されている。そして、浸水体積を算出し、当該テーブルを参照することで接触度Ｄを設定することが考えられる。また、浸水体積の算出方法としては、例えば、図３９に示すように、水上バイクＰＯに仮想的な当たり判定球を設定し、いわゆるポリゴンメッシュである水面に対する当該当たり判定球のめりこみ体積を算出することが考えられる。
【０１７４】
図３７に戻り、次に、ステップＳ４２において、接触度Ｄが“１”未満であるか否か、すなわち、ジャンプ状態か否かが判定される。ステップＳ４２の判定の結果、接触度Ｄが“１”のとき、つまり、水上バイクＰＯが完全に水面に浸かっている状態のときは（ステップＳ４２でＮＯ）、後述のステップＳ４８の処理に進められる。一方、接触度Ｄが“１”未満のときは（ステップＳ４２でＹＥＳ）、続くステップＳ４３において、接触度Ｄが“０”か否か、すなわち、完全に水上バイクＰＯが水面から離れた状態であるか否かが判定される。当該判定の結果、接触度Ｄが“０“のときは（ステップＳ４３でＹＥＳ）、ステップＳ４４においてオブジェクト状態データ２０３ｃに、”ジャンプ状態”を示すデータが設定され、処理がステップＳ４５に進められる。一方、接触度Ｄが“０“ではないとき（ステップＳ４３でＮＯ）、ステップＳ４４の処理は行われずに、ステップＳ４５へと処理が進められる。
【０１７５】
次に、ステップＳ４５において、プレイヤから見たヨー方向の角速度ωが取得される。すなわち、上記ステップＳ２で取得された角速度データから、プレイヤからみたヨー方向（具体的には、ｙ軸回りおよび／またはｘ軸回り）の角速度が取得される。
【０１７６】
次に、ステップＳ４６において、回転量の設定が実行される。具体的には、以下の式で回転量が算出される。
回転量＝（１−Ｄ）×ω（×はスカラー倍を示している）
このように、接触度Ｄを用いて回転量を算出することで、水上バイクＰＯが水に浸かっている体積が多いとき（但し、上記のような「完全に」水には浸かっていないとき）は、角速度データの回転量への反映割合は１００％ではなく、例えば５０％だけ反映させる等、水上バイクＰＯが完全に宙に浮いているときよりも回転量が少なくなるというような、アナログ的な表現が可能となる。なお、本実施例ではジャンプ中のヨー方向のスピン動作という予め回転の仕方が決まった動作であるので回転量によって制御を行っているが、それ以外にも例えばロール方向等を加えて２次元以上の自由度で回転を制御することもできる。この場合、ωや回転量は２次元や３次元のベクトルで表される。
【０１７７】
次に、ステップＳ４７において、上記算出された回転量に応じて第２制御層３０２をヨー方向（仮想ゲーム空間でのｙ軸回り）に回転する処理が実行される。そして、当該第２制御層３０２の姿勢が水上バイクＰＯに反映され、水上バイクＰＯがヨー方向に回転することになる。このとき、ゲームの難度調整等の観点から、回転量を少し多めに調整したり（例えば、実際は第１コントローラ３４の回転量は半回転分であっても、水上バイクＰＯはその倍の１回転させる等）、回転動作に惰性をつけるような処理を行っても良い。つまり、水上バイクＰＯをより回転させやすくするような調整処理を行うことで、ゲームの難度を下げ、興趣性を高めるような調整を行っても良い。その後、ジャンプ処理は終了する。
【０１７８】
次に、上記ステップＳ４２の判定の結果、接触度Ｄが“１”のときの処理（ステップＳ４２でＮＯ）について説明する。この場合は、ステップＳ４８において、オブジェクト状態データ２０３ｃが“ジャンプ状態”か否かが判定される。つまり、ジャンプ後着水した直後の状態であるのか、通常の走行状態であるのかが判定される。当該判定の結果、“ジャンプ状態”でなければ（ステップＳ４８でＮＯ）、そのままジャンプ処理は終了する。
【０１７９】
一方、上記ステップＳ４８の判定の結果“ジャンプ状態”のときは（ステップＳ４８でＹＥＳ）、続くステップＳ４９において、着水時処理が実行される。この処理では、図３２を用いて上述したような、第１制御層３０１と第２制御層３０２の姿勢のズレを調整して、新たな第１制御層３０１の姿勢を決定するための処理が実行される。例えば、両者の姿勢ベクトルを算出し、両姿勢ベクトルを平均化することで得られる姿勢を新たな第１制御層３０１の姿勢とする処理が実行される。その後、ステップＳ５０において、オブジェクト状態データ２０３ｃに“通常状態”を示すデータが設定される。以上で、ジャンプ処理は終了する。当該平均化の処理は数フレームかけて滑らかに行われるようにしてもよい。
【０１８０】
図３５に戻り、次に、ステップＳ５において、その他の物理演算、例えば、仮想ゲーム空間内に吹いている「風」や、「波」等の影響を反映させるような演算等を実行して、水上バイクの位置や姿勢を決定する。
【０１８１】
次に、ステップＳ６において、前回の描画から１フレーム分の時間が経過したか否かが判定される。当該判定の結果、１フレーム分の時間が経過していないときは（ステップＳ６でＮＯ）、上記ステップＳ２に戻り、処理が繰り返される（本実施例では、操作データは１／２００秒単位で送信されるため、上記ステップＳ２〜Ｓ６の処理ループは、１／６０秒である１フレーム当たり、３〜４回繰り返されることになる）。一方、ステップＳ６の判定の結果、１フレーム分の時間が経過していれば（ステップＳ１０でＹＥＳ）、ステップＳ７において、描画処理が実行される。すなわち、仮想カメラで仮想ゲーム空間を撮影した画像をゲーム画像としてテレビ２６に表示する処理が実行される。
【０１８２】
ステップＳ７の後、ステップＳ８において、ゲーム終了か否かが判断され、ＹＥＳの場合、ゲーム処理を終了し、ＮＯの場合、ステップＳ２に戻って、ゲーム処理が繰り返される。以上で、本実施例にかかるゲーム処理は終了する。
【０１８３】
このように、本実施例では、ジャンプなどにより仮想空間内で一時的に空中に存在しているオブジェクトの空中での姿勢の変化をジャイロセンサ１０４からの角速度データに基づいて制御している。これにより、検出誤差の影響を最小限に抑え、入力の正確性を高めることが可能となる。
【０１８４】
なお、上述した実施形態では、ジャンプ状態の時の水上バイクＰＯについて、ヨー方向に回転をさせる場合を例に挙げたが、ヨー方向以外の方向（例えばピッチ方向）へ回転させるようにしてもよい。
【０１８５】
また、上記実施例では水上バイクを操作するゲームを例に挙げたため、「水面からのジャンプ」という状態を例としていたが、これに限らず、地面からのジャンプの場合にも本発明が適用できることは言うまでもない。更には、水面や地面のみならず、例えば、巨大モンスターの背中でプレイヤオブジェクトがジャンプする場合のような、重力（引力）が設定されている仮想空間内で、一時的に宙に浮いている状態のオブジェクトを制御する処理全般について、本発明は適用可能である。
【０１８６】
また、上述の実施例では、水上バイクを操作するゲームを例としたが、水上バイクの代わりに例えば自動車オブジェクトを操作するゲームに本発明を適用してもよい。この場合、地面と自動車オブジェクトとの接触度Ｄを算出は、次のようにして行うことが考えられる。すなわち、図４０に示すように、地面の法線方向に仮想的な厚みを設定する。そして、当該厚み内の自動車オブジェクトの体積を算出し、上記接触度Ｄを算出するようにしればよい。つまり、地表から法線方向の所定の高さまでの空間に含まれている自動車オブジェクトの体積に基づいて接触度Ｄを算出すればよい。
【０１８７】
また、接触度Ｄの算出に関して、体積ではなく、地面とオブジェクトとの接触面積を算出して、これに基づいて接触度Ｄを算出するようにしても良い。例えば、スノーボードオブジェクトを操作するゲームを想定すると、図４１に示すように、スノーボードオブジェクトに複数の当たり判定球を設定しておく。そして、地面（ゲーム内容からすれば、雪面として表現される）に接触している（地面にめり込んでいる）当たり判定球の数を接触面積として算出して、上記接触度Ｄを算出するようにしても良い。
【０１８８】
また、上記実施例では、ジャンプ中の姿勢制御にジャイロセンサ１０４からの角速度データを用いていたが、例えば、加速度データを時間で積分することで上記のようなジャンプ状態において操作された第１コントローラ３４の移動速度を算出し、当該速度を用いてジャンプ中のオブジェクトの姿勢制御を行うようにしても良い。例えば、ジャンプ中に第１コントローラ３４を横方向に振ったとき、上記速度が算出され、当該速度が予め定められた所定値以上のときは、プレイヤが操作するオブジェクトが横にスライドするような動きを行うような制御を実行しても良い。また、例えば、レースゲームを想定し、２つのコースが並列している（コース間がある程度の高さを有するレーンで区切られている、あるいは、一方のコースと他方のコースとで高低差がある）場面で、プレイヤが操作する自動車オブジェクトがコース上でジャンプしたときに、コントローラを横に振ることで、当該自動車オブジェクトが横にスライドするように動き制御を行って、隣のコースにコース変更が可能にすることが考えられる。また、アクションゲームなどにおいて、プレイヤオブジェクトがジャンプ中に第１コントローラ３４を上方向に所定の速度以上の速度で振ったとき、いわゆる２段ジャンプを行い、所定の速度以上で下方向に振ると、急降下して着地するような動作制御を行っても良い。また、ジャンプ中に第１コントローラ３４を前後方向（奥行き方向）に移動させたときは、急加速や急ブレーキを行うような処理をしてもいい。例えば、ロボットを操作するゲームにおいて、プレイヤが操作するロボットオブジェクトがジャンプ中に、第１コントローラ３４を奥行き方向に突き出すような操作を行えば、ロボットオブジェクトがバーニアを噴射して前方にダッシュするような制御を行い、第１コントローラ３４を手前方向に引くような操作を行えば、ロボットオブジェクトが逆噴射して後方に下がるようにダッシュするような制御を行うことが考えられる。加速度を積分して算出された速度も、誤差が発生しやすい性質があり、そのような速度に基づいて位置を算出する場合には、前述の角速度と同じような問題が発生し得ると考えられる。したがって、前述の実施例同様に、本願発明を採用することで、直感的な操作を誤差を抑えつつ効率的に実現させることができる。
【産業上の利用可能性】
【０１８９】
本発明にかかるゲーム装置およびゲームプログラムは、フィールドオブジェクトとプレイヤオブジェクトの接触度合いに基づいたプレイヤオブジェクト姿勢制御ができ、据置型ゲーム装置、携帯型ゲーム装置などに有用である。
【図面の簡単な説明】
【０１９０】
【図１】本発明の一実施例に係るゲームシステム１０を説明するための外観図
【図２】本実施例に適用される第１コントローラ（リモコン）の外観を示す図解図
【図３】本実施例に適用される第２コントローラ（ヌンチャク）の本体の外観を示す図解図
【図４】第２コントローラのコネクタの外観を示す図解図
【図５】第１コントローラに第２コントローラのコネクタを接続した状態で、第１コントローラに装着されたストラップのひもをコネクタのフックに掛け止めた様子を示す図解図
【図６】本実施例に適用されるジャイロセンサユニットの外観を示す図解図
【図７】ジャイロセンサユニットの構成を示す図解図
【図８】第１コントローラにジャイロセンサユニットを接続した状態を示す図解図
【図９】第１コントローラにジャイロセンサユニット介して第２コントローラを接続した状態を示す図解図
【図１０】実施例の電気的な構成を示すブロック図
【図１１】実施例に適用されるコントローラ全体の電気的な構成を示すブロック図
【図１２】ジャイロユニットが接続されたコントローラを用いてゲームプレイするときの状態を概説するための図解図
【図１３】図１に示すマーカおよびコントローラの視野角を説明するための図解図
【図１４】対象画像を含む撮像画像の一例を示す図解図
【図１５】プレイヤがコントローラを操作する様子を示す図解図
【図１６】図１１のコントローラにおいて、第１コントローラおよび第２コントローラの間に介在するジャイロセンサユニットの電気的な構成を示すブロック図
【図１７】ジャイロセンサが検出できるヨー角、ピッチ角、ロール角を示す図解図
【図１８】コントローラを用いて実際にゲームをプレイするときにゲームプレイヤが第１コントローラおよび第２コントローラを持っている状態の一例を示す図解図
【図１９】ジャイロセンサユニットのマイコンによる制御をモード毎に記載したテーブルを示す図解図
【図２０】ジャイロセンサユニットに適用されるモード切り替えを示す図解図
【図２１】本実施例の水上バイクゲームをプレイヤがプレイする様子を表す図
【図２２】本実施例の水上バイクゲームにおける、ゲーム空間内の水上スキーオブジェクトの各動作を説明する図
【図２３】本実施例のゲームにおける、加速度に基づいたオブジェクトの姿勢制御手法を説明する図
【図２４】本実施例のゲームにおける、角速度に基づいた操作を説明する図
【図２５】本実施例の姿勢制御の概念を示す図
【図２６】仮想ゲーム空間における水面の状態の一例を示す図
【図２７】水上バイクがジャンプ状態ではないときの仮想ゲーム空間を俯瞰して見たときの図
【図２８】ゲーム画面の一例
【図２９】ジャンプ中における姿勢制御の概念を示す図
【図３０】水上バイクがジャンプ状態のときの仮想ゲーム空間を俯瞰して見たときの図
【図３１】ゲーム画面の一例
【図３２】着水時に実行される処理の概要を説明するための図
【図３３】着水後の仮想ゲーム空間を俯瞰して見た図
【図３４】実施例のゲームで用いられるデータのメモリマップを示す図
【図３５】本発明の実施例に係るゲーム処理を示すフローチャート
【図３６】図３５のステップＳ３で示した基本姿勢制御処理の詳細を示したフローチャート
【図３７】図３５のステップＳ４で示したジャンプ処理の詳細を示したフローチャート
【図３８】浸水体積と接触度Ｄとの対応を示すテーブルの一例
【図３９】浸水体積の算出方法を説明するための図
【図４０】自動車オブジェクトの場合の接触度Ｄの算出方法を説明するための図
【図４１】接地面積の算出方法を説明するための図
【符号の説明】
【０１９１】
１０…ゲームシステム
１２…ゲーム装置
１４…コントローラ
２２…光ディスク
２６…モニタ
２８…スピーカ
４２…コネクタ
４６…操作部
５０…撮像情報演算部
５０ａ…赤外線フィルタ
５０ｂ…レンズ
５０ｃ…撮像素子
５０ｄ…画像処理回路
６０…ＣＰＵ
６２…システムＬＳＩ
６２ａ…入出力プロセッサ
６２ｂ…ＧＰＵ
６２ｃ…ＤＳＰ
６２ｄ…ＶＲＡＭ
６２ｅ…内部メインメモリ
６４…フラッシュメモリ
６６…外部メインメモリ
６８…ＲＯＭ／ＲＴＣ
７０…無線通信モジュール
７０ａ…アンテナ
７２…無線コントローラモジュール
７４…ディスクドライブ
７２ａ…アンテナ
７６…ＡＶ−ＩＣ
７８…ＡＶコネクタ
８０…拡張コネクタ
８２…外部メモリカード用コネクタ
８４…加速度センサ
８６…加速度センサ
８８…通信部
９０…マイコン
９２…メモリ
９４…無線モジュール
９６…アンテナ
１００…ジャイロセンサユニット
１０４…ジャイロセンサ
【図１】
2010094338.tif 000003
【図２】
2010094338.tif 000004
【図３】
2010094338.tif 000005
【図４】
2010094338.tif 000006
【図５】
2010094338.tif 000007
【図６】
2010094338.tif 000008
【図７】
2010094338.tif 000009
【図８】
2010094338.tif 000010
【図９】
2010094338.tif 000011
【図１０】
2010094338.tif 000012
【図１１】
2010094338.tif 000013
【図１２】
2010094338.tif 000014
【図１３】
2010094338.tif 000015
【図１４】
2010094338.tif 000016
【図１５】
2010094338.tif 000017
【図１６】
2010094338.tif 000018
【図１７】
2010094338.tif 000019
【図１８】
2010094338.tif 000020
【図１９】
2010094338.tif 000021
【図２０】
2010094338.tif 000022
【図２１】
2010094338.tif 000023
【図２２】
2010094338.tif 000024
【図２３】
2010094338.tif 000025
【図２４】
2010094338.tif 000026
【図２５】
2010094338.tif 000027
【図２６】
2010094338.tif 000028
【図２７】
2010094338.tif 000029
【図２８】
2010094338.tif 000030
【図２９】
2010094338.tif 000031
【図３０】
2010094338.tif 000032
【図３１】
2010094338.tif 000033
【図３２】
2010094338.tif 000034
【図３３】
2010094338.tif 000035
【図３４】
2010094338.tif 000036
【図３５】
2010094338.tif 000037
【図３６】
2010094338.tif 000038
【図３７】
2010094338.tif 000039
【図３８】
2010094338.tif 000040
【図３９】
2010094338.tif 000041
【図４０】
2010094338.tif 000042
【図４１】
2010094338.tif 000043