説明

ゲームプログラムおよびゲーム装置

【課題】加速度センサを備えた入力装置を用いた操作入力において、当該入力装置を用いて描画したオブジェクトを自由度の高い自然な動きで補正するゲームプログラムおよびゲーム装置を提供する。
【解決手段】入力装置自体の動きを検出する動きセンサから出力される動きデータに基づいて、オブジェクトに対応付けられた移動開始座標を算出し、基準軌跡との第1差分座標を算出する。また、オブジェクトに対応付けられた目標座標を算出し、基準軌跡との第2差分座標を算出する。そして、経過時間に応じて、第1差分座標から第2差分座標まで変化する変化差分座標を算出し、基準軌跡に変化差分座標を加算して補正座標を算出する。仮想ゲーム空間において補正座標に対応する位置にオブジェクトを配置して、表示装置にそのオブジェクトを表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームプログラムおよびゲーム装置に関し、より特定的には、加速度センサを備えた入力装置を用いて描画したオブジェクトの補正を行うゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来、描画されるオブジェクトの描画位置を補正して表示するゲーム装置が開示されている(例えば、特許文献1参照)。上記ゲーム装置は、プレイヤオブジェクトが所定のエリアに位置しているときに所定の操作を行うと、予め用意された基準軌道に近づくようにプレイヤオブジェクトの移動する軌道を補正する。具体的には、プレイヤオブジェクトの位置する座標と上記基準軌道上の座標との差分に所定の係数を乗じたものを、プレイヤオブジェクトの位置する座標に順次加算していくことにより、徐々に基準軌道へプレイヤオブジェクトの位置が収束するように補正している。
【特許文献1】特開2004−230070号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上記特許文献1に開示されたゲーム装置によって、オブジェクトの描画位置の補正を行ってオブジェクトを描画する際には、予め決められた基準軌跡に収束する位置に補正されるため、補正処理が行われている間は高い自由度でオブジェクトを操作することができない。また、上記ゲーム装置は、オブジェクト内の所定の1点の座標に対して補正を行うため、補正を行った際の描画されるオブジェクトの傾きが座標の補正と連動しておらず、オブジェクトが不自然な動きとなることもある。
【0004】
それ故に、本発明の目的は、加速度センサを備えた入力装置を用いた操作入力において、当該入力装置を用いて描画したオブジェクトを自由度の高い自然な動きで補正するゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0005】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0006】
第1の発明は、入力装置(7)自体の動きを検出する動きセンサ(701)を備えた入力装置で検出された動きデータを用いて、仮想ゲーム空間に配置されたオブジェクト(BO)を移動させて表示装置(2)に表示するゲーム装置(5)のコンピュータ(30)で実行されるゲームプログラムである。オブジェクトが仮想ゲーム空間内を移動する基準軌跡(Dh)がメモリ(33)に記憶される(ステップ91を実行するCPU30、以下、単にステップ番号のみ記載する)。ゲームプログラムは、動きデータ取得ステップ(S51)、開始座標算出ステップ(S52)、第1差分算出ステップ(S93)、目標座標算出ステップ(S98)、第2差分算出ステップ(S99)、変化差分座標算出ステップ(S102)、補正座標算出ステップ(S104)、および表示制御ステップ(S105)を、コンピュータに実行させる。動きデータ取得ステップは、動きセンサから出力される動きデータ(Da)を取得する。開始座標算出ステップは、動きデータ取得ステップで取得した動きデータに基づいて、仮想ゲーム空間におけるオブジェクトに対応付けられた(PO)移動開始座標を算出する。第1差分算出ステップは、メモリに記憶された基準軌跡から移動開始座標に対応するその基準軌跡上の第1対応点を算出し、その第1対応点と移動開始座標との第1差分座標(Dj)を算出する。目標座標算出ステップは、仮想ゲーム空間におけるオブジェクトに対応付けられた目標座標(Dm)を算出する。第2差分算出ステップは、メモリに記憶された基準軌跡から目標座標に対応するその基準軌跡上の第2対応点を算出し、その第2対応点と目標座標との第2差分座標(Do)を算出する。変化差分座標算出ステップは、所定条件が満たされた後(S55でYes)の経過時間(フレーム数)に応じて、第1差分座標から第2差分座標まで変化する変化差分座標を算出する。補正座標算出ステップは、経過時間に応じた基準軌跡上の座標に、その経過時間に応じて算出された変化差分座標を加算して補正座標(Dq)を算出する。表示制御ステップは、仮想ゲーム空間において補正座標に対応する位置にオブジェクトを配置して、表示装置にそのオブジェクトを表示する。
【0007】
第2の発明は、上記第1の発明において、開始座標算出ステップでは、所定条件が満たされたとき、移動開始座標が算出される。第1差分算出ステップでは、所定条件が満たされたとき、第1差分座標が算出され。目標座標算出ステップでは、所定条件が満たされたとき、目標座標が算出される。第2差分算出ステップでは、所定条件が満たされたとき、第2差分座標が算出される。
【0008】
第3の発明は、上記第1の発明において、変化差分座標算出ステップでは、経過時間に応じて一定の割合で第1差分座標から第2差分座標まで変化するように変化差分座標が算出される。
【0009】
第4の発明は、上記第1の発明において、判定ステップ(S55)を、さらにコンピュータに実行させる。判定ステップは、動きデータ取得ステップで取得した動きデータが示す値が所定値以上になったときに所定条件が満たされたことを判定する。変化差分座標算出ステップでは、判定ステップで所定条件が満たされたことが判定された後の経過時間に応じて、変化差分座標が算出される。
【0010】
第5の発明は、上記第1の発明において、目標座標算出ステップでは、所定のゲーム処理に応じて変化するゲームパラメータ(T)に基づいて、その仮想ゲーム空間における目標座標が算出される。
【0011】
第6の発明は、上記第1の発明において、目標座標算出ステップでは、仮想ゲーム空間に設定された所定平面(M)上に目標座標が算出される。第2差分算出ステップでは、所定平面と基準軌跡との交点(Cp)が、目標座標に対応するその基準軌跡上の点とされる。
【0012】
第7の発明は、上記第1の発明において、他オブジェクト移動ステップ(S95〜S97)を、さらにコンピュータに実行させる。他オブジェクト移動ステップは、仮想ゲーム空間において他のオブジェクト(Ba)を移動させる。目標座標算出ステップでは、他のオブジェクトの移動予測(T)に基づいて、仮想ゲーム空間に設定された所定平面と他のオブジェクトとが交差する予測交差位置(Cp)を予測し、仮想ゲーム空間において他のオブジェクトとその予測交差位置で接触するオブジェクトに対応付けた目標座標を算出する。
【0013】
第8の発明は、動きセンサは、入力装置自体に加わる少なくとも1軸方向の加速度を検出する加速度センサである。動きデータは、加速度センサが検出した加速度を示す加速度データである。
【0014】
第9の発明は、入力装置自体の動きを検出する動きセンサを備えた入力装置で検出された動きデータを用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置のコンピュータで実行されるゲームプログラムである。仮想ゲーム空間内の移動に応じたオブジェクトの傾き変化の基準を示す基準傾き推移(Dh)がメモリに記憶される。ゲームプログラムは、動きデータ取得ステップ、開始傾き算出ステップ(S53)、第1差分算出ステップ(S94)、目標傾き算出ステップ(S98)、第2差分算出ステップ(S100)、変化差分傾き算出ステップ(S103)、補正傾き算出ステップ(S104)、および表示制御ステップをコンピュータに実行させる。動きデータ取得ステップは、動きセンサから出力される動きデータを取得する。開始傾き算出ステップは、動きデータ度取得ステップで取得した動きデータに基づいて、仮想ゲーム空間でオブジェクトを移動させる開始時点でのそのオブジェクトの傾きを算出する。第1差分算出ステップは、メモリに記憶された基準傾き推移から開始傾き算出ステップで算出した傾きに対応する基準傾きを算出し、その基準傾きと開始傾き算出ステップで算出した傾きとの第1差分傾き(Dk)を算出する。目標傾き算出ステップは、仮想ゲーム空間におけるオブジェクトの目標傾き(Dn)を算出する。第2差分算出ステップは、メモリに記憶された基準傾き推移から目標傾きに対応する基準傾きを算出し、その基準傾きと目標傾きとの第2差分傾き(Dp)を算出する。変化差分傾き算出ステップは、所定条件が満たされた後の経過時間に応じて、第1差分傾きから第2差分傾きまで変化する変化差分傾きを算出する。補正傾き算出ステップは、経過時間に応じた基準傾き推移に対して、その経過時間に応じて算出された変化差分傾きを加算して補正傾き(Dr)を算出する。表示制御ステップは、仮想ゲーム空間におけるオブジェクトの傾きを補正傾きとして、表示装置にそのオブジェクトを表示する。
【0015】
第10の発明は、上記第9の発明において、開始傾き算出ステップでは、所定条件が満たされたとき、開始時点でのそのオブジェクトの傾きが算出される。第1差分算出ステップでは、所定条件が満たされたとき、第1差分傾きが算出される。目標傾き算出ステップでは、所定条件が満たされたとき、目標傾きが算出される。第2差分算出ステップでは、所定条件が満たされたとき、第2差分傾きが算出される。
【0016】
第11の発明は、上記第9の発明において、変化差分傾き算出ステップでは、経過時間に応じて一定の割合で第1差分傾きから第2差分傾きまで変化するように変化差分傾きが算出される。
【0017】
第12の発明は、上記第9の発明において、判定ステップを、さらにコンピュータに実行させる。判定ステップは、加速度取得ステップで取得した加速度データが示す加速度が所定値以上になったときに所定条件が満たされたことを判定する。変化差分傾き算出ステップでは、判定ステップで所定条件が満たされたことが判定された後の経過時間に応じて、変化差分傾きが算出される。
【0018】
第13の発明は、上記第9の発明において、目標傾き算出ステップでは、所定のゲーム処理に応じて変化するゲームパラメータに基づいて、その仮想ゲーム空間における目標傾きが算出される。
【0019】
第14の発明は、上記第8の発明において、目標傾き算出ステップでは、仮想ゲーム空間に設定された所定平面上に配置されたオブジェクトに対して目標傾きが算出される。第2差分算出ステップでは、基準傾き推移において所定平面上に配置されたオブジェクトの傾きが、目標傾きに対応する基準傾きとされる。
【0020】
第15の発明は、上記第9の発明において、他オブジェクト移動ステップを、さらにコンピュータに実行させる。他オブジェクト移動ステップは、仮想ゲーム空間において他のオブジェクトを移動させる。目標傾き算出ステップでは、他のオブジェクトの移動予測に基づいて、仮想ゲーム空間に設定された所定平面と他のオブジェクトとが交差する予測交差位置を予測し、その予測交差位置に配置されたオブジェクトの傾きを目標傾きとして算出する。
【0021】
第16の発明は、動きセンサは、入力装置自体に加わる少なくとも1軸方向の加速度を検出する加速度センサである。動きデータは、加速度センサが検出した加速度を示す加速度データである。
【0022】
第17の発明は、入力装置自体の動きを検出する動きセンサを備えた入力装置で検出された動きデータを用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置である。ゲーム装置は、メモリ、動きデータ取得手段、開始座標算出手段、第1差分算出手段、目標座標算出手段、第2差分算出手段、変化差分座標算出手段、補正座標算出手段、および表示制御手段を備える。メモリは、オブジェクトが仮想ゲーム空間内を移動する基準軌跡が記憶される。動きデータ取得手段は、動きセンサから出力される動きデータを取得する。開始座標算出手段は、動きデータ取得手段が取得した動きデータに基づいて、仮想ゲーム空間におけるオブジェクトに対応付けられた移動開始座標を算出する。第1差分算出手段は、メモリに記憶された基準軌跡から移動開始座標に対応するその基準軌跡上の第1対応点を算出し、その第1対応点と移動開始座標との第1差分座標を算出する。目標座標算出手段は、仮想ゲーム空間におけるオブジェクトに対応付けられた目標座標を算出する。第2差分算出手段は、メモリに記憶された基準軌跡から目標座標に対応するその基準軌跡上の第2対応点を算出し、その第2対応点と目標座標との第2差分座標を算出する。変化差分座標算出手段は、所定条件が満たされた後の経過時間に応じて、第1差分座標から第2差分座標まで変化する変化差分座標を算出する。補正座標算出手段は、経過時間に応じた基準軌跡上の座標に、その経過時間に応じて算出された変化差分座標を加算して補正座標を算出する。表示制御手段は、仮想ゲーム空間において補正座標に対応する位置にオブジェクトを配置して、表示装置にそのオブジェクトを表示する。
【0023】
第18の発明は、入力装置自体の動きを検出する動きセンサを備えた入力装置で検出された動きデータを用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置である。ゲーム装置は、メモリ、動きデータ取得手段、開始傾き算出手段、第1差分算出手段、目標傾き算出手段、第2差分算出手段、変化差分傾き算出手段、補正傾き算出手段、および表示制御手段を備える。メモリは、仮想ゲーム空間内の移動に応じたオブジェクトの傾き変化の基準を示す基準傾き推移が記憶される。動きデータ取得手段は、動きセンサから出力される動きデータを取得する。開始傾き算出手段は、動きデータ取得手段が取得した動きデータに基づいて、仮想ゲーム空間でオブジェクトを移動させる開始時点でのそのオブジェクトの傾きを算出する。第1差分算出手段は、メモリに記憶された基準傾き推移から開始傾き算出手段で算出した傾きに対応する基準傾きを算出し、その基準傾きと開始傾き算出手段が算出した傾きとの第1差分傾きを算出する。目標傾き算出手段は、仮想ゲーム空間におけるオブジェクトの目標傾きを算出する。第2差分算出手段は、メモリに記憶された基準傾き推移から目標傾きに対応する基準傾きを算出し、その基準傾きと目標傾きとの第2差分傾きを算出する。変化差分傾き算出手段は、所定条件が満たされた後の経過時間に応じて、第1差分傾きから第2差分傾きまで変化する変化差分傾きを算出する。補正傾き算出手段は、経過時間に応じた基準傾き推移に対して、その経過時間に応じて算出された変化差分傾きを加算して補正傾きを算出する。表示制御手段は、仮想ゲーム空間におけるオブジェクトの傾きを補正傾きとして、表示装置にそのオブジェクトを表示する。
【発明の効果】
【0024】
上記第1の発明によれば、オブジェクトが移動する始点座標および途中や終点座標を自由に設定することができる為に、基準軌跡に沿いつつ自由度の高いオブジェクトの移動軌跡の補正を行うことが可能となる。したがって、入力装置を用いて描画したオブジェクトを自由度の高い自然な動きで補正して、リアルな表現が可能となる。
【0025】
上記第2の発明によれば、所定条件が満たされた時点で、オブジェクトが移動する目標位置および当該目標位置における基準軌跡との差分を求め、基準軌跡に対する目標位置における補正量を得る。つまり、ゲーム処理中において常にフレーム毎に演算を行うのではなく、所定条件を満たされたときのみ演算するため、処理負荷が軽減される。
【0026】
上記第3の発明によれば、移動開始から目標位置までの基準軌跡に対する補正量が一定の割合で変化するため、基準軌跡に沿ったスムーズな移動軌跡を得ることができる。
【0027】
上記第4の発明によれば、入力装置が出力した動きデータの値が所定値以上になったときに所定条件を満たしたと判定するため、プレイヤが入力装置を把持して振る等の操作に応じて、仮想ゲーム空間のオブジェクトの移動を開始させることができる。
【0028】
上記第5の発明によれば、ゲーム処理に応じて変化するゲームパラメータに基づいて目標座標が算出されるため、当該目標位置が固定値とはならずに自由な位置に設定されるが、目標位置が変化しても基準軌跡に沿いつつ自由度の高いオブジェクトの移動軌跡の補正を行うことができる。
【0029】
上記第6の発明によれば、所定平面上への到達目標を基準として移動軌跡の補正を行うことができる。
【0030】
上記第7の発明によれば、基準軌跡に沿って、仮想ゲーム空間を移動する他のオブジェクトと交差するようなオブジェクトの移動軌跡の補正を行うことができる。
【0031】
上記第8の発明によれば、入力装置に内蔵された加速度センサが出力する加速度データが示す値に演算を施すことによって、当該入力装置の動きを算出することができるため、加速度データを動きデータとして用いることができる。
【0032】
上記第9〜第16の発明によれば、仮想ゲーム空間におけるオブジェクトの傾きについても補正しても、上述したオブジェクトの位置と同様の効果を得ることができる。
【0033】
また、本発明のゲーム装置によれば、上述したゲームプログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0034】
図1を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置の一例の据置型のゲーム装置を含むゲームシステムについて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の外観図であり、図2はゲーム装置本体5のブロック図である。以下、当該ゲームシステム1について説明する。
【0035】
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置本体5から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明の情報処理プログラムの一例のゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタなどの画像などのゲームに必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
【0036】
また、ゲーム装置本体5は、通信ユニット6を内蔵する。通信ユニット6は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とは無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置本体5の前部主面には、当該ゲーム装置本体5の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトスイッチ等が設けられている。
【0037】
また、ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ38が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置本体5は、フラッシュメモリ38に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置本体5のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0038】
コントローラ7は、通信ユニット6を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報などの送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるゲーム空間に登場するプレイヤキャラクタ等を操作したりするための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体5の通信ユニット6から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
【0039】
図2において、ゲーム装置本体5は、各種プログラムを実行する例えばCPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35などが接続される。また、メモリコントローラ31には、所定のバスを介して、通信ユニット6、ビデオI/F(インターフェース)37、フラッシュメモリ38、オーディオI/F39、およびディスクI/F41が接続され、それぞれのインターフェースにモニタ2、スピーカ2a、およびディスクドライブ40が接続されている。
【0040】
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0041】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0042】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0043】
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。上述したように通信ユニット6は、コントローラ7からの送信データを受信し、当該送信データをCPU30へ出力する。また、通信ユニット6は、CPU30から出力された送信データをコントローラ7の通信部75へ送信する。ビデオI/F37には、モニタ2が接続される。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置本体5のバスやオーディオI/F39に出力する。
【0044】
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
【0045】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0046】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0047】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
【0048】
ハウジング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の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0049】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0050】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から通信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0051】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5のスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0052】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
【0053】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング70の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0054】
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の下面(操作ボタン72iが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をX軸正方向とする。
【0055】
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
【0056】
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。また、図示しない無線モジュール753(図7参照)およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子703が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の回転を良好な感度でゲーム装置本体5等が判定することができる。
【0057】
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0058】
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体5から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0059】
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
【0060】
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
【0061】
撮像情報演算部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自体の方向を変えることによってその撮像方向を変更することができる。
【0062】
コントローラ7は、3軸(X、Y、Z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、X軸とY軸(または他の対になった軸)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。さらに、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、XYZ軸のいずれか1軸に沿った直線加速度のみを検知する1軸の加速度検出手段を使用してもよい。例えば、この3軸、2軸、または1軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸、2軸、または1軸の加速度センサ701が提供されてもよい。
【0063】
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、その1軸、2軸、または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0064】
しかしながら、加速度センサ701から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ701からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを判定することができる。このように、加速度センサ701をマイコン751(またはゲーム装置本体5に含まれるCPU30等の他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢、または位置を判定することができる。同様に、加速度センサ701を備えるコントローラ7がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7の様々な動きおよび/または位置を算出することができる。他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。加速度センサ701でそれぞれ検知された加速度を示すデータは通信部75に出力される。
【0065】
他の実施形態の例では、コントローラ7の動きを検出する動きセンサとして、回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるMEMSジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ701と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転(または角速度)を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【0066】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、2つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロスコープとの基本的な差異と同様にジャイロスコープの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【0067】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体5から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。
【0068】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を通信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から通信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、通信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置本体5の通信ユニット6でその電波信号を受信し、ゲーム装置本体5で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体5のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0069】
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、本ゲーム装置本体5で行うゲームの概要について説明する。図8に示すように、コントローラ7は、全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、コントローラ7の上面をプレイヤ側に向けて起立させた状態(つまり、コントローラ7の前面が上方を向く)でプレイヤが片手または両手でコントローラ7を把持し、あたかも野球のバットを握っているようにコントローラ7を把持する。
【0070】
ここで、説明を具体的にするために、モニタ2が設置されてコントローラ7を把持するプレイヤが存在する空間に対して、互いに直交するXs、Ys、およびZs軸を定義する。具体的には、プレイヤとモニタ2とを結ぶ水平方向をXs軸とし、プレイヤからモニタ2へ向かう方向をXs軸正方向とする。上記Xs軸に垂直な水平方向をYs軸とし、モニタ2の表示画面に向かって右方向(図8では、モニタ2の背面側を示しているために左方向)をYs軸正方向とする。そして、空間の鉛直方向をZs軸とし、上方向をZs軸正方向とする。
【0071】
プレイヤは、モニタ2で表現されているゲーム画像に合わせて、コントローラ7を上下左右に移動させたり、コントローラ7を起立した状態から傾けたりすることによって、コントローラ7から操作情報(具体的には、X、Y、およびZ軸方向加速度データ)をゲーム装置本体5に与える。また、プレイヤがコントローラ7を左右に振ることによって、コントローラ7から操作情報をゲーム装置本体5に与える。例えば、図9に示すように、コントローラ7の上面をYs軸負方向に向け、前面をZs軸正方向に向けて起立させて静止した状態では、Zs軸負方向の重力加速度によってZ軸負方向の加速度がコントローラ7に加わる。なお、図9は、モニタ2に向かう方向(つまり、Xs軸正方向)に見たコントローラ7を示しているために、図8とは反対の方向に描かれている。そして、プレイヤがコントローラ7をYs軸正方向に移動させたとき、さらにY軸正方向の加速度がコントローラ7に加わる。また、上記起立させた状態からプレイヤがコントローラ7をYs軸正方向に傾けたとき、その傾倒角度に応じてコントローラ7に加わる重力加速度の方向がZ軸負方向からY軸正方向へ変化していく。また、プレイヤがコントローラ7を左右に振ることによって、その遠心力に応じてZ軸正方向の加速度がコントローラ7に加わる。このようなコントローラ7に加わる加速度の変化は、加速度センサ701によって検出できるため、加速度センサ701から出力されるX、Y、およびZ軸方向加速度データに対して追加の処理を行うことによって、コントローラ7の傾きや動きを算出することができる。一般的に、動作に応じて生じる加速度を検出する場合、加速度センサ701から出力される加速度ベクトル(あるいは、加速度の正負)は、コントローラ7の加速方向とは真逆のベクトルとなるため、検出した加速度の方向を考慮してコントローラ7の傾きや動きを算出することが必要であることは言うまでもない。
【0072】
図10に示すように、コントローラ7から受信したX、Y、およびZ軸方向加速度データに応じて、モニタ2に野球ゲーム等が表現される。具体的には、仮想ゲーム空間に設定されたフィールド(例えば、野球場)の一部が3次元のゲーム画像としてモニタ2に表現される。そして、仮想ゲーム空間に、プレイヤが操作する打者を示すプレイヤキャラクタPC、プレイヤキャラクタPCが握るバットオブジェクトBO、および当該プレイヤキャラクタPCの相手選手となる相手キャラクタ等が配置されてモニタ2に表現される。以下、説明を具体的にするために野球ゲームを表現するゲームプログラムが光ディスク4に記憶されており、CPU30が野球ゲーム処理の中でコントローラ7の傾斜および動きに応じて、バットオブジェクトBOが仮想ゲーム空間内を移動した後に、プレイヤキャラクタPCがバットオブジェクトBOをスイングする処理について説明する。
【0073】
プレイヤキャラクタPCは、バットオブジェクトBOを持っており、仮想ゲーム空間に設定されたフィールド上に配置される。そして、プレイヤがコントローラ7を倒したり動かしたりする動作に応じて、バットオブジェクトBOの位置や姿勢が変化して、プレイヤキャラクタPCがバットオブジェクトBOを持つ構え方が変化する。また、プレイヤがコントローラ7を左右に振る動作に応じて、プレイヤキャラクタPCがバットオブジェクトBOをスイングする。つまり、プレイヤがコントローラ7を把持して動かす動作を行うことによって、同様にバットオブジェクトBOを構える動作やスイングする動作をプレイヤキャラクタPCが表現することになり、プレイヤはあたかもコントローラ7を野球バットとして持って野球をしているような仮想的なスポーツゲームを体験できる。
【0074】
例えば、プレイヤが起立した状態のコントローラ7を左右に動かしたとき、そのコントローラ7の動作に応じて即時にバットオブジェクトBOが仮想ゲーム空間内を移動する。一方、プレイヤが起立した状態のコントローラ7を倒すような動作をしたとき、そのコントローラ7の傾斜角度に応じてバットオブジェクトBOが所定の割合で倒れる。つまり、バットオブジェクトBOは、コントローラ7の左右の動作に対しては即時に反応して移動するが、コントローラ7が倒れる動作に対しては遅れて反応して徐々に倒れていく。一般的に、現実世界である程度重量のある長軸部材の一端を持って移動させたり傾倒角度を変えたりしようとすると、当該一端は即時に移動するが他端が遅れて追随して移動する現象が生じる。例えば、プレイヤは、コントローラ7を倒す角度を素早く変化させることができる、しかしながら、コントローラ7の傾斜角度と同様にバットオブジェクトBOの傾倒角度を変化させてしまうと、プレイヤキャラクタPCが軽量の長軸部材を握っている感じとなり、プレイヤに非現実的な感覚を与えてしまう。また、コントローラ7は、プレイヤが把持する手の微妙な動きによって傾斜角度が変化しているが、この変化にバットオブジェクトBOが敏感に反応すると、コントローラ7を操作するプレイヤの動きに合わせてバットオブジェクトBOを動かしているつもりでも、当該バットオブジェクトBOが不自然な動きとなる。しかしながら、本実施形態では、コントローラ7の左右の動作や倒す動作に対してバットオブジェクトBOの一端(支点位置)は即時に反応して移動するが、他端が即時移動させた場合の位置へ追従するように遅れて反応して徐々に倒れていくため、野球バットを表すオブジェクトを自然に描画でき、プレイヤがコントローラ7に加えた動作を反映した野球ゲームを表現することができる。
【0075】
さらに、プレイヤがコントローラ7を左右に振ったとき、そのコントローラ7のスイング動作に応じて即時にプレイヤキャラクタPCがバットオブジェクトBOをスイングする動作を開始する。具体的には、上述したように変化する構えから、相手選手が任意の位置に投じたボールを打撃するように、バットオブジェクトBOがスイングされる。このように、バットオブジェクトBOがスイングされる軌道において、そのスイング開始始点とそのスイング途中の点(例えば、ボール打撃点やボールがある起立平面上に到達する点)とが固定位置ではない。したがって、バットオブジェクトBOをスイングするモーションデータを軌跡毎に用意する場合、無数のモーションデータが必要となる。後述により明らかとなるが、本発明では、1つの基準モーションデータを用意し、スイング開始始点およびスイング途中点に応じて当該基準モーションデータを補正することによってバットオブジェクトBOをスイングする動作を表現している。
【0076】
次に、図11および図12を参照して、バットオブジェクトBOを構えたときの可動範囲および可倒範囲の一例について説明する。なお、図11は、バットオブジェクトBOの構え動作を説明するために仮想ゲーム空間を水平方向から見た図である。図12は、バットオブジェクトBOの構え動作を説明するために仮想ゲーム空間を上方向から見た図である。
【0077】
図11および図12において、仮想ゲーム空間には互いに直交するxyz軸が定義されており、モニタ2に表示される仮想ゲーム空間の左右方向がx軸、上下方向がy軸、奥行方向がz軸となる。そして、バットオブジェクトBOの一部分(例えば、プレイヤキャラクタPCがバットオブジェクトBOを握るグリップの位置等の下端部分)に当該バットオブジェクトBOの配置位置を示す点POが設けられ、当該点POのxyz軸座標値によってバットオブジェクトBOの仮想ゲーム空間における位置が設定される。そして、点POを中心に傾く角度(例えば、方向ベクトル)によってバットオブジェクトBOの仮想ゲーム空間における傾倒が設定される。
【0078】
ここで、バットオブジェクトBOの配置位置および傾倒角度については、コントローラ7の前面を上に向けて起立させて静止させたとき(図9参照)に対応する基準配置位置および基準傾倒角度がそれぞれ設けられている。図11および図12においては、基準配置位置に点POが配置され基準傾倒角度で傾いたバットオブジェクトBOを実線で表現し、基準配置位置および基準傾倒角度から変化した状態で表現されるバットオブジェクトBOを破線で表現している。本実施例においては、コントローラ7の前面を上に向けて起立させて静止させたときを基準にしているために、基準傾倒角度をy軸正方向(仮想ゲーム空間における上方向)としている。
【0079】
仮想ゲーム空間において点POが移動できる範囲として、可動範囲が設けられる。可動範囲は、基準配置位置を中心にx軸の正負方向およびz軸方向の正負方向にそれぞれ所定幅(後述するx軸方向移動幅wxおよびz軸方向移動幅wz)を有している。本実施例では、加速度センサ701が検出可能な加速度の最大値(例えば、各軸に対して最大2G)に対応して点POが移動可能な可動範囲の最大範囲(つまり、x軸およびz軸方向に対する可動範囲の最大/最小値)を設定し、加速度センサ701の出力値を可動範囲内にスケーリングして移動後の点POのxyz軸座標値を算出する。例えば、基準配置位置を中心としたx軸およびz軸方向の可動範囲の幅を仮想ゲーム空間における長さ3に設定する。そして、加速度センサ701が検出するY軸方向の加速度をx軸方向の点POの移動に対応させ、加速度センサ701が検出するX軸方向の加速度をz軸方向の点POの移動に対応させる。そして、加速度センサ701が検出可能な加速度の最大値が2Gであるとすると、検出したY軸方向の加速度を1.5倍することによって点POのx軸方向の配置位置が可動範囲内にスケーリングされる。また、検出したX軸方向の加速度を1.5倍することによって点POのz軸方向の配置位置が可動範囲内にスケーリングされる。図11および図12においては、加速度センサ701がY軸負方向の加速度の最大値を検出したことに応じて、可動範囲のx軸方向最小値にスケーリングされた座標点を点POxaとして示している。加速度センサ701がY軸正方向の加速度の最大値を検出したことに応じて、可動範囲のx軸方向最大値にスケーリングされた座標点を点POxbとして示している。加速度センサ701がX軸負方向の加速度の最大値を検出したことに応じて、可動範囲のz軸方向最小値にスケーリングされた座標点を点POzaとして示している。そして、加速度センサ701がX軸正方向の加速度の最大値を検出したことに応じて、可動範囲のz軸方向最大値にスケーリングされた座標点を点POzbとして示している。
【0080】
また、仮想ゲーム空間においてバットオブジェクトBOが傾倒できる範囲として、可倒範囲が設けられる。可倒範囲は、基準傾倒角度(つまり、y軸正方向)を中心にx軸の正負方向およびz軸方向の正負方向にそれぞれ所定角度を有している。そして、バットオブジェクトBOは、加速度センサ701が検出するY軸方向の加速度を用いてx軸方向へ傾いて描画され、加速度センサ701が検出するX軸方向の加速度を用いてz軸方向へ傾いて描画される。なお、後述により明らかとなるが、ゲーム装置本体5は、コントローラ7から出力されるX軸およびY軸方向加速度データを用いて上記可動範囲内でバットオブジェクトBOの傾き目標を算出し、現在のバットオブジェクトBOの傾倒角度から傾き目標に向かって所定の割合(例えば、10%)だけ傾倒角度を変化させてバットオブジェクトBOを描画する。図11および図12においては、可倒範囲のx軸負方向側へ最も傾いた状態をバットオブジェクトBOxaとして示している。可倒範囲のx軸正方向側へ最も傾いた状態をバットオブジェクトBOxbとして示している。可倒範囲のz軸負方向側へ最も傾いた状態をバットオブジェクトBOzaとして示している。そして、可倒範囲のz軸正方向側へ最も傾いた状態をバットオブジェクトBOzbとして示している。
【0081】
次に、図13を参照して、バットオブジェクトBOがスイングされるモーションの一例について説明する。なお、図13は、仮想ゲーム空間においてバットオブジェクトBOがスイングされる状態を示す図である。以下に説明するスイングモーションは、プレイヤがコントローラ7を振る動作をするだけで、投じられたボールオブジェクトBaがバットオブジェクトBOで必ず打撃される(スイングタイミングが合っていない場合を除く)一例である。
【0082】
図13において、仮想ゲーム空間には、仮想的な到達判定面Mが設けられる。到達判定面Mは、相手投手が投じたボールオブジェクトBaがプレイヤキャラクタPC付近に到達する位置を予測するための平面である。到達判定面Mは、仮想ゲーム空間のz軸に垂直な平面であり、プレイヤキャラクタPCがバットオブジェクトBOをスイングできる空間内に立設される。例えば、到達判定面Mは、プレイヤキャラクタPCがバットオブジェクトBOをスイングするとき、相手投手に対してバットオブジェクトBOが垂直になる位置(例えば、ホームベース前端)に配置され、野球場のセンターラインに垂直に立設される。
【0083】
例えば、相手投手がボールオブジェクトBaを投じる動作を行ったとき、当該ボールオブジェクトBaが仮想ゲーム空間内を移動する予測軌道Tが算出される。そして、到達判定面Mと予測軌道Tとの交点がボール到達先位置Cpとして算出される。
【0084】
上記ボール到達先位置CpがバットオブジェクトBOをスイングする途中の目標位置となる。具体的には、プレイヤキャラクタPCがバットオブジェクトBOをスイングして到達判定面M上でボールオブジェクトBaを打撃した場合、すなわち相手投手に対してバットオブジェクトBOが垂直になる位置でボールオブジェクトBaを打撃した場合、バットオブジェクトBOの所定位置(例えば、真芯)とボールオブジェクトBaとが当接するようにスイングされる(図13に示すバットオブジェクトBOeの状態)。つまり、ボールオブジェクトBaのボール到達先位置Cpに基づいて、バットオブジェクトBOが到達判定面M上までスイングされたときの、支点位置POeおよび当該バットオブジェクトBOeの傾きが求められる。
【0085】
一方、上述したように、バットオブジェクトBOのスイング開始状態は、プレイヤがコントローラ7を把持している姿勢によって変化する(図13に示すバットオブジェクトBOiの状態)。つまり、コントローラ7から出力されるX、Y、およびZ軸方向加速度データに基づいて、スイング開始時点の支点位置POiおよび当該バットオブジェクトBOiの傾きが求められる。そして、プレイヤがコントローラ7を振る動作に応じて、バットオブジェクトBOiの位置からバットオブジェクトBOeの位置に、バットオブジェクトBOがスイングされる。
【0086】
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図14を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図14は、ゲーム装置本体5のメインメモリ33に記憶される主なデータを示す図である。
【0087】
図14に示すように、メインメモリ33には、加速度データDa、移動幅データDb、支点位置座標データDc、コントローラ傾きデータDd、オブジェクト傾き目標データDe、オブジェクト傾きデータDf、オブジェクト傾き変化データDg、基準モーションデータDh、ループカウンタDi、初期差分座標データDj、初期差分傾きデータDk、ボール到達先座標データDl、支点位置到達先座標データDm、オブジェクト到達先傾きデータDn、最終差分座標データDo、最終差分傾きデータDp、現フレームの差分座標データDq、現フレームの差分傾きデータDr、および画像データDs等が記憶される。なお、メインメモリ33には、図14に示す情報に含まれるデータの他、ゲームに登場するプレイヤキャラクタPCや相手キャラクタ等に関するデータ(位置データ等)や仮想ゲーム空間に関するデータ(地形データ等)等、ゲーム処理に必要なデータが記憶される。
【0088】
加速度データDaは、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データである。加速度データDaには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3が含まれる。なお、ゲーム装置本体5に備える通信ユニット6は、コントローラ7から所定間隔例えば5msごとに送信される操作情報に含まれる加速度データを受信し、通信ユニット6に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である1フレーム毎に読み出されてメインメモリ33の加速度データDaが更新される。本実施例では、加速度データDaは、コントローラ7から送信された最新の加速度データに更新されればよいが、過去所定フレーム分の加速度データを格納するようにしてもよい。
【0089】
移動幅データDbは、構え動作において点PO(支点位置;図11、図12参照)が基準配置位置に対して仮想ゲーム空間内を移動する幅を示すデータである。移動幅データDbには、構え動作においてx軸方向への移動幅を示すx軸方向移動幅データDb1およびz軸方向への移動幅を示すz軸方向移動幅データDb2が含まれる。支点位置座標データDcは、仮想ゲーム空間において構え動作時に点POが位置する座標値を示すデータである。
【0090】
コントローラ傾きデータDdは、加速度データDaを用いて算出されたコントローラ7の傾き方向を示すデータである。オブジェクト傾き目標データDeは、構え動作においてバットオブジェクトBOが点POを中心に仮想ゲーム空間での傾き目標を示すデータであり、例えば、方向ベクトルによって示される。オブジェクト傾きデータDfは、構え動作においてバットオブジェクトBOが点POを中心に仮想ゲーム空間で傾いて描画される角度を示すデータであり、例えば、方向ベクトルによって示される。オブジェクト傾き変化データDgは、構え動作においてバットオブジェクトBOの傾きが変化する変位を示すデータであり、例えば、方向ベクトルの変位を示す変位ベクトルによって示される。
【0091】
基準モーションデータDhは、振り始めから振り終わりまでバットオブジェクトBOをスイングするモーションの基本となるデータである。例えば、基準モーションデータDhは、上記基本スイング中における振り始めから振り終わりまでの当該バットオブジェクトBOrの位置(例えば、振り始めから振り終わりまでの支点位置POの軌道)および傾き(例えば、振り始めから振り終わりまでのバットオブジェクトBOrの傾きの変化を示す方向ベクトルの変化)が示される。ループカウンタDiは、バットオブジェクトBOの振り始めから振り終わりまでを、時間経過に応じてカウントした値を示すデータである。
【0092】
初期差分座標データDjは、基準モーションデータDhにおけるバットオブジェクトBOrの振り始め時の支点位置POriの座標と、構え動作におけるバットオブジェクトBOの支点位置POiの座標との差分を示すデータである。初期差分傾きデータDkは、基準モーションデータDhにおけるバットオブジェクトBOrの振り始め時の傾きを示す方向ベクトルと、構え動作におけるバットオブジェクトBOの傾きを示す方向ベクトルとの差分を示すデータである。
【0093】
ボール到達先座標データDlは、仮想ゲーム空間におけるボール到達先位置Cp(図13参照)の座標を示すデータである。支点位置到達先座標データDmは、ボール到達先位置Cpに基づいて算出される到達支点位置POe(図13参照)の座標を示すデータである。オブジェクト到達先傾きデータDnは、ボール到達先位置Cpに基づいて算出されたバットオブジェクトBOeの傾きを示す方向ベクトルを示すデータである。
【0094】
最終差分座標データDoは、基準モーションデータDhにおいて到達判定面MにバットオブジェクトBOrが一致するときの到達支点位置POreの座標と、到達支点位置POeの座標との差分を示すデータである。最終差分傾きデータDpは、基準モーションデータDhにおいて到達判定面MにバットオブジェクトBOrが一致するときの傾きを示す方向ベクトルと、ボール到達先位置Cpに基づいて算出されたバットオブジェクトBOeの傾きを示す方向ベクトルとの差分を示すデータである。
【0095】
現フレームの差分座標データDqは、基準モーションデータDhにおけるバットオブジェクトBOrの現フレームにおける支点位置POrの座標と、現フレームにおいて表示するバットオブジェクトBOの支点位置POの座標との差分を示すデータである。現フレームの差分傾きデータDrは、基準モーションデータDhにおけるバットオブジェクトBOrの現フレームにおける傾きを示す方向ベクトルと、現フレームにおいて表示するバットオブジェクトBOの傾きを示す方向ベクトルとの差分を示すデータである。
【0096】
画像データDsは、プレイヤキャラクタ画像データDs1およびオブジェクト画像データDs2等を含み、仮想ゲーム空間にプレイヤキャラクタPCやバットオブジェクトBOを配置してゲーム画像を生成するためのデータである。
【0097】
次に、図15〜図26を参照して、ゲーム装置本体5において行われるゲーム処理の詳細を説明する。なお、図15は、ゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャートである。図16は、図15におけるステップ52の支点位置算出処理の詳細な動作を示すサブルーチンである。図17は、図15におけるステップ53の傾き算出処理の詳細な動作を示すサブルーチンである。図18は、図15におけるステップ56のスイング処理の詳細な動作を示すサブルーチンである。図19は、図18におけるステップ81の第1スイング初期処理の詳細な動作を示すサブルーチンである。図20は、図18におけるステップ82およびステップ86の補正描画処理の詳細な動作を示すサブルーチンである。図21は、図18におけるステップ85の第2スイング初期処理の詳細な動作を示すサブルーチンである。図22は、コントローラ7が起立状態から傾いた一例を示す図である。図23は、構え動作において、バットオブジェクトBOの位置および傾きが変化した一例を示す図である。図24Aは、スイング開始時におけるバットオブジェクトBOiの状態の一例を仮想ゲーム空間の水平方向から見た図である。図24Bは、スイング開始時におけるバットオブジェクトBOiの状態の一例を仮想ゲーム空間の上方向から見た図である。図25は、ボール到達先位置Cpに対応した到達支点位置POeおよびバットオブジェクトBOeの傾きの設定例を示す図である。図26Aは、ボール到達先位置Cpに対応したバットオブジェクトBOeの状態の一例を仮想ゲーム空間の水平方向から見た図である。図26Bは、ボール到達先位置Cpに対応したバットオブジェクトBOeの状態の一例を仮想ゲーム空間の上方向から見た図である。なお、図15〜図21に示すフローチャートにおいては、ゲーム処理のうち、プレイヤがコントローラ7を移動または傾けた後に振られることに応じて行われるオブジェクトの描画について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図15〜図21では、CPU30が実行する各ステップを「S」と略称する。
【0098】
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図15〜図21に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【0099】
図15において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し(ステップ51)、処理を次のステップに進める。そして、CPU30は、取得した加速度データを加速度データDaとしてメインメモリ33に記憶する。ここで、ステップ51で取得される加速度データには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX、Y、およびZ軸方向加速度データが含まれている。ここでは、通信部75は、所定の時間間隔(例えば5ms間隔)で操作情報をゲーム装置本体5へ送信しており、通信ユニット6に備える図示しないバッファに少なくとも加速度データが蓄えられる。そして、CPU30は、ゲーム処理単位である1フレーム毎にバッファに蓄えられた加速度データを取得してメインメモリ33に格納する。
【0100】
次に、CPU30は、支点位置算出処理を行い(ステップ52)、処理を次のステップに進める。以下、図16を参照して、上記ステップ52における支点位置算出処理の動作について説明する。
【0101】
図16において、CPU30は、上記ステップ51で取得したY軸方向加速度データDa2に基づいて、x軸方向移動幅wxを算出する(ステップ61)。そして、CPU30は、算出したx軸方向移動幅wxをx軸方向移動幅データDb1としてメインメモリ33に記憶して、処理を次のステップに進める。上述したように、CPU30は、加速度センサ701が検出可能な加速度の最大値に対応して上記可動範囲の最大範囲を設定し、加速度センサ701が検出した加速度を当該可動範囲内にスケーリングする。例えば、加速度センサ701が検出可能な加速度の最大値が2Gであり、基準配置位置を中心としたx軸およびz軸方向の可動範囲の幅が長さ3である場合、CPU30は、Y軸方向加速度データDa2が示す加速度を1.5倍することによってx軸方向移動幅wxを算出する。
【0102】
次に、CPU30は、上記ステップ51で取得したX軸方向加速度データDa1に基づいて、z軸方向移動幅wzを算出する(ステップ62)。そして、CPU30は、算出したz軸方向移動幅wzをz軸方向移動幅データDb2としてメインメモリ33に記憶して、処理を次のステップに進める。例えば、加速度センサ701が検出可能な加速度の最大値が2Gであり、基準配置位置を中心としたx軸およびz軸方向の可動範囲の幅が長さ3である場合、CPU30は、X軸方向加速度データDa1が示す加速度を1.5倍することによってz軸方向移動幅wzを算出する。
【0103】
次に、CPU30は、算出したx軸方向移動幅wxおよびz軸方向移動幅wzに応じた支点位置座標を算出する(ステップ63)。そして、CPU30は、算出した支点位置座標を支点位置座標データDcとしてメインメモリ33に記憶して、当該サブルーチンによる処理を終了する。例えば、仮想ゲーム空間における基準配置位置座標を(x0,y0,z0)とすると、CPU30は、支点位置座標を(x0+wz,y0,z0+wz)とする。
【0104】
図22および図23を用いて、コントローラ7の動きと支点位置との関連について説明する。ここで、図22は、モニタ2の表示画面側の空間内に位置したコントローラ7を当該表示画面に向かう方向に見た状態(すなわち、紙面の裏側方向にモニタ2の表示画面が存在する状態であり、図9と同様)を示している。また、図23は、モニタ2に表示されたプレイヤキャラクタPCおよびバットオブジェクトBOの状態を示している。図22および図23を比較すれば明らかなように、モニタ2に表現される仮想ゲーム空間がプレイヤの位置している実空間内に存在するように仮定すると、プレイヤがモニタ2の表示画面に向かって右方向となる実空間のYs軸正方向が、仮想ゲーム空間の右方向となるx軸正方向と同じ方向となる。また、プレイヤの上方向となる実空間のZs軸正方向が、仮想ゲーム空間の上方向となるy軸正方向と同じ方向となる。また、プレイヤからモニタ2へ向かう方向となる実空間のXs軸正方向が、仮想ゲーム空間の奥行方向となるz軸正方向と同じ方向となる。
【0105】
コントローラ7の上面をYs軸負方向に向け、前面をZs軸正方向に向けて起立させた状態(図22において、破線で示すコントローラ7b)から、コントローラ7をYs軸正方向へ距離MY移動させてYs軸正方向へ角度TYだけ倒した状態(図22において、実線で示すコントローラ7)を想定する。上記起立した状態のコントローラ7bにおいては、X軸方向およびY軸方向の加速度は共に0であってZ軸負方向の重力加速度を検出する(図9参照)。そして、コントローラ7は、距離MYの移動による加速度(移動加速度)および角度TY傾けることによる重力加速度の変化を検出する。具体的には、図22に示すように、コントローラ7の加速度センサ701は、Y軸正方向およびZ軸正方向の間の方向に生じる移動加速度と、Y軸正方向およびZ軸負方向の間の方向に生じる重力加速度とを検出する。したがって、加速度センサ701は、上記移動加速度のY軸方向成分と重力加速度のY軸方向成分とが加わったY軸正方向の加速度を検出する。また、加速度センサ701が検出するX軸方向の加速度は0である。
【0106】
一方、上述した動作では、Y軸方向加速度データに基づいて算出されたx軸方向移動幅wxを用いて支点位置座標がスケーリングされる。例えば、上述したY軸正方向の加速度に応じて、支点位置が上記起立状態に対応する位置からx軸正方向へ移動する(図23に示す点PObの位置から点POの位置へ移動)。つまり、コントローラ7の移動に応じて即時に同じ方向(図22および図23の例では、実空間のYs軸正方向と同じ仮想ゲーム空間のx軸正方向)に支点位置が移動する。
【0107】
図15に戻り、CPU30は、傾き算出処理を行い(ステップ53)、処理を次のステップに進める。以下、図17を参照して、上記ステップ53における傾き算出処理の動作について説明する。
【0108】
図17において、CPU30は、上記ステップ51で取得した加速度データDa1に基づいて、現在のコントローラ傾きを算出する(ステップ71)。そして、CPU30は、算出したコントローラ傾きをコントローラ傾きデータDdとしてメインメモリ33に記憶して、処理を次のステップに進める。例えば、加速度センサ701が静的な加速度(重力加速度)を検知すると、加速度センサ701からの出力を用いた演算によって重力ベクトルに対するコントローラ7の傾きを算出することができる。なお、加速度センサ701が動的な加速度(移動加速度)も検知している場合、正確なコントローラ7の傾きを求めることは困難となるが、本実施例においては当該動的な加速度も静的な加速度と見なしてコントローラ傾きを求めてもかまわない。また、後述により明らかとなるが、Z軸方向に閾値以上の加速度が生じている場合、他の処理が行われる。
【0109】
CPU30は、上記ステップ71で算出されたコントローラ傾きに応じて、バットオブジェクトBOの傾き目標を算出する(ステップ72;図23参照)。そして、CPU30は、算出した傾き目標をオブジェクト傾き目標データDeとしてメインメモリ33に記憶して、処理を次のステップに進める。例えば、CPU30は、実空間におけるコントローラ傾きをそのまま仮想ゲーム空間における方向に置き換えた方向ベクトルを算出してオブジェクト傾き目標とする。
【0110】
次に、CPU30は、現在のオブジェクト傾きから上記傾き目標に向かって所定割合で変位する傾き変化を算出する(ステップ73;図23参照)。そして、CPU30は、算出した傾き変化をオブジェクト傾き変化データDgとしてメインメモリ33に記憶して、処理を次のステップに進める。例えば、CPU30は、オブジェクト傾きデータDfとして格納されている現在のバットオブジェクトBOの傾きを示す方向ベクトルから傾き目標を示す方向ベクトルへ、所定割合(例えば、10%)で変位した移動ベクトルを算出して傾き変化とする。
【0111】
次に、CPU30は、上記ステップ73で算出した傾き変化に基づいて、新たなオブジェクト傾きを算出する(ステップ74)。そして、CPU30は、算出したオブジェクト傾きをオブジェクト傾きデータDfとしてメインメモリ33に記憶して、当該サブルーチンによる処理を終了する。
【0112】
図22および図23を用いて、コントローラ7の傾きとオブジェクト傾きとの関連について説明する。例えば、図22に示すように、角度TYだけ傾けてコントローラ7を静止させた場合、コントローラ7の加速度センサ701は、Y軸正方向およびZ軸負方向の間の方向に生じる静的な重力加速度を検出する。そして、CPU30は、この重力加速度を検出した加速度センサ701からの出力に応じて、コントローラ7が実空間の上方向に対して角度TYだけコントローラ7がZs軸正方向からYs軸正方向側へ傾いていることを算出する。次に、CPU30は、コントローラ7の傾きをそのまま仮想ゲーム空間に置き換えて、y軸正方向からx軸正方向側へ角度TYだけバットオブジェクトBOを傾ける傾き目標を算出する。そして、CPU30は、現在のバットオブジェクト(図23において、破線でしめすバットオブジェクトBOb)を傾き目標(図23において、破線でしめすバットオブジェクトBOty)へ、所定割合だけ傾きを変化させる(図23において、実線でしめすバットオブジェクトBO)。
【0113】
このように、バットオブジェクトBOは、支点位置(点PO)の移動と同様にコントローラ7の傾きに応じて仮想ゲーム空間内で傾いて描画される。例えば、上記傾き目標をそのまま反映させてバットオブジェクトBOを描画すると、図23において破線で示すバットオブジェクトBOtyのようにコントローラ7の傾きに敏感に反応した描画が行われることになる。しかしながら、本実施例ではコントローラ7の傾き変化量と同じ傾き変化をして描画されるのではなく、バットオブジェクトBOがコントローラ7の傾き変化量の所定割合(例えば、10%)だけ反映させた傾き変化で描画される。つまり、プレイヤがコントローラ7を傾ける操作に対して、バットオブジェクトBOが遅れて反応して徐々に倒れていくため、野球バットを自然に表現でき、プレイヤがコントローラ7に加えた動作を反映した野球ゲームを表現することができる。
【0114】
なお、上述したようにバットオブジェクトBOには可倒範囲が設定されているため、上記ステップ72〜ステップ74の処理の何れかでオブジェクト傾きが可動範囲内に収める処理を行うことが必要となる。例えば、CPU30は、上記ステップ72において、コントローラ傾きを仮想ゲーム空間に置き換えた方向に最も近い可倒範囲内となる方向を傾き目標としてもかまわない。また、CPU30は、上記ステップ73やステップ74において、可倒範囲内になるように傾き変化や新たなオブジェクト傾きを算出してもかまわない。
【0115】
図15に戻り、CPU30は、支点位置および現在のオブジェクト傾きに応じてバットオブジェクトBOをモニタ2に描画して(ステップ54)、処理を次のステップに進める。具体的には、CPU30は、支点位置座標データDcおよびオブジェクト傾きデータDfを参照して、バットオブジェクトBOの支点位置座標(点POの座標)およびバットオブジェクトBOの傾倒方向を示す方向ベクトルを得る。そして、CPU30は、画像データDh等を用いて、モニタ2の表示画面にバットオブジェクトBOを構えたプレイヤキャラクタPCを描画する。
【0116】
次に、CPU30は、プレイヤがバットをスイングする動作を開始する操作を行ったか否かを判断する(ステップ55)。例えば、スイングを開始する操作は、プレイヤが把持するコントローラ7を左右に振ることによって行われる。この場合、CPU30は、加速度センサ701から出力されるZ軸正方向の加速度の大きさが所定値以上か否かを判別することによって、プレイヤがコントローラ7を振り始めたことを判定することができる。そして、CPU30は、スイングを開始する操作が行われていない場合、上記ステップ51に戻って処理を繰り返す。一方、CPU30は、スイングを開始する操作が行われた場合、処理を次のステップ56に進める。
【0117】
ステップ56において、CPU30は、スイング処理を行い、当該フローチャートによる処理を終了する。以下、図18〜図21を参照して、上記ステップ56におけるスイング処理の動作について説明する。
【0118】
図18において、CPU30は、第1スイング初期処理を行い(ステップ81)、処理を次のステップに進める。以下、図19を参照して、上記ステップ81における第1スイング初期処理の動作について説明する。
【0119】
図19において、CPU30は、基準モーションデータDhを読み込み(ステップ91)、ループカウンタDiのカウント値をリセット(例えば、0にリセット)する(ステップ92)。そして、CPU30は、支点位置POの初期差分座標(ステップ93)、およびバットオブジェクトBOの初期差分傾きを算出し(ステップ94)、処理を次のステップに進める。以下、図24Aおよび図24Bを参照して、初期差分座標および初期差分傾きについて説明する。
【0120】
図24Aおよび図24Bにおいて、CPU30は、現在(構え状態)のバットオブジェクトBOの支点位置POおよびオブジェクト傾きと、基準モーションデータにおけるスイング開始時のバットオブジェクトBOの支点位置POおよびオブジェクト傾きとを比較して、それぞれ差分値を求める。なお、図24Aおよび図24Bにおいては、それらを区別するために、現在の支点位置POおよびバットオブジェクトBOをそれぞれ支点位置POiおよびバットオブジェクトBOiとしている。そして、基準モーションデータにおけるスイング開始時の支点位置POおよびバットオブジェクトBOをそれぞれ支点位置POriおよび破線で示したバットオブジェクトBOriとしている。
【0121】
CPU30は、基準モーションデータにおける支点位置POriと現在の支点位置POiとの差分値を初期差分座標として算出し、初期差分座標データDjに格納する。例えば、初期差分座標は、仮想ゲーム空間における支点位置POriおよびPOiのxyz軸座標値それぞれの差分によって示される。また、CPU30は、基準モーションデータにおけるバットオブジェクトBOriのオブジェクト傾きと現在のバットオブジェクトBOiのオブジェクト傾きとの差分値を初期差分傾きとして算出し、初期差分傾きデータDkに格納する。例えば、初期差分傾きは、仮想ゲーム空間における方向ベクトルによって示される。
【0122】
次に、CPU30は、仮想ゲーム空間におけるボール到達先位置Cp(図13参照)の座標が取得可能か否かを判断する(ステップ95)。上述したように、ボール到達先位置Cpは、ボールオブジェクトBaが仮想ゲーム空間内を移動する予測軌道Tが得られたとき、当該予測軌道Tと到達判定面Mとの交点を算出することによって得られる。つまり、予測軌道Tが得られているとき(例えば、相手投手がボールオブジェクトBaを投じる動作を行ったとき等)、CPU30は、ボール到達先位置Cpの座標が取得可能と判断して、次のステップ96に処理を進める。一方、予測軌道Tが得られていないとき(例えば、プレイヤキャラクタPCにバットオブジェクトBOを素振りさせるとき等)、CPU30は、ボール到達先位置Cpの座標が取得不可能と判断して、次のステップ97に処理を進める。
【0123】
ステップ96において、CPU30は、ボール到達先座標を算出してボール到達先座標データDlに格納し、次のステップ98に処理を進める。具体的には、図13に示すように、CPU30は、相手投手がボールオブジェクトBaを投じる動作(球種、スピード、コントロール等)に応じて、事前に当該ボールオブジェクトBaが仮想ゲーム空間内を移動する予測軌道Tを算出する。そして、CPU30は、予測軌道Tと到達判定面Mとの交点を算出し、仮想ゲーム空間におけるボール到達先位置Cpの座標(ボール到達先座標)を取得する。
【0124】
ステップ97において、CPU30は、所定の基準位置をボール到達先座標としてボール到達先座標データDlに格納し、次のステップ98に処理を進める。例えば、CPU30は、野球ゲームにおけるストライクゾーンのど真ん中等となる到達判定面M上の点を上記基準位置とする。
【0125】
ステップ98において、CPU30は、支点位置POの到達先座標およびバットオブジェクトBOの到達先傾きを算出し、それぞれ支点位置到達先座標データDmおよびオブジェクト到達先傾きデータDnに格納して、処理を次のステップに進める。以下、図25を参照して、支点位置POの到達先座標およびバットオブジェクトBOの到達先傾きについて説明する。
【0126】
図25において、上述したように、ボール到達先位置Cpは、バットオブジェクトBOをスイングする途中の目標位置となる。具体的には、バットオブジェクトBOをスイングしたとき、ボール到達先位置Cpに到達したボールオブジェクトBaと、到達判定面Mに対して平行となったバットオブジェクトBOの所定位置(例えば、真芯)とが打撃されるようにスイングされる。すなわち、上記状態のバットオブジェクトBOは、到達判定面M上に配置されていることになる。ボール到達先位置Cpに対応した支点位置POおよびバットオブジェクトBOを、それぞれ支点位置POeおよびバットオブジェクトBOeとして区別する。
【0127】
ここで、到達判定面M上にx軸と平行な高低判定ラインLを設定する。高低判定ラインLは、プレイヤキャラクタPCがバットオブジェクトBOをレベルスイング(バットオブジェクトBOを水平にスイング)する下限を示す境界であり、例えば、プレイヤキャラクタPCの脇付近の高さに設定される。
【0128】
そして、ボール到達先位置Cpが高低判定ラインL以上の高さの到達判定面M上に設定された場合(図25におけるボール到達先位置Cp1〜Cp3)、当該ボール到達先位置Cpに対応したバットオブジェクトBOeは、当該ボール到達位置Cpが真芯となる到達判定面Mに平行な水平位置(つまり、x軸と平行)に設定される(図25におけるバットオブジェクトBOe1〜BOe3)。そして、バットオブジェクトBOの真芯から支点位置POeまでの長さが一定であるため、支点位置POeの位置が算出される(図25における支点位置POe1〜POe3)。これによって、バットオブジェクトBOeの位置および傾きが一意に決まるため、ボール到達先位置Cpに対応した支点位置POeおよびバットオブジェクトBOeの傾きが決定できる。
【0129】
一方、ボール到達先位置Cpが高低判定ラインL未満の高さの到達判定面M上に設定された場合(図25におけるボール到達先位置Cp4およびCp5)、当該ボール到達先位置Cpに対応したバットオブジェクトBOeは、当該ボール到達位置Cpが真芯となる位置で、かつ支点位置POeが高低判定ラインL上となる到達判定面Mに平行な位置に設定される(図25におけるバットオブジェクトBOe4およびBOe5)。ここで、支点位置POeからバットオブジェクトBOの真芯までの長さが一定であるため、ボール到達位置Cpおよび当該長さを用いて高低判定ラインL上に配置される支点位置POeの位置を算出することができる(図25における支点位置POe4およびPOe5)。これによって、バットオブジェクトBOeの位置および傾きが一意に決まるため、ボール到達先位置Cpに対応した支点位置POeおよびバットオブジェクトBOeの傾きが決定できる。
【0130】
次に、CPU30は、支点位置POの最終差分座標(ステップ99)およびバットオブジェクトBOの最終差分傾きを算出し(ステップ100)、当該サブルーチンによる処理を終了する。以下、図26Aおよび図26Bを参照して、最終差分座標および最終差分傾きについて説明する。
【0131】
図26Aおよび図26Bにおいて、CPU30は、ボール到達先位置Cpに対応したバットオブジェクトBOの支点位置POおよびオブジェクト傾きと、基準モーションデータにおいて到達判定面Mに位置するバットオブジェクトBOの支点位置POおよびオブジェクト傾きとを比較して、それぞれ差分値を求める。なお、図26Aおよび図26Bにおいては、それらを区別するために、ボール到達先位置Cpに対応した支点位置POおよびバットオブジェクトBOをそれぞれ支点位置POeおよびバットオブジェクトBOeとしている。そして、基準モーションデータにおいて到達判定面Mに位置する支点位置POおよびバットオブジェクトBOをそれぞれ支点位置POreおよび破線で示したバットオブジェクトBOreとしている。
【0132】
CPU30は、基準モーションデータにおける支点位置POreとボール到達先位置Cpに対応した支点位置POeとの差分値を最終差分座標として算出し、最終差分座標データDoに格納する。例えば、最終差分座標は、仮想ゲーム空間における支点位置POreおよびPOeのxyz軸座標値それぞれの差分によって示される。また、CPU30は、基準モーションデータにおけるバットオブジェクトBOreのオブジェクト傾きとボール到達先位置Cpに対応したバットオブジェクトBOeのオブジェクト傾きとの差分値を最終差分傾きとして算出し、最終差分傾きデータDpに格納する。例えば、最終差分傾きは、仮想ゲーム空間における方向ベクトルによって示される。
【0133】
図18に戻り、第1スイング初期処理(ステップ81)の後、CPU30は、補正描画処理を行い(ステップ82)、処理を次のステップに進める。以下、図20を参照して、上記ステップ82における補正描画処理の動作について説明する。
【0134】
図20において、CPU30は、上記ステップ91で読み込んだ基準モーションデータをゲーム処理間隔である1フレーム(1/60秒)進め(ステップ101)、現フレームにおける支点位置POの差分座標を算出し(ステップ102)、処理を次のステップに進める。具体的には、支点位置POの差分座標は、仮想ゲーム空間のxyz座標それぞれについて、
差分座標=初期差分座標+(最終差分座標−初期差分座標)×Fn/Fa
で算出され、現フレームの差分座標データDqに格納される。ここで、初期差分座標および最終差分座標は、それぞれ初期差分座標データDjおよび最終差分座標データDoに格納されているxyz座標の差分値である。また、Fnは現フレーム数であり、補正描画の対象とするアクションの開始時点を0として上記フレームの進行と共に加算される値である。また、Faは総フレーム数であり、補正描画の対象とするアクションの開始時点を0として当該アクションの終了までのフレーム数を示す値である。例えば、総フレーム数は、スイング開始から到達判定面M上までバットオブジェクトBOが到達するまでのフレーム数や、到達判定面M上からスイング終了までのフレーム数である。
【0135】
次に、CPU30は、現フレームにおけるバットオブジェクトBOの差分傾きを算出し(ステップ103)、処理を次のステップに進める。具体的には、バットオブジェクトBOの差分傾きは、仮想ゲーム空間における方向ベクトルとして示され、
差分傾き=初期差分傾き+(最終差分傾き−初期差分傾き)×Fn/Fa
で算出され、現フレームの差分傾きデータDrに格納される。ここで、初期差分傾きおよび最終差分傾きは、それぞれ初期差分傾きデータDkおよび最終差分傾きデータDpに格納されている方向ベクトルである。また、FnおよびFaは、それぞれ上記ステップ102と同様に現フレーム数および総フレーム数である。
【0136】
次に、CPU30は、現フレームの基準モーションデータを上記ステップ102で算出した差分座標および上記ステップ103で算出した差分傾きを用いて補正して、現フレームにおけるモーションデータを作成する(ステップ104)。そして、CPU30は、上記ステップ104で作成したモーションデータを用いてプレイヤキャラクタPCがバットオブジェクトBOをスイングする描画処理を行い(ステップ105)、当該サブルーチンによる処理を終了する。したがって、バットオブジェクトBOは、それぞれ基準となる表示位置および傾きから実際に描画されるバットオブジェクトBOの表示位置および傾きの差分を、補正開始時の差分値から補正終了時の差分値への時間経過と共に徐々に変化させて表示される。
【0137】
図18に戻り、補正描画処理(ステップ82)の後、CPU30は、ループカウンタDiのカウント値に1加算し(ステップ83)、当該カウント値が所定数に到達したか否かを判断する(ステップ84)。ここで、上記カウント値の所定数には、スイング開始から到達判定面M上までバットオブジェクトBOが到達するまでに上記ステップ82を繰り返し実行する回数が設定される。そして、上記カウント値が所定数に到達した場合、CPU30は、次のステップ85に処理を進める。一方、上記カウント値が所定数に到達していない場合、上記ステップ82に戻って処理を繰り返す。
【0138】
ステップ85において、CPU30は、第2スイング初期処理を行い、処理を次のステップに進める。以下、図21を参照して、上記ステップ85における第2スイング初期処理の動作について説明する。
【0139】
図21において、CPU30は、ループカウンタDiのカウント値をリセット(例えば、0にリセット)する(ステップ111)。次に、CPU30は、最終差分座標データDoに格納されている差分値(xyz座標)を、当該サブルーチンで用いる初期差分座標として初期差分座標データDjを更新する(ステップ112)。また、CPU30は、最終差分傾きデータDpに格納されている差分値(方向ベクトル)を、当該サブルーチンで用いる初期差分傾きとして初期差分傾きデータDkを更新する(ステップ113)。なお、CPU30は、上記ステップ113において、最終差分傾きデータDpに格納されている差分値は、そのまま当該サブルーチンで用いる最終差分傾きとする。そして、CPU30は、差分値0(つまり、xyz座標=(0,0,0))を最終差分座標として最終差分座標データDoを更新して(ステップ114)、当該サブルーチンによる処理を終了する。
【0140】
図18に戻り、第2スイング初期処理(ステップ85)の後、CPU30は、補正描画処理を行い(ステップ86)、処理を次のステップに進める。なお、ステップ86で行う補正描画処理については、図20を参照して説明した上記ステップ82と同様であるため、詳細な説明を省略する。
【0141】
次に、CPU30は、ループカウンタDiのカウント値に1加算し(ステップ87)、当該カウント値が所定数に到達したか否かを判断する(ステップ88)。ここで、上記カウント値の所定数には、到達判定面M上にバットオブジェクトBOが配置された状態からスイング終了までに上記ステップ86を繰り返し実行する回数が設定される。そして、上記カウント値が所定数に到達した場合、CPU30は、当該スイング処理を終了する。一方、上記カウント値が所定数に到達していない場合、上記ステップ86に戻って処理を繰り返す。
【0142】
さらに説明を具体的にするために、図27を参照して、上述したスイング処理を用いて表示されるバットオブジェクトBOのスイング例について説明する。図27では、基準モーションデータによってスイングされるバットオブジェクトBOrを破線で示し、実際に描画されるバットオブジェクトBOを実線で示している。
【0143】
上述したスイング処理においては、バットオブジェクトBOのスイング開始時点を補正開始時点とし当該スイングの途中時点を補正終了時点とした第1スイングと、当該スイングの途中時点を補正開始時点とし当該スイングの終了時点を補正終了時点とした第2スイングとの2段階の補正描画処理を行っている。スイング開始時点では、基準モーションデータにおけるスイング開始時点のバットオブジェクトBOrと、プレイヤの操作による構え動作に応じたバットオブジェクトBOとの支点位置および傾きの差分がそれぞれ算出され、第1スイングにおける初期差分座標および初期差分傾きとされる(矢印c1)。一方、スイング途中時点では、基準モーションデータにおいて到達判定面Mと一致するバットオブジェクトBOrと、ボール到達先位置Cpに応じた到達判定面M上のバットオブジェクトBOとの支点位置および傾きの差分がそれぞれ算出され、第1スイングにおける最終差分座標および最終差分傾きとされる(矢印c2)。そして、第1スイングにおいては、基準モーションデータによる表示位置および傾きから実際に描画されるバットオブジェクトBOの表示位置および傾きまでの差分を、初期差分座標および初期差分傾きから最終差分座標および最終差分傾きへスイングの時間経過と共に徐々に変化させて、バットオブジェクトBOのスイング動作が求められる。
【0144】
また、第2スイングにおいては、第1スイングにおける最終差分座標および最終差分傾き(矢印c2)が、そのまま第2スイングにおける初期差分座標および初期差分傾きとされる。一方、スイング終了時点では、基準モーションデータにおけるスイング終了時点のバットオブジェクトBOrの支点位置POrとバットオブジェクトBOの支点位置POとの差分値を0として第2スイングにおける最終差分座標とされ、第1スイングにおける最終差分傾きがそのまま第2スイングにおける最終差分傾きとされる(矢印c3)。そして、第2スイングにおいても、基準モーションデータによる表示位置および傾きから実際に描画されるバットオブジェクトBOの表示位置および傾きまでの差分を、初期差分座標および初期差分傾きから最終差分座標および最終差分傾きへスイングの時間経過と共に徐々に変化させて、バットオブジェクトBOのスイング動作が求められる。
【0145】
このように、上記実施形態に係るゲーム装置本体5は、加速度センサ701を備えたコントローラ7を用いた操作入力において、加速度センサ701からの出力のみを用いてバットオブジェクトBOが描画される。この描画処理においては、バットオブジェクトBOが、それぞれ基準となる表示位置および傾き(基準モーションデータ)から実際に描画されるバットオブジェクトBOの表示位置および傾きまでの差分を、補正開始時の差分値から補正終了時の差分値への時間経過と共に徐々に変化させて表示される。また、補正開始時および補正終了時において表示されるバットオブジェクトBOの表示位置および傾きは、何れもプレイヤの操作状況に応じた自由度を有しており、1つのモーションデータを用いて自由度の高い補正が可能である。したがって、バットオブジェクトBOが移動する始点座標および途中座標を自由に設定することができる為に、基準となる軌跡に沿いつつ自由度の高いバットオブジェクトBOの移動軌跡の補正を行うことが可能となる。また、バットオブジェクトBOの始点姿勢(傾き)および途中姿勢(傾き)を設定することができる為に、位置座標値だけで補正を行う場合と比較すると、バットオブジェクトBOの傾きも考慮したより自然な補正を行うことが可能となる。このように、コントローラ7を用いて描画したバットオブジェクトBOを自由度の高い自然な動きで補正して、リアルな表現が可能となる。
【0146】
なお、上述した実施例では、バットオブジェクトBOの下端部分に当該バットオブジェクトBOの配置位置を示す点POを1点設け、当該点POを支点位置とバットオブジェクトBOの傾きを示す方向ベクトルとによって、バットオブジェクトBOのスイング動作を規定したが、他の方式でバットオブジェクトBOのスイング動作を規定してもかまわない。例えば、バットオブジェクトBOに当該バットオブジェクトBOの配置位置を示す点を複数設定することによって、バットオブジェクトBOの配置位置および傾きを設定してもかまわない。具体的には、バットオブジェクトBOの下端部分に設けられた点POに加えて、バットオブジェクトBOの上端部分に点PAを設ける。そして、バットオブジェクトBOの傾きを、仮想ゲーム空間における点PAの座標値で定義する。この場合、上記差分傾き等を点PAの変化で算出すれば、オブジェクトの位置および傾きを2点の座標値で定義しても本発明を実現することができる。この場合、バットオブジェクトBOは、基準となる複数の表示位置から実際に描画されるバットオブジェクトBOの表示位置それぞれの差分を、補正開始時の差分値から補正終了時の差分値への時間経過と共に徐々に変化させて表示され、例えば、方向ベクトル等のオブジェクト傾きを示すデータの補正は行われない。
【0147】
さらに、オブジェクトの配置位置を示す1つの点を設定することによって、仮想ゲーム空間における位置および状態が決定できるオブジェクト(例えば、点対称の図形のオブジェクトやオブジェクト傾きが固定されたオブジェクト)については、当該1点の配置位置について上記補正描画処理を行ってもかまわない。この場合、オブジェクトは、基準となる1つの表示位置から実際に描画されるオブジェクトの表示位置の差分を、補正開始時の差分値から補正終了時の差分値への時間経過と共に徐々に変化させて表示される。
【0148】
また、オブジェクトの表示傾きだけに注目し、基準となる表示傾きから実際に描画されるオブジェクトの表示傾きへの差分を、補正開始時の差分値から補正終了時の差分値への時間経過と共に徐々に変化させて当該オブジェクトを表示してもかまわない。この場合、座標値等のオブジェクト配置位置を示すデータの補正は行われない。
【0149】
また、上述した補正描画処理においては、バットオブジェクトBOのスイング開始時点を補正開始時点とし当該スイングの途中時点を補正終了時点とした第1スイングと、当該スイングの途中時点を補正開始時点とし当該スイングの終了時点を補正終了時点とした第2スイングとの2段階の補正描画処理を行っている。ここで、第2スイングの補正終了時点の最終差分座標を0(具体的には、(0,0,0))としているが、第2スイングの補正開始時点の初期差分座標と最終差分座標とが等しく(つまり、ステップ104で用いる差分座標が一定)してもかまわない。また、第2スイングの補正終了時点の最終差分傾きを初期差分傾きとを等しくしてステップ104で用いる差分傾きを一定にしているが、第2スイングで用いる最終差分傾きを0(具体的には、方向ベクトルの大きさが0)にしてもかまわない。
【0150】
また、上述した説明では、コントローラ7から出力される3軸加速度データを用いて野球バットを扱うゲーム例を説明したが、他のゲーム処理にも用いることができる。例えば、プレイヤキャラクタが何らかのオブジェクト(特に、剣、竹刀、棒等の長軸物)を持って扱うゲームや仮想ゲーム空間内で当該オブジェクトを移動させるようなゲームに適用できることは言うまでもない。また、上述した説明では、コントローラ7の動きや傾きを判別するゲーム装置本体5をゲームシステム1に適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータなどの情報処理装置にも適用することができる。例えば、判別された入力装置の動きや傾きに応じて、情報処理装置が表示しているオブジェクトが移動する等、入力装置に対する判別結果に基づいて様々な処理を行うことができる。
【0151】
また、コントローラ7に設けられた加速度センサ701は、互いに直交する3軸成分に分けてそれぞれ検出して出力する3軸加速度センサを用いて説明したが、少なくとも直交する2軸成分をそれぞれ検出する加速度センサを用いれば本発明を実現することができる。例えば、コントローラ7が配置された3次元空間における加速度をX軸およびY軸(図3、図4参照)の2軸成分に分けてそれぞれ検出して出力する加速度センサを用いても、上述したx軸およびz軸方向への支点位置の移動およびx軸およびz軸方向への傾き判定を行うことができる。この場合、検出したX軸およびY軸方向の加速度が共に0である場合に、コントローラ7が上記起立状態であると判定することができる。また、上述した説明でZ軸成分の加速度を用いて判定していたスイング開始判定ができなくなるが、XおよびY軸に対する加速度成分から得られるスイングによって生じる遠心力成分を用いてスイング開始を判定してもいいし、加速度センサ701とは異なる他のセンサを用いてスイング開始を判定してもかまわない。また、プレイヤがコントローラ7をスイングするときは操作ボタン72の何れかを押下するようなゲームルールを設定して、当該操作ボタン72の何れかが押下されたことに応じてスイング開始を判定してもかまわない。
【0152】
さらに、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。例えば、コントローラ7が配置された3次元空間における加速度をY軸(図3、図4参照)成分のみ検出して出力する加速度センサを用いても、上述したx軸方向への支点位置の移動およびx軸方向への傾き判定を行うことができる。この場合、検出したY軸方向の加速度が0である場合に、コントローラ7が上記起立状態であると仮定して判定する。この場合、バットオブジェクトBOが仮想ゲーム空間におけるx軸方向に移動およびx軸方向に傾く態様となるが、このような1方向へバットオブジェクトBOを移動および傾倒させて描画する場合、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。
【0153】
また、上述したようにコントローラ7の動きを検出する動きセンサとして、ジャイロセンサを用いても本発明を実現することができる。ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。例えば、プレイヤがコントローラ7を所定の姿勢に維持した状態で操作部72を押下したり、モニタ2に表示された姿勢指示に応じてプレイヤがコントローラ7を当該姿勢に維持したりして、その状態におけるジャイロセンサの出力を初期化する。そして、検出開始後においては、ジャイロセンサから出力される角速度データを積分し、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出される。
【0154】
例えば、上記ステップ61におけるスケーリングにおいては、ジャイロセンサから得られたX軸周りの傾きの変化量を用いて、当該変化量をx軸方向の可動範囲内(−3〜+3)にスケーリングしてx軸方向移動幅wxを算出する。また、上記ステップ62におけるスケーリングにおいては、ジャイロセンサから得られたZ軸周りの傾きの変化量を用いて、当該変化量をz軸方向の可動範囲内(−3〜+3)にスケーリングしてz軸方向移動幅wzを算出する。また、上記ステップ71においては、ジャイロセンサから得られたXYZ軸周りの傾きの変化量をそれぞれ用いて、現在のコントローラ傾きを算出する。さらに、上記ステップ55のステップ開始判定においては、ジャイロセンサから出力されるY軸周りの角速度データが示す角速度の大きさが所定値以上か否かで判定することができる。
【0155】
また、上述した説明では、コントローラ7とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
【0156】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、コントローラ7における撮像情報演算部74の位置(撮像情報演算部74の光入射口)は、ハウジング71の前面でなくてもよく、ハウジング71の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0157】
また、本発明のゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【産業上の利用可能性】
【0158】
本発明に係るゲームプログラムおよびゲーム装置は、加速度センサを備えた入力装置を用いた操作入力において、入力装置を用いて描画したオブジェクトを自由度の高い自然な動きで補正することができ、ゲームコントローラ等の動きに応じて描画する装置やプログラムとして有用である。
【図面の簡単な説明】
【0159】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置本体5の機能ブロック図
【図3】図1のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面後方から見た斜視図
【図5】コントローラ7の上筐体を外した状態を示す斜視図
【図6】コントローラ7の下筐体を外した状態を示す斜視図
【図7】図3のコントローラ7の構成を示すブロック図
【図8】図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図9】コントローラ7を起立させて静止した状態を示す図
【図10】コントローラ7から受信したX、Y、およびZ軸方向加速度データに応じて、モニタ2に描画した野球ゲームの一例を示す図
【図11】バットオブジェクトBOを構え動作を説明するために仮想ゲーム空間を水平方向から見た図
【図12】バットオブジェクトBOの構え動作を説明するために仮想ゲーム空間を上方向から見た図
【図13】仮想ゲーム空間においてバットオブジェクトBOがスイングされる状態を示す図
【図14】ゲーム装置本体5のメインメモリ33に記憶される主なデータを示す図
【図15】ゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャート
【図16】図15におけるステップ52の支点位置算出処理の詳細な動作を示すサブルーチン
【図17】図15におけるステップ53の傾き算出処理の詳細な動作を示すサブルーチン
【図18】図15におけるステップ56のスイング処理の詳細な動作を示すサブルーチン
【図19】図18におけるステップ81の第1スイング初期処理の詳細な動作を示すサブルーチン
【図20】図18におけるステップ82およびステップ86の補正描画処理の詳細な動作を示すサブルーチン
【図21】図18におけるステップ85の第2スイング初期処理の詳細な動作を示すサブルーチン
【図22】コントローラ7が起立状態から傾いた一例を示す図
【図23】構え動作において、バットオブジェクトBOの位置および傾きが変化した一例を示す図
【図24A】スイング開始時におけるバットオブジェクトBOiの状態の一例を仮想ゲーム空間の水平方向から見た図
【図24B】スイング開始時におけるバットオブジェクトBOiの状態の一例を仮想ゲーム空間の上方向から見た図
【図25】ボール到達先位置Cpに対応した到達支点位置POeおよびバットオブジェクトBOeの傾きの設定例を示す図
【図26A】ボール到達先位置Cpに対応したバットオブジェクトBOeの状態の一例を仮想ゲーム空間の水平方向から見た図
【図26B】ボール到達先位置Cpに対応したバットオブジェクトBOeの状態の一例を仮想ゲーム空間の上方向から見た図
【図27】図18のスイング処理によって表示されるバットオブジェクトBOのスイング例を示す図
【符号の説明】
【0160】
1…ゲームシステム
2…モニタ
2a、706…スピーカ
3…ゲーム装置
30…CPU
31…メモリコントローラ
32…GPU
33…メインメモリ
34…DSP
35…ARAM
36…コントローラI/F
37…ビデオI/F
38…フラッシュメモリ
39…オーディオI/F
40…ディスクドライブ
41…ディスクI/F
4…光ディスク
5…ゲーム装置本体
6…通信ユニット
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
703…水晶振動子
704…バイブレータ
705…電池
707…サウンドIC
708…アンプ
8…マーカ


【特許請求の範囲】
【請求項1】
入力装置自体の動きを検出する動きセンサを備えた入力装置で検出された動きデータを用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置のコンピュータで実行されるゲームプログラムであって、
前記オブジェクトが仮想ゲーム空間内を移動する基準軌跡がメモリに記憶され、
前記コンピュータに、
前記動きセンサから出力される動きデータを取得する動きデータ取得ステップと、
前記動きデータ取得ステップで取得した動きデータに基づいて、仮想ゲーム空間における前記オブジェクトに対応付けられた移動開始座標を算出する開始座標算出ステップと、
メモリに記憶された前記基準軌跡から前記移動開始座標に対応する当該基準軌跡上の第1対応点を算出し、当該第1対応点と前記移動開始座標との第1差分座標を算出する第1差分算出ステップと、
仮想ゲーム空間における前記オブジェクトに対応付けられた目標座標を算出する目標座標算出ステップと、
メモリに記憶された前記基準軌跡から前記目標座標に対応する当該基準軌跡上の第2対応点を算出し、当該第2対応点と前記目標座標との第2差分座標を算出する第2差分算出ステップと、
所定条件が満たされた後の経過時間に応じて、前記第1差分座標から前記第2差分座標まで変化する変化差分座標を算出する変化差分座標算出ステップと、
前記経過時間に応じた前記基準軌跡上の座標に、当該経過時間に応じて算出された前記変化差分座標を加算して補正座標を算出する補正座標算出ステップと、
仮想ゲーム空間において前記補正座標に対応する位置に前記オブジェクトを配置して、前記表示装置に当該オブジェクトを表示する表示制御ステップとを実行させる、ゲームプログラム。
【請求項2】
前記開始座標算出ステップでは、前記所定条件が満たされたとき、前記移動開始座標が算出され、
前記第1差分算出ステップでは、前記所定条件が満たされたとき、前記第1差分座標が算出され、
前記目標座標算出ステップでは、前記所定条件が満たされたとき、前記目標座標が算出され、
前記第2差分算出ステップでは、前記所定条件が満たされたとき、前記第2差分座標が算出される、請求項1に記載のゲームプログラム。
【請求項3】
前記変化差分座標算出ステップでは、前記経過時間に応じて一定の割合で前記第1差分座標から前記第2差分座標まで変化するように前記変化差分座標が算出される、請求項1に記載のゲームプログラム。
【請求項4】
前記動きデータ取得ステップで取得した動きデータが示す値が所定値以上になったときに前記所定条件が満たされたことを判定する判定ステップを、さらに前記コンピュータに実行させ、
前記変化差分座標算出ステップでは、前記判定ステップで前記所定条件が満たされたことが判定された後の経過時間に応じて、前記変化差分座標が算出される、請求項1に記載のゲームプログラム。
【請求項5】
前記目標座標算出ステップでは、所定のゲーム処理に応じて変化するゲームパラメータに基づいて、当該仮想ゲーム空間における前記目標座標が算出される、請求項1に記載のゲームプログラム。
【請求項6】
前記目標座標算出ステップでは、仮想ゲーム空間に設定された所定平面上に前記目標座標が算出され、
前記第2差分算出ステップでは、前記所定平面と前記基準軌跡との交点が、前記目標座標に対応する当該基準軌跡上の点とされる、請求項1に記載のゲームプログラム。
【請求項7】
仮想ゲーム空間において他のオブジェクトを移動させる他オブジェクト移動ステップを、さらに前記コンピュータに実行させ、
前記目標座標算出ステップでは、前記他のオブジェクトの移動予測に基づいて、仮想ゲーム空間に設定された所定平面と前記他のオブジェクトとが交差する予測交差位置を予測し、仮想ゲーム空間において前記他のオブジェクトと当該予測交差位置で接触する前記オブジェクトに対応付けた前記目標座標を算出する、請求項1に記載のゲームプログラム。
【請求項8】
前記動きセンサは、前記入力装置自体に加わる少なくとも1軸方向の加速度を検出する加速度センサであり、
前記動きデータは、前記加速度センサが検出した加速度を示す加速度データである、請求項1に記載のゲームプログラム。
【請求項9】
入力装置自体の動きを検出する動きセンサを備えた入力装置で検出された動きデータを用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置のコンピュータで実行されるゲームプログラムであって、
仮想ゲーム空間内の移動に応じた前記オブジェクトの傾き変化の基準を示す基準傾き推移がメモリに記憶され、
前記コンピュータに、
前記動きセンサから出力される動きデータを取得する動きデータ取得ステップと、
前記動きデータ度取得ステップで取得した動きデータに基づいて、仮想ゲーム空間で前記オブジェクトを移動させる開始時点での当該オブジェクトの傾きを算出する開始傾き算出ステップと、
メモリに記憶された前記基準傾き推移から前記開始傾き算出ステップで算出した傾きに対応する基準傾きを算出し、当該基準傾きと前記開始傾き算出ステップで算出した傾きとの第1差分傾きを算出する第1差分算出ステップと、
仮想ゲーム空間における前記オブジェクトの目標傾きを算出する目標傾き算出ステップと、
メモリに記憶された前記基準傾き推移から前記目標傾きに対応する基準傾きを算出し、当該基準傾きと前記目標傾きとの第2差分傾きを算出する第2差分算出ステップと、
所定条件が満たされた後の経過時間に応じて、前記第1差分傾きから前記第2差分傾きまで変化する変化差分傾きを算出する変化差分傾き算出ステップと、
前記経過時間に応じた前記基準傾き推移に対して、当該経過時間に応じて算出された前記変化差分傾きを加算して補正傾きを算出する補正傾き算出ステップと、
仮想ゲーム空間における前記オブジェクトの傾きを前記補正傾きとして、前記表示装置に当該オブジェクトを表示する表示制御ステップとを実行させる、ゲームプログラム。
【請求項10】
前記開始傾き算出ステップでは、前記所定条件が満たされたとき、前記開始時点での前記オブジェクトの傾きが算出され、
前記第1差分算出ステップでは、前記所定条件が満たされたとき、前記第1差分傾きが算出され、
前記目標傾き算出ステップでは、前記所定条件が満たされたとき、前記目標傾きが算出され、
前記第2差分算出ステップでは、前記所定条件が満たされたとき、前記第2差分傾きが算出される、請求項9に記載のゲームプログラム。
【請求項11】
前記変化差分傾き算出ステップでは、前記経過時間に応じて一定の割合で前記第1差分傾きから前記第2差分傾きまで変化するように前記変化差分傾きが算出される、請求項9に記載のゲームプログラム。
【請求項12】
前記動きデータ取得ステップで取得した動きデータが示す値が所定値以上になったときに前記所定条件が満たされたことを判定する判定ステップを、さらに前記コンピュータに実行させ、
前記変化差分傾き算出ステップでは、前記判定ステップで前記所定条件が満たされたことが判定された後の経過時間に応じて、前記変化差分傾きが算出される、請求項9に記載のゲームプログラム。
【請求項13】
前記目標傾き算出ステップでは、所定のゲーム処理に応じて変化するゲームパラメータに基づいて、当該仮想ゲーム空間における前記目標傾きが算出される、請求項9に記載のゲームプログラム。
【請求項14】
前記目標傾き算出ステップでは、仮想ゲーム空間に設定された所定平面上に配置された前記オブジェクトに対して前記目標傾きが算出され、
前記第2差分算出ステップでは、前記基準傾き推移において前記所定平面上に配置された前記オブジェクトの傾きが、前記目標傾きに対応する基準傾きとされる、請求項9に記載のゲームプログラム。
【請求項15】
仮想ゲーム空間において他のオブジェクトを移動させる他オブジェクト移動ステップを、さらに前記コンピュータに実行させ、
前記目標傾き算出ステップでは、前記他のオブジェクトの移動予測に基づいて、仮想ゲーム空間に設定された所定平面と前記他のオブジェクトとが交差する予測交差位置を予測し、当該予測交差位置に配置された前記オブジェクトの傾きを前記目標傾きとして算出する、請求項9に記載のゲームプログラム。
【請求項16】
前記動きセンサは、前記入力装置自体に加わる少なくとも1軸方向の加速度を検出する加速度センサであり、
前記動きデータは、前記加速度センサが検出した加速度を示す加速度データである、請求項8に記載のゲームプログラム。
【請求項17】
入力装置自体の動きを検出する動きセンサを備えた入力装置で検出された動きデータを用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置であって、
前記オブジェクトが仮想ゲーム空間内を移動する基準軌跡が記憶されるメモリと、
前記動きセンサから出力される動きデータを取得する動きデータ取得手段と、
前記動きデータ取得手段が取得した動きデータに基づいて、仮想ゲーム空間における前記オブジェクトに対応付けられた移動開始座標を算出する開始座標算出手段と、
メモリに記憶された前記基準軌跡から前記移動開始座標に対応する当該基準軌跡上の第1対応点を算出し、当該第1対応点と前記移動開始座標との第1差分座標を算出する第1差分算出手段と、
仮想ゲーム空間における前記オブジェクトに対応付けられた目標座標を算出する目標座標算出手段と、
メモリに記憶された前記基準軌跡から前記目標座標に対応する当該基準軌跡上の第2対応点を算出し、当該第2対応点と前記目標座標との第2差分座標を算出する第2差分算出手段と、
所定条件が満たされた後の経過時間に応じて、前記第1差分座標から前記第2差分座標まで変化する変化差分座標を算出する変化差分座標算出手段と、
前記経過時間に応じた前記基準軌跡上の座標に、当該経過時間に応じて算出された前記変化差分座標を加算して補正座標を算出する補正座標算出手段と、
仮想ゲーム空間において前記補正座標に対応する位置に前記オブジェクトを配置して、前記表示装置に当該オブジェクトを表示する表示制御手段とを備える、ゲーム装置。
【請求項18】
入力装置自体の動きを検出する動きセンサを備えた入力装置で検出された動きデータを用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置であって、
仮想ゲーム空間内の移動に応じた前記オブジェクトの傾き変化の基準を示す基準傾き推移が記憶されるメモリと、
前記動きセンサから出力される動きデータを取得する動きデータ取得手段と、
前記動きデータ取得手段が取得した動きデータに基づいて、仮想ゲーム空間で前記オブジェクトを移動させる開始時点での当該オブジェクトの傾きを算出する開始傾き算出手段と、
メモリに記憶された前記基準傾き推移から前記開始傾き算出手段で算出した傾きに対応する基準傾きを算出し、当該基準傾きと前記開始傾き算出手段が算出した傾きとの第1差分傾きを算出する第1差分算出手段と、
仮想ゲーム空間における前記オブジェクトの目標傾きを算出する目標傾き算出手段と、
メモリに記憶された前記基準傾き推移から前記目標傾きに対応する基準傾きを算出し、当該基準傾きと前記目標傾きとの第2差分傾きを算出する第2差分算出手段と、
所定条件が満たされた後の経過時間に応じて、前記第1差分傾きから前記第2差分傾きまで変化する変化差分傾きを算出する変化差分傾き算出手段と、
前記経過時間に応じた前記基準傾き推移に対して、当該経過時間に応じて算出された前記変化差分傾きを加算して補正傾きを算出する補正傾き算出手段と、
仮想ゲーム空間における前記オブジェクトの傾きを前記補正傾きとして、前記表示装置に当該オブジェクトを表示する表示制御手段とを備える、ゲーム装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24A】
image rotate

【図24B】
image rotate

【図25】
image rotate

【図26A】
image rotate

【図26B】
image rotate

【図27】
image rotate