説明

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

【課題】入力装置を激しく動かした場合でも、プレイヤの意図する動作が反映されるゲームプログラムおよびゲーム装置を提供すること。
【解決手段】加速度検出部の検出値に基いて、入力装置の第1方向にかかる加速度を示す第1加速度データと、入力装置の第1方向と異なる第2方向にかかる加速度を示す第2加速度データを取得する。次に、第1の加速度データと第1閾値との大小関係を判定する。その結果、第1の加速度データが第1閾値より小さいと判定されたときに、少なくとも第2加速度データに基く所定の演算処理をおこなうことによりゲーム処理で利用する第1パラメータを算出する。一方、第1の加速度データが第1閾値より大きいと判定されたときに、当該第1パラメータに所定値を設定する。そして、当該第1パラメータに基づいてゲーム処理をおこなう。

【発明の詳細な説明】
【技術分野】
【0001】
入力装置自体の動きに応じてゲーム空間内のオブジェクトを移動させて表示するゲーム処理を行うゲーム装置のゲームプログラムおよびゲーム装置に関し、より特定的には、入力装置の傾く動きに応じて、オブジェクトが傾いて移動する様を表示させるゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来から、ゴルフクラブや野球のバット等のような棒状物を振るゲーム(ゴルフゲームや野球ゲーム)がある。これらのゲームにおいては、棒状物を振る動作を入力するためのコントローラに、スイッチを利用したボタンやレバーを用いていた。また、これとは別に、棒状の形状をしたコントローラ(入力制御装置)も開示されている(例えば特許文献1)。特許文献1に示すコントローラは、加速度センサを備えている。そして、プレイヤは、この棒状のコントローラを手に持ち、実際に振る動作を行う。例えば、剣劇を体感できる3Dゲームのような場合は、当該棒状のコントローラを刀剣に見立て、プレイヤがコントローラで刀剣を振るような動作を行う。すると、加速度センサから出力されるデータに基づいて、ゲーム空間内における刀剣の移動データが決められ、プレイヤの動作に沿ってプレイヤオブジェクトが刀剣を振る動作がゲーム画像として表示されていた。
【特許文献1】特開2000−308756号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上述したような上記特許文献1に開示された入力制御装置においては、以下に示す問題点があった。例えば、上記棒状のコントローラを激しく振った場合などは、その動きの速さに加速度センサの検出速度が追いつかず、その結果、プレイヤが実際に行った操作とは異なる動きの移動データが求められることがあった。そのため、プレイヤが意図した動作が表現されずに、利用者の動作とはかけ離れた動作が表示されたり、全く反映されていない動作が表示されたりすることがあり、ゲームの興趣を低下させていた。
【0004】
それ故に、本発明の目的は、入力装置を激しく動かした場合でも、プレイヤの意図する動作が反映されるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0005】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【0006】
本願発明は、入力装置の重力方向に対する傾きを変化させる操作をプレイヤにさせて、その傾きに応じてゲーム制御をおこなうようなゲームに用いられるものである。典型的には、そのような操作をすべきことが取扱説明書や画面上で指示または暗示され、プレイヤはそれに従って操作するものである。
【0007】
第1の発明は、入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置のコンピュータにゲームを実行させるゲームプログラムであって、当該コンピュータに、第1加速度取得ステップ(S2)と、第2加速度取得ステップ(S2)と、第1判定ステップ(S6)と、第1パラメータ設定ステップ(S14)と、ゲーム処理制御ステップ(S16)とを実行させる。第1加速度取得ステップ(S2)は、加速度検出部の検出値に基いて、入力装置の第1方向にかかる加速度を示す第1加速度データを取得する。第2加速度取得ステップ(S2)は、加速度検出部の検出値に基いて、入力装置の第1方向と異なる第2方向にかかる加速度を示す第2加速度データを取得する。第1判定ステップ(S6)は、第1の加速度データと第1閾値との大小関係を判定する。第1パラメータ設定ステップ(S14)は、第1判定ステップにおいて第1の加速度データが第1閾値より小さいと判定されたときに、少なくとも第2加速度データに基く所定の演算処理をおこなうことによりゲーム処理で利用する第1パラメータを算出する第1設定処理を実行し、第1判定ステップにおいて第1の加速度データが第1閾値より大きいと判定されたときに当該第1パラメータに所定値を設定する第2設定処理を実行する。ゲーム処理制御ステップ(S16)は、第1パラメータ設定ステップによって設定された第1パラメータに基づいてゲーム処理をおこなう。
【0008】
ここで、上記加速度検出部は少なくとも2方向の加速度を検出するものであり、入力装置に設けられることにより、入力装置の少なくとも2つの方向に生じた加速度を検出する。なお、加速度検出部は3方向の加速度を検出可能なものであってもよい。また、入力装置は典型的にはプレイヤの片手または両手により把持可能に形成される。なお、加速度検出部は単一の加速度センサで構成してもよいし、複数の加速度センサで構成してもよい。また、第1加速度取得ステップは、加速度検出部の検出値に基いて、入力装置における或る方向(第1方向)に生じた加速度を示す加速度データを取得する。また、第2加速度取得ステップは、加速度検出部の検出値に基いて、入力装置における他の方向(第2方向)に生じた加速度を示す加速度データを取得する。ここで、第1方向・第2方向は加速度検出部による検出方向と一致してもよいし、異なる方向であってもよい。
【0009】
また、第1方向と第2方向は直交する方向であってもよい。例えば、第1方向と第2方向を、それぞれ、入力装置における前方向(後述の図3におけるZ軸正方向)、後方向(後述の図3におけるZ軸負方向)、上方向(同図におけるY軸正方向)、下方向(同図におけるY軸負方向)、左方向(同図におけるX軸正方向)、右方向(同図におけるX軸負方向)のうちのいずれかとするのが典型的である。さらには、(a)「第1方向を前後方向のうちのいずれか、かつ、第2方向を上下方向のうちのいずれか」、(b)「第1方向を上下方向のうちのいずれか、かつ、第2方向を前後方向のうちのいずれか」、(c)「第1方向を左右方向のうちのいずれか、かつ、第2方向を上下方向のうちのいずれか」、または、(d)「第1方向を上下方向のうちのいずれか、かつ、第2方向を左右方向のうちのいずれか」としてもよい。ここで、プレイヤが入力装置を把持して、入力装置の前後端の一方の位置を動かさずに他方の位置を上下に動かすようにして傾き操作をするようなゲームでは(a)とするのがよく、入力装置の上下端の一方の位置を動かさずに他方の位置を前後に動かすようにして傾き操作をするようなゲームでは(b)とするのがよく、入力装置の左右端の一方の位置を動かさずに他方を上下に動かすようにして傾き操作をするようなゲームでは(c)とするのがよく、入力装置の上下端の一方の位置を動かさずに他方を左右に動かすようにして傾き操作をするようなゲームでは(d)とするのがよい。このようにすることにより、第1方向は、プレイヤが入力装置の一方端の位置を動かさずに他方端を上下、前後、または左右に動かす操作をさせる場合に、遠心力が働く方向となり、後述の第1判定ステップは、入力装置に生じる遠心力を含む加速度の大きさを判定することができる。なお、ここで、前後方向・上下方向・左右方向とは、入力装置において互いに直交する3方向であり、プレイヤが入力装置を基準姿勢で把持したときの状態において前後方向・上下方向・左右方向のいずれかが特定されるものであって、通常は、入力装置のハウジングの形状に従って特定される方向である。または、これら3つの方向のうちの1つの方向を入力装置の長手方向とし、残り2つの方向を短手方向として特定することができる。なお、以下、単に「前後方向」と言う場合には、入力装置における前後方向であり、単に「上下方向」と言う場合には、入力装置における上下方向であり、単に「左右方向」と言う場合には、入力装置における左右方向である。
【0010】
また、上記入力装置を長細形状に形成する場合には、入力装置の長手方向を第1方向とし、短手方向を第2方向としてもよい。さらには、入力装置が長手方向に延在するとともに、長手方向軸線周りの周囲面に掌を接触させるようにして握ることによって把持されるように形成しても良く、この場合、当該長手方向を第1方向とし、それと直交する方向を第2方向としても良い。なお、本願発明は、前述の通り、入力装置の重力方向に対する傾きを変化させる操作をプレイヤにさせるゲームに用いられるものであるが、さらに言えば、第1方向および第2方向の両方が鉛直面上に存在するように入力装置を把持させ、第1方向および第2方向の両方が鉛直面上に存在する状態を維持したまま入力装置を傾ける操作をさせる。典型的には、そのような操作をすべきことが取扱説明書や画面上で指示または暗示され、プレイヤはそれに従って操作する。第1判定ステップは、第1加速度取得ステップにより取得された第1加速度データに基づいて、入力装置の第1方向に生じた加速度と或る閾値との大小関係を判定する。ここで、プレイヤが入力装置を傾ける操作をすると、入力装置の一方端部を中心として他方端部が円弧状に移動するような動きをするため、入力装置が備える加速度検出部が円弧状に移動する。前述の通り、プレイヤは、第1方向および第2方向の両方が鉛直面上に存在するように入力装置を把持し、第1方向および第2方向の両方が鉛直面上に存在する状態を維持したまま入力装置を傾ける操作をするため、第1方向および第2方向には、当該円弧状の移動による加速度(円弧に直交する方向でかつ円弧の外側に向かう方向に働く遠心力と円弧に沿った方向に働く加速度)が生じる。さらに、入力装置が傾くと、第1方向および第2方向の重力方向に対する傾きが変化し、それにより、重力加速度の第1方向成分および第2方向成分が変化するため、すなわち、入力装置を傾ける操作をすることにより、第1加速度データは、「円弧状の移動による加速度」と「重力加速度の第1方向成分」により変化する。ここで、第1加速度取得ステップにより取得された前記第1加速度データのうち重力成分を除去し、第1判定ステップは、重力成分が除去された第1加速度データと第1閾値との大小関係を判定するようにしてもよい(後述の第2判定ステップにおいても同様で、重力成分が除去された第2加速度データと第2閾値との大小関係を判定するようにしてもよい)。一方、第1加速度データから重力成分を除去しない場合には、重力加速度の第1方向成分の最大値に応じて定めてよい。当該最大値は、第1方向が重力方向に一致するときに最大となり、その値は、重力加速度である。ただし、入力装置を傾ける範囲が限定される場合には、「第1方向が重力方向に一番近い姿勢における重力加速度の第1方向成分」である。(なお、傾ける範囲の限定は、取扱説明書や画面上で指示または暗示され、プレイヤはそれに従って入力装置を傾ける)。例えば、プレイヤに入力装置を第1方向が鉛直上方向となる状態から水平方向となる状態までの間で傾ける操作をさせるゲームにおいては、重力加速度の第1方向成分は、−Gから0までの間の値をとるので、最大値は0となる。ゆえに、第1閾値は0より大きな値とする。また、入力装置を第1方向が鉛直下方向となる状態から水平方向となる状態までの間で傾ける操作をさせるゲームにおいては、重力加速度の第1方向成分は、0からGまでの間の値をとるので、最大値はGとなる。ゆえに、第1閾値はGより大きな値とする。また、入力装置を第1方向が鉛直上方向となる状態から鉛直下方向となる状態までの間で傾ける操作をさせるゲームにおいては、重力加速度の第1方向成分は、−GからGまでの間の値をとるので、最大値はGとなる。ゆえに、第1閾値はGより大きな値とする。なお、入力装置を第1方向が水平面と所定角度(例えば、45度や30度など)を成す状態から他の所定角度を成す状態まで傾けることを許容するゲームなどにおいても、同様にして第1閾値を決めることができる。そして、第1加速度データが当該最大値より大きくなるということは、第1加速度データに少なくとも「円弧状の移動による加速度」の要素が含まれているということである。そして、第1判定ステップが用いる「閾値」は、当該最大値より大きな値(当該最大値にある判定値を加えた値)とする。これにより、第1判定ステップにおいて、第1加速度データに含まれる「円弧状の移動による加速度」の値が少なくとも当該ある判定値より大きいことが判定されることになる。「円弧状の移動による加速度」の値は、プレイヤが入力装置を傾ける操作が激しさに応じて大きくなるため、第1判定ステップにおいて、プレイヤが入力装置を傾ける操作がある程度激しいかどうかが判定されることになる。そして、第1パラメータ設定ステップは、少なくとも第1判定ステップにより第1加速度データが閾値より小さいと判定されたときには、少なくとも第2方向にかかる加速度(第2加速度データ)に基いて第1パラメータを設定し、第1加速度データが閾値より大きいと判定されたときは、当該第1パラメータを所定値に設定する。これにより、プレイヤが入力装置を傾ける操作が激しくないときにのみ、第2加速度データに基づいて第1パラメータを設定し、そうでないときには第1パラメータを所定値に設定することとなる。なお、以下の説明において、第1加速度データが閾値より小さいという判定を、通常操作判定と呼び、第1加速度データが閾値より大きいという判定を、急操作判定と呼ぶ。
【0011】
ここで、プレイヤは、第1方向および第2方向の両方が鉛直面上に存在するように入力装置を把持し、第1方向および第2方向の両方が鉛直面上に存在する状態を維持したまま入力装置を傾ける操作をするので、プレイヤが入力装置を傾ける操作を激しくすることにより、第1加速度データに含まれる「円弧状の移動による加速度」の値が大きくなっているときには、第2加速度データに含まれる「円弧状の移動による加速度」の値も大きくなっていると判断することが可能である。すなわち、第2加速度データについても、重力加速度の第2方向成分のみならず、「円弧状の移動による加速度」が大きく含まれていると判断することができて、第1パラメータ設定ステップは、このような場合には、第2加速度データに基づいた第1パラメータの設定を停止し、第1パラメータを所定値に設定するのである。これにより、第1パラメータを重力加速度の第2方向成分に応じたパラメータとすることがある程度保証される。また、重力加速度の第2方向成分は入力装置を傾けることによって変化するため、すなわち、第1パラメータを入力装置の傾きに応じて設定することをある程度保証される。
【0012】
なお、第1パラメータ設定ステップにおいて、第2加速度データをそのまま第1パラメータとしてもよいし、第2加速度データに所定の演算処理をすることによって第1パラメータを算出してもよい(以下において「あるデータに基づいて第1パラメータを設定する」と説明する場合、同様である)。後者の場合、当該演算処理の具体的内容は任意であるが、第2加速度データが増加したときに、第1パラメータが一方的に増加または一方的に減少して設定されるような演算処理を用いてもよい(ただし、この場合において、第2加速度データが一定以上または一定値以下になったときには第1パラメータが一定値になるようにしてもよい;以下において「一方的に増加または一方的に減少」と説明する場合も同様である)。
【0013】
また、第1パラメータ設定ステップは、第1判定ステップにより通常操作判定がされたときに、第1加速度データおよび第2加速度データの両方に基づいて第1パラメータを設定してもよい。この場合において、例えば、第1加速度データおよび第2加速度データに基づいて、入力装置の鉛直方向に対する傾きを示す傾きデータを算出して、当該傾きデータに基づいて第1パラメータを設定してもよい。このとき、傾きデータが増加したときに、第1パラメータが一方的に増加または一方的に減少して設定されるような演算処理を用いてもよい。例えば、第1方向と第2方向とを直交する方向とする場合に、第1加速度データと第2加速度データを逆正接関数に代入することにより、傾きデータである角度データを算出して第1パラメータとすることができる。
【0014】
なお、第1判定ステップは、第1加速度データと第1閾値との大小関係を判定するが、さらに、第2判定ステップとして、第2加速度データと第2閾値との大小関係を判定させてもよい。ここで、第1閾値は前述の通り、重力加速度の第1方向成分の最大値に所定の判定値を加算した値であるが、第2閾値は、同様に、重力加速度の第2方向成分の最大値に所定の判定値を加算した値である。そして、第1パラメータ設定ステップは、第1判定ステップにおいて第1加速度データが第1閾値より大きいと判定され、かつ、第2判定ステップにおいて第2加速度データが第2閾値より大きいと判定されたときに、第1パラメータを所定値に設定し、そうでないときに、少なくとも第2加速度データに基いて第1パラメータを設定するようにしてもよい。これにより、入力装置の傾きの操作の激しさの判定をより正確におこなうことが可能となる。なお、第1方向を、プレイヤが入力装置を傾ける操作をしたときに、当該操作による入力装置における所定箇所の移動の軌跡となる円弧に直交する方向とし、かつ、第2方向は、プレイヤが入力装置を傾ける操作をしたときに、当該円弧の接線方向としてもよい。この場合、第1方向には、プレイヤが前記入力装置を傾ける操作をしたときに遠心力が生じ、第2方向は、プレイヤが前記入力装置を傾ける操作をしたときに、当該操作の操作力による加速度が生じる。ここで、プレイヤが入力装置を傾ける操作をしたときに、当該操作の操作力による加速度が先に発生し、遠心力は遅れて立ち上がる。それゆえ、第1判定ステップによる第1加速度データが第1閾値より大きいという判定は、第2判定ステップによる第2加速度データが第2閾値より大きいという判定よりも遅れることになる。そのため、第2加速度データの履歴を記憶しておいて、直近の所定期間において取得された第2加速度データの最大値が第2閾値より大きいという判定をしてもよい。
【0015】
また、加速度検出部が3軸の加速度センサの場合、加速度検出部の検出値に基いて、入力装置の第3方向(第1方向とも第2方向とも異なり、好ましくは、第1方向および第2方向のそれぞれと直交する方向)にかかる加速度を示す第3加速度データを取得する第3加速度取得ステップを実行させるようにし、第1パラメータ設定ステップは、通常操作判定されたときに、第1加速度データ、第2加速度データおよび第3加速度データに基づいて第1パラメータを設定してもよい。なお、第1パラメータ設定ステップは、第1加速度データが閾値に一致する場合には、通常操作判定としてもよいし、急操作判定としてもよいことは言うまでも無い。また、第1パラメータ設定ステップは、通常操作判定されたときに、少なくとも第2加速度データに基づいて第1パラメータを設定するが、このとき、第1パラメータの取りうる値の範囲は所定範囲に限定してもよい(上限のみ、下限のみ、または、上限下限の両方のいずれでもよい)。具体的な例では、少なくとも第2加速度データに基づいて所定演算することにより第1パラメータを算出し、その算出値が所定範囲を外れているときには、所定範囲の限度値(上限値または下限値)を第1パラメータに設定してもよい。そして、第1パラメータ設定ステップは、急操作判定されたときに、第1パラメータを所定値に設定するが、この所定値は、当該所定範囲の限度値(上限値または下限値)または上限値より大きな値、または、下限値より小さな値のいずれかとしてもよい。すなわち、通常操作判定されたときに、第2加速度データにより設定される第1パラメータの取りうる範囲がp1〜p2としたときに、急操作判定されたときには、第1パラメータをp1、p1よりも小さな値、p2、または、p2よりも大きな値のいずれかに設定することができる。ここで、第1パラメータ設定ステップは、通常操作判定されたときに、第2加速度データa1〜a2(a1<a2)の場合に算出される第1パラメータがp1〜p2(p1<p2)となるような演算処理をおこなうとして、以下のいずれかがバリエーションとして存在する。
(a)第2加速度データa1が第1パラメータp1に対応し、第2加速度データa2が第1パラメータp2に対応し、かつ、第2加速度関連データが増加するに従って第1パラメータが増加するような演算処理とする。
(b)第2加速度データa1が第1パラメータp2に対応し、第2加速度データa2が第1パラメータp1に対応し、かつ、第2加速度関連データが増加するに従って第1パラメータが減少するような演算処理とする。
ここで、(a)の場合で、第1判定ステップおよび第2判定ステップにより急操作判定されたときは、第1パラメータをパラメータp2またはそれより大きな所定値に設定してもよい。また、(b)の場合で、さらに、前述の第2判定ステップを実行させる場合、第1判定ステップおよび第2判定ステップにより急操作判定されたときは、第1パラメータをパラメータp1またはそれより小さな所定値に設定してもよい。
【0016】
以下に、典型的な例について具体的に説明する。第1方向を前方向とし、第2方向を上方向とする。そして、第1パラメータ設定手段は、通常操作判定されたときに、第1加速度データおよび第2加速度データを正接関数の逆関数に代入して、角度データθc(入力装置の傾きを示すデータ)を算出する。そして、角度データθcに基いて、第1パラメータとしての「ゲームオブジェクトの傾きの大きさを示すデータθo」(典型的には、仮想空間における仮想鉛直方向を基準とする傾きの大きさを示すデータ;以下、単に傾きデータと呼ぶ。なお、後述の通り、ゲームオブジェクトの傾きの目標データであってもよい)を設定する。そして、このθoに基づいてゲームオブジェクトを表示する処理を実行すれば、入力装置を傾けることにより、ゲームオブジェクトが仮想空間において傾いて表示させることができる。なお、θcをそのままθoとしてもよいし、θcに所定演算をしてθoとしてもよい。後者の場合、θcに所定値を加算または減算してθoとしてもよいし、θcを所定倍してθoとしてもよい。また、θcの正負を反転して利用してもよく、この場合には、θcが増加するに応じてθoが減少するようにすることもできるが、以下ではθcが増加するに応じてθoも増加するように設定する場合を説明する。また、θcを水平面を基準として鉛直上方向への角度を正とする角度とし、θoを仮想水平面(仮想空間における水平面)を基準として仮想上方向(仮想空間における鉛直上方向)への角度を正とする角度として説明するが、角度の基準や正負の方向はこの例に限られないことは当業者には明らかである。通常操作判定されたときに算出された角度データがθc1度以下の場合には、ゲームオブジェクトの傾きデータをθo1度に設定する。そして、急操作判定されたときには、ゲームオブジェクトの傾きデータをθo1に設定するか、θo1より小さい値に設定する。さらに、第1判定ステップにより第1加速度データが第1閾値より大きいと判定がされ、かつ、第2判定ステップにより第2加速度データが第2閾値より大きいと判定されたときに、ゲームオブジェクトの傾きデータをθo1に設定するか、または、θo1より小さい値に設定する。
【0017】
第2の発明は、第1の発明において、ゲームは、プレイヤに入力装置を傾ける操作をさせるゲームである。また、第1方向は、プレイヤが入力装置を傾ける操作をしたときに遠心力が生じる方向である。また、第2方向は、プレイヤが入力装置を傾ける操作をしたときに、当該操作の操作力による加速度が生じる方向である。
【0018】
第3の発明は、第1の発明において、ゲームは、プレイヤに入力装置を傾ける操作をさせるゲームである。また、第1方向は、プレイヤが入力装置を傾ける操作をしたときに、当該操作による入力装置における所定箇所の移動の軌跡となる円弧に直交する方向である。また、第2方向は、プレイヤが入力装置を傾ける操作をしたときの、円弧の接線方向である。
【0019】
第4の発明は、第1の発明において、第1設定処理は、第2加速度データに基づく所定の演算処理により算出される値が所定範囲外であるときに、第1パラメータに所定値を設定する。第2設定処理は、第1パラメータに所定範囲の境界値または所定範囲外の所定値を設定する。
【0020】
第5の発明は、第4の発明において、所定の演算処理は、第2加速度データの増加に応じて、第1パラメータが一方的に変化するような演算処理である。
【0021】
第6の発明は、第1の発明において、ゲームは、第1方向および第2方向が鉛直面に存在するようにしつつ、入力装置を傾ける操作をさせるゲームであり、かつ、第1方向の重力方向に対する傾きが所定範囲内となるように入力装置を傾ける操作をさせるゲームである。また、第1閾値は、所定範囲内で入力装置を傾けたときに第1方向に生じる重力加速度の最大値より大きな値である。
【0022】
第7の発明は、第1の発明において、コンピュータに、第1加速度取得ステップにより取得された第1加速度データのうち第1方向にかかる重力成分を除去する除去ステップをさらに実行させる。また、第1判定ステップは、除去ステップによって重力成分が除去された前記第1加速度データと前記第1閾値との大小関係を判定する。
【0023】
第8の発明は、第7の発明において、コンピュータに、差分算出ステップ(S9)と、判定ステップと、保存ステップとをさらに実行させる。
差分算出ステップは、第1加速度取得ステップにより取得された今回の第1加速度データと前回の第1加速度データとの差分データ、および/または、第2加速度取得ステップにより取得された今回の第2加速度データと前回の第2加速度データとの差分データを算出する。また、判定ステップは、差分算出ステップにより算出された差分データが閾値より小さいことを判定する。保存ステップは、少なくとも判定ステップにより差分データが閾値より小さいと判定されたときに、第1加速度取得ステップにより取得された今回の第1加速度データを保存する。除去ステップは、第1加速度取得ステップにより取得された第1加速度データから保存ステップによって保存されたデータを引く処理をおこなう。
【0024】
第9の発明は、第1の発明において、第1設定処理は、少なくとも第2加速度データに基づいて入力装置の重力方向に対する角度を示す角度データを算出し、当該角度データに基づいて第1パラメータを設定し、当該角度データが所定範囲の外の角度を示すときに、第1パラメータに所定値を設定する。また、第1閾値は、所定の演算処理において、所定範囲の内で入力装置を傾けたときに第1方向に生じる重力加速度の最大値より大きな値である。
【0025】
第10の発明は、第1の発明において、第2加速度データと第2閾値との大小関係を判定する第2判定ステップを更に備える。また、第1パラメータ設定ステップは、第1判定ステップにおいて第1の加速度データが第1閾値より大きいと判定され、かつ、第2判定ステップにおいて第2加速度データが第2閾値より大きいと判定されたときに、第2設定処理をおこなう。
【0026】
第11の発明は、第10の発明において、ゲームは、第1方向および第2方向が鉛直面に存在するようにしつつ、入力装置を傾ける操作をさせるゲームであり、かつ、第1方向の重力方向に対する傾きが所定範囲内となるように入力装置を傾ける操作をさせるゲームである。また、第2閾値は、所定範囲内で入力装置を傾けたときに第2方向に生じる重力加速度の最大値より大きな値である。
【0027】
第12の発明は、第10の発明において、所定の演算処理は、第2加速度データの増加に応じて、第1パラメータが一方的に増加するような演算処理である。また、第1設定処理は、第2加速度データに基づく所定の演算処理により算出される値が所定値より大きいときに、第1パラメータに所定値を設定する。また、第2設定処理は、第1パラメータに所定値または所定値より大きい所定値を設定する。
【0028】
第13の発明は、第10の発明において、所定の演算処理は、第2加速度データの増加に応じて、第1パラメータが一方的に減少するような演算処理である。また、第1設定処理は、第2加速度データに基づく所定の演算処理により算出される値が所定値より小さいときに、第1パラメータを所定値に設定する。また、第2設定処理は、第1パラメータに所定値または所定値より小さい所定値を設定する。
【0029】
第14の発明は、第1の発明において、第1設定処理は、少なくとも第1加速度データおよび第2加速度データに基く所定の演算処理をおこなうことにより第1パラメータを算出する。
【0030】
第15の発明は、第14の発明において、所定の演算処理は、少なくとも第1加速度データおよび第2加速度データに基づいて、入力装置の重力方向に対する角度を示す角度データを第1パラメータとして算出する処理である。
【0031】
第16の発明は、第15の発明において、所定の演算処理は、第1加速度データおよび第2加速度データを逆正接関数に代入処理する処理である。
【0032】
第17の発明は、第14の発明において、第1設定処理は、第1加速度データおよび第2加速度データに基づく所定の演算処理により算出される値が所定範囲外であるときに、第1パラメータに所定値を設定する。また、第2設定処理は、第1パラメータに所定範囲の境界値または所定範囲外の所定値を設定する。
【0033】
第18の発明は、第13の発明において、第1設定処理は、算出された前記角度データが所定範囲外であるときに、第1パラメータとして所定角度を設定する。また、第2設定処理は、第1パラメータとして所定範囲の境界角度または所定範囲外の所定角度を設定する。また、第1閾値は、所定範囲内の角度における入力装置の重力方向に対する角度における重力加速度の第1方向成分の最大値よりも大きな値である。
【0034】
第19の発明は、第10の発明において、コンピュータに、第2加速度取得ステップによって取得された第2加速度データの履歴をコンピュータがアクセス可能な記憶部に記憶する履歴記憶ステップをさらに実行させる。また、第2判定ステップは、記憶部に記憶された履歴を参照して、直近の所定期間における第2加速度データのうちの最大データと第2閾値との大小関係を少なくとも判定する。また、第1パラメータ設定ステップは、第1判定ステップにおいて第1の加速度データが第1閾値より大きいと判定され、かつ、第2判定ステップにおいて最大データが第2閾値より大きいと判定されたときに、第2設定処理をおこなう。
【0035】
第20の発明は、入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置のコンピュータにゲームを実行させるゲームプログラムである。当該ゲームは、プレイヤに入力装置を傾ける操作をさせるゲームである。そして、ゲームプログラムは、コンピュータに、第1加速度取得ステップ(S2)と、第2加速度取得ステップ(S2)と、第1判定ステップ(S6)と、ゲーム入力データ設定ステップ(S14)と、ゲーム処理制御ステップ(S16)とを実行させる。第1加速度取得ステップは、加速度検出部の検出値に基いて、プレイヤが入力装置を傾ける操作をしたときに、当該操作による入力装置における所定箇所の移動の軌跡となる円弧に直交する方向にかかる加速度を示す第1加速度データを取得する。第2加速度取得ステップは、加速度検出部の検出値に基いて、プレイヤが入力装置を傾ける操作をしたときの円弧の接線方向にかかる加速度を示す第2加速度データを取得する。第1判定ステップは、第1の加速度データと第1閾値との大小関係を判定する。ゲーム入力データ設定ステップは、少なくとも第1判定ステップにおいて第1の加速度データが第1閾値より小さいと判定されたときに、第1加速度データおよび第2加速度データを逆正接関数に代入することにより、入力装置の重力方向に対する傾きを示す傾きデータを算出して当該傾きデータを、ゲーム処理で利用する第1パラメータとして設定し、少なくとも第1判定ステップにおいて第1の加速度データが第1閾値より大きいと判定されたときに当該第1パラメータを所定値に設定する。ゲーム処理制御ステップは、ゲーム入力データ設定ステップによって設定された第1パラメータに基づいてゲーム処理をおこなう。
【0036】
第21の発明は、入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置のコンピュータにゲームを実行させるゲームプログラムであって、当該コンピュータに、第1加速度取得ステップ(S2)と、第2加速度取得ステップ(S2)と、履歴記憶ステップと、第1判定ステップと、第2判定ステップと、ゲーム処理制御ステップ(S16)とを実行させる。第1加速度取得ステップは、加速度検出部の検出値に基いて、入力装置の第1方向にかかる加速度を示す第1加速度データを取得する。第2加速度取得ステップは、加速度検出部の検出値に基いて、入力装置の第1方向と異なる第2方向にかかる加速度を示す第2加速度データを取得する。履歴記憶ステップは、第2加速度取得ステップによって取得された第2加速度データの履歴をコンピュータがアクセス可能な記憶部に記憶する。第1判定ステップは、第1の加速度データと第1閾値との大小関係を判定する。第2判定ステップは、記憶部に記憶された前記履歴を参照して、直近の所定期間における前記第2加速度データのうちの最大データと前記第2閾値との大小関係を少なくとも判定する。ゲーム処理ステップは、第1判定ステップにおいて第1加速度データが第1閾値よりも大きいと判定され、かつ、第2判定ステップにおいて最大データが第2閾値よりも大きいと判定されたときに、所定のゲーム処理を実行する。
【0037】
第22の発明は、入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置であって、第1加速度取得部(6、30)と、第2加速度取得部(6、30)と、第1判定部(30)と、第1パラメータ設定部(30)と、ゲーム処理制御部(30)とを備える。第1加速度取得部は、加速度検出部の検出値に基いて、入力装置の第1方向にかかる加速度を示す第1加速度データを取得する。第2加速度取得部は、加速度検出部の検出値に基いて、入力装置の第1方向と異なる第2方向にかかる加速度を示す第2加速度データを取得する。第1判定部は、第1の加速度データと第1閾値との大小関係を判定する。第1パラメータ設定部は、第1判定部が第1の加速度データが第1閾値より小さいと判定したときに、少なくとも第2加速度データに基く所定の演算処理をおこなうことによりゲーム処理で利用する第1パラメータを算出する第1設定処理を実行し、第1判定部が第1の加速度データが第1閾値より大きいと判定したときに、当該第1パラメータに所定値を設定する第2設定処理を実行する。ゲーム処理制御部は、第1パラメータ設定部によって設定された第1パラメータに基づいてゲーム処理をおこなう。
【0038】
第23の発明は、入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置であって、当該ゲーム装置で実行されるゲームは、プレイヤに入力装置を傾ける操作をさせるゲームであり、第1加速度取得部(6、30)と、第2加速度取得部(6、30)と、第1判定部(30)と、ゲーム入力データ設定部(30)と、ゲーム処理制御部(30)とを備える。第1加速度取得部は、プレイヤが入力装置を傾ける操作をしたときに、加速度検出部の検出値に基いて、当該操作による入力装置における所定箇所の移動の軌跡となる円弧に直交する方向にかかる加速度を示す第1加速度データを取得する。第2加速度取得部は、加速度検出部の検出値に基いて、プレイヤが前記入力装置を傾ける操作をしたときの前記円弧の接線方向にかかる加速度を示す第2加速度データを取得する。第1判定部は、第1の加速度データと第1閾値との大小関係を判定する。ゲーム入力データ設定部は、第1判定部において第1の加速度データが第1閾値より小さいと判定されたときに、第1加速度データおよび第2加速度データを逆正接関数に代入することにより、入力装置の重力方向に対する傾きを示す傾きデータを算出して当該傾きデータを、ゲーム処理で利用する第1パラメータとして設定し、第1判定ステップにおいて第1の加速度データが第1閾値より大きいと判定されたときに当該第1パラメータに所定値を設定する。ゲーム処理制御部は、ゲーム入力データ設定部によって設定された第1パラメータに基づいてゲーム処理をおこなう。
【0039】
第24の発明は、入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置であって、第1加速度取得部(6、30)と、第2加速度取得部(6、30)と、履歴記憶部(33)と、第1判定部(30)と、第2判定部(30)と、ゲーム処理部(30)とを備える。第1加速度取得部は、加速度検出部の検出値に基いて、入力装置の第1方向にかかる加速度を示す第1加速度データを取得する。第2加速度取得部は、加速度検出部の検出値に基いて、入力装置の第1方向と異なる第2方向にかかる加速度を示す第2加速度データを取得する。履歴記憶部は、第2加速度取得部によって取得された第2加速度データの履歴を記憶部に記憶する。第1判定部は、第1の加速度データと第1閾値との大小関係を判定する。第2判定部は、記憶部に記憶された履歴を参照して、直近の所定期間における第2加速度データのうちの最大データと第2閾値との大小関係を少なくとも判定する。ゲーム処理部は、第1判定部において第1加速度データが第1閾値よりも大きいと判定され、かつ、第2判定部において最大データが第2閾値よりも大きいと判定されたときに、所定のゲーム処理を実行する。
【発明の効果】
【0040】
第1の発明によれば、入力装置を激しく動かしたときの勢いが、ある程度の強さを超えたときは、加速度の検出値に基づくゲームパラメータの算出処理を停止するため、入力装置を激しく動かしたときに意図しない入力となってしまうことを防止することができる。
【0041】
第2乃至第5の発明によれば、上記第1の発明と同様の効果を得ることができる。特に、入力装置を振る操作を行ったときに、プレイヤの意図する動作をより正確にゲーム処理に反映することができる。
【0042】
第6乃至第11の発明によれば、特に入力装置を振り上げる操作や振り下ろす操作について、プレイヤの操作の意図をより反映したゲーム処理を行うことができる。
【0043】
第12乃至第13の発明によれば、上記第1の発明と同様の効果を得ることができる。
【0044】
第14乃至第17の発明によれば、入力装置を動かす操作をより正確に検出し、ゲーム処理に反映することができる。
【0045】
第18の発明によれば、角度を補正することで、プレイヤの操作の意図をゲーム処理により反映させやすくでき、入力装置の操作性を高めることができる。
【0046】
第19の発明によれば、直近の加速度データとの大小関係を判定するため、入力装置を加速して動かす操作をより正確に検出することができる。
【0047】
第20乃至第21の発明によれば、上記第1の発明と同様の効果を得ることができる。
【0048】
また、本発明のゲーム装置によれば、上述した本発明のゲームプログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0049】
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
【0050】
図1を参照して、本発明の一実施形態に係る情報処理装置について説明する。以下、説明を具体的にするために、当該情報処理装置の一例の据置型のゲーム装置を含むゲームシステムについて説明する。なお、図1は、据置型のゲーム装置本体3を含むゲームシステム1の外観図であり、図2はゲーム装置本体3のブロック図である。以下、当該ゲームシステム1について説明する。
【0051】
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタを接続コードを介して接続する据置型のゲーム装置本体3とから構成される。モニタは、ゲーム装置本体3から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置本体3は、本願発明の情報処理プログラムの一例のゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタに表示出力させるためのコンピュータを搭載したゲーム装置本体3と、ゲーム画面に表示されたキャラクタなどの画像などのゲームに必要な操作情報をゲーム装置本体3に与えるためのコントローラ7とを備えている。
【0052】
また、ゲーム装置本体3は、通信ユニット6を内蔵する。通信ユニット6は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体3からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体3とは無線通信によって接続する。さらに、ゲーム装置本体3には、当該ゲーム装置本体3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置本体3の前部主面には、当該ゲーム装置本体3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、光ディスク4を脱着する投入口、およびゲーム装置本体3の投入口から光ディスク4を取り出すイジェクトスイッチ等が設けられている。
【0053】
また、ゲーム装置本体3には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ38が搭載される。ゲーム装置本体3は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置本体3は、フラッシュメモリ38に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置本体3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0054】
コントローラ7は、通信ユニット6を内蔵するゲーム装置本体3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報などの送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるゲーム空間に登場するプレイヤオブジェクト等を操作したりするための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体3の通信ユニット6から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
【0055】
図2において、ゲーム装置本体3は、各種プログラムを実行する例えばCPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35などが接続される。また、メモリコントローラ31には、所定のバスを介して、通信ユニット6、ビデオI/F(インターフェース)37、フラッシュメモリ38、オーディオI/F39、およびディスクI/F41が接続され、それぞれのインターフェースにモニタ2、外部メモリカード5、スピーカ2a、およびディスクドライブ40が接続されている。
【0056】
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0057】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0058】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0059】
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。通信ユニット6は、上記バスを介して、ゲーム装置本体3と接続される。上述したように通信ユニット6は、コントローラ7からの送信データを受信し、当該送信データをCPU30へ出力する。また、通信ユニット6は、CPU30から出力された送信データをコントローラ7の通信部75へ送信する。ビデオI/F37には、モニタ2が接続される。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置本体3のバスやオーディオI/F39に出力する。
【0060】
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
【0061】
図3および図4において、コントローラ7は、ハウジング71と、当該ハウジング71の表面に設けられた複数個の操作ボタンで構成される操作部72とを備える。本実施例のハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
【0062】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0063】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
【0064】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置本体3が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0065】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0066】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から通信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0067】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5のスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0068】
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
【0069】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング70の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0070】
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するxyz軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をz軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をz軸正方向とする。また、コントローラ7の上下方向をy軸とし、ハウジング71の下面(操作ボタン72iが設けられた面)方向をy軸正方向とする。さらに、コントローラ7の左右方向をx軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をx軸正方向とする。
【0071】
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上ハウジング(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下ハウジング(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
【0072】
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。マイコン751は本願発明のボタンデータ発生手段の一例として、操作ボタン72a等の種類に応じた操作ボタンデータを発生させるように機能する。この仕組みは公知技術であるが、例えばキートップ下側に配置されたタクトスイッチなどのスイッチ機構による配線の接触/切断をマイコン751が検出することによって実現されている。より具体的には、操作ボタンが例えば押されると配線が接触して通電するので、この通電がどの操作ボタンにつながっている配線で発生したかをマイコン751が検出し、操作ボタンの種類に応じた信号を発生させている。
【0073】
また、コントローラ7は、図示しない無線モジュール753(図7参照)およびアンテナ754によって、ワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子703が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の回転を良好な感度でゲーム装置本体3等が判定することができる。
【0074】
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体3から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0075】
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体3から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0076】
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
【0077】
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
【0078】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。後述により明らかとなるが、この撮像情報演算部74から出力される処理結果データに基づいて、コントローラ7の位置や動きに応じた信号を得ることができる。
【0079】
コントローラ7は、3軸(x、y、z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向(または他の対になった方向)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。例えば、この3軸または2軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であってもよい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または2軸の加速度センサ701が提供されてもよい。
【0080】
当業者には公知であるように、加速度センサ701に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、その2軸または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0081】
しかしながら、加速度センサ701から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ701からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きをそれぞれ推測することができる。このように、加速度センサ701をマイコン751(または他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢または位置を決定することができる。同様に、加速度センサ701を備えるコントローラ7が、例えばユーザの手で動的に加速されてそれぞれ動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7のさまざまな動きおよび/または位置をそれぞれ算出または推測することができる。他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角に変換するものであってもよい。加速度センサ701でそれぞれ検知された加速度を示すデータは通信部75に出力される。
【0082】
他の実施形態の例では、コントローラ7の動きを検出する動きセンサとして、回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるMEMSジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ701と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転(または角速度)を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【0083】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、2つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロスコープとの基本的な差異と同様にジャイロスコープの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【0084】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体3からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体3から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体3から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。
【0085】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの加速度信号(x、y、およびz軸方向加速度データ;以下、単に加速度データと記載する)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、加速度データ、処理結果データ)を通信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から通信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(Bluetooth;登録商標)で構成される通信部75の送信間隔は例えば5msである。マイコン751は、通信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その電波信号をアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からの加速度データ、および撮像情報演算部74からの処理結果データが無線モジュール753で電波信号に変調されてコントローラ7から送信される。そして、ゲーム装置本体3の通信ユニット6でその電波信号を受信し、ゲーム装置本体3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0086】
次に、図8〜図15を用いて、本実施形態で想定するゲームの概要について説明する。図8は、本実施形態で想定するゲームの画面の一例である。図8において、ゲーム画面には、ハエたたき101とハエ102とが表示される。このハエ102は、画面内を飛び回り、壁に止まる。本ゲームは、ハエ102が壁に止まるタイミングに合わせて、このハエ102をたたいて退治するゲームである。
【0087】
ここで、本ゲームの操作について説明する。まず、図9に示すように、コントローラ7を水平に持つ。この状態が、上記図8のように、仮想ゲーム空間において、丁度壁にハエタタキ101を当てた状態に対応する(なお、この図では、ハエ102はまだ飛び回っている)。この状態で、図10に示すように、コントローラ7を握ったまま手を引き上げる。すると、この動きに連動して、図11〜図12に示すように、画面内のハエタタキ101も持ち上がる(画面内では、ハエタタキ101が手前方向に近づくように表示される。また、図12では、ハエ102は壁に止まっている状態である)なお、本ゲームでは、ハエタタキ101の横方向(X軸方向)への移動は行わないものとする。すなわち、手を動かした際に、X軸方向への移動が検出されても、当該X軸方向の動きはゲーム内には反映されない。
【0088】
次に、図13に示すように、引き上げた手を、先ほどと逆の動きで振り下ろす。つまり、コントローラ7をハエタタキ101に見立て、実際にハエを叩く動作を行う。すると、図14〜図15に示すように、画面内のハエタタキ101が壁に打ち付けられる。その結果、ハエ102が壁に止まっているタイミングと合っていれば、当該ハエを叩いて退治することができる。
【0089】
本ゲームでは、基本的には、手の動く速さに応じて画面内のハエタタキ101の振り上げ/振り下ろし動作が描画される。そのため、振り上げや振り下ろしの動作をゆっくりした動作で行えば、手の動く速度に合わせてハエタタキ101も動く。但し、この場合は、動きに勢いがないため、ハエ102を叩いても退治はできない。ここで、本ゲームでは、コントローラ7を振り下げた際、振り下げる勢い(すなわち、コントローラ7にかかる加速度)が一定以上になれば、コントローラ7を持つ手が実際に動く速度にかかわらずにハエタタキ101の傾く角度を算出して描画する。つまり、画面上では、実際の加速度にかかわらずに、ハエタタキ101が所定の速度で振り下ろされる様子が描画される(以下、この動作を自動叩き動作と呼ぶ)。
【0090】
このように、本ゲームでは、ハエタタキ101に見立てたコントローラ7を、実際に振り上げて、そして、勢いを付けて振り下ろす動作を行うことで、画面内のハエ102を叩いて退治する。この際、振り下ろす速度が一定値を超えれば、振り下ろされる実際の速度にかかわらず、画面内では自動叩き動作として、ハエタタキ101が所定の速度で振り下ろされる様が描画される。これは、勢いよく振り下ろした際に、実際の加速度に応じた描画を行うと、加速度の変化が大きすぎて、例えばハエタタキ101が瞬間移動したかのような描画がされてしまうことがある。その結果、プレイヤに違和感、不自然さを与えてしまう。そのため、本ゲームでは、上述のように、ある程度の勢いでコントローラ7が振り下ろされたことが検出されれば、不自然さのない、滑らかな動きでハエタタキ101が振り下ろされる様子を描画するものである。
【0091】
次に、ゲーム装置1によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際にメインメモリ34に記憶されるデータについて説明する。図16は、図2に示したメインメモリ33のメモリマップを示す図解図である。図16において、メインメモリ33は、ゲームプログラム記憶領域330およびデータ記憶領域332を含む。
【0092】
ゲームプログラム記憶領域330には、CPU30によって実行されるゲームプログラム331等が記憶される。
【0093】
データ記憶領域332には、加速度データ333、加速度ワークデータ337、状態データ342、カウンタデータ345、角度データ349などのデータが記憶される。なお、メインメモリ33には、図16に示す情報に含まれるデータの他、仮想ゲーム空間に関するデータ(画像データ等)等、ゲーム処理に必要なデータが記憶される。
【0094】
加速度データ333は、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データであり、得られた加速度データを所定フレーム分(例えば、ゲーム処理間隔である1フレーム(1/60秒)に対して30フレーム分)格納する。加速度データ333には、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX軸加速度334、Y軸加速度335、およびZ軸加速度336が含まれる。なお、ゲーム装置3に備える受信ユニット6は、コントローラ7から所定間隔例えば5msごとに送信される操作情報に含まれる加速度データ333を受信し、受信ユニット6に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である1フレーム毎に読み出されてメインメモリ33に記憶される。−2G〜+2Gの範囲の値をとる。
【0095】
加速度ワークデータ337には、前回Y軸加速度338、前回Z軸加速度339、重力成分値340、Y軸最小値341が含まれる。前回Y軸加速度338は、直前のフレームにおける処理で取得されたY軸加速度である。ここで、本ゲームにおけるゲーム処理間隔は、1フレーム(1/60秒)であるとする。前回Z軸加速度339は、直前のフレームにおける処理で取得されたZ軸加速度である。重力成分値340は、コントローラ7が静止している状態において取得されたZ軸加速度である。すなわち、そのときにコントローラ7にかかっている重力加速度のZ軸方向成分を示す。Y軸最小値341は、本実施形態に係る処理中に取得したY軸加速度のうち最小の値である。
【0096】
状態データ342には、ステータス343と攻撃準備フラグ344と判定終了フラグ354とが含まれる。ステータス343は、ハエタタキ101の動作の状態を示すデータである。ここで、本ゲームにおいて、当該「状態」には、次の4種類がある。
(1)振り上げ、(2)振り下ろし、(3)反動、(4)通常
「振り上げ」は、ハエタタキ101が振り上げられる動作中を示す。「振り下ろし」は、ハエタタキ101が振り下ろされる動作中であることを示す。「反動」は、振り下ろし動作終了時、または振り上げ動作終了時の状態を示す。つまり、コントローラ7を振り上げて止めた場合、止めた瞬間、その反動で逆方向への加速度がかかる。コントローラ7を振り下ろした際も同様に、止めた瞬間に反動による逆方向への加速度がかかる。この加速度が検出されたときの状態が「反動」となる。「通常」は、上記3つの状態以外の状態を示す。つまり、ハエタタキ101が動いていない状態(微少な動きはあるが、ほとんど動いていないとみなせる状態も含む)を示す。
【0097】
攻撃準備フラグ344は、ステータス343が「振り上げ」の状態と判定されている時に、加速度データの状態が振り下ろし動作をしているのを認識したかどうかを示すフラグである。すなわち、ハエタタキ101を振り上げてからすぐにハエ102を叩くためにハエタタキ101を振り下ろす動作に転じたことを示すフラグである。判定終了フラグ354は、後述するゲーム処理を終了するか否かを判定するためのフラグである。
【0098】
カウンタデータ345には、通常状態カウンタ346、所要時間347、経過カウンタ348が含まれる。通常状態カウンタ346は、上記「通常」状態が継続している時間(フレーム数)をカウントするためのカウンタである。所要時間347は、上記自動叩き動作に要する時間であり、フレーム数(つまり、処理ループ回数)で表される。経過カウンタ348は、上述したようなハエタタキ101の自動叩き動作中におけるフレーム数(処理ループ回数)の経過を示すカウンタである。
【0099】
角度データ349には、現在角度350と、目標角度351と、開始角度352と、コントローラ角度353とが含まれる。現在角度350は、ハエタタキ101のゲーム空間内における現在の傾き角度を示すためのデータである。ここで、本ゲームでは、コントローラ7を水平にしたときの角度(図9参照)を0度とする。また、コントローラ7を引き上げたときの角度(図10参照)については、105度を限度とする。つまり、105度以上の角度に傾けても、ゲーム内では105度として扱うものとする。また、コントローラ7を振り下ろしたときの角度(図13参照)については、0度を限度とする。つまり、0度以下の角度に傾けても、ゲーム内では0度として扱うものとする。目標角度351は、ハエタタキ101が目標とする傾き角度である。開始角度352は、自動傾き動作の開始時のハエタタキ101の傾き角度である。コントローラ角度353は、コントローラ7の傾き角度を示す。
【0100】
次に、図17〜図22を参照して、ゲーム装置本体3によって実行されるゲーム処理について説明する。なお、図17はゲーム装置本体3によって実行されるゲーム処理の全体処理を示すフローチャートである。なお、図17に示すステップS2〜ステップS17の処理ループは、1フレーム毎に繰り返し実行される。
【0101】
図17において、まず、CPU30は、各種データを初期化するための初期化処理を行う(ステップS1)。具体的には、CPU30は、次のような値を設定することで初期化を行う。ステータス343には「通常」を設定する。攻撃準備フラグ344には、「False」という値を設定する。経過カウンタ348、重力成分値340、前回Z軸加速度339には、−1を設定する。所要時間347、開始角度352、通常状態カウンタ346には、0が設定される。前回Y軸加速度338には、−0.5が設定される。また、Y軸最小値341には1が設定される。現在角度350は、105度が設定される。
【0102】
次に、CPU30は、Y軸加速度335およびZ軸加速度336を取得する(ステップS2)。このとき、取得したZ軸加速度336から重力成分を除去しておく。具体的には、CPU30は、Z軸加速度336から重力成分値340を引いた値を算出する。以下、この値を、純Z軸加速度と呼ぶ。なお、取得したZ軸加速度336をそのまま用いても良い(すなわち重力成分を除去しなくてもよい)。この場合、後述のステップS21において、(純Z軸加速度>1.025)に代えて、(Z軸加速度336>0.025)としてもよい。また、取得したY軸加速度335から重力成分を除去するようにしてもよい。このためには、メインメモリに「重力成分値(Y)」のデータ領域を確保し、後述するステップS13において、そのときに取得したY軸加速度335を「重力成分値(Y)」の領域に格納し、ステップS2において、取得したY軸加速度335から「重力成分値(Y)」を引いた値を算出して純Y軸加速度とし、後述のステップS21において、(Y軸最小値>−1.025)に代えて、(純Y軸加速度の最小値>−1.025)とするようにしてもよい。
【0103】
次に、CPU30は、Y軸最小値341を算出する。具体的には、Y軸加速度335とY軸最小値341とを比較し、Y軸加速度335がY軸最小値341未満である否かを判定する(ステップS3)。その結果、Y軸最小値341未満であれば(ステップS3でYES)、Y軸加速度335の値でY軸最小値341を更新する(ステップS4)。Y軸最小値341未満ではない場合は(ステップS3でNO)、そのまま、処理を次に進める。
【0104】
次に、CPU30は、以下の条件が満たされているか否かを判定する(ステップS5)。
(ステータス343≠「振り下ろし」) AND (ステータス343≠「反動」) AND (攻撃準備フラグ344=False)
当該判定の結果、条件を満たしていた場合(ステップS5でYES)、CPU30は、振り下ろし判定処理を行う(ステップS6)。つまり、ステータス343が「通常」または「振り上げ」のときで、かつ加速度データの状態が振り上げてからすぐに振り下ろす動作に転じることにより加速度データが振り下ろし動作をしていると認識していなければ振り下ろし判定処理が行われることになる。
【0105】
図19は、上記ステップS6で示した振り下ろし判定処理の詳細を示すフローチャートである。図19において、まず、CPU30は、コントローラ7が振られた強さと方向(下方向かどうか)を判定するために、以下の条件が満たされているか否かを判定する(ステップS21)。
(現在角度350 > 0) AND (純Z軸加速値 > 1.025G) AND (Y軸最小値341 < −1.025G)
なお、1.025Gという値は、仮想ゲーム世界においてハエを倒すのに十分な勢いであると考えられる加速度を示す値の一例である。当該判定の結果、条件が満たされていないときは(ステップS21でNO)、そのまま振り下ろし判定処理は終了する。一方、当該条件が満たされていれば(ステップS21でYES)、CPU30は、通常状態カウンタ346を0にする(ステップS22)。
【0106】
次に、CPU30は、ステータス343が「振り上げ」かどうかを判定する(ステップS23)。これは、「反動」状態、すなわち、振り上げ操作中に逆加速がかかったときの状態(振り上げて手を止めたときの状態)に該当していないかどうかを判定するためである。当該判定の結果、「振り上げ」であれば(ステップS23でYES)、振り上げ操作中に逆加速がかかったものと考えられるため、CPU30は、ステータス343に「反動」を設定する。また、この状態は、振り上げ操作が終了した状態でもあるため、攻撃準備フラグ344にTrueを設定する(ステップS24)。
【0107】
一方、「振り上げ」ではないときは(ステップS23でNO)、CPU30は、振り下ろしパラメータ設定処理を行う(ステップS25)。なお、このステップS25によるパラメータ設定は、コントローラ7(ハエタタキ101)を振り上げ、一旦止めた後(後述するが、振り上げて止めたままにしていると、後述のステップS13の処理でステータス343が一旦「通常」になる)、勢いよく振り下ろした場合の動きに対応している。以上で、振り下ろし判定処理は終了する。
【0108】
図20は、上記ステップS25で示した振り下ろしパラメータ設定処理の詳細を示すフローチャートである。図20において、CPU30は、まず、各種変数の設定を行う(ステップS31)。具体的には、ステータス343に「振り下ろし」を設定する。また、目標角度351、経過カウンタ348に0を設定する。また、開始角度352には、現在角度350を設定する。
【0109】
次に、CPU30は、所要時間347、つまり、自動叩き動作の描画にかかるフレーム数(図17〜18のステップS2〜S17の処理ループの回数)を算出する(ステップS32)。具体的には、まず、Y軸最小値341に対して所定の線形補間を行った値である変数Frameを算出する。具体的に変数Frameは、例えばY軸最小値341が−1.268の時には2.0に、−1.025の時には8.0になるような変数である。Y軸最小値341が−1.268から−1.025の間である時には、Y軸最小値341+1.268:−1.025+1.268=Frame−2.0:8.0−2.0の関係が成り立つので、Frame=2.0+(Y軸最小値341+1.268)÷(−1.025+1.268)×6.0より変数Frameが算出される。ただし、Y軸最小値341が−1.268より小さい時には−1.268として扱い、また−1.025より大きい時には−1.025として扱う。次に、コントローラ7の水平状態〜引き上げた状態に対応する、0〜105度の範囲における、現在角度350が、0〜1の範囲内の値で表されるように変換する。この値を変数Magと呼ぶ。つまり、コントローラ7の傾き角度が、0度〜105度まで変化する際に、0度の時の値を0、105度の時の値を1としたときの、現在のコントローラ7の角度に対応する値がMagとなる。具体的に変数Magは、コントローラ7の傾き角度が0度から105度の間である時には、コントローラ7の傾き角度:105度=Mag:1.0の関係が成り立つので、Mag=コントローラ7の傾き角度÷105度より変数Magが算出される。ただし、コントローラ7の傾き角度が0度より小さい時には0度として扱い、また105度より大きい時には105度として扱う。そして、Frame×Magの式で求まる値を、所要時間347、すなわち、自動叩き動作の描画に必要なフレーム数とする。以上で、振り下ろしパラメータ設定処理が終了する。
【0110】
図17に戻り、振り下ろし判定処理が終われば、次に、CPU30は、ステータス343が以下の条件を満たすか否かを判定する(ステップS7)。
(ステータス343 ≠ 振り下ろし) AND (ステータス343 ≠ 振り上げ)
当該条件満たしていれば(ステップS7でYES)、CPU30は、振り上げ判定処理を行う(ステップS8)。つまり、ステータス343が「通常」または「反動」の場合に、振り上げ判定処理が行われることになる。
【0111】
図21は、上記ステップS8で示した振り上げ判定処理の詳細を示すフローチャートである。図21において、まず、CPU30は、Y軸加速度335が1より大きいか否かを判定する(ステップS41)。これは、コントローラ7が上方向への移動中であるか否か、またはコントローラ7が下方向への移動速度が減速してきた状態であるか否かを判定するためである。その結果、1以下であれば(ステップS41でNO)、そのまま、振り上げ判定処理を終了する。一方、1より大きければ(ステップS41でYES)、CPU30は、通常状態カウンタ346を0に設定する。また、ステータス343を「振り上げ」に設定する(ステップS42)。
【0112】
次に、CPU30は、攻撃準備フラグ344がTrueか否かを判定する(ステップS43)。当該判定の結果、Trueであるときは(ステップS43でYES)、コントローラ7を振り下ろして、止めたとき、つまり振り下ろし終えたことを意味する。この場合は、上述した振り下ろしパラメータ設定処理を行う(ステップS44)。なお、この処理の流れは、上記ステップS25のパラメータ設定処理の場合と異なり、コントローラ7(ハエタタキ101)を振り上げ、そこで止めずに、すぐに振り下ろした場合(ステータス343が「通常」に切り替わらないうちに振り下ろした場合)の動きに対応する。以上で、振り上げ判定処理は終了する。
【0113】
図17に戻り、振り上げ判定処理の次に、CPU30は、現在の処理ループと1フレーム前の処理ループとにおけるY軸、Z軸の加速度の差分を求める(図18のステップS9)。より具体的には、まず、Y軸加速度335の絶対値YAbsと、Z軸加速度336の絶対値ZAbsを算出する。そして、Y軸加速度335の絶対値YAbsと前回Y軸加速度の絶対値338との差分YSを算出する。同様に、Z軸加速度336の絶対値ZAbsと前回Z軸加速度の絶対値339との差分ZSを算出する。
【0114】
次に、CPU30は、コントローラ7の一定の傾きの範囲内において、静止状態とみなすことができるか(コントローラ7を持つ手の動きが激しくなく、ほとんど静止している状態であるか)否かを判定する(ステップS10)。具体的には、次の条件が満たされるか否かを判定する。
(YAbs < 1 AND ZAbs < 1) AND
(現在角度350 > 60度) AND
((YS <0.2G AND ZS < 0.2G) OR (現在角度350 > 90度))
ここで、上記条件について補足説明すると、(YAbs < 1 AND ZAbs < 1)の条件は、等速移動を排除するための条件である。また、(YS <0.2G AND ZS < 0.2G)の条件は、前回フレームのときよりも加速していないかを判定するための条件である。
【0115】
当該判定の結果、上記条件を満たしていなければ(ステップS10でNO)、通常状態カウンタ346を0にする(ステップS18)。そして、処理を次のステップS14へ進める。一方、ステップS10の判定の結果、条件が満たされていれば(ステップS10でYES)、通常状態カウンタ346に1を加える(ステップS11)。次に、CPU30は、通常状態カウンタ346が10フレーム以上か否かを判定する(ステップS12)。その結果、通常状態が10フレームを超えて継続していれば(ステップS12でYES)、CPU30は、次のような各種データの初期化を行う(ステップS13)。具体的には、攻撃準備フラグ344にFalseを設定する。ステータス343に「通常」を設定する。また、重力成分値340にZ軸加速度336を設定する。Y軸最小値341にY軸加速度335を設定する。更に、通常状態カウンタ346に0を設定する。
【0116】
次に、CPU30は、角度補間処理を行う(ステップS14)。この処理では、ステータス343が「振り下ろし」中であれば、所要時間347と経過カウンタ348との関係から、次に描画する際のハエタタキ101の傾き角度を求める。また、「振り下ろし」でないときは、Y軸加速度335およびZ軸加速度336からコントローラ7の傾きを算出し、当該傾きに応じて、次に描画する際のハエタタキ101の傾き角度を算出する処理が行われる。つまり、コントローラ7の傾きに応じたハエタタキ101の傾きを求める処理が行われる。
【0117】
図22は、上記ステップS14の角度補間処理の詳細を示すフローチャートである。図22において、まず、経過カウンタ348が0以上かを判定する(なお、当該カウンタは、ステップS1で、初期値として−1が設定されている;ステップS51)。その結果、0以上であれば(ステップS51でYES)、0〜所要時間347が示すフレーム数の範囲を、開始角度352〜目標角度351の範囲の値へと変換することで、経過カウンタ348の値に応じた角度(現在角度350)の算出を行う(ステップS52)。具体的には、0と開始角度352を対応付け、所要時間347と目標角度351とを対応づける。そして、現在の経過カウンタ348が、開始角度352〜目標角度351の範囲内のどの辺りに位置するかを算出する。本実施形態では、例えば、0〜所要時間347の値を開始角度352〜目標角度351の範囲内の値へと変換するような線形補間を行うことで算出する。具体的に現在角度350は、経過カウンタ348が0から所要時間347の間である時には、経過カウンタ348:所要時間347=現在角度350−開始角度352:目標角度351−開始角度352の関係が成り立つので、現在角度350=経過カウンタ348×(目標角度351−開始角度352)÷所要時間347より現在角度350が算出される。また、当該算出した値については、更に、0〜105度の範囲内に収まるように値の丸めを行う。具体的には、105度以上の値は一律に105度とし、0度以下の値は、一律に0度と変換する処理を行う。このようにして、現在フレームの経過カウンタ348に応じた角度を次にハエタタキ101を描画する際の当該ハエタタキ101の傾き角度(後述のステップS16の描画処理で描画すべき角度)、すなわち現在角度350とする。
【0118】
次に、CPU30は、経過カウンタ348に1を加える(ステップS53)。次に、経過カウンタ348が所要時間347以上になったか否かを判定し(ステップS54)する。当該判定の結果、所要時間347以上であれば(ステップS54でYES)、自動叩き動作が終了したことになるので、判定終了フラグ354にTrueを設定する(ステップS55)。一方、所要時間347以上でないときは(ステップS54でNO)、そのまま角度補間処理を終了する。
【0119】
一方、ステップS51の判定で経過カウンタ348が0未満であるときは(ステップS51でNO)、コントローラ7から得られたY軸加速度335、およびZ軸加速度336に基づいて、次の描画処理におけるハエタタキ101の傾き角度(すなわち、現在角度350)を算出するための処理を行う。但し、ここでは、当該加速度の値をそのまま反映させずに、画面に表示されるハエタタキ101の動きが滑らかに見えるよう、次の描画処理におけるハエタタキ101の傾き角度を調整する処理を行う。具体的には、次のような処理が行われる。まず、現在の加速度に基づいて、次の描画におけるハエタタキ101の傾き角度を目標角度351として算出する(ステップS56)。当該目標角度351は、例えば、逆正接関数を用いて、Y軸加速度335およびZ軸加速度336に基いて、コントローラ7の角度を算出して求める。つまり、現在のコントローラ7の傾き角度を、一旦、目標角度351として設定することになる。なお、Y軸加速度335とZ軸加速度336に基いて算出したコントローラ7の角度が0度より小さいときには目標角度351は0度に設定され、当該算出したコントローラ7の角度が105度より大きいときには、目標角度351は105度に設定される。
【0120】
次に、上述のような、次の描画処理におけるハエタタキ101の傾き角度を調整して、現在角度350を算出する(ステップS57)。この算出は、例えば次のように行われる。まず、現在角度350と、上記算出した目標角度351との差分Sを求める。次に、この差分Sに所定の線形補間を行った値を調整値Tとして求める。例えば、円周率PI/2〜PIの範囲内の値が6.0〜4.0の範囲内の値に変換されるような線形補間を行って、当該調整値Tを求める。具体的に調整値Tは、現在角度350が円周率PI/2からPIの間である時には、PI/2−PI:現在角度350−PI=2.0:調整値T−4.0の関係が成り立つので、調整値T=4.0−(現在角度350−PI)÷PI×4.0より調整値Tが算出される。そして、現在角度350を、次のような式で更新する。
現在角度350=現在角度350 + (S/T)
【0121】
これにより、例えば、現在角度350(前のフレームでの描画における角度)が90度、目標角度が95度と算出されたと仮定する。この場合、差分は5となり、本来は、次の描画処理においてはハエタタキ101は95度の傾きで描画されるべきである。しかし、上述のような調整を行う頃で、例えば91度で描画されることになる。これにより、通常状態(つまり、激しい動きがない状態)でのハエタタキ101の動きが滑らかに表現される。同時に、手ぶれ等による細かい動きがあっても、これは画面上に反映させないようにすることができる。手が震えていて、そのままこの動きを画面上に反映させると、ハエタタキ101が細かく動く様子が描画されてしまうが、上記のような調整を行うことで、画面上には、ほぼ静止した状態で描画されることになる。
【0122】
図18に戻り、角度補間処理の次に、CPU30は、前回Y軸加速度338を、Y軸加速度335で更新する。また、前回Z軸加速度339を、Z軸加速度336で更新する(ステップS15)。ステップS15の後、ステップS16において、描画処理が行われる。すなわち、上記現在角度350で示される傾き角度で傾いているハエタタキ101を仮想カメラで撮影した画像をゲーム画像としてモニタ2に表示する処理が行われる。
【0123】
次に、CPU30は、判定終了フラグ354がTrueか否かを判定する(ステップS17)Trueでない場合は(ステップS17でNO)、CPU30は、上記ステップS2に戻って処理を繰り返す。一方、Trueの場合は(ステップS17でYES)、CPU30は、当該ゲーム処理を終了する。以上で、本実施形態に係るゲーム処理が終了する。
【0124】
このように、本実施形態では、コントローラ7を振り下げたときの勢い(加速度)が、ある程度の強さを超えたときは、その後は、各フレーム毎に取得される加速度に基づいてハエタタキ101の傾きを描画するのではなく、別途、ハエタタキ101が各フレーム毎に傾く角度を算出して描画している。これにより、コントローラ7にかかる加速度の変化が大きいときであっても、ハエタタキ101が滑らかに振り下ろされる様を描画することができ、プレイヤに違和感を与えることを防ぐことができる。つまり、当該加速度を反映して描画するとプレイヤに違和感を与えるような描画となることを防ぐ事ができる。また、プレイヤの意図に照らして違和感が感じられないようにハエタタキ101(仮想ゲーム空間内のオブジェクト)を移動させることができる。これにより、入力装置を激しく動かしても、ゲーム空間内のオブジェクトはプレイヤに不自然さや違和感を与えないように移動する様が描画され、ゲームの興趣が低下することを防ぐことができる。
【0125】
また、通常状態のときにおいても、次の描画処理におけるハエタタキ101の傾き角度を調整することで、ハエタタキ101の動きが滑らかに表現することができる。また、手ぶれ等によるコントローラ7の細かい動きについては画面上に反映させずにほぼ静止した状態で描画することができる。そのため、オブジェクトの移動などの動作について、プレイヤの意図が反映された、不自然さのない動作表現が可能となる。
【0126】
なお、上述の実施形態では、ステップS6の振り下ろし判定において、図19のステップS21の判定処理でZ軸の加速度(振りの強さ)およびY軸最小値341(振りの方向)の双方を用いた判定を行っていたが、これに限らず、いずれか一方のみを用いた判定を行うようにしても良い。コントローラ7の動きの検出の正確さは多少下がるが、1つの方向軸の判定だけで済ますことができるため、処理負荷を下げることができる。そのため、コントローラ7の動きを厳密に取得する必要のないようなゲーム処理において有用である。
【0127】
また、図22の角度補間処理において、ステップS56の処理についても、Y軸およびZ軸の双方の加速度を用いて目標角度351の算出処理を行っていたが、これに限らず、いずれか一方の軸だけを用いて処理を行うようにしても良い。この場合、上記振り下ろし判定でZ軸のみで判定していた場合は、ここでもZ軸のみを用いて、コントローラ7の傾きの算出、および目標角度351の算出、そして現在角度350の算出を行うようにしても良い。この場合も、1つの方向軸の判定だけで済ますことができるため、処理負荷を下げることができる。
【産業上の利用可能性】
【0128】
本発明にかかるゲームプログラムおよびゲーム装置は、入力装置の動きが激しい場合でも、プレイヤの意図に沿った入力をゲーム処理等に反映させることができ、入力装置の動きに連動してオブジェクトを動かすゲーム処理や画像処理等の用途に有用である。
【図面の簡単な説明】
【0129】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置本体5の機能ブロック図
【図3】図1のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面前方から見た斜視図
【図5】図3のコントローラ7の上ハウジングを外した状態を示す斜視図
【図6】図3のコントローラ7の下ハウジングを外した状態を示す斜視図
【図7】図3のコントローラ7の構成を示すブロック図
【図8】本実施形態で想定するゲームの画面の一例
【図9】本実施形態で想定するゲームの操作方法を説明するための図
【図10】本実施形態で想定するゲームの操作方法を説明するための図
【図11】本実施形態で想定するゲームの画面の一例
【図12】本実施形態で想定するゲームの画面の一例
【図13】本実施形態で想定するゲームの操作方法を説明するための図
【図14】本実施形態で想定するゲームの画面の一例
【図15】本実施形態で想定するゲームの画面の一例
【図16】図2に示したメインメモリ33のメモリマップを示す図解図
【図17】本発明の実施形態に係るゲーム処理を示すフローチャート
【図18】本発明の実施形態に係るゲーム処理を示すフローチャート
【図19】図17のステップS6で示した振り下ろし判定処理の詳細を示したフローチャート
【図20】図19のステップS25で示した振り下ろしパラメータ設定処理の詳細を示したフローチャート
【図21】図17のステップS8で示した振り上げ判定処理の詳細を示したフローチャート
【図22】図18のステップS14で示した角度補間処理の詳細を示したフローチャート
【符号の説明】
【0130】
1…ゲームシステム
2…モニタ
2a、706…スピーカ
3…ゲーム装置
30…CPU
31…メモリコントローラ
32…GPU
33…メインメモリ
34…DSP
35…ARAM
37…ビデオI/F
38…フラッシュメモリ
39…オーディオI/F
40…ディスクドライブ
41…ディスクI/F
4…光ディスク
5…外部メモリカード
6…通信ユニット
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
703…水晶振動子
704…バイブレータ
707…サウンドIC
708…アンプ

【特許請求の範囲】
【請求項1】
入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置のコンピュータにゲームを実行させるゲームプログラムであって、当該コンピュータに、
前記加速度検出部の検出値に基いて、前記入力装置の第1方向にかかる加速度を示す第1加速度データを取得する第1加速度取得ステップと、
前記加速度検出部の検出値に基いて、前記入力装置の前記第1方向と異なる第2方向にかかる加速度を示す第2加速度データを取得する第2加速度取得ステップと、
前記第1の加速度データと第1閾値との大小関係を判定する第1判定ステップと、
第1判定ステップにおいて前記第1の加速度データが前記第1閾値より小さいと判定されたときに、少なくとも前記第2加速度データに基く所定の演算処理をおこなうことによりゲーム処理で利用する第1パラメータを算出する第1設定処理を実行し、前記第1判定ステップにおいて前記第1の加速度データが前記第1閾値より大きいと判定されたときに、当該第1パラメータに所定値を設定する第2設定処理を実行する第1パラメータ設定ステップと、
前記第1パラメータ設定ステップによって設定された第1パラメータに基づいてゲーム処理をおこなうゲーム処理制御ステップとを実行させる、ゲームプログラム。
【請求項2】
前記ゲームは、プレイヤに前記入力装置を傾ける操作をさせるゲームであり、
前記第1方向は、プレイヤが前記入力装置を傾ける操作をしたときに遠心力が生じる方向であり、
前記第2方向は、プレイヤが前記入力装置を傾ける操作をしたときに、当該操作の操作力による加速度が生じる方向である、請求項1に記載のゲームプログラム。
【請求項3】
前記ゲームは、プレイヤに前記入力装置を傾ける操作をさせるゲームであり、
前記第1方向は、プレイヤが前記入力装置を傾ける操作をしたときに、当該操作による前記入力装置における所定箇所の移動の軌跡となる円弧に直交する方向であり、
前記第2方向は、プレイヤが前記入力装置を傾ける操作をしたときに、前記円弧の接線方向である、請求項1に記載のゲームプログラム。
【請求項4】
前記第1設定処理は、前記第2加速度データに基づく前記所定の演算処理により算出される値が所定範囲外であるときに、第1パラメータに所定値を設定し、
前記第2設定処理は、前記第1パラメータに前記所定範囲の境界値または前記所定範囲外の所定値を設定する、請求項1に記載のゲームプログラム。
【請求項5】
前記所定の演算処理は、前記第2加速度データの増加に応じて、前記第1パラメータが一方的に変化するような演算処理である、請求項4に記載のゲームプログラム。
【請求項6】
前記ゲームは、前記第1方向および前記第2方向が鉛直面に存在するようにしつつ、前記入力装置を傾ける操作をさせるゲームであり、かつ、前記第1方向の重力方向に対する傾きが所定範囲内となるように前記入力装置を傾ける操作をさせるゲームであり、
前記第1閾値は、前記所定範囲内で前記入力装置を傾けたときに前記第1方向に生じる重力加速度の最大値より大きな値である、請求項1に記載のゲームプログラム。
【請求項7】
前記コンピュータに、前記第1加速度取得ステップにより取得された前記第1加速度データのうち前記第1方向にかかる重力成分を除去する除去ステップをさらに実行させ、
前記第1判定ステップは、前記除去ステップによって重力成分が除去された前記第1加速度データと前記第1閾値との大小関係を判定する、請求項1に記載のゲームプログラム。
【請求項8】
前記コンピュータに、
前記第1加速度取得ステップにより取得された今回の前記第1加速度データと前回の前記第1加速度データとの差分データ、および/または、前記第2加速度取得ステップにより取得された今回の前記第2加速度データと前回の前記第2加速度データとの差分データを算出する差分算出ステップと、
前記差分算出ステップにより算出された差分データが閾値より小さいことを判定する判定ステップと、
少なくとも前記判定ステップにより前記差分データが閾値より小さいと判定されたときに、前記第1加速度取得ステップにより取得された今回の前記第1加速度データを保存する保存ステップとをさらに実行させ、
前記除去ステップは、前記第1加速度取得ステップにより取得された前記第1加速度データから前記保存ステップによって保存されたデータを引く処理をおこなう、請求項7に記載のゲームプログラム。
【請求項9】
前記第1設定処理は、少なくとも前記第2加速度データに基づいて前記入力装置の重力方向に対する角度を示す角度データを算出し、当該角度データに基づいて第1パラメータを設定し、当該角度データが所定範囲の外の角度を示すときに、第1パラメータに所定値を設定し、
前記第1閾値は、前記所定の演算処理において、前記所定範囲の内で前記入力装置を傾けたときに前記第1方向に生じる重力加速度の最大値より大きな値である、請求項1に記載のゲームプログラム。
【請求項10】
前記第2加速度データと第2閾値との大小関係を判定する第2判定ステップを更に備え、
前記第1パラメータ設定ステップは、前記第1判定ステップにおいて前記第1の加速度データが前記第1閾値より大きいと判定され、かつ、前記第2判定ステップにおいて前記第2加速度データが前記第2閾値より大きいと判定されたときに、前記第2設定処理をおこなう、請求項1に記載のゲームプログラム。
【請求項11】
前記ゲームは、前記第1方向および前記第2方向が鉛直面に存在するようにしつつ、前記入力装置を傾ける操作をさせるゲームであり、かつ、前記第1方向の重力方向に対する傾きが所定範囲内となるように前記入力装置を傾ける操作をさせるゲームであり、
前記第2閾値は、前記所定範囲内で前記入力装置を傾けたときに前記第2方向に生じる重力加速度の最大値より大きな値である、請求項10に記載のゲームプログラム。
【請求項12】
前記所定の演算処理は、前記第2加速度データの増加に応じて、前記第1パラメータが一方的に増加するような演算処理であり、
前記第1設定処理は、前記第2加速度データに基づく前記所定の演算処理により算出される値が所定値より大きいときに、第1パラメータに所定値を設定し、
前記第2設定処理は、前記第1パラメータに前記所定値または前記所定値より大きい所定値を設定する、請求項10に記載のゲームプログラム。
【請求項13】
前記所定の演算処理は、前記第2加速度データの増加に応じて、前記第1パラメータが一方的に減少するような演算処理であり、
前記第1設定処理は、前記第2加速度データに基づく前記所定の演算処理により算出される値が所定値より小さいときに、第1パラメータを所定値に設定し、
前記第2設定処理は、前記第1パラメータに前記所定値または前記所定値より小さい所定値を設定する、請求項10に記載のゲームプログラム。
【請求項14】
前記第1設定処理は、少なくとも前記第1加速度データおよび前記第2加速度データに基く所定の演算処理をおこなうことにより前記第1パラメータを算出する、請求項1に記載のゲームプログラム。
【請求項15】
前記所定の演算処理は、少なくとも前記第1加速度データおよび前記第2加速度データに基づいて、前記入力装置の重力方向に対する角度を示す角度データを第1パラメータとして算出する処理である、請求項14に記載のゲームプログラム。
【請求項16】
前記所定の演算処理は、前記第1加速度データおよび前記第2加速度データを逆正接関数に代入処理する処理である、請求項15に記載のゲームプログラム。
【請求項17】
前記第1設定処理は、前記第1加速度データおよび前記第2加速度データに基づく前記所定の演算処理により算出される値が所定範囲外であるときに、第1パラメータに所定値を設定し、
前記第2設定処理は、前記第1パラメータに前記所定範囲の境界値または前記所定範囲外の所定値を設定する、請求項14に記載のゲームプログラム。
【請求項18】
前記第1設定処理は、算出された前記角度データが所定範囲外であるときに、第1パラメータとして所定角度を設定し、
前記第2設定処理は、前記第1パラメータとして前記所定範囲の境界角度または前記所定範囲外の所定角度を設定し、
前記第1閾値は、前記所定範囲内の角度における前記入力装置の重力方向に対する角度における重力加速度の前記第1方向成分の最大値よりも大きな値である、請求項13に記載のゲームプログラム。
【請求項19】
前記コンピュータに、第2加速度取得ステップによって取得された前記第2加速度データの履歴を前記コンピュータがアクセス可能な記憶部に記憶する履歴記憶ステップをさらに実行させ、
前記第2判定ステップは、前記記憶部に記憶された前記履歴を参照して、直近の所定期間における前記第2加速度データのうちの最大データと前記第2閾値との大小関係を少なくとも判定し、
前記第1パラメータ設定ステップは、前記第1判定ステップにおいて前記第1の加速度データが前記第1閾値より大きいと判定され、かつ、前記第2判定ステップにおいて前記最大データが前記第2閾値より大きいと判定されたときに、前記第2設定処理をおこなう、請求項10に記載のゲームプログラム。
【請求項20】
入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置のコンピュータにゲームを実行させるゲームプログラムであって、
前記ゲームは、プレイヤに前記入力装置を傾ける操作をさせるゲームであり、
前記コンピュータに、
前記加速度検出部の検出値に基いて、プレイヤが前記入力装置を傾ける操作をしたときに、当該操作による前記入力装置における所定箇所の移動の軌跡となる円弧に直交する方向にかかる加速度を示す第1加速度データを取得する第1加速度取得ステップと、
前記加速度検出部の検出値に基いて、プレイヤが前記入力装置を傾ける操作をしたときの前記円弧の接線方向にかかる加速度を示す第2加速度データを取得する第2加速度取得ステップと、
前記第1の加速度データと第1閾値との大小関係を判定する第1判定ステップと、
前記第1判定ステップにおいて前記第1の加速度データが前記第1閾値より小さいと判定されたときに、前記第1加速度データおよび前記第2加速度データを逆正接関数に代入することにより、前記入力装置の重力方向に対する傾きを示す傾きデータを算出して当該傾きデータを、ゲーム処理で利用する第1パラメータとして設定し、前記第1判定ステップにおいて前記第1の加速度データが前記第1閾値より大きいと判定されたときに当該第1パラメータに所定値を設定する、ゲーム入力データ設定ステップと、
前記ゲーム入力データ設定ステップによって設定された第1パラメータに基づいてゲーム処理をおこなうゲーム処理制御ステップとを実行させる、ゲームプログラム。
【請求項21】
入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置のコンピュータにゲームを実行させるゲームプログラムであって、当該コンピュータに、
前記加速度検出部の検出値に基いて、前記入力装置の第1方向にかかる加速度を示す第1加速度データを取得する第1加速度取得ステップと、
前記加速度検出部の検出値に基いて、前記入力装置の前記第1方向と異なる第2方向にかかる加速度を示す第2加速度データを取得する第2加速度取得ステップと、
第2加速度取得ステップによって取得された前記第2加速度データの履歴を前記コンピュータがアクセス可能な記憶部に記憶する履歴記憶ステップと、
前記第1の加速度データと第1閾値との大小関係を判定する第1判定ステップと、
前記記憶部に記憶された前記履歴を参照して、直近の所定期間における前記第2加速度データのうちの最大データと前記第2閾値との大小関係を少なくとも判定する第2判定ステップと、
前記第1判定ステップにおいて前記第1加速度データが前記第1閾値よりも大きいと判定され、かつ、前記第2判定ステップにおいて前記最大データが前記第2閾値よりも大きいと判定されたときに、所定のゲーム処理を実行するゲーム処理ステップを実行させる、ゲームプログラム。
【請求項22】
入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置であって、
前記加速度検出部の検出値に基いて、前記入力装置の第1方向にかかる加速度を示す第1加速度データを取得する第1加速度取得部と、
前記加速度検出部の検出値に基いて、前記入力装置の前記第1方向と異なる第2方向にかかる加速度を示す第2加速度データを取得する第2加速度取得部と、
前記第1の加速度データと第1閾値との大小関係を判定する第1判定部と、
前記第1判定部が前記第1の加速度データが前記第1閾値より小さいと判定したときに、少なくとも前記第2加速度データに基く所定の演算処理をおこなうことによりゲーム処理で利用する第1パラメータを算出する第1設定処理を実行し、前記第1判定部が前記第1の加速度データが前記第1閾値より大きいと判定したときに、当該第1パラメータに所定値を設定する第2設定処理を実行する第1パラメータ設定部と、
前記第1パラメータ設定部によって設定された第1パラメータに基づいてゲーム処理をおこなうゲーム処理制御部とを備える、ゲーム装置。
【請求項23】
入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置であって、
前記ゲーム装置で実行されるゲームは、プレイヤに前記入力装置を傾ける操作をさせるゲームであり、
前記加速度検出部の検出値に基いて、プレイヤが前記入力装置を傾ける操作をしたときに、当該操作による前記入力装置における所定箇所の移動の軌跡となる円弧に直交する方向にかかる加速度を示す第1加速度データを取得する第1加速度取得部と、
前記加速度検出部の検出値に基いて、プレイヤが前記入力装置を傾ける操作をしたときの前記円弧の接線方向にかかる加速度を示す第2加速度データを取得する第2加速度取得部と、
前記第1の加速度データと第1閾値との大小関係を判定する第1判定部と、
前記第1判定部において前記第1の加速度データが前記第1閾値より小さいと判定されたときに、前記第1加速度データおよび前記第2加速度データを逆正接関数に代入することにより、前記入力装置の重力方向に対する傾きを示す傾きデータを算出して当該傾きデータを、ゲーム処理で利用する第1パラメータとして設定し、前記第1判定ステップにおいて前記第1の加速度データが前記第1閾値より大きいと判定されたときに当該第1パラメータに所定値を設定する、ゲーム入力データ設定部と、
前記ゲーム入力データ設定部によって設定された第1パラメータに基づいてゲーム処理をおこなうゲーム処理制御部とを備える、ゲーム装置。
【請求項24】
入力装置に設けられる少なくとも2方向の加速度を検出する加速度検出部の検出値を利用可能なゲーム装置であって、
前記加速度検出部の検出値に基いて、前記入力装置の第1方向にかかる加速度を示す第1加速度データを取得する第1加速度取得部と、
前記加速度検出部の検出値に基いて、前記入力装置の前記第1方向と異なる第2方向にかかる加速度を示す第2加速度データを取得する第2加速度取得部と、
第2加速度取得部によって取得された前記第2加速度データの履歴を記憶部に記憶する履歴記憶部と、
前記第1の加速度データと第1閾値との大小関係を判定する第1判定部と、
前記記憶部に記憶された前記履歴を参照して、直近の所定期間における前記第2加速度データのうちの最大データと前記第2閾値との大小関係を少なくとも判定する第2判定部と、
前記第1判定部において前記第1加速度データが前記第1閾値よりも大きいと判定され、かつ、前記第2判定部において前記最大データが前記第2閾値よりも大きいと判定されたときに、所定のゲーム処理を実行するゲーム処理部とを備える、ゲーム装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate