ゲームプログラムおよびゲーム装置
【課題】加速度センサを備えた入力装置を用いた操作入力において、当該入力装置の傾きに応じてオブジェクトを描画するゲームプログラムおよびゲーム装置を提供する。
【解決手段】入力装置に備えられた加速度センサから出力される加速度データを取得し、取得した加速度データに基づいて、オブジェクトに設けられた支点の仮想ゲーム空間における支点位置座標を算出する。また、取得した加速度データに基づいて、実空間の入力装置の傾きを算出する。そして、算出された入力装置の傾きに応じて、オブジェクトが仮想ゲーム空間において傾倒する傾きを示すパラメータを算出する。そして、支点位置座標およびオブジェクトの傾きを示すパラメータを用いて、オブジェクトを仮想ゲーム空間に配置して表示装置に表示する。
【解決手段】入力装置に備えられた加速度センサから出力される加速度データを取得し、取得した加速度データに基づいて、オブジェクトに設けられた支点の仮想ゲーム空間における支点位置座標を算出する。また、取得した加速度データに基づいて、実空間の入力装置の傾きを算出する。そして、算出された入力装置の傾きに応じて、オブジェクトが仮想ゲーム空間において傾倒する傾きを示すパラメータを算出する。そして、支点位置座標およびオブジェクトの傾きを示すパラメータを用いて、オブジェクトを仮想ゲーム空間に配置して表示装置に表示する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームプログラムおよびゲーム装置に関し、より特定的には、加速度センサを備えた入力装置の傾きに応じてオブジェクトの描画を行うゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来、加速度センサを備えた入力装置をユーザが操作し、当該加速度センサからの出力を利用してゲーム操作する装置が開発されている。例えば、棒状のゲームコントローラに多軸加速度センサを備え、当該加速度センサからの出力を利用してゲームを楽しむゲーム装置が開示されている(例えば、特許文献1参照)。
【0003】
上記特許文献1に開示された棒状コントローラは、多軸加速度センサA1や多軸ジャイロセンサA2を備えている。そして、ゲーム機A10は、多軸加速度センサA1からの出力に基づいて、刀を振る動作(例えば、強弱、前後左右上下移動)のデータを作成する。また、ゲーム機A10は、多軸ジャイロセンサA2からの出力に基づいて、刀を回す(ひねる)姿勢、前後左右に傾ける姿勢のデータを作成する。その後、ゲーム機A10は、これらのデータに基づいてゲーム内のオブジェクト(刀)の移動した様子をモニタA20のゲーム画面に出力する。
【特許文献1】特開2000−308756号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に開示されたゲーム装置は、ゲーム内のオブジェクトを移動するために加速度センサからの出力とジャイロセンサからの出力とを用いている。したがって、コントローラに加速度センサおよびジャイロセンサを内蔵しなければならないためにコントローラのコストが大きくなる。また、加速度センサからの出力とジャイロセンサからの出力とをゲーム機で処理しなければならないために、処理が複雑となって処理負担が大きくなる。
【0005】
それ故に、本発明の目的は、加速度センサを備えた入力装置を用いた操作入力において、当該入力装置の傾きに応じてオブジェクトを描画できるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0007】
第1の発明は、少なくとも1軸方向の加速度を検出する加速度センサ(701)を備えた入力装置(7)で検出された加速度を用いて、仮想ゲーム空間に配置されたオブジェクト(BO)を移動させて表示装置(2)に表示するゲーム装置(3)のコンピュータ(30)で実行されるゲームプログラムである。ゲームプログラムは、加速度取得ステップ(S51)、支点位置算出ステップ(S52、S76)、入力装置傾き算出ステップ(S71)、オブジェクト傾き算出ステップ(S75、S77)、および表示制御ステップ(S54)をコンピュータに実行させる。加速度取得ステップは、加速度センサから出力される加速度データ(Da)を取得する。支点位置算出ステップは、加速度取得ステップで取得した加速度データに基づいて、オブジェクトに設けられた支点(PO)の仮想ゲーム空間における位置を示す支点位置座標(Dc)を算出する。入力装置傾き算出ステップは、加速度取得ステップで取得した加速度データに基づいて、実空間における入力装置の傾き(Dd)を算出する。オブジェクト傾き算出ステップは、入力装置傾き算出ステップで算出された入力装置の傾きに応じて、オブジェクトが仮想ゲーム空間において傾倒する傾きを示すパラメータ(Dg)を算出する。表示制御ステップは、支点位置算出ステップで算出した支点位置座標およびオブジェクト傾き算出ステップで算出したオブジェクトの傾きを示すパラメータを用いて、オブジェクトを仮想ゲーム空間に配置して表示装置に表示する。
【0008】
第2の発明は、上記第1の発明において、傾き目標設定ステップ(S73)を、さらにコンピュータに実行させる。傾き目標設定ステップは、入力装置の傾きに応じて、仮想ゲーム空間におけるオブジェクトの傾き目標(De)を設定する。オブジェクト傾き算出ステップでは、仮想ゲーム空間における現在のオブジェクトの傾きから傾き目標に向けてそのオブジェクトが所定割合(10%)傾倒した傾きが、オブジェクトの傾きを示すパラメータとして算出される。
【0009】
第3の発明は、上記第1の発明において、オブジェクトの傾きを示すパラメータは、仮想ゲーム空間におけるオブジェクトの傾倒方向を示す方向ベクトルである。表示制御ステップでは、支点位置座標および方向ベクトルを用いて、オブジェクトを仮想ゲーム空間に配置して表示装置に表示される。
【0010】
第4の発明は、上記第1の発明において、オブジェクトの傾きを示すパラメータは、支点とは異なるオブジェクト上の点の仮想ゲーム空間における位置を示す位置座標である。表示制御ステップでは、支点位置座標および支点とは異なるオブジェクト上の点(PA)の位置座標を用いて、オブジェクトを仮想ゲーム空間に配置して表示装置に表示される。
【0011】
第5の発明は、上記第1の発明において、可動範囲設定ステップ(図10、図11)を、コンピュータにさらに実行させる。可動範囲設定ステップは、仮想ゲーム空間においてオブジェクトの支点が移動可能な範囲を設定する。
【0012】
第6の発明は、上記第5の発明において、支点位置算出ステップでは、加速度センサが検出可能な加速度の最大値(2G)と可動範囲の始終端とを対応付けて、取得した加速度データが示す加速度をその可動範囲内にスケーリングして支点位置座標が算出される。
【0013】
第7の発明は、上記第6の発明において、加速度センサは、入力装置に対して互いに直交する3軸方向(X、Y、Z軸方向)の加速度を検出する。可動範囲設定ステップでは、仮想ゲーム空間における平面状に可動範囲が設定される。支点位置算出ステップでは、3軸方向に含まれる第1軸方向(X軸方向)の加速度が可動範囲上の第1方向(z軸方向)にスケーリングされ、3軸方向に含まれる第2軸方向(Y軸方向)の加速度がその第1方向と直交する可動範囲上の第2方向(x軸方向)にスケーリングされて支点位置座標が算出される。
【0014】
第8の発明は、上記第2の発明において、加速度センサは、入力装置に対して互いに直交する3軸方向の加速度を検出する。傾き目標設定ステップでは、実空間の鉛直方向に対する入力装置の長軸方向の傾きを仮想ゲーム空間の鉛直方向に対するオブジェクトの長軸方向の傾きに置き換えて傾き目標が設定される。
【0015】
第9の発明は、少なくとも1軸方向の加速度を検出する加速度センサを備えた入力装置で検出された加速度を用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置である。ゲーム装置は、加速度取得手段、支点位置算出手段、入力装置傾き算出手段、オブジェクト傾き算出手段、および表示制御手段とを備える。加速度取得手段は、加速度センサから出力される加速度データを取得する。支点位置算出手段は、加速度取得手段が取得した加速度データに基づいて、オブジェクトに設けられた支点の仮想ゲーム空間における位置を示す支点位置座標を算出する。入力装置傾き算出手段は、加速度取得手段が取得した加速度データに基づいて、実空間における入力装置の傾きを算出する。オブジェクト傾き算出手段は、入力装置傾き算出手段で算出された入力装置の傾きに応じて、オブジェクトが仮想ゲーム空間において傾倒する傾きを示すパラメータを算出する。表示制御手段は、ゲーム装置支点位置算出手段が算出した支点位置座標およびオブジェクト傾き算出手段が算出したオブジェクトの傾きを示すパラメータを用いて、オブジェクトを仮想ゲーム空間に配置して表示装置に表示する。
【0016】
第10の発明は、上記第9の発明において、傾き目標設定手段をさらに備える。傾き目標設定手段は、入力装置の傾きに応じて、仮想ゲーム空間におけるオブジェクトの傾き目標を設定する。オブジェクト傾き算出手段は、仮想ゲーム空間における現在のオブジェクトの傾きから傾き目標に向けてそのオブジェクトが所定割合傾倒した傾きを、オブジェクトの傾きを示すパラメータとして算出する。
【発明の効果】
【0017】
上記第1の発明によれば、加速度センサを備えた入力装置を用いた操作入力において、加速度センサからの出力のみを用いてオブジェクトを描画できる。
【0018】
上記第2の発明によれば、加速度センサを備えた入力装置を用いた操作入力において、入力装置の傾き等の動作に応じて、オブジェクトの一端(支点位置)が入力装置の動作に応じて即時に移動し、他端が入力装置の実空間の傾きに徐々に追従するように動く。例えば、長軸部材等を示すオブジェクトの一端を仮想ゲーム空間内で動かす描画をする場合、その一端が即時移動して他端が即時移動させた場合の位置へ追従するように遅れて移動することにより、実空間で長軸部材を動かしているようなリアルな表現が可能となる。
【0019】
上記第3の発明によれば、仮想ゲーム空間におけるオブジェクトの方向を示す方向ベクトルを用いることによって、当該オブジェクトの傾き方向を容易に制御することができる。
【0020】
上記第4の発明によれば、オブジェクトに設けられた2点の仮想ゲーム空間における位置座標を用いることによって、当該オブジェクトの傾き方向を容易に制御することができる。
【0021】
上記第5の発明によれば、過大な加速度が検出されても支点可動範囲が制限されているため、仮想ゲーム空間においてオブジェクトが不自然に大きな移動をすることがない。
【0022】
上記第6の発明によれば、加速度データから得られる加速度の値を直接的に仮想ゲーム空間における移動幅に反映されるため、座標変換が容易となる。
【0023】
上記第7の発明によれば、加速度センサが加速度を検出する2軸方向に、仮想ゲーム空間の2軸を対応させて支点が移動するため、実空間における入力装置の移動を置き換えた仮想ゲーム空間の位置に支点を移動させることができる。
【0024】
上記第8の発明によれば、入力装置の長軸方向が示す方向を直接的に仮想ゲーム空間に置き換えた方向を目標として、オブジェクトの長軸方向を傾ける操作が可能となる。
【0025】
本発明のゲーム装置によれば、上述したゲームプログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0026】
図1を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置を用いたゲームシステム1を一例として説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、据置型ゲーム装置を一例にして、当該ゲームシステム1について説明する。
【0027】
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作情報を与えるコントローラ7によって構成される。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される送信データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
【0028】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0029】
コントローラ7は、その内部に備える通信部75(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて送信データを無線送信する。コントローラ7は、主にモニタ2に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コントローラ7は、複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。なお、本実施例では、撮像情報演算部74による撮像情報を用いないため、マーカ8Lおよび8Rを設置しなくてもかまわない。
【0030】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0031】
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。なお、光ディスク4に本発明のゲームプログラムが記憶されている。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35が接続される。また、メモリコントローラ31には、所定のバスを介して、コントローラI/F(インターフェース)36、ビデオI/F37、外部メモリI/F38、オーディオI/F39、およびディスクI/F41が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ2a、およびディスクドライブ40が接続されている。
【0032】
GPU32は、CPU30の命令に基づいて画像処理を行うものであり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0033】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0034】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0035】
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F36は、例えば4つのコントローラI/F36a〜36dで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F36を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの送信データを受信し、コントローラI/F36を介して当該送信データをCPU30へ出力する。ビデオI/F37には、モニタ2が接続される。外部メモリI/F38には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F39に出力する。
【0036】
図3および図4を参照して、本発明の入力装置の一例であるコントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面後方から見た斜視図である。
【0037】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0038】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0039】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー72aの代わりに設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。
【0040】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、Xボタン、Yボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0041】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0042】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から受信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0043】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。
【0044】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。また、ハウジング70の後面には、コネクタ73が設けられている。コネクタ73は、例えば32ピンのエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。なお、本発明では、この撮像情報演算部74からの情報を用いないため、ここではこれ以上の説明を省略する。
【0045】
ここで、説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の下面(操作ボタン72iが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をX軸正方向とする。
【0046】
次に、図5Aおよび図5Bを参照して、コントローラ7の内部構造について説明する。なお、図5Aは、コントローラ7の上筐体(ハウジング71の一部)を外した状態を示す斜視図である。図5Bは、コントローラ7の下筐体(ハウジング71の一部)を外した状態を示す斜視図である。ここで、図5Bに示す基板700は、図5Aに示す基板700の裏面から見た斜視図となっている。
【0047】
図5Aにおいて、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、水晶振動子703、無線モジュール753、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751(図6参照)に接続される。加速度センサ701は、コントローラ7が配置された3次元空間における傾きや振動等の算出に用いることができる加速度を検出して出力する。
【0048】
より詳細には、図6に示すように、コントローラ7は3軸の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、X軸とY軸(または他の対になった軸)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。さらに、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、XYZ軸のいずれか1軸に沿った直線加速度のみを検知する1軸の加速度検出手段を使用してもよい。例えば、この3軸、2軸、または1軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸、2軸、または1軸の加速度センサ701が提供されてもよい。
【0049】
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、その1軸、2軸、または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0050】
しかしながら、加速度センサ701から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ701からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを判定することができる。このように、加速度センサ701をマイコン751(またはゲーム装置3に含まれるCPU30等の他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢、または位置を判定することができる。同様に、加速度センサ701を備えるコントローラ7がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7の様々な動きおよび/または位置を算出することができる。他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0051】
また、無線モジュール753およびアンテナ754を有する通信部75によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子703は、後述するマイコン751の基本クロックを生成する。
【0052】
一方、図5Bにおいて、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。そして、操作ボタン72iが撮像情報演算部74の後方の基板700の下主面上に取り付けられていて、それよりさらに後方に、電池705が収容される。電池705とコネクタ73との間の基板700の下主面上には、バイブレータ704が取り付けられる。このバイブレータ704は、例えば振動モータやソレノイドであってよい。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【0053】
次に、図6を参照して、コントローラ7の内部構成について説明する。なお、図6は、コントローラ7の構成を示すブロック図である。
【0054】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
【0055】
加速度センサ701は、上述したようにコントローラ7の上下方向(Y軸方向)、左右方向(X軸方向)、および前後方向(Z軸方向)の3軸成分に分けてそれぞれ加速度を検知して出力するセンサである。加速度センサ701が検知した3軸成分の加速度を示すデータは、それぞれ通信部75へ出力される。この加速度センサ701から出力される加速度データに基づいて、コントローラ7の傾きや動きを判別することができる。なお、加速度センサ701は、特定のアプリケーションで必要なデータに応じて何れか2軸に対してそれぞれ加速度を検出する加速度センサや何れか1軸(例えば、Y軸)に対して加速度を検出する加速度センサが用いられてもかまわない。
【0056】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。
【0057】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を受信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から受信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、受信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置3の受信ユニット6でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0058】
次に、ゲーム装置3が行う具体的な処理を説明する前に、本ゲーム装置3で行うゲームの概要について説明する。図7に示すように、コントローラ7は、全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、コントローラ7の上面をプレイヤ側に向けて起立させた状態(つまり、コントローラ7の前面が上方を向く)でプレイヤが片手または両手でコントローラ7を把持し、あたかも野球のバットを握っているようにコントローラ7を把持する。
【0059】
ここで、説明を具体的にするために、モニタ2が設置されてコントローラ7を把持するプレイヤが存在する空間に対して、互いに直交するXs、Ys、およびZs軸を定義する。具体的には、プレイヤとモニタ2とを結ぶ水平方向をXs軸とし、プレイヤからモニタ2へ向かう方向をXs軸正方向とする。上記Xs軸に垂直な水平方向をYs軸とし、モニタ2の表示画面に向かって右方向(図7では、モニタ2の背面側を示しているために左方向)をYs軸正方向とする。そして、空間の鉛直方向をZs軸とし、上方向をZs軸正方向とする。
【0060】
プレイヤは、モニタ2で表現されているゲーム画像に合わせて、コントローラ7を上下左右に移動させたり、コントローラ7を起立した状態から傾けたりすることによって、コントローラ7から操作情報(具体的には、X、Y、およびZ軸方向加速度データ)をゲーム装置3に与える。例えば、図8に示すように、コントローラ7の上面をYs軸負方向に向け、前面をZs軸正方向に向けて起立させて静止した状態では、Zs軸負方向の重力加速度によってZ軸負方向の加速度がコントローラ7に加わる。なお、図8は、モニタ2に向かう方向(つまり、Xs軸正方向)に見たコントローラ7を示しているために、図7とは反対の方向に描かれている。そして、プレイヤがコントローラ7をYs軸正方向に移動させたとき、さらにY軸正方向の加速度がコントローラ7に加わる。また、上記起立させた状態からプレイヤがコントローラ7をYs軸正方向に傾けたとき、その傾倒角度に応じてコントローラ7に加わる重力加速度の方向がZ軸負方向からY軸正方向へ変化していく。このようなコントローラ7に加わる加速度の変化は、加速度センサ701によって検出できるため、加速度センサ701から出力されるX、Y、およびZ軸方向加速度データに対して追加の処理を行うことによって、コントローラ7の傾きや動きを算出することができる。一般的に、動作に応じて生じる加速度を検出する場合、加速度センサ701から出力される加速度ベクトル(あるいは、加速度の正負)は、コントローラ7の加速方向とは真逆のベクトルとなるため、検出した加速度の方向を考慮してコントローラ7の傾きや動きを算出することが必要であることは言うまでもない。
【0061】
図9に示すように、コントローラ7から受信したX、Y、およびZ軸方向加速度データに応じて、モニタ2に野球ゲーム等が表現される。具体的には、仮想ゲーム空間に設定されたフィールド(例えば、野球場)の一部が3次元のゲーム画像としてモニタ2に表現される。そして、仮想ゲーム空間に、プレイヤが操作する打者を示すプレイヤキャラクタPC、プレイヤキャラクタPCが握るバットオブジェクトBO、および当該プレイヤキャラクタPCの相手選手となる相手キャラクタ等が配置されてモニタ2に表現される。以下、説明を具体的にするために野球ゲームを表現するゲームプログラムが光ディスク4に記憶されており、CPU30が野球ゲーム処理の中でコントローラ7の傾斜および動きに応じて、バットオブジェクトBOが仮想ゲーム空間内を移動する処理について説明する。
【0062】
プレイヤキャラクタPCは、バットオブジェクトBOを持っており、仮想ゲーム空間に設定されたフィールド上に配置される。そして、プレイヤがコントローラ7を倒したり動かしたりする動作に応じて、バットオブジェクトBOの位置や姿勢が変化して、プレイヤキャラクタPCがバットオブジェクトBOを持つ構え方が変化する。つまり、プレイヤがコントローラ7を把持して動かす動作を行うことによって、同様にバットオブジェクトBOを構える動作をプレイヤキャラクタPCが表現することになり、プレイヤはあたかもコントローラ7を野球バットとして持って野球をしているような仮想的なスポーツゲームを体験できる。
【0063】
例えば、プレイヤが起立した状態のコントローラ7を左右に動かしたとき、そのコントローラ7の動作に応じて即時にバットオブジェクトBOが仮想ゲーム空間内を移動する。一方、プレイヤが起立した状態のコントローラ7を倒すような動作をしたとき、そのコントローラ7の傾斜角度に応じてバットオブジェクトBOが所定の割合で倒れる。つまり、バットオブジェクトBOは、コントローラ7の左右の動作に対しては即時に反応して移動するが、コントローラ7が倒れる動作に対しては遅れて反応して徐々に倒れていく。一般的に、現実世界である程度重量のある長軸部材の一端を持って移動させたり傾倒角度を変えたりしようとすると、当該一端は即時に移動するが他端が遅れて追随して移動する現象が生じる。例えば、プレイヤは、コントローラ7を倒す角度を素早く変化させることができる、しかしながら、コントローラ7の傾斜角度と同様にバットオブジェクトBOの傾倒角度を変化させてしまうと、プレイヤキャラクタPCが軽量の長軸部材を握っている感じとなり、プレイヤに非現実的な感覚を与えてしまう。また、コントローラ7は、プレイヤが把持する手の微妙な動きによって傾斜角度が変化しているが、この変化にバットオブジェクトBOが敏感に反応すると、コントローラ7を操作するプレイヤの動きに合わせてバットオブジェクトBOを動かしているつもりでも、当該バットオブジェクトBOが不自然な動きとなる。しかしながら、本実施形態では、コントローラ7の左右の動作や倒す動作に対してバットオブジェクトBOの一端(支点位置)は即時に反応して移動するが、他端が即時移動させた場合の位置へ追従するように遅れて反応して徐々に倒れていくため、野球バットを表すオブジェクトを自然に描画でき、プレイヤがコントローラ7に加えた動作を反映した野球ゲームを表現することができる。
【0064】
次に、図10および図11を参照して、バットオブジェクトBOの可動範囲および可倒範囲の一例について説明する。なお、図10は、バットオブジェクトBOの動きを説明するために仮想ゲーム空間を水平方向から見た図である。図11は、バットオブジェクトBOの動きを説明するために仮想ゲーム空間を上方向から見た図である。
【0065】
図10および図11において、仮想ゲーム空間には互いに直交するxyz軸が定義されており、モニタ2に表示される仮想ゲーム空間の左右方向がx軸、上下方向がy軸、奥行方向がz軸となる。そして、バットオブジェクトBOに一部分(例えば、プレイヤキャラクタPCがバットオブジェクトBOを握るグリップの位置等の下端部分)に当該バットオブジェクトBOの配置位置を示す点POが設けられ、当該点POのxyz軸座標値によってバットオブジェクトBOの仮想ゲーム空間における位置が設定される。そして、点POを中心に傾く角度(例えば、方向ベクトル)によってバットオブジェクトBOの仮想ゲーム空間における傾倒が設定される。
【0066】
ここで、バットオブジェクトBOの配置位置および傾倒角度については、コントローラ7の前面を上に向けて起立させて静止させたとき(図8参照)に対応する基準配置位置および基準傾倒角度がそれぞれ設けられている。図10および図11においては、基準配置位置に点POが配置され基準傾倒角度で傾いたバットオブジェクトBOを実線で表現し、基準配置位置および基準傾倒角度から変化した状態で表現されるバットオブジェクトBOを破線で表現している。本実施例においては、コントローラ7の前面を上に向けて起立させて静止させたときを基準にしているために、基準傾倒角度をy軸正方向(仮想ゲーム空間における上方向)としている。
【0067】
仮想ゲーム空間において点POが移動できる範囲として、可動範囲が設けられる。可動範囲は、基準配置位置を中心にx軸の正負方向およびz軸方向の正負方向にそれぞれ所定幅(後述するx軸方向移動幅wxおよびz軸方向移動幅wz)を有している。本実施例では、加速度センサ701が検出可能な加速度の最大値(例えば、各軸に対して最大2G)に対応して点POが移動可能な可動範囲の最大範囲(つまり、x軸およびz軸方向に対する可動範囲の最大/最小値)を設定し、加速度センサ701の出力値を可動範囲内にスケーリングして移動後の点POのxyz軸座標値を算出する。例えば、基準配置位置を中心としたx軸およびz軸方向の可動範囲の幅を仮想ゲーム空間における長さ3に設定する。そして、加速度センサ701が検出するY軸方向の加速度をx軸方向の点POの移動に対応させ、加速度センサ701が検出するX軸方向の加速度をz軸方向の点POの移動に対応させる。そして、加速度センサ701が検出可能な加速度の最大値が2Gであるとすると、検出したY軸方向の加速度を1.5倍することによって点POのx軸方向の配置位置が可動範囲内にスケーリングされる。また、検出したX軸方向の加速度を1.5倍することによって点POのz軸方向の配置位置が可動範囲内にスケーリングされる。図10および図11においては、加速度センサ701がY軸負方向の加速度の最大値を検出したことに応じて、可動範囲のx軸方向最小値にスケーリングされた座標点を点POxaとして示している。加速度センサ701がY軸正方向の加速度の最大値を検出したことに応じて、可動範囲のx軸方向最大値にスケーリングされた座標点を点POxbとして示している。加速度センサ701がX軸負方向の加速度の最大値を検出したことに応じて、可動範囲のz軸方向最小値にスケーリングされた座標点を点POzaとして示している。そして、加速度センサ701がX軸正方向の加速度の最大値を検出したことに応じて、可動範囲のz軸方向最大値にスケーリングされた座標点を点POzbとして示している。
【0068】
また、仮想ゲーム空間においてバットオブジェクトBOが傾倒できる範囲として、可倒範囲が設けられる。可倒範囲は、基準傾倒角度(つまり、y軸正方向)を中心にx軸の正負方向およびz軸方向の正負方向にそれぞれ所定角度を有している。そして、バットオブジェクトBOは、加速度センサ701が検出するY軸方向の加速度を用いてx軸方向へ傾いて描画され、加速度センサ701が検出するX軸方向の加速度を用いてz軸方向へ傾いて描画される。なお、後述により明らかとなるが、ゲーム装置3は、コントローラ7から出力されるX軸およびY軸方向加速度データを用いて上記可動範囲内でバットオブジェクトBOの傾き目標を算出し、現在のバットオブジェクトBOの傾倒角度から傾き目標に向かって所定の割合(例えば、10%)だけ傾倒角度を変化させてバットオブジェクトBOを描画する。図10および図11においては、可倒範囲のx軸負方向側へ最も傾いた状態をバットオブジェクトBOxaとして示している。可倒範囲のx軸正方向側へ最も傾いた状態をバットオブジェクトBOxbとして示している。可倒範囲のz軸負方向側へ最も傾いた状態をバットオブジェクトBOzaとして示している。そして、可倒範囲のz軸正方向側へ最も傾いた状態をバットオブジェクトBOzbとして示している。
【0069】
なお、本実施例では、後述によって明らかとなるが、コントローラ7が水平に近い状態まで動かされたとき、プレイヤキャラクタPCがバットオブジェクトBOを水平付近まで倒して構える、いわゆるバントが可能となっている。バントの場合は、コントローラ7の動作に対してバットオブジェクトBOの一端(支点位置)および他端が共に即時に反応して移動させてもかまわない。これは、バントが2点で野球バットを支持(つまり、グリップ部付近およびバット中央付近を支持)することが一般的であり、野球バットの先端も即時に反応する方が自然であるからである。このように、プレイヤキャラクタPCが表現する打者の構えによっては、バットオブジェクトBOの他端も即時移動させることによって、さらに野球バットを表すオブジェクトを自然に描画でき、プレイヤがコントローラ7に加えた動作を反映した野球ゲームを表現することができる。
【0070】
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図12を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図12は、ゲーム装置3のメインメモリ33に記憶される主なデータを示す図である。
【0071】
図12に示すように、メインメモリ33には、加速度データDa、移動幅データDb、支点位置座標データDc、コントローラ傾きデータDd、オブジェクト傾き目標データDe、オブジェクト傾きデータDf、オブジェクト傾き変化データDg、および画像データDh等が記憶される。なお、メインメモリ33には、図12に示す情報に含まれるデータの他、ゲームに登場するプレイヤキャラクタPCや相手キャラクタ等に関するデータ(位置データ等)や仮想ゲーム空間に関するデータ(地形データ等)等、ゲーム処理に必要なデータが記憶される。
【0072】
加速度データDaは、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データである。加速度データDaには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3が含まれる。なお、ゲーム装置3に備える受信ユニット6は、コントローラ7から所定間隔例えば5msごとに送信される操作情報に含まれる加速度データを受信し、受信ユニット6に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である1フレーム毎に読み出されてメインメモリ33の加速度データDaが更新される。本実施例では、加速度データDaは、コントローラ7から送信された最新の加速度データに更新されればよいが、過去所定フレーム分の加速度データを格納するようにしてもよい。
【0073】
移動幅データDbは、点PO(支点位置;図10、図11参照)が基準配置位置に対して仮想ゲーム空間内を移動する幅を示すデータである。移動幅データDbには、x軸方向への移動幅を示すx軸方向移動幅データDb1およびz軸方向への移動幅を示すz軸方向移動幅データDb2が含まれる。支点位置座標データDcは、仮想ゲーム空間において点POが位置する座標値を示すデータである。
【0074】
コントローラ傾きデータDdは、加速度データDaを用いて算出されたコントローラ7の傾き方向を示すデータである。オブジェクト傾き目標データDeは、バットオブジェクトBOが点POを中心に仮想ゲーム空間での傾き目標を示すデータであり、例えば、方向ベクトルによって示される。オブジェクト傾きデータDfは、バットオブジェクトBOが点POを中心に仮想ゲーム空間で傾いて描画される角度を示すデータであり、例えば、方向ベクトルによって示される。オブジェクト傾き変化データDgは、バットオブジェクトBOの傾きが変化する変位を示すデータであり、例えば、方向ベクトルの変位を示す変位ベクトルによって示される。
【0075】
画像データDhは、プレイヤキャラクタ画像データDh1およびオブジェクト画像データDh2等を含み、仮想ゲーム空間にプレイヤキャラクタPCやバットオブジェクトBOを配置してゲーム画像を生成するためのデータである。
【0076】
次に、図13〜図18を参照して、ゲーム装置3において行われるゲーム処理の詳細を説明する。なお、図13は、ゲーム装置3において実行されるゲーム処理の流れを示すフローチャートである。図14は、図13におけるステップ52の支点位置算出処理の詳細な動作を示すサブルーチンである。図15は、図13におけるステップ53の傾き算出処理の詳細な動作を示すサブルーチンである。図16は、コントローラ7が起立状態から傾いた一例を示す図である。図17は、バットオブジェクトBOの位置および傾きが変化した一例を示す図である。図18は、バントモードにおけるバットオブジェクトBOの位置および傾きが変化した一例を示す図である。なお、図13〜図15に示すフローチャートにおいては、ゲーム処理のうち、プレイヤがコントローラ7を移動または傾けることに応じて行われるオブジェクトの描画について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図13〜図15では、CPU30が実行する各ステップを「S」と略称する。
【0077】
ゲーム装置3の電源が投入されると、ゲーム装置3のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図13〜図15に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【0078】
図13において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し(ステップ51)、処理を次のステップに進める。そして、CPU30は、取得した加速度データを加速度データDaとしてメインメモリ33に記憶する。ここで、ステップ51で取得される加速度データには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX、Y、およびZ軸方向加速度データが含まれている。ここでは、通信部75は、所定の時間間隔(例えば5ms間隔)で操作情報をゲーム装置3へ送信しており、受信ユニット6に備える図示しないバッファに少なくとも加速度データが蓄えられる。そして、CPU30は、ゲーム処理単位である1フレーム毎にバッファに蓄えられた加速度データを取得してメインメモリ33に格納する。
【0079】
次に、CPU30は、支点位置算出処理を行い(ステップ52)、処理を次のステップに進める。以下、図14を参照して、上記ステップ52における支点位置算出処理の動作について説明する。
【0080】
図14において、CPU30は、上記ステップ51で取得したY軸方向加速度データDa2に基づいて、x軸方向移動幅wxを算出する(ステップ61)。そして、CPU30は、算出したx軸方向移動幅wxをx軸方向移動幅データDb1としてメインメモリ33に記憶して、処理を次のステップに進める。上述したように、CPU30は、加速度センサ701が検出可能な加速度の最大値に対応して上記可動範囲の最大範囲を設定し、加速度センサ701が検出した加速度を当該可動範囲内にスケーリングする。例えば、加速度センサ701が検出可能な加速度の最大値が2Gであり、基準配置位置を中心としたx軸およびz軸方向の可動範囲の幅が長さ3である場合、CPU30は、Y軸方向加速度データDa2が示す加速度を1.5倍することによってx軸方向移動幅wxを算出する。
【0081】
次に、CPU30は、上記ステップ51で取得したX軸方向加速度データDa1に基づいて、z軸方向移動幅wzを算出する(ステップ62)。そして、CPU30は、算出したz軸方向移動幅wzをz軸方向移動幅データDb2としてメインメモリ33に記憶して、処理を次のステップに進める。例えば、加速度センサ701が検出可能な加速度の最大値が2Gであり、基準配置位置を中心としたx軸およびz軸方向の可動範囲の幅が長さ3である場合、CPU30は、X軸方向加速度データDa1が示す加速度を1.5倍することによってz軸方向移動幅wzを算出する。
【0082】
次に、CPU30は、算出したx軸方向移動幅wxおよびz軸方向移動幅wzに応じた支点位置座標を算出する(ステップ63)。そして、CPU30は、算出した支点位置座標を支点位置座標データDcとしてメインメモリ33に記憶して、当該サブルーチンによる処理を終了する。例えば、仮想ゲーム空間における基準配置位置座標を(x0,y0,z0)とすると、CPU30は、支点位置座標を(x0+wz,y0,z0+wz)とする。
【0083】
図16および図17を用いて、コントローラ7の動きと支点位置との関連について説明する。ここで、図16は、モニタ2の表示画面側の空間内に位置したコントローラ7を当該表示画面に向かう方向に見た状態(すなわち、紙面の裏側方向にモニタ2の表示画面が存在する状態であり、図8と同様)を示している。また、図17は、モニタ2に表示されたプレイヤキャラクタPCおよびバットオブジェクトBOの状態を示している。図16および図17を比較すれば明らかなように、モニタ2に表現される仮想ゲーム空間がプレイヤの位置している実空間内に存在するように仮定すると、プレイヤがモニタ2の表示画面に向かって右方向となる実空間のYs軸正方向が、仮想ゲーム空間の右方向となるx軸正方向と同じ方向となる。また、プレイヤの上方向となる実空間のZs軸正方向が、仮想ゲーム空間の上方向となるy軸正方向と同じ方向となる。また、プレイヤからモニタ2へ向かう方向となる実空間のXs軸正方向が、仮想ゲーム空間の奥行方向となるz軸正方向と同じ方向となる。
【0084】
コントローラ7の上面をYs軸負方向に向け、前面をZs軸正方向に向けて起立させた状態(図16において、破線で示すコントローラ7i)から、コントローラ7をYs軸正方向へ距離MY移動させてYs軸正方向へ角度TYだけ倒した状態(図16において、実線で示すコントローラ7)を想定する。上記起立した状態のコントローラ7iにおいては、X軸方向およびY軸方向の加速度は共に0であってZ軸負方向の重力加速度を検出する(図8参照)。そして、コントローラ7は、距離MYの移動による加速度(移動加速度)および角度TY傾けることによる重力加速度の変化を検出する。具体的には、図16に示すように、コントローラ7の加速度センサ701は、Y軸正方向およびZ軸正方向の間の方向に生じる移動加速度と、Y軸正方向およびZ軸負方向の間の方向に生じる重力加速度とを検出する。したがって、加速度センサ701は、上記移動加速度のY軸方向成分と重力加速度のY軸方向成分とが加わったY軸正方向の加速度を検出する。また、加速度センサ701が検出するX軸方向の加速度は0である。
【0085】
一方、上述した動作では、Y軸方向加速度データに基づいて算出されたx軸方向移動幅wxを用いて支点位置座標がスケーリングされる。例えば、上述したY軸正方向の加速度に応じて、支点位置が上記起立状態に対応する位置からx軸正方向へ移動する(図17に示す点POiの位置から点POの位置へ移動)。つまり、コントローラ7の移動に応じて即時に同じ方向(図16および図17の例では、実空間のYs軸正方向と同じ仮想ゲーム空間のx軸正方向)に支点位置が移動する。
【0086】
図13に戻り、CPU30は、傾き算出処理を行い(ステップ53)、処理を次のステップに進める。以下、図15を参照して、上記ステップ53における傾き算出処理の動作について説明する。
【0087】
図15において、CPU30は、上記ステップ51で取得した加速度データDa1に基づいて、現在のコントローラ傾きを算出する(ステップ71)。そして、CPU30は、算出したコントローラ傾きをコントローラ傾きデータDdとしてメインメモリ33に記憶して、処理を次のステップに進める。例えば、加速度センサ701が静的な加速度(重力加速度)を検知すると、加速度センサ701からの出力を用いた演算によって重力ベクトルに対するコントローラ7の傾きを算出することができる。なお、加速度センサ701が動的な加速度(移動加速度)も検知している場合、正確なコントローラ7の傾きを求めることは困難となるが、本実施例においては当該動的な加速度も静的な加速度と見なしてコントローラ傾きを求めてもかまわない。
【0088】
次に、CPU30は、コントローラ7の傾きが実空間において水平から±45°の範囲か否かを判断する(ステップ72)。そして、CPU30は、コントローラ7の傾きが水平から±45°の範囲外である場合、処理を次のステップ73に進める。一方、CPU30は、コントローラ7の傾きが水平から±45°の範囲内である場合、処理を次のステップ76に進める。
【0089】
ステップ73において、CPU30は、上記ステップ71で算出されたコントローラ傾きに応じて、バットオブジェクトBOの傾き目標を算出する(図17参照)。そして、CPU30は、算出した傾き目標をオブジェクト傾き目標データDeとしてメインメモリ33に記憶して、処理を次のステップに進める。例えば、CPU30は、実空間におけるコントローラ傾きをそのまま仮想ゲーム空間における方向に置き換えた方向ベクトルを算出してオブジェクト傾き目標とする。
【0090】
次に、CPU30は、現在のオブジェクト傾きから上記傾き目標に向かって所定割合で変位する傾き変化を算出する(ステップ74;図17参照)。そして、CPU30は、算出した傾き変化をオブジェクト傾き変化データDgとしてメインメモリ33に記憶して、処理を次のステップに進める。例えば、CPU30は、オブジェクト傾きデータDfとして格納されている現在のバットオブジェクトBOの傾きを示す方向ベクトルから傾き目標を示す方向ベクトルへ、所定割合(例えば、10%)で変位した移動ベクトルを算出して傾き変化とする。
【0091】
次に、CPU30は、上記ステップ74で算出した傾き変化に基づいて、新たなオブジェクト傾きを算出する(ステップ75)。そして、CPU30は、算出したオブジェクト傾きをオブジェクト傾きデータDfとしてメインメモリ33に記憶して、当該サブルーチンによる処理を終了する。
【0092】
図16および図17を用いて、コントローラ7の傾きとオブジェクト傾きとの関連について説明する。例えば、図16に示すように、角度TYだけ傾けてコントローラ7を静止させた場合、コントローラ7の加速度センサ701は、Y軸正方向およびZ軸負方向の間の方向に生じる静的な重力加速度を検出する。そして、CPU30は、この重力加速度を検出した加速度センサ701からの出力に応じて、コントローラ7が実空間の上方向に対して角度TYだけコントローラ7がZs軸正方向からYs軸正方向側へ傾いていることを算出する。次に、CPU30は、コントローラ7の傾きをそのまま仮想ゲーム空間に置き換えて、y軸正方向からx軸正方向側へ角度TYだけバットオブジェクトBOを傾ける傾き目標を算出する。そして、CPU30は、現在のバットオブジェクト(図17において、破線でしめすバットオブジェクトBOi)を傾き目標へ、所定割合だけ傾きを変化させる(図17において、破線でしめすバットオブジェクトBO)。
【0093】
このように、バットオブジェクトBOは、支点位置(点PO)の移動と同様にコントローラ7の傾きに応じて仮想ゲーム空間内で傾いて描画される。例えば、上記傾き目標をそのまま反映させてバットオブジェクトBOを描画すると、図17において破線で示すバットオブジェクトBOtyのようにコントローラ7の傾きに敏感に反応した描画が行われることになる。しかしながら、本実施例ではコントローラ7の傾き変化量と同じ傾き変化をして描画されるのではなく、バットオブジェクトBOがコントローラ7の傾き変化量の所定割合(例えば、10%)だけ反映させた傾き変化で描画される。つまり、プレイヤがコントローラ7を傾ける操作に対して、バットオブジェクトBOが遅れて反応して徐々に倒れていくため、野球バットを自然に表現でき、プレイヤがコントローラ7に加えた動作を反映した野球ゲームを表現することができる。
【0094】
なお、上述したようにバットオブジェクトBOには可倒範囲が設定されているため、上記ステップ73〜75の処理の何れかでオブジェクト傾きが可動範囲内に収める処理を行うことが必要となる。例えば、CPU30は、上記ステップ73において、コントローラ傾きを仮想ゲーム空間に置き換えた方向に最も近い可倒範囲内となる方向を傾き目標としてもかまわない。また、CPU30は、上記ステップ74やステップ75において、可倒範囲内になるように傾き変化や新たなオブジェクト傾きを算出してもかまわない。
【0095】
図15に戻り、コントローラ7の傾きが水平から±45°の範囲内である場合、CPU30は、バントモードに移行してステップ76に処理を進める。ステップ76において、CPU30は、上記ステップ71で算出されたコントローラ傾きに応じて、支点位置座標を算出する。そして、CPU30は、算出した支点位置座標を支点位置座標データDcとしてメインメモリ33に記憶する。次に、CPU30は、上記ステップ71で算出されたコントローラ傾きに応じて、新たなオブジェクト傾きを算出する(ステップ77)。そして、CPU30は、算出したオブジェクト傾きをオブジェクト傾きデータDfとしてメインメモリ33に記憶して、当該サブルーチンによる処理を終了する。
【0096】
ここで、CPU30は、バントモードにおいては水平に対するコントローラ7の傾きに応じて支点位置およびバットオブジェクトBOの傾きを決定している。例えば、水平に対するコントローラ7の傾きに応じて、バットオブジェクトBOの支点位置およびバットオブジェクトBOの傾きが予め設定されている。具体的には、CPU30は、実空間におけるコントローラ7の傾きを仮想ゲーム空間における水平に近づけるように置き換えて、バットオブジェクトBOの傾きを設定する。
【0097】
図18を用いて、コントローラ7の傾きとオブジェクトの位置および傾きとの関連について説明する。例えば、CPU30は、プレイヤがコントローラ7を水平(0°)にした場合、バットオブジェクトBOの支点位置を点PO0の位置に設定する。そして、CPU30は、コントローラ7の傾き(つまり、水平)を仮想ゲーム空間に置き換えて、x軸正方向をバットオブジェクトBOの傾きに設定する(図18において、実線でしめすバットオブジェクトBO0)。
【0098】
また、CPU30は、プレイヤがコントローラ7の前面を水平より45°上方に向けた(+45°)場合、バットオブジェクトBOの支点位置を点PO+45の位置に設定する。そして、CPU30は、コントローラ7の傾き(つまり、水平から45°上方)を仮想ゲーム空間における水平に近づけるように置き換えて、x軸正方向から45°より小さな角度でy軸正方向側に傾けた角度をバットオブジェクトBOの傾きに設定する(図18において、破線でしめすバットオブジェクトBO+45)。さらに、CPU30は、プレイヤがコントローラ7の前面を水平より45°下方に向けた(−45°)場合、バットオブジェクトBOの支点位置を点PO−45の位置に設定する。そして、CPU30は、コントローラ7の傾き(つまり、水平から45°下方)を仮想ゲーム空間における水平に近づけるように置き換えて、x軸正方向から45°より小さな角度でy軸負方向側に傾けた角度をバットオブジェクトBOの傾きに設定する(図18において、破線でしめすバットオブジェクトBO−45)。なお、コントローラ7の傾きが水平から上方または下方から45°未満であるときは、上述したバットオブジェクトBO+45およびBO−45の間に、バットオブジェクトBOの位置および角度が設定される。
【0099】
なお、上述したバントモードにおけるバットオブジェクトBOの移動については、主に仮想ゲーム空間の左右上下方向(つまり、xy平面方向)に沿って行われるが、奥行方向(z軸方向)にバットオブジェクトBOを移動させたり傾けたりしてもかまわない。例えば、プレイヤがコントローラ7を水平状態で把持して左右にコントローラ7を移動させると、当該コントローラ7がZ軸方向(図3、図4参照)を中心としてねじられることがある。そして、このコントローラ7に加えられるねじりは、上述したように算出されるコントローラ7の傾きにも現れる。したがって、コントローラ7が水平に保たれていても、このねじりを抽出することによってプレイヤがコントローラ7を左右に移動させた位置を算出することが可能となる。このコントローラ7を左右に移動させた位置を算出した結果を用いて、バントモードにおけるバットオブジェクトBOの支点位置を仮想ゲーム空間のz軸方向にも移動させたり、バットオブジェクトBOをz軸方向に傾けたりして描画することができる。
【0100】
また、バントモードにおけるバットオブジェクトBOの支点位置座標は、上記ステップ71で算出されたコントローラ傾きに応じて算出されているが、上記ステップ61〜ステップ63と同様に可動範囲内にスケーリングすることで算出してもかまわない。例えば、バントモード時おいても、仮想ゲーム空間において支点位置が移動できる可動範囲を設定する。この可動範囲は、バントモードの基準配置位置(図18に示す点PO0の位置;基準配置位置座標を(xb0,yb0,zb0)とする)を中心にy軸の正負方向およびz軸方向の正負方向にそれぞれy軸方向移動幅wyおよびz軸方向移動幅wzを有している。具体的には、可動範囲におけるz軸正方向最大値に応じた支点位置が、図18に示す点PO+45となる。また、可動範囲におけるz軸負方向最小値に応じた支点位置が、図18に示す点PO−45となる。次に、上記ステップ51で取得したZ軸方向加速度データDa3に基づいてy軸方向移動幅wyを算出し、X軸方向加速度データDa1に基づいてz軸方向移動幅wzを算出する。そして、y軸方向移動幅wyおよびz軸方向移動幅wzを用いて、バントモードの支点位置座標を(xb0,yb0+wy,zb0+wz)として算出する。このように、バントモードにおいても、加速度センサ701から出力される加速度データが示す加速度を仮想ゲーム空間内にスケーリングすることによって、支点位置を求めることができる。
【0101】
図13に戻り、CPU30は、支点位置および現在のオブジェクト傾きに応じてバットオブジェクトBOをモニタ2に描画して(ステップ54)、処理を次のステップに進める。具体的には、CPU30は、支点位置座標データDcおよびオブジェクト傾きデータDfを参照して、バットオブジェクトBOの支点位置座標(点POの座標)およびバットオブジェクトBOの傾倒方向を示す方向ベクトルを得る。そして、CPU30は、画像データDh等を用いて、モニタ2の表示画面にバットオブジェクトBOを構えたプレイヤキャラクタPCを描画する。
【0102】
次に、CPU30は、プレイヤがバットをスイングする動作を開始する操作を行ったか否かを判断する(ステップ55)。例えば、スイングを開始する操作は、プレイヤが把持するコントローラ7を左右に振ることによって行われる。この場合、CPU30は、加速度センサ701から出力されるZ軸正方向の加速度の大きさによって、プレイヤがコントローラ7を振り始めたことを判定することができる。そして、CPU30は、スイングを開始する操作が行われていない場合、上記ステップ51に戻って処理を繰り返す。一方、CPU30は、スイングを開始する操作が行われた場合、当該フローチャートによる処理を終了する。
【0103】
次に、図19A〜図19Dを参照して、起立状態のバットオブジェクトBOが仮想ゲーム空間内を移動して傾いていく表示例を説明する。なお、図19Aは、コントローラ7が起立して静止している初期段階で表示されるバットオブジェクトBO1の一例である。図19Bは、コントローラ7を水平移動させて傾けたときの第1段階で表示されるバットオブジェクトBO2の一例である。図19Cは、コントローラ7を水平移動させて傾けたときの第2段階で表示されるバットオブジェクトBO3の一例である。図19Dは、コントローラ7を水平移動させて傾けたときの第3段階で表示されるバットオブジェクトBO4の一例である。ここで、図19A〜図19Dにおいては、説明を簡単にするためにバットオブジェクトBOのみを表示している。
【0104】
ここで、図16を用いて説明した状態と同様に、コントローラ7の上面をYs軸負方向に向け、前面をZs軸正方向に向けて起立させた状態から、コントローラ7をYs軸正方向へ移動させてYs軸正方向へ倒し、当該傾倒状態を保って静止させる操作を想定する。コントローラ7を起立させて静止させているとき、図19Aに示すように支点位置が基準配置位置に設定され(点PO1)、バットオブジェクトBOの傾きが基準傾倒角度(y軸正方向)に設定されて表示される(バットオブジェクトBO1)。
【0105】
図19Bに示すように、コントローラ7をYs軸正方向へ移動させてY軸正方向の加速度が検出されたとき、当該Y軸正方向の加速度に応じて支点位置がx軸正方向へ即時に移動する(点PO2)。そして、バットオブジェクトBOは、Y軸正方向の加速度に応じて設定された傾き目標に向かって所定割合(例えば、10%)だけx軸正方向へ傾く(バットオブジェクトBO2)。ここで、バットオブジェクトBOの傾きは、所定割合分だけ傾き目標に近づくため、即時に傾き目標まで到達することはない。
【0106】
図19Cに示すように、コントローラ7をYs軸正方向へ移動させた後、Ys軸正方向へコントローラ7を倒して静止させたとき、水平移動によるY軸正方向の移動加速度は0となるが重力加速度によるY軸正方向の加速度が検出される。したがって、コントローラ7が検出するY軸正方向の加速度の大きさが小さくなるため、支点位置がx軸負方向へ戻る移動をする(点PO3)。一方、バットオブジェクトBOは、重力加速度によるY軸正方向の加速度に応じて設定された傾き目標に向かって所定割合だけ徐々にx軸正方向へ傾いていく(バットオブジェクトBO3)。ここで、図19Cの状態では、図19Bの状態と比較して傾き目標が変化しているが、バットオブジェクトBOの傾きが傾き目標まで到達していないために、バットオブジェクトBOのx軸正方向への傾倒動作が継続する。
【0107】
図19Dに示すように、Ys軸正方向へコントローラ7を倒して静止させた状態を継続しているとき、図19Cの状態と同じ重力加速度によるY軸正方向の加速度が検出される。したがって、コントローラ7が検出するY軸正方向の加速度の大きさに変化がないため、支点位置は移動しない(点PO3)。一方、バットオブジェクトBOは、重力加速度によるY軸正方向の加速度に応じて設定された傾き目標に向かってさらに所定割合だけx軸正方向へ傾いていく(バットオブジェクトBO4)。このように、コントローラ7の移動によって検出される動的な加速度および静的な加速度の変化に応じた支点位置移動は即時に反映されて描画されるが、コントローラ7の傾きによって検出される静的な加速度の変化に応じたバットオブジェクトBOの傾倒動作は遅れて反応して徐々に倒れていく。
【0108】
なお、上述した実施例では、バットオブジェクトBOの下端部分に当該バットオブジェクトBOの配置位置を示す点POを1点設け、当該点POを支点位置とした方向ベクトルによってバットオブジェクトBOの傾倒角度を設定したが、他の方式でバットオブジェクトBOの配置位置および傾倒角度を設定してもかまわない。例えば、バットオブジェクトBOに当該バットオブジェクトBOの配置位置を示す点を複数設定することによって、バットオブジェクトBOの配置位置および傾倒角度を設定してもかまわない。具体的には、バットオブジェクトBOの下端部分に設けられた点POに加えて、バットオブジェクトBOの上端部分に点PAを設ける。そして、バットオブジェクトBOの傾きを、仮想ゲーム空間における点PAの座標値で定義する。この場合、上記ステップ74の処理において算出する傾き変化を点PAの変化で算出すれば、オブジェクトの位置および傾きを2点の座標値で定義しても本発明を実現することができる。
【0109】
このように、上記実施形態に係るゲーム装置3は、加速度センサを備えた入力装置を用いた操作入力において、加速度センサからの出力のみを用いてオブジェクトを描画できる。さらに、バットオブジェクトBOの一端(支点位置)をコントローラ7の動作に応じて即時に移動させ、他端をコントローラ7の傾きに徐々に追従するように動かすことができる。例えば、長軸部材等の一端を持ってオブジェクトを仮想ゲーム空間内で動かす描画をする場合、その一端は即時移動させ、他端は即時移動させた場合の位置へ追従するように遅れて移動させることにより、実空間で長軸部材を動かしているようなリアルな表現が可能となる。
【0110】
また、上述した説明では、コントローラ7から出力される3軸加速度データを用いて野球バットを扱うゲーム例を説明したが、他のゲーム処理にも用いることができる。例えば、プレイヤキャラクタが何らかのオブジェクト(特に、剣、竹刀、棒等の長軸物)を持って扱うゲームや仮想ゲーム空間内で当該オブジェクトを移動させるようなゲームに適用できることは言うまでもない。また、上述した説明では、コントローラ7の動きや傾きを判別するゲーム装置3をゲームシステム1に適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータなどの情報処理装置にも適用することができる。例えば、判別された入力装置の動きや傾きに応じて、情報処理装置が表示しているオブジェクトが移動する等、入力装置に対する判別結果に基づいて様々な処理を行うことができる。
【0111】
また、コントローラ7に設けられた加速度センサ701は、互いに直交する3軸成分に分けてそれぞれ検出して出力する3軸加速度センサを用いて説明したが、少なくとも直交する2軸成分をそれぞれ検出する加速度センサを用いれば本発明を実現することができる。例えば、コントローラ7が配置された3次元空間における加速度をX軸およびY軸(図3、図4参照)の2軸成分に分けてそれぞれ検出して出力する加速度センサを用いても、上述したx軸およびz軸方向への支点位置の移動およびx軸およびz軸方向への傾き判定を行うことができる。この場合、検出したX軸およびY軸方向の加速度が共に0である場合に、コントローラ7が上記起立状態であると判定することができる。また、上述した説明でZ軸成分の加速度を用いて判定していたスイング開始判定ができなくなるが、XおよびY軸に対する加速度成分から得られるスイングによって生じる遠心力成分を用いてスイング開始を判定してもいいし、加速度センサ701とは異なる他のセンサを用いてスイング開始を判定してもかまわない。また、プレイヤがコントローラ7をスイングするときは操作ボタン72の何れかを押下するようなゲームルールを設定して、当該操作ボタン72の何れかが押下されたことに応じてスイング開始を判定してもかまわない。
【0112】
さらに、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。例えば、コントローラ7が配置された3次元空間における加速度をY軸(図3、図4参照)成分のみ検出して出力する加速度センサを用いても、上述したx軸方向への支点位置の移動およびx軸方向への傾き判定を行うことができる。この場合、検出したY軸方向の加速度が0である場合に、コントローラ7が上記起立状態であると仮定して判定する。この場合、バットオブジェクトBOが仮想ゲーム空間におけるx軸方向に移動およびx軸方向に傾く態様となるが、このような1方向へバットオブジェクトBOを移動および傾倒させて描画する場合、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。
【0113】
また、上述した説明では、コントローラ7とゲーム装置3とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置3とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置3の接続端子に接続する。
【0114】
また、コントローラ7から無線送信される送信データを受信する受信手段として、ゲーム装置3の接続端子に接続された受信ユニット6を用いて説明したが、ゲーム装置3の本体内部に設けられた受信モジュールによって当該受信手段を構成してもかまわない。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU30に出力される。
【0115】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、コントローラ7における撮像情報演算部74の位置(撮像情報演算部74の光入射口)は、ハウジング71の前面でなくてもよく、ハウジング71の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【産業上の利用可能性】
【0116】
本発明に係るゲームプログラムおよびゲーム装置は、加速度センサを備えた入力装置を用いた操作入力において、当該入力装置の傾きに応じてオブジェクトを描画でき、ゲームコントローラ等の動きに応じて描画する装置やプログラムとして有用である。
【図面の簡単な説明】
【0117】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置3の機能ブロック図
【図3】図3のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面後方から見た斜視図
【図5A】コントローラ7の上筐体を外した状態を示す斜視図
【図5B】コントローラ7の下筐体を外した状態を示す斜視図
【図6】図3のコントローラ7の構成を示すブロック図
【図7】図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図8】コントローラ7を起立させて静止した状態を示す図
【図9】コントローラ7から受信したX、Y、およびZ軸方向加速度データに応じて、モニタ2に描画した野球ゲームの一例を示す図
【図10】バットオブジェクトBOの動きを説明するために仮想ゲーム空間を水平方向から見た図
【図11】バットオブジェクトBOの動きを説明するために仮想ゲーム空間を上方向から見た図
【図12】ゲーム装置3のメインメモリ33に記憶される主なデータを示す図
【図13】ゲーム装置3において実行されるゲーム処理の流れを示すフローチャート
【図14】図13におけるステップ52の支点位置算出処理の詳細な動作を示すサブルーチン
【図15】図13におけるステップ53の傾き算出処理の詳細な動作を示すサブルーチン
【図16】コントローラ7が起立状態から傾いた一例を示す図
【図17】バットオブジェクトBOの位置および傾きが変化した一例を示す図
【図18】バントモードにおけるバットオブジェクトBOの位置および傾きが変化した一例を示す図
【図19A】コントローラ7が起立して静止している初期段階で表示されるバットオブジェクトBO1の一例
【図19B】コントローラ7を水平移動させて傾けたときの第1段階で表示されるバットオブジェクトBO2の一例
【図19C】コントローラ7を水平移動させて傾けたときの第2段階で表示されるバットオブジェクトBO3の一例
【図19D】コントローラ7を水平移動させて傾けたときの第3段階で表示されるバットオブジェクトBO4の一例
【符号の説明】
【0118】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
30…CPU
31…メモリコントローラ
32…GPU
33…メインメモリ
34…DSP
35…ARAM
36…コントローラI/F
37…ビデオI/F
38…外部メモリI/F
39…オーディオI/F
40…ディスクドライブ
41…ディスクI/F
4…光ディスク
5…外部メモリカード
6…受信ユニット
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
703…水晶振動子
704…バイブレータ
705…電池
8…マーカ
【技術分野】
【0001】
本発明は、ゲームプログラムおよびゲーム装置に関し、より特定的には、加速度センサを備えた入力装置の傾きに応じてオブジェクトの描画を行うゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来、加速度センサを備えた入力装置をユーザが操作し、当該加速度センサからの出力を利用してゲーム操作する装置が開発されている。例えば、棒状のゲームコントローラに多軸加速度センサを備え、当該加速度センサからの出力を利用してゲームを楽しむゲーム装置が開示されている(例えば、特許文献1参照)。
【0003】
上記特許文献1に開示された棒状コントローラは、多軸加速度センサA1や多軸ジャイロセンサA2を備えている。そして、ゲーム機A10は、多軸加速度センサA1からの出力に基づいて、刀を振る動作(例えば、強弱、前後左右上下移動)のデータを作成する。また、ゲーム機A10は、多軸ジャイロセンサA2からの出力に基づいて、刀を回す(ひねる)姿勢、前後左右に傾ける姿勢のデータを作成する。その後、ゲーム機A10は、これらのデータに基づいてゲーム内のオブジェクト(刀)の移動した様子をモニタA20のゲーム画面に出力する。
【特許文献1】特開2000−308756号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に開示されたゲーム装置は、ゲーム内のオブジェクトを移動するために加速度センサからの出力とジャイロセンサからの出力とを用いている。したがって、コントローラに加速度センサおよびジャイロセンサを内蔵しなければならないためにコントローラのコストが大きくなる。また、加速度センサからの出力とジャイロセンサからの出力とをゲーム機で処理しなければならないために、処理が複雑となって処理負担が大きくなる。
【0005】
それ故に、本発明の目的は、加速度センサを備えた入力装置を用いた操作入力において、当該入力装置の傾きに応じてオブジェクトを描画できるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0007】
第1の発明は、少なくとも1軸方向の加速度を検出する加速度センサ(701)を備えた入力装置(7)で検出された加速度を用いて、仮想ゲーム空間に配置されたオブジェクト(BO)を移動させて表示装置(2)に表示するゲーム装置(3)のコンピュータ(30)で実行されるゲームプログラムである。ゲームプログラムは、加速度取得ステップ(S51)、支点位置算出ステップ(S52、S76)、入力装置傾き算出ステップ(S71)、オブジェクト傾き算出ステップ(S75、S77)、および表示制御ステップ(S54)をコンピュータに実行させる。加速度取得ステップは、加速度センサから出力される加速度データ(Da)を取得する。支点位置算出ステップは、加速度取得ステップで取得した加速度データに基づいて、オブジェクトに設けられた支点(PO)の仮想ゲーム空間における位置を示す支点位置座標(Dc)を算出する。入力装置傾き算出ステップは、加速度取得ステップで取得した加速度データに基づいて、実空間における入力装置の傾き(Dd)を算出する。オブジェクト傾き算出ステップは、入力装置傾き算出ステップで算出された入力装置の傾きに応じて、オブジェクトが仮想ゲーム空間において傾倒する傾きを示すパラメータ(Dg)を算出する。表示制御ステップは、支点位置算出ステップで算出した支点位置座標およびオブジェクト傾き算出ステップで算出したオブジェクトの傾きを示すパラメータを用いて、オブジェクトを仮想ゲーム空間に配置して表示装置に表示する。
【0008】
第2の発明は、上記第1の発明において、傾き目標設定ステップ(S73)を、さらにコンピュータに実行させる。傾き目標設定ステップは、入力装置の傾きに応じて、仮想ゲーム空間におけるオブジェクトの傾き目標(De)を設定する。オブジェクト傾き算出ステップでは、仮想ゲーム空間における現在のオブジェクトの傾きから傾き目標に向けてそのオブジェクトが所定割合(10%)傾倒した傾きが、オブジェクトの傾きを示すパラメータとして算出される。
【0009】
第3の発明は、上記第1の発明において、オブジェクトの傾きを示すパラメータは、仮想ゲーム空間におけるオブジェクトの傾倒方向を示す方向ベクトルである。表示制御ステップでは、支点位置座標および方向ベクトルを用いて、オブジェクトを仮想ゲーム空間に配置して表示装置に表示される。
【0010】
第4の発明は、上記第1の発明において、オブジェクトの傾きを示すパラメータは、支点とは異なるオブジェクト上の点の仮想ゲーム空間における位置を示す位置座標である。表示制御ステップでは、支点位置座標および支点とは異なるオブジェクト上の点(PA)の位置座標を用いて、オブジェクトを仮想ゲーム空間に配置して表示装置に表示される。
【0011】
第5の発明は、上記第1の発明において、可動範囲設定ステップ(図10、図11)を、コンピュータにさらに実行させる。可動範囲設定ステップは、仮想ゲーム空間においてオブジェクトの支点が移動可能な範囲を設定する。
【0012】
第6の発明は、上記第5の発明において、支点位置算出ステップでは、加速度センサが検出可能な加速度の最大値(2G)と可動範囲の始終端とを対応付けて、取得した加速度データが示す加速度をその可動範囲内にスケーリングして支点位置座標が算出される。
【0013】
第7の発明は、上記第6の発明において、加速度センサは、入力装置に対して互いに直交する3軸方向(X、Y、Z軸方向)の加速度を検出する。可動範囲設定ステップでは、仮想ゲーム空間における平面状に可動範囲が設定される。支点位置算出ステップでは、3軸方向に含まれる第1軸方向(X軸方向)の加速度が可動範囲上の第1方向(z軸方向)にスケーリングされ、3軸方向に含まれる第2軸方向(Y軸方向)の加速度がその第1方向と直交する可動範囲上の第2方向(x軸方向)にスケーリングされて支点位置座標が算出される。
【0014】
第8の発明は、上記第2の発明において、加速度センサは、入力装置に対して互いに直交する3軸方向の加速度を検出する。傾き目標設定ステップでは、実空間の鉛直方向に対する入力装置の長軸方向の傾きを仮想ゲーム空間の鉛直方向に対するオブジェクトの長軸方向の傾きに置き換えて傾き目標が設定される。
【0015】
第9の発明は、少なくとも1軸方向の加速度を検出する加速度センサを備えた入力装置で検出された加速度を用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置である。ゲーム装置は、加速度取得手段、支点位置算出手段、入力装置傾き算出手段、オブジェクト傾き算出手段、および表示制御手段とを備える。加速度取得手段は、加速度センサから出力される加速度データを取得する。支点位置算出手段は、加速度取得手段が取得した加速度データに基づいて、オブジェクトに設けられた支点の仮想ゲーム空間における位置を示す支点位置座標を算出する。入力装置傾き算出手段は、加速度取得手段が取得した加速度データに基づいて、実空間における入力装置の傾きを算出する。オブジェクト傾き算出手段は、入力装置傾き算出手段で算出された入力装置の傾きに応じて、オブジェクトが仮想ゲーム空間において傾倒する傾きを示すパラメータを算出する。表示制御手段は、ゲーム装置支点位置算出手段が算出した支点位置座標およびオブジェクト傾き算出手段が算出したオブジェクトの傾きを示すパラメータを用いて、オブジェクトを仮想ゲーム空間に配置して表示装置に表示する。
【0016】
第10の発明は、上記第9の発明において、傾き目標設定手段をさらに備える。傾き目標設定手段は、入力装置の傾きに応じて、仮想ゲーム空間におけるオブジェクトの傾き目標を設定する。オブジェクト傾き算出手段は、仮想ゲーム空間における現在のオブジェクトの傾きから傾き目標に向けてそのオブジェクトが所定割合傾倒した傾きを、オブジェクトの傾きを示すパラメータとして算出する。
【発明の効果】
【0017】
上記第1の発明によれば、加速度センサを備えた入力装置を用いた操作入力において、加速度センサからの出力のみを用いてオブジェクトを描画できる。
【0018】
上記第2の発明によれば、加速度センサを備えた入力装置を用いた操作入力において、入力装置の傾き等の動作に応じて、オブジェクトの一端(支点位置)が入力装置の動作に応じて即時に移動し、他端が入力装置の実空間の傾きに徐々に追従するように動く。例えば、長軸部材等を示すオブジェクトの一端を仮想ゲーム空間内で動かす描画をする場合、その一端が即時移動して他端が即時移動させた場合の位置へ追従するように遅れて移動することにより、実空間で長軸部材を動かしているようなリアルな表現が可能となる。
【0019】
上記第3の発明によれば、仮想ゲーム空間におけるオブジェクトの方向を示す方向ベクトルを用いることによって、当該オブジェクトの傾き方向を容易に制御することができる。
【0020】
上記第4の発明によれば、オブジェクトに設けられた2点の仮想ゲーム空間における位置座標を用いることによって、当該オブジェクトの傾き方向を容易に制御することができる。
【0021】
上記第5の発明によれば、過大な加速度が検出されても支点可動範囲が制限されているため、仮想ゲーム空間においてオブジェクトが不自然に大きな移動をすることがない。
【0022】
上記第6の発明によれば、加速度データから得られる加速度の値を直接的に仮想ゲーム空間における移動幅に反映されるため、座標変換が容易となる。
【0023】
上記第7の発明によれば、加速度センサが加速度を検出する2軸方向に、仮想ゲーム空間の2軸を対応させて支点が移動するため、実空間における入力装置の移動を置き換えた仮想ゲーム空間の位置に支点を移動させることができる。
【0024】
上記第8の発明によれば、入力装置の長軸方向が示す方向を直接的に仮想ゲーム空間に置き換えた方向を目標として、オブジェクトの長軸方向を傾ける操作が可能となる。
【0025】
本発明のゲーム装置によれば、上述したゲームプログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0026】
図1を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置を用いたゲームシステム1を一例として説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、据置型ゲーム装置を一例にして、当該ゲームシステム1について説明する。
【0027】
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作情報を与えるコントローラ7によって構成される。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される送信データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
【0028】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0029】
コントローラ7は、その内部に備える通信部75(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて送信データを無線送信する。コントローラ7は、主にモニタ2に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コントローラ7は、複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。なお、本実施例では、撮像情報演算部74による撮像情報を用いないため、マーカ8Lおよび8Rを設置しなくてもかまわない。
【0030】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0031】
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。なお、光ディスク4に本発明のゲームプログラムが記憶されている。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35が接続される。また、メモリコントローラ31には、所定のバスを介して、コントローラI/F(インターフェース)36、ビデオI/F37、外部メモリI/F38、オーディオI/F39、およびディスクI/F41が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ2a、およびディスクドライブ40が接続されている。
【0032】
GPU32は、CPU30の命令に基づいて画像処理を行うものであり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0033】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0034】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0035】
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F36は、例えば4つのコントローラI/F36a〜36dで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F36を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの送信データを受信し、コントローラI/F36を介して当該送信データをCPU30へ出力する。ビデオI/F37には、モニタ2が接続される。外部メモリI/F38には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F39に出力する。
【0036】
図3および図4を参照して、本発明の入力装置の一例であるコントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面後方から見た斜視図である。
【0037】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0038】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0039】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー72aの代わりに設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。
【0040】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、Xボタン、Yボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0041】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0042】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から受信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0043】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。
【0044】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。また、ハウジング70の後面には、コネクタ73が設けられている。コネクタ73は、例えば32ピンのエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。なお、本発明では、この撮像情報演算部74からの情報を用いないため、ここではこれ以上の説明を省略する。
【0045】
ここで、説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の下面(操作ボタン72iが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をX軸正方向とする。
【0046】
次に、図5Aおよび図5Bを参照して、コントローラ7の内部構造について説明する。なお、図5Aは、コントローラ7の上筐体(ハウジング71の一部)を外した状態を示す斜視図である。図5Bは、コントローラ7の下筐体(ハウジング71の一部)を外した状態を示す斜視図である。ここで、図5Bに示す基板700は、図5Aに示す基板700の裏面から見た斜視図となっている。
【0047】
図5Aにおいて、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、水晶振動子703、無線モジュール753、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751(図6参照)に接続される。加速度センサ701は、コントローラ7が配置された3次元空間における傾きや振動等の算出に用いることができる加速度を検出して出力する。
【0048】
より詳細には、図6に示すように、コントローラ7は3軸の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、X軸とY軸(または他の対になった軸)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。さらに、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、XYZ軸のいずれか1軸に沿った直線加速度のみを検知する1軸の加速度検出手段を使用してもよい。例えば、この3軸、2軸、または1軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸、2軸、または1軸の加速度センサ701が提供されてもよい。
【0049】
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、その1軸、2軸、または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0050】
しかしながら、加速度センサ701から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ701からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを判定することができる。このように、加速度センサ701をマイコン751(またはゲーム装置3に含まれるCPU30等の他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢、または位置を判定することができる。同様に、加速度センサ701を備えるコントローラ7がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7の様々な動きおよび/または位置を算出することができる。他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0051】
また、無線モジュール753およびアンテナ754を有する通信部75によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子703は、後述するマイコン751の基本クロックを生成する。
【0052】
一方、図5Bにおいて、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。そして、操作ボタン72iが撮像情報演算部74の後方の基板700の下主面上に取り付けられていて、それよりさらに後方に、電池705が収容される。電池705とコネクタ73との間の基板700の下主面上には、バイブレータ704が取り付けられる。このバイブレータ704は、例えば振動モータやソレノイドであってよい。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【0053】
次に、図6を参照して、コントローラ7の内部構成について説明する。なお、図6は、コントローラ7の構成を示すブロック図である。
【0054】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
【0055】
加速度センサ701は、上述したようにコントローラ7の上下方向(Y軸方向)、左右方向(X軸方向)、および前後方向(Z軸方向)の3軸成分に分けてそれぞれ加速度を検知して出力するセンサである。加速度センサ701が検知した3軸成分の加速度を示すデータは、それぞれ通信部75へ出力される。この加速度センサ701から出力される加速度データに基づいて、コントローラ7の傾きや動きを判別することができる。なお、加速度センサ701は、特定のアプリケーションで必要なデータに応じて何れか2軸に対してそれぞれ加速度を検出する加速度センサや何れか1軸(例えば、Y軸)に対して加速度を検出する加速度センサが用いられてもかまわない。
【0056】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。
【0057】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を受信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から受信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、受信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置3の受信ユニット6でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0058】
次に、ゲーム装置3が行う具体的な処理を説明する前に、本ゲーム装置3で行うゲームの概要について説明する。図7に示すように、コントローラ7は、全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、コントローラ7の上面をプレイヤ側に向けて起立させた状態(つまり、コントローラ7の前面が上方を向く)でプレイヤが片手または両手でコントローラ7を把持し、あたかも野球のバットを握っているようにコントローラ7を把持する。
【0059】
ここで、説明を具体的にするために、モニタ2が設置されてコントローラ7を把持するプレイヤが存在する空間に対して、互いに直交するXs、Ys、およびZs軸を定義する。具体的には、プレイヤとモニタ2とを結ぶ水平方向をXs軸とし、プレイヤからモニタ2へ向かう方向をXs軸正方向とする。上記Xs軸に垂直な水平方向をYs軸とし、モニタ2の表示画面に向かって右方向(図7では、モニタ2の背面側を示しているために左方向)をYs軸正方向とする。そして、空間の鉛直方向をZs軸とし、上方向をZs軸正方向とする。
【0060】
プレイヤは、モニタ2で表現されているゲーム画像に合わせて、コントローラ7を上下左右に移動させたり、コントローラ7を起立した状態から傾けたりすることによって、コントローラ7から操作情報(具体的には、X、Y、およびZ軸方向加速度データ)をゲーム装置3に与える。例えば、図8に示すように、コントローラ7の上面をYs軸負方向に向け、前面をZs軸正方向に向けて起立させて静止した状態では、Zs軸負方向の重力加速度によってZ軸負方向の加速度がコントローラ7に加わる。なお、図8は、モニタ2に向かう方向(つまり、Xs軸正方向)に見たコントローラ7を示しているために、図7とは反対の方向に描かれている。そして、プレイヤがコントローラ7をYs軸正方向に移動させたとき、さらにY軸正方向の加速度がコントローラ7に加わる。また、上記起立させた状態からプレイヤがコントローラ7をYs軸正方向に傾けたとき、その傾倒角度に応じてコントローラ7に加わる重力加速度の方向がZ軸負方向からY軸正方向へ変化していく。このようなコントローラ7に加わる加速度の変化は、加速度センサ701によって検出できるため、加速度センサ701から出力されるX、Y、およびZ軸方向加速度データに対して追加の処理を行うことによって、コントローラ7の傾きや動きを算出することができる。一般的に、動作に応じて生じる加速度を検出する場合、加速度センサ701から出力される加速度ベクトル(あるいは、加速度の正負)は、コントローラ7の加速方向とは真逆のベクトルとなるため、検出した加速度の方向を考慮してコントローラ7の傾きや動きを算出することが必要であることは言うまでもない。
【0061】
図9に示すように、コントローラ7から受信したX、Y、およびZ軸方向加速度データに応じて、モニタ2に野球ゲーム等が表現される。具体的には、仮想ゲーム空間に設定されたフィールド(例えば、野球場)の一部が3次元のゲーム画像としてモニタ2に表現される。そして、仮想ゲーム空間に、プレイヤが操作する打者を示すプレイヤキャラクタPC、プレイヤキャラクタPCが握るバットオブジェクトBO、および当該プレイヤキャラクタPCの相手選手となる相手キャラクタ等が配置されてモニタ2に表現される。以下、説明を具体的にするために野球ゲームを表現するゲームプログラムが光ディスク4に記憶されており、CPU30が野球ゲーム処理の中でコントローラ7の傾斜および動きに応じて、バットオブジェクトBOが仮想ゲーム空間内を移動する処理について説明する。
【0062】
プレイヤキャラクタPCは、バットオブジェクトBOを持っており、仮想ゲーム空間に設定されたフィールド上に配置される。そして、プレイヤがコントローラ7を倒したり動かしたりする動作に応じて、バットオブジェクトBOの位置や姿勢が変化して、プレイヤキャラクタPCがバットオブジェクトBOを持つ構え方が変化する。つまり、プレイヤがコントローラ7を把持して動かす動作を行うことによって、同様にバットオブジェクトBOを構える動作をプレイヤキャラクタPCが表現することになり、プレイヤはあたかもコントローラ7を野球バットとして持って野球をしているような仮想的なスポーツゲームを体験できる。
【0063】
例えば、プレイヤが起立した状態のコントローラ7を左右に動かしたとき、そのコントローラ7の動作に応じて即時にバットオブジェクトBOが仮想ゲーム空間内を移動する。一方、プレイヤが起立した状態のコントローラ7を倒すような動作をしたとき、そのコントローラ7の傾斜角度に応じてバットオブジェクトBOが所定の割合で倒れる。つまり、バットオブジェクトBOは、コントローラ7の左右の動作に対しては即時に反応して移動するが、コントローラ7が倒れる動作に対しては遅れて反応して徐々に倒れていく。一般的に、現実世界である程度重量のある長軸部材の一端を持って移動させたり傾倒角度を変えたりしようとすると、当該一端は即時に移動するが他端が遅れて追随して移動する現象が生じる。例えば、プレイヤは、コントローラ7を倒す角度を素早く変化させることができる、しかしながら、コントローラ7の傾斜角度と同様にバットオブジェクトBOの傾倒角度を変化させてしまうと、プレイヤキャラクタPCが軽量の長軸部材を握っている感じとなり、プレイヤに非現実的な感覚を与えてしまう。また、コントローラ7は、プレイヤが把持する手の微妙な動きによって傾斜角度が変化しているが、この変化にバットオブジェクトBOが敏感に反応すると、コントローラ7を操作するプレイヤの動きに合わせてバットオブジェクトBOを動かしているつもりでも、当該バットオブジェクトBOが不自然な動きとなる。しかしながら、本実施形態では、コントローラ7の左右の動作や倒す動作に対してバットオブジェクトBOの一端(支点位置)は即時に反応して移動するが、他端が即時移動させた場合の位置へ追従するように遅れて反応して徐々に倒れていくため、野球バットを表すオブジェクトを自然に描画でき、プレイヤがコントローラ7に加えた動作を反映した野球ゲームを表現することができる。
【0064】
次に、図10および図11を参照して、バットオブジェクトBOの可動範囲および可倒範囲の一例について説明する。なお、図10は、バットオブジェクトBOの動きを説明するために仮想ゲーム空間を水平方向から見た図である。図11は、バットオブジェクトBOの動きを説明するために仮想ゲーム空間を上方向から見た図である。
【0065】
図10および図11において、仮想ゲーム空間には互いに直交するxyz軸が定義されており、モニタ2に表示される仮想ゲーム空間の左右方向がx軸、上下方向がy軸、奥行方向がz軸となる。そして、バットオブジェクトBOに一部分(例えば、プレイヤキャラクタPCがバットオブジェクトBOを握るグリップの位置等の下端部分)に当該バットオブジェクトBOの配置位置を示す点POが設けられ、当該点POのxyz軸座標値によってバットオブジェクトBOの仮想ゲーム空間における位置が設定される。そして、点POを中心に傾く角度(例えば、方向ベクトル)によってバットオブジェクトBOの仮想ゲーム空間における傾倒が設定される。
【0066】
ここで、バットオブジェクトBOの配置位置および傾倒角度については、コントローラ7の前面を上に向けて起立させて静止させたとき(図8参照)に対応する基準配置位置および基準傾倒角度がそれぞれ設けられている。図10および図11においては、基準配置位置に点POが配置され基準傾倒角度で傾いたバットオブジェクトBOを実線で表現し、基準配置位置および基準傾倒角度から変化した状態で表現されるバットオブジェクトBOを破線で表現している。本実施例においては、コントローラ7の前面を上に向けて起立させて静止させたときを基準にしているために、基準傾倒角度をy軸正方向(仮想ゲーム空間における上方向)としている。
【0067】
仮想ゲーム空間において点POが移動できる範囲として、可動範囲が設けられる。可動範囲は、基準配置位置を中心にx軸の正負方向およびz軸方向の正負方向にそれぞれ所定幅(後述するx軸方向移動幅wxおよびz軸方向移動幅wz)を有している。本実施例では、加速度センサ701が検出可能な加速度の最大値(例えば、各軸に対して最大2G)に対応して点POが移動可能な可動範囲の最大範囲(つまり、x軸およびz軸方向に対する可動範囲の最大/最小値)を設定し、加速度センサ701の出力値を可動範囲内にスケーリングして移動後の点POのxyz軸座標値を算出する。例えば、基準配置位置を中心としたx軸およびz軸方向の可動範囲の幅を仮想ゲーム空間における長さ3に設定する。そして、加速度センサ701が検出するY軸方向の加速度をx軸方向の点POの移動に対応させ、加速度センサ701が検出するX軸方向の加速度をz軸方向の点POの移動に対応させる。そして、加速度センサ701が検出可能な加速度の最大値が2Gであるとすると、検出したY軸方向の加速度を1.5倍することによって点POのx軸方向の配置位置が可動範囲内にスケーリングされる。また、検出したX軸方向の加速度を1.5倍することによって点POのz軸方向の配置位置が可動範囲内にスケーリングされる。図10および図11においては、加速度センサ701がY軸負方向の加速度の最大値を検出したことに応じて、可動範囲のx軸方向最小値にスケーリングされた座標点を点POxaとして示している。加速度センサ701がY軸正方向の加速度の最大値を検出したことに応じて、可動範囲のx軸方向最大値にスケーリングされた座標点を点POxbとして示している。加速度センサ701がX軸負方向の加速度の最大値を検出したことに応じて、可動範囲のz軸方向最小値にスケーリングされた座標点を点POzaとして示している。そして、加速度センサ701がX軸正方向の加速度の最大値を検出したことに応じて、可動範囲のz軸方向最大値にスケーリングされた座標点を点POzbとして示している。
【0068】
また、仮想ゲーム空間においてバットオブジェクトBOが傾倒できる範囲として、可倒範囲が設けられる。可倒範囲は、基準傾倒角度(つまり、y軸正方向)を中心にx軸の正負方向およびz軸方向の正負方向にそれぞれ所定角度を有している。そして、バットオブジェクトBOは、加速度センサ701が検出するY軸方向の加速度を用いてx軸方向へ傾いて描画され、加速度センサ701が検出するX軸方向の加速度を用いてz軸方向へ傾いて描画される。なお、後述により明らかとなるが、ゲーム装置3は、コントローラ7から出力されるX軸およびY軸方向加速度データを用いて上記可動範囲内でバットオブジェクトBOの傾き目標を算出し、現在のバットオブジェクトBOの傾倒角度から傾き目標に向かって所定の割合(例えば、10%)だけ傾倒角度を変化させてバットオブジェクトBOを描画する。図10および図11においては、可倒範囲のx軸負方向側へ最も傾いた状態をバットオブジェクトBOxaとして示している。可倒範囲のx軸正方向側へ最も傾いた状態をバットオブジェクトBOxbとして示している。可倒範囲のz軸負方向側へ最も傾いた状態をバットオブジェクトBOzaとして示している。そして、可倒範囲のz軸正方向側へ最も傾いた状態をバットオブジェクトBOzbとして示している。
【0069】
なお、本実施例では、後述によって明らかとなるが、コントローラ7が水平に近い状態まで動かされたとき、プレイヤキャラクタPCがバットオブジェクトBOを水平付近まで倒して構える、いわゆるバントが可能となっている。バントの場合は、コントローラ7の動作に対してバットオブジェクトBOの一端(支点位置)および他端が共に即時に反応して移動させてもかまわない。これは、バントが2点で野球バットを支持(つまり、グリップ部付近およびバット中央付近を支持)することが一般的であり、野球バットの先端も即時に反応する方が自然であるからである。このように、プレイヤキャラクタPCが表現する打者の構えによっては、バットオブジェクトBOの他端も即時移動させることによって、さらに野球バットを表すオブジェクトを自然に描画でき、プレイヤがコントローラ7に加えた動作を反映した野球ゲームを表現することができる。
【0070】
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図12を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図12は、ゲーム装置3のメインメモリ33に記憶される主なデータを示す図である。
【0071】
図12に示すように、メインメモリ33には、加速度データDa、移動幅データDb、支点位置座標データDc、コントローラ傾きデータDd、オブジェクト傾き目標データDe、オブジェクト傾きデータDf、オブジェクト傾き変化データDg、および画像データDh等が記憶される。なお、メインメモリ33には、図12に示す情報に含まれるデータの他、ゲームに登場するプレイヤキャラクタPCや相手キャラクタ等に関するデータ(位置データ等)や仮想ゲーム空間に関するデータ(地形データ等)等、ゲーム処理に必要なデータが記憶される。
【0072】
加速度データDaは、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データである。加速度データDaには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3が含まれる。なお、ゲーム装置3に備える受信ユニット6は、コントローラ7から所定間隔例えば5msごとに送信される操作情報に含まれる加速度データを受信し、受信ユニット6に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である1フレーム毎に読み出されてメインメモリ33の加速度データDaが更新される。本実施例では、加速度データDaは、コントローラ7から送信された最新の加速度データに更新されればよいが、過去所定フレーム分の加速度データを格納するようにしてもよい。
【0073】
移動幅データDbは、点PO(支点位置;図10、図11参照)が基準配置位置に対して仮想ゲーム空間内を移動する幅を示すデータである。移動幅データDbには、x軸方向への移動幅を示すx軸方向移動幅データDb1およびz軸方向への移動幅を示すz軸方向移動幅データDb2が含まれる。支点位置座標データDcは、仮想ゲーム空間において点POが位置する座標値を示すデータである。
【0074】
コントローラ傾きデータDdは、加速度データDaを用いて算出されたコントローラ7の傾き方向を示すデータである。オブジェクト傾き目標データDeは、バットオブジェクトBOが点POを中心に仮想ゲーム空間での傾き目標を示すデータであり、例えば、方向ベクトルによって示される。オブジェクト傾きデータDfは、バットオブジェクトBOが点POを中心に仮想ゲーム空間で傾いて描画される角度を示すデータであり、例えば、方向ベクトルによって示される。オブジェクト傾き変化データDgは、バットオブジェクトBOの傾きが変化する変位を示すデータであり、例えば、方向ベクトルの変位を示す変位ベクトルによって示される。
【0075】
画像データDhは、プレイヤキャラクタ画像データDh1およびオブジェクト画像データDh2等を含み、仮想ゲーム空間にプレイヤキャラクタPCやバットオブジェクトBOを配置してゲーム画像を生成するためのデータである。
【0076】
次に、図13〜図18を参照して、ゲーム装置3において行われるゲーム処理の詳細を説明する。なお、図13は、ゲーム装置3において実行されるゲーム処理の流れを示すフローチャートである。図14は、図13におけるステップ52の支点位置算出処理の詳細な動作を示すサブルーチンである。図15は、図13におけるステップ53の傾き算出処理の詳細な動作を示すサブルーチンである。図16は、コントローラ7が起立状態から傾いた一例を示す図である。図17は、バットオブジェクトBOの位置および傾きが変化した一例を示す図である。図18は、バントモードにおけるバットオブジェクトBOの位置および傾きが変化した一例を示す図である。なお、図13〜図15に示すフローチャートにおいては、ゲーム処理のうち、プレイヤがコントローラ7を移動または傾けることに応じて行われるオブジェクトの描画について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図13〜図15では、CPU30が実行する各ステップを「S」と略称する。
【0077】
ゲーム装置3の電源が投入されると、ゲーム装置3のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図13〜図15に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【0078】
図13において、CPU30は、コントローラ7から受信した操作情報に含まれる加速度データを取得し(ステップ51)、処理を次のステップに進める。そして、CPU30は、取得した加速度データを加速度データDaとしてメインメモリ33に記憶する。ここで、ステップ51で取得される加速度データには、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX、Y、およびZ軸方向加速度データが含まれている。ここでは、通信部75は、所定の時間間隔(例えば5ms間隔)で操作情報をゲーム装置3へ送信しており、受信ユニット6に備える図示しないバッファに少なくとも加速度データが蓄えられる。そして、CPU30は、ゲーム処理単位である1フレーム毎にバッファに蓄えられた加速度データを取得してメインメモリ33に格納する。
【0079】
次に、CPU30は、支点位置算出処理を行い(ステップ52)、処理を次のステップに進める。以下、図14を参照して、上記ステップ52における支点位置算出処理の動作について説明する。
【0080】
図14において、CPU30は、上記ステップ51で取得したY軸方向加速度データDa2に基づいて、x軸方向移動幅wxを算出する(ステップ61)。そして、CPU30は、算出したx軸方向移動幅wxをx軸方向移動幅データDb1としてメインメモリ33に記憶して、処理を次のステップに進める。上述したように、CPU30は、加速度センサ701が検出可能な加速度の最大値に対応して上記可動範囲の最大範囲を設定し、加速度センサ701が検出した加速度を当該可動範囲内にスケーリングする。例えば、加速度センサ701が検出可能な加速度の最大値が2Gであり、基準配置位置を中心としたx軸およびz軸方向の可動範囲の幅が長さ3である場合、CPU30は、Y軸方向加速度データDa2が示す加速度を1.5倍することによってx軸方向移動幅wxを算出する。
【0081】
次に、CPU30は、上記ステップ51で取得したX軸方向加速度データDa1に基づいて、z軸方向移動幅wzを算出する(ステップ62)。そして、CPU30は、算出したz軸方向移動幅wzをz軸方向移動幅データDb2としてメインメモリ33に記憶して、処理を次のステップに進める。例えば、加速度センサ701が検出可能な加速度の最大値が2Gであり、基準配置位置を中心としたx軸およびz軸方向の可動範囲の幅が長さ3である場合、CPU30は、X軸方向加速度データDa1が示す加速度を1.5倍することによってz軸方向移動幅wzを算出する。
【0082】
次に、CPU30は、算出したx軸方向移動幅wxおよびz軸方向移動幅wzに応じた支点位置座標を算出する(ステップ63)。そして、CPU30は、算出した支点位置座標を支点位置座標データDcとしてメインメモリ33に記憶して、当該サブルーチンによる処理を終了する。例えば、仮想ゲーム空間における基準配置位置座標を(x0,y0,z0)とすると、CPU30は、支点位置座標を(x0+wz,y0,z0+wz)とする。
【0083】
図16および図17を用いて、コントローラ7の動きと支点位置との関連について説明する。ここで、図16は、モニタ2の表示画面側の空間内に位置したコントローラ7を当該表示画面に向かう方向に見た状態(すなわち、紙面の裏側方向にモニタ2の表示画面が存在する状態であり、図8と同様)を示している。また、図17は、モニタ2に表示されたプレイヤキャラクタPCおよびバットオブジェクトBOの状態を示している。図16および図17を比較すれば明らかなように、モニタ2に表現される仮想ゲーム空間がプレイヤの位置している実空間内に存在するように仮定すると、プレイヤがモニタ2の表示画面に向かって右方向となる実空間のYs軸正方向が、仮想ゲーム空間の右方向となるx軸正方向と同じ方向となる。また、プレイヤの上方向となる実空間のZs軸正方向が、仮想ゲーム空間の上方向となるy軸正方向と同じ方向となる。また、プレイヤからモニタ2へ向かう方向となる実空間のXs軸正方向が、仮想ゲーム空間の奥行方向となるz軸正方向と同じ方向となる。
【0084】
コントローラ7の上面をYs軸負方向に向け、前面をZs軸正方向に向けて起立させた状態(図16において、破線で示すコントローラ7i)から、コントローラ7をYs軸正方向へ距離MY移動させてYs軸正方向へ角度TYだけ倒した状態(図16において、実線で示すコントローラ7)を想定する。上記起立した状態のコントローラ7iにおいては、X軸方向およびY軸方向の加速度は共に0であってZ軸負方向の重力加速度を検出する(図8参照)。そして、コントローラ7は、距離MYの移動による加速度(移動加速度)および角度TY傾けることによる重力加速度の変化を検出する。具体的には、図16に示すように、コントローラ7の加速度センサ701は、Y軸正方向およびZ軸正方向の間の方向に生じる移動加速度と、Y軸正方向およびZ軸負方向の間の方向に生じる重力加速度とを検出する。したがって、加速度センサ701は、上記移動加速度のY軸方向成分と重力加速度のY軸方向成分とが加わったY軸正方向の加速度を検出する。また、加速度センサ701が検出するX軸方向の加速度は0である。
【0085】
一方、上述した動作では、Y軸方向加速度データに基づいて算出されたx軸方向移動幅wxを用いて支点位置座標がスケーリングされる。例えば、上述したY軸正方向の加速度に応じて、支点位置が上記起立状態に対応する位置からx軸正方向へ移動する(図17に示す点POiの位置から点POの位置へ移動)。つまり、コントローラ7の移動に応じて即時に同じ方向(図16および図17の例では、実空間のYs軸正方向と同じ仮想ゲーム空間のx軸正方向)に支点位置が移動する。
【0086】
図13に戻り、CPU30は、傾き算出処理を行い(ステップ53)、処理を次のステップに進める。以下、図15を参照して、上記ステップ53における傾き算出処理の動作について説明する。
【0087】
図15において、CPU30は、上記ステップ51で取得した加速度データDa1に基づいて、現在のコントローラ傾きを算出する(ステップ71)。そして、CPU30は、算出したコントローラ傾きをコントローラ傾きデータDdとしてメインメモリ33に記憶して、処理を次のステップに進める。例えば、加速度センサ701が静的な加速度(重力加速度)を検知すると、加速度センサ701からの出力を用いた演算によって重力ベクトルに対するコントローラ7の傾きを算出することができる。なお、加速度センサ701が動的な加速度(移動加速度)も検知している場合、正確なコントローラ7の傾きを求めることは困難となるが、本実施例においては当該動的な加速度も静的な加速度と見なしてコントローラ傾きを求めてもかまわない。
【0088】
次に、CPU30は、コントローラ7の傾きが実空間において水平から±45°の範囲か否かを判断する(ステップ72)。そして、CPU30は、コントローラ7の傾きが水平から±45°の範囲外である場合、処理を次のステップ73に進める。一方、CPU30は、コントローラ7の傾きが水平から±45°の範囲内である場合、処理を次のステップ76に進める。
【0089】
ステップ73において、CPU30は、上記ステップ71で算出されたコントローラ傾きに応じて、バットオブジェクトBOの傾き目標を算出する(図17参照)。そして、CPU30は、算出した傾き目標をオブジェクト傾き目標データDeとしてメインメモリ33に記憶して、処理を次のステップに進める。例えば、CPU30は、実空間におけるコントローラ傾きをそのまま仮想ゲーム空間における方向に置き換えた方向ベクトルを算出してオブジェクト傾き目標とする。
【0090】
次に、CPU30は、現在のオブジェクト傾きから上記傾き目標に向かって所定割合で変位する傾き変化を算出する(ステップ74;図17参照)。そして、CPU30は、算出した傾き変化をオブジェクト傾き変化データDgとしてメインメモリ33に記憶して、処理を次のステップに進める。例えば、CPU30は、オブジェクト傾きデータDfとして格納されている現在のバットオブジェクトBOの傾きを示す方向ベクトルから傾き目標を示す方向ベクトルへ、所定割合(例えば、10%)で変位した移動ベクトルを算出して傾き変化とする。
【0091】
次に、CPU30は、上記ステップ74で算出した傾き変化に基づいて、新たなオブジェクト傾きを算出する(ステップ75)。そして、CPU30は、算出したオブジェクト傾きをオブジェクト傾きデータDfとしてメインメモリ33に記憶して、当該サブルーチンによる処理を終了する。
【0092】
図16および図17を用いて、コントローラ7の傾きとオブジェクト傾きとの関連について説明する。例えば、図16に示すように、角度TYだけ傾けてコントローラ7を静止させた場合、コントローラ7の加速度センサ701は、Y軸正方向およびZ軸負方向の間の方向に生じる静的な重力加速度を検出する。そして、CPU30は、この重力加速度を検出した加速度センサ701からの出力に応じて、コントローラ7が実空間の上方向に対して角度TYだけコントローラ7がZs軸正方向からYs軸正方向側へ傾いていることを算出する。次に、CPU30は、コントローラ7の傾きをそのまま仮想ゲーム空間に置き換えて、y軸正方向からx軸正方向側へ角度TYだけバットオブジェクトBOを傾ける傾き目標を算出する。そして、CPU30は、現在のバットオブジェクト(図17において、破線でしめすバットオブジェクトBOi)を傾き目標へ、所定割合だけ傾きを変化させる(図17において、破線でしめすバットオブジェクトBO)。
【0093】
このように、バットオブジェクトBOは、支点位置(点PO)の移動と同様にコントローラ7の傾きに応じて仮想ゲーム空間内で傾いて描画される。例えば、上記傾き目標をそのまま反映させてバットオブジェクトBOを描画すると、図17において破線で示すバットオブジェクトBOtyのようにコントローラ7の傾きに敏感に反応した描画が行われることになる。しかしながら、本実施例ではコントローラ7の傾き変化量と同じ傾き変化をして描画されるのではなく、バットオブジェクトBOがコントローラ7の傾き変化量の所定割合(例えば、10%)だけ反映させた傾き変化で描画される。つまり、プレイヤがコントローラ7を傾ける操作に対して、バットオブジェクトBOが遅れて反応して徐々に倒れていくため、野球バットを自然に表現でき、プレイヤがコントローラ7に加えた動作を反映した野球ゲームを表現することができる。
【0094】
なお、上述したようにバットオブジェクトBOには可倒範囲が設定されているため、上記ステップ73〜75の処理の何れかでオブジェクト傾きが可動範囲内に収める処理を行うことが必要となる。例えば、CPU30は、上記ステップ73において、コントローラ傾きを仮想ゲーム空間に置き換えた方向に最も近い可倒範囲内となる方向を傾き目標としてもかまわない。また、CPU30は、上記ステップ74やステップ75において、可倒範囲内になるように傾き変化や新たなオブジェクト傾きを算出してもかまわない。
【0095】
図15に戻り、コントローラ7の傾きが水平から±45°の範囲内である場合、CPU30は、バントモードに移行してステップ76に処理を進める。ステップ76において、CPU30は、上記ステップ71で算出されたコントローラ傾きに応じて、支点位置座標を算出する。そして、CPU30は、算出した支点位置座標を支点位置座標データDcとしてメインメモリ33に記憶する。次に、CPU30は、上記ステップ71で算出されたコントローラ傾きに応じて、新たなオブジェクト傾きを算出する(ステップ77)。そして、CPU30は、算出したオブジェクト傾きをオブジェクト傾きデータDfとしてメインメモリ33に記憶して、当該サブルーチンによる処理を終了する。
【0096】
ここで、CPU30は、バントモードにおいては水平に対するコントローラ7の傾きに応じて支点位置およびバットオブジェクトBOの傾きを決定している。例えば、水平に対するコントローラ7の傾きに応じて、バットオブジェクトBOの支点位置およびバットオブジェクトBOの傾きが予め設定されている。具体的には、CPU30は、実空間におけるコントローラ7の傾きを仮想ゲーム空間における水平に近づけるように置き換えて、バットオブジェクトBOの傾きを設定する。
【0097】
図18を用いて、コントローラ7の傾きとオブジェクトの位置および傾きとの関連について説明する。例えば、CPU30は、プレイヤがコントローラ7を水平(0°)にした場合、バットオブジェクトBOの支点位置を点PO0の位置に設定する。そして、CPU30は、コントローラ7の傾き(つまり、水平)を仮想ゲーム空間に置き換えて、x軸正方向をバットオブジェクトBOの傾きに設定する(図18において、実線でしめすバットオブジェクトBO0)。
【0098】
また、CPU30は、プレイヤがコントローラ7の前面を水平より45°上方に向けた(+45°)場合、バットオブジェクトBOの支点位置を点PO+45の位置に設定する。そして、CPU30は、コントローラ7の傾き(つまり、水平から45°上方)を仮想ゲーム空間における水平に近づけるように置き換えて、x軸正方向から45°より小さな角度でy軸正方向側に傾けた角度をバットオブジェクトBOの傾きに設定する(図18において、破線でしめすバットオブジェクトBO+45)。さらに、CPU30は、プレイヤがコントローラ7の前面を水平より45°下方に向けた(−45°)場合、バットオブジェクトBOの支点位置を点PO−45の位置に設定する。そして、CPU30は、コントローラ7の傾き(つまり、水平から45°下方)を仮想ゲーム空間における水平に近づけるように置き換えて、x軸正方向から45°より小さな角度でy軸負方向側に傾けた角度をバットオブジェクトBOの傾きに設定する(図18において、破線でしめすバットオブジェクトBO−45)。なお、コントローラ7の傾きが水平から上方または下方から45°未満であるときは、上述したバットオブジェクトBO+45およびBO−45の間に、バットオブジェクトBOの位置および角度が設定される。
【0099】
なお、上述したバントモードにおけるバットオブジェクトBOの移動については、主に仮想ゲーム空間の左右上下方向(つまり、xy平面方向)に沿って行われるが、奥行方向(z軸方向)にバットオブジェクトBOを移動させたり傾けたりしてもかまわない。例えば、プレイヤがコントローラ7を水平状態で把持して左右にコントローラ7を移動させると、当該コントローラ7がZ軸方向(図3、図4参照)を中心としてねじられることがある。そして、このコントローラ7に加えられるねじりは、上述したように算出されるコントローラ7の傾きにも現れる。したがって、コントローラ7が水平に保たれていても、このねじりを抽出することによってプレイヤがコントローラ7を左右に移動させた位置を算出することが可能となる。このコントローラ7を左右に移動させた位置を算出した結果を用いて、バントモードにおけるバットオブジェクトBOの支点位置を仮想ゲーム空間のz軸方向にも移動させたり、バットオブジェクトBOをz軸方向に傾けたりして描画することができる。
【0100】
また、バントモードにおけるバットオブジェクトBOの支点位置座標は、上記ステップ71で算出されたコントローラ傾きに応じて算出されているが、上記ステップ61〜ステップ63と同様に可動範囲内にスケーリングすることで算出してもかまわない。例えば、バントモード時おいても、仮想ゲーム空間において支点位置が移動できる可動範囲を設定する。この可動範囲は、バントモードの基準配置位置(図18に示す点PO0の位置;基準配置位置座標を(xb0,yb0,zb0)とする)を中心にy軸の正負方向およびz軸方向の正負方向にそれぞれy軸方向移動幅wyおよびz軸方向移動幅wzを有している。具体的には、可動範囲におけるz軸正方向最大値に応じた支点位置が、図18に示す点PO+45となる。また、可動範囲におけるz軸負方向最小値に応じた支点位置が、図18に示す点PO−45となる。次に、上記ステップ51で取得したZ軸方向加速度データDa3に基づいてy軸方向移動幅wyを算出し、X軸方向加速度データDa1に基づいてz軸方向移動幅wzを算出する。そして、y軸方向移動幅wyおよびz軸方向移動幅wzを用いて、バントモードの支点位置座標を(xb0,yb0+wy,zb0+wz)として算出する。このように、バントモードにおいても、加速度センサ701から出力される加速度データが示す加速度を仮想ゲーム空間内にスケーリングすることによって、支点位置を求めることができる。
【0101】
図13に戻り、CPU30は、支点位置および現在のオブジェクト傾きに応じてバットオブジェクトBOをモニタ2に描画して(ステップ54)、処理を次のステップに進める。具体的には、CPU30は、支点位置座標データDcおよびオブジェクト傾きデータDfを参照して、バットオブジェクトBOの支点位置座標(点POの座標)およびバットオブジェクトBOの傾倒方向を示す方向ベクトルを得る。そして、CPU30は、画像データDh等を用いて、モニタ2の表示画面にバットオブジェクトBOを構えたプレイヤキャラクタPCを描画する。
【0102】
次に、CPU30は、プレイヤがバットをスイングする動作を開始する操作を行ったか否かを判断する(ステップ55)。例えば、スイングを開始する操作は、プレイヤが把持するコントローラ7を左右に振ることによって行われる。この場合、CPU30は、加速度センサ701から出力されるZ軸正方向の加速度の大きさによって、プレイヤがコントローラ7を振り始めたことを判定することができる。そして、CPU30は、スイングを開始する操作が行われていない場合、上記ステップ51に戻って処理を繰り返す。一方、CPU30は、スイングを開始する操作が行われた場合、当該フローチャートによる処理を終了する。
【0103】
次に、図19A〜図19Dを参照して、起立状態のバットオブジェクトBOが仮想ゲーム空間内を移動して傾いていく表示例を説明する。なお、図19Aは、コントローラ7が起立して静止している初期段階で表示されるバットオブジェクトBO1の一例である。図19Bは、コントローラ7を水平移動させて傾けたときの第1段階で表示されるバットオブジェクトBO2の一例である。図19Cは、コントローラ7を水平移動させて傾けたときの第2段階で表示されるバットオブジェクトBO3の一例である。図19Dは、コントローラ7を水平移動させて傾けたときの第3段階で表示されるバットオブジェクトBO4の一例である。ここで、図19A〜図19Dにおいては、説明を簡単にするためにバットオブジェクトBOのみを表示している。
【0104】
ここで、図16を用いて説明した状態と同様に、コントローラ7の上面をYs軸負方向に向け、前面をZs軸正方向に向けて起立させた状態から、コントローラ7をYs軸正方向へ移動させてYs軸正方向へ倒し、当該傾倒状態を保って静止させる操作を想定する。コントローラ7を起立させて静止させているとき、図19Aに示すように支点位置が基準配置位置に設定され(点PO1)、バットオブジェクトBOの傾きが基準傾倒角度(y軸正方向)に設定されて表示される(バットオブジェクトBO1)。
【0105】
図19Bに示すように、コントローラ7をYs軸正方向へ移動させてY軸正方向の加速度が検出されたとき、当該Y軸正方向の加速度に応じて支点位置がx軸正方向へ即時に移動する(点PO2)。そして、バットオブジェクトBOは、Y軸正方向の加速度に応じて設定された傾き目標に向かって所定割合(例えば、10%)だけx軸正方向へ傾く(バットオブジェクトBO2)。ここで、バットオブジェクトBOの傾きは、所定割合分だけ傾き目標に近づくため、即時に傾き目標まで到達することはない。
【0106】
図19Cに示すように、コントローラ7をYs軸正方向へ移動させた後、Ys軸正方向へコントローラ7を倒して静止させたとき、水平移動によるY軸正方向の移動加速度は0となるが重力加速度によるY軸正方向の加速度が検出される。したがって、コントローラ7が検出するY軸正方向の加速度の大きさが小さくなるため、支点位置がx軸負方向へ戻る移動をする(点PO3)。一方、バットオブジェクトBOは、重力加速度によるY軸正方向の加速度に応じて設定された傾き目標に向かって所定割合だけ徐々にx軸正方向へ傾いていく(バットオブジェクトBO3)。ここで、図19Cの状態では、図19Bの状態と比較して傾き目標が変化しているが、バットオブジェクトBOの傾きが傾き目標まで到達していないために、バットオブジェクトBOのx軸正方向への傾倒動作が継続する。
【0107】
図19Dに示すように、Ys軸正方向へコントローラ7を倒して静止させた状態を継続しているとき、図19Cの状態と同じ重力加速度によるY軸正方向の加速度が検出される。したがって、コントローラ7が検出するY軸正方向の加速度の大きさに変化がないため、支点位置は移動しない(点PO3)。一方、バットオブジェクトBOは、重力加速度によるY軸正方向の加速度に応じて設定された傾き目標に向かってさらに所定割合だけx軸正方向へ傾いていく(バットオブジェクトBO4)。このように、コントローラ7の移動によって検出される動的な加速度および静的な加速度の変化に応じた支点位置移動は即時に反映されて描画されるが、コントローラ7の傾きによって検出される静的な加速度の変化に応じたバットオブジェクトBOの傾倒動作は遅れて反応して徐々に倒れていく。
【0108】
なお、上述した実施例では、バットオブジェクトBOの下端部分に当該バットオブジェクトBOの配置位置を示す点POを1点設け、当該点POを支点位置とした方向ベクトルによってバットオブジェクトBOの傾倒角度を設定したが、他の方式でバットオブジェクトBOの配置位置および傾倒角度を設定してもかまわない。例えば、バットオブジェクトBOに当該バットオブジェクトBOの配置位置を示す点を複数設定することによって、バットオブジェクトBOの配置位置および傾倒角度を設定してもかまわない。具体的には、バットオブジェクトBOの下端部分に設けられた点POに加えて、バットオブジェクトBOの上端部分に点PAを設ける。そして、バットオブジェクトBOの傾きを、仮想ゲーム空間における点PAの座標値で定義する。この場合、上記ステップ74の処理において算出する傾き変化を点PAの変化で算出すれば、オブジェクトの位置および傾きを2点の座標値で定義しても本発明を実現することができる。
【0109】
このように、上記実施形態に係るゲーム装置3は、加速度センサを備えた入力装置を用いた操作入力において、加速度センサからの出力のみを用いてオブジェクトを描画できる。さらに、バットオブジェクトBOの一端(支点位置)をコントローラ7の動作に応じて即時に移動させ、他端をコントローラ7の傾きに徐々に追従するように動かすことができる。例えば、長軸部材等の一端を持ってオブジェクトを仮想ゲーム空間内で動かす描画をする場合、その一端は即時移動させ、他端は即時移動させた場合の位置へ追従するように遅れて移動させることにより、実空間で長軸部材を動かしているようなリアルな表現が可能となる。
【0110】
また、上述した説明では、コントローラ7から出力される3軸加速度データを用いて野球バットを扱うゲーム例を説明したが、他のゲーム処理にも用いることができる。例えば、プレイヤキャラクタが何らかのオブジェクト(特に、剣、竹刀、棒等の長軸物)を持って扱うゲームや仮想ゲーム空間内で当該オブジェクトを移動させるようなゲームに適用できることは言うまでもない。また、上述した説明では、コントローラ7の動きや傾きを判別するゲーム装置3をゲームシステム1に適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータなどの情報処理装置にも適用することができる。例えば、判別された入力装置の動きや傾きに応じて、情報処理装置が表示しているオブジェクトが移動する等、入力装置に対する判別結果に基づいて様々な処理を行うことができる。
【0111】
また、コントローラ7に設けられた加速度センサ701は、互いに直交する3軸成分に分けてそれぞれ検出して出力する3軸加速度センサを用いて説明したが、少なくとも直交する2軸成分をそれぞれ検出する加速度センサを用いれば本発明を実現することができる。例えば、コントローラ7が配置された3次元空間における加速度をX軸およびY軸(図3、図4参照)の2軸成分に分けてそれぞれ検出して出力する加速度センサを用いても、上述したx軸およびz軸方向への支点位置の移動およびx軸およびz軸方向への傾き判定を行うことができる。この場合、検出したX軸およびY軸方向の加速度が共に0である場合に、コントローラ7が上記起立状態であると判定することができる。また、上述した説明でZ軸成分の加速度を用いて判定していたスイング開始判定ができなくなるが、XおよびY軸に対する加速度成分から得られるスイングによって生じる遠心力成分を用いてスイング開始を判定してもいいし、加速度センサ701とは異なる他のセンサを用いてスイング開始を判定してもかまわない。また、プレイヤがコントローラ7をスイングするときは操作ボタン72の何れかを押下するようなゲームルールを設定して、当該操作ボタン72の何れかが押下されたことに応じてスイング開始を判定してもかまわない。
【0112】
さらに、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。例えば、コントローラ7が配置された3次元空間における加速度をY軸(図3、図4参照)成分のみ検出して出力する加速度センサを用いても、上述したx軸方向への支点位置の移動およびx軸方向への傾き判定を行うことができる。この場合、検出したY軸方向の加速度が0である場合に、コントローラ7が上記起立状態であると仮定して判定する。この場合、バットオブジェクトBOが仮想ゲーム空間におけるx軸方向に移動およびx軸方向に傾く態様となるが、このような1方向へバットオブジェクトBOを移動および傾倒させて描画する場合、1軸方向のみの加速度を検出する加速度センサを用いても本発明を実現することができる。
【0113】
また、上述した説明では、コントローラ7とゲーム装置3とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置3とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置3の接続端子に接続する。
【0114】
また、コントローラ7から無線送信される送信データを受信する受信手段として、ゲーム装置3の接続端子に接続された受信ユニット6を用いて説明したが、ゲーム装置3の本体内部に設けられた受信モジュールによって当該受信手段を構成してもかまわない。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU30に出力される。
【0115】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、コントローラ7における撮像情報演算部74の位置(撮像情報演算部74の光入射口)は、ハウジング71の前面でなくてもよく、ハウジング71の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【産業上の利用可能性】
【0116】
本発明に係るゲームプログラムおよびゲーム装置は、加速度センサを備えた入力装置を用いた操作入力において、当該入力装置の傾きに応じてオブジェクトを描画でき、ゲームコントローラ等の動きに応じて描画する装置やプログラムとして有用である。
【図面の簡単な説明】
【0117】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置3の機能ブロック図
【図3】図3のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面後方から見た斜視図
【図5A】コントローラ7の上筐体を外した状態を示す斜視図
【図5B】コントローラ7の下筐体を外した状態を示す斜視図
【図6】図3のコントローラ7の構成を示すブロック図
【図7】図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図8】コントローラ7を起立させて静止した状態を示す図
【図9】コントローラ7から受信したX、Y、およびZ軸方向加速度データに応じて、モニタ2に描画した野球ゲームの一例を示す図
【図10】バットオブジェクトBOの動きを説明するために仮想ゲーム空間を水平方向から見た図
【図11】バットオブジェクトBOの動きを説明するために仮想ゲーム空間を上方向から見た図
【図12】ゲーム装置3のメインメモリ33に記憶される主なデータを示す図
【図13】ゲーム装置3において実行されるゲーム処理の流れを示すフローチャート
【図14】図13におけるステップ52の支点位置算出処理の詳細な動作を示すサブルーチン
【図15】図13におけるステップ53の傾き算出処理の詳細な動作を示すサブルーチン
【図16】コントローラ7が起立状態から傾いた一例を示す図
【図17】バットオブジェクトBOの位置および傾きが変化した一例を示す図
【図18】バントモードにおけるバットオブジェクトBOの位置および傾きが変化した一例を示す図
【図19A】コントローラ7が起立して静止している初期段階で表示されるバットオブジェクトBO1の一例
【図19B】コントローラ7を水平移動させて傾けたときの第1段階で表示されるバットオブジェクトBO2の一例
【図19C】コントローラ7を水平移動させて傾けたときの第2段階で表示されるバットオブジェクトBO3の一例
【図19D】コントローラ7を水平移動させて傾けたときの第3段階で表示されるバットオブジェクトBO4の一例
【符号の説明】
【0118】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
30…CPU
31…メモリコントローラ
32…GPU
33…メインメモリ
34…DSP
35…ARAM
36…コントローラI/F
37…ビデオI/F
38…外部メモリI/F
39…オーディオI/F
40…ディスクドライブ
41…ディスクI/F
4…光ディスク
5…外部メモリカード
6…受信ユニット
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
703…水晶振動子
704…バイブレータ
705…電池
8…マーカ
【特許請求の範囲】
【請求項1】
少なくとも1軸方向の加速度を検出する加速度センサを備えた入力装置で検出された加速度を用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置のコンピュータで実行されるゲームプログラムであって、
前記コンピュータに、
前記加速度センサから出力される加速度データを取得する加速度取得ステップと、
前記加速度取得ステップで取得した加速度データに基づいて、前記オブジェクトに設けられた支点の仮想ゲーム空間における位置を示す支点位置座標を算出する支点位置算出ステップと、
前記加速度取得ステップで取得した加速度データに基づいて、実空間における前記入力装置の傾きを算出する入力装置傾き算出ステップと、
前記入力装置傾き算出ステップで算出された入力装置の傾きに応じて、前記オブジェクトが前記仮想ゲーム空間において傾倒する傾きを示すパラメータを算出するオブジェクト傾き算出ステップと、
前記支点位置算出ステップで算出した支点位置座標および前記オブジェクト傾き算出ステップで算出したオブジェクトの傾きを示すパラメータを用いて、前記オブジェクトを仮想ゲーム空間に配置して前記表示装置に表示する表示制御ステップとを実行させる、ゲームプログラム。
【請求項2】
前記入力装置の傾きに応じて、仮想ゲーム空間における前記オブジェクトの傾き目標を設定する傾き目標設定ステップを、さらに前記コンピュータに実行させ、
前記オブジェクト傾き算出ステップでは、仮想ゲーム空間における現在の前記オブジェクトの傾きから前記傾き目標に向けて当該オブジェクトが所定割合傾倒した傾きが、前記オブジェクトの傾きを示すパラメータとして算出される、請求項1に記載のゲームプログラム。
【請求項3】
前記オブジェクトの傾きを示すパラメータは、仮想ゲーム空間における前記オブジェクトの傾倒方向を示す方向ベクトルであり、
前記表示制御ステップでは、前記支点位置座標および前記方向ベクトルを用いて、前記オブジェクトを仮想ゲーム空間に配置して前記表示装置に表示される、請求項1に記載のゲームプログラム。
【請求項4】
前記オブジェクトの傾きを示すパラメータは、前記支点とは異なる前記オブジェクト上の点の仮想ゲーム空間における位置を示す位置座標であり、
前記表示制御ステップでは、前記支点位置座標および前記支点とは異なる前記オブジェクト上の点の位置座標を用いて、前記オブジェクトを仮想ゲーム空間に配置して前記表示装置に表示される、請求項1に記載のゲームプログラム。
【請求項5】
仮想ゲーム空間において前記オブジェクトの支点が移動可能な可動範囲を設定する可動範囲設定ステップを、前記コンピュータにさらに実行させる、請求項1に記載のゲームプログラム。
【請求項6】
前記支点位置算出ステップでは、前記加速度センサが検出可能な加速度の最大値と前記可動範囲の始終端とを対応付けて、取得した前記加速度データが示す加速度を当該可動範囲内にスケーリングして前記支点位置座標が算出される、請求項5に記載のゲームプログラム。
【請求項7】
前記加速度センサは、前記入力装置に対して互いに直交する3軸方向の加速度を検出し、
前記可動範囲設定ステップでは、仮想ゲーム空間における平面状に前記可動範囲が設定され、
前記支点位置算出ステップでは、前記3軸方向に含まれる第1軸方向の加速度が前記可動範囲上の第1方向にスケーリングされ、前記3軸方向に含まれる第2軸方向の加速度が当該第1方向と直交する前記可動範囲上の第2方向にスケーリングされて前記支点位置座標が算出される、請求項6に記載のゲームプログラム。
【請求項8】
前記加速度センサは、前記入力装置に対して互いに直交する3軸方向の加速度を検出し、
前記傾き目標設定ステップでは、実空間の鉛直方向に対する前記入力装置の長軸方向の傾きを仮想ゲーム空間の鉛直方向に対する前記オブジェクトの長軸方向の傾きに置き換えて前記傾き目標が設定される、請求項2に記載のゲームプログラム。
【請求項9】
少なくとも1軸方向の加速度を検出する加速度センサを備えた入力装置で検出された加速度を用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置であって、
前記加速度センサから出力される加速度データを取得する加速度取得手段と、
前記加速度取得手段が取得した加速度データに基づいて、前記オブジェクトに設けられた支点の仮想ゲーム空間における位置を示す支点位置座標を算出する支点位置算出手段と、
前記加速度取得手段が取得した加速度データに基づいて、実空間における前記入力装置の傾きを算出する入力装置傾き算出手段と、
前記入力装置傾き算出手段で算出された入力装置の傾きに応じて、前記オブジェクトが前記仮想ゲーム空間において傾倒する傾きを示すパラメータを算出するオブジェクト傾き算出手段と、
前記支点位置算出手段が算出した支点位置座標および前記オブジェクト傾き算出手段が算出したオブジェクトの傾きを示すパラメータを用いて、前記オブジェクトを仮想ゲーム空間に配置して前記表示装置に表示する表示制御手段とを備える、ゲーム装置。
【請求項10】
前記入力装置の傾きに応じて、仮想ゲーム空間における前記オブジェクトの傾き目標を設定する傾き目標設定手段を、さらに備え、
前記オブジェクト傾き算出手段は、仮想ゲーム空間における現在の前記オブジェクトの傾きから前記傾き目標に向けて当該オブジェクトが所定割合傾倒した傾きを、前記オブジェクトの傾きを示すパラメータとして算出する、請求項9に記載のゲーム装置。
【請求項1】
少なくとも1軸方向の加速度を検出する加速度センサを備えた入力装置で検出された加速度を用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置のコンピュータで実行されるゲームプログラムであって、
前記コンピュータに、
前記加速度センサから出力される加速度データを取得する加速度取得ステップと、
前記加速度取得ステップで取得した加速度データに基づいて、前記オブジェクトに設けられた支点の仮想ゲーム空間における位置を示す支点位置座標を算出する支点位置算出ステップと、
前記加速度取得ステップで取得した加速度データに基づいて、実空間における前記入力装置の傾きを算出する入力装置傾き算出ステップと、
前記入力装置傾き算出ステップで算出された入力装置の傾きに応じて、前記オブジェクトが前記仮想ゲーム空間において傾倒する傾きを示すパラメータを算出するオブジェクト傾き算出ステップと、
前記支点位置算出ステップで算出した支点位置座標および前記オブジェクト傾き算出ステップで算出したオブジェクトの傾きを示すパラメータを用いて、前記オブジェクトを仮想ゲーム空間に配置して前記表示装置に表示する表示制御ステップとを実行させる、ゲームプログラム。
【請求項2】
前記入力装置の傾きに応じて、仮想ゲーム空間における前記オブジェクトの傾き目標を設定する傾き目標設定ステップを、さらに前記コンピュータに実行させ、
前記オブジェクト傾き算出ステップでは、仮想ゲーム空間における現在の前記オブジェクトの傾きから前記傾き目標に向けて当該オブジェクトが所定割合傾倒した傾きが、前記オブジェクトの傾きを示すパラメータとして算出される、請求項1に記載のゲームプログラム。
【請求項3】
前記オブジェクトの傾きを示すパラメータは、仮想ゲーム空間における前記オブジェクトの傾倒方向を示す方向ベクトルであり、
前記表示制御ステップでは、前記支点位置座標および前記方向ベクトルを用いて、前記オブジェクトを仮想ゲーム空間に配置して前記表示装置に表示される、請求項1に記載のゲームプログラム。
【請求項4】
前記オブジェクトの傾きを示すパラメータは、前記支点とは異なる前記オブジェクト上の点の仮想ゲーム空間における位置を示す位置座標であり、
前記表示制御ステップでは、前記支点位置座標および前記支点とは異なる前記オブジェクト上の点の位置座標を用いて、前記オブジェクトを仮想ゲーム空間に配置して前記表示装置に表示される、請求項1に記載のゲームプログラム。
【請求項5】
仮想ゲーム空間において前記オブジェクトの支点が移動可能な可動範囲を設定する可動範囲設定ステップを、前記コンピュータにさらに実行させる、請求項1に記載のゲームプログラム。
【請求項6】
前記支点位置算出ステップでは、前記加速度センサが検出可能な加速度の最大値と前記可動範囲の始終端とを対応付けて、取得した前記加速度データが示す加速度を当該可動範囲内にスケーリングして前記支点位置座標が算出される、請求項5に記載のゲームプログラム。
【請求項7】
前記加速度センサは、前記入力装置に対して互いに直交する3軸方向の加速度を検出し、
前記可動範囲設定ステップでは、仮想ゲーム空間における平面状に前記可動範囲が設定され、
前記支点位置算出ステップでは、前記3軸方向に含まれる第1軸方向の加速度が前記可動範囲上の第1方向にスケーリングされ、前記3軸方向に含まれる第2軸方向の加速度が当該第1方向と直交する前記可動範囲上の第2方向にスケーリングされて前記支点位置座標が算出される、請求項6に記載のゲームプログラム。
【請求項8】
前記加速度センサは、前記入力装置に対して互いに直交する3軸方向の加速度を検出し、
前記傾き目標設定ステップでは、実空間の鉛直方向に対する前記入力装置の長軸方向の傾きを仮想ゲーム空間の鉛直方向に対する前記オブジェクトの長軸方向の傾きに置き換えて前記傾き目標が設定される、請求項2に記載のゲームプログラム。
【請求項9】
少なくとも1軸方向の加速度を検出する加速度センサを備えた入力装置で検出された加速度を用いて、仮想ゲーム空間に配置されたオブジェクトを移動させて表示装置に表示するゲーム装置であって、
前記加速度センサから出力される加速度データを取得する加速度取得手段と、
前記加速度取得手段が取得した加速度データに基づいて、前記オブジェクトに設けられた支点の仮想ゲーム空間における位置を示す支点位置座標を算出する支点位置算出手段と、
前記加速度取得手段が取得した加速度データに基づいて、実空間における前記入力装置の傾きを算出する入力装置傾き算出手段と、
前記入力装置傾き算出手段で算出された入力装置の傾きに応じて、前記オブジェクトが前記仮想ゲーム空間において傾倒する傾きを示すパラメータを算出するオブジェクト傾き算出手段と、
前記支点位置算出手段が算出した支点位置座標および前記オブジェクト傾き算出手段が算出したオブジェクトの傾きを示すパラメータを用いて、前記オブジェクトを仮想ゲーム空間に配置して前記表示装置に表示する表示制御手段とを備える、ゲーム装置。
【請求項10】
前記入力装置の傾きに応じて、仮想ゲーム空間における前記オブジェクトの傾き目標を設定する傾き目標設定手段を、さらに備え、
前記オブジェクト傾き算出手段は、仮想ゲーム空間における現在の前記オブジェクトの傾きから前記傾き目標に向けて当該オブジェクトが所定割合傾倒した傾きを、前記オブジェクトの傾きを示すパラメータとして算出する、請求項9に記載のゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19A】
【図19B】
【図19C】
【図19D】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19A】
【図19B】
【図19C】
【図19D】
【公開番号】特開2007−289413(P2007−289413A)
【公開日】平成19年11月8日(2007.11.8)
【国際特許分類】
【出願番号】特願2006−120927(P2006−120927)
【出願日】平成18年4月25日(2006.4.25)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成19年11月8日(2007.11.8)
【国際特許分類】
【出願日】平成18年4月25日(2006.4.25)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]