(57)【要約】【課題】乗員オブジェクトを不自然なく表現することにより、乗員オブジェクトの表現における違和感を低減させることができる情報処理プログラムおよび情報処理装置を提供する。【解決手段】移動手段は、仮想世界に配置された乗物オブジェクトと当該乗物オブジェクトに乗る乗員オブジェクトとを含む移動オブジェクトを、ユーザの操作に応じて移動させる。接触判定領域設定手段は、移動オブジェクトに少なくとも１つの接触判定領域を設定する。接触判定手段は、接触判定領域を用いて、仮想世界内における接触判定を行う。接地動作制御手段は、接触判定手段の判定結果に応じて乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を地面に接地させる。表示制御手段は、移動オブジェクトを表示装置に表示する。【選択図】図１４
2011070598.tif 000002
【特許請求の範囲】
【請求項１】
表示装置に仮想世界を表示する情報処理装置のコンピュータで実行される情報処理プログラムであって、
前記コンピュータを、
仮想世界に配置された乗物オブジェクトと当該乗物オブジェクトに乗る乗員オブジェクトとを含む移動オブジェクトを、ユーザの操作に応じて移動させる移動手段と、
前記移動オブジェクトに少なくとも１つの接触判定領域を設定する接触判定領域設定手段と、
前記接触判定領域を用いて、仮想世界内における接触判定を行う接触判定手段、と、
前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を当該接地オブジェクトに接地させる接地動作制御手段と、
前記移動オブジェクトを前記表示装置に表示する表示制御手段として機能させる、情報処理プログラム。
【請求項２】
前記接地動作制御手段は、前記接触判定手段の判定結果に応じて前記乗員オブジェクトが前記接地オブジェクトに接地する足を選択し、前記移動オブジェクトが停止する場合に当該選択された足を前記接地オブジェクトに接地させる、請求項１に記載の情報処理プログラム。
【請求項３】
前記接触判定領域設定手段は、前記移動オブジェクトに第１接触判定領域を設定し、
前記接触判定手段は、前記接地オブジェクトと前記第１接触判定領域とが接触するか否かを判定し、
前記接地動作制御手段は、前記接触判定手段による前記第１接触判定領域を用いた判定結果が肯定である場合に前記接地オブジェクトに接地する足を選択して当該選択された足を前記接地オブジェクトに接地させる、請求項１に記載の情報処理プログラム。
【請求項４】
前記接触判定領域設定手段は、前記移動オブジェクトに複数の前記第１接触判定領域を設定し、
前記接地動作制御手段は、
前記移動オブジェクトに設定された前記第１接触判定領域の１つと前記接地オブジェクトとが接触していると前記接触判定手段が判定した場合、当該第１接触判定領域の１つに対応する前記乗員オブジェクトの足を当該接地オブジェクトに接地させ、
前記移動オブジェクトに設定された前記第１接触判定領域の１つ以外の領域と前記接地オブジェクトとが接触していると前記接触判定手段が判定した場合、当該第１接触判定領域の１つ以外の領域に対応する前記乗員オブジェクトの足を当該接地オブジェクトに接地させる、請求項３に記載の情報処理プログラム。
【請求項５】
前記接触判定領域設定手段は、前記移動オブジェクトの左右にそれぞれ少なくとも１つの前記第１接触判定領域を設定し、
前記接地動作制御手段は、
前記移動オブジェクトの左側に設定された前記第１接触判定領域と前記接地オブジェクトとが接触していると前記接触判定手段が判定した場合、前記乗員オブジェクトの左足を当該接地オブジェクトに接地させ、
前記移動オブジェクトの右側に設定された前記第１接触判定領域と前記接地オブジェクトとが接触していると前記接触判定手段が判定した場合、前記乗員オブジェクトの右足を当該接地オブジェクトに接地させる、請求項３に記載の情報処理プログラム。
【請求項６】
前記接触判定手段は、仮想世界における前記移動オブジェクトの状態に応じて、前記第１接触判定領域から前記左右の一方側の第１接触判定領域を選択して、前記接地オブジェクトと当該一方側の第１接触判定領域とが接触するか否かを判定する、請求項５に記載の情報処理プログラム。
【請求項７】
前記接触判定手段は、前記接地オブジェクトと前記選択された前記一方側の第１接触判定領域とが接触していない場合、前記接地オブジェクトと前記左右の他方側の第１接触判定領域とが接触するか否かを判定する、請求項６に記載の情報処理プログラム。
【請求項８】
前記接触判定領域設定手段は、前記移動オブジェクトの左右下方位置にそれぞれ互いの位置関係が仮想世界に対して常に水平となるように前記第１接触判定領域を設定する、請求項３に記載の情報処理プログラム。
【請求項９】
前記接触判定領域設定手段は、前記移動オブジェクトに複数の第１接触判定領域を設定し、
前記接触判定手段は、仮想世界における前記移動オブジェクトの状態に応じて、前記複数の第１接触判定領域から１つの第１接触判定領域を選択して、前記接地オブジェクトと当該選択された第１接触判定領域とが接触するか否かを判定する、請求項３に記載の情報処理プログラム。
【請求項１０】
前記移動手段は、ユーザの操作に応じて、前記移動オブジェクトの移動方向を制御する移動方向制御手段を含み、
前記接触判定手段は、前記移動オブジェクトの移動方向に基づいて、前記複数の第１接触判定領域から接触判定に用いる第１接触判定領域を選択する、請求項６または９に記載の情報処理プログラム。
【請求項１１】
前記地面オブジェクトは、前記乗員オブジェクトの足の接地を許可するか否かを示す属性を含み、
前記接触判定手段は、前記第１接触判定領域が前記乗員オブジェクトの足の接地を許可する属性を有する接地オブジェクトと接触するか否かを判定し、
前記接地動作制御手段は、前記第１接触判定領域が前記乗員オブジェクトの足の接地を許可する属性を有する接地オブジェクトと接触すると前記接触判定手段が判定した場合に前記接地オブジェクトに接地する足を選択して当該選択された足を前記接地オブジェクトに接地させる、請求項３に記載の情報処理プログラム。
【請求項１２】
前記接触判定手段は、仮想世界に立設された可視または不可視の障害物オブジェクトと第２接触判定領域とが接触するか否かを判定し、
前記接地動作制御手段は、前記接触判定手段による前記第２接触判定領域を用いた判定結果が否定である場合に前記接地オブジェクトに接地する足を選択して当該選択された足を前記接地オブジェクトに接地させる、請求項１または３に記載の情報処理プログラム。
【請求項１３】
前記接触判定領域設定手段は、前記移動オブジェクトの左右側部にそれぞれ少なくとも１つの前記第２接触判定領域を設定し、
前記接地動作制御手段は、
前記移動オブジェクトの左側に設定された前記第２接触判定領域と前記障害物オブジェクトとが接触していると前記接触判定手段が判定した場合、前記乗員オブジェクトの右足を前記接地オブジェクトに接地させ、
前記移動オブジェクトの右側に設定された前記第２接触判定領域と前記障害物オブジェクトとが接触していると前記接触判定手段が判定した場合、前記乗員オブジェクトの左足を前記接地オブジェクトに接地させる、請求項１２に記載の情報処理プログラム。
【請求項１４】
前記移動オブジェクトの仮想世界における移動速度を算出する移動速度算出手段と、
前記移動速度が第１閾値以上であるか否かを判断する閾値判定手段として、さらに前記コンピュータを機能させ、
前記接地動作制御手段は、前記移動速度が前記第１閾値未満の場合に前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択する、請求項１、３、または１２に記載の情報処理プログラム。
【請求項１５】
前記閾値判定手段は、前記移動速度が、前記第１閾値より小さい第２閾値未満か否かをさらに判断し、
前記接地動作制御手段は、
前記移動速度が前記第２閾値以上、かつ、前記第１閾値未満である場合に前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を前記接地オブジェクトに接地させる準備動作を当該乗員オブジェクトに行わせ、
前記移動速度が前記第２閾値未満の場合に前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を地面に接地させる、請求項１４に記載の情報処理プログラム。
【請求項１６】
表示装置に仮想世界を表示する情報処理装置であって、
仮想世界に配置された乗物オブジェクトと当該乗物オブジェクトに乗る乗員オブジェクトとを含む移動オブジェクトを、ユーザの操作に応じて移動させる移動手段と、
前記移動オブジェクトに少なくとも１つの接触判定領域を設定する接触判定領域設定手段と、
前記接触判定領域を用いて、仮想世界内における接触判定を行う接触判定手段と、
前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を前記接地オブジェクトに接地させる接地動作制御手段と、
前記移動オブジェクトを前記表示装置に表示する表示制御手段とを備える、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラムおよび情報処理装置に関し、特に例えば、乗物オブジェクトと当該乗物オブジェクトを作動させる乗員オブジェクトとが登場する仮想世界を用いる情報処理プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
従来、ユーザ操作に応じて、仮想世界においてオブジェクトの速度や移動方向を制御するゲーム装置が知られている（例えば、特許文献１参照）。上記特許文献１では、移動オブジェクトであるバイクの速度や移動方向をユーザ操作に応じて制御することにより、移動オブジェクトが移動するコースにおけるスタートからゴールまでのラップタイムを競ったり、コンピュータによって制御される他の移動オブジェクトとの着順を競ったりする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２３６７９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、上記特許文献１に記載されたゲーム装置では、移動オブジェクトをどれだけ早くゴールさせるかというゲーム目的が前提にあるため、移動オブジェクトが停止している状態において不自然なくアニメーションすることについては考慮されていない。例えば、上記移動オブジェクトは、仮想世界に設定されたコース上を走行する乗物オブジェクト（バイク）と、仮想世界において当該乗物オブジェクトに乗車して当該乗物オブジェクトを操作する乗員オブジェクトとによって構成されている。しかしながら、上記特許文献１に記載されたゲーム装置では、上記乗物オブジェクトが停止している状況において、乗員オブジェクトを不自然なくアニメーションさせることを考慮していなかった。
【０００５】
それ故に、本発明の目的は、乗員オブジェクトを不自然なく表現することにより、乗員オブジェクトの表現における違和感を低減させることができる情報処理プログラムおよび情報処理装置を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は、以下に述べるような特徴を有している。
【０００７】
本発明は、表示装置に仮想世界を表示する情報処理装置のコンピュータで実行される情報処理プログラムである。情報処理プログラムは、移動手段、接触判定領域設定手段、接触判定手段、接地動作制御手段、および表示制御手段として、コンピュータを機能させる。移動手段は、仮想世界に配置された乗物オブジェクトと当該乗物オブジェクトに乗る乗員オブジェクトとを含む移動オブジェクトを、ユーザの操作に応じて移動させる。接触判定領域設定手段は、移動オブジェクトに少なくとも１つの接触判定領域を設定する。接触判定手段は、接触判定領域を用いて、仮想世界内における接触判定を行う。接地動作制御手段は、接触判定手段の判定結果に応じて乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を当該接地オブジェクトに接地させる。表示制御手段は、移動オブジェクトを表示装置に表示する。
【０００８】
上記によれば、仮想世界で移動する乗物オブジェクトに乗る乗員オブジェクトの表現における違和感を低減させることができる。
【０００９】
また、接地動作制御手段は、接触判定手段の判定結果に応じて乗員オブジェクトが接地オブジェクトに接地する足を選択し、移動オブジェクトが停止する場合に当該選択された足を接地オブジェクトに接地させてもよい。
【００１０】
上記によれば、移動オブジェクトが仮想世界で停止する際、乗員オブジェクトの表現における違和感を低減させることができる。
【００１１】
また、接触判定領域設定手段は、移動オブジェクトに第１接触判定領域を設定してもよい。この場合、接触判定手段は、接地オブジェクトと第１接触判定領域とが接触するか否かを判定してもよい。接地動作制御手段は、接触判定手段による第１接触判定領域を用いた判定結果が肯定である場合に接地オブジェクトに接地する足を選択して当該選択された足を接地オブジェクトに接地させてもよい。
【００１２】
上記によれば、足を接地するための接地オブジェクトの状況に応じて乗員オブジェクトの接地動作を制御することができる。
【００１３】
また、接触判定領域設定手段は、移動オブジェクトに複数の第１接触判定領域を設定してもよい。この場合、接地動作制御手段は、移動オブジェクトに設定された第１接触判定領域の１つと接地オブジェクトとが接触していると接触判定手段が判定した場合、当該第１接触判定領域の１つに対応する乗員オブジェクトの足を当該接地オブジェクトに接地させてもよい。接地動作制御手段は、移動オブジェクトに設定された第１接触判定領域の１つ以外の領域と接地オブジェクトとが接触していると接触判定手段が判定した場合、当該第１接触判定領域の１つ以外の領域に対応する乗員オブジェクトの足を当該接地オブジェクトに接地させてもよい。
【００１４】
上記によれば、乗員オブジェクトの足に対応する第１接触判定領域と接地オブジェクトとの接触状況に応じて、乗員オブジェクトが接地する足を選択することができる。
【００１５】
また、接触判定領域設定手段は、移動オブジェクトの左右にそれぞれ少なくとも１つの第１接触判定領域を設定してもよい。この場合、接地動作制御手段は、移動オブジェクトの左側に設定された第１接触判定領域と接地オブジェクトとが接触していると接触判定手段が判定した場合、乗員オブジェクトの左足を当該接地オブジェクトに接地させてもよい。また、接地動作制御手段は、移動オブジェクトの右側に設定された第１接触判定領域と接地オブジェクトとが接触していると接触判定手段が判定した場合、乗員オブジェクトの右足を当該接地オブジェクトに接地させてもよい。
【００１６】
上記によれば、左右の接地オブジェクトの状況に応じて乗員オブジェクトの接地動作を制御することができる。
【００１７】
また、接触判定手段は、仮想世界における移動オブジェクトの状態に応じて、第１接触判定領域から左右の一方側の第１接触判定領域を選択して、接地オブジェクトと当該一方側の第１接触判定領域とが接触するか否かを判定してもよい。
【００１８】
上記によれば、移動オブジェクトの状態に応じて左右何れか一方を優先的に確認して接地動作することができるため、乗員オブジェクトが移動オブジェクトの状態に応じて接地動作することが可能となる。
【００１９】
また、接触判定手段は、接地オブジェクトと選択された一方側の第１接触判定領域とが接触していない場合、接地オブジェクトと左右の他方側の第１接触判定領域とが接触するか否かを判定してもよい。
【００２０】
上記によれば、左右一方側の接地オブジェクトが接地不可であっても、左右他方側の接地オブジェクトへ接地することが可能となり、移動オブジェクトを接地不可状態となることを防止することができる。
【００２１】
また、接触判定領域設定手段は、移動オブジェクトの左右下方位置にそれぞれ互いの位置関係が仮想世界に対して常に水平となるように第１接触判定領域を設定してもよい。
【００２２】
上記によれば、移動オブジェクトの傾き等によって接触判定結果が変化することを防止することができ、仮想世界に設定されている重力方向を基準とした接触判定が可能となる。
【００２３】
また、接触判定領域設定手段は、移動オブジェクトに複数の第１接触判定領域を設定してもよい。この場合、接触判定手段は、仮想世界における移動オブジェクトの状態に応じて、複数の第１接触判定領域から１つの第１接触判定領域を選択して、接地オブジェクトと当該選択された第１接触判定領域とが接触するか否かを判定してもよい。
【００２４】
上記によれば、複数設定されている接触判定領域から、接地する足の選択に好適な接触判定領域を移動オブジェクトの状態に応じて選択することが可能となる。
【００２５】
また、移動手段は、移動方向制御手段を含んでもよい。移動方向制御手段は、ユーザの操作に応じて、移動オブジェクトの移動方向を制御する。この場合、接触判定手段は、移動オブジェクトの移動方向に基づいて、複数の第１接触判定領域から接触判定に用いる第１接触判定領域を選択してもよい。
【００２６】
上記によれば、移動オブジェクトの移動方向（ハンドルの方向等）に応じて、接地オブジェクトに接地する足を選択することができる。
【００２７】
また、接地オブジェクトは、乗員オブジェクトの足の接地を許可するか否かを示す属性を含んでいてもよい。この場合、接触判定手段は、第１接触判定領域が乗員オブジェクトの足の接地を許可する属性を有する接地オブジェクトと接触するか否かを判定してもよい。接地動作制御手段は、第１接触判定領域が乗員オブジェクトの足の接地を許可する属性を有する接地オブジェクトと接触すると接触判定手段が判定した場合に接地オブジェクトに接地する足を選択して当該選択された足を接地オブジェクトに接地させてもよい。
【００２８】
上記によれば、乗員オブジェクトが足を接地することができない接地オブジェクトに足を接地して停止するような不自然な状況を避けることができる。
【００２９】
また、接触判定手段は、仮想世界に立設された可視または不可視の障害物オブジェクトと第２接触判定領域とが接触するか否かを判定してもよい。この場合、接地動作制御手段は、接触判定手段による第２接触判定領域を用いた判定結果が否定である場合に接地オブジェクトに接地する足を選択して当該選択された足を接地オブジェクトに接地させてもよい。
【００３０】
上記によれば、乗物オブジェクト側面近傍の障害物オブジェクトの状況に応じて乗員オブジェクトの接地動作を制御することができる。
【００３１】
また、接触判定領域設定手段は、移動オブジェクトの左右側部にそれぞれ少なくとも１つの第２接触判定領域を設定してもよい。この場合、接地動作制御手段は、移動オブジェクトの左側に設定された第２接触判定領域と障害物オブジェクトとが接触していると接触判定手段が判定した場合、乗員オブジェクトの右足を接地オブジェクトに接地させてもよい。また、接地動作制御手段は、移動オブジェクトの右側に設定された第２接触判定領域と障害物オブジェクトとが接触していると接触判定手段が判定した場合、乗員オブジェクトの左足を接地オブジェクトに接地させてもよい。
【００３２】
上記によれば、乗物オブジェクト左右側面近傍の障害物オブジェクトの状況に応じて乗員オブジェクトの接地動作を制御することができる。
【００３３】
また、上記情報処理プログラムは、移動速度算出手段および閾値判定手段として、さらにコンピュータを機能させてもよい。移動速度算出手段は、移動オブジェクトの仮想世界における移動速度を算出する。閾値判定手段は、移動速度が第１閾値以上であるか否かを判断する。この場合、接地動作制御手段は、移動速度が第１閾値未満の場合に接触判定手段の判定結果に応じて乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択する。
【００３４】
上記によれば、移動オブジェクトの移動速度が第１閾値未満の低速状態において、乗員オブジェクトの表現における違和感を低減させることができる。
【００３５】
また、閾値判定手段は、移動速度が、第１閾値より小さい第２閾値未満か否かをさらに判断してもよい。この場合、接地動作制御手段は、移動速度が第２閾値以上、かつ、第１閾値未満である場合に接触判定手段の判定結果に応じて乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を接地オブジェクトに接地させる準備動作を当該乗員オブジェクトに行わせてもよい。また、接地動作制御手段は、移動速度が第２閾値未満の場合に接触判定手段の判定結果に応じて乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を接地オブジェクトに接地させてもよい。
【００３６】
上記によれば、移動オブジェクトの移動速度が第２閾値以上第１閾値未満である状態で乗員オブジェクトに足を接地する準備する動作を行わせ、移動オブジェクトの移動速度が第２閾値未満である状態で乗員オブジェクトに足を接地オブジェクトに接地させる２段階の動作制御が可能となる。
【００３７】
また、本発明は、情報処理装置の形態で実施されてもよい。
【発明の効果】
【００３８】
本発明によれば、仮想世界を移動する乗物オブジェクトに乗る乗員オブジェクトの表現における違和感を低減させることができる。
【図面の簡単な説明】
【００３９】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面前方から見た斜視図
【図５】図３のコントローラ７の上筐体を外した状態を示す斜視図
【図６】図４のコントローラ７の下筐体を外した状態を示す斜視図
【図７】図３のコントローラ７の構成を示すブロック図
【図８】図１のコントローラ７を用いてユーザが操作するときの状態とモニタ２に表示される画像の一例を概説する図解図
【図９Ａ】乗員オブジェクトＣＯが右足を地面オブジェクトＧＯに接地する場合に表示される画像の一例を示す図
【図９Ｂ】乗員オブジェクトＣＯが右足を地面オブジェクトＧＯに接地する場合に表示される画像の一例を示す図
【図１０】乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯに設定されるコリジョンＣの一例を示す図
【図１１Ａ】乗員オブジェクトＣＯが傾斜地となった地面オブジェクトＧＯに足を接地する場合に表示される画像の一例を示す図
【図１１Ｂ】乗員オブジェクトＣＯが傾斜地となった地面オブジェクトＧＯに足を接地する場合に表示される画像の一例を示す図
【図１２Ａ】乗物オブジェクトＢＯおよび乗員オブジェクトＣＯの側方近傍に障害物オブジェクトＷＯが存在する状況において、乗員オブジェクトＣＯが足を地面オブジェクトＧＯに接地する場合に表示される画像の一例を示す図
【図１２Ｂ】乗物オブジェクトＢＯおよび乗員オブジェクトＣＯの側方近傍に障害物オブジェクトＷＯが存在する状況において、乗員オブジェクトＣＯが足を地面オブジェクトＧＯに接地する場合に表示される画像の一例を示す図
【図１３】図１のゲーム装置本体５のメインメモリに記憶される主なデータおよびプログラムの一例を示す図
【図１４】図１のゲーム装置本体５において実行される処理の一例を示すフローチャート
【図１５】図１４におけるステップ４７の接地準備処理の一部の一例を示すサブルーチン
【図１６】図１４におけるステップ４７の接地準備処理の他の部の一例を示すサブルーチン
【図１７】図１４におけるステップ４９の接地処理の一例を示すサブルーチン
【発明を実施するための形態】
【００４０】
図１を参照して、本発明の一実施形態に係る情報処理プログラムを実行する情報処理装置について説明する。以下、説明を具体的にするために、当該情報処理装置の一例として据置型のゲーム装置本体５を用い、ゲーム装置本体５を含むゲームシステムについて説明する。なお、図１は、据置型のゲーム装置３を含むゲームシステム１の一例を示す外観図である。図２は、ゲーム装置本体５の一例を示すブロック図である。以下、当該ゲームシステム１について説明する。
【００４１】
図１において、ゲームシステム１は、表示手段の一例である家庭用テレビジョン受像機（以下、モニタと記載する）２と、モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置３から出力された音声信号を音声出力するためのスピーカ２ａを備える。また、ゲーム装置３は、本願発明の情報処理プログラムの一例となるプログラム（例えば、ゲーム装置３のユーザの運動を支援する運動支援プログラムやゲームプログラム）を記録した光ディスク４と、光ディスク４のプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、表示画面に表示されたオブジェクト等を操作するために必要な操作情報をゲーム装置本体５に与えるためのコントローラ７とを備えている。
【００４２】
ゲーム装置本体５は、無線コントローラモジュール１９（図２参照）を内蔵する。無線コントローラモジュール１９は、コントローラ７から無線送信されるデータを受信し、ゲーム装置本体５からコントローラ７へデータを送信して、コントローラ７とゲーム装置本体５とを無線通信によって接続する。また、ゲーム装置本体５には、ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着される。
【００４３】
ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ１７（図２参照）が搭載される。ゲーム装置本体５は、光ディスク４に記憶された運動支援プログラム等を実行することによって、その結果をゲーム画像としてモニタ２に表示する。運動支援プログラム等は、光ディスク４に限らず、フラッシュメモリ１７に予め記録されたものを実行するようにしてもよい。また、ゲーム装置本体５は、フラッシュメモリ１７に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置３のユーザは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００４４】
コントローラ７は、無線コントローラモジュール１９を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて操作情報等の送信データを無線送信する。コントローラ７は、主にモニタ２の表示画面に表示されるプレイヤオブジェクト等を操作するための操作手段である。コントローラ７は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン（十字キーやスティック等を含む）とが設けられている。また、後述により明らかとなるが、コントローラ７は、コントローラ７から見た画像を撮像する撮像情報演算部７４を備えている。そして、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって例えば赤外光を出力する。また、コントローラ７は、ゲーム装置本体５の無線コントローラモジュール１９から無線送信された送信データを通信部７５で受信して、当該送信データに応じた音や振動を発生させることもできる。
【００４５】
次に、図２を参照して、ゲーム装置本体５の内部構成について説明する。図２は、ゲーム装置本体５の構成の一例を示すブロック図である。ゲーム装置本体５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ／Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）１３、ディスクドライブ１４、およびＡＶ−ＩＣ（Ａｕｄｉｏ  Ｖｉｄｅｏ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１５等を有する。
【００４６】
ＣＰＵ１０は、光ディスク４に記憶されたプログラムを実行することによって処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については、後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたプログラムや、フラッシュメモリ１７から読み出されたプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置本体５の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ３５または外部メインメモリ１２に読み出したデータを書き込む。
【００４７】
システムＬＳＩ１１には、入出力プロセッサ３１、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）３２、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３３、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３４、および内部メインメモリ３５が設けられる。図示は省略するが、これらの構成要素３１〜３５は、内部バスによって互いに接続される。
【００４８】
ＧＰＵ３２は、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ３４は、ＧＰＵ３２がグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ３２は、ＶＲＡＭ３４に記憶されたデータを用いて画像データを作成する。
【００４９】
ＤＳＰ３３は、オーディオプロセッサとして機能し、内部メインメモリ３５や外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００５０】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、ＡＶコネクタ１６を介して、読み出した画像データをモニタ２に出力するとともに、読み出した音声データをモニタ２に内蔵されるスピーカ２ａに出力する。これによって、画像がモニタ２に表示されるとともに音がスピーカ２ａから出力される。
【００５１】
入出力プロセッサ（Ｉ／Ｏプロセッサ）３１は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ３１は、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、および外部メモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００５２】
入出力プロセッサ３１は、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ３１は、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介して当該データをネットワークに送信する。また、入出力プロセッサ３１は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２、および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０は、プログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してプログラムで利用する。フラッシュメモリ１７には、ゲーム装置本体５と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体５を利用してプレイしたゲームのセーブデータ（処理の結果データまたは途中データ）が記憶されてもよい。
【００５３】
入出力プロセッサ３１は、アンテナ２３および無線コントローラモジュール１９を介して、コントローラ７から送信される操作データ等を受信し、内部メインメモリ３５または外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。なお、内部メインメモリ３５には、外部メインメモリ１２と同様に、光ディスク４から読み出されたプログラムや、フラッシュメモリ１７から読み出されたプログラムを記憶したり、各種データを記憶したりしてもよく、ＣＰＵ１０のワーク領域やバッファ領域として用いられてもかまわない。
【００５４】
入出力プロセッサ３１には、拡張コネクタ２０および外部メモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ３１は、拡張コネクタ２０や外部メモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００５５】
ゲーム装置本体５（例えば、前部主面）には、当該ゲーム装置本体５の電源ボタン２４、ゲーム処理のリセットボタン２５、光ディスク４を脱着する投入口、およびゲーム装置本体５の投入口から光ディスク４を取り出すイジェクトボタン２６等が設けられている。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置本体５の各構成要素に対して、図示しないＡＣアダプタを介して電力が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置本体５の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００５６】
図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た一例を示す斜視図である。図４は、コントローラ７を下面前方から見た一例を示す斜視図である。
【００５７】
図３および図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００５８】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。ユーザが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばユーザが十字キー７２ａを操作することによって、仮想世界に登場するオブジェクト等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００５９】
なお、十字キー７２ａは、上述したユーザの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に４つのプッシュスイッチを配設し、ユーザによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、十字キー７２ａの代わりに設けてもかまわない。
【００６０】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、ユーザがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置本体５が実行するプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
【００６１】
ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置本体５の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
【００６２】
ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をユーザに通知するために用いられる。具体的には、無線コントローラモジュール１９からコントローラ７へ、複数のＬＥＤ７０２のうち、上記コントローラ種別に対応するＬＥＤを点灯させるための信号が送信される。
【００６３】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図５に示すスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００６４】
ハウジング７１下面には、凹部が形成されている。ハウジング７１下面の凹部は、ユーザがコントローラ７の前面をマーカ８Ｌおよび８Ｒに向けて片手で把持したときに、当該ユーザの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００６５】
ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００６６】
ここで、以下の説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するＸＹＺ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をＺ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コントローラ７の上下方向をＹ軸とし、ハウジング７１の上面（操作ボタン７２ａが設けられた面）方向をＹ軸正方向とする。さらに、コントローラ７の左右方向をＸ軸とし、ハウジング７１の右側面（図３で表されている側面）方向をＸ軸正方向とする。
【００６７】
次に、図５および図６を参照して、コントローラ７の内部構造について説明する。なお、図５は、コントローラ７の上筐体（ハウジング７１の一部）を外した状態を後面側から見た一例を示す斜視図である。図６は、コントローラ７の下筐体（ハウジング７１の一部）を外した状態を前面側から見た一例を示す斜視図である。ここで、図６に示す基板７００は、図５に示す基板７００の裏面から見た状態となっている。
【００６８】
図５において、ハウジング７１の内部には基板７００が固設されており、基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図６、図７参照）に接続される。そして、無線モジュール７５３（図７参照）およびアンテナ７５４によって、コントローラ７がワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。また、加速度センサ７０１は、操作ボタン７２ｄの左側の基板７００上（つまり、基板７００の中央部ではなく周辺部）に設けられる。したがって、加速度センサ７０１は、コントローラ７の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データを用いてコントローラ７の動きを良好な感度でゲーム装置本体５等が判定することができる。
【００６９】
一方、図６において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置本体５から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。
【００７０】
次に、図７を参照して、コントローラ７の内部構成について説明する。なお、図７は、コントローラ７の構成の一例を示すブロック図である。
【００７１】
図７において、コントローラ７は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。
【００７２】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。
【００７３】
コントローラ７は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向（図３に示すＹ軸）、左右方向（図３に示すＸ軸）、および前後方向（図３に示すＺ軸）で直線加速度を検知する。また、少なくとも２軸方向に沿った直線加速度をそれぞれ検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であることが好ましい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて、加速度センサ７０１が提供されてもよい。
【００７４】
加速度センサ７０１に用いられるような加速度検出手段は、加速度センサ７０１の持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、それら３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００７５】
しかしながら、加速度センサ７０１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ１０）またはコントローラのプロセッサ（例えばマイコン７５１）等のコンピュータが処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【００７６】
例えば、加速度センサ７０１を搭載するコントローラ７が静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサ７０１によって検出される加速度が重力加速度のみであるとして処理する場合）、コントローラ７が現実に静的な状態であれば、検出された加速度に基づいてコントローラ７の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、単軸方向の加速度を検出可能な加速度センサ７０１の場合には、当該加速度が検出可能な検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に１Ｇ（重力加速度）が作用しているか否かだけでコントローラ７が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コントローラ７が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ７０１の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ７がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ７０１からの出力に基づいて、プロセッサがコントローラ７の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ７０１からの出力に基づいて、おおよそのコントローラ７の傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１をプロセッサと組み合わせて用いることによって、コントローラ７の傾き、姿勢、または位置を判定することができる。
【００７７】
一方、加速度センサ７０１が動的な状態であることを前提とする場合には、当該加速度センサ７０１が重力加速度成分に加えて加速度センサ７０１の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コントローラ７の動き方向等を知ることができる。具体的には、加速度センサ７０１を備えるコントローラ７がユーザの手で動的に加速されて動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７の様々な動きおよび／または位置を算出することができる。また、加速度センサ７０１が動的な状態であることを前提とする場合であっても、加速度センサ７０１の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコントローラ７の傾きを知ることが可能である。
【００７８】
他の実施例では、加速度センサ７０１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ７０１が静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。加速度センサ７０１でそれぞれ検知された加速度を示すデータは、通信部７５に出力される。
【００７９】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置本体５からのデータに応じて、サウンドＩＣ７０７の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置本体５から送信されたサウンドデータ等を処理する。
【００８０】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの３軸方向の加速度信号（Ｘ、Ｙ、およびＺ軸方向加速度データ）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、処理結果データ）を無線コントローラモジュール１９へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から無線コントローラモジュール１９への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、無線コントローラモジュール１９への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥース（登録商標）の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からのＸ、Ｙ、およびＺ軸方向加速度データ、および撮像情報演算部７４からの処理結果データがコントローラ７から送信される。そして、ゲーム装置本体５の無線コントローラモジュール１９でその電波信号を受信し、ゲーム装置本体５で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、および処理結果データ）を取得する。そして、ゲーム装置本体５のＣＰＵ１０は、取得した操作情報とプログラムとに基づいて、処理を行う。なお、ブルートゥース（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００８１】
次に、ゲーム装置本体５が行う具体的な処理を説明する前に、図８〜図１２Ｂを用いてゲーム装置本体５で行うゲームの概要について説明する。図８は、コントローラ７を用いてユーザが操作するときの状態とモニタ２に表示される画像の一例を概説する図解図である。図９Ａおよび図９Ｂは、乗員オブジェクトＣＯが右足を地面オブジェクトＧＯに接地する場合に表示される画像の一例を示す図である。図１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯに設定されるコリジョンＣの一例を示す図である。図１１Ａおよび図１１Ｂは、乗員オブジェクトＣＯが傾斜地となった地面オブジェクトＧＯに足を接地する場合に表示される画像の一例を示す図である。図１２Ａおよび図１２Ｂは、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯの側方近傍に障害物オブジェクトＷＯが存在する状況において、乗員オブジェクトＣＯが足を地面オブジェクトＧＯに接地する場合に表示される画像の一例を示す図である。以下の説明では、自転車（乗物オブジェクトＢＯ）に乗車して仮想世界内を走行する乗員オブジェクトＣＯを、ユーザがコントローラ７を用いて操作する一例を用いる。
【００８２】
図８に示すように、ゲームシステム１でコントローラ７を用いて操作するために、ユーザは、コントローラ７の上面が実空間における上方向に向くようにコントローラ７を把持する。例えば、ユーザは、あたかも自転車のハンドルを両手で握っているようにコントローラ７を把持する。そして、ユーザは、コントローラ７全体を左下に傾ける（例えば、コントローラ７の上面が実空間における上方向に向いた状態で、Ｘ軸方向を中心としてコントローラ７の前面が下がる方向）ことによって、乗員オブジェクトＣＯが乗車している自転車（乗物オブジェクトＢＯ）のハンドルを左に切ることができる。また、ユーザは、コントローラ７全体を右下に傾ける（例えば、コントローラ７の上面が実空間における上方向に向いた状態で、Ｘ軸方向を中心としてコントローラ７の後面が下がる方向）ことによって、当該自転車のハンドルを右に切ることができる。例えば、ユーザがコントローラ７を傾けた場合、コントローラ７から当該傾け操作に応じた操作情報（具体的には、Ｘ、Ｙ、およびＺ軸方向加速度データ）がゲーム装置本体５に与えられる。そして、コントローラ７から受信したＸ、Ｙ、およびＺ軸方向加速度データに応じて、仮想世界内の乗員オブジェクトＣＯがハンドルを左右に切って乗員オブジェクトＣＯおよび乗物オブジェクトＢＯの進行方向を変えるような画像が表現される。
【００８３】
乗物オブジェクトＢＯおよび乗員オブジェクトＣＯが仮想世界を走行する速度は、コントローラ７に設けられている操作ボタン７２への操作に応じて決定される。例えば、乗物オブジェクトＢＯを加速させる（すなわち、乗員オブジェクトＣＯが自転車のペダルを回転させる速度を加速させる）際に押下するボタンおよび乗物オブジェクトＢＯを減速させる（すなわち、乗員オブジェクトＣＯが自転車のブレーキをかける）際に押下するボタンが、それぞれ操作ボタン７２の何れかに割り当てられており、ユーザがこれらの操作ボタン７２を押下することに応じて走行速度が変化する。そして、乗物オブジェクトＢＯが第１の移動速度以上（後述する移動速度Ｖ１以上）で走行している場合、乗員オブジェクトＣＯは、図８に示すように両足をペダルにかけた状態で走行する。
【００８４】
乗物オブジェクトＢＯが上記第１の移動速度未満（移動速度Ｖ１未満）で、かつ、第２の移動速度以上（後述する移動速度Ｖ２以上）走行している場合、乗員オブジェクトＣＯは、何れか一方の足を地面オブジェクトＧＯに接地して乗物オブジェクトＢＯを停止させる準備を行う。具体的には、図９Ａに示すように、乗員オブジェクトＣＯは、地面オブジェクトＧＯに接地する何れか一方の足を自転車のペダルから離し、当該足を地面オブジェクトＧＯに接地させて乗物オブジェクトＢＯを停止させる準備を行う（接地準備動作）。
【００８５】
そして、乗物オブジェクトＢＯが上記第２の走行速度未満（走行速度Ｖ２未満）となった場合、乗員オブジェクトＣＯは、何れか一方の足を地面オブジェクトＧＯに接地して乗物オブジェクトＢＯを停止させる。具体的には、図９Ｂに示すように、乗員オブジェクトＣＯは、その直前までの接地準備動作においてペダルから離していた足を地面オブジェクトＧＯに接地させて、乗物オブジェクトＢＯを停止させる（接地動作）。ここで、乗員オブジェクトＣＯの足を接地させるオブジェクトは、乗物オブジェクトＢＯが走行している地面オブジェクトＧＯである必要はなく、仮想世界内に配置されたオブジェクトであってそのオブジェクトに乗員オブジェクトＣＯの足が接地した場合に不自然なアニメーションとはならないようなものであればよい。例えば、乗員オブジェクトＣＯの足を接地させるオブジェクトは、接地準備動作において自転車のペダルから離れた足の高さより接地する面が低くなるオブジェクト等、仮想世界内に配置された様々なオブジェクトであってもよい。
【００８６】
乗物オブジェクトＢＯを停止させる準備を行う際、および乗員オブジェクトＢＯを停止させる際に接地する乗員オブジェクトＣＯの足は、乗物オブジェクトＢＯのハンドルが切られている方向、地面オブジェクトＧＯの状況、および乗物オブジェクトＢＯの側方近傍における障害物の有無等に応じて決定される。そして、本発明では、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯに接触判定領域（例えば、コリジョン）を設定し、当該接触判定領域における接触判定結果に基づいて、地面オブジェクトＧＯの状況および乗物オブジェクトＢＯの側方近傍における障害物の有無等を判定して、乗員オブジェクトＣＯが接地する足を決定している。例えば、図１０に示すように、本実施形態においては、地面オブジェクトＧＯの状況および乗物オブジェクトＢＯの側方近傍における障害物の有無を判定するために、複数のコリジョンＣが設けられている。ここで、コリジョンＣは、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯと他のオブジェクトとの接触判定を行うための領域（空間）である。
【００８７】
図１０に示すように、乗物オブジェクトＢＯには、複数のコリジョンＣ１〜Ｃ６が設けられている。コリジョンＣ１〜Ｃ６は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯと他のオブジェクトとの接触判定のために設けられ、それぞれ不可視の円柱または球形状等の所定サイズの立体形状で形成されている。具体的には、乗物オブジェクトＢＯを停止させる際、乗員オブジェクトＣＯの左足および右足をそれぞれ地面に接地させる足下にコリジョンＣ１およびＣ２が設けられている。図１０の例では、乗員オブジェクトＣＯの左足下にコリジョンＣ１が設けられ、乗員オブジェクトＣＯの右足下にコリジョンＣ２が設けられている。これらコリジョンＣ１およびＣ２は、乗物オブジェクトＢＯが地面と接地する接地水平面を基準として、当該接地水平面の下方に一部がそれぞれ突出するように配置される。例えば、コリジョンＣ１およびＣ２は、下側縁端部が上記接地水平面の下方にそれぞれ突出するとともに、それぞれの中心位置が当該接地水平面の上方となるように配置される。なお、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯが移動した場合、当該乗物オブジェクトＢＯと共にコリジョンＣ１およびＣ２も移動するが、それぞれの位置関係が常に仮想世界において水平となるように維持される。すなわち、乗物オブジェクトＢＯが仮想世界において傾いたとしても、コリジョンＣ１およびＣ２は、互いの位置関係が常に水平となっている。
【００８８】
乗物オブジェクトＢＯのハンドル両端部および両ペダルの外側端部には、それぞれコリジョンＣ３〜Ｃ６が設けられている。これらコリジョンＣ３〜Ｃ６は、仮想世界に設けられた障害物（例えば、可視壁や乗物オブジェクトＢＯの進入を禁止するための不可視壁）と乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの側方との接触を判定するために設けられている。図１０の例では、乗物オブジェクトＢＯのハンドル左端部にコリジョンＣ３が設けられ、乗物オブジェクトＢＯのハンドル右端部にコリジョンＣ４が設けられ、乗物オブジェクトＢＯの左ペダルの外側端部にコリジョンＣ５が設けられ、乗物オブジェクトＢＯの右ペダルの外側端部にコリジョンＣ６が設けられている。なお、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯが移動した場合、当該乗物オブジェクトＢＯと共にコリジョンＣ３〜Ｃ６も移動し、乗物オブジェクトＢＯとの位置関係がそれぞれ変化しないように維持される。すなわち、乗物オブジェクトＢＯが仮想世界において傾いた場合、当該傾きに応じてコリジョンＣ３〜Ｃ６も乗物オブジェクトＢＯと一体的に移動する。
【００８９】
図１１Ａおよび図１１Ｂに示すように、乗物オブジェクトＢＯを停止させる際、乗員オブジェクトＣＯは、コリジョンＣ１およびＣ２と地面オブジェクトＧＯとの接触判定結果に応じて接地する足を選択する。例えば、乗員オブジェクトＣＯは、コリジョンＣ１およびＣ２の一方と地面オブジェクトＧＯとが接触していない場合、地面オブジェクトＧＯとの接触が確認された側の足を接地する足として選択する。例えば、図１１Ａに示すように右から左へ傾斜している地面オブジェクトＧＯ上に乗物オブジェクトＢＯを停止させる際に、左側のコリジョンＣ１と地面オブジェクトＧＯとが非接触となった場合、乗員オブジェクトＣＯは、右足を地面オブジェクトＧＯに接地させる（図１１Ｂ）。つまり、傾斜面上に乗物オブジェクトＢＯを停止させる際、乗員オブジェクトＣＯは、山側に足を接地させることになる。これによって、傾斜面、崖際、水際（海や川等）等に乗物オブジェクトＢＯを停止させる場合、乗員オブジェクトＣＯが傾斜面の谷側に足を接地させたり、崖の外側空間に足を接地させようとしたり、水面に足を接地させたりするような不自然な状況を回避することができる。
【００９０】
図１２Ａおよび図１２Ｂに示すように、乗物オブジェクトＢＯを停止させる際、乗員オブジェクトＣＯは、コリジョンＣ３〜Ｃ６と障害物オブジェクトＷＯとの接触判定結果に応じて接地する足を選択する。例えば、乗員オブジェクトＣＯは、コリジョンＣ３〜Ｃ６の何れかと障害物オブジェクトＷＯとが接触している場合、障害物オブジェクトＷＯとの接触が確認されていない側の足を接地する足として選択する。例えば、図１２Ａに示すように乗物オブジェクトＢＯの右側近傍に障害物オブジェクトＷＯが配置されている地面オブジェクトＧＯ上に乗物オブジェクトＢＯを停止させる際に、右側のコリジョンＣ４および／またはＣ６と障害物オブジェクトＷＯとが接触している場合、乗員オブジェクトＣＯは、左足を地面オブジェクトＧＯに接地させる（図１２Ｂ）。つまり、側方近傍に障害物がある場所で乗物オブジェクトＢＯを停止させる際、乗員オブジェクトＣＯは、障害物がない側の足を接地させることになる。これによって、乗員オブジェクトＣＯが仮想世界の障害物に足を接地したり、障害物にめりこませて足を接地したりするような不自然な状況を回避することができる。
【００９１】
ここで、上述したように、コリジョンＣ３〜Ｃ６が乗物オブジェクトＢＯの傾きに対して乗物オブジェクトＢＯと一体的に移動することに対して、コリジョンＣ１およびＣ２は、互いの位置関係が仮想世界において常に水平となるように配置されている。これは、乗物オブジェクトＢＯの傾きによってコリジョンＣ１およびＣ２による接触判定結果が変化することを防止とともに、仮想世界に設定されている重力方向を基準とした判定を可能とするためである。具体的には、コリジョンＣ１およびＣ２を乗物オブジェクトＢＯと一体的に傾ける場合、図１１Ａに示す乗物オブジェクトＢＯをさらに左に傾けるとコリジョンＣ１と地面オブジェクトＧＯとが接触するため、乗員オブジェクトＣＯが傾斜面の谷側に足を接地することが可能となる。また、図１１Ａに示す乗物オブジェクトＢＯをさらに右に傾けるとコリジョンＣ２が地面オブジェクトＧＯの下部に完全に埋没するような状態となる。このとき、地面オブジェクトＧＯの表面との接触判定を行う場合（例えば、地形ポリゴンとコリジョンとの接触判定を行う場合）、地面オブジェクトＧＯの下部に完全に埋没したコリジョンＣ２と地面オブジェクトＧＯとが非接触であると判定されるため、乗員オブジェクトＣＯが傾斜面の山側に足を接地することが不可能となる。このように、コリジョンＣ１およびＣ２を乗物オブジェクトＢＯと一体的に傾ける場合、乗物オブジェクトＢＯの傾きによってコリジョンＣ１およびＣ２による接触判定結果が様々に変化してしまうため、安定した判定結果が得られないことが考えられる。
【００９２】
また、乗物オブジェクトＢＯの起立方向を基準として傾斜面の山側や谷側を判定する方式は、乗物オブジェクトＢＯの起立方向が変化する状況では難しく、仮想世界における重力方向や水平方向を基準として判定することが必要となる。したがって、乗員オブジェクトＣＯから見て左右方向に傾斜している傾斜面において、山側／谷側を判別しようとする場合、仮想世界における重力方向や水平方向を基準とすることが望ましい。このような傾斜面の山側や谷側を判定するためには、コリジョンＣ１およびＣ２は、互いの位置関係が仮想世界において常に水平となるように配置することが好適となる。
【００９３】
次に、ゲームシステム１において行われる処理の詳細を説明する。まず、図１３を参照して、処理において用いられる主なデータについて説明する。なお、図１３は、ゲーム装置本体５の外部メインメモリ１２および／または内部メインメモリ３５（以下、２つのメインメモリを総称して、単にメインメモリと記載する）に記憶される主なデータおよびプログラムの一例を示す図である。
【００９４】
図１３に示すように、メインメモリのデータ記憶領域には、操作データＤａ、移動速度データＤｂ、ハンドル方向データＤｃ、配置位置データＤｄ、左足接地準備フラグデータＤｅ、右足接地準備フラグデータＤｆ、左足接地フラグデータＤｇ、右足接地フラグデータＤｈ、コリジョンデータＤｉ、および画像データＤｊ等が記憶される。なお、メインメモリには、図１３に示す情報に含まれるデータの他、仮想世界に登場する乗物オブジェクトＢＯおよび乗員オブジェクトＣＯ以外の他のオブジェクト（例えば、地面オブジェクトＧＯや障害物オブジェクトＷＯ）等に関するデータ（位置データ等）等、処理に必要なデータが記憶される。また、メインメモリのプログラム記憶領域には、情報処理プログラムを構成する各種プログラム群Ｐａが記憶される。
【００９５】
操作データＤａは、コントローラ７から送信データとして送信されてくる一連の操作情報が格納され、最新の操作データに更新される。操作データＤａは、キーデータＤａ１および加速度データＤａ２等を含んでいる。キーデータＤａ１は、コントローラ７の操作部７２に対する操作を示すデータであり、コントローラ７から送信データとして送信されてくる一連の操作情報に含まれる最新のキーデータが格納される。加速度データＤａ２は、コントローラ７に生じた加速度を示すデータであり、コントローラ７から送信データとして送信されてくる一連の操作情報に含まれる最新の加速度データが格納される。加速度データＤａ２には、加速度センサ７０１がＸ軸成分に対して検出した加速度を示すＸ軸方向加速度データＤａ２ｘ、Ｙ軸成分に対して検出した加速度を示すＹ軸方向加速度データＤａ２ｙ、およびＺ軸成分に対して検出した加速度を示すＺ軸方向加速度データＤａ２ｚが含まれる。なお、ゲーム装置本体５に備える無線コントローラモジュール１９は、コントローラ７から所定周期（例えば、１／２００秒毎）に送信される操作情報に含まれるキーデータおよび加速度データを受信し、無線コントローラモジュール１９に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられたキーデータおよび加速度データが処理周期である１フレーム毎（例えば、１／６０秒毎）に読み出されて、メインメモリのキーデータＤａ１および加速度データＤａ２がそれぞれ更新される。
【００９６】
このとき、操作情報を受信する周期と処理周期とが異なるために、上記バッファには複数の時点に受信した操作情報が記述されていることになる。後述する処理の説明においては、後述する各ステップにおいて、複数の時点に受信した操作情報のうち最新の操作情報のみを常に用いて処理して、次のステップに進める態様を用いる。
【００９７】
また、後述する処理フローでは、キーデータＤａ１および加速度データＤａ２が処理周期である１フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コントローラ７からの送信周期毎にキーデータＤａ１および加速度データＤａ２を更新し、当該更新されたキーデータＤａ１および加速度データＤａ２を処理周期毎に利用する態様でもかまわない。この場合、キーデータＤａ１および加速度データＤａ２を更新する周期と、他の処理周期とが異なることになる。
【００９８】
移動速度データＤｂは、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯが仮想世界を移動する移動速度Ｖを示すデータが格納される。ハンドル方向データＤｃは、乗物オブジェクトＢＯのハンドル方向を示すデータが格納される。配置位置データＤｄは、仮想世界における乗物オブジェクトＢＯおよび乗員オブジェクトＣＯの位置を示すデータが格納される。
【００９９】
左足接地準備フラグデータＤｅは、上記接地準備動作の際、乗員オブジェクトＣＯが左足を接地して乗物オブジェクトＢＯを停止させることが可能な状況である場合にオン（ＯＮ）に設定される左足接地準備フラグを示すデータが格納される。右足接地準備フラグデータＤｆは、上記接地準備動作の際、乗員オブジェクトＣＯが右足を接地して乗物オブジェクトＢＯを停止させることが可能な状況である場合にオン（ＯＮ）に設定される右足接地準備フラグを示すデータが格納される。左足接地フラグデータＤｇは、上記接地動作の際、乗員オブジェクトＣＯが左足を接地して乗物オブジェクトＢＯを停止させる場合にオン（ＯＮ）に設定される左足接地フラグを示すデータが格納される。右足接地フラグデータＤｈは、上記接地動作の際、乗員オブジェクトＣＯが右足を接地して乗物オブジェクトＢＯを停止させる場合にオン（ＯＮ）に設定される右足接地フラグを示すデータが格納される。
【０１００】
コリジョンデータＤｉは、仮想世界におけるコリジョンＣ１〜Ｃ６それぞれの位置、サイズ、形状等を示すデータが格納される。
【０１０１】
画像データＤｊは、オブジェクト画像データＤｊ１および背景画像データＤｊ２等を含んでいる。オブジェクト画像データＤｊ１は、仮想世界に乗物オブジェクトＢＯ、乗員オブジェクトＣＯ、地面オブジェクトＧＯ、障害物オブジェクトＷＯ等を配置して画像を生成するためのデータである。背景画像データＤｊ２は、仮想世界に背景を配置して画像を生成するためのデータである。
【０１０２】
次に、図１４〜図１７を参照して、ゲーム装置本体５において行われる処理の詳細を説明する。なお、図１４は、ゲーム装置本体５において実行される処理の一例を示すフローチャートである。図１５は、図１４におけるステップ４７の接地準備処理の一部の一例を示すサブルーチンである。図１６は、図１４におけるステップ４７の接地準備処理の他の部の一例を示すサブルーチンである。図１７は、図１４におけるステップ４９の接地処理の一例を示すサブルーチンである。ここで、図１４〜図１７に示すフローチャートにおいては、処理のうち、ユーザの操作に応じて、乗員オブジェクトＣＯが乗物オブジェクトＢＯを仮想世界において移動／停止させる処理について主に説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図１４〜図１７では、ＣＰＵ１０が実行する各ステップを「Ｓ」と略称する。
【０１０３】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶された情報処理プログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該プログラムの実行が開始される。図１４〜図１７に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【０１０４】
図１４において、ＣＰＵ１０は、処理の初期設定を行い（ステップ４１）、次のステップに処理を進める。例えば、上記ステップ４１における初期設定では、仮想世界の設定（例えば、地面オブジェクトＧＯ、障害物オブジェクトＷＯ等を仮想世界内に配置）や乗物オブジェクトＢＯおよび乗員オブジェクトＣＯ等の初期位置や初期状態を設定する。なお、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯが初期状態において停止状態であれば、乗員オブジェクトＣＯが初期状態において接地する足を初期設定して当該足に応じたフラグをオンに設定する。例えば、乗員オブジェクトＣＯが初期状態において左足を地面オブジェクトＧＯに接地する場合、上記ステップ４１における初期設定では、左足接地準備フラグデータＤｅの左足接地準備フラグおよび左足接地フラグデータＤｇの左足接地フラグをそれぞれオンに設定し、右足接地準備フラグデータＤｆの右足接地準備フラグおよび右足接地フラグデータＤｈの右足接地フラグをそれぞれオフに設定する。一方、乗員オブジェクトＣＯが初期状態において右足を地面オブジェクトＧＯに接地する場合、上記ステップ４１における初期設定では、右足接地準備フラグデータＤｆの右足接地準備フラグおよび右足接地フラグデータＤｈの右足接地フラグをそれぞれオンに設定し、左足接地準備フラグデータＤｅの左足接地準備フラグおよび左足接地フラグデータＤｇの左足接地フラグをそれぞれオフに設定する。また、上記ステップ４１における初期設定では、以降の処理で用いる各パラメータを初期化する。例えば、ＣＰＵ１０は、上述したメインメモリに格納される各データＤａ〜ＤｄおよびＤｉが示すパラメータをそれぞれ初期値に設定する。
【０１０５】
次に、ＣＰＵ１０は、コントローラ７から操作情報を示すデータを取得し（ステップ４２）、次のステップに処理を進める。例えば、ＣＰＵ１０は、コントローラ７から受信した操作情報を取得し、当該操作情報に含まれる最新のキーデータおよび加速度データを用いてキーデータＤａ１および加速度データＤａ２を更新する。
【０１０６】
次に、ＣＰＵ１０は、乗物オブジェクトＢＯの移動速度Ｖを算出し（ステップ４３）、次のステップに処理を進める。例えば、ＣＰＵ１０は、キーデータＤａ１を参照して、操作ボタン７２に割り当てられている加速ボタンや減速ボタンが押下されているか否かを判断する。そして、ＣＰＵ１０は、移動速度データＤｂを参照して現時点の移動速度Ｖを取得して、当該判断結果および乗物オブジェクトＢＯが配置されている仮想世界の状況に応じて移動速度Ｖを加速／減速させる。例えば、ＣＰＵ１０は、上記加速ボタンや上記減速ボタンが何れも押下されていない場合であっても、乗物オブジェクトＢＯが配置されている仮想世界の状況に応じて乗物オブジェクトＢＯの移動速度Ｖを加速／減速させる。第１の例として、ＣＰＵ１０は、乗物オブジェクトＢＯが走行している路面が下り坂や上り坂の場合、当該坂の傾斜に応じて、乗物オブジェクトＢＯの移動速度Ｖを加速／減速させる。第２の例として、ＣＰＵ１０は、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯが走行している仮想世界における仮想的な空気抵抗に応じて、乗物オブジェクトＢＯの移動速度Ｖを減速させる。第３の例として、ＣＰＵ１０は、乗物オブジェクトＢＯが走行している路面の状況に応じて、乗物オブジェクトＢＯの移動速度Ｖを減速させる。具体的には、ＣＰＵ１０は、乗物オブジェクトＢＯがアスファルトで形成された路面を走行している場合と比較して、乗物オブジェクトＢＯが砂浜を走行している場合の走行抵抗を大きく設定して、乗物オブジェクトＢＯの移動速度Ｖを減速させる。そして、ＣＰＵ１０は、算出された移動速度Ｖを用いて、移動速度データＤｂを更新する。
【０１０７】
次に、ＣＰＵ１０は、乗物オブジェクトＢＯのハンドルが切られている方向を示すハンドル方向を決定し（ステップ４４）、次のステップに処理を進める。例えば、ＣＰＵ１０は、加速度データＤａ２を参照して、コントローラ７の姿勢（具体的には、水平方向を基準としたコントローラ７の上面の傾き）を算出し、当該姿勢に基づいて乗物オブジェクトＢＯのハンドル方向を決定する。具体的には、ＣＰＵ１０は、加速度データＤａ２が示す加速度を用いて、コントローラ７に生じている重力加速度の方向を推定する。例えば、コントローラ７に生じている重力加速度を推定する方法としては、コントローラ７に生じている加速度の大きさが重力加速度の大きさに近い場合に当該加速度を重力加速度として認識する方法や、コントローラ７に生じている加速度の時系列的な差分値が閾値以下（すなわち、加速度変化が所定値より小さい）場合に当該加速度を重力加速度として認識する方法や、常にコントローラ７に生じている加速度に所定の割合で追従する加速度を算出して当該追従する加速度を重力加速度として認識する方法等が考えられるが、重力加速度の方向を推定する方法は他の方法を用いてもかまわない。そして、ＣＰＵ１０は、推定されたコントローラ７に生じている重力加速度の方向を用いて、実空間における水平方向を基準としたコントローラ７の上面の傾き（角度）を算出する。例えば、図８に示すように、コントローラ７の上面が左方向（例えば、コントローラ７の上面が実空間における上方向に向いた状態で、Ｘ軸方向を中心としてコントローラ７の前面が下がる方向）へ傾いている場合、乗物オブジェクトＢＯのハンドル方向を左方向とし、水平方向に対するコントローラ７上面の傾き角度に応じて乗物オブジェクトＢＯのハンドル角度を算出する。また、コントローラ７の上面が右方向（例えば、コントローラ７の上面が実空間における上方向に向いた状態で、Ｘ軸方向を中心としてコントローラ７の後面が下がる方向）へ傾いている場合、乗物オブジェクトＢＯのハンドル方向を右方向とし、水平方向に対するコントローラ７上面の傾き角度に応じて乗物オブジェクトＢＯのハンドル角度を算出する。そして、ＣＰＵ１０は、決定されたハンドル方向を用いて、ハンドル方向データＤｃを更新する。
【０１０８】
次に、ＣＰＵ１０は、乗物オブジェクトＢＯの仮想世界における配置位置を算出し（ステップ４５）、次のステップに処理を進める。例えば、ＣＰＵ１０は、移動速度データＤｂ、ハンドル方向データＤｃ、および配置位置データＤｄを参照して、乗物オブジェクトＢＯの移動速度Ｖおよびハンドル方向と、乗物オブジェクトＢＯの仮想世界における配置位置とを取得する。そして、ＣＰＵ１０は、取得された移動速度Ｖおよびハンドル方向に基づいて、取得された配置位置から乗物オブジェクトＢＯを仮想世界において移動させ、新たな配置位置を算出する。そして、ＣＰＵ１０は、算出された配置位置を用いて、配置位置データＤｄを更新する。
【０１０９】
次に、ＣＰＵ１０は、上記ステップ４３で算出された移動速度Ｖが、第１の移動速度Ｖ１未満、かつ、第２の移動速度Ｖ２以上であるか否かを判断する（ステップ４６）。ここで、第１の移動速度Ｖ１および第２の移動速度Ｖ２は、乗物オブジェクトＢＯの移動速度Ｖが低速移動しているか否かを判定するために予め定められた閾値であり、Ｖ２＜Ｖ１で設定される。なお、乗物オブジェクトＢＯの移動速度Ｖが第１の移動速度Ｖ１以上である場合、乗物オブジェクトＢＯが高速移動していると判断される。また、乗物オブジェクトＢＯの移動速度Ｖが第２の移動速度Ｖ２未満である場合、乗物オブジェクトＢＯが停車状態であると判断される。そして、ＣＰＵ１０は、移動速度Ｖが第１の移動速度Ｖ１未満、かつ、第２の移動速度Ｖ２以上、すなわち低速移動状態である場合、次のステップ４７に処理を進める。一方、ＣＰＵ１０は、移動速度Ｖが第１の移動速度Ｖ１以上、または、第２の移動速度Ｖ２未満である場合、次のステップ４８に処理を進める。
【０１１０】
ステップ４７において、ＣＰＵ１０は、接地準備処理を行い、次のステップ５１に処理を進める。以下、図１５および図１６を参照して、上記ステップ４７で行う接地準備処理について説明する。
【０１１１】
図１５において、ＣＰＵ１０は、ハンドル方向データＤｃを参照して、乗物オブジェクトＢＯのハンドル方向が右方向か否かを判断する（ステップ８１）。そして、ＣＰＵ１０は、乗物オブジェクトＢＯのハンドル方向が右方向である場合、次のステップ８２に処理を進める。一方、ＣＰＵ１０は、乗物オブジェクトＢＯのハンドル方向が右方向でない場合、次のステップ１０２（図１６）に処理を進める。
【０１１２】
ステップ８２において、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側が、仮想空間において他のオブジェクトと接触しているか否かを判断する。例えば、ＣＰＵ１０は、配置位置データＤｄおよびコリジョンデータＤｉに基づいて、仮想世界における乗物オブジェクトＢＯの右側に設けられたコリジョンＣ４およびＣ６（図１０参照）を定義し、コリジョンＣ４およびＣ６の少なくとも一方が仮想世界に配置された他のオブジェクト（例えば、障害物オブジェクトＷＯ）と接触しているか否かによって、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側が他のオブジェクトと接触しているか否かを判断する。そして、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側が他のオブジェクトと接触していない場合、次のステップ８３に処理を進める。一方、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側が他のオブジェクトと接触している場合（例えば、図１２Ａに示すような状況）、次のステップ８７に処理を進める。
【０１１３】
ステップ８３において、ＣＰＵ１０は、現時点が、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側が他のオブジェクトと接触した後の所定時間以内（例えば、１２０フレーム（２秒間）以内）か否かを判断する。例えば、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側と他のオブジェクトとの接触が解消されても、現時点が当該接触解消後の所定時間以内であれば上記ステップ８３で肯定判定する。そして、ＣＰＵ１０は、現時点が上記所定時間以内でない場合、次のステップ８４に処理を進める。一方、ＣＰＵ１０は、現時点が上記所定時間以内である場合、次のステップ８７に処理を進める。ここで、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側と他のオブジェクトとの接触が解消されても、現時点が当該接触解消後の所定時間以内である場合に右足を接地可能としない理由は、例えば、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側と他のオブジェクトとの接触がごく短い時間で継続して行われた場合に、乗員オブジェクトＣＯの右足をペダルから離すアニメーションとペダルにのせるアニメーションとが短い時間で交互に再生されることにより、全体として不自然なアニメーションとなってしまうことを防止するためである。
【０１１４】
ステップ８４において、ＣＰＵ１０は、乗員オブジェクトＣＯの右足が接地可能か否かを判定する。例えば、ＣＰＵ１０は、配置位置データＤｄおよびコリジョンデータＤｉに基づいて、仮想世界における乗物オブジェクトＢＯの右側に設けられたコリジョンＣ２（図１０参照）を定義し、コリジョンＣ２が地面オブジェクトＧＯと接触しているか否かを判断する。そして、ＣＰＵ１０は、コリジョンＣ２が地面オブジェクトＧＯと非接触状態で地面オブジェクトＧＯの上方位置に配置されている場合や、接地不可属性が定義された地形オブジェクト（例えば、水面オブジェクト）とコリジョンＣ２とが接触している場合や、コリジョンＣ２が仮想世界における空中に浮いている場合（崖際の外側等）等においては、乗員オブジェクトＣＯの右足が接地不可能であると判断する。一方、ＣＰＵ１０は、接地可能属性が定義された地面オブジェクトＧＯとコリジョンＣ２とが接触している場合（例えば、図１１Ａに示すような状況）、乗員オブジェクトＣＯの右足が接地可能であると判断する。そして、ＣＰＵ１０は、乗員オブジェクトＣＯの右足が接地可能である場合、次のステップ８５に処理を進める。一方、ＣＰＵ１０は、乗員オブジェクトＣＯの右足が接地不可能である場合、次のステップ８７に処理を進める。
【０１１５】
ステップ８５において、ＣＰＵ１０は、乗物オブジェクトＢＯを停車させる際に乗員オブジェクトＣＯの右足が接地可能であると判断して、右足接地準備フラグをオンに設定し右足接地準備フラグデータＤｆを更新する。そして、ＣＰＵ１０は、左足接地準備フラグをオフに設定して左足接地準備フラグデータＤｅを更新して（ステップ８６）、当該サブルーチンによる処理を終了する。
【０１１６】
一方、ＣＰＵ１０は、乗物オブジェクトＢＯを停車させる際に乗員オブジェクトＣＯの右足が接地不可能であると判断した場合（ステップ８２でＹｅｓ、ステップ８３でＹｅｓ、またはステップ８４でＮｏ）、ステップ８７において、右足接地準備フラグをオフに設定し右足接地準備フラグデータＤｆを更新し、次のステップに処理を進める。
【０１１７】
次に、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が、仮想空間において他のオブジェクトと接触しているか否かを判断する（ステップ８８）。例えば、ＣＰＵ１０は、配置位置データＤｄおよびコリジョンデータＤｉに基づいて、仮想世界における乗物オブジェクトＢＯの左側に設けられたコリジョンＣ３およびＣ５（図１０参照）を定義し、コリジョンＣ３およびＣ５の少なくとも一方が仮想世界に配置された他のオブジェクト（例えば、障害物オブジェクトＷＯ）と接触しているか否かによって、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が他のオブジェクトと接触しているか否かを判断する。そして、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が他のオブジェクトと接触していない場合、次のステップ８９に処理を進める。一方、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が他のオブジェクトと接触している場合、次のステップ９２に処理を進める。
【０１１８】
ステップ８９において、ＣＰＵ１０は、現時点が、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が他のオブジェクトと接触した後の所定時間以内（例えば、１２０フレーム（２秒間）以内）か否かを判断する。そして、ＣＰＵ１０は、現時点が上記所定時間以内でない場合、次のステップ９０に処理を進める。一方、ＣＰＵ１０は、現時点が上記所定時間以内である場合、次のステップ９２に処理を進める。
【０１１９】
ステップ９０において、ＣＰＵ１０は、乗員オブジェクトＣＯの左足が接地可能か否かを判定する。例えば、ＣＰＵ１０は、配置位置データＤｄおよびコリジョンデータＤｉに基づいて、仮想世界における乗物オブジェクトＢＯの左側に設けられたコリジョンＣ１（図１０参照）を定義し、コリジョンＣ１が地面オブジェクトＧＯと接触しているか否かを判断する。そして、ＣＰＵ１０は、コリジョンＣ１が地面オブジェクトＧＯと非接触状態で地面オブジェクトＧＯの上方位置に配置されている場合（例えば、図１１Ａに示すような状況）や、接地不可属性が定義された地形オブジェクトとコリジョンＣ１とが接触している場合や、コリジョンＣ１が仮想世界における空中に浮いている場合等においては、乗員オブジェクトＣＯの左足が接地不可能であると判断する。一方、ＣＰＵ１０は、接地可能属性が定義された地面オブジェクトＧＯとコリジョンＣ１とが接触している場合、乗員オブジェクトＣＯの左足が接地可能であると判断する。そして、ＣＰＵ１０は、乗員オブジェクトＣＯの左足が接地可能である場合、次のステップ９１に処理を進める。一方、ＣＰＵ１０は、乗員オブジェクトＣＯの左足が接地不可能である場合、次のステップ９２に処理を進める。
【０１２０】
ステップ９１において、ＣＰＵ１０は、乗物オブジェクトＢＯを停車させる際に乗員オブジェクトＣＯの左足が接地可能であると判断して、左足接地準備フラグをオンに設定し左足接地準備フラグデータＤｅを更新して、当該サブルーチンによる処理を終了する。
【０１２１】
一方、ＣＰＵ１０は、乗物オブジェクトＢＯを停車させる際に乗員オブジェクトＣＯの左足が接地不可能であると判断した場合（ステップ８８でＹｅｓ、ステップ８９でＹｅｓ、またはステップ９０でＮｏ）、ステップ９２において、左足接地準備フラグをオフに設定し左足接地準備フラグデータＤｅを更新し、当該サブルーチンによる処理を終了する。
【０１２２】
上記ステップ８１において、乗物オブジェクトＢＯのハンドル方向が左方向でないと判断された場合、ＣＰＵ１０は、ステップ１０２（図１６）に処理を進める。ステップ１０２において、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が、仮想空間において他のオブジェクトと接触しているか否かを判断する。そして、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が他のオブジェクトと接触していない場合、次のステップ１０３に処理を進める。一方、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が他のオブジェクトと接触している場合、次のステップ１０７に処理を進める。なお、ステップ１０２における判断方法は、上記ステップ８８と同様であるため詳細な説明を省略する。
【０１２３】
ステップ１０３において、ＣＰＵ１０は、現時点が、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が他のオブジェクトと接触した後の所定時間以内か否かを判断する。そして、ＣＰＵ１０は、現時点が上記所定時間以内でない場合、次のステップ１０４に処理を進める。一方、ＣＰＵ１０は、現時点が上記所定時間以内である場合、次のステップ１０７に処理を進める。なお、ステップ１０３における判断方法は、上記ステップ８９と同様であるため詳細な説明を省略する。
【０１２４】
ステップ１０４において、ＣＰＵ１０は、乗員オブジェクトＣＯの左足が接地可能か否かを判定する。そして、ＣＰＵ１０は、乗員オブジェクトＣＯの左足が接地可能である場合、次のステップ１０５に処理を進める。一方、ＣＰＵ１０は、乗員オブジェクトＣＯの左足が接地不可能である場合、次のステップ１０７に処理を進める。なお、ステップ１０４における判断方法は、上記ステップ９０と同様であるため詳細な説明を省略する。
【０１２５】
ステップ１０５において、ＣＰＵ１０は、乗物オブジェクトＢＯを停車させる際に乗員オブジェクトＣＯの左足が接地可能であると判断して、左足接地準備フラグをオンに設定し左足接地準備フラグデータＤｅを更新する。そして、ＣＰＵ１０は、右足接地準備フラグをオフに設定して右足接地準備フラグデータＤｆを更新して（ステップ１０６）、当該サブルーチンによる処理を終了する。
【０１２６】
一方、ＣＰＵ１０は、乗物オブジェクトＢＯを停車させる際に乗員オブジェクトＣＯの左足が接地不可能であると判断した場合（ステップ１０２でＹｅｓ、ステップ１０３でＹｅｓ、またはステップ１０４でＮｏ）、ステップ１０７において、左足接地準備フラグをオフに設定し左足接地準備フラグデータＤｅを更新し、次のステップに処理を進める。
【０１２７】
次に、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側が、仮想空間において他のオブジェクトと接触しているか否かを判断する（ステップ１０８）。そして、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側が他のオブジェクトと接触していない場合、次のステップ１０９に処理を進める。一方、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側が他のオブジェクトと接触している場合、次のステップ１１２に処理を進める。なお、ステップ１０８における判断方法は、上記ステップ８２と同様であるため詳細な説明を省略する。
【０１２８】
ステップ１０９において、ＣＰＵ１０は、現時点が、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの右側が他のオブジェクトと接触した後の所定時間以内か否かを判断する。そして、ＣＰＵ１０は、現時点が上記所定時間以内でない場合、次のステップ１１０に処理を進める。一方、ＣＰＵ１０は、現時点が上記所定時間以内である場合、次のステップ１１２に処理を進める。なお、ステップ１０９における判断方法は、上記ステップ８３と同様であるため詳細な説明を省略する。
【０１２９】
ステップ１１０において、ＣＰＵ１０は、乗員オブジェクトＣＯの右足が接地可能か否かを判定する。そして、ＣＰＵ１０は、乗員オブジェクトＣＯの右足が接地可能である場合、次のステップ１１１に処理を進める。一方、ＣＰＵ１０は、乗員オブジェクトＣＯの右足が接地不可能である場合、次のステップ１１２に処理を進める。なお、ステップ１１０における判断方法は、上記ステップ８４と同様であるため詳細な説明を省略する。
【０１３０】
ステップ１１１において、ＣＰＵ１０は、乗物オブジェクトＢＯを停車させる際に乗員オブジェクトＣＯの右足が接地可能であると判断して、右足接地準備フラグをオンに設定し右足接地準備フラグデータＤｆを更新して、当該サブルーチンによる処理を終了する。
【０１３１】
一方、ＣＰＵ１０は、乗物オブジェクトＢＯを停車させる際に乗員オブジェクトＣＯの右足が接地不可能であると判断した場合（ステップ１０８でＹｅｓ、ステップ１０９でＹｅｓ、またはステップ１１０でＮｏ）、ステップ１１２において、右足接地準備フラグをオフに設定し右足接地準備フラグデータＤｆを更新し、当該サブルーチンによる処理を終了する。
【０１３２】
図１４に戻り、ＣＰＵ１０は、上記ステップ４６で否定判定された場合、上記ステップ４３で算出された移動速度Ｖが、第２の移動速度Ｖ２未満であるか否かを判断する（ステップ４８）。そして、ＣＰＵ１０は、移動速度Ｖが第２の移動速度Ｖ２未満、すなわち乗物オブジェクトＢＯが停車状態である場合、次のステップ４９に処理を進める。一方、ＣＰＵ１０は、移動速度Ｖが第１の移動速度Ｖ１以上、すなわち乗物オブジェクトＢＯが高速移動状態である場合、次のステップ５０に処理を進める。
【０１３３】
ステップ４９において、ＣＰＵ１０は、接地処理を行い、次のステップ５１に処理を進める。以下、図１７を参照して、上記ステップ４９で行う接地処理について説明する。
【０１３４】
図１７において、ＣＰＵ１０は、右足接地準備フラグデータＤｆを参照し、右足接地準備フラグがオンに設定されているか否かを判断する（ステップ１２１）。そして、ＣＰＵ１０は、右足接地準備フラグがオンに設定されている場合、次のステップ１２２に処理を進める。一方、ＣＰＵ１０は、右足接地準備フラグがオフに設定されている場合、次のステップ１２４に処理を進める。
【０１３５】
ステップ１２２において、ＣＰＵ１０は、右足接地フラグをオンに設定し右足接地フラグデータＤｈを更新する。そして、ＣＰＵ１０は、左足接地フラグをオフに設定し左足接地フラグデータＤｇを更新して（ステップ１２３）、当該サブルーチンによる処理を終了する。
【０１３６】
一方、ステップ１２４において、ＣＰＵ１０は、左足接地準備フラグデータＤｅを参照し、左足接地準備フラグがオンに設定されているか否かを判断する。そして、ＣＰＵ１０は、左足接地準備フラグがオンに設定されている場合、次のステップ１２５に処理を進める。一方、ＣＰＵ１０は、左足接地準備フラグがオフに設定されている場合、次のステップ１２７に処理を進める。
【０１３７】
ステップ１２５おいて、ＣＰＵ１０は、左足接地フラグをオンに設定し左足接地フラグデータＤｇを更新する。そして、ＣＰＵ１０は、右足接地フラグをオフに設定し右足接地フラグデータＤｈを更新して（ステップ１２６）、当該サブルーチンによる処理を終了する。
【０１３８】
一方、ステップ１２７において、ＣＰＵ１０は、左足接地フラグおよび右足接地フラグをそれぞれオフに設定し左足接地フラグデータＤｇおよび右足接地フラグデータＤｈを更新して、当該サブルーチンによる処理を終了する。
【０１３９】
図１４に戻り、ＣＰＵ１０は、上記ステップ４８で否定判定された場合、すなわち乗物オブジェクトＢＯが高速移動状態である場合、左足接地準備フラグ、右足接地準備フラグ、左足接地フラグ、および右足接地フラグを全てオフに設定し、左足接地準備フラグデータＤｅ、右足接地準備フラグデータＤｆ、左足接地フラグデータＤｇ、および右足接地フラグデータＤｈをそれぞれ更新して（ステップ５０）、次のステップ５１に処理を進める。
【０１４０】
ステップ５１において、ＣＰＵ１０は、上記ステップ４３〜ステップ５０において設定された乗物オブジェクトＢＯおよび乗員オブジェクトＣＯの状態に基づいて、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯを仮想世界に配置してモニタ２に表示する処理を行い、次のステップに処理を進める。例えば、ＣＰＵ１０は、移動速度データＤｂが示す移動速度Ｖ、ハンドル方向データＤｃが示すハンドル方向、および配置位置データＤｄが示す配置位置に基づいて、仮想世界に乗物オブジェクトＢＯおよび乗員オブジェクトＣＯを配置して仮想世界に乗物オブジェクトＢＯおよび乗員オブジェクトＣＯを含む仮想世界をモニタ２に表示する。
【０１４１】
なお、上記ステップ５１において、ＣＰＵ１０は、乗物オブジェクトＢＯが低速移動状態（上記ステップ４６でＹｅｓ）または停車状態（上記ステップ４８でＹｅｓ）である場合、左足接地準備フラグデータＤｅ、右足接地準備フラグデータＤｆ、左足接地フラグデータＤｇ、および右足接地フラグデータＤｈがそれぞれ示すフラグ設定に応じて、乗員オブジェクトＣＯが足を接地する状態を選択して、モニタ２に表示する。第１の例として、ＣＰＵ１０は、乗物オブジェクトＢＯが低速移動状態であり、かつ、右足接地準備フラグがオンに設定されている場合、乗員オブジェクトＣＯの右足を自転車（乗物オブジェクトＢＯ）のペダルから離し、右足を地面オブジェクトＧＯに接地させて乗物オブジェクトＢＯを停止させる前段階である接地準備状態（例えば、図９Ａに示すような状態）となるように乗物オブジェクトＢＯおよび乗員オブジェクトＣＯを表示する。第２の例として、ＣＰＵ１０は、乗物オブジェクトＢＯが低速移動状態であり、かつ、左足接地準備フラグがオンに設定されている場合、乗員オブジェクトＣＯの左足を自転車のペダルから離し、左足を地面オブジェクトＧＯに接地させて乗物オブジェクトＢＯを停止させる前段階である接地準備動作状態となるように乗物オブジェクトＢＯおよび乗員オブジェクトＣＯを表示する。第３の例として、ＣＰＵ１０は、乗物オブジェクトＢＯが停止状態であり、かつ、右足接地フラグがオンに設定されている場合、乗員オブジェクトＣＯの右足を地面オブジェクトＧＯに接地させて乗物オブジェクトＢＯを停止させる接地状態（例えば、図１１Ｂに示すような状態）となるように乗物オブジェクトＢＯおよび乗員オブジェクトＣＯを表示する。第４の例として、ＣＰＵ１０は、乗物オブジェクトＢＯが停止状態であり、かつ、左足接地フラグがオンに設定されている場合、乗員オブジェクトＣＯの左足を地面オブジェクトＧＯに接地させて乗物オブジェクトＢＯを停止させる接地状態（例えば、図１２Ｂに示すような状態）となるように乗物オブジェクトＢＯおよび乗員オブジェクトＣＯを表示する。
【０１４２】
なお、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯの両側が接地不可状態である場合、乗物オブジェクトＢＯが低速移動状態または停車状態であっても全てのフラグがオフとなることがある。例えば、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯにおける左右の一方側近傍に障害物オブジェクトＷＯが配置され、他方側近傍が崖際となっているような仮想世界では、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯの両側が接地不可状態となる。このような場合、ＣＰＵ１０は、乗物オブジェクトＢＯが低速移動状態または停車状態であっても、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯを上述した接地準備動作状態や接地状態にせずにモニタ２に表示する。例えば、ＣＰＵ１０は、乗物オブジェクトＢＯおよび乗員オブジェクトＣＯの両側が接地不可状態である場合、自転車（乗物オブジェクトＢＯ）のペダル上に乗員オブジェクトＣＯの両足を載せ、当該自転車を仮想世界において起立させた状態でモニタ２に表示する。
【０１４３】
次に、ＣＰＵ１０は、処理を終了するか否かを判断する（ステップ５２）。処理を終了する条件としては、例えば、処理を終了させる条件が満たされたことや、ユーザが処理を終了する操作を行ったこと等がある。ＣＰＵ１０は、処理を終了しない場合に上記ステップ４２に戻って処理を繰り返し、処理を終了する場合に当該フローチャートによる処理を終了する。
【０１４４】
このように、上述した処理によれば、乗物オブジェクトＢＯを動作させる乗員オブジェクトＣＯを不自然なく表現することができるため、乗員オブジェクトＣＯの表現における違和感を低減させることができる。
【０１４５】
なお、上述した実施形態では、乗員オブジェクトＣＯが接地する足を決定する際に用いる接触判定領域（コリジョン）の一例として、６つのコリジョンＣ１〜Ｃ６を用いたが、これらの接触判定領域は単なる一例であり、他の態様の接触判定領域を用いてもかまわない。例えば、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯに７つ以上の接触判定領域を設定してもいいし、５つ以下の接触判定領域を設定してもかまわない。また、上述した実施形態では、地面オブジェクトＧＯの状況を判定するために乗員オブジェクトＣＯの足下にコリジョンＣ１およびＣ２を設定し、乗物オブジェクトＢＯの側方近傍における障害物の有無を判定するために乗物オブジェクトＢＯの両サイドにコリジョンＣ３〜Ｃ６を設定したが、何れか一方の判定のみを行う場合は何れか他方のコリジョンＣが不要となることは言うまでもない。具体的には、乗員オブジェクトＣＯが接地する足を決定する際に地面オブジェクトＧＯの状況のみを判定する場合、コリジョンＣ３〜Ｃ６を設けなくてもかまわない。また、乗員オブジェクトＣＯが接地する足を決定する際に乗物オブジェクトＢＯの側方近傍における障害物の有無のみを判定する場合、コリジョンＣ１およびＣ２を設けなくてもかまわない。さらに、乗物オブジェクトＢＯの形状に応じて、側方近傍における障害物の有無を判定するためのコリジョンＣの位置や数を変化させてもかまわない。例えば、図１０に示すような乗物オブジェクトＢＯの形状の場合、ハンドルの両端に設けられたコリジョンＣ３およびＣ４のみで側方近傍における障害物の有無を判定してもかまわない。また、乗員オブジェクトＣＯが接地する足を決定する際に用いる接触判定領域は、例えば不可視の円柱または球形状であるが、これらの形状に限定されない。例えば、３次元仮想世界で乗物オブジェクトＢＯおよび乗員オブジェクトＣＯを移動させる場合は、様々な立体形状の接触判定領域を用いることができる。
【０１４６】
また、上述した説明では、接触判定結果に基づいて、３次元の仮想空間における乗員オブジェクトＣＯが接地する足を決定する態様を用いたが、本発明は、２次元の仮想世界における乗員オブジェクトＣＯが接地する足を決定する際にも用いることができる。２次元仮想世界で乗物オブジェクトＢＯおよび乗員オブジェクトＣＯを移動させる場合は、様々な図形（例えば、円）の接触判定領域を用いることができることは言うまでもない。
【０１４７】
また、上述した説明では、３軸方向の加速度を検出する加速度センサ７０１を用いた処理を用いたが、少なくとも１軸方向の加速度を検出する加速度センサがコントローラ７に設けられていればよい。例えば、Ｚ軸方向の加速度を検出可能な加速度センサ７０１の場合（図８参照）には、Ｚ軸方向に１Ｇ（重力加速度）が作用しているか否かによって、コントローラ７が水平であるか否かを知ることができる。また、Ｚ軸方向に作用している加速度の大きさによって、コントローラ７が水平方向に対してどの程度傾いているのかも知ることができる。
【０１４８】
また、上述した説明では、操作ボタン７２に割り当てられている加速ボタンや減速ボタンを押下することによって、乗物オブジェクトＢＯの移動速度Ｖが変化する例を用いたが、他の操作に応じて乗物オブジェクトＢＯの移動速度Ｖを変化させてもかまわない。例えば、ユーザによって荷重が加えられる荷重センサを備えた入力装置（荷重コントローラ）が備えられたゲームシステムの場合、ユーザが当該入力装置上に乗って前後左右に動いたり、当該入力装置上で足踏みしたり、当該入力装置上に昇降したりすることによる荷重変化に応じて、移動速度Ｖを変化させてもかまわない。また、ユーザがコントローラ７を振り動かすことによって生じる加速度の変化を加速度センサ７０１が検出し、当該加速度の変化に応じて移動速度Ｖを変化させてもかまわない。
【０１４９】
また、上述した説明では、コントローラ７の姿勢（傾き角度）に応じて乗物オブジェクトＢＯのハンドル角度を変化させる例を用いたが、他の操作に応じて乗物オブジェクトＢＯのハンドル角度を変化させてもかまわない。例えば、操作ボタン７２に割り当てられた方向指示ボタン（例えば、十字キー７２ａ）を押下することに応じて、乗物オブジェクトＢＯのハンドル角度を変化させてもかまわない。
【０１５０】
また、本発明は、ゲーム装置３のユーザにコントローラ７等の入力装置の操作を促すことによって、当該ユーザの運動を支援する運動支援プログラムを実行する際に用いることができるが、運動支援以外の情報処理で用いてもかまわない。例えば、本発明は、コントローラ７等の入力装置の操作に応じて、仮想ゲーム世界中のオブジェクトを操作するようなゲーム等に用いてもかまわない。
【０１５１】
また、上述した説明では、自転車に乗車して仮想世界内を走行する乗員を、ユーザがコントローラ７を用いて操作する例を用いたが、他のオブジェクトを操作する場合に本発明を適用してもかまわない。例えば、バイク等の他の二輪車に乗車して仮想世界内を走行する乗員を、ユーザがコントローラ７を用いて操作してもかまわない。この場合も、バイク等の他の二輪車が停車する際に乗員が接地する足を、本発明を用いて選択することが可能となる。
【０１５２】
また、上述した説明では、据置型のゲーム装置に本願発明を適用した例を説明したが、本発明は、一般的なパーソナルコンピュータ等の情報処理装置にも適用することができる。さらに、本発明は、複数の情報処理装置から構成される情報処理システムにも適用することができる。この場合、それぞれの情報処理装置は、本発明の一部の構成を有することになり、情報処理システムが、本発明の全部の構成を有することになる。
【０１５３】
また、上述した説明では、コントローラ７とゲーム装置本体５とが無線通信によって接続された態様を用いたが、コントローラ７とゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ７に接続されたケーブルをゲーム装置本体５の接続端子に接続する。
【０１５４】
また、上述したコントローラ７の形状や、それらに設けられている操作部７２の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した処理で用いられる係数、閾値、数式、処理順序等は、単なる一例に過ぎず他の値や数式や処理順序であっても、本発明を実現できることは言うまでもない。
【０１５５】
また、本発明の情報処理プログラムは、光ディスク４等の外部記憶媒体を通じてゲーム装置本体５に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体５に供給されてもよい。また、情報処理プログラムは、ゲーム装置本体５内部の不揮発性記憶装置に予め記録されていてもよい。なお、情報処理プログラムを記憶する情報記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【０１５６】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０１５７】
本発明に係る情報処理プログラムおよび情報処理装置は、乗員オブジェクトを不自然なく表現することにより、乗員オブジェクトの表現における違和感を低減させることができ、ユーザに入力装置を操作させることによってユーザの運動を支援する運動支援装置や運動支援プログラム等として有用であり、さらにユーザの操作に応じたゲーム等を実行するゲーム装置やゲームプログラム等としても有用である。
【符号の説明】
【０１５８】
１…ゲームシステム
２…モニタ
２ａ、７０６…スピーカ
３…ゲーム装置
４…光ディスク
５…ゲーム装置本体
１０…ＣＰＵ
１１…システムＬＳＩ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…無線通信モジュール
１９…無線コントローラモジュール
２０…拡張コネクタ
２１…外部メモリカード用コネクタ
２２、２３…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
３１…入出力プロセッサ
３２…ＧＰＵ
３３…ＤＳＰ
３４…ＶＲＡＭ
３５…内部メインメモリ
７…コントローラ
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０７…サウンドＩＣ
７０８…アンプ
８…マーカ
【図１】
2011070598.tif 000003
【図２】
2011070598.tif 000004
【図３】
2011070598.tif 000005
【図４】
2011070598.tif 000006
【図５】
2011070598.tif 000007
【図６】
2011070598.tif 000008
【図７】
2011070598.tif 000009
【図８】
2011070598.tif 000010
【図９Ａ】
2011070598.tif 000011
【図９Ｂ】
2011070598.tif 000012
【図１０】
2011070598.tif 000013
【図１１Ａ】
2011070598.tif 000014
【図１１Ｂ】
2011070598.tif 000015
【図１２Ａ】
2011070598.tif 000016
【図１２Ｂ】
2011070598.tif 000017
【図１３】
2011070598.tif 000018
【図１４】
2011070598.tif 000019
【図１５】
2011070598.tif 000020
【図１６】
2011070598.tif 000021
【図１７】
2011070598.tif 000022
【手続補正書】
【提出日】平成21年11月17日(2009.11.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０１２２
【補正方法】変更
【補正の内容】
【０１２２】
上記ステップ８１において、乗物オブジェクトＢＯのハンドル方向が右方向でないと判断された場合、ＣＰＵ１０は、ステップ１０２（図１６）に処理を進める。ステップ１０２において、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が、仮想空間において他のオブジェクトと接触しているか否かを判断する。そして、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が他のオブジェクトと接触していない場合、次のステップ１０３に処理を進める。一方、ＣＰＵ１０は、乗物オブジェクトＢＯおよび／または乗員オブジェクトＣＯの左側が他のオブジェクトと接触している場合、次のステップ１０７に処理を進める。なお、ステップ１０２における判断方法は、上記ステップ８８と同様であるため詳細な説明を省略する。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１１
【補正方法】変更
【補正の内容】
【請求項１１】
前記接地オブジェクトは、前記乗員オブジェクトの足の接地を許可するか否かを示す属性を含み、
前記接触判定手段は、前記第１接触判定領域が前記乗員オブジェクトの足の接地を許可する属性を有する接地オブジェクトと接触するか否かを判定し、
前記接地動作制御手段は、前記第１接触判定領域が前記乗員オブジェクトの足の接地を許可する属性を有する接地オブジェクトと接触すると前記接触判定手段が判定した場合に前記接地オブジェクトに接地する足を選択して当該選択された足を前記接地オブジェクトに接地させる、請求項３に記載の情報処理プログラム。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１５
【補正方法】変更
【補正の内容】
【請求項１５】
前記閾値判定手段は、前記移動速度が、前記第１閾値より小さい第２閾値未満か否かをさらに判断し、
前記接地動作制御手段は、
前記移動速度が前記第２閾値以上、かつ、前記第１閾値未満である場合に前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を前記接地オブジェクトに接地させる準備動作を当該乗員オブジェクトに行わせ、
前記移動速度が前記第２閾値未満の場合に前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を接地オブジェクトに接地させる、請求項１４に記載の情報処理プログラム。