説明

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

【課題】加速度センサから出力されるデータを用いて、より直感的で簡単な操作入力を実現するゲーム装置およびゲームプログラムを提供する。
【解決手段】取得手段は、入力装置から加速度データを取得する。振り検出手段は、加速度データが示す加速度が所定の条件を満たすとき、実空間において入力装置が振られたことを検出する。類型決定手段は、振り検出手段の検出後に取得手段が取得した加速度データが示す加速度のうち、所定軸方向の加速度を用いて、入力装置が実空間で振られるときの振り方の類型を決定する。オブジェクト移動手段は、類型決定手段が決定した類型に応じて、仮想ゲーム空間内において所定のオブジェクトを移動させる。表示制御手段は、オブジェクトが配置された仮想ゲーム空間を表示装置に表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、加速度センサから出力されるデータに応じてゲーム処理が実行される、ゲーム装置およびゲームプログラムに関する。
【背景技術】
【0002】
従来、仮想ゲーム世界において行われる野球ゲームを表示装置に表示して楽しむゲーム装置が各種開発されている。例えば、プレイヤが把持するゲームコントローラを振り動かすことによってゲーム操作を行う野球ゲームが販売されている(例えば、非特許文献1参照)。上記非特許文献1に記載された野球ゲームでは、プレイヤがボールを投げるようにゲームコントローラを振り下ろすことによって、当該野球ゲームにおけるピッチング(投手の投球動作)が行われる。そして、プレイヤがゲームコントローラのAボタンやBボタンを押しながら当該ゲームコントローラを振り下ろすことによって、上記野球ゲームにおいて変化球を投げることができる。
【非特許文献1】「WiiSports 取扱説明書」、任天堂株式会社、発売日:2006年12月2日、p.14−15
【発明の開示】
【発明が解決しようとする課題】
【0003】
ここで、現実の野球の投手が変化球を投じる際は、ボールにひねりを加えて投球動作することが一般的である。しかしながら、上記非特許文献1に記載されたゲーム装置における変化球を投じる操作は、プレイヤが把持するゲームコントローラにひねりを加えるものではなく、ボタン操作によって球種選択するために実際に投球する感覚とは異なる要素がある。また、球種に応じてプレイヤが押すボタンを記憶する必要があり、実際の投球と比較すると操作が複雑になる問題がある。
【0004】
それ故に、本発明の目的は、加速度センサから出力されるデータを用いて、より直感的で簡単な操作入力を実現するゲーム装置およびゲームプログラムを提供することである。
【課題を解決するための手段】
【0005】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0006】
第1の発明は、入力装置(7)に備えられる多軸加速度センサ(XYZ軸方向の加速度を検出する加速度センサ701)から出力される加速度データ(Da)を用いて、ゲーム処理を行うゲーム装置(5)である。ゲーム装置は、取得手段(ステップ54、58、および87を実行するCPU10、以下、単にステップ番号のみ記載する)、振り検出手段(S55、S56)、類型決定手段(S59、S81、S82〜S86)、オブジェクト移動手段(S84〜S86、S90)、および表示制御手段(S90)を備える。取得手段は、入力装置から加速度データを取得する。振り検出手段は、加速度データが示す加速度が所定の条件(s>2.5)を満たすとき、実空間において入力装置が振られたことを検出する。類型決定手段は、振り検出手段の検出後に取得手段が取得した加速度データが示す加速度のうち、多軸加速度センサの所定軸(Y軸)方向の加速度を用いて、入力装置が実空間で振られるときの振り方の類型(振りタイプ)を決定する。オブジェクト移動手段は、類型決定手段が決定した類型に応じて、仮想ゲーム空間内において所定のオブジェクト(OBJ)を移動させる。表示制御手段は、オブジェクトが配置された仮想ゲーム空間を表示装置(2)に表示する。
【0007】
第2の発明は、上記第1の発明において、類型決定手段は、振り検出手段の検出後の所定期間中(N=10)に取得手段が取得した加速度データが示す所定軸方向の加速度に応じて、類型を決定する。
【0008】
第3の発明は、上記第1の発明において、類型決定手段は、実空間において入力装置が振られるときに加えられる当該入力装置本体のひねり状態に応じて予め分類された複数の類型(図10〜図12)から、所定軸方向の加速度を用いて1つの類型を選択して決定する。
【0009】
第4の発明は、上記第3の発明において、類型決定手段は、予め設定された閾値(第1判定値、第2判定値)と所定軸方向の加速度とを比較し、当該比較結果に応じて複数の類型から1つの類型を選択する(S82、S83)。
【0010】
第5の発明は、上記第3の発明において、類型決定手段は、入力装置本体にひねりが加えられていない状態で入力装置が振られるときに生じる所定軸方向の加速度を基準値(accY=0)として、当該基準値より大きい値である第1の閾値(1.0)と、当該基準値未満の値である第2の閾値(−1.6)とを、当該第1の閾値と当該基準値との差が当該第2の閾値と当該基準値との差と異なるように予め設定する。類型決定手段は、第1および第2の閾値と所定軸方向の加速度とを比較し、当該比較結果に応じて複数の類型から1つの類型を選択する。
【0011】
第6の発明は、上記第3の発明において、所定軸方向は、入力装置本体がひねられる回転軸(Z軸)の方向に対して垂直な方向である。
【0012】
第7の発明は、上記第1の発明において、オブジェクト移動手段は、変化方向タイプ選択手段(S84〜S86)を含む。変化方向タイプ選択手段は、仮想ゲーム空間においてオブジェクトの移動方向が変化する方向を示す複数の変化方向タイプ(球種;ストレート、カーブ、シュート)から、類型決定手段が決定した類型に応じて1つの変化方向タイプを選択する。オブジェクト移動手段は、変化方向タイプ選択手段が選択した変化方向タイプに応じて、オブジェクトを仮想ゲーム空間内で移動させる。
【0013】
第8の発明は、上記第1の発明において、加速度履歴記憶手段(S54、S58、S87)および移動速度決定手段(S101〜S103)を、さらに備える。加速度履歴記憶手段は、取得手段が取得した加速度データの履歴を所定期間分(N=15)記憶する。移動速度決定手段は、加速度履歴記憶手段に記憶された加速度データの履歴が示す加速度のうち、所定軸方向の加速度(Y軸)および所定軸方向とは異なる軸(X軸)方向の加速度の推移に基づいて、仮想ゲーム空間におけるオブジェクトの移動速度(球速)を決定する。オブジェクト移動手段は、移動速度決定手段が決定した移動速度に応じて、オブジェクトを移動させる。
【0014】
第9の発明は、上記第1の発明において、入力装置は、プレイヤが押下することに応じて所定の操作データ(Db)を出力する操作ボタン(72)が設けられる。取得手段は、入力装置から操作データを、さらに取得する(S51)。振り検出手段は、所定の操作ボタン(72i)が押下されたことを示す操作データが取得されている期間中に(S53でYes)、加速度データが示す加速度が所定の条件を満たすとき、入力装置が振られたことを検出する。
【0015】
第10の発明は、入力装置に備えられる多軸加速度センサから出力される加速度データを用いて、ゲーム処理を行うゲーム装置のコンピュータ(10)に実行させるゲームプログラムである。ゲームプログラムは、取得手段、振り検出手段、類型決定手段、オブジェクト移動手段、および表示制御手段として、コンピュータを機能させる。取得手段は、入力装置から加速度データを取得する。振り検出手段は、加速度データが示す加速度が所定の条件を満たすとき、実空間において入力装置が振られたことを検出する。類型決定手段は、振り検出手段の検出後に取得手段が取得した加速度データが示す加速度のうち、多軸加速度センサの所定軸方向の加速度を用いて、入力装置が実空間で振られるときの振り方の類型を決定する。オブジェクト移動手段は、類型決定手段が決定した類型に応じて、仮想ゲーム空間内において所定のオブジェクトを移動させる。表示制御手段は、オブジェクトが配置された仮想ゲーム空間を表示装置に表示する。
【0016】
第11の発明は、上記第10の発明において、類型決定手段は、振り検出手段の検出後の所定期間中に取得手段が取得した加速度データが示す所定軸方向の加速度に応じて、類型を決定する。
【0017】
第12の発明は、上記第10の発明において、類型決定手段は、実空間において入力装置が振られるときに加えられる当該入力装置本体のひねり状態に応じて予め分類された複数の類型から、所定軸方向の加速度を用いて1つの類型を選択して決定する。
【0018】
第13の発明は、上記第12の発明において、類型決定手段は、予め設定された閾値と所定軸方向の加速度とを比較し、当該比較結果に応じて複数の類型から1つの類型を選択する。
【0019】
第14の発明は、上記第12の発明において、類型決定手段は、入力装置本体にひねりが加えられていない状態で入力装置が振られるときに生じる所定軸方向の加速度を基準値として、当該基準値より大きい値である第1の閾値と、当該基準値未満の値である第2の閾値とを、当該第1の閾値と当該基準値との差が当該第2の閾値と当該基準値との差と異なるように予め設定する。類型決定手段は、第1および第2の閾値と所定軸方向の加速度とを比較し、当該比較結果に応じて複数の類型から1つの類型を選択する。
【0020】
第15の発明は、上記第12の発明において、所定軸方向は、入力装置本体がひねられる回転軸の方向に対して垂直な方向である。
【0021】
第16の発明は、上記第10の発明において、オブジェクト移動手段は、変化方向タイプ選択手段を含む。変化方向タイプ選択手段は、仮想ゲーム空間においてオブジェクトの移動方向が変化する方向を示す複数の変化方向タイプから、類型決定手段が決定した類型に応じて1つの変化方向タイプを選択する。オブジェクト移動手段は、変化方向タイプ選択手段が選択した変化方向タイプに応じて、オブジェクトを仮想ゲーム空間内で移動させる。
【0022】
第17の発明は、上記第10の発明において、加速度履歴記憶制御手段および移動速度決定手段として、さらにコンピュータを機能させる。加速度履歴記憶制御手段は、取得手段が取得した加速度データの履歴をメモリ(12、35)に所定期間分記憶する。移動速度決定手段は、メモリに記憶された加速度データの履歴が示す加速度のうち、所定軸方向の加速度および所定軸方向とは異なる軸方向の加速度の推移に基づいて、仮想ゲーム空間におけるオブジェクトの移動速度を決定する。オブジェクト移動手段は、移動速度決定手段が決定した移動速度に応じて、オブジェクトを移動させる。
【0023】
第18の発明は、上記第10の発明において、入力装置は、プレイヤが押下することに応じて所定の操作データを出力する操作ボタンが設けられる。取得手段は、入力装置から操作データを、さらに取得する。振り検出手段は、所定の操作ボタンが押下されたことを示す操作データが取得されている期間中に、加速度データが示す加速度が所定の条件を満たすとき、入力装置が振られたことを検出する。
【発明の効果】
【0024】
上記第1の発明によれば、多軸加速度センサを搭載した入力装置において、検出された所定軸方向の加速度を用いることによって、入力装置が実空間で振られるときの振り方の類型を決定することができる。そして、決定された類型を用いてオブジェクトを移動させることによって、プレイヤにとってより直感的で簡単な操作入力が実現される。
【0025】
上記第2の発明によれば、類型の決定に必要な期間のみに生じた所定軸方向の加速度を用いて、入力装置の振りタイプが決定されるため、適切な類型判別が可能となる。例えば、入力装置の振り動作開始からボールをリリースするようなタイミングまでの期間を設定することによって、現実にボールを投じる際にボールに加わるひねりの類型を判別することが可能となる。
【0026】
上記第3の発明によれば、入力装置にひねりを加えながら振るような操作だけの簡単な操作によって、直感的な入力を行うことができる。
【0027】
上記第4の発明によれば、閾値と所定軸方向の加速度との比較によって類型が判別されるため、類型判別処理が容易となる。
【0028】
上記第5の発明によれば、入力装置をひねりながら振る人間の腕の特性を考慮した判定が可能となる。
【0029】
上記第6の発明によれば、入力装置本体をひねりながら振った場合、所定軸方向に生じる加速度がひねりに応じて変化をするため、所定軸方向に生じる加速度のみで当該ひねりの有無を容易に検出することができる。また、入力装置本体をひねる前の所定軸方向が振る方向に対しても垂直であれば、所定軸方向に生じる加速度がひねり方向に応じて異なった変化をするため、所定軸方向に生じる加速度のみで当該ひねり方向も容易に検出することができる。
【0030】
上記第7の発明によれば、決定された入力装置の振りタイプに応じて、オブジェクトの移動タイプ(例えば、投手におけるボールの球種)が選択される。したがって、プレイヤが入力装置をひねりながら振ることによって、その振りタイプに応じてオブジェクトの移動変化方向を操作することができ、例えば、投手が変化球を投じるような操作が容易となる。
【0031】
上記第8の発明によれば、入力装置を振るだけの簡単な操作によって、オブジェクトの移動方向と移動速度との両方を決定することができる。
【0032】
上記第9の発明によれば、プレイヤが操作を行うとき以外で入力装置を振った場合の誤判定を防止することができる。また、プレイヤが入力装置を把持するとき、所定の操作ボタンを押下する必要があるため、プレイヤに対する入力装置の持ち方を自然と強制することができる。
【0033】
また、本発明のゲームプログラムによれば、上述したゲーム装置と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0034】
図1を参照して、本発明の一実施形態に係るゲームプログラムを実行する装置について説明する。以下、説明を具体的にするために、当該装置の一例の据置型のゲーム装置本体5を含むゲームシステムについて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の外観図であり、図2はゲーム装置本体5のブロック図である。以下、当該ゲームシステム1について説明する。
【0035】
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置本体5から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明のゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
【0036】
また、ゲーム装置本体5は、無線コントローラモジュール19(図2参照)を内蔵する。無線コントローラモジュール19は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。
【0037】
また、ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ17(図2参照)が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。また、ゲームプログラム等は、光ディスク4に限らず、フラッシュメモリ17に予め記録されたものを実行するようにしてもよい。さらに、ゲーム装置本体5は、フラッシュメモリ17に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置本体5のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0038】
コントローラ7は、無線コントローラモジュール19を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるゲーム空間に登場するプレイヤキャラクタ等を操作したりするための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体5の無線コントローラモジュール19から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
【0039】
次に、図2を参照して、ゲーム装置本体5の内部構成について説明する。図2は、ゲーム装置本体5の構成を示すブロック図である。ゲーム装置本体5は、CPU(Central Processing Unit)10、システムLSI(Large Scale Integration)11、外部メインメモリ12、ROM/RTC(Read Only Memory/Real Time Clock)13、ディスクドライブ14、およびAV−IC(Audio Video−Integrated Circuit)15等を有する。
【0040】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については、後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置本体5の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ35または外部メインメモリ12に読み出したデータを書き込む。
【0041】
また、システムLSI11には、入出力プロセッサ31、GPU(Graphics Processor Unit)32、DSP(Digital Signal Processor)33、VRAM(Video RAM)34、および内部メインメモリ35が設けられる。図示は省略するが、これらの構成要素31〜35は、内部バスによって互いに接続される。
【0042】
GPU32は、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM34は、GPU32がグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU32は、VRAM34に記憶されたデータを用いて画像データを作成する。
【0043】
DSP33は、オーディオプロセッサとして機能し、内部メインメモリ35や外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0044】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、AVコネクタ16を介して、読み出した画像データをモニタ2に出力するとともに、読み出した音声データをモニタ2に内蔵されるスピーカ2aに出力する。これによって、画像がモニタ2に表示されるとともに音がスピーカ2aから出力される。
【0045】
入出力プロセッサ(I/Oプロセッサ)31は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ31は、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、および外部メモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0046】
入出力プロセッサ31は、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ31は、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介して当該データをネットワークに送信する。また、入出力プロセッサ31は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22、および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10は、ゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置本体5と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体5を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0047】
また、入出力プロセッサ31は、アンテナ23および無線コントローラモジュール19を介して、コントローラ7から送信される操作データ等を受信し、内部メインメモリ35または外部メインメモリ12のバッファ領域に記憶(一時記憶)する。なお、内部メインメモリ35には、外部メインメモリ12と同様に、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、CPU10のワーク領域やバッファ領域として用いられてもかまわない。
【0048】
さらに、入出力プロセッサ31には、拡張コネクタ20および外部メモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ31は、拡張コネクタ20や外部メモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0049】
また、ゲーム装置本体5(例えば、前部主面)には、当該ゲーム装置本体5の電源ボタン24、ゲーム処理のリセットボタン25、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトボタン26等が設けられている。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置本体5の各構成要素に対して、図示しないACアダプタを経て電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置本体5の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0050】
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
【0051】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0052】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0053】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
【0054】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置本体5が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0055】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0056】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、無線コントローラモジュール19からコントローラ7へ、複数のLED702のうち、上記コントローラ種別に対応するLEDを点灯させるための信号が送信される。
【0057】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5に示すスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0058】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
【0059】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング70の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0060】
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の上面(操作ボタン72aが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されていない側面)方向をX軸正方向とする。
【0061】
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
【0062】
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。また、無線モジュール753(図7参照)およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の動きを良好な感度でゲーム装置本体5等が判定することができる。
【0063】
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0064】
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体5から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0065】
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
【0066】
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
【0067】
撮像情報演算部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自体の方向を変えることによってその撮像方向を変更することができる。
【0068】
コントローラ7は、3軸(X、Y、Z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、少なくとも2軸方向に沿った直線加速度を検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて、加速度センサ701が提供されてもよい。
【0069】
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、それら3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0070】
しかしながら、加速度センサ701から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ(例えばCPU10)またはコントローラのプロセッサ(例えばマイコン751)等のコンピュータが処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【0071】
例えば、加速度センサ701を搭載するコントローラ7が静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサ701によって検出される加速度が重力加速度のみであるとして処理する場合)、コントローラ7が現実に静的な状態であれば、検出された加速度に基づいてコントローラ7の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ701の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に1G(重力加速度)が作用しているか否かだけでコントローラ7が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コントローラ7が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ701の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ7がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ701からの出力に基づいて、プロセッサがコントローラ7の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ701からの出力に基づいて、おおよそのコントローラ7の傾き具合を推定するような処理としてもよい。このように、加速度センサ701をプロセッサと組み合わせて用いることによって、コントローラ7の傾き、姿勢、または位置を判定することができる。
【0072】
一方、加速度センサ701が動的な状態であることを前提とする場合には、当該加速度センサ701が重力加速度成分に加えて加速度センサ701の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コントローラ7の動き方向等を知ることができる。具体的には、加速度センサ701を備えるコントローラ7がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7の様々な動きおよび/または位置を算出することができる。なお、加速度センサ701が動的な状態であることを前提とする場合であっても、加速度センサ701の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコントローラ7の傾きを知ることが可能である。
【0073】
他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。加速度センサ701でそれぞれ検知された加速度を示すデータは、通信部75に出力される。
【0074】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体5から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。
【0075】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置本体5の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置本体5で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体5のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0076】
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、本ゲーム装置本体5で行うゲームの概要について説明する。図8に示すように、コントローラ7は、全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、プレイヤが片手でコントローラ7を把持し、コントローラ7を振り動かす動作を行う。例えば、図8においては、プレイヤがコントローラ7を把持して、投手の投球モーションのように上から下へ振り下ろしている様子を示している。このようなプレイヤがコントローラ7を振り下ろす動作に応じて、コントローラ7に加わった振り下ろし時のひねり方向等をゲーム装置本体5が判定し、当該ひねり方向を利用したゲーム処理が行われる。
【0077】
例えば、図9に示すように、プレイヤの人差し指や中指で操作ボタン72i(Bボタン)を押下しながら、コントローラ7を把持して振り下ろす操作が行われる。このとき、プレイヤの親指は、自然とコントローラ7の上面側(例えば、十字キー72a付近)に位置することになる。このコントローラ7を把持する状態を、本実施形態でコントローラ7を操作する際の基準状態とする。なお、図9に示すコントローラ7の基準状態は、プレイヤがコントローラ7を右手で把持して振り上げたときに当該プレイヤの正面から見た状態を示している。一方、プレイヤがコントローラ7を左手で把持した基準状態は、図9に示した状態を左右反転させた状態となり、プレイヤが人差し指や中指で操作ボタン72iを押下しながら、親指が上面側に位置することは、右手の場合と同様である。
【0078】
次に、図10〜図12を参照して、プレイヤがひねりながらコントローラ7を振り下ろした際の状態について説明する。なお、図10は、プレイヤが基準状態からひねらずにコントローラ7を右手で振り下ろした際の状態の一例を示す図である。図11は、プレイヤが基準状態から一方方向にひねりながらコントローラ7を右手で振り下ろした際の状態の一例を示す図である。図12は、プレイヤが基準状態から他方方向にひねりながらコントローラ7を右手で振り下ろした際の状態の一例を示す図である。なお、以下の説明において、加速度センサ701の特性として、加速度センサ701から出力されるデータ(以降、加速度データと呼ぶ)は、当該加速度センサ701に加えられる加速度(つまり実際に加速する方向)とは真逆方向の加速度を示すデータが出力されるものとする。すなわち、加速度センサ701の加速による慣性力に応じた加速度データが出力されるものである。また、コントローラ7静止時に加速度センサ701に加わる重力加速度は、重力方向と同じ方向の加速度データとして出力されることになる。
【0079】
図10〜図12は、プレイヤがコントローラ7を上記基準状態で把持しながら、投手の投球モーションをするようにコントローラ7を振り下ろして操作している。具体的には、プレイヤは、いわゆる野球の投法におけるオーバースローでコントローラ7を振り下ろしており、当該オーバースローにおいてボールをリリースするとき、またはリリースした後のコントローラ7の前面の様子を示した例である。本実施例においては、誤検出を防ぐために振り下ろしが十分な速度に達してから検出を行うようにするので、例えばリリース前後の期間において検出が行われるようになる。また、プレイヤがボールをリリースしたつもりになるタイミングは個人差があると考えられるが、いずれにしても実際にコントローラ7をリリースするわけではないので、リリース後の手の動きもコントローラ7に反映される。したがって、必要に応じてリリース後に対応する期間がひねりの検出に含まれていてもよい。ここで、コントローラ7を把持して振った場合、振り始めは加速してやがて減速となる。したがって、コントローラ7には、振り始めで振っている方向と同じ方向の加速度が生じた後、徐々に加速度の大きさが減少して、振っている方向とは逆の方向に加速度が生じる。図10〜図12においては、ボールリリースするとき、またはボールリリースした後であるのでコントローラ7は、振り下ろし動作における減速中である。したがって、コントローラ7には、プレイヤの後方への加速度(すなわち、振っている方向とは逆方向の加速度)が加えられることになる。このとき加速度センサ701の出力である加速度データは、真逆方向を示すデータを出力するため、図示するように進行方向(振り方向)、つまりX軸正方向の出力となる。また、当該動作を行っている場合は、コントローラ7を振り下ろしているので、重力加速度の図面下方向(図10においてはX軸正方向)の成分も含まれることになる。
【0080】
図10において、プレイヤは、コントローラ7をひねらずに上記基準状態を維持して振り下ろしている。具体的には、右投手が直球(ストレートボール)を投じるようにコントローラ7を上記基準状態のまま振り下ろすような操作である。例えば、図10に示すように、常にコントローラ7がX軸正方向(図3等参照)に向かって振り動かされている状態となる。この場合、コントローラ7が振り動かされることによって生じる加速度は、常にX軸に沿った方向へ作用する。ここで、コントローラ7を振り動かした場合、遠心力や重力加速度がコントローラ7のZ軸方向に作用するが、説明を簡単にするためにZ軸方向の加速度を無視して説明する。具体的には、コントローラ7の振り始めの加速時にはX軸正方向の加速度(出力される加速度データはX軸負方向)が、コントローラ7の振り終わりの減速時にはX軸負方向の加速度(出力される加速度データはX軸正方向)が生じる。なお、プレイヤが左手にコントローラ7を把持して、左投手が直球を投じるように振り下ろした場合、コントローラ7のX軸に関して逆方向の加速度データが出力される。
【0081】
図11において、プレイヤは、右投手がカーブボールを投じるようにコントローラ7を上記基準状態からひねりながら振り下ろしている。ここで、カーブボールは、ボールを右回転させながら投じる球種であり、右投手ではコントローラ7のZ軸を中心としてZ軸正方向に見て右にひねりながら振り下ろすことになる。なお、図11は、コントローラ7をZ軸負方向から見た前面を示しているため、左へひねられているように示されている。この場合、コントローラ7が振り動かされることによって出力される加速度データは、X軸正方向からY軸負方向へ順次その方向を変化させる。つまり、右投手がカーブボールを投じるように振り下ろされた場合、コントローラ7のY軸正方向へ加速度が生じて、加速度センサ701からY軸負方向の加速度データが出力される。なお、プレイヤが左手にコントローラ7を把持して、左投手がカーブボールを投じるように振り下ろした場合、その加速度データがX軸負方向からY軸負方向へ順次その方向を変化させて作用する。つまり、左投手がカーブボールを投じるように振り下ろされた場合も、コントローラ7のY軸正方向へ加速度が生じて、加速度センサ701からY軸負方向の加速度データが出力される。
【0082】
図12において、プレイヤは、右投手がシュートボールを投じるようにコントローラ7を上記基準状態からひねりながら振り下ろしている。ここで、シュートボールは、上記カーブボールとは反対にボールを左回転させながら投じる球種であり、右投手ではコントローラ7のZ軸を中心としてZ軸正方向に見て左にひねりながら振り下ろすことになる。なお、図12は、コントローラ7をZ軸負方向から見た前面を示しているため、右へひねられているように示されている。この場合、コントローラ7が振り動かされることによって出力される加速度データは、X軸正方向からY軸正方向へ順次その方向を変化させる。つまり、右投手がシュートボールを投じるように振り下ろされた場合、コントローラ7のY軸負方向へ加速度が生じて、加速度センサ701からY軸正方向の加速度データが出力される。なお、プレイヤが左手にコントローラ7を把持して、左投手がシュートボールを投じるように振り下ろした場合、その加速度データがX軸負方向からY軸正方向へ順次その方向を変化させる。つまり、左投手がシュートボールを投じるように振り下ろされた場合も、コントローラ7のY軸負方向へ加速度が生じて、加速度センサ701からY軸正方向の加速度データが出力される。
【0083】
図13は、コントローラ7の振りタイプに応じて行われるゲーム処理の一例を示す図である。ゲーム処理の一例として、モニタ2に表示されるオブジェクトOBJの移動が、上記ひねり方向に応じて制御される。具体的には、オブジェクトOBJが仮想ゲーム空間において移動する方向が変化する種別を示す複数の変化方向タイプを予め設定しており、閾値と加速度データとの比較結果を用いて選択されたコントローラ7の振りタイプに応じて、当該変化方向タイプを選択する。
【0084】
例えば、図13においては、仮想ゲーム空間に登場する右投手の投手キャラクタPがボールオブジェクトOBJを投じている様子を、捕手側から見たゲーム画像を示している。そして、選択された球種(変化方向タイプ)に応じて、ボールオブジェクトOBJが仮想ゲーム空間を移動する軌道Tの例が、ボールオブジェクトOBJ1〜OBJ3それぞれの軌道T1〜軌道T3として図示されている。
【0085】
例えば、右投手が直球を投じるようにコントローラ7が振り下ろされた場合(図10参照)、ストレートボールの球種を示す変化方向タイプが選択される。そして、投手キャラクタPは、仮想ゲーム空間において直線状に移動(軌道T1)するボールオブジェクトOBJ1を投じ、あたかも投手キャラクタPが直球を投じたようなゲーム画像が表示される。
【0086】
また、右投手がカーブボールを投じるようにコントローラ7が振り下ろされた場合(図11参照)、カーブボールの球種を示す変化方向タイプが選択される。そして、投手キャラクタPは、仮想ゲーム空間の投手キャラクタPから見て、左へ曲がるように移動(軌道T2;図13は捕手側から見たゲーム画像であるため、右へ曲がって移動している)するボールオブジェクトOBJ2を投じ、あたかも投手キャラクタPがカーブを投じたようなゲーム画像が表示される。
【0087】
さらに、右投手がシュートボールを投じるようにコントローラ7が振り下ろされた場合(図12参照)、シュートボールの球種を示す変化方向タイプが選択される。そして、投手キャラクタPは、仮想ゲーム空間の投手キャラクタPから見て、右へ曲がるように移動(軌道T3;図13は捕手側から見たゲーム画像であるため、左へ曲がって移動している)するボールオブジェクトOBJ3を投じ、あたかも投手キャラクタPがシュートを投じたようなゲーム画像が表示される。
【0088】
このように、コントローラ7を操作するプレイヤは、振りながらひねる方向に応じて、仮想ゲーム空間において変化球を投じることができる。なお、上述した例は、右投手、すなわちプレイヤが右手でコントローラ7を把持する場合を主に説明したが、左投手でも同様の処理が可能である。例えば、左投手、すなわちプレイヤが左手でコントローラ7を把持する場合は、ゲーム処理の初期設定等によって仮想ゲーム空間に左投手の投手キャラクタPを登場させる。そして、カーブボールの球種を示す変化方向タイプが選択されたとき、仮想ゲーム空間の投手キャラクタPから見て右へ曲がるように移動するボールオブジェクトOBJを表示する。また、シュートボールの球種を示す変化方向タイプが選択されたとき、仮想ゲーム空間の投手キャラクタPから見て左へ曲がるように移動するボールオブジェクトOBJを表示する。このように、左投手の場合、選択された球種に応じてオブジェクトOBJが変化する方向を右投手と逆にすれば、上述した右投手と同様のゲーム処理が可能となる。
【0089】
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図14を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図14は、ゲーム装置本体5の外部メインメモリ12および/または内部メインメモリ35(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータを示す図である。
【0090】
図14に示すように、メインメモリには、加速度データDa、キーデータDb、加速度ベクトルサイズデータDc、加速度累積データDd、加速度平均データDe、球種データDf、差分ベクトルデータDg、最大差分ベクトルサイズデータDh、球速設定テーブルDi、球速データDj、射出方向設定テーブルDk、射出方向データDl、コースデータDm、ボール回転量データDn、移動ベクトルデータDo、および画像データDp等が記憶される。なお、メインメモリには、図14に示す情報に含まれるデータの他、ゲームに登場する他のオブジェクト等に関するデータや仮想ゲーム空間に関するデータ(背景のデータ等)等、ゲーム処理に必要なデータが記憶される。
【0091】
加速度データDaは、コントローラ7に生じた加速度accを示すデータであり、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データが所定期間分記憶される。この加速度データDaには、加速度センサ701がX軸成分に対して検出した加速度accXを示すX軸方向加速度データDa1、Y軸成分に対して検出した加速度accYを示すY軸方向加速度データDa2、およびZ軸成分に対して検出した加速度accZを示すZ軸方向加速度データDa3が含まれる。なお、本実施例においては、上述のとおり、加速度センサ701から出力される加速度データは、実際に加速度センサ701に作用する振り下ろし時の加速度とは逆方向のベクトルデータとして出力されており、加速度データDaに格納される加速度データも同様である。つまり、加速度accX、accY、およびaccZは、実際にコントローラ7を振り下ろすときに作用する加速度とは正負逆の値となっている。キーデータDbは、上記操作部72に対する操作に応じた操作信号が示すデータであり、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれるキーデータが記憶される。
【0092】
ここで、ゲーム装置本体5に備える無線コントローラモジュール19は、コントローラ7から所定周期(例えば、1/200秒毎)に送信される操作情報に含まれる加速度データおよびキーデータを受信し、無線コントローラモジュール19に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられた最新の加速度データおよびキーデータがゲーム処理周期である1フレーム毎(例えば、1/60秒毎)に読み出されて、メインメモリの加速度データDaおよびキーデータDbが更新される。なお、本実施形態では、加速度データDaは、コントローラ7から送信された過去所定フレーム分の加速度データが適宜更新されて格納される。
【0093】
なお、後述する処理フローでは、加速度データDaおよびキーデータDbがゲーム処理周期である1フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コントローラ7からの送信周期毎に加速度データDaおよびキーデータDbを更新し、当該更新された加速度データおよびキーデータをゲーム処理周期毎に利用する態様でもかまわない。この場合、加速度データDaに記憶する加速度データDa1〜Da3やキーデータDbを更新する周期と、ゲーム処理周期とが異なることになる。
【0094】
加速度ベクトルサイズデータDcは、コントローラ7に生じている加速度の大きさsを示すデータであり、最新のX軸方向加速度データDa1、Y軸方向加速度データDa2、およびZ軸方向加速度データDa3を用いて算出される。加速度累積データDdは、Y軸方向加速度accYを、所定処理回数分累積した累積値Ytotalを示すデータである。加速度平均データDeは、加速度累積データDdに格納された値を用いて算出される、Y軸方向加速度accYの平均値avgYを示すデータである。
【0095】
球種データDfは、コントローラ7の動きに応じて選択される球種を示すデータである。本実施形態では、球種データDfは、平均値avgYに応じて、ストレート、カーブ、およびシュートの何れかが選択される。
【0096】
差分ベクトルデータDgは、X軸方向加速度accXおよびY軸方向加速度accYの変化を示す差分ベクトルを示すデータである。最大差分ベクトルサイズデータDhは、所定期間内に算出された差分ベクトルのうち、最大の差分ベクトルの大きさLmaxを示すデータである。球速設定テーブルDiは、投手キャラクタPが投じるボールの球速レベルを、大きさLmaxに応じて予め設定したデータを記述したデータテーブルである。なお、球速設定テーブルDiに記憶されるデータテーブルの詳細な内容については、後述する。球速データDjは、球速レベルに応じて決定される球速を示すデータである。
【0097】
射出方向設定テーブルDkは、投手キャラクタPがボールを投じる射出方向Dを、選択された球種および投球するコースの組み合わせに応じて予め設定したデータを記述したデータテーブルである。なお、射出方向設定テーブルDkに記憶されるデータテーブルの詳細な内容については、後述する。射出方向データDlは、射出方向設定テーブルを参照して、球種および投球するコースの組み合わせに応じて選択された射出方向Dを示すデータである。コースデータDmは、プレイヤが十字キー72iを押下することによって決定される投球コース(例えば、内、中、外)を示すデータである。
【0098】
ボール回転量データDnは、仮想ゲーム空間に投じられた際のボールの回転量(回転方向)を示すデータであり、選択された球種に応じて設定される。移動ベクトルデータDoは、仮想ゲーム空間に投じられた際のボールの移動ベクトルを示すデータであり、前回の移動ベクトル、球速、および回転量に応じて順次算出される。
【0099】
画像データDpは、ボールオブジェクト画像データDp1および投手キャラクタ画像データDp2等を含んでいる。ボールオブジェクト画像データDp1は、仮想ゲーム空間にボールオブジェクトOBJを配置してゲーム画像を生成するためのデータである。投手キャラクタ画像データDp2は、仮想ゲーム空間に投手キャラクタPを配置してゲーム画像を生成するためのデータである。
【0100】
次に、図15〜図17を参照して、ゲーム装置本体5において行われるゲーム処理の詳細を説明する。なお、図15は、ゲーム装置本体5において実行されるゲーム処理の流れを示す前半のフローチャートである。図16は、ゲーム装置本体5において実行されるゲーム処理の流れを示す後半のフローチャートである。図17は、図16におけるステップ91のオブジェクト移動表示処理の詳細な動作を示すサブルーチンである。なお、図15〜図17に示すフローチャートにおいては、ゲーム処理のうち、コントローラ7を振り下ろすことに応じた投球が行われる処理について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図15〜図17では、CPU10が実行する各ステップを「S」と略称する。
【0101】
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU10は、ブートROM(例えば、ROM/RTC13)に記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図15〜図17に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【0102】
図15において、CPU10は、ゲーム処理の初期設定を行い(ステップ50)、次のステップに処理を進める。例えば、CPU10は、上記ステップ50における初期設定では、当該ゲーム処理で用いる各パラメータを初期化する。また、CPU10は、プレイヤがコントローラ7を把持する手(右手または左手)を設定し、その設定に応じて投手キャラクタPを右投手または左投手に設定する。また、CPU10は、仮想ゲーム空間の設定や投手キャラクタP等の各種ゲームオブジェクトの配置等の初期設定を行う。
【0103】
次に、CPU10は、キーデータを取得する(ステップ51)。そして、CPU10は、取得したキーデータを用いて、コース設定処理を行い(ステップ52)、次のステップに処理を進める。例えば、CPU10は、プレイヤが十字キー(操作ボタン72a)の上下方向を押下したことを示すキーデータを取得した場合、投球コースを「中」に設定してコースデータDmを更新する。また、CPU10は、プレイヤが十字キーの左方向を押下したことを示すキーデータを取得した場合、投球コースを「内」に設定してコースデータDmを更新する。また、CPU10は、プレイヤが十字キーの右方向を押下したことを示すキーデータを取得した場合、投球コースを「外」に設定してコースデータDmを更新する。なお、これらの「内」「外」の表現は、捕手側から見たゲーム画像がモニタ2に表示された状態(図13参照)で右バッターが登場した状況を想定している。
【0104】
次に、CPU10は、取得したキーデータを用いて、コントローラ7のBボタン(操作ボタン72i)が押下されたか否かを判断する(ステップ53)。そして、CPU10は、Bボタンが押下された場合、次のステップ54に処理を進める。一方、CPU10は、Bボタンが押下されていない場合、上記ステップ51に戻って処理を繰り返す。
【0105】
ステップ54において、CPU10は、コントローラ7から加速度データを取得して、次のステップに処理を進める。例えば、CPU10は、コントローラ7から受信した最新の操作情報に含まれる加速度データが示す加速度を加速度データDaに格納する。具体的には、コントローラ7から受信した操作情報に含まれるX軸方向の加速度データが、加速度accXとしてX軸方向加速度データDa1に格納される。また、最新の操作情報に含まれるY軸方向の加速度データが、加速度accYとしてY軸方向加速度データDa2に格納される。そして、最新の操作情報に含まれるZ軸方向の加速度データが、加速度accZとしてZ軸方向加速度データDa3に格納される。
【0106】
次に、CPU10は、加速度データDaに格納された最新の加速度データを参照し、加速度ベクトルの大きさsを算出し(ステップ55)、大きさsが閾値(例えば、2.5G)より大きいか否かを判断する(ステップ56)。そして、CPU10は、大きさsが閾値より大きい場合、次のステップ57に処理を進める。一方、CPU10は、大きさsが閾値以下の場合、処理を上記ステップ54に戻して繰り返す。具体的には、CPU10は、上記ステップ55において、加速度データDaに格納された加速度accX、accY、およびaccZを用いて、加速度ベクトルの大きさsを
【数1】

で算出する。次に、CPU10は、算出された大きさsを用いて、加速度ベクトルサイズデータDcを更新する。
【0107】
なお、上記ステップ55およびステップ56の処理は、プレイヤがコントローラ7のBボタン(操作ボタン72i)を押下しながら振り下ろす動作が十分な速度まで到達したことを検出するための処理であり、コントローラ7に生じる加速度の大きさが閾値を超えた場合に、以降の処理を開始している。上述した例では、コントローラ7に生じる3軸方向(XYZ軸方向)における加速度の大きさを基準として振り下ろし判定を行っているが、他の加速度の大きさを基準として判定を行ってもかまわない。例えば、コントローラ7振り下ろしによる遠心力の成分は、主にZ軸正方向成分として検出されると想定される(遠心力成分は、遠心力が作用する方向と同じ方向の加速度データとして出力される)ので、Z軸方向加速度データDa3に格納された最新の加速度accZの大きさが閾値(例えば、1.2G)より大きいか否かを、振り下ろし判定の基準にしてもかまわない。
【0108】
また、上述した振り操作の判定は、プレイヤがコントローラ7のBボタンを押下した状態でのみ行われる。これは、第1の目的として、プレイヤが投球操作を行うとき以外でコントローラ7を振った場合の誤判定を防止するためである。また、第2の目的として、プレイヤが投球操作を行うときは、例えば人差し指や中指でBボタンを押下する必要があるため、自然とプレイヤがコントローラ7を上記基準状態で把持することになる。つまり、プレイヤに対して、コントローラ7を上記基準状態で把持することを強制することができる。このことによって、ボールを握っているのに近い感覚を得ることができるが、他の実施例においては、当該ボタン操作に関する判断を行わないようにしてもよい。
【0109】
ステップ57において、CPU10は、初期化処理を行って、次のステップに処理を進める。具体的には、CPU10は、所定処理回数分(例えば、15回分)のX軸およびY軸方向加速度データを記憶するバッファをメインメモリ内(例えば、加速度データDa内)に確保する。また、CPU10は、処理回数をカウントするためのループ数Nを1に初期化する。さらに、CPU10は、累積値Ytotalを0に初期化して加速度累積データDdを更新する。
【0110】
次に、CPU10は、コントローラ7から加速度データを取得し(ステップ58)、次のステップに処理を進める。例えば、CPU10は、コントローラ7から受信した最新の操作情報に含まれる加速度データが示す加速度を加速度データDaに格納する。ここで、加速度データDaには、少なくともX軸方向加速度データDa1およびY軸方向加速度データDa2について、上記所定処理回数分の加速度データが格納される。なお、ステップ58における加速度データの取得処理は、上記ステップ54と同様であるため、詳細な説明を省略する。
【0111】
次に、CPU10は、上記ステップ58で取得した最新のY軸方向加速度accYを順次累積した累積値Ytotalを算出し、加速度累積データDdを更新して(ステップ59)、次のステップに処理を進める。例えば、CPU10は、前回の処理で算出された累積値Ytotal_oldを用いて、新たな累積値Ytotal_newを
Ytotal_new=Ytotal_old+accY
で算出する。
【0112】
次に、CPU10は、現在のループ数Nが10であるか否かを判断する(ステップ60)。そして、CPU10は、N=10である場合、処理を次のステップ81(図16参照)に進める。一方、CPU10は、N<10である場合、ループ数Nに1を加算して(ステップ61)、処理を上記ステップ58に戻して繰り返す。
【0113】
ステップ81(図16)において、CPU10は、加速度累積データDdに格納されている累積値Ytotalを用いて、Y軸方向加速度accYの平均値avgYを算出し、次のステップに処理を進める。具体的には、CPU10は、平均値avgYを
avgY=Ytotal/N
で算出し、加速度平均データDeを更新する。
【0114】
次に、CPU10は、上記ステップ81で算出した平均値avgYが、第1判定値(例えば、−1.6G)より小さいか否か(ステップ82)、および第2判定値(例えば、1.0G)より大きいか否か(ステップ83)を判断する。そして、CPU10は、平均値avgYが上記第1判定値より小さい場合、球種をカーブに決定して球種データDfを更新し(ステップ84)、次のステップ87に処理を進める。また、CPU10は、平均値avgYが上記第2判定値より大きい場合、球種をシュートに決定して球種データDfを更新し(ステップ85)、次のステップ87に処理を進める。さらに、CPU10は、平均値avgYが上記第1判定値以上で上記第2判定値以下の場合、球種をストレートに決定して球種データDfを更新し(ステップ86)、次のステップ87に処理を進める。
【0115】
ここで、上記ステップ81〜ステップ86の処理における球種決定方法について説明する。まず、上記ステップ81で算出される平均値avgYは、コントローラ7の振り下ろし操作中の所定期間(例えば、10フレーム分)に生じたY軸方向加速度accYの平均値である。上記所定期間は、プレイヤがコントローラ7を把持して投球するモーションを開始し、振り速度が所定の速度を超えてからの期間に設定される。例えば、プレイヤが投球するモーションを開始してから振り下ろし操作が終了するまでの全期間を上記所定期間とした場合、当該モーションにおけるフォロースルー時のひねり等、現実の変化球を投じる際にボールに与えられるひねりとは無関係の期間が含まれてしまう。一方、本実施形態で用いられる所定期間は、例えば振り下ろし操作開始後、十分な速度で振りが行われていると判断される時点からボールをリリースするとき(またはリリースした後を含んでもよい)のようなタイミングまでの期間を想定し、現実にボールを投じる際にボールに加わるひねりの判定に適した期間に設定される。このように、平均値avgYは、ボールを投じる際にボールに加わるひねりの判定に適した期間に生じたY軸方向加速度accYの平均値である。
【0116】
また、本実施形態では、所定軸方向の加速度(Y軸方向加速度accY)の平均値に応じて、振り操作中のコントローラ7のひねり状態を示す複数の類型(ひねり無しでの振り、一方方向へひねりながらの振り、他方方向へひねりながらの振り)から、1つの類型(振りタイプ)を選択している。そして、選択された振りタイプに応じて、オブジェクトOBJが仮想ゲーム空間において移動する方向が変化する種別を示す複数の変化方向タイプ(ストレート、カーブ、シュート)から、1つの変化方向タイプが決定される。
【0117】
例えば、図10を用いて説明したように、プレイヤがストレートボールを投じるように右手でコントローラ7を振り下ろしたとき、そのコントローラ7の動きによって、主にX軸正方向の加速度データが出力される。つまり、プレイヤがストレートボールを投じるときは、Y軸方向加速度accYが0付近を推移する。したがって、Y軸方向加速度accYの平均値が0付近、すなわち−1.6G(第1判定値)≦avgY≦1.0G(第2判定値)の場合、コントローラ7を振る類型が、極端なひねりを加えることなくコントローラ7を振る類型(ひねり無しでの振り)であると判定することができる。そして、このようなコントローラ7の振りタイプが判定されたことに応じて、球種がストレートに決定される。
【0118】
また、図11を用いて説明したように、プレイヤがカーブボールを投じるように右手でコントローラ7を振り下ろしたとき、そのコントローラ7の動きによって出力される加速度データは、X軸正方向からY軸負方向に変化する。つまり、プレイヤがカーブボールを投じるときは、Y軸方向加速度accYが負の値へ推移する。したがって、Y軸方向加速度accYの平均値が負の値、すなわち平均値avgY<−1.6G(第1判定値)の場合、コントローラ7を振る類型が、一方方向へのひねり回転が加えられながらコントローラ7を振る類型(一方方向へひねりながらの振り)であると判定することができる。そして、このようなコントローラ7の振りタイプが判定されたことに応じて、球種がカーブに決定される。
【0119】
また、図12を用いて説明したように、プレイヤがシュートボールを投じるように右手でコントローラ7を振り下ろしたとき、そのコントローラ7の動きによって出力される加速度データは、X軸正方向からY軸正方向に変化する。つまり、プレイヤがシュートボールを投じるときは、Y軸方向加速度accYが正の値へ推移する。したがって、Y軸方向加速度accYの平均値が正の値、すなわち平均値avgY>1.0G(第2判定値)の場合、コントローラ7を振る類型が、他方方向へのひねり回転が加えられながらコントローラ7を振る類型(他方方向へひねりながらの振り)であると判定することができる。そして、このようなコントローラ7の振りタイプが判定されたことに応じて、球種がシュートに決定される。
【0120】
上述した球種判定原理は、右投手を想定して行ったが、左投手でも同様の判定基準で球種判定が可能である。上述したようにプレイヤがストレートボールを投じるように左手でコントローラ7を振り下ろしたとき、そのコントローラ7の動きによって出力される加速度データは、主にX軸負方向に出力される。つまり、プレイヤが左手でストレートボールを投じるときも、Y軸方向加速度accYが0付近を推移する。したがって、右投手と同じ判定方法でコントローラ7の振りタイプを判定して、球種をストレートに決定することができる。また、プレイヤがカーブボールを投じるように左手でコントローラ7を振り下ろしたとき、そのコントローラ7の動きによって出力される加速度データは、X軸負方向からY軸負方向に変化する。つまり、プレイヤが左手でカーブボールを投じるときも、Y軸方向加速度accYが負の値へ推移する。したがって、右投手と同じ判定方法でコントローラ7の振りタイプを判定して、球種をカーブに決定することができる。さらに、プレイヤがシュートボールを投じるように左手でコントローラ7を振り下ろしたとき、そのコントローラ7の動きによって出力される加速度データは、X軸負方向からY軸正方向に変化する。つまり、プレイヤが左手でシュートボールを投じるときも、Y軸方向加速度accYが正の値へ推移する。したがって、右投手と同じ判定方法でコントローラ7の振りタイプを判定して、球種をシュートに決定することができる。
【0121】
また、上記第1判定値と上記第2判定値とは、コントローラ7をひねりながら振り下ろす人間の腕の特性を考慮した値に設定することが好ましい。一般的に、カーブボールを投げるときの腕のひねりは、シュートボールを投げるときにひねる逆方向の腕のひねりより、比較的やりやすい傾向がある。つまり、シュートボールの判定基準をカーブボールと同等の値に設定すると、双方の判定傾向に偏りが生じてしまう。したがって、本実施形態では、基準値(avgY=0)と第1判定値との差(例えば、1.6G)に対して、当該基準値と第2判定値との差(例えば、1.0G)を小さくすることによって、カーブボールが判定される条件よりシュートボールが判定される条件を易しくしている。このように、それぞれの変化球を判定するレベルを人間の腕の特性に合わせて設定することによって、判定傾向をプレイヤの意図に近づけることができる。
【0122】
なお、上述した説明では、Y軸方向加速度accYの平均値avgYに応じて、コントローラ7の振りタイプを選択しているが、他のパラメータを用いて振りタイプを選択してもかまわない。例えば、累積値Ytotalをそのまま使用し、当該累積値Ytotalに応じた第1判定値および第2判定値を設定すれば、同様に振りタイプを判定できることは言うまでもない。
【0123】
図16に戻り、ステップ87において、CPU10は、コントローラ7から加速度データを取得し、次のステップに処理を進める。なお、ステップ87における加速度データの取得処理は、上記ステップ58と同様であるため、詳細な説明を省略する。
【0124】
次に、CPU10は、現在のループ数Nが15であるか否かを判断する(ステップ88)。そして、CPU10は、N=15である場合、処理を次のステップ90に進める。一方、CPU10は、N<15である場合、ループ数Nに1を加算して(ステップ89)、処理を上記ステップ87に戻して繰り返す。すなわち、ループ数N=15までの加速度データがバッファに記憶されることになる。
【0125】
ステップ90において、CPU10は、オブジェクト移動表示処理を行い、当該フローチャートによる処理を終了する。以下、図17を参照して、オブジェクト移動表示処理の詳細な動作について説明する。
【0126】
図17において、CPU10は、加速度データDaに格納されている所定処理回数分(ここでは、15フレーム分)のX軸方向加速度データDa1およびY軸方向加速度データDa2を用いて、差分ベクトルをそれぞれ算出して差分ベクトルデータDgに格納し(ステップ101)、次のステップに処理を進める。例えば、ある処理時に取得したX軸方向加速度をaccX0およびY軸方向加速度をaccY0とし、当該ある処理に対して前回の処理で取得したX軸方向加速度をaccXbおよびY軸方向加速度をaccYbとする。この場合、差分ベクトルは、(accX0−accXb,accY0−accYb)となる。このような差分ベクトルが、上記所定処理回数分の処理時点毎に算出される。
【0127】
次に、CPU10は、上記ステップ101で算出した差分ベクトルのうち、最大の差分ベクトルの大きさLmaxを算出して最大差分ベクトルサイズデータDhに格納し(ステップ102)、次のステップに処理を進める。例えば、上記ステップ101で算出した各差分ベクトルの大きさLは、
【数2】

で算出される。そして、各大きさLのうち最大の値が大きさLmaxとされる。
【0128】
次に、CPU10は、上記ステップ102で算出した大きさLmaxに応じて、球速レベルを決定し(ステップ103)、次のステップに処理を進める。例えば、CPU10は、球速設定テーブルDiに格納されたデータテーブルを用いて球速レベルを決定し、当該球速レベルが示す球速を球速データDjに格納する。以下、図18を参照して、球速設定テーブルの一例について説明する。
【0129】
図18において、球速設定テーブルは、取り得る大きさLmaxの数値範囲毎に、設定される球速レベル「0」〜「4」が記述されている。なお、球速レベルの値は、その数値が大きくなると球速が速くなることを示すレベル値であり、球速レベルの値に応じて仮想ゲーム空間においてボールオブジェクトOBJが投じられる初速度が決定される。例えば、大きさLmaxが0.0以上2.3未満の場合、球速レベルが「0」に設定されることが記述されている。大きさLmaxが2.3以上3.0未満の場合、球速レベルが「1」に設定されることが記述されている。大きさLmaxが3.0以上3.7未満の場合、球速レベルが「2」に設定されることが記述されている。大きさLmaxが3.7以上4.0未満の場合、球速レベルが「3」に設定されることが記述されている。そして、大きさLmaxが4.0以上の場合、球速レベルが「4」に設定されることが記述されている。
【0130】
図17に戻り、上記ステップ103で球速レベルが決定された後、CPU10は、球種およびコースに応じて、ボールの射出方向Dを決定し(ステップ104)、次のステップに処理を進める。例えば、CPU10は、射出方向設定テーブルDkに格納されたデータテーブルを用いて射出方向Dを決定して射出方向データDlに格納する。以下、図19および図20を参照して、射出方向設定テーブルの一例について説明する。
【0131】
図19において、射出方向設定テーブルは、球種およびコースの組み合わせ毎に、設定される射出方向Dが記述されている。ここで、射出方向Dは、仮想ゲーム空間において、投手キャラクタPがボールを投じる初期方向を示すベクトルデータである。例えば、コースが「内」の場合、球種「ストレート」で射出方向Dfi、球種「カーブ」で射出方向Dbi、球種「シュート」で射出方向Dsiがそれぞれ設定されることが記述されている。また、コースが「中」の場合、球種「ストレート」で射出方向Dfc、球種「カーブ」で射出方向Dbc、球種「シュート」で射出方向Dscがそれぞれ設定されることが記述されている。さらに、コースが「外」の場合、球種「ストレート」で射出方向Dfo、球種「カーブ」で射出方向Dbo、球種「シュート」で射出方向Dsoがそれぞれ設定されることが記述されている。
【0132】
上記射出方向設定テーブルは、同じコースであっても球種に応じて射出方向Dが異なることを示している。これは、異なる球種であっても最終的に到達する位置(仮想ゲーム空間における打者の位置におけるコース)が同じになるように設定するためである。例えば、図20は、コース「中」に投じる場合の射出方向Dfc、Dbc、およびDscの一例を示す図であり、仮想ゲーム空間における上空からボールオブジェクトOBJを鳥瞰した様子を示している。ここで、球種「ストレート」でコース「中」に投じる射出方向Dfcを基準にして、他の射出方向DbcおよびDscを考える。例えば、球種「カーブ」を投じる場合、ボールオブジェクトOBJが投じられた後に当該ボールオブジェクトOBJがカーブする(図20においては、右方向に変化する)。したがって、球種「カーブ」でコース「中」にボールオブジェクトOBJを到達させるためには、ボールオブジェクトOBJの変化を想定した方向に射出方向Dbcを設定する必要がある。つまり、射出方向Dbcは、射出方向Dfcに対してボールオブジェクトOBJが変化する逆方向(つまり、図20における左方向)にずらした角度に設定される。また、球種「シュート」を投じる場合、ボールオブジェクトOBJが投じられた後に当該ボールオブジェクトOBJがシュートする(図20においては、左方向に変化する)。したがって、球種「シュート」でコース「中」にボールオブジェクトOBJを到達させるためには、ボールオブジェクトOBJの変化を想定した方向に射出方向Dscを設定する必要がある。つまり、射出方向Dscも、射出方向Dfcに対してボールオブジェクトOBJが変化する逆方向(つまり、図20における右方向)にずらした角度に設定される。
【0133】
なお、上述した射出方向Dは、投手キャラクタPが右投手か左投手かによって、球種「カーブ」および「シュート」の場合に方向が逆方向となる。したがって、上記射出方向設定テーブルは、右投手用と左投手用とをそれぞれ用意して、射出方向設定テーブルDkに格納される。そして、上記ステップ50で行った初期設定の内容に応じて、右投手用および左投手用の射出方向設定テーブルの何れかが選択されて使用される。
【0134】
図17に戻り、上記ステップ104で射出方向Dが設定された後、CPU10は、球種に応じてボール回転量を設定してボール回転量データDmに格納し(ステップ105)、次のステップに処理を進める。例えば、CPU10は、球種データDfに設定されている球種に応じて、予め設定されたボール回転方向および回転量に設定する。具体的には、図20に示すように、右投手における球種「カーブ」の場合、仮想ゲーム空間の上空から見てボールオブジェクトOBJが所定の回転速度で左回転するように、ボール回転量を決定する(ボール回転量Rb)。また、右投手における球種「シュート」の場合、仮想ゲーム空間の上空から見てボールオブジェクトOBJが所定の回転速度で右回転するように、ボール回転量を決定する(ボール回転量Rs)。さらに、球種「ストレート」の場合、ボールオブジェクトOBJが無回転または所定の回転速度で縦回転するように、ボール回転量を決定する。なお、ボール回転速度は、一定値に設定してもいいし、平均値avgYや大きさLmaxに応じた値に適宜設定してもかまわない。
【0135】
なお、左投手における球種「カーブ」および「シュート」のボール回転方向は、上述した右投手の逆方向に設定する。すなわち、左投手における球種「カーブ」の場合、仮想ゲーム空間の上空から見てボールオブジェクトOBJが所定の回転速度で右回転するように、ボール回転量を決定する。また、左投手における球種「シュート」の場合、仮想ゲーム空間の上空から見てボールオブジェクトOBJが所定の回転速度で左回転するように、ボール回転量を決定する。
【0136】
次に、CPU10は、球速および射出方向に応じて、ボールオブジェクトOBJの移動ベクトルを決定して移動ベクトルデータDnに格納し(ステップ106)、次のステップに処理を進める。例えば、CPU10は、射出方向データDkに格納されている射出方向Dを移動ベクトルの方向とし、球速データDiに格納されている球速が示す大きさを移動ベクトルの大きさとして決定する。
【0137】
次に、CPU10は、投手キャラクタPがボールオブジェクトOBJを投じたように、移動ベクトルデータDnに格納された移動ベクトルに応じてボールオブジェクトOBJを仮想ゲーム空間内で移動させる(ステップ108)。そして、CPU10は、仮想ゲーム空間内にボールオブジェクトOBJが配置されたゲーム画像を、モニタ2に表示する表示制御処理を行い(ステップ108)、次のステップに処理を進める。
【0138】
次に、CPU10は、仮想ゲーム空間におけるボールオブジェクトOBJの移動が終了したか否かを判断する(ステップ109)。例えば、ボールオブジェクトOBJの移動終了としては、ボールオブジェクトOBJが捕手に捕球されたときや、打者によって打撃されたとき等がある。そして、CPU10は、移動終了の場合、当該サブルーチンによる処理を終了する。一方、CPU10は、移動中の場合、次のステップ110に処理を進める。
【0139】
ステップ110において、CPU10は、ボール回転量に応じて移動ベクトルを修正して移動ベクトルデータDnを更新し、処理を上記ステップ107に戻して繰り返す。例えば、CPU10は、前回算出された移動ベクトルに対して、ボール回転量に応じた変化ベクトルを当該移動ベクトルの垂直な方向に加算して、新たな移動ベクトルを算出する。
【0140】
図21に示すように、ボールオブジェクトOBJに左回転のボール回転量Rbが与えられている場合、ボールオブジェクトOBJの進行方向(つまり、前回算出された移動ベクトルの方向)に対して、左垂直方向の変化ベクトルが設定される。そして、前回の移動ベクトルに上記変化ベクトルを加算して、新たな移動ベクトルを算出する。ここで、変化ベクトルの大きさは、一例として移動ベクトルの大きさに比例した大きさとする。これによって、ボールオブジェクトOBJの移動速度とは無関係に同じ軌道変化をボールオブジェクトOBJに与える場合、すなわち投手キャラクタPから捕手までどのような球速であっても同じような軌道でボールオブジェクトOBJを移動させることができる。また、変化ベクトルの大きさは、他の例としてボール回転速度に比例した大きさや、予め設定された一定値としてもかまわない。
【0141】
このように、上記実施形態に係るゲーム装置3は、加速度センサ701を搭載したコントローラ7において、所定期間中に検出された所定軸方向(Y軸方向)の加速度を用いることによって、コントローラ7を振りながらひねる方向を判別することができる。そして、上記判別されたひねり方向を用いたゲーム処理を行うことによって、プレイヤにとってより直感的で簡単な操作入力が実現される。
【0142】
なお、2軸方向の加速度を検出する加速度センサを用いても本発明を実現することができる。例えば、X軸およびY軸方向(図3、図4参照)に対して生じる加速度を検出する加速度センサがコントローラ7に設けられている場合、上記ステップ55における加速度ベクトルの大きさsの算出をXY成分のみで算出すれば、同様に本発明を実現することができる。また、Y軸およびZ軸方向に対して生じる加速度を検出する加速度センサがコントローラ7に設けられている場合、上記ステップ55における加速度ベクトルの大きさsや上記ステップ101における差分ベクトルの算出を、YZ成分のみまたはZ成分のみで算出すれば、同様に本発明を実現することができる。
【0143】
また、上述した説明では、プレイヤがコントローラ7を振り下ろした際の減速時に生じる加速度方向を利用して、振り方の類型を決定しているが、他の期間に生じる加速度を利用して類型を決定してもかまわない。例えば、上述した類型判定基準の正負を逆にして各判定値を調整すれば、プレイヤがコントローラ7を振り下ろした際の加速時に生じる加速度方向を利用することも可能であり、加速時に生じる加速度方向を用いて振り方の類型を決定してもかまわない。
【0144】
また、上述した説明では、ゲーム例として野球ゲームの投手が投じる変化球の制御を用いたが、他のゲームに本発明を用いてもかまわない。例えば、プレイヤキャラクタがオブジェクトを打撃するようなゲーム(例えば、テニス、バレーボール、卓球等)や、プレイヤキャラクタがオブジェクトを投げるようなゲーム(例えば、ボーリング等)等にも、本発明を適用できることは言うまでもない。
【0145】
また、上述した説明では、コントローラ7を振り動かす動作を用いて操作するゲーム装置本体5をゲームシステム1に適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置にも適用することができる。例えば、入力装置の加速度センサから出力される加速度データに応じて、情報処理装置が表示しているオブジェクトやウインドウの状態や位置を制御する等、入力装置に生じる加速度に基づいて様々な処理を行うことができる。
【0146】
また、上述した説明では、コントローラ7とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
【0147】
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した各種設定値や判定値等は、単なる一例に過ぎず他の値であっても、本発明を実現できることは言うまでもない。
【0148】
また、本発明のゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【産業上の利用可能性】
【0149】
本発明に係るゲーム装置およびゲームプログラムは、より直感的で簡単な操作入力の実現が可能であり、ゲームコントローラ等の入力装置に与えられる動きに応じてゲーム処理等を行う装置やプログラムとして有用である。
【図面の簡単な説明】
【0150】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置本体5の機能ブロック図
【図3】図1のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面前方から見た斜視図
【図5】図3のコントローラ7の上筐体を外した状態を示す斜視図
【図6】図4のコントローラ7の下筐体を外した状態を示す斜視図
【図7】図3のコントローラ7の構成を示すブロック図
【図8】図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図9】プレイヤが基準状態でコントローラ7を把持した状態を示す図
【図10】プレイヤが基準状態からひねらずにコントローラ7を右手で振り下ろした際の状態の一例を示す図
【図11】プレイヤが基準状態から一方方向にひねりながらコントローラ7を右手で振り下ろした際の状態の一例を示す図
【図12】プレイヤが基準状態から他方方向にひねりながらコントローラ7を右手で振り下ろした際の状態の一例を示す図
【図13】コントローラ7の振りタイプに応じて行われるゲーム処理の一例を示す図
【図14】図2のゲーム装置本体5のメインメモリに記憶される主なデータを示す図
【図15】図2のゲーム装置本体5において実行されるゲーム処理の流れを示す前半のフローチャート
【図16】図2のゲーム装置本体5において実行されるゲーム処理の流れを示す後半のフローチャート
【図17】図16におけるステップ91のオブジェクト移動表示処理の詳細な動作を示すサブルーチン
【図18】球速設定テーブルの一例を示す図
【図19】射出方向設定テーブルの一例を示す図
【図20】ボールオブジェクトOBJに設定される射出方向Dとボール回転量Rとを説明するための図
【図21】ボールオブジェクトOBJの移動ベクトルが更新される様子の一例を示す図
【符号の説明】
【0151】
1…ゲームシステム
2…モニタ
2a、706…スピーカ
3…ゲーム装置
4…光ディスク
5…ゲーム装置本体
10…CPU
11…システムLSI
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
15…AV−IC
16…AVコネクタ
17…フラッシュメモリ
18…無線通信モジュール
19…無線コントローラモジュール
20…拡張コネクタ
21…外部メモリカード用コネクタ
22、23…アンテナ
24…電源ボタン
25…リセットボタン
26…イジェクトボタン
31…入出力プロセッサ
32…GPU
33…DSP
34…VRAM
35…内部メインメモリ
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
704…バイブレータ
707…サウンドIC
708…アンプ
8…マーカ

【特許請求の範囲】
【請求項1】
入力装置に備えられる多軸加速度センサから出力される加速度データを用いて、ゲーム処理を行うゲーム装置であって、
前記入力装置から前記加速度データを取得する取得手段と、
前記加速度データが示す加速度が所定の条件を満たすとき、実空間において前記入力装置が振られたことを検出する振り検出手段と、
前記振り検出手段の検出後に前記取得手段が取得した加速度データが示す加速度のうち、前記多軸加速度センサの所定軸方向の加速度を用いて、前記入力装置が実空間で振られるときの振り方の類型を決定する類型決定手段と、
前記類型決定手段が決定した類型に応じて、仮想ゲーム空間内において所定のオブジェクトを移動させるオブジェクト移動手段と、
前記オブジェクトが配置された仮想ゲーム空間を表示装置に表示する表示制御手段とを備える、ゲーム装置。
【請求項2】
前記類型決定手段は、前記振り検出手段の検出後の所定期間中に前記取得手段が取得した加速度データが示す前記所定軸方向の加速度に応じて、前記類型を決定する、請求項1に記載のゲーム装置。
【請求項3】
前記類型決定手段は、実空間において前記入力装置が振られるときに加えられる当該入力装置本体のひねり状態に応じて予め分類された複数の類型から、前記所定軸方向の加速度を用いて1つの類型を選択して決定する、請求項1に記載のゲーム装置。
【請求項4】
前記類型決定手段は、予め設定された閾値と前記所定軸方向の加速度とを比較し、当該比較結果に応じて前記複数の類型から1つの類型を選択する、請求項3に記載のゲーム装置。
【請求項5】
前記類型決定手段は、前記入力装置本体にひねりが加えられていない状態で前記入力装置が振られるときに生じる前記所定軸方向の加速度を基準値として、当該基準値より大きい値である第1の閾値と、当該基準値未満の値である第2の閾値とを、当該第1の閾値と当該基準値との差が当該第2の閾値と当該基準値との差と異なるように予め設定し、
前記類型決定手段は、前記第1および第2の閾値と前記所定軸方向の加速度とを比較し、当該比較結果に応じて前記複数の類型から1つの類型を選択する、請求項3に記載のゲーム装置。
【請求項6】
前記所定軸方向は、前記入力装置本体がひねられる回転軸の方向に対して垂直な方向である、請求項3に記載のゲーム装置。
【請求項7】
前記オブジェクト移動手段は、仮想ゲーム空間において前記オブジェクトの移動方向が変化する方向を示す複数の変化方向タイプから、前記類型決定手段が決定した類型に応じて1つの変化方向タイプを選択する変化方向タイプ選択手段を含み、
前記オブジェクト移動手段は、前記変化方向タイプ選択手段が選択した変化方向タイプに応じて、前記オブジェクトを仮想ゲーム空間内で移動させる、請求項1に記載のゲーム装置。
【請求項8】
前記取得手段が取得した加速度データの履歴を所定期間分記憶する加速度履歴記憶手段と、
前記加速度履歴記憶手段に記憶された加速度データの履歴が示す加速度のうち、前記所定軸方向の加速度および前記所定軸方向とは異なる軸方向の加速度の推移に基づいて、仮想ゲーム空間における前記オブジェクトの移動速度を決定する移動速度決定手段とを、さらに備え、
前記オブジェクト移動手段は、前記移動速度決定手段が決定した移動速度に応じて、前記オブジェクトを移動させる、請求項1に記載のゲーム装置。
【請求項9】
前記入力装置は、プレイヤが押下することに応じて所定の操作データを出力する操作ボタンが設けられ、
前記取得手段は、前記入力装置から前記操作データを、さらに取得し、
前記振り検出手段は、所定の操作ボタンが押下されたことを示す前記操作データが取得されている期間中に、前記加速度データが示す加速度が前記所定の条件を満たすとき、前記入力装置が振られたことを検出する、請求項1に記載のゲーム装置。
【請求項10】
入力装置に備えられる多軸加速度センサから出力される加速度データを用いて、ゲーム処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記入力装置から前記加速度データを取得する取得手段と、
前記加速度データが示す加速度が所定の条件を満たすとき、実空間において前記入力装置が振られたことを検出する振り検出手段と、
前記振り検出手段の検出後に前記取得手段が取得した加速度データが示す加速度のうち、前記多軸加速度センサの所定軸方向の加速度を用いて、前記入力装置が実空間で振られるときの振り方の類型を決定する類型決定手段と、
前記類型決定手段が決定した類型に応じて、仮想ゲーム空間内において所定のオブジェクトを移動させるオブジェクト移動手段と、
前記オブジェクトが配置された仮想ゲーム空間を表示装置に表示する表示制御手段として機能させる、ゲームプログラム。
【請求項11】
前記類型決定手段は、前記振り検出手段の検出後の所定期間中に前記取得手段が取得した加速度データが示す前記所定軸方向の加速度に応じて、前記類型を決定する、請求項10に記載のゲームプログラム。
【請求項12】
前記類型決定手段は、実空間において前記入力装置が振られるときに加えられる当該入力装置本体のひねり状態に応じて予め分類された複数の類型から、前記所定軸方向の加速度を用いて1つの類型を選択して決定する、請求項10に記載のゲームプログラム。
【請求項13】
前記類型決定手段は、予め設定された閾値と前記所定軸方向の加速度とを比較し、当該比較結果に応じて前記複数の類型から1つの類型を選択する、請求項12に記載のゲームプログラム。
【請求項14】
前記類型決定手段は、前記入力装置本体にひねりが加えられていない状態で前記入力装置が振られるときに生じる前記所定軸方向の加速度を基準値として、当該基準値より大きい値である第1の閾値と、当該基準値未満の値である第2の閾値とを、当該第1の閾値と当該基準値との差が当該第2の閾値と当該基準値との差と異なるように予め設定し、
前記類型決定手段は、前記第1および第2の閾値と前記所定軸方向の加速度とを比較し、当該比較結果に応じて前記複数の類型から1つの類型を選択する、請求項12に記載のゲームプログラム。
【請求項15】
前記所定軸方向は、前記入力装置本体がひねられる回転軸の方向に対して垂直な方向である、請求項12に記載のゲームプログラム。
【請求項16】
前記オブジェクト移動手段は、仮想ゲーム空間において前記オブジェクトの移動方向が変化する方向を示す複数の変化方向タイプから、前記類型決定手段が決定した類型に応じて1つの変化方向タイプを選択する変化方向タイプ選択手段を含み、
前記オブジェクト移動手段は、前記変化方向タイプ選択手段が選択した変化方向タイプに応じて、前記オブジェクトを仮想ゲーム空間内で移動させる、請求項10に記載のゲームプログラム。
【請求項17】
前記取得手段が取得した加速度データの履歴をメモリに所定期間分記憶する加速度履歴記憶制御手段と、
メモリに記憶された前記加速度データの履歴が示す加速度のうち、前記所定軸方向の加速度および前記所定軸方向とは異なる軸方向の加速度の推移に基づいて、仮想ゲーム空間における前記オブジェクトの移動速度を決定する移動速度決定手段として、さらに前記コンピュータを機能させ、
前記オブジェクト移動手段は、前記移動速度決定手段が決定した移動速度に応じて、前記オブジェクトを移動させる、請求項10に記載のゲームプログラム。
【請求項18】
前記入力装置は、プレイヤが押下することに応じて所定の操作データを出力する操作ボタンが設けられ、
前記取得手段は、前記入力装置から前記操作データを、さらに取得し、
前記振り検出手段は、所定の操作ボタンが押下されたことを示す前記操作データが取得されている期間中に、前記加速度データが示す加速度が前記所定の条件を満たすとき、前記入力装置が振られたことを検出する、請求項10に記載のゲームプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2008−246084(P2008−246084A)
【公開日】平成20年10月16日(2008.10.16)
【国際特許分類】
【出願番号】特願2007−93662(P2007−93662)
【出願日】平成19年3月30日(2007.3.30)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】