(57)【要約】【課題】臨場感のある操作を実現し得るゲーム装置及びコンピュータプログラムを提供する。【解決手段】プレイヤを支持する支持部７８の右前部に設けられる第１の荷重センサ８２ａの出力に基づく第１の荷重データと、支持部の右後部に設けられる第２の荷重センサ８２ｂの出力に基づく第２の荷重データとの差に基づいて、第１の値を算出し、支持部の左前部に設けられる第３の荷重センサ８２ｃの出力に基づく第３の荷重データと、支持部の左後部に設けられる第４の荷重センサ８２ｄの出力に基づく第４の荷重データとの差に基づいて、第２の値を算出し、算出した第１の値と第２の値とに基づいて、表示画面上に表示されるオブジェクトの挙動を決定する。【選択図】図２
2011019817.tif 000002
【特許請求の範囲】
【請求項１】
プレイヤを支持する支持部と、前記支持部の右前部に設けられ、前記支持部からの荷重を検出する第１の荷重センサと、前記支持部の右後部に設けられ、前記支持部からの荷重を検出する第２の荷重センサと、前記支持部の左前部に設けられ、前記支持部からの荷重を検出する第３の荷重センサと、前記支持部の左後部に設けられ、前記支持部からの荷重を検出する第４の荷重センサとを有するコントローラを用いたゲーム装置としてコンピュータを機能させるためのコンピュータプログラムであって、
前記コンピュータを、前記第１の荷重センサの出力に基づく第１の荷重データと前記第２の荷重センサの出力に基づく第２の荷重データとの差に基づいて第１の値を算出し、前記第３の荷重センサの出力に基づく第３の荷重データと前記第４の荷重センサの出力に基づく第４の荷重データとの差に基づいて第２の値を算出し、前記第１の値と前記第２の値とに基づいて、表示画面上に表示されるオブジェクトの挙動を決定する挙動決定手段
として機能させるためのコンピュータプログラム。
【請求項２】
請求項１記載のコンピュータプログラムにおいて、
前記第１の値と前記第２の値との差に基づいて、前記オブジェクトの向きを変化させる
ことを特徴とするコンピュータプログラム。
【請求項３】
請求項１又は２記載のコンピュータプログラムにおいて、
前記第１の値と前記第２の値との和に基づいて、前記オブジェクトの速度を決定する
ことを特徴とするコンピュータプログラム。
【請求項４】
請求項１乃至３のいずれか１項に記載のコンピュータプログラムにおいて、
前記第１の値は、前記第２の荷重データから前記第１の荷重データを減算した値であり、
前記第２の値は、前記第４の荷重データから前記第３の荷重データを減算した値であり、
前記挙動決定手段は、前記第１の値が正であり、且つ、前記第２の値が負である場合には、前記第１の値を所定の補正係数により補正し、補正された前記第１の値と補正されていない前記第２の値との差に基づいて前記オブジェクトの向きを変化させ、
前記挙動決定手段は、前記第１の値が負であり、且つ、前記第２の値が正である場合には、前記第２の値を前記所定の補正係数により補正し、補正されていない前記第１の値と補正された前記第２の値との差に基づいて前記オブジェクトの向きを変化させる
ことを特徴とするコンピュータプログラム。
【請求項５】
請求項１乃至３のいずれか１項に記載のコンピュータプログラムにおいて、
前記第１の値は、前記第２の荷重データから前記第１の荷重データを減算した値であり、
前記第２の値は、前記第４の荷重データから前記第３の荷重データを減算した値であり、
前記挙動決定手段は、前記第１の値が正であり、且つ、前記第２の値が負である場合には、前記第１の値を所定の補正係数により補正し、補正された前記第１の値と補正されていない前記第２の値との和に基づいて前記オブジェクトの速度を決定し、
前記挙動決定手段は、前記第１の値が負であり、且つ、前記第２の値が正である場合には、前記第２の値を前記所定の補正係数により補正し、補正されていない前記第１の値と補正された前記第２の値との和に基づいて前記オブジェクトの速度を決定する
ことを特徴とするコンピュータプログラム。
【請求項６】
請求項１乃至５のいずれか１項に記載のコンピュータプログラムにおいて、
前記第１の値と前記第２の値との和の符号に基づいて、前記オブジェクトを前進又は後退させる
ことを特徴とするコンピュータプログラム。
【請求項７】
請求項１乃至６のいずれか１項に記載のコンピュータプログラムを記録したコンピュータ読み取り可能な記憶媒体。
【請求項８】
プレイヤを支持する支持部と、前記支持部の右前部に設けられ、前記支持部からの荷重を検出する第１の荷重センサと、前記支持部の右後部に設けられ、前記支持部からの荷重を検出する第２の荷重センサと、前記支持部の左前部に設けられ、前記支持部からの荷重を検出する第３の荷重センサと、前記支持部の左後部に設けられ、前記支持部からの荷重を検出する第４の荷重センサとを有するコントローラを用いたゲーム装置であって、
前記第１の荷重センサの出力に基づく第１の荷重データと前記第２の荷重センサの出力に基づく第２の荷重データとの差に基づいて第１の値を算出し、前記第３の荷重センサの出力に基づく第３の荷重データと前記第４の荷重センサの出力に基づく第４の荷重データとの差に基づいて第２の値を算出し、前記第１の値と前記第２の値とに基づいて、表示画面上に表示されるオブジェクトの挙動を決定する挙動決定手段を有する
ことを特徴とするゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置及びコンピュータプログラムに係り、特に、コントローラを用いたゲーム装置及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近時、複数の荷重センサが設けられたコントローラ上にプレイヤが乗り、コントローラ上においてプレイヤが荷重のかけ方を変化させることにより、ゲームの入力操作を行う技術が提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２６４１９５号公報
【特許文献２】特開２００８−１１９２１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、かかるコントローラを用いた場合には、必ずしも臨場感のある操作を実現し得ない場合があった。
【０００５】
本発明の目的は、臨場感のある操作を実現し得るゲーム装置及びコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一観点によれば、プレイヤを支持する支持部と、前記支持部の右前部に設けられ、前記支持部からの荷重を検出する第１の荷重センサと、前記支持部の右後部に設けられ、前記支持部からの荷重を検出する第２の荷重センサと、前記支持部の左前部に設けられ、前記支持部からの荷重を検出する第３の荷重センサと、前記支持部の左後部に設けられ、前記支持部からの荷重を検出する第４の荷重センサとを有するコントローラを用いたゲーム装置としてコンピュータを機能させるためのコンピュータプログラムであって、前記コンピュータを、前記第１の荷重センサの出力に基づく第１の荷重データと前記第２の荷重センサの出力に基づく第２の荷重データとの差に基づいて第１の値を算出し、前記第３の荷重センサの出力に基づく第３の荷重データと前記第４の荷重センサの出力に基づく第４の荷重データとの差に基づいて第２の値を算出し、前記第１の値と前記第２の値とに基づいて、表示画面上に表示されるオブジェクトの挙動を決定する挙動決定手段として機能させるためのコンピュータプログラムが提供される。
【０００７】
また、本発明の他の観点によれば、プレイヤを支持する支持部と、前記支持部の右前部に設けられ、前記支持部からの荷重を検出する第１の荷重センサと、前記支持部の右後部に設けられ、前記支持部からの荷重を検出する第２の荷重センサと、前記支持部の左前部に設けられ、前記支持部からの荷重を検出する第３の荷重センサと、前記支持部の左後部に設けられ、前記支持部からの荷重を検出する第４の荷重センサとを有するコントローラを用いたゲーム装置であって、前記第１の荷重センサの出力に基づく第１の荷重データと前記第２の荷重センサの出力に基づく第２の荷重データとの差に基づいて第１の値を算出し、前記第３の荷重センサの出力に基づく第３の荷重データと前記第４の荷重センサの出力に基づく第４の荷重データとの差に基づいて第２の値を算出し、前記第１の値と前記第２の値とに基づいて、表示画面上に表示されるオブジェクトの挙動を決定する挙動決定手段を有することを特徴とするゲーム装置が提供される。
【発明の効果】
【０００８】
本発明によれば、プレイヤが支持される支持部の右前部に設けられる第１の荷重センサの出力に基づく第１の荷重データと、支持部の右後部に設けられる第２の荷重センサの出力に基づく第２の荷重データとの差に基づいて、第１の値を算出する。また、支持部の左前部に設けられる第３の荷重センサの出力に基づく第３の荷重データと、左後部の第４の荷重センサの出力に基づく第４の荷重データとの差に基づいて、第２の値を算出する。そして、これら第１の値と第２の値とに基づいて、表示画面上に表示されるオブジェクトの挙動を決定する。従って、本発明によれば、オブジェクトの旋回等を行うことも可能となり、臨場感のあるゲームを楽しむことができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態によるゲーム装置の外観図である。
【図２】本発明の一実施形態において用いられるコントローラを示す上面図及び下面図である。
【図３】本発明の一実施形態によるゲーム装置を示すブロック図である。
【図４】プレイヤが第１のコントローラ上に乗っている状態を示す斜視図である。
【図５】本発明の一実施形態によるゲーム装置の表示画面の例を示す図である。
【図６】システムメモリに設けられる各メモリを示す図である。
【図７】ローカル座標系とオブジェクトとの関係を示す図である。
【図８】オブジェクトの挙動の決定の処理を示すフローチャートである。
【図９】プレイヤの足による第１のコントローラの操作を示す図である。
【図１０】プレイヤが右足のつま先側及び左足のつま先側に体重を加えた場合を示す図である。
【図１１】プレイヤが右足のかかと側及び左足のかかと側に体重を加えた場合を示す図である。
【図１２】プレイヤが右足のかかと側及び左足のつま先側に体重をかけた場合を示す図である。
【図１３】プレイヤが左足のかかと側及び右足のつま先側に体重をかけた場合を示す図である。
【図１４】オブジェクトの挙動の具体例（その１）を示す図である。
【図１５】オブジェクトの挙動の具体例（その２）を示す図である。
【図１６】オブジェクトの挙動の具体例（その３）を示す図である。
【図１７】オブジェクトの挙動の具体例（その４）を示す図である。
【図１８】オブジェクトの挙動の具体例（その５）を示す図である。
【発明を実施するための形態】
【００１０】
［一実施形態］
本発明の一実施形態によるゲーム装置及びコンピュータプログラムを図１乃至図１７を用いて説明する。
【００１１】
（ゲーム装置の外観）
まず、本実施形態のゲーム装置１０の外観について説明する。図１は、本実施形態によるゲーム装置の外観図である。
【００１２】
本実施形態のゲーム装置１０は、テレビ台２上に設置されたテレビモニタ（表示部、表示手段）４に接続されて使用される。
【００１３】
ゲーム装置１０は、ゲーム装置本体１２と、プレイヤ（遊戯者）により操作される第１のコントローラ２０と、プレイヤにより操作される第２のコントローラ２２とを有している。
【００１４】
ゲーム装置本体１２とテレビモニタ４とはケーブルにより接続されている。ゲーム装置本体１２と第１のコントローラ２０とは無線により通信可能である。また、ゲーム装置本体１２と第２のコントローラ２２とは無線により通信可能である。
【００１５】
図２は、本実施形態において用いられるコントローラを示す上面図及び下面図である。図２（ａ）は上面図であり、図２（ｂ）は下面図である。
【００１６】
図２に示すように、第１のコントローラ２０は、プレイヤの足が乗せられる支持部７８と、支持部７８の四隅に設けられ、支持部２０に加わる荷重を検出するための４つの荷重センサ８２ａ〜８２ｄとを有している。コントローラ２０は、荷重センサ８２ａ〜８２ｄにより検出される荷重検出値を、ゲーム装置本体１２に送信する。プレイヤは、第１のコントローラ２０に乗っている状態で、体重のかけ方を調整することにより、テレビモニタ４上に表示されるオブジェクト等の挙動を操作してゲームを行う。
【００１７】
第２のコントローラ２２は、プレイヤの例えば手２３により操作される。第２のコントローラ２２の操作面上には、電源ボタン２８ａ、十字ボタン２８ｂ等の各種操作ボタン２８（図３参照）が設けられている。プレイヤは、第２のコントローラ２２を用いて、ゲームのスタート等の指示をゲーム装置本体１２に入力することができる。
【００１８】
（ゲーム装置の構成）
次に、本実施形態のゲーム装置の構成について説明する。図３は、本実施形態によるゲーム装置を示すブロック図である。
【００１９】
図３に示すように、ゲーム装置１０には、ゲームプログラムの実行やシステム全体の制御や画像表示のための座標計算等を行うＣＰＵ４０と、ＣＰＵ４０が処理を行うのに必要なプログラムやデータを格納するバッファメモリとして利用されるシステムメモリ（ＲＡＭ）４２とがバスラインにより共通接続され、バスアービタ４４に接続されている。バスアービタ４４は、ゲーム装置１０の各ブロックや外部に接続される機器とのプログラムやデータの流れを制御する。
【００２０】
ゲームプログラムやデータ（映像データや音楽データも含む）が格納されたプログラムデータ記憶装置又は記憶媒体（ゲーム用記録媒体であるＣＤ−ＲＯＭ等を駆動する光ディスクや光ディスクドライブ等も含む）４６と、ゲーム装置１０を起動するためのプログラムやデータが格納されているＢＯＯＴＲＯＭ４８とがバスラインを介してバスアービタ４４に接続されている。
【００２１】
表示画像を生成するためには、システムメモリ４２内に、表示するオブジェクトを構成する三次元ローカル座標データを有するポリゴンデータ（頂点データ）や、ＮＵＲＢＳ（Non Uniform Rational B-Spline）データ（曲面や制御点データ）を格納しておき、ＣＰＵ４０やジオメトリプロセッサ（図示しない）によって、これを三次元仮想空間のワールド座標系に配置してローカル座標をワールド座標系に変換する。
【００２２】
更に、ワールド座標系に、プレイヤの操作やゲームの進行に伴って生成される視点座標を設定して、この視点から所定の視方向および画角でみた視野範囲にあるオブジェクトを、視点座標を原点とした視点座標系に変換して、この変換されたオブジェクトの座標をレンダリングプロセッサ５０に送信する。
【００２３】
レンダリングプロセッサ５０は、送られてきたオブジェクトの座標に対して、まず、光源処理などの補間処理や、グラフィックメモリ５２に格納されたテクスチャーデータをオブジェクトに貼り付けてオブジェクトの表面にディテールを施す。さらにレンダリングプロセッサ５０は、三次元の立体オブジェクトから、テレビモニタ４に表示するために２次元平面（スクリーン）にオブジェクト（ポリゴン）を投影して２次元座標データ（スクリーン座標系）に変換し、Ｚ座標の深さが浅いポリゴン即ち視点座標に近いポリゴンから優先的に表示するようにして２次元画像を生成して、これをＣＲＴや液晶表示装置等のテレビモニタ４に出力する。
【００２４】
バスアービタ４４を介して、プログラムデータ記憶装置又は記憶媒体４６から読み出した映像（ＭＯＶＩＥ）データを再生したり、プレイヤの操作やゲーム進行に応じて画像表示のための画像を生成したりするレンダリングプロセッサ５０と、そのレンダリングプロセッサ５０が画像生成を行うために必要なグラフィックデータ等を格納しておくグラフィックメモリ５２とが接続されている。レンダリングプロセッサ５０から出力される画像信号は、ビデオＤＡＣ５４によりデジタル信号からアナログ信号に変換され、テレビモニタ４により表示される。
【００２５】
バスアービタ４４を介して、プログラムデータ記憶装置又は記憶媒体４６から読み出した音楽データを再生したり、プレイヤによる操作やゲーム進行に応じて効果音や音声を生成したりするサウンドプロセッサ５６と、そのサウンドプロセッサ５６により効果音や音声を生成するために必要なサウンドデータ等を格納しておくサウンドメモリ５８とが接続されている。サウンドプロセッサ５６から出力される音声信号は、オーディオＤＡＣ６０によりデジタル信号からアナログ信号に変換され、テレビモニタ４のスピーカから出力される。
【００２６】
バスアービタ４４には、通信インターフェース６２が接続されている。通信インターフェース６２はＬＡＮアダプタ６４を介して電話回線等の外部ネットワークに接続される。ゲーム装置本体１２はＬＡＮアダプタ６４によりインターネットに接続され、他のゲーム装置やネットワークサーバ等との通信が可能となる。
【００２７】
なお、通信インターフェース６２及びＬＡＮアダプタ６４は電話回線を使用するものであるが、電話回線を使用するターミナルアダプタ（ＴＡ）やルータ、ケーブルテレビ回線を使用するケーブルモデム、携帯電話やＰＨＳを利用して無線通信手段、光ファイバを用いた光ファイバ通信手段等の他の通信方法を利用してもよい。
【００２８】
バスアービタ４４には、コントローラ２０及びリモートコントローラ２２と無線通信するための無線受信部６８が接続されている。無線受信部６８は、第１のコントローラ２０から送信される情報及び第２のコントローラ２２から送信される情報を受信する。
【００２９】
バスアービタ４４には、ペリフェラルＩ／Ｆ（インターフェース）７０が接続されている。ペリフェラルＩ／Ｆ７０を介して、様々な周辺機器を接続することができる。
【００３０】
なお、ゲーム装置１０は、家庭用のゲーム装置に限定されるものではなく、パーソナルコンピュータや、携帯型電子ゲーム機、携帯電話やＰＤＡ等の電子装置、アミューズメント施設やゲームカフェ等の店舗に設置されるゲーム装置等の情報処理装置でもよい。
【００３１】
（コントローラ）
次に、本実施形態において用いられる第１のコントローラについて図１乃至図４を用いて説明する。
【００３２】
本実施形態による第１のコントローラ２０は、ゲームの操作装置（操作手段）として機能する。コントローラ２０は、プレイヤが乗るための支持部（支持板）７８と、支持部７８にかかる荷重を検出する荷重センサ８２ａ〜８２ｄとを有している。荷重センサ８２ａ〜８２ｄは、支持部７８の四隅に配置されている。
【００３３】
より具体的には、支持部７８の右前部には第１の荷重センサ８２ａが配置されており、支持部７８の右後部には第２の荷重センサ８２ｂが配置されており、支持部７８の左前部には第３の荷重センサ８２ｃが配置されており、支持部７８の左後部には第４の荷重センサ８２ｄが配置されている。
【００３４】
第１のコントローラ２０の四隅には、脚８０ａ〜８０ｄが設けられている。各々の脚８０ａ〜８０ｄは例えば円柱状に形成されている。第１の荷重センサ８２ａは脚８０ａにより支持されており、第２の荷重センサ８２ｂは脚８０ｂにより支持されており、第３の荷重センサ８２ｃは脚８０ｃにより支持されており、第４の荷重センサ８２ｄは脚８０ｄにより支持されている。即ち、支持部７８は、四隅に設けられた４つの荷重センサ８２ａ〜８２ｄを介して、４つの脚８０ａ〜８０ｄにより支持されている。
【００３５】
図４は、プレイヤが第１のコントローラ上に乗っている状態を示す斜視図である。
【００３６】
図４に示すようにプレイヤ６が第１のコントローラ２０の支持部７８上に乗った際には、プレイヤ６による荷重が、第１のコントローラ２０の支持部７８を介して荷重センサ８２ａ〜８２ｄに伝達される。
【００３７】
荷重センサ８２ａ〜８２ｄとしては、例えば歪ゲージ式のロードセル等を用いることができる。荷重センサ８２ａ〜８２ｄは、加えられた荷重に応じた大きさの電気信号を出力する。
【００３８】
なお、第１のコントローラ２０は、支持部に加わる荷重を検出する複数の荷重センサを有するコントローラを適宜用いることができる。
【００３９】
図３に示すように、第１のコントローラ２０は、第１のコントローラ２０全体の動作を制御するＣＰＵ８８を有している。ＣＰＵ８８には、図示しないＲＯＭやＲＡＭ等が接続されている。ＣＰＵ８８は、ＲＯＭに記憶されたコンピュータプログラムにより、第１のコントローラ２０の動作を制御する。
【００４０】
各々の荷重センサ８２ａ〜８２ｄは、それぞれ増幅器８４ａ〜８４ｄを介して、ＡＤコンバータ８６に接続されている。
【００４１】
無線送信部９０は、第１のコントローラ２０からゲーム装置本体１２に対してデータの送信を行うためのものである。無線送信部９０は、例えば第１のコントローラ２０の内部に設けられている。荷重センサ８２ａ〜８２ｄ、増幅器８４ａ〜８４ｄ、ＡＤコンバータ８６、ＣＰＵ８８及び無線送信部９０には、所定の電圧が電池等のバッテリー（図示せず）等により供給される。
【００４２】
各々の荷重センサ８２ａ〜８２ｄは、入力された荷重を示す信号を出力する。各々の荷重センサ８２ａ〜８２ｄから出力された電気信号は、増幅器８４によりそれぞれ増幅され、ＡＤコンバータ８６によりアナログ信号からデジタルデータに変換されて、ＣＰＵ８８に入力される。各々の荷重センサ８２ａ〜８２ｄによる検出値のデータには、各々の荷重センサ８２〜８２ｄの識別情報が付与され、いずれの荷重センサ８２ａ〜８２ｄによる荷重検出値であるかが識別可能となる。
【００４３】
ＣＰＵ８８は、各々の荷重センサ８２ａ〜８２ｄによる荷重検出値を示すデータｆ１〜ｆ４を取得する。ｆ１は第１の荷重センサ８２ａによる荷重検出値を示すデータであり、ｆ２は、第２の荷重センサ８２ｂによる荷重検出値を示すデータであり、ｆ３は第３の荷重センサ８２ｃによる荷重検出値を示すデータであり、ｆ４は第４の荷重センサ８２ｄによる荷重検出値を示すデータである。
【００４４】
荷重センサ８２ａ〜８２ｄによる荷重検出値を示すデータｆ１〜ｆ４は、第１のコントローラ２０の操作入力データとして、ＣＰＵ８８から無線送信部９０を介してゲーム装置本体１２に送信される。ＣＰＵ８８は、例えば１フレーム毎に荷重センサ８２ａ〜８２ｄによる荷重検出値を示すデータｆ１〜ｆ４を送信する。
【００４５】
（ゲーム実行処理）
本実施形態によるゲーム装置によるゲーム実行処理について説明する。
【００４６】
図５は、本実施形態によるゲーム装置の表示画面の例を示す図である。
【００４７】
本実施形態によるゲームは、プレイヤが、テレビモニタ（表示部、表示装置）２に表示されるホバーマシン（オブジェクト）１００の向き（進行方向）やスピード（移動速度、進行速度）を、第１のコントローラ２０を用いて操作し、テレビモニタ２に表示される旗（得点対象）１０２にホバーマシン１００を到達させて旗１０２を取得することにより、得点を獲得していくゲームである。
【００４８】
例えば、設けられた旗１０２のすべてを取得し終わるとゲームセットとなる。プレイヤは、すべての旗１０２を取得し終わるまでの時間の短さを競うことにより、ゲームを楽しむことができる。
【００４９】
テレビモニタ４の画面の例えば左上部には、これまでに行われたゲームのうちの最高記録（ＢＥＳＴ  ＲＥＣＯＲＤ）１０４が表示される。また、テレビモニタ４の画面の中央上部には、残りの旗の本数１０６が表示される。また、テレビモニタ４の画面の右上部には、ゲームをスタートしてからの経過時間１０８が表示される。また、テレビモニタ４の画面には、得点付与の対象となる旗１０２が表示される。
【００５０】
また、テレビモニタ４の画面には、プレイヤにより三次元仮想空間上において操作されるオブジェクト（ホバーマシン）１００が表示される。テレビモニタ４の画面には、ホバーマシン１００に操縦者（キャラクタ）１１０が搭乗している状態が表示される。
【００５１】
ホバーマシン１００の右前部、右後部、左前部、右後部には、それぞれジェットエンジン１１２ａ〜１１２ｄが設けられている。ジェットエンジン１１２ａ〜１１２ｄは、ホバーマシン１００に推進力を付与するためのものである。ホバーマシン１００は、仮想的な氷の上をジェットエンジン１１２ａ〜１１２ｄによる推進力を用いて走行する。右側のジェットエンジン１１２ａ、１１２ｂと左側のジェットエンジン１１２ｃ、１１２ｄとは、独立して制御される。右前部のジェットエンジン１１２ａと右後部のジェットエンジン１１２ｂは、同時にジェット噴射されることはない。また、左前部のジェットエンジン１１２ｃと左後部のジェットエンジン１１２ｄは、同時に噴射されることはない。
【００５２】
例えば、右後部のジェットエンジン１１２ｂと左後部のジェットエンジン１１２ｄの両方からジェット噴射が行われれば、右後部のジェットエンジン１１２ｂと左後部のジェットエンジン１１２ｄとにより前方向の推進力がホバーマシン１００に付与され、ホバーマシン１００は前進する。
【００５３】
また、右前部のジェットエンジン１１２ａと左前部のジェットエンジン１１２ｃの両方からジェット噴射が行われれば、右前部のジェットエンジン１１２ａと左前部のジェットエンジン１１２ｃとにより後ろ方向の推進力がホバーマシン１００に付与され、ホバーマシン１００は後退する。
【００５４】
また、右前部のジェットエンジン１１２ａと左後部のジェットエンジン１１２ｄとからジェット噴射が行われれば、右前部のジェットエンジン１１２ａと左後部のジェットエンジン１１２ｄとにより推進力がホバーマシン１００に付与される。右前部のジェットエンジン１１２ａによる推進力の大きさと左後部のジェットエンジン１１２ｄによる推進力の大きさとが等しい場合には、ホバーマシン１００は、中心の位置を変化させることなく、その場で右旋回する。右前部のジェットエンジン１１２ａによる推進力の大きさが左後部のジェットエンジン１１２ｄによる推進力の大きさより大きい場合には、ホバーマシン１００は右回転しながら後退する。左後部のジェットエンジン１１２ｄによる推進力の大きさが、右前部のジェットエンジン１１２ａによる推進力の大きさより大きい場合には、ホバーマシン１００は、右回転しながら前進する。
【００５５】
また、右後部のジェットエンジン１１２ｂと左前部のジェットエンジン１１２ｃからジェット噴射が行われれば、右後部のジェットエンジン１１２ｂと左前部のジェットエンジン１１２ｃとにより推進力がホバーマシンに付与される。右後部のジェットエンジン１１２ｂによる推進力の大きさと左前部のジェットエンジン１１２ｃによる推進力の大きさとが等しい場合には、ホバーマシン１００は、中心の位置を移動させることなく、その場で左旋回する。右後部のジェットエンジン１１２ｂによる推進力の大きさが左前部のジェットエンジン１１２ｃによる推進力の大きさより大きい場合には、ホバーマシン１００は、左回転しながら前進する。左前部のジェットエンジン１１２ｃによる推進力の大きさが右後部のジェットエンジン１１２ｂによる推進力の大きさより大きい場合には、ホバーマシン１００は、左回転しながら後退する。
【００５６】
また、テレビモニタ４の画面には、ホバーマシン１００の進行を阻害する障害物１１４も表示される。
【００５７】
（体重データの取得）
ゲームを開始する前には、プレイヤに対して第１のコントローラ２０上に乗ることを促す画面が、テレビモニタ４に表示される。
【００５８】
プレイヤが第１のコントローラ２０上に乗ると、プレイヤの体重の測定が行われる。具体的には、４つの荷重センサ８２ａ〜８２ｄによる荷重検出値を示すデータｆ１〜ｆ４の合計値がプレイヤの体重のデータＦとして認定される。プレイヤの体重Ｆは、以下のような式により表される。
【００５９】
Ｆ＝ｆ１＋ ｆ２ ＋ｆ３ ＋ｆ４
図６は、システムメモリに設けられる各メモリを示す図である。
【００６０】
ＣＰＵ４０は、プレイヤの体重のデータＦを、システムメモリ４２に設けられるプレイヤ体重メモリ（図６参照）に記憶する。
【００６１】
（正規化係数の取得）
次に、ＣＰＵ４０は、データｆ１〜ｆ４を正規化するための係数ａを算出する。ｆ１〜ｆ４を正規化するための係数（正規化係数）ａは、以下のような式により表される。
【００６２】
ａ＝１／Ｆ
ＣＰＵ４０は、正規化係数ａを、システムメモリ４２に設けられる正規化係数メモリ（図６参照）に記憶する。
【００６３】
各々の荷重センサ８２ａ〜８２ｄによる荷重検出値のデータｆ１〜ｆ４は、１フレーム毎に取得される。ＣＰＵ４０は、取得された荷重検出値のデータｆ１〜ｆ４を、システムメモリ４２に設けられるｆ１〜ｆ４メモリに記憶する（図６参照）。
【００６４】
ｎフレーム目のデータｆ１（ｎ）〜ｆ４（ｎ）を正規化することにより得られる荷重検出値のデータｇ１（ｎ）〜ｇ４（ｎ）は、以下のような式により表される。
【００６５】
ｇ１（ｎ）＝ ｆ１（ｎ） × ａ
ｇ２（ｎ）＝ ｆ２（ｎ） × ａ
ｇ３（ｎ）＝ ｆ３（ｎ） × ａ
ｇ４（ｎ）＝ ｆ４（ｎ） × ａ
なお、データｇ１（ｎ）〜ｇ４（ｎ）は正規化されているため、データｇ１（ｎ）〜ｇ４（ｎ）の総和は１．０である。
【００６６】
ＣＰＵ４０は、正規化されたデータｇ１〜ｇ４を、システムメモリ４２に設けられるｇ１〜ｇ４メモリに記憶する（図６参照）。
【００６７】
（荷重データの算出）
本実施形態では、プレイヤが第１のコントローラ２０上に直立不動で乗っている際に、正規化された荷重検出値を示すデータｇ１〜ｇ４がいずれも０．２５となるような補正係数（補正値）ｂ１〜ｂ４が、予め決定されている。かかる補正係数ｂ１〜ｂ４は、プレイヤ毎に決定するわけではなく、すべてのプレイヤに対して一律に適用される。
【００６８】
なお、ここでは、かかる補正係数ｂ１〜ｂ４をすべてのプレイヤに対して一律に適用する場合を例に説明するが、プレイヤ毎に補正係数ｂ１〜ｂ４を決定するようにしてもよい。
【００６９】
正規化及び補正が行われた荷重検出値を示すデータ（荷重データ）Ｗ１（ｎ）〜Ｗ４（ｎ）は、以下のような式により表される。
【００７０】
Ｗ１（ｎ）＝ ｇ１（ｎ） × ｂ１ ＝ ｆ１（ｎ） × ａ × ｂ１
Ｗ２（ｎ）＝ ｇ２（ｎ） × ｂ２ ＝ ｆ２（ｎ） × ａ × ｂ２
Ｗ３（ｎ）＝ ｇ３（ｎ） × ｂ３ ＝ ｆ３（ｎ） × ａ × ｂ３
Ｗ４（ｎ）＝ ｇ４（ｎ） × ｂ４ ＝ ｆ４（ｎ） × ａ × ｂ４
ＣＰＵ４０は、算出された荷重データＷ１（ｎ）〜Ｗ４（ｎ）を、システムメモリ４２に設けられるＷ１〜Ｗ４メモリに記憶する（図６参照）。
【００７１】
（オブジェクトの配置）
ワールド座標系におけるオブジェクト（ホバーマシン）１００のｎフレーム目における位置座標Ｐ（ｎ）は、以下のように表される。
【００７２】
Ｐ（ｎ）＝ （ＰＸ（ｎ），ＰＹ（ｎ），ＰＺ（ｎ））
位置座標Ｐ（ｎ）は、システムメモリ４２内に設けられる位置座標メモリに記憶される（図６参照）。
【００７３】
なお、ここでは、ワールド座標系におけるＸＺ平面は仮想的な地面と平行な面とし、ワールド座標系におけるＹ軸は仮想的な地面の法線方向とする。
【００７４】
図７は、ローカル座標系とオブジェクトとの関係を示す図である。図７における紙面左右方向は、ローカル座標系におけるＸ軸方向に対応している。図７における紙面右方向がＸ軸の正の方向であり、図７における紙面左方向がＸ軸の負の方向である。図７における紙面上下方向は、ローカル座標系におけるＺ軸方向に対応している。図７における紙面下方向がＺ軸の正の方向であり、図７における紙面上方向がＺ軸の負の方向である。図７の紙面の法線方向は、ローカル座標系におけるＹ軸方向に対応している。図７における紙面手前方向はＹ軸の正の方向であり、図７における紙面奥行き方向はＹ軸の負の方向である。
【００７５】
ゲームの初期状態においては、オブジェクト１００の左右方向における中心線とＸ軸方向とが一致している。より具体的には、ゲームの初期状態においては、オブジェクト１００の右方向がＸ軸の正の方向と一致しており、オブジェクト１００の左方向がＸ軸の負の方向と一致している。
【００７６】
また、ゲームの初期状態においては、オブジェクト１００の前後方向における中心線とＺ軸方向とが一致している。より具体的には、ゲームの初期状態においては、オブジェクト１００の後ろ方向がＺ軸の正の方向と一致しており、オブジェクト１００の前方向がＺ軸の負の方向と一致している。
【００７７】
また、オブジェクト１００が水平面上に位置している状態においては、オブジェクト１００の上下方向における中心線とＹ軸とが一致している。より具体的には、オブジェクト１００が水平面上に位置している状態においては、オブジェクト１００の下方向がＹ軸の正の方向と一致しており、オブジェクト１００の上方向がＹ軸の負の方向と一致している。
【００７８】
（オブジェクトの挙動の決定）
図８は、オブジェクトの挙動の決定の処理を示すフローチャートである。
【００７９】
ゲームの実行が開始された場合には、ＣＰＵ４０は、荷重センサ８２ａ〜８２ｄによる荷重検出値を示すデータｆ１（ｎ）〜ｆ４（ｎ）に基づいて、上記のようにして、正規化係数ａを用いた正規化、及び、補正係数ｂ１〜ｂ４を用いた補正を行い、各々の荷重データＷ１（ｎ）〜Ｗ４（ｎ）を算出する（ステップＳ１）。ＣＰＵ４０による各々の荷重データＷ１（ｎ）〜Ｗ４（ｎ）の算出は、１フレーム毎に行われる。
【００８０】
ＣＰＵ４０は、算出された荷重データＷ１（ｎ）〜Ｗ４（ｎ）を、システムメモリ４２に設けられるＷ１〜Ｗ４メモリに記憶する（図６参照）。
【００８１】
次に、ＣＰＵ４０は、第２の荷重データＷ２（ｎ）から第１の荷重データＷ１（ｎ）を減算することにより、第１の値ＷＲ（ｎ）を算出する（ステップＳ２）。第１の値ＷＲ（ｎ）は、１フレーム毎に算出される。
【００８２】
第１の値ＷＲ（ｎ）は、以下のような式により表される。
【００８３】
ＷＲ（ｎ）＝ Ｗ２（ｎ） − Ｗ１（ｎ）
ＣＰＵ４０は、算出された第１の値ＷＲ（ｎ）を、システムメモリ４２に設けられるＷＲ（ｎ）メモリに記憶する（図６参照）。
【００８４】
また、ＣＰＵ４０は、第４の荷重データＷ４（ｎ）から第３の荷重データＷ３（ｎ）を減算することにより、第２の値ＷＬ（ｎ）を算出する（ステップＳ３）。第２の値ＷＬ（ｎ）は、１フレーム毎に算出される。
【００８５】
第２の値ＷＬ（ｎ）は、以下のような式により表される。
【００８６】
ＷＬ（ｎ）＝ Ｗ４（ｎ） − Ｗ３（ｎ）
ＣＰＵ４０は、算出された第２の値ＷＬ（ｎ）を、システムメモリ４２に設けられるＷＬ（ｎ）メモリに記憶する（図６参照）。
【００８７】
次に、ＣＰＵ４０は、第１の値ＷＲ（ｎ）の絶対値が所定の閾値ｃより小さい場合（ステップＳ４）には、第１の値ＷＲ（ｎ）に対して補正を行う（ステップＳ５）。具体的には、第１の値ＷＲ（ｎ）の絶対値が所定の閾値ｃより小さい場合には、第１の値ＷＲ（ｎ）に対して所定の補正係数ｄを乗算する。所定の閾値ｃは、例えば０．０５とする。所定の補正係数ｄは、例えば０．０２とする。このような処理を行うのは、プレイヤが意図していないにも拘わらず、わずかな荷重の変化によりオブジェクト１００が挙動してしまうのを防止するためである。これにより、プレイヤが直立不動にしている場合には、オブジェクト１００の挙動が著しく抑制される。
【００８８】
また、ＣＰＵ４０は、第２の値ＷＬ（ｎ）の絶対値が所定の閾値ｃより小さい場合には（ステップＳ６）、第２の値ＷＬ（ｎ）に対して補正を行う（ステップＳ７）。具体的には、第２の値ＷＬ（ｎ）の絶対値が所定の閾値ｃより小さい場合には、第２の値ＷＬ（ｎ）に対して所定の補正係数ｄを乗算する。
【００８９】
次に、ＣＰＵ４０は、第１の値ＷＲ（ｎ）と第２の値ＷＬ（ｎ）との積、即ち、（ＷＲ（ｎ）×ＷＬ（ｎ））の値を求める（ステップＳ８）。（ＷＲ（ｎ）×ＷＬ（ｎ））の値が負であり、且つ、（ＷＲ（ｎ）×ＷＬ（ｎ））の値が所定の閾値ｅより小さい場合には（ステップＳ９）、後述するオブジェクトを旋回させる処理が行われる（ステップＳ１１〜Ｓ１５）。（ＷＲ（ｎ）×ＷＬ（ｎ））が正である場合、又は、（ＷＲ（ｎ）×ＷＬ（ｎ））の値が負であっても、所定の閾値ｅ以上の場合には、第１の値ＷＲ（ｎ）と第２の値ＷＬ（ｎ）とに基づいて、以下のようにして、オブジェクト１００の挙動を決定する（ステップＳ１０）。所定の閾値ｅは、例えば−０．０１とすることができる。なお、このような所定の閾値ｅを用いるのは、プレイヤが意図していないにも拘わらず、わずかな荷重の変化によりオブジェクト１００が旋回等してしまうのを防止するためである。
【００９０】
ＣＰＵ４０は、第１の値ＷＲ（ｎ）と第２の値ＷＬ（ｎ）とに基づいて、以下のようにしてオブジェクト１００の挙動を決定する。
【００９１】
ローカル座標系におけるオブジェクト１００のｎフレーム目における回転角のデータＡ（ｎ）は、以下のように表される。
【００９２】
Ａ（ｎ）＝ （ＡＸ（ｎ），ＡＹ（ｎ），ＡＺ（ｎ））
ＡＸ（ｎ）は、Ｘ軸を回転軸としたオブジェクト１００の回転角を示すデータである。ＡＹ（ｎ）は、Ｙ軸を回転軸としたオブジェクト１００の回転角を示すデータである。ＡＺ（ｎ）は、Ｚ軸を回転軸としたオブジェクト１００の回転角を示すデータである。回転軸に対して右回りの回転を正とし、回転軸に対して左回りの回転を負とする。
【００９３】
オブジェクト１００が移動する面が水平の場合には、Ｘ軸を回転軸とした回転及びＺ軸を回転軸とした回転は行われず、Ｙ軸を回転軸とした回転のみが行われる。ここでは、説明の煩雑化を防止すべく、オブジェクト１００が移動する面が水平の場合を例に説明する。従って、ここでは、ＡＸ（ｎ）及びＡＺ（ｎ）の値は、それぞれ０とする。オブジェクト１００の前後方向の中心線とＺ軸とが並行であり、且つ、オブジェクト１００の前方向がＺ軸の負の方向と一致しているとき、ＡＹ（ｎ）は０である。
【００９４】
なお、オブジェクト１００が傾斜面を移動するようにしてもよい。オブジェクト１００が傾斜面を移動する場合には、ＡＹ（ｎ）のみならず、ＡＸ（ｎ）及びＡＺ（ｎ）をも考慮すればよい。
【００９５】
ローカル座標系における回転角ＡＹ（ｎ）は、以下のような式により求められる。
【００９６】
ＡＹ（ｎ）＝ ＡＹ（ｎ−１） ＋ （ＷＬ（ｎ） − ＷＲ（ｎ））
なお、ＡＹ（ｎ−１）はｎ−１フレーム目における回転角のデータであり、ＡＹ（ｎ）はｎフレーム目の回転角のデータである。ｎ−１フレーム目の回転角のデータＡＹ（ｎ−１）は、システムメモリ４２内に設けられる回転角メモリに記憶されている（図６参照）。
【００９７】
また、（ＷＬ（ｎ）− ＷＲ（ｎ））の最小値は−１．０、最大値は１．０である。
【００９８】
このようにして求められたｎフレーム目の回転角Ａ（ｎ）を示すデータは、システムメモリ４２内に設けられる回転角メモリに記憶される（図６参照）。
【００９９】
なお、ワールド座標系にオブジェクト１００を表示する際には、所定の換算式等を用いて、回転角を示すデータＡ（ｎ）が角度の値Ａ（ｎ）′に変換される。
【０１００】
かかる所定の換算式としては、例えば、以下のような換算式を用いることができる。
【０１０１】
Ａ（ｎ）′ ＝ ｋ × Ａ（ｎ） × π
なお、ｋは、所定の係数である。
【０１０２】
ワールド座標系におけるオブジェクト１００のｎフレーム目におけるスピードＶ（ｎ）は、以下のように表される。
【０１０３】
Ｖ（ｎ）＝ （ＶＸ（ｎ），ＶＹ（ｎ），ＶＺ（ｎ））
オブジェクト１００のＸ軸方向のスピードＶＸ（ｎ）は、以下のように表される。
【０１０４】
ＶＸ（ｎ）＝ （ＷＲ（ｎ）＋ＷＬ（ｎ）） × ｓｉｎ（ＡＹ（ｎ）′）
オブジェクト１００が移動する面が水平の場合には、オブジェクト１００のＹ軸方向のスピードを示すＶＹ（ｎ）は０である。
【０１０５】
オブジェクト１００のＺ軸方向のスピードＶＺ（ｎ）は、以下のように表される。
【０１０６】
ＶＺ（ｎ）＝ （ＷＲ（ｎ）＋ＷＬ（ｎ）） × ｃｏｓ（ＡＹ（ｎ）′）
なお、ワールド座標系にオブジェクト１００を表示する際には、所定の換算式等を用いて、ＶＸ（ｎ）、ＶＹ（ｎ）、ＶＺ（ｎ）に対して換算等が行われる。
【０１０７】
図９は、プレイヤの足による第１のコントローラの操作を示す図である。
【０１０８】
プレイヤの右足８ａの重心が前側にも後ろ側にもなっていない場合には（図９（ａ）参照）、第１の値ＷＲ（ｎ）は、ＷＲ（ｎ）＝０となる。この場合には、右前部のジェットエンジン１１２ａ及び右後部のジェットエンジン１１２ｂからはジェット噴射が行われない。
【０１０９】
プレイヤの左足８ｂの重心が前側にも後ろ側にもなっていない場合には（図９（ａ）参照）、第２の値ＷＬ（ｎ）は、ＷＬ（ｎ）＝０となる。この場合には、左前部のジェットエンジン１１２ｃ及び左後部のジェットエンジン１１２ｄからはジェット噴射が行われない。
【０１１０】
プレイヤが右足８ａのつま先側に体重を加えた場合には（図９（ｂ）参照）、第１の値ＷＲ（ｎ）は、ＷＲ（ｎ）＜０となる。この場合には、右後部のジェットエンジン１１２ｂからジェット噴射が行われる。ジェット噴射の大きさは、第１の値ＷＲ（ｎ）の絶対値の大きさに基づいて設定される。
【０１１１】
プレイヤが左足８ｂのつま先側に体重を加えた場合には（図９（ｂ）参照）、第２の値ＷＬ（ｎ）は、ＷＬ（ｎ）＜０となる。この場合には、左後部のジェットエンジン１１２ｄからジェット噴射が行われる。ジェット噴射の大きさは、第２の値ＷＬ（ｎ）の絶対値の大きさに基づいて設定される。
【０１１２】
プレイヤが右足８ａのかかと側に体重を加えた場合には（図９（ｃ）参照）、第１の値ＷＲ（ｎ）は、ＷＲ（ｎ）＞０となる。この場合には、右前部のジェットエンジン１１２ａからジェット噴射が行われる。ジェット噴射の大きさは、第１のＷＲ（ｎ）の絶対値の大きさに基づいて設定される。
【０１１３】
プレイヤが左足８ｂのかかと側に体重を加えた場合には（図９（ｃ）参照）、第２の値ＷＬ（ｎ）は、ＷＬ（ｎ）＞０となる。この場合には、左前部のジェットエンジン１１２ｃからジェット噴射が行われる。ジェット噴射の大きさは、第２のＷＬ（ｎ）の絶対値の大きさに基づいて設定される。
【０１１４】
図１０は、プレイヤが右足のつま先側及び左足のつま先側に体重を加えた場合を示す図である。図１０におけるハッチングは、体重をかける箇所を示している。図１０（ａ）は、第１のコントローラに加える荷重を示す平面図であり、図１０（ｂ）は、オブジェクトの挙動を示す表示画面の例である。
【０１１５】
プレイヤが右足８ａのつま先側に体重を加えるとともに、左足８ｂのつま先側にも体重を加えた場合には、ＣＰＵ４０は、右後部のジェットエンジン１１２ｂからジェット噴射を行われ、左後部のジェットエンジン１１２ｄからもジェット噴射が行われる様子を、テレビモニタ４に表示する。なお、オブジェクト１００の挙動は、上記のようにして決定される。
【０１１６】
図１１は、プレイヤが右足のかかと側及び左足のかかと側に体重を加えた場合を示す図である。図１１におけるハッチングは、体重をかける箇所を示している。図１１（ａ）は、第１のコントローラに加える荷重を示す平面図であり、図１１（ｂ）は、オブジェクトの挙動を示す表示画面の例である。
【０１１７】
プレイヤが右足８ａのかかと側に体重を加えるとともに、左足８ｂのかかと側にも体重を加えた場合には、ＣＰＵ４０は、右前部のジェットエンジン１１２ａからジェット噴射が行われるとともに、左前部のジェットエンジン１１２ｂからもジェット噴射が行われる様子を、テレビモニタ４に表示する。なお、オブジェクト１００の挙動は、上記のようにして決定される。
【０１１８】
上述したステップＳ９（図８参照）において、（ＷＲ（ｎ）×ＷＬ（ｎ））の値が負であり、且つ、（ＷＲ（ｎ）×ＷＬ（ｎ））の値が所定の閾値ｅより小さい場合には、以下のようにして、オブジェクト１００の旋回処理が行われる。
【０１１９】
図１２は、プレイヤが右足のかかと側及び左足のつま先側に体重をかけた場合を示す図である。図１２におけるハッチングは、体重をかける箇所を示している。図１２（ａ）は、第１のコントローラに加える荷重を示す平面図であり、図１２（ｂ）は、オブジェクトの挙動を示す表示画面の例である。
【０１２０】
図１２に示すように、プレイヤが右足８ａのかかと側に体重をかけつつ、左足８ｂのつま先側に体重をかけた場合には、第１の値ＷＲ（ｎ）、第２の値ＷＬ（ｎ）は、以下のようになる。
【０１２１】
ＷＲ（ｎ）＞ ０
ＷＬ（ｎ）＜ ０
このように、第１の値ＷＲ（ｎ）が正であり、第２の値ＷＬ（ｎ）が負である場合には（ステップＳ１１）、オブジェクト１００は右旋回することとなる。
【０１２２】
ところが、この場合には、左足８ｂについてつま先側に体重をかけるのは比較的容易である一方、右足８ａについてかかと側に体重を十分にかけるのは必ずしも容易ではない。従って、この場合には、第１の値ＷＲ（ｎ）に対して補正を行う（ステップＳ１２）。具体的には、第１の値ＷＲ（ｎ）に対して所定の補正係数ｈを乗算する。所定の補正係数ｈは、例えば２とすることができる。
【０１２３】
補正された第１の値ＷＲ（ｎ）′は、以下のように表される。
【０１２４】
ＷＲ（ｎ）′ ＝ ＷＲ（ｎ） × ｈ
ＣＰＵ４０は、補正された第１の値ＷＲ（ｎ）′を、システムメモリ４２に設けられるＷＲ（ｎ）′メモリに記憶する（図６参照）。
【０１２５】
オブジェクト１００を右旋回させる場合には、補正された第１の値ＷＲ（ｎ）′と補正されていない第２の値ＷＬ（ｎ）とを用いて、以下のようにして、オブジェクト１００の挙動が決定される（ステップＳ１３）。
【０１２６】
ローカル座標系における回転角のデータＡＹ（ｎ）は、以下のような式により求められる。
【０１２７】
ＡＹ（ｎ）＝ ＡＹ（ｎ−１） ＋ （ＷＬ（ｎ） − ＷＲ（ｎ）′）
なお、ＡＹ（ｎ−１）はｎ−１フレーム目における回転角のデータであり、ＡＹ（ｎ）はｎフレーム目の回転角のデータである。ｎ−１フレーム目の回転角のデータは、システムメモリ４２内に設けられる回転角メモリに記憶されている（図６参照）。
【０１２８】
このようにして求められたｎフレーム目の回転角ＡＹ（ｎ）のデータは、システムメモリ内４２に設けられる回転角メモリに記憶される（図６参照）。
【０１２９】
オブジェクト１００のＸ軸方向のスピードＶＸ（ｎ）は、以下のように表される。
【０１３０】
ＶＸ（ｎ）＝ （ＷＲ（ｎ）′＋ＷＬ（ｎ）） × ｓｉｎ（ＡＹ（ｎ）′）
オブジェクト１００が移動する面が水平の場合には、オブジェクト１００のＹ軸方向のスピードＶＹ（ｎ）は０である。
【０１３１】
オブジェクト１００のＺ軸方向のスピードＶＺ（ｎ）は、以下のように表される。
【０１３２】
ＶＺ（ｎ）＝ （ＷＲ（ｎ）′＋ＷＬ（ｎ）） × ｃｏｓ（ＡＹ（ｎ）′）
ＣＰＵ４０は、右前部のジェットエンジン１１２ａからジェット噴射が行われるとともに、左後部のジェットエンジン１１２ｄからもジェット噴射が行われる状態を示す画面を、テレビモニタ４に表示する。各々のジェット噴射の大きさは、第１の値ＷＲ（ｎ）の絶対値の大きさ、第２の値ＷＬ（ｎ）の絶対値の大きさに基づいてそれぞれ設定される。
【０１３３】
図１３は、プレイヤが左足のかかと側及び右足のつま先側に体重をかけた場合を示す図である。図１３におけるハッチングは、体重をかける箇所を示している。図１３（ａ）は、第１のコントローラに加える荷重を示す平面図であり、図１３（ｂ）は、オブジェクトの挙動を示す表示画面の例である。
【０１３４】
図１３のように、プレイヤが左足８ｂのかかと側に体重をかけつつ、右足８ａのつま先側に体重をかけた場合には、第１の値ＷＲ（ｎ）、第２の値ＷＬ（ｎ）は、以下のようになる。
【０１３５】
ＷＲ（ｎ）＜ ０
ＷＬ（ｎ）＞ ０
このように第１の値ＷＲ（ｎ）が負であり、第２の値ＷＬ（ｎ）が正である場合には、オブジェクト１００を左旋回させることとなる。
【０１３６】
ところが、この場合には、右足８ａのつま先側に体重をかけるのは比較的容易である一方、左足８ｂのかかと側に体重を十分にかけるのは必ずしも容易ではない。従って、この場合には、第２の値ＷＬ（ｎ）に対して補正を行う（ステップＳ１４）。具体的には、第２の値ＷＬ（ｎ）に対して所定の補正係数ｈを乗算する。所定の補正係数ｈは、上述したように、例えば２とすることができる。
【０１３７】
補正された第２の値ＷＬ（ｎ）′は、以下のように表される。
【０１３８】
ＷＬ（ｎ）′ ＝ ＷＬ（ｎ） × ｈ
ＣＰＵ４０は、補正された第２の値ＷＬ（ｎ）′を、システムメモリ４２に設けられるＷＬ（ｎ）′メモリに記憶する（図６参照）。
【０１３９】
オブジェクト１００を左旋回させる場合には、補正されていない第１の値ＷＲ（ｎ）と補正された第２の値ＷＬ（ｎ）′とを用いて、以下のようにして、オブジェクト１００の挙動が決定される（ステップＳ１５）。
【０１４０】
ローカル座標系における回転角のデータＡＹ（ｎ）は、以下のような式により求められる。
【０１４１】
ＡＹ（ｎ）＝ ＡＹ（ｎ−１） ＋ （ＷＬ（ｎ）′ − ＷＲ（ｎ））
なお、ＡＹ（ｎ−１）はｎ−１フレーム目における回転角を示すデータであり、ＡＹ（ｎ）はｎフレーム目の回転角を示すデータである。ｎ−１フレーム目の回転角を示すデータＡＹ（ｎ−１）は、システムメモリ４２内に設けられる回転角メモリに記憶されている（図６参照）。
【０１４２】
このようにして求められたｎフレーム目の回転角ＡＹ（ｎ）のデータは、システムメモリ４２内に設けられる回転角メモリに記憶される（図６参照）。
【０１４３】
オブジェクト１００のＸ軸方向のスピードＶＸ（ｎ）は、以下のように表される。
【０１４４】
ＶＸ（ｎ）＝ （ＷＲ（ｎ）＋ＷＬ（ｎ）′） × ｓｉｎ（ＡＹ（ｎ）′）
オブジェクト１００が移動する面が水平の場合には、オブジェクト１００のＹ軸方向のスピードＶＹ（ｎ）は０である。
【０１４５】
オブジェクト１００のＺ軸方向のスピードＶＺ（ｎ）は、以下のように表される。
【０１４６】
ＶＺ（ｎ）＝ （ＷＲ（ｎ）＋ＷＬ（ｎ）′） × ｃｏｓ（ＡＹ（ｎ）′）
ＣＰＵ４０は、左前部のジェットエンジン１１２ｃからジェット噴射が行われるとともに、右後部のジェットエンジン１１２ｂからもジェット噴射が行われる状態を示す画面を、テレビモニタ４に表示する。各々のジェット噴射の大きさは、第１の値ＷＲ（ｎ）の絶対値の大きさ、第２の値ＷＬ（ｎ）の絶対値の大きさに基づいてそれぞれ設定される。
【０１４７】
このようにして、オブジェクト１００の挙動が１フレーム毎に決定される。
【０１４８】
図８に示すオブジェクトの挙動を決定する処理は、ゲームが終了するまで繰り返し行われる。
【０１４９】
次に、オブジェクト１００の挙動について、図１４乃至図１７を用いてより具体的に説明する。
【０１５０】
図１４は、オブジェクトの挙動の具体例（その１）を示す図である。図１４（ａ）は、第１のコントローラに加える荷重を示す平面図であり、図１４（ｂ）は、オブジェクトの挙動を示す平面図である。
【０１５１】
図１４では、ｎ−１フレーム目の回転角のデータＡＹ（ｎ−１）が０であり、第１の値ＷＲ（ｎ）が−０．３であり、第２の値ＷＬ（ｎ）も−０．３である。
【０１５２】
第２の値ＷＬ（ｎ）から第１の値ＷＲ（ｎ）を減算した値が０であるため、ｎフレーム目の回転角のデータＡＹ（ｎ）は、ｎ−１フレーム目の回転角のデータＡＹ（ｎ−１）と同じ値である。従って、オブジェクト１００の向きは変化しない。
【０１５３】
また、第１の値ＷＲ（ｎ）と第２の値ＷＬ（ｎ）との加算値が−０．６であるため、オブジェクト１００は０．６の大きさに対応する速度で、Ｚ軸の負の方向に進行する。
【０１５４】
図１５は、オブジェクトの挙動の具体例（その２）を示す図である。図１５（ａ）は、第１のコントローラに加える荷重を示す平面図であり、図１５（ｂ）は、オブジェクトの挙動を示す平面図である。
【０１５５】
図１５は、ｎ−１フレーム目の回転角のデータＡＹ（ｎ−１）が０ではなく、かつ、第１の値ＷＲ（ｎ）が−０．３であり、第２の値ＷＬ（ｎ）も−０．３である場合である。
【０１５６】
第２の値ＷＬ（ｎ）から第１の値ＷＲ（ｎ）を減算した値が０であるため、ｎフレーム目の回転角のデータＡＹ（ｎ）は、ｎ−１フレーム目の回転角のデータＡＹ（ｎ−１）と同じ値である。このため、オブジェクト１００の向きは、ｎ−１フレーム目のオブジェクトの向きと同じ向きに維持される。
【０１５７】
第１の値ＷＲ（ｎ）と第２の値ＷＬ（ｎ）との加算値が−０．６であるため、図１５の場合には、オブジェクト１００は、回転角のデータＡＹ（ｎ）に対応する方向に、０．６の大きさに対応する速度で進行する。
【０１５８】
図１６は、オブジェクトの挙動の具体例（その３）を示す図である。図１６（ａ）は、第１のコントローラに加える荷重を示す平面図であり、図１６（ｂ）は、オブジェクトの挙動を示す平面図である。
【０１５９】
図１６は、第１の値ＷＲ（ｎ）′が０．３であり、第２の値ＷＬ（ｎ）が−０．３である場合である。
【０１６０】
第２の値ＷＬ（ｎ）から第１の値ＷＲ（ｎ）′を減算した値が−０．６であるため、ｎフレーム目の回転角のデータＡＹ（ｎ）は、ｎ−１フレーム目の回転角のデータＡＹ（ｎ−１）に対して、−０．６だけ変化する。より具体的には、上記の換算式を用いた場合には、−０．６ｋπだけ回転角の値が変化する。図１６における紙面手前方向がＹ軸の正の方向であり、紙面奥行き方向がＹ軸の負の方向であり、回転軸に対して左回りの回転が負である。従って、図１６を正面から見た場合には、オブジェクト１００の回転方向は右回りとなる。
【０１６１】
また、第１の値ＷＲ（ｎ）′と第２の値ＷＬ（ｎ）との加算値が０であるため、オブジェクト１００の中心の位置座標は変化しない。
【０１６２】
従って、図１６の場合には、オブジェクト１００は、移動することなく、その場で、０．６の大きさに対応する角度だけ右旋回することとなる。
【０１６３】
図１７は、オブジェクトの挙動の具体例（その４）を示す図である。図１７（ａ）は、第１のコントローラに加える荷重を示す平面図であり、図１７（ｂ）は、オブジェクトの挙動を示す平面図である。
【０１６４】
図１７は、第１の値ＷＲ（ｎ）が−０．３であり、第２の値ＷＬ（ｎ）が−０．１である場合である。
【０１６５】
第２の値ＷＬ（ｎ）から第１の値ＷＲ（ｎ）を減算した値が０．２であるため、ｎフレーム目の回転角のデータＡＹ（ｎ）は、ｎ−１フレーム目の回転角のデータＡＹ（ｎ−１）に対して、＋０．２だけ変化する。より具体的には、上記の換算式を用いた場合には、＋０．２ｋπだけ回転角の値が変化する。図１７における紙面手前方向がＹ軸の正の方向であり、紙面奥行き方向がＹ軸の負の方向であり、回転軸に対して右回りの回転が正である。従って、図１７を正面から見た場合には、オブジェクト１００の回転方向は左回りとなる。
【０１６６】
また、第１の値ＷＲ（ｎ）と第２の値ＷＬ（ｎ）との加算値は−０．４である。
【０１６７】
従って、図１７の場合には、オブジェクト１００は、０．２に対応する角度だけ左回りに回転しながら、０．４の大きさに対応する速度で進行する。
【０１６８】
図１８は、オブジェクトの挙動の具体例（その５）を示す図である。図１８（ａ）は、第１のコントローラに加える荷重を示す平面図であり、図１８（ｂ）は、オブジェクトの挙動を示す平面図である。
【０１６９】
図１８は、第１の値ＷＲ（ｎ）が−０．３であり、第２の値ＷＬ（ｎ）′が０．１である場合である。
【０１７０】
第２の値ＷＬ（ｎ）′から第１の値ＷＲ（ｎ）を減算した値が０．４であるため、ｎフレーム目の回転角のデータＡＹ（ｎ）は、ｎ−１フレーム目の回転角のデータＡＹ（ｎ−１）に対して、＋０．４だけ変化する。より具体的には、上記の換算式を用いた場合には、＋０．４ｋπだけ回転角の値が変化する。図１８における紙面手前方向がＹ軸の正の方向であり、紙面奥行き方向がＹ軸の負の方向であり、回転軸に対して右回りの回転が正である。従って、図１８を正面から見た場合には、オブジェクト１００の回転方向は左回りとなる。
【０１７１】
また、第１の値ＷＲ（ｎ）と第２の値ＷＬ（ｎ）′との加算値は−０．２である。
【０１７２】
従って、図１８の場合には、オブジェクト１００は、０．４に対応する角度だけ左回りに回転しながら、０．２の大きさに対応する速度で進行する。
【０１７３】
このようにして、オブジェクト１００の挙動が決定され、決定された挙動に対応するように、テレビモニタ４の画面のオブジェクト１００が挙動する。
【０１７４】
本実施形態におけるゲームにおいては、すべての旗１０２を獲得し終わると、ゲームセットとなる。
【０１７５】
このように、本実施形態によれば、プレイヤが支持される支持部７８の右前部に設けられる第１の荷重センサ８２ａの出力に基づく第１の荷重データと、支持部７８の右後部に設けられる第２の荷重センサ８２ｂの出力に基づく第２の荷重データとの差に基づいて、第１の値を算出し、支持部７８の左前部に設けられる第３の荷重センサ８２ｃの出力に基づく第３の荷重データと、支持部７８の左後部の第４の荷重センサ８２ｄの出力に基づく第４の荷重データとの差に基づいて、第２の値を算出する。そして、これら第１の値と第２の値とに基づいて、表示画面上に表示されるオブジェクトの挙動を決定する。従って、本実施形態によれば、オブジェクト１００の旋回等をも行うことも可能となり、臨場感のあるゲームを楽しむことができる。
【０１７６】
［変形実施形態］
上記実施形態に限らず種々の変形が可能である。
【０１７７】
例えば、上記実施形態では、コントローラによりホバーマシンの挙動を決定する場合を例に説明したが、挙動が決定される対象となるオブジェクトはホバーマシンに限定されるものではない。例えば、四輪車、二輪車、一輪車等の挙動を決定する場合にも本発明を適用することができる。例えば、第１の値と第２の値との和が正の場合に四輪車、二輪車、一輪車等のオブジェクトを前進させ、第１の値と第２の値との和が負の場合に四輪車、二輪車、一輪車等のオブジェクトを後退させるようにしてもよい。また、第１の値と第２の値との和が負の場合に四輪車、二輪車、一輪車等のオブジェクトを前進させ、第１の値と第２の値との和が正の場合に四輪車、二輪車、一輪車等のオブジェクトを後退させるようにしてもよい。即ち、上記実施形態において例示したオブジェクトと同様の方向に、オブジェクトを移動させてもよいし、上記実施形態において例示したオブジェクトと反対方向にオブジェクトを移動させてもよい。また、上記実施形態において例示したオブジェクトと同様に、オブジェクトの向きを変化させてもよいし、上記実施形態において例示したオブジェクトと反対にオブジェクトの向きを変化させてもよい。
【符号の説明】
【０１７８】
２…テレビ台
４…テレビモニタ
６…プレイヤ
８ａ、８ｂ…足
１０…ゲーム装置
１２…ゲーム装置本体
２０…第１のコントローラ
２２…第２のコントローラ
２８…各種操作ボタン
２８ａ…電源ボタン
２８ｂ…十字ボタン
４０…ＣＰＵ
４２…システムメモリ（ＲＡＭ）
４４…バスアービタ
４６…プログラムデータ記憶装置又は記憶媒体
４８…ＢＯＯＴＲＯＭ
５０…レンダリングプロセッサ
５２…グラフィックメモリ
５４…ビデオＤＡＣ
５６…サウンドプロセッサ
５８…サウンドメモリ
６０…オーディオＤＡＣ
６２…通信インターフェース
６４…ＬＡＮアダプタ
６８…無線受信部
７０…ペリフェラルインターフェース
７８…支持部
８０ａ〜８０ｄ…脚
８２ａ〜８２ｄ…荷重センサ
８４ａ〜８４ｄ…増幅器
８６…ＡＤコンバータ
８８…ＣＰＵ
９０…無線送信部
１００…オブジェクト
１０２…旗
１０４…最高記録
１０６…残りの旗の本数
１０８…経過時間
１１０…キャラクタ
１１２ａ〜１１２ｄ…ジェットエンジン
１１４…障害物
【図１】
2011019817.tif 000003
【図２】
2011019817.tif 000004
【図３】
2011019817.tif 000005
【図４】
2011019817.tif 000006
【図５】
2011019817.tif 000007
【図６】
2011019817.tif 000008
【図７】
2011019817.tif 000009
【図８】
2011019817.tif 000010
【図９】
2011019817.tif 000011
【図１０】
2011019817.tif 000012
【図１１】
2011019817.tif 000013
【図１２】
2011019817.tif 000014
【図１３】
2011019817.tif 000015
【図１４】
2011019817.tif 000016
【図１５】
2011019817.tif 000017
【図１６】
2011019817.tif 000018
【図１７】
2011019817.tif 000019
【図１８】
2011019817.tif 000020