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