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