ゲームプログラムおよびゲーム装置
【構成】ゲーム装置はコントローラを含み、コントローラには互いに直交する少なくとも2軸の加速度を検出する加速度センサが設けられる。ゲームプレイの際には、2軸に直交する軸の周りを回転するような回転操作がコントローラに施される。回転操作に応じて検出された2軸の加速度は2次元座標系の点(xn,yn)に変換される。変換された各点の角度θnが算出され、さらに角度変化Vnが算出される。そして、なめらかに変化するように補正された角度変化T´と前回の補正角度に基づいて、今回の補正角度Vが算出される。当該補正角度Vに応じたゲーム処理が実行され、たとえばゲームオブジェクトが補正角度Vに相当する分だけ動作される。
【効果】回転操作によって、プレイヤに新しい体感を与えることができ、今までに無い興趣性を備えたゲームを実現できる。
【効果】回転操作によって、プレイヤに新しい体感を与えることができ、今までに無い興趣性を備えたゲームを実現できる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ゲームプログラムおよびゲーム装置に関し、特にたとえば、互いに直交する少なくとも2軸の加速度センサを備えたゲームコントローラが2軸にさらに直交する軸の回りを移動されるような回転操作によってプレイされるゲームのための、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
近年、加速度センサを備えるゲームコントローラによってゲームがプレイされることがよく知られている。関連技術の一例がたとえば特許文献1および2に開示されている。特許文献1に記載の技術では、普通一般によく見られるようなゲームコントローラに2軸の加速度センサが設けられ、このコントローラの傾きが検出されることによってゲームが行われる。
【0003】
また、特許文献2に記載の技術では、釣具などの道具を模した形態に形成されたコントローラの内部に加速度センサが設けられ、このコントローラの振り動作の強さや傾きが検出されることによってゲームが行われる。
【特許文献1】特開2005−471号公報
【特許文献2】特開平10−214155号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1では、2軸加速度センサが水平に配置され、2軸の周りの回転角度の検出によってコントローラの傾きを検出することのみ開示されているので、今まで長年採用されてきた操作形態に基づいて、両手でコントローラを把持して、傾けたり、向きを変化させたりする操作ができるに過ぎない。そのため、今までと大幅に異なるような操作環境を備えるゲームを提供することはできない。
【0005】
また、特許文献2に記載の技術では、昨今見られるようになった、振りの動作を取り入れた体感的なゲームを提供することはできる。しかし、ゲームコントローラそのものを回転操作するような形態でゲームをプレイするような、新たな体感性を有するゲームを提供することはできない。
【0006】
それゆえに、この発明の主たる目的は、ゲームコントローラを今までにない方法で操作することによって、プレイヤに新しい体感を与えることができる、ゲームプログラムおよびゲーム装置を提供することである。
【0007】
この発明の更なる目的は、ゲームコントローラを所定の軸の周りを移動させるような操作に応じたゲーム処理を行うことによって、今までに無い興趣性を備えたゲームを実現できる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0008】
第1の発明(請求項1の発明)は、互いに直交する少なくとも2軸の加速度を検出する加速度センサを有する操作手段を備えるゲーム装置において、操作手段が2軸に直交する軸の周りを移動される回転操作に応じてゲーム処理を行うためのゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサに、取得ステップ、変換ステップ、角度算出ステップ、角度変化算出ステップ、角度補正ステップ、およびゲーム処理ステップを実行させる。取得ステップは、加速度センサによって検出される2軸の加速度を取得する。変換ステップは、2軸の加速度を2次元座標系の点に変換する。角度算出ステップは、変換された点と基準点とを結ぶ線が基準方向となす角度を算出する。角度変化算出ステップは、角度算出ステップで算出される今回の角度と前回の角度との角度変化を算出する。角度補正ステップは、角度変化算出ステップで算出された角度変化と前回の補正角度に基づいて補正角度を算出する。ゲーム処理ステップは、角度補正ステップで算出された補正角度に基づいてゲーム処理を行う。
【0009】
請求項1の発明では、ゲームプログラムは、ゲーム装置(12:後述する実施例で相当する参照符号。以下同じ。)のプロセサ(26)に以下に説明する各ステップを実行させる。なお、ゲーム装置は、加速度センサ(60)を有する操作手段(14)を備えていて、加速度センサは互いに直交する少なくとも2軸の加速度を検出する。ゲームプログラムは、2軸に直交する軸(70)の周りを操作手段が移動されるような回転操作に応じてゲーム処理を行うためのプログラムである。取得ステップ(S3)では、加速度センサによって検出される2軸の加速度が取得される。変換ステップ(S5)では、2軸の加速度が2次元座標系(xy座標系)の各軸の成分(座標)とする点に変換される。回転操作では、2軸の作る平面内の回転が行われるので、遠心力に由来する加速度が検出される。したがって、変換された点の軌跡は回転運動のような軌道を描き、また回転操作の状態を示している。角度算出ステップ(S7)では、変換された点と基準点(たとえば2次元座標系の原点)とを結ぶ線が基準方向(たとえばx軸)となす角度が算出される。角度変化算出ステップ(S11)では、今回算出された角度と前回算出された角度との角度変化(Vn)が算出される。角度補正ステップ(S29)では、今回算出された角度変化と前回の補正角度に基づいて、今回の補正角度(V)が算出される。なお、補正角度の算出に使用される角度変化は、必要に応じて補正され、たとえば所定の回転操作が行われていると判定される場合には、算出された角度変化が使用され、そうでない場合には、たとえばゼロに補正される。さらに、この角度変化(T)をなめらかに変化するように補正した角度変化(T´)が算出される。そして、補正角度は、補正された角度変化と前回の補正角度に基づいて(実施例では数2に従って)算出される。補正角度は、角度変化に前回の補正角度をも考慮して算出されるので、このような補正角度を用いることによって、回転操作の状態を適切かつ円滑にゲーム処理に反映させることができる。ゲーム処理ステップ(S31、S33、S37)では、補正角度に基づいてゲーム処理が行われ、たとえば、補正角度に相当する分だけオブジェクトの動作が制御される。
【0010】
請求項1の発明によれば、2軸の加速度を成分とする点の角度変化を算出することによって、操作手段の回転操作による回転の状態を検出し、ゲーム処理に使用するようにした。したがって、操作手段の回転操作に応じてゲーム処理が行われるので、今までに無い興趣性を備えたゲームを実現し提供することができる。また、操作手段を回転操作するので、新しい体感ができるゲームをプレイヤに提供することができる。
【0011】
請求項2の発明は、請求項1の発明に従属し、プロセサに、角度算出ステップで算出された角度変化に基づいて回転方向が過去と同一であるか否かを判定する回転方向判定ステップをさらに実行させる。角度補正ステップは、回転方向判定ステップで回転方向が同一でないと判定されたとき、角度変化をゼロと見なして補正角度を算出する。
【0012】
請求項2の発明では、回転方向判定ステップ(S17、S19)では、角度変化に基づいて回転方向が過去と同一であるか否かが判定される。角度補正ステップ(S27、S29)では、回転方向が同一でないと判定されるとき、角度変化をゼロと見なして、補正角度が算出される。したがって、同一方向への回転操作が行われていないときには当該回転操作がゲーム処理に反映されなくなる。つまり、過去と同一方向へ回転操作が行われる場合には、当該回転操作がゲーム処理に反映されることとなる。単純に回転操作を行うだけではなく、同一方向へ回転操作を続けることによってゲームが進行されるので、さらに興趣性を高めることができる。
【0013】
請求項3の発明は、請求項1または2の発明に従属し、ゲーム処理ステップは、補正角度に基づいて動作したオブジェクトを表示手段に表示する表示制御ステップを含む。
【0014】
請求項3の発明では、表示制御ステップ(S31、S37)では、補正角度に基づいて動作の制御されたオブジェクト(80、82)が表示手段(16)に表示される。したがって、回転操作に応じて画面上のオブジェクトが動作するので、興趣性の高いゲームを実現できる。
【0015】
請求項4の発明は、請求項1ないし3のいずれかの発明に従属し、ゲーム処理ステップは、補正角度に基づいてゲームクリア条件が満足されたか否かを判定するゲームクリア判定ステップを含む。
【0016】
請求項4の発明では、ゲームクリア判定ステップ(S39、S41)では、補正角度に基づいてゲームクリア条件が満足されたか否かが判定される。したがって、回転操作に応じてゲームがクリアされたりされなかったりするという興趣性に優れたゲームを実現できる。
【0017】
請求項5の発明は、請求項4の発明に従属し、ゲーム処理ステップは、補正角度に基づいて回転操作の回転回数を算出する回転回数算出ステップを含み、ゲームクリア判定ステップは、ゲームクリア条件として、回転回数が制限時間内に所定の閾値以上になったか否かを判定する。
【0018】
請求項5の発明では、回転回数算出ステップ(S33)では、補正角度に基づいて回転操作の回転回数が算出される。ゲームクリア判定ステップでは、ゲームクリア条件として、回転回数が制限時間内に所定の閾値以上になったか否かが判定される。したがって、制限時間内に所定の回転操作を行うことが必要であるので、興趣性をさらに高めたゲームを実現できる。
【0019】
第2の発明(請求項6の発明)は、互いに直交する少なくとも2軸の加速度を検出する加速度センサを有する操作手段を備え、操作手段が2軸に直交する軸の周りを移動される回転操作に応じてゲーム処理を行うゲーム装置である。ゲーム装置は、取得手段、変換手段、角度算出手段、角度変化算出手段、角度補正手段、およびゲーム処理手段を備える。取得手段は、加速度センサによって検出される2軸の加速度を取得する。変換手段は、2軸の加速度を2次元座標系の点に変換する。角度算出手段は、変換された点と基準点とを結ぶ線が基準方向となす角度を算出する。角度変化算出手段は、角度算出手段によって算出される今回の角度と前回の角度との角度変化を算出する。角度補正手段は、角度変化算出手段によって算出された角度変化と前回の補正角度に基づいて補正角度を算出する。ゲーム処理手段は、角度補正手段で算出された補正角度に基づいてゲーム処理を行う。
【0020】
請求項6の発明は、第1の発明のゲームプログラムに対応するゲーム装置であり、第1の発明と同様な効果を奏する。
【発明の効果】
【0021】
この発明によれば、操作手段に設けられた加速度センサによって検出される2軸の加速度を2次元座標系の点に変換し、当該点の角度の変化から補正角度を算出し、当該補正角度に基づいてゲーム処理が実行されるようにした。したがって、操作手段の回転操作の状態を検出して、これに応じたゲーム処理を実行できるので、今までに無い興趣性を備えたゲームを実現できる。また、操作手段を回転させるという今までに無い操作方法によってゲームをプレイできるので、プレイヤに新しい体感を与えることができる。
【0022】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0023】
図1を参照して、この実施例のゲームシステム10はゲーム装置12およびコントローラ14を含む。ゲーム装置12は、据置型ゲーム装置であり、家庭用テレビジョン受像機のようなディスプレイないしモニタ16にケーブルを介して接続される。コントローラ14は、プレイヤないしユーザによって操作される操作装置であり、ゲーム装置12に操作データを与える。
【0024】
ゲーム装置12には、接続端子を介して受信ユニット18が接続される。受信ユニット18は、コントローラ14から無線送信される操作データを受信する。具体的には、コントローラ14は、たとえばBluetooth(ブルートゥース)(登録商標)のような無線通信技術を用いて、受信ユニット18が接続されたゲーム装置12へ操作データを送信する。
【0025】
また、ゲーム装置12には、当該ゲーム装置12に対して交換可能に用いられる情報記憶媒体の一例である光ディスク20が脱着される。ゲーム装置12の上部主面には、当該ゲーム装置12の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置12上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク20の脱着が可能となる。また、ゲーム装置12には、外部メモリカード22が必要に応じて着脱自在に装着される。当該メモリカード22に搭載されるフラッシュメモリ等にはセーブデータ等が記憶される。
【0026】
ゲーム装置12は、光ディスク20に記憶されたゲームプログラムを実行することによって、その結果をゲーム画像としてモニタ16に表示する。なお、ゲーム装置12は、外部メモリカード22に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、当該ゲーム画像をモニタ16に表示することもできる。また、モニタ16に備えられるスピーカ24(図2参照)からはゲームサウンドが出力される。そして、プレイヤは、コントローラ14を操作することによって、仮想ゲームをプレイする。
【0027】
図2にはゲーム装置12の電気的構成の一例が示される。ゲーム装置12は、各種プログラムを実行するたとえばリスク(RISC)CPU(セントラルプロセッシングユニット)26を含む。CPU26は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ28等のメモリの初期化等を行った後、光ディスク20に記憶されているゲームプログラムおよびデータをロードし、当該ゲームプログラムに従ってゲーム処理を行う。
【0028】
CPU26には、メモリコントローラ30を介して、GPU(Graphics Processing Unit)32、メインメモリ28、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)36が接続される。また、メモリコントローラ30には、所定のバスを介して、コントローラI/F(インターフェース)38、ビデオI/F40、外部メモリI/F42、オーディオI/F44、およびディスクI/F46が接続され、それぞれ受信ユニット18、モニタ16、外部メモリカード22、スピーカ24、およびディスクドライブ48が接続されている。
【0029】
GPU32は、CPU26の命令に従って画像処理を行う。GPU32は、たとえば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ28の一部の記憶領域を用いて画像処理を行う。GPU32は、表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ30およびビデオI/F40を介してモニタ16に出力する。
【0030】
メインメモリ28は、CPU26によって使用される記憶領域であり、CPU26の処理に必要なゲームプログラムおよびデータを適宜記憶する。たとえば、メインメモリ28は、CPU26によって光ディスク20から読み出されたゲームプログラムや各種データ等を記憶する。
【0031】
DSP34はサウンドプロセサとして機能し、DSP34にはサウンドデータ等を記憶するためのARAM36が接続される。ARAM36は、DSP34が所定の処理(たとえば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM36に記憶されたサウンドデータ(音波形データ)を読み出し、CPU26からの音制御データと当該音波形データ等に基づいて音出力のためのデータを生成し、メモリコントローラ30およびオーディオI/F44を介してモニタ16に備えられるスピーカ24から音を出力させる。
【0032】
メモリコントローラ30は、データ転送を統括的に制御し、メモリコントローラ30には上述した各種I/Fが接続される。コントローラI/F38は、たとえば4つのコントローラI/Fで構成され、それらが有するコネクタを介して外部機器とゲーム装置12とを通信可能に接続する。たとえば、受信ユニット18は、上記コネクタと嵌合し、コントローラI/F38を介してゲーム装置12と接続される。上述したように受信ユニット18は、コントローラ14からの操作データを受信し、コントローラI/F38を介して当該操作データをCPU26へ出力する。なお、他の実施例では、ゲーム装置12には、受信ユニット18に代えて、コントローラ14から送信されてくる操作データを受信する受信モジュールがその内部に設けられてよい。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU26に出力される。
【0033】
ビデオI/F40にはモニタ16が接続され、モニタ16にはビデオI/F40からの画像信号によってゲーム画像が表示される。外部メモリI/F42には外部メモリカード22が接続され、CPU26は、メモリコントローラ30を介して外部メモリカード22に設けられたフラッシュメモリ等にアクセスする。
【0034】
オーディオI/F44にはモニタ16に内蔵されるスピーカ24が接続される。オーディオI/F44は、DSP34によってARAM36から読み出されたり生成されたりしたサウンドデータやディスクドライブ48から直接出力されるサウンドデータに対応するオーディオ信号をスピーカ24に与える。スピーカ24からは当該サウンドが出力される。
【0035】
ディスクI/F46には、ディスクドライブ48が接続される。ディスクドライブ48は、所定の読み出し位置に配置された光ディスク20に記憶されているデータを読み出す。読み出されたデータはディスクI/F46およびメモリコントローラ30等を介してメインメモリ28に書き込まれ、あるいは、オーディオI/F44に出力される。
【0036】
図3にはコントローラ14の外観の一例が示される。図3(A)は、コントローラ14の上面後方から見た斜視図であり、図3(B)は、コントローラ14を下面後方から見た斜視図である。
【0037】
コントローラ14は、たとえばプラスチック成型によって形成されたハウジング50を有している。ハウジング50は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング50は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、コントローラ14を用いて、それに設けられたボタンを押下するゲーム操作を行うことと、コントローラ14自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。たとえば、或るゲームでは、プレイヤは、長手方向を軸としてコントローラ14を回転させることによって、操作対象に移動動作を行わせることができる。
【0038】
ハウジング50には、複数の操作ボタンが設けられる。ハウジング50の上面には、十字キー52a、Xボタン52b、Yボタン52c、Aボタン52d、セレクトスイッチ52e、メニュースイッチ52f、およびスタートスイッチ52gが設けられる。一方、ハウジング50の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン52iが設けられる。これらの各ボタン(スイッチ)52は、ゲーム装置12が実行するゲームプログラムに応じてそれぞれの機能が割り当てられる。また、ハウジング50の上面には、遠隔からゲーム装置12本体の電源をオン/オフするための電源スイッチ52hが設けられる。
【0039】
また、ハウジング50の後面にはコネクタ54が設けられている。コネクタ54は、たとえば32ピンのエッジコネクタであり、コントローラ14に他の機器を接続するために利用される。また、ハウジング50上面の後面側には複数のLED56が設けられる。ここで、コントローラ14には、他のコントローラ14と区別するためにコントローラ種別(番号)が付与される。コントローラ14からゲーム装置12へ操作データを送信する際、当該コントローラ14に現在設定されているコントローラ種別に対応する1つのLED56が点灯する。
【0040】
図4にはコントローラ14の電気的構成が示される。コントローラ14は、操作部52(各操作ボタン52a−52h)の他に、その内部に通信部58および加速度センサ60を備えている。
【0041】
加速度センサ60は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。加速度センサ60は、少なくとも2つの互いに直交する軸方向の加速度を検出する。たとえば、2軸または3軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度を、各軸に沿った直線成分の加速度としてそれぞれ検出する。具体的には、この実施例では、3軸加速度センサが適用され、コントローラ14の上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸でそれぞれ加速度を検知する。また、この加速度センサ60の各軸ごとに検出される加速度に所定の演算処理を施すことによって、コントローラ14の傾きや回転を算出することが可能である。たとえば、加速度センサ60が静止した状態においては、常に重力加速度が加わっており、この重力加速度に対する各軸の傾きに応じた加速度が各軸ごとに検出される。具体的には、加速度センサ60が水平状態で静止しているとき、加速度センサのY軸に1Gの重力加速度が加わり、他の軸の重力加速度はほぼ0となる。次に、加速度センサ60の姿勢が水平状態より傾くと、加速度センサ60の各軸方向と重力方向との角度に応じて、重力加速度が加速度センサ60の各軸に分散され、このとき、加速度センサ60の各軸の加速度値が検出される。このような各軸ごとの加速度値に演算を加えることによって、重力方向に対する加速度センサ60の姿勢を算出することができる。
【0042】
なお、加速度センサ60としては、必要な操作信号の種類によっては、上下方向、左右方向および前後方向のうちいずれか2つの組合せの2軸でそれぞれ加速度を検出する2軸加速度センサが用いられてもかまわない。この実施例では、ユーザによるコントローラ14に対する回転操作のような操作状態を加速度センサ60で検出する。この実施例で実行されるゲームでは、後述する図5に示すように、ユーザはハウジング50の長手方向(Z軸方向)をおおよそ水平方向に向けた状態でコントローラ14を把持し、コントローラ14が当該Z軸方向の周りを移動するように腕を動かす。したがって、この実施例で、もし2軸加速度センサを使用するのであれば、XおよびY軸方向の加速度を検出する2軸加速度センサが適用され得る。
【0043】
加速度センサ60が検出した加速度を示すデータは、通信部58へ出力される。なお、加速度センサ60は、典型的には静電容量式の加速度センサが用いられ得る。加速度センサ60は、たとえば最大200フレーム/秒程度のサンプリング周期を有する。
【0044】
通信部58は、マイクロコンピュータ(Micro Computer:マイコン)62、メモリ64、無線モジュール66およびアンテナ68を含む。マイコン62は、処理の際にメモリ64を記憶領域として用いながら、取得したデータを無線送信する無線モジュール66を制御する。
【0045】
操作部52および加速度センサ60からマイコン62へ出力されたデータは、一時的にメモリ64に格納される。ここで、通信部58から受信ユニット18への無線送信は所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。マイコン62は、受信ユニット18への送信タイミングが到来すると、メモリ64に格納されているデータを操作データとして無線モジュール66へ出力する。無線モジュール66は、たとえばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ68から放射する。つまり、操作データは、無線モジュール66で微弱電波信号に変調されてコントローラ14から送信される。微弱電波信号はゲーム装置12側の受信ユニット18で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置12は操作データを取得することができる。ゲーム装置12のCPU26は、コントローラ14から取得した操作データに基づいてゲーム処理を行う。
【0046】
なお、図3に示したコントローラ14の形状や、各操作スイッチ52の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置に適宜変更され得る。
【0047】
上記コントローラ14を用いることによって、プレイヤは、各操作スイッチを押下する従来の一般的なゲーム操作に加えて、コントローラ14自身の位置を動かしたり、コントローラ14を回転させたりするというゲーム操作を行うことができる。
【0048】
この実施例では、回転操作によってプレイされるゲームが実行される。回転操作の方法の概要が図5に示されている。この図5では、プレイヤの右手で把持されたコントローラ14の回転操作の様子がプレイヤの右手側から見て描かれている。プレイヤは、コントローラ14をほぼ水平状態にして、つまり、Z軸方向がほぼ水平になるようにして把持している。そして、プレイヤは、コントローラ14がZ軸方向に平行な軸70の周りを移動するように、つまり、軸70の周りを回転運動するように、腕を回している。回転操作の軸70は、Z軸方向に平行であり、つまり、XおよびY軸に直交する方向を有する軸である。このように、回転操作とは、コントローラ14が所定の軸70の周りを移動(回転運動)するような操作のことをいう。
【0049】
なお、人間が腕を動かすので、コントローラ14が軸70の周りに完全な円運動をしなくてもよいし、コントローラ14のZ軸方向は水平方向から多少傾いてもよい。また、この実施例では、後述するように、画面上で水平なハンドルを回すことを想定したゲームが行われるので、プレイヤはコントローラ14をハンドルに見立てて水平状態にして把持しているだけである。他の実施例のゲームで、回転運動の軸70がたとえば鉛直方向であるような設定が行われる場合には、コントローラ14は理想的にはZ軸方向が鉛直方向になるような姿勢で把持されて水平面内で回転される。要するに、回転操作の状態をXおよびYの2軸の加速度で検出するような設定がなされている場合には、Z軸方向に平行な軸70の周りを回転するように(つまり、XY平面内で回転するように)、コントローラ14は操作される。
【0050】
回転操作が行われると、コントローラ14には回転軸70に垂直でかつ回転軸70から外側へ向かう方向に遠心力が働き、これによって加速度センサ60で加速度が検出される。この実施例では、Z軸方向を軸70とした回転操作であるため、遠心力によってXおよびY軸方向の加速度が検出される。この2軸の加速度には回転操作の操作状態が反映されているので、この実施例では、XおよびY軸の加速度を回転操作による入力と見なして、当該入力に基づいてゲーム処理を実行する。この実施例では、検出された2軸の加速度から回転操作状態をより的確に表す情報を抽出し、当該情報に基づいてゲーム処理を実行することによって、回転操作状態をより的確にゲーム処理に生かすようにしている。
【0051】
図6に、回転操作によって検出される加速度データからゲーム処理に使用するための入力データを算出する方法の概要が示される。まず、検出された2軸の加速度を2次元座標系の点に変換する。つまり、この実施例では、X軸およびY軸加速度に回転操作の状態が反映されているので、X軸加速度をx軸の成分、Y軸加速度をy軸の成分とするxy座標系を定義し、検出される加速度を当該xy座標系の点P(xp,yp)に変換する。
【0052】
なお、この実施例では、図5に示したように、コントローラ14の長手方向が水平方向に平行にされた状態で回転操作が行われるので、検出されるY軸加速度には重力加速度(−1.0G)が加算されている。そのため、変換時にはY軸加速度値から−1.0G分を減算する。回転操作が行われるまでは、点(0,0)に変換される。
【0053】
検出されるX軸加速度およびY軸加速度は、回転操作に応じて変化する。変換された点Pの履歴は、図6に示すように、原点Oから始まって原点Oの周りを回転するような軌道を描くこととなる。この変換された点の回転運動の軌跡は回転操作の状態を示していると見なせる。そこで、各点の角度を算出して、さらに角度の変化を算出する。
【0054】
各点の角度とは、定点(ここでは原点)と各点とを結ぶ線と、基準方向(ここではx軸)とがなす角度を意味する。図6では、現フレーム(フレーム番号n)における点(xn,yn)の角度はθnで示され、前フレーム(フレーム番号n−1)における点(xn−1,yn−1)の角度はθn−1で示される。したがって、角度変化Vnは、θnからθn−1を減算することによって算出される。角度変化Vnは、点Pの一定時間(1フレーム)における移動量ないし回転量であり、つまり、回転の速度を示している。
【0055】
また、所定の回転操作が行われているか否かを判定して、当該判定結果に応じて、角度変化を補正する。具体的には、コントローラ14が停止しているか否かを判定し、コントローラ14が停止されている場合には、角度変化はゼロに補正される。また、回転に急激な変化が発生したか否かを判定し、急激な変化の場合には、角度変化はゼロに補正される。急激な変化は、角度変化Vnの差分によって示される。角度変化の差分は、速度の変化であり、つまり、加速度を示す。したがって、回転の速度に一定以上の変化が見られる場合には、コントローラ14の回転操作に異常があったものと見なして、その角度変化のデータを無効にする。また、一定方向の回転であったか否かを判定し、一定方向の回転でない場合には、角度変化はゼロに補正される。現在から過去の所定時間内に、所定範囲外の角度変化が見られる場合、同じ方向への回転操作ではなくなったものと見なして、その角度変化のデータを無効にする。このようにすれば、単純に回転操作を行うだけではなく、同一方向へ回転操作を続けることによってゲームが進行されるので、さらにゲームの興趣性を高めることができる。
【0056】
所定の回転操作ではないと判定される場合には、角度変化はゼロに設定される。この補正後の角度変化を、「停止を考慮した角度変化」と呼ぶものとし、変数Tを用いて示す。一方、所定の回転操作が行われていると判定される場合には、算出された角度変化Vnがそのまま停止を考慮した角度変化Tとして設定される。
【0057】
そして、停止を考慮した角度変化Tに基づいて、ゲーム処理に使用する入力データとしての補正角度Vを算出する。補正角度Vは、2段階の補正をかけることによって算出される。
【0058】
まず、停止を考慮した角度変化Tを、次の数1に従って、補正された角度変化T´に補正する。
【0059】
[数1]
T´=T´+(T−T´×定数)
ここで、右辺のT´は、前フレームで算出された、補正された角度変化T´である。定数には適切な値(1より小さい正数)が選ばれる。なお、T´の初期値は0である。
【0060】
T´は、Tをなめらかに変化するように補正した角度変化である。この補正された角度変化T´に基づいて、補正角度Vを、次の数2に従って算出する。
【0061】
[数2]
V=V+T´
ここで、右辺のVは、前フレームで算出された補正角度Vである。
【0062】
このように、現フレームで算出された角度変化Vnそのものを使用せず、なめらかに変化するように補正した角度変化T´と前フレームにおいてゲーム処理に使用した補正角度Vとを基にして、現フレームにおける補正角度Vを算出するようにしている。このため、補正角度Vが滑らかに変化されることとなる。このような補正角度Vを用いることによって、回転操作の状態を適切かつ円滑にゲーム処理に反映させることができる。換言すれば、ゲーム処理における変化を、回転操作の状態に円滑に合わせていくことができ、たとえばオブジェクトの動きを滑らかに変化させることができる。
【0063】
一例として、図7に示すような手動シュレッダゲームが実行される。このゲームでは、プレイヤは、回転操作によってシュレッダのハンドルオブジェクト80を回転させ、紙オブジェクト82を裁断する。制限時間が設けられていて、プレイヤは制限時間が経過するまでに、所定回数以上ハンドルオブジェクト80を回転させることによって、所定長さの紙オブジェクト82を裁断しなければならない。制限時間は、数字で表示されてもよいが、図7では、時間経過に応じて導火線の長さが短くなり制限時間で爆発する爆弾によって表示されている。爆弾が爆発する前に紙の裁断を完了すれば、ゲームクリアとなる。
【0064】
操作対象としてのハンドルオブジェクト80は、その長手方向が画面の左右方向となるようにして水平に設置されている。そのため、このゲームでは、図5に示したように、コントローラ14は、そのZ軸方向がプレイヤの左右方向になるようにして把持される。ゲームプレイの際には、プレイヤは、画面に向かって、ハンドルオブジェクト80とコントローラ14を平行にする。そして、プレイヤは、Z軸方向に平行な軸70の周りを回転するように、コントローラ14を動かす。この回転操作に応じて、ハンドルオブジェクト80が回転され、紙オブジェクト82が上から下に移動して裁断される。このように、プレイヤは、画面に向かってコントローラ14を回転させることによって、画面上の紙を裁断することができる。コントローラ14の回転操作というこれまでに無い操作方法によって、プレイヤには新たな体感を与えることができる。
【0065】
また、図8に示すように、ハンドルオブジェクト80は補正角度Vに相当する分だけ仮想ゲーム空間内で回転され、紙オブジェクト82も補正角度Vに相当する分の長さだけ裁断される。このように、プレイヤの回転操作の状態に応じてゲームオブジェクトの動作が制御され、その結果が画面に表示されるので、今までに無い興趣性を備えたゲームを実現でき、今までに無い操作感やゲーム体験をプレイヤに与えることができる。
【0066】
図9にはメモリマップの一例が示される。メインメモリ28はプログラム記憶領域90およびデータ記憶領域92を含む。なお、図9にはメモリマップの一部が示されており、ゲームの進行に必要な他のプログラムおよびデータも、光ディスク20等から読み出されたりCPU26によって生成されたり取得されたりして、メインメモリ28に記憶される。図示は省略されるが、ゲーム画面を生成するプログラム、画面表示を制御するプログラム、サウンド出力を制御するプログラム、画像データおよびオブジェクトデータ等も記憶される。
【0067】
プログラム記憶領域90の記憶領域94には操作データ取得プログラムが記憶されている。このプログラムによって、コントローラ14からの操作データが、受信ユニット18およびコントローラI/F38を介してメインメモリ28に取得される。上述のように、コントローラ14は、ゲーム装置12における1フレーム(たとえば1/60秒)よりも短い周期で操作データを送信してくる。また、コントローラ14の加速度センサ60のサンプリング周期は、ゲーム装置12における1フレームよりも短い周期(たとえば1/200秒)に設定されており、コントローラ14の1回の送信データには複数の検出タイミングにおける加速度値が含まれる。したがって、この実施例では、ゲーム装置12は1フレームに複数個の操作情報(加速度値等)を含む操作データを取得することができる。CPU26は、複数個の操作情報を必要に応じて利用してゲーム処理を実行することができる。
【0068】
記憶領域96には角度算出プログラムが記憶されている。このプログラムによって、加速度に基づいて角度が算出される。具体的には、上述の図6に示したように、X軸加速度およびY軸加速度が2次元座標系の点に変換され、当該変換点と原点とを結ぶ線が基準方向(x軸)となす角度θが算出される。ゲーム処理は1フレームごとに行われるので、そのフレームを代表する角度θを算出する。また、上述のように、ゲーム装置12の1フレームに複数個の加速度値が検出されて取得されるので、各検出加速度ごとに角度θを算出してゲーム処理に利用することもできる。第nフレームの角度θnは、たとえば、第nフレームに取得された複数の加速度値から算出される各角度の平均値である。あるいは最大値もしくは最小値が採用されてもよい。
【0069】
記憶領域98には角度変化算出プログラムが記憶されている。現フレームの角度θと前フレームの角度θn−1との差分をとることによって、角度変化Vnが算出される。
【0070】
記憶領域100には停止判定プログラムが記憶される。このプログラムによって、コントローラ14の回転操作が停止されているか否かが判定される。たとえば、過去所定数のサンプリングデータを後述する操作データバッファ114から参照し、X軸加速度、Y軸加速度およびZ軸加速度の絶対値のそれぞれが所定の範囲以内であれば、停止と判定する。この実施例では、たとえば過去8回の検出タイミングにおける加速度値を、つまり、現在から過去の2−3フレームの間に取得された加速度値を参照するようにしている。
【0071】
記憶領域102には急変化判定プログラムが記憶されている。このプログラムによって、回転操作に急激な変化があったか否かが判定される。具体的には、上述したように、現フレームで算出された角度変化Vnと前フレームで算出された角度変化Vn−1との差分Anを算出し、当該差分Anが所定の範囲外であれば、急激な変化が生じているものと判定する。
【0072】
記憶領域104には回転方向判定プログラムが記憶されている。このプログラムによって回転操作の回転方向が判定される。具体的には、過去所定回数連続して同じ方向に回転しているか否かが判定され、同じ方向に回転していると判定される場合には、当該方向に回転しているものと見なす。同じ方向に回転していると見なすための条件は、或る検出タイミングにおける角度θとその直前の検出タイミングにおける角度θとの差分が所定の範囲内にあることである。この実施例では、過去8回の検出タイミングにおける加速度値(現在から過去の2−3フレーム分に取得された加速度値)を変換して算出した角度のそれぞれについて、直前の検出タイミングにおける角度との差分を算出し、すべての差分が所定の範囲内であるか否かが判定される。一例として、差分が0から45度の範囲内であれば、図6において反時計回りの回転と判断され、差分が−45から0度の範囲内であれば、図6において時計回りの回転と判断される。
【0073】
記憶領域106には角度補正プログラムが記憶されている。このプログラムによってゲーム処理に使用する補正角度Vが算出される。具体的には、上述の図6に示したように、まず、角度変化算出プログラムによって算出された角度変化Vnから、停止を考慮した角度変化Tが算出される。つまり、所定の回転操作が行われている場合には、TはVnであり、その他の場合には、Tは0である。所定の回転操作である条件は、この実施例では、コントローラ14が停止してないこと、急激な変化が起こっていないこと、回転方向が変化していないことである。また、この実施例では、回転方向が所定の方向であることも条件として設定される。図7および図8に示したように、シュレッダのハンドルオブジェクト80は、画面の奥行き側で下向きに回転される必要があり、これは、図6で言えば、時計回りの回転である。さらに、上述の数1に従って、補正された角度変化T´が算出される。そして、上述の数2に従って、補正された角度変化Tと前フレームで算出された補正角度Vに基づいて、補正角度Vが算出される。なお、Vの初期値は0である。
【0074】
記憶領域108にはオブジェクト制御プログラムが記憶されている。このプログラムによって、補正角度Vに基づいてオブジェクトの動作が制御される。この実施例では、上述の図8に示したように、ハンドルオブジェクト80の回転が補正角度Vに応じて制御され、紙オブジェクト82の移動および裁断も補正角度Vに応じて制御される。
【0075】
記憶領域110には回転回数判定プログラムが記憶されている。このプログラムによって、回転操作の回転回数が所定の閾値を超えたか否かが判定される。回転回数は、加速度値を変換した点の回転の回数でもあり、したがって、補正角度Vの累計が360度を超えるごとに1ずつカウントすることによって回転回数が算出される。
【0076】
記憶領域112には制限時間判定プログラムが記憶されている。このプログラムによって、ゲーム開始からの経過時間が所定の制限時間内であるか否かが判定される。上述のように、この実施例では、制限時間内に紙オブジェクト82の裁断を完了すること、つまり、制限時間内に所定回数だけ回転操作を行うことがゲームクリア条件であり、回転回数判定プログラムおよび制限時間判定プログラムによってゲームクリア条件が満足されたか否かが判定されている。
【0077】
データ記憶領域92の記憶領域114は操作データバッファであり、コントローラ14から送信される操作データが記憶される。操作データは、加速度センサ60で検出されたX、Y、Z軸の加速度値を示す加速度データを含む。なお、図9では省略されるが、操作部52の各ボタンの操作の有無を示すボタン操作データも含まれる。上述のように、ゲーム装置12における1フレームの間に、コントローラ14から複数個の操作情報を含む操作データを少なくとも1回受信するので、受信された操作データが順次この記憶領域94に蓄積される。たとえば、コントローラ14における60個分のサンプリングデータが蓄積される。
【0078】
記憶領域116には座標履歴が記憶されている。上述の角度算出プログラムによって、操作データバッファ114から取得されたX軸加速度値およびY軸加速度値が2次元座標系の点に変換されるので、変換された点の座標が記憶される。たとえば60個のサンプリングデータに相当する数の点の履歴が記憶される。
【0079】
記憶領域118には角度履歴が記憶されている。上述の角度算出プログラムによって算出された点の角度θの履歴が記憶される。各フレームごとに、当該フレームを代表する1つの角度θnが記憶される。また、各フレームで取得される複数の点のそれぞれの角度も記憶されてよい。
【0080】
記憶領域120には角度変化履歴が記憶される。上述の角度変化算出プログラムによって算出された角度変化Vnの履歴が記憶される。現フレームの角度変化Vnは、現フレーム(第nフレーム)の角度θnと前フレーム(第n−1フレーム)の角度θn−1との差分によって算出される。
【0081】
記憶領域122には補正角度履歴が記憶される。上述の補正角度算出プログラムによって算出された補正角度Vの履歴が記憶される。現フレームの補正角度Vを算出する際には、この記憶領域122に記憶されている前フレームの補正角度Vが参照される。
【0082】
記憶領域124には回転回数カウンタが記憶される。上述のように、補正角度Vの累計が360度を超えるごとに、回転回数に1だけ加算される。
【0083】
記憶領域126には経過時間カウンタが記憶される。経過時間はたとえば経過フレーム数であり、1フレームごとに経過時間に1だけ加算される。
【0084】
図10および図11にはゲーム装置12の動作の一例が示される。まず、ステップS1で、CPU26は初期設定を行う。具体的には、メインメモリ28がクリアされ、必要なプログラムおよびデータが光ディスク20からメインメモリ28に読み出される。また、各種変数やフラグに初期値が設定される。
【0085】
続くステップS3からステップS41の処理は、ステップS39またはS41でゲームオーバまたはゲームクリアが判断されるまで、1フレームごとに実行される。CPU26は、ステップS3で、コントローラI/F38を介して操作データを操作データバッファ114に取得し、操作データから現フレームにおける加速度データを取得する。
【0086】
続いて、ステップS5で、CPU26は、X軸加速度およびY軸加速度をそれぞれx成分およびy成分とするxy座標系の点に変換する(図6参照)。1フレームあたり複数個の加速度データが取得されるので、変換によって複数の点が得られる。なお、この実施例では、加速度センサ60は常に重力加速度を検出し、また、図5に示すように、Y軸正方向が鉛直上方向となる状態でコントローラ14は回転操作されることが前提であるので、検出されるY軸加速度に1.0Gを加算する。変換された各点の座標は、座標履歴記憶領域116に記憶される。
【0087】
ステップS7では、CPU26は変換された点の角度θnを算出する。上述のように、1フレームあたり複数の点に変換されるので、各点の角度θが算出され、また、現フレームを代表する角度θnが、たとえば平均、最大または最小を取ることによって算出される。算出された角度は角度履歴記憶領域118に記憶される。
【0088】
そして、ステップS9では、コントローラ14が停止しているか否かを判定する。たとえば、過去8個分の加速度情報を操作データバッファ114から読み出し、X、YおよびZ軸加速度の絶対値のすべてが、それぞれの所定の範囲内の値であるか否かを判定する。ステップS9で“YES”の場合、コントローラ14が停止しており、所定の回転操作が行われていないと見なせるので、処理は図11のステップS27に進む。
【0089】
一方、ステップS9で“NO”の場合には、CPU26は、ステップS11で角度変化Vnを、現フレームにおける角度θnと前フレームにおける角度θn−1の差分を取ることによって算出する。算出した角度変化Vnは角度変化履歴記憶領域120に記憶される。
【0090】
続くステップS13で、CPU26は角度変化Vnの差分Anを、現フレームにおける角度変化Vnと前フレームにおける角度変化Vn−1とに基づいて算出する。
【0091】
そして、ステップS15で、CPU26は、差分Anは所定の範囲内であるか否かを判定する。つまり、ここでは、回転操作において急激な変化が生じていないことを確認している。ステップS15で“NO”の場合、つまり、急激な変化が生じていると見なせる場合には、所定の回転操作が行われていないので、処理は図11のステップS27に進む。
【0092】
一方、ステップS15で“YES”であれば、続くステップS17およびS19の処理で回転方向が判定される。ステップS17では、CPU26は、現在から過去の連続する所定個数の角度(たとえば8個分のサンプリング時に対応する角度)のそれぞれについて、直前のサンプリング時に対応する角度との差分を算出する。続いて、ステップS19で、CPU26はすべての差分が所定の範囲内であるか否かを判断する。つまり、過去の所定時間の間継続的に同じ方向の回転が行われているか否かを判定する。ステップS19で“NO”の場合、一定方向の回転操作が行われていないと見なせるので、処理は図11のステップS27に進む。
【0093】
一方、ステップS19で“YES”の場合、つまり、同じ方向の回転である場合には、CPU26は、ステップS21で差分の示す方向を現フレームの回転方向に設定する。差分の符号が正であれば、回転方向は図6で反時計回りであり、差分の符号が負であれば、図6で時計回りである。ステップS21を終了すると、処理は図11のステップS23に進む。
【0094】
図11のステップS23では、CPU26は、回転方向は所定方向であるか否かを判断する。この実施例の手動シュレッダゲームでは、所定方向の回転のみ許可されているので、この判定が行われる。ステップS23で“YES”の場合、処理はステップS25へ進み、“NO”の場合にはステップS27へ進む。なお、別のゲームでは、両方向の回転を許容するようにしてもよく、つまり、ステップS23の判定を行わないようにしてもよい。
【0095】
ステップS25では、CPU26は、停止を考慮した角度変化を示す変数Tに、現フレームで算出された角度変化Vnを設定する。これによって、現フレームのゲーム処理には、現フレームで取得された回転操作による角度変化が反映されることとなる。
【0096】
一方、ステップS27では、CPU26は、停止を考慮した角度変化を示す変数Tにゼロを設定する。つまり、所定の回転操作が行われていないと見なせる場合には、現フレームのゲーム処理には、現フレームで取得された回転操作による角度変化は考慮されない。
【0097】
続いて、ステップS29では、CPU26は補正角度Vを算出する。具体的には、まず、補正された角度変化T´を、上述の数1に従って、停止を考慮した角度変化Tと前フレームの補正された角度変化T´とに基づいて算出する。そして、補正角度Vを、補正された角度変化T´と前フレームで算出された補正角度Vに基づいて算出する。補正角度Vは上述の数2に従って算出される。算出された補正角度Vは、補正された角度変化T´とともに補正角度履歴記憶領域122に記憶される。
【0098】
この補正角度Vに応じたゲーム処理が実行される。すなわち、ステップS31では、CPU26は、図8に示したように、シュレッダのハンドルオブジェクト80と紙オブジェクト82をそれぞれV相当分だけ動かす。
【0099】
また、ステップS33で、CPU26は回転回数を算出し、回転回数カウンタ記憶領域124に記憶する。具体的には、補正角度Vを累計し、360度ごとに回転回数に1を加算する。
【0100】
さらに、ステップS35では、CPU26は経過時間をカウントし、経過時間カウンタ記憶領域126に記憶する。たとえばゲーム開始から経過したフレーム数が記憶される。なお、この経過時間カウンタ記憶領域126の情報に基づいて、経過時間ないし残り時間を示す画像(図7の爆弾の導火線)が生成されることとなる。
【0101】
そして、ステップS37で、CPU26は、GPU32を用いてゲーム処理結果が反映されたゲーム画像を生成して、図7に示すような画面をモニタ16に表示する。
【0102】
続いて、ステップS39で、CPU26は経過時間は制限時間内であるか否かを判定する。ステップS39で“YES”の場合、CPU26は、さらにステップS41で回転回数が所定の閾値を超えたか否かを判定する。ステップS41で“NO”の場合、つまり、ゲームクリア条件が満足されていない場合には、ゲームを続行すべく、処理は図10のステップS3に戻る。
【0103】
一方、ステップS41で“YES”の場合、つまり、ゲームクリア条件が満足された場合には、CPU26は、ステップS43でゲームクリア処理を実行して、たとえばゲームクリアを示す画面を表示する。また、ステップS39で“NO”の場合、つまり、ゲームオーバ条件が満足された場合には、CPU26は、ステップS45でゲームオーバ処理を実行して、たとえばゲームオーバを示す画面を表示する。ステップS43またはS45を終了すると、このゲーム処理を終了する。
【0104】
この実施例によれば、コントローラ14に設けられた加速度センサ60によって検出される2軸の加速度を2次元座標系の点に変換し、当該点の角度の変化から補正角度を算出し、当該補正角度に基づいてゲーム処理が実行されるようにした。つまり、検出される2軸加速度を成分とする点の回転する角度を算出することによって、コントローラ14の回転操作の状態を検出し、ゲーム処理に使用するようにした。したがって、コントローラ14の回転操作に応じたゲーム処理を実行できるので、今までに無い興趣性を備えたゲームを実現できる。また、コントローラ14を回転させるという今までに無い操作方法によってゲームをプレイできるので、プレイヤに新しい体感を与えることができる。
【0105】
なお、上述の実施例では、図5に示したように、コントローラ14(加速度センサ60)のZ軸方向に平行な軸70の周りに移動する回転操作によってプレイされるゲームを実行するようにしていた。そして、当該回転操作によって加速度センサ60のXおよびY軸方向に働く遠心力に由来する加速度を検出するようにしていた。しかしながら、回転操作方法はこれに限定されるものではない。たとえば、Y軸方向に平行な軸の周りを移動するような回転操作が要求されるゲームを実行するようにしてもよい。この場合には、XZ平面内の回転操作であるので、XおよびZ軸方向の加速度を取得してゲーム処理に使用する。あるいは、X軸方向に平行な軸周りを移動するような回転操作によってプレイされるゲームであってもよい。この場合には、YZ平面内の回転であるため、YおよびZ軸方向の加速度を取得してゲーム処理を実行する。
【図面の簡単な説明】
【0106】
【図1】この発明の一実施例のゲームシステムの一例を示す外観図である。
【図2】図1のゲーム装置の電気的構成の一例を示すブロック図である。
【図3】図1のコントローラの一例を示す図解図であり、(A)は後方上側から見た斜視図であり、(B)は後方下側から見た斜視図である。
【図4】図1のコントローラの電気的構成の一例を示すブロック図である。
【図5】コントローラの回転操作の方法を示す図解図である。
【図6】回転操作によって検出される加速度データからゲーム処理に使用するための入力データを算出する方法の概要を示す図解図である。
【図7】ゲーム画面の一例を示す図解図である。
【図8】補正角度に応じて制御されるオブジェクトの一例を示す図解図である。
【図9】メモリマップの一例を示す図解図である。
【図10】ゲーム装置の動作の一例の一部を示すフロー図である。
【図11】図10の続きを示すフロー図である。
【符号の説明】
【0107】
10 …ゲームシステム
12 …ゲーム装置
14 …コントローラ
16 …モニタ
18 …受信ユニット
20 …光ディスク
26 …CPU
28 …メインメモリ
58 …通信部
60 …加速度センサ
【技術分野】
【0001】
この発明は、ゲームプログラムおよびゲーム装置に関し、特にたとえば、互いに直交する少なくとも2軸の加速度センサを備えたゲームコントローラが2軸にさらに直交する軸の回りを移動されるような回転操作によってプレイされるゲームのための、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
近年、加速度センサを備えるゲームコントローラによってゲームがプレイされることがよく知られている。関連技術の一例がたとえば特許文献1および2に開示されている。特許文献1に記載の技術では、普通一般によく見られるようなゲームコントローラに2軸の加速度センサが設けられ、このコントローラの傾きが検出されることによってゲームが行われる。
【0003】
また、特許文献2に記載の技術では、釣具などの道具を模した形態に形成されたコントローラの内部に加速度センサが設けられ、このコントローラの振り動作の強さや傾きが検出されることによってゲームが行われる。
【特許文献1】特開2005−471号公報
【特許文献2】特開平10−214155号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1では、2軸加速度センサが水平に配置され、2軸の周りの回転角度の検出によってコントローラの傾きを検出することのみ開示されているので、今まで長年採用されてきた操作形態に基づいて、両手でコントローラを把持して、傾けたり、向きを変化させたりする操作ができるに過ぎない。そのため、今までと大幅に異なるような操作環境を備えるゲームを提供することはできない。
【0005】
また、特許文献2に記載の技術では、昨今見られるようになった、振りの動作を取り入れた体感的なゲームを提供することはできる。しかし、ゲームコントローラそのものを回転操作するような形態でゲームをプレイするような、新たな体感性を有するゲームを提供することはできない。
【0006】
それゆえに、この発明の主たる目的は、ゲームコントローラを今までにない方法で操作することによって、プレイヤに新しい体感を与えることができる、ゲームプログラムおよびゲーム装置を提供することである。
【0007】
この発明の更なる目的は、ゲームコントローラを所定の軸の周りを移動させるような操作に応じたゲーム処理を行うことによって、今までに無い興趣性を備えたゲームを実現できる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0008】
第1の発明(請求項1の発明)は、互いに直交する少なくとも2軸の加速度を検出する加速度センサを有する操作手段を備えるゲーム装置において、操作手段が2軸に直交する軸の周りを移動される回転操作に応じてゲーム処理を行うためのゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサに、取得ステップ、変換ステップ、角度算出ステップ、角度変化算出ステップ、角度補正ステップ、およびゲーム処理ステップを実行させる。取得ステップは、加速度センサによって検出される2軸の加速度を取得する。変換ステップは、2軸の加速度を2次元座標系の点に変換する。角度算出ステップは、変換された点と基準点とを結ぶ線が基準方向となす角度を算出する。角度変化算出ステップは、角度算出ステップで算出される今回の角度と前回の角度との角度変化を算出する。角度補正ステップは、角度変化算出ステップで算出された角度変化と前回の補正角度に基づいて補正角度を算出する。ゲーム処理ステップは、角度補正ステップで算出された補正角度に基づいてゲーム処理を行う。
【0009】
請求項1の発明では、ゲームプログラムは、ゲーム装置(12:後述する実施例で相当する参照符号。以下同じ。)のプロセサ(26)に以下に説明する各ステップを実行させる。なお、ゲーム装置は、加速度センサ(60)を有する操作手段(14)を備えていて、加速度センサは互いに直交する少なくとも2軸の加速度を検出する。ゲームプログラムは、2軸に直交する軸(70)の周りを操作手段が移動されるような回転操作に応じてゲーム処理を行うためのプログラムである。取得ステップ(S3)では、加速度センサによって検出される2軸の加速度が取得される。変換ステップ(S5)では、2軸の加速度が2次元座標系(xy座標系)の各軸の成分(座標)とする点に変換される。回転操作では、2軸の作る平面内の回転が行われるので、遠心力に由来する加速度が検出される。したがって、変換された点の軌跡は回転運動のような軌道を描き、また回転操作の状態を示している。角度算出ステップ(S7)では、変換された点と基準点(たとえば2次元座標系の原点)とを結ぶ線が基準方向(たとえばx軸)となす角度が算出される。角度変化算出ステップ(S11)では、今回算出された角度と前回算出された角度との角度変化(Vn)が算出される。角度補正ステップ(S29)では、今回算出された角度変化と前回の補正角度に基づいて、今回の補正角度(V)が算出される。なお、補正角度の算出に使用される角度変化は、必要に応じて補正され、たとえば所定の回転操作が行われていると判定される場合には、算出された角度変化が使用され、そうでない場合には、たとえばゼロに補正される。さらに、この角度変化(T)をなめらかに変化するように補正した角度変化(T´)が算出される。そして、補正角度は、補正された角度変化と前回の補正角度に基づいて(実施例では数2に従って)算出される。補正角度は、角度変化に前回の補正角度をも考慮して算出されるので、このような補正角度を用いることによって、回転操作の状態を適切かつ円滑にゲーム処理に反映させることができる。ゲーム処理ステップ(S31、S33、S37)では、補正角度に基づいてゲーム処理が行われ、たとえば、補正角度に相当する分だけオブジェクトの動作が制御される。
【0010】
請求項1の発明によれば、2軸の加速度を成分とする点の角度変化を算出することによって、操作手段の回転操作による回転の状態を検出し、ゲーム処理に使用するようにした。したがって、操作手段の回転操作に応じてゲーム処理が行われるので、今までに無い興趣性を備えたゲームを実現し提供することができる。また、操作手段を回転操作するので、新しい体感ができるゲームをプレイヤに提供することができる。
【0011】
請求項2の発明は、請求項1の発明に従属し、プロセサに、角度算出ステップで算出された角度変化に基づいて回転方向が過去と同一であるか否かを判定する回転方向判定ステップをさらに実行させる。角度補正ステップは、回転方向判定ステップで回転方向が同一でないと判定されたとき、角度変化をゼロと見なして補正角度を算出する。
【0012】
請求項2の発明では、回転方向判定ステップ(S17、S19)では、角度変化に基づいて回転方向が過去と同一であるか否かが判定される。角度補正ステップ(S27、S29)では、回転方向が同一でないと判定されるとき、角度変化をゼロと見なして、補正角度が算出される。したがって、同一方向への回転操作が行われていないときには当該回転操作がゲーム処理に反映されなくなる。つまり、過去と同一方向へ回転操作が行われる場合には、当該回転操作がゲーム処理に反映されることとなる。単純に回転操作を行うだけではなく、同一方向へ回転操作を続けることによってゲームが進行されるので、さらに興趣性を高めることができる。
【0013】
請求項3の発明は、請求項1または2の発明に従属し、ゲーム処理ステップは、補正角度に基づいて動作したオブジェクトを表示手段に表示する表示制御ステップを含む。
【0014】
請求項3の発明では、表示制御ステップ(S31、S37)では、補正角度に基づいて動作の制御されたオブジェクト(80、82)が表示手段(16)に表示される。したがって、回転操作に応じて画面上のオブジェクトが動作するので、興趣性の高いゲームを実現できる。
【0015】
請求項4の発明は、請求項1ないし3のいずれかの発明に従属し、ゲーム処理ステップは、補正角度に基づいてゲームクリア条件が満足されたか否かを判定するゲームクリア判定ステップを含む。
【0016】
請求項4の発明では、ゲームクリア判定ステップ(S39、S41)では、補正角度に基づいてゲームクリア条件が満足されたか否かが判定される。したがって、回転操作に応じてゲームがクリアされたりされなかったりするという興趣性に優れたゲームを実現できる。
【0017】
請求項5の発明は、請求項4の発明に従属し、ゲーム処理ステップは、補正角度に基づいて回転操作の回転回数を算出する回転回数算出ステップを含み、ゲームクリア判定ステップは、ゲームクリア条件として、回転回数が制限時間内に所定の閾値以上になったか否かを判定する。
【0018】
請求項5の発明では、回転回数算出ステップ(S33)では、補正角度に基づいて回転操作の回転回数が算出される。ゲームクリア判定ステップでは、ゲームクリア条件として、回転回数が制限時間内に所定の閾値以上になったか否かが判定される。したがって、制限時間内に所定の回転操作を行うことが必要であるので、興趣性をさらに高めたゲームを実現できる。
【0019】
第2の発明(請求項6の発明)は、互いに直交する少なくとも2軸の加速度を検出する加速度センサを有する操作手段を備え、操作手段が2軸に直交する軸の周りを移動される回転操作に応じてゲーム処理を行うゲーム装置である。ゲーム装置は、取得手段、変換手段、角度算出手段、角度変化算出手段、角度補正手段、およびゲーム処理手段を備える。取得手段は、加速度センサによって検出される2軸の加速度を取得する。変換手段は、2軸の加速度を2次元座標系の点に変換する。角度算出手段は、変換された点と基準点とを結ぶ線が基準方向となす角度を算出する。角度変化算出手段は、角度算出手段によって算出される今回の角度と前回の角度との角度変化を算出する。角度補正手段は、角度変化算出手段によって算出された角度変化と前回の補正角度に基づいて補正角度を算出する。ゲーム処理手段は、角度補正手段で算出された補正角度に基づいてゲーム処理を行う。
【0020】
請求項6の発明は、第1の発明のゲームプログラムに対応するゲーム装置であり、第1の発明と同様な効果を奏する。
【発明の効果】
【0021】
この発明によれば、操作手段に設けられた加速度センサによって検出される2軸の加速度を2次元座標系の点に変換し、当該点の角度の変化から補正角度を算出し、当該補正角度に基づいてゲーム処理が実行されるようにした。したがって、操作手段の回転操作の状態を検出して、これに応じたゲーム処理を実行できるので、今までに無い興趣性を備えたゲームを実現できる。また、操作手段を回転させるという今までに無い操作方法によってゲームをプレイできるので、プレイヤに新しい体感を与えることができる。
【0022】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0023】
図1を参照して、この実施例のゲームシステム10はゲーム装置12およびコントローラ14を含む。ゲーム装置12は、据置型ゲーム装置であり、家庭用テレビジョン受像機のようなディスプレイないしモニタ16にケーブルを介して接続される。コントローラ14は、プレイヤないしユーザによって操作される操作装置であり、ゲーム装置12に操作データを与える。
【0024】
ゲーム装置12には、接続端子を介して受信ユニット18が接続される。受信ユニット18は、コントローラ14から無線送信される操作データを受信する。具体的には、コントローラ14は、たとえばBluetooth(ブルートゥース)(登録商標)のような無線通信技術を用いて、受信ユニット18が接続されたゲーム装置12へ操作データを送信する。
【0025】
また、ゲーム装置12には、当該ゲーム装置12に対して交換可能に用いられる情報記憶媒体の一例である光ディスク20が脱着される。ゲーム装置12の上部主面には、当該ゲーム装置12の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置12上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク20の脱着が可能となる。また、ゲーム装置12には、外部メモリカード22が必要に応じて着脱自在に装着される。当該メモリカード22に搭載されるフラッシュメモリ等にはセーブデータ等が記憶される。
【0026】
ゲーム装置12は、光ディスク20に記憶されたゲームプログラムを実行することによって、その結果をゲーム画像としてモニタ16に表示する。なお、ゲーム装置12は、外部メモリカード22に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、当該ゲーム画像をモニタ16に表示することもできる。また、モニタ16に備えられるスピーカ24(図2参照)からはゲームサウンドが出力される。そして、プレイヤは、コントローラ14を操作することによって、仮想ゲームをプレイする。
【0027】
図2にはゲーム装置12の電気的構成の一例が示される。ゲーム装置12は、各種プログラムを実行するたとえばリスク(RISC)CPU(セントラルプロセッシングユニット)26を含む。CPU26は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ28等のメモリの初期化等を行った後、光ディスク20に記憶されているゲームプログラムおよびデータをロードし、当該ゲームプログラムに従ってゲーム処理を行う。
【0028】
CPU26には、メモリコントローラ30を介して、GPU(Graphics Processing Unit)32、メインメモリ28、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)36が接続される。また、メモリコントローラ30には、所定のバスを介して、コントローラI/F(インターフェース)38、ビデオI/F40、外部メモリI/F42、オーディオI/F44、およびディスクI/F46が接続され、それぞれ受信ユニット18、モニタ16、外部メモリカード22、スピーカ24、およびディスクドライブ48が接続されている。
【0029】
GPU32は、CPU26の命令に従って画像処理を行う。GPU32は、たとえば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ28の一部の記憶領域を用いて画像処理を行う。GPU32は、表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ30およびビデオI/F40を介してモニタ16に出力する。
【0030】
メインメモリ28は、CPU26によって使用される記憶領域であり、CPU26の処理に必要なゲームプログラムおよびデータを適宜記憶する。たとえば、メインメモリ28は、CPU26によって光ディスク20から読み出されたゲームプログラムや各種データ等を記憶する。
【0031】
DSP34はサウンドプロセサとして機能し、DSP34にはサウンドデータ等を記憶するためのARAM36が接続される。ARAM36は、DSP34が所定の処理(たとえば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM36に記憶されたサウンドデータ(音波形データ)を読み出し、CPU26からの音制御データと当該音波形データ等に基づいて音出力のためのデータを生成し、メモリコントローラ30およびオーディオI/F44を介してモニタ16に備えられるスピーカ24から音を出力させる。
【0032】
メモリコントローラ30は、データ転送を統括的に制御し、メモリコントローラ30には上述した各種I/Fが接続される。コントローラI/F38は、たとえば4つのコントローラI/Fで構成され、それらが有するコネクタを介して外部機器とゲーム装置12とを通信可能に接続する。たとえば、受信ユニット18は、上記コネクタと嵌合し、コントローラI/F38を介してゲーム装置12と接続される。上述したように受信ユニット18は、コントローラ14からの操作データを受信し、コントローラI/F38を介して当該操作データをCPU26へ出力する。なお、他の実施例では、ゲーム装置12には、受信ユニット18に代えて、コントローラ14から送信されてくる操作データを受信する受信モジュールがその内部に設けられてよい。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU26に出力される。
【0033】
ビデオI/F40にはモニタ16が接続され、モニタ16にはビデオI/F40からの画像信号によってゲーム画像が表示される。外部メモリI/F42には外部メモリカード22が接続され、CPU26は、メモリコントローラ30を介して外部メモリカード22に設けられたフラッシュメモリ等にアクセスする。
【0034】
オーディオI/F44にはモニタ16に内蔵されるスピーカ24が接続される。オーディオI/F44は、DSP34によってARAM36から読み出されたり生成されたりしたサウンドデータやディスクドライブ48から直接出力されるサウンドデータに対応するオーディオ信号をスピーカ24に与える。スピーカ24からは当該サウンドが出力される。
【0035】
ディスクI/F46には、ディスクドライブ48が接続される。ディスクドライブ48は、所定の読み出し位置に配置された光ディスク20に記憶されているデータを読み出す。読み出されたデータはディスクI/F46およびメモリコントローラ30等を介してメインメモリ28に書き込まれ、あるいは、オーディオI/F44に出力される。
【0036】
図3にはコントローラ14の外観の一例が示される。図3(A)は、コントローラ14の上面後方から見た斜視図であり、図3(B)は、コントローラ14を下面後方から見た斜視図である。
【0037】
コントローラ14は、たとえばプラスチック成型によって形成されたハウジング50を有している。ハウジング50は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング50は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、コントローラ14を用いて、それに設けられたボタンを押下するゲーム操作を行うことと、コントローラ14自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。たとえば、或るゲームでは、プレイヤは、長手方向を軸としてコントローラ14を回転させることによって、操作対象に移動動作を行わせることができる。
【0038】
ハウジング50には、複数の操作ボタンが設けられる。ハウジング50の上面には、十字キー52a、Xボタン52b、Yボタン52c、Aボタン52d、セレクトスイッチ52e、メニュースイッチ52f、およびスタートスイッチ52gが設けられる。一方、ハウジング50の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン52iが設けられる。これらの各ボタン(スイッチ)52は、ゲーム装置12が実行するゲームプログラムに応じてそれぞれの機能が割り当てられる。また、ハウジング50の上面には、遠隔からゲーム装置12本体の電源をオン/オフするための電源スイッチ52hが設けられる。
【0039】
また、ハウジング50の後面にはコネクタ54が設けられている。コネクタ54は、たとえば32ピンのエッジコネクタであり、コントローラ14に他の機器を接続するために利用される。また、ハウジング50上面の後面側には複数のLED56が設けられる。ここで、コントローラ14には、他のコントローラ14と区別するためにコントローラ種別(番号)が付与される。コントローラ14からゲーム装置12へ操作データを送信する際、当該コントローラ14に現在設定されているコントローラ種別に対応する1つのLED56が点灯する。
【0040】
図4にはコントローラ14の電気的構成が示される。コントローラ14は、操作部52(各操作ボタン52a−52h)の他に、その内部に通信部58および加速度センサ60を備えている。
【0041】
加速度センサ60は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。加速度センサ60は、少なくとも2つの互いに直交する軸方向の加速度を検出する。たとえば、2軸または3軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度を、各軸に沿った直線成分の加速度としてそれぞれ検出する。具体的には、この実施例では、3軸加速度センサが適用され、コントローラ14の上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸でそれぞれ加速度を検知する。また、この加速度センサ60の各軸ごとに検出される加速度に所定の演算処理を施すことによって、コントローラ14の傾きや回転を算出することが可能である。たとえば、加速度センサ60が静止した状態においては、常に重力加速度が加わっており、この重力加速度に対する各軸の傾きに応じた加速度が各軸ごとに検出される。具体的には、加速度センサ60が水平状態で静止しているとき、加速度センサのY軸に1Gの重力加速度が加わり、他の軸の重力加速度はほぼ0となる。次に、加速度センサ60の姿勢が水平状態より傾くと、加速度センサ60の各軸方向と重力方向との角度に応じて、重力加速度が加速度センサ60の各軸に分散され、このとき、加速度センサ60の各軸の加速度値が検出される。このような各軸ごとの加速度値に演算を加えることによって、重力方向に対する加速度センサ60の姿勢を算出することができる。
【0042】
なお、加速度センサ60としては、必要な操作信号の種類によっては、上下方向、左右方向および前後方向のうちいずれか2つの組合せの2軸でそれぞれ加速度を検出する2軸加速度センサが用いられてもかまわない。この実施例では、ユーザによるコントローラ14に対する回転操作のような操作状態を加速度センサ60で検出する。この実施例で実行されるゲームでは、後述する図5に示すように、ユーザはハウジング50の長手方向(Z軸方向)をおおよそ水平方向に向けた状態でコントローラ14を把持し、コントローラ14が当該Z軸方向の周りを移動するように腕を動かす。したがって、この実施例で、もし2軸加速度センサを使用するのであれば、XおよびY軸方向の加速度を検出する2軸加速度センサが適用され得る。
【0043】
加速度センサ60が検出した加速度を示すデータは、通信部58へ出力される。なお、加速度センサ60は、典型的には静電容量式の加速度センサが用いられ得る。加速度センサ60は、たとえば最大200フレーム/秒程度のサンプリング周期を有する。
【0044】
通信部58は、マイクロコンピュータ(Micro Computer:マイコン)62、メモリ64、無線モジュール66およびアンテナ68を含む。マイコン62は、処理の際にメモリ64を記憶領域として用いながら、取得したデータを無線送信する無線モジュール66を制御する。
【0045】
操作部52および加速度センサ60からマイコン62へ出力されたデータは、一時的にメモリ64に格納される。ここで、通信部58から受信ユニット18への無線送信は所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。マイコン62は、受信ユニット18への送信タイミングが到来すると、メモリ64に格納されているデータを操作データとして無線モジュール66へ出力する。無線モジュール66は、たとえばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ68から放射する。つまり、操作データは、無線モジュール66で微弱電波信号に変調されてコントローラ14から送信される。微弱電波信号はゲーム装置12側の受信ユニット18で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置12は操作データを取得することができる。ゲーム装置12のCPU26は、コントローラ14から取得した操作データに基づいてゲーム処理を行う。
【0046】
なお、図3に示したコントローラ14の形状や、各操作スイッチ52の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置に適宜変更され得る。
【0047】
上記コントローラ14を用いることによって、プレイヤは、各操作スイッチを押下する従来の一般的なゲーム操作に加えて、コントローラ14自身の位置を動かしたり、コントローラ14を回転させたりするというゲーム操作を行うことができる。
【0048】
この実施例では、回転操作によってプレイされるゲームが実行される。回転操作の方法の概要が図5に示されている。この図5では、プレイヤの右手で把持されたコントローラ14の回転操作の様子がプレイヤの右手側から見て描かれている。プレイヤは、コントローラ14をほぼ水平状態にして、つまり、Z軸方向がほぼ水平になるようにして把持している。そして、プレイヤは、コントローラ14がZ軸方向に平行な軸70の周りを移動するように、つまり、軸70の周りを回転運動するように、腕を回している。回転操作の軸70は、Z軸方向に平行であり、つまり、XおよびY軸に直交する方向を有する軸である。このように、回転操作とは、コントローラ14が所定の軸70の周りを移動(回転運動)するような操作のことをいう。
【0049】
なお、人間が腕を動かすので、コントローラ14が軸70の周りに完全な円運動をしなくてもよいし、コントローラ14のZ軸方向は水平方向から多少傾いてもよい。また、この実施例では、後述するように、画面上で水平なハンドルを回すことを想定したゲームが行われるので、プレイヤはコントローラ14をハンドルに見立てて水平状態にして把持しているだけである。他の実施例のゲームで、回転運動の軸70がたとえば鉛直方向であるような設定が行われる場合には、コントローラ14は理想的にはZ軸方向が鉛直方向になるような姿勢で把持されて水平面内で回転される。要するに、回転操作の状態をXおよびYの2軸の加速度で検出するような設定がなされている場合には、Z軸方向に平行な軸70の周りを回転するように(つまり、XY平面内で回転するように)、コントローラ14は操作される。
【0050】
回転操作が行われると、コントローラ14には回転軸70に垂直でかつ回転軸70から外側へ向かう方向に遠心力が働き、これによって加速度センサ60で加速度が検出される。この実施例では、Z軸方向を軸70とした回転操作であるため、遠心力によってXおよびY軸方向の加速度が検出される。この2軸の加速度には回転操作の操作状態が反映されているので、この実施例では、XおよびY軸の加速度を回転操作による入力と見なして、当該入力に基づいてゲーム処理を実行する。この実施例では、検出された2軸の加速度から回転操作状態をより的確に表す情報を抽出し、当該情報に基づいてゲーム処理を実行することによって、回転操作状態をより的確にゲーム処理に生かすようにしている。
【0051】
図6に、回転操作によって検出される加速度データからゲーム処理に使用するための入力データを算出する方法の概要が示される。まず、検出された2軸の加速度を2次元座標系の点に変換する。つまり、この実施例では、X軸およびY軸加速度に回転操作の状態が反映されているので、X軸加速度をx軸の成分、Y軸加速度をy軸の成分とするxy座標系を定義し、検出される加速度を当該xy座標系の点P(xp,yp)に変換する。
【0052】
なお、この実施例では、図5に示したように、コントローラ14の長手方向が水平方向に平行にされた状態で回転操作が行われるので、検出されるY軸加速度には重力加速度(−1.0G)が加算されている。そのため、変換時にはY軸加速度値から−1.0G分を減算する。回転操作が行われるまでは、点(0,0)に変換される。
【0053】
検出されるX軸加速度およびY軸加速度は、回転操作に応じて変化する。変換された点Pの履歴は、図6に示すように、原点Oから始まって原点Oの周りを回転するような軌道を描くこととなる。この変換された点の回転運動の軌跡は回転操作の状態を示していると見なせる。そこで、各点の角度を算出して、さらに角度の変化を算出する。
【0054】
各点の角度とは、定点(ここでは原点)と各点とを結ぶ線と、基準方向(ここではx軸)とがなす角度を意味する。図6では、現フレーム(フレーム番号n)における点(xn,yn)の角度はθnで示され、前フレーム(フレーム番号n−1)における点(xn−1,yn−1)の角度はθn−1で示される。したがって、角度変化Vnは、θnからθn−1を減算することによって算出される。角度変化Vnは、点Pの一定時間(1フレーム)における移動量ないし回転量であり、つまり、回転の速度を示している。
【0055】
また、所定の回転操作が行われているか否かを判定して、当該判定結果に応じて、角度変化を補正する。具体的には、コントローラ14が停止しているか否かを判定し、コントローラ14が停止されている場合には、角度変化はゼロに補正される。また、回転に急激な変化が発生したか否かを判定し、急激な変化の場合には、角度変化はゼロに補正される。急激な変化は、角度変化Vnの差分によって示される。角度変化の差分は、速度の変化であり、つまり、加速度を示す。したがって、回転の速度に一定以上の変化が見られる場合には、コントローラ14の回転操作に異常があったものと見なして、その角度変化のデータを無効にする。また、一定方向の回転であったか否かを判定し、一定方向の回転でない場合には、角度変化はゼロに補正される。現在から過去の所定時間内に、所定範囲外の角度変化が見られる場合、同じ方向への回転操作ではなくなったものと見なして、その角度変化のデータを無効にする。このようにすれば、単純に回転操作を行うだけではなく、同一方向へ回転操作を続けることによってゲームが進行されるので、さらにゲームの興趣性を高めることができる。
【0056】
所定の回転操作ではないと判定される場合には、角度変化はゼロに設定される。この補正後の角度変化を、「停止を考慮した角度変化」と呼ぶものとし、変数Tを用いて示す。一方、所定の回転操作が行われていると判定される場合には、算出された角度変化Vnがそのまま停止を考慮した角度変化Tとして設定される。
【0057】
そして、停止を考慮した角度変化Tに基づいて、ゲーム処理に使用する入力データとしての補正角度Vを算出する。補正角度Vは、2段階の補正をかけることによって算出される。
【0058】
まず、停止を考慮した角度変化Tを、次の数1に従って、補正された角度変化T´に補正する。
【0059】
[数1]
T´=T´+(T−T´×定数)
ここで、右辺のT´は、前フレームで算出された、補正された角度変化T´である。定数には適切な値(1より小さい正数)が選ばれる。なお、T´の初期値は0である。
【0060】
T´は、Tをなめらかに変化するように補正した角度変化である。この補正された角度変化T´に基づいて、補正角度Vを、次の数2に従って算出する。
【0061】
[数2]
V=V+T´
ここで、右辺のVは、前フレームで算出された補正角度Vである。
【0062】
このように、現フレームで算出された角度変化Vnそのものを使用せず、なめらかに変化するように補正した角度変化T´と前フレームにおいてゲーム処理に使用した補正角度Vとを基にして、現フレームにおける補正角度Vを算出するようにしている。このため、補正角度Vが滑らかに変化されることとなる。このような補正角度Vを用いることによって、回転操作の状態を適切かつ円滑にゲーム処理に反映させることができる。換言すれば、ゲーム処理における変化を、回転操作の状態に円滑に合わせていくことができ、たとえばオブジェクトの動きを滑らかに変化させることができる。
【0063】
一例として、図7に示すような手動シュレッダゲームが実行される。このゲームでは、プレイヤは、回転操作によってシュレッダのハンドルオブジェクト80を回転させ、紙オブジェクト82を裁断する。制限時間が設けられていて、プレイヤは制限時間が経過するまでに、所定回数以上ハンドルオブジェクト80を回転させることによって、所定長さの紙オブジェクト82を裁断しなければならない。制限時間は、数字で表示されてもよいが、図7では、時間経過に応じて導火線の長さが短くなり制限時間で爆発する爆弾によって表示されている。爆弾が爆発する前に紙の裁断を完了すれば、ゲームクリアとなる。
【0064】
操作対象としてのハンドルオブジェクト80は、その長手方向が画面の左右方向となるようにして水平に設置されている。そのため、このゲームでは、図5に示したように、コントローラ14は、そのZ軸方向がプレイヤの左右方向になるようにして把持される。ゲームプレイの際には、プレイヤは、画面に向かって、ハンドルオブジェクト80とコントローラ14を平行にする。そして、プレイヤは、Z軸方向に平行な軸70の周りを回転するように、コントローラ14を動かす。この回転操作に応じて、ハンドルオブジェクト80が回転され、紙オブジェクト82が上から下に移動して裁断される。このように、プレイヤは、画面に向かってコントローラ14を回転させることによって、画面上の紙を裁断することができる。コントローラ14の回転操作というこれまでに無い操作方法によって、プレイヤには新たな体感を与えることができる。
【0065】
また、図8に示すように、ハンドルオブジェクト80は補正角度Vに相当する分だけ仮想ゲーム空間内で回転され、紙オブジェクト82も補正角度Vに相当する分の長さだけ裁断される。このように、プレイヤの回転操作の状態に応じてゲームオブジェクトの動作が制御され、その結果が画面に表示されるので、今までに無い興趣性を備えたゲームを実現でき、今までに無い操作感やゲーム体験をプレイヤに与えることができる。
【0066】
図9にはメモリマップの一例が示される。メインメモリ28はプログラム記憶領域90およびデータ記憶領域92を含む。なお、図9にはメモリマップの一部が示されており、ゲームの進行に必要な他のプログラムおよびデータも、光ディスク20等から読み出されたりCPU26によって生成されたり取得されたりして、メインメモリ28に記憶される。図示は省略されるが、ゲーム画面を生成するプログラム、画面表示を制御するプログラム、サウンド出力を制御するプログラム、画像データおよびオブジェクトデータ等も記憶される。
【0067】
プログラム記憶領域90の記憶領域94には操作データ取得プログラムが記憶されている。このプログラムによって、コントローラ14からの操作データが、受信ユニット18およびコントローラI/F38を介してメインメモリ28に取得される。上述のように、コントローラ14は、ゲーム装置12における1フレーム(たとえば1/60秒)よりも短い周期で操作データを送信してくる。また、コントローラ14の加速度センサ60のサンプリング周期は、ゲーム装置12における1フレームよりも短い周期(たとえば1/200秒)に設定されており、コントローラ14の1回の送信データには複数の検出タイミングにおける加速度値が含まれる。したがって、この実施例では、ゲーム装置12は1フレームに複数個の操作情報(加速度値等)を含む操作データを取得することができる。CPU26は、複数個の操作情報を必要に応じて利用してゲーム処理を実行することができる。
【0068】
記憶領域96には角度算出プログラムが記憶されている。このプログラムによって、加速度に基づいて角度が算出される。具体的には、上述の図6に示したように、X軸加速度およびY軸加速度が2次元座標系の点に変換され、当該変換点と原点とを結ぶ線が基準方向(x軸)となす角度θが算出される。ゲーム処理は1フレームごとに行われるので、そのフレームを代表する角度θを算出する。また、上述のように、ゲーム装置12の1フレームに複数個の加速度値が検出されて取得されるので、各検出加速度ごとに角度θを算出してゲーム処理に利用することもできる。第nフレームの角度θnは、たとえば、第nフレームに取得された複数の加速度値から算出される各角度の平均値である。あるいは最大値もしくは最小値が採用されてもよい。
【0069】
記憶領域98には角度変化算出プログラムが記憶されている。現フレームの角度θと前フレームの角度θn−1との差分をとることによって、角度変化Vnが算出される。
【0070】
記憶領域100には停止判定プログラムが記憶される。このプログラムによって、コントローラ14の回転操作が停止されているか否かが判定される。たとえば、過去所定数のサンプリングデータを後述する操作データバッファ114から参照し、X軸加速度、Y軸加速度およびZ軸加速度の絶対値のそれぞれが所定の範囲以内であれば、停止と判定する。この実施例では、たとえば過去8回の検出タイミングにおける加速度値を、つまり、現在から過去の2−3フレームの間に取得された加速度値を参照するようにしている。
【0071】
記憶領域102には急変化判定プログラムが記憶されている。このプログラムによって、回転操作に急激な変化があったか否かが判定される。具体的には、上述したように、現フレームで算出された角度変化Vnと前フレームで算出された角度変化Vn−1との差分Anを算出し、当該差分Anが所定の範囲外であれば、急激な変化が生じているものと判定する。
【0072】
記憶領域104には回転方向判定プログラムが記憶されている。このプログラムによって回転操作の回転方向が判定される。具体的には、過去所定回数連続して同じ方向に回転しているか否かが判定され、同じ方向に回転していると判定される場合には、当該方向に回転しているものと見なす。同じ方向に回転していると見なすための条件は、或る検出タイミングにおける角度θとその直前の検出タイミングにおける角度θとの差分が所定の範囲内にあることである。この実施例では、過去8回の検出タイミングにおける加速度値(現在から過去の2−3フレーム分に取得された加速度値)を変換して算出した角度のそれぞれについて、直前の検出タイミングにおける角度との差分を算出し、すべての差分が所定の範囲内であるか否かが判定される。一例として、差分が0から45度の範囲内であれば、図6において反時計回りの回転と判断され、差分が−45から0度の範囲内であれば、図6において時計回りの回転と判断される。
【0073】
記憶領域106には角度補正プログラムが記憶されている。このプログラムによってゲーム処理に使用する補正角度Vが算出される。具体的には、上述の図6に示したように、まず、角度変化算出プログラムによって算出された角度変化Vnから、停止を考慮した角度変化Tが算出される。つまり、所定の回転操作が行われている場合には、TはVnであり、その他の場合には、Tは0である。所定の回転操作である条件は、この実施例では、コントローラ14が停止してないこと、急激な変化が起こっていないこと、回転方向が変化していないことである。また、この実施例では、回転方向が所定の方向であることも条件として設定される。図7および図8に示したように、シュレッダのハンドルオブジェクト80は、画面の奥行き側で下向きに回転される必要があり、これは、図6で言えば、時計回りの回転である。さらに、上述の数1に従って、補正された角度変化T´が算出される。そして、上述の数2に従って、補正された角度変化Tと前フレームで算出された補正角度Vに基づいて、補正角度Vが算出される。なお、Vの初期値は0である。
【0074】
記憶領域108にはオブジェクト制御プログラムが記憶されている。このプログラムによって、補正角度Vに基づいてオブジェクトの動作が制御される。この実施例では、上述の図8に示したように、ハンドルオブジェクト80の回転が補正角度Vに応じて制御され、紙オブジェクト82の移動および裁断も補正角度Vに応じて制御される。
【0075】
記憶領域110には回転回数判定プログラムが記憶されている。このプログラムによって、回転操作の回転回数が所定の閾値を超えたか否かが判定される。回転回数は、加速度値を変換した点の回転の回数でもあり、したがって、補正角度Vの累計が360度を超えるごとに1ずつカウントすることによって回転回数が算出される。
【0076】
記憶領域112には制限時間判定プログラムが記憶されている。このプログラムによって、ゲーム開始からの経過時間が所定の制限時間内であるか否かが判定される。上述のように、この実施例では、制限時間内に紙オブジェクト82の裁断を完了すること、つまり、制限時間内に所定回数だけ回転操作を行うことがゲームクリア条件であり、回転回数判定プログラムおよび制限時間判定プログラムによってゲームクリア条件が満足されたか否かが判定されている。
【0077】
データ記憶領域92の記憶領域114は操作データバッファであり、コントローラ14から送信される操作データが記憶される。操作データは、加速度センサ60で検出されたX、Y、Z軸の加速度値を示す加速度データを含む。なお、図9では省略されるが、操作部52の各ボタンの操作の有無を示すボタン操作データも含まれる。上述のように、ゲーム装置12における1フレームの間に、コントローラ14から複数個の操作情報を含む操作データを少なくとも1回受信するので、受信された操作データが順次この記憶領域94に蓄積される。たとえば、コントローラ14における60個分のサンプリングデータが蓄積される。
【0078】
記憶領域116には座標履歴が記憶されている。上述の角度算出プログラムによって、操作データバッファ114から取得されたX軸加速度値およびY軸加速度値が2次元座標系の点に変換されるので、変換された点の座標が記憶される。たとえば60個のサンプリングデータに相当する数の点の履歴が記憶される。
【0079】
記憶領域118には角度履歴が記憶されている。上述の角度算出プログラムによって算出された点の角度θの履歴が記憶される。各フレームごとに、当該フレームを代表する1つの角度θnが記憶される。また、各フレームで取得される複数の点のそれぞれの角度も記憶されてよい。
【0080】
記憶領域120には角度変化履歴が記憶される。上述の角度変化算出プログラムによって算出された角度変化Vnの履歴が記憶される。現フレームの角度変化Vnは、現フレーム(第nフレーム)の角度θnと前フレーム(第n−1フレーム)の角度θn−1との差分によって算出される。
【0081】
記憶領域122には補正角度履歴が記憶される。上述の補正角度算出プログラムによって算出された補正角度Vの履歴が記憶される。現フレームの補正角度Vを算出する際には、この記憶領域122に記憶されている前フレームの補正角度Vが参照される。
【0082】
記憶領域124には回転回数カウンタが記憶される。上述のように、補正角度Vの累計が360度を超えるごとに、回転回数に1だけ加算される。
【0083】
記憶領域126には経過時間カウンタが記憶される。経過時間はたとえば経過フレーム数であり、1フレームごとに経過時間に1だけ加算される。
【0084】
図10および図11にはゲーム装置12の動作の一例が示される。まず、ステップS1で、CPU26は初期設定を行う。具体的には、メインメモリ28がクリアされ、必要なプログラムおよびデータが光ディスク20からメインメモリ28に読み出される。また、各種変数やフラグに初期値が設定される。
【0085】
続くステップS3からステップS41の処理は、ステップS39またはS41でゲームオーバまたはゲームクリアが判断されるまで、1フレームごとに実行される。CPU26は、ステップS3で、コントローラI/F38を介して操作データを操作データバッファ114に取得し、操作データから現フレームにおける加速度データを取得する。
【0086】
続いて、ステップS5で、CPU26は、X軸加速度およびY軸加速度をそれぞれx成分およびy成分とするxy座標系の点に変換する(図6参照)。1フレームあたり複数個の加速度データが取得されるので、変換によって複数の点が得られる。なお、この実施例では、加速度センサ60は常に重力加速度を検出し、また、図5に示すように、Y軸正方向が鉛直上方向となる状態でコントローラ14は回転操作されることが前提であるので、検出されるY軸加速度に1.0Gを加算する。変換された各点の座標は、座標履歴記憶領域116に記憶される。
【0087】
ステップS7では、CPU26は変換された点の角度θnを算出する。上述のように、1フレームあたり複数の点に変換されるので、各点の角度θが算出され、また、現フレームを代表する角度θnが、たとえば平均、最大または最小を取ることによって算出される。算出された角度は角度履歴記憶領域118に記憶される。
【0088】
そして、ステップS9では、コントローラ14が停止しているか否かを判定する。たとえば、過去8個分の加速度情報を操作データバッファ114から読み出し、X、YおよびZ軸加速度の絶対値のすべてが、それぞれの所定の範囲内の値であるか否かを判定する。ステップS9で“YES”の場合、コントローラ14が停止しており、所定の回転操作が行われていないと見なせるので、処理は図11のステップS27に進む。
【0089】
一方、ステップS9で“NO”の場合には、CPU26は、ステップS11で角度変化Vnを、現フレームにおける角度θnと前フレームにおける角度θn−1の差分を取ることによって算出する。算出した角度変化Vnは角度変化履歴記憶領域120に記憶される。
【0090】
続くステップS13で、CPU26は角度変化Vnの差分Anを、現フレームにおける角度変化Vnと前フレームにおける角度変化Vn−1とに基づいて算出する。
【0091】
そして、ステップS15で、CPU26は、差分Anは所定の範囲内であるか否かを判定する。つまり、ここでは、回転操作において急激な変化が生じていないことを確認している。ステップS15で“NO”の場合、つまり、急激な変化が生じていると見なせる場合には、所定の回転操作が行われていないので、処理は図11のステップS27に進む。
【0092】
一方、ステップS15で“YES”であれば、続くステップS17およびS19の処理で回転方向が判定される。ステップS17では、CPU26は、現在から過去の連続する所定個数の角度(たとえば8個分のサンプリング時に対応する角度)のそれぞれについて、直前のサンプリング時に対応する角度との差分を算出する。続いて、ステップS19で、CPU26はすべての差分が所定の範囲内であるか否かを判断する。つまり、過去の所定時間の間継続的に同じ方向の回転が行われているか否かを判定する。ステップS19で“NO”の場合、一定方向の回転操作が行われていないと見なせるので、処理は図11のステップS27に進む。
【0093】
一方、ステップS19で“YES”の場合、つまり、同じ方向の回転である場合には、CPU26は、ステップS21で差分の示す方向を現フレームの回転方向に設定する。差分の符号が正であれば、回転方向は図6で反時計回りであり、差分の符号が負であれば、図6で時計回りである。ステップS21を終了すると、処理は図11のステップS23に進む。
【0094】
図11のステップS23では、CPU26は、回転方向は所定方向であるか否かを判断する。この実施例の手動シュレッダゲームでは、所定方向の回転のみ許可されているので、この判定が行われる。ステップS23で“YES”の場合、処理はステップS25へ進み、“NO”の場合にはステップS27へ進む。なお、別のゲームでは、両方向の回転を許容するようにしてもよく、つまり、ステップS23の判定を行わないようにしてもよい。
【0095】
ステップS25では、CPU26は、停止を考慮した角度変化を示す変数Tに、現フレームで算出された角度変化Vnを設定する。これによって、現フレームのゲーム処理には、現フレームで取得された回転操作による角度変化が反映されることとなる。
【0096】
一方、ステップS27では、CPU26は、停止を考慮した角度変化を示す変数Tにゼロを設定する。つまり、所定の回転操作が行われていないと見なせる場合には、現フレームのゲーム処理には、現フレームで取得された回転操作による角度変化は考慮されない。
【0097】
続いて、ステップS29では、CPU26は補正角度Vを算出する。具体的には、まず、補正された角度変化T´を、上述の数1に従って、停止を考慮した角度変化Tと前フレームの補正された角度変化T´とに基づいて算出する。そして、補正角度Vを、補正された角度変化T´と前フレームで算出された補正角度Vに基づいて算出する。補正角度Vは上述の数2に従って算出される。算出された補正角度Vは、補正された角度変化T´とともに補正角度履歴記憶領域122に記憶される。
【0098】
この補正角度Vに応じたゲーム処理が実行される。すなわち、ステップS31では、CPU26は、図8に示したように、シュレッダのハンドルオブジェクト80と紙オブジェクト82をそれぞれV相当分だけ動かす。
【0099】
また、ステップS33で、CPU26は回転回数を算出し、回転回数カウンタ記憶領域124に記憶する。具体的には、補正角度Vを累計し、360度ごとに回転回数に1を加算する。
【0100】
さらに、ステップS35では、CPU26は経過時間をカウントし、経過時間カウンタ記憶領域126に記憶する。たとえばゲーム開始から経過したフレーム数が記憶される。なお、この経過時間カウンタ記憶領域126の情報に基づいて、経過時間ないし残り時間を示す画像(図7の爆弾の導火線)が生成されることとなる。
【0101】
そして、ステップS37で、CPU26は、GPU32を用いてゲーム処理結果が反映されたゲーム画像を生成して、図7に示すような画面をモニタ16に表示する。
【0102】
続いて、ステップS39で、CPU26は経過時間は制限時間内であるか否かを判定する。ステップS39で“YES”の場合、CPU26は、さらにステップS41で回転回数が所定の閾値を超えたか否かを判定する。ステップS41で“NO”の場合、つまり、ゲームクリア条件が満足されていない場合には、ゲームを続行すべく、処理は図10のステップS3に戻る。
【0103】
一方、ステップS41で“YES”の場合、つまり、ゲームクリア条件が満足された場合には、CPU26は、ステップS43でゲームクリア処理を実行して、たとえばゲームクリアを示す画面を表示する。また、ステップS39で“NO”の場合、つまり、ゲームオーバ条件が満足された場合には、CPU26は、ステップS45でゲームオーバ処理を実行して、たとえばゲームオーバを示す画面を表示する。ステップS43またはS45を終了すると、このゲーム処理を終了する。
【0104】
この実施例によれば、コントローラ14に設けられた加速度センサ60によって検出される2軸の加速度を2次元座標系の点に変換し、当該点の角度の変化から補正角度を算出し、当該補正角度に基づいてゲーム処理が実行されるようにした。つまり、検出される2軸加速度を成分とする点の回転する角度を算出することによって、コントローラ14の回転操作の状態を検出し、ゲーム処理に使用するようにした。したがって、コントローラ14の回転操作に応じたゲーム処理を実行できるので、今までに無い興趣性を備えたゲームを実現できる。また、コントローラ14を回転させるという今までに無い操作方法によってゲームをプレイできるので、プレイヤに新しい体感を与えることができる。
【0105】
なお、上述の実施例では、図5に示したように、コントローラ14(加速度センサ60)のZ軸方向に平行な軸70の周りに移動する回転操作によってプレイされるゲームを実行するようにしていた。そして、当該回転操作によって加速度センサ60のXおよびY軸方向に働く遠心力に由来する加速度を検出するようにしていた。しかしながら、回転操作方法はこれに限定されるものではない。たとえば、Y軸方向に平行な軸の周りを移動するような回転操作が要求されるゲームを実行するようにしてもよい。この場合には、XZ平面内の回転操作であるので、XおよびZ軸方向の加速度を取得してゲーム処理に使用する。あるいは、X軸方向に平行な軸周りを移動するような回転操作によってプレイされるゲームであってもよい。この場合には、YZ平面内の回転であるため、YおよびZ軸方向の加速度を取得してゲーム処理を実行する。
【図面の簡単な説明】
【0106】
【図1】この発明の一実施例のゲームシステムの一例を示す外観図である。
【図2】図1のゲーム装置の電気的構成の一例を示すブロック図である。
【図3】図1のコントローラの一例を示す図解図であり、(A)は後方上側から見た斜視図であり、(B)は後方下側から見た斜視図である。
【図4】図1のコントローラの電気的構成の一例を示すブロック図である。
【図5】コントローラの回転操作の方法を示す図解図である。
【図6】回転操作によって検出される加速度データからゲーム処理に使用するための入力データを算出する方法の概要を示す図解図である。
【図7】ゲーム画面の一例を示す図解図である。
【図8】補正角度に応じて制御されるオブジェクトの一例を示す図解図である。
【図9】メモリマップの一例を示す図解図である。
【図10】ゲーム装置の動作の一例の一部を示すフロー図である。
【図11】図10の続きを示すフロー図である。
【符号の説明】
【0107】
10 …ゲームシステム
12 …ゲーム装置
14 …コントローラ
16 …モニタ
18 …受信ユニット
20 …光ディスク
26 …CPU
28 …メインメモリ
58 …通信部
60 …加速度センサ
【特許請求の範囲】
【請求項1】
互いに直交する少なくとも2軸の加速度を検出する加速度センサを有する操作手段を備えるゲーム装置において、前記操作手段が前記2軸に直交する軸の周りを移動される回転操作に応じてゲーム処理を行うためのゲームプログラムであって、
前記ゲーム装置のプロセサに、
前記加速度センサによって検出される2軸の加速度を取得する取得ステップ、
前記2軸の加速度を2次元座標系の点に変換する変換ステップ、
変換された前記点と基準点とを結ぶ線が基準方向となす角度を算出する角度算出ステップ、
前記角度算出ステップで算出される今回の角度と前回の角度との角度変化を算出する角度変化算出ステップ、
前記角度変化算出ステップで算出された角度変化と前回の補正角度に基づいて補正角度を算出する角度補正ステップ、および
前記角度補正ステップで算出された補正角度に基づいてゲーム処理を行うゲーム処理ステップを実行させる、ゲームプログラム。
【請求項2】
前記プロセサに、前記角度算出ステップで算出された角度変化に基づいて回転方向が過去と同一であるか否かを判定する回転方向判定ステップをさらに実行させ、
前記角度補正ステップは、前記回転方向判定ステップで回転方向が同一でないと判定されたとき、前記角度変化をゼロと見なして補正角度を算出する、請求項1記載のゲームプログラム。
【請求項3】
前記ゲーム処理ステップは、前記補正角度に基づいて動作したオブジェクトを表示手段に表示する表示制御ステップを含む、請求項1または2記載のゲームプログラム。
【請求項4】
前記ゲーム処理ステップは、前記補正角度に基づいてゲームクリア条件が満足されたか否かを判定するゲームクリア判定ステップを含む、請求項1ないし3のいずれかに記載のゲームプログラム。
【請求項5】
前記ゲーム処理ステップは、前記補正角度に基づいて前記回転操作の回転回数を算出する回転回数算出ステップを含み、
前記ゲームクリア判定ステップは、前記ゲームクリア条件として、前記回転回数が制限時間内に所定の閾値以上になったか否かを判定する、請求項4記載のゲームプログラム。
【請求項6】
互いに直交する少なくとも2軸の加速度を検出する加速度センサを有する操作手段を備え、前記操作手段が前記2軸に直交する軸の周りを移動される回転操作に応じてゲーム処理を行うゲーム装置であって、
前記加速度センサによって検出される2軸の加速度を取得する取得手段、
前記2軸の加速度を2次元座標系の点に変換する変換手段、
変換された前記点と基準点とを結ぶ線が基準方向となす角度を算出する角度算出手段、
前記角度算出手段によって算出される今回の角度と前回の角度との角度変化を算出する角度変化算出手段、
前記角度変化算出手段によって算出された角度変化と前回の補正角度に基づいて補正角度を算出する角度補正手段、および
前記角度補正手段で算出された補正角度に基づいてゲーム処理を行うゲーム処理手段を備える、ゲーム装置。
【請求項1】
互いに直交する少なくとも2軸の加速度を検出する加速度センサを有する操作手段を備えるゲーム装置において、前記操作手段が前記2軸に直交する軸の周りを移動される回転操作に応じてゲーム処理を行うためのゲームプログラムであって、
前記ゲーム装置のプロセサに、
前記加速度センサによって検出される2軸の加速度を取得する取得ステップ、
前記2軸の加速度を2次元座標系の点に変換する変換ステップ、
変換された前記点と基準点とを結ぶ線が基準方向となす角度を算出する角度算出ステップ、
前記角度算出ステップで算出される今回の角度と前回の角度との角度変化を算出する角度変化算出ステップ、
前記角度変化算出ステップで算出された角度変化と前回の補正角度に基づいて補正角度を算出する角度補正ステップ、および
前記角度補正ステップで算出された補正角度に基づいてゲーム処理を行うゲーム処理ステップを実行させる、ゲームプログラム。
【請求項2】
前記プロセサに、前記角度算出ステップで算出された角度変化に基づいて回転方向が過去と同一であるか否かを判定する回転方向判定ステップをさらに実行させ、
前記角度補正ステップは、前記回転方向判定ステップで回転方向が同一でないと判定されたとき、前記角度変化をゼロと見なして補正角度を算出する、請求項1記載のゲームプログラム。
【請求項3】
前記ゲーム処理ステップは、前記補正角度に基づいて動作したオブジェクトを表示手段に表示する表示制御ステップを含む、請求項1または2記載のゲームプログラム。
【請求項4】
前記ゲーム処理ステップは、前記補正角度に基づいてゲームクリア条件が満足されたか否かを判定するゲームクリア判定ステップを含む、請求項1ないし3のいずれかに記載のゲームプログラム。
【請求項5】
前記ゲーム処理ステップは、前記補正角度に基づいて前記回転操作の回転回数を算出する回転回数算出ステップを含み、
前記ゲームクリア判定ステップは、前記ゲームクリア条件として、前記回転回数が制限時間内に所定の閾値以上になったか否かを判定する、請求項4記載のゲームプログラム。
【請求項6】
互いに直交する少なくとも2軸の加速度を検出する加速度センサを有する操作手段を備え、前記操作手段が前記2軸に直交する軸の周りを移動される回転操作に応じてゲーム処理を行うゲーム装置であって、
前記加速度センサによって検出される2軸の加速度を取得する取得手段、
前記2軸の加速度を2次元座標系の点に変換する変換手段、
変換された前記点と基準点とを結ぶ線が基準方向となす角度を算出する角度算出手段、
前記角度算出手段によって算出される今回の角度と前回の角度との角度変化を算出する角度変化算出手段、
前記角度変化算出手段によって算出された角度変化と前回の補正角度に基づいて補正角度を算出する角度補正手段、および
前記角度補正手段で算出された補正角度に基づいてゲーム処理を行うゲーム処理手段を備える、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2007−296219(P2007−296219A)
【公開日】平成19年11月15日(2007.11.15)
【国際特許分類】
【出願番号】特願2006−128218(P2006−128218)
【出願日】平成18年5月2日(2006.5.2)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成19年11月15日(2007.11.15)
【国際特許分類】
【出願日】平成18年5月2日(2006.5.2)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]