ゲーム装置およびゲームプログラム
【課題】加速度センサを用いた動作の検出を利用した新たなゲーム装置およびゲームプログラムを提供する。
【解決手段】入力装置から操作データを取得して記憶手段に記憶し、所定の開始タイミングにおいて取得した操作データに含まれる加速度データを用いて、仮想ゲーム世界におけるオブジェクトの姿勢または位置を示す初期状態データを算出する。開始タイミング以降に逐次取得された操作データに含まれる加速度データに応じて、オブジェクトの姿勢または位置を時間と共に順次変化させるための変化量データを算出する。そして、初期状態データに応じて仮想ゲーム世界に配置されたオブジェクトの姿勢または位置を変化量データに応じて変化させて、そのオブジェクトの動きを制御するゲーム処理を行う。
【解決手段】入力装置から操作データを取得して記憶手段に記憶し、所定の開始タイミングにおいて取得した操作データに含まれる加速度データを用いて、仮想ゲーム世界におけるオブジェクトの姿勢または位置を示す初期状態データを算出する。開始タイミング以降に逐次取得された操作データに含まれる加速度データに応じて、オブジェクトの姿勢または位置を時間と共に順次変化させるための変化量データを算出する。そして、初期状態データに応じて仮想ゲーム世界に配置されたオブジェクトの姿勢または位置を変化量データに応じて変化させて、そのオブジェクトの動きを制御するゲーム処理を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、加速度センサを備えた入力装置を振って操作するゲーム装置およびゲームプログラムに関する。
【背景技術】
【0002】
従来、プレイヤの身体動作に応じて当該動作を推定する装置がある。例えば、プレイヤの投球動作したときの投球速度を推定するための運動データ推定装置が開示されている(例えば、特許文献1参照)。上記運動データ推定装置は、電子回路、加速度センサ、および2つの傾斜スイッチが設けられた腕時計装置である。そして、プレイヤが運動データ推定装置を自身の腕に装着することによって、プレイヤが投球動作したときの投球速度が推定される。上記運動データ推定装置は、傾斜スイッチのON状態が一定時間継続すると、何れの傾斜スイッチがONであるかによってプレイヤの利き手を判別して、加速度センサによる加速度の検出を開始する。加速度センサは、装置本体に生じる加速度の絶対値を検出する。そして、上記運動データ推定装置は、加速度の積分値を算出し、加速度積分値と実際の投球速度との関係を表す近似式を推定式として用いることによって、加速度積分値による投球速度の推定算出を行っている。
【特許文献1】特開平11−14395号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上記特許文献1で開示された運動データ推定装置は、プレイヤの投球動作中は、装置本体に生じる加速度の値が激しく変動するため、加速度を測定開始するために加速度センサ以外にさらに傾斜スイッチを設けている。したがって、運動データ推定装置の部品コストが高くなる。また、上記運動データ推定装置は、投球速度を推定するために積分値を用いているため、近似的な投球速度のみを算出することしかできず、速度以外の、投球方向等の他の推定をすることができない。したがって、上記運動データ推定装置は、投球速度のみの推定であるために、プレイヤにとって面白みに欠ける場合がある。さらに、上記運動データ推定装置は、投球速度を推定するために積分値を用いているため、積分処理が終了するまでは動作の推定ができない。したがって、上記運動データ推定装置は、プレイヤの投球動作中等の動作をリアルタイムに反映させる処理ができない。
【0004】
それ故に、本発明は、このような問題に鑑みてなされたものであって、加速度センサを用いた動作の検出を利用した新たなゲーム装置およびゲームプログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0006】
第1の発明は、加速度データ(Da、Xa、Ya、Za)を出力する加速度センサ(701)を備えた入力装置(7)からその加速度データを含む操作データを取得し、その操作データに基づいて、その入力装置に対する振り操作に応じたゲーム処理を行うゲーム装置(5)である。ゲーム装置は、操作データ取得手段(ステップ20、26、51、61を実行するCPU30、以下、単にステップ番号のみ記載する)、初期状態データ算出手段(S11)、変化量データ算出手段(S52、S53、S62、S63)、およびゲーム処理手段(S17、S24、S54、S64)を備える。操作データ取得手段は、入力装置から操作データを取得して記憶手段(33)に記憶する。初期状態データ算出手段は、所定の開始タイミング(S25でYes)において取得した操作データに含まれる加速度データを用いて、仮想ゲーム世界におけるオブジェクト(PC、B)の姿勢または位置を示す初期状態データ(Θst)を算出する。変化量データ算出手段は、開始タイミング以降に逐次取得された操作データに含まれる加速度データに応じて、オブジェクトの姿勢または位置を時間と共に順次変化させるための変化量データ(Θback、Θfor、Θthrow)を算出する。ゲーム処理手段は、初期状態データに応じて仮想ゲーム世界に配置されたオブジェクトの姿勢または位置を変化量データに応じて変化させて、そのオブジェクトの動きを制御するゲーム処理を行う。
【0007】
第2の発明は、上記第1の発明において、記憶手段には、仮想ゲーム世界におけるオブジェクトの一連の動作を示す基本モーションデータ(Dh)が格納される。変化量データ算出手段は、逐次取得する加速度データが示す加速度の大きさ(a)に応じて、基本モーションデータが示す一連の動作中のオブジェクトの姿勢または位置を指定する変化量データ(Θback、Θfor)を算出する。ゲーム処理手段は、初期状態データに応じた姿勢または位置を始点とし、その後の変化量データに基づいた基本モーションデータの動きに沿って、オブジェクトを動作させる(S24、S54、S64、図18〜図22)。
【0008】
第3の発明は、上記第1の発明において、記憶手段には、仮想ゲーム世界におけるオブジェクトの一連の動作を示す基本モーションデータが格納される。変化量データ算出手段は、逐次取得する加速度データが示す加速度の大きさに応じて、基本モーションデータが示す一連の動作を変化させる速度(θ他)を指定する変化量データを算出する。ゲーム処理手段は、初期状態データに応じた姿勢または位置を始点とし、その後の変化量データに基づいた速度に応じて基本モーションデータを再生して、オブジェクトを動作させる。
【0009】
第4の発明は、上記第1の発明において、開始タイミング以降において、所定の操作内容を示す操作データが取得されたタイミング(S15でYes)を検出するタイミング検出手段を、さらに備える。変化量データ算出手段は、タイミング検出手段が所定の操作内容を示す操作データを取得されたタイミングを検出するまで、変化量データを算出する。
【0010】
第5の発明は、上記第1の発明において、開始タイミング以降において、所定の操作内容を示す操作データが取得されたタイミング(S15でYes)を検出するタイミング検出手段を、さらに備える。ゲーム処理手段は、タイミング検出手段が所定の操作内容を示す操作データを取得されたタイミングを検出したときに算出されている変化量データ(Θfor)に基づいて、オブジェクトに関する仮想ゲーム世界における方向(Θthrow)を少なくとも設定してゲーム処理を行う。
【0011】
第6の発明は、上記第5の発明において、ゲーム処理手段は、オブジェクト(PC)の動作に応じて他のオブジェクト(B)を仮想ゲーム世界において移動させるゲーム処理を行う。ゲーム処理手段は、タイミング検出手段が所定の操作内容を示す操作データを取得されたタイミングを検出したときに算出されている変化量データに基づいて、オブジェクトが他のオブジェクトを移動させる方向を少なくとも設定してゲーム処理を行う。
【0012】
第7の発明は、上記第6の発明において、タイミング検出手段が所定の操作内容を示す操作データを取得されたタイミングを検出する直前に取得された加速度データが示す加速度の大きさに応じて、他のオブジェクトの移動速度を設定する移動速度設定手段(S18)を、さらに備える。
【0013】
第8の発明は、上記第6の発明において、タイミング検出手段が所定の操作内容を示す操作データを取得されたタイミングを検出する前後に取得された加速度データが示す所定方向(X軸方向)の加速度の大きさに応じて、他のオブジェクトの軌道(曲がる大きさ)を設定する軌道設定手段(S18)を、さらに備える。
【0014】
第9の発明は、上記第4または第5の発明において、入力装置は、少なくとも1つの操作キー(72)を備える。操作データは、操作キーの押下に応じたキーデータを含む。タイミング検出手段は、キーデータに基づいて、操作キーが押下されたタイミングまたは操作キーの押下が解除されたタイミングを検出する。
【0015】
第10の発明は、上記第1の発明において、初期状態データ算出手段は、判定手段(S21、S27)、加速度方向算出手段(S22、S28)、および対応状態算出手段(S24、S29)を含む。判定手段は、加速度データが示す加速度が安定していることを判定する。加速度方向算出手段は、判定手段が加速度の安定を判定したとき、入力装置に対してその加速度が作用している方向を算出する。対応状態算出手段は、加速度が作用している方向に対応する仮想ゲーム世界におけるオブジェクトの姿勢または位置(Θst)を算出する。
【0016】
第11の発明は、上記第1の発明において、入力装置は、少なくとも1つの操作キーを備える。操作データは、操作キーの押下に応じたキーデータを含む。ゲーム装置は、第1タイミング検出手段(S25)、第2タイミング検出手段(S42、S44、S46、S47)、および第3タイミング検出手段(S15)を、さらに備える。第1タイミング検出手段は、キーデータに基づいて、操作キーが押下された第1タイミングを検出する。第2タイミング検出手段は、第1タイミング以降において、逐次取得する加速度データが示す加速度の大きさが所定の条件を満たす第2タイミングを検出する。第3タイミング検出手段は、第2タイミング以降において、キーデータに基づいて、操作キーの押下が解除された第3タイミングを検出する。初期状態データ算出手段は、第1タイミングにおいて取得した操作データに含まれる加速度データを用いて、初期状態データ(Θst)を算出する。変化量データ算出手段は、第1変化量データ算出手段(S53)および第2変化量データ算出手段(S63)を含む。第1変化量データ算出手段は、第1タイミングから第2タイミングまで逐次取得された操作データに含まれる加速度データに応じて、オブジェクトが第1の動作(バックスイング)を行うようにそのオブジェクトの姿勢または位置を時間と共に順次変化させるための第1変化量データ(Θback)を算出する。第2変化量データ算出手段は、第2タイミング以降に逐次取得された操作データに含まれる加速度データに応じて、オブジェクトが第1の動作とは異なる第2の動作(フォワードスイング)を行うようにそのオブジェクトの姿勢または位置を時間と共に順次変化させるための第2変化量データ(Θfor)を算出する。ゲーム処理手段は、第3タイミングで算出された第2変化量データに応じてオブジェクトの動き(Θthrow)を制御するゲーム処理を行う。
【0017】
第12の発明は、加速度データを出力する加速度センサを備えた入力装置からその加速度データを含む操作データを取得し、その操作データに基づいて、その入力装置に対する振り操作に応じたゲーム処理を行うゲーム装置のコンピュータ(30)で実行されるゲームプログラムである。ゲームプログラムは、操作データ取得ステップ、初期変化量データ算出ステップ、変化量データ算出ステップ、およびゲーム処理ステップをコンピュータに実行させる。操作データ取得ステップは、入力装置から操作データを取得してメモリ(33)に記憶する。初期変化量データ算出ステップは、所定の開始タイミングにおいて取得した操作データに含まれる加速度データを用いて、仮想ゲーム世界におけるオブジェクトの姿勢または位置を示す初期変化量データを算出する。変化量データ算出ステップは、開始タイミング以降に逐次取得された操作データに含まれる加速度データに応じて、オブジェクトの姿勢または位置を時間と共に順次変化させるための変化量データを算出する。ゲーム処理ステップは、初期状態データに応じて、仮想ゲーム世界に配置されたオブジェクトの姿勢または位置を変化量データに応じて変化させて、そのオブジェクトの動きを制御するゲーム処理を行う。
【0018】
第13の発明は、上記第12の発明において、メモリには、仮想ゲーム世界におけるオブジェクトの一連の動作を示す基本モーションデータが格納される。変化量データ算出ステップでは、逐次取得する加速度データが示す加速度の大きさに応じて、基本モーションデータが示す一連の動作中のオブジェクトの姿勢または位置を指定する変化量データが算出される。ゲーム処理ステップでは、初期状態データに応じた姿勢または位置を始点とし、その後の変化量データに基づいた基本モーションデータの動きに沿って、オブジェクトを動作させる。
【0019】
第14の発明は、上記第12の発明において、メモリには、仮想ゲーム世界におけるオブジェクトの一連の動作を示す基本モーションデータが格納される。変化量データ算出ステップでは、逐次取得する加速度データが示す加速度の大きさに応じて、基本モーションデータが示す一連の動作を変化させる速度を指定する変化量データが算出される。ゲーム処理ステップでは、初期状態データに応じた姿勢または位置を始点とし、その後の変化量データに基づいた速度に応じて基本モーションデータを再生して、オブジェクトを動作させる。
【0020】
第15の発明は、上記第12の発明において、開始タイミング以降において、所定の操作内容を示す操作データが取得されたタイミングを検出するタイミング検出ステップを、さらにコンピュータに実行させる。変化量データ算出ステップでは、タイミング検出ステップで所定の操作内容を示す操作データを取得されたタイミングが検出されるまで、変化量データを変化させる。
【0021】
第16の発明は、上記第12の発明において、開始タイミング以降において、所定の操作内容を示す操作データが取得されたタイミングを検出するタイミング検出ステップを、さらにコンピュータに実行させる。ゲーム処理ステップでは、タイミング検出ステップで所定の操作内容を示す操作データを取得されたタイミングが検出されたときに算出されている変化量データに基づいて、オブジェクトに関する仮想ゲーム世界における方向を少なくとも設定してゲーム処理が行われる。
【0022】
第17の発明は、上記第16の発明において、ゲーム処理ステップでは、オブジェクトの動作に応じて他のオブジェクトを仮想ゲーム世界において移動させるゲーム処理が行われる。ゲーム処理ステップでは、タイミング検出ステップで所定の操作内容を示す操作データを取得されたタイミングが検出されたときに算出されている変化量データに基づいて、オブジェクトが他のオブジェクトを移動させる方向を少なくとも設定してゲーム処理が行われる。
【0023】
第18の発明は、上記第17の発明において、タイミング検出ステップで所定の操作内容を示す操作データを取得されたタイミングが検出される直前に取得された加速度データが示す加速度の大きさに応じて、他のオブジェクトの移動速度を設定する移動速度設定ステップを、さらにコンピュータに実行させる。
【0024】
第19の発明は、上記第17の発明において、タイミング検出ステップで所定の操作内容を示す操作データを取得されたタイミングが検出される前後に取得された加速度データが示す所定方向の加速度の大きさに応じて、他のオブジェクトの軌道を設定する軌道設定ステップを、さらにコンピュータに実行させる。
【0025】
第20の発明は、上記第15または第16の発明において、入力装置は、少なくとも1つの操作キーを備える。操作データは、操作キーの押下に応じたキーデータを含む。タイミング検出ステップでは、キーデータに基づいて、操作キーが押下されたタイミングまたは操作キーの押下が解除されたタイミングが検出される。
【0026】
第21の発明は、上記第12の発明において、初期状態データ算出ステップは、判定ステップ、加速度方向算出ステップ、および対応状態算出ステップを含む。判定ステップは、加速度データが示す加速度が安定していることを判定する。加速度方向算出ステップは、判定ステップで加速度の安定が判定されたとき、入力装置に対してその加速度が作用している方向を算出する。対応状態算出ステップは、加速度が作用している方向に対応する仮想ゲーム世界におけるオブジェクトの姿勢または位置を算出する。
【0027】
第22の発明は、上記第12の発明において、入力装置は、少なくとも1つの操作キーを備える。操作データは、操作キーの押下に応じたキーデータを含む。ゲームプログラムは、第1タイミング検出ステップ、第2タイミング検出ステップ、および第3タイミング検出ステップを、さらにコンピュータに実行させる。第1タイミング検出ステップは、キーデータに基づいて、操作キーが押下された第1タイミングを検出する。第2タイミング検出ステップは、第1タイミング以降において、逐次取得する加速度データが示す加速度の大きさが所定の条件を満たす第2タイミングを検出する。第3タイミング検出ステップは、第2タイミング以降において、キーデータに基づいて、操作キーの押下が解除された第3タイミングを検出する。初期状態データ算出ステップでは、第1タイミングにおいて取得した操作データに含まれる加速度データを用いて、初期状態データが算出される。変化量データ算出ステップは、第1変化量データ算出ステップおよび第2変化量データ算出ステップを含む。第1変化量データ算出ステップは、第1タイミングから第2タイミングまで逐次取得された操作データに含まれる加速度データに応じて、オブジェクトが第1の動作を行うようにそのオブジェクトの姿勢または位置を時間と共に順次変化させるための第1変化量データを算出する。第2変化量データ算出ステップは、第2タイミング以降に逐次取得された操作データに含まれる加速度データに応じて、オブジェクトが第1の動作とは異なる第2の動作を行うようにそのオブジェクトの姿勢または位置を時間と共に順次変化させるための第2変化量データを算出する。ゲーム処理ステップでは、第3タイミングで算出された第2変化量データに応じてオブジェクトの動きを制御するゲーム処理が行われる。
【発明の効果】
【0028】
上記第1の発明によれば、プレイヤが入力装置を振る動作に応じて加速度センサが検出する加速度の変化を逐次反映する新たなゲームが可能となる。
【0029】
上記第3および第4の発明によれば、プレイヤが振る動作に応じて時間と共に変化する上記加速度を逐次反映した状態データに基づいて、加速度を逐次反映してオブジェクトを動作させることができる。
【0030】
上記第4の発明によれば、プレイヤが入力装置を振る動作に応じて加速度センサが検出する所定期間中の加速度の変化を逐次反映する新たなゲームが可能となる。
【0031】
上記第5の発明によれば、プレイヤが入力装置を振る動作に応じて加速度センサが検出する加速度を逐次取得して求めた方向を反映させた新たなゲーム処理を可能としている。例えば、加速度データが示す加速度の累積を用いて所定時点の入力装置の振り動作角度を推定することも可能であり、入力装置の振り角度を反映させた新たなゲームを可能としている。
【0032】
上記第6の発明によれば、上記加速度を逐次取得して求めた方向にオブジェクトが移動する新たなゲームを可能としている。
【0033】
上記第7の発明によれば、上記加速度を逐次取得して求めた方向に移動するオブジェクトの速度を、プレイヤが入力装置を振る動作に応じて設定することができる。
【0034】
上記第8の発明によれば、上記加速度を逐次取得して求めた方向に移動するオブジェクトの軌道を、プレイヤが入力装置を振る動作に応じて設定することができる。
【0035】
上記第9の発明によれば、プレイヤのキー操作に応じて、加速度の変化を逐次反映する期間を設定することができる。
【0036】
上記第10の発明によれば、オブジェクトの仮想ゲーム世界における初期状態を、入力装置の姿勢に対応して設定することができる。
【0037】
上記第11の発明によれば、プレイヤが入力装置を振る動作に応じて加速度センサが検出する加速度の変化を逐次反映し、その途中でオブジェクトの動作が切り替わる新たなゲームが可能となる。
【0038】
また、本発明のゲームプログラムによれば、上述したゲーム装置と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0039】
図1を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置の一例の据置型のゲーム装置を含むゲームシステムについて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の外観図であり、図2はゲーム装置本体5のブロック図である。以下、当該ゲームシステム1について説明する。
【0040】
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置本体5から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明の情報処理プログラムの一例のゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
【0041】
また、ゲーム装置本体5は、通信ユニット6を内蔵する。通信ユニット6は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置本体5の前部主面には、当該ゲーム装置本体5の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトスイッチ等が設けられている。
【0042】
また、ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ38が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置本体5は、フラッシュメモリ38に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置本体5のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0043】
コントローラ7は、通信ユニット6を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるゲーム空間に登場するプレイヤキャラクタ等を操作したりするための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体5の通信ユニット6から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
【0044】
図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が接続されている。
【0045】
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0046】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等が、CPU30によって実行される。
【0047】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0048】
メモリコントローラ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に出力する。
【0049】
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
【0050】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0051】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0052】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
【0053】
ハウジング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の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0054】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0055】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から通信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0056】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5のスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0057】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。本実施例では、プレイヤが投球動作する際に操作ボタン72iが押下され、プレイヤキャラクタがボールを離す際に操作ボタン72iが離される。
【0058】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング70の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0059】
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の下面(操作ボタン72iが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をX軸正方向とする。
【0060】
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
【0061】
図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等が判定することができる。
【0062】
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0063】
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体5から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0064】
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
【0065】
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
【0066】
撮像情報演算部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自体の方向を変えることによってその撮像方向を変更することができる。
【0067】
コントローラ7は、3軸(X、Y、Z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、少なくとも1軸方向に沿った直線加速度を検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて、加速度センサ701が提供されてもよい。
【0068】
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、それら3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0069】
しかしながら、加速度センサ701から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ701からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを判定することができる。このように、加速度センサ701をマイコン751(またはゲーム装置本体5に含まれるCPU30等の他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢、または位置を判定することができる。同様に、加速度センサ701を備えるコントローラ7がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7の様々な動きおよび/または位置を算出することができる。他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。加速度センサ701でそれぞれ検知された加速度を示すデータは、通信部75に出力される。
【0070】
通信部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を作動させる。
【0071】
コントローラ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は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0072】
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、本ゲーム装置本体5で行うゲームの概要について説明する。図8に示すように、コントローラ7は、全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、プレイヤが片手でコントローラ7を把持し、あたかもボウリングのボールを投げるようにコントローラ7を振る動作を行う。このようなプレイヤがコントローラ7を振る動作に応じて、モニタ2にボウリングゲームが表現される。
【0073】
具体的には、プレイヤがボウリングのアドレス(投球前の動作)のような姿勢でコントローラ7を把持した状態から、操作ボタン72iを押下して、ボウリングのアプローチ(投球動作)のような動作を行うと、モニタ2にはプレイヤキャラクタがプレイヤの動作に応じてボウリングのアドレス動作およびバックスイング動作を開始する。そして、コントローラ7を把持したプレイヤがボウリングのバックスイングからフォワードスイングしてボールをリリースするまでの動作を行って、ボールをリリースするタイミングで操作ボタン72iを離す操作を行うと、モニタ2にはプレイヤキャラクタがプレイヤの動作に応じてボウリングの投球動作を再現して、当該タイミングでボールをリリースする動作が表示される。
【0074】
例えば、上記アドレスからバックスイングを開始するまでの動作では、プレイヤが静的にコントローラ7を上下に傾けることによって、コントローラ7から操作情報(具体的には、X、Y、およびZ軸方向加速度データ)をゲーム装置本体5に与える。また、上記バックスイングからボールをリリースするまでの動作では、プレイヤがコントローラ7を振ることによって、コントローラ7からその遠心力等に応じた操作情報をゲーム装置本体5に与える。このようなコントローラ7に加わる加速度の変化は、加速度センサ701によって検出できるため、加速度センサ701から出力されるX、Y、およびZ軸方向加速度データに対して追加の処理を行うことによって、コントローラ7の傾きや動きを算出することができる。一般的に、動作に応じて生じる加速度を検出する場合、加速度センサ701から出力される加速度ベクトル(あるいは、加速度の正負)は、コントローラ7の加速方向とは真逆のベクトルとなるため、検出した加速度の方向を考慮してコントローラ7の傾きや動きを算出することが必要であることは言うまでもない。
【0075】
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図9を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図9は、ゲーム装置本体5のメインメモリ33に記憶される主なデータを示す図である。
【0076】
図9に示すように、メインメモリ33には、加速度データDa、加速度の大きさデータDb、初期角度データDc、スイング変化角度データDd、バックスイング角度データDe、フォワードスイング角度データDf、リリーススイング角度データDg、基準モーションデータDh、ボール速度データDi、ボール軌道データDj、および画像データDk等が記憶される。なお、メインメモリ33には、図9に示す情報に含まれるデータの他、ゲームに登場するプレイヤキャラクタPCや他のオブジェクト等に関するデータ(位置データ等)や仮想ゲーム空間に関するデータ(背景やレーンのデータ等)等、ゲーム処理に必要なデータが記憶される。
【0077】
加速度データDaは、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データである。加速度データDaには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3が含まれる。なお、ゲーム装置本体5に備える通信ユニット6は、コントローラ7から所定間隔(例えば、5ms毎)に送信される操作情報に含まれる加速度データを受信し、通信ユニット6に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である1フレーム毎に読み出されてメインメモリ33の加速度データDaが更新される。本実施例では、加速度データDaは、コントローラ7から送信された過去所定フレーム分の加速度データが適宜更新されて格納される。加速度の大きさデータDbは、コントローラ7に生じている加速度の大きさaを示すデータであり、X軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3を用いて算出される。
【0078】
初期角度データDcは、プレイヤキャラクタPCがバックスイングする前の初期状態を示すデータであり、例えばプレイヤキャラクタPCのスイング角度に対する初期角度Θstによって示される。スイング角度Θは、例えばプレイヤキャラクタPCの振っている腕の基準方向に対する角度として定義される。スイング変化角度データDdは、プレイヤキャラクタPCがバックスイングまたはフォワードスイングする際に変化させる変化角度θを示すデータである。バックスイング角度データDeは、プレイヤキャラクタPCがバックスイングする際のスイング角度Θbackを示すデータである。フォワードスイング角度データDfは、プレイヤキャラクタPCがフォワードスイングする際のスイング角度Θforを示すデータである。リリーススイング角度データDgは、プレイヤキャラクタPCがボールをリリースする際のスイング角度Θthrowを示すデータである。
【0079】
基準モーションデータDhは、プレイヤキャラクタPCがボールを投球する際のモーションの基本となるデータである。例えば、基準モーションデータDhは、プレイヤキャラクタPCがアドレス→バックスイング→フォワードスイング→ボールをリリース→フィニッシュまでの一連の投球動作をモニタ2に表示するためのデータを示しており、その動作速度がスイング角度で制御される。ボール速度データDiは、プレイヤキャラクタPCがボールをリリースした後に、レーン上を移動するボールBの速度を示すデータである。ボール軌道データDjは、プレイヤキャラクタPCがボールをリリースした後に、レーン上を移動するボールBの軌道を示すデータである。
【0080】
画像データDkは、プレイヤキャラクタ画像データDk1およびボール画像データDk2等を含み、仮想ゲーム空間にプレイヤキャラクタPCやボールBを配置してゲーム画像を生成するためのデータである。
【0081】
次に、図10〜図22を参照して、ゲーム装置本体5において行われるゲーム処理の詳細を説明する。なお、図10は、ゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャートである。図11は、図10におけるステップ11の初期角度Θstを算出する処理の詳細な動作を示すサブルーチンである。図12は、図10におけるステップ12のバックスイングモーション再生/モーション切り替え処理の詳細な動作を示すサブルーチンである。図13は、図12におけるステップ41、43、および45のバックスイングモーション再生処理の詳細な動作を示すサブルーチンである。図14は、図10におけるステップ14のフォワードスイングモーション再生処理の詳細な動作を示すサブルーチンである。図15は、コントローラ7が静的に傾いた状態の一例を示す図である。図16は、コントローラ7が振られている状態の一例を示す図である。図17は、コントローラ7が振られることによって、当該コントローラ7に生じる加速度の変化の一例を示す図である。図18は、プレイヤキャラクタPCがバックスイングする前にスイング角度Θstで構えた初期状態の一例を示す図である。図19は、プレイヤキャラクタPCがスイング角度Θbackでバックスイングするモーションの一例を示す図である。図20は、プレイヤキャラクタPCがスイング角度Θback(Θfor)でバックスイングからフォワードスイングに切り替えるモーションの一例を示す図である。図21は、プレイヤキャラクタPCがスイング角度Θforでフォワードスイングするモーションの一例を示す図である。図22は、プレイヤキャラクタPCがスイング角度ΘthrowでボールBをリリースするモーションの一例を示す図である。なお、図10〜図14に示すフローチャートにおいては、ゲーム処理のうち、プレイヤがコントローラ7を振ることに応じて表現されるプレイヤキャラクタPCのモーションについて説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図10〜図14では、CPU30が実行する各ステップを「S」と略称する。
【0082】
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図10〜図14に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【0083】
図10において、CPU30は、ゲーム処理の初期設定を行い(ステップ10)、処理を次のステップに進める。例えば、CPU30は、ゲームを行うレーンを設定したり、メインメモリ33に記憶している各データを初期化したりする。
【0084】
次に、CPU30は、初期角度Θstを算出し(ステップ11)、処理を次のステップに進める。以下、図11を参照して、上記ステップ11で行う初期角度Θstの算出処理について説明する。
【0085】
図11において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し(ステップ20)、処理を次のステップに進める。そして、CPU30は、取得した加速度データを加速度データDaとしてメインメモリ33に記憶する。ここで、ステップ20で取得される加速度データには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX、Y、およびZ軸方向加速度データが含まれている。ここでは、通信部75は、所定の時間間隔(例えば5ms間隔)で操作情報をゲーム装置本体5へ送信しており、通信ユニット6に備える図示しないバッファに少なくとも加速度データが蓄えられる。そして、CPU30は、ゲーム処理単位である1フレーム毎にバッファに蓄えられた加速度データを取得してメインメモリ33に格納する。なお、上述したように、メインメモリ33には、コントローラ7から送信された過去所定フレーム分の加速度データが適宜更新されて格納される。
【0086】
次に、CPU30は、上記ステップ20で取得した加速度データが安定するのを待つ(ステップ21)。例えば、CPU30は、1フレーム前に取得した加速度データが示す加速度に対して、上記ステップ20で取得した加速度データが示す加速度の変化幅が所定範囲内であれば、当該加速度データが安定していると判断する。または、CPU30は、上記ステップ20で取得した加速度データが示す加速度を含め、過去数フレーム内に取得した加速度データが示す加速度の変化幅が所定範囲内であれば、当該加速度データが安定していると判断する。そして、CPU30は、上記ステップ20で取得した加速度データが安定したとき(ステップ21でYes)、処理を次のステップ22に進める。一方、CPU30は、上記ステップ20で取得した加速度データが不安定であるとき(ステップ21でNo)、上記ステップ20を繰り返す。
【0087】
ステップ22において、CPU30は、上記ステップ20で取得した最新の加速度データを用いて、初期角度Θstを算出する。そして、CPU30は、算出した初期角度Θstを初期角度データDcに格納して、処理を次のステップに進める。
【0088】
ここで、図15を用いて、コントローラ7の傾きと初期角度Θstとの関連について説明する。例えば、図15に示すように、コントローラ7の前面が上に向くように水平方向からコントローラ7の上面を角度Θstだけ傾けてコントローラ7を静止させた場合、コントローラ7の加速度センサ701は、Y軸正方向およびZ軸負方向の間の方向に生じる静的な重力加速度を検出する。そして、CPU30は、この重力加速度を検出した加速度センサ701からの出力に応じて、コントローラ7が実空間の水平方向に対して角度Θstだけコントローラ7が傾いていることを算出する。より具体的には、角度Θstは水平方向を基準となる0°とし、当該基準から下向き、つまり図15における時計回り方向の角度が正の角度となるように設定され、例えば、CPU30は、初期角度Θstを
Θst=arctan(Za/Ya)
で算出する。ここで、Yaは最新のY軸方向加速度データDa2が示すY軸方向の加速度であり、Zaは最新のZ軸方向加速度データDa3が示すZ軸方向の加速度である。なお、図15から明らかなように、コントローラ7の前面が上に向くように水平方向からコントローラ7の上面を角度Θstだけ傾けた場合、コントローラ7に生じる重力方向がY軸正方向およびZ軸負方向の間であるため角度Θstの値が負の角度で示される。つまり、プレイヤの胸前方水平方向を基準(0°)として、コントローラ7の前面を上に向けて0°〜+90°傾けた場合、初期角度Θstは−90°<Θst<0°の間で変化することになる。
【0089】
図11に戻り、CPU30は、上記ステップ22で算出した初期角度Θstが−90°<Θst<0°か否かを判断する(ステップ23)。そして、CPU30は、−90°<Θst<0°である場合、次のステップ24に処理を進める。一方、CPU30は、−90°<Θst<0°でない場合(すなわち、プレイヤが胸前方で上に向けてコントローラ7を静止させていない場合)、上記ステップ20に戻って処理を繰り返す。
【0090】
ステップ24において、CPU30は、初期角度データDcに記憶された初期角度Θstを参照して、プレイヤキャラクタPCが初期角度Θstをスイング角度にして構えたモーションをモニタ2に表示し、処理を次のステップに進める。以下、図18を参照して、初期角度Θstをスイング角度にして構えたプレイヤキャラクタPCのモーションについて説明する。
【0091】
図18において、プレイヤキャラクタPCの投球方向前方の水平方向を基準方向として、当該基準方向からボールBを振り上げて静止させたプレイヤキャラクタPCの腕の角度が初期角度Θstとなる。つまり、プレイヤキャラクタPCは、バックスイングする前に上記基準方向からスイング角度Θstだけ振り上げてボールBを構えた初期状態で静止する。なお、スイング角度Θstの正負も上記基準方向を境界として切り替わる。本実施例では、上記基準方向から下方へプレイヤキャラクタPCがバックスイングする方向のスイング角度を正の角度Θとし、上記基準方向から上方へプレイヤキャラクタPCが振り上げる方向のスイング角度を負の角度Θとする。ここで、上述したように初期角度Θstは、−90°<Θst<0°(つまり、負の角度)であり、プレイヤキャラクタPCは、胸の前方から角度Θstだけ腕を振り上げた状態で静止してボールBを構えることになる。
【0092】
また、図15を用いて説明したように、プレイヤがコントローラ7の前面が上に向くように水平方向からコントローラ7の上面を角度Θstだけ傾けてコントローラ7を静止させた場合、初期角度Θstが算出される。したがって、プレイヤキャラクタPCがスイングする前の初期状態におけるスイング角度Θは、プレイヤが把持するコントローラ7の姿勢(加速度データの値)に応じて変化することになる。具体的には、コントローラ7の上面を傾けた角度を初期角度Θstに設定することによって、プレイヤがコントローラ7を傾けた上面角度と同じ角度だけ、プレイヤキャラクタPCが胸の前方から腕を振り上げてボールBを構えた状態で静止することになり、あたかもプレイヤ自身がボールBを構えているような感覚をプレイヤに与えることができる。
【0093】
CPU30は、基準モーションデータDhに格納されたプレイヤキャラクタPCの基本モーションデータを用いて、初期角度Θstをスイング角度にして構えたモーションをモニタ2に表示する。例えば、CPU30が上記基本モーションデータを用いてアドレス状態(つまり、バックスイング前)を指定し、プレイヤキャラクタPCのスイング角度Θを指定することによって、初期角度Θstをスイング角度にして構えて静止したモーションが表示される。
【0094】
なお、上述した説明では、コントローラ7の上面を傾けた角度と同じ角度だけ、プレイヤキャラクタPCが胸の前方から腕を振り上げてボールBを構えた状態で静止させることによって、プレイヤの姿勢(コントローラ7の姿勢)にプレイヤキャラクタPCの姿勢が一致するような効果を得ることができるが、このような効果を期待しない場合、コントローラ7の上面を傾ける角度とスイング角度とが同じでなくてもかまわない。コントローラ7の姿勢を変化させる操作に伴ってプレイヤキャラクタPCが構えるスイング角度が変化するように設定すれば、両者の角度が異なっていてもかまわない。
【0095】
図11に戻り、CPU30は、コントローラ7から受信した操作情報に含まれるキーデータを取得して、プレイヤがコントローラ7の投球ボタンを押下したか否かを判断する(ステップ25)。例えば、操作ボタン72iが投球ボタンに設定され、CPU30は、操作ボタン72iに対する操作状態を示すキーデータを取得して当該操作ボタン72iの押下状態を判定する。そして、CPU30は、投球ボタンが押下された場合、次のステップ26に処理を進める。一方、CPU30は、投球ボタンが押下されていない場合、上記ステップ20に戻って処理を繰り返す。
【0096】
ステップ26において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し、取得した加速度データを新たな加速度データDaとしてメインメモリ33に記憶して、処理を次のステップに進める。なお、ステップ26の処理は、上述したステップ20の処理と同様であるため、詳細な説明を省略する。
【0097】
次に、CPU30は、上記ステップ26で取得した加速度データが安定したか否かを判断する(ステップ27)。なお、ステップ27における判断方法は、上述したステップ21と同様であるため、詳細な説明を省略する。そして、CPU30は、加速度データが安定している状態を継続している場合、次のステップ28に処理を進める。一方、CPU30は、加速度データが不安定な状態の場合、当該サブルーチンによる処理を終了する。
【0098】
ステップ28において、CPU30は、上記ステップ26で取得した最新の加速度データを用いて、初期角度Θstを算出する。そして、CPU30は、初期角度データDcを算出した初期角度Θstに更新する。次に、CPU30は、初期角度データDcに記憶された初期角度Θstを参照して、プレイヤキャラクタPCが初期角度Θstをスイング角度にして構えたモーションをモニタ2に表示し(ステップ29)、処理を次のステップに進める。なお、ステップ28およびステップ29の処理については、それぞれ上述したステップ22およびステップ24の処理と同様であるため、詳細な説明を省略する。
【0099】
次に、CPU30は、上記ステップ28で算出した初期角度Θstが0°≦Θstか否かを判断する(ステップ30)。そして、CPU30は、Θst<0°である場合、上記ステップ26に戻って処理を繰り返す。一方、CPU30は、0°≦Θstの場合(すなわち、加速度データが安定な状態を維持したまま、プレイヤが胸前方より下に向くまでコントローラ7を傾けた場合)、当該サブルーチンによる処理を終了する。なお、ステップ30における角度Θstに関する条件は、本実施例では0°≦Θstとしたが、必要に応じて、0°に代えて所定の閾値以上であるかどうかを判断するようにしてもよい。
【0100】
なお、当該サブルーチンの終了後は、後述するバックスイングモーション再生処理へ移行する。ここで、当該サブルーチンの終了は、上記ステップ27で加速度データが不安定であると判断された場合と、上記ステップ30で0°≦Θstであると判断された場合である。前者は、一度加速度データが安定して初期角度Θstが設定されてプレイヤキャラクタPCが構えた後、投球ボタンが押下されてコントローラ7が振り動かされたときであり、プレイヤがバックスイング前に構えた後にバックスイングを始めたことを検出している。また、後者は、一度加速度データが安定して初期角度Θstが設定されてプレイヤキャラクタPCが構えた後、投球ボタンが押下されてコントローラ7を緩やかに下方まで傾けたときである。
【0101】
図10に戻り、CPU30は、初期角度Θstの算出の後、バックスイングモーション再生処理/モーション切り替え処理を行い(ステップ12)、処理を次のステップに進める。以下、図12を参照して、上記ステップ12で行うバックスイングモーション再生処理/モーション切り替え処理について説明する。
【0102】
図12において、CPU30は、現在設定されている初期角度Θstをバックスイングする際のスイング角度Θbackに設定し、バックスイング角度データDeに格納する(ステップ40)。つまり、上記ステップ11において最終的に設定された初期角度Θstがバックスイングする際のスイング角度Θbackの初期値となる。次に、CPU30は、バックスイングモーション再生処理を行い(ステップ41)、処理と次のステップに進める。以下、図13を参照して、バックスイングモーション再生処理について説明する。
【0103】
図13において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し、取得した加速度データを新たな加速度データDaとしてメインメモリ33に記憶して(ステップ51)、処理を次のステップに進める。なお、ステップ51の処理は、上述したステップ20の処理と同様であるため、詳細な説明を省略する。
【0104】
次に、CPU30は、上記ステップ51で取得した加速度データが示す加速度の大きさに応じて、スイング変化角度θを算出して(ステップ52)、処理を次のステップに進める。例えば、CPU30は、加速度データが示す加速度の大きさaを
【数1】
で算出して、加速度の大きさデータDbに記憶する。ここで、Xaは最新のX軸方向加速度データDa1が示すX軸方向の加速度であり、Yaは最新のY軸方向加速度データDa2が示すY軸方向の加速度であり、Zaは最新のZ軸方向加速度データDa3が示すZ軸方向の加速度である。そして、CPU30は、スイング変化角度θを
θ=k(a−Ga) …(2)
で算出して、スイング変化角度データDdに記憶する。ここで、Gaは、コントローラ7に作用する重力加速度の大きさを示す定数(例えば、1)である。また、kは、加速度の大きさを変化角度に変換するための係数である。なお、係数kは、プレイヤがコントローラ7を振る角度変化とスイング変化角度θと同じ角度となるように設定するのが好ましい。例えば、加速度の大きさaとプレイヤがコントローラ7を振る角度変化との関係を分析することによって、コントローラ7を振る角度変化とスイング変化角度θとが同じ角度となるような係数kの設定が可能である。これによって、後述により明らかとなるが、プレイヤがコントローラ7を振る角度とプレイヤキャラクタPCのスイング角度とが一致するため、プレイヤがコントローラ7を振る動作をプレイヤキャラクタPCのスイング動作にリアルに模擬することができる。
【0105】
図16に示すように、プレイヤがコントローラ7をスイングして振り動かした場合、コントローラ7の加速度センサ701は、上述した静的な重力加速度に加えて振り動かすことによって生じる遠心力や振り方向または反振り方向への加速度を検出する。ここで、加速度センサ701からの出力を用いて遠心力成分や振り方向または反振り方向への加速度成分を抽出できれば、その遠心力や加速度が作用している時点におけるコントローラ7の動作速度の分析が可能である。ここで、一般的にコントローラ7に作用する力は、現実的には上記振り方向または反振り方向への加速度より遠心力や重力加速度の影響が大きい。したがって、本実施例では、加速度センサ701からの出力が示す加速度の大きさから重力加速度分を減算して遠心力成分の大きさとし、当該遠心力成分の大きさをスイング変化角度θに換算している。
【0106】
図13に戻り、CPU30は、上記ステップ52で算出したスイング変化角度θを用いて、バックスイング角度Θbackを算出し(ステップ53)、処理を次のステップに進める。例えば、CPU30は、バックスイング角度データDeに格納されているバックスイング角度Θbackを参照し、Θback+θを新たなバックスイング角度Θbackとして算出する。そして、CPU30は、バックスイング角度データDeを算出された新たなバックスイング角度Θbackに更新する。
【0107】
次に、CPU30は、バックスイング角度データDeに記憶されたバックスイング角度Θbackを参照して、プレイヤキャラクタPCがバックスイング角度Θbackをスイング角度にしてバックスイングしているモーションをモニタ2に表示し(ステップ54)、当該サブルーチンによる処理を終了する。例えば、CPU30が基本モーションデータDhに格納されている基本モーションデータを用いてバックスイング状態を指定し、プレイヤキャラクタPCのスイング角度Θを指定することによって、バックスイング角度Θbackをスイング角度にしてバックスイングするモーションが表示される。以下、図19を参照して、バックスイング角度Θbackをスイング角度にしてバックスイングするプレイヤキャラクタPCのモーションについて説明する。
【0108】
図19において、プレイヤキャラクタPCの前方の水平方向を基準方向として、当該基準方向からボールBをバックスイングするプレイヤキャラクタPCの腕の角度がバックスイング角度Θbackとなる。つまり、プレイヤキャラクタPCは、上記基準方向からバックスイング角度ΘbackだけボールBをバックスイングしているモーションとなる。なお、バックスイング角度Θbackも初期角度Θstと同様にその正負が上記基準方向を境界として切り替わる。本実施例では、上記基準方向から下方へプレイヤキャラクタPCがバックスイングする方向のスイング角度を正の角度Θとし、上記基準方向から上方へプレイヤキャラクタPCが振り上げる方向のスイング角度を負の角度Θとする。ここで、上述したように初期角度Θstが負の角度であるときがあるため、バックスイングの初期期間ではバックスイング角度Θbackが負の角度に設定され、上記基準方向から上方位置にボールBを振り上げた位置からバックスイングが始まることもあり得る。
【0109】
また、バックスイング角度Θbackは、上記ステップ53の処理によってスイング変化角度θが加算される値であり、処理を繰り返す毎にその角度が大きくなっていく。そして、スイング変化角度θは、コントローラ7の加速度センサ701が検出する加速度の大きさに応じて算出される角度であり、プレイヤがコントローラ7を振ることによって生じる遠心力に応じて算出される角度である。より具体的には、コントローラ7に生じる遠心力が大きければ、算出されるスイング変化角度θも大きくなって、結果的にバックスイング角度Θbackの変化角度も大きくなる。つまり、プレイヤキャラクタPCは、プレイヤがコントローラ7を振る動作に応じてバックスイングしていることになり、その振ることに応じて加速度センサ701が検出する加速度の大きさに応じてプレイヤキャラクタPCがバックスイングするスイング速度もリアルタイムに変化することになる。したがって、プレイヤがコントローラ7を振り動かすことによって、あたかもプレイヤ自身がボールBをバックスイングしているような感覚をプレイヤに与えることができる。
【0110】
図12に戻り、ステップ41のバックスイングモーション再生処理の後、CPU30は、加速度の大きさaが極大値を示しているか否かを判断する(ステップ42)。例えば、CPU30は、加速度センサ701が検出した加速度データの履歴や加速度の大きさaの履歴を用いて、加速度の大きさaが極大値を示しているか否かを判定する。なお、極大値の判定は、既に周知の判定方法を用いればよい。そして、CPU30は、加速度の大きさaが極大値を示している場合、次のステップ43に処理を進める。一方、CPU30は、加速度の大きさaがまだ極大値を示していない場合、上記ステップ41に戻って処理を繰り返す。以下、図17を参照して、コントローラ7に生じる加速度の大きさ変化について説明する。
【0111】
図17において、プレイヤが片手でコントローラ7を把持し、あたかもボウリングのボールを投げるようにコントローラ7を振る動作を分解すると、投球前の構え→投球ボタン押下→バックスイング→フォワードスイング→投球ボタンを離す→ボールをリリース→フォロースルーとなる。このバックスイング開始時は、プレイヤがコントローラ7を静止に近い状態で把持しているため、プレイヤがバックスイングを行うことによってコントローラ7に作用する遠心力が漸増的に大きくなる。したがって、バックスイング開始以降は、上記ステップ52で算出される加速度の大きさaも漸増的に増加する。そして、プレイヤがバックスイングを行うことによってコントローラ7に作用する遠心力が極大となった時点で、加速度の大きさaも極大値を示す。そして、プレイヤは、バックスイングからフォワードスイングへ移行するため、その切り替え時点やその切り替え前等でコントローラ7に作用する遠心力が0となり、加速度の大きさaが極小値を示す。このように、加速度の大きさaが極大値および極小値を順に示したことを検出することによって、プレイヤがバックスイングからフォワードスイングへ移行したことを判別することができる。
【0112】
ステップ43において、CPU30は、バックスイングモーション再生処理を行う。なお、ステップ43で行うバックスイングモーション再生処理については、上記ステップ41と同様であるため、詳細な説明を省略する。次に、CPU30は、加速度の大きさaが極小値を示しているか否かを判断する(ステップ44)。例えば、CPU30は、加速度センサ701が検出した加速度データの履歴や加速度の大きさaの履歴を用いて、加速度の大きさaが極小値を示しているか否かを判定する。なお、極小値の判定も、既に周知の判定方法を用いればよい。そして、CPU30は、加速度の大きさaが極小値を示している場合、次のステップ45に処理を進める。一方、CPU30は、加速度の大きさaがまだ極小値を示していない場合、上記ステップ43に戻って処理を繰り返す。
【0113】
ステップ45において、CPU30は、バックスイングモーション再生処理を行う。なお、ステップ45で行うバックスイングモーション再生処理については、上記ステップ41と同様であるため、詳細な説明を省略する。次に、CPU30は、加速度の大きさaが所定の閾値以上の値を示しているか否かを判断する(ステップ46)。例えば、CPU30は、加速度の大きさaから重力加速度相当分(例えば、1)を減算した値が、閾値以上か否かを判断する。そして、CPU30は、加速度の大きさaが閾値未満を示している場合、次のステップ47に処理を進める。一方、CPU30は、加速度の大きさaが閾値以上を示している場合、当該サブルーチンによる処理を終了する。
【0114】
ステップ47において、CPU30は、加速度の大きさaの変化量が所定の閾値以上の値を示しているか否かを判断する。そして、CPU30は、加速度の大きさaの変化量が閾値未満を示している場合、上記ステップ45に戻って処理を繰り返す。一方、CPU30は、加速度の大きさaの変化量が閾値以上を示している場合、当該サブルーチンによる処理を終了する。
【0115】
上記ステップ40〜ステップ47の処理から明らかなように、CPU30は、コントローラ7に生じる加速度の大きさaが極大値および極小値を示したことを検出することによって、プレイヤがバックスイングからフォワードスイングに移行したと判定する。その後、CPU30は、コントローラ7に生じる加速度の大きさaが閾値以上の大きさを示したとき、またはコントローラ7に生じる加速度の大きさaの変化量が閾値以上の大きさを示したとき、プレイヤがフォワードスイングを開始したと判定する。
【0116】
ここで、図20を参照して、バックスイング角度Θbackをスイング角度にしてバックスイングからフォワードスイングに切り替わるプレイヤキャラクタPCのモーションについて説明する。
【0117】
図20において、上述したように、バックスイング角度Θbackは、プレイヤキャラクタPCの前方の水平方向を基準方向としたプレイヤキャラクタPCの腕の角度を示している。つまり、プレイヤキャラクタPCがバックスイングからフォワードスイングに切り替えた動作を表現するときは、上記基準方向からバックスイング角度ΘbackだけボールBを後ろに振り上げているモーションとなる。
【0118】
また、バックスイング角度Θbackは、上述したように上記ステップ53の処理を繰り返すことによってスイング変化角度θが繰り返し加算される値である。そして、スイング変化角度θは、コントローラ7の加速度センサ701が検出する加速度の大きさに応じて算出される角度であり、プレイヤがコントローラ7を振ることによって生じる遠心力に応じて算出される角度である。より具体的には、コントローラ7に生じる遠心力が大きければ、算出されるスイング変化角度θも大きくなって、結果的にバックスイングからフォワードスイングに切り替える際にボールBを後ろに振り上げる角度も大きくなる。つまり、プレイヤキャラクタPCは、プレイヤがコントローラ7を振る動作に応じた振り上げ角度でバックスイングからフォワードスイングに切り替えていることになり、その振ることに応じて加速度センサ701が検出する加速度の大きさに応じてプレイヤキャラクタPCが振り上げる角度も変化することになる。したがって、プレイヤがコントローラ7を振り動かすことによって、あたかもプレイヤ自身がバックスイングからフォワードスイングへ切り替えているような感覚をプレイヤに与えることができる。
【0119】
図10に戻り、CPU30は、上記ステップ12のバックスイングモーション再生処理/モーション切り替え処理の後、現在設定されているバックスイング角度Θbackをフォワードスイングする際のスイング角度Θforに設定し、フォワードスイング角度データDfに格納する(ステップ13)。つまり、上記ステップ12において最終的に設定されたバックスイング角度Θbackがフォワードスイングする際のスイング角度Θforの初期値となる。次に、CPU30は、フォワードスイングモーション再生処理を行い(ステップ14)、処理と次のステップに進める。以下、図14を参照して、フォワードスイングモーション再生処理について説明する。
【0120】
図14において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し、取得した加速度データを新たな加速度データDaとしてメインメモリ33に記憶して(ステップ61)、処理を次のステップに進める。なお、ステップ61の処理は、上述したステップ20の処理と同様であるため、詳細な説明を省略する。
【0121】
次に、CPU30は、上記ステップ61で取得した加速度データが示す加速度の大きさに応じて、スイング変化角度θを算出して(ステップ62)、処理を次のステップに進める。例えば、CPU30は、加速度データが示す加速度の大きさaを上記ステップ52と同様に数式(1)を用いて算出して、加速度の大きさデータDbに記憶する。そして、CPU30は、スイング変化角度θも上記ステップ52と同様に数式(2)で算出して、スイング変化角度データDdに記憶する。
【0122】
CPU30は、上記ステップ62で算出したスイング変化角度θを用いて、フォワードスイング角度Θforを算出し(ステップ63)、処理を次のステップに進める。例えば、CPU30は、フォワードスイング角度データDfに格納されているフォワードスイング角度Θforを参照し、Θfor−θを新たなフォワードスイング角度Θforとして算出する。そして、CPU30は、フォワードスイング角度データDfを算出された新たなフォワードスイング角度Θforに更新する。
【0123】
次に、CPU30は、フォワードスイング角度データDfに記憶されたフォワードスイング角度Θforを参照して、プレイヤキャラクタPCがフォワードスイング角度Θforをスイング角度にしてフォワードスイングしているモーションをモニタ2に表示し(ステップ64)、当該サブルーチンによる処理を終了する。例えば、CPU30が基本モーションデータDhに格納されている基本モーションデータを用いてフォワードスイング状態を指定し、プレイヤキャラクタPCのスイング角度Θを指定することによって、フォワードスイング角度Θforをスイング角度にしてフォワードスイングするモーションが表示される。以下、図21を参照して、フォワードスイング角度Θforをスイング角度にしてフォワードスイングするプレイヤキャラクタPCのモーションについて説明する。
【0124】
図21において、プレイヤキャラクタPCの前方の水平方向を基準方向として、当該基準方向からボールBをフォワードスイングするプレイヤキャラクタPCの腕の角度がフォワードスイング角度Θforとなる。つまり、プレイヤキャラクタPCは、上記基準方向からフォワードスイング角度ΘforだけボールBをフォワードスイングしているモーションとなる。なお、フォワードスイング角度Θforも初期角度Θstやバックスイング角度Θbackと同様にその正負が上記基準方向を境界として切り替わる。本実施例では、上記基準方向の下方から当該基準方向へプレイヤキャラクタPCがフォワードスイングする方向のスイング角度を正の角度Θとし、上記基準方向から上方へプレイヤキャラクタPCが振り上げる方向のスイング角度を負の角度Θとする。ここで、フォワードスイング角度Θforは、負の角度が算出されるときがあるため、その場合上記基準方向から上方位置にボールBを振り上げた位置でフォワードスイングしている動作が表示されることもあり得る。
【0125】
また、フォワードスイング角度Θforは、上記ステップ63の処理によってスイング変化角度θだけ減算される値であり、処理を繰り返す毎にその角度が小さくなっていく。そして、スイング変化角度θは、コントローラ7の加速度センサ701が検出する加速度の大きさに応じて算出される角度であり、プレイヤがコントローラ7を振ることによって生じる遠心力に応じて算出される角度である。より具体的には、コントローラ7に生じる遠心力が大きければ、算出されるスイング変化角度θも大きくなって、結果的にフォワードスイング角度Θforの変化角度も大きくなる。つまり、プレイヤキャラクタPCは、プレイヤがコントローラ7を振る動作に応じてフォワードスイングしていることになり、その振ることに応じて加速度センサ701が検出する加速度の大きさに応じてプレイヤキャラクタPCがフォワードスイングするスイング速度もリアルタイムに変化することになる。したがって、プレイヤがコントローラ7を振り動かすことによって、あたかもプレイヤ自身がボールBをフォワードスイングしているような感覚をプレイヤに与えることができる。
【0126】
図10に戻り、ステップ14のフォワードスイングモーション再生処理の後、CPU30は、コントローラ7から受信した操作情報に含まれるキーデータを取得して、プレイヤがリリース指示を行ったか否かを判断する(ステップ15)。例えば、操作ボタン72iが投球ボタンに設定されている場合、CPU30は、操作ボタン72iに対する操作状態を示すキーデータを取得して当該操作ボタン72iの押下状態を判定する。そして、CPU30は、リリース指示(例えば、投球ボタンの押下状態が解除、すなわち、押下されている投球ボタンが離された状態に変化)された場合、次のステップ16に処理を進める。一方、CPU30は、リリース指示がない場合、上記ステップ14に戻って処理を繰り返す。
【0127】
次に、CPU30は、現在設定されているフォワードスイング角度Θforを、ボールBをリリースする際のスイング角度Θthrowに設定し、リリーススイング角度データDgに格納する(ステップ16)。つまり、上記ステップ14においてリリース指示時に設定されたフォワードスイング角度ΘforがボールBをリリースする際のスイング角度Θthrowとなる。
【0128】
次に、CPU30は、プレイヤキャラクタPCがスイング角度ΘthrowでボールBをリリースするモーションを再生する処理を行い(ステップ17)、処理と次のステップに進める。以下、図22を参照して、スイング角度Θthrowをスイング角度にしてボールBをリリースするプレイヤキャラクタPCのモーションについて説明する。
【0129】
図22において、リリーススイング角度Θthrowは、プレイヤキャラクタPCの前方の水平方向を基準方向としたプレイヤキャラクタPCの腕の角度を示している。つまり、プレイヤキャラクタPCがボールBをリリースする動作を表現するときは、上記基準方向からリリーススイング角度Θthrowだけ下方へ向かった投球方向へボールBをリリースするモーションとなる。
【0130】
また、フォワードスイング角度Θforは、上述したように上記ステップ63の処理を繰り返すことによってスイング変化角度θが繰り返し減算される値であり、リリース指示時に設定されたフォワードスイング角度Θforがスイング角度Θthrowとなる。そして、スイング変化角度θは、コントローラ7の加速度センサ701が検出する加速度の大きさに応じて算出される角度であり、プレイヤがコントローラ7を振ることによって生じる遠心力に応じて算出される角度である。より具体的には、コントローラ7に生じる遠心力が大きければ、算出されるスイング変化角度θも大きくなって、同じタイミングでリリース指示を行ったとしても結果的にリリースする腕のスイング角度Θthrowが小さくなる(つまり、上方位置でボールBをリリースする)。また、プレイヤがリリース指示を遅延させれば、その遅延した時間内にスイング変化角度θが繰り返し減算されることによって、さらにフォワードスイング角度Θforが小さくなり、結果的にリリースする腕のスイング角度Θthrowが小さくなる。つまり、プレイヤキャラクタPCは、プレイヤがコントローラ7を振る動作とリリース指示のタイミングに応じたスイング角度でボールBをリリースしていることになり、その振ることに応じて加速度センサ701が検出する加速度の大きさや操作ボタン72を離すタイミングに応じてプレイヤキャラクタPCがボールBをリリースする方向もリアルタイムに変化することになる。したがって、プレイヤがコントローラ7を振り動かすことによって、あたかもプレイヤ自身がボールをリリースしているような感覚をプレイヤに与えることができる。
【0131】
図10に戻り、CPU30は、リリースされたボールBがレーン上を移動する軌道および速度を算出する(ステップ18)。次に、CPU30は、上記ステップ18で算出されたボールBの軌道および速度に基づいて、ボールBがレーン上を移動する様子をモニタ2に表示し(ステップ19)、当該フローチャートによる処理を終了する。
【0132】
例えば、CPU30は、リリース指示前の5フレーム間に取得された加速度の大きさaの平均値に応じて、ボールBが移動する速度を算出する。また、CPU30は、プレイヤがコントローラ7をひねる動作に応じて、ボールBがレーン上を曲がる大きさを算出して、ボールBの軌道を設定する。例えば、CPU30は、リリース指示前後の8フレーム(合計16フレーム)間にX軸方向加速度データDa1に記憶されたX軸方向の加速度Xaのうち、最も大きな値を示す4つの加速度Xaの合計を算出し、当該合計値に応じてボールBがレーン上を曲がる大きさを算出する。これらの算出によって、プレイヤがリリース指示前後にコントローラ7を振り動かした速度やひねりに応じてボールBが移動することになり、あたかもプレイヤ自身がボールBを投球したような感覚をプレイヤに与えることができる。
【0133】
なお、算出された上記曲がる大きさに応じてボールBがレーン上を曲がる方向は、様々な設定が可能である。例えば、ボウリングゲームの目標となる10本のピンのうち、1番ピンが配置されている方向へボールBが曲がるようにボールの軌道を設定してもかまわない。また、X軸方向加速度データDa1、Y軸方向加速度データDa2、Z軸方向加速度データDa3にそれぞれ記憶されたX、Y、Z軸方向の加速度Xa、Ya、Zaを用いて、コントローラ7に遠心力が生じている方向を分析し、当該方向に応じてコントローラ7へ加えられているねじり方向を算出してもかまわない。この場合、算出されたねじり方向に応じてボールBが曲がるようにボールの軌道を設定することができる。
【0134】
このように、上記実施形態に係るゲーム装置3は、プレイヤの振る動作に応じて加速度センサ701が検出する加速度の変化を逐次反映する新たなゲームが可能である。例えば、プレイヤキャラクタPCがボールBを投球するモーションは、プレイヤが振る動作に応じて時間と共に変化する上記加速度を逐次反映したスイング角度Θに基づいて、当該モーションがリアルタイムに表示されるため、あたかもプレイヤ自身がボールBを投球しているような感覚をプレイヤに与えることができる。また、プレイヤキャラクタPCがボールBをリリースする角度(方向)は、プレイヤが振る動作に応じて時間と共に変化する上記加速度を適宜累積した結果から、リリース指示された時点のスイング角度Θを求めて決定される。つまり、加速度データの累積を用いてリリース指示時点のコントローラ7の振り動作角度を推定しており、加速度データから求めたコントローラ7の振り角度を反映させた新たなゲーム処理を可能としている。また、加速度を累積した結果を用いて算出されたリリース指示時点のスイング角度Θに基づいて、プレイヤキャラクタPCがスイング角度ΘでボールBをリリースするため、あたかもプレイヤ自身がボールをリリースしているような感覚をプレイヤに与えることができる。
【0135】
なお、上述した投球モーションの再生処理においては、コントローラ7に生じている加速度の大きさaをスイング変化角度θに換算し、スイング変化角度θを適宜加算/減算することによってスイング角度Θを求めてモーションの再生制御を行ったが、他の方式で再生制御を行ってもかまわない。例えば、予め投球モーションが定義されている操作において、コントローラ7に生じている加速度の大きさaに応じて当該モーションを再生する速度を算出し、当該再生速度に応じて基本モーションデータの再生速度を制御して投球モーションを表示してもかまわない。また、コントローラ7に生じている加速度の大きさaを換算して得られたスイング変化角度θをモーション再生速度とし、当該再生速度に応じて基本モーションデータの再生速度を制御して投球モーションを表示してもかまわない。
【0136】
また、上述したスイング角度Θは、上記基準方向を基準として設定されるが、他の方向を基準方向としてもかまわない。例えば、プレイヤキャラクタPCの直上方向や鉛直方向等の他の基準方向に設定してもかまわない。また、上述したスイング角度Θの正負は、上記基準方向を境界として切り替わり、上記基準方向から下方へプレイヤキャラクタPCがバックスイングする方向のスイング角度を正の角度Θとしたが、当該方向のスイング角度を負の角度Θにしてもかまわない。基準方向の設定方向および正負の切り替えに応じて、スイング角度Θの判定基準やスイング変化角度θの加算/減算等を変更すれば、上述した動作と同様の処理で本発明を実現できることは言うまでもない。
【0137】
また、上述した説明では、プレイヤキャラクタPCのスイング角度Θ、すなわちプレイヤキャラクタPCの腕の角度に基づいて、プレイヤキャラクタPCのモーションの再生制御を行ったが、他のパラメータに基づいてプレイヤキャラクタPCの動作制御を行ってもかまわない。例えば、プレイヤキャラクタPCが投球する際に握っているボールBの仮想ゲーム世界における位置を、検出された加速度に応じて逐次算出してプレイヤキャラクタPCのモーションの再生制御を行ってもかまわない。
【0138】
また、上述した説明では、説明を具体的にするためにボウリングゲームを行う例を用いたが、本発明はボウリングゲームに限定されない。例えば、プレイヤキャラクタPCが釣りを行うゲームにおいて、当該プレイヤキャラクタPCが釣竿を振って仕掛けを投げ込むモーションや、野球ゲームにおいてプレイヤキャラクタPCがボールを投球するモーション等、様々なゲームに本発明を適用することができる。
【0139】
また、上述した説明では、コントローラ7の振り動作を判別するゲーム装置本体5をゲームシステム1に適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置にも適用することができる。例えば、入力装置の加速度センサから出力される加速度データに応じて、情報処理装置が表示しているオブジェクトのモーションを制御する等、入力装置に生じる加速度に基づいて様々な処理を行うことができる。
【0140】
また、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。例えば、Z軸(図3、図4参照)成分のみ検出して出力する加速度センサを用いても、上述した振り動作を判定することができる。この場合、コントローラ7の静止状態においては、検出したZ軸方向の加速度が0である場合にコントローラ7が水平状態であると仮定し、Z軸方向の加速度の大きさに応じて重力加速度が作用している方向を簡易的に判定して初期角度Θstを算出する。そして、コントローラ7が振り動かされた後は、Z軸方向の加速度の大きさを上記加速度の大きさaと同様に取り扱って処理を行う。この場合、ボールBが曲がる大きさ等のパラメータの算出はできないが、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。
【0141】
また、上述した説明では、コントローラ7とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
【0142】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。
【0143】
また、本発明のゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【産業上の利用可能性】
【0144】
本発明に係るゲーム装置およびゲームプログラムは、加速度センサを備えた入力装置を用いた操作入力において、入力装置に対する振り動作に応じた処理を行うことができ、ゲームコントローラ等に与えられる動作に応じて仮想オブジェクト等を動作させるゲーム装置やゲームプログラムとして有用である。
【図面の簡単な説明】
【0145】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置本体5の機能ブロック図
【図3】図1のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面後方から見た斜視図
【図5】図3のコントローラ7の上筐体を外した状態を示す斜視図
【図6】図4のコントローラ7の下筐体を外した状態を示す斜視図
【図7】図3のコントローラ7の構成を示すブロック図
【図8】図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図9】図1のゲーム装置本体5のメインメモリ33に記憶される主なデータを示す図
【図10】図1のゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャート
【図11】図10におけるステップ11の初期角度Θstを算出する処理の詳細な動作を示すサブルーチン
【図12】図10におけるステップ12のバックスイングモーション再生/モーション切り替え処理の詳細な動作を示すサブルーチン
【図13】図12におけるステップ41、43、および45のバックスイングモーション再生処理の詳細な動作を示すサブルーチン
【図14】図10におけるステップ14のフォワードスイングモーション再生処理の詳細な動作を示すサブルーチン
【図15】図3のコントローラ7が静的に傾いた状態の一例を示す図
【図16】図3のコントローラ7が振られている状態の一例を示す図
【図17】図3のコントローラ7が振られることによって、当該コントローラ7に生じる加速度の変化の一例を示す図
【図18】プレイヤキャラクタPCがバックスイングする前にスイング角度Θstで構えた初期状態の一例を示す図
【図19】プレイヤキャラクタPCがスイング角度Θbackでバックスイングするモーションの一例を示す図
【図20】プレイヤキャラクタPCがスイング角度Θback(Θfor)でバックスイングからフォワードスイングに切り替えるモーションの一例を示す図
【図21】プレイヤキャラクタPCがスイング角度Θforでフォワードスイングするモーションの一例を示す図
【図22】プレイヤキャラクタPCがスイング角度ΘthrowでボールBをリリースするモーションの一例を示す図
【符号の説明】
【0146】
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…バイブレータ
707…サウンドIC
708…アンプ
8…マーカ
【技術分野】
【0001】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、加速度センサを備えた入力装置を振って操作するゲーム装置およびゲームプログラムに関する。
【背景技術】
【0002】
従来、プレイヤの身体動作に応じて当該動作を推定する装置がある。例えば、プレイヤの投球動作したときの投球速度を推定するための運動データ推定装置が開示されている(例えば、特許文献1参照)。上記運動データ推定装置は、電子回路、加速度センサ、および2つの傾斜スイッチが設けられた腕時計装置である。そして、プレイヤが運動データ推定装置を自身の腕に装着することによって、プレイヤが投球動作したときの投球速度が推定される。上記運動データ推定装置は、傾斜スイッチのON状態が一定時間継続すると、何れの傾斜スイッチがONであるかによってプレイヤの利き手を判別して、加速度センサによる加速度の検出を開始する。加速度センサは、装置本体に生じる加速度の絶対値を検出する。そして、上記運動データ推定装置は、加速度の積分値を算出し、加速度積分値と実際の投球速度との関係を表す近似式を推定式として用いることによって、加速度積分値による投球速度の推定算出を行っている。
【特許文献1】特開平11−14395号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上記特許文献1で開示された運動データ推定装置は、プレイヤの投球動作中は、装置本体に生じる加速度の値が激しく変動するため、加速度を測定開始するために加速度センサ以外にさらに傾斜スイッチを設けている。したがって、運動データ推定装置の部品コストが高くなる。また、上記運動データ推定装置は、投球速度を推定するために積分値を用いているため、近似的な投球速度のみを算出することしかできず、速度以外の、投球方向等の他の推定をすることができない。したがって、上記運動データ推定装置は、投球速度のみの推定であるために、プレイヤにとって面白みに欠ける場合がある。さらに、上記運動データ推定装置は、投球速度を推定するために積分値を用いているため、積分処理が終了するまでは動作の推定ができない。したがって、上記運動データ推定装置は、プレイヤの投球動作中等の動作をリアルタイムに反映させる処理ができない。
【0004】
それ故に、本発明は、このような問題に鑑みてなされたものであって、加速度センサを用いた動作の検出を利用した新たなゲーム装置およびゲームプログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0006】
第1の発明は、加速度データ(Da、Xa、Ya、Za)を出力する加速度センサ(701)を備えた入力装置(7)からその加速度データを含む操作データを取得し、その操作データに基づいて、その入力装置に対する振り操作に応じたゲーム処理を行うゲーム装置(5)である。ゲーム装置は、操作データ取得手段(ステップ20、26、51、61を実行するCPU30、以下、単にステップ番号のみ記載する)、初期状態データ算出手段(S11)、変化量データ算出手段(S52、S53、S62、S63)、およびゲーム処理手段(S17、S24、S54、S64)を備える。操作データ取得手段は、入力装置から操作データを取得して記憶手段(33)に記憶する。初期状態データ算出手段は、所定の開始タイミング(S25でYes)において取得した操作データに含まれる加速度データを用いて、仮想ゲーム世界におけるオブジェクト(PC、B)の姿勢または位置を示す初期状態データ(Θst)を算出する。変化量データ算出手段は、開始タイミング以降に逐次取得された操作データに含まれる加速度データに応じて、オブジェクトの姿勢または位置を時間と共に順次変化させるための変化量データ(Θback、Θfor、Θthrow)を算出する。ゲーム処理手段は、初期状態データに応じて仮想ゲーム世界に配置されたオブジェクトの姿勢または位置を変化量データに応じて変化させて、そのオブジェクトの動きを制御するゲーム処理を行う。
【0007】
第2の発明は、上記第1の発明において、記憶手段には、仮想ゲーム世界におけるオブジェクトの一連の動作を示す基本モーションデータ(Dh)が格納される。変化量データ算出手段は、逐次取得する加速度データが示す加速度の大きさ(a)に応じて、基本モーションデータが示す一連の動作中のオブジェクトの姿勢または位置を指定する変化量データ(Θback、Θfor)を算出する。ゲーム処理手段は、初期状態データに応じた姿勢または位置を始点とし、その後の変化量データに基づいた基本モーションデータの動きに沿って、オブジェクトを動作させる(S24、S54、S64、図18〜図22)。
【0008】
第3の発明は、上記第1の発明において、記憶手段には、仮想ゲーム世界におけるオブジェクトの一連の動作を示す基本モーションデータが格納される。変化量データ算出手段は、逐次取得する加速度データが示す加速度の大きさに応じて、基本モーションデータが示す一連の動作を変化させる速度(θ他)を指定する変化量データを算出する。ゲーム処理手段は、初期状態データに応じた姿勢または位置を始点とし、その後の変化量データに基づいた速度に応じて基本モーションデータを再生して、オブジェクトを動作させる。
【0009】
第4の発明は、上記第1の発明において、開始タイミング以降において、所定の操作内容を示す操作データが取得されたタイミング(S15でYes)を検出するタイミング検出手段を、さらに備える。変化量データ算出手段は、タイミング検出手段が所定の操作内容を示す操作データを取得されたタイミングを検出するまで、変化量データを算出する。
【0010】
第5の発明は、上記第1の発明において、開始タイミング以降において、所定の操作内容を示す操作データが取得されたタイミング(S15でYes)を検出するタイミング検出手段を、さらに備える。ゲーム処理手段は、タイミング検出手段が所定の操作内容を示す操作データを取得されたタイミングを検出したときに算出されている変化量データ(Θfor)に基づいて、オブジェクトに関する仮想ゲーム世界における方向(Θthrow)を少なくとも設定してゲーム処理を行う。
【0011】
第6の発明は、上記第5の発明において、ゲーム処理手段は、オブジェクト(PC)の動作に応じて他のオブジェクト(B)を仮想ゲーム世界において移動させるゲーム処理を行う。ゲーム処理手段は、タイミング検出手段が所定の操作内容を示す操作データを取得されたタイミングを検出したときに算出されている変化量データに基づいて、オブジェクトが他のオブジェクトを移動させる方向を少なくとも設定してゲーム処理を行う。
【0012】
第7の発明は、上記第6の発明において、タイミング検出手段が所定の操作内容を示す操作データを取得されたタイミングを検出する直前に取得された加速度データが示す加速度の大きさに応じて、他のオブジェクトの移動速度を設定する移動速度設定手段(S18)を、さらに備える。
【0013】
第8の発明は、上記第6の発明において、タイミング検出手段が所定の操作内容を示す操作データを取得されたタイミングを検出する前後に取得された加速度データが示す所定方向(X軸方向)の加速度の大きさに応じて、他のオブジェクトの軌道(曲がる大きさ)を設定する軌道設定手段(S18)を、さらに備える。
【0014】
第9の発明は、上記第4または第5の発明において、入力装置は、少なくとも1つの操作キー(72)を備える。操作データは、操作キーの押下に応じたキーデータを含む。タイミング検出手段は、キーデータに基づいて、操作キーが押下されたタイミングまたは操作キーの押下が解除されたタイミングを検出する。
【0015】
第10の発明は、上記第1の発明において、初期状態データ算出手段は、判定手段(S21、S27)、加速度方向算出手段(S22、S28)、および対応状態算出手段(S24、S29)を含む。判定手段は、加速度データが示す加速度が安定していることを判定する。加速度方向算出手段は、判定手段が加速度の安定を判定したとき、入力装置に対してその加速度が作用している方向を算出する。対応状態算出手段は、加速度が作用している方向に対応する仮想ゲーム世界におけるオブジェクトの姿勢または位置(Θst)を算出する。
【0016】
第11の発明は、上記第1の発明において、入力装置は、少なくとも1つの操作キーを備える。操作データは、操作キーの押下に応じたキーデータを含む。ゲーム装置は、第1タイミング検出手段(S25)、第2タイミング検出手段(S42、S44、S46、S47)、および第3タイミング検出手段(S15)を、さらに備える。第1タイミング検出手段は、キーデータに基づいて、操作キーが押下された第1タイミングを検出する。第2タイミング検出手段は、第1タイミング以降において、逐次取得する加速度データが示す加速度の大きさが所定の条件を満たす第2タイミングを検出する。第3タイミング検出手段は、第2タイミング以降において、キーデータに基づいて、操作キーの押下が解除された第3タイミングを検出する。初期状態データ算出手段は、第1タイミングにおいて取得した操作データに含まれる加速度データを用いて、初期状態データ(Θst)を算出する。変化量データ算出手段は、第1変化量データ算出手段(S53)および第2変化量データ算出手段(S63)を含む。第1変化量データ算出手段は、第1タイミングから第2タイミングまで逐次取得された操作データに含まれる加速度データに応じて、オブジェクトが第1の動作(バックスイング)を行うようにそのオブジェクトの姿勢または位置を時間と共に順次変化させるための第1変化量データ(Θback)を算出する。第2変化量データ算出手段は、第2タイミング以降に逐次取得された操作データに含まれる加速度データに応じて、オブジェクトが第1の動作とは異なる第2の動作(フォワードスイング)を行うようにそのオブジェクトの姿勢または位置を時間と共に順次変化させるための第2変化量データ(Θfor)を算出する。ゲーム処理手段は、第3タイミングで算出された第2変化量データに応じてオブジェクトの動き(Θthrow)を制御するゲーム処理を行う。
【0017】
第12の発明は、加速度データを出力する加速度センサを備えた入力装置からその加速度データを含む操作データを取得し、その操作データに基づいて、その入力装置に対する振り操作に応じたゲーム処理を行うゲーム装置のコンピュータ(30)で実行されるゲームプログラムである。ゲームプログラムは、操作データ取得ステップ、初期変化量データ算出ステップ、変化量データ算出ステップ、およびゲーム処理ステップをコンピュータに実行させる。操作データ取得ステップは、入力装置から操作データを取得してメモリ(33)に記憶する。初期変化量データ算出ステップは、所定の開始タイミングにおいて取得した操作データに含まれる加速度データを用いて、仮想ゲーム世界におけるオブジェクトの姿勢または位置を示す初期変化量データを算出する。変化量データ算出ステップは、開始タイミング以降に逐次取得された操作データに含まれる加速度データに応じて、オブジェクトの姿勢または位置を時間と共に順次変化させるための変化量データを算出する。ゲーム処理ステップは、初期状態データに応じて、仮想ゲーム世界に配置されたオブジェクトの姿勢または位置を変化量データに応じて変化させて、そのオブジェクトの動きを制御するゲーム処理を行う。
【0018】
第13の発明は、上記第12の発明において、メモリには、仮想ゲーム世界におけるオブジェクトの一連の動作を示す基本モーションデータが格納される。変化量データ算出ステップでは、逐次取得する加速度データが示す加速度の大きさに応じて、基本モーションデータが示す一連の動作中のオブジェクトの姿勢または位置を指定する変化量データが算出される。ゲーム処理ステップでは、初期状態データに応じた姿勢または位置を始点とし、その後の変化量データに基づいた基本モーションデータの動きに沿って、オブジェクトを動作させる。
【0019】
第14の発明は、上記第12の発明において、メモリには、仮想ゲーム世界におけるオブジェクトの一連の動作を示す基本モーションデータが格納される。変化量データ算出ステップでは、逐次取得する加速度データが示す加速度の大きさに応じて、基本モーションデータが示す一連の動作を変化させる速度を指定する変化量データが算出される。ゲーム処理ステップでは、初期状態データに応じた姿勢または位置を始点とし、その後の変化量データに基づいた速度に応じて基本モーションデータを再生して、オブジェクトを動作させる。
【0020】
第15の発明は、上記第12の発明において、開始タイミング以降において、所定の操作内容を示す操作データが取得されたタイミングを検出するタイミング検出ステップを、さらにコンピュータに実行させる。変化量データ算出ステップでは、タイミング検出ステップで所定の操作内容を示す操作データを取得されたタイミングが検出されるまで、変化量データを変化させる。
【0021】
第16の発明は、上記第12の発明において、開始タイミング以降において、所定の操作内容を示す操作データが取得されたタイミングを検出するタイミング検出ステップを、さらにコンピュータに実行させる。ゲーム処理ステップでは、タイミング検出ステップで所定の操作内容を示す操作データを取得されたタイミングが検出されたときに算出されている変化量データに基づいて、オブジェクトに関する仮想ゲーム世界における方向を少なくとも設定してゲーム処理が行われる。
【0022】
第17の発明は、上記第16の発明において、ゲーム処理ステップでは、オブジェクトの動作に応じて他のオブジェクトを仮想ゲーム世界において移動させるゲーム処理が行われる。ゲーム処理ステップでは、タイミング検出ステップで所定の操作内容を示す操作データを取得されたタイミングが検出されたときに算出されている変化量データに基づいて、オブジェクトが他のオブジェクトを移動させる方向を少なくとも設定してゲーム処理が行われる。
【0023】
第18の発明は、上記第17の発明において、タイミング検出ステップで所定の操作内容を示す操作データを取得されたタイミングが検出される直前に取得された加速度データが示す加速度の大きさに応じて、他のオブジェクトの移動速度を設定する移動速度設定ステップを、さらにコンピュータに実行させる。
【0024】
第19の発明は、上記第17の発明において、タイミング検出ステップで所定の操作内容を示す操作データを取得されたタイミングが検出される前後に取得された加速度データが示す所定方向の加速度の大きさに応じて、他のオブジェクトの軌道を設定する軌道設定ステップを、さらにコンピュータに実行させる。
【0025】
第20の発明は、上記第15または第16の発明において、入力装置は、少なくとも1つの操作キーを備える。操作データは、操作キーの押下に応じたキーデータを含む。タイミング検出ステップでは、キーデータに基づいて、操作キーが押下されたタイミングまたは操作キーの押下が解除されたタイミングが検出される。
【0026】
第21の発明は、上記第12の発明において、初期状態データ算出ステップは、判定ステップ、加速度方向算出ステップ、および対応状態算出ステップを含む。判定ステップは、加速度データが示す加速度が安定していることを判定する。加速度方向算出ステップは、判定ステップで加速度の安定が判定されたとき、入力装置に対してその加速度が作用している方向を算出する。対応状態算出ステップは、加速度が作用している方向に対応する仮想ゲーム世界におけるオブジェクトの姿勢または位置を算出する。
【0027】
第22の発明は、上記第12の発明において、入力装置は、少なくとも1つの操作キーを備える。操作データは、操作キーの押下に応じたキーデータを含む。ゲームプログラムは、第1タイミング検出ステップ、第2タイミング検出ステップ、および第3タイミング検出ステップを、さらにコンピュータに実行させる。第1タイミング検出ステップは、キーデータに基づいて、操作キーが押下された第1タイミングを検出する。第2タイミング検出ステップは、第1タイミング以降において、逐次取得する加速度データが示す加速度の大きさが所定の条件を満たす第2タイミングを検出する。第3タイミング検出ステップは、第2タイミング以降において、キーデータに基づいて、操作キーの押下が解除された第3タイミングを検出する。初期状態データ算出ステップでは、第1タイミングにおいて取得した操作データに含まれる加速度データを用いて、初期状態データが算出される。変化量データ算出ステップは、第1変化量データ算出ステップおよび第2変化量データ算出ステップを含む。第1変化量データ算出ステップは、第1タイミングから第2タイミングまで逐次取得された操作データに含まれる加速度データに応じて、オブジェクトが第1の動作を行うようにそのオブジェクトの姿勢または位置を時間と共に順次変化させるための第1変化量データを算出する。第2変化量データ算出ステップは、第2タイミング以降に逐次取得された操作データに含まれる加速度データに応じて、オブジェクトが第1の動作とは異なる第2の動作を行うようにそのオブジェクトの姿勢または位置を時間と共に順次変化させるための第2変化量データを算出する。ゲーム処理ステップでは、第3タイミングで算出された第2変化量データに応じてオブジェクトの動きを制御するゲーム処理が行われる。
【発明の効果】
【0028】
上記第1の発明によれば、プレイヤが入力装置を振る動作に応じて加速度センサが検出する加速度の変化を逐次反映する新たなゲームが可能となる。
【0029】
上記第3および第4の発明によれば、プレイヤが振る動作に応じて時間と共に変化する上記加速度を逐次反映した状態データに基づいて、加速度を逐次反映してオブジェクトを動作させることができる。
【0030】
上記第4の発明によれば、プレイヤが入力装置を振る動作に応じて加速度センサが検出する所定期間中の加速度の変化を逐次反映する新たなゲームが可能となる。
【0031】
上記第5の発明によれば、プレイヤが入力装置を振る動作に応じて加速度センサが検出する加速度を逐次取得して求めた方向を反映させた新たなゲーム処理を可能としている。例えば、加速度データが示す加速度の累積を用いて所定時点の入力装置の振り動作角度を推定することも可能であり、入力装置の振り角度を反映させた新たなゲームを可能としている。
【0032】
上記第6の発明によれば、上記加速度を逐次取得して求めた方向にオブジェクトが移動する新たなゲームを可能としている。
【0033】
上記第7の発明によれば、上記加速度を逐次取得して求めた方向に移動するオブジェクトの速度を、プレイヤが入力装置を振る動作に応じて設定することができる。
【0034】
上記第8の発明によれば、上記加速度を逐次取得して求めた方向に移動するオブジェクトの軌道を、プレイヤが入力装置を振る動作に応じて設定することができる。
【0035】
上記第9の発明によれば、プレイヤのキー操作に応じて、加速度の変化を逐次反映する期間を設定することができる。
【0036】
上記第10の発明によれば、オブジェクトの仮想ゲーム世界における初期状態を、入力装置の姿勢に対応して設定することができる。
【0037】
上記第11の発明によれば、プレイヤが入力装置を振る動作に応じて加速度センサが検出する加速度の変化を逐次反映し、その途中でオブジェクトの動作が切り替わる新たなゲームが可能となる。
【0038】
また、本発明のゲームプログラムによれば、上述したゲーム装置と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0039】
図1を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置の一例の据置型のゲーム装置を含むゲームシステムについて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の外観図であり、図2はゲーム装置本体5のブロック図である。以下、当該ゲームシステム1について説明する。
【0040】
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置本体5から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明の情報処理プログラムの一例のゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
【0041】
また、ゲーム装置本体5は、通信ユニット6を内蔵する。通信ユニット6は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置本体5の前部主面には、当該ゲーム装置本体5の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトスイッチ等が設けられている。
【0042】
また、ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ38が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置本体5は、フラッシュメモリ38に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置本体5のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0043】
コントローラ7は、通信ユニット6を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるゲーム空間に登場するプレイヤキャラクタ等を操作したりするための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体5の通信ユニット6から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
【0044】
図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が接続されている。
【0045】
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0046】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等が、CPU30によって実行される。
【0047】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0048】
メモリコントローラ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に出力する。
【0049】
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
【0050】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0051】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0052】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
【0053】
ハウジング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の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0054】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0055】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から通信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0056】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5のスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0057】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。本実施例では、プレイヤが投球動作する際に操作ボタン72iが押下され、プレイヤキャラクタがボールを離す際に操作ボタン72iが離される。
【0058】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング70の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0059】
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の下面(操作ボタン72iが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をX軸正方向とする。
【0060】
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
【0061】
図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等が判定することができる。
【0062】
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0063】
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体5から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0064】
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
【0065】
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
【0066】
撮像情報演算部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自体の方向を変えることによってその撮像方向を変更することができる。
【0067】
コントローラ7は、3軸(X、Y、Z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、少なくとも1軸方向に沿った直線加速度を検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて、加速度センサ701が提供されてもよい。
【0068】
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、それら3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0069】
しかしながら、加速度センサ701から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ701からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを判定することができる。このように、加速度センサ701をマイコン751(またはゲーム装置本体5に含まれるCPU30等の他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢、または位置を判定することができる。同様に、加速度センサ701を備えるコントローラ7がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7の様々な動きおよび/または位置を算出することができる。他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。加速度センサ701でそれぞれ検知された加速度を示すデータは、通信部75に出力される。
【0070】
通信部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を作動させる。
【0071】
コントローラ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は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0072】
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、本ゲーム装置本体5で行うゲームの概要について説明する。図8に示すように、コントローラ7は、全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、プレイヤが片手でコントローラ7を把持し、あたかもボウリングのボールを投げるようにコントローラ7を振る動作を行う。このようなプレイヤがコントローラ7を振る動作に応じて、モニタ2にボウリングゲームが表現される。
【0073】
具体的には、プレイヤがボウリングのアドレス(投球前の動作)のような姿勢でコントローラ7を把持した状態から、操作ボタン72iを押下して、ボウリングのアプローチ(投球動作)のような動作を行うと、モニタ2にはプレイヤキャラクタがプレイヤの動作に応じてボウリングのアドレス動作およびバックスイング動作を開始する。そして、コントローラ7を把持したプレイヤがボウリングのバックスイングからフォワードスイングしてボールをリリースするまでの動作を行って、ボールをリリースするタイミングで操作ボタン72iを離す操作を行うと、モニタ2にはプレイヤキャラクタがプレイヤの動作に応じてボウリングの投球動作を再現して、当該タイミングでボールをリリースする動作が表示される。
【0074】
例えば、上記アドレスからバックスイングを開始するまでの動作では、プレイヤが静的にコントローラ7を上下に傾けることによって、コントローラ7から操作情報(具体的には、X、Y、およびZ軸方向加速度データ)をゲーム装置本体5に与える。また、上記バックスイングからボールをリリースするまでの動作では、プレイヤがコントローラ7を振ることによって、コントローラ7からその遠心力等に応じた操作情報をゲーム装置本体5に与える。このようなコントローラ7に加わる加速度の変化は、加速度センサ701によって検出できるため、加速度センサ701から出力されるX、Y、およびZ軸方向加速度データに対して追加の処理を行うことによって、コントローラ7の傾きや動きを算出することができる。一般的に、動作に応じて生じる加速度を検出する場合、加速度センサ701から出力される加速度ベクトル(あるいは、加速度の正負)は、コントローラ7の加速方向とは真逆のベクトルとなるため、検出した加速度の方向を考慮してコントローラ7の傾きや動きを算出することが必要であることは言うまでもない。
【0075】
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図9を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図9は、ゲーム装置本体5のメインメモリ33に記憶される主なデータを示す図である。
【0076】
図9に示すように、メインメモリ33には、加速度データDa、加速度の大きさデータDb、初期角度データDc、スイング変化角度データDd、バックスイング角度データDe、フォワードスイング角度データDf、リリーススイング角度データDg、基準モーションデータDh、ボール速度データDi、ボール軌道データDj、および画像データDk等が記憶される。なお、メインメモリ33には、図9に示す情報に含まれるデータの他、ゲームに登場するプレイヤキャラクタPCや他のオブジェクト等に関するデータ(位置データ等)や仮想ゲーム空間に関するデータ(背景やレーンのデータ等)等、ゲーム処理に必要なデータが記憶される。
【0077】
加速度データDaは、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データである。加速度データDaには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3が含まれる。なお、ゲーム装置本体5に備える通信ユニット6は、コントローラ7から所定間隔(例えば、5ms毎)に送信される操作情報に含まれる加速度データを受信し、通信ユニット6に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である1フレーム毎に読み出されてメインメモリ33の加速度データDaが更新される。本実施例では、加速度データDaは、コントローラ7から送信された過去所定フレーム分の加速度データが適宜更新されて格納される。加速度の大きさデータDbは、コントローラ7に生じている加速度の大きさaを示すデータであり、X軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3を用いて算出される。
【0078】
初期角度データDcは、プレイヤキャラクタPCがバックスイングする前の初期状態を示すデータであり、例えばプレイヤキャラクタPCのスイング角度に対する初期角度Θstによって示される。スイング角度Θは、例えばプレイヤキャラクタPCの振っている腕の基準方向に対する角度として定義される。スイング変化角度データDdは、プレイヤキャラクタPCがバックスイングまたはフォワードスイングする際に変化させる変化角度θを示すデータである。バックスイング角度データDeは、プレイヤキャラクタPCがバックスイングする際のスイング角度Θbackを示すデータである。フォワードスイング角度データDfは、プレイヤキャラクタPCがフォワードスイングする際のスイング角度Θforを示すデータである。リリーススイング角度データDgは、プレイヤキャラクタPCがボールをリリースする際のスイング角度Θthrowを示すデータである。
【0079】
基準モーションデータDhは、プレイヤキャラクタPCがボールを投球する際のモーションの基本となるデータである。例えば、基準モーションデータDhは、プレイヤキャラクタPCがアドレス→バックスイング→フォワードスイング→ボールをリリース→フィニッシュまでの一連の投球動作をモニタ2に表示するためのデータを示しており、その動作速度がスイング角度で制御される。ボール速度データDiは、プレイヤキャラクタPCがボールをリリースした後に、レーン上を移動するボールBの速度を示すデータである。ボール軌道データDjは、プレイヤキャラクタPCがボールをリリースした後に、レーン上を移動するボールBの軌道を示すデータである。
【0080】
画像データDkは、プレイヤキャラクタ画像データDk1およびボール画像データDk2等を含み、仮想ゲーム空間にプレイヤキャラクタPCやボールBを配置してゲーム画像を生成するためのデータである。
【0081】
次に、図10〜図22を参照して、ゲーム装置本体5において行われるゲーム処理の詳細を説明する。なお、図10は、ゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャートである。図11は、図10におけるステップ11の初期角度Θstを算出する処理の詳細な動作を示すサブルーチンである。図12は、図10におけるステップ12のバックスイングモーション再生/モーション切り替え処理の詳細な動作を示すサブルーチンである。図13は、図12におけるステップ41、43、および45のバックスイングモーション再生処理の詳細な動作を示すサブルーチンである。図14は、図10におけるステップ14のフォワードスイングモーション再生処理の詳細な動作を示すサブルーチンである。図15は、コントローラ7が静的に傾いた状態の一例を示す図である。図16は、コントローラ7が振られている状態の一例を示す図である。図17は、コントローラ7が振られることによって、当該コントローラ7に生じる加速度の変化の一例を示す図である。図18は、プレイヤキャラクタPCがバックスイングする前にスイング角度Θstで構えた初期状態の一例を示す図である。図19は、プレイヤキャラクタPCがスイング角度Θbackでバックスイングするモーションの一例を示す図である。図20は、プレイヤキャラクタPCがスイング角度Θback(Θfor)でバックスイングからフォワードスイングに切り替えるモーションの一例を示す図である。図21は、プレイヤキャラクタPCがスイング角度Θforでフォワードスイングするモーションの一例を示す図である。図22は、プレイヤキャラクタPCがスイング角度ΘthrowでボールBをリリースするモーションの一例を示す図である。なお、図10〜図14に示すフローチャートにおいては、ゲーム処理のうち、プレイヤがコントローラ7を振ることに応じて表現されるプレイヤキャラクタPCのモーションについて説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図10〜図14では、CPU30が実行する各ステップを「S」と略称する。
【0082】
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図10〜図14に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【0083】
図10において、CPU30は、ゲーム処理の初期設定を行い(ステップ10)、処理を次のステップに進める。例えば、CPU30は、ゲームを行うレーンを設定したり、メインメモリ33に記憶している各データを初期化したりする。
【0084】
次に、CPU30は、初期角度Θstを算出し(ステップ11)、処理を次のステップに進める。以下、図11を参照して、上記ステップ11で行う初期角度Θstの算出処理について説明する。
【0085】
図11において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し(ステップ20)、処理を次のステップに進める。そして、CPU30は、取得した加速度データを加速度データDaとしてメインメモリ33に記憶する。ここで、ステップ20で取得される加速度データには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX、Y、およびZ軸方向加速度データが含まれている。ここでは、通信部75は、所定の時間間隔(例えば5ms間隔)で操作情報をゲーム装置本体5へ送信しており、通信ユニット6に備える図示しないバッファに少なくとも加速度データが蓄えられる。そして、CPU30は、ゲーム処理単位である1フレーム毎にバッファに蓄えられた加速度データを取得してメインメモリ33に格納する。なお、上述したように、メインメモリ33には、コントローラ7から送信された過去所定フレーム分の加速度データが適宜更新されて格納される。
【0086】
次に、CPU30は、上記ステップ20で取得した加速度データが安定するのを待つ(ステップ21)。例えば、CPU30は、1フレーム前に取得した加速度データが示す加速度に対して、上記ステップ20で取得した加速度データが示す加速度の変化幅が所定範囲内であれば、当該加速度データが安定していると判断する。または、CPU30は、上記ステップ20で取得した加速度データが示す加速度を含め、過去数フレーム内に取得した加速度データが示す加速度の変化幅が所定範囲内であれば、当該加速度データが安定していると判断する。そして、CPU30は、上記ステップ20で取得した加速度データが安定したとき(ステップ21でYes)、処理を次のステップ22に進める。一方、CPU30は、上記ステップ20で取得した加速度データが不安定であるとき(ステップ21でNo)、上記ステップ20を繰り返す。
【0087】
ステップ22において、CPU30は、上記ステップ20で取得した最新の加速度データを用いて、初期角度Θstを算出する。そして、CPU30は、算出した初期角度Θstを初期角度データDcに格納して、処理を次のステップに進める。
【0088】
ここで、図15を用いて、コントローラ7の傾きと初期角度Θstとの関連について説明する。例えば、図15に示すように、コントローラ7の前面が上に向くように水平方向からコントローラ7の上面を角度Θstだけ傾けてコントローラ7を静止させた場合、コントローラ7の加速度センサ701は、Y軸正方向およびZ軸負方向の間の方向に生じる静的な重力加速度を検出する。そして、CPU30は、この重力加速度を検出した加速度センサ701からの出力に応じて、コントローラ7が実空間の水平方向に対して角度Θstだけコントローラ7が傾いていることを算出する。より具体的には、角度Θstは水平方向を基準となる0°とし、当該基準から下向き、つまり図15における時計回り方向の角度が正の角度となるように設定され、例えば、CPU30は、初期角度Θstを
Θst=arctan(Za/Ya)
で算出する。ここで、Yaは最新のY軸方向加速度データDa2が示すY軸方向の加速度であり、Zaは最新のZ軸方向加速度データDa3が示すZ軸方向の加速度である。なお、図15から明らかなように、コントローラ7の前面が上に向くように水平方向からコントローラ7の上面を角度Θstだけ傾けた場合、コントローラ7に生じる重力方向がY軸正方向およびZ軸負方向の間であるため角度Θstの値が負の角度で示される。つまり、プレイヤの胸前方水平方向を基準(0°)として、コントローラ7の前面を上に向けて0°〜+90°傾けた場合、初期角度Θstは−90°<Θst<0°の間で変化することになる。
【0089】
図11に戻り、CPU30は、上記ステップ22で算出した初期角度Θstが−90°<Θst<0°か否かを判断する(ステップ23)。そして、CPU30は、−90°<Θst<0°である場合、次のステップ24に処理を進める。一方、CPU30は、−90°<Θst<0°でない場合(すなわち、プレイヤが胸前方で上に向けてコントローラ7を静止させていない場合)、上記ステップ20に戻って処理を繰り返す。
【0090】
ステップ24において、CPU30は、初期角度データDcに記憶された初期角度Θstを参照して、プレイヤキャラクタPCが初期角度Θstをスイング角度にして構えたモーションをモニタ2に表示し、処理を次のステップに進める。以下、図18を参照して、初期角度Θstをスイング角度にして構えたプレイヤキャラクタPCのモーションについて説明する。
【0091】
図18において、プレイヤキャラクタPCの投球方向前方の水平方向を基準方向として、当該基準方向からボールBを振り上げて静止させたプレイヤキャラクタPCの腕の角度が初期角度Θstとなる。つまり、プレイヤキャラクタPCは、バックスイングする前に上記基準方向からスイング角度Θstだけ振り上げてボールBを構えた初期状態で静止する。なお、スイング角度Θstの正負も上記基準方向を境界として切り替わる。本実施例では、上記基準方向から下方へプレイヤキャラクタPCがバックスイングする方向のスイング角度を正の角度Θとし、上記基準方向から上方へプレイヤキャラクタPCが振り上げる方向のスイング角度を負の角度Θとする。ここで、上述したように初期角度Θstは、−90°<Θst<0°(つまり、負の角度)であり、プレイヤキャラクタPCは、胸の前方から角度Θstだけ腕を振り上げた状態で静止してボールBを構えることになる。
【0092】
また、図15を用いて説明したように、プレイヤがコントローラ7の前面が上に向くように水平方向からコントローラ7の上面を角度Θstだけ傾けてコントローラ7を静止させた場合、初期角度Θstが算出される。したがって、プレイヤキャラクタPCがスイングする前の初期状態におけるスイング角度Θは、プレイヤが把持するコントローラ7の姿勢(加速度データの値)に応じて変化することになる。具体的には、コントローラ7の上面を傾けた角度を初期角度Θstに設定することによって、プレイヤがコントローラ7を傾けた上面角度と同じ角度だけ、プレイヤキャラクタPCが胸の前方から腕を振り上げてボールBを構えた状態で静止することになり、あたかもプレイヤ自身がボールBを構えているような感覚をプレイヤに与えることができる。
【0093】
CPU30は、基準モーションデータDhに格納されたプレイヤキャラクタPCの基本モーションデータを用いて、初期角度Θstをスイング角度にして構えたモーションをモニタ2に表示する。例えば、CPU30が上記基本モーションデータを用いてアドレス状態(つまり、バックスイング前)を指定し、プレイヤキャラクタPCのスイング角度Θを指定することによって、初期角度Θstをスイング角度にして構えて静止したモーションが表示される。
【0094】
なお、上述した説明では、コントローラ7の上面を傾けた角度と同じ角度だけ、プレイヤキャラクタPCが胸の前方から腕を振り上げてボールBを構えた状態で静止させることによって、プレイヤの姿勢(コントローラ7の姿勢)にプレイヤキャラクタPCの姿勢が一致するような効果を得ることができるが、このような効果を期待しない場合、コントローラ7の上面を傾ける角度とスイング角度とが同じでなくてもかまわない。コントローラ7の姿勢を変化させる操作に伴ってプレイヤキャラクタPCが構えるスイング角度が変化するように設定すれば、両者の角度が異なっていてもかまわない。
【0095】
図11に戻り、CPU30は、コントローラ7から受信した操作情報に含まれるキーデータを取得して、プレイヤがコントローラ7の投球ボタンを押下したか否かを判断する(ステップ25)。例えば、操作ボタン72iが投球ボタンに設定され、CPU30は、操作ボタン72iに対する操作状態を示すキーデータを取得して当該操作ボタン72iの押下状態を判定する。そして、CPU30は、投球ボタンが押下された場合、次のステップ26に処理を進める。一方、CPU30は、投球ボタンが押下されていない場合、上記ステップ20に戻って処理を繰り返す。
【0096】
ステップ26において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し、取得した加速度データを新たな加速度データDaとしてメインメモリ33に記憶して、処理を次のステップに進める。なお、ステップ26の処理は、上述したステップ20の処理と同様であるため、詳細な説明を省略する。
【0097】
次に、CPU30は、上記ステップ26で取得した加速度データが安定したか否かを判断する(ステップ27)。なお、ステップ27における判断方法は、上述したステップ21と同様であるため、詳細な説明を省略する。そして、CPU30は、加速度データが安定している状態を継続している場合、次のステップ28に処理を進める。一方、CPU30は、加速度データが不安定な状態の場合、当該サブルーチンによる処理を終了する。
【0098】
ステップ28において、CPU30は、上記ステップ26で取得した最新の加速度データを用いて、初期角度Θstを算出する。そして、CPU30は、初期角度データDcを算出した初期角度Θstに更新する。次に、CPU30は、初期角度データDcに記憶された初期角度Θstを参照して、プレイヤキャラクタPCが初期角度Θstをスイング角度にして構えたモーションをモニタ2に表示し(ステップ29)、処理を次のステップに進める。なお、ステップ28およびステップ29の処理については、それぞれ上述したステップ22およびステップ24の処理と同様であるため、詳細な説明を省略する。
【0099】
次に、CPU30は、上記ステップ28で算出した初期角度Θstが0°≦Θstか否かを判断する(ステップ30)。そして、CPU30は、Θst<0°である場合、上記ステップ26に戻って処理を繰り返す。一方、CPU30は、0°≦Θstの場合(すなわち、加速度データが安定な状態を維持したまま、プレイヤが胸前方より下に向くまでコントローラ7を傾けた場合)、当該サブルーチンによる処理を終了する。なお、ステップ30における角度Θstに関する条件は、本実施例では0°≦Θstとしたが、必要に応じて、0°に代えて所定の閾値以上であるかどうかを判断するようにしてもよい。
【0100】
なお、当該サブルーチンの終了後は、後述するバックスイングモーション再生処理へ移行する。ここで、当該サブルーチンの終了は、上記ステップ27で加速度データが不安定であると判断された場合と、上記ステップ30で0°≦Θstであると判断された場合である。前者は、一度加速度データが安定して初期角度Θstが設定されてプレイヤキャラクタPCが構えた後、投球ボタンが押下されてコントローラ7が振り動かされたときであり、プレイヤがバックスイング前に構えた後にバックスイングを始めたことを検出している。また、後者は、一度加速度データが安定して初期角度Θstが設定されてプレイヤキャラクタPCが構えた後、投球ボタンが押下されてコントローラ7を緩やかに下方まで傾けたときである。
【0101】
図10に戻り、CPU30は、初期角度Θstの算出の後、バックスイングモーション再生処理/モーション切り替え処理を行い(ステップ12)、処理を次のステップに進める。以下、図12を参照して、上記ステップ12で行うバックスイングモーション再生処理/モーション切り替え処理について説明する。
【0102】
図12において、CPU30は、現在設定されている初期角度Θstをバックスイングする際のスイング角度Θbackに設定し、バックスイング角度データDeに格納する(ステップ40)。つまり、上記ステップ11において最終的に設定された初期角度Θstがバックスイングする際のスイング角度Θbackの初期値となる。次に、CPU30は、バックスイングモーション再生処理を行い(ステップ41)、処理と次のステップに進める。以下、図13を参照して、バックスイングモーション再生処理について説明する。
【0103】
図13において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し、取得した加速度データを新たな加速度データDaとしてメインメモリ33に記憶して(ステップ51)、処理を次のステップに進める。なお、ステップ51の処理は、上述したステップ20の処理と同様であるため、詳細な説明を省略する。
【0104】
次に、CPU30は、上記ステップ51で取得した加速度データが示す加速度の大きさに応じて、スイング変化角度θを算出して(ステップ52)、処理を次のステップに進める。例えば、CPU30は、加速度データが示す加速度の大きさaを
【数1】
で算出して、加速度の大きさデータDbに記憶する。ここで、Xaは最新のX軸方向加速度データDa1が示すX軸方向の加速度であり、Yaは最新のY軸方向加速度データDa2が示すY軸方向の加速度であり、Zaは最新のZ軸方向加速度データDa3が示すZ軸方向の加速度である。そして、CPU30は、スイング変化角度θを
θ=k(a−Ga) …(2)
で算出して、スイング変化角度データDdに記憶する。ここで、Gaは、コントローラ7に作用する重力加速度の大きさを示す定数(例えば、1)である。また、kは、加速度の大きさを変化角度に変換するための係数である。なお、係数kは、プレイヤがコントローラ7を振る角度変化とスイング変化角度θと同じ角度となるように設定するのが好ましい。例えば、加速度の大きさaとプレイヤがコントローラ7を振る角度変化との関係を分析することによって、コントローラ7を振る角度変化とスイング変化角度θとが同じ角度となるような係数kの設定が可能である。これによって、後述により明らかとなるが、プレイヤがコントローラ7を振る角度とプレイヤキャラクタPCのスイング角度とが一致するため、プレイヤがコントローラ7を振る動作をプレイヤキャラクタPCのスイング動作にリアルに模擬することができる。
【0105】
図16に示すように、プレイヤがコントローラ7をスイングして振り動かした場合、コントローラ7の加速度センサ701は、上述した静的な重力加速度に加えて振り動かすことによって生じる遠心力や振り方向または反振り方向への加速度を検出する。ここで、加速度センサ701からの出力を用いて遠心力成分や振り方向または反振り方向への加速度成分を抽出できれば、その遠心力や加速度が作用している時点におけるコントローラ7の動作速度の分析が可能である。ここで、一般的にコントローラ7に作用する力は、現実的には上記振り方向または反振り方向への加速度より遠心力や重力加速度の影響が大きい。したがって、本実施例では、加速度センサ701からの出力が示す加速度の大きさから重力加速度分を減算して遠心力成分の大きさとし、当該遠心力成分の大きさをスイング変化角度θに換算している。
【0106】
図13に戻り、CPU30は、上記ステップ52で算出したスイング変化角度θを用いて、バックスイング角度Θbackを算出し(ステップ53)、処理を次のステップに進める。例えば、CPU30は、バックスイング角度データDeに格納されているバックスイング角度Θbackを参照し、Θback+θを新たなバックスイング角度Θbackとして算出する。そして、CPU30は、バックスイング角度データDeを算出された新たなバックスイング角度Θbackに更新する。
【0107】
次に、CPU30は、バックスイング角度データDeに記憶されたバックスイング角度Θbackを参照して、プレイヤキャラクタPCがバックスイング角度Θbackをスイング角度にしてバックスイングしているモーションをモニタ2に表示し(ステップ54)、当該サブルーチンによる処理を終了する。例えば、CPU30が基本モーションデータDhに格納されている基本モーションデータを用いてバックスイング状態を指定し、プレイヤキャラクタPCのスイング角度Θを指定することによって、バックスイング角度Θbackをスイング角度にしてバックスイングするモーションが表示される。以下、図19を参照して、バックスイング角度Θbackをスイング角度にしてバックスイングするプレイヤキャラクタPCのモーションについて説明する。
【0108】
図19において、プレイヤキャラクタPCの前方の水平方向を基準方向として、当該基準方向からボールBをバックスイングするプレイヤキャラクタPCの腕の角度がバックスイング角度Θbackとなる。つまり、プレイヤキャラクタPCは、上記基準方向からバックスイング角度ΘbackだけボールBをバックスイングしているモーションとなる。なお、バックスイング角度Θbackも初期角度Θstと同様にその正負が上記基準方向を境界として切り替わる。本実施例では、上記基準方向から下方へプレイヤキャラクタPCがバックスイングする方向のスイング角度を正の角度Θとし、上記基準方向から上方へプレイヤキャラクタPCが振り上げる方向のスイング角度を負の角度Θとする。ここで、上述したように初期角度Θstが負の角度であるときがあるため、バックスイングの初期期間ではバックスイング角度Θbackが負の角度に設定され、上記基準方向から上方位置にボールBを振り上げた位置からバックスイングが始まることもあり得る。
【0109】
また、バックスイング角度Θbackは、上記ステップ53の処理によってスイング変化角度θが加算される値であり、処理を繰り返す毎にその角度が大きくなっていく。そして、スイング変化角度θは、コントローラ7の加速度センサ701が検出する加速度の大きさに応じて算出される角度であり、プレイヤがコントローラ7を振ることによって生じる遠心力に応じて算出される角度である。より具体的には、コントローラ7に生じる遠心力が大きければ、算出されるスイング変化角度θも大きくなって、結果的にバックスイング角度Θbackの変化角度も大きくなる。つまり、プレイヤキャラクタPCは、プレイヤがコントローラ7を振る動作に応じてバックスイングしていることになり、その振ることに応じて加速度センサ701が検出する加速度の大きさに応じてプレイヤキャラクタPCがバックスイングするスイング速度もリアルタイムに変化することになる。したがって、プレイヤがコントローラ7を振り動かすことによって、あたかもプレイヤ自身がボールBをバックスイングしているような感覚をプレイヤに与えることができる。
【0110】
図12に戻り、ステップ41のバックスイングモーション再生処理の後、CPU30は、加速度の大きさaが極大値を示しているか否かを判断する(ステップ42)。例えば、CPU30は、加速度センサ701が検出した加速度データの履歴や加速度の大きさaの履歴を用いて、加速度の大きさaが極大値を示しているか否かを判定する。なお、極大値の判定は、既に周知の判定方法を用いればよい。そして、CPU30は、加速度の大きさaが極大値を示している場合、次のステップ43に処理を進める。一方、CPU30は、加速度の大きさaがまだ極大値を示していない場合、上記ステップ41に戻って処理を繰り返す。以下、図17を参照して、コントローラ7に生じる加速度の大きさ変化について説明する。
【0111】
図17において、プレイヤが片手でコントローラ7を把持し、あたかもボウリングのボールを投げるようにコントローラ7を振る動作を分解すると、投球前の構え→投球ボタン押下→バックスイング→フォワードスイング→投球ボタンを離す→ボールをリリース→フォロースルーとなる。このバックスイング開始時は、プレイヤがコントローラ7を静止に近い状態で把持しているため、プレイヤがバックスイングを行うことによってコントローラ7に作用する遠心力が漸増的に大きくなる。したがって、バックスイング開始以降は、上記ステップ52で算出される加速度の大きさaも漸増的に増加する。そして、プレイヤがバックスイングを行うことによってコントローラ7に作用する遠心力が極大となった時点で、加速度の大きさaも極大値を示す。そして、プレイヤは、バックスイングからフォワードスイングへ移行するため、その切り替え時点やその切り替え前等でコントローラ7に作用する遠心力が0となり、加速度の大きさaが極小値を示す。このように、加速度の大きさaが極大値および極小値を順に示したことを検出することによって、プレイヤがバックスイングからフォワードスイングへ移行したことを判別することができる。
【0112】
ステップ43において、CPU30は、バックスイングモーション再生処理を行う。なお、ステップ43で行うバックスイングモーション再生処理については、上記ステップ41と同様であるため、詳細な説明を省略する。次に、CPU30は、加速度の大きさaが極小値を示しているか否かを判断する(ステップ44)。例えば、CPU30は、加速度センサ701が検出した加速度データの履歴や加速度の大きさaの履歴を用いて、加速度の大きさaが極小値を示しているか否かを判定する。なお、極小値の判定も、既に周知の判定方法を用いればよい。そして、CPU30は、加速度の大きさaが極小値を示している場合、次のステップ45に処理を進める。一方、CPU30は、加速度の大きさaがまだ極小値を示していない場合、上記ステップ43に戻って処理を繰り返す。
【0113】
ステップ45において、CPU30は、バックスイングモーション再生処理を行う。なお、ステップ45で行うバックスイングモーション再生処理については、上記ステップ41と同様であるため、詳細な説明を省略する。次に、CPU30は、加速度の大きさaが所定の閾値以上の値を示しているか否かを判断する(ステップ46)。例えば、CPU30は、加速度の大きさaから重力加速度相当分(例えば、1)を減算した値が、閾値以上か否かを判断する。そして、CPU30は、加速度の大きさaが閾値未満を示している場合、次のステップ47に処理を進める。一方、CPU30は、加速度の大きさaが閾値以上を示している場合、当該サブルーチンによる処理を終了する。
【0114】
ステップ47において、CPU30は、加速度の大きさaの変化量が所定の閾値以上の値を示しているか否かを判断する。そして、CPU30は、加速度の大きさaの変化量が閾値未満を示している場合、上記ステップ45に戻って処理を繰り返す。一方、CPU30は、加速度の大きさaの変化量が閾値以上を示している場合、当該サブルーチンによる処理を終了する。
【0115】
上記ステップ40〜ステップ47の処理から明らかなように、CPU30は、コントローラ7に生じる加速度の大きさaが極大値および極小値を示したことを検出することによって、プレイヤがバックスイングからフォワードスイングに移行したと判定する。その後、CPU30は、コントローラ7に生じる加速度の大きさaが閾値以上の大きさを示したとき、またはコントローラ7に生じる加速度の大きさaの変化量が閾値以上の大きさを示したとき、プレイヤがフォワードスイングを開始したと判定する。
【0116】
ここで、図20を参照して、バックスイング角度Θbackをスイング角度にしてバックスイングからフォワードスイングに切り替わるプレイヤキャラクタPCのモーションについて説明する。
【0117】
図20において、上述したように、バックスイング角度Θbackは、プレイヤキャラクタPCの前方の水平方向を基準方向としたプレイヤキャラクタPCの腕の角度を示している。つまり、プレイヤキャラクタPCがバックスイングからフォワードスイングに切り替えた動作を表現するときは、上記基準方向からバックスイング角度ΘbackだけボールBを後ろに振り上げているモーションとなる。
【0118】
また、バックスイング角度Θbackは、上述したように上記ステップ53の処理を繰り返すことによってスイング変化角度θが繰り返し加算される値である。そして、スイング変化角度θは、コントローラ7の加速度センサ701が検出する加速度の大きさに応じて算出される角度であり、プレイヤがコントローラ7を振ることによって生じる遠心力に応じて算出される角度である。より具体的には、コントローラ7に生じる遠心力が大きければ、算出されるスイング変化角度θも大きくなって、結果的にバックスイングからフォワードスイングに切り替える際にボールBを後ろに振り上げる角度も大きくなる。つまり、プレイヤキャラクタPCは、プレイヤがコントローラ7を振る動作に応じた振り上げ角度でバックスイングからフォワードスイングに切り替えていることになり、その振ることに応じて加速度センサ701が検出する加速度の大きさに応じてプレイヤキャラクタPCが振り上げる角度も変化することになる。したがって、プレイヤがコントローラ7を振り動かすことによって、あたかもプレイヤ自身がバックスイングからフォワードスイングへ切り替えているような感覚をプレイヤに与えることができる。
【0119】
図10に戻り、CPU30は、上記ステップ12のバックスイングモーション再生処理/モーション切り替え処理の後、現在設定されているバックスイング角度Θbackをフォワードスイングする際のスイング角度Θforに設定し、フォワードスイング角度データDfに格納する(ステップ13)。つまり、上記ステップ12において最終的に設定されたバックスイング角度Θbackがフォワードスイングする際のスイング角度Θforの初期値となる。次に、CPU30は、フォワードスイングモーション再生処理を行い(ステップ14)、処理と次のステップに進める。以下、図14を参照して、フォワードスイングモーション再生処理について説明する。
【0120】
図14において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し、取得した加速度データを新たな加速度データDaとしてメインメモリ33に記憶して(ステップ61)、処理を次のステップに進める。なお、ステップ61の処理は、上述したステップ20の処理と同様であるため、詳細な説明を省略する。
【0121】
次に、CPU30は、上記ステップ61で取得した加速度データが示す加速度の大きさに応じて、スイング変化角度θを算出して(ステップ62)、処理を次のステップに進める。例えば、CPU30は、加速度データが示す加速度の大きさaを上記ステップ52と同様に数式(1)を用いて算出して、加速度の大きさデータDbに記憶する。そして、CPU30は、スイング変化角度θも上記ステップ52と同様に数式(2)で算出して、スイング変化角度データDdに記憶する。
【0122】
CPU30は、上記ステップ62で算出したスイング変化角度θを用いて、フォワードスイング角度Θforを算出し(ステップ63)、処理を次のステップに進める。例えば、CPU30は、フォワードスイング角度データDfに格納されているフォワードスイング角度Θforを参照し、Θfor−θを新たなフォワードスイング角度Θforとして算出する。そして、CPU30は、フォワードスイング角度データDfを算出された新たなフォワードスイング角度Θforに更新する。
【0123】
次に、CPU30は、フォワードスイング角度データDfに記憶されたフォワードスイング角度Θforを参照して、プレイヤキャラクタPCがフォワードスイング角度Θforをスイング角度にしてフォワードスイングしているモーションをモニタ2に表示し(ステップ64)、当該サブルーチンによる処理を終了する。例えば、CPU30が基本モーションデータDhに格納されている基本モーションデータを用いてフォワードスイング状態を指定し、プレイヤキャラクタPCのスイング角度Θを指定することによって、フォワードスイング角度Θforをスイング角度にしてフォワードスイングするモーションが表示される。以下、図21を参照して、フォワードスイング角度Θforをスイング角度にしてフォワードスイングするプレイヤキャラクタPCのモーションについて説明する。
【0124】
図21において、プレイヤキャラクタPCの前方の水平方向を基準方向として、当該基準方向からボールBをフォワードスイングするプレイヤキャラクタPCの腕の角度がフォワードスイング角度Θforとなる。つまり、プレイヤキャラクタPCは、上記基準方向からフォワードスイング角度ΘforだけボールBをフォワードスイングしているモーションとなる。なお、フォワードスイング角度Θforも初期角度Θstやバックスイング角度Θbackと同様にその正負が上記基準方向を境界として切り替わる。本実施例では、上記基準方向の下方から当該基準方向へプレイヤキャラクタPCがフォワードスイングする方向のスイング角度を正の角度Θとし、上記基準方向から上方へプレイヤキャラクタPCが振り上げる方向のスイング角度を負の角度Θとする。ここで、フォワードスイング角度Θforは、負の角度が算出されるときがあるため、その場合上記基準方向から上方位置にボールBを振り上げた位置でフォワードスイングしている動作が表示されることもあり得る。
【0125】
また、フォワードスイング角度Θforは、上記ステップ63の処理によってスイング変化角度θだけ減算される値であり、処理を繰り返す毎にその角度が小さくなっていく。そして、スイング変化角度θは、コントローラ7の加速度センサ701が検出する加速度の大きさに応じて算出される角度であり、プレイヤがコントローラ7を振ることによって生じる遠心力に応じて算出される角度である。より具体的には、コントローラ7に生じる遠心力が大きければ、算出されるスイング変化角度θも大きくなって、結果的にフォワードスイング角度Θforの変化角度も大きくなる。つまり、プレイヤキャラクタPCは、プレイヤがコントローラ7を振る動作に応じてフォワードスイングしていることになり、その振ることに応じて加速度センサ701が検出する加速度の大きさに応じてプレイヤキャラクタPCがフォワードスイングするスイング速度もリアルタイムに変化することになる。したがって、プレイヤがコントローラ7を振り動かすことによって、あたかもプレイヤ自身がボールBをフォワードスイングしているような感覚をプレイヤに与えることができる。
【0126】
図10に戻り、ステップ14のフォワードスイングモーション再生処理の後、CPU30は、コントローラ7から受信した操作情報に含まれるキーデータを取得して、プレイヤがリリース指示を行ったか否かを判断する(ステップ15)。例えば、操作ボタン72iが投球ボタンに設定されている場合、CPU30は、操作ボタン72iに対する操作状態を示すキーデータを取得して当該操作ボタン72iの押下状態を判定する。そして、CPU30は、リリース指示(例えば、投球ボタンの押下状態が解除、すなわち、押下されている投球ボタンが離された状態に変化)された場合、次のステップ16に処理を進める。一方、CPU30は、リリース指示がない場合、上記ステップ14に戻って処理を繰り返す。
【0127】
次に、CPU30は、現在設定されているフォワードスイング角度Θforを、ボールBをリリースする際のスイング角度Θthrowに設定し、リリーススイング角度データDgに格納する(ステップ16)。つまり、上記ステップ14においてリリース指示時に設定されたフォワードスイング角度ΘforがボールBをリリースする際のスイング角度Θthrowとなる。
【0128】
次に、CPU30は、プレイヤキャラクタPCがスイング角度ΘthrowでボールBをリリースするモーションを再生する処理を行い(ステップ17)、処理と次のステップに進める。以下、図22を参照して、スイング角度Θthrowをスイング角度にしてボールBをリリースするプレイヤキャラクタPCのモーションについて説明する。
【0129】
図22において、リリーススイング角度Θthrowは、プレイヤキャラクタPCの前方の水平方向を基準方向としたプレイヤキャラクタPCの腕の角度を示している。つまり、プレイヤキャラクタPCがボールBをリリースする動作を表現するときは、上記基準方向からリリーススイング角度Θthrowだけ下方へ向かった投球方向へボールBをリリースするモーションとなる。
【0130】
また、フォワードスイング角度Θforは、上述したように上記ステップ63の処理を繰り返すことによってスイング変化角度θが繰り返し減算される値であり、リリース指示時に設定されたフォワードスイング角度Θforがスイング角度Θthrowとなる。そして、スイング変化角度θは、コントローラ7の加速度センサ701が検出する加速度の大きさに応じて算出される角度であり、プレイヤがコントローラ7を振ることによって生じる遠心力に応じて算出される角度である。より具体的には、コントローラ7に生じる遠心力が大きければ、算出されるスイング変化角度θも大きくなって、同じタイミングでリリース指示を行ったとしても結果的にリリースする腕のスイング角度Θthrowが小さくなる(つまり、上方位置でボールBをリリースする)。また、プレイヤがリリース指示を遅延させれば、その遅延した時間内にスイング変化角度θが繰り返し減算されることによって、さらにフォワードスイング角度Θforが小さくなり、結果的にリリースする腕のスイング角度Θthrowが小さくなる。つまり、プレイヤキャラクタPCは、プレイヤがコントローラ7を振る動作とリリース指示のタイミングに応じたスイング角度でボールBをリリースしていることになり、その振ることに応じて加速度センサ701が検出する加速度の大きさや操作ボタン72を離すタイミングに応じてプレイヤキャラクタPCがボールBをリリースする方向もリアルタイムに変化することになる。したがって、プレイヤがコントローラ7を振り動かすことによって、あたかもプレイヤ自身がボールをリリースしているような感覚をプレイヤに与えることができる。
【0131】
図10に戻り、CPU30は、リリースされたボールBがレーン上を移動する軌道および速度を算出する(ステップ18)。次に、CPU30は、上記ステップ18で算出されたボールBの軌道および速度に基づいて、ボールBがレーン上を移動する様子をモニタ2に表示し(ステップ19)、当該フローチャートによる処理を終了する。
【0132】
例えば、CPU30は、リリース指示前の5フレーム間に取得された加速度の大きさaの平均値に応じて、ボールBが移動する速度を算出する。また、CPU30は、プレイヤがコントローラ7をひねる動作に応じて、ボールBがレーン上を曲がる大きさを算出して、ボールBの軌道を設定する。例えば、CPU30は、リリース指示前後の8フレーム(合計16フレーム)間にX軸方向加速度データDa1に記憶されたX軸方向の加速度Xaのうち、最も大きな値を示す4つの加速度Xaの合計を算出し、当該合計値に応じてボールBがレーン上を曲がる大きさを算出する。これらの算出によって、プレイヤがリリース指示前後にコントローラ7を振り動かした速度やひねりに応じてボールBが移動することになり、あたかもプレイヤ自身がボールBを投球したような感覚をプレイヤに与えることができる。
【0133】
なお、算出された上記曲がる大きさに応じてボールBがレーン上を曲がる方向は、様々な設定が可能である。例えば、ボウリングゲームの目標となる10本のピンのうち、1番ピンが配置されている方向へボールBが曲がるようにボールの軌道を設定してもかまわない。また、X軸方向加速度データDa1、Y軸方向加速度データDa2、Z軸方向加速度データDa3にそれぞれ記憶されたX、Y、Z軸方向の加速度Xa、Ya、Zaを用いて、コントローラ7に遠心力が生じている方向を分析し、当該方向に応じてコントローラ7へ加えられているねじり方向を算出してもかまわない。この場合、算出されたねじり方向に応じてボールBが曲がるようにボールの軌道を設定することができる。
【0134】
このように、上記実施形態に係るゲーム装置3は、プレイヤの振る動作に応じて加速度センサ701が検出する加速度の変化を逐次反映する新たなゲームが可能である。例えば、プレイヤキャラクタPCがボールBを投球するモーションは、プレイヤが振る動作に応じて時間と共に変化する上記加速度を逐次反映したスイング角度Θに基づいて、当該モーションがリアルタイムに表示されるため、あたかもプレイヤ自身がボールBを投球しているような感覚をプレイヤに与えることができる。また、プレイヤキャラクタPCがボールBをリリースする角度(方向)は、プレイヤが振る動作に応じて時間と共に変化する上記加速度を適宜累積した結果から、リリース指示された時点のスイング角度Θを求めて決定される。つまり、加速度データの累積を用いてリリース指示時点のコントローラ7の振り動作角度を推定しており、加速度データから求めたコントローラ7の振り角度を反映させた新たなゲーム処理を可能としている。また、加速度を累積した結果を用いて算出されたリリース指示時点のスイング角度Θに基づいて、プレイヤキャラクタPCがスイング角度ΘでボールBをリリースするため、あたかもプレイヤ自身がボールをリリースしているような感覚をプレイヤに与えることができる。
【0135】
なお、上述した投球モーションの再生処理においては、コントローラ7に生じている加速度の大きさaをスイング変化角度θに換算し、スイング変化角度θを適宜加算/減算することによってスイング角度Θを求めてモーションの再生制御を行ったが、他の方式で再生制御を行ってもかまわない。例えば、予め投球モーションが定義されている操作において、コントローラ7に生じている加速度の大きさaに応じて当該モーションを再生する速度を算出し、当該再生速度に応じて基本モーションデータの再生速度を制御して投球モーションを表示してもかまわない。また、コントローラ7に生じている加速度の大きさaを換算して得られたスイング変化角度θをモーション再生速度とし、当該再生速度に応じて基本モーションデータの再生速度を制御して投球モーションを表示してもかまわない。
【0136】
また、上述したスイング角度Θは、上記基準方向を基準として設定されるが、他の方向を基準方向としてもかまわない。例えば、プレイヤキャラクタPCの直上方向や鉛直方向等の他の基準方向に設定してもかまわない。また、上述したスイング角度Θの正負は、上記基準方向を境界として切り替わり、上記基準方向から下方へプレイヤキャラクタPCがバックスイングする方向のスイング角度を正の角度Θとしたが、当該方向のスイング角度を負の角度Θにしてもかまわない。基準方向の設定方向および正負の切り替えに応じて、スイング角度Θの判定基準やスイング変化角度θの加算/減算等を変更すれば、上述した動作と同様の処理で本発明を実現できることは言うまでもない。
【0137】
また、上述した説明では、プレイヤキャラクタPCのスイング角度Θ、すなわちプレイヤキャラクタPCの腕の角度に基づいて、プレイヤキャラクタPCのモーションの再生制御を行ったが、他のパラメータに基づいてプレイヤキャラクタPCの動作制御を行ってもかまわない。例えば、プレイヤキャラクタPCが投球する際に握っているボールBの仮想ゲーム世界における位置を、検出された加速度に応じて逐次算出してプレイヤキャラクタPCのモーションの再生制御を行ってもかまわない。
【0138】
また、上述した説明では、説明を具体的にするためにボウリングゲームを行う例を用いたが、本発明はボウリングゲームに限定されない。例えば、プレイヤキャラクタPCが釣りを行うゲームにおいて、当該プレイヤキャラクタPCが釣竿を振って仕掛けを投げ込むモーションや、野球ゲームにおいてプレイヤキャラクタPCがボールを投球するモーション等、様々なゲームに本発明を適用することができる。
【0139】
また、上述した説明では、コントローラ7の振り動作を判別するゲーム装置本体5をゲームシステム1に適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置にも適用することができる。例えば、入力装置の加速度センサから出力される加速度データに応じて、情報処理装置が表示しているオブジェクトのモーションを制御する等、入力装置に生じる加速度に基づいて様々な処理を行うことができる。
【0140】
また、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。例えば、Z軸(図3、図4参照)成分のみ検出して出力する加速度センサを用いても、上述した振り動作を判定することができる。この場合、コントローラ7の静止状態においては、検出したZ軸方向の加速度が0である場合にコントローラ7が水平状態であると仮定し、Z軸方向の加速度の大きさに応じて重力加速度が作用している方向を簡易的に判定して初期角度Θstを算出する。そして、コントローラ7が振り動かされた後は、Z軸方向の加速度の大きさを上記加速度の大きさaと同様に取り扱って処理を行う。この場合、ボールBが曲がる大きさ等のパラメータの算出はできないが、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。
【0141】
また、上述した説明では、コントローラ7とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
【0142】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。
【0143】
また、本発明のゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【産業上の利用可能性】
【0144】
本発明に係るゲーム装置およびゲームプログラムは、加速度センサを備えた入力装置を用いた操作入力において、入力装置に対する振り動作に応じた処理を行うことができ、ゲームコントローラ等に与えられる動作に応じて仮想オブジェクト等を動作させるゲーム装置やゲームプログラムとして有用である。
【図面の簡単な説明】
【0145】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置本体5の機能ブロック図
【図3】図1のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面後方から見た斜視図
【図5】図3のコントローラ7の上筐体を外した状態を示す斜視図
【図6】図4のコントローラ7の下筐体を外した状態を示す斜視図
【図7】図3のコントローラ7の構成を示すブロック図
【図8】図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図9】図1のゲーム装置本体5のメインメモリ33に記憶される主なデータを示す図
【図10】図1のゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャート
【図11】図10におけるステップ11の初期角度Θstを算出する処理の詳細な動作を示すサブルーチン
【図12】図10におけるステップ12のバックスイングモーション再生/モーション切り替え処理の詳細な動作を示すサブルーチン
【図13】図12におけるステップ41、43、および45のバックスイングモーション再生処理の詳細な動作を示すサブルーチン
【図14】図10におけるステップ14のフォワードスイングモーション再生処理の詳細な動作を示すサブルーチン
【図15】図3のコントローラ7が静的に傾いた状態の一例を示す図
【図16】図3のコントローラ7が振られている状態の一例を示す図
【図17】図3のコントローラ7が振られることによって、当該コントローラ7に生じる加速度の変化の一例を示す図
【図18】プレイヤキャラクタPCがバックスイングする前にスイング角度Θstで構えた初期状態の一例を示す図
【図19】プレイヤキャラクタPCがスイング角度Θbackでバックスイングするモーションの一例を示す図
【図20】プレイヤキャラクタPCがスイング角度Θback(Θfor)でバックスイングからフォワードスイングに切り替えるモーションの一例を示す図
【図21】プレイヤキャラクタPCがスイング角度Θforでフォワードスイングするモーションの一例を示す図
【図22】プレイヤキャラクタPCがスイング角度ΘthrowでボールBをリリースするモーションの一例を示す図
【符号の説明】
【0146】
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…バイブレータ
707…サウンドIC
708…アンプ
8…マーカ
【特許請求の範囲】
【請求項1】
加速度データを出力する加速度センサを備えた入力装置から当該加速度データを含む操作データを取得し、当該操作データに基づいて、当該入力装置に対する振り操作に応じたゲーム処理を行うゲーム装置であって、
前記入力装置から前記操作データを取得して記憶手段に記憶する操作データ取得手段と、
所定の開始タイミングにおいて取得した前記操作データに含まれる前記加速度データを用いて、仮想ゲーム世界におけるオブジェクトの姿勢または位置を示す初期状態データを算出する初期状態データ算出手段と、
前記開始タイミング以降に逐次取得された前記操作データに含まれる前記加速度データに応じて、オブジェクトの姿勢または位置を時間と共に順次変化させるための変化量データを算出する変化量データ算出手段と、
前記初期状態データに応じて仮想ゲーム世界に配置された前記オブジェクトの姿勢または位置を前記変化量データに応じて変化させて、当該オブジェクトの動きを制御するゲーム処理を行うゲーム処理手段とを備える、ゲーム装置。
【請求項2】
前記記憶手段には、仮想ゲーム世界における前記オブジェクトの一連の動作を示す基本モーションデータが格納され、
前記変化量データ算出手段は、逐次取得する前記加速度データが示す加速度の大きさに応じて、前記基本モーションデータが示す一連の動作中の前記オブジェクトの姿勢または位置を指定する前記変化量データを算出し、
前記ゲーム処理手段は、前記初期状態データに応じた姿勢または位置を始点とし、その後の前記変化量データに基づいた前記基本モーションデータの動きに沿って、前記オブジェクトを動作させる、請求項1に記載のゲーム装置。
【請求項3】
前記記憶手段には、仮想ゲーム世界における前記オブジェクトの一連の動作を示す基本モーションデータが格納され、
前記変化量データ算出手段は、逐次取得する前記加速度データが示す加速度の大きさに応じて、前記基本モーションデータが示す一連の動作を変化させる速度を指定する前記変化量データを算出し、
前記ゲーム処理手段は、前記初期状態データに応じた姿勢または位置を始点とし、その後の前記変化量データに基づいた速度に応じて前記基本モーションデータを再生して、前記オブジェクトを動作させる、請求項1に記載のゲーム装置。
【請求項4】
前記開始タイミング以降において、所定の操作内容を示す前記操作データが取得されたタイミングを検出するタイミング検出手段を、さらに備え、
前記変化量データ算出手段は、前記タイミング検出手段が前記所定の操作内容を示す前記操作データを取得されたタイミングを検出するまで、前記変化量データを算出する、請求項1に記載のゲーム装置。
【請求項5】
前記開始タイミング以降において、所定の操作内容を示す前記操作データが取得されたタイミングを検出するタイミング検出手段を、さらに備え、
前記ゲーム処理手段は、前記タイミング検出手段が前記所定の操作内容を示す前記操作データを取得されたタイミングを検出したときに算出されている前記変化量データに基づいて、前記オブジェクトに関する仮想ゲーム世界における方向を少なくとも設定してゲーム処理を行う、請求項1に記載のゲーム装置。
【請求項6】
前記ゲーム処理手段は、前記オブジェクトの動作に応じて他のオブジェクトを仮想ゲーム世界において移動させるゲーム処理を行い、
前記ゲーム処理手段は、前記タイミング検出手段が前記所定の操作内容を示す前記操作データを取得されたタイミングを検出したときに算出されている前記変化量データに基づいて、前記オブジェクトが前記他のオブジェクトを移動させる方向を少なくとも設定してゲーム処理を行う、請求項5に記載のゲーム装置。
【請求項7】
前記タイミング検出手段が前記所定の操作内容を示す前記操作データを取得されたタイミングを検出する直前に取得された前記加速度データが示す加速度の大きさに応じて、前記他のオブジェクトの移動速度を設定する移動速度設定手段を、さらに備える、請求項6に記載のゲーム装置。
【請求項8】
前記タイミング検出手段が前記所定の操作内容を示す前記操作データを取得されたタイミングを検出する前後に取得された前記加速度データが示す所定方向の加速度の大きさに応じて、前記他のオブジェクトの軌道を設定する軌道設定手段を、さらに備える、請求項6に記載のゲーム装置。
【請求項9】
前記入力装置は、少なくとも1つの操作キーを備え、
前記操作データは、前記操作キーの押下に応じたキーデータを含み、
前記タイミング検出手段は、前記キーデータに基づいて、前記操作キーが押下されたタイミングまたは前記操作キーの押下が解除されたタイミングを検出する、請求項4または5に記載のゲーム装置。
【請求項10】
前記初期状態データ算出手段は、
前記加速度データが示す加速度が安定していることを判定する判定手段と、
前記判定手段が加速度の安定を判定したとき、前記入力装置に対して当該加速度が作用している方向を算出する加速度方向算出手段と、
前記加速度が作用している方向に対応する仮想ゲーム世界における前記オブジェクトの姿勢または位置を算出する対応状態算出手段とを含む、請求項1に記載のゲーム装置。
【請求項11】
前記入力装置は、少なくとも1つの操作キーを備え、
前記操作データは、前記操作キーの押下に応じたキーデータを含み、
前記ゲーム装置は、
前記キーデータに基づいて、前記操作キーが押下された第1タイミングを検出する第1タイミング検出手段と、
前記第1タイミング以降において、逐次取得する前記加速度データが示す加速度の大きさが所定の条件を満たす第2タイミングを検出する第2タイミング検出手段と、
前記第2タイミング以降において、前記キーデータに基づいて、前記操作キーの押下が解除された第3タイミングを検出する第3タイミング検出手段とを、さらに備え、
前記初期状態データ算出手段は、前記第1タイミングにおいて取得した前記操作データに含まれる前記加速度データを用いて、前記初期状態データを算出し、
前記変化量データ算出手段は、
前記第1タイミングから前記第2タイミングまで逐次取得された前記操作データに含まれる前記加速度データに応じて、前記オブジェクトが第1の動作を行うように当該オブジェクトの姿勢または位置を時間と共に順次変化させるための第1変化量データを算出する第1変化量データ算出手段と、
前記第2タイミング以降に逐次取得された前記操作データに含まれる前記加速度データに応じて、前記オブジェクトが前記第1の動作とは異なる第2の動作を行うように当該オブジェクトの姿勢または位置を時間と共に順次変化させるための第2変化量データを算出する第2変化量データ算出手段とを含み、
前記ゲーム処理手段は、前記第3タイミングで算出された前記第2変化量データに応じて前記オブジェクトの動きを制御するゲーム処理を行う、請求項1に記載のゲーム装置。
【請求項12】
加速度データを出力する加速度センサを備えた入力装置から当該加速度データを含む操作データを取得し、当該操作データに基づいて、当該入力装置に対する振り操作に応じたゲーム処理を行うゲーム装置のコンピュータで実行されるゲームプログラムであって、
前記コンピュータに、
前記入力装置から前記操作データを取得してメモリに記憶する操作データ取得ステップと、
所定の開始タイミングにおいて取得した前記操作データに含まれる前記加速度データを用いて、仮想ゲーム世界におけるオブジェクトの姿勢または位置を示す初期変化量データを算出する初期変化量データ算出ステップと、
前記開始タイミング以降に逐次取得された前記操作データに含まれる前記加速度データに応じて、オブジェクトの姿勢または位置を時間と共に順次変化させるための変化量データを算出する変化量データ算出ステップと、
前記初期状態データに応じて、仮想ゲーム世界に配置された前記オブジェクトの姿勢または位置を前記変化量データに応じて変化させて、当該オブジェクトの動きを制御するゲーム処理を行うゲーム処理ステップとを実行させる、ゲームプログラム。
【請求項13】
メモリには、仮想ゲーム世界における前記オブジェクトの一連の動作を示す基本モーションデータが格納され、
前記変化量データ算出ステップでは、逐次取得する前記加速度データが示す加速度の大きさに応じて、前記基本モーションデータが示す一連の動作中の前記オブジェクトの姿勢または位置を指定する前記変化量データが算出され、
前記ゲーム処理ステップでは、前記初期状態データに応じた姿勢または位置を始点とし、その後の前記変化量データに基づいた前記基本モーションデータの動きに沿って、前記オブジェクトを動作させる、請求項12に記載のゲームプログラム。
【請求項14】
メモリには、仮想ゲーム世界における前記オブジェクトの一連の動作を示す基本モーションデータが格納され、
前記変化量データ算出ステップでは、逐次取得する前記加速度データが示す加速度の大きさに応じて、前記基本モーションデータが示す一連の動作を変化させる速度を指定する前記変化量データが算出され、
前記ゲーム処理ステップでは、前記初期状態データに応じた姿勢または位置を始点とし、その後の前記変化量データに基づいた速度に応じて前記基本モーションデータを再生して、前記オブジェクトを動作させる、請求項12に記載のゲームプログラム。
【請求項15】
前記開始タイミング以降において、所定の操作内容を示す前記操作データが取得されたタイミングを検出するタイミング検出ステップを、さらに前記コンピュータに実行させ、
前記変化量データ算出ステップでは、前記タイミング検出ステップで前記所定の操作内容を示す前記操作データを取得されたタイミングが検出されるまで、前記変化量データを変化させる、請求項12に記載のゲームプログラム。
【請求項16】
前記開始タイミング以降において、所定の操作内容を示す前記操作データが取得されたタイミングを検出するタイミング検出ステップを、さらに前記コンピュータに実行させ、
前記ゲーム処理ステップでは、前記タイミング検出ステップで前記所定の操作内容を示す前記操作データを取得されたタイミングが検出されたときに算出されている前記変化量データに基づいて、前記オブジェクトに関する仮想ゲーム世界における方向を少なくとも設定してゲーム処理が行われる、請求項12に記載のゲームプログラム。
【請求項17】
前記ゲーム処理ステップでは、前記オブジェクトの動作に応じて他のオブジェクトを仮想ゲーム世界において移動させるゲーム処理が行われ、
前記ゲーム処理ステップでは、前記タイミング検出ステップで前記所定の操作内容を示す前記操作データを取得されたタイミングが検出されたときに算出されている前記変化量データに基づいて、前記オブジェクトが前記他のオブジェクトを移動させる方向を少なくとも設定してゲーム処理が行われる、請求項16に記載のゲームプログラム。
【請求項18】
前記タイミング検出ステップで前記所定の操作内容を示す前記操作データを取得されたタイミングが検出される直前に取得された前記加速度データが示す加速度の大きさに応じて、前記他のオブジェクトの移動速度を設定する移動速度設定ステップを、さらに前記コンピュータに実行させる、請求項17に記載のゲームプログラム。
【請求項19】
前記タイミング検出ステップで前記所定の操作内容を示す前記操作データを取得されたタイミングが検出される前後に取得された前記加速度データが示す所定方向の加速度の大きさに応じて、前記他のオブジェクトの軌道を設定する軌道設定ステップを、さらに前記コンピュータに実行させる、請求項17に記載のゲームプログラム。
【請求項20】
前記入力装置は、少なくとも1つの操作キーを備え、
前記操作データは、前記操作キーの押下に応じたキーデータを含み、
前記タイミング検出ステップでは、前記キーデータに基づいて、前記操作キーが押下されたタイミングまたは前記操作キーの押下が解除されたタイミングが検出される、請求項15または16に記載のゲームプログラム。
【請求項21】
前記初期状態データ算出ステップは、
前記加速度データが示す加速度が安定していることを判定する判定ステップと、
前記判定ステップで加速度の安定が判定されたとき、前記入力装置に対して当該加速度が作用している方向を算出する加速度方向算出ステップと、
前記加速度が作用している方向に対応する仮想ゲーム世界における前記オブジェクトの姿勢または位置を算出する対応状態算出ステップとを含む、請求項12に記載のゲームプログラム。
【請求項22】
前記入力装置は、少なくとも1つの操作キーを備え、
前記操作データは、前記操作キーの押下に応じたキーデータを含み、
前記ゲームプログラムは、
前記キーデータに基づいて、前記操作キーが押下された第1タイミングを検出する第1タイミング検出ステップと、
前記第1タイミング以降において、逐次取得する前記加速度データが示す加速度の大きさが所定の条件を満たす第2タイミングを検出する第2タイミング検出ステップと、
前記第2タイミング以降において、前記キーデータに基づいて、前記操作キーの押下が解除された第3タイミングを検出する第3タイミング検出ステップとを、さらに前記コンピュータに実行させ、
前記初期状態データ算出ステップでは、前記第1タイミングにおいて取得した前記操作データに含まれる前記加速度データを用いて、前記初期状態データが算出され、
前記変化量データ算出ステップは、
前記第1タイミングから前記第2タイミングまで逐次取得された前記操作データに含まれる前記加速度データに応じて、前記オブジェクトが第1の動作を行うように当該オブジェクトの姿勢または位置を時間と共に順次変化させるための第1変化量データを算出する第1変化量データ算出ステップと、
前記第2タイミング以降に逐次取得された前記操作データに含まれる前記加速度データに応じて、前記オブジェクトが前記第1の動作とは異なる第2の動作を行うように当該オブジェクトの姿勢または位置を時間と共に順次変化させるための第2変化量データを算出する第2変化量データ算出ステップとを含み、
前記ゲーム処理ステップでは、前記第3タイミングで算出された前記第2変化量データに応じて前記オブジェクトの動きを制御するゲーム処理が行われる、請求項12に記載のゲームプログラム。
【請求項1】
加速度データを出力する加速度センサを備えた入力装置から当該加速度データを含む操作データを取得し、当該操作データに基づいて、当該入力装置に対する振り操作に応じたゲーム処理を行うゲーム装置であって、
前記入力装置から前記操作データを取得して記憶手段に記憶する操作データ取得手段と、
所定の開始タイミングにおいて取得した前記操作データに含まれる前記加速度データを用いて、仮想ゲーム世界におけるオブジェクトの姿勢または位置を示す初期状態データを算出する初期状態データ算出手段と、
前記開始タイミング以降に逐次取得された前記操作データに含まれる前記加速度データに応じて、オブジェクトの姿勢または位置を時間と共に順次変化させるための変化量データを算出する変化量データ算出手段と、
前記初期状態データに応じて仮想ゲーム世界に配置された前記オブジェクトの姿勢または位置を前記変化量データに応じて変化させて、当該オブジェクトの動きを制御するゲーム処理を行うゲーム処理手段とを備える、ゲーム装置。
【請求項2】
前記記憶手段には、仮想ゲーム世界における前記オブジェクトの一連の動作を示す基本モーションデータが格納され、
前記変化量データ算出手段は、逐次取得する前記加速度データが示す加速度の大きさに応じて、前記基本モーションデータが示す一連の動作中の前記オブジェクトの姿勢または位置を指定する前記変化量データを算出し、
前記ゲーム処理手段は、前記初期状態データに応じた姿勢または位置を始点とし、その後の前記変化量データに基づいた前記基本モーションデータの動きに沿って、前記オブジェクトを動作させる、請求項1に記載のゲーム装置。
【請求項3】
前記記憶手段には、仮想ゲーム世界における前記オブジェクトの一連の動作を示す基本モーションデータが格納され、
前記変化量データ算出手段は、逐次取得する前記加速度データが示す加速度の大きさに応じて、前記基本モーションデータが示す一連の動作を変化させる速度を指定する前記変化量データを算出し、
前記ゲーム処理手段は、前記初期状態データに応じた姿勢または位置を始点とし、その後の前記変化量データに基づいた速度に応じて前記基本モーションデータを再生して、前記オブジェクトを動作させる、請求項1に記載のゲーム装置。
【請求項4】
前記開始タイミング以降において、所定の操作内容を示す前記操作データが取得されたタイミングを検出するタイミング検出手段を、さらに備え、
前記変化量データ算出手段は、前記タイミング検出手段が前記所定の操作内容を示す前記操作データを取得されたタイミングを検出するまで、前記変化量データを算出する、請求項1に記載のゲーム装置。
【請求項5】
前記開始タイミング以降において、所定の操作内容を示す前記操作データが取得されたタイミングを検出するタイミング検出手段を、さらに備え、
前記ゲーム処理手段は、前記タイミング検出手段が前記所定の操作内容を示す前記操作データを取得されたタイミングを検出したときに算出されている前記変化量データに基づいて、前記オブジェクトに関する仮想ゲーム世界における方向を少なくとも設定してゲーム処理を行う、請求項1に記載のゲーム装置。
【請求項6】
前記ゲーム処理手段は、前記オブジェクトの動作に応じて他のオブジェクトを仮想ゲーム世界において移動させるゲーム処理を行い、
前記ゲーム処理手段は、前記タイミング検出手段が前記所定の操作内容を示す前記操作データを取得されたタイミングを検出したときに算出されている前記変化量データに基づいて、前記オブジェクトが前記他のオブジェクトを移動させる方向を少なくとも設定してゲーム処理を行う、請求項5に記載のゲーム装置。
【請求項7】
前記タイミング検出手段が前記所定の操作内容を示す前記操作データを取得されたタイミングを検出する直前に取得された前記加速度データが示す加速度の大きさに応じて、前記他のオブジェクトの移動速度を設定する移動速度設定手段を、さらに備える、請求項6に記載のゲーム装置。
【請求項8】
前記タイミング検出手段が前記所定の操作内容を示す前記操作データを取得されたタイミングを検出する前後に取得された前記加速度データが示す所定方向の加速度の大きさに応じて、前記他のオブジェクトの軌道を設定する軌道設定手段を、さらに備える、請求項6に記載のゲーム装置。
【請求項9】
前記入力装置は、少なくとも1つの操作キーを備え、
前記操作データは、前記操作キーの押下に応じたキーデータを含み、
前記タイミング検出手段は、前記キーデータに基づいて、前記操作キーが押下されたタイミングまたは前記操作キーの押下が解除されたタイミングを検出する、請求項4または5に記載のゲーム装置。
【請求項10】
前記初期状態データ算出手段は、
前記加速度データが示す加速度が安定していることを判定する判定手段と、
前記判定手段が加速度の安定を判定したとき、前記入力装置に対して当該加速度が作用している方向を算出する加速度方向算出手段と、
前記加速度が作用している方向に対応する仮想ゲーム世界における前記オブジェクトの姿勢または位置を算出する対応状態算出手段とを含む、請求項1に記載のゲーム装置。
【請求項11】
前記入力装置は、少なくとも1つの操作キーを備え、
前記操作データは、前記操作キーの押下に応じたキーデータを含み、
前記ゲーム装置は、
前記キーデータに基づいて、前記操作キーが押下された第1タイミングを検出する第1タイミング検出手段と、
前記第1タイミング以降において、逐次取得する前記加速度データが示す加速度の大きさが所定の条件を満たす第2タイミングを検出する第2タイミング検出手段と、
前記第2タイミング以降において、前記キーデータに基づいて、前記操作キーの押下が解除された第3タイミングを検出する第3タイミング検出手段とを、さらに備え、
前記初期状態データ算出手段は、前記第1タイミングにおいて取得した前記操作データに含まれる前記加速度データを用いて、前記初期状態データを算出し、
前記変化量データ算出手段は、
前記第1タイミングから前記第2タイミングまで逐次取得された前記操作データに含まれる前記加速度データに応じて、前記オブジェクトが第1の動作を行うように当該オブジェクトの姿勢または位置を時間と共に順次変化させるための第1変化量データを算出する第1変化量データ算出手段と、
前記第2タイミング以降に逐次取得された前記操作データに含まれる前記加速度データに応じて、前記オブジェクトが前記第1の動作とは異なる第2の動作を行うように当該オブジェクトの姿勢または位置を時間と共に順次変化させるための第2変化量データを算出する第2変化量データ算出手段とを含み、
前記ゲーム処理手段は、前記第3タイミングで算出された前記第2変化量データに応じて前記オブジェクトの動きを制御するゲーム処理を行う、請求項1に記載のゲーム装置。
【請求項12】
加速度データを出力する加速度センサを備えた入力装置から当該加速度データを含む操作データを取得し、当該操作データに基づいて、当該入力装置に対する振り操作に応じたゲーム処理を行うゲーム装置のコンピュータで実行されるゲームプログラムであって、
前記コンピュータに、
前記入力装置から前記操作データを取得してメモリに記憶する操作データ取得ステップと、
所定の開始タイミングにおいて取得した前記操作データに含まれる前記加速度データを用いて、仮想ゲーム世界におけるオブジェクトの姿勢または位置を示す初期変化量データを算出する初期変化量データ算出ステップと、
前記開始タイミング以降に逐次取得された前記操作データに含まれる前記加速度データに応じて、オブジェクトの姿勢または位置を時間と共に順次変化させるための変化量データを算出する変化量データ算出ステップと、
前記初期状態データに応じて、仮想ゲーム世界に配置された前記オブジェクトの姿勢または位置を前記変化量データに応じて変化させて、当該オブジェクトの動きを制御するゲーム処理を行うゲーム処理ステップとを実行させる、ゲームプログラム。
【請求項13】
メモリには、仮想ゲーム世界における前記オブジェクトの一連の動作を示す基本モーションデータが格納され、
前記変化量データ算出ステップでは、逐次取得する前記加速度データが示す加速度の大きさに応じて、前記基本モーションデータが示す一連の動作中の前記オブジェクトの姿勢または位置を指定する前記変化量データが算出され、
前記ゲーム処理ステップでは、前記初期状態データに応じた姿勢または位置を始点とし、その後の前記変化量データに基づいた前記基本モーションデータの動きに沿って、前記オブジェクトを動作させる、請求項12に記載のゲームプログラム。
【請求項14】
メモリには、仮想ゲーム世界における前記オブジェクトの一連の動作を示す基本モーションデータが格納され、
前記変化量データ算出ステップでは、逐次取得する前記加速度データが示す加速度の大きさに応じて、前記基本モーションデータが示す一連の動作を変化させる速度を指定する前記変化量データが算出され、
前記ゲーム処理ステップでは、前記初期状態データに応じた姿勢または位置を始点とし、その後の前記変化量データに基づいた速度に応じて前記基本モーションデータを再生して、前記オブジェクトを動作させる、請求項12に記載のゲームプログラム。
【請求項15】
前記開始タイミング以降において、所定の操作内容を示す前記操作データが取得されたタイミングを検出するタイミング検出ステップを、さらに前記コンピュータに実行させ、
前記変化量データ算出ステップでは、前記タイミング検出ステップで前記所定の操作内容を示す前記操作データを取得されたタイミングが検出されるまで、前記変化量データを変化させる、請求項12に記載のゲームプログラム。
【請求項16】
前記開始タイミング以降において、所定の操作内容を示す前記操作データが取得されたタイミングを検出するタイミング検出ステップを、さらに前記コンピュータに実行させ、
前記ゲーム処理ステップでは、前記タイミング検出ステップで前記所定の操作内容を示す前記操作データを取得されたタイミングが検出されたときに算出されている前記変化量データに基づいて、前記オブジェクトに関する仮想ゲーム世界における方向を少なくとも設定してゲーム処理が行われる、請求項12に記載のゲームプログラム。
【請求項17】
前記ゲーム処理ステップでは、前記オブジェクトの動作に応じて他のオブジェクトを仮想ゲーム世界において移動させるゲーム処理が行われ、
前記ゲーム処理ステップでは、前記タイミング検出ステップで前記所定の操作内容を示す前記操作データを取得されたタイミングが検出されたときに算出されている前記変化量データに基づいて、前記オブジェクトが前記他のオブジェクトを移動させる方向を少なくとも設定してゲーム処理が行われる、請求項16に記載のゲームプログラム。
【請求項18】
前記タイミング検出ステップで前記所定の操作内容を示す前記操作データを取得されたタイミングが検出される直前に取得された前記加速度データが示す加速度の大きさに応じて、前記他のオブジェクトの移動速度を設定する移動速度設定ステップを、さらに前記コンピュータに実行させる、請求項17に記載のゲームプログラム。
【請求項19】
前記タイミング検出ステップで前記所定の操作内容を示す前記操作データを取得されたタイミングが検出される前後に取得された前記加速度データが示す所定方向の加速度の大きさに応じて、前記他のオブジェクトの軌道を設定する軌道設定ステップを、さらに前記コンピュータに実行させる、請求項17に記載のゲームプログラム。
【請求項20】
前記入力装置は、少なくとも1つの操作キーを備え、
前記操作データは、前記操作キーの押下に応じたキーデータを含み、
前記タイミング検出ステップでは、前記キーデータに基づいて、前記操作キーが押下されたタイミングまたは前記操作キーの押下が解除されたタイミングが検出される、請求項15または16に記載のゲームプログラム。
【請求項21】
前記初期状態データ算出ステップは、
前記加速度データが示す加速度が安定していることを判定する判定ステップと、
前記判定ステップで加速度の安定が判定されたとき、前記入力装置に対して当該加速度が作用している方向を算出する加速度方向算出ステップと、
前記加速度が作用している方向に対応する仮想ゲーム世界における前記オブジェクトの姿勢または位置を算出する対応状態算出ステップとを含む、請求項12に記載のゲームプログラム。
【請求項22】
前記入力装置は、少なくとも1つの操作キーを備え、
前記操作データは、前記操作キーの押下に応じたキーデータを含み、
前記ゲームプログラムは、
前記キーデータに基づいて、前記操作キーが押下された第1タイミングを検出する第1タイミング検出ステップと、
前記第1タイミング以降において、逐次取得する前記加速度データが示す加速度の大きさが所定の条件を満たす第2タイミングを検出する第2タイミング検出ステップと、
前記第2タイミング以降において、前記キーデータに基づいて、前記操作キーの押下が解除された第3タイミングを検出する第3タイミング検出ステップとを、さらに前記コンピュータに実行させ、
前記初期状態データ算出ステップでは、前記第1タイミングにおいて取得した前記操作データに含まれる前記加速度データを用いて、前記初期状態データが算出され、
前記変化量データ算出ステップは、
前記第1タイミングから前記第2タイミングまで逐次取得された前記操作データに含まれる前記加速度データに応じて、前記オブジェクトが第1の動作を行うように当該オブジェクトの姿勢または位置を時間と共に順次変化させるための第1変化量データを算出する第1変化量データ算出ステップと、
前記第2タイミング以降に逐次取得された前記操作データに含まれる前記加速度データに応じて、前記オブジェクトが前記第1の動作とは異なる第2の動作を行うように当該オブジェクトの姿勢または位置を時間と共に順次変化させるための第2変化量データを算出する第2変化量データ算出ステップとを含み、
前記ゲーム処理ステップでは、前記第3タイミングで算出された前記第2変化量データに応じて前記オブジェクトの動きを制御するゲーム処理が行われる、請求項12に記載のゲームプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2008−67876(P2008−67876A)
【公開日】平成20年3月27日(2008.3.27)
【国際特許分類】
【出願番号】特願2006−248720(P2006−248720)
【出願日】平成18年9月13日(2006.9.13)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成20年3月27日(2008.3.27)
【国際特許分類】
【出願日】平成18年9月13日(2006.9.13)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]