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