ゲーム装置およびゲームプログラム
【課題】簡易な構成によって入力装置の複数の状態をゲーム処理に反映させる。
【解決手段】ゲーム装置は、入力装置に搭載された加速度センサから出力される加速度データを逐次取得する(ステップS2)。さらに、加速度データにより示される加速度を平滑化した値を示す平滑化データを算出する(ステップS3)。そして、加速度データと平滑化データとに基づいてゲーム処理を実行する(ステップS4)。例えば、ゲーム装置は、ゲーム空間に登場するオブジェクトの動作を加速度データと平滑化データとに基づいて制御する。
【解決手段】ゲーム装置は、入力装置に搭載された加速度センサから出力される加速度データを逐次取得する(ステップS2)。さらに、加速度データにより示される加速度を平滑化した値を示す平滑化データを算出する(ステップS3)。そして、加速度データと平滑化データとに基づいてゲーム処理を実行する(ステップS4)。例えば、ゲーム装置は、ゲーム空間に登場するオブジェクトの動作を加速度データと平滑化データとに基づいて制御する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、加速度センサからの出力に基づいてゲーム処理を実行するゲーム装置およびゲームプログラムに関する。
【背景技術】
【0002】
特許文献1には、多軸加速度センサおよび多軸ジャイロセンサを備える入力制御装置が記載されている。この入力制御装置は、棒状の本体を有しており、加速度センサによって本体の加速度を検出するとともに、ジャイロセンサによって本体の傾きやひねりを検出する。特許文献1に記載の入力制御装置は、プレイヤが手に持って使用する入力装置の移動を検出するために加速度センサを用い、当該入力装置の回転(姿勢)を検知するためにジャイロセンサを用いるものである。このように、従来においては、入力装置の位置や姿勢や移動等に関する状態を複数種類検出し、入力装置の複数の状態をゲーム処理に反映させるために、複数のセンサを用いていた。
【特許文献1】特開2000−308756号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
従来においては、入力装置の複数の状態を検出するために加速度センサおよびジャイロセンサという2種類のセンサを用いる必要があったので、入力装置が大型化してしまうという問題があった。また、入力装置に2種類のセンサを搭載しなければならないので、製造コストが高くなるという問題があった。
【0004】
それ故、本発明は、簡易な構成によって入力装置の複数の状態をゲーム処理に反映させることができるゲーム装置およびゲームプログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0006】
第1の発明は、入力装置(コントローラ7)に搭載された加速度センサ(37)から逐次出力される加速度データ(621)に基づくゲーム処理を実行するゲーム装置(3)である。ゲーム装置は、取得手段(ステップS2を実行するCPU10等。以下、ステップ番号のみを記載する。)と、平滑化手段(S3)と、ゲーム処理手段(S4)とを備えている。取得手段は、加速度データを逐次取得する。平滑化手段は、加速度データにより示される加速度を平滑化した値を示す平滑化データ(631)を逐次算出する。ゲーム処理手段は、加速度データと平滑化データとに基づいてゲーム処理を実行する。
【0007】
第2の発明においては、ゲーム処理手段は、第1動作制御手段(S11)と、第2動作制御手段(S12)とを含んでいてもよい。第1動作制御手段は、ゲーム空間におけるプレイヤオブジェクト(51)の第1の動作を決めるための状態を平滑化データに基づいて決定する。第2動作制御手段は、プレイヤオブジェクトの第2の動作を決めるための状態を加速度データに基づいて決定する。
【0008】
第3の発明においては、第1動作制御手段は、平滑化データに基づいてプレイヤオブジェクトのゲーム空間内における姿勢を決定してもよい。このとき、第2動作制御手段は、加速度データに基づいてプレイヤオブジェクトのゲーム空間内における位置を決定する。
【0009】
第4の発明においては、第2動作制御手段は、第1動作制御手段によって決定されるプレイヤオブジェクトの姿勢に基づいて移動方向を決定し、加速度データに基づいて移動量を決定することにより、ゲーム空間内における位置を決定してもよい。
【0010】
第5の発明においては、ゲーム処理手段は、差分算出手段(S12)と、処理実行手段(S13〜S17)とを含んでいてもよい。差分算出手段は、加速度データにより示される加速度の値と平滑化データにより示される値との差分(ay−by)を算出する。処理実行手段は、平滑化データと差分とを用いてゲーム処理を実行する。
【0011】
第6の発明においては、ゲーム処理手段は、第3動作制御手段(S11)と、第4動作制御手段(S12)とを含んでいてもよい。第3動作制御手段は、ゲーム空間におけるプレイヤオブジェクトの第3の動作を決めるための状態を平滑化データに基づいて決定する。第4動作制御手段は、プレイヤオブジェクトの第4の動作を決めるための状態を差分に基づいて決定する。
【0012】
第7の発明においては、第3動作制御手段は、平滑化データに基づいてプレイヤオブジェクトのゲーム空間内における姿勢を決定してもよい。このとき、第4動作制御手段は、差分に基づいてプレイヤオブジェクトのゲーム空間内における位置を決定する。
【0013】
第8の発明においては、第4動作制御手段は、第3動作制御手段によって決定されるプレイヤオブジェクトの姿勢に基づいて移動方向を決定し、差分に基づいて移動量を決定することにより、ゲーム空間内における位置を決定してもよい。
【0014】
第9の発明においては、前記ゲーム処理手段は、第5動作制御手段と、第6動作制御手段とを含んでいてもよい。第5動作制御手段は、ゲーム空間内に登場する第1のプレイヤオブジェクトの動作を決めるための状態を平滑化データに基づいて制御する。第6動作制御手段は、ゲーム空間内に登場する第2のプレイヤオブジェクトの動作を決めるための状態を差分に基づいて制御する。
【0015】
第10の発明においては、ゲーム処理手段は、第3動作制御手段と、第4動作制御手段とを含んでいてもよい。第3動作制御手段は、ゲーム空間内に登場する第1のオブジェクトの動作を加速度データに基づいて制御する。第4動作制御手段は、ゲーム空間内に登場する第2のオブジェクトの動作を平滑化データに基づいて制御する。
【0016】
第11の発明においては、平滑化手段は、加速度データが取得される度に平滑化データを算出し、前回に算出された平滑化データの値を、取得手段によって取得された加速度データの値に所定の割合で近づける演算によって平滑化を行うようにしてもよい(図19参照)。
【0017】
第12の発明においては、ゲーム処理手段は、傾き算出手段(S11)と、動き算出手段(S12)と、処理実行手段(S11〜S17)とを備えていてもよい。傾き算出手段は、加速度センサを備える入力装置の傾きに対応する第1データ(翼角データ635)を平滑化データに基づいて算出する。動き算出手段は、入力装置の動きに対応する第2データ(オブジェクト姿勢データ632)を加速度データに基づいて算出する。処理実行手段は、第1データおよび第2データに基づいてゲーム処理を実行する。
【0018】
また、本発明は、上記の動作をゲーム装置のコンピュータに実行させるためのゲームプログラムの形態で提供されてもよい。
【発明の効果】
【0019】
第1の発明によれば、平滑化手段は、取得された加速度データから平滑化データを算出する。ここで、加速度データおよび平滑化データは、入力装置の位置や姿勢や移動等に関する状態を表すものであるが、両者は互いに異なる状態を表すものである。したがって、第1の発明によれば、平滑化データを算出することによって、入力装置の2種類の状態を示す情報を1つの加速度センサの出力から得ることができる。そして、加速度データおよび平滑化データという2種類のデータに基づいてゲーム処理が実行されるので、入力装置の複数の状態をゲーム処理に反映させることができる。さらに、本発明で用いられるセンサは加速度センサ1種類のみであるので、従来技術に比べて入力装置の構成を簡易にすることができる。つまり、第1の発明によれば、簡易な構成によって入力装置の複数の状態をゲーム処理に反映させることができる。
【0020】
第2の発明によれば、第1動作制御手段は加速度データに基づいて第1の動作をオブジェクトに行わせるとともに、第2動作制御手段は平滑化データに基づいて第2の動作を当該オブジェクトに行わせる。すなわち、ゲーム装置は、加速度センサの出力から得られる2つのデータを用いて、1つのオブジェクトに2種類の動作を同時に行わせる。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、1つのオブジェクトに2種類の動作を行わせることができる。つまり、単純な操作方法で多彩な動作をオブジェクトに行わせることが可能となり、ゲームの操作性を向上することができる。
【0021】
第3の発明によれば、平滑化データに基づいてオブジェクトの姿勢が決定されるとともに、加速度データに基づいてオブジェクトの位置が決定される。これによって、プレイヤは、入力装置自体を動かすという単純な操作方法によってオブジェクトの姿勢および位置を制御することができるので、簡単な操作で多彩な動作をオブジェクトに行わせることができる。
【0022】
第4の発明によれば、オブジェクトの位置は、加速度データのみならず平滑化データにも基づいて決定される。これによれば、2種類のデータによってオブジェクトの位置が決定されるので、オブジェクトの位置をより詳細に制御することができる。
【0023】
第5の発明によれば、加速度データにより示される加速度の値と平滑化データにより示される値との差分が算出され、ゲーム処理は当該差分と平滑化データとに基づいて実行される。上記差分は、入力装置の激しい動きに起因する成分のみを示すので、ゲーム装置は当該差分を算出することによって、入力装置の激しい動きをより正確に算出することができる。
【0024】
第6の発明によれば、第3動作制御手段は平滑化データに基づいて第3の動作をオブジェクトに行わせるとともに、第4動作制御手段は差分に基づいて第4の動作を当該オブジェクトに行わせる。すなわち、ゲーム装置は、加速度センサの出力から得られる2つのデータを用いて、1つのオブジェクトに2種類の動作を同時に行わせる。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、1つのオブジェクトに2種類の動作を行わせることができる。つまり、単純な操作方法で多彩な動作をオブジェクトに行わせることが可能となり、ゲームの操作性を向上することができる。
【0025】
第7の発明によれば、平滑化データに基づいてオブジェクトの姿勢が決定されるとともに、差分に基づいてオブジェクトの位置が決定される。これによって、プレイヤは、入力装置自体を動かすという単純な操作方法によってオブジェクトの姿勢および位置を制御することができるので、簡単な操作で多彩な動作をオブジェクトに行わせることができる。
【0026】
第8の発明によれば、オブジェクトの位置は、差分のみならず平滑化データにも基づいて決定される。これによれば、2種類のデータによってオブジェクトの位置が決定されるので、オブジェクトの位置をより詳細に制御することができる。
【0027】
第9の発明によれば、第5動作制御手段は平滑化データに基づいて第1のプレイヤオブジェクトの動作を制御するとともに、第6動作制御手段は差分に基づいて第2のオブジェクトの動作を制御する。すなわち、ゲーム装置は、加速度センサの出力から得られる2つのデータを用いて、互いに異なる2つのオブジェクトの動作を同時に制御する。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、2つのオブジェクトを同時に操作することができる。これによって、単純な操作方法で複数のオブジェクトを操作することが可能となり、ゲームの操作性を向上することができる。
【0028】
第10の発明によれば、第7動作制御手段は平滑化データに基づいて第1のオブジェクトの動作を制御するとともに、第8動作制御手段は加速度データに基づいて第2のオブジェクトの動作を制御する。すなわち、ゲーム装置は、加速度センサの出力から得られる2つのデータを用いて、互いに異なる2つのオブジェクトの動作を同時に制御する。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、2つのオブジェクトを同時に操作することができる。これによって、単純な操作方法で複数のオブジェクトを操作することが可能となり、ゲームの操作性を向上することができる。
【0029】
第11の発明によれば、平滑化手段は、前回に算出された平滑化データと今回に取得された加速度データとを用いて平滑化を行う。これによれば、現時点ですでに取得されているデータのみを用いて平滑化データを算出することができるので、平滑化データをリアルタイムに算出することができ、高い応答性のゲーム操作を実現することができる。
【0030】
第12の発明によれば、ゲーム装置は、入力装置の傾きを平滑化データに基づいて算出するとともに、入力装置の動きを加速度データに基づいて算出する。したがって、ゲーム装置は、入力装置の傾きおよび動きという2種類の状態を1つのセンサから得ることができる。つまり、ゲーム装置は、入力装置の傾きおよび動きを同時に検出することができる。
【発明を実施するための最良の形態】
【0031】
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、当該ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本発明のゲーム装置およびゲームプログラムについて説明する。
【0032】
図1において、ゲームシステム1は、家庭用テレビジョン受像機等のスピーカを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作データを与えるコントローラ7によって構成される。また、モニタ2の周辺(図では画面の上側)には、2つのマーカ8aおよび8bが設置される。マーカ8aおよび8bは、具体的には赤外LEDであり、それぞれモニタ2の前方に向かって赤外光を出力する。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される操作データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。なお、他の実施形態においてはコントローラ7とゲーム装置3とは有線で接続されてもよい。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
【0033】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0034】
コントローラ7は、その内部に備える通信部36(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて操作データを無線送信する。コントローラ7は、複数の操作ボタンからなる操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、直線方向の加速度を検出する加速度センサ37(後述)を備えている。加速度センサ37によって検出された加速度を示すデータは上記操作データの一部としてゲーム装置3へ送信される。ゲーム装置3は、当該加速度を示すデータに基づいてコントローラ7の傾き(姿勢)および動きを算出し、傾きおよび動きに応じた処理を適宜実行することができる。また、コントローラ7は、当該コントローラ7から見た画像を撮像するための撮像情報演算部35(後述)を備えている。撮像情報演算部35は、モニタ2の周辺に配置された各マーカ8aおよび8bを撮像対象として、各マーカ8aおよび8bの画像を撮像する。ゲーム装置3は、この画像に基づいた演算処理によってコントローラ7の位置および姿勢に応じた処理を実行することができる。
【0035】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0036】
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)10を備える。CPU10は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ13等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU10には、メモリコントローラ11を介して、GPU(Graphics Processing Unit)12、メインメモリ13、DSP(Digital Signal Processor)14、およびARAM(Audio RAM)15が接続される。また、メモリコントローラ11には、所定のバスを介して、コントローラI/F(インターフェース)16、ビデオI/F17、外部メモリI/F18、オーディオI/F19、およびディスクI/F21が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ22、およびディスクドライブ20が接続されている。
【0037】
GPU12は、CPU10の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU12は、図示しない画像処理専用のメモリやメインメモリ13の一部の記憶領域を用いて画像処理を行う。GPU12は、これらを用いてモニタ2に表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ11およびビデオI/F17を介してモニタ2に出力する。
【0038】
メインメモリ13は、CPU10で使用される記憶領域であって、CPU10の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ13は、CPU10によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ13に記憶されたゲームプログラムや各種データ等がCPU10によって実行される。
【0039】
DSP14は、ゲームプログラム実行時にCPU10において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM15が接続される。ARAM15は、DSP14が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP14は、ARAM15に記憶されたサウンドデータを読み出し、メモリコントローラ11およびオーディオI/F19を介してモニタ2に備えるスピーカ22に出力させる。
【0040】
メモリコントローラ11は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F16は、例えば4つのコントローラI/Fで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F16を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの操作データを受信し、コントローラI/F16を介して当該操作データをCPU10へ出力する。なお、他の実施形態においては、ゲーム装置3は、受信ユニット6に代えて、コントローラ7から送信されてくる操作データを受信する受信モジュールをその内部に設ける構成としてもよい。この場合、受信モジュールが受信した操作データは、所定のバスを介してCPU10に出力される。ビデオI/F17には、モニタ2が接続される。外部メモリI/F18には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F19にはモニタ2に内蔵されるスピーカ22が接続され、DSP14がARAM15から読み出したサウンドデータや、ディスクドライブ20から直接出力されるサウンドデータがスピーカ22から出力される。ディスクI/F21には、ディスクドライブ20が接続される。ディスクドライブ20は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F19に出力する。
【0041】
次に、図3〜図8を参照して、コントローラ7について説明する。図3〜図4は、コントローラ7の外観構成を示す斜視図である。図3Aは、コントローラ7の上側後方から見た斜視図であり、図3Bは、コントローラ7を下側後方から見た斜視図である。図4は、コントローラ7を前方から見た図である。
【0042】
図3A〜図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すz軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ7を用いることによって、それに設けられたボタンを押下すること、コントローラ7自体の傾き(重力方向に対する角度)を変えること、および、コントローラ7自体の位置や向きを変えることによってゲーム操作を行うことができる。例えば、プレイヤは、コントローラ7の傾きを変化させたり、コントローラ7を動かしたりする(例えば、コントローラ7を上下方向に振る)ことによって、ゲーム空間に登場する操作対象に対する操作を行うことができる。また、例えば、プレイヤは、長手方向を軸としてコントローラ7を回転させたり、コントローラ7によって指し示される画面上の位置を変えたりする操作によって、操作対象に対する操作を行うことができる。ここで、「コントローラ7によって指し示される画面上の位置」とは、理想的には、コントローラ7の前端部から上記長手方向に延ばした直線とモニタ2の画面とが交わる位置であるが、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置3によって算出することができればよい。以下では、コントローラ7によって指し示される画面上の位置を「コントローラ7の指示位置」と呼ぶ。また、コントローラ7(ハウジング31)の長手方向を、「コントローラ7の指示方向」と呼ぶことがある。
【0043】
ハウジング31には、複数の操作キーが設けられる。ハウジング31の上面には、十字キー32a、Xボタン32b、Yボタン32c、Aボタン32d、セレクトスイッチ32e、メニュースイッチ32f、およびスタートスイッチ32gが設けられる。一方、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作キー(ボタン)は、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないためここでは詳細な説明を省略する。また、ハウジング31の上面には、遠隔からゲーム装置3本体の電源をオン/オフするための電源スイッチ32hが設けられる。
【0044】
また、コントローラ7は撮像情報演算部35(図5B)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射口35aが設けられる。一方、ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、例えば32ピンのエッジコネクタであり、コントローラ7に他の機器を接続するために利用される。また、ハウジング31上面の後面側には複数のLED34が設けられる。ここで、コントローラ7には、他のコントローラ7と区別するためにコントローラ種別(番号)が付与される。LED34は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7からゲーム装置3へ操作データを送信する際、上記コントローラ種別に応じて複数のLED34のいずれか1つが点灯する。
【0045】
次に、図5Aおよび図5Bを参照して、コントローラ7の内部構造について説明する。図5Aおよび図5Bは、コントローラ7の内部構造を示す図である。なお、図5Aは、コントローラ7の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bは、コントローラ7の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bに示す斜視図は、図5Aに示す基板300を裏面から見た斜視図となっている。
【0046】
図5Aにおいて、ハウジング31の内部には基板300が固設されており、当該基板300の上主面上に操作キー32a〜32h、加速度センサ37、LED34、水晶振動子46、無線モジュール44、およびアンテナ45等が設けられる。そして、これらは、基板300等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。また、無線モジュール44およびアンテナ45によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子46は、後述するマイコン42の基本クロックを生成する。
【0047】
一方、図5Bにおいて、基板300の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ7の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41によって構成されおり、それぞれ基板300の下主面に取り付けられる。また、基板300の下主面上の後端縁にコネクタ33が取り付けられる。そして、撮像情報演算部35の後方であって基板300の下主面上にAボタン32iが取り付けられていて、それよりさらに後方に電池47が収容される。電池47とコネクタ33との間の基板300の下主面上には、バイブレータ48が取り付けられる。このバイブレータ48は、例えば振動モータやソレノイドであってよい。バイブレータ48が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームを実現することができる。
【0048】
なお、図3A〜図5Bに示したコントローラ7の形状や、各操作キーの形状、数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができることは言うまでもない。また、コントローラ7における撮像情報演算部35の位置(撮像情報演算部35の光入射口35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。このとき、上記「コントローラ7の指示方向」は、光入射口に垂直な方向、すなわち、撮像素子40の撮像方向となる。
【0049】
図6は、コントローラ7の構成を示すブロック図である。コントローラ7は、操作部32(各操作キー)、撮像情報演算部35、通信部36、および加速度センサ37を備えている。なお、本実施形態において、コントローラ7は、加速度検出手段(加速度センサ37)を備えていればよく、操作部32および撮像情報演算部35を備えていない構成であってもよい。
【0050】
加速度センサ37は、コントローラ7の加速度(重力加速度を含む)を検出する、すなわち、コントローラ7に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度の値を検出する。例えば、2軸または3軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度(直線加速度)をそれぞれ検出する。例えば、この3軸または2軸の加速度センサ37は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。
【0051】
本実施形態では、加速度センサ37は、コントローラ7を基準とした上下方向(図3Aおよび図3Bに示すy軸方向)、左右方向(図3Aおよび図3Bに示すx軸方向)および前後方向(図3Aおよび図3Bに示すz軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ7を基準に設定されるxyz座標系における3次元のベクトルとして表される。以下では、加速度センサ37によって検出される各軸の加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【0052】
図7および図8は、コントローラ7の傾きと加速度センサの出力との関係を示す図である。図7は、重力加速度(図7に示すベクトルVa)がコントローラ7を基準とした下方向を向く状態を示している。なお、図7および図8では、コントローラ7は静止した状態にあるものとする。加速度センサ37が静止した状態においては、コントローラ7には常に重力(重力加速度)が加わっているので、加速度ベクトルVaは重力加速度のみを示すものとなる。例えば、図7に示す状態においては加速度ベクトルVaはy軸負方向を向く。つまり、加速度センサ37のy軸に1Gの重力加速度が加わり、x軸およびz軸の加速度はほぼ0となる。一方、図8は、図7に示す状態から、z軸を中心として回転させるようにコントローラ7を傾けた状態を示している。図8に示す状態では、加速度ベクトルVaの向きは図7に示す状態から変化し、加速度ベクトルVaのx座標値およびy座標値が0でない値となり、z軸を中心として回転させているのでz座標値は0となる。このように、加速度センサ37によって検出される加速度ベクトルの向きはコントローラ7の姿勢によって変化するので、当該加速度ベクトルを用いることによってコントローラ7の傾き(姿勢)を算出することができる。
【0053】
加速度センサ37が検出した加速度(加速度ベクトル)を示すデータ(加速度データ)は、通信部36へ出力される。なお、本実施形態では、コントローラ7の通信部36は、逐次(具体的には1フレーム時間毎)に加速度データをゲーム装置3へ出力する。ゲーム装置3は、この加速度データからコントローラ7の傾き(姿勢)および動きを算出し、当該傾きおよび動きに応じたゲーム処理を実行する。なお、加速度センサ37は、各軸に沿った直線成分の加速度を検出するものであるので、ゲーム装置3は、コントローラ7の傾きを直接検出することはできない。このため、加速度センサ37を搭載したデバイスの傾きは、加速度センサの各軸毎に検出される加速度に所定の演算処理を施すことによって算出される。
【0054】
また、本実施形態においては、コントローラ7が静止している状態で加速度センサ37によって検出される加速度の大きさ、すなわち、加速度センサ37によって検出される加速度が重力加速度のみを表すときの当該加速度の大きさを、1と表す。例えば、図7に示す状態において検出される加速度ベクトルVaの各成分の値は、(x,y,z)=(0,−1,0)となる。
【0055】
図6の説明に戻り、撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ7の動きでも追跡して解析することができる。
【0056】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ7の前方から入射する光から赤外線のみを通過させる。ここで、モニタ2の表示画面近傍に配置されるマーカ8aおよび8bは、モニタ2の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ38を設けることによってマーカ8aおよび8bの画像をより正確に撮像することができる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ39が集光した赤外線を撮像する。したがって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ8aおよび8b)の位置を算出する。
【0057】
撮像画像が入力されると、画像処理回路41は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。ここで、所定条件とは、撮像対象の画像(対象画像)を特定するための条件であり、所定条件の具体的な内容は、輝度が所定値以上の領域(高輝度領域)であり、かつ、領域の大きさが所定範囲内の大きさであることである。なお、所定条件は撮像対象を特定するための条件であればよく、他の実施形態においては、画像の色に関する条件を含んでいてもよい。
【0058】
対象画像の位置を算出する際、まず、画像処理回路41は、撮像画像の領域から上記高輝度領域を対象画像の候補として特定する。撮像画像の画像データにおいて対象画像は高輝度領域として現れるからである。次に、画像処理回路41は、特定された高輝度領域の大きさに基づいて、その高輝度領域が対象画像であるか否かを判定する判定処理を行う。撮像画像には、対象画像である2つのマーカ8aおよび8bの画像の他、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれている場合がある。この場合、マーカ8aおよび8bの画像以外の画像も高輝度領域として現れてしまう。上記の判定処理は、対象画像であるマーカ8aおよび8bの画像とそれ以外の画像とを区別し、対象画像を正確に特定するための処理である。具体的には、当該判定処理においては、特定された高輝度領域が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度領域が所定範囲内の大きさである場合、当該高輝度領域は対象画像を表すと判定され、高輝度領域が所定範囲内の大きさでない場合、当該高輝度領域は対象画像以外の画像を表すと判定される。
【0059】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度領域について、画像処理回路41は当該高輝度領域の位置を算出する。具体的には、当該高輝度領域の重心位置を算出する。なお、重心位置は撮像素子40の解像度よりも詳細なスケールで算出することが可能である。例えば、撮像素子40によって撮像された撮像画像の解像度が126×96である場合でも、重心位置を1024×768のスケールで算出することが可能である。このとき、重心位置の座標は、(0,0)から(1024,768)までの整数値で表現される。
【0060】
以上のようにして、画像処理回路41は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。画像処理回路41は、算出された座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。この座標はコントローラ7自体の向き(姿勢)や位置に対応して変化するので、ゲーム装置3はこの座標値を用いてコントローラ7の向きや位置を算出することができる。なお、本実施形態では、上記座標のデータはゲーム処理に用いられないので、コントローラ7は撮像情報演算部35を備えていない構成であってもよい。
【0061】
操作部32は、上述した十字キー32a等の各操作キー32a〜32iに相当し、各操作キー32a〜32iに対する入力状態(各操作キー32a〜32iが押下されたか否か)を示すデータを通信部36のマイコン42へ出力する。
【0062】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理の際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータを無線送信する無線モジュール44を制御する。
【0063】
操作部32および撮像情報演算部35および加速度センサ37からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。ここで、通信部36から受信ユニット6への無線送信は所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。マイコン42は、受信ユニット6への送信タイミングが到来すると、メモリ43に格納されているデータを操作データとして無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ7から送信される。微弱電波信号はゲーム装置3側の受信ユニット6で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。
【0064】
上記コントローラ7を用いることによって、プレイヤは、各操作キーを押下する従来の一般的なゲーム操作に加えて、コントローラ7の姿勢を変化させたり、コントローラ7自身の位置を動かしたり、コントローラ7を回転させたりするというゲーム操作を行うことができる。
【0065】
図9は、コントローラ7を用いてゲーム操作するときの状態を概説する図解図である。図9に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ7を把持する。ここで、マーカ8aおよび8bは、モニタ2の画面の横方向と平行に、画面の上側に配置されている。なお、他の実施形態においては、マーカ8aおよび8bの配置位置、ならびに、2つのマーカ8aおよび8bを配置する向きは任意であり、例えば、マーカ8aおよび8bが画面の下側に配置されてもよいし、2つのマーカ8aおよび8bが画面の縦方向に沿って配置されてもよい。本実施形態では、プレイヤは、コントローラ7を把持し、コントローラ7の傾きを変化させたり、コントローラ7を上下に動かしたりすることによってゲーム操作を行う。
【0066】
以下、上述したゲームシステム1を用いて行われるゲームの具体例について説明する。図10は、本実施形態においてモニタ2に表示されるゲーム画面の一例を示す図である。図10に示すように、モニタ2には、鳥を模したオブジェクト51が表示される。本実施形態では、画面の奥に向かってオブジェクト51が移動するゲーム画像が表示される場合を例として説明するが、他の実施形態においては、オブジェクトが画面の左右方向または上下方向に移動するとともに、背景の画像が左右方向または上下方向にスクロールするゲーム画像を表示するようにしてもよい(後述する図21参照)。
【0067】
本ゲームは、このオブジェクト51を操作して遊ぶゲームである。ゲームのプレイヤは、ゲーム操作によってオブジェクト51に2種類の動作を行わせることが可能である。第1の動作は、オブジェクト51自身の傾きを変化させる動作である。第2の動作は、オブジェクト51の翼を羽ばたかせる動作である。プレイヤは、これら2種類の動作を行わせることによって、2次元または3次元の仮想のゲーム空間である空中においてオブジェクト51を移動させる。
【0068】
図11は、オブジェクト51が第1の動作を行っている場合のゲーム画面の一例を示す図である。図11に示す矢印のように、オブジェクト51は、画面に垂直な軸を中心に回転するように傾きを変化させることが可能である。ゲーム装置3は、コントローラ7の長手方向を軸とした回転に関する傾きに応じてオブジェクト51の第1の動作を制御する。例えば、コントローラ7の上面が上方向を向く状態(図7に示す状態)から、z軸負方向から正方向の向きに見て右回りに所定角度だけコントローラ7を回転させた場合、図11に示すように、右回りに所定角度だけ回転するようにオブジェクト51の姿勢が制御される。上述した図7および図8において示したように、コントローラ7が静止した状態にある場合、コントローラ7の傾きは、加速度センサ37によって検出される加速度ベクトルに基づいて算出することができる。なお、本実施形態の説明では、「コントローラ7の回転」とは「コントローラ7の長手方向を軸とした回転」を指し、「コントローラ7の傾き」とは「コントローラ7の長手方向を軸とした回転量に関する傾き」を指すものとする。
【0069】
図12は、オブジェクト51が第2の動作を行っている場合のゲーム画面の一例を示す図である。図12に示すように、オブジェクト51は、翼を上下に羽ばたかせる動作を行うことが可能である(図12に示す矢印参照)。ゲーム装置3は、コントローラ7の上下方向(y軸方向)に関する動きに応じてオブジェクト51の第2の動作を制御する。コントローラ7の上下方向に関する動きは、上記加速度ベクトルから算出可能である。以下、加速度ベクトルからコントローラ7の上下方向に関する動きを算出する方法を説明する。
【0070】
図13および図14は、コントローラ7の動きと加速度ベクトルとの関係を示す図である。図13においては、コントローラ7は静止されておらず、ある大きさの加速度で上方向に動かされている。このとき、加速度センサ37の検出部には、重力に加えて下向きの慣性力が加えられる。そのため、加速度センサ37によって検出される加速度ベクトルVaは、静止状態において検出される加速度ベクトルよりも大きさが大きくなる。具体的には、図13に示す状態において検出される加速度ベクトルVaのy成分は、−1よりも小さい値となる。
【0071】
一方、図14においては、コントローラ7は、ある大きさの加速度で下方向に動かされている。このとき、加速度センサ37の検出部には、重力に加えて上向きの慣性力が加えられる。そのため、加速度センサ37によって検出される加速度ベクトルVaは、静止状態において検出される加速度ベクトルよりも大きさが小さくなったり、場合によってはその向きが逆になったりする。具体的には、図14に示す状態において検出される加速度ベクトルVaのy成分は、−1よりも大きい値となる。図14においては、上向きの慣性力の大きさが重力よりも大きいために、加速度ベクトルVaのy成分は正の値となっている。
【0072】
以上のように、コントローラ7の上下方向に関する移動に応じて加速度ベクトルVaのy成分の値が変化するので、ゲーム装置3は、加速度ベクトルVaに基づいてコントローラ7の上下方向の動きを算出することができる。本実施形態では、ゲーム装置3は、コントローラ7の上下方向の動きに応じてオブジェクト51が羽ばたくように翼の動きを制御する。したがって、プレイヤがコントローラ7を上下に振ると、オブジェクト51の翼が上下に動かされる(図12に示す矢印参照)。そして、オブジェクト51が羽ばたき動作を行う場合、ゲーム装置3は、オブジェクト51を上昇させる。なお、オブジェクト51が羽ばたき動作を行っていない間、ゲーム装置3は、オブジェクト51をゆっくりと下降させる。したがって、プレイヤは、オブジェクト51が落下してしまわないように、適宜のタイミングでコントローラ7の上下方向に動かすことによって、オブジェクト51に羽ばたき動作を行わせる。
【0073】
上述したように、ゲーム装置3は、コントローラ7の傾きを変化させる操作と、コントローラ7を上下に動かす操作とに従って、オブジェクト51の動作を制御する。ここで、図7および図8において示したように、コントローラ7が静止状態にある場合、加速度ベクトルからコントローラ7の傾きを算出することは可能である。しかし、コントローラ7が静止状態にない場合、すなわち、コントローラ7が上下に動かされている場合、加速度ベクトルをそのまま用いるとコントローラ7の傾きを正確に算出することはできない。例えば、図14に示す状態では、コントローラ7の上面が上方向を向いているにもかかわらず加速度ベクトルVaは上方向を向いており、本来の向きとは逆になっている。このとき、ゲーム装置3は、コントローラ7の傾きを正確に算出することはできず、コントローラ7の傾きを正しい向きとは逆向きに算出してしまう。コントローラ7の傾きは、コントローラ7に加わる重力加速度の向きを検出することによって算出することが可能となる。しかし、コントローラ7が動かされている時にはコントローラ7に慣性力が加わるので、コントローラ7に加わる重力加速度のみを検出することはできず、コントローラ7の傾きを正確に算出することができない。
【0074】
そこで、本実施形態では、ゲーム装置3は、逐次検出される加速度の値を平滑化し、平滑化によって得られた値を用いてコントローラ7の傾きを算出する。ここで、コントローラ7の上下方向に関する動きは、加速度信号(逐次検出される加速度の値を時系列に並べた信号)の激しく変動する成分として現れる。すなわち、コントローラ7を上下方向に動かす頻度とほぼ同様の頻度で加速度が変動する。一方、コントローラ7の傾きは、加速度信号の緩やかに変動する成分として現れる。したがって、加速度信号から上記激しく変動する成分を除去することによって、コントローラ7の傾きに対応する成分を抽出することができる。すなわち、ゲーム装置3は、加速度信号を平滑化した値を用いることによって、コントローラ7の傾きを正確に算出することができる。
【0075】
図15は、加速度センサ37によって検出された加速度の値と、当該検出された加速度を平滑化した値とを示す図である。なお、本実施形態では加速度ベクトルのz成分の値は無関係であるので、図15においては加速度ベクトルの値を2次元のxy座標によって表している。図15に示す点線は、その上面が上方向を向いた状態で静止状態にあったコントローラ7を上下方向に振りながら、z軸負方向から正方向の向きに見て右回りに所定角度だけ、当該コントローラ7をz軸周りに次第に回転させた場合に検出される加速度信号(加速度ベクトルの推移)を示している。つまり、加速度ベクトルは、xy座標系の原点を始点とし、図15に示す点線上を終点とするように推移する。また、図15に示す実線は、点線で示す加速度信号を理想的に平滑化した信号を示している。上記の場合にはコントローラ7が上下に振られるので、検出される加速度信号そのものの値は、図15に示す点線のように、y成分の値が激しく変動するように変化する。一方、コントローラ7はz軸周りに次第に回転させられるので、回転による加速度信号のxy成分の値の変動は、コントローラ7の振りによるy成分の変動よりも緩やかに変化していく。したがって、点線で示される加速度信号を平滑化して激しく変動する成分を除去することによって、実線で示される信号を得ることができる。なお、本実施形態では、x成分およびy成分からなる2次元の加速度ベクトルを平滑化しているので、平滑化された結果も2次元のベクトルとなる。以下では、平滑化されたベクトルを平滑化ベクトルと呼ぶ。上記実線で示される信号は、xy座標系の原点を始点とし、当該実線上を終点とする平滑化ベクトルの推移を示している。つまり、上記実線は、コントローラ7の傾きの変化を表している。このように、加速度センサ37によって検出された加速度信号を平滑化することによって、コントローラ7の傾きの変化を表す信号を得ることができる。
【0076】
以上のように、本実施形態によれば、ゲーム装置3は、加速度センサ37によって検出された加速度の値をそのまま用いてコントローラ7の動きを算出するとともに、当該検出された加速度を平滑化した値を用いてコントローラ7の傾きを算出する。これによれば、ゲーム装置3は、加速度センサ37によって検出された加速度ベクトルから、コントローラ7の動きおよび傾きを同時に算出することができる。したがって、ゲーム装置3は、1つのセンサによって、コントローラ7の傾きおよび動きという2種類の状態を同時に得ることができる。
【0077】
次に、本実施形態においてゲーム装置3で実行されるプログラム処理について説明する。まず、ゲーム処理において用いられる主なデータについて図16を用いて説明する。図16は、ゲーム装置3のメインメモリ13に記憶される主なデータを示す図である。図16に示すように、メインメモリ13には、ゲームプログラム61、操作データ62、およびゲーム処理用データ63等が記憶される。なお、メインメモリ13には、図16に示すデータの他、ゲームに登場するオブジェクトの画像データ等、ゲーム処理に必要なデータが記憶される。
【0078】
ゲームプログラム61は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリ13に記憶される。ゲームプログラム61には、後述するゲーム処理の実行に必要なプログラムが含まれている。
【0079】
操作データ62は、コントローラ7からゲーム装置3へ送信されてきて、メインメモリ13に記憶される。操作データ62には、加速度データ621が含まれる。加速度データ621は、加速度センサ37によって検出された加速度ベクトルVaを示すデータである。なお、操作データ62には、加速度データ621の他、撮像画像内における撮像対象(マーカ8aおよび8b)の位置を示すデータや、操作部32の各ボタンに対して行われた操作内容を示すデータが含まれていてもよい。
【0080】
ゲーム処理用データ63は、後述するゲーム処理において用いられるデータである。ゲーム処理用データ63は、平滑化データ631、オブジェクト姿勢データ632、オブジェクト速度データ633、オブジェクト位置データ634、翼角データ635、前回翼角データ636、および翼速度データ637を含む。
【0081】
平滑化データ631は、逐次検出される加速度ベクトルからなる加速度信号を平滑化することによって得られる値を示すデータである。ここでは、平滑化データ631は、加速度ベクトルのx成分およびy成分を平滑化することによって得られる2次元のベクトル(平滑化ベクトル)である。平滑化データ631は、加速度データが取得される度に算出され、取得された加速度データと、前回に算出された平滑化データとに基づいて算出される。
【0082】
データ632〜637は、オブジェクト51に関するパラメータである。図17は、オブジェクト51に関する各パラメータを示す図である。オブジェクト姿勢データ632は、オブジェクト51の姿勢を示すデータである。オブジェクト51の姿勢は、オブジェクト51の上方向が向いている方向を表すベクトルVu(図17参照)によって表される。このベクトルVuは、画面上の位置を示すXY座標系におけるベクトルである。なお、本実施形態では、XY座標系は、画面の右方向をX軸正方向とし、画面の上方向をY軸正方向とする座標系である(図17参照)。
【0083】
オブジェクト速度データ633は、オブジェクト51の速度、すなわち、オブジェクト51が画面上において単位時間(1フレーム時間)当たりに移動する移動量および移動方向を表すベクトルを示すデータである。具体的には、オブジェクト速度データ633は、上記XY座標系における2次元のベクトルを示す。また、オブジェクト位置データ634は、画面上におけるオブジェクト51の位置P(図17参照)を示すデータである。具体的には、オブジェクト位置データ634は、上記XY座標系における座標値を示す。オブジェクト位置データ634は、オブジェクト速度データ633に基づいて算出される。
【0084】
翼角データ635は、オブジェクト51の翼の角度θを示すデータである。図17に示すように、オブジェクト51の翼の角度θは、オブジェクト51を基準として翼が真横を向いている状態を0°とし、翼が真横よりも上側に向いた状態を正とし、翼が真横よりも上側に向いた状態を負とする角度で表される。また、翼の角度θは、−90°≦θ≦90°の範囲内の値をとる。また、前回翼角データ636は、前回に算出された翼角データ635である。
【0085】
翼速度データ637は、オブジェクト51の翼の角度の単位時間(1フレーム時間)当たりの変化量を示すデータである。具体的には、翼速度データ637は、今回算出された翼の角度と、前回に算出された翼の角度との差分Δθを示す。
【0086】
次に、ゲーム装置3において行われる処理の詳細を、図18〜図20を用いて説明する。図18は、ゲーム装置3において実行される処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ13等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ13に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図18に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0087】
まず、ステップS1において、以降の処理において用いられるデータの初期化処理が実行される。すなわち、CPU10は、平滑化データ631、オブジェクト速度データ633、オブジェクト位置データ634、および前回翼角データ636の内容を次のように設定してメインメモリ13に記憶する。平滑化データ631の内容は、xy座標系において(0,−1)を表す2次元ベクトルに設定される。オブジェクト速度データ633の内容は、XY座標系において(0,0)を表す2次元ベクトルに設定される。オブジェクト位置データ634の内容は、XY座標系における予め定められた初期位置を示す座標値に設定される。前回翼角データ636の内容は、0°に設定される。ステップS1の実行後、ステップS2〜S6の処理ループが1フレーム毎に繰り返されることによって、ゲームが進行していく。
【0088】
ステップS2において、CPU10は、コントローラ7から操作データを取得する。すなわち、コントローラ7は所定時間間隔(例えば、1フレーム時間間隔以内)で操作データをゲーム装置3へ送信してくるので、CPU10は、送信されてきた操作データをメインメモリ13に記憶する。この操作データには、少なくとも上記加速度データが含まれている。CPU10は、加速度データをメインメモリ13に記憶する。なお、本実施形態においてステップS2の処理は1フレーム時間毎に実行されるので、ゲーム装置3は、加速度データを逐次取得することができる。
【0089】
続くステップS3において、ステップS2で取得された加速度データに基づいて平滑化ベクトルが算出される。本実施形態では、CPU10は、平滑化ベクトルは、ステップS2で取得された加速度データ621により示される加速度ベクトルと、前回の平滑化ベクトルとを用いて算出される。なお、前回の平滑化ベクトルは、ステップS3の実行直前の時点でメインメモリ13に記憶されている平滑化データ631により示されるベクトルである。具体的には、平滑化ベクトル(bx,by)は次式(1)に従って算出される。
bx=bx’+(ax−bx’)×k1
by=by’+(ay−by’)×k1 …(1)
上式(1)において、変数axは加速度ベクトルのx成分の値であり、変数ayは加速度ベクトルのy成分の値である。変数bx’は前回の平滑化ベクトルのx成分の値であり、変数by’は前回の平滑化ベクトルのy成分の値である。定数k1の値は予め定められている。定数k1は、コントローラ7の上下方向の動きに応じた加速度ベクトルの変化を除去すべく、例えばk1=0.03に設定される。ステップS3において算出された平滑化ベクトル(bx,by)を示すデータは、平滑化データとしてメインメモリ13に記憶される。
【0090】
図19は、平滑化ベクトルの算出方法を説明するための図である。図19において、ベクトルVaは加速度ベクトル(x成分およびy成分のみ)であり、ベクトルVb’は前回の平滑化ベクトルである。このとき、上式(1)から、算出すべき平滑化ベクトルはベクトルVbと算出される。図19に示すように、平滑化ベクトルVbは、前回の平滑化ベクトルVb’を加速度ベクトルVaの方向に所定の割合(k)で近づけたベクトルとなる。具体的には、平滑化ベクトルVbは、原点を始点とし、前回の平滑化ベクトルVb’の終点と加速度ベクトルVaの終点とを結ぶ線分をk:(1−k)に内分する点Pを終点とするベクトルとなる。図19に示すように、本実施形態では、加速度ベクトルの変化に追従して変化する平滑化ベクトルを算出することによって、加速度センサ37により検出された加速度を平滑化する。
【0091】
図18の説明に戻り、ステップS3の次のステップS4において、オブジェクト制御処理が実行される。オブジェクト制御処理は、ステップS2およびS3で得られた加速度データおよび平滑化データに基づいてオブジェクト51の動作を制御するゲーム処理である。以下、図20を参照してオブジェクト制御処理の詳細について説明する。
【0092】
図20は、図18に示すオブジェクト制御処理(ステップS4)の詳細を示すフローチャートである。オブジェクト制御処理においては、まずステップS11において、CPU10はオブジェクト51の姿勢を算出する。オブジェクト51の姿勢は、コントローラ7の姿勢に基づいて、すなわち、上記平滑化データ631に基づいて算出される。具体的には、CPU10は、オブジェクト51の姿勢を示すベクトルVu=(UX,UY)を次式(2)に従って算出する。
UX=bx
UY=−by …(2)
上式(2)において、変数bxは、平滑化データ631により示される平滑化ベクトルのx成分の値であり、変数byは当該平滑化ベクトルのy成分の値である。上式(2)によって、xy座標系における方向を示す平滑化ベクトルがXY座標系における方向を示すベクトルVuに変換されたこととなる。ステップS11において算出されたベクトルVuを示すデータは、オブジェクト姿勢データ632としてメインメモリ13に記憶される。
【0093】
続くステップS12において、CPU10は、オブジェクト51の翼の角度を算出する。翼の角度θは、コントローラ7の上下方向の動きに基づいて、すなわち、上記加速度データ621に基づいて算出される。具体的には、CPU10は、翼の角度θを次式(3)に従って算出する。
θ=(ay−by)×k2 …(3)
上式(3)において、変数ayは、加速度データ621により示される加速度ベクトルのy成分の値であり、変数byは、平滑化データ631により示される平滑化ベクトルのy成分の値である。また、定数k2は予め定められている。定数k2の値は、翼の角度θが−90°≦θ≦90°の範囲の値をとるように、変数ayの取りうる範囲(加速度センサ37の測定可能範囲)を考慮して定められる。
【0094】
なお、加速度ベクトルのy成分そのもの(変数ay)には、コントローラ7の振りに起因する成分と、コントローラ7の回転に起因する成分(変数by)とが含まれている。上式(3)においては、加速度ベクトルのy成分のうちから、コントローラ7の振りに起因する成分を抽出するために、加速度ベクトルのy成分ayと平滑化ベクトルのy成分byとの差分を算出している。これによって、コントローラ7の振りに起因する成分のみを抽出することができるので、コントローラ7の動き(振り)をより正確に算出することができる。また、上記差分を用いて翼の角度θを算出することによって、コントローラ7が静止状態となった時点(すなわち、ay=byとなる時点)ではθ=0となる。これによって、コントローラ7が静止した状態ではオブジェクト51の翼は左右に水平な傾きとなるので、オブジェクト51の動作をより自然に表現することができる。なお、他の実施形態においては、上式(3)において、上記差分(ay−by)に代えて加速度ベクトルそのもの(変数ay)を用いるようにしてもよい。つまり、オブジェクトの翼の角度θ(ひいては、角度θに基づいて決められるオブジェクトの速度または位置)は、加速度ベクトルのみに基づいて算出されてもよい。
【0095】
ステップS12で算出された翼の角度θを示すデータは、翼角データ635としてメインメモリ13に記憶される。このとき、ステップS13において翼速度を算出する際に用いる目的で、更新前の翼角データ635の内容は、新たな前回翼角データ636としてメインメモリ13に記憶される。
【0096】
続くステップS13において、CPU10は、オブジェクト51の翼の速度を算出する。翼の速度Δθは、翼角データ635により示される翼の角度θと、前回翼角データ636により示される翼の角度θ’とに基づいて算出される。CPU10は、翼の速度Δθを次式(4)に従って算出する。
Δθ=θ−θ’ …(4)
ステップS13で算出された翼の速度Δθを示すデータは、翼速度データ637としてメインメモリ13に記憶される。
【0097】
ステップS13の次に、ステップS14〜S16の一連の処理によってオブジェクト51の速度が決定される。まず、ステップS14において、CPU10は、オブジェクト51の速度を算出する。なお、ステップS14で算出される速度は、仮の速度であり、後述するステップS16において必要に応じて補正されることがある。ステップS14において、オブジェクト51の速度は、前回のオブジェクトの速度に基づいて算出される。なお、前回のオブジェクトの速度は、ステップS14の直前の時点でメインメモリ13に記憶されているオブジェクト速度データ633により示される。CPU10は、オブジェクト51の仮の速度V”=(VX”,VY”)を次式(5)に従って算出する。
VX”=VX’×k3
VY”=VY’×k3+g …(5)
上式(5)において、変数VX’は、前回のオブジェクトの速度を示すベクトルのX成分の値であり、変数VY’は、前回のオブジェクトの速度を示すベクトルのY成分の値である。また、定数k3および定数gは予め定められている。定数k3は、前回の速度が減衰されるように、0<k3<1の範囲で設定される。定数gは、仮想の重力によってオブジェクト51が画面の下方向に移動するように、g<0の範囲で設定される。ステップS14で算出されたオブジェクト51の速度Vを示すデータは、オブジェクト速度データ633としてメインメモリ13に記憶される。
【0098】
続くステップS15において、CPU10は、オブジェクト51の翼が下方に移動しているか否かを判定する。ステップS15の判定は、翼速度データ637により示される翼の速度Δθに基づいて行われる。すなわち、翼の速度Δθが負の値であれば、オブジェクト51の翼が下方に移動していると判定され、翼の速度Δθが0または正の値であれば、オブジェクト51の翼が下方に移動していないと判定される。ステップS15の判定の結果、オブジェクト51の翼が下方に移動していると判定される場合にはステップS16の処理が実行される。ステップSの処理が実行される場合、ステップS14で算出された仮の速度が補正されて、補正後の速度がオブジェクト51の速度に決定されることとなる。一方、オブジェクト51の翼が上方に移動していると判定される場合にはステップS16の処理がスキップされてステップS17の処理が実行される。ステップS16の処理がスキップされる場合、ステップS14で算出された仮の速度がそのままオブジェクト51の速度に決定される。
【0099】
ステップS16においては、ステップS14で算出されたオブジェクト51の仮の速度が補正される。仮の速度は、コントローラ7の上下方向の動きに基づいて、具体的には、翼速度データ637により示される翼の速度Δθに基づいて補正される。具体的には、CPU10は、次式(6)に従って補正後の速度V=(VX,VY)を算出する。
VX=VX”+UX×Δθ
VY=VY”+UY×Δθ …(6)
上式(6)において、変数VX”はステップS14で算出された仮の速度を示すベクトルのX成分であり、変数VY”は当該仮の速度を示すベクトルのY成分である。変数UXは、オブジェクト51の姿勢を示すベクトルのX成分の値であり、変数UYは当該ベクトルのY成分の値である。なお、オブジェクト51の姿勢を示すベクトルは、オブジェクト姿勢データ632により示される。
【0100】
上式(6)からわかるように、オブジェクト51の速度は、仮の速度V”に、オブジェクト51を基準とした上方向(オブジェクト51の姿勢を示すベクトルの方向)の速度を加算することによって算出される。したがって、本実施形態においては、コントローラ7の上下方向の動きに応じて翼が下方向に移動する場合、オブジェクト51を基準とした上方向の速度がオブジェクト51に与えられ、オブジェクト51は上方向に移動する。つまり、オブジェクト51の位置を変化させる方向(すなわち、速度)は、平滑化ベクトルに基づいて決定されるオブジェクト51の姿勢に基づいて決定される。このように、加速度ベクトルに基づいて決定される変数(本実施形態では翼の速度)と、平滑化ベクトルに基づいて決定される変数(本実施形態ではオブジェクトの姿勢)との両方を用いてオブジェクト51の動作(本実施形態ではオブジェクトの速度)を決定することによって、より複雑なオブジェクトの制御が可能となる。
【0101】
なお、上式(6)では、コントローラ7の上下方向の動きに応じて翼が下方向に移動する場合、オブジェクト51を基準とした上方向の速度がオブジェクト51に与えられる。ここで、他の実施形態では、コントローラ7の動きの方向とオブジェクト51に与えられる速度の方向とは必ずしも一致している必要はない。例えば、他の実施形態では、図21に示すように、鳥を模したオブジェクト51を側面から見たゲーム画像が表示され、オブジェクト51が左右方向を向くように表示されてもよい。この場合、オブジェクト51の姿勢を示すベクトルV1を所定角度θ1だけオブジェクト51の前側に傾けた方向の速度がオブジェクト51に与えられるようにしてもよい。図21においては、ベクトルV2がオブジェクト51の速度を示している。
【0102】
また、式(6)からわかるように、ステップS16の補正において加算される速度は翼の速度Δθの大きさに応じて変化し、翼の速度Δθが大きいほど、加算される速度は大きくなる。したがって、本実施形態においては、コントローラ7を上下方向に速く動かすほど、オブジェクト51は速く移動することとなる。以上のステップS16の補正によって得られたオブジェクト51の速度Vを示すデータは、オブジェクト速度データ633としてメインメモリ13に記憶される。
【0103】
ステップS17においては、CPU10はオブジェクト51の位置を算出する。オブジェクト51の位置は、ステップS14〜S16の処理で算出されたオブジェクト51の速度に基づいて、すなわち、オブジェクト速度データ633により示されるベクトル(VX,VY)に基づいて算出される。具体的には、CPU10は、オブジェクト51の位置を示す座標(PX,PY)を次式(7)に従って算出する。
PX=PX’+VX
PY=PY’+VY …(7)
上式(7)において、変数PX’は、前回のオブジェクト51の位置を示すX座標値であり、変数PY’は、前回のオブジェクト51の位置を示すY座標値である。なお、前回のオブジェクト51の位置を示す座標(PX’,PY’)は、ステップS17の実行時点でメインメモリ13に記憶されているオブジェクト位置データ634により示される。ステップS17で算出された、オブジェクト51の位置を示すデータは、オブジェクト位置データ634としてメインメモリ13に記憶される。ステップS17の処理が終了すると、CPU10はオブジェクト制御処理を終了する。
【0104】
図18の説明に戻り、ステップS4の次のステップS5において、ステップS4で実行されたゲーム処理の結果を反映したゲーム画像が生成されて、ゲーム画像がモニタ2に表示される。このとき、オブジェクト51は、オブジェクト位置データ634により示される位置に、オブジェクト姿勢データ632により示される姿勢となるように表示される。また、オブジェクト51の翼は、翼角データ635により示される角度θに応じた角度となるように表示される。
【0105】
続くステップS6において、CPU10はゲームを終了するか否かを判定する。ステップS6の判定は、例えば、プレイヤがゲームをクリアしたか否かや、ゲームに制限時間が設けられている場合には当該制限時間が経過したか否かによって行われる。ステップS6の判定結果が否定である場合、ステップS2の処理が再度実行され、以降、ゲームを終了すると判定されるまでステップS2〜S6の処理ループが実行される。一方、ステップS6の判定結果が肯定である場合、CPU10は図18に示す処理を終了する。以上で、ゲーム装置3における処理の説明を終了する。
【0106】
以上のように、本実施形態においては、ゲーム装置3は、加速度センサ37によって検出される加速度ベクトルに基づいてオブジェクト51の翼の角度を算出する(ステップS12)。そして、翼の角度に基づいてオブジェクト51の位置を決定する(ステップS13〜S17)。また、ゲーム装置3は、加速度ベクトルを平滑化した平滑化ベクトルに基づいてオブジェクト51の姿勢を算出する(ステップS11)。これによって、ゲーム装置3は、コントローラ7の上下方向の動きに応じてオブジェクト51の翼の角度(オブジェクト51の位置)を制御することができ、それと同時に、コントローラ7の傾きに応じてオブジェクト51の姿勢を制御することができる。
【0107】
なお、上記実施形態においては、加速度を平滑化する方法は、今回取得された加速度ベクトルと前回に算出された平滑化ベクトルとを用いて平滑化ベクトルを算出する方法であった。ここで、加速度を平滑化する方法はこれに限らず、加速度の(相対的に)急激に変化する成分の影響を除去して、(相対的に)緩やかに変化する成分を抽出する方法であれば、どのような方法であってもよい。例えば、他の実施形態においては、所定期間の間に順次検出される複数の加速度ベクトルからなる加速度信号にローパスフィルタを適用することによって、加速度信号の低周波成分を抽出するようにしてもよい。加速度信号の低周波成分を抽出することによって、加速度信号の成分のうちのコントローラ7の回転に起因する成分を抽出することができる。同様に、上記ステップS12において、差分を算出することに代えて、ハイパスフィルタを用いて加速度信号の高周波成分を抽出することによって、加速度信号の成分のうちのコントローラ7の上下方向の動きに起因する成分を抽出することができる。また、ゲーム装置3は、あるフレームにおける平滑化ベクトルを次のように算出してもよい。すなわち、ゲーム装置は、前回のフレームにおいて取得された加速度ベクトルと、当該あるフレームにおいて取得された加速度ベクトルと、次のフレームにおける加速度ベクトルという3つの加速度ベクトルに基づいて、あるフレームにおける平滑化ベクトルを算出してもよい。より具体的には、当該3つの加速度ベクトルの平均値を平滑化ベクトルとしてもよい。なお、上記実施形態における平滑化方法によれば、前回のフレームおよび今回のフレームにおいて取得されるデータのみを用いて平滑化ベクトルを算出することができるので、リアルタイムに平滑化ベクトルを算出することができる。これによって、応答性の高い操作を実現することができるので、操作に高い応答性が要求されるゲームにとって上記実施形態における平滑化方法は非常に有効である。
【0108】
なお、上記実施形態においては、ゲーム装置3は、x軸方向およびy軸方向に関するコントローラ7の傾きをゲーム操作として用いるものであったので、x成分およびy成分からなる2次元の加速度ベクトルを平滑化して2次元の平滑化ベクトルを算出するようにした。ここで、他の実施形態においては、ゲーム装置3は、x軸方向、y軸方向、およびz軸方向の3次元の加速度ベクトルを平滑化して3次元の平滑化ベクトルを算出するようにしてもよい。これによって、ゲーム装置3は、3次元の各方向に関するコントローラ7の傾きを算出することができる。また、他の実施形態においては、ゲーム装置3は、いずれか1軸方向の加速度のみを平滑化し、平滑化した値(スカラー値)を用いてゲーム処理を実行するようにしてもよい。例えば、y軸方向の加速度の大きさのみに基づいてx軸方向およびy軸方向に関するコントローラ7の傾きを推測することが可能である。これによれば、コントローラ7の構成の簡易化およびゲーム処理の簡易化を図ることができる。
【0109】
また、上記実施形態においては、ゲーム装置3は、上下方向(すなわち、y軸方向)に関するコントローラ7の動きを算出するものであったので、加速度ベクトルのうちのy成分のみを用いてゲーム処理を実行した(上式(3))。ここで、他の実施形態においては、ゲーム装置3は、加速度ベクトルのx成分、y成分、およびz成分のうちのいずれか2つまたは3つの成分に基づいてコントローラ7の動きを算出するようにしてもよい。例えば、加速度ベクトルのうちのx成分およびy成分を用いてゲーム処理を実行してもよい。これによれば、上下方向および左右方向に関するコントローラ7の動きをゲーム処理に反映させることができる。
【0110】
また、上記実施形態においては、加速度データおよび平滑化データに基づいて実行されるゲーム処理の一例として、加速度データに基づいてオブジェクトの位置を算出するとともに、平滑化データに基づいてオブジェクトの姿勢を算出するゲーム処理を例として説明した。ここで、本発明は、加速度データおよび平滑化データに基づいて実行される種々のゲーム処理を行うゲーム装置およびゲームプログラムに適用することが可能である。
【0111】
例えば、競馬ゲームに本発明を適用することが考えられる。この競馬ゲームにおいて、プレイヤは、馬に乗った騎手を模したオブジェクトをコントローラ7を用いて操作する。ゲーム装置3は、例えば、加速度データに基づいて馬の速度を決定するとともに、平滑化データに基づいて馬の進行方向を決定する。具体的には、ゲーム装置3は、コントローラ7のz軸周りの回転に関する傾きを平滑化データに基づいて算出する。そして、コントローラ7の傾きに応じて馬の移動方向を決定する。一方、ゲーム装置3は、検出された加速度データを用いてコントローラ7の上下方向の動きを算出することによって、コントローラ7が下向きに動かされたか否かを判断し、オブジェクトの速度を算出する。具体的には、コントローラ7が下向きに動かされたと判断される場合、ゲーム装置3は、騎手に鞭を振る動作を行わせる。さらに、所定の単位時間当たりに騎手が鞭を振る回数に応じて馬の速度を算出する。これによって、プレイヤは、コントローラ7を傾ける操作によって馬の移動方向を操作するとともに、コントローラ7を鞭のようにして用いて馬の速度を操作することができるので、今までにはない新規なゲーム操作を味わうことができる。
【0112】
なお、コントローラ7が下向きに動かされたか否かの判断は、例えば、加速度ベクトルのy成分が所定値よりも大きい状態が所定期間だけ継続されたか否かによって行うことができる。より具体的には、加速度ベクトルのy成分が正の値となる状態が所定のフレーム数だけ継続された場合、ゲーム装置3は、コントローラ7が下向きに動かされたと判断する。そして、ゲーム装置3は、コントローラ7が下向きに動かされたと判断された場合、オブジェクトの速度を増加する。
【0113】
また、一輪車に乗るオブジェクトを操作するゲームに本発明を適用することも考えられる。このゲームにおいて、ゲーム装置3は、例えば、加速度データに基づいてオブジェクトにジャンプ動作を行わせるとともに、平滑化データに基づいてオブジェクトを移動させる。具体的には、ゲーム装置3は、コントローラ7のz軸周りの回転に関する傾きを平滑化データに基づいて算出し、コントローラ7の傾きに応じてオブジェクトの移動方向を決定する。一方、ゲーム装置3は、加速度データを用いてコントローラ7の上下方向の動きを算出することによって、コントローラ7が上向きに動かされたか否かを判断し、上向きに動かされたと判断される場合にはオブジェクトに所定の動作(例えばジャンプ動作)を行わせる。これによれば、上記実施形態や競馬ゲームの例と同様、コントローラ7を動かすという1種類の操作によって、1つの操作対象(オブジェクト)に異なる2つの動作を行わせることができる。
【0114】
また、本発明は、1つの操作対象(オブジェクト)に異なる2つの動作を行わせる場合だけでなく、互いに異なる2つの操作対象にそれぞれ動作を行わせる場合にも適用することができる。すなわち、ゲーム装置3は、第1のオブジェクトの動作を加速度データに基づいて制御するとともに、第1のオブジェクトとは異なる第2のオブジェクトの動作を平滑化データに基づいて制御するようにしてもよい。例えば、ランナーを模した2つのオブジェクトの速度を制御するゲームを例として考える。このゲームでは、プレイヤは、2つのオブジェクトが併走するように(すなわち、2つのオブジェクトの速度がほぼ等しくなるように)ゲーム操作を行うことを目的とする。このようなゲームにおいて、ゲーム装置3は、加速度データに基づいて一方のオブジェクトの速度を算出するとともに、平滑化データに基づいて他方のオブジェクトの速度を算出する。加速度データに基づいてオブジェクトの速度を算出する方法としては、上記実施形態において説明した方法や、上記競馬ゲームの例で示した方法が考えられる。また、平滑化データに基づいてオブジェクトの速度を算出する方法としては、例えば、予め決められた基準方向に対してコントローラ7が傾いている角度の大きさに応じてオブジェクトの速度を算出する方法が考えられる。
【産業上の利用可能性】
【0115】
以上のように、本発明は、簡易な構成によって入力装置の複数の状態をゲーム処理に反映させること等を目的として、ゲーム装置やゲームプログラムに利用することが可能である。
【図面の簡単な説明】
【0116】
【図1】本発明の一実施形態に係るゲーム装置を含むゲームシステムの外観図
【図2】ゲーム装置3の機能ブロック図
【図3A】コントローラ7の斜視図
【図3B】コントローラ7の斜視図
【図4】コントローラ7を前方から見た図
【図5A】コントローラ7の内部構造を示す図
【図5B】コントローラ7の内部構造を示す図
【図6】コントローラ7の構成を示すブロック図
【図7】コントローラ7の傾きと加速度センサの出力との関係を示す図
【図8】コントローラ7の傾きと加速度センサの出力との関係を示す図
【図9】コントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図10】本実施形態においてモニタ2に表示されるゲーム画面の一例を示す図
【図11】オブジェクト51が第1の動作を行っている場合のゲーム画面の一例を示す図
【図12】オブジェクト51が第2の動作を行っている場合のゲーム画面の一例を示す図
【図13】コントローラ7の動きと加速度ベクトルとの関係を示す図
【図14】コントローラ7の動きと加速度ベクトルとの関係を示す図
【図15】加速度センサ37によって検出された加速度の値と、当該検出された加速度を平滑化した値とを示す図
【図16】ゲーム装置3のメインメモリ13に記憶される主なデータを示す図
【図17】オブジェクト51に関する各パラメータを示す図
【図18】ゲーム装置3において実行される処理の流れを示すメインフローチャート
【図19】平滑化ベクトルの算出方法を説明するための図
【図20】図18に示すオブジェクト制御処理(ステップS4)の詳細を示すフローチャート
【図21】他の実施形態においてモニタに表示されるゲーム画面の一例を示す図
【符号の説明】
【0117】
1 ゲームシステム
2 モニタ
3 ゲーム装置
4 光ディスク
5 外部メモリカード
7 コントローラ
8a,8b マーカ
10 CPU
13 メインメモリ
32 操作部
35 撮像情報演算部
36 通信部
37 加速度センサ
40 撮像素子
51 オブジェクト
61 ゲームプログラム
【技術分野】
【0001】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、加速度センサからの出力に基づいてゲーム処理を実行するゲーム装置およびゲームプログラムに関する。
【背景技術】
【0002】
特許文献1には、多軸加速度センサおよび多軸ジャイロセンサを備える入力制御装置が記載されている。この入力制御装置は、棒状の本体を有しており、加速度センサによって本体の加速度を検出するとともに、ジャイロセンサによって本体の傾きやひねりを検出する。特許文献1に記載の入力制御装置は、プレイヤが手に持って使用する入力装置の移動を検出するために加速度センサを用い、当該入力装置の回転(姿勢)を検知するためにジャイロセンサを用いるものである。このように、従来においては、入力装置の位置や姿勢や移動等に関する状態を複数種類検出し、入力装置の複数の状態をゲーム処理に反映させるために、複数のセンサを用いていた。
【特許文献1】特開2000−308756号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
従来においては、入力装置の複数の状態を検出するために加速度センサおよびジャイロセンサという2種類のセンサを用いる必要があったので、入力装置が大型化してしまうという問題があった。また、入力装置に2種類のセンサを搭載しなければならないので、製造コストが高くなるという問題があった。
【0004】
それ故、本発明は、簡易な構成によって入力装置の複数の状態をゲーム処理に反映させることができるゲーム装置およびゲームプログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0006】
第1の発明は、入力装置(コントローラ7)に搭載された加速度センサ(37)から逐次出力される加速度データ(621)に基づくゲーム処理を実行するゲーム装置(3)である。ゲーム装置は、取得手段(ステップS2を実行するCPU10等。以下、ステップ番号のみを記載する。)と、平滑化手段(S3)と、ゲーム処理手段(S4)とを備えている。取得手段は、加速度データを逐次取得する。平滑化手段は、加速度データにより示される加速度を平滑化した値を示す平滑化データ(631)を逐次算出する。ゲーム処理手段は、加速度データと平滑化データとに基づいてゲーム処理を実行する。
【0007】
第2の発明においては、ゲーム処理手段は、第1動作制御手段(S11)と、第2動作制御手段(S12)とを含んでいてもよい。第1動作制御手段は、ゲーム空間におけるプレイヤオブジェクト(51)の第1の動作を決めるための状態を平滑化データに基づいて決定する。第2動作制御手段は、プレイヤオブジェクトの第2の動作を決めるための状態を加速度データに基づいて決定する。
【0008】
第3の発明においては、第1動作制御手段は、平滑化データに基づいてプレイヤオブジェクトのゲーム空間内における姿勢を決定してもよい。このとき、第2動作制御手段は、加速度データに基づいてプレイヤオブジェクトのゲーム空間内における位置を決定する。
【0009】
第4の発明においては、第2動作制御手段は、第1動作制御手段によって決定されるプレイヤオブジェクトの姿勢に基づいて移動方向を決定し、加速度データに基づいて移動量を決定することにより、ゲーム空間内における位置を決定してもよい。
【0010】
第5の発明においては、ゲーム処理手段は、差分算出手段(S12)と、処理実行手段(S13〜S17)とを含んでいてもよい。差分算出手段は、加速度データにより示される加速度の値と平滑化データにより示される値との差分(ay−by)を算出する。処理実行手段は、平滑化データと差分とを用いてゲーム処理を実行する。
【0011】
第6の発明においては、ゲーム処理手段は、第3動作制御手段(S11)と、第4動作制御手段(S12)とを含んでいてもよい。第3動作制御手段は、ゲーム空間におけるプレイヤオブジェクトの第3の動作を決めるための状態を平滑化データに基づいて決定する。第4動作制御手段は、プレイヤオブジェクトの第4の動作を決めるための状態を差分に基づいて決定する。
【0012】
第7の発明においては、第3動作制御手段は、平滑化データに基づいてプレイヤオブジェクトのゲーム空間内における姿勢を決定してもよい。このとき、第4動作制御手段は、差分に基づいてプレイヤオブジェクトのゲーム空間内における位置を決定する。
【0013】
第8の発明においては、第4動作制御手段は、第3動作制御手段によって決定されるプレイヤオブジェクトの姿勢に基づいて移動方向を決定し、差分に基づいて移動量を決定することにより、ゲーム空間内における位置を決定してもよい。
【0014】
第9の発明においては、前記ゲーム処理手段は、第5動作制御手段と、第6動作制御手段とを含んでいてもよい。第5動作制御手段は、ゲーム空間内に登場する第1のプレイヤオブジェクトの動作を決めるための状態を平滑化データに基づいて制御する。第6動作制御手段は、ゲーム空間内に登場する第2のプレイヤオブジェクトの動作を決めるための状態を差分に基づいて制御する。
【0015】
第10の発明においては、ゲーム処理手段は、第3動作制御手段と、第4動作制御手段とを含んでいてもよい。第3動作制御手段は、ゲーム空間内に登場する第1のオブジェクトの動作を加速度データに基づいて制御する。第4動作制御手段は、ゲーム空間内に登場する第2のオブジェクトの動作を平滑化データに基づいて制御する。
【0016】
第11の発明においては、平滑化手段は、加速度データが取得される度に平滑化データを算出し、前回に算出された平滑化データの値を、取得手段によって取得された加速度データの値に所定の割合で近づける演算によって平滑化を行うようにしてもよい(図19参照)。
【0017】
第12の発明においては、ゲーム処理手段は、傾き算出手段(S11)と、動き算出手段(S12)と、処理実行手段(S11〜S17)とを備えていてもよい。傾き算出手段は、加速度センサを備える入力装置の傾きに対応する第1データ(翼角データ635)を平滑化データに基づいて算出する。動き算出手段は、入力装置の動きに対応する第2データ(オブジェクト姿勢データ632)を加速度データに基づいて算出する。処理実行手段は、第1データおよび第2データに基づいてゲーム処理を実行する。
【0018】
また、本発明は、上記の動作をゲーム装置のコンピュータに実行させるためのゲームプログラムの形態で提供されてもよい。
【発明の効果】
【0019】
第1の発明によれば、平滑化手段は、取得された加速度データから平滑化データを算出する。ここで、加速度データおよび平滑化データは、入力装置の位置や姿勢や移動等に関する状態を表すものであるが、両者は互いに異なる状態を表すものである。したがって、第1の発明によれば、平滑化データを算出することによって、入力装置の2種類の状態を示す情報を1つの加速度センサの出力から得ることができる。そして、加速度データおよび平滑化データという2種類のデータに基づいてゲーム処理が実行されるので、入力装置の複数の状態をゲーム処理に反映させることができる。さらに、本発明で用いられるセンサは加速度センサ1種類のみであるので、従来技術に比べて入力装置の構成を簡易にすることができる。つまり、第1の発明によれば、簡易な構成によって入力装置の複数の状態をゲーム処理に反映させることができる。
【0020】
第2の発明によれば、第1動作制御手段は加速度データに基づいて第1の動作をオブジェクトに行わせるとともに、第2動作制御手段は平滑化データに基づいて第2の動作を当該オブジェクトに行わせる。すなわち、ゲーム装置は、加速度センサの出力から得られる2つのデータを用いて、1つのオブジェクトに2種類の動作を同時に行わせる。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、1つのオブジェクトに2種類の動作を行わせることができる。つまり、単純な操作方法で多彩な動作をオブジェクトに行わせることが可能となり、ゲームの操作性を向上することができる。
【0021】
第3の発明によれば、平滑化データに基づいてオブジェクトの姿勢が決定されるとともに、加速度データに基づいてオブジェクトの位置が決定される。これによって、プレイヤは、入力装置自体を動かすという単純な操作方法によってオブジェクトの姿勢および位置を制御することができるので、簡単な操作で多彩な動作をオブジェクトに行わせることができる。
【0022】
第4の発明によれば、オブジェクトの位置は、加速度データのみならず平滑化データにも基づいて決定される。これによれば、2種類のデータによってオブジェクトの位置が決定されるので、オブジェクトの位置をより詳細に制御することができる。
【0023】
第5の発明によれば、加速度データにより示される加速度の値と平滑化データにより示される値との差分が算出され、ゲーム処理は当該差分と平滑化データとに基づいて実行される。上記差分は、入力装置の激しい動きに起因する成分のみを示すので、ゲーム装置は当該差分を算出することによって、入力装置の激しい動きをより正確に算出することができる。
【0024】
第6の発明によれば、第3動作制御手段は平滑化データに基づいて第3の動作をオブジェクトに行わせるとともに、第4動作制御手段は差分に基づいて第4の動作を当該オブジェクトに行わせる。すなわち、ゲーム装置は、加速度センサの出力から得られる2つのデータを用いて、1つのオブジェクトに2種類の動作を同時に行わせる。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、1つのオブジェクトに2種類の動作を行わせることができる。つまり、単純な操作方法で多彩な動作をオブジェクトに行わせることが可能となり、ゲームの操作性を向上することができる。
【0025】
第7の発明によれば、平滑化データに基づいてオブジェクトの姿勢が決定されるとともに、差分に基づいてオブジェクトの位置が決定される。これによって、プレイヤは、入力装置自体を動かすという単純な操作方法によってオブジェクトの姿勢および位置を制御することができるので、簡単な操作で多彩な動作をオブジェクトに行わせることができる。
【0026】
第8の発明によれば、オブジェクトの位置は、差分のみならず平滑化データにも基づいて決定される。これによれば、2種類のデータによってオブジェクトの位置が決定されるので、オブジェクトの位置をより詳細に制御することができる。
【0027】
第9の発明によれば、第5動作制御手段は平滑化データに基づいて第1のプレイヤオブジェクトの動作を制御するとともに、第6動作制御手段は差分に基づいて第2のオブジェクトの動作を制御する。すなわち、ゲーム装置は、加速度センサの出力から得られる2つのデータを用いて、互いに異なる2つのオブジェクトの動作を同時に制御する。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、2つのオブジェクトを同時に操作することができる。これによって、単純な操作方法で複数のオブジェクトを操作することが可能となり、ゲームの操作性を向上することができる。
【0028】
第10の発明によれば、第7動作制御手段は平滑化データに基づいて第1のオブジェクトの動作を制御するとともに、第8動作制御手段は加速度データに基づいて第2のオブジェクトの動作を制御する。すなわち、ゲーム装置は、加速度センサの出力から得られる2つのデータを用いて、互いに異なる2つのオブジェクトの動作を同時に制御する。これによって、プレイヤは、入力装置自体を動かすという単純な操作によって、2つのオブジェクトを同時に操作することができる。これによって、単純な操作方法で複数のオブジェクトを操作することが可能となり、ゲームの操作性を向上することができる。
【0029】
第11の発明によれば、平滑化手段は、前回に算出された平滑化データと今回に取得された加速度データとを用いて平滑化を行う。これによれば、現時点ですでに取得されているデータのみを用いて平滑化データを算出することができるので、平滑化データをリアルタイムに算出することができ、高い応答性のゲーム操作を実現することができる。
【0030】
第12の発明によれば、ゲーム装置は、入力装置の傾きを平滑化データに基づいて算出するとともに、入力装置の動きを加速度データに基づいて算出する。したがって、ゲーム装置は、入力装置の傾きおよび動きという2種類の状態を1つのセンサから得ることができる。つまり、ゲーム装置は、入力装置の傾きおよび動きを同時に検出することができる。
【発明を実施するための最良の形態】
【0031】
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、当該ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本発明のゲーム装置およびゲームプログラムについて説明する。
【0032】
図1において、ゲームシステム1は、家庭用テレビジョン受像機等のスピーカを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作データを与えるコントローラ7によって構成される。また、モニタ2の周辺(図では画面の上側)には、2つのマーカ8aおよび8bが設置される。マーカ8aおよび8bは、具体的には赤外LEDであり、それぞれモニタ2の前方に向かって赤外光を出力する。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される操作データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。なお、他の実施形態においてはコントローラ7とゲーム装置3とは有線で接続されてもよい。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
【0033】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0034】
コントローラ7は、その内部に備える通信部36(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて操作データを無線送信する。コントローラ7は、複数の操作ボタンからなる操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、直線方向の加速度を検出する加速度センサ37(後述)を備えている。加速度センサ37によって検出された加速度を示すデータは上記操作データの一部としてゲーム装置3へ送信される。ゲーム装置3は、当該加速度を示すデータに基づいてコントローラ7の傾き(姿勢)および動きを算出し、傾きおよび動きに応じた処理を適宜実行することができる。また、コントローラ7は、当該コントローラ7から見た画像を撮像するための撮像情報演算部35(後述)を備えている。撮像情報演算部35は、モニタ2の周辺に配置された各マーカ8aおよび8bを撮像対象として、各マーカ8aおよび8bの画像を撮像する。ゲーム装置3は、この画像に基づいた演算処理によってコントローラ7の位置および姿勢に応じた処理を実行することができる。
【0035】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0036】
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)10を備える。CPU10は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ13等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU10には、メモリコントローラ11を介して、GPU(Graphics Processing Unit)12、メインメモリ13、DSP(Digital Signal Processor)14、およびARAM(Audio RAM)15が接続される。また、メモリコントローラ11には、所定のバスを介して、コントローラI/F(インターフェース)16、ビデオI/F17、外部メモリI/F18、オーディオI/F19、およびディスクI/F21が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ22、およびディスクドライブ20が接続されている。
【0037】
GPU12は、CPU10の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU12は、図示しない画像処理専用のメモリやメインメモリ13の一部の記憶領域を用いて画像処理を行う。GPU12は、これらを用いてモニタ2に表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ11およびビデオI/F17を介してモニタ2に出力する。
【0038】
メインメモリ13は、CPU10で使用される記憶領域であって、CPU10の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ13は、CPU10によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ13に記憶されたゲームプログラムや各種データ等がCPU10によって実行される。
【0039】
DSP14は、ゲームプログラム実行時にCPU10において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM15が接続される。ARAM15は、DSP14が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP14は、ARAM15に記憶されたサウンドデータを読み出し、メモリコントローラ11およびオーディオI/F19を介してモニタ2に備えるスピーカ22に出力させる。
【0040】
メモリコントローラ11は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F16は、例えば4つのコントローラI/Fで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F16を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの操作データを受信し、コントローラI/F16を介して当該操作データをCPU10へ出力する。なお、他の実施形態においては、ゲーム装置3は、受信ユニット6に代えて、コントローラ7から送信されてくる操作データを受信する受信モジュールをその内部に設ける構成としてもよい。この場合、受信モジュールが受信した操作データは、所定のバスを介してCPU10に出力される。ビデオI/F17には、モニタ2が接続される。外部メモリI/F18には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F19にはモニタ2に内蔵されるスピーカ22が接続され、DSP14がARAM15から読み出したサウンドデータや、ディスクドライブ20から直接出力されるサウンドデータがスピーカ22から出力される。ディスクI/F21には、ディスクドライブ20が接続される。ディスクドライブ20は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F19に出力する。
【0041】
次に、図3〜図8を参照して、コントローラ7について説明する。図3〜図4は、コントローラ7の外観構成を示す斜視図である。図3Aは、コントローラ7の上側後方から見た斜視図であり、図3Bは、コントローラ7を下側後方から見た斜視図である。図4は、コントローラ7を前方から見た図である。
【0042】
図3A〜図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すz軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ7を用いることによって、それに設けられたボタンを押下すること、コントローラ7自体の傾き(重力方向に対する角度)を変えること、および、コントローラ7自体の位置や向きを変えることによってゲーム操作を行うことができる。例えば、プレイヤは、コントローラ7の傾きを変化させたり、コントローラ7を動かしたりする(例えば、コントローラ7を上下方向に振る)ことによって、ゲーム空間に登場する操作対象に対する操作を行うことができる。また、例えば、プレイヤは、長手方向を軸としてコントローラ7を回転させたり、コントローラ7によって指し示される画面上の位置を変えたりする操作によって、操作対象に対する操作を行うことができる。ここで、「コントローラ7によって指し示される画面上の位置」とは、理想的には、コントローラ7の前端部から上記長手方向に延ばした直線とモニタ2の画面とが交わる位置であるが、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置3によって算出することができればよい。以下では、コントローラ7によって指し示される画面上の位置を「コントローラ7の指示位置」と呼ぶ。また、コントローラ7(ハウジング31)の長手方向を、「コントローラ7の指示方向」と呼ぶことがある。
【0043】
ハウジング31には、複数の操作キーが設けられる。ハウジング31の上面には、十字キー32a、Xボタン32b、Yボタン32c、Aボタン32d、セレクトスイッチ32e、メニュースイッチ32f、およびスタートスイッチ32gが設けられる。一方、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作キー(ボタン)は、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないためここでは詳細な説明を省略する。また、ハウジング31の上面には、遠隔からゲーム装置3本体の電源をオン/オフするための電源スイッチ32hが設けられる。
【0044】
また、コントローラ7は撮像情報演算部35(図5B)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射口35aが設けられる。一方、ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、例えば32ピンのエッジコネクタであり、コントローラ7に他の機器を接続するために利用される。また、ハウジング31上面の後面側には複数のLED34が設けられる。ここで、コントローラ7には、他のコントローラ7と区別するためにコントローラ種別(番号)が付与される。LED34は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7からゲーム装置3へ操作データを送信する際、上記コントローラ種別に応じて複数のLED34のいずれか1つが点灯する。
【0045】
次に、図5Aおよび図5Bを参照して、コントローラ7の内部構造について説明する。図5Aおよび図5Bは、コントローラ7の内部構造を示す図である。なお、図5Aは、コントローラ7の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bは、コントローラ7の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bに示す斜視図は、図5Aに示す基板300を裏面から見た斜視図となっている。
【0046】
図5Aにおいて、ハウジング31の内部には基板300が固設されており、当該基板300の上主面上に操作キー32a〜32h、加速度センサ37、LED34、水晶振動子46、無線モジュール44、およびアンテナ45等が設けられる。そして、これらは、基板300等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。また、無線モジュール44およびアンテナ45によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子46は、後述するマイコン42の基本クロックを生成する。
【0047】
一方、図5Bにおいて、基板300の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ7の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41によって構成されおり、それぞれ基板300の下主面に取り付けられる。また、基板300の下主面上の後端縁にコネクタ33が取り付けられる。そして、撮像情報演算部35の後方であって基板300の下主面上にAボタン32iが取り付けられていて、それよりさらに後方に電池47が収容される。電池47とコネクタ33との間の基板300の下主面上には、バイブレータ48が取り付けられる。このバイブレータ48は、例えば振動モータやソレノイドであってよい。バイブレータ48が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームを実現することができる。
【0048】
なお、図3A〜図5Bに示したコントローラ7の形状や、各操作キーの形状、数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができることは言うまでもない。また、コントローラ7における撮像情報演算部35の位置(撮像情報演算部35の光入射口35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。このとき、上記「コントローラ7の指示方向」は、光入射口に垂直な方向、すなわち、撮像素子40の撮像方向となる。
【0049】
図6は、コントローラ7の構成を示すブロック図である。コントローラ7は、操作部32(各操作キー)、撮像情報演算部35、通信部36、および加速度センサ37を備えている。なお、本実施形態において、コントローラ7は、加速度検出手段(加速度センサ37)を備えていればよく、操作部32および撮像情報演算部35を備えていない構成であってもよい。
【0050】
加速度センサ37は、コントローラ7の加速度(重力加速度を含む)を検出する、すなわち、コントローラ7に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度の値を検出する。例えば、2軸または3軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度(直線加速度)をそれぞれ検出する。例えば、この3軸または2軸の加速度センサ37は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。
【0051】
本実施形態では、加速度センサ37は、コントローラ7を基準とした上下方向(図3Aおよび図3Bに示すy軸方向)、左右方向(図3Aおよび図3Bに示すx軸方向)および前後方向(図3Aおよび図3Bに示すz軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ7を基準に設定されるxyz座標系における3次元のベクトルとして表される。以下では、加速度センサ37によって検出される各軸の加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【0052】
図7および図8は、コントローラ7の傾きと加速度センサの出力との関係を示す図である。図7は、重力加速度(図7に示すベクトルVa)がコントローラ7を基準とした下方向を向く状態を示している。なお、図7および図8では、コントローラ7は静止した状態にあるものとする。加速度センサ37が静止した状態においては、コントローラ7には常に重力(重力加速度)が加わっているので、加速度ベクトルVaは重力加速度のみを示すものとなる。例えば、図7に示す状態においては加速度ベクトルVaはy軸負方向を向く。つまり、加速度センサ37のy軸に1Gの重力加速度が加わり、x軸およびz軸の加速度はほぼ0となる。一方、図8は、図7に示す状態から、z軸を中心として回転させるようにコントローラ7を傾けた状態を示している。図8に示す状態では、加速度ベクトルVaの向きは図7に示す状態から変化し、加速度ベクトルVaのx座標値およびy座標値が0でない値となり、z軸を中心として回転させているのでz座標値は0となる。このように、加速度センサ37によって検出される加速度ベクトルの向きはコントローラ7の姿勢によって変化するので、当該加速度ベクトルを用いることによってコントローラ7の傾き(姿勢)を算出することができる。
【0053】
加速度センサ37が検出した加速度(加速度ベクトル)を示すデータ(加速度データ)は、通信部36へ出力される。なお、本実施形態では、コントローラ7の通信部36は、逐次(具体的には1フレーム時間毎)に加速度データをゲーム装置3へ出力する。ゲーム装置3は、この加速度データからコントローラ7の傾き(姿勢)および動きを算出し、当該傾きおよび動きに応じたゲーム処理を実行する。なお、加速度センサ37は、各軸に沿った直線成分の加速度を検出するものであるので、ゲーム装置3は、コントローラ7の傾きを直接検出することはできない。このため、加速度センサ37を搭載したデバイスの傾きは、加速度センサの各軸毎に検出される加速度に所定の演算処理を施すことによって算出される。
【0054】
また、本実施形態においては、コントローラ7が静止している状態で加速度センサ37によって検出される加速度の大きさ、すなわち、加速度センサ37によって検出される加速度が重力加速度のみを表すときの当該加速度の大きさを、1と表す。例えば、図7に示す状態において検出される加速度ベクトルVaの各成分の値は、(x,y,z)=(0,−1,0)となる。
【0055】
図6の説明に戻り、撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ7の動きでも追跡して解析することができる。
【0056】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ7の前方から入射する光から赤外線のみを通過させる。ここで、モニタ2の表示画面近傍に配置されるマーカ8aおよび8bは、モニタ2の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ38を設けることによってマーカ8aおよび8bの画像をより正確に撮像することができる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ39が集光した赤外線を撮像する。したがって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ8aおよび8b)の位置を算出する。
【0057】
撮像画像が入力されると、画像処理回路41は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。ここで、所定条件とは、撮像対象の画像(対象画像)を特定するための条件であり、所定条件の具体的な内容は、輝度が所定値以上の領域(高輝度領域)であり、かつ、領域の大きさが所定範囲内の大きさであることである。なお、所定条件は撮像対象を特定するための条件であればよく、他の実施形態においては、画像の色に関する条件を含んでいてもよい。
【0058】
対象画像の位置を算出する際、まず、画像処理回路41は、撮像画像の領域から上記高輝度領域を対象画像の候補として特定する。撮像画像の画像データにおいて対象画像は高輝度領域として現れるからである。次に、画像処理回路41は、特定された高輝度領域の大きさに基づいて、その高輝度領域が対象画像であるか否かを判定する判定処理を行う。撮像画像には、対象画像である2つのマーカ8aおよび8bの画像の他、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれている場合がある。この場合、マーカ8aおよび8bの画像以外の画像も高輝度領域として現れてしまう。上記の判定処理は、対象画像であるマーカ8aおよび8bの画像とそれ以外の画像とを区別し、対象画像を正確に特定するための処理である。具体的には、当該判定処理においては、特定された高輝度領域が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度領域が所定範囲内の大きさである場合、当該高輝度領域は対象画像を表すと判定され、高輝度領域が所定範囲内の大きさでない場合、当該高輝度領域は対象画像以外の画像を表すと判定される。
【0059】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度領域について、画像処理回路41は当該高輝度領域の位置を算出する。具体的には、当該高輝度領域の重心位置を算出する。なお、重心位置は撮像素子40の解像度よりも詳細なスケールで算出することが可能である。例えば、撮像素子40によって撮像された撮像画像の解像度が126×96である場合でも、重心位置を1024×768のスケールで算出することが可能である。このとき、重心位置の座標は、(0,0)から(1024,768)までの整数値で表現される。
【0060】
以上のようにして、画像処理回路41は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。画像処理回路41は、算出された座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。この座標はコントローラ7自体の向き(姿勢)や位置に対応して変化するので、ゲーム装置3はこの座標値を用いてコントローラ7の向きや位置を算出することができる。なお、本実施形態では、上記座標のデータはゲーム処理に用いられないので、コントローラ7は撮像情報演算部35を備えていない構成であってもよい。
【0061】
操作部32は、上述した十字キー32a等の各操作キー32a〜32iに相当し、各操作キー32a〜32iに対する入力状態(各操作キー32a〜32iが押下されたか否か)を示すデータを通信部36のマイコン42へ出力する。
【0062】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理の際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータを無線送信する無線モジュール44を制御する。
【0063】
操作部32および撮像情報演算部35および加速度センサ37からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。ここで、通信部36から受信ユニット6への無線送信は所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。マイコン42は、受信ユニット6への送信タイミングが到来すると、メモリ43に格納されているデータを操作データとして無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ7から送信される。微弱電波信号はゲーム装置3側の受信ユニット6で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。
【0064】
上記コントローラ7を用いることによって、プレイヤは、各操作キーを押下する従来の一般的なゲーム操作に加えて、コントローラ7の姿勢を変化させたり、コントローラ7自身の位置を動かしたり、コントローラ7を回転させたりするというゲーム操作を行うことができる。
【0065】
図9は、コントローラ7を用いてゲーム操作するときの状態を概説する図解図である。図9に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ7を把持する。ここで、マーカ8aおよび8bは、モニタ2の画面の横方向と平行に、画面の上側に配置されている。なお、他の実施形態においては、マーカ8aおよび8bの配置位置、ならびに、2つのマーカ8aおよび8bを配置する向きは任意であり、例えば、マーカ8aおよび8bが画面の下側に配置されてもよいし、2つのマーカ8aおよび8bが画面の縦方向に沿って配置されてもよい。本実施形態では、プレイヤは、コントローラ7を把持し、コントローラ7の傾きを変化させたり、コントローラ7を上下に動かしたりすることによってゲーム操作を行う。
【0066】
以下、上述したゲームシステム1を用いて行われるゲームの具体例について説明する。図10は、本実施形態においてモニタ2に表示されるゲーム画面の一例を示す図である。図10に示すように、モニタ2には、鳥を模したオブジェクト51が表示される。本実施形態では、画面の奥に向かってオブジェクト51が移動するゲーム画像が表示される場合を例として説明するが、他の実施形態においては、オブジェクトが画面の左右方向または上下方向に移動するとともに、背景の画像が左右方向または上下方向にスクロールするゲーム画像を表示するようにしてもよい(後述する図21参照)。
【0067】
本ゲームは、このオブジェクト51を操作して遊ぶゲームである。ゲームのプレイヤは、ゲーム操作によってオブジェクト51に2種類の動作を行わせることが可能である。第1の動作は、オブジェクト51自身の傾きを変化させる動作である。第2の動作は、オブジェクト51の翼を羽ばたかせる動作である。プレイヤは、これら2種類の動作を行わせることによって、2次元または3次元の仮想のゲーム空間である空中においてオブジェクト51を移動させる。
【0068】
図11は、オブジェクト51が第1の動作を行っている場合のゲーム画面の一例を示す図である。図11に示す矢印のように、オブジェクト51は、画面に垂直な軸を中心に回転するように傾きを変化させることが可能である。ゲーム装置3は、コントローラ7の長手方向を軸とした回転に関する傾きに応じてオブジェクト51の第1の動作を制御する。例えば、コントローラ7の上面が上方向を向く状態(図7に示す状態)から、z軸負方向から正方向の向きに見て右回りに所定角度だけコントローラ7を回転させた場合、図11に示すように、右回りに所定角度だけ回転するようにオブジェクト51の姿勢が制御される。上述した図7および図8において示したように、コントローラ7が静止した状態にある場合、コントローラ7の傾きは、加速度センサ37によって検出される加速度ベクトルに基づいて算出することができる。なお、本実施形態の説明では、「コントローラ7の回転」とは「コントローラ7の長手方向を軸とした回転」を指し、「コントローラ7の傾き」とは「コントローラ7の長手方向を軸とした回転量に関する傾き」を指すものとする。
【0069】
図12は、オブジェクト51が第2の動作を行っている場合のゲーム画面の一例を示す図である。図12に示すように、オブジェクト51は、翼を上下に羽ばたかせる動作を行うことが可能である(図12に示す矢印参照)。ゲーム装置3は、コントローラ7の上下方向(y軸方向)に関する動きに応じてオブジェクト51の第2の動作を制御する。コントローラ7の上下方向に関する動きは、上記加速度ベクトルから算出可能である。以下、加速度ベクトルからコントローラ7の上下方向に関する動きを算出する方法を説明する。
【0070】
図13および図14は、コントローラ7の動きと加速度ベクトルとの関係を示す図である。図13においては、コントローラ7は静止されておらず、ある大きさの加速度で上方向に動かされている。このとき、加速度センサ37の検出部には、重力に加えて下向きの慣性力が加えられる。そのため、加速度センサ37によって検出される加速度ベクトルVaは、静止状態において検出される加速度ベクトルよりも大きさが大きくなる。具体的には、図13に示す状態において検出される加速度ベクトルVaのy成分は、−1よりも小さい値となる。
【0071】
一方、図14においては、コントローラ7は、ある大きさの加速度で下方向に動かされている。このとき、加速度センサ37の検出部には、重力に加えて上向きの慣性力が加えられる。そのため、加速度センサ37によって検出される加速度ベクトルVaは、静止状態において検出される加速度ベクトルよりも大きさが小さくなったり、場合によってはその向きが逆になったりする。具体的には、図14に示す状態において検出される加速度ベクトルVaのy成分は、−1よりも大きい値となる。図14においては、上向きの慣性力の大きさが重力よりも大きいために、加速度ベクトルVaのy成分は正の値となっている。
【0072】
以上のように、コントローラ7の上下方向に関する移動に応じて加速度ベクトルVaのy成分の値が変化するので、ゲーム装置3は、加速度ベクトルVaに基づいてコントローラ7の上下方向の動きを算出することができる。本実施形態では、ゲーム装置3は、コントローラ7の上下方向の動きに応じてオブジェクト51が羽ばたくように翼の動きを制御する。したがって、プレイヤがコントローラ7を上下に振ると、オブジェクト51の翼が上下に動かされる(図12に示す矢印参照)。そして、オブジェクト51が羽ばたき動作を行う場合、ゲーム装置3は、オブジェクト51を上昇させる。なお、オブジェクト51が羽ばたき動作を行っていない間、ゲーム装置3は、オブジェクト51をゆっくりと下降させる。したがって、プレイヤは、オブジェクト51が落下してしまわないように、適宜のタイミングでコントローラ7の上下方向に動かすことによって、オブジェクト51に羽ばたき動作を行わせる。
【0073】
上述したように、ゲーム装置3は、コントローラ7の傾きを変化させる操作と、コントローラ7を上下に動かす操作とに従って、オブジェクト51の動作を制御する。ここで、図7および図8において示したように、コントローラ7が静止状態にある場合、加速度ベクトルからコントローラ7の傾きを算出することは可能である。しかし、コントローラ7が静止状態にない場合、すなわち、コントローラ7が上下に動かされている場合、加速度ベクトルをそのまま用いるとコントローラ7の傾きを正確に算出することはできない。例えば、図14に示す状態では、コントローラ7の上面が上方向を向いているにもかかわらず加速度ベクトルVaは上方向を向いており、本来の向きとは逆になっている。このとき、ゲーム装置3は、コントローラ7の傾きを正確に算出することはできず、コントローラ7の傾きを正しい向きとは逆向きに算出してしまう。コントローラ7の傾きは、コントローラ7に加わる重力加速度の向きを検出することによって算出することが可能となる。しかし、コントローラ7が動かされている時にはコントローラ7に慣性力が加わるので、コントローラ7に加わる重力加速度のみを検出することはできず、コントローラ7の傾きを正確に算出することができない。
【0074】
そこで、本実施形態では、ゲーム装置3は、逐次検出される加速度の値を平滑化し、平滑化によって得られた値を用いてコントローラ7の傾きを算出する。ここで、コントローラ7の上下方向に関する動きは、加速度信号(逐次検出される加速度の値を時系列に並べた信号)の激しく変動する成分として現れる。すなわち、コントローラ7を上下方向に動かす頻度とほぼ同様の頻度で加速度が変動する。一方、コントローラ7の傾きは、加速度信号の緩やかに変動する成分として現れる。したがって、加速度信号から上記激しく変動する成分を除去することによって、コントローラ7の傾きに対応する成分を抽出することができる。すなわち、ゲーム装置3は、加速度信号を平滑化した値を用いることによって、コントローラ7の傾きを正確に算出することができる。
【0075】
図15は、加速度センサ37によって検出された加速度の値と、当該検出された加速度を平滑化した値とを示す図である。なお、本実施形態では加速度ベクトルのz成分の値は無関係であるので、図15においては加速度ベクトルの値を2次元のxy座標によって表している。図15に示す点線は、その上面が上方向を向いた状態で静止状態にあったコントローラ7を上下方向に振りながら、z軸負方向から正方向の向きに見て右回りに所定角度だけ、当該コントローラ7をz軸周りに次第に回転させた場合に検出される加速度信号(加速度ベクトルの推移)を示している。つまり、加速度ベクトルは、xy座標系の原点を始点とし、図15に示す点線上を終点とするように推移する。また、図15に示す実線は、点線で示す加速度信号を理想的に平滑化した信号を示している。上記の場合にはコントローラ7が上下に振られるので、検出される加速度信号そのものの値は、図15に示す点線のように、y成分の値が激しく変動するように変化する。一方、コントローラ7はz軸周りに次第に回転させられるので、回転による加速度信号のxy成分の値の変動は、コントローラ7の振りによるy成分の変動よりも緩やかに変化していく。したがって、点線で示される加速度信号を平滑化して激しく変動する成分を除去することによって、実線で示される信号を得ることができる。なお、本実施形態では、x成分およびy成分からなる2次元の加速度ベクトルを平滑化しているので、平滑化された結果も2次元のベクトルとなる。以下では、平滑化されたベクトルを平滑化ベクトルと呼ぶ。上記実線で示される信号は、xy座標系の原点を始点とし、当該実線上を終点とする平滑化ベクトルの推移を示している。つまり、上記実線は、コントローラ7の傾きの変化を表している。このように、加速度センサ37によって検出された加速度信号を平滑化することによって、コントローラ7の傾きの変化を表す信号を得ることができる。
【0076】
以上のように、本実施形態によれば、ゲーム装置3は、加速度センサ37によって検出された加速度の値をそのまま用いてコントローラ7の動きを算出するとともに、当該検出された加速度を平滑化した値を用いてコントローラ7の傾きを算出する。これによれば、ゲーム装置3は、加速度センサ37によって検出された加速度ベクトルから、コントローラ7の動きおよび傾きを同時に算出することができる。したがって、ゲーム装置3は、1つのセンサによって、コントローラ7の傾きおよび動きという2種類の状態を同時に得ることができる。
【0077】
次に、本実施形態においてゲーム装置3で実行されるプログラム処理について説明する。まず、ゲーム処理において用いられる主なデータについて図16を用いて説明する。図16は、ゲーム装置3のメインメモリ13に記憶される主なデータを示す図である。図16に示すように、メインメモリ13には、ゲームプログラム61、操作データ62、およびゲーム処理用データ63等が記憶される。なお、メインメモリ13には、図16に示すデータの他、ゲームに登場するオブジェクトの画像データ等、ゲーム処理に必要なデータが記憶される。
【0078】
ゲームプログラム61は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリ13に記憶される。ゲームプログラム61には、後述するゲーム処理の実行に必要なプログラムが含まれている。
【0079】
操作データ62は、コントローラ7からゲーム装置3へ送信されてきて、メインメモリ13に記憶される。操作データ62には、加速度データ621が含まれる。加速度データ621は、加速度センサ37によって検出された加速度ベクトルVaを示すデータである。なお、操作データ62には、加速度データ621の他、撮像画像内における撮像対象(マーカ8aおよび8b)の位置を示すデータや、操作部32の各ボタンに対して行われた操作内容を示すデータが含まれていてもよい。
【0080】
ゲーム処理用データ63は、後述するゲーム処理において用いられるデータである。ゲーム処理用データ63は、平滑化データ631、オブジェクト姿勢データ632、オブジェクト速度データ633、オブジェクト位置データ634、翼角データ635、前回翼角データ636、および翼速度データ637を含む。
【0081】
平滑化データ631は、逐次検出される加速度ベクトルからなる加速度信号を平滑化することによって得られる値を示すデータである。ここでは、平滑化データ631は、加速度ベクトルのx成分およびy成分を平滑化することによって得られる2次元のベクトル(平滑化ベクトル)である。平滑化データ631は、加速度データが取得される度に算出され、取得された加速度データと、前回に算出された平滑化データとに基づいて算出される。
【0082】
データ632〜637は、オブジェクト51に関するパラメータである。図17は、オブジェクト51に関する各パラメータを示す図である。オブジェクト姿勢データ632は、オブジェクト51の姿勢を示すデータである。オブジェクト51の姿勢は、オブジェクト51の上方向が向いている方向を表すベクトルVu(図17参照)によって表される。このベクトルVuは、画面上の位置を示すXY座標系におけるベクトルである。なお、本実施形態では、XY座標系は、画面の右方向をX軸正方向とし、画面の上方向をY軸正方向とする座標系である(図17参照)。
【0083】
オブジェクト速度データ633は、オブジェクト51の速度、すなわち、オブジェクト51が画面上において単位時間(1フレーム時間)当たりに移動する移動量および移動方向を表すベクトルを示すデータである。具体的には、オブジェクト速度データ633は、上記XY座標系における2次元のベクトルを示す。また、オブジェクト位置データ634は、画面上におけるオブジェクト51の位置P(図17参照)を示すデータである。具体的には、オブジェクト位置データ634は、上記XY座標系における座標値を示す。オブジェクト位置データ634は、オブジェクト速度データ633に基づいて算出される。
【0084】
翼角データ635は、オブジェクト51の翼の角度θを示すデータである。図17に示すように、オブジェクト51の翼の角度θは、オブジェクト51を基準として翼が真横を向いている状態を0°とし、翼が真横よりも上側に向いた状態を正とし、翼が真横よりも上側に向いた状態を負とする角度で表される。また、翼の角度θは、−90°≦θ≦90°の範囲内の値をとる。また、前回翼角データ636は、前回に算出された翼角データ635である。
【0085】
翼速度データ637は、オブジェクト51の翼の角度の単位時間(1フレーム時間)当たりの変化量を示すデータである。具体的には、翼速度データ637は、今回算出された翼の角度と、前回に算出された翼の角度との差分Δθを示す。
【0086】
次に、ゲーム装置3において行われる処理の詳細を、図18〜図20を用いて説明する。図18は、ゲーム装置3において実行される処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ13等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ13に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図18に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0087】
まず、ステップS1において、以降の処理において用いられるデータの初期化処理が実行される。すなわち、CPU10は、平滑化データ631、オブジェクト速度データ633、オブジェクト位置データ634、および前回翼角データ636の内容を次のように設定してメインメモリ13に記憶する。平滑化データ631の内容は、xy座標系において(0,−1)を表す2次元ベクトルに設定される。オブジェクト速度データ633の内容は、XY座標系において(0,0)を表す2次元ベクトルに設定される。オブジェクト位置データ634の内容は、XY座標系における予め定められた初期位置を示す座標値に設定される。前回翼角データ636の内容は、0°に設定される。ステップS1の実行後、ステップS2〜S6の処理ループが1フレーム毎に繰り返されることによって、ゲームが進行していく。
【0088】
ステップS2において、CPU10は、コントローラ7から操作データを取得する。すなわち、コントローラ7は所定時間間隔(例えば、1フレーム時間間隔以内)で操作データをゲーム装置3へ送信してくるので、CPU10は、送信されてきた操作データをメインメモリ13に記憶する。この操作データには、少なくとも上記加速度データが含まれている。CPU10は、加速度データをメインメモリ13に記憶する。なお、本実施形態においてステップS2の処理は1フレーム時間毎に実行されるので、ゲーム装置3は、加速度データを逐次取得することができる。
【0089】
続くステップS3において、ステップS2で取得された加速度データに基づいて平滑化ベクトルが算出される。本実施形態では、CPU10は、平滑化ベクトルは、ステップS2で取得された加速度データ621により示される加速度ベクトルと、前回の平滑化ベクトルとを用いて算出される。なお、前回の平滑化ベクトルは、ステップS3の実行直前の時点でメインメモリ13に記憶されている平滑化データ631により示されるベクトルである。具体的には、平滑化ベクトル(bx,by)は次式(1)に従って算出される。
bx=bx’+(ax−bx’)×k1
by=by’+(ay−by’)×k1 …(1)
上式(1)において、変数axは加速度ベクトルのx成分の値であり、変数ayは加速度ベクトルのy成分の値である。変数bx’は前回の平滑化ベクトルのx成分の値であり、変数by’は前回の平滑化ベクトルのy成分の値である。定数k1の値は予め定められている。定数k1は、コントローラ7の上下方向の動きに応じた加速度ベクトルの変化を除去すべく、例えばk1=0.03に設定される。ステップS3において算出された平滑化ベクトル(bx,by)を示すデータは、平滑化データとしてメインメモリ13に記憶される。
【0090】
図19は、平滑化ベクトルの算出方法を説明するための図である。図19において、ベクトルVaは加速度ベクトル(x成分およびy成分のみ)であり、ベクトルVb’は前回の平滑化ベクトルである。このとき、上式(1)から、算出すべき平滑化ベクトルはベクトルVbと算出される。図19に示すように、平滑化ベクトルVbは、前回の平滑化ベクトルVb’を加速度ベクトルVaの方向に所定の割合(k)で近づけたベクトルとなる。具体的には、平滑化ベクトルVbは、原点を始点とし、前回の平滑化ベクトルVb’の終点と加速度ベクトルVaの終点とを結ぶ線分をk:(1−k)に内分する点Pを終点とするベクトルとなる。図19に示すように、本実施形態では、加速度ベクトルの変化に追従して変化する平滑化ベクトルを算出することによって、加速度センサ37により検出された加速度を平滑化する。
【0091】
図18の説明に戻り、ステップS3の次のステップS4において、オブジェクト制御処理が実行される。オブジェクト制御処理は、ステップS2およびS3で得られた加速度データおよび平滑化データに基づいてオブジェクト51の動作を制御するゲーム処理である。以下、図20を参照してオブジェクト制御処理の詳細について説明する。
【0092】
図20は、図18に示すオブジェクト制御処理(ステップS4)の詳細を示すフローチャートである。オブジェクト制御処理においては、まずステップS11において、CPU10はオブジェクト51の姿勢を算出する。オブジェクト51の姿勢は、コントローラ7の姿勢に基づいて、すなわち、上記平滑化データ631に基づいて算出される。具体的には、CPU10は、オブジェクト51の姿勢を示すベクトルVu=(UX,UY)を次式(2)に従って算出する。
UX=bx
UY=−by …(2)
上式(2)において、変数bxは、平滑化データ631により示される平滑化ベクトルのx成分の値であり、変数byは当該平滑化ベクトルのy成分の値である。上式(2)によって、xy座標系における方向を示す平滑化ベクトルがXY座標系における方向を示すベクトルVuに変換されたこととなる。ステップS11において算出されたベクトルVuを示すデータは、オブジェクト姿勢データ632としてメインメモリ13に記憶される。
【0093】
続くステップS12において、CPU10は、オブジェクト51の翼の角度を算出する。翼の角度θは、コントローラ7の上下方向の動きに基づいて、すなわち、上記加速度データ621に基づいて算出される。具体的には、CPU10は、翼の角度θを次式(3)に従って算出する。
θ=(ay−by)×k2 …(3)
上式(3)において、変数ayは、加速度データ621により示される加速度ベクトルのy成分の値であり、変数byは、平滑化データ631により示される平滑化ベクトルのy成分の値である。また、定数k2は予め定められている。定数k2の値は、翼の角度θが−90°≦θ≦90°の範囲の値をとるように、変数ayの取りうる範囲(加速度センサ37の測定可能範囲)を考慮して定められる。
【0094】
なお、加速度ベクトルのy成分そのもの(変数ay)には、コントローラ7の振りに起因する成分と、コントローラ7の回転に起因する成分(変数by)とが含まれている。上式(3)においては、加速度ベクトルのy成分のうちから、コントローラ7の振りに起因する成分を抽出するために、加速度ベクトルのy成分ayと平滑化ベクトルのy成分byとの差分を算出している。これによって、コントローラ7の振りに起因する成分のみを抽出することができるので、コントローラ7の動き(振り)をより正確に算出することができる。また、上記差分を用いて翼の角度θを算出することによって、コントローラ7が静止状態となった時点(すなわち、ay=byとなる時点)ではθ=0となる。これによって、コントローラ7が静止した状態ではオブジェクト51の翼は左右に水平な傾きとなるので、オブジェクト51の動作をより自然に表現することができる。なお、他の実施形態においては、上式(3)において、上記差分(ay−by)に代えて加速度ベクトルそのもの(変数ay)を用いるようにしてもよい。つまり、オブジェクトの翼の角度θ(ひいては、角度θに基づいて決められるオブジェクトの速度または位置)は、加速度ベクトルのみに基づいて算出されてもよい。
【0095】
ステップS12で算出された翼の角度θを示すデータは、翼角データ635としてメインメモリ13に記憶される。このとき、ステップS13において翼速度を算出する際に用いる目的で、更新前の翼角データ635の内容は、新たな前回翼角データ636としてメインメモリ13に記憶される。
【0096】
続くステップS13において、CPU10は、オブジェクト51の翼の速度を算出する。翼の速度Δθは、翼角データ635により示される翼の角度θと、前回翼角データ636により示される翼の角度θ’とに基づいて算出される。CPU10は、翼の速度Δθを次式(4)に従って算出する。
Δθ=θ−θ’ …(4)
ステップS13で算出された翼の速度Δθを示すデータは、翼速度データ637としてメインメモリ13に記憶される。
【0097】
ステップS13の次に、ステップS14〜S16の一連の処理によってオブジェクト51の速度が決定される。まず、ステップS14において、CPU10は、オブジェクト51の速度を算出する。なお、ステップS14で算出される速度は、仮の速度であり、後述するステップS16において必要に応じて補正されることがある。ステップS14において、オブジェクト51の速度は、前回のオブジェクトの速度に基づいて算出される。なお、前回のオブジェクトの速度は、ステップS14の直前の時点でメインメモリ13に記憶されているオブジェクト速度データ633により示される。CPU10は、オブジェクト51の仮の速度V”=(VX”,VY”)を次式(5)に従って算出する。
VX”=VX’×k3
VY”=VY’×k3+g …(5)
上式(5)において、変数VX’は、前回のオブジェクトの速度を示すベクトルのX成分の値であり、変数VY’は、前回のオブジェクトの速度を示すベクトルのY成分の値である。また、定数k3および定数gは予め定められている。定数k3は、前回の速度が減衰されるように、0<k3<1の範囲で設定される。定数gは、仮想の重力によってオブジェクト51が画面の下方向に移動するように、g<0の範囲で設定される。ステップS14で算出されたオブジェクト51の速度Vを示すデータは、オブジェクト速度データ633としてメインメモリ13に記憶される。
【0098】
続くステップS15において、CPU10は、オブジェクト51の翼が下方に移動しているか否かを判定する。ステップS15の判定は、翼速度データ637により示される翼の速度Δθに基づいて行われる。すなわち、翼の速度Δθが負の値であれば、オブジェクト51の翼が下方に移動していると判定され、翼の速度Δθが0または正の値であれば、オブジェクト51の翼が下方に移動していないと判定される。ステップS15の判定の結果、オブジェクト51の翼が下方に移動していると判定される場合にはステップS16の処理が実行される。ステップSの処理が実行される場合、ステップS14で算出された仮の速度が補正されて、補正後の速度がオブジェクト51の速度に決定されることとなる。一方、オブジェクト51の翼が上方に移動していると判定される場合にはステップS16の処理がスキップされてステップS17の処理が実行される。ステップS16の処理がスキップされる場合、ステップS14で算出された仮の速度がそのままオブジェクト51の速度に決定される。
【0099】
ステップS16においては、ステップS14で算出されたオブジェクト51の仮の速度が補正される。仮の速度は、コントローラ7の上下方向の動きに基づいて、具体的には、翼速度データ637により示される翼の速度Δθに基づいて補正される。具体的には、CPU10は、次式(6)に従って補正後の速度V=(VX,VY)を算出する。
VX=VX”+UX×Δθ
VY=VY”+UY×Δθ …(6)
上式(6)において、変数VX”はステップS14で算出された仮の速度を示すベクトルのX成分であり、変数VY”は当該仮の速度を示すベクトルのY成分である。変数UXは、オブジェクト51の姿勢を示すベクトルのX成分の値であり、変数UYは当該ベクトルのY成分の値である。なお、オブジェクト51の姿勢を示すベクトルは、オブジェクト姿勢データ632により示される。
【0100】
上式(6)からわかるように、オブジェクト51の速度は、仮の速度V”に、オブジェクト51を基準とした上方向(オブジェクト51の姿勢を示すベクトルの方向)の速度を加算することによって算出される。したがって、本実施形態においては、コントローラ7の上下方向の動きに応じて翼が下方向に移動する場合、オブジェクト51を基準とした上方向の速度がオブジェクト51に与えられ、オブジェクト51は上方向に移動する。つまり、オブジェクト51の位置を変化させる方向(すなわち、速度)は、平滑化ベクトルに基づいて決定されるオブジェクト51の姿勢に基づいて決定される。このように、加速度ベクトルに基づいて決定される変数(本実施形態では翼の速度)と、平滑化ベクトルに基づいて決定される変数(本実施形態ではオブジェクトの姿勢)との両方を用いてオブジェクト51の動作(本実施形態ではオブジェクトの速度)を決定することによって、より複雑なオブジェクトの制御が可能となる。
【0101】
なお、上式(6)では、コントローラ7の上下方向の動きに応じて翼が下方向に移動する場合、オブジェクト51を基準とした上方向の速度がオブジェクト51に与えられる。ここで、他の実施形態では、コントローラ7の動きの方向とオブジェクト51に与えられる速度の方向とは必ずしも一致している必要はない。例えば、他の実施形態では、図21に示すように、鳥を模したオブジェクト51を側面から見たゲーム画像が表示され、オブジェクト51が左右方向を向くように表示されてもよい。この場合、オブジェクト51の姿勢を示すベクトルV1を所定角度θ1だけオブジェクト51の前側に傾けた方向の速度がオブジェクト51に与えられるようにしてもよい。図21においては、ベクトルV2がオブジェクト51の速度を示している。
【0102】
また、式(6)からわかるように、ステップS16の補正において加算される速度は翼の速度Δθの大きさに応じて変化し、翼の速度Δθが大きいほど、加算される速度は大きくなる。したがって、本実施形態においては、コントローラ7を上下方向に速く動かすほど、オブジェクト51は速く移動することとなる。以上のステップS16の補正によって得られたオブジェクト51の速度Vを示すデータは、オブジェクト速度データ633としてメインメモリ13に記憶される。
【0103】
ステップS17においては、CPU10はオブジェクト51の位置を算出する。オブジェクト51の位置は、ステップS14〜S16の処理で算出されたオブジェクト51の速度に基づいて、すなわち、オブジェクト速度データ633により示されるベクトル(VX,VY)に基づいて算出される。具体的には、CPU10は、オブジェクト51の位置を示す座標(PX,PY)を次式(7)に従って算出する。
PX=PX’+VX
PY=PY’+VY …(7)
上式(7)において、変数PX’は、前回のオブジェクト51の位置を示すX座標値であり、変数PY’は、前回のオブジェクト51の位置を示すY座標値である。なお、前回のオブジェクト51の位置を示す座標(PX’,PY’)は、ステップS17の実行時点でメインメモリ13に記憶されているオブジェクト位置データ634により示される。ステップS17で算出された、オブジェクト51の位置を示すデータは、オブジェクト位置データ634としてメインメモリ13に記憶される。ステップS17の処理が終了すると、CPU10はオブジェクト制御処理を終了する。
【0104】
図18の説明に戻り、ステップS4の次のステップS5において、ステップS4で実行されたゲーム処理の結果を反映したゲーム画像が生成されて、ゲーム画像がモニタ2に表示される。このとき、オブジェクト51は、オブジェクト位置データ634により示される位置に、オブジェクト姿勢データ632により示される姿勢となるように表示される。また、オブジェクト51の翼は、翼角データ635により示される角度θに応じた角度となるように表示される。
【0105】
続くステップS6において、CPU10はゲームを終了するか否かを判定する。ステップS6の判定は、例えば、プレイヤがゲームをクリアしたか否かや、ゲームに制限時間が設けられている場合には当該制限時間が経過したか否かによって行われる。ステップS6の判定結果が否定である場合、ステップS2の処理が再度実行され、以降、ゲームを終了すると判定されるまでステップS2〜S6の処理ループが実行される。一方、ステップS6の判定結果が肯定である場合、CPU10は図18に示す処理を終了する。以上で、ゲーム装置3における処理の説明を終了する。
【0106】
以上のように、本実施形態においては、ゲーム装置3は、加速度センサ37によって検出される加速度ベクトルに基づいてオブジェクト51の翼の角度を算出する(ステップS12)。そして、翼の角度に基づいてオブジェクト51の位置を決定する(ステップS13〜S17)。また、ゲーム装置3は、加速度ベクトルを平滑化した平滑化ベクトルに基づいてオブジェクト51の姿勢を算出する(ステップS11)。これによって、ゲーム装置3は、コントローラ7の上下方向の動きに応じてオブジェクト51の翼の角度(オブジェクト51の位置)を制御することができ、それと同時に、コントローラ7の傾きに応じてオブジェクト51の姿勢を制御することができる。
【0107】
なお、上記実施形態においては、加速度を平滑化する方法は、今回取得された加速度ベクトルと前回に算出された平滑化ベクトルとを用いて平滑化ベクトルを算出する方法であった。ここで、加速度を平滑化する方法はこれに限らず、加速度の(相対的に)急激に変化する成分の影響を除去して、(相対的に)緩やかに変化する成分を抽出する方法であれば、どのような方法であってもよい。例えば、他の実施形態においては、所定期間の間に順次検出される複数の加速度ベクトルからなる加速度信号にローパスフィルタを適用することによって、加速度信号の低周波成分を抽出するようにしてもよい。加速度信号の低周波成分を抽出することによって、加速度信号の成分のうちのコントローラ7の回転に起因する成分を抽出することができる。同様に、上記ステップS12において、差分を算出することに代えて、ハイパスフィルタを用いて加速度信号の高周波成分を抽出することによって、加速度信号の成分のうちのコントローラ7の上下方向の動きに起因する成分を抽出することができる。また、ゲーム装置3は、あるフレームにおける平滑化ベクトルを次のように算出してもよい。すなわち、ゲーム装置は、前回のフレームにおいて取得された加速度ベクトルと、当該あるフレームにおいて取得された加速度ベクトルと、次のフレームにおける加速度ベクトルという3つの加速度ベクトルに基づいて、あるフレームにおける平滑化ベクトルを算出してもよい。より具体的には、当該3つの加速度ベクトルの平均値を平滑化ベクトルとしてもよい。なお、上記実施形態における平滑化方法によれば、前回のフレームおよび今回のフレームにおいて取得されるデータのみを用いて平滑化ベクトルを算出することができるので、リアルタイムに平滑化ベクトルを算出することができる。これによって、応答性の高い操作を実現することができるので、操作に高い応答性が要求されるゲームにとって上記実施形態における平滑化方法は非常に有効である。
【0108】
なお、上記実施形態においては、ゲーム装置3は、x軸方向およびy軸方向に関するコントローラ7の傾きをゲーム操作として用いるものであったので、x成分およびy成分からなる2次元の加速度ベクトルを平滑化して2次元の平滑化ベクトルを算出するようにした。ここで、他の実施形態においては、ゲーム装置3は、x軸方向、y軸方向、およびz軸方向の3次元の加速度ベクトルを平滑化して3次元の平滑化ベクトルを算出するようにしてもよい。これによって、ゲーム装置3は、3次元の各方向に関するコントローラ7の傾きを算出することができる。また、他の実施形態においては、ゲーム装置3は、いずれか1軸方向の加速度のみを平滑化し、平滑化した値(スカラー値)を用いてゲーム処理を実行するようにしてもよい。例えば、y軸方向の加速度の大きさのみに基づいてx軸方向およびy軸方向に関するコントローラ7の傾きを推測することが可能である。これによれば、コントローラ7の構成の簡易化およびゲーム処理の簡易化を図ることができる。
【0109】
また、上記実施形態においては、ゲーム装置3は、上下方向(すなわち、y軸方向)に関するコントローラ7の動きを算出するものであったので、加速度ベクトルのうちのy成分のみを用いてゲーム処理を実行した(上式(3))。ここで、他の実施形態においては、ゲーム装置3は、加速度ベクトルのx成分、y成分、およびz成分のうちのいずれか2つまたは3つの成分に基づいてコントローラ7の動きを算出するようにしてもよい。例えば、加速度ベクトルのうちのx成分およびy成分を用いてゲーム処理を実行してもよい。これによれば、上下方向および左右方向に関するコントローラ7の動きをゲーム処理に反映させることができる。
【0110】
また、上記実施形態においては、加速度データおよび平滑化データに基づいて実行されるゲーム処理の一例として、加速度データに基づいてオブジェクトの位置を算出するとともに、平滑化データに基づいてオブジェクトの姿勢を算出するゲーム処理を例として説明した。ここで、本発明は、加速度データおよび平滑化データに基づいて実行される種々のゲーム処理を行うゲーム装置およびゲームプログラムに適用することが可能である。
【0111】
例えば、競馬ゲームに本発明を適用することが考えられる。この競馬ゲームにおいて、プレイヤは、馬に乗った騎手を模したオブジェクトをコントローラ7を用いて操作する。ゲーム装置3は、例えば、加速度データに基づいて馬の速度を決定するとともに、平滑化データに基づいて馬の進行方向を決定する。具体的には、ゲーム装置3は、コントローラ7のz軸周りの回転に関する傾きを平滑化データに基づいて算出する。そして、コントローラ7の傾きに応じて馬の移動方向を決定する。一方、ゲーム装置3は、検出された加速度データを用いてコントローラ7の上下方向の動きを算出することによって、コントローラ7が下向きに動かされたか否かを判断し、オブジェクトの速度を算出する。具体的には、コントローラ7が下向きに動かされたと判断される場合、ゲーム装置3は、騎手に鞭を振る動作を行わせる。さらに、所定の単位時間当たりに騎手が鞭を振る回数に応じて馬の速度を算出する。これによって、プレイヤは、コントローラ7を傾ける操作によって馬の移動方向を操作するとともに、コントローラ7を鞭のようにして用いて馬の速度を操作することができるので、今までにはない新規なゲーム操作を味わうことができる。
【0112】
なお、コントローラ7が下向きに動かされたか否かの判断は、例えば、加速度ベクトルのy成分が所定値よりも大きい状態が所定期間だけ継続されたか否かによって行うことができる。より具体的には、加速度ベクトルのy成分が正の値となる状態が所定のフレーム数だけ継続された場合、ゲーム装置3は、コントローラ7が下向きに動かされたと判断する。そして、ゲーム装置3は、コントローラ7が下向きに動かされたと判断された場合、オブジェクトの速度を増加する。
【0113】
また、一輪車に乗るオブジェクトを操作するゲームに本発明を適用することも考えられる。このゲームにおいて、ゲーム装置3は、例えば、加速度データに基づいてオブジェクトにジャンプ動作を行わせるとともに、平滑化データに基づいてオブジェクトを移動させる。具体的には、ゲーム装置3は、コントローラ7のz軸周りの回転に関する傾きを平滑化データに基づいて算出し、コントローラ7の傾きに応じてオブジェクトの移動方向を決定する。一方、ゲーム装置3は、加速度データを用いてコントローラ7の上下方向の動きを算出することによって、コントローラ7が上向きに動かされたか否かを判断し、上向きに動かされたと判断される場合にはオブジェクトに所定の動作(例えばジャンプ動作)を行わせる。これによれば、上記実施形態や競馬ゲームの例と同様、コントローラ7を動かすという1種類の操作によって、1つの操作対象(オブジェクト)に異なる2つの動作を行わせることができる。
【0114】
また、本発明は、1つの操作対象(オブジェクト)に異なる2つの動作を行わせる場合だけでなく、互いに異なる2つの操作対象にそれぞれ動作を行わせる場合にも適用することができる。すなわち、ゲーム装置3は、第1のオブジェクトの動作を加速度データに基づいて制御するとともに、第1のオブジェクトとは異なる第2のオブジェクトの動作を平滑化データに基づいて制御するようにしてもよい。例えば、ランナーを模した2つのオブジェクトの速度を制御するゲームを例として考える。このゲームでは、プレイヤは、2つのオブジェクトが併走するように(すなわち、2つのオブジェクトの速度がほぼ等しくなるように)ゲーム操作を行うことを目的とする。このようなゲームにおいて、ゲーム装置3は、加速度データに基づいて一方のオブジェクトの速度を算出するとともに、平滑化データに基づいて他方のオブジェクトの速度を算出する。加速度データに基づいてオブジェクトの速度を算出する方法としては、上記実施形態において説明した方法や、上記競馬ゲームの例で示した方法が考えられる。また、平滑化データに基づいてオブジェクトの速度を算出する方法としては、例えば、予め決められた基準方向に対してコントローラ7が傾いている角度の大きさに応じてオブジェクトの速度を算出する方法が考えられる。
【産業上の利用可能性】
【0115】
以上のように、本発明は、簡易な構成によって入力装置の複数の状態をゲーム処理に反映させること等を目的として、ゲーム装置やゲームプログラムに利用することが可能である。
【図面の簡単な説明】
【0116】
【図1】本発明の一実施形態に係るゲーム装置を含むゲームシステムの外観図
【図2】ゲーム装置3の機能ブロック図
【図3A】コントローラ7の斜視図
【図3B】コントローラ7の斜視図
【図4】コントローラ7を前方から見た図
【図5A】コントローラ7の内部構造を示す図
【図5B】コントローラ7の内部構造を示す図
【図6】コントローラ7の構成を示すブロック図
【図7】コントローラ7の傾きと加速度センサの出力との関係を示す図
【図8】コントローラ7の傾きと加速度センサの出力との関係を示す図
【図9】コントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図10】本実施形態においてモニタ2に表示されるゲーム画面の一例を示す図
【図11】オブジェクト51が第1の動作を行っている場合のゲーム画面の一例を示す図
【図12】オブジェクト51が第2の動作を行っている場合のゲーム画面の一例を示す図
【図13】コントローラ7の動きと加速度ベクトルとの関係を示す図
【図14】コントローラ7の動きと加速度ベクトルとの関係を示す図
【図15】加速度センサ37によって検出された加速度の値と、当該検出された加速度を平滑化した値とを示す図
【図16】ゲーム装置3のメインメモリ13に記憶される主なデータを示す図
【図17】オブジェクト51に関する各パラメータを示す図
【図18】ゲーム装置3において実行される処理の流れを示すメインフローチャート
【図19】平滑化ベクトルの算出方法を説明するための図
【図20】図18に示すオブジェクト制御処理(ステップS4)の詳細を示すフローチャート
【図21】他の実施形態においてモニタに表示されるゲーム画面の一例を示す図
【符号の説明】
【0117】
1 ゲームシステム
2 モニタ
3 ゲーム装置
4 光ディスク
5 外部メモリカード
7 コントローラ
8a,8b マーカ
10 CPU
13 メインメモリ
32 操作部
35 撮像情報演算部
36 通信部
37 加速度センサ
40 撮像素子
51 オブジェクト
61 ゲームプログラム
【特許請求の範囲】
【請求項1】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置であって、
前記加速度データを逐次取得する取得手段と、
前記加速度データにより示される加速度を平滑化した値を示す平滑化データを逐次算出する平滑化手段と、
前記加速度データと前記平滑化データとに基づいてゲーム処理を実行するゲーム処理手段とを備える、ゲーム装置。
【請求項2】
前記ゲーム処理手段は、
ゲーム空間におけるプレイヤオブジェクトの第1の動作を決めるための状態を前記平滑化データに基づいて決定する第1動作制御手段と、
前記プレイヤオブジェクトの第2の動作を決めるための状態を前記加速度データに基づいて決定する第2動作制御手段とを含む、請求項1に記載のゲーム装置。
【請求項3】
前記第1動作制御手段は、前記平滑化データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第2動作制御手段は、前記加速度データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項2に記載のゲーム装置。
【請求項4】
前記第2動作制御手段は、前記第1動作制御手段によって決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記加速度データに基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項3に記載のゲーム装置。
【請求項5】
前記ゲーム処理手段は、
前記加速度データにより示される加速度の値と前記平滑化データにより示される値との差分を算出する差分算出手段と、
前記平滑化データと前記差分とを用いて前記ゲーム処理を実行する処理実行手段とを含む、請求項1に記載のゲーム装置。
【請求項6】
前記ゲーム処理手段は、
ゲーム空間におけるプレイヤオブジェクトの第3の動作を決めるための状態を前記平滑化データに基づいて決定する第3動作制御手段と、
前記プレイヤオブジェクトの第4の動作を決めるための状態を前記差分に基づいて決定する第4動作制御手段とを含む、請求項5に記載のゲーム装置。
【請求項7】
前記第3動作制御手段は、前記平滑化データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第4動作制御手段は、前記差分に基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項6に記載のゲーム装置。
【請求項8】
前記第4動作制御手段は、前記第3動作制御手段によって決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記差分に基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項7に記載のゲーム装置。
【請求項9】
前記ゲーム処理手段は、
ゲーム空間内に登場する第1のプレイヤオブジェクトの動作を決めるための状態を前記平滑化データに基づいて制御する第5動作制御手段と、
前記ゲーム空間内に登場する第2のプレイヤオブジェクトの動作を決めるための状態を前記差分に基づいて制御する第6動作制御手段とを含む、請求項6に記載のゲーム装置。
【請求項10】
前記ゲーム処理手段は、
ゲーム空間内に登場する第1のプレイヤオブジェクトの動作を決めるための状態を前記平滑化データに基づいて制御する第7動作制御手段と、
前記ゲーム空間内に登場する第2のプレイヤオブジェクトの動作を決めるための状態を前記加速度データに基づいて制御する第8動作制御手段とを含む、請求項1に記載のゲーム装置。
【請求項11】
前記平滑化手段は、前記取得手段によって前記加速度データが取得される度に平滑化データを算出し、前回に算出された平滑化データの値を、前記取得手段によって取得された加速度データの値に所定の割合で近づける演算によって平滑化を行う、請求項1に記載のゲーム装置。
【請求項12】
前記ゲーム処理手段は、
前記加速度センサを備える入力装置の傾きに対応する第1データを前記平滑化データに基づいて算出する傾き算出手段と、
前記入力装置の動きに対応する第2データを前記加速度データに基づいて算出する動き算出手段と、
前記第1データおよび第2データに基づいてゲーム処理を実行する処理実行手段とを備える、請求項1に記載のゲーム装置。
【請求項13】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記加速度データを逐次取得する取得ステップと、
前記加速度データにより示される加速度を平滑化した値を示す平滑化データを逐次算出する平滑化ステップと、
前記加速度データと前記平滑化データとに基づいてゲーム処理を実行するゲーム処理ステップとを前記コンピュータに実行させる、ゲームプログラム。
【請求項14】
前記ゲーム処理ステップは、
ゲーム空間におけるプレイヤオブジェクトの第1の動作を決めるための状態を前記平滑化データに基づいて決定する第1動作制御ステップと、
前記プレイヤオブジェクトの第2の動作を決めるための状態を前記加速度データに基づいて決定する第2動作制御ステップとを含む、、請求項13に記載のゲームプログラム。
【請求項15】
前記第1動作制御ステップにおいて、前記コンピュータは、前記平滑化データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第2動作制御ステップにおいて、前記コンピュータは、前記加速度データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項14に記載のゲームプログラム。
【請求項16】
前記第2動作制御ステップにおいて、前記コンピュータは、前記第1動作制御ステップにおいて決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記加速度データに基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項15に記載のゲームプログラム。
【請求項17】
前記ゲーム処理ステップは、
前記加速度データにより示される加速度の値と前記平滑化データにより示される値との差分を算出する差分算出ステップと、
前記平滑化データと前記差分とを用いて前記ゲーム処理を実行する処理実行ステップとを含む、請求項13に記載のゲームプログラム。
【請求項18】
前記ゲーム処理ステップは、
ゲーム空間におけるプレイヤオブジェクトの第3の動作を決めるための状態を前記平滑化データに基づいて決定する第3動作制御ステップと、
前記プレイヤオブジェクトの第4の動作を決めるための状態を前記差分に基づいて決定する第4動作制御ステップとを含む、請求項17に記載のゲームプログラム。
【請求項19】
前記第3動作制御ステップにおいて、前記コンピュータは、前記平滑化データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第4動作制御ステップにおいて、前記コンピュータは、前記差分に基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項18に記載のゲームプログラム。
【請求項20】
前記第4動作制御ステップにおいて、前記コンピュータは、前記第3動作制御ステップにおいて決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記差分に基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項19に記載のゲームプログラム。
【請求項21】
前記ゲーム処理ステップは、
ゲーム空間内に登場する第1のプレイヤオブジェクトの動作を決めるための状態を前記平滑化データに基づいて制御する第5動作制御ステップと、
前記ゲーム空間内に登場する第2のプレイヤオブジェクトの動作を決めるための状態を前記差分に基づいて制御する第6動作制御ステップとを含む、請求項17に記載のゲームプログラム。
【請求項22】
前記ゲーム処理ステップは、
ゲーム空間内に登場する第1のプレイヤオブジェクトの動作を決めるための状態を前記平滑化データに基づいて制御する第7動作制御ステップと、
前記ゲーム空間内に登場する第2のプレイヤオブジェクトの動作を決めるための状態を前記加速度データに基づいて制御する第8動作制御ステップとを含む、請求項13に記載のゲームプログラム。
【請求項23】
前記平滑化ステップは、前記加速度データが取得される度に実行され、
前記平滑化ステップにおいて、前記コンピュータは、前回に算出された平滑化データの値を、前記取得ステップにおいて取得された加速度データの値に所定の割合で近づける演算によって平滑化を行う、請求項13に記載のゲームプログラム。
【請求項24】
前記ゲーム処理ステップは、
前記加速度センサを備える入力装置の傾きに対応する第1データを前記平滑化データに基づいて算出する傾き算出ステップと、
前記入力装置の動きに対応する第2データを前記加速度データに基づいて算出する動き算出ステップと、
前記第1データおよび第2データに基づいてゲーム処理を実行する処理実行ステップとを備える、請求項13に記載のゲームプログラム。
【請求項1】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置であって、
前記加速度データを逐次取得する取得手段と、
前記加速度データにより示される加速度を平滑化した値を示す平滑化データを逐次算出する平滑化手段と、
前記加速度データと前記平滑化データとに基づいてゲーム処理を実行するゲーム処理手段とを備える、ゲーム装置。
【請求項2】
前記ゲーム処理手段は、
ゲーム空間におけるプレイヤオブジェクトの第1の動作を決めるための状態を前記平滑化データに基づいて決定する第1動作制御手段と、
前記プレイヤオブジェクトの第2の動作を決めるための状態を前記加速度データに基づいて決定する第2動作制御手段とを含む、請求項1に記載のゲーム装置。
【請求項3】
前記第1動作制御手段は、前記平滑化データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第2動作制御手段は、前記加速度データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項2に記載のゲーム装置。
【請求項4】
前記第2動作制御手段は、前記第1動作制御手段によって決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記加速度データに基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項3に記載のゲーム装置。
【請求項5】
前記ゲーム処理手段は、
前記加速度データにより示される加速度の値と前記平滑化データにより示される値との差分を算出する差分算出手段と、
前記平滑化データと前記差分とを用いて前記ゲーム処理を実行する処理実行手段とを含む、請求項1に記載のゲーム装置。
【請求項6】
前記ゲーム処理手段は、
ゲーム空間におけるプレイヤオブジェクトの第3の動作を決めるための状態を前記平滑化データに基づいて決定する第3動作制御手段と、
前記プレイヤオブジェクトの第4の動作を決めるための状態を前記差分に基づいて決定する第4動作制御手段とを含む、請求項5に記載のゲーム装置。
【請求項7】
前記第3動作制御手段は、前記平滑化データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第4動作制御手段は、前記差分に基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項6に記載のゲーム装置。
【請求項8】
前記第4動作制御手段は、前記第3動作制御手段によって決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記差分に基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項7に記載のゲーム装置。
【請求項9】
前記ゲーム処理手段は、
ゲーム空間内に登場する第1のプレイヤオブジェクトの動作を決めるための状態を前記平滑化データに基づいて制御する第5動作制御手段と、
前記ゲーム空間内に登場する第2のプレイヤオブジェクトの動作を決めるための状態を前記差分に基づいて制御する第6動作制御手段とを含む、請求項6に記載のゲーム装置。
【請求項10】
前記ゲーム処理手段は、
ゲーム空間内に登場する第1のプレイヤオブジェクトの動作を決めるための状態を前記平滑化データに基づいて制御する第7動作制御手段と、
前記ゲーム空間内に登場する第2のプレイヤオブジェクトの動作を決めるための状態を前記加速度データに基づいて制御する第8動作制御手段とを含む、請求項1に記載のゲーム装置。
【請求項11】
前記平滑化手段は、前記取得手段によって前記加速度データが取得される度に平滑化データを算出し、前回に算出された平滑化データの値を、前記取得手段によって取得された加速度データの値に所定の割合で近づける演算によって平滑化を行う、請求項1に記載のゲーム装置。
【請求項12】
前記ゲーム処理手段は、
前記加速度センサを備える入力装置の傾きに対応する第1データを前記平滑化データに基づいて算出する傾き算出手段と、
前記入力装置の動きに対応する第2データを前記加速度データに基づいて算出する動き算出手段と、
前記第1データおよび第2データに基づいてゲーム処理を実行する処理実行手段とを備える、請求項1に記載のゲーム装置。
【請求項13】
入力装置に搭載された加速度センサから逐次出力される加速度データに基づくゲーム処理を実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記加速度データを逐次取得する取得ステップと、
前記加速度データにより示される加速度を平滑化した値を示す平滑化データを逐次算出する平滑化ステップと、
前記加速度データと前記平滑化データとに基づいてゲーム処理を実行するゲーム処理ステップとを前記コンピュータに実行させる、ゲームプログラム。
【請求項14】
前記ゲーム処理ステップは、
ゲーム空間におけるプレイヤオブジェクトの第1の動作を決めるための状態を前記平滑化データに基づいて決定する第1動作制御ステップと、
前記プレイヤオブジェクトの第2の動作を決めるための状態を前記加速度データに基づいて決定する第2動作制御ステップとを含む、、請求項13に記載のゲームプログラム。
【請求項15】
前記第1動作制御ステップにおいて、前記コンピュータは、前記平滑化データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第2動作制御ステップにおいて、前記コンピュータは、前記加速度データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項14に記載のゲームプログラム。
【請求項16】
前記第2動作制御ステップにおいて、前記コンピュータは、前記第1動作制御ステップにおいて決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記加速度データに基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項15に記載のゲームプログラム。
【請求項17】
前記ゲーム処理ステップは、
前記加速度データにより示される加速度の値と前記平滑化データにより示される値との差分を算出する差分算出ステップと、
前記平滑化データと前記差分とを用いて前記ゲーム処理を実行する処理実行ステップとを含む、請求項13に記載のゲームプログラム。
【請求項18】
前記ゲーム処理ステップは、
ゲーム空間におけるプレイヤオブジェクトの第3の動作を決めるための状態を前記平滑化データに基づいて決定する第3動作制御ステップと、
前記プレイヤオブジェクトの第4の動作を決めるための状態を前記差分に基づいて決定する第4動作制御ステップとを含む、請求項17に記載のゲームプログラム。
【請求項19】
前記第3動作制御ステップにおいて、前記コンピュータは、前記平滑化データに基づいて前記プレイヤオブジェクトの前記ゲーム空間内における姿勢を決定し、
前記第4動作制御ステップにおいて、前記コンピュータは、前記差分に基づいて前記プレイヤオブジェクトの前記ゲーム空間内における位置を決定する、請求項18に記載のゲームプログラム。
【請求項20】
前記第4動作制御ステップにおいて、前記コンピュータは、前記第3動作制御ステップにおいて決定される前記プレイヤオブジェクトの姿勢に基づいて移動方向を決定し、前記差分に基づいて移動量を決定することにより、前記ゲーム空間内における位置を決定する、請求項19に記載のゲームプログラム。
【請求項21】
前記ゲーム処理ステップは、
ゲーム空間内に登場する第1のプレイヤオブジェクトの動作を決めるための状態を前記平滑化データに基づいて制御する第5動作制御ステップと、
前記ゲーム空間内に登場する第2のプレイヤオブジェクトの動作を決めるための状態を前記差分に基づいて制御する第6動作制御ステップとを含む、請求項17に記載のゲームプログラム。
【請求項22】
前記ゲーム処理ステップは、
ゲーム空間内に登場する第1のプレイヤオブジェクトの動作を決めるための状態を前記平滑化データに基づいて制御する第7動作制御ステップと、
前記ゲーム空間内に登場する第2のプレイヤオブジェクトの動作を決めるための状態を前記加速度データに基づいて制御する第8動作制御ステップとを含む、請求項13に記載のゲームプログラム。
【請求項23】
前記平滑化ステップは、前記加速度データが取得される度に実行され、
前記平滑化ステップにおいて、前記コンピュータは、前回に算出された平滑化データの値を、前記取得ステップにおいて取得された加速度データの値に所定の割合で近づける演算によって平滑化を行う、請求項13に記載のゲームプログラム。
【請求項24】
前記ゲーム処理ステップは、
前記加速度センサを備える入力装置の傾きに対応する第1データを前記平滑化データに基づいて算出する傾き算出ステップと、
前記入力装置の動きに対応する第2データを前記加速度データに基づいて算出する動き算出ステップと、
前記第1データおよび第2データに基づいてゲーム処理を実行する処理実行ステップとを備える、請求項13に記載のゲームプログラム。
【図1】
【図2】
【図3A】
【図3B】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3A】
【図3B】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2007−282787(P2007−282787A)
【公開日】平成19年11月1日(2007.11.1)
【国際特許分類】
【出願番号】特願2006−112218(P2006−112218)
【出願日】平成18年4月14日(2006.4.14)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成19年11月1日(2007.11.1)
【国際特許分類】
【出願日】平成18年4月14日(2006.4.14)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]