説明

情報処理プログラムおよび情報処理装置

【課題】乗員オブジェクトを不自然なく表現することにより、乗員オブジェクトの表現における違和感を低減させることができる情報処理プログラムおよび情報処理装置を提供する。
【解決手段】移動手段は、仮想世界に配置された乗物オブジェクトと当該乗物オブジェクトに乗る乗員オブジェクトとを含む移動オブジェクトを、ユーザの操作に応じて移動させる。接触判定領域設定手段は、移動オブジェクトに少なくとも1つの接触判定領域を設定する。接触判定手段は、接触判定領域を用いて、仮想世界内における接触判定を行う。接地動作制御手段は、接触判定手段の判定結果に応じて乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を地面に接地させる。表示制御手段は、移動オブジェクトを表示装置に表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラムおよび情報処理装置に関し、特に例えば、乗物オブジェクトと当該乗物オブジェクトを作動させる乗員オブジェクトとが登場する仮想世界を用いる情報処理プログラムおよび情報処理装置に関する。
【背景技術】
【0002】
従来、ユーザ操作に応じて、仮想世界においてオブジェクトの速度や移動方向を制御するゲーム装置が知られている(例えば、特許文献1参照)。上記特許文献1では、移動オブジェクトであるバイクの速度や移動方向をユーザ操作に応じて制御することにより、移動オブジェクトが移動するコースにおけるスタートからゴールまでのラップタイムを競ったり、コンピュータによって制御される他の移動オブジェクトとの着順を競ったりする。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−236799号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ここで、上記特許文献1に記載されたゲーム装置では、移動オブジェクトをどれだけ早くゴールさせるかというゲーム目的が前提にあるため、移動オブジェクトが停止している状態において不自然なくアニメーションすることについては考慮されていない。例えば、上記移動オブジェクトは、仮想世界に設定されたコース上を走行する乗物オブジェクト(バイク)と、仮想世界において当該乗物オブジェクトに乗車して当該乗物オブジェクトを操作する乗員オブジェクトとによって構成されている。しかしながら、上記特許文献1に記載されたゲーム装置では、上記乗物オブジェクトが停止している状況において、乗員オブジェクトを不自然なくアニメーションさせることを考慮していなかった。
【0005】
それ故に、本発明の目的は、乗員オブジェクトを不自然なく表現することにより、乗員オブジェクトの表現における違和感を低減させることができる情報処理プログラムおよび情報処理装置を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は、以下に述べるような特徴を有している。
【0007】
本発明は、表示装置に仮想世界を表示する情報処理装置のコンピュータで実行される情報処理プログラムである。情報処理プログラムは、移動手段、接触判定領域設定手段、接触判定手段、接地動作制御手段、および表示制御手段として、コンピュータを機能させる。移動手段は、仮想世界に配置された乗物オブジェクトと当該乗物オブジェクトに乗る乗員オブジェクトとを含む移動オブジェクトを、ユーザの操作に応じて移動させる。接触判定領域設定手段は、移動オブジェクトに少なくとも1つの接触判定領域を設定する。接触判定手段は、接触判定領域を用いて、仮想世界内における接触判定を行う。接地動作制御手段は、接触判定手段の判定結果に応じて乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を当該接地オブジェクトに接地させる。表示制御手段は、移動オブジェクトを表示装置に表示する。
【0008】
上記によれば、仮想世界で移動する乗物オブジェクトに乗る乗員オブジェクトの表現における違和感を低減させることができる。
【0009】
また、接地動作制御手段は、接触判定手段の判定結果に応じて乗員オブジェクトが接地オブジェクトに接地する足を選択し、移動オブジェクトが停止する場合に当該選択された足を接地オブジェクトに接地させてもよい。
【0010】
上記によれば、移動オブジェクトが仮想世界で停止する際、乗員オブジェクトの表現における違和感を低減させることができる。
【0011】
また、接触判定領域設定手段は、移動オブジェクトに第1接触判定領域を設定してもよい。この場合、接触判定手段は、接地オブジェクトと第1接触判定領域とが接触するか否かを判定してもよい。接地動作制御手段は、接触判定手段による第1接触判定領域を用いた判定結果が肯定である場合に接地オブジェクトに接地する足を選択して当該選択された足を接地オブジェクトに接地させてもよい。
【0012】
上記によれば、足を接地するための接地オブジェクトの状況に応じて乗員オブジェクトの接地動作を制御することができる。
【0013】
また、接触判定領域設定手段は、移動オブジェクトに複数の第1接触判定領域を設定してもよい。この場合、接地動作制御手段は、移動オブジェクトに設定された第1接触判定領域の1つと接地オブジェクトとが接触していると接触判定手段が判定した場合、当該第1接触判定領域の1つに対応する乗員オブジェクトの足を当該接地オブジェクトに接地させてもよい。接地動作制御手段は、移動オブジェクトに設定された第1接触判定領域の1つ以外の領域と接地オブジェクトとが接触していると接触判定手段が判定した場合、当該第1接触判定領域の1つ以外の領域に対応する乗員オブジェクトの足を当該接地オブジェクトに接地させてもよい。
【0014】
上記によれば、乗員オブジェクトの足に対応する第1接触判定領域と接地オブジェクトとの接触状況に応じて、乗員オブジェクトが接地する足を選択することができる。
【0015】
また、接触判定領域設定手段は、移動オブジェクトの左右にそれぞれ少なくとも1つの第1接触判定領域を設定してもよい。この場合、接地動作制御手段は、移動オブジェクトの左側に設定された第1接触判定領域と接地オブジェクトとが接触していると接触判定手段が判定した場合、乗員オブジェクトの左足を当該接地オブジェクトに接地させてもよい。また、接地動作制御手段は、移動オブジェクトの右側に設定された第1接触判定領域と接地オブジェクトとが接触していると接触判定手段が判定した場合、乗員オブジェクトの右足を当該接地オブジェクトに接地させてもよい。
【0016】
上記によれば、左右の接地オブジェクトの状況に応じて乗員オブジェクトの接地動作を制御することができる。
【0017】
また、接触判定手段は、仮想世界における移動オブジェクトの状態に応じて、第1接触判定領域から左右の一方側の第1接触判定領域を選択して、接地オブジェクトと当該一方側の第1接触判定領域とが接触するか否かを判定してもよい。
【0018】
上記によれば、移動オブジェクトの状態に応じて左右何れか一方を優先的に確認して接地動作することができるため、乗員オブジェクトが移動オブジェクトの状態に応じて接地動作することが可能となる。
【0019】
また、接触判定手段は、接地オブジェクトと選択された一方側の第1接触判定領域とが接触していない場合、接地オブジェクトと左右の他方側の第1接触判定領域とが接触するか否かを判定してもよい。
【0020】
上記によれば、左右一方側の接地オブジェクトが接地不可であっても、左右他方側の接地オブジェクトへ接地することが可能となり、移動オブジェクトを接地不可状態となることを防止することができる。
【0021】
また、接触判定領域設定手段は、移動オブジェクトの左右下方位置にそれぞれ互いの位置関係が仮想世界に対して常に水平となるように第1接触判定領域を設定してもよい。
【0022】
上記によれば、移動オブジェクトの傾き等によって接触判定結果が変化することを防止することができ、仮想世界に設定されている重力方向を基準とした接触判定が可能となる。
【0023】
また、接触判定領域設定手段は、移動オブジェクトに複数の第1接触判定領域を設定してもよい。この場合、接触判定手段は、仮想世界における移動オブジェクトの状態に応じて、複数の第1接触判定領域から1つの第1接触判定領域を選択して、接地オブジェクトと当該選択された第1接触判定領域とが接触するか否かを判定してもよい。
【0024】
上記によれば、複数設定されている接触判定領域から、接地する足の選択に好適な接触判定領域を移動オブジェクトの状態に応じて選択することが可能となる。
【0025】
また、移動手段は、移動方向制御手段を含んでもよい。移動方向制御手段は、ユーザの操作に応じて、移動オブジェクトの移動方向を制御する。この場合、接触判定手段は、移動オブジェクトの移動方向に基づいて、複数の第1接触判定領域から接触判定に用いる第1接触判定領域を選択してもよい。
【0026】
上記によれば、移動オブジェクトの移動方向(ハンドルの方向等)に応じて、接地オブジェクトに接地する足を選択することができる。
【0027】
また、接地オブジェクトは、乗員オブジェクトの足の接地を許可するか否かを示す属性を含んでいてもよい。この場合、接触判定手段は、第1接触判定領域が乗員オブジェクトの足の接地を許可する属性を有する接地オブジェクトと接触するか否かを判定してもよい。接地動作制御手段は、第1接触判定領域が乗員オブジェクトの足の接地を許可する属性を有する接地オブジェクトと接触すると接触判定手段が判定した場合に接地オブジェクトに接地する足を選択して当該選択された足を接地オブジェクトに接地させてもよい。
【0028】
上記によれば、乗員オブジェクトが足を接地することができない接地オブジェクトに足を接地して停止するような不自然な状況を避けることができる。
【0029】
また、接触判定手段は、仮想世界に立設された可視または不可視の障害物オブジェクトと第2接触判定領域とが接触するか否かを判定してもよい。この場合、接地動作制御手段は、接触判定手段による第2接触判定領域を用いた判定結果が否定である場合に接地オブジェクトに接地する足を選択して当該選択された足を接地オブジェクトに接地させてもよい。
【0030】
上記によれば、乗物オブジェクト側面近傍の障害物オブジェクトの状況に応じて乗員オブジェクトの接地動作を制御することができる。
【0031】
また、接触判定領域設定手段は、移動オブジェクトの左右側部にそれぞれ少なくとも1つの第2接触判定領域を設定してもよい。この場合、接地動作制御手段は、移動オブジェクトの左側に設定された第2接触判定領域と障害物オブジェクトとが接触していると接触判定手段が判定した場合、乗員オブジェクトの右足を接地オブジェクトに接地させてもよい。また、接地動作制御手段は、移動オブジェクトの右側に設定された第2接触判定領域と障害物オブジェクトとが接触していると接触判定手段が判定した場合、乗員オブジェクトの左足を接地オブジェクトに接地させてもよい。
【0032】
上記によれば、乗物オブジェクト左右側面近傍の障害物オブジェクトの状況に応じて乗員オブジェクトの接地動作を制御することができる。
【0033】
また、上記情報処理プログラムは、移動速度算出手段および閾値判定手段として、さらにコンピュータを機能させてもよい。移動速度算出手段は、移動オブジェクトの仮想世界における移動速度を算出する。閾値判定手段は、移動速度が第1閾値以上であるか否かを判断する。この場合、接地動作制御手段は、移動速度が第1閾値未満の場合に接触判定手段の判定結果に応じて乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択する。
【0034】
上記によれば、移動オブジェクトの移動速度が第1閾値未満の低速状態において、乗員オブジェクトの表現における違和感を低減させることができる。
【0035】
また、閾値判定手段は、移動速度が、第1閾値より小さい第2閾値未満か否かをさらに判断してもよい。この場合、接地動作制御手段は、移動速度が第2閾値以上、かつ、第1閾値未満である場合に接触判定手段の判定結果に応じて乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を接地オブジェクトに接地させる準備動作を当該乗員オブジェクトに行わせてもよい。また、接地動作制御手段は、移動速度が第2閾値未満の場合に接触判定手段の判定結果に応じて乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を接地オブジェクトに接地させてもよい。
【0036】
上記によれば、移動オブジェクトの移動速度が第2閾値以上第1閾値未満である状態で乗員オブジェクトに足を接地する準備する動作を行わせ、移動オブジェクトの移動速度が第2閾値未満である状態で乗員オブジェクトに足を接地オブジェクトに接地させる2段階の動作制御が可能となる。
【0037】
また、本発明は、情報処理装置の形態で実施されてもよい。
【発明の効果】
【0038】
本発明によれば、仮想世界を移動する乗物オブジェクトに乗る乗員オブジェクトの表現における違和感を低減させることができる。
【図面の簡単な説明】
【0039】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置本体5の機能ブロック図
【図3】図1のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面前方から見た斜視図
【図5】図3のコントローラ7の上筐体を外した状態を示す斜視図
【図6】図4のコントローラ7の下筐体を外した状態を示す斜視図
【図7】図3のコントローラ7の構成を示すブロック図
【図8】図1のコントローラ7を用いてユーザが操作するときの状態とモニタ2に表示される画像の一例を概説する図解図
【図9A】乗員オブジェクトCOが右足を地面オブジェクトGOに接地する場合に表示される画像の一例を示す図
【図9B】乗員オブジェクトCOが右足を地面オブジェクトGOに接地する場合に表示される画像の一例を示す図
【図10】乗物オブジェクトBOおよび/または乗員オブジェクトCOに設定されるコリジョンCの一例を示す図
【図11A】乗員オブジェクトCOが傾斜地となった地面オブジェクトGOに足を接地する場合に表示される画像の一例を示す図
【図11B】乗員オブジェクトCOが傾斜地となった地面オブジェクトGOに足を接地する場合に表示される画像の一例を示す図
【図12A】乗物オブジェクトBOおよび乗員オブジェクトCOの側方近傍に障害物オブジェクトWOが存在する状況において、乗員オブジェクトCOが足を地面オブジェクトGOに接地する場合に表示される画像の一例を示す図
【図12B】乗物オブジェクトBOおよび乗員オブジェクトCOの側方近傍に障害物オブジェクトWOが存在する状況において、乗員オブジェクトCOが足を地面オブジェクトGOに接地する場合に表示される画像の一例を示す図
【図13】図1のゲーム装置本体5のメインメモリに記憶される主なデータおよびプログラムの一例を示す図
【図14】図1のゲーム装置本体5において実行される処理の一例を示すフローチャート
【図15】図14におけるステップ47の接地準備処理の一部の一例を示すサブルーチン
【図16】図14におけるステップ47の接地準備処理の他の部の一例を示すサブルーチン
【図17】図14におけるステップ49の接地処理の一例を示すサブルーチン
【発明を実施するための形態】
【0040】
図1を参照して、本発明の一実施形態に係る情報処理プログラムを実行する情報処理装置について説明する。以下、説明を具体的にするために、当該情報処理装置の一例として据置型のゲーム装置本体5を用い、ゲーム装置本体5を含むゲームシステムについて説明する。なお、図1は、据置型のゲーム装置3を含むゲームシステム1の一例を示す外観図である。図2は、ゲーム装置本体5の一例を示すブロック図である。以下、当該ゲームシステム1について説明する。
【0041】
図1において、ゲームシステム1は、表示手段の一例である家庭用テレビジョン受像機(以下、モニタと記載する)2と、モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置3から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明の情報処理プログラムの一例となるプログラム(例えば、ゲーム装置3のユーザの運動を支援する運動支援プログラムやゲームプログラム)を記録した光ディスク4と、光ディスク4のプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、表示画面に表示されたオブジェクト等を操作するために必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
【0042】
ゲーム装置本体5は、無線コントローラモジュール19(図2参照)を内蔵する。無線コントローラモジュール19は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。また、ゲーム装置本体5には、ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着される。
【0043】
ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ17(図2参照)が搭載される。ゲーム装置本体5は、光ディスク4に記憶された運動支援プログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。運動支援プログラム等は、光ディスク4に限らず、フラッシュメモリ17に予め記録されたものを実行するようにしてもよい。また、ゲーム装置本体5は、フラッシュメモリ17に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のユーザは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0044】
コントローラ7は、無線コントローラモジュール19を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるプレイヤオブジェクト等を操作するための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)とが設けられている。また、後述により明らかとなるが、コントローラ7は、コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。そして、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体5の無線コントローラモジュール19から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
【0045】
次に、図2を参照して、ゲーム装置本体5の内部構成について説明する。図2は、ゲーム装置本体5の構成の一例を示すブロック図である。ゲーム装置本体5は、CPU(Central Processing Unit)10、システムLSI(Large Scale Integration)11、外部メインメモリ12、ROM/RTC(Read Only Memory/Real Time Clock)13、ディスクドライブ14、およびAV−IC(Audio Video−Integrated Circuit)15等を有する。
【0046】
CPU10は、光ディスク4に記憶されたプログラムを実行することによって処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については、後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたプログラムや、フラッシュメモリ17から読み出されたプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置本体5の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ35または外部メインメモリ12に読み出したデータを書き込む。
【0047】
システムLSI11には、入出力プロセッサ31、GPU(Graphics Processor Unit)32、DSP(Digital Signal Processor)33、VRAM(Video RAM)34、および内部メインメモリ35が設けられる。図示は省略するが、これらの構成要素31〜35は、内部バスによって互いに接続される。
【0048】
GPU32は、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM34は、GPU32がグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU32は、VRAM34に記憶されたデータを用いて画像データを作成する。
【0049】
DSP33は、オーディオプロセッサとして機能し、内部メインメモリ35や外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0050】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、AVコネクタ16を介して、読み出した画像データをモニタ2に出力するとともに、読み出した音声データをモニタ2に内蔵されるスピーカ2aに出力する。これによって、画像がモニタ2に表示されるとともに音がスピーカ2aから出力される。
【0051】
入出力プロセッサ(I/Oプロセッサ)31は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ31は、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、および外部メモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0052】
入出力プロセッサ31は、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ31は、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介して当該データをネットワークに送信する。また、入出力プロセッサ31は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22、および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10は、プログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してプログラムで利用する。フラッシュメモリ17には、ゲーム装置本体5と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体5を利用してプレイしたゲームのセーブデータ(処理の結果データまたは途中データ)が記憶されてもよい。
【0053】
入出力プロセッサ31は、アンテナ23および無線コントローラモジュール19を介して、コントローラ7から送信される操作データ等を受信し、内部メインメモリ35または外部メインメモリ12のバッファ領域に記憶(一時記憶)する。なお、内部メインメモリ35には、外部メインメモリ12と同様に、光ディスク4から読み出されたプログラムや、フラッシュメモリ17から読み出されたプログラムを記憶したり、各種データを記憶したりしてもよく、CPU10のワーク領域やバッファ領域として用いられてもかまわない。
【0054】
入出力プロセッサ31には、拡張コネクタ20および外部メモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ31は、拡張コネクタ20や外部メモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0055】
ゲーム装置本体5(例えば、前部主面)には、当該ゲーム装置本体5の電源ボタン24、ゲーム処理のリセットボタン25、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトボタン26等が設けられている。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置本体5の各構成要素に対して、図示しないACアダプタを介して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置本体5の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0056】
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た一例を示す斜視図である。図4は、コントローラ7を下面前方から見た一例を示す斜視図である。
【0057】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0058】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。ユーザが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばユーザが十字キー72aを操作することによって、仮想世界に登場するオブジェクト等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0059】
なお、十字キー72aは、上述したユーザの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、ユーザによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、十字キー72aの代わりに設けてもかまわない。
【0060】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、ユーザがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置本体5が実行するプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
【0061】
ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
【0062】
ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をユーザに通知するために用いられる。具体的には、無線コントローラモジュール19からコントローラ7へ、複数のLED702のうち、上記コントローラ種別に対応するLEDを点灯させるための信号が送信される。
【0063】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5に示すスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0064】
ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、ユーザがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該ユーザの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
【0065】
ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0066】
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の上面(操作ボタン72aが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の右側面(図3で表されている側面)方向をX軸正方向とする。
【0067】
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た一例を示す斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た一例を示す斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た状態となっている。
【0068】
図5において、ハウジング71の内部には基板700が固設されており、基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。そして、無線モジュール753(図7参照)およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データを用いてコントローラ7の動きを良好な感度でゲーム装置本体5等が判定することができる。
【0069】
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0070】
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成の一例を示すブロック図である。
【0071】
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
【0072】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
【0073】
コントローラ7は、3軸(X、Y、Z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、少なくとも2軸方向に沿った直線加速度をそれぞれ検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて、加速度センサ701が提供されてもよい。
【0074】
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、それら3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0075】
しかしながら、加速度センサ701から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ(例えばCPU10)またはコントローラのプロセッサ(例えばマイコン751)等のコンピュータが処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【0076】
例えば、加速度センサ701を搭載するコントローラ7が静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサ701によって検出される加速度が重力加速度のみであるとして処理する場合)、コントローラ7が現実に静的な状態であれば、検出された加速度に基づいてコントローラ7の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、単軸方向の加速度を検出可能な加速度センサ701の場合には、当該加速度が検出可能な検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に1G(重力加速度)が作用しているか否かだけでコントローラ7が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コントローラ7が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ701の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ7がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ701からの出力に基づいて、プロセッサがコントローラ7の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ701からの出力に基づいて、おおよそのコントローラ7の傾き具合を推定するような処理としてもよい。このように、加速度センサ701をプロセッサと組み合わせて用いることによって、コントローラ7の傾き、姿勢、または位置を判定することができる。
【0077】
一方、加速度センサ701が動的な状態であることを前提とする場合には、当該加速度センサ701が重力加速度成分に加えて加速度センサ701の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コントローラ7の動き方向等を知ることができる。具体的には、加速度センサ701を備えるコントローラ7がユーザの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7の様々な動きおよび/または位置を算出することができる。また、加速度センサ701が動的な状態であることを前提とする場合であっても、加速度センサ701の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコントローラ7の傾きを知ることが可能である。
【0078】
他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。加速度センサ701でそれぞれ検知された加速度を示すデータは、通信部75に出力される。
【0079】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。
【0080】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置本体5の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置本体5で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体5のCPU10は、取得した操作情報とプログラムとに基づいて、処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0081】
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、図8〜図12Bを用いてゲーム装置本体5で行うゲームの概要について説明する。図8は、コントローラ7を用いてユーザが操作するときの状態とモニタ2に表示される画像の一例を概説する図解図である。図9Aおよび図9Bは、乗員オブジェクトCOが右足を地面オブジェクトGOに接地する場合に表示される画像の一例を示す図である。図10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOに設定されるコリジョンCの一例を示す図である。図11Aおよび図11Bは、乗員オブジェクトCOが傾斜地となった地面オブジェクトGOに足を接地する場合に表示される画像の一例を示す図である。図12Aおよび図12Bは、乗物オブジェクトBOおよび乗員オブジェクトCOの側方近傍に障害物オブジェクトWOが存在する状況において、乗員オブジェクトCOが足を地面オブジェクトGOに接地する場合に表示される画像の一例を示す図である。以下の説明では、自転車(乗物オブジェクトBO)に乗車して仮想世界内を走行する乗員オブジェクトCOを、ユーザがコントローラ7を用いて操作する一例を用いる。
【0082】
図8に示すように、ゲームシステム1でコントローラ7を用いて操作するために、ユーザは、コントローラ7の上面が実空間における上方向に向くようにコントローラ7を把持する。例えば、ユーザは、あたかも自転車のハンドルを両手で握っているようにコントローラ7を把持する。そして、ユーザは、コントローラ7全体を左下に傾ける(例えば、コントローラ7の上面が実空間における上方向に向いた状態で、X軸方向を中心としてコントローラ7の前面が下がる方向)ことによって、乗員オブジェクトCOが乗車している自転車(乗物オブジェクトBO)のハンドルを左に切ることができる。また、ユーザは、コントローラ7全体を右下に傾ける(例えば、コントローラ7の上面が実空間における上方向に向いた状態で、X軸方向を中心としてコントローラ7の後面が下がる方向)ことによって、当該自転車のハンドルを右に切ることができる。例えば、ユーザがコントローラ7を傾けた場合、コントローラ7から当該傾け操作に応じた操作情報(具体的には、X、Y、およびZ軸方向加速度データ)がゲーム装置本体5に与えられる。そして、コントローラ7から受信したX、Y、およびZ軸方向加速度データに応じて、仮想世界内の乗員オブジェクトCOがハンドルを左右に切って乗員オブジェクトCOおよび乗物オブジェクトBOの進行方向を変えるような画像が表現される。
【0083】
乗物オブジェクトBOおよび乗員オブジェクトCOが仮想世界を走行する速度は、コントローラ7に設けられている操作ボタン72への操作に応じて決定される。例えば、乗物オブジェクトBOを加速させる(すなわち、乗員オブジェクトCOが自転車のペダルを回転させる速度を加速させる)際に押下するボタンおよび乗物オブジェクトBOを減速させる(すなわち、乗員オブジェクトCOが自転車のブレーキをかける)際に押下するボタンが、それぞれ操作ボタン72の何れかに割り当てられており、ユーザがこれらの操作ボタン72を押下することに応じて走行速度が変化する。そして、乗物オブジェクトBOが第1の移動速度以上(後述する移動速度V1以上)で走行している場合、乗員オブジェクトCOは、図8に示すように両足をペダルにかけた状態で走行する。
【0084】
乗物オブジェクトBOが上記第1の移動速度未満(移動速度V1未満)で、かつ、第2の移動速度以上(後述する移動速度V2以上)走行している場合、乗員オブジェクトCOは、何れか一方の足を地面オブジェクトGOに接地して乗物オブジェクトBOを停止させる準備を行う。具体的には、図9Aに示すように、乗員オブジェクトCOは、地面オブジェクトGOに接地する何れか一方の足を自転車のペダルから離し、当該足を地面オブジェクトGOに接地させて乗物オブジェクトBOを停止させる準備を行う(接地準備動作)。
【0085】
そして、乗物オブジェクトBOが上記第2の走行速度未満(走行速度V2未満)となった場合、乗員オブジェクトCOは、何れか一方の足を地面オブジェクトGOに接地して乗物オブジェクトBOを停止させる。具体的には、図9Bに示すように、乗員オブジェクトCOは、その直前までの接地準備動作においてペダルから離していた足を地面オブジェクトGOに接地させて、乗物オブジェクトBOを停止させる(接地動作)。ここで、乗員オブジェクトCOの足を接地させるオブジェクトは、乗物オブジェクトBOが走行している地面オブジェクトGOである必要はなく、仮想世界内に配置されたオブジェクトであってそのオブジェクトに乗員オブジェクトCOの足が接地した場合に不自然なアニメーションとはならないようなものであればよい。例えば、乗員オブジェクトCOの足を接地させるオブジェクトは、接地準備動作において自転車のペダルから離れた足の高さより接地する面が低くなるオブジェクト等、仮想世界内に配置された様々なオブジェクトであってもよい。
【0086】
乗物オブジェクトBOを停止させる準備を行う際、および乗員オブジェクトBOを停止させる際に接地する乗員オブジェクトCOの足は、乗物オブジェクトBOのハンドルが切られている方向、地面オブジェクトGOの状況、および乗物オブジェクトBOの側方近傍における障害物の有無等に応じて決定される。そして、本発明では、乗物オブジェクトBOおよび/または乗員オブジェクトCOに接触判定領域(例えば、コリジョン)を設定し、当該接触判定領域における接触判定結果に基づいて、地面オブジェクトGOの状況および乗物オブジェクトBOの側方近傍における障害物の有無等を判定して、乗員オブジェクトCOが接地する足を決定している。例えば、図10に示すように、本実施形態においては、地面オブジェクトGOの状況および乗物オブジェクトBOの側方近傍における障害物の有無を判定するために、複数のコリジョンCが設けられている。ここで、コリジョンCは、乗物オブジェクトBOおよび/または乗員オブジェクトCOと他のオブジェクトとの接触判定を行うための領域(空間)である。
【0087】
図10に示すように、乗物オブジェクトBOには、複数のコリジョンC1〜C6が設けられている。コリジョンC1〜C6は、乗物オブジェクトBOおよび/または乗員オブジェクトCOと他のオブジェクトとの接触判定のために設けられ、それぞれ不可視の円柱または球形状等の所定サイズの立体形状で形成されている。具体的には、乗物オブジェクトBOを停止させる際、乗員オブジェクトCOの左足および右足をそれぞれ地面に接地させる足下にコリジョンC1およびC2が設けられている。図10の例では、乗員オブジェクトCOの左足下にコリジョンC1が設けられ、乗員オブジェクトCOの右足下にコリジョンC2が設けられている。これらコリジョンC1およびC2は、乗物オブジェクトBOが地面と接地する接地水平面を基準として、当該接地水平面の下方に一部がそれぞれ突出するように配置される。例えば、コリジョンC1およびC2は、下側縁端部が上記接地水平面の下方にそれぞれ突出するとともに、それぞれの中心位置が当該接地水平面の上方となるように配置される。なお、乗物オブジェクトBOおよび乗員オブジェクトCOが移動した場合、当該乗物オブジェクトBOと共にコリジョンC1およびC2も移動するが、それぞれの位置関係が常に仮想世界において水平となるように維持される。すなわち、乗物オブジェクトBOが仮想世界において傾いたとしても、コリジョンC1およびC2は、互いの位置関係が常に水平となっている。
【0088】
乗物オブジェクトBOのハンドル両端部および両ペダルの外側端部には、それぞれコリジョンC3〜C6が設けられている。これらコリジョンC3〜C6は、仮想世界に設けられた障害物(例えば、可視壁や乗物オブジェクトBOの進入を禁止するための不可視壁)と乗物オブジェクトBOおよび/または乗員オブジェクトCOの側方との接触を判定するために設けられている。図10の例では、乗物オブジェクトBOのハンドル左端部にコリジョンC3が設けられ、乗物オブジェクトBOのハンドル右端部にコリジョンC4が設けられ、乗物オブジェクトBOの左ペダルの外側端部にコリジョンC5が設けられ、乗物オブジェクトBOの右ペダルの外側端部にコリジョンC6が設けられている。なお、乗物オブジェクトBOおよび乗員オブジェクトCOが移動した場合、当該乗物オブジェクトBOと共にコリジョンC3〜C6も移動し、乗物オブジェクトBOとの位置関係がそれぞれ変化しないように維持される。すなわち、乗物オブジェクトBOが仮想世界において傾いた場合、当該傾きに応じてコリジョンC3〜C6も乗物オブジェクトBOと一体的に移動する。
【0089】
図11Aおよび図11Bに示すように、乗物オブジェクトBOを停止させる際、乗員オブジェクトCOは、コリジョンC1およびC2と地面オブジェクトGOとの接触判定結果に応じて接地する足を選択する。例えば、乗員オブジェクトCOは、コリジョンC1およびC2の一方と地面オブジェクトGOとが接触していない場合、地面オブジェクトGOとの接触が確認された側の足を接地する足として選択する。例えば、図11Aに示すように右から左へ傾斜している地面オブジェクトGO上に乗物オブジェクトBOを停止させる際に、左側のコリジョンC1と地面オブジェクトGOとが非接触となった場合、乗員オブジェクトCOは、右足を地面オブジェクトGOに接地させる(図11B)。つまり、傾斜面上に乗物オブジェクトBOを停止させる際、乗員オブジェクトCOは、山側に足を接地させることになる。これによって、傾斜面、崖際、水際(海や川等)等に乗物オブジェクトBOを停止させる場合、乗員オブジェクトCOが傾斜面の谷側に足を接地させたり、崖の外側空間に足を接地させようとしたり、水面に足を接地させたりするような不自然な状況を回避することができる。
【0090】
図12Aおよび図12Bに示すように、乗物オブジェクトBOを停止させる際、乗員オブジェクトCOは、コリジョンC3〜C6と障害物オブジェクトWOとの接触判定結果に応じて接地する足を選択する。例えば、乗員オブジェクトCOは、コリジョンC3〜C6の何れかと障害物オブジェクトWOとが接触している場合、障害物オブジェクトWOとの接触が確認されていない側の足を接地する足として選択する。例えば、図12Aに示すように乗物オブジェクトBOの右側近傍に障害物オブジェクトWOが配置されている地面オブジェクトGO上に乗物オブジェクトBOを停止させる際に、右側のコリジョンC4および/またはC6と障害物オブジェクトWOとが接触している場合、乗員オブジェクトCOは、左足を地面オブジェクトGOに接地させる(図12B)。つまり、側方近傍に障害物がある場所で乗物オブジェクトBOを停止させる際、乗員オブジェクトCOは、障害物がない側の足を接地させることになる。これによって、乗員オブジェクトCOが仮想世界の障害物に足を接地したり、障害物にめりこませて足を接地したりするような不自然な状況を回避することができる。
【0091】
ここで、上述したように、コリジョンC3〜C6が乗物オブジェクトBOの傾きに対して乗物オブジェクトBOと一体的に移動することに対して、コリジョンC1およびC2は、互いの位置関係が仮想世界において常に水平となるように配置されている。これは、乗物オブジェクトBOの傾きによってコリジョンC1およびC2による接触判定結果が変化することを防止とともに、仮想世界に設定されている重力方向を基準とした判定を可能とするためである。具体的には、コリジョンC1およびC2を乗物オブジェクトBOと一体的に傾ける場合、図11Aに示す乗物オブジェクトBOをさらに左に傾けるとコリジョンC1と地面オブジェクトGOとが接触するため、乗員オブジェクトCOが傾斜面の谷側に足を接地することが可能となる。また、図11Aに示す乗物オブジェクトBOをさらに右に傾けるとコリジョンC2が地面オブジェクトGOの下部に完全に埋没するような状態となる。このとき、地面オブジェクトGOの表面との接触判定を行う場合(例えば、地形ポリゴンとコリジョンとの接触判定を行う場合)、地面オブジェクトGOの下部に完全に埋没したコリジョンC2と地面オブジェクトGOとが非接触であると判定されるため、乗員オブジェクトCOが傾斜面の山側に足を接地することが不可能となる。このように、コリジョンC1およびC2を乗物オブジェクトBOと一体的に傾ける場合、乗物オブジェクトBOの傾きによってコリジョンC1およびC2による接触判定結果が様々に変化してしまうため、安定した判定結果が得られないことが考えられる。
【0092】
また、乗物オブジェクトBOの起立方向を基準として傾斜面の山側や谷側を判定する方式は、乗物オブジェクトBOの起立方向が変化する状況では難しく、仮想世界における重力方向や水平方向を基準として判定することが必要となる。したがって、乗員オブジェクトCOから見て左右方向に傾斜している傾斜面において、山側/谷側を判別しようとする場合、仮想世界における重力方向や水平方向を基準とすることが望ましい。このような傾斜面の山側や谷側を判定するためには、コリジョンC1およびC2は、互いの位置関係が仮想世界において常に水平となるように配置することが好適となる。
【0093】
次に、ゲームシステム1において行われる処理の詳細を説明する。まず、図13を参照して、処理において用いられる主なデータについて説明する。なお、図13は、ゲーム装置本体5の外部メインメモリ12および/または内部メインメモリ35(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータおよびプログラムの一例を示す図である。
【0094】
図13に示すように、メインメモリのデータ記憶領域には、操作データDa、移動速度データDb、ハンドル方向データDc、配置位置データDd、左足接地準備フラグデータDe、右足接地準備フラグデータDf、左足接地フラグデータDg、右足接地フラグデータDh、コリジョンデータDi、および画像データDj等が記憶される。なお、メインメモリには、図13に示す情報に含まれるデータの他、仮想世界に登場する乗物オブジェクトBOおよび乗員オブジェクトCO以外の他のオブジェクト(例えば、地面オブジェクトGOや障害物オブジェクトWO)等に関するデータ(位置データ等)等、処理に必要なデータが記憶される。また、メインメモリのプログラム記憶領域には、情報処理プログラムを構成する各種プログラム群Paが記憶される。
【0095】
操作データDaは、コントローラ7から送信データとして送信されてくる一連の操作情報が格納され、最新の操作データに更新される。操作データDaは、キーデータDa1および加速度データDa2等を含んでいる。キーデータDa1は、コントローラ7の操作部72に対する操作を示すデータであり、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる最新のキーデータが格納される。加速度データDa2は、コントローラ7に生じた加速度を示すデータであり、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる最新の加速度データが格納される。加速度データDa2には、加速度センサ701がX軸成分に対して検出した加速度を示すX軸方向加速度データDa2x、Y軸成分に対して検出した加速度を示すY軸方向加速度データDa2y、およびZ軸成分に対して検出した加速度を示すZ軸方向加速度データDa2zが含まれる。なお、ゲーム装置本体5に備える無線コントローラモジュール19は、コントローラ7から所定周期(例えば、1/200秒毎)に送信される操作情報に含まれるキーデータおよび加速度データを受信し、無線コントローラモジュール19に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられたキーデータおよび加速度データが処理周期である1フレーム毎(例えば、1/60秒毎)に読み出されて、メインメモリのキーデータDa1および加速度データDa2がそれぞれ更新される。
【0096】
このとき、操作情報を受信する周期と処理周期とが異なるために、上記バッファには複数の時点に受信した操作情報が記述されていることになる。後述する処理の説明においては、後述する各ステップにおいて、複数の時点に受信した操作情報のうち最新の操作情報のみを常に用いて処理して、次のステップに進める態様を用いる。
【0097】
また、後述する処理フローでは、キーデータDa1および加速度データDa2が処理周期である1フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コントローラ7からの送信周期毎にキーデータDa1および加速度データDa2を更新し、当該更新されたキーデータDa1および加速度データDa2を処理周期毎に利用する態様でもかまわない。この場合、キーデータDa1および加速度データDa2を更新する周期と、他の処理周期とが異なることになる。
【0098】
移動速度データDbは、乗物オブジェクトBOおよび乗員オブジェクトCOが仮想世界を移動する移動速度Vを示すデータが格納される。ハンドル方向データDcは、乗物オブジェクトBOのハンドル方向を示すデータが格納される。配置位置データDdは、仮想世界における乗物オブジェクトBOおよび乗員オブジェクトCOの位置を示すデータが格納される。
【0099】
左足接地準備フラグデータDeは、上記接地準備動作の際、乗員オブジェクトCOが左足を接地して乗物オブジェクトBOを停止させることが可能な状況である場合にオン(ON)に設定される左足接地準備フラグを示すデータが格納される。右足接地準備フラグデータDfは、上記接地準備動作の際、乗員オブジェクトCOが右足を接地して乗物オブジェクトBOを停止させることが可能な状況である場合にオン(ON)に設定される右足接地準備フラグを示すデータが格納される。左足接地フラグデータDgは、上記接地動作の際、乗員オブジェクトCOが左足を接地して乗物オブジェクトBOを停止させる場合にオン(ON)に設定される左足接地フラグを示すデータが格納される。右足接地フラグデータDhは、上記接地動作の際、乗員オブジェクトCOが右足を接地して乗物オブジェクトBOを停止させる場合にオン(ON)に設定される右足接地フラグを示すデータが格納される。
【0100】
コリジョンデータDiは、仮想世界におけるコリジョンC1〜C6それぞれの位置、サイズ、形状等を示すデータが格納される。
【0101】
画像データDjは、オブジェクト画像データDj1および背景画像データDj2等を含んでいる。オブジェクト画像データDj1は、仮想世界に乗物オブジェクトBO、乗員オブジェクトCO、地面オブジェクトGO、障害物オブジェクトWO等を配置して画像を生成するためのデータである。背景画像データDj2は、仮想世界に背景を配置して画像を生成するためのデータである。
【0102】
次に、図14〜図17を参照して、ゲーム装置本体5において行われる処理の詳細を説明する。なお、図14は、ゲーム装置本体5において実行される処理の一例を示すフローチャートである。図15は、図14におけるステップ47の接地準備処理の一部の一例を示すサブルーチンである。図16は、図14におけるステップ47の接地準備処理の他の部の一例を示すサブルーチンである。図17は、図14におけるステップ49の接地処理の一例を示すサブルーチンである。ここで、図14〜図17に示すフローチャートにおいては、処理のうち、ユーザの操作に応じて、乗員オブジェクトCOが乗物オブジェクトBOを仮想世界において移動/停止させる処理について主に説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図14〜図17では、CPU10が実行する各ステップを「S」と略称する。
【0103】
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU10は、ROM/RTC13に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶された情報処理プログラムがメインメモリに読み込まれ、CPU10によって当該プログラムの実行が開始される。図14〜図17に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0104】
図14において、CPU10は、処理の初期設定を行い(ステップ41)、次のステップに処理を進める。例えば、上記ステップ41における初期設定では、仮想世界の設定(例えば、地面オブジェクトGO、障害物オブジェクトWO等を仮想世界内に配置)や乗物オブジェクトBOおよび乗員オブジェクトCO等の初期位置や初期状態を設定する。なお、乗物オブジェクトBOおよび乗員オブジェクトCOが初期状態において停止状態であれば、乗員オブジェクトCOが初期状態において接地する足を初期設定して当該足に応じたフラグをオンに設定する。例えば、乗員オブジェクトCOが初期状態において左足を地面オブジェクトGOに接地する場合、上記ステップ41における初期設定では、左足接地準備フラグデータDeの左足接地準備フラグおよび左足接地フラグデータDgの左足接地フラグをそれぞれオンに設定し、右足接地準備フラグデータDfの右足接地準備フラグおよび右足接地フラグデータDhの右足接地フラグをそれぞれオフに設定する。一方、乗員オブジェクトCOが初期状態において右足を地面オブジェクトGOに接地する場合、上記ステップ41における初期設定では、右足接地準備フラグデータDfの右足接地準備フラグおよび右足接地フラグデータDhの右足接地フラグをそれぞれオンに設定し、左足接地準備フラグデータDeの左足接地準備フラグおよび左足接地フラグデータDgの左足接地フラグをそれぞれオフに設定する。また、上記ステップ41における初期設定では、以降の処理で用いる各パラメータを初期化する。例えば、CPU10は、上述したメインメモリに格納される各データDa〜DdおよびDiが示すパラメータをそれぞれ初期値に設定する。
【0105】
次に、CPU10は、コントローラ7から操作情報を示すデータを取得し(ステップ42)、次のステップに処理を進める。例えば、CPU10は、コントローラ7から受信した操作情報を取得し、当該操作情報に含まれる最新のキーデータおよび加速度データを用いてキーデータDa1および加速度データDa2を更新する。
【0106】
次に、CPU10は、乗物オブジェクトBOの移動速度Vを算出し(ステップ43)、次のステップに処理を進める。例えば、CPU10は、キーデータDa1を参照して、操作ボタン72に割り当てられている加速ボタンや減速ボタンが押下されているか否かを判断する。そして、CPU10は、移動速度データDbを参照して現時点の移動速度Vを取得して、当該判断結果および乗物オブジェクトBOが配置されている仮想世界の状況に応じて移動速度Vを加速/減速させる。例えば、CPU10は、上記加速ボタンや上記減速ボタンが何れも押下されていない場合であっても、乗物オブジェクトBOが配置されている仮想世界の状況に応じて乗物オブジェクトBOの移動速度Vを加速/減速させる。第1の例として、CPU10は、乗物オブジェクトBOが走行している路面が下り坂や上り坂の場合、当該坂の傾斜に応じて、乗物オブジェクトBOの移動速度Vを加速/減速させる。第2の例として、CPU10は、乗物オブジェクトBOおよび乗員オブジェクトCOが走行している仮想世界における仮想的な空気抵抗に応じて、乗物オブジェクトBOの移動速度Vを減速させる。第3の例として、CPU10は、乗物オブジェクトBOが走行している路面の状況に応じて、乗物オブジェクトBOの移動速度Vを減速させる。具体的には、CPU10は、乗物オブジェクトBOがアスファルトで形成された路面を走行している場合と比較して、乗物オブジェクトBOが砂浜を走行している場合の走行抵抗を大きく設定して、乗物オブジェクトBOの移動速度Vを減速させる。そして、CPU10は、算出された移動速度Vを用いて、移動速度データDbを更新する。
【0107】
次に、CPU10は、乗物オブジェクトBOのハンドルが切られている方向を示すハンドル方向を決定し(ステップ44)、次のステップに処理を進める。例えば、CPU10は、加速度データDa2を参照して、コントローラ7の姿勢(具体的には、水平方向を基準としたコントローラ7の上面の傾き)を算出し、当該姿勢に基づいて乗物オブジェクトBOのハンドル方向を決定する。具体的には、CPU10は、加速度データDa2が示す加速度を用いて、コントローラ7に生じている重力加速度の方向を推定する。例えば、コントローラ7に生じている重力加速度を推定する方法としては、コントローラ7に生じている加速度の大きさが重力加速度の大きさに近い場合に当該加速度を重力加速度として認識する方法や、コントローラ7に生じている加速度の時系列的な差分値が閾値以下(すなわち、加速度変化が所定値より小さい)場合に当該加速度を重力加速度として認識する方法や、常にコントローラ7に生じている加速度に所定の割合で追従する加速度を算出して当該追従する加速度を重力加速度として認識する方法等が考えられるが、重力加速度の方向を推定する方法は他の方法を用いてもかまわない。そして、CPU10は、推定されたコントローラ7に生じている重力加速度の方向を用いて、実空間における水平方向を基準としたコントローラ7の上面の傾き(角度)を算出する。例えば、図8に示すように、コントローラ7の上面が左方向(例えば、コントローラ7の上面が実空間における上方向に向いた状態で、X軸方向を中心としてコントローラ7の前面が下がる方向)へ傾いている場合、乗物オブジェクトBOのハンドル方向を左方向とし、水平方向に対するコントローラ7上面の傾き角度に応じて乗物オブジェクトBOのハンドル角度を算出する。また、コントローラ7の上面が右方向(例えば、コントローラ7の上面が実空間における上方向に向いた状態で、X軸方向を中心としてコントローラ7の後面が下がる方向)へ傾いている場合、乗物オブジェクトBOのハンドル方向を右方向とし、水平方向に対するコントローラ7上面の傾き角度に応じて乗物オブジェクトBOのハンドル角度を算出する。そして、CPU10は、決定されたハンドル方向を用いて、ハンドル方向データDcを更新する。
【0108】
次に、CPU10は、乗物オブジェクトBOの仮想世界における配置位置を算出し(ステップ45)、次のステップに処理を進める。例えば、CPU10は、移動速度データDb、ハンドル方向データDc、および配置位置データDdを参照して、乗物オブジェクトBOの移動速度Vおよびハンドル方向と、乗物オブジェクトBOの仮想世界における配置位置とを取得する。そして、CPU10は、取得された移動速度Vおよびハンドル方向に基づいて、取得された配置位置から乗物オブジェクトBOを仮想世界において移動させ、新たな配置位置を算出する。そして、CPU10は、算出された配置位置を用いて、配置位置データDdを更新する。
【0109】
次に、CPU10は、上記ステップ43で算出された移動速度Vが、第1の移動速度V1未満、かつ、第2の移動速度V2以上であるか否かを判断する(ステップ46)。ここで、第1の移動速度V1および第2の移動速度V2は、乗物オブジェクトBOの移動速度Vが低速移動しているか否かを判定するために予め定められた閾値であり、V2<V1で設定される。なお、乗物オブジェクトBOの移動速度Vが第1の移動速度V1以上である場合、乗物オブジェクトBOが高速移動していると判断される。また、乗物オブジェクトBOの移動速度Vが第2の移動速度V2未満である場合、乗物オブジェクトBOが停車状態であると判断される。そして、CPU10は、移動速度Vが第1の移動速度V1未満、かつ、第2の移動速度V2以上、すなわち低速移動状態である場合、次のステップ47に処理を進める。一方、CPU10は、移動速度Vが第1の移動速度V1以上、または、第2の移動速度V2未満である場合、次のステップ48に処理を進める。
【0110】
ステップ47において、CPU10は、接地準備処理を行い、次のステップ51に処理を進める。以下、図15および図16を参照して、上記ステップ47で行う接地準備処理について説明する。
【0111】
図15において、CPU10は、ハンドル方向データDcを参照して、乗物オブジェクトBOのハンドル方向が右方向か否かを判断する(ステップ81)。そして、CPU10は、乗物オブジェクトBOのハンドル方向が右方向である場合、次のステップ82に処理を進める。一方、CPU10は、乗物オブジェクトBOのハンドル方向が右方向でない場合、次のステップ102(図16)に処理を進める。
【0112】
ステップ82において、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側が、仮想空間において他のオブジェクトと接触しているか否かを判断する。例えば、CPU10は、配置位置データDdおよびコリジョンデータDiに基づいて、仮想世界における乗物オブジェクトBOの右側に設けられたコリジョンC4およびC6(図10参照)を定義し、コリジョンC4およびC6の少なくとも一方が仮想世界に配置された他のオブジェクト(例えば、障害物オブジェクトWO)と接触しているか否かによって、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側が他のオブジェクトと接触しているか否かを判断する。そして、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側が他のオブジェクトと接触していない場合、次のステップ83に処理を進める。一方、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側が他のオブジェクトと接触している場合(例えば、図12Aに示すような状況)、次のステップ87に処理を進める。
【0113】
ステップ83において、CPU10は、現時点が、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側が他のオブジェクトと接触した後の所定時間以内(例えば、120フレーム(2秒間)以内)か否かを判断する。例えば、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側と他のオブジェクトとの接触が解消されても、現時点が当該接触解消後の所定時間以内であれば上記ステップ83で肯定判定する。そして、CPU10は、現時点が上記所定時間以内でない場合、次のステップ84に処理を進める。一方、CPU10は、現時点が上記所定時間以内である場合、次のステップ87に処理を進める。ここで、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側と他のオブジェクトとの接触が解消されても、現時点が当該接触解消後の所定時間以内である場合に右足を接地可能としない理由は、例えば、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側と他のオブジェクトとの接触がごく短い時間で継続して行われた場合に、乗員オブジェクトCOの右足をペダルから離すアニメーションとペダルにのせるアニメーションとが短い時間で交互に再生されることにより、全体として不自然なアニメーションとなってしまうことを防止するためである。
【0114】
ステップ84において、CPU10は、乗員オブジェクトCOの右足が接地可能か否かを判定する。例えば、CPU10は、配置位置データDdおよびコリジョンデータDiに基づいて、仮想世界における乗物オブジェクトBOの右側に設けられたコリジョンC2(図10参照)を定義し、コリジョンC2が地面オブジェクトGOと接触しているか否かを判断する。そして、CPU10は、コリジョンC2が地面オブジェクトGOと非接触状態で地面オブジェクトGOの上方位置に配置されている場合や、接地不可属性が定義された地形オブジェクト(例えば、水面オブジェクト)とコリジョンC2とが接触している場合や、コリジョンC2が仮想世界における空中に浮いている場合(崖際の外側等)等においては、乗員オブジェクトCOの右足が接地不可能であると判断する。一方、CPU10は、接地可能属性が定義された地面オブジェクトGOとコリジョンC2とが接触している場合(例えば、図11Aに示すような状況)、乗員オブジェクトCOの右足が接地可能であると判断する。そして、CPU10は、乗員オブジェクトCOの右足が接地可能である場合、次のステップ85に処理を進める。一方、CPU10は、乗員オブジェクトCOの右足が接地不可能である場合、次のステップ87に処理を進める。
【0115】
ステップ85において、CPU10は、乗物オブジェクトBOを停車させる際に乗員オブジェクトCOの右足が接地可能であると判断して、右足接地準備フラグをオンに設定し右足接地準備フラグデータDfを更新する。そして、CPU10は、左足接地準備フラグをオフに設定して左足接地準備フラグデータDeを更新して(ステップ86)、当該サブルーチンによる処理を終了する。
【0116】
一方、CPU10は、乗物オブジェクトBOを停車させる際に乗員オブジェクトCOの右足が接地不可能であると判断した場合(ステップ82でYes、ステップ83でYes、またはステップ84でNo)、ステップ87において、右足接地準備フラグをオフに設定し右足接地準備フラグデータDfを更新し、次のステップに処理を進める。
【0117】
次に、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの左側が、仮想空間において他のオブジェクトと接触しているか否かを判断する(ステップ88)。例えば、CPU10は、配置位置データDdおよびコリジョンデータDiに基づいて、仮想世界における乗物オブジェクトBOの左側に設けられたコリジョンC3およびC5(図10参照)を定義し、コリジョンC3およびC5の少なくとも一方が仮想世界に配置された他のオブジェクト(例えば、障害物オブジェクトWO)と接触しているか否かによって、乗物オブジェクトBOおよび/または乗員オブジェクトCOの左側が他のオブジェクトと接触しているか否かを判断する。そして、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの左側が他のオブジェクトと接触していない場合、次のステップ89に処理を進める。一方、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの左側が他のオブジェクトと接触している場合、次のステップ92に処理を進める。
【0118】
ステップ89において、CPU10は、現時点が、乗物オブジェクトBOおよび/または乗員オブジェクトCOの左側が他のオブジェクトと接触した後の所定時間以内(例えば、120フレーム(2秒間)以内)か否かを判断する。そして、CPU10は、現時点が上記所定時間以内でない場合、次のステップ90に処理を進める。一方、CPU10は、現時点が上記所定時間以内である場合、次のステップ92に処理を進める。
【0119】
ステップ90において、CPU10は、乗員オブジェクトCOの左足が接地可能か否かを判定する。例えば、CPU10は、配置位置データDdおよびコリジョンデータDiに基づいて、仮想世界における乗物オブジェクトBOの左側に設けられたコリジョンC1(図10参照)を定義し、コリジョンC1が地面オブジェクトGOと接触しているか否かを判断する。そして、CPU10は、コリジョンC1が地面オブジェクトGOと非接触状態で地面オブジェクトGOの上方位置に配置されている場合(例えば、図11Aに示すような状況)や、接地不可属性が定義された地形オブジェクトとコリジョンC1とが接触している場合や、コリジョンC1が仮想世界における空中に浮いている場合等においては、乗員オブジェクトCOの左足が接地不可能であると判断する。一方、CPU10は、接地可能属性が定義された地面オブジェクトGOとコリジョンC1とが接触している場合、乗員オブジェクトCOの左足が接地可能であると判断する。そして、CPU10は、乗員オブジェクトCOの左足が接地可能である場合、次のステップ91に処理を進める。一方、CPU10は、乗員オブジェクトCOの左足が接地不可能である場合、次のステップ92に処理を進める。
【0120】
ステップ91において、CPU10は、乗物オブジェクトBOを停車させる際に乗員オブジェクトCOの左足が接地可能であると判断して、左足接地準備フラグをオンに設定し左足接地準備フラグデータDeを更新して、当該サブルーチンによる処理を終了する。
【0121】
一方、CPU10は、乗物オブジェクトBOを停車させる際に乗員オブジェクトCOの左足が接地不可能であると判断した場合(ステップ88でYes、ステップ89でYes、またはステップ90でNo)、ステップ92において、左足接地準備フラグをオフに設定し左足接地準備フラグデータDeを更新し、当該サブルーチンによる処理を終了する。
【0122】
上記ステップ81において、乗物オブジェクトBOのハンドル方向が左方向でないと判断された場合、CPU10は、ステップ102(図16)に処理を進める。ステップ102において、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの左側が、仮想空間において他のオブジェクトと接触しているか否かを判断する。そして、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの左側が他のオブジェクトと接触していない場合、次のステップ103に処理を進める。一方、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの左側が他のオブジェクトと接触している場合、次のステップ107に処理を進める。なお、ステップ102における判断方法は、上記ステップ88と同様であるため詳細な説明を省略する。
【0123】
ステップ103において、CPU10は、現時点が、乗物オブジェクトBOおよび/または乗員オブジェクトCOの左側が他のオブジェクトと接触した後の所定時間以内か否かを判断する。そして、CPU10は、現時点が上記所定時間以内でない場合、次のステップ104に処理を進める。一方、CPU10は、現時点が上記所定時間以内である場合、次のステップ107に処理を進める。なお、ステップ103における判断方法は、上記ステップ89と同様であるため詳細な説明を省略する。
【0124】
ステップ104において、CPU10は、乗員オブジェクトCOの左足が接地可能か否かを判定する。そして、CPU10は、乗員オブジェクトCOの左足が接地可能である場合、次のステップ105に処理を進める。一方、CPU10は、乗員オブジェクトCOの左足が接地不可能である場合、次のステップ107に処理を進める。なお、ステップ104における判断方法は、上記ステップ90と同様であるため詳細な説明を省略する。
【0125】
ステップ105において、CPU10は、乗物オブジェクトBOを停車させる際に乗員オブジェクトCOの左足が接地可能であると判断して、左足接地準備フラグをオンに設定し左足接地準備フラグデータDeを更新する。そして、CPU10は、右足接地準備フラグをオフに設定して右足接地準備フラグデータDfを更新して(ステップ106)、当該サブルーチンによる処理を終了する。
【0126】
一方、CPU10は、乗物オブジェクトBOを停車させる際に乗員オブジェクトCOの左足が接地不可能であると判断した場合(ステップ102でYes、ステップ103でYes、またはステップ104でNo)、ステップ107において、左足接地準備フラグをオフに設定し左足接地準備フラグデータDeを更新し、次のステップに処理を進める。
【0127】
次に、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側が、仮想空間において他のオブジェクトと接触しているか否かを判断する(ステップ108)。そして、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側が他のオブジェクトと接触していない場合、次のステップ109に処理を進める。一方、CPU10は、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側が他のオブジェクトと接触している場合、次のステップ112に処理を進める。なお、ステップ108における判断方法は、上記ステップ82と同様であるため詳細な説明を省略する。
【0128】
ステップ109において、CPU10は、現時点が、乗物オブジェクトBOおよび/または乗員オブジェクトCOの右側が他のオブジェクトと接触した後の所定時間以内か否かを判断する。そして、CPU10は、現時点が上記所定時間以内でない場合、次のステップ110に処理を進める。一方、CPU10は、現時点が上記所定時間以内である場合、次のステップ112に処理を進める。なお、ステップ109における判断方法は、上記ステップ83と同様であるため詳細な説明を省略する。
【0129】
ステップ110において、CPU10は、乗員オブジェクトCOの右足が接地可能か否かを判定する。そして、CPU10は、乗員オブジェクトCOの右足が接地可能である場合、次のステップ111に処理を進める。一方、CPU10は、乗員オブジェクトCOの右足が接地不可能である場合、次のステップ112に処理を進める。なお、ステップ110における判断方法は、上記ステップ84と同様であるため詳細な説明を省略する。
【0130】
ステップ111において、CPU10は、乗物オブジェクトBOを停車させる際に乗員オブジェクトCOの右足が接地可能であると判断して、右足接地準備フラグをオンに設定し右足接地準備フラグデータDfを更新して、当該サブルーチンによる処理を終了する。
【0131】
一方、CPU10は、乗物オブジェクトBOを停車させる際に乗員オブジェクトCOの右足が接地不可能であると判断した場合(ステップ108でYes、ステップ109でYes、またはステップ110でNo)、ステップ112において、右足接地準備フラグをオフに設定し右足接地準備フラグデータDfを更新し、当該サブルーチンによる処理を終了する。
【0132】
図14に戻り、CPU10は、上記ステップ46で否定判定された場合、上記ステップ43で算出された移動速度Vが、第2の移動速度V2未満であるか否かを判断する(ステップ48)。そして、CPU10は、移動速度Vが第2の移動速度V2未満、すなわち乗物オブジェクトBOが停車状態である場合、次のステップ49に処理を進める。一方、CPU10は、移動速度Vが第1の移動速度V1以上、すなわち乗物オブジェクトBOが高速移動状態である場合、次のステップ50に処理を進める。
【0133】
ステップ49において、CPU10は、接地処理を行い、次のステップ51に処理を進める。以下、図17を参照して、上記ステップ49で行う接地処理について説明する。
【0134】
図17において、CPU10は、右足接地準備フラグデータDfを参照し、右足接地準備フラグがオンに設定されているか否かを判断する(ステップ121)。そして、CPU10は、右足接地準備フラグがオンに設定されている場合、次のステップ122に処理を進める。一方、CPU10は、右足接地準備フラグがオフに設定されている場合、次のステップ124に処理を進める。
【0135】
ステップ122において、CPU10は、右足接地フラグをオンに設定し右足接地フラグデータDhを更新する。そして、CPU10は、左足接地フラグをオフに設定し左足接地フラグデータDgを更新して(ステップ123)、当該サブルーチンによる処理を終了する。
【0136】
一方、ステップ124において、CPU10は、左足接地準備フラグデータDeを参照し、左足接地準備フラグがオンに設定されているか否かを判断する。そして、CPU10は、左足接地準備フラグがオンに設定されている場合、次のステップ125に処理を進める。一方、CPU10は、左足接地準備フラグがオフに設定されている場合、次のステップ127に処理を進める。
【0137】
ステップ125おいて、CPU10は、左足接地フラグをオンに設定し左足接地フラグデータDgを更新する。そして、CPU10は、右足接地フラグをオフに設定し右足接地フラグデータDhを更新して(ステップ126)、当該サブルーチンによる処理を終了する。
【0138】
一方、ステップ127において、CPU10は、左足接地フラグおよび右足接地フラグをそれぞれオフに設定し左足接地フラグデータDgおよび右足接地フラグデータDhを更新して、当該サブルーチンによる処理を終了する。
【0139】
図14に戻り、CPU10は、上記ステップ48で否定判定された場合、すなわち乗物オブジェクトBOが高速移動状態である場合、左足接地準備フラグ、右足接地準備フラグ、左足接地フラグ、および右足接地フラグを全てオフに設定し、左足接地準備フラグデータDe、右足接地準備フラグデータDf、左足接地フラグデータDg、および右足接地フラグデータDhをそれぞれ更新して(ステップ50)、次のステップ51に処理を進める。
【0140】
ステップ51において、CPU10は、上記ステップ43〜ステップ50において設定された乗物オブジェクトBOおよび乗員オブジェクトCOの状態に基づいて、乗物オブジェクトBOおよび乗員オブジェクトCOを仮想世界に配置してモニタ2に表示する処理を行い、次のステップに処理を進める。例えば、CPU10は、移動速度データDbが示す移動速度V、ハンドル方向データDcが示すハンドル方向、および配置位置データDdが示す配置位置に基づいて、仮想世界に乗物オブジェクトBOおよび乗員オブジェクトCOを配置して仮想世界に乗物オブジェクトBOおよび乗員オブジェクトCOを含む仮想世界をモニタ2に表示する。
【0141】
なお、上記ステップ51において、CPU10は、乗物オブジェクトBOが低速移動状態(上記ステップ46でYes)または停車状態(上記ステップ48でYes)である場合、左足接地準備フラグデータDe、右足接地準備フラグデータDf、左足接地フラグデータDg、および右足接地フラグデータDhがそれぞれ示すフラグ設定に応じて、乗員オブジェクトCOが足を接地する状態を選択して、モニタ2に表示する。第1の例として、CPU10は、乗物オブジェクトBOが低速移動状態であり、かつ、右足接地準備フラグがオンに設定されている場合、乗員オブジェクトCOの右足を自転車(乗物オブジェクトBO)のペダルから離し、右足を地面オブジェクトGOに接地させて乗物オブジェクトBOを停止させる前段階である接地準備状態(例えば、図9Aに示すような状態)となるように乗物オブジェクトBOおよび乗員オブジェクトCOを表示する。第2の例として、CPU10は、乗物オブジェクトBOが低速移動状態であり、かつ、左足接地準備フラグがオンに設定されている場合、乗員オブジェクトCOの左足を自転車のペダルから離し、左足を地面オブジェクトGOに接地させて乗物オブジェクトBOを停止させる前段階である接地準備動作状態となるように乗物オブジェクトBOおよび乗員オブジェクトCOを表示する。第3の例として、CPU10は、乗物オブジェクトBOが停止状態であり、かつ、右足接地フラグがオンに設定されている場合、乗員オブジェクトCOの右足を地面オブジェクトGOに接地させて乗物オブジェクトBOを停止させる接地状態(例えば、図11Bに示すような状態)となるように乗物オブジェクトBOおよび乗員オブジェクトCOを表示する。第4の例として、CPU10は、乗物オブジェクトBOが停止状態であり、かつ、左足接地フラグがオンに設定されている場合、乗員オブジェクトCOの左足を地面オブジェクトGOに接地させて乗物オブジェクトBOを停止させる接地状態(例えば、図12Bに示すような状態)となるように乗物オブジェクトBOおよび乗員オブジェクトCOを表示する。
【0142】
なお、乗物オブジェクトBOおよび乗員オブジェクトCOの両側が接地不可状態である場合、乗物オブジェクトBOが低速移動状態または停車状態であっても全てのフラグがオフとなることがある。例えば、乗物オブジェクトBOおよび乗員オブジェクトCOにおける左右の一方側近傍に障害物オブジェクトWOが配置され、他方側近傍が崖際となっているような仮想世界では、乗物オブジェクトBOおよび乗員オブジェクトCOの両側が接地不可状態となる。このような場合、CPU10は、乗物オブジェクトBOが低速移動状態または停車状態であっても、乗物オブジェクトBOおよび乗員オブジェクトCOを上述した接地準備動作状態や接地状態にせずにモニタ2に表示する。例えば、CPU10は、乗物オブジェクトBOおよび乗員オブジェクトCOの両側が接地不可状態である場合、自転車(乗物オブジェクトBO)のペダル上に乗員オブジェクトCOの両足を載せ、当該自転車を仮想世界において起立させた状態でモニタ2に表示する。
【0143】
次に、CPU10は、処理を終了するか否かを判断する(ステップ52)。処理を終了する条件としては、例えば、処理を終了させる条件が満たされたことや、ユーザが処理を終了する操作を行ったこと等がある。CPU10は、処理を終了しない場合に上記ステップ42に戻って処理を繰り返し、処理を終了する場合に当該フローチャートによる処理を終了する。
【0144】
このように、上述した処理によれば、乗物オブジェクトBOを動作させる乗員オブジェクトCOを不自然なく表現することができるため、乗員オブジェクトCOの表現における違和感を低減させることができる。
【0145】
なお、上述した実施形態では、乗員オブジェクトCOが接地する足を決定する際に用いる接触判定領域(コリジョン)の一例として、6つのコリジョンC1〜C6を用いたが、これらの接触判定領域は単なる一例であり、他の態様の接触判定領域を用いてもかまわない。例えば、乗物オブジェクトBOおよび/または乗員オブジェクトCOに7つ以上の接触判定領域を設定してもいいし、5つ以下の接触判定領域を設定してもかまわない。また、上述した実施形態では、地面オブジェクトGOの状況を判定するために乗員オブジェクトCOの足下にコリジョンC1およびC2を設定し、乗物オブジェクトBOの側方近傍における障害物の有無を判定するために乗物オブジェクトBOの両サイドにコリジョンC3〜C6を設定したが、何れか一方の判定のみを行う場合は何れか他方のコリジョンCが不要となることは言うまでもない。具体的には、乗員オブジェクトCOが接地する足を決定する際に地面オブジェクトGOの状況のみを判定する場合、コリジョンC3〜C6を設けなくてもかまわない。また、乗員オブジェクトCOが接地する足を決定する際に乗物オブジェクトBOの側方近傍における障害物の有無のみを判定する場合、コリジョンC1およびC2を設けなくてもかまわない。さらに、乗物オブジェクトBOの形状に応じて、側方近傍における障害物の有無を判定するためのコリジョンCの位置や数を変化させてもかまわない。例えば、図10に示すような乗物オブジェクトBOの形状の場合、ハンドルの両端に設けられたコリジョンC3およびC4のみで側方近傍における障害物の有無を判定してもかまわない。また、乗員オブジェクトCOが接地する足を決定する際に用いる接触判定領域は、例えば不可視の円柱または球形状であるが、これらの形状に限定されない。例えば、3次元仮想世界で乗物オブジェクトBOおよび乗員オブジェクトCOを移動させる場合は、様々な立体形状の接触判定領域を用いることができる。
【0146】
また、上述した説明では、接触判定結果に基づいて、3次元の仮想空間における乗員オブジェクトCOが接地する足を決定する態様を用いたが、本発明は、2次元の仮想世界における乗員オブジェクトCOが接地する足を決定する際にも用いることができる。2次元仮想世界で乗物オブジェクトBOおよび乗員オブジェクトCOを移動させる場合は、様々な図形(例えば、円)の接触判定領域を用いることができることは言うまでもない。
【0147】
また、上述した説明では、3軸方向の加速度を検出する加速度センサ701を用いた処理を用いたが、少なくとも1軸方向の加速度を検出する加速度センサがコントローラ7に設けられていればよい。例えば、Z軸方向の加速度を検出可能な加速度センサ701の場合(図8参照)には、Z軸方向に1G(重力加速度)が作用しているか否かによって、コントローラ7が水平であるか否かを知ることができる。また、Z軸方向に作用している加速度の大きさによって、コントローラ7が水平方向に対してどの程度傾いているのかも知ることができる。
【0148】
また、上述した説明では、操作ボタン72に割り当てられている加速ボタンや減速ボタンを押下することによって、乗物オブジェクトBOの移動速度Vが変化する例を用いたが、他の操作に応じて乗物オブジェクトBOの移動速度Vを変化させてもかまわない。例えば、ユーザによって荷重が加えられる荷重センサを備えた入力装置(荷重コントローラ)が備えられたゲームシステムの場合、ユーザが当該入力装置上に乗って前後左右に動いたり、当該入力装置上で足踏みしたり、当該入力装置上に昇降したりすることによる荷重変化に応じて、移動速度Vを変化させてもかまわない。また、ユーザがコントローラ7を振り動かすことによって生じる加速度の変化を加速度センサ701が検出し、当該加速度の変化に応じて移動速度Vを変化させてもかまわない。
【0149】
また、上述した説明では、コントローラ7の姿勢(傾き角度)に応じて乗物オブジェクトBOのハンドル角度を変化させる例を用いたが、他の操作に応じて乗物オブジェクトBOのハンドル角度を変化させてもかまわない。例えば、操作ボタン72に割り当てられた方向指示ボタン(例えば、十字キー72a)を押下することに応じて、乗物オブジェクトBOのハンドル角度を変化させてもかまわない。
【0150】
また、本発明は、ゲーム装置3のユーザにコントローラ7等の入力装置の操作を促すことによって、当該ユーザの運動を支援する運動支援プログラムを実行する際に用いることができるが、運動支援以外の情報処理で用いてもかまわない。例えば、本発明は、コントローラ7等の入力装置の操作に応じて、仮想ゲーム世界中のオブジェクトを操作するようなゲーム等に用いてもかまわない。
【0151】
また、上述した説明では、自転車に乗車して仮想世界内を走行する乗員を、ユーザがコントローラ7を用いて操作する例を用いたが、他のオブジェクトを操作する場合に本発明を適用してもかまわない。例えば、バイク等の他の二輪車に乗車して仮想世界内を走行する乗員を、ユーザがコントローラ7を用いて操作してもかまわない。この場合も、バイク等の他の二輪車が停車する際に乗員が接地する足を、本発明を用いて選択することが可能となる。
【0152】
また、上述した説明では、据置型のゲーム装置に本願発明を適用した例を説明したが、本発明は、一般的なパーソナルコンピュータ等の情報処理装置にも適用することができる。さらに、本発明は、複数の情報処理装置から構成される情報処理システムにも適用することができる。この場合、それぞれの情報処理装置は、本発明の一部の構成を有することになり、情報処理システムが、本発明の全部の構成を有することになる。
【0153】
また、上述した説明では、コントローラ7とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
【0154】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した処理で用いられる係数、閾値、数式、処理順序等は、単なる一例に過ぎず他の値や数式や処理順序であっても、本発明を実現できることは言うまでもない。
【0155】
また、本発明の情報処理プログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、情報処理プログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、情報処理プログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【0156】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
【産業上の利用可能性】
【0157】
本発明に係る情報処理プログラムおよび情報処理装置は、乗員オブジェクトを不自然なく表現することにより、乗員オブジェクトの表現における違和感を低減させることができ、ユーザに入力装置を操作させることによってユーザの運動を支援する運動支援装置や運動支援プログラム等として有用であり、さらにユーザの操作に応じたゲーム等を実行するゲーム装置やゲームプログラム等としても有用である。
【符号の説明】
【0158】
1…ゲームシステム
2…モニタ
2a、706…スピーカ
3…ゲーム装置
4…光ディスク
5…ゲーム装置本体
10…CPU
11…システムLSI
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
15…AV−IC
16…AVコネクタ
17…フラッシュメモリ
18…無線通信モジュール
19…無線コントローラモジュール
20…拡張コネクタ
21…外部メモリカード用コネクタ
22、23…アンテナ
24…電源ボタン
25…リセットボタン
26…イジェクトボタン
31…入出力プロセッサ
32…GPU
33…DSP
34…VRAM
35…内部メインメモリ
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
707…サウンドIC
708…アンプ
8…マーカ

【特許請求の範囲】
【請求項1】
表示装置に仮想世界を表示する情報処理装置のコンピュータで実行される情報処理プログラムであって、
前記コンピュータを、
仮想世界に配置された乗物オブジェクトと当該乗物オブジェクトに乗る乗員オブジェクトとを含む移動オブジェクトを、ユーザの操作に応じて移動させる移動手段と、
前記移動オブジェクトに少なくとも1つの接触判定領域を設定する接触判定領域設定手段と、
前記接触判定領域を用いて、仮想世界内における接触判定を行う接触判定手段、と、
前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を当該接地オブジェクトに接地させる接地動作制御手段と、
前記移動オブジェクトを前記表示装置に表示する表示制御手段として機能させる、情報処理プログラム。
【請求項2】
前記接地動作制御手段は、前記接触判定手段の判定結果に応じて前記乗員オブジェクトが前記接地オブジェクトに接地する足を選択し、前記移動オブジェクトが停止する場合に当該選択された足を前記接地オブジェクトに接地させる、請求項1に記載の情報処理プログラム。
【請求項3】
前記接触判定領域設定手段は、前記移動オブジェクトに第1接触判定領域を設定し、
前記接触判定手段は、前記接地オブジェクトと前記第1接触判定領域とが接触するか否かを判定し、
前記接地動作制御手段は、前記接触判定手段による前記第1接触判定領域を用いた判定結果が肯定である場合に前記接地オブジェクトに接地する足を選択して当該選択された足を前記接地オブジェクトに接地させる、請求項1に記載の情報処理プログラム。
【請求項4】
前記接触判定領域設定手段は、前記移動オブジェクトに複数の前記第1接触判定領域を設定し、
前記接地動作制御手段は、
前記移動オブジェクトに設定された前記第1接触判定領域の1つと前記接地オブジェクトとが接触していると前記接触判定手段が判定した場合、当該第1接触判定領域の1つに対応する前記乗員オブジェクトの足を当該接地オブジェクトに接地させ、
前記移動オブジェクトに設定された前記第1接触判定領域の1つ以外の領域と前記接地オブジェクトとが接触していると前記接触判定手段が判定した場合、当該第1接触判定領域の1つ以外の領域に対応する前記乗員オブジェクトの足を当該接地オブジェクトに接地させる、請求項3に記載の情報処理プログラム。
【請求項5】
前記接触判定領域設定手段は、前記移動オブジェクトの左右にそれぞれ少なくとも1つの前記第1接触判定領域を設定し、
前記接地動作制御手段は、
前記移動オブジェクトの左側に設定された前記第1接触判定領域と前記接地オブジェクトとが接触していると前記接触判定手段が判定した場合、前記乗員オブジェクトの左足を当該接地オブジェクトに接地させ、
前記移動オブジェクトの右側に設定された前記第1接触判定領域と前記接地オブジェクトとが接触していると前記接触判定手段が判定した場合、前記乗員オブジェクトの右足を当該接地オブジェクトに接地させる、請求項3に記載の情報処理プログラム。
【請求項6】
前記接触判定手段は、仮想世界における前記移動オブジェクトの状態に応じて、前記第1接触判定領域から前記左右の一方側の第1接触判定領域を選択して、前記接地オブジェクトと当該一方側の第1接触判定領域とが接触するか否かを判定する、請求項5に記載の情報処理プログラム。
【請求項7】
前記接触判定手段は、前記接地オブジェクトと前記選択された前記一方側の第1接触判定領域とが接触していない場合、前記接地オブジェクトと前記左右の他方側の第1接触判定領域とが接触するか否かを判定する、請求項6に記載の情報処理プログラム。
【請求項8】
前記接触判定領域設定手段は、前記移動オブジェクトの左右下方位置にそれぞれ互いの位置関係が仮想世界に対して常に水平となるように前記第1接触判定領域を設定する、請求項3に記載の情報処理プログラム。
【請求項9】
前記接触判定領域設定手段は、前記移動オブジェクトに複数の第1接触判定領域を設定し、
前記接触判定手段は、仮想世界における前記移動オブジェクトの状態に応じて、前記複数の第1接触判定領域から1つの第1接触判定領域を選択して、前記接地オブジェクトと当該選択された第1接触判定領域とが接触するか否かを判定する、請求項3に記載の情報処理プログラム。
【請求項10】
前記移動手段は、ユーザの操作に応じて、前記移動オブジェクトの移動方向を制御する移動方向制御手段を含み、
前記接触判定手段は、前記移動オブジェクトの移動方向に基づいて、前記複数の第1接触判定領域から接触判定に用いる第1接触判定領域を選択する、請求項6または9に記載の情報処理プログラム。
【請求項11】
前記地面オブジェクトは、前記乗員オブジェクトの足の接地を許可するか否かを示す属性を含み、
前記接触判定手段は、前記第1接触判定領域が前記乗員オブジェクトの足の接地を許可する属性を有する接地オブジェクトと接触するか否かを判定し、
前記接地動作制御手段は、前記第1接触判定領域が前記乗員オブジェクトの足の接地を許可する属性を有する接地オブジェクトと接触すると前記接触判定手段が判定した場合に前記接地オブジェクトに接地する足を選択して当該選択された足を前記接地オブジェクトに接地させる、請求項3に記載の情報処理プログラム。
【請求項12】
前記接触判定手段は、仮想世界に立設された可視または不可視の障害物オブジェクトと第2接触判定領域とが接触するか否かを判定し、
前記接地動作制御手段は、前記接触判定手段による前記第2接触判定領域を用いた判定結果が否定である場合に前記接地オブジェクトに接地する足を選択して当該選択された足を前記接地オブジェクトに接地させる、請求項1または3に記載の情報処理プログラム。
【請求項13】
前記接触判定領域設定手段は、前記移動オブジェクトの左右側部にそれぞれ少なくとも1つの前記第2接触判定領域を設定し、
前記接地動作制御手段は、
前記移動オブジェクトの左側に設定された前記第2接触判定領域と前記障害物オブジェクトとが接触していると前記接触判定手段が判定した場合、前記乗員オブジェクトの右足を前記接地オブジェクトに接地させ、
前記移動オブジェクトの右側に設定された前記第2接触判定領域と前記障害物オブジェクトとが接触していると前記接触判定手段が判定した場合、前記乗員オブジェクトの左足を前記接地オブジェクトに接地させる、請求項12に記載の情報処理プログラム。
【請求項14】
前記移動オブジェクトの仮想世界における移動速度を算出する移動速度算出手段と、
前記移動速度が第1閾値以上であるか否かを判断する閾値判定手段として、さらに前記コンピュータを機能させ、
前記接地動作制御手段は、前記移動速度が前記第1閾値未満の場合に前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択する、請求項1、3、または12に記載の情報処理プログラム。
【請求項15】
前記閾値判定手段は、前記移動速度が、前記第1閾値より小さい第2閾値未満か否かをさらに判断し、
前記接地動作制御手段は、
前記移動速度が前記第2閾値以上、かつ、前記第1閾値未満である場合に前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を前記接地オブジェクトに接地させる準備動作を当該乗員オブジェクトに行わせ、
前記移動速度が前記第2閾値未満の場合に前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を地面に接地させる、請求項14に記載の情報処理プログラム。
【請求項16】
表示装置に仮想世界を表示する情報処理装置であって、
仮想世界に配置された乗物オブジェクトと当該乗物オブジェクトに乗る乗員オブジェクトとを含む移動オブジェクトを、ユーザの操作に応じて移動させる移動手段と、
前記移動オブジェクトに少なくとも1つの接触判定領域を設定する接触判定領域設定手段と、
前記接触判定領域を用いて、仮想世界内における接触判定を行う接触判定手段と、
前記接触判定手段の判定結果に応じて前記乗員オブジェクトが仮想世界内に配置された接地オブジェクトに接地する足を選択し、当該選択された足を前記接地オブジェクトに接地させる接地動作制御手段と、
前記移動オブジェクトを前記表示装置に表示する表示制御手段とを備える、情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9A】
image rotate

【図9B】
image rotate

【図10】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図12A】
image rotate

【図12B】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2011−70598(P2011−70598A)
【公開日】平成23年4月7日(2011.4.7)
【国際特許分類】
【出願番号】特願2009−223443(P2009−223443)
【出願日】平成21年9月28日(2009.9.28)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】