(57)【特許請求の範囲】
【請求項１】
第１装置、第２装置、および情報処理装置を含む情報処理システムであって、
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記情報処理装置は、
前記第１センサおよび前記第２センサから送信される出力を受信する受信部と、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御部とを備え、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
前記制御部は、前記第１センサの出力と第２センサの出力とが何れも前記所定条件を満たして前記仮想オブジェクトの移動が継続している状態において、さらに当該第２センサの出力に基づいて、当該仮想オブジェクトに当該移動を継続させながら第２の所定動作をさせる、情報処理システム。
【請求項２】
第１装置、第２装置、および情報処理装置を含む情報処理システムであって、
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記情報処理装置は、
前記第１センサおよび前記第２センサから送信される出力を受信する受信部と、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御部とを備え、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
前記制御部は、仮想空間内で前記仮想オブジェクトが移動を停止している状態において、前記所定条件とは異なる動き出し条件を前記受信した前記第１センサの出力と前記第２センサの出力とが何れも満たす場合、仮想空間内における当該仮想オブジェクトの移動を開始させる、情報処理システム。
【請求項３】
第１装置、第２装置、および情報処理装置を含む情報処理システムであって、
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記情報処理装置は、
前記第１センサおよび前記第２センサから送信される出力を受信する受信部と、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御部とを備え、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
仮想空間内における前記仮想オブジェクトの移動動作には、相対的に移動速度が遅い歩き動作と相対的に移動速度が速いジョギング動作とが少なくとも含まれ、
前記制御部は、
仮想空間内で前記仮想オブジェクトが移動を停止している状態において、第１期間分の前記第１センサの出力および前記第２センサの出力を用いて、仮想空間内における当該仮想オブジェクトの移動を開始させる際の動作を前記歩き動作とするか前記ジョギング動作とするかを判別し、
仮想空間内で前記仮想オブジェクトが移動を継続している状態において、前記第１期間よりも長い第２期間分の前記第１センサの出力および前記第２センサの出力を用いて、仮想空間内における当該仮想オブジェクトの移動動作を前記歩き動作とするか前記ジョギング動作とするかを判別する、情報処理システム。
【請求項４】
第１装置、第２装置、および情報処理装置を含む情報処理システムであって、
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記情報処理装置は、
前記第１センサおよび前記第２センサから送信される出力を受信する受信部と、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御部とを備え、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
前記第１センサは、前記第１装置に作用する角速度を少なくとも検知可能であり、
前記制御部は、前記受信した前記第１センサが検知した角速度を少なくとも用いて、仮想空間内で前記仮想オブジェクトが移動を停止している状態において、仮想空間内における当該仮想オブジェクトの移動開始に関する判定を行う、情報処理システム。
【請求項５】
第１装置、第２装置、および情報処理装置を含む情報処理システムであって、
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記情報処理装置は、
前記第１センサおよび前記第２センサから送信される出力を受信する受信部と、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御部とを備え、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
仮想空間内における前記仮想オブジェクトの移動動作には、相対的に移動速度が遅い歩き動作と相対的に移動速度が速いジョギング動作とが少なくとも含まれ、
前記第１センサは、前記第１装置に作用する角速度および加速度を少なくとも検知可能であり、
前記制御部は、
前記受信した前記第１センサが検知した加速度を用いて、前記ジョギング動作中の前記仮想オブジェクトの移動速度を制御し、
前記受信した前記第１センサが検知した角速度を用いて、前記仮想オブジェクトの前記歩き動作と前記ジョギング動作とを切り替える、情報処理システム。
【請求項６】
第１装置、第２装置、および情報処理装置を含む情報処理システムであって、
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記情報処理装置は、
前記第１センサおよび前記第２センサから送信される出力を受信する受信部と、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御部とを備え、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
前記第１センサは、前記第１装置に作用する角速度および加速度を少なくとも検知可能であり、
前記制御部は、前記第１装置に作用する加速度が変化することを用いて前記仮想オブジェクトの移動制御を行う第１モードと前記第１装置に作用する加速度以外のパラメータが変化することを用いて前記仮想オブジェクトの移動制御を行う第２モードとを切り替えるモード切替部を含み、
前記制御部は、前記第１モードにおいて前記第１センサが検知した加速度の変化量に応じて前記仮想オブジェクトの移動速度を変化させ、前記第２モードにおいて前記第１センサが検知した角速度の変化量に応じて前記仮想オブジェクトの移動速度を変化させる、情報処理システム。
【請求項７】
第１装置、第２装置、および情報処理装置を含む情報処理システムであって、
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記情報処理装置は、
前記第１センサおよび前記第２センサから送信される出力を受信する受信部と、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御部とを備え、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
仮想空間内における前記仮想オブジェクトの移動動作には、相対的に移動速度が遅い低速移動動作と相対的に移動速度が速い高速移動動作とが少なくとも含まれ、
前記制御部は、前記仮想オブジェクトに前記低速移動動作および前記高速移動動作をそれぞれさせるための操作を前記第１装置および前記第２装置を用いるユーザに促し、それぞれ行われた当該操作による当該第１装置の前記第１センサおよび当該第２装置の前記第２センサの出力に基づいて、前記低速移動動作をさせるための操作と前記高速移動動作をさせるための操作とを区別するための閾値を設定する閾値設定部を含み、
前記制御部は、仮想空間内で前記仮想オブジェクトが移動を継続している状態において、受信した前記第１センサの出力および前記第２センサの出力と前記閾値とを用いて、仮想空間内における当該仮想オブジェクトの移動動作が前記低速移動動作か前記高速移動動作かを判別する、情報処理システム。
【請求項８】
第１装置、第２装置、および情報処理装置を含む情報処理システムであって、
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記情報処理装置は、
前記第１センサおよび前記第２センサから送信される出力を受信する受信部と、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御部とを備え、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
前記仮想オブジェクトは、足または手の動きによって仮想空間内における移動が実現するように表現され、
前記制御部は、仮想空間内で前記仮想オブジェクトが移動を継続している状態において、前記第１センサの出力および／または前記第２センサの出力を用いて当該仮想オブジェクトの足または手の動作タイミングを決定するタイミング決定手段を含む、情報処理システム。
【請求項９】
前記制御部は、前記第１装置が動いていることを前記第１センサから送信される出力が示し、かつ、前記第２装置が動いていることを前記第２センサから送信される出力が示している間、前記仮想オブジェクトの移動を継続させる、請求項１乃至８の何れか１つに記載の情報処理システム。
【請求項１０】
前記制御部は、前記第１センサの出力と前記第２センサの出力とのうち、前記第２センサの出力のみに基づいて、前記仮想オブジェクトに前記第２の所定動作をさせる、請求項１に記載の情報処理システム。
【請求項１１】
前記制御部は、前記第１センサの出力と第２センサの出力とが何れも前記所定条件を満たして前記仮想オブジェクトの移動が継続している状態において、前記第１センサの出力と前記第２センサの出力とのうち、さらに当該第１センサの出力のみに基づいて、当該仮想オブジェクトの移動速度を変化させる、請求項１または１０に記載の情報処理システム。
【請求項１２】
前記タイミング決定手段は、前記第１センサの出力を用いて当該仮想オブジェクトの足の動作タイミングを決定し、前記第２センサの出力を用いて当該仮想オブジェクトの手の動作タイミングを決定する、請求項８に記載の情報処理システム。
【請求項１３】
前記第１装置は、ユーザの股に装着され、
前記タイミング決定手段は、前記第１センサの出力が示す前記第１装置の傾き変化を用いて当該仮想オブジェクトの足の動作タイミングを決定する、請求項１２に記載の情報処理システム。
【請求項１４】
前記第２の所定動作は、仮想空間内での移動を継続している状態において、前記仮想オブジェクトの少なくとも上半身の向きを変化させる動作であり、
前記第２センサは、前記第２装置に作用する角速度および加速度を少なくとも検知可能であり、
前記制御部は、前記受信した前記第２センサが検知した角速度および加速度の両方を示す出力を用いて、前記第２の所定動作を制御する、請求項１に記載の情報処理システム。
【請求項１５】
第１装置および第２装置からの出力を用いた処理を行う、情報処理装置のコンピュータで実行される情報処理プログラムであって
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記コンピュータを、
前記第１センサおよび前記第２センサから送信される出力を受信する受信手段と、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御手段として機能させ、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
前記制御手段は、前記第１センサの出力と第２センサの出力とが何れも前記所定条件を満たして前記仮想オブジェクトの移動が継続している状態において、さらに当該第２センサの出力に基づいて、当該仮想オブジェクトに当該移動を継続させながら第２の所定動作をさせる、情報処理プログラム。
【請求項１６】
第１装置および第２装置からの出力を用いた処理を行う情報処理装置であって
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記情報処理装置は、
前記第１センサおよび前記第２センサから送信される出力を受信する受信部と、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御部とを備え、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
前記制御部は、前記第１センサの出力と第２センサの出力とが何れも前記所定条件を満たして前記仮想オブジェクトの移動が継続している状態において、さらに当該第２センサの出力に基づいて、当該仮想オブジェクトに当該移動を継続させながら第２の所定動作をさせる、情報処理装置。
【請求項１７】
第１装置および第２装置からの出力を用いた処理を行う情報処理方法であって
前記第１装置は、
ユーザの下半身に装着される当該第１装置の動きを検知する第１センサと、
前記第１センサの出力を送信する第１送信部とを備え、
前記第２装置は、
ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する第２センサと、
前記第２センサの出力を送信する第２送信部とを備え、
前記第１センサおよび前記第２センサから送信される出力を受信する受信ステップと、
前記受信した前記第１センサの出力と前記第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる制御ステップとを含み、
前記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動であり、
前記制御ステップでは、前記第１センサの出力と第２センサの出力とが何れも前記所定条件を満たして前記仮想オブジェクトの移動が継続している状態において、さらに当該第２センサの出力に基づいて、当該仮想オブジェクトに当該移動を継続させながら第２の所定動作をさせる、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ操作に応じて仮想オブジェクトを動作させる処理を行う情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法に関する。
【背景技術】
【０００２】
従来、ユーザに把持される装置の出力とユーザの足で踏まれる装置の出力とを用いたゲーム処理が実行可能な情報処理装置が開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−４９１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１で開示された情報処理装置では、把持される装置からの出力と、足で踏まれる装置からの出力とは、それぞれ個別にゲーム制御に利用されており、当該装置を操作するユーザに全身を用いた運動を促すという点においては改良の余地がある。
【０００５】
それ故に、本発明の目的は、装置を操作するユーザに全身を用いた運動を促すことを可能とする情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
【０００７】
本発明の情報処理システムの一構成例は、第１装置、第２装置、および情報処理装置を含む。第１装置は、第１センサおよび第１送信部を備える。第１センサは、ユーザの下半身に装着される当該第１装置の動きを検知する。第１送信部は、第１センサの出力を送信する。第２装置は、第２センサおよび第２送信部を備える。第２センサは、ユーザの上半身に装着またはユーザの手に把持される当該第２装置の動きを検知する。第２送信部は、第２センサの出力を送信する。情報処理装置は、受信部および制御部を備える。受信部は、第１センサおよび第２センサから送信される出力を受信する。制御部は、受信した第１センサの出力と第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる。
【０００８】
上記によれば、ユーザの全身を使った操作を促進することができる。また、第１装置および第２装置の出力の両方の組み合わせを用いて、仮想オブジェクトの動作制御ができるため、仮想オブジェクトが実現可能な動作の種類を増加させることができる。
【０００９】
また、上記仮想オブジェクトの第１の所定動作は、仮想空間内における当該仮想オブジェクトの移動でもよい。
【００１０】
上記によれば、仮想オブジェクトを移動させる際にユーザの下半身だけでなく上半身の動きも必要とすることで、ユーザの全身の動きによる操作を促進することができ、現実に歩くときに上半身も動く状態に近づけることができる。
【００１１】
また、上記制御部は、第１装置が動いていることを第１センサから送信される出力が示し、かつ、第２装置が動いていることを第２センサから送信される出力が示している間、仮想オブジェクトの移動を継続させてもよい。
【００１２】
上記によれば、仮想オブジェクトの移動を継続させるために、ユーザの全身の動きを継続させることを促すことができる。
【００１３】
また、上記制御部は、第１センサの出力と第２センサの出力とが何れも所定条件を満たして仮想オブジェクトの移動が継続している状態において、さらに当該第２センサの出力に基づいて、当該仮想オブジェクトに当該移動を継続させながら第２の所定動作をさせてもよい。
【００１４】
上記によれば、第１および第２センサ出力に基づいて仮想オブジェクトを移動させつつ、第２センサのみに基づく異なる仮想オブジェクトの動作も可能とすることで、仮想オブジェクトの動作の幅を広げてゲーム性を高めることができる。また、仮想オブジェクトの移動とは異なる動作を要する操作を必要とすることによって、ユーザの全身を用いた操作をさせつつさらに別の操作を促すことができる。
【００１５】
また、上記制御部は、第１センサの出力と第２センサの出力とのうち、第２センサの出力のみに基づいて、仮想オブジェクトに第２の所定動作をさせてもよい。
【００１６】
上記によれば、仮想オブジェクトの移動とは異なる動作を要する操作による制御を単純にすることができ、当該操作の難易度も抑えることができる。
【００１７】
また、上記制御部は、第１センサの出力と第２センサの出力とが何れも所定条件を満たして仮想オブジェクトの移動が継続している状態において、第１センサの出力と第２センサの出力とのうち、さらに当該第１センサの出力のみに基づいて、当該仮想オブジェクトの移動速度を変化させてもよい。
【００１８】
上記によれば、下半身を用いた操作に合わせて仮想オブジェクトの移動速度が変化するためにユーザの操作感覚における違和感を低減することができる。また、第２センサは、ユーザの下半身を用いた操作とは異なる操作に応じた出力を行うために当該異なる操作によって動かされる可能性があるところ、移動速度の制御が当該出力に基づかないため、ユーザが意図せず移動速度が変化することを抑制することができる。
【００１９】
また、上記制御部は、仮想空間内で仮想オブジェクトが移動を停止している状態において、所定条件とは異なる動き出し条件を受信した第１センサの出力と第２センサの出力とが何れも満たす場合、仮想空間内における当該仮想オブジェクトの移動を開始させてもよい。
【００２０】
上記によれば、ユーザが既に動いて仮想オブジェクトが既に移動を開始している状況において、ユーザおよび仮想オブジェクトが停止している状態から移動を開始するときのセンサ出力の判定条件とは異なる条件を設定することによって、それぞれの状況に応じた適切な動作判定が可能となる。
【００２１】
また、上記仮想空間内における仮想オブジェクトの移動動作には、相対的に移動速度が遅い歩き動作と相対的に移動速度が速いジョギング動作とが少なくとも含まれてもよい。この場合、上記制御部は、仮想空間内で仮想オブジェクトが移動を停止している状態において、第１期間分の第１センサの出力および第２センサの出力を用いて、仮想空間内における当該仮想オブジェクトの移動を開始させる際の動作を歩き動作とするかジョギング動作とするかを判別し、仮想空間内で仮想オブジェクトが移動を継続している状態において、第１期間よりも長い第２期間分の第１センサの出力および第２センサの出力を用いて、仮想空間内における当該仮想オブジェクトの移動動作を歩き動作とするかジョギング動作とするかを判別してもよい。
【００２２】
上記によれば、ユーザおよび仮想オブジェクトが停止している状態から移動を開始するときのセンサ出力の判定を相対的に早期に行うことが可能となり、当該状況におけるユーザの違和感を低減することができる。
【００２３】
また、上記第１センサは、第１装置に作用する角速度を少なくとも検知可能でもよい。上記制御部は、受信した第１センサが検知した角速度を少なくとも用いて、仮想空間内で仮想オブジェクトが移動を停止している状態において、仮想空間内における当該仮想オブジェクトの移動開始に関する判定を行ってもよい。
【００２４】
上記によれば、加速度だけでは判定が難しい状況においても正確な判定を行うことができる。
【００２５】
また、上記仮想空間内における仮想オブジェクトの移動動作には、相対的に移動速度が遅い歩き動作と相対的に移動速度が速いジョギング動作とが少なくとも含まれてもよい。上記第１センサは、第１装置に作用する角速度および加速度を少なくとも検知可能でもよい。この場合、上記制御部は、受信した第１センサが検知した加速度を用いて、ジョギング動作中の仮想オブジェクトの移動速度を制御し、受信した第１センサが検知した角速度を用いて、仮想オブジェクトの歩き操動作とジョギング動作とを切り替えてもよい。
【００２６】
上記によれば、移動動作の種類の切り替えと移動速度の調整とにおいて異なる制御を採用することによって、それぞれの特性に応じたきめ細かい制御が可能となる。
【００２７】
また、上記第１センサは、第１装置に作用する角速度および加速度を少なくとも検知可能でもよい。上記制御部は、モード切替部を含んでもよい。モード切替部は、第１装置に作用する加速度が変化することを用いて仮想オブジェクトの移動制御を行う第１モードと第１装置に作用する加速度以外のパラメータが変化することを用いて仮想オブジェクトの移動制御を行う第２モードとを切り替える。上記制御部は、第１モードにおいて第１センサが検知した加速度の変化量に応じて仮想オブジェクトの移動速度を変化させ、第２モードにおいて第１センサが検知した角速度の変化量に応じて仮想オブジェクトの移動速度を変化させてもよい。
【００２８】
上記によれば、ユーザの運動量を適切に反映することが可能となり、例えば操作音の低減を目的としたユーザの運動態様であっても、運動の強弱を適切に判別することができる。
【００２９】
また、上記仮想空間内における仮想オブジェクトの移動動作には、相対的に移動速度が遅い低速移動動作と相対的に移動速度が速い高速移動動作とが少なくとも含まれてもよい。上記制御部は、閾値設定部を含んでもよい。閾値設定部は、仮想オブジェクトに低速移動動作および高速移動動作をそれぞれさせるための操作を第１装置および第２装置を用いるユーザに促し、それぞれ行われた当該操作による当該第１装置の第１センサおよび当該第２装置の第２センサの出力に基づいて、低速移動動作をさせるための操作と高速移動動作をさせるための操作とを区別するための閾値を設定する。上記制御部は、仮想空間内で仮想オブジェクトが移動を継続している状態において、受信した第１センサの出力および第２センサの出力と閾値とを用いて、仮想空間内における当該仮想オブジェクトの移動動作が低速移動動作か高速移動動作かを判別してもよい。
【００３０】
上記によれば、ユーザの運動能力に合わせた制御が可能となる。
【００３１】
また、上記仮想オブジェクトは、足または手の動きによって仮想空間内における移動が実現するように表現されてもよい。上記制御部は、タイミング決定手段を含んでもよい。タイミング決定手段は、仮想空間内で仮想オブジェクトが移動を継続している状態において、第１センサの出力および／または第２センサの出力を用いて当該仮想オブジェクトの足または手の動作タイミングを決定する。
【００３２】
上記によれば、ユーザの動きと仮想オブジェクトの動きとを同期させることが可能となり、仮想オブジェクトの移動そのものの判定と、仮想オブジェクトをどのように描写するかという判定とを別にすることによって、移動そのものと移動態様とを実際のユーザの動きに合わせたものとして描写されていることを両立することができる。
【００３３】
また、上記タイミング決定手段は、第１センサの出力を用いて当該仮想オブジェクトの足の動作タイミングを決定し、第２センサの出力を用いて当該仮想オブジェクトの手の動作タイミングを決定してもよい。
【００３４】
上記によれば、仮想オブジェクトの足の動作の判定と手の動作の判定とを異なるセンサ出力を用いて行い、それらの判定に基づいて仮想オブジェクトの描写をそれぞれ行うことによって、ユーザの上半身および下半身の動きとそれぞれ同期させて仮想オブジェクトを描写することができる。
【００３５】
また、上記第１装置は、ユーザの股に装着されてもよい。上記タイミング決定手段は、第１センサの出力が示す第１装置の傾き変化を用いて当該仮想オブジェクトの足の動作タイミングを決定してもよい。
【００３６】
上記によれば、第１装置の第１センサによって、ユーザの股の上げ下げを容易に監視することができ、当該股の動きと相関のよい仮想オブジェクトの描写が可能となる。
【００３７】
また、上記第２の所定動作は、仮想空間内での移動を継続している状態において、仮想オブジェクトの少なくとも上半身の向きを変化させる動作でもよい。上記第２センサは、第２装置に作用する角速度および加速度を少なくとも検知可能でもよい。上記制御部は、受信した第２センサが検知した角速度および加速度の両方を示す出力を用いて、第２の所定動作を制御してもよい。
【００３８】
上記によれば、ユーザの上半身の動きに応じて生じる角速度および加速度の両方を用いて、仮想オブジェクトの向きが変化するため、正確に仮想オブジェクトの向きを制御することができる。
【００３９】
また、本発明は、情報処理プログラム、情報処理装置、および情報処理方法の形態で実施されてもよい。
【発明の効果】
【００４０】
本発明によれば、ユーザの全身を使った操作を促進することができる。また、第１装置および第２装置の出力の両方の組み合わせを用いて、仮想オブジェクトの動作制御ができるため、仮想オブジェクトが実現可能な動作の種類を増加させることができる。
【図面の簡単な説明】
【００４１】
【図１】ゲームシステム１に含まれる各装置の一例を示す図
【図２】本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図
【図３】本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図
【図４】本体装置２の一例を示す六面図
【図５】左コントローラ３の一例を示す六面図
【図６】右コントローラ４の一例を示す六面図
【図７】本体装置２の内部構成の一例を示すブロック図
【図８】本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図
【図９】リング型拡張装置の一例を示す図
【図１０】リング型拡張装置５が備える構成要素の電気的な接続関係を示すブロック図
【図１１】ベルト型拡張装置の一例を示す図
【図１２】リング型拡張装置５およびベルト型拡張装置６をユーザが使用する様子の一例を示す図
【図１３】ユーザの足踏み操作に応じて据置型モニタ９に表示されるゲーム画像の一例を示す図
【図１４】ユーザの足踏み操作に応じた左コントローラ３本体および右コントローラ４本体の動作の一例を示す図
【図１５】ユーザがリング型拡張装置５の向き（リング方向）による操作を行う一例を示す図
【図１６】リング型拡張装置５の向きによる操作が行われる際のリング型拡張装置５の動きの一例を示す図
【図１７】本体装置２のＤＲＡＭ８５に設定されるデータ領域の一例を示す図
【図１８】ゲームシステム１で実行される情報処理の一例を示すフローチャート
【図１９】図１８におけるステップＳ１０５において行われる動き出し時処理の詳細な一例を示すサブルーチン
【図２０】図１８におけるステップＳ１０７において行われるユーザ動作判定処理の詳細な一例を示すサブルーチン
【図２１】図１８におけるステップＳ１０８において行われる移動時判定処理の詳細な一例を示すサブルーチン
【図２２】図２１におけるステップＳ１０７において行われるオブジェクト変形処理の詳細な一例を示すサブルーチン
【図２３】図１８におけるステップＳ１１１において行われる停止判定処理の詳細な一例を示すサブルーチン
【図２４】図１８におけるステップＳ１１２において行われるリング方向判定処理の詳細な一例を示すサブルーチン
【発明を実施するための形態】
【００４２】
以下、本実施形態の一例に係る情報処理システムについて説明する。本実施形態における情報処理システムは、一例としてゲームシステム１を用いている。図１は、ゲームシステム１に含まれる各装置の一例を示す図である。図１に示すように、ゲームシステム１は、本体装置２と、左コントローラ３および右コントローラ４と、リング型拡張装置５と、ベルト型拡張装置６とを含む。
【００４３】
本体装置２は、情報処理装置の一例であり、本実施形態ではゲーム機本体として機能する。本体装置２には、左コントローラ３および右コントローラ４がそれぞれ着脱可能である（図１および図３参照）。つまり、ユーザは、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として使用することができる（図２参照）。また、ユーザは、本体装置２と左コントローラ３および右コントローラ４とを別体として使用することもできる（図３参照）。なお、以下においては、本体装置２と各コントローラ３および４とをまとめて、「ゲーム装置」と呼ぶことがある。
【００４４】
リング型拡張装置５は、右コントローラ４に用いられる拡張装置の一例である。リング型拡張装置５は、右コントローラ４をリング型拡張装置５に装着した状態で使用される。また、ベルト型拡張装置６は、左コントローラ３に用いられる拡張装置の一例である。ベルト型拡張装置６は、左コントローラ３をベルト型拡張装置６に装着した状態で使用される。このように、本実施形態においては、ユーザは、各コントローラ３および４を各拡張装置に装着した状態で使用することもできる（図１２参照）。なお、リング型拡張装置５は、右コントローラ４に限らず、左コントローラ３を自身に装着することが可能であってもよい。ベルト型拡張装置６は、左コントローラ３に限らず、右コントローラ４を自身に装着することが可能であってもよい。なお、後述するように、リング型拡張装置５およびベルト型拡張装置６は、右コントローラ４および左コントローラ３それぞれの機能や使用態様を拡張または変更することが可能となる拡張装置として機能するが、それぞれ単に周辺機器として呼称してもかまわない。
【００４５】
図２は、本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図である。図２に示すように、左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、ゲームシステム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００４６】
図３は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図２および図３に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。
【００４７】
図４は、本体装置２の一例を示す六面図である。図４に示すように、本体装置２は、略板状のハウジング１１を備える。本実施形態において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。
【００４８】
また、本体装置２は、本体装置２が左コントローラ３と有線通信を行うための端子である左側端子１７と、本体装置２が右コントローラ４と有線通信を行うための右側端子２１を備える。
【００４９】
図５は、左コントローラ３の一例を示す六面図である。図５に示すように、左コントローラ３は、ハウジング３１を備える。本実施形態においては、ハウジング３１は、縦長の形状、すなわち、上下方向（すなわち、図２および図５に示すｙ軸方向）に長い形状である。左コントローラ３は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング３１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ３は、横長となる向きで把持されることも可能である。左コントローラ３が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００５０】
左コントローラ３は、アナログスティック３２を備える。図５に示すように、アナログスティック３２は、ハウジング３１の主面に設けられる。アナログスティック３２は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック３２を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。なお、左コントローラ３は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック３２を押下する入力が可能である。
【００５１】
左コントローラ３は、各種操作ボタンを備える。左コントローラ３は、ハウジング３１の主面上に４つの操作ボタン３３〜３６（具体的には、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および左方向ボタン３６）を備える。さらに、左コントローラ３は、録画ボタン３７および−（マイナス）ボタン４７を備える。左コントローラ３は、ハウジング３１の側面の左上に第１Ｌボタン３８およびＺＬボタン３９を備える。また、左コントローラ３は、ハウジング３１の側面の、本体装置２に装着される際に装着される側の面に第２Ｌボタン４３および第２Ｒボタン４４を備える。これらの操作ボタンは、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。
【００５２】
また、左コントローラ３は、左コントローラ３が本体装置２と有線通信を行うための端子４２を備える。
【００５３】
図６は、右コントローラ４の一例を示す六面図である。図６に示すように、右コントローラ４は、ハウジング５１を備える。本実施形態においては、ハウジング５１は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００５４】
右コントローラ４は、左コントローラ３と同様、方向入力部としてアナログスティック５２を備える。本実施形態においては、アナログスティック５２は、左コントローラ３のアナログスティック３２と同じ構成である。また、右コントローラ４は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ４は、左コントローラ３と同様、ハウジング５１の主面上に４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、およびＹボタン５６）を備える。さらに、右コントローラ４は、＋（プラス）ボタン５７およびホームボタン５８を備える。また、右コントローラ４は、ハウジング５１の側面の右上に第１Ｒボタン６０およびＺＲボタン６１を備える。また、右コントローラ４は、左コントローラ３と同様、第２Ｌボタン６５および第２Ｒボタン６６を備える。
【００５５】
また、ハウジング５１の下側面には、窓部６８が設けられる。詳細は後述するが、右コントローラ４は、ハウジング５１の内部に配置される赤外撮像部１２３および赤外発光部１２４を備えている。赤外撮像部１２３は、右コントローラ４の下方向（図６に示すｙ軸負方向）を撮像方向として、窓部６８を介して右コントローラ４の周囲を撮像する。赤外発光部１２４は、右コントローラ４の下方向（図６に示すｙ軸負方向）を中心とする所定範囲を照射範囲として、赤外撮像部１２３が撮像する撮像対象に窓部６８を介して赤外光を照射する。窓部６８は、赤外撮像部１２３のカメラのレンズや赤外発光部１２４の発光体等を保護するためのものであり、当該カメラが検知する波長の光や当該発光体が照射する光を透過する材質（例えば、透明な材質）で構成される。なお、窓部６８は、ハウジング５１に形成された孔であってもよい。なお、本実施形態においては、カメラが検知する光（本実施形態においては、赤外光）以外の波長の光の透過を抑制するフィルタ部材を赤外撮像部１２３自身が有する。ただし、他の実施形態においては、窓部６８がフィルタの機能を有していてもよい。
【００５６】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。
【００５７】
図７は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図４に示す構成の他、図７に示す各構成要素８１〜９１、９７、および９８を備える。これらの構成要素８１〜９１、９７、および９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００５８】
本体装置２は、プロセッサ８１を備える。プロセッサ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部であって、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のみから構成されてもよいし、ＣＰＵ機能、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）機能等の複数の機能を含むＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）から構成されてもよい。プロセッサ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、スロット２３に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００５９】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、プロセッサ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００６０】
プロセッサ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００６１】
本体装置２は、ネットワーク通信部８２を備える。ネットワーク通信部８２は、プロセッサ８１に接続される。ネットワーク通信部８２は、ネットワークを介して外部の装置と通信（具体的には、無線通信）を行う。本実施形態においては、ネットワーク通信部８２は、第１の通信態様としてＷｉ−Ｆｉの規格に準拠した方式により、無線ＬＡＮに接続して外部装置と通信を行う。また、ネットワーク通信部８２は、第２の通信態様として所定の通信方式（例えば、独自プロトコルによる通信や、赤外線通信）により、同種の他の本体装置２との間で無線通信を行う。なお、上記第２の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置２との間で無線通信可能であり、複数の本体装置２の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【００６２】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、プロセッサ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、本実施形態においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。なお、コントローラ通信部８３が、受信部の一例に相当する。
【００６３】
図８は、本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図である。なお、本体装置２に関する内部構成の詳細については、図７で示しているため図８では省略している。
【００６４】
左コントローラ３は、本体装置２との間で通信を行う通信制御部１０１を備える。図８に示すように、通信制御部１０１は、端子４２を含む各構成要素に接続される。本実施形態においては、通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１０１は、左コントローラ３が本体装置２に対して行う通信方法を制御する。すなわち、左コントローラ３が本体装置２に装着されている場合、通信制御部１０１は、端子４２を介して本体装置２と通信を行う。また、左コントローラ３が本体装置２から外されている場合、通信制御部１０１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１０１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００６５】
また、左コントローラ３は、例えばフラッシュメモリ等のメモリ１０２を備える。通信制御部１０１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１０２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００６６】
左コントローラ３は、各ボタン１０３（具体的には、ボタン３３〜３９、４３、４４、および４７）を備える。また、左コントローラ３は、アナログスティック（図８では「スティック」と記載する）３２を備える。各ボタン１０３およびアナログスティック３２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１０１へ出力する。
【００６７】
左コントローラ３は、慣性センサを備える。具体的には、左コントローラ３は、加速度センサ１０４を備える。また、左コントローラ３は、角速度センサ１０５を備える。本実施形態においては、加速度センサ１０４は、所定の３軸（例えば、図５に示すｘｙｚ軸）方向に沿った加速度の大きさを検出する。なお、加速度センサ１０４は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ１０５は、所定の３軸（例えば、図５に示すｘｙｚ軸）回りの角速度を検出する。なお、角速度センサ１０５は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。加速度センサ１０４および角速度センサ１０５は、それぞれ通信制御部１０１に接続される。そして、加速度センサ１０４および角速度センサ１０５の検出結果は、適宜のタイミングで繰り返し通信制御部１０１へ出力される。
【００６８】
通信制御部１０１は、各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から、入力に関する情報（具体的には、操作に関する情報、またはセンサによる検出結果）を取得する。通信制御部１０１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００６９】
上記操作データが本体装置２へ送信されることによって、本体装置２は、左コントローラ３に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１０３およびアナログスティック３２に対する操作を、操作データに基づいて判別することができる。また、本体装置２は、左コントローラ３の動きおよび／または姿勢に関する情報を、操作データ（具体的には、加速度センサ１０４および角速度センサ１０５の検出結果）に基づいて算出することができる。
【００７０】
左コントローラ３は、振動によってユーザに通知を行うための振動子１０７を備える。本実施形態においては、振動子１０７は、本体装置２からの指令によって制御される。
【００７１】
左コントローラ３は、電力供給部１０８を備える。本実施形態において、電力供給部１０８は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ３の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。
【００７２】
図８に示すように、右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。また、右コントローラ４は、通信制御部１１１に接続されるメモリ１１２を備える。通信制御部１１１は、端子６４を含む各構成要素に接続される。通信制御部１１１およびメモリ１１２は、左コントローラ３の通信制御部１０１およびメモリ１０２と同様の機能を有する。したがって、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信（具体的には、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信）との両方で本体装置２と通信を行うことが可能であり、右コントローラ４が本体装置２に対して行う通信方法を制御する。なお、通信制御部１１１が、第２送信部の一例に相当する。
【００７３】
右コントローラ４は、左コントローラ３の各入力部と同様の各入力部を備える。具体的には、各ボタン１１３、アナログスティック５２、慣性センサ（加速度センサ１１４および角速度センサ１１５）を備える。これらの各入力部については、左コントローラ３の各入力部と同様の機能を有し、同様に動作する。
【００７４】
また、右コントローラ４は、左コントローラ３と同様、振動子１１７を備える。
【００７５】
また、右コントローラ４は、赤外撮像部１２３を備える。赤外撮像部１２３は、右コントローラ４の周囲を撮像する赤外線カメラを有する。一例として、本体装置２および／または右コントローラ４は、撮像された情報（例えば、撮像された撮像画像における少なくとも一部の領域全体を分割した複数のブロックの輝度に関連する情報等）を算出し、当該情報に基づいて、右コントローラ４の周囲変化を判別する。また、赤外撮像部１２３は、環境光によって撮像を行ってもよいが、本実施形態においては、赤外線を照射する赤外発光部１２４を有する。赤外発光部１２４は、例えば、赤外線カメラが画像を撮像するタイミングと同期して、赤外線を照射する。そして、赤外発光部１２４によって照射された赤外線が撮像対象によって反射され、当該反射された赤外線が赤外線カメラによって受光されることで、赤外線の画像が取得される。これによって、赤外撮像部１２３は、より鮮明な赤外線画像を得ることができる。なお、赤外撮像部１２３と赤外発光部１２４とは、それぞれ別のデバイスとして右コントローラ４内に設けられてもよいし、同じパッケージ内に設けられた単一のデバイスとして右コントローラ４内に設けられてもよい。また、本実施形態においては、赤外線カメラを有する赤外撮像部１２３が用いられるが、他の実施形態においては、撮像手段として、赤外線カメラに代えて可視光カメラ（可視光イメージセンサを用いたカメラ）が用いられてもよい。
【００７６】
右コントローラ４は、処理部１２１を備える。処理部１２１は、通信制御部１１１に接続される。また、処理部１２１は、赤外撮像部１２３、および赤外発光部１２４に接続される。
【００７７】
また、処理部１２１は、ＣＰＵやメモリ等を含み、右コントローラ４に備えられた図示しない記憶装置（例えば、不揮発性メモリ等）に記憶された所定のプログラム（例えば、画像処理や各種演算を行うためのアプリケーションプログラム）に基づいて、本体装置２からの指令に応じて赤外撮像部１２３に対する管理処理を実行する。例えば、処理部１２１は、赤外撮像部１２３に撮像動作を行わせたり、撮像結果に基づく情報（撮像画像の情報、あるいは、当該情報から算出される情報等）を取得および／または算出して通信制御部１１１を介して本体装置２へ送信したりする。また、処理部１２１は、本体装置２からの指令に応じて赤外発光部１２４に対する管理処理を実行する。例えば、処理部１２１は、本体装置２からの指令に応じて赤外発光部１２４の発光を制御する。なお、処理部１２１が処理を行う際に用いるメモリは、処理部１２１内に設けられてもいいし、メモリ１１２であってもよい。
【００７８】
右コントローラ４は、電力供給部１１８を備える。電力供給部１１８は、左コントローラ３の電力供給部１０８と同様の機能を有し、同様に動作する。
【００７９】
図９は、リング型拡張装置の一例を示す図である。なお、図９は、右コントローラ４が装着された状態のリング型拡張装置５を示している。本実施形態においては、リング型拡張装置５は、右コントローラ４を装着可能な拡張装置である。詳細は後述するが、本実施形態においては、ユーザは、リング型拡張装置５に力を加えて変形させるという新規な操作を行う。ユーザは、例えばエクササイズを行う感覚でリング型拡張装置５を用いたフィットネス動作を行うことによって、リング型拡張装置５に対する操作を行うことができる。また、ユーザは、例えばリング型拡張装置５を両手で把持した状態で足踏みしたり屈伸したりする動作を行うことによって、リング型拡張装置５に対する操作を行うことができる。さらに、ユーザは、例えばリング型拡張装置５を両手で把持した状態で所望の方向にリング型拡張装置５を向ける動作を行うことによって、リング型拡張装置５に対する操作を行うことができる。なお、ユーザによって把持されるリング型拡張装置５が、第２装置の一例に相当する。また、右コントローラ４に設けられている加速度センサ１１４および／または角速度センサ１１５が、第２センサの一例に相当する。
【００８０】
図９に示すように、リング型拡張装置５は、環状部２０１と本体部２０２とを備える。環状部２０１は、環状の形状を有する。なお、本実施形態においては、環状部２０１は、後述する弾性部材および台座部によって環状に形成される。本実施形態においては、環状部２０１は、円環状である。なお、他の実施形態においては、環状部２０１の形状は、任意であり、例えば楕円環状であってもよい。
【００８１】
本体部２０２は、環状部２０１に設けられる。本体部２０２は、図示しないレール部を有する。レール部は、右コントローラ４を装着可能な装着部の一例である。本実施形態においては、レール部は、右コントローラ４のスライダ６２（図６参照）に対してスライド可能に係合する。スライダ６２がレール部材に対して所定の直線方向（すなわち、スライド方向）に挿入されることで、レール部材に対してスライダ６２が当該直線方向にスライド移動が可能な状態でレール部材がスライダ６２と係合する。なお、レール部は、コントローラのスライダに対してスライド可能に係合することが可能である点で、本体装置２が有するレール部と同様である。そのため、レール部は、本体装置２が有するレール部と同様の構成であってもよい。
【００８２】
本実施形態においては、右コントローラ４は、係止部６３を有する（図６参照）。係止部６３は、スライダ６２から側方（すなわち、図６に示すｚ軸正方向）に突出して設けられる。係止部６３は、スライダ６２の内部の方向へ移動可能であるとともに、上記側方へ突出した状態となる向きに（例えばバネによって）付勢されている。また、レール部には、切欠きが設けられる。スライダ６２がレール部の奥まで挿入された状態において、係止部６３は、切欠きに係止する。レール部にスライダ６２が係合した状態で係止部６３が切欠きに係止することによって、本体部２０２に右コントローラ４が装着される。
【００８３】
なお、右コントローラ４は、押下可能な解除ボタン６９を備える（図６参照）。上記係止部６３は、解除ボタン６９が押下されることに応じて、スライダ６２の内部の方向へ移動し、スライダ６２に対して突出しない（あるいは、ほとんど突出しない）状態となる。したがって、リング型拡張装置５の本体部２０２に右コントローラ４が装着された状態において、解除ボタン６９が押下されると、係止部６３は切欠きに係止しなくなる（あるいは、ほとんど係止しなくなる）。以上より、リング型拡張装置５の本体部２０２に右コントローラ４が装着される状態において、ユーザは、解除ボタン６９を押下することによって右コントローラ４をリング型拡張装置５から容易に取り外すことができる。
【００８４】
図９に示すように、リング型拡張装置５は、グリップカバー２０３および２０４を有する。グリップカバー２０３および２０４は、ユーザが把持するための部品である。本実施形態においては、グリップカバー２０３および２０４は、環状部２０１に対して取り外し可能である。本実施形態においては、環状部２０１の左端付近の左把持部分に左グリップカバー２０３が設けられ、環状部２０１の右端付近の右把持部分に右グリップカバー２０４が設けられる。なお、把持部分の数は任意であり、想定される操作方法に応じて、３箇所以上に把持部分が設けられてもよいし、１箇所のみに把持部分が設けられてもよい。また、ゲームの内容（あるいは、ゲームにおいてユーザが行うフィットネス動作の内容）によっては、複数の把持部のうちの特定の把持部のみが片手または両手で把持されることがあってもよい。
【００８５】
図１０は、リング型拡張装置５が備える構成要素の電気的な接続関係を示すブロック図である。図１０に示すように、リング型拡張装置５は、歪み検出部２１１を備える。歪み検出部２１１は、環状部２０１が変形したことを検出する検出部の一例である。本実施形態においては、歪み検出部２１１は、歪みゲージを含む。歪み検出部２１１は、後述する弾性部材の変形に応じた台座部の歪みを示す信号（換言すれば、弾性部材の変形の大きさおよび変形の向きを示す信号）を出力する。
【００８６】
ここで、本実施形態においては、環状部２０１は、弾性変形可能な弾性部と台座部とを有する。台座部は、当該台座部と弾性部材とによって環が形成されるように当該弾性部材の両端部を保持する。なお、台座部は、本体部２０２の内部に設けられるので、図９において図示されていない。台座部は、弾性部材よりも剛性が高い材質で構成される。例えば、弾性部材は、樹脂（具体的には、ＦＲＰ（Ｆｉｂｅｒ  Ｒｅｉｎｆｏｒｃｅｄ  Ｐｌａｓｔｉｃｓ））で構成され、台座部は、金属で構成される。上記歪みゲージは、台座部に設けられ、当該台座部の歪みを検出する。環状部２０１が定常状態から変形した場合、変形によって台座部に歪みが生じるので、歪みゲージによって台座部の歪みが検出される。検出された歪みに基づいて、環状部２０１が変形する向き（すなわち、２つのグリップカバー２０３および２０４が近づく向き、または、離れる向き）と、変形量とを算出することができる。
【００８７】
なお、他の実施例においては、歪み検出部２１１は、歪みゲージに代えて、環状部２０１が定常状態から変形したことを検出可能な任意のセンサを含んでもよい。例えば、歪み検出部２１１は、環状部２０１が変形した場合に加わる圧力を検出する感圧センサを含んでもよいし、環状部２０１が曲げられた量を検出する曲げセンサを含んでもよい。
【００８８】
リング型拡張装置５は、信号変換部２１２を備える。本実施形態においては、信号変換部２１２は、アンプとＡＤコンバータとを含む。信号変換部２１２は、歪み検出部２１１に電気的に接続され、歪み検出部２１１の出力信号をアンプによって増幅し、ＡＤコンバータによってＡＤ変換を行う。信号変換部２１２は、上記歪み値を示すデジタル信号を出力する。なお、他の実施形態においては、信号変換部２１２は、ＡＤコンバータを含まず、後述する処理部２１３がＡＤコンバータを含んでいてもよい。
【００８９】
リング型拡張装置５は、処理部２１３を備える。処理部２１３は、プロセッサとメモリとを備える処理回路であり、例えばＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）である。処理部２１３は、信号変換部２１２に電気的に接続され、信号変換部２１２の出力信号が処理部２１３に入力される。また、リング型拡張装置５は、端子２１４を備える。端子２１４は、処理部２１３に電気的に接続される。リング型拡張装置５に右コントローラ４が装着されている場合、処理部２１３は、信号変換部２１２の出力信号が示す歪み値を示す情報（換言すれば、後述するリング操作データ）を、端子２１４を介して右コントローラ４へ送信する。
【００９０】
リング型拡張装置５は、電力変換部２１５を備える。電力変換部２１５は、上記各部２１１〜２１４に電気的に接続される。電力変換部２１５は、端子２１４を介して外部（すなわち、右コントローラ４）から供給される電力を、上記各部２１１〜２１４に供給する。電力変換部２１５は、供給される電力について電圧等の調整を行って上記各部２１１〜２１４に供給してもよい。
【００９１】
なお、リング型拡張装置５が他の装置へ送信する「歪み検出部の検出結果に関するデータ」は、当該検出結果（本実施例においては、台座部の歪みを示す、歪み検出部２１１の出力信号）そのものを示すデータであってもよいし、当該検出結果に対して何らかの処理（例えば、データ形式の変換、および／または、歪み値に対する計算処理等）が行われることによって得られるデータであってもよい。例えば、処理部２１３は、上記検出結果である歪み値に基づいて弾性部材の変形量を算出する処理を行ってもよく、このとき、「歪み検出部の検出結果に関するデータ」は、当該変形量を示すデータであってもよい。
【００９２】
なお、他の実施例においては、リング型拡張装置５は、電池を備え、当該電池の電力によって動作してもよい。また、リング型拡張装置５が備える電池は、右コントローラ４から供給される電力によって充電可能な充電池であってもよい。
【００９３】
図１１は、ベルト型拡張装置の一例を示す図である。ベルト型拡張装置６は、自身に左コントローラ３が装着された状態で、ユーザの足に締着して使用する（図１２参照）。図１１に示すように、ベルト型拡張装置６は、収容部３０１とベルト部３０２とを備える。収容部３０１は、平面状の形状であり、左コントローラ３を収容可能である。具体的には、収容部３０１は、ポケット部３０３を有する。ポケット部３０３は、左コントローラ３を収容可能な大きさの袋状に形成される。本実施形態においては、収容部３０１が左コントローラを収容することで、左コントローラ３がベルト型拡張装置６に装着される。なお、他の実施形態においては、ベルト型拡張装置６に左コントローラ３を装着させるための構成は任意である。
【００９４】
収容部３０１には、ポケット部３０３の側方に通し孔３０４が設けられる。ベルト部３０２は、収容部３０１のうち、ポケット部３０３の側方であって、ポケット部３０３を基準に通し孔３０４の反対側に設けられる。ベルト部３０２は、帯状の形状であり、その一端が収容部３０１に固定される。本実施形態においては、ベルト部３０２は、伸縮性を有する材質（例えば、織ゴム）で構成される。
【００９５】
ベルト部３０２のうち、収容部３０１においてポケット部３０３が設けられる側の面と同じ側の面には、第１面ファスナー３０５および第２面ファスナー３０６が設けられる。第１面ファスナー３０５は、収容部３０１に固定される側と反対側の端部付近に設けられる。また、第２面ファスナー３０６は、第１面ファスナー３０５と同じ面において、第１面ファスナー３０５と比べて収容部３０１に近い側に設けられる。第１面ファスナー３０５と第２面ファスナー３０６とは、互いに着脱可能である。例えば、第１面ファスナー３０５は、フック面の面ファスナーであり、第２面ファスナー３０６は、ループ面の面ファスナーである。
【００９６】
ベルト型拡張装置６を締着する際、ユーザは、ベルト部３０２を足（例えば、左股）に一周させた状態でベルト部３０２を通し孔３０４に通して、第１面ファスナー３０５と第２面ファスナー３０６とを接着させる。これによって、ユーザは、左コントローラ３が装着されたベルト型拡張装置６を足（左股）に締着することができる（図１２参照）。なお、ユーザの足に締着されるベルト型拡張装置６が、第１装置の一例に相当する。また、左コントローラ３に設けられている加速度センサ１０４および／または角速度センサ１０５が、第１センサの一例に相当する。なお、ベルト型拡張装置６に装着されることなく左コントローラ３そのものをユーザの下半身に取り付けて使用する（例えば、ユーザの下半身に着ける衣服のポケット等に収容して使用する、ユーザのベルトに挟んで使用する等）場合、左コントローラ３そのものが、第１装置の一例に相当する。
【００９７】
図１２は、リング型拡張装置５およびベルト型拡張装置６をユーザが使用する様子の一例を示す図である。図１２に示すように、ユーザは、ゲーム装置（すなわち、本体装置２ならびに各コントローラ３および４）に加えて、２つの拡張装置５および６を用いてゲームを行うことができる。例えば、ユーザは、リング型拡張装置５とベルト型拡張装置６とをセットで使用することができる。
【００９８】
例えば、図１２に示すように、ユーザは、右コントローラ４が装着されたリング型拡張装置５を両手で把持し、左コントローラ３が装着されたベルト型拡張装置６を足（例えば、左股）に締着する。このとき、ユーザは、リング型拡張装置５に対する操作（例えば、リング型拡張装置５を変形させる操作、および、リング型拡張装置５を動かす操作）と、ベルト型拡張装置６を締着した足を動かす操作とによって、ゲームを行うことができる。
【００９９】
なお、図１２においては、ユーザがグリップカバー２０３および２０４を把持してリング型拡張装置５を変形させる動作を行う様子を例示している。この動作によって、ユーザは、両腕を鍛えるフィットネス動作をゲーム操作として行うことができる。リング型拡張装置５を変形させる動作の一例として、ユーザは、グリップカバー２０３および２０４が互いに離れる方向（図示Ａ方向）にリング型拡張装置５を変形させる操作（引張操作）を行うことができる。リング型拡張装置５を変形させる動作の他の例として、ユーザは、グリップカバー２０３および２０４が互いに引き寄せる方向（図示Ｂ方向）にリング型拡張装置５を変形させる操作（押す操作）を行うことができる。なお、ユーザはリング型拡張装置５に対する種々の動作でゲーム操作を行うことができる。例えば、ユーザは、一方のグリップカバーを両手で把持し、他方のグリップカバーを腹部に当てた状態で、リング型拡張装置５を変形させる動作を行うこともできる。この動作によって、ユーザは、腕と腹筋を鍛えるフィットネス動作をゲーム操作として行うことができる。また、ユーザは、両足の内股にグリップカバー２０３および２０４を当ててリング型拡張装置５を足で挟んだ状態で、リング型拡張装置５を変形させる動作を行うこともできる。この動作によって、ユーザは、足の筋肉を鍛えるフィットネス動作をゲーム操作として行うことができる。
【０１００】
なお、図１２においては、ユーザがグリップカバー２０３および２０４を両手で把持し、ベルト型拡張装置６を左股に装着した状態で足踏みしたり屈伸したりする動作による操作を例示している。この動作によって、ユーザは、歩いたり走ったりする動作をゲーム操作として行うことができる。この動作によって、ユーザは、足の筋肉を鍛えるフィットネス動作をゲーム操作として行うことができる。また、ユーザが歩いたり走ったりしながら両手で把持しているリング型拡張装置５の方向を上下左右に向けて動かす動作をゲーム操作として行うことができる。なお、ユーザは、リング型拡張装置５に対する種々の動作でゲーム操作を行うことができる。例えば、ユーザは、両手で把持したリング型拡張装置５を変形させる動作を行うこともできる。この動作によって、ユーザは、腕を鍛えるフィットネス動作をゲーム操作として行うことができる。
【０１０１】
本体装置２においてゲーム処理が実行される場合、右コントローラ４は、リング型拡張装置５からリング操作データを受信する。リング操作データは、上記歪み値を示す情報を含む。具体的には、リング型拡張装置５の処理部２１３は、端子２１４を介してリング操作データを右コントローラ４へ送信する。例えば、処理部２１３は、所定時間に１回の割合でリング操作データを繰り返し送信する。
【０１０２】
上記の場合、右コントローラ４の通信制御部１１１は、リング型拡張装置５から端子６４を介して受信したリング操作データを本体装置２へ送信する。また、通信制御部１１１は、右コントローラ４に含まれる各入力部（具体的には、各ボタン１１３、アナログスティック５２、各センサ１１４および１１５）から取得された情報を含む右コントローラ操作データを本体装置２へ送信する。なお、右コントローラ４がリング型拡張装置５に装着される状態では、右コントローラ４から本体装置２への通信は、無線通信によって行われる。通信制御部１１１は、右コントローラ操作データとリング操作データとをまとめて本体装置２へ送信してもよいし、別個に本体装置２へ送信してもよい。また、通信制御部１１１は、受信したリング操作データをそのまま本体装置２へ送信してもよいし、受信したリング操作データに何らかの加工（例えば、データ形式の変換、および／または、歪み値に対する計算処理等）を行って本体装置２へ送信してもよい。
【０１０３】
一方、本体装置２においてゲーム処理が実行される場合、左コントローラ３の通信制御部１０１は、左コントローラ３に含まれる各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から取得された情報を含む左コントローラ操作データを本体装置２へ送信する。左コントローラ３がベルト型拡張装置６に装着される状態では、左コントローラ３から本体装置２への通信は、無線通信によって行われる。なお、通信制御部１０１が、第１送信部の一例に相当する。
【０１０４】
次に、本体装置２が行う具体的な処理を説明する前に、図１３〜図１６を用いて、本体装置２で行うゲームの概要について説明する。なお、図１３は、ユーザの足踏み操作に応じて据置型モニタ９に表示されるゲーム画像の一例を示す図である。図１４は、ユーザの足踏み操作に応じた左コントローラ３本体および右コントローラ４本体の動作の一例を示す図である。図１５は、ユーザがリング型拡張装置５の向き（リング方向）による操作を行う一例を示す図である。図１６は、リング型拡張装置５の向きによる操作が行われる際のリング型拡張装置５の動きの一例を示す図である。
【０１０５】
以上に説明したように、本実施形態におけるゲームシステム１については左コントローラ３および右コントローラ４が本体装置２から着脱可能である。また、図１３に示すように、クレードル８に本体装置２単体を装着することによって据置型モニタ９に画像（および音声）を出力可能である。以下、左コントローラ３および右コントローラ４を本体装置２から取り外した状態で、クレードル８に本体装置２単体を装着して、クレードル８に接続された据置型モニタ９から画像（および音声）を出力する利用態様におけるゲームシステムを用いて説明する。そして、ユーザは、リング型拡張装置５に装着された右コントローラ４とベルト型拡張装置６に装着された左コントローラ３との両方を用いて、ゲーム操作を行う例を用いる。また、ゲーム処理の一例として、据置型モニタ９に表示される仮想オブジェクトＰＯがユーザの足踏み操作に応じて、仮想ゲーム空間内を移動する処理を用いる。
【０１０６】
例えば、図１３においては、仮想ゲーム空間内において、停止したり、歩く（ウォーキング）、ジョギング、または走る（ランニング）ことによって仮想ゲーム空間内を移動したり、所定の目標物に向かって攻撃したりする仮想オブジェクトＰＯが表示されている。そして、ユーザは、左コントローラ３が装着されたベルト型拡張装置６を締着するとともに、右コントローラ４が装着されたリング型拡張装置５を把持して、ウォーキング、ジョギング、またはランニングするように足踏みする。この場合、ユーザの足踏み動作に応じた動作および速度で、仮想オブジェクトＰＯが仮想ゲーム空間内を移動する。また、仮想オブジェクトＰＯは、両手で１つのリングオブジェクトＲを把持しており、実空間においてリング型拡張装置５の方向（リング方向）が変化することに応じて、仮想ゲーム空間におけるリングオブジェクトＲの方向が変化する。
【０１０７】
具体的には、図１４に示すように、ユーザがベルト型拡張装置６を左股に締着した状態で、リング型拡張装置５を両手で把持しながら足踏みするユーザ操作が行われる。そして、ユーザがウォーキング、ジョギング、およびランニング等を模した足踏みをしたり、足踏み状態を停止させたりすることによって、その足踏み操作に応じた操作入力が本体装置２に与えられる。
【０１０８】
例えば、ユーザの左股の前部に締着されたベルト型拡張装置６に装着される左コントローラ３は、ユーザの足踏み操作に応じて、実空間における重力方向（鉛直方向）に垂直なユーザの左右水平方向を軸として起立状態（左コントローラ３の長軸方向が鉛直方向に向いた状態）と仰角状態（左コントローラ３の当該長軸方向が当該起立状態からユーザの前後水平方向へ近づいた状態）との間を揺動（図示Ｍ１方向の揺れであり、前後揺れと記載することがある）するように動かされる。一例として、ユーザが左足を床面につけて静止して立っている状態において左コントローラ３のｙ軸負方向が実空間の鉛直方向となるように（すなわち、左コントローラ３のｙ軸正方向が実空間の直上方向となるように）、ベルト型拡張装置６に左コントローラ３が装着される場合、ユーザの足踏み操作に応じて、左コントローラ３のｙ軸負方向が鉛直方向に向いた起立状態と左コントローラ３のｙ軸負方向が当該起立状態から水平方向へ近づいた仰角状態との間を、ユーザの左右水平方向（左コントローラ３のｘ軸方向）を軸として前後揺れするように左コントローラ３本体が動かされる。
【０１０９】
また、例えば、ユーザが両手で把持するリング型拡張装置５に装着される右コントローラ４には、ユーザの足踏み操作に応じて、実空間における重力方向の揺れ（図示Ｍ２方向の揺れであり、縦揺れと記載することがある）が主に生じる。一例として、右コントローラ４のｘ軸負方向が実空間の鉛直方向となるように（すなわち、右コントローラ４のｘ軸正方向が実空間の直上方向となるように）ユーザがリング型拡張装置５を把持して足踏み操作する場合、ユーザの足踏み操作に応じて、右コントローラ４のｘ軸正方向とｘ軸負方向とを往復するように右コントローラ４本体が縦揺れする。
【０１１０】
このようなベルト型拡張装置６に装着された左コントローラ３およびリング型拡張装置５に装着された右コントローラ４を用いて、ユーザが停止状態から動き出した（すなわち、足踏み操作を開始した）状態を検出する方法（動き出し検出処理）について説明する。一例として、後述する第１動き出し条件および第２動き出し条件を何れも満たす場合、または後述する第１動き出し条件および第３動き出し条件を何れも満たす場合、ユーザが「歩き」または「ジョギング」で動き出したと判定する。当該例の場合、第１動き出し条件および第２動き出し条件の組と第１動き出し条件および第３動き出し条件の組との一方の組を満たさない場合であっても、他方の組を満たすことによってユーザが停止状態から動き出したことを判定できるため、ユーザの意図に沿った判定が可能となる。なお、後述される「フレーム」は、ゲームシステム１で実行される処理の周期であり、例えば、１フレーム＝１／６０秒である。
（第１動き出し条件）右コントローラ４において生じる加速度の変化量の所定期間（例えば、５フレーム）分の合算値が第１閾値（例えば、１．５Ｇ）を越えている
（第２動き出し条件）左コントローラ３および右コントローラ４においてそれぞれ生じる重力加速度を省いた実空間の直上方向の加速度の値が何れも第２閾値（例えば、０．２Ｇ）以上、すなわち実空間の直上方向へ加速している
（第３動き出し条件）左コントローラ３において生じる重力加速度を省いた実空間の直上方向の加速度の値が第３閾値（第３閾値＜第２閾値であり、例えば、０．１Ｇ）以上、かつ、左コントローラ３が前後揺れする一定期間中の角度変化が第４閾値（例えば、１５°）以上
このように、上記動き出し判定によれば、ユーザが静止状態から動き出したことを素早く検出することが可能となる。なお、静止状態において生じる値に近い閾値を設定するともに判定に要する期間を相対的に短く設定することによって、より素早く検出可能となる。なお、実空間における直上方向（鉛直方向）については、左コントローラ３および右コントローラ４が静止状態においては左コントローラ３および右コントローラ４にそれぞれ作用する重力加速度の方向に基づいて算出することが可能である。また、ユーザが動き出しを開始した状態では、左コントローラ３および右コントローラ４の姿勢の変化や移動が生じている場合であっても、左コントローラ３および右コントローラ４にそれぞれ生じる角速度に基づいて、左コントローラ３および右コントローラ４の姿勢変化を算出することが可能である。したがって、ユーザが動き出しを開始した状態では、上記角速度を用いた当該姿勢変化に基づいて算出された左コントローラ３および右コントローラ４それぞれの重力加速度の方向を用いて、実空間における直上方向（鉛直方向）を算出してもかまわない。なお、ユーザが停止状態から動き出したことを判定として、第１動き出し条件および第２動き出し条件の組だけで判定してもよいし、第１動き出し条件および第３動き出し条件の組だけで判定してもよい。
【０１１１】
次に、上述した動き出し検出処理において、ユーザが動き出したことが判定された際に、ユーザが「歩き」で動き出したのか、または「ジョギング」で動き出したのかを判別する方法について説明する。一例として、後述する動き出し時動作判別条件を満たす場合、ユーザが「歩き」で動き出したと判別する。
（動き出し時動作判別条件）上記動き出しが判定された時点の直前の期間となる所定期間（上記第１動き出し条件の判定で用いられる所定期間より長い期間であり例えば、１５フレーム、すなわち当該所定期間の開始時点から例えば１０フレーム遡った時点から上記動き出しが判定された時点までの期間）において、右コントローラ４において生じる直上方向の加速度の変化量が第５閾値（例えば、１．２Ｇ）以下
【０１１２】
このように、上記動き出し判定によれば、「歩き判定」や「ジョギング判定」のみで、歩きやジョギングで動き出すのではなく、動作の種別とは別に「動き出し」のみを判定する処理が別途に設けられている。これによって、動き出しをより正確に判定することが可能になるとともに、動き出しを素早く判定することが可能となる。例えば、動き出し判定を別に設けることなく、俊敏な動きに基づいてジョギング判定、緩慢な動きに基づいて歩き判定をした場合、ユーザは静止しているつもりであっても緩慢な動作に対応する出力があると、誤って「歩き」で動き出したと判定してしまう恐れがある。この点、まずユーザの動き出しを判定したうえで、その動きの種別を判別することによって、ユーザの意図に反して動き出したと判定してしまうことを抑制できる。さらに、動きの種別の判定に用いるデータを、動き出しが判定された後ではなく動き出しが判定される前の期間から抽出することで、素早く動きの種別判定を行うことができる。また、後述により明らかとなるが、「動き出し」後の動作種別の判定については、相対的に長いデータ取得期間を用いた別の判別方法を「動き出し後の動作判定」として別途設けることによって、さらに一連の動作判定を正確にすることができる。
【０１１３】
次に、ユーザが「歩き」または「ジョギング」によって動き出したと判定された後において、移動が継続しているときに、ユーザが「歩き」で動いているのか、または「ジョギング」で動いているのかを判別する方法について説明する。一例として、後述する第１動き出し後動作判別条件、第２動き出し後動作判別条件、および第３動き出し後動作判別条件の全てを満たす場合、ユーザが「歩き」で動作していると判別する。また、後述する第１動き出し後動作判別条件、第２動き出し後動作判別条件、および第３動き出し後動作判別条件の少なくとも１つを満たさない場合、ユーザが「ジョギング」で動作していると判別する。
（第１動き出し後動作判別条件）ユーザの足踏み周期（具体的には、ベルト型拡張装置６が締着されたユーザの左股を上げ下げする周期）が第８閾値（例えば、６０フレーム）以上
（第２動き出し後動作判別条件）ユーザの片足の股（具体的には、ベルト型拡張装置６が締着されたユーザの左股）が最上位置まで上がってから最下位置まで下がるまでの時間が第９閾値（例えば、２０フレーム）以上
（第３動き出し後動作判別条件）上記動き出しが判定された時点の直前の期間となる所定期間（上記第１動き出し条件の判定で用いられる所定期間より長い期間であり、例えば、１５フレーム、すなわち当該所定期間の開始時点から例えば１０フレーム遡った時点から上記動き出しが判定された時点までの期間）において、右コントローラ４において生じる直上方向の加速度の変化量が第５閾値（例えば、１．２Ｇ）以下
このように、ユーザが動き出したと判定された後において、ユーザの動作種別（例えば、「歩き」、「ジョギング」）を判定する方法は、ユーザが停止状態から動き出した際に動作種別を判定する方法とは異なる。具体的には、ユーザが動き出したと判定された後において、ユーザの動作種別を判定するためのデータを取得する期間（第８閾値および第９閾値）は、ユーザが停止状態から動き出した際に動作種別を判定するためのデータを取得する期間よりも長い。
【０１１４】
なお、上述した実施例では、第１動き出し後動作判別条件、第２動き出し後動作判別条件、および第３動き出し後動作判別条件の全てを満たす場合、ユーザが「歩き」で動作していると判別する例を用いたが、他の条件によってユーザが「歩き」で動作していると判別してもかまわない。例えば、第１動き出し後動作判別条件および第２動き出し後動作判別条件の少なくとも１つを満たす場合、ユーザが「歩き」で動作していると判別し、第１動き出し後動作判別条件および第２動き出し後動作判別条件の何れも満たさない場合、ユーザが「ジョギング」で動作していると判別してもよい。
【０１１５】
また、上述したように、表示画面（例えば、据置型モニタ９）には、ユーザの足踏み動作に応じた動作および速度で仮想ゲーム空間内を移動する仮想オブジェクトＰＯが表示される。例えば、ユーザが実空間において「静止している」と判定されたことに応じて仮想ゲーム空間内において「停止」した状態で仮想オブジェクトＰＯが表示され、ユーザが実空間において「歩き」で足踏みしていると判定されたことに応じて仮想ゲーム空間内において歩いて移動するように仮想オブジェクトＰＯが表示され、ユーザが実空間において「ジョギング」で足踏みしていると判定されたことに応じて仮想ゲーム空間内においてジョギングで移動するように仮想オブジェクトＰＯが表示される。しかしながら、ユーザの足踏み動作が変化することに応じて仮想オブジェクトＰＯが異なる動作に移行する場合、予め定められた動作を経て次の動作に移行してもかまわない。一例として、ユーザの足踏み動作が「ジョギング」から「歩き」に変化した場合、仮想オブジェクトＰＯの動作が「ジョギング」による移動から一旦「停止」する動作を挟んで、「歩き」による移動に移行してもよい。例えば、仮想オブジェクトＰＯが登場するゲームにおいて、仮想ゲーム空間内において停止する動作が重要な要素となっている場合、ユーザが「ジョギング」する足踏み動作から足踏み動作を停止して静止したにも拘わらず、短時間の間、仮想オブジェクトＰＯが「停止」せずに「歩き」で動作してしまうようなことを防止することができ、仮想オブジェクトＰＯを停止させる操作の応答性を向上させることができる。
【０１１６】
また、上記ユーザの足踏み周期（例えば、ベルト型拡張装置６が締着されたユーザの左股を上げ下げする周期）を算出するためには、当該ユーザが股（例えば左股）を上げ下げする動作を検出することが必要となる。ユーザが股を上げ下げする動作を検出するための股の上げ下げ判定については、左コントローラ３に生じる角速度および加速度の少なくとも一方を用いて任意の方法を用いればよいが、一例として、左コントローラ３に生じる角速度および加速度の両方を用いて判定してもよい。具体的には、後述する第１股上げ判定条件および第２股上げ判定条件を何れも満たす場合に股上げ状態であると判定してもよい。
（第１股上げ判定条件）直近の所定期間（例えば、１５フレーム）における左コントローラ３のｘ軸方向周りの角度（膝曲げ角度が大きくなるほど当該角度が大きくなる）の最大値および最小値を取得し、当該最小値が得られた時点より当該最大値が得られた時点が直近である
（第２股上げ判定条件）直近の所定期間（例えば、１５フレーム）における左コントローラ３の鉛直方向の加速度が第６閾値（例えば、０．８Ｇ）以下、すなわち実空間の直上方向に加速している
また、後述する第１股下げ判定条件および第２股下げ判定条件を何れも満たす場合に股下げ状態であると判定してもよい。
（第１股下げ判定条件）直近の所定期間（例えば、１５フレーム）における左コントローラ３のｘ軸方向周りの角度の最大値および最小値を取得し、当該最大値が得られた時点より当該最小値が得られた時点が直近である
（第２股下げ判定条件）直近の所定期間（例えば、１５フレーム）における左コントローラ３の鉛直方向の加速度が第７閾値（例えば、１．２Ｇ）以上、すなわち実空間の鉛直方向に加速している
【０１１７】
また、ユーザの足踏み動作の種別として、「歩き」および「ジョギング」に加えて、「ジョギング」より足踏み周期が短い「走り」による足踏み動作を区別してもかまわない。一例として、左コントローラ３において生じた加速度変化量を直前の所定時間分（例えば、６０フレーム分）合算し、当該合算値が算出された所定処理回数分（例えば、３０フレーム分）の平均値とユーザ毎に設定された閾値（ユーザ閾値）との比較によって、「ジョギング」による足踏み動作と「走り」による足踏み動作とを判別してもよい。具体的には、上記平均値が上記ユーザ閾値以上である場合にユーザが「走り」によって足踏み動作していると判定し、上記平均値が上記ユーザ閾値未満である場合（ただし、「ジョギング」の判定条件を満たすとき）にユーザが「ジョギング」によって足踏み動作していると判定する。ここで、上記ユーザ閾値は、ゲーム開始前に予めユーザに「ジョギング」の足踏み動作と「走り」の足踏み動作とを行うように促し、当該足踏み動作から得られる加速度変化量の上記平均値に基づいて、当該ゲーム開始前にユーザ毎に設定される。
【０１１８】
なお、ユーザ毎に設定される上記ユーザ閾値は、当該ユーザ閾値が用いられる場面前であれば、どのようなタイミングで設定されてもよいし、様々な演出に応じて設定されてもよい。第１の例として、上記ユーザ閾値が用いられるゲームが開始される前に、「ジョギング」の足踏み動作と「走り」の足踏み動作とを行うようにそれぞれ明確にユーザに指示し、当該指示に応じて行われた足踏み動作の結果に基づいて当該ユーザのユーザ閾値が設定されてもよい。第２の例として、上記ユーザ閾値が用いられるゲーム中（好ましくは、ゲームの序盤）において、「ジョギング」の足踏み動作を行うユーザ操作が求められる場面と「走り」の足踏み動作を行うユーザ操作が求められる場面とを用意し、当該場面における足踏み動作の結果に基づいて当該ユーザ操作を行ったユーザのユーザ閾値が設定されてもよい。
【０１１９】
また、ユーザ毎に設定される上記ユーザ閾値が「ジョギング」による足踏み動作と「走り」による足踏み動作とを判別するために用いられる例を用いたが、ユーザ閾値が他の判別に用いられてもよい。一例として、ユーザ毎に設定される上記ユーザ閾値は、同様に足踏み速度に応じて区別される「歩き」と「ジョギング」との区別に用いることができることは明らかであり、ゲーム開始前に予めユーザに「歩き」の足踏み動作と「ジョギング」の足踏み動作とを行うように促すことによって、異なる状況下におけるユーザ閾値として設定可能となる。この場合、上記ユーザ閾値は、「歩き」による足踏み動作と「ジョギング」による足踏み動作とを判別するために用いることができる。
【０１２０】
なお、「ジョギング」による足踏み動作と「走り」による足踏み動作とを判別するためのユーザ閾値と、「歩き」による足踏み動作と「ジョギング」による足踏み動作とを判別するためのユーザ閾値との２つのユーザ閾値が設定される場合、当該２つのユーザ閾値は、当該２つのユーザ閾値間の足踏み動作に対する仮想オブジェクトＰＯの移動速度の評価に用いられてもよい。例えば、ユーザが「ジョギング」による足踏み動作を行っていると判定されている状態においては、「ジョギング」による足踏み動作と「走り」による足踏み動作とを判別するためのユーザ閾値に近い速度（周期）で足踏み動作が行われるほど、「走り」による足踏み動作による仮想オブジェクトＰＯの移動速度に近い移動速度となるように線形補間されて、仮想オブジェクトＰＯの移動速度が設定されてもよい。つまり、上記２つのユーザ閾値のうち、「ジョギング」による足踏み動作と「走り」による足踏み動作とを判別するためのユーザ閾値が足踏み動作の判別に用いられ、上記２つのユーザ閾値間の関係が当該閾値間の移動速度の線形補間に用いられてもよい。
【０１２１】
また、上記ユーザ閾値は、ゲームの進行に応じて変化してもかまわない。一例として、上記ユーザ閾値は、ゲームの進行状況（例えば、仮想ゲーム空間における移動距離やクリアしたゲームステージ数や内容）に応じて、段階的に変化してもよい。
【０１２２】
また、上述した実施例では、ユーザの足踏み動作の種別として、「歩き」および「ジョギング」に加えて、「走り」による足踏み動作を区別しているが、「走り」による足踏み動作の区別がなくてもよい。この場合、「ジョギング」による足踏み動作において、ユーザの動作速度（例えば、足踏み周期や足踏み速度）が速くなることに応じて、「ジョギング」する速度（具体的には、ユーザの足踏み動作に応じた動作および速度で仮想ゲーム空間内を移動する仮想オブジェクトＰＯが「ジョギング」で移動する速度）が速くなるように制御してもよい。
【０１２３】
このように、ユーザが「歩き」で足踏み動作しているか「ジョギング」で足踏み動作しているかの判別については、第１動き出し後動作判別条件および第２動き出し後動作判別条件を用いた判別、すなわちジャイロセンサによって検出される角速度に基づいて行われる。これに対して、ユーザが「ジョギング」で足踏み動作している状態において、「ジョギング」よりも足踏み周期が短い「走り」で足踏み動作している状態に変化したことを判定する際には、加速度センサによって検出された加速度が用いられる。したがって、「歩き」による足踏み動作と「ジョギング」による足踏み動作との判別が角速度によって行われ、「ジョギング」による足踏み動作中に加速度が大きい場合に当該足踏み周期が短くなったと判定されることになる。これは、ユーザの足踏み動作の周期に応じて、適切なパラメータを選択しているためであり、「歩き」による足踏み動作と「ジョギング」による足踏み動作との判別が加速度では見分けにくい場合等に有効な方法となる。
【０１２４】
また、ユーザが「歩き」または「ジョギング」によって動き出したと判定された後において、ユーザが「歩き」、「ジョギング」、または「走り」で動いているのかの判別は、ベルト型拡張装置６に装着された左コントローラ３の動きセンサ（例えば、加速度センサや角速度センサ）からの出力のみを用いて行われている。ここで、本実施例においては、ユーザが「歩き」、「ジョギング」、および「走り」の何れの状態で動いているかによって、仮想ゲーム空間内を移動する仮想オブジェクトＰＯの移動速度も変化するため、仮想オブジェクトＰＯの移動中においては左コントローラ３の動きセンサの出力のみに基づいて、仮想オブジェクトＰＯの移動速度を制御していることになる。なお、他の実施例においては、左コントローラ３の動きセンサの出力だけでなく、リング型拡張装置５に装着された右コントローラ４の動きセンサ（例えば、加速度センサや角速度センサ）からの出力も用いて、仮想オブジェクトＰＯの移動中における移動速度を制御してもかまわない。一例として、仮想ゲーム空間において仮想オブジェクトＰＯの向きを変更できないような場面では、リング型拡張装置５に装着された右コントローラ４の動きセンサの出力を用いて、仮想オブジェクトＰＯの移動中における移動速度を制御することが考えられる。
【０１２５】
次に、ユーザが「歩き」による足踏み動作から停止して静止したことを判定する方法について説明する。一例として、後述する第１停止動作判定条件および第２停止動作判定条件の少なくとも１つを満たす場合、ユーザが「歩き」による足踏み動作から停止して静止したと判定する。
（第１停止動作判定条件）右コントローラ４に生じる角速度が０である
（第２停止動作判定条件）直近の所定期間（例えば、９０フレーム）における左コントローラ３の角度変化が第１０閾値（例えば、１０°）以下、かつ、直近の所定期間（例えば、１０フレーム）における左コントローラ３の角速度変位量が第１１閾値（例えば、０．０１）以下
【０１２６】
ここで、ユーザが足踏み動作を「停止」したと判定されることなく「歩き」による足踏み動作が行われていると判定される状態を継続するためには、上記第１停止動作判定条件および第２停止動作判定条件が何れも成立しないように、右コントローラ４において角速度を継続して生じさせるとともに、所定時間において第１０閾値より大きい左コントローラ３の角度変化を生じさせるまたは第１１閾値以上の左コントローラ３の角速度変化を生じさせることが必要となる。したがって、ユーザが足踏み動作を「停止」したと判定されることなく「歩き」による足踏み動作が行われていると判定される状態を継続するためには、左コントローラ３（ベルト型拡張装置６）および右コントローラ４（リング型拡張装置５）の両方を継続して動かすことが必要となり、ユーザの下半身の動きだけでなくユーザの上半身の動きも必要となるため、ユーザの全身を使った操作を促進することができる。また、上記第１停止動作判定条件および上記第２停止動作判定条件は、ユーザの「歩き」継続判定条件、すなわちユーザの動作継続判定条件としても機能していることになる。
【０１２７】
また、上述したように、ユーザが足踏み動作を「停止」したと判定されることなく「歩き」による足踏み動作が行われていると判定される状態を継続するためには、左コントローラ３（ベルト型拡張装置６）および右コントローラ４（リング型拡張装置５）の両方が継続して動いていることが必要となるが、これは所定期間においてそれぞれの動きセンサ（例えば、角速度センサ）の出力変化量が所定量であることが必要となる。これは、左コントローラ３および右コントローラ４それぞれの動きセンサの出力が、少なくとも一方のコントローラの動きの停止を示す場合には、ユーザが足踏み動作を「停止」したと判定されることになる。
【０１２８】
次に、ユーザが「ジョギング」または「走り」による足踏み動作から停止して静止したことを判定する方法について説明する。一例として、後述する第３停止動作判定条件〜第５停止動作判定条件の少なくとも１つを満たす場合、ユーザが「ジョギング」または「走り」による足踏み動作から停止して静止したと判定する。
（第３停止動作判定条件）右コントローラ４に生じる角速度が０である
（第４停止動作判定条件）直近の所定期間（例えば、１０フレーム）における左コントローラ３または右コントローラ４の加速度変化が第１２閾値以下
（第５停止動作判定条件）直近の所定期間（例えば、１０フレーム）における左コントローラ３の角速度の平均値が第１３閾値以下
【０１２９】
ここで、ユーザが足踏み動作を「停止」したと判定されることなく「ジョギング」または「走り」による足踏み動作が行われていると判定される状態を継続するためには、上記第３停止動作判定条件〜上記第５停止動作判定条件が何れも成立しないように、右コントローラ４において角速度を継続して生じさせ、所定時間において第１２閾値より大きい加速度を左コントローラ３および右コントローラ４の両方に生じさせ、所定時間において第１３閾値より大きい角速度平均値となるように左コントローラ３を動かすことが必要となる。したがって、ユーザが足踏み動作を「停止」したと判定されることなく「ジョギング」または「走り」による足踏み動作が行われていると判定される状態を継続するためには、左コントローラ３（ベルト型拡張装置６）および右コントローラ４（リング型拡張装置５）の両方を継続して動かすことが必要となり、ユーザの下半身の動きだけでなくユーザの上半身の動きも必要となるため、ユーザの全身を使った操作を促進することができる。また、上記第３停止動作判定条件〜上記第５停止動作判定条件は、ユーザの「ジョギング」または「走り」継続判定条件、すなわちユーザの動作継続判定条件としても機能していることになる。
【０１３０】
また、上述したように、ユーザが足踏み動作を「停止」したと判定されることなく「ジョギング」または「走り」による足踏み動作が行われていると判定される状態を継続するためには、左コントローラ３（ベルト型拡張装置６）および右コントローラ４（リング型拡張装置５）の両方が継続して動いていることが必要となるが、これは所定期間においてそれぞれの動きセンサ（例えば、加速度センサや角速度センサ）の出力変化量が所定量であることが必要となる。これは、左コントローラ３および右コントローラ４それぞれの動きセンサの出力が、少なくとも一方のコントローラの動きの停止を示す場合には、ユーザが足踏み動作を「停止」したと判定されることになる。
【０１３１】
また、ユーザが停止状態から足踏み動作を開始して「動き出し」を判定された後に、「停止」したと判定されることなく「歩き」、「ジョギング」、または「走り」による足踏み動作が行われていると判定されるユーザの動作継続判定条件は、上述したユーザが停止状態から動き出した（すなわち、足踏み動作を開始した）と判定される動き出し条件とは異なっており、ユーザの足踏み状態に適した判定条件がそれぞれ設定されている。例えば、ユーザが停止状態から動き出したと判定される動き出し条件は、ユーザが動き出しを開始した状態では検出される左コントローラ３の角速度の信頼性が相対的に高いことから、左コントローラ３に生じる角速度を用いて算出される左コントローラ３の姿勢変化が用いられている。これに対して、ユーザが停止状態から足踏み動作を開始した後に「停止」したと判定されることなく「歩き」、「ジョギング」、または「走り」による足踏み動作が行われていると判定されるユーザの動作継続判定条件は、左コントローラ３に生じる角速度そのものが判定に用いられることはなく、当該角速度を用いずに判定される、または当該角速度の差分を用いた判定が行われている。なお、ユーザが停止状態から足踏み動作を開始した後に「停止」したと判定されることなく「歩き」、「ジョギング」、または「走り」による足踏み動作が行われていると判定されるユーザの動作継続判定条件を満たしている場合、当該判定に対応して仮想ゲーム空間内における仮想オブジェクトＰＯもユーザの足踏み動作に応じて移動を継続し、当該動作継続判定条件を満たしている間において仮想オブジェクトＰＯの移動を継続する動作が、第１の所定動作の一例に相当する。
【０１３２】
なお、上述したように、表示画面（例えば、据置型モニタ９）には、ユーザの足踏み動作に応じた動作および速度で仮想ゲーム空間内を移動する仮想オブジェクトＰＯが表示される。例えば、上述したユーザの足踏み動作の判定や股の上げ下げ判定の結果に基づいて、ユーザの動きと仮想オブジェクトＰＯの動きとを一致させるように仮想オブジェクトＰＯの動作を制御して移動速度を変化させてもよい。具体的には、上記股の上げ下げ判定の結果に応じて、ユーザが左足を上げているタイミングと同期させて仮想オブジェクトＰＯの左足を上げ、ユーザが右足を上げているタイミングと同期させて仮想オブジェクトＰＯの右足を上げるように、仮想オブジェクトＰＯの歩行または走行動作を制御することによって、ユーザ操作に対する違和感（ズレ）を軽減することができる。
【０１３３】
また、上述した例では、ユーザが左足／右足を上げているタイミングと同期させて仮想オブジェクトＰＯの左足／右足を上げるように、仮想オブジェクトＰＯの歩行または走行動作を制御する例を用いたが、ユーザの足踏み動作と他の仮想オブジェクトＰＯの動作を同期させてもかまわない。一例として、ユーザが左足／右足を上げているタイミングと同期させて仮想オブジェクトＰＯの右手／左手が動くように、仮想オブジェクトＰＯの動作（例えば、泳ぐ動作や両手で回転物を回転させる動作）を制御してもよい。
【０１３４】
このように、ユーザが動き出したと判定された後における仮想オブジェクトＰＯが仮想ゲーム空間内を移動する移動速度は、ベルト型拡張装置６に装着された左コントローラ３の動きセンサ（例えば、加速度センサや角速度センサ）からの出力のみを用いて行われている。なお、他の実施例においては、左コントローラ３の動きセンサの出力だけでなく、リング型拡張装置５に装着された右コントローラ４の動きセンサ（例えば、加速度センサや角速度センサ）からの出力も用いて、仮想オブジェクトＰＯの移動中における移動速度を制御してもかまわない。
【０１３５】
また、本実施例においては、図１５に示すように、ユーザがベルト型拡張装置６を左股に締着した状態で、リング型拡張装置５を両手で把持しながらリング型拡張装置５の方向を実空間における上下左右に変化させるユーザ操作が行われる。そして、ユーザが実空間において停止して静止した状態または足踏みしている状態でリング型拡張装置５の方向を変化させることによって、その方向に応じた操作入力が本体装置２に与えられる。
【０１３６】
例えば、図１５に示すように、本実施例においては、リング型拡張装置５における環状部２０１の円環軸に沿って、当該リング型拡張装置５を両手で把持するユーザから離れる方向がリング型拡張装置５のリング方向として定義される。そして、ユーザが実空間において停止して静止した状態または足踏みしている状態において、両手で把持しているリング型拡張装置５のリング方向を変化させることによって、仮想ゲーム空間内における仮想オブジェクトＰＯが把持しているリングオブジェクトＲの方向も変化する。そして、ユーザがリング型拡張装置５を用いて所定の操作（例えば、リング型拡張装置５におけるグリップカバー２０３および２０４が互いに近づくように環状部２０１を定常状態から変形させる操作）を行うことによって、例えば仮想オブジェクトＰＯが把持しているリングオブジェクトＲのリング方向（リングオブジェクトＲの円輪軸に沿った仮想オブジェクトＰＯから離れる方向）に配置されているオブジェクトＴ（図１３参照）を攻撃する（例えば、破壊する）ことができる。
【０１３７】
図１６に示すように、リング型拡張装置５の姿勢（向き）による操作としては、グリップカバー２０３および２０４を両手で把持するリング型拡張装置５の環状部２０１を当該環状部２０１の円環軸を中心に回転させる操作（図示Ｍ３方向に回転させるロール操作）、リング型拡張装置５のリング方向を仰角（上方向）または俯角（下方向）に変化させる操作（図示Ｍ４方向のピッチ操作）、リング型拡張装置５のリング方向を左右に変化させる操作（図示Ｍ５方向のヨー操作）が考えられる。ここで、ロール操作およびピッチ操作においては、リング型拡張装置５に作用する重力加速度の方向が変化するため、リング型拡張装置５に装着された右コントローラ４に作用する加速度および／または角速度を用いて、右コントローラ４に作用する重力加速度の方向を算出することによって検出することができる。また、ヨー操作においては、リング型拡張装置５に作用する重力加速度の方向が変化しないため、リング型拡張装置５に装着された右コントローラ４に作用する角速度を用いて、初期状態からの右コントローラ４の姿勢変化を算出することによって検出することができる。なお、現実には、ロール操作、ピッチ操作、およびヨー操作が混ざった操作が行われることが一般的であるため、ロール操作、ピッチ操作、およびヨー操作によってそれぞれ変化するリング方向を合成することによって、最終的なリング方向がユーザ操作として算出される。
【０１３８】
例えば、図１６に示すように、リング型拡張装置５に装着された右コントローラ４のｙ軸方向が実空間における水平方向（図示Ｘ軸方向）となり、ｘ軸正方向が実空間における直上方向（図示Ｙ軸正方向）となるようにユーザがリング型拡張装置５を把持している初期状態から、リング型拡張装置５のリング方向を変化させる操作を行う場合を考える。上記初期状態においては、リング型拡張装置５に装着された右コントローラ４の鉛直方向に重力加速度が作用するため、右コントローラ４のｘ軸負方向の加速度１Ｇとなり、ｙ軸（左右方向）およびｚ軸方向（前後方向）の加速度が０となる。この初期状態から、リング型拡張装置５がピッチ操作された場合、当該ピッチ操作された角度は、ｚ軸方向に作用する加速度によって算出することができる。また、この初期状態から、リング型拡張装置５がロール操作された場合、当該ロール操作された角度は、ｙ軸方向に作用する加速度によって算出することができる。したがって、ｚ軸方向（前後方向）およびｙ軸方向（左右方向）に作用する加速度を検出することによって、リング型拡張装置５がピッチ操作された角度およびロール操作された角度をそれぞれ算出することができる。
【０１３９】
ここで、リング型拡張装置５が素早く動かされる操作が行われたり、リング型拡張装置５を把持しながら足踏みする操作が行われたりする場合、当該操作による加速度が加わったり、誤差が累積することが考えられる。このような場合、加速度から算出される角度と角速度から算出される角度とを用いて、リング型拡張装置５（右コントローラ４）の姿勢を算出してもよい。一例として、第１取得時間（例えば、３０フレーム）において得られた加速度の平均値に基づいて算出される角度に第２取得期間（＜第１取得期間；例えば、１５フレーム）において得られた角速度に基づいて算出された角度変位量を加算することによって、リング型拡張装置５（右コントローラ４）の姿勢を算出してもよい。このように、異なるパラメータを用いてリング型拡張装置５（右コントローラ４）の姿勢を算出することによって、瞬時のプレや誤差などを相殺することができるとともに、相対的に短時間の取得期間で算出される角速度を用いることによって、検出における応答性を向上させることができる。
【０１４０】
また、上記初期状態から、リング型拡張装置５がヨー操作された場合、リング型拡張装置５に作用する重力加速度の方向が変化しないため、当該ヨー操作された角度は、鉛直方向周りに作用する角速度、すなわち右コントローラ４のｘ軸方向（上下方向）周りに作用する角速度を用いて算出することができる。
【０１４１】
ユーザがリング型拡張装置５のリング方向を所望の方向に向けた後、リング型拡張装置５を用いた所定の操作を行うことによって、当該リング方向に対応する仮想ゲーム空間内に所定の変化を与えることができる。例えば、上記所定の操作は、リング型拡張装置５におけるグリップカバー２０３および２０４が互いに近づくように環状部２０１を定常状態から所定の状態以上まで変形させる操作であり、リング型拡張装置５に設けられた歪みゲージが検出する歪みに基づいて当該操作が検出される。一例として、リング型拡張装置５の環状部２０１が定常状態から変形した場合、上記歪みゲージによって台座部の歪みが検出され、検出された歪みに基づいて、環状部２０１が変形する向き（すなわち、２つのグリップ２０３および２０４が近づく向き、または、離れる向き）と変形量とを算出することができる。そして、環状部２０１が変形する向きが２つのグリップ２０３および２０４が近づく向きであり、予め設定された閾値以上の変形量である場合、上記所定の操作が行われたと判定される。
【０１４２】
このように、本実施例においては、足踏みする操作が行われながら把持しているリング型拡張装置５の向きを変える異なる操作が可能となる。具体的には、上述したようにユーザが足踏み動作を「停止」したと判定されることなく「歩き」、「ジョギング」、または「走り」による足踏み動作が行われていると判定される状態を継続するために、左コントローラ３（ベルト型拡張装置６）および右コントローラ４（リング型拡張装置５）の両方が継続して動いていると判定される条件が満たされつつ、当該判定とは別に右コントローラ４（リング型拡張装置５）における動きセンサ（例えば、加速度センサまたは角速度センサ）の出力を用いてリング型拡張装置５の向きを変える操作が判定されることによって、上記２つの操作を両立している。また、左コントローラ３および右コントローラ４の両方が継続して動いていると判定される条件が必要となる足踏み操作に対して、リング型拡張装置５の向きを変える操作は、右コントローラ４（リング型拡張装置５）における動きセンサのみの出力に基づいて判定されるため、足踏み操作と比較して単純な制御で実現可能となる。また、ユーザが操作するリング型拡張装置５のリング方向を検出して、当該リング方向に基づいてリングオブジェクトＲの方向（すなわち、仮想オブジェクトＰＯの向き）を変化させる処理は、リング型拡張装置５に装着された右コントローラ４によって検出された角速度だけでなく加速度も用いられるため、ユーザの操作状態に応じた適切なパラメータを用いることができる。なお、リング型拡張装置５の向きを変える操作は、右コントローラ４（リング型拡張装置５）における動きセンサの出力に加えて、左コントローラ３の動きセンサとは別のセンサや入力装置からの出力を用いて判定されてもかまわない。
【０１４３】
また、上述したように、表示画面（例えば、据置型モニタ９）には、ユーザ操作に応じて仮想ゲーム空間内において動作する仮想オブジェクトＰＯが表示される。ここで、仮想オブジェクトＰＯは、リングオブジェクトＲを把持しており、ユーザのベルト型拡張装置６を用いた股上げ／股下げ操作に応じた動作および速度で仮想ゲーム空間内を移動するとともに、リング型拡張装置５を用いたユーザ操作に応じて仮想ゲーム空間内におけるリングオブジェクトＲのリング方向を変化させる。つまり、ユーザの下半身に締着されたベルト型拡張装置６に装着された左コントローラ３の操作データに基づいて仮想オブジェクトＰＯの足の動作制御が行われ、ユーザの上半身の腕で把持されたリング型拡張装置５に装着された右コントローラ４の操作データに基づいて仮想オブジェクトＰＯの腕の動作制御が行われることになる。
【０１４４】
なお、上述した説明では、説明を具体的にするために、左コントローラ３および右コントローラ４にそれぞれ定義されているｘｙｚ軸を用いて処理をする例を用いているが、実際には、上記状態とは異なる実空間における方向にｘｙｚ軸が配置されることもあり得るし、ベルト型拡張装置６やリング型拡張装置５の姿勢が変化することに応じて、異なる方向を基準とした姿勢検出が必要となる。例えば、実際のベルト型拡張装置６やリング型拡張装置５の姿勢検出においては、実空間において互いに直交する３軸を基準として算出してもよく、実空間における左右方向（図示Ｘ軸方向）、上下方向（図示Ｙ軸方向）、および前後方向（図示Ｚ軸方向）を基準として算出してもよい。この場合、上述した説明のおける左コントローラ３のｘ軸（左右方向）を実空間における左右方向（図示Ｘ軸方向）とし、左コントローラ３のｙ軸（上下方向）を実空間における上下方向（図示Ｙ軸方向）とし、左コントローラ３のｚ軸（前後方向）を実空間における前後方向（図示Ｚ軸方向）としてそれぞれ置き換えることによって、同様にベルト型拡張装置６の姿勢の検出が可能となる。また、上述した説明のおける右コントローラ４のｙ軸（左右方向）を実空間における左右方向（図示Ｘ軸方向）とし、右コントローラ４のｘ軸（上下方向）を実空間における上下方向（図示Ｙ軸方向）とし、右コントローラ４のｚ軸（前後方向）を実空間における前後方向（図示Ｚ軸方向）としてそれぞれ置き換えることによって、同様にリング型拡張装置５の姿勢の検出が可能となる。
【０１４５】
また、上述した説明において処理に用いているパラメータ（加速度、角速度、角度、周期、変化量、合算値、平均値、期間、閾値等）やそれらの数値は、一例に過ぎず、他のパラメータや数値であってもよい。また、ゲームを行う際に重視されるパラメータが異なるプレイモードを設定し、当該プレイモードの選択がユーザ操作に応じてゲーム開始前に行われてもよい。例えば、加速度の大きさや変化が重視されるプレイモードと、角速度の大きさや変化が重視されるプレイモードが設定されてもよい。一例として、上述した実施例における処理例が加速度の大きさや変化が重視されるプレイモードとして用いられ、当該加速度の大きさや変化が重視されるプレイモードにおいて加速度が用いられている処理の少なくとも１つを角速度または角度を用いた処理に変更する、または加速度が用いられている処理の全てを角速度または角度を用いた処理に変更することによって、角速度の大きさや変化が重視されるプレイモードが設定されてもよい。具体的には、「ジョギング」によるユーザの足踏み動作と「走り」によるユーザの足踏み動作とを判別する処理が、加速度に代えて角速度（例えば角速度の合算値における所定処理回数分の平均値）を用いて行われてもよい。この場合、上記足踏み動作の判別を行うためのユーザ閾値においても、角速度に基づいて予め設定される。したがって、加速度の大きさや変化が重視されるプレイモードは、ベルト型拡張装置６に装着された左コントローラ３に含まれている加速度センサの出力が大きい場合に小さい場合よりも仮想オブジェクトＰＯの移動速度が速くなるモードとして機能する。これに対して、角速度の大きさや変化が重視されるプレイモードは、ベルト型拡張装置６に装着された左コントローラ３に含まれている角速度センサの出力が大きい場合に小さい場合よりも仮想オブジェクトＰＯの移動速度が速くなるモードとして機能する。また、「ジョギング」によるユーザの足踏み動作と「走り」によるユーザの足踏み動作とを加速度を用いて判別するプレイモードと角速度を用いて判別するプレイモードとの切り替えが可能である場合、後者のプレイモードでは相対的に床面への衝撃が小さいユーザ動作で操作（例えば、足踏みに代えて足を屈伸する操作）することが可能となる。したがって、前者のプレイモードを通常プレイモードとして、後者のプレイモードをサイレントモードとして機能させることができる。
【０１４６】
次に、図１７〜図２４を参照して、本実施形態においてゲームシステム１で実行される具体的な処理の一例について説明する。図１７は、本実施形態において本体装置２のＤＲＡＭ８５に設定されるデータ領域の一例を示す図である。なお、ＤＲＡＭ８５には、図１７に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。
【０１４７】
ＤＲＡＭ８５のプログラム記憶領域には、ゲームシステム１で実行される各種プログラムＰａが記憶される。本実施形態においては、各種プログラムＰａは、上述した左コントローラ３および右コントローラ４それぞれとの間で無線通信するための通信プログラムや、左コントローラ３および右コントローラ４それぞれから取得したデータや本体装置２の姿勢に基づいた情報処理を行うためのアプリケーションプログラム（例えば、ゲームプログラム）等が記憶される。なお、各種プログラムＰａは、フラッシュメモリ８４に予め記憶されていてもよいし、ゲームシステム１に着脱可能な記憶媒体（例えば、スロット２３に装着された所定の種類の記憶媒体）から取得されてＤＲＡＭ８５に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてＤＲＡＭ８５に記憶されてもよい。プロセッサ８１は、ＤＲＡＭ８５に記憶された各種プログラムＰａを実行する。
【０１４８】
また、ＤＲＡＭ８５のデータ記憶領域には、ゲームシステム１において実行される通信処理や情報処理等の処理において用いられる各種のデータが記憶される。本実施形態においては、ＤＲＡＭ８５には、操作データＤａ、角速度データＤｂ、加速度データＤｃ、姿勢データＤｄ、重力方向データＤｅ、股上げ時点データＤｆ、股下げ時点データＤｇ、足踏み周期データＤｈ、加速度変化累積値データＤｉ、リング方向データＤｊ、状態データＤｋ、仮想オブジェクトデータＤｍ、ユーザ閾値データＤｎ、および画像データＤｏ等が記憶される。
【０１４９】
操作データＤａは、左コントローラ３および右コントローラ４からそれぞれ適宜取得した操作データである。上述したように、左コントローラ３および右コントローラ４からそれぞれ送信される操作データには、各入力部（具体的には、各ボタン、アナログスティック、各センサ）からの入力に関する情報（具体的には、操作に関する情報や各センサによる検出結果）やリング型拡張装置５における環状部２０１の変形状態を示す歪み値が含まれている。本実施形態では、無線通信によって左コントローラ３および右コントローラ４からそれぞれ所定周期で操作データが送信されており、当該受信した操作データを用いて操作データＤａが適宜更新される。なお、操作データＤａの更新周期は、ゲームシステム１で実行される処理の周期である１フレーム毎に更新されてもよいし、上記無線通信によって操作データが送信される周期毎に更新されてもよい。
【０１５０】
角速度データＤｂは、左コントローラ３および右コントローラ４からそれぞれ取得した操作データのうち、現時点から所定時間前までに取得された左コントローラ３および右コントローラ４それぞれに生じている角速度の履歴を示すデータである。例えば、角速度データＤｂは、左コントローラ３および右コントローラ４それぞれに生じているｘｙｚ軸周りの角速度を示すデータの履歴等を含んでいる。
【０１５１】
加速度データＤｃは、左コントローラ３および右コントローラ４からそれぞれ取得した操作データのうち、現時点から所定時間前までに取得された左コントローラ３および右コントローラ４それぞれに生じている加速度の履歴を示すデータである。例えば、角速度データＤｃは、左コントローラ３および右コントローラ４それぞれに生じているｘｙｚ軸方向の加速度を示すデータの履歴等を含んでいる。
【０１５２】
姿勢データＤｄは、実空間における左コントローラ３および右コントローラ４の姿勢とを示すデータである。一例として、姿勢データＤｄは、実空間における左コントローラ３および右コントローラ４のｘｙｚ軸方向（例えば、実空間におけるＸＹＺ軸に対する角度）をそれぞれ示すデータである。
【０１５３】
重力方向データＤｅは、左コントローラ３および右コントローラ４にそれぞれ作用している重力加速度の方向を示すデータである。
【０１５４】
股上げ時点データＤｆは、ユーザが足踏み操作において足（股）を上げたタイミングを示すデータである。股下げ時点データＤｇは、ユーザが足踏み操作において足（股）を下げたタイミングを示すデータである。足踏み周期データＤｈは、ユーザが行っている足踏み操作の周期および股上げ時点から股下げ時点までの時間を示すデータである。
【０１５５】
加速度変化累積値データＤｉは、左コントローラ３に生じている加速度の変化量をそれぞれ所定期間分累積した値を示すデータである。
【０１５６】
リング方向データＤｊは、実空間におけるリング型拡張装置５のリング方向を示すデータである。
【０１５７】
状態データＤｋは、ユーザの足踏み操作の状態を示すデータであり、例えば、「停止状態」、「歩き状態」、「ジョギング状態」、および「走り状態」の何れかを示すデータである。
【０１５８】
仮想オブジェクトデータＤｍは、仮想ゲーム空間に配置されている仮想オブジェクトＰＯの位置、状態、姿勢、動作等を示すデータや、他の仮想オブジェクトの位置、状態、姿勢、動作等を示すデータである。
【０１５９】
ユーザ閾値データＤｎは、ユーザ毎の「ジョギング状態」と「走り状態」とをユーザ毎に判定するために、予め設定されたユーザ毎の閾値を示すデータである。
【０１６０】
画像データＤｏは、表示画面に画像（例えば、仮想オブジェクトＰＯの画像、他の仮想オブジェクトの画像、フィールド画像、背景画像等）を表示するためのデータである。
【０１６１】
次に、図１８〜図２４を参照して、本実施形態における情報処理の詳細な一例を説明する。図１８は、ゲームシステム１で実行される情報処理の一例を示すフローチャートである。図１９は、図１８におけるステップＳ１０５において行われる動き出し時処理の詳細な一例を示すサブルーチンである。図２０は、図１８におけるステップＳ１０７において行われるユーザ動作判定処理の詳細な一例を示すサブルーチンである。図２１は、図１８におけるステップＳ１０８において行われる移動時判定処理の詳細な一例を示すサブルーチンである。図２２は、図１８におけるステップＳ１１０において行われる走り移動判定処理の詳細な一例を示すサブルーチンである。図２３は、図１８におけるステップＳ１１１において行われる停止判定処理の詳細な一例を示すサブルーチンである。図２４は、図１８におけるステップＳ１１２において行われるリング方向判定処理の詳細な一例を示すサブルーチンである。本実施形態においては、図１８〜図２４に示す一連の処理は、プロセッサ８１が各種プログラムＰａに含まれる通信プログラムや所定のアプリケーションプログラム（ゲームプログラム）を実行することによって行われる。また、図１８〜図２４に示す情報処理が開始されるタイミングは任意である。
【０１６２】
なお、図１８〜図２４に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて（または代えて）別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をプロセッサ８１が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、プロセッサ８１以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置２において実行される処理の一部は、本体装置２と通信可能な他の情報処理装置（例えば、本体装置２とネットワークを介して通信可能なサーバ）によって実行されてもよい。すなわち図１８〜図２４に示す各処理は、本体装置２を含む複数の情報処理装置が協働することによって実行されてもよい。
【０１６３】
図１８において、プロセッサ８１は、情報処理における初期設定を行い（ステップＳ１０１）、次のステップに処理を進める。例えば、上記初期設定では、プロセッサ８１は、以下に説明する処理を行うためのパラメータを初期化する。例えば、プロセッサ８１は、情報処理（ゲーム処理）を行うユーザを設定するとともに、「ジョギング」による足踏み動作と「走り」による足踏み動作とを判別するために、当該ユーザがゲーム開始前に予め操作（足踏み動作）を行って設定されているユーザ閾値を用いて、ユーザ閾値データＤｎを初期設定する。また、プロセッサ８１は、仮想ゲーム空間においてワールド座標軸を定義するとともに、仮想ゲーム空間において各オブジェクト（仮想オブジェクトＰＯを含む）を配置して仮想ゲーム空間の初期状態を生成して、オブジェクトそれぞれの位置、方向、および姿勢等を用いて仮想オブジェクトデータＤｍを更新する。また、プロセッサ８１は、仮想オブジェクトＰＯを停止状態に初期設定し、状態データＤｋを更新する。なお、閾値設定部は、低速移動動作をさせるための操作と高速移動動作をさせるための操作とを区別するための閾値を設定する処理を行うものであり、一例としてユーザ閾値データＤｎを初期設定する処理を行うプロセッサ８１に相当する。
【０１６４】
次に、プロセッサ８１は、左コントローラ３および右コントローラ４から操作データを取得して操作データＤａを更新し（ステップＳ１０２）、次のステップに処理を進める。なお、プロセッサ８１は、上記ステップＳ１０２において左コントローラ３および右コントローラ４からそれぞれ取得した操作データのうち、左コントローラ３および右コントローラ４それぞれに生じている角速度を示すデータを、角速度データＤｂに格納する。また、プロセッサ８１は、上記ステップＳ１０２において左コントローラ３および右コントローラ４からそれぞれ取得した操作データのうち、左コントローラ３および右コントローラ４それぞれに生じている加速度を示すデータを、加速度データＤｃに格納する。
【０１６５】
次に、プロセッサ８１は、左コントローラ３および右コントローラ４の姿勢を算出し（ステップＳ１０３）、次のステップに処理を進める。例えば、プロセッサ８１は、角速度データＤｂに格納されている角速度データを用いて、左コントローラ３および右コントローラ４それぞれのｘｙｚ軸周りの角速度を取得する。そして、プロセッサ８１は、姿勢データＤｄが示す左コントローラ３および右コントローラ４の姿勢における重力加速度方向を基準としたｘｙｚ軸を、取得された角速度に応じてそれぞれ回転させて、当該回転後の重力加速度方向を基準としたｘｙｚ軸の方向を用いて姿勢データＤｄにおける左コントローラ３および右コントローラ４の姿勢を示すデータを更新する。また、プロセッサ８１は、加速度データＤｃに格納されている角速度データを用いて、左コントローラ３および右コントローラ４にそれぞれ作用している重力加速度の方向を算出して、重力方向データＤｅを更新する。なお、重力加速度を抽出する方法については任意の方法を用いればよく、例えば左コントローラ３および右コントローラ４にそれぞれ平均的に生じている加速度成分を算出して当該加速度成分を重力加速度として抽出してもよい。また、プロセッサ８１は、重力方向データＤｅが示す左コントローラ３および右コントローラ４それぞれに生じている重力加速度の方向を用いて、姿勢データＤｄが示す左コントローラ３および右コントローラ４の姿勢を適時補正してもかまわない。
【０１６６】
次に、プロセッサ８１は、ユーザの足踏み動作が停止状態であるか否かを判定する（ステップＳ１０４）。例えば、プロセッサ８１は、状態データＤｋが停止状態を示す場合、上記ステップＳ１０４において肯定判定する。そして、プロセッサ８１は、ユーザの足踏み動作が停止状態である場合、ステップＳ１０５に処理を進める。一方、プロセッサ８１は、ユーザの足踏み動作が停止状態でない場合、ステップＳ１０７に処理を進める。
【０１６７】
ステップＳ１０５において、プロセッサ８１は、動き出し時処理を行い（ステップＳ１０５）、ステップＳ１０６に処理を進める。以下、図１９を参照して、上記ステップＳ１０５において行われる動き出し時処理について説明する。
【０１６８】
図１９において、プロセッサ８１は、所定期間分の右コントローラ４において生じる加速度の変化量合算値を算出し（ステップＳ１２１）、次のステップに処理を進める。例えば、プロセッサ８１は、加速度データＤｃを用いて、直前の所定期間（例えば、５フレーム）において、各フレーム間それぞれにおける右コントローラ４の加速度の変化量を算出し、当該変化量を全て合算することによって上記変化量合算値を算出する。
【０１６９】
次に、プロセッサ８１は、上記ステップＳ１２１において算出された変化量合算値が第１閾値（例えば、１．５Ｇ）以上であるかを判定する（ステップＳ１２２；第１動き出し条件）。そして、プロセッサ８１は、上記変化量合算値が第１閾値以上である場合、ステップＳ１２３に処理を進める。一方、プロセッサ８１は、上記変化量合算値が第１閾値未満である場合、ステップＳ１３３に処理を進める。
【０１７０】
ステップＳ１２３において、プロセッサ８１は、左コントローラ３および右コントローラ４においてそれぞれ生じている重力加速度を省いた実空間の直上方向の加速度を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、加速度データＤｃおよび重力方向データＤｅを用いて、左コントローラ３および右コントローラ４においてそれぞれ生じている実空間の直上方向の加速度（重力加速度とは反対方向の加速度）を取得し、当該直上方向の加速度からそれぞれ重力加速度を減算する。
【０１７１】
次に、プロセッサ８１は、上記ステップＳ１２３において算出された左コントローラ３および右コントローラ４それぞれの直上方向の加速度が第２閾値（例えば、０．２Ｇ）以上であるかを判定する（ステップＳ１２４；第２動き出し条件）。そして、プロセッサ８１は、上記直上方向の加速度が第２閾値未満である場合、ステップＳ１２５に処理を進める。一方、プロセッサ８１は、上記直上方向の加速度が第２閾値以上である場合、ステップＳ１２９に処理を進める。
【０１７２】
ステップＳ１２５において、プロセッサ８１は、左コントローラ３において生じる重力加速度を省いた実空間の直上方向の加速度の値を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、加速度データＤｃおよび重力方向データＤｅを用いて、左コントローラ３において生じている実空間の直上方向の加速度（重力加速度とは反対方向の加速度）を取得し、当該直上方向の加速度から重力加速度を減算する。
【０１７３】
次に、プロセッサ８１は、上記ステップＳ１２５において算出された左コントローラ３の直上方向の加速度が第３閾値（例えば、０．１Ｇ）以上であるかを判定する（ステップＳ１２６；第３動き出し条件）。そして、プロセッサ８１は、上記直上方向の加速度が第３閾値以上である場合、ステップＳ１２７に処理を進める。一方、プロセッサ８１は、上記直上方向の加速度が第３閾値未満である場合、ステップＳ１３３に処理を進める。
【０１７４】
ステップＳ１２７において、プロセッサ８１は、左コントローラ３が前後揺れする一定期間中の角度変化を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、角速度データＤｂを用いて、左コントローラ３において直前の一定期間内で生じているユーザの前後方向（例えば、左コントローラ３のｘ軸周り）の角速度を取得し、当該角速度を用いて、当該前後方向の角度変化を算出する。
【０１７５】
次に、プロセッサ８１は、上記ステップＳ１２７において算出された左コントローラ３の角度変化が第４閾値（例えば、１５°）以上であるかを判定する（ステップＳ１２８；第３動き出し条件）。そして、プロセッサ８１は、上記角度変化が第４閾値以上である場合、ステップＳ１２９に処理を進める。一方、プロセッサ８１は、上記角度変化が第４閾値未満である場合、ステップＳ１３３に処理を進める。
【０１７６】
ステップＳ１２９において、プロセッサ８１は、所定期間分の右コントローラ４において生じる直上方向の加速度の変化量を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、加速度データＤｃおよび重力方向データＤｅを用いて、直前の所定期間（例えば、１５フレーム）における右コントローラ４の直上方向の加速度変化量を算出する。
【０１７７】
次に、プロセッサ８１は、上記ステップＳ１２９において算出された右コントローラ４の直上方向の加速度変化量が第５閾値（例えば、１．２Ｇ）以下であるかを判定する（ステップＳ１３０；動き出し時動作判別条件）。そして、プロセッサ８１は、上記直上方向の加速度変化量が第５閾値以下である場合、ステップＳ１３１に処理を進める。一方、プロセッサ８１は、上記直上方向の加速度変化量が第５閾値より大きい場合、ステップＳ１３２に処理を進める。
【０１７８】
ステップＳ１３１において、プロセッサ８１は、ユーザの足踏み動作を歩き状態に設定して、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、ユーザの足踏み動作を歩き状態に設定して、状態データＤｋを更新する。
【０１７９】
一方、ステップＳ１３２において、プロセッサ８１は、ユーザの足踏み動作をジョギング状態に設定して、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、ユーザの足踏み動作をジョギング状態に設定して、状態データＤｋを更新する。
【０１８０】
ステップＳ１３３において、プロセッサ８１は、ユーザの足踏み動作を停止状態に設定して、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、ユーザの足踏み動作を停止状態に設定して、状態データＤｋを更新する。
【０１８１】
上記ステップＳ１２１〜Ｓ１２８における処理から明らかなように、上記第１動き出し条件および上記第２動き出し条件を何れも満たす場合（上記ステップＳ１２２および上記ステップＳ１２４が何れも肯定判定）、または上記第１動き出し条件および第３動き出し条件を何れも満たす場合（上記ステップＳ１２２、上記ステップＳ１２６、および上記ステップＳ１２８が何れも肯定判定）、ステップＳ１３３の処理が行われずにユーザが停止状態以外の状態に変更される、すなわちユーザが停止状態から動き出したと判定されることになり、ユーザの動き出し判定を行っていることになる。また、上記ステップＳ１２９〜Ｓ１３２における処理は、上記ステップＳ１２１〜Ｓ１３３における動き出し判定処理においてユーザが停止状態から動き出したと判定された際に、どのような動作で動き出すかを判定する動き出し時動作判別条件を用いた判定を行う処理となる。
【０１８２】
図１８に戻り、上記ステップＳ１０５の動き出し時処理の後、プロセッサ８１は、ユーザの足踏み動作が停止状態であるか否かを判定する（ステップＳ１０６）。例えば、プロセッサ８１は、状態データＤｋが停止状態を示す場合、上記ステップＳ１０６において肯定判定する。そして、プロセッサ８１は、ユーザの足踏み動作が停止状態でない場合、ステップＳ１０７に処理を進める。一方、プロセッサ８１は、ユーザの足踏み動作が停止状態である場合、ステップＳ１１２に処理を進める。
【０１８３】
ステップＳ１０７において、プロセッサ８１は、ユーザ動作判定処理を行い（ステップＳ１０７）、ステップＳ１０８に処理を進める。以下、図２０を参照して、上記ステップＳ１０７において行われるユーザ動作判定処理について説明する。
【０１８４】
図２０において、プロセッサ８１は、直近の所定期間（例えば、１５フレーム）における左コントローラ３の前後方向（例えば、ｘ軸方向周り）の角度の最大値および最小値を取得して（ステップＳ１４１）、次のステップに処理を進める。例えば、プロセッサ８１は、角速度データＤｂを用いて、左コントローラ３において直前の所定期間において生じているユーザの前後方向（例えば、左コントローラ３のｘ軸周り）の角速度を取得し、当該角速度から算出された当該前後方向の角度（膝曲げ角度が大きくなるほど大きくなる角度）の最大値および最小値を取得する。
【０１８５】
次に、プロセッサ８１は、上記ステップＳ１４１において取得された最小値が得られた時点より最大値が得られた時点が直近か否かを判定する（ステップＳ１４２；第１股上げ判定条件、第１股下げ判定条件）。そして、プロセッサ８１は、最大値が得られた時点が直近である場合、ステップＳ１４３に処理を進める。一方、プロセッサ８１は、最小値が得られた時点が直近である場合、ステップＳ１４６に処理を進める。
【０１８６】
ステップＳ１４３において、プロセッサ８１は、直近の所定期間における左コントローラ３の鉛直方向の加速度を取得し、次のステップに処理を進める。例えば、プロセッサ８１は、加速度データＤｃを用いて、直近の所定期間（例えば、１５フレーム）における左コントローラ３の鉛直方向の加速度を取得する。
【０１８７】
次に、プロセッサ８１は、上記ステップＳ１４３において取得された加速度が第６閾値（例えば、０．８Ｇ）以下であるか否かを判定する（ステップＳ１４４；第２股上げ判定条件）。そして、プロセッサ８１は、上記ステップＳ１４３において取得された加速度が第６閾値以下である場合、左コントローラ３が実空間の直上方向に加速していると判定して、ステップＳ１４５に処理を進める。一方、プロセッサ８１は、上記ステップＳ１４３において取得された加速度が第６閾値より大きい場合、左コントローラ３が実空間の直上方向に加速していないと判定して、そのまま当該サブルーチンによる処理を終了する。
【０１８８】
ステップＳ１４５において、プロセッサ８１は、左コントローラ３の前後方向（例えば、ｘ軸方向周り）の角度の最大値が得られた時点を股上げ時点として設定し、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、上記ステップＳ１４１において取得された最大値が得られた時点を股上げ時点として、股上げ時点データＤｆを更新する。
【０１８９】
一方、ステップＳ１４６において、プロセッサ８１は、直近の所定期間における左コントローラ３の鉛直方向の加速度を取得し、次のステップに処理を進める。例えば、プロセッサ８１は、加速度データＤｃを用いて、直近の所定期間（例えば、１５フレーム）における左コントローラ３の鉛直方向の加速度を取得する。
【０１９０】
次に、プロセッサ８１は、上記ステップＳ１４６において取得された加速度が第７閾値（例えば、１．２Ｇ）以上であるか否かを判定する（ステップＳ１４７；第２股下げ判定条件）。そして、プロセッサ８１は、上記ステップＳ１４６において取得された加速度が第７閾値以上である場合、左コントローラ３が実空間の鉛直方向に加速していると判定して、ステップＳ１４８に処理を進める。一方、プロセッサ８１は、上記ステップＳ１４６において取得された加速度が第７閾値より小さい場合、左コントローラ３が実空間の鉛直方向に加速していないと判定して、そのまま当該サブルーチンによる処理を終了する。
【０１９１】
ステップＳ１４８において、プロセッサ８１は、左コントローラ３の前後方向（例えば、ｘ軸方向周り）の角度の最小値が得られた時点を股下げ時点として設定し、次のステップに処理を進める。例えば、プロセッサ８１は、上記ステップＳ１４１において取得された最小値が得られた時点を今回の股下げ時点として、当該股下げ時点が新たな時点である場合に当該股下げ時点を示すデータを股下げ時点データＤｇに追加する。
【０１９２】
次に、プロセッサ８１は、足踏み周期および股上げ時点から股下げ時点までの時間をそれぞれ算出して（ステップＳ１４９）、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、股下げ時点データＤｇが示す前回の股下げ時点から今回の股下げ時点までの時間を足踏み周期として算出する。また、プロセッサ８１は、股上げ時点データＤｆが示す股上げ時点から股下げ時点データＤｇが示す今回の股下げ時点までの時間を算出する。そして、プロセッサ８１は、算出された足踏み周期および股上げ時点から股下げ時点までの時間を用いて、足踏み周期データＤｈを更新する。
【０１９３】
図１８に戻り、上記ステップＳ１０７のユーザ動作判定処理の後、プロセッサ８１は、ユーザの足踏み動作開始後の動作判定（移動時動作判定）を行い（ステップＳ１０８）、ステップＳ１０９に処理を進める。以下、図２１を参照して、上記ステップＳ１０８において行われる移動時判定処理について説明する。
【０１９４】
図２１において、プロセッサ８１は、ユーザの足踏み周期を取得し（ステップＳ１５１）、次のステップに処理を進める。例えば、プロセッサ８１は、足踏み周期データＤｈを用いて、ユーザの足踏み操作における足踏み周期（具体的には、ベルト型拡張装置６が締着されたユーザの左股を上げ下げする周期）を取得する。
【０１９５】
次に、プロセッサ８１は、上記ステップＳ１５１において取得した足踏み周期が第８閾値（例えば、６０フレーム）以上であるか否かを判定する（ステップＳ１５２；第１動き出し後動作判別条件）。そして、プロセッサ８１は、足踏み周期が第８閾値より短い場合、ステップＳ１５８に処理を進める。一方、プロセッサ８１は、足踏み周期が第８閾値以上である場合、ステップＳ１５３に処理を進める。
【０１９６】
ステップＳ１５３において、ユーザの股上げ時点から股下げ時点までの時間を取得し、次のステップに処理を進める。例えば、プロセッサ８１は、足踏み周期データＤｈを用いて、ユーザの足踏み操作における股上げ時点から股下げ時点までの時間を取得する。
【０１９７】
次に、プロセッサ８１は、上記ステップＳ１５３において取得した股上げ時点から股下げ時点までの時間が第９閾値（例えば、２０フレーム）以上であるか否かを判定する（ステップＳ１５４；第２動き出し後動作判別条件）。そして、プロセッサ８１は、股上げ時点から股下げ時点までの時間が第９閾値より短い場合、ステップＳ１５８に処理を進める。一方、プロセッサ８１は、股上げ時点から股下げ時点までの時間が第９閾値以上である場合、ステップＳ１５５に処理を進める。
【０１９８】
ステップＳ１５６において、プロセッサ８１は、所定期間分の右コントローラ４において生じる直上方向の加速度の変化量を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、加速度データＤｃおよび重力方向データＤｅを用いて、直前の所定期間（例えば、１５フレーム）における右コントローラ４の直上方向の加速度変化量を算出する。
【０１９９】
次に、プロセッサ８１は、上記ステップＳ１５６において算出された右コントローラ４の直上方向の加速度変化量が第５閾値（例えば、１．２Ｇ）以下であるかを判定する（ステップＳ１５７；第３動き出し後動作判別条件）。そして、プロセッサ８１は、上記直上方向の加速度変化量が第５閾値以下である場合、ステップＳ１５７に処理を進める。一方、プロセッサ８１は、上記直上方向の加速度変化量が第５閾値より大きい場合、ステップＳ１５８に処理を進める。
【０２００】
ステップＳ１５８において、プロセッサ８１は、ユーザの足踏み動作をジョギング状態に設定して、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、ユーザの足踏み動作をジョギング状態に設定して、状態データＤｋを更新する。
【０２０１】
一方、ステップＳ１５７において、プロセッサ８１は、ユーザの足踏み動作がジョギング状態であるか否かを判定する。例えば、プロセッサ８１は、状態データＤｋがジョギング状態を示す場合、上記ステップＳ１５７において肯定判定する。そして、プロセッサ８１は、ユーザの足踏み動作がジョギング状態でない場合、ステップＳ１５９に処理を進める。一方、プロセッサ８１は、ユーザの足踏み動作がジョギング状態である場合、ステップＳ１６０に処理を進める。
【０２０２】
ステップＳ１５９において、プロセッサ８１は、ユーザの足踏み動作を歩き状態に設定して、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、ユーザの足踏み動作を歩き状態に設定して、状態データＤｋを更新する。
【０２０３】
ステップＳ１６０において、プロセッサ８１は、ユーザの足踏み動作を停止状態に設定して、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、ユーザの足踏み動作を停止状態に設定して、状態データＤｋを更新する。
【０２０４】
上述したステップＳ１０８における移動時判定処理は、ユーザの足踏み動作が停止状態でない、すなわちユーザの足踏み動作が歩き状態、ジョギング状態、または走り状態において行われる処理である。ここで、上記ステップＳ１５１〜Ｓ１６０における処理から明らかなように、上記第１動き出し後動作判別条件、上記第２動き出し後動作判別条件、および上記第３動き出し後動作判別条件の全てを満たす場合（上記ステップＳ１５２、ステップＳ１５４、ステップＳ１５６が何れも肯定判定）、ユーザの足踏み動作が歩き状態である判定される。そして、上記ステップＳ１５１〜Ｓ１５６における処理によって、ユーザの足踏み動作がジョギング状態から歩き状態に変更される場合、上記ステップＳ１５７において肯定判定されることによって、一旦、停止状態に変更されることになる。なお、ステップＳ１０８における移動時判定処理は、ユーザが足踏み動作中に行われるため、上記ステップＳ１０５における動き出し時処理における動き出し判定処理と比較して、相対的に長い期間において取得された操作データが用いられるため、より正確にユーザの足踏み動作を判別することが可能となる。
【０２０５】
図１８に戻り、上記ステップＳ１０８の移動時判定処理の後、プロセッサ８１は、ユーザの足踏み動作がジョギング状態または走り状態であるか否かを判定する（ステップＳ１０９）。例えば、プロセッサ８１は、状態データＤｋがジョギング状態および走り状態の一方を示す場合、上記ステップＳ１０９において肯定判定する。そして、プロセッサ８１は、ユーザの足踏み動作がジョギング状態または走り状態である場合、ステップＳ１１０に処理を進める。一方、プロセッサ８１は、ユーザの足踏み動作がジョギング状態または走り状態でない場合、ステップＳ１１１に処理を進める。
【０２０６】
ステップＳ１１０において、プロセッサ８１は、ユーザがジョギング状態および走り状態の何れであるのかを判定する走り移動判定処理を行い、ステップＳ１１１に処理を進める。以下、図２２を参照して、上記ステップＳ１１０において行われる走り移動判定処理について説明する。
【０２０７】
図２２において、プロセッサ８１は、左コントローラ３において生じた加速度変化量を直前の所定時間分（例えば、６０フレーム分）合算した累積値を算出し（ステップＳ１６１）、次のステップに処理を進める。例えば、プロセッサ８１は、加速度データＤｂを用いて、左コントローラ３において生じているフレーム間毎の加速度変化量を所定時間分（例えば、６０フレーム分）合算することによって累積値を算出し、算出された累積値を現フレームにおいて算出された累積値として加速度変化累積値データＤｉに追加する。
【０２０８】
次に、プロセッサ８１は、過去の処理において算出されている上記累積値の所定期間分（例えば、３０フレーム分）の平均値を算出し（ステップＳ１６２）、次のステップに処理を進める。例えば、プロセッサ８１は、加速度変化累積値データＤｉに格納されている累積値から現フレームを含めて直前の所定期間分を取得し、当該累積値の平均値を算出する。
【０２０９】
次に、プロセッサ８１は、ユーザ毎に「ジョギング状態」と「走り状態」とをユーザ毎に判定するために、現ユーザに対して予め設定されたユーザ閾値を取得し（ステップＳ１６３）、次のステップに処理を進める。例えば、プロセッサ８１は、ユーザ閾値データＤｎを参照して、現ユーザに対して予め設定されているユーザ閾値を取得する。
【０２１０】
次に、プロセッサ８１は、上記ステップＳ１６２において算出された平均値が上記ユーザ閾値以上であるか否かを判定する（ステップＳ１６４）。そして、プロセッサ８１は、上記平均値が上記ユーザ閾値以上である場合、ステップＳ１６５に処理を進める。一方、プロセッサ８１は、上記平均値が上記ユーザ閾値より小さい場合、ステップＳ１６６に処理を進める。
【０２１１】
ステップＳ１６５において、プロセッサ８１は、ユーザの足踏み動作を走り状態に設定して、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、ユーザの足踏み動作を走り状態に設定して、状態データＤｋを更新する。
【０２１２】
一方、ステップＳ１５６において、プロセッサ８１は、ユーザの足踏み動作をジョギング状態に設定して、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、ユーザの足踏み動作をジョギング状態に設定して、状態データＤｋを更新する。
【０２１３】
図１８に戻り、上記ステップＳ１１０の走り移動判定処理の後、または上記ステップＳ１０９において否定判定された後、プロセッサ８１は、ユーザが足踏み状態から停止状態に変化したかを判定する停止判定処理を行い（ステップＳ１１１）、ステップＳ１１２に処理を進める。以下、図２３を参照して、上記ステップＳ１１１において行われる停止判定処理について説明する。
【０２１４】
図２３において、プロセッサ８１は、ユーザの足踏み動作が歩き状態であるか否かを判定する（ステップＳ１７１）。例えば、プロセッサ８１は、状態データＤｋが歩き状態を示す場合、上記ステップＳ１７１において肯定判定する。そして、プロセッサ８１は、ユーザの足踏み動作が歩き状態である場合、ステップＳ１７２に処理を進める。一方、プロセッサ８１は、ユーザの足踏み動作が歩き状態でない場合、ステップＳ１８１に処理を進める。
【０２１５】
ステップＳ１７２において、プロセッサ８１は、右コントローラ４において生じている角速度を取得し、次のステップに処理を進める。例えば、プロセッサ８１は、角速度データＤｂを用いて、右コントローラ４のおいて生じている角速度を取得する。
【０２１６】
次に、プロセッサ８１は、上記ステップＳ１７２において取得した角速度が０であるか否かを判定する（ステップＳ１７３；第１停止動作判定条件）。そして、プロセッサ８１は、上記ステップＳ１７２において取得した角速度が０でない場合、ステップＳ１７４に処理を進める。一方、プロセッサ８１は、上記ステップＳ１７２において取得した角速度が０である場合、ステップＳ１７９に処理を進める。
【０２１７】
ステップＳ１７４において、プロセッサ８１は、直近の所定期間（例えば、９０フレーム）における左コントローラ３の角度変化を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、角速度データＤｂを用いて、左コントローラ３において直前の所定期間内で生じている角速度を取得し、当該角速度を用いて、当該所定期間における左コントローラ３の角度変化を算出する。
【０２１８】
次に、プロセッサ８１は、上記ステップＳ１７４において算出した角度変化が第１０閾値（例えば、１０°）以下であるか否かを判定する（ステップＳ１７５；第２停止動作判定条件）。そして、プロセッサ８１は、上記ステップＳ１７４において算出した角度変化が第１０閾値以下である場合、ステップＳ１７６に処理を進める。一方、プロセッサ８１は、上記ステップＳ１７４において算出した角度変化が第１０閾値より大きい場合、ステップＳ１７８に処理を進める。
【０２１９】
ステップＳ１７６において、プロセッサ８１は、直近の所定期間（例えば、１０フレーム）における左コントローラ３の角速度変位量を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、角速度データＤｂを用いて、左コントローラ３において直前の所定期間内で生じている角速度を取得し、当該角速度を用いて、当該所定期間における左コントローラ３の角速度変位量を算出する。
【０２２０】
次に、プロセッサ８１は、上記ステップＳ１７６において算出した角速度変位量が第１１閾値（例えば、０．０１）以下であるか否かを判定する（ステップＳ１７７；第２停止動作判定条件）。そして、プロセッサ８１は、上記ステップＳ１７６において算出した角速度変位量が第１１閾値以下である場合、ステップＳ１７９に処理を進める。一方、プロセッサ８１は、上記ステップＳ１７６において算出した角速度変位量が第１１閾値より大きい場合、ステップＳ１７８に処理を進める。
【０２２１】
ステップＳ１７８において、プロセッサ８１は、ユーザの足踏み動作を歩き状態に設定して、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、ユーザの足踏み動作を歩き状態に設定して、状態データＤｋを更新する。
【０２２２】
ステップＳ１７９において、プロセッサ８１は、ユーザの足踏み動作を停止状態に設定して、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、ユーザの足踏み動作を停止状態に設定して、状態データＤｋを更新する。
【０２２３】
上記ステップＳ１７１〜Ｓ１７９における処理から明らかなように、ユーザが歩き状態で足踏み動作を行っている状態で（上記ステップＳ１７１が肯定判定）、上記第１停止動作判定条件および上記第２停止動作判定条件の少なくとも１つを満たす場合（上記ステップＳ１７３が肯定判定、または上記ステップＳ１７５および上記ステップＳ１７７が何れも肯定判定）、ユーザの足踏み動作が歩き状態から停止状態に変更されることになる。ここで、ユーザが停止状態となることなく歩き状態を継続するためには、上記第１停止動作判定条件および第２停止動作判定条件が何れも成立しないように、上記ステップＳ１７３において否定判定されるために右コントローラ４において角速度を継続して生じさせるとともに、上記ステップＳ１７５および上記ステップＳ１７７の何れにおいて否定判定されるために所定時間において第１０閾値より大きい左コントローラ３の角度変化を生じさせるまたは第１１閾値以上の左コントローラ３の角速度変化を生じさせることが必要となる。したがって、ユーザが停止状態となることなく歩き状態を継続するためには、左コントローラ３（ベルト型拡張装置６）および右コントローラ４（リング型拡張装置５）の両方を継続して動かすことが必要となり、ユーザの全身を使った操作を促進することができる。また、上記第１停止動作判定条件および上記第２停止動作判定条件は、ユーザの動作継続判定条件としても機能していることになる。
【０２２４】
一方、ステップＳ１８１において、プロセッサ８１は、右コントローラ４において生じている角速度を取得し、次のステップに処理を進める。例えば、プロセッサ８１は、角速度データＤｂを用いて、右コントローラ４のおいて生じている角速度を取得する。
【０２２５】
次に、プロセッサ８１は、上記ステップＳ１８１において取得した角速度が０であるか否かを判定する（ステップＳ１８２；第３停止動作判定条件）。そして、プロセッサ８１は、上記ステップＳ１８１において取得した角速度が０でない場合、ステップＳ１８３に処理を進める。一方、プロセッサ８１は、上記ステップＳ１８１において取得した角速度が０である場合、ステップＳ１７９に処理を進める。
【０２２６】
ステップＳ１８３において、プロセッサ８１は、直近の所定期間（例えば、１０フレーム）における左コントローラ３および右コントローラ４の加速度変化をそれぞれ算出し、次のステップに処理を進める。例えば、プロセッサ８１は、加速度データＤｃを用いて、左コントローラ３および右コントローラ４において直前の所定期間内でそれぞれ生じている加速度を取得し、当該加速度を用いて、当該所定期間における左コントローラ３および右コントローラ４の加速度変化をそれぞれ算出する。
【０２２７】
次に、プロセッサ８１は、上記ステップＳ１８３において算出した左コントローラ３および右コントローラ４それぞれの加速度変化における少なくとも一方が第１２閾値以下であるか否かを判定する（ステップＳ１８４；第４停止動作判定条件）。そして、プロセッサ８１は、上記ステップＳ１８３において算出した加速度変化の少なくとも一方が第１２閾値以下である場合、ステップＳ１７９に処理を進める。一方、プロセッサ８１は、上記ステップＳ１８３において算出した加速度変化の両方が何れも第１２閾値より大きい場合、ステップＳ１８５に処理を進める。
【０２２８】
ステップＳ１８５において、プロセッサ８１は、直近の所定期間（例えば、１０フレーム）における左コントローラ３の角速度平均値を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、角速度データＤｂを用いて、左コントローラ３において直前の所定期間内で生じている角速度を取得し、当該角速度を用いて、当該所定期間における左コントローラ３の角速度平均値を算出する。
【０２２９】
次に、プロセッサ８１は、上記ステップＳ１８５において算出した角速度平均値が第１３閾値以下であるか否かを判定する（ステップＳ１８６；第５停止動作判定条件）。そして、プロセッサ８１は、上記ステップＳ１８５において算出した角速度平均値が第１３閾値以下である場合、ステップＳ１７９に処理を進める。一方、プロセッサ８１は、上記ステップＳ１８５において算出した角速度平均値が第１３閾値より大きい場合、ステップＳ１８７に処理を進める。
【０２３０】
ステップＳ１８７において、プロセッサ８１は、ユーザの足踏み動作をそのままの状態に維持して、当該サブルーチンによる処理を終了する。
【０２３１】
上記ステップＳ１７１、ステップＳ１７９、およびステップＳ１８１〜Ｓ１８７における処理から明らかなように、ユーザがジョギング状態または走り状態で足踏み動作を行っている状態で（上記ステップＳ１７１が否定判定）、上記第３停止動作判定条件〜上記第５停止動作判定条件の少なくとも１つを満たす場合（上記ステップＳ１８２が肯定判定、上記ステップＳ１８４が肯定判定、または上記ステップＳ１８６が肯定判定）、ユーザの足踏み動作がジョギング状態または走り状態から停止状態に変更されることになる。ここで、ユーザが停止状態となることなくジョギング状態または走り状態を継続するためには、上記第３停止動作判定条件〜上記第５停止動作判定条件が何れも成立しないように、上記ステップＳ１８２において否定判定されるために右コントローラ４において角速度を継続して生じさせ、上記ステップＳ１８４において否定判定されるために所定時間において第１２閾値より大きい加速度を左コントローラ３および右コントローラ４の両方に生じさせ、上記ステップＳ１８６において否定判定されるために所定時間において第１３閾値より大きい角速度平均値となるように左コントローラ３を動かすことが必要となる。したがって、ユーザが停止状態となることなくジョギング状態または走り状態を継続するためには、左コントローラ３（ベルト型拡張装置６）および右コントローラ４（リング型拡張装置５）の両方を継続して動かすことが必要となり、ユーザの全身を使った操作を促進することができる。また、上記第３停止動作判定条件〜上記第５停止動作判定条件は、ユーザの動作継続判定条件としても機能していることになる。
【０２３２】
図１８に戻り、上記ステップＳ１１１の停止判定処理の後、または上記ステップＳ１０６において肯定判定された後、プロセッサ８１は、リング方向算出処理を行い（ステップＳ１１２）、ステップＳ１１３に処理を進める。以下、図２４を参照して、上記ステップＳ１１２において行われるリング方向算出処理について説明する。
【０２３３】
図２４において、プロセッサ８１は、右コントローラ４に作用している重力加速度の方向を取得し（ステップＳ１９１）、次のステップに処理を進める。例えば、プロセッサ８１は、重力方向データＤｅを参照して、現時点において右コントローラ４に作用している重力加速度の方向を取得する。
【０２３４】
次に、プロセッサ８１は、上記ステップＳ１９１において取得した重力加速度の方向を用いて、リング型拡張装置５におけるロール方向に対する姿勢を算出し（ステップＳ１９２）、次のステップに処理を進める。例えば、プロセッサ８１は、リング型拡張装置５に作用している重力加速度の方向に基づいて、右コントローラ４がｚ軸を基準として回転している姿勢、すなわちリング型拡張装置５を環状部２０１の円環軸を中心に回転させるロール方向の姿勢（図１６に示すＭ３方向に回転することによって変化する姿勢）を算出し、当該算出結果を用いて、必要に応じて右コントローラ４における姿勢データＤｄを更新する。
【０２３５】
次に、プロセッサ８１は、右コントローラ４（リング型拡張装置５）におけるヨー方向に対する姿勢を取得し（ステップＳ１９３）、次のステップに処理を進める。例えば、プロセッサ８１は、姿勢データＤｄを参照して、右コントローラ４（リング型拡張装置５）におけるヨー方向に対する姿勢、すなわちｘ軸方向周りに生じている角速度（鉛直方向周りに作用する角速度）に基づいて算出されているｘ軸方向周りの姿勢を取得する。
【０２３６】
次に、プロセッサ８１は、上記ステップＳ１９３において取得されたヨー方向の姿勢に基づいて、当該ヨー方向のリング方向の角度を算出し（ステップＳ１９４）、次のステップに処理を進める。例えば、プロセッサ８１は、上記ステップＳ１９３において取得されたヨー方向の姿勢に基づいて、リング方向データＤｊが示すリング方向の当該ヨー方向に対する角度を算出し、当該算出されたヨー方向に対する角度に応じてリング方向データＤｊを更新する。
【０２３７】
次に、プロセッサ８１は、直前の第１取得時間（例えば、３０フレーム）において得られた右コントローラ４の平均加速度を算出し（ステップＳ１９５）、次のステップに処理を進める。例えば、プロセッサ８１は、加速度データＤｃを参照して、右コントローラ４において直前の第１取得時間内に生じている加速度の平均値を算出する。
【０２３８】
次に、プロセッサ８１は、上記ステップＳ１９５において算出された平均加速度に基づいて、ピッチ方向のリング方向の角度を算出し（ステップＳ１９６）、次のステップに処理を進める。例えば、プロセッサ８１は、上記平均加速度を重力加速度であると仮定して、当該仮定された重力加速度を基準とした、ピッチ方向のリング方向の角度を算出する。
【０２３９】
次に、プロセッサ８１は、直前の第２取得期間（＜第１取得期間；例えば、１５フレーム）において得られた右コントローラ４のｙ軸周りの角速度（水平方向周りの角速度）に基づいて、ピッチ方向の角度変位量を算出し（ステップＳ１９７）、次のステップに処理を進める。例えば、プロセッサ８１は、角速度データＤｂを参照して、右コントローラ４において直前の第２取得期間内に生じているｙ軸周りの角速度（水平方向周りの角速度）を用いて、ピッチ方向の角度変位量を算出する。
【０２４０】
次に、プロセッサ８１は、上記ステップＳ１９６において算出されたピッチ方向のリング方向の角度に、上記ステップＳ１９７において算出されたピッチ方向の角度変位量を加算することによって、ピッチ方向のリング方向の角度を新たに算出し（ステップＳ１９８）、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、上記角度変位量が加算されたピッチ方向のリング方向の角度に応じて、リング方向データＤｊを更新する。
【０２４１】
図１８に戻り、上記ステップＳ１１２のリング方向算出処理の後、プロセッサ８１は、オブジェクト動作制御処理を行い（ステップＳ１１３）、次のステップに処理を進める。例えば、プロセッサ８１は、状態データＤｋが示す状態に応じた動作で仮想オブジェクトＰＯを仮想ゲーム空間内で動作および／または移動させる。また、プロセッサ８１は、股上げ時点データＤｆが股上げ時点、股下げ時点データＤｇが示す股下げ時点、および状態データＤｋが示す状態に応じて、仮想オブジェクトＰＯの移動速度を設定しながら仮想オブジェクトＰＯの足が上下するように動作させる。また、プロセッサ８１は、リング方向データＤｊが示すリング方向に応じて、仮想ゲーム空間において仮想オブジェクトＰＯが両手で把持しているリングオブジェクトＲの方向を設定し、当該設定された方向にリングオブジェクトＲの円輪軸が向くように仮想オブジェクトＰＯおよびリングオブジェクトＲの姿勢を変化させる。そして、プロセッサ８１は、リング型拡張装置５における環状部２０１の変形状態を示す歪み値に基づいて、ユーザがリング型拡張装置５を用いて所定の攻撃操作（例えば、リング型拡張装置５におけるグリップカバー２０３および２０４が互いに近づくように環状部２０１を定常状態から閾値以上の変形を行う操作）を行っていることが検出された場合、当該攻撃操作に応じてリングオブジェクトＲからリング方向を攻撃する演出を行う。また、プロセッサ８１は、上記リングオブジェクトＲからの攻撃によって、他のオブジェクト（例えば、オブジェクトＴ（図１３参照））に影響を与える場合、当該影響に応じて当該他のオブジェクトの状態を変化（例えば、消滅）させる。そして、プロセッサ８１は、上述したオブジェクトの動作、位置、姿勢、状態等に応じて、各オブジェクトに対応する仮想オブジェクトデータＤｍを更新する。なお、タイミング決定手段は、仮想オブジェクトの足または手の動作タイミングを決定する処理を行うものであり、一例としてステップＳ１０７およびＳ１１３の処理を行うプロセッサ８１に相当する。
【０２４２】
次に、プロセッサ８１は、画像生成表示制御処理を行い（ステップＳ１１４）、次のステップに処理を進める。例えば、プロセッサ８１は、仮想オブジェクトデータＤｍに基づいた動作、位置、姿勢、状態等に基づいて、仮想ゲーム空間に複数のオブジェクトを配置して、仮想ゲーム空間を生成する。そして、プロセッサ８１は、仮想空間に仮想カメラを配置（例えば、仮想オブジェクトＰＯが視界に含まれるように、仮想オブジェクトＰＯの背後の位置に配置）し、当該仮想カメラから見た仮想ゲーム空間画像を生成して、当該仮想ゲーム空間画像を据置型モニタ９に出力する。
【０２４３】
次に、プロセッサ８１は、処理を終了するか否かを判定する（ステップＳ１１５）。上記ステップＳ１１５において処理を終了する条件としては、例えば、処理が終了される条件が満たされたことや、ユーザが処理を終了する操作を行ったこと等がある。プロセッサ８１は、処理を終了しない場合に上記ステップＳ１０２に戻って処理を繰り返し、処理を終了する場合に当該フローチャートによる処理を終了する。以降、ステップＳ１０２〜ステップＳ１１５の一連の処理は、ステップＳ１１５で処理を終了すると判定されるまで繰り返し実行される。
【０２４４】
このように、本実施例においては、ユーザの足踏み操作が停止状態となることなく、歩き状態、ジョギング状態、または走り状態を継続するためには、左コントローラ３（ベルト型拡張装置６）および右コントローラ４（リング型拡張装置５）の両方を継続して動かすことが必要となり、左コントローラ３によって動きが検出される上半身側と右コントローラ４によって動きが検出される下半身側との両方が継続条件を満たすことによって仮想オブジェクトＰＯの所定動作が継続されるため、ユーザの全身を使った操作を促進することができる。また、左コントローラ３および右コントローラ４から出力される操作データの両方の組み合わせを用いて、仮想オブジェクトＰＯの動作制御ができるため、仮想オブジェクトＰＯが実現可能な動作の種類を増加させることができる。
【０２４５】
なお、上述した実施例では、左コントローラ３を装着したベルト型拡張装置６をユーザの足に締着することによって使用する態様を用いたが、他の態様によって左コントローラ３をユーザに取り付けてもかまわない。第１の例として、左コントローラ３を装着したベルト型拡張装置６をユーザの他の脚部（例えば、右股、左足首、右足首等）や腰部等の他の下半身部位に締着して使用する態様でもかまわない。上記第１の例であっても、左コントローラ３の動きを検知するセンサからの出力によって、ユーザの下半身の動きを算出することが可能となるため、上述した実施例と同様の処理が可能となる。第２の例として、ベルト型拡張装置６に装着することなく左コントローラ３をユーザの衣服内（例えば、ポケット内部、靴下内部、ベルトや腰ゴムに挟む等）に収容または固定して使用する態様でもかまわない。上記第２の例であっても、左コントローラ３の動きを検知するセンサからの出力によって、ユーザの下半身の動きを算出することが可能となるため、上述した実施例と同様の処理が可能となる。
【０２４６】
また、上述した実施例では、本体装置２と左コントローラ３および右コントローラ４とがそれぞれ無線通信を行うことによって、左コントローラ３および右コントローラ４の操作データがそれぞれ本体装置２へ送信される例を用いたが、他の態様によって上記操作データが本体装置２へ送信されてもよい。例えば、左コントローラ３および右コントローラ４のうち、一方のコントローラの操作データが他方のコントローラへ送信された後、当該他方のコントローラから両方の操作データ（または加工された操作データ）が本体装置２へ合わせて送信されてもかまわない。
【０２４７】
また、上述した実施例において、左コントローラ３および右コントローラ４の姿勢や動き（ベルト型拡張装置６およびリング型拡張装置５の姿勢や動き）を検出する方法については、単なる一例であって、他の方法や他のデータを用いて当該姿勢や当該動きを検出してもよい。上述した加速度センサおよび／または角速度センサは、左コントローラ３および／または右コントローラ４の姿勢や動きを算出するためのデータを出力するセンサの一例である。例えば他の実施例においては、左コントローラ３および／または右コントローラ４は、加速度センサおよび／または角速度センサに代えてまたは加えて磁気センサを備えていてもよく、当該磁気センサによって検出された磁気を用いて左コントローラ３および／または右コントローラ４の姿勢や動きが算出されてもよい。また、左コントローラ３および／または右コントローラ４の姿勢や動きを算出する方法は任意であり、例えば他の実施例においては、本体装置２は、左コントローラ３および／または右コントローラ４（ベルト型拡張装置６および／またはリング型拡張装置５）を撮像装置によって撮像し、撮影された画像を用いて左コントローラ３および／または右コントローラ４（ベルト型拡張装置６および／またはリング型拡張装置５）の姿勢を算出してもよい。
【０２４８】
また、ゲームシステム１は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器（ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話、パーソナルコンピュータ、カメラ、タブレット等）等であってもよい。この場合、オブジェクトを移動する操作を行うための入力装置は、左コントローラ３や右コントローラ４でなくてもよく、別のコントローラ、マウス、タッチパッド、タッチパネル、トラックボール、キーボード、十字キー、スライドパッド等であってもよい。
【０２４９】
また、上述した説明では情報処理をゲームシステム１でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲームシステム１がさらに他の装置（例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末）と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理は、少なくとも１つの情報処理装置により構成される情報処理システムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、ゲームシステム１のプロセッサ８１が所定のプログラムを実行することによって情報処理を行うことが可能であるが、ゲームシステム１が備える専用回路によって上記処理の一部または全部が行われてもよい。
【０２５０】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置（据置型のゲーム装置）と携帯型の情報処理装置（携帯型のゲーム装置）との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
【０２５１】
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
【０２５２】
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じてゲームシステム１に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【０２５３】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０２５４】
以上のように、本発明は、ユーザが意図するように仮想空間内でオブジェクトを拡大および／または縮小等させることを可能とする情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法等として利用することができる。
【符号の説明】
【０２５５】
１…ゲームシステム
２…本体装置
３…左コントローラ
４…右コントローラ
５…リング型拡張装置
６…ベルト型拡張装置
２０１…環状部
２０２…本体部
２０３、２０４…グリップカバー
２１１…歪み検出部
３０１…収容部
３０２…ベルト部
１１…ハウジング
１２…ディスプレイ
１７…左側端子
２１…右側端子
２７…下側端子
３２、５２…アナログスティック
４２、６４…端子
８１…プロセッサ
８２…ネットワーク通信部
８３…コントローラ通信部
８５…ＤＲＡＭ
１０１、１１１…通信制御部
８９、１０４、１１４…加速度センサ
９０、１０５、１１５…角速度センサ
【要約】
【課題】装置を操作するユーザに全身を用いた運動を促すことを可能とする情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法を提供する。
【解決手段】第１センサがユーザの下半身に装着される第１装置の動きを検知し、第２センサがユーザの上半身に装着またはユーザの手に把持される第２装置の動きを検知する。そして、受信した第１センサの出力と第２センサの出力とが何れも所定条件を満たしている間、仮想空間内で仮想オブジェクトに第１の所定動作を継続させる。
【選択図】図１８【図１】
0006670028.tif 000002
【図２】
0006670028.tif 000003
【図３】
0006670028.tif 000004
【図４】
0006670028.tif 000005
【図５】
0006670028.tif 000006
【図６】
0006670028.tif 000007
【図７】
0006670028.tif 000008
【図８】
0006670028.tif 000009
【図９】
0006670028.tif 000010
【図１０】
0006670028.tif 000011
【図１１】
0006670028.tif 000012
【図１２】
0006670028.tif 000013
【図１３】
0006670028.tif 000014
【図１４】
0006670028.tif 000015
【図１５】
0006670028.tif 000016
【図１６】
0006670028.tif 000017
【図１７】
0006670028.tif 000018
【図１８】
0006670028.tif 000019
【図１９】
0006670028.tif 000020
【図２０】
0006670028.tif 000021
【図２１】
0006670028.tif 000022
【図２２】
0006670028.tif 000023
【図２３】
0006670028.tif 000024
【図２４】
0006670028.tif 000025