(57)【特許請求の範囲】
【請求項１】
入力装置に備えられる多軸加速度センサから出力される加速度データを用いて、ゲーム処理を行うゲーム装置であって、
前記入力装置から前記加速度データを取得する取得手段と、
前記加速度データが示す加速度が所定の条件を満たすとき、実空間において前記入力装置が振られたことを検出する振り検出手段と、
前記振り検出手段の検出後に前記取得手段が取得した加速度データが示す加速度のうち、前記多軸加速度センサの所定軸方向の加速度の平均値に応じて、前記入力装置が実空間で振られているときの入力装置本体に加えられたひねりの有無あるいはそのひねり方を示す振り方の類型を決定する類型決定手段と、
前記類型決定手段が決定した類型に応じて、仮想ゲーム空間内において所定のオブジェクトを移動させるオブジェクト移動手段と、
前記オブジェクトが配置された仮想ゲーム空間を表示装置に表示する表示制御手段とを備える、ゲーム装置。
【請求項２】
前記類型決定手段は、前記振り検出手段の検出後の所定期間中に前記取得手段が取得した加速度データが示す前記所定軸方向の加速度の平均値に応じて、前記類型を決定する、請求項１に記載のゲーム装置。
【請求項３】
前記類型決定手段は、実空間において前記入力装置が振られるときに加えられる当該入力装置本体のひねり状態に応じて予め分類された複数の類型から、前記所定軸方向の加速度を用いて１つの類型を選択して決定する、請求項１に記載のゲーム装置。
【請求項４】
前記類型決定手段は、予め設定された閾値と前記所定軸方向の加速度の平均値とを比較し、当該比較結果に応じて前記複数の類型から１つの類型を選択する、請求項３に記載のゲーム装置。
【請求項５】
前記類型決定手段は、前記入力装置本体にひねりが加えられていない状態で前記入力装置が振られるときに生じる前記所定軸方向の加速度の平均値を基準値として、当該基準値より大きい値である第１の閾値と、当該基準値未満の値である第２の閾値とを、当該第１の閾値と当該基準値との差が当該第２の閾値と当該基準値との差と異なるように予め設定し、
前記類型決定手段は、前記第１および第２の閾値と前記所定軸方向の加速度の平均値とを比較し、当該比較結果に応じて前記複数の類型から１つの類型を選択する、請求項３に記載のゲーム装置。
【請求項６】
前記所定軸方向は、前記入力装置本体がひねられる回転軸の方向に対して垂直な方向である、請求項３に記載のゲーム装置。
【請求項７】
前記オブジェクト移動手段は、仮想ゲーム空間において前記オブジェクトの移動方向が変化する方向を示す複数の変化方向タイプから、前記類型決定手段が決定した類型に応じて１つの変化方向タイプを選択する変化方向タイプ選択手段を含み、
前記オブジェクト移動手段は、前記変化方向タイプ選択手段が選択した変化方向タイプに応じて、前記オブジェクトを仮想ゲーム空間内で移動させる、請求項１に記載のゲーム装置。
【請求項８】
前記取得手段が取得した加速度データの履歴を所定期間分記憶する加速度履歴記憶手段と、
前記加速度履歴記憶手段に記憶された加速度データの履歴が示す加速度のうち、前記所定軸方向の加速度および前記所定軸方向とは異なる軸方向の加速度の推移に基づいて、仮想ゲーム空間における前記オブジェクトの移動速度を決定する移動速度決定手段とを、さらに備え、
前記オブジェクト移動手段は、前記移動速度決定手段が決定した移動速度に応じて、前記オブジェクトを移動させる、請求項１に記載のゲーム装置。
【請求項９】
前記入力装置は、プレイヤが押下することに応じて所定の操作データを出力する操作ボタンが設けられ、
前記取得手段は、前記入力装置から前記操作データを、さらに取得し、
前記振り検出手段は、所定の操作ボタンが押下されたことを示す前記操作データが取得されている期間中に、前記加速度データが示す加速度の平均値が前記所定の条件を満たすとき、前記入力装置が振られたことを検出する、請求項１に記載のゲーム装置。
【請求項１０】
入力装置に備えられる多軸加速度センサから出力される加速度データを用いて、ゲーム処理を行うゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記入力装置から前記加速度データを取得する取得手段と、
前記加速度データが示す加速度が所定の条件を満たすとき、実空間において前記入力装置が振られたことを検出する振り検出手段と、
前記振り検出手段の検出後に前記取得手段が取得した加速度データが示す加速度のうち、前記多軸加速度センサの所定軸方向の加速度の平均値に応じて、前記入力装置が実空間で振られているときの入力装置本体に加えられたひねりの有無あるいはそのひねり方を示す振り方の類型を決定する類型決定手段と、
前記類型決定手段が決定した類型に応じて、仮想ゲーム空間内において所定のオブジェクトを移動させるオブジェクト移動手段と、
前記オブジェクトが配置された仮想ゲーム空間を表示装置に表示する表示制御手段として機能させる、ゲームプログラム。
【請求項１１】
前記類型決定手段は、前記振り検出手段の検出後の所定期間中に前記取得手段が取得した加速度データが示す前記所定軸方向の加速度の平均値に応じて、前記類型を決定する、請求項１０に記載のゲームプログラム。
【請求項１２】
前記類型決定手段は、実空間において前記入力装置が振られるときに加えられる当該入力装置本体のひねり状態に応じて予め分類された複数の類型から、前記所定軸方向の加速度を用いて１つの類型を選択して決定する、請求項１０に記載のゲームプログラム。
【請求項１３】
前記類型決定手段は、予め設定された閾値と前記所定軸方向の加速度の平均値とを比較し、当該比較結果に応じて前記複数の類型から１つの類型を選択する、請求項１２に記載のゲームプログラム。
【請求項１４】
前記類型決定手段は、前記入力装置本体にひねりが加えられていない状態で前記入力装置が振られるときに生じる前記所定軸方向の加速度を基準値として、当該基準値より大きい値である第１の閾値と、当該基準値未満の値である第２の閾値とを、当該第１の閾値と当該基準値との差が当該第２の閾値と当該基準値との差と異なるように予め設定し、
前記類型決定手段は、前記第１および第２の閾値と前記所定軸方向の加速度の平均値とを比較し、当該比較結果に応じて前記複数の類型から１つの類型を選択する、請求項１２に記載のゲームプログラム。
【請求項１５】
前記所定軸方向は、前記入力装置本体がひねられる回転軸の方向に対して垂直な方向である、請求項１２に記載のゲームプログラム。
【請求項１６】
前記オブジェクト移動手段は、仮想ゲーム空間において前記オブジェクトの移動方向が変化する方向を示す複数の変化方向タイプから、前記類型決定手段が決定した類型に応じて１つの変化方向タイプを選択する変化方向タイプ選択手段を含み、
前記オブジェクト移動手段は、前記変化方向タイプ選択手段が選択した変化方向タイプに応じて、前記オブジェクトを仮想ゲーム空間内で移動させる、請求項１０に記載のゲームプログラム。
【請求項１７】
前記取得手段が取得した加速度データの履歴をメモリに所定期間分記憶する加速度履歴記憶制御手段と、
メモリに記憶された前記加速度データの履歴が示す加速度のうち、前記所定軸方向の加速度および前記所定軸方向とは異なる軸方向の加速度の推移に基づいて、仮想ゲーム空間における前記オブジェクトの移動速度を決定する移動速度決定手段として、さらに前記コンピュータを機能させ、
前記オブジェクト移動手段は、前記移動速度決定手段が決定した移動速度に応じて、前記オブジェクトを移動させる、請求項１０に記載のゲームプログラム。
【請求項１８】
前記入力装置は、プレイヤが押下することに応じて所定の操作データを出力する操作ボタンが設けられ、
前記取得手段は、前記入力装置から前記操作データを、さらに取得し、
前記振り検出手段は、所定の操作ボタンが押下されたことを示す前記操作データが取得されている期間中に、前記加速度データが示す加速度の平均値が前記所定の条件を満たすとき、前記入力装置が振られたことを検出する、請求項１０に記載のゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、加速度センサから出力されるデータに応じてゲーム処理が実行される、ゲーム装置およびゲームプログラムに関する。
【背景技術】
【０００２】
従来、仮想ゲーム世界において行われる野球ゲームを表示装置に表示して楽しむゲーム装置が各種開発されている。例えば、プレイヤが把持するゲームコントローラを振り動かすことによってゲーム操作を行う野球ゲームが販売されている（例えば、非特許文献１参照）。上記非特許文献１に記載された野球ゲームでは、プレイヤがボールを投げるようにゲームコントローラを振り下ろすことによって、当該野球ゲームにおけるピッチング（投手の投球動作）が行われる。そして、プレイヤがゲームコントローラのＡボタンやＢボタンを押しながら当該ゲームコントローラを振り下ろすことによって、上記野球ゲームにおいて変化球を投げることができる。
【非特許文献１】「ＷｉｉＳｐｏｒｔｓ  取扱説明書」、任天堂株式会社、発売日：２００６年１２月２日、ｐ．１４−１５
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ここで、現実の野球の投手が変化球を投じる際は、ボールにひねりを加えて投球動作することが一般的である。しかしながら、上記非特許文献１に記載されたゲーム装置における変化球を投じる操作は、プレイヤが把持するゲームコントローラにひねりを加えるものではなく、ボタン操作によって球種選択するために実際に投球する感覚とは異なる要素がある。また、球種に応じてプレイヤが押すボタンを記憶する必要があり、実際の投球と比較すると操作が複雑になる問題がある。
【０００４】
それ故に、本発明の目的は、加速度センサから出力されるデータを用いて、より直感的で簡単な操作入力を実現するゲーム装置およびゲームプログラムを提供することである。
【課題を解決するための手段】
【０００５】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【０００６】
第１の発明は、入力装置（７）に備えられる多軸加速度センサ（ＸＹＺ軸方向の加速度を検出する加速度センサ７０１）から出力される加速度データ（Ｄａ）を用いて、ゲーム処理を行うゲーム装置（５）である。ゲーム装置は、取得手段（ステップ５４、５８、および８７を実行するＣＰＵ１０、以下、単にステップ番号のみ記載する）、振り検出手段（Ｓ５５、Ｓ５６）、類型決定手段（Ｓ５９、Ｓ８１、Ｓ８２〜Ｓ８６）、オブジェクト移動手段（Ｓ８４〜Ｓ８６、Ｓ９０）、および表示制御手段（Ｓ９０）を備える。取得手段は、入力装置から加速度データを取得する。振り検出手段は、加速度データが示す加速度が所定の条件（ｓ＞２．５）を満たすとき、実空間において入力装置が振られたことを検出する。類型決定手段は、振り検出手段の検出後に取得手段が取得した加速度データが示す加速度のうち、多軸加速度センサの所定軸（Ｙ軸）方向の加速度を用いて、入力装置が実空間で振られるときの振り方の類型（振りタイプ）を決定する。オブジェクト移動手段は、類型決定手段が決定した類型に応じて、仮想ゲーム空間内において所定のオブジェクト（ＯＢＪ）を移動させる。表示制御手段は、オブジェクトが配置された仮想ゲーム空間を表示装置（２）に表示する。
【０００７】
第２の発明は、上記第１の発明において、類型決定手段は、振り検出手段の検出後の所定期間中（Ｎ＝１０）に取得手段が取得した加速度データが示す所定軸方向の加速度に応じて、類型を決定する。
【０００８】
第３の発明は、上記第１の発明において、類型決定手段は、実空間において入力装置が振られるときに加えられる当該入力装置本体のひねり状態に応じて予め分類された複数の類型（図１０〜図１２）から、所定軸方向の加速度を用いて１つの類型を選択して決定する。
【０００９】
第４の発明は、上記第３の発明において、類型決定手段は、予め設定された閾値（第１判定値、第２判定値）と所定軸方向の加速度とを比較し、当該比較結果に応じて複数の類型から１つの類型を選択する（Ｓ８２、Ｓ８３）。
【００１０】
第５の発明は、上記第３の発明において、類型決定手段は、入力装置本体にひねりが加えられていない状態で入力装置が振られるときに生じる所定軸方向の加速度を基準値（ａｃｃＹ＝０）として、当該基準値より大きい値である第１の閾値（１．０）と、当該基準値未満の値である第２の閾値（−１．６）とを、当該第１の閾値と当該基準値との差が当該第２の閾値と当該基準値との差と異なるように予め設定する。類型決定手段は、第１および第２の閾値と所定軸方向の加速度とを比較し、当該比較結果に応じて複数の類型から１つの類型を選択する。
【００１１】
第６の発明は、上記第３の発明において、所定軸方向は、入力装置本体がひねられる回転軸（Ｚ軸）の方向に対して垂直な方向である。
【００１２】
第７の発明は、上記第１の発明において、オブジェクト移動手段は、変化方向タイプ選択手段（Ｓ８４〜Ｓ８６）を含む。変化方向タイプ選択手段は、仮想ゲーム空間においてオブジェクトの移動方向が変化する方向を示す複数の変化方向タイプ（球種；ストレート、カーブ、シュート）から、類型決定手段が決定した類型に応じて１つの変化方向タイプを選択する。オブジェクト移動手段は、変化方向タイプ選択手段が選択した変化方向タイプに応じて、オブジェクトを仮想ゲーム空間内で移動させる。
【００１３】
第８の発明は、上記第１の発明において、加速度履歴記憶手段（Ｓ５４、Ｓ５８、Ｓ８７）および移動速度決定手段（Ｓ１０１〜Ｓ１０３）を、さらに備える。加速度履歴記憶手段は、取得手段が取得した加速度データの履歴を所定期間分（Ｎ＝１５）記憶する。移動速度決定手段は、加速度履歴記憶手段に記憶された加速度データの履歴が示す加速度のうち、所定軸方向の加速度（Ｙ軸）および所定軸方向とは異なる軸（Ｘ軸）方向の加速度の推移に基づいて、仮想ゲーム空間におけるオブジェクトの移動速度（球速）を決定する。オブジェクト移動手段は、移動速度決定手段が決定した移動速度に応じて、オブジェクトを移動させる。
【００１４】
第９の発明は、上記第１の発明において、入力装置は、プレイヤが押下することに応じて所定の操作データ（Ｄｂ）を出力する操作ボタン（７２）が設けられる。取得手段は、入力装置から操作データを、さらに取得する（Ｓ５１）。振り検出手段は、所定の操作ボタン（７２ｉ）が押下されたことを示す操作データが取得されている期間中に（Ｓ５３でＹｅｓ）、加速度データが示す加速度が所定の条件を満たすとき、入力装置が振られたことを検出する。
【００１５】
第１０の発明は、入力装置に備えられる多軸加速度センサから出力される加速度データを用いて、ゲーム処理を行うゲーム装置のコンピュータ（１０）に実行させるゲームプログラムである。ゲームプログラムは、取得手段、振り検出手段、類型決定手段、オブジェクト移動手段、および表示制御手段として、コンピュータを機能させる。取得手段は、入力装置から加速度データを取得する。振り検出手段は、加速度データが示す加速度が所定の条件を満たすとき、実空間において入力装置が振られたことを検出する。類型決定手段は、振り検出手段の検出後に取得手段が取得した加速度データが示す加速度のうち、多軸加速度センサの所定軸方向の加速度を用いて、入力装置が実空間で振られるときの振り方の類型を決定する。オブジェクト移動手段は、類型決定手段が決定した類型に応じて、仮想ゲーム空間内において所定のオブジェクトを移動させる。表示制御手段は、オブジェクトが配置された仮想ゲーム空間を表示装置に表示する。
【００１６】
第１１の発明は、上記第１０の発明において、類型決定手段は、振り検出手段の検出後の所定期間中に取得手段が取得した加速度データが示す所定軸方向の加速度に応じて、類型を決定する。
【００１７】
第１２の発明は、上記第１０の発明において、類型決定手段は、実空間において入力装置が振られるときに加えられる当該入力装置本体のひねり状態に応じて予め分類された複数の類型から、所定軸方向の加速度を用いて１つの類型を選択して決定する。
【００１８】
第１３の発明は、上記第１２の発明において、類型決定手段は、予め設定された閾値と所定軸方向の加速度とを比較し、当該比較結果に応じて複数の類型から１つの類型を選択する。
【００１９】
第１４の発明は、上記第１２の発明において、類型決定手段は、入力装置本体にひねりが加えられていない状態で入力装置が振られるときに生じる所定軸方向の加速度を基準値として、当該基準値より大きい値である第１の閾値と、当該基準値未満の値である第２の閾値とを、当該第１の閾値と当該基準値との差が当該第２の閾値と当該基準値との差と異なるように予め設定する。類型決定手段は、第１および第２の閾値と所定軸方向の加速度とを比較し、当該比較結果に応じて複数の類型から１つの類型を選択する。
【００２０】
第１５の発明は、上記第１２の発明において、所定軸方向は、入力装置本体がひねられる回転軸の方向に対して垂直な方向である。
【００２１】
第１６の発明は、上記第１０の発明において、オブジェクト移動手段は、変化方向タイプ選択手段を含む。変化方向タイプ選択手段は、仮想ゲーム空間においてオブジェクトの移動方向が変化する方向を示す複数の変化方向タイプから、類型決定手段が決定した類型に応じて１つの変化方向タイプを選択する。オブジェクト移動手段は、変化方向タイプ選択手段が選択した変化方向タイプに応じて、オブジェクトを仮想ゲーム空間内で移動させる。
【００２２】
第１７の発明は、上記第１０の発明において、加速度履歴記憶制御手段および移動速度決定手段として、さらにコンピュータを機能させる。加速度履歴記憶制御手段は、取得手段が取得した加速度データの履歴をメモリ（１２、３５）に所定期間分記憶する。移動速度決定手段は、メモリに記憶された加速度データの履歴が示す加速度のうち、所定軸方向の加速度および所定軸方向とは異なる軸方向の加速度の推移に基づいて、仮想ゲーム空間におけるオブジェクトの移動速度を決定する。オブジェクト移動手段は、移動速度決定手段が決定した移動速度に応じて、オブジェクトを移動させる。
【００２３】
第１８の発明は、上記第１０の発明において、入力装置は、プレイヤが押下することに応じて所定の操作データを出力する操作ボタンが設けられる。取得手段は、入力装置から操作データを、さらに取得する。振り検出手段は、所定の操作ボタンが押下されたことを示す操作データが取得されている期間中に、加速度データが示す加速度が所定の条件を満たすとき、入力装置が振られたことを検出する。
【発明の効果】
【００２４】
上記第１の発明によれば、多軸加速度センサを搭載した入力装置において、検出された所定軸方向の加速度を用いることによって、入力装置が実空間で振られるときの振り方の類型を決定することができる。そして、決定された類型を用いてオブジェクトを移動させることによって、プレイヤにとってより直感的で簡単な操作入力が実現される。
【００２５】
上記第２の発明によれば、類型の決定に必要な期間のみに生じた所定軸方向の加速度を用いて、入力装置の振りタイプが決定されるため、適切な類型判別が可能となる。例えば、入力装置の振り動作開始からボールをリリースするようなタイミングまでの期間を設定することによって、現実にボールを投じる際にボールに加わるひねりの類型を判別することが可能となる。
【００２６】
上記第３の発明によれば、入力装置にひねりを加えながら振るような操作だけの簡単な操作によって、直感的な入力を行うことができる。
【００２７】
上記第４の発明によれば、閾値と所定軸方向の加速度との比較によって類型が判別されるため、類型判別処理が容易となる。
【００２８】
上記第５の発明によれば、入力装置をひねりながら振る人間の腕の特性を考慮した判定が可能となる。
【００２９】
上記第６の発明によれば、入力装置本体をひねりながら振った場合、所定軸方向に生じる加速度がひねりに応じて変化をするため、所定軸方向に生じる加速度のみで当該ひねりの有無を容易に検出することができる。また、入力装置本体をひねる前の所定軸方向が振る方向に対しても垂直であれば、所定軸方向に生じる加速度がひねり方向に応じて異なった変化をするため、所定軸方向に生じる加速度のみで当該ひねり方向も容易に検出することができる。
【００３０】
上記第７の発明によれば、決定された入力装置の振りタイプに応じて、オブジェクトの移動タイプ（例えば、投手におけるボールの球種）が選択される。したがって、プレイヤが入力装置をひねりながら振ることによって、その振りタイプに応じてオブジェクトの移動変化方向を操作することができ、例えば、投手が変化球を投じるような操作が容易となる。
【００３１】
上記第８の発明によれば、入力装置を振るだけの簡単な操作によって、オブジェクトの移動方向と移動速度との両方を決定することができる。
【００３２】
上記第９の発明によれば、プレイヤが操作を行うとき以外で入力装置を振った場合の誤判定を防止することができる。また、プレイヤが入力装置を把持するとき、所定の操作ボタンを押下する必要があるため、プレイヤに対する入力装置の持ち方を自然と強制することができる。
【００３３】
また、本発明のゲームプログラムによれば、上述したゲーム装置と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００３４】
図１を参照して、本発明の一実施形態に係るゲームプログラムを実行する装置について説明する。以下、説明を具体的にするために、当該装置の一例の据置型のゲーム装置本体５を含むゲームシステムについて説明する。なお、図１は据置型のゲーム装置３を含むゲームシステム１の外観図であり、図２はゲーム装置本体５のブロック図である。以下、当該ゲームシステム１について説明する。
【００３５】
図１において、ゲームシステム１は、表示手段の一例の家庭用テレビジョン受像機（以下、モニタと記載する）２と、当該モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置本体５から出力された音声信号を音声出力するためのスピーカ２ａを備える。また、ゲーム装置３は、本願発明のゲームプログラムを記録した光ディスク４と、当該光ディスク４のゲームプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体５に与えるためのコントローラ７とを備えている。
【００３６】
また、ゲーム装置本体５は、無線コントローラモジュール１９（図２参照）を内蔵する。無線コントローラモジュール１９は、コントローラ７から無線送信されるデータを受信し、ゲーム装置本体５からコントローラ７へデータを送信して、コントローラ７とゲーム装置本体５とを無線通信によって接続する。さらに、ゲーム装置本体５には、当該ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。
【００３７】
また、ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ１７（図２参照）が搭載される。ゲーム装置本体５は、光ディスク４に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ２に表示する。また、ゲームプログラム等は、光ディスク４に限らず、フラッシュメモリ１７に予め記録されたものを実行するようにしてもよい。さらに、ゲーム装置本体５は、フラッシュメモリ１７に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２に表示することもできる。そして、ゲーム装置本体５のプレイヤは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を楽しむことができる。
【００３８】
コントローラ７は、無線コントローラモジュール１９を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて操作情報等の送信データを無線送信する。コントローラ７は、主にモニタ２の表示画面に表示されるゲーム空間に登場するプレイヤキャラクタ等を操作したりするための操作手段である。コントローラ７は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン（十字キーやスティック等を含む）が設けられている。また、後述により明らかとなるが、コントローラ７は、当該コントローラ７から見た画像を撮像する撮像情報演算部７４を備えている。また、撮像情報演算部７４の撮像対象の一例として、モニタ２の表示画面近傍に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。これらマーカ８Ｌおよび８Ｒは、それぞれモニタ２の前方に向かって例えば赤外光を出力する。また、コントローラ７は、ゲーム装置本体５の無線コントローラモジュール１９から無線送信された送信データを通信部７５で受信して、当該送信データに応じた音や振動を発生させることもできる。
【００３９】
次に、図２を参照して、ゲーム装置本体５の内部構成について説明する。図２は、ゲーム装置本体５の構成を示すブロック図である。ゲーム装置本体５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ／Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）１３、ディスクドライブ１４、およびＡＶ−ＩＣ（Ａｕｄｉｏ  Ｖｉｄｅｏ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１５等を有する。
【００４０】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については、後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置本体５の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ３５または外部メインメモリ１２に読み出したデータを書き込む。
【００４１】
また、システムＬＳＩ１１には、入出力プロセッサ３１、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）３２、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３３、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３４、および内部メインメモリ３５が設けられる。図示は省略するが、これらの構成要素３１〜３５は、内部バスによって互いに接続される。
【００４２】
ＧＰＵ３２は、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ３４は、ＧＰＵ３２がグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ３２は、ＶＲＡＭ３４に記憶されたデータを用いて画像データを作成する。
【００４３】
ＤＳＰ３３は、オーディオプロセッサとして機能し、内部メインメモリ３５や外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００４４】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、ＡＶコネクタ１６を介して、読み出した画像データをモニタ２に出力するとともに、読み出した音声データをモニタ２に内蔵されるスピーカ２ａに出力する。これによって、画像がモニタ２に表示されるとともに音がスピーカ２ａから出力される。
【００４５】
入出力プロセッサ（Ｉ／Ｏプロセッサ）３１は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ３１は、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、および外部メモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００４６】
入出力プロセッサ３１は、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ３１は、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介して当該データをネットワークに送信する。また、入出力プロセッサ３１は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２、および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０は、ゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置本体５と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体５を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００４７】
また、入出力プロセッサ３１は、アンテナ２３および無線コントローラモジュール１９を介して、コントローラ７から送信される操作データ等を受信し、内部メインメモリ３５または外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。なお、内部メインメモリ３５には、外部メインメモリ１２と同様に、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、ＣＰＵ１０のワーク領域やバッファ領域として用いられてもかまわない。
【００４８】
さらに、入出力プロセッサ３１には、拡張コネクタ２０および外部メモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ３１は、拡張コネクタ２０や外部メモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００４９】
また、ゲーム装置本体５（例えば、前部主面）には、当該ゲーム装置本体５の電源ボタン２４、ゲーム処理のリセットボタン２５、光ディスク４を脱着する投入口、およびゲーム装置本体５の投入口から光ディスク４を取り出すイジェクトボタン２６等が設けられている。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置本体５の各構成要素に対して、図示しないＡＣアダプタを経て電力が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置本体５の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００５０】
図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面前方から見た斜視図である。
【００５１】
図３および図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００５２】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００５３】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に４つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。
【００５４】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置本体５が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００５５】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置本体５の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００５６】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、無線コントローラモジュール１９からコントローラ７へ、複数のＬＥＤ７０２のうち、上記コントローラ種別に対応するＬＥＤを点灯させるための信号が送信される。
【００５７】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図５に示すスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００５８】
一方、ハウジング７１下面には、凹部が形成されている。ハウジング７１下面の凹部は、プレイヤがコントローラ７の前面をマーカ８Ｌおよび８Ｒに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００５９】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７０の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００６０】
ここで、以下の説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するＸＹＺ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をＺ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コントローラ７の上下方向をＹ軸とし、ハウジング７１の上面（操作ボタン７２ａが設けられた面）方向をＹ軸正方向とする。さらに、コントローラ７の左右方向をＸ軸とし、ハウジング７１の左側面（図３では表されていない側面）方向をＸ軸正方向とする。
【００６１】
次に、図５および図６を参照して、コントローラ７の内部構造について説明する。なお、図５は、コントローラ７の上筐体（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図６は、コントローラ７の下筐体（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図６に示す基板７００は、図５に示す基板７００の裏面から見た斜視図となっている。
【００６２】
図５において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図６、図７参照）に接続される。また、無線モジュール７５３（図７参照）およびアンテナ７５４によって、コントローラ７がワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。また、加速度センサ７０１は、操作ボタン７２ｄの左側の基板７００上（つまり、基板７００の中央部ではなく周辺部）に設けられる。したがって、加速度センサ７０１は、コントローラ７の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ７の動きを良好な感度でゲーム装置本体５等が判定することができる。
【００６３】
一方、図６において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置本体５から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。
【００６４】
そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。バイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４は、基板７００等に形成された配線によってマイコン７５１と接続され、ゲーム装置本体５から送信された振動データに応じてその作動をオン／オフする。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【００６５】
次に、図７を参照して、コントローラ７の内部構成について説明する。なお、図７は、コントローラ７の構成を示すブロック図である。
【００６６】
図７において、コントローラ７は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。
【００６７】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。
【００６８】
コントローラ７は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向（図３に示すＹ軸）、左右方向（図３に示すＸ軸）、および前後方向（図３に示すＺ軸）で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、少なくとも２軸方向に沿った直線加速度を検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であることが好ましい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて、加速度センサ７０１が提供されてもよい。
【００６９】
加速度センサ７０１に用いられるような加速度検出手段は、加速度センサ７０１の持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、それら３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００７０】
しかしながら、加速度センサ７０１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ１０）またはコントローラのプロセッサ（例えばマイコン７５１）等のコンピュータが処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【００７１】
例えば、加速度センサ７０１を搭載するコントローラ７が静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサ７０１によって検出される加速度が重力加速度のみであるとして処理する場合）、コントローラ７が現実に静的な状態であれば、検出された加速度に基づいてコントローラ７の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ７０１の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に１Ｇ（重力加速度）が作用しているか否かだけでコントローラ７が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コントローラ７が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ７０１の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ７がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ７０１からの出力に基づいて、プロセッサがコントローラ７の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ７０１からの出力に基づいて、おおよそのコントローラ７の傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１をプロセッサと組み合わせて用いることによって、コントローラ７の傾き、姿勢、または位置を判定することができる。
【００７２】
一方、加速度センサ７０１が動的な状態であることを前提とする場合には、当該加速度センサ７０１が重力加速度成分に加えて加速度センサ７０１の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コントローラ７の動き方向等を知ることができる。具体的には、加速度センサ７０１を備えるコントローラ７がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７の様々な動きおよび／または位置を算出することができる。なお、加速度センサ７０１が動的な状態であることを前提とする場合であっても、加速度センサ７０１の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコントローラ７の傾きを知ることが可能である。
【００７３】
他の実施例では、加速度センサ７０１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ７０１が静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。加速度センサ７０１でそれぞれ検知された加速度を示すデータは、通信部７５に出力される。
【００７４】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置本体５からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置本体５から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置本体５から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。
【００７５】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの３軸方向の加速度信号（Ｘ、Ｙ、およびＺ軸方向加速度データ）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、処理結果データ）を無線コントローラモジュール１９へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から無線コントローラモジュール１９への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、無線コントローラモジュール１９への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥース（登録商標）の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からのＸ、Ｙ、およびＺ軸方向加速度データ、および撮像情報演算部７４からの処理結果データがコントローラ７から送信される。そして、ゲーム装置本体５の無線コントローラモジュール１９でその電波信号を受信し、ゲーム装置本体５で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ、および処理結果データ）を取得する。そして、ゲーム装置本体５のＣＰＵ１０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００７６】
次に、ゲーム装置本体５が行う具体的な処理を説明する前に、本ゲーム装置本体５で行うゲームの概要について説明する。図８に示すように、コントローラ７は、全体として大人や子供の片手で把持可能な大きさである。そして、ゲームシステム１でコントローラ７を用いてゲームをプレイするためには、プレイヤが片手でコントローラ７を把持し、コントローラ７を振り動かす動作を行う。例えば、図８においては、プレイヤがコントローラ７を把持して、投手の投球モーションのように上から下へ振り下ろしている様子を示している。このようなプレイヤがコントローラ７を振り下ろす動作に応じて、コントローラ７に加わった振り下ろし時のひねり方向等をゲーム装置本体５が判定し、当該ひねり方向を利用したゲーム処理が行われる。
【００７７】
例えば、図９に示すように、プレイヤの人差し指や中指で操作ボタン７２ｉ（Ｂボタン）を押下しながら、コントローラ７を把持して振り下ろす操作が行われる。このとき、プレイヤの親指は、自然とコントローラ７の上面側（例えば、十字キー７２ａ付近）に位置することになる。このコントローラ７を把持する状態を、本実施形態でコントローラ７を操作する際の基準状態とする。なお、図９に示すコントローラ７の基準状態は、プレイヤがコントローラ７を右手で把持して振り上げたときに当該プレイヤの正面から見た状態を示している。一方、プレイヤがコントローラ７を左手で把持した基準状態は、図９に示した状態を左右反転させた状態となり、プレイヤが人差し指や中指で操作ボタン７２ｉを押下しながら、親指が上面側に位置することは、右手の場合と同様である。
【００７８】
次に、図１０〜図１２を参照して、プレイヤがひねりながらコントローラ７を振り下ろした際の状態について説明する。なお、図１０は、プレイヤが基準状態からひねらずにコントローラ７を右手で振り下ろした際の状態の一例を示す図である。図１１は、プレイヤが基準状態から一方方向にひねりながらコントローラ７を右手で振り下ろした際の状態の一例を示す図である。図１２は、プレイヤが基準状態から他方方向にひねりながらコントローラ７を右手で振り下ろした際の状態の一例を示す図である。なお、以下の説明において、加速度センサ７０１の特性として、加速度センサ７０１から出力されるデータ（以降、加速度データと呼ぶ）は、当該加速度センサ７０１に加えられる加速度（つまり実際に加速する方向）とは真逆方向の加速度を示すデータが出力されるものとする。すなわち、加速度センサ７０１の加速による慣性力に応じた加速度データが出力されるものである。また、コントローラ７静止時に加速度センサ７０１に加わる重力加速度は、重力方向と同じ方向の加速度データとして出力されることになる。
【００７９】
図１０〜図１２は、プレイヤがコントローラ７を上記基準状態で把持しながら、投手の投球モーションをするようにコントローラ７を振り下ろして操作している。具体的には、プレイヤは、いわゆる野球の投法におけるオーバースローでコントローラ７を振り下ろしており、当該オーバースローにおいてボールをリリースするとき、またはリリースした後のコントローラ７の前面の様子を示した例である。本実施例においては、誤検出を防ぐために振り下ろしが十分な速度に達してから検出を行うようにするので、例えばリリース前後の期間において検出が行われるようになる。また、プレイヤがボールをリリースしたつもりになるタイミングは個人差があると考えられるが、いずれにしても実際にコントローラ７をリリースするわけではないので、リリース後の手の動きもコントローラ７に反映される。したがって、必要に応じてリリース後に対応する期間がひねりの検出に含まれていてもよい。ここで、コントローラ７を把持して振った場合、振り始めは加速してやがて減速となる。したがって、コントローラ７には、振り始めで振っている方向と同じ方向の加速度が生じた後、徐々に加速度の大きさが減少して、振っている方向とは逆の方向に加速度が生じる。図１０〜図１２においては、ボールリリースするとき、またはボールリリースした後であるのでコントローラ７は、振り下ろし動作における減速中である。したがって、コントローラ７には、プレイヤの後方への加速度（すなわち、振っている方向とは逆方向の加速度）が加えられることになる。このとき加速度センサ７０１の出力である加速度データは、真逆方向を示すデータを出力するため、図示するように進行方向（振り方向）、つまりＸ軸正方向の出力となる。また、当該動作を行っている場合は、コントローラ７を振り下ろしているので、重力加速度の図面下方向（図１０においてはＸ軸正方向）の成分も含まれることになる。
【００８０】
図１０において、プレイヤは、コントローラ７をひねらずに上記基準状態を維持して振り下ろしている。具体的には、右投手が直球（ストレートボール）を投じるようにコントローラ７を上記基準状態のまま振り下ろすような操作である。例えば、図１０に示すように、常にコントローラ７がＸ軸正方向（図３等参照）に向かって振り動かされている状態となる。この場合、コントローラ７が振り動かされることによって生じる加速度は、常にＸ軸に沿った方向へ作用する。ここで、コントローラ７を振り動かした場合、遠心力や重力加速度がコントローラ７のＺ軸方向に作用するが、説明を簡単にするためにＺ軸方向の加速度を無視して説明する。具体的には、コントローラ７の振り始めの加速時にはＸ軸正方向の加速度（出力される加速度データはＸ軸負方向）が、コントローラ７の振り終わりの減速時にはＸ軸負方向の加速度（出力される加速度データはＸ軸正方向）が生じる。なお、プレイヤが左手にコントローラ７を把持して、左投手が直球を投じるように振り下ろした場合、コントローラ７のＸ軸に関して逆方向の加速度データが出力される。
【００８１】
図１１において、プレイヤは、右投手がカーブボールを投じるようにコントローラ７を上記基準状態からひねりながら振り下ろしている。ここで、カーブボールは、ボールを右回転させながら投じる球種であり、右投手ではコントローラ７のＺ軸を中心としてＺ軸正方向に見て右にひねりながら振り下ろすことになる。なお、図１１は、コントローラ７をＺ軸負方向から見た前面を示しているため、左へひねられているように示されている。この場合、コントローラ７が振り動かされることによって出力される加速度データは、Ｘ軸正方向からＹ軸負方向へ順次その方向を変化させる。つまり、右投手がカーブボールを投じるように振り下ろされた場合、コントローラ７のＹ軸正方向へ加速度が生じて、加速度センサ７０１からＹ軸負方向の加速度データが出力される。なお、プレイヤが左手にコントローラ７を把持して、左投手がカーブボールを投じるように振り下ろした場合、その加速度データがＸ軸負方向からＹ軸負方向へ順次その方向を変化させて作用する。つまり、左投手がカーブボールを投じるように振り下ろされた場合も、コントローラ７のＹ軸正方向へ加速度が生じて、加速度センサ７０１からＹ軸負方向の加速度データが出力される。
【００８２】
図１２において、プレイヤは、右投手がシュートボールを投じるようにコントローラ７を上記基準状態からひねりながら振り下ろしている。ここで、シュートボールは、上記カーブボールとは反対にボールを左回転させながら投じる球種であり、右投手ではコントローラ７のＺ軸を中心としてＺ軸正方向に見て左にひねりながら振り下ろすことになる。なお、図１２は、コントローラ７をＺ軸負方向から見た前面を示しているため、右へひねられているように示されている。この場合、コントローラ７が振り動かされることによって出力される加速度データは、Ｘ軸正方向からＹ軸正方向へ順次その方向を変化させる。つまり、右投手がシュートボールを投じるように振り下ろされた場合、コントローラ７のＹ軸負方向へ加速度が生じて、加速度センサ７０１からＹ軸正方向の加速度データが出力される。なお、プレイヤが左手にコントローラ７を把持して、左投手がシュートボールを投じるように振り下ろした場合、その加速度データがＸ軸負方向からＹ軸正方向へ順次その方向を変化させる。つまり、左投手がシュートボールを投じるように振り下ろされた場合も、コントローラ７のＹ軸負方向へ加速度が生じて、加速度センサ７０１からＹ軸正方向の加速度データが出力される。
【００８３】
図１３は、コントローラ７の振りタイプに応じて行われるゲーム処理の一例を示す図である。ゲーム処理の一例として、モニタ２に表示されるオブジェクトＯＢＪの移動が、上記ひねり方向に応じて制御される。具体的には、オブジェクトＯＢＪが仮想ゲーム空間において移動する方向が変化する種別を示す複数の変化方向タイプを予め設定しており、閾値と加速度データとの比較結果を用いて選択されたコントローラ７の振りタイプに応じて、当該変化方向タイプを選択する。
【００８４】
例えば、図１３においては、仮想ゲーム空間に登場する右投手の投手キャラクタＰがボールオブジェクトＯＢＪを投じている様子を、捕手側から見たゲーム画像を示している。そして、選択された球種（変化方向タイプ）に応じて、ボールオブジェクトＯＢＪが仮想ゲーム空間を移動する軌道Ｔの例が、ボールオブジェクトＯＢＪ１〜ＯＢＪ３それぞれの軌道Ｔ１〜軌道Ｔ３として図示されている。
【００８５】
例えば、右投手が直球を投じるようにコントローラ７が振り下ろされた場合（図１０参照）、ストレートボールの球種を示す変化方向タイプが選択される。そして、投手キャラクタＰは、仮想ゲーム空間において直線状に移動（軌道Ｔ１）するボールオブジェクトＯＢＪ１を投じ、あたかも投手キャラクタＰが直球を投じたようなゲーム画像が表示される。
【００８６】
また、右投手がカーブボールを投じるようにコントローラ７が振り下ろされた場合（図１１参照）、カーブボールの球種を示す変化方向タイプが選択される。そして、投手キャラクタＰは、仮想ゲーム空間の投手キャラクタＰから見て、左へ曲がるように移動（軌道Ｔ２；図１３は捕手側から見たゲーム画像であるため、右へ曲がって移動している）するボールオブジェクトＯＢＪ２を投じ、あたかも投手キャラクタＰがカーブを投じたようなゲーム画像が表示される。
【００８７】
さらに、右投手がシュートボールを投じるようにコントローラ７が振り下ろされた場合（図１２参照）、シュートボールの球種を示す変化方向タイプが選択される。そして、投手キャラクタＰは、仮想ゲーム空間の投手キャラクタＰから見て、右へ曲がるように移動（軌道Ｔ３；図１３は捕手側から見たゲーム画像であるため、左へ曲がって移動している）するボールオブジェクトＯＢＪ３を投じ、あたかも投手キャラクタＰがシュートを投じたようなゲーム画像が表示される。
【００８８】
このように、コントローラ７を操作するプレイヤは、振りながらひねる方向に応じて、仮想ゲーム空間において変化球を投じることができる。なお、上述した例は、右投手、すなわちプレイヤが右手でコントローラ７を把持する場合を主に説明したが、左投手でも同様の処理が可能である。例えば、左投手、すなわちプレイヤが左手でコントローラ７を把持する場合は、ゲーム処理の初期設定等によって仮想ゲーム空間に左投手の投手キャラクタＰを登場させる。そして、カーブボールの球種を示す変化方向タイプが選択されたとき、仮想ゲーム空間の投手キャラクタＰから見て右へ曲がるように移動するボールオブジェクトＯＢＪを表示する。また、シュートボールの球種を示す変化方向タイプが選択されたとき、仮想ゲーム空間の投手キャラクタＰから見て左へ曲がるように移動するボールオブジェクトＯＢＪを表示する。このように、左投手の場合、選択された球種に応じてオブジェクトＯＢＪが変化する方向を右投手と逆にすれば、上述した右投手と同様のゲーム処理が可能となる。
【００８９】
次に、ゲームシステム１において行われるゲーム処理の詳細を説明する。まず、図１４を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図１４は、ゲーム装置本体５の外部メインメモリ１２および／または内部メインメモリ３５（以下、２つのメインメモリを総称して、単にメインメモリと記載する）に記憶される主なデータを示す図である。
【００９０】
図１４に示すように、メインメモリには、加速度データＤａ、キーデータＤｂ、加速度ベクトルサイズデータＤｃ、加速度累積データＤｄ、加速度平均データＤｅ、球種データＤｆ、差分ベクトルデータＤｇ、最大差分ベクトルサイズデータＤｈ、球速設定テーブルＤｉ、球速データＤｊ、射出方向設定テーブルＤｋ、射出方向データＤｌ、コースデータＤｍ、ボール回転量データＤｎ、移動ベクトルデータＤｏ、および画像データＤｐ等が記憶される。なお、メインメモリには、図１４に示す情報に含まれるデータの他、ゲームに登場する他のオブジェクト等に関するデータや仮想ゲーム空間に関するデータ（背景のデータ等）等、ゲーム処理に必要なデータが記憶される。
【００９１】
加速度データＤａは、コントローラ７に生じた加速度ａｃｃを示すデータであり、コントローラ７から送信データとして送信されてくる一連の操作情報に含まれる加速度データが所定期間分記憶される。この加速度データＤａには、加速度センサ７０１がＸ軸成分に対して検出した加速度ａｃｃＸを示すＸ軸方向加速度データＤａ１、Ｙ軸成分に対して検出した加速度ａｃｃＹを示すＹ軸方向加速度データＤａ２、およびＺ軸成分に対して検出した加速度ａｃｃＺを示すＺ軸方向加速度データＤａ３が含まれる。なお、本実施例においては、上述のとおり、加速度センサ７０１から出力される加速度データは、実際に加速度センサ７０１に作用する振り下ろし時の加速度とは逆方向のベクトルデータとして出力されており、加速度データＤａに格納される加速度データも同様である。つまり、加速度ａｃｃＸ、ａｃｃＹ、およびａｃｃＺは、実際にコントローラ７を振り下ろすときに作用する加速度とは正負逆の値となっている。キーデータＤｂは、上記操作部７２に対する操作に応じた操作信号が示すデータであり、コントローラ７から送信データとして送信されてくる一連の操作情報に含まれるキーデータが記憶される。
【００９２】
ここで、ゲーム装置本体５に備える無線コントローラモジュール１９は、コントローラ７から所定周期（例えば、１／２００秒毎）に送信される操作情報に含まれる加速度データおよびキーデータを受信し、無線コントローラモジュール１９に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられた最新の加速度データおよびキーデータがゲーム処理周期である１フレーム毎（例えば、１／６０秒毎）に読み出されて、メインメモリの加速度データＤａおよびキーデータＤｂが更新される。なお、本実施形態では、加速度データＤａは、コントローラ７から送信された過去所定フレーム分の加速度データが適宜更新されて格納される。
【００９３】
なお、後述する処理フローでは、加速度データＤａおよびキーデータＤｂがゲーム処理周期である１フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コントローラ７からの送信周期毎に加速度データＤａおよびキーデータＤｂを更新し、当該更新された加速度データおよびキーデータをゲーム処理周期毎に利用する態様でもかまわない。この場合、加速度データＤａに記憶する加速度データＤａ１〜Ｄａ３やキーデータＤｂを更新する周期と、ゲーム処理周期とが異なることになる。
【００９４】
加速度ベクトルサイズデータＤｃは、コントローラ７に生じている加速度の大きさｓを示すデータであり、最新のＸ軸方向加速度データＤａ１、Ｙ軸方向加速度データＤａ２、およびＺ軸方向加速度データＤａ３を用いて算出される。加速度累積データＤｄは、Ｙ軸方向加速度ａｃｃＹを、所定処理回数分累積した累積値Ｙｔｏｔａｌを示すデータである。加速度平均データＤｅは、加速度累積データＤｄに格納された値を用いて算出される、Ｙ軸方向加速度ａｃｃＹの平均値ａｖｇＹを示すデータである。
【００９５】
球種データＤｆは、コントローラ７の動きに応じて選択される球種を示すデータである。本実施形態では、球種データＤｆは、平均値ａｖｇＹに応じて、ストレート、カーブ、およびシュートの何れかが選択される。
【００９６】
差分ベクトルデータＤｇは、Ｘ軸方向加速度ａｃｃＸおよびＹ軸方向加速度ａｃｃＹの変化を示す差分ベクトルを示すデータである。最大差分ベクトルサイズデータＤｈは、所定期間内に算出された差分ベクトルのうち、最大の差分ベクトルの大きさＬｍａｘを示すデータである。球速設定テーブルＤｉは、投手キャラクタＰが投じるボールの球速レベルを、大きさＬｍａｘに応じて予め設定したデータを記述したデータテーブルである。なお、球速設定テーブルＤｉに記憶されるデータテーブルの詳細な内容については、後述する。球速データＤｊは、球速レベルに応じて決定される球速を示すデータである。
【００９７】
射出方向設定テーブルＤｋは、投手キャラクタＰがボールを投じる射出方向Ｄを、選択された球種および投球するコースの組み合わせに応じて予め設定したデータを記述したデータテーブルである。なお、射出方向設定テーブルＤｋに記憶されるデータテーブルの詳細な内容については、後述する。射出方向データＤｌは、射出方向設定テーブルを参照して、球種および投球するコースの組み合わせに応じて選択された射出方向Ｄを示すデータである。コースデータＤｍは、プレイヤが十字キー７２ｉを押下することによって決定される投球コース（例えば、内、中、外）を示すデータである。
【００９８】
ボール回転量データＤｎは、仮想ゲーム空間に投じられた際のボールの回転量（回転方向）を示すデータであり、選択された球種に応じて設定される。移動ベクトルデータＤｏは、仮想ゲーム空間に投じられた際のボールの移動ベクトルを示すデータであり、前回の移動ベクトル、球速、および回転量に応じて順次算出される。
【００９９】
画像データＤｐは、ボールオブジェクト画像データＤｐ１および投手キャラクタ画像データＤｐ２等を含んでいる。ボールオブジェクト画像データＤｐ１は、仮想ゲーム空間にボールオブジェクトＯＢＪを配置してゲーム画像を生成するためのデータである。投手キャラクタ画像データＤｐ２は、仮想ゲーム空間に投手キャラクタＰを配置してゲーム画像を生成するためのデータである。
【０１００】
次に、図１５〜図１７を参照して、ゲーム装置本体５において行われるゲーム処理の詳細を説明する。なお、図１５は、ゲーム装置本体５において実行されるゲーム処理の流れを示す前半のフローチャートである。図１６は、ゲーム装置本体５において実行されるゲーム処理の流れを示す後半のフローチャートである。図１７は、図１６におけるステップ９１のオブジェクト移動表示処理の詳細な動作を示すサブルーチンである。なお、図１５〜図１７に示すフローチャートにおいては、ゲーム処理のうち、コントローラ７を振り下ろすことに応じた投球が行われる処理について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図１５〜図１７では、ＣＰＵ１０が実行する各ステップを「Ｓ」と略称する。
【０１０１】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ１０は、ブートＲＯＭ（例えば、ＲＯＭ／ＲＴＣ１３）に記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１５〜図１７に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【０１０２】
図１５において、ＣＰＵ１０は、ゲーム処理の初期設定を行い（ステップ５０）、次のステップに処理を進める。例えば、ＣＰＵ１０は、上記ステップ５０における初期設定では、当該ゲーム処理で用いる各パラメータを初期化する。また、ＣＰＵ１０は、プレイヤがコントローラ７を把持する手（右手または左手）を設定し、その設定に応じて投手キャラクタＰを右投手または左投手に設定する。また、ＣＰＵ１０は、仮想ゲーム空間の設定や投手キャラクタＰ等の各種ゲームオブジェクトの配置等の初期設定を行う。
【０１０３】
次に、ＣＰＵ１０は、キーデータを取得する（ステップ５１）。そして、ＣＰＵ１０は、取得したキーデータを用いて、コース設定処理を行い（ステップ５２）、次のステップに処理を進める。例えば、ＣＰＵ１０は、プレイヤが十字キー（操作ボタン７２ａ）の上下方向を押下したことを示すキーデータを取得した場合、投球コースを「中」に設定してコースデータＤｍを更新する。また、ＣＰＵ１０は、プレイヤが十字キーの左方向を押下したことを示すキーデータを取得した場合、投球コースを「内」に設定してコースデータＤｍを更新する。また、ＣＰＵ１０は、プレイヤが十字キーの右方向を押下したことを示すキーデータを取得した場合、投球コースを「外」に設定してコースデータＤｍを更新する。なお、これらの「内」「外」の表現は、捕手側から見たゲーム画像がモニタ２に表示された状態（図１３参照）で右バッターが登場した状況を想定している。
【０１０４】
次に、ＣＰＵ１０は、取得したキーデータを用いて、コントローラ７のＢボタン（操作ボタン７２ｉ）が押下されたか否かを判断する（ステップ５３）。そして、ＣＰＵ１０は、Ｂボタンが押下された場合、次のステップ５４に処理を進める。一方、ＣＰＵ１０は、Ｂボタンが押下されていない場合、上記ステップ５１に戻って処理を繰り返す。
【０１０５】
ステップ５４において、ＣＰＵ１０は、コントローラ７から加速度データを取得して、次のステップに処理を進める。例えば、ＣＰＵ１０は、コントローラ７から受信した最新の操作情報に含まれる加速度データが示す加速度を加速度データＤａに格納する。具体的には、コントローラ７から受信した操作情報に含まれるＸ軸方向の加速度データが、加速度ａｃｃＸとしてＸ軸方向加速度データＤａ１に格納される。また、最新の操作情報に含まれるＹ軸方向の加速度データが、加速度ａｃｃＹとしてＹ軸方向加速度データＤａ２に格納される。そして、最新の操作情報に含まれるＺ軸方向の加速度データが、加速度ａｃｃＺとしてＺ軸方向加速度データＤａ３に格納される。
【０１０６】
次に、ＣＰＵ１０は、加速度データＤａに格納された最新の加速度データを参照し、加速度ベクトルの大きさｓを算出し（ステップ５５）、大きさｓが閾値（例えば、２．５Ｇ）より大きいか否かを判断する（ステップ５６）。そして、ＣＰＵ１０は、大きさｓが閾値より大きい場合、次のステップ５７に処理を進める。一方、ＣＰＵ１０は、大きさｓが閾値以下の場合、処理を上記ステップ５４に戻して繰り返す。具体的には、ＣＰＵ１０は、上記ステップ５５において、加速度データＤａに格納された加速度ａｃｃＸ、ａｃｃＹ、およびａｃｃＺを用いて、加速度ベクトルの大きさｓを
【数１】
0005420824.tif 000002
で算出する。次に、ＣＰＵ１０は、算出された大きさｓを用いて、加速度ベクトルサイズデータＤｃを更新する。
【０１０７】
なお、上記ステップ５５およびステップ５６の処理は、プレイヤがコントローラ７のＢボタン（操作ボタン７２ｉ）を押下しながら振り下ろす動作が十分な速度まで到達したことを検出するための処理であり、コントローラ７に生じる加速度の大きさが閾値を超えた場合に、以降の処理を開始している。上述した例では、コントローラ７に生じる３軸方向（ＸＹＺ軸方向）における加速度の大きさを基準として振り下ろし判定を行っているが、他の加速度の大きさを基準として判定を行ってもかまわない。例えば、コントローラ７振り下ろしによる遠心力の成分は、主にＺ軸正方向成分として検出されると想定される（遠心力成分は、遠心力が作用する方向と同じ方向の加速度データとして出力される）ので、Ｚ軸方向加速度データＤａ３に格納された最新の加速度ａｃｃＺの大きさが閾値（例えば、１．２Ｇ）より大きいか否かを、振り下ろし判定の基準にしてもかまわない。
【０１０８】
また、上述した振り操作の判定は、プレイヤがコントローラ７のＢボタンを押下した状態でのみ行われる。これは、第１の目的として、プレイヤが投球操作を行うとき以外でコントローラ７を振った場合の誤判定を防止するためである。また、第２の目的として、プレイヤが投球操作を行うときは、例えば人差し指や中指でＢボタンを押下する必要があるため、自然とプレイヤがコントローラ７を上記基準状態で把持することになる。つまり、プレイヤに対して、コントローラ７を上記基準状態で把持することを強制することができる。このことによって、ボールを握っているのに近い感覚を得ることができるが、他の実施例においては、当該ボタン操作に関する判断を行わないようにしてもよい。
【０１０９】
ステップ５７において、ＣＰＵ１０は、初期化処理を行って、次のステップに処理を進める。具体的には、ＣＰＵ１０は、所定処理回数分（例えば、１５回分）のＸ軸およびＹ軸方向加速度データを記憶するバッファをメインメモリ内（例えば、加速度データＤａ内）に確保する。また、ＣＰＵ１０は、処理回数をカウントするためのループ数Ｎを１に初期化する。さらに、ＣＰＵ１０は、累積値Ｙｔｏｔａｌを０に初期化して加速度累積データＤｄを更新する。
【０１１０】
次に、ＣＰＵ１０は、コントローラ７から加速度データを取得し（ステップ５８）、次のステップに処理を進める。例えば、ＣＰＵ１０は、コントローラ７から受信した最新の操作情報に含まれる加速度データが示す加速度を加速度データＤａに格納する。ここで、加速度データＤａには、少なくともＸ軸方向加速度データＤａ１およびＹ軸方向加速度データＤａ２について、上記所定処理回数分の加速度データが格納される。なお、ステップ５８における加速度データの取得処理は、上記ステップ５４と同様であるため、詳細な説明を省略する。
【０１１１】
次に、ＣＰＵ１０は、上記ステップ５８で取得した最新のＹ軸方向加速度ａｃｃＹを順次累積した累積値Ｙｔｏｔａｌを算出し、加速度累積データＤｄを更新して（ステップ５９）、次のステップに処理を進める。例えば、ＣＰＵ１０は、前回の処理で算出された累積値Ｙｔｏｔａｌ＿ｏｌｄを用いて、新たな累積値Ｙｔｏｔａｌ＿ｎｅｗを
Ｙｔｏｔａｌ＿ｎｅｗ＝Ｙｔｏｔａｌ＿ｏｌｄ＋ａｃｃＹ
で算出する。
【０１１２】
次に、ＣＰＵ１０は、現在のループ数Ｎが１０であるか否かを判断する（ステップ６０）。そして、ＣＰＵ１０は、Ｎ＝１０である場合、処理を次のステップ８１（図１６参照）に進める。一方、ＣＰＵ１０は、Ｎ＜１０である場合、ループ数Ｎに１を加算して（ステップ６１）、処理を上記ステップ５８に戻して繰り返す。
【０１１３】
ステップ８１（図１６）において、ＣＰＵ１０は、加速度累積データＤｄに格納されている累積値Ｙｔｏｔａｌを用いて、Ｙ軸方向加速度ａｃｃＹの平均値ａｖｇＹを算出し、次のステップに処理を進める。具体的には、ＣＰＵ１０は、平均値ａｖｇＹを
ａｖｇＹ＝Ｙｔｏｔａｌ／Ｎ
で算出し、加速度平均データＤｅを更新する。
【０１１４】
次に、ＣＰＵ１０は、上記ステップ８１で算出した平均値ａｖｇＹが、第１判定値（例えば、−１．６Ｇ）より小さいか否か（ステップ８２）、および第２判定値（例えば、１．０Ｇ）より大きいか否か（ステップ８３）を判断する。そして、ＣＰＵ１０は、平均値ａｖｇＹが上記第１判定値より小さい場合、球種をカーブに決定して球種データＤｆを更新し（ステップ８４）、次のステップ８７に処理を進める。また、ＣＰＵ１０は、平均値ａｖｇＹが上記第２判定値より大きい場合、球種をシュートに決定して球種データＤｆを更新し（ステップ８５）、次のステップ８７に処理を進める。さらに、ＣＰＵ１０は、平均値ａｖｇＹが上記第１判定値以上で上記第２判定値以下の場合、球種をストレートに決定して球種データＤｆを更新し（ステップ８６）、次のステップ８７に処理を進める。
【０１１５】
ここで、上記ステップ８１〜ステップ８６の処理における球種決定方法について説明する。まず、上記ステップ８１で算出される平均値ａｖｇＹは、コントローラ７の振り下ろし操作中の所定期間（例えば、１０フレーム分）に生じたＹ軸方向加速度ａｃｃＹの平均値である。上記所定期間は、プレイヤがコントローラ７を把持して投球するモーションを開始し、振り速度が所定の速度を超えてからの期間に設定される。例えば、プレイヤが投球するモーションを開始してから振り下ろし操作が終了するまでの全期間を上記所定期間とした場合、当該モーションにおけるフォロースルー時のひねり等、現実の変化球を投じる際にボールに与えられるひねりとは無関係の期間が含まれてしまう。一方、本実施形態で用いられる所定期間は、例えば振り下ろし操作開始後、十分な速度で振りが行われていると判断される時点からボールをリリースするとき（またはリリースした後を含んでもよい）のようなタイミングまでの期間を想定し、現実にボールを投じる際にボールに加わるひねりの判定に適した期間に設定される。このように、平均値ａｖｇＹは、ボールを投じる際にボールに加わるひねりの判定に適した期間に生じたＹ軸方向加速度ａｃｃＹの平均値である。
【０１１６】
また、本実施形態では、所定軸方向の加速度（Ｙ軸方向加速度ａｃｃＹ）の平均値に応じて、振り操作中のコントローラ７のひねり状態を示す複数の類型（ひねり無しでの振り、一方方向へひねりながらの振り、他方方向へひねりながらの振り）から、１つの類型（振りタイプ）を選択している。そして、選択された振りタイプに応じて、オブジェクトＯＢＪが仮想ゲーム空間において移動する方向が変化する種別を示す複数の変化方向タイプ（ストレート、カーブ、シュート）から、１つの変化方向タイプが決定される。
【０１１７】
例えば、図１０を用いて説明したように、プレイヤがストレートボールを投じるように右手でコントローラ７を振り下ろしたとき、そのコントローラ７の動きによって、主にＸ軸正方向の加速度データが出力される。つまり、プレイヤがストレートボールを投じるときは、Ｙ軸方向加速度ａｃｃＹが０付近を推移する。したがって、Ｙ軸方向加速度ａｃｃＹの平均値が０付近、すなわち−１．６Ｇ（第１判定値）≦ａｖｇＹ≦１．０Ｇ（第２判定値）の場合、コントローラ７を振る類型が、極端なひねりを加えることなくコントローラ７を振る類型（ひねり無しでの振り）であると判定することができる。そして、このようなコントローラ７の振りタイプが判定されたことに応じて、球種がストレートに決定される。
【０１１８】
また、図１１を用いて説明したように、プレイヤがカーブボールを投じるように右手でコントローラ７を振り下ろしたとき、そのコントローラ７の動きによって出力される加速度データは、Ｘ軸正方向からＹ軸負方向に変化する。つまり、プレイヤがカーブボールを投じるときは、Ｙ軸方向加速度ａｃｃＹが負の値へ推移する。したがって、Ｙ軸方向加速度ａｃｃＹの平均値が負の値、すなわち平均値ａｖｇＹ＜−１．６Ｇ（第１判定値）の場合、コントローラ７を振る類型が、一方方向へのひねり回転が加えられながらコントローラ７を振る類型（一方方向へひねりながらの振り）であると判定することができる。そして、このようなコントローラ７の振りタイプが判定されたことに応じて、球種がカーブに決定される。
【０１１９】
また、図１２を用いて説明したように、プレイヤがシュートボールを投じるように右手でコントローラ７を振り下ろしたとき、そのコントローラ７の動きによって出力される加速度データは、Ｘ軸正方向からＹ軸正方向に変化する。つまり、プレイヤがシュートボールを投じるときは、Ｙ軸方向加速度ａｃｃＹが正の値へ推移する。したがって、Ｙ軸方向加速度ａｃｃＹの平均値が正の値、すなわち平均値ａｖｇＹ＞１．０Ｇ（第２判定値）の場合、コントローラ７を振る類型が、他方方向へのひねり回転が加えられながらコントローラ７を振る類型（他方方向へひねりながらの振り）であると判定することができる。そして、このようなコントローラ７の振りタイプが判定されたことに応じて、球種がシュートに決定される。
【０１２０】
上述した球種判定原理は、右投手を想定して行ったが、左投手でも同様の判定基準で球種判定が可能である。上述したようにプレイヤがストレートボールを投じるように左手でコントローラ７を振り下ろしたとき、そのコントローラ７の動きによって出力される加速度データは、主にＸ軸負方向に出力される。つまり、プレイヤが左手でストレートボールを投じるときも、Ｙ軸方向加速度ａｃｃＹが０付近を推移する。したがって、右投手と同じ判定方法でコントローラ７の振りタイプを判定して、球種をストレートに決定することができる。また、プレイヤがカーブボールを投じるように左手でコントローラ７を振り下ろしたとき、そのコントローラ７の動きによって出力される加速度データは、Ｘ軸負方向からＹ軸負方向に変化する。つまり、プレイヤが左手でカーブボールを投じるときも、Ｙ軸方向加速度ａｃｃＹが負の値へ推移する。したがって、右投手と同じ判定方法でコントローラ７の振りタイプを判定して、球種をカーブに決定することができる。さらに、プレイヤがシュートボールを投じるように左手でコントローラ７を振り下ろしたとき、そのコントローラ７の動きによって出力される加速度データは、Ｘ軸負方向からＹ軸正方向に変化する。つまり、プレイヤが左手でシュートボールを投じるときも、Ｙ軸方向加速度ａｃｃＹが正の値へ推移する。したがって、右投手と同じ判定方法でコントローラ７の振りタイプを判定して、球種をシュートに決定することができる。
【０１２１】
また、上記第１判定値と上記第２判定値とは、コントローラ７をひねりながら振り下ろす人間の腕の特性を考慮した値に設定することが好ましい。一般的に、カーブボールを投げるときの腕のひねりは、シュートボールを投げるときにひねる逆方向の腕のひねりより、比較的やりやすい傾向がある。つまり、シュートボールの判定基準をカーブボールと同等の値に設定すると、双方の判定傾向に偏りが生じてしまう。したがって、本実施形態では、基準値（ａｖｇＹ＝０）と第１判定値との差（例えば、１．６Ｇ）に対して、当該基準値と第２判定値との差（例えば、１．０Ｇ）を小さくすることによって、カーブボールが判定される条件よりシュートボールが判定される条件を易しくしている。このように、それぞれの変化球を判定するレベルを人間の腕の特性に合わせて設定することによって、判定傾向をプレイヤの意図に近づけることができる。
【０１２２】
なお、上述した説明では、Ｙ軸方向加速度ａｃｃＹの平均値ａｖｇＹに応じて、コントローラ７の振りタイプを選択しているが、他のパラメータを用いて振りタイプを選択してもかまわない。例えば、累積値Ｙｔｏｔａｌをそのまま使用し、当該累積値Ｙｔｏｔａｌに応じた第１判定値および第２判定値を設定すれば、同様に振りタイプを判定できることは言うまでもない。
【０１２３】
図１６に戻り、ステップ８７において、ＣＰＵ１０は、コントローラ７から加速度データを取得し、次のステップに処理を進める。なお、ステップ８７における加速度データの取得処理は、上記ステップ５８と同様であるため、詳細な説明を省略する。
【０１２４】
次に、ＣＰＵ１０は、現在のループ数Ｎが１５であるか否かを判断する（ステップ８８）。そして、ＣＰＵ１０は、Ｎ＝１５である場合、処理を次のステップ９０に進める。一方、ＣＰＵ１０は、Ｎ＜１５である場合、ループ数Ｎに１を加算して（ステップ８９）、処理を上記ステップ８７に戻して繰り返す。すなわち、ループ数Ｎ＝１５までの加速度データがバッファに記憶されることになる。
【０１２５】
ステップ９０において、ＣＰＵ１０は、オブジェクト移動表示処理を行い、当該フローチャートによる処理を終了する。以下、図１７を参照して、オブジェクト移動表示処理の詳細な動作について説明する。
【０１２６】
図１７において、ＣＰＵ１０は、加速度データＤａに格納されている所定処理回数分（ここでは、１５フレーム分）のＸ軸方向加速度データＤａ１およびＹ軸方向加速度データＤａ２を用いて、差分ベクトルをそれぞれ算出して差分ベクトルデータＤｇに格納し（ステップ１０１）、次のステップに処理を進める。例えば、ある処理時に取得したＸ軸方向加速度をａｃｃＸ０およびＹ軸方向加速度をａｃｃＹ０とし、当該ある処理に対して前回の処理で取得したＸ軸方向加速度をａｃｃＸｂおよびＹ軸方向加速度をａｃｃＹｂとする。この場合、差分ベクトルは、（ａｃｃＸ０−ａｃｃＸｂ，ａｃｃＹ０−ａｃｃＹｂ）となる。このような差分ベクトルが、上記所定処理回数分の処理時点毎に算出される。
【０１２７】
次に、ＣＰＵ１０は、上記ステップ１０１で算出した差分ベクトルのうち、最大の差分ベクトルの大きさＬｍａｘを算出して最大差分ベクトルサイズデータＤｈに格納し（ステップ１０２）、次のステップに処理を進める。例えば、上記ステップ１０１で算出した各差分ベクトルの大きさＬは、
【数２】
0005420824.tif 000003
で算出される。そして、各大きさＬのうち最大の値が大きさＬｍａｘとされる。
【０１２８】
次に、ＣＰＵ１０は、上記ステップ１０２で算出した大きさＬｍａｘに応じて、球速レベルを決定し（ステップ１０３）、次のステップに処理を進める。例えば、ＣＰＵ１０は、球速設定テーブルＤｉに格納されたデータテーブルを用いて球速レベルを決定し、当該球速レベルが示す球速を球速データＤｊに格納する。以下、図１８を参照して、球速設定テーブルの一例について説明する。
【０１２９】
図１８において、球速設定テーブルは、取り得る大きさＬｍａｘの数値範囲毎に、設定される球速レベル「０」〜「４」が記述されている。なお、球速レベルの値は、その数値が大きくなると球速が速くなることを示すレベル値であり、球速レベルの値に応じて仮想ゲーム空間においてボールオブジェクトＯＢＪが投じられる初速度が決定される。例えば、大きさＬｍａｘが０．０以上２．３未満の場合、球速レベルが「０」に設定されることが記述されている。大きさＬｍａｘが２．３以上３．０未満の場合、球速レベルが「１」に設定されることが記述されている。大きさＬｍａｘが３．０以上３．７未満の場合、球速レベルが「２」に設定されることが記述されている。大きさＬｍａｘが３．７以上４．０未満の場合、球速レベルが「３」に設定されることが記述されている。そして、大きさＬｍａｘが４．０以上の場合、球速レベルが「４」に設定されることが記述されている。
【０１３０】
図１７に戻り、上記ステップ１０３で球速レベルが決定された後、ＣＰＵ１０は、球種およびコースに応じて、ボールの射出方向Ｄを決定し（ステップ１０４）、次のステップに処理を進める。例えば、ＣＰＵ１０は、射出方向設定テーブルＤｋに格納されたデータテーブルを用いて射出方向Ｄを決定して射出方向データＤｌに格納する。以下、図１９および図２０を参照して、射出方向設定テーブルの一例について説明する。
【０１３１】
図１９において、射出方向設定テーブルは、球種およびコースの組み合わせ毎に、設定される射出方向Ｄが記述されている。ここで、射出方向Ｄは、仮想ゲーム空間において、投手キャラクタＰがボールを投じる初期方向を示すベクトルデータである。例えば、コースが「内」の場合、球種「ストレート」で射出方向Ｄｆｉ、球種「カーブ」で射出方向Ｄｂｉ、球種「シュート」で射出方向Ｄｓｉがそれぞれ設定されることが記述されている。また、コースが「中」の場合、球種「ストレート」で射出方向Ｄｆｃ、球種「カーブ」で射出方向Ｄｂｃ、球種「シュート」で射出方向Ｄｓｃがそれぞれ設定されることが記述されている。さらに、コースが「外」の場合、球種「ストレート」で射出方向Ｄｆｏ、球種「カーブ」で射出方向Ｄｂｏ、球種「シュート」で射出方向Ｄｓｏがそれぞれ設定されることが記述されている。
【０１３２】
上記射出方向設定テーブルは、同じコースであっても球種に応じて射出方向Ｄが異なることを示している。これは、異なる球種であっても最終的に到達する位置（仮想ゲーム空間における打者の位置におけるコース）が同じになるように設定するためである。例えば、図２０は、コース「中」に投じる場合の射出方向Ｄｆｃ、Ｄｂｃ、およびＤｓｃの一例を示す図であり、仮想ゲーム空間における上空からボールオブジェクトＯＢＪを鳥瞰した様子を示している。ここで、球種「ストレート」でコース「中」に投じる射出方向Ｄｆｃを基準にして、他の射出方向ＤｂｃおよびＤｓｃを考える。例えば、球種「カーブ」を投じる場合、ボールオブジェクトＯＢＪが投じられた後に当該ボールオブジェクトＯＢＪがカーブする（図２０においては、右方向に変化する）。したがって、球種「カーブ」でコース「中」にボールオブジェクトＯＢＪを到達させるためには、ボールオブジェクトＯＢＪの変化を想定した方向に射出方向Ｄｂｃを設定する必要がある。つまり、射出方向Ｄｂｃは、射出方向Ｄｆｃに対してボールオブジェクトＯＢＪが変化する逆方向（つまり、図２０における左方向）にずらした角度に設定される。また、球種「シュート」を投じる場合、ボールオブジェクトＯＢＪが投じられた後に当該ボールオブジェクトＯＢＪがシュートする（図２０においては、左方向に変化する）。したがって、球種「シュート」でコース「中」にボールオブジェクトＯＢＪを到達させるためには、ボールオブジェクトＯＢＪの変化を想定した方向に射出方向Ｄｓｃを設定する必要がある。つまり、射出方向Ｄｓｃも、射出方向Ｄｆｃに対してボールオブジェクトＯＢＪが変化する逆方向（つまり、図２０における右方向）にずらした角度に設定される。
【０１３３】
なお、上述した射出方向Ｄは、投手キャラクタＰが右投手か左投手かによって、球種「カーブ」および「シュート」の場合に方向が逆方向となる。したがって、上記射出方向設定テーブルは、右投手用と左投手用とをそれぞれ用意して、射出方向設定テーブルＤｋに格納される。そして、上記ステップ５０で行った初期設定の内容に応じて、右投手用および左投手用の射出方向設定テーブルの何れかが選択されて使用される。
【０１３４】
図１７に戻り、上記ステップ１０４で射出方向Ｄが設定された後、ＣＰＵ１０は、球種に応じてボール回転量を設定してボール回転量データＤｍに格納し（ステップ１０５）、次のステップに処理を進める。例えば、ＣＰＵ１０は、球種データＤｆに設定されている球種に応じて、予め設定されたボール回転方向および回転量に設定する。具体的には、図２０に示すように、右投手における球種「カーブ」の場合、仮想ゲーム空間の上空から見てボールオブジェクトＯＢＪが所定の回転速度で左回転するように、ボール回転量を決定する（ボール回転量Ｒｂ）。また、右投手における球種「シュート」の場合、仮想ゲーム空間の上空から見てボールオブジェクトＯＢＪが所定の回転速度で右回転するように、ボール回転量を決定する（ボール回転量Ｒｓ）。さらに、球種「ストレート」の場合、ボールオブジェクトＯＢＪが無回転または所定の回転速度で縦回転するように、ボール回転量を決定する。なお、ボール回転速度は、一定値に設定してもいいし、平均値ａｖｇＹや大きさＬｍａｘに応じた値に適宜設定してもかまわない。
【０１３５】
なお、左投手における球種「カーブ」および「シュート」のボール回転方向は、上述した右投手の逆方向に設定する。すなわち、左投手における球種「カーブ」の場合、仮想ゲーム空間の上空から見てボールオブジェクトＯＢＪが所定の回転速度で右回転するように、ボール回転量を決定する。また、左投手における球種「シュート」の場合、仮想ゲーム空間の上空から見てボールオブジェクトＯＢＪが所定の回転速度で左回転するように、ボール回転量を決定する。
【０１３６】
次に、ＣＰＵ１０は、球速および射出方向に応じて、ボールオブジェクトＯＢＪの移動ベクトルを決定して移動ベクトルデータＤｎに格納し（ステップ１０６）、次のステップに処理を進める。例えば、ＣＰＵ１０は、射出方向データＤｋに格納されている射出方向Ｄを移動ベクトルの方向とし、球速データＤｉに格納されている球速が示す大きさを移動ベクトルの大きさとして決定する。
【０１３７】
次に、ＣＰＵ１０は、投手キャラクタＰがボールオブジェクトＯＢＪを投じたように、移動ベクトルデータＤｎに格納された移動ベクトルに応じてボールオブジェクトＯＢＪを仮想ゲーム空間内で移動させる（ステップ１０８）。そして、ＣＰＵ１０は、仮想ゲーム空間内にボールオブジェクトＯＢＪが配置されたゲーム画像を、モニタ２に表示する表示制御処理を行い（ステップ１０８）、次のステップに処理を進める。
【０１３８】
次に、ＣＰＵ１０は、仮想ゲーム空間におけるボールオブジェクトＯＢＪの移動が終了したか否かを判断する（ステップ１０９）。例えば、ボールオブジェクトＯＢＪの移動終了としては、ボールオブジェクトＯＢＪが捕手に捕球されたときや、打者によって打撃されたとき等がある。そして、ＣＰＵ１０は、移動終了の場合、当該サブルーチンによる処理を終了する。一方、ＣＰＵ１０は、移動中の場合、次のステップ１１０に処理を進める。
【０１３９】
ステップ１１０において、ＣＰＵ１０は、ボール回転量に応じて移動ベクトルを修正して移動ベクトルデータＤｎを更新し、処理を上記ステップ１０７に戻して繰り返す。例えば、ＣＰＵ１０は、前回算出された移動ベクトルに対して、ボール回転量に応じた変化ベクトルを当該移動ベクトルの垂直な方向に加算して、新たな移動ベクトルを算出する。
【０１４０】
図２１に示すように、ボールオブジェクトＯＢＪに左回転のボール回転量Ｒｂが与えられている場合、ボールオブジェクトＯＢＪの進行方向（つまり、前回算出された移動ベクトルの方向）に対して、左垂直方向の変化ベクトルが設定される。そして、前回の移動ベクトルに上記変化ベクトルを加算して、新たな移動ベクトルを算出する。ここで、変化ベクトルの大きさは、一例として移動ベクトルの大きさに比例した大きさとする。これによって、ボールオブジェクトＯＢＪの移動速度とは無関係に同じ軌道変化をボールオブジェクトＯＢＪに与える場合、すなわち投手キャラクタＰから捕手までどのような球速であっても同じような軌道でボールオブジェクトＯＢＪを移動させることができる。また、変化ベクトルの大きさは、他の例としてボール回転速度に比例した大きさや、予め設定された一定値としてもかまわない。
【０１４１】
このように、上記実施形態に係るゲーム装置３は、加速度センサ７０１を搭載したコントローラ７において、所定期間中に検出された所定軸方向（Ｙ軸方向）の加速度を用いることによって、コントローラ７を振りながらひねる方向を判別することができる。そして、上記判別されたひねり方向を用いたゲーム処理を行うことによって、プレイヤにとってより直感的で簡単な操作入力が実現される。
【０１４２】
なお、２軸方向の加速度を検出する加速度センサを用いても本発明を実現することができる。例えば、Ｘ軸およびＹ軸方向（図３、図４参照）に対して生じる加速度を検出する加速度センサがコントローラ７に設けられている場合、上記ステップ５５における加速度ベクトルの大きさｓの算出をＸＹ成分のみで算出すれば、同様に本発明を実現することができる。また、Ｙ軸およびＺ軸方向に対して生じる加速度を検出する加速度センサがコントローラ７に設けられている場合、上記ステップ５５における加速度ベクトルの大きさｓや上記ステップ１０１における差分ベクトルの算出を、ＹＺ成分のみまたはＺ成分のみで算出すれば、同様に本発明を実現することができる。
【０１４３】
また、上述した説明では、プレイヤがコントローラ７を振り下ろした際の減速時に生じる加速度方向を利用して、振り方の類型を決定しているが、他の期間に生じる加速度を利用して類型を決定してもかまわない。例えば、上述した類型判定基準の正負を逆にして各判定値を調整すれば、プレイヤがコントローラ７を振り下ろした際の加速時に生じる加速度方向を利用することも可能であり、加速時に生じる加速度方向を用いて振り方の類型を決定してもかまわない。
【０１４４】
また、上述した説明では、ゲーム例として野球ゲームの投手が投じる変化球の制御を用いたが、他のゲームに本発明を用いてもかまわない。例えば、プレイヤキャラクタがオブジェクトを打撃するようなゲーム（例えば、テニス、バレーボール、卓球等）や、プレイヤキャラクタがオブジェクトを投げるようなゲーム（例えば、ボーリング等）等にも、本発明を適用できることは言うまでもない。
【０１４５】
また、上述した説明では、コントローラ７を振り動かす動作を用いて操作するゲーム装置本体５をゲームシステム１に適用した例を説明したが、加速度センサを備えた入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置にも適用することができる。例えば、入力装置の加速度センサから出力される加速度データに応じて、情報処理装置が表示しているオブジェクトやウインドウの状態や位置を制御する等、入力装置に生じる加速度に基づいて様々な処理を行うことができる。
【０１４６】
また、上述した説明では、コントローラ７とゲーム装置本体５とが無線通信によって接続された態様を用いたが、コントローラ７とゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ７に接続されたケーブルをゲーム装置本体５の接続端子に接続する。
【０１４７】
また、上述したコントローラ７の形状や、それらに設けられている操作部７２の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した各種設定値や判定値等は、単なる一例に過ぎず他の値であっても、本発明を実現できることは言うまでもない。
【０１４８】
また、本発明のゲームプログラムは、光ディスク４等の外部記憶媒体を通じてゲーム装置本体５に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体５に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体５内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【産業上の利用可能性】
【０１４９】
本発明に係るゲーム装置およびゲームプログラムは、より直感的で簡単な操作入力の実現が可能であり、ゲームコントローラ等の入力装置に与えられる動きに応じてゲーム処理等を行う装置やプログラムとして有用である。
【図面の簡単な説明】
【０１５０】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面前方から見た斜視図
【図５】図３のコントローラ７の上筐体を外した状態を示す斜視図
【図６】図４のコントローラ７の下筐体を外した状態を示す斜視図
【図７】図３のコントローラ７の構成を示すブロック図
【図８】図３のコントローラ７を用いてゲーム操作するときの状態を概説する図解図
【図９】プレイヤが基準状態でコントローラ７を把持した状態を示す図
【図１０】プレイヤが基準状態からひねらずにコントローラ７を右手で振り下ろした際の状態の一例を示す図
【図１１】プレイヤが基準状態から一方方向にひねりながらコントローラ７を右手で振り下ろした際の状態の一例を示す図
【図１２】プレイヤが基準状態から他方方向にひねりながらコントローラ７を右手で振り下ろした際の状態の一例を示す図
【図１３】コントローラ７の振りタイプに応じて行われるゲーム処理の一例を示す図
【図１４】図２のゲーム装置本体５のメインメモリに記憶される主なデータを示す図
【図１５】図２のゲーム装置本体５において実行されるゲーム処理の流れを示す前半のフローチャート
【図１６】図２のゲーム装置本体５において実行されるゲーム処理の流れを示す後半のフローチャート
【図１７】図１６におけるステップ９１のオブジェクト移動表示処理の詳細な動作を示すサブルーチン
【図１８】球速設定テーブルの一例を示す図
【図１９】射出方向設定テーブルの一例を示す図
【図２０】ボールオブジェクトＯＢＪに設定される射出方向Ｄとボール回転量Ｒとを説明するための図
【図２１】ボールオブジェクトＯＢＪの移動ベクトルが更新される様子の一例を示す図
【符号の説明】
【０１５１】
１…ゲームシステム
２…モニタ
２ａ、７０６…スピーカ
３…ゲーム装置
４…光ディスク
５…ゲーム装置本体
１０…ＣＰＵ
１１…システムＬＳＩ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…無線通信モジュール
１９…無線コントローラモジュール
２０…拡張コネクタ
２１…外部メモリカード用コネクタ
２２、２３…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
３１…入出力プロセッサ
３２…ＧＰＵ
３３…ＤＳＰ
３４…ＶＲＡＭ
３５…内部メインメモリ
７…コントローラ
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
８…マーカ
【図１】
0005420824.tif 000004
【図２】
0005420824.tif 000005
【図３】
0005420824.tif 000006
【図４】
0005420824.tif 000007
【図５】
0005420824.tif 000008
【図６】
0005420824.tif 000009
【図７】
0005420824.tif 000010
【図８】
0005420824.tif 000011
【図９】
0005420824.tif 000012
【図１０】
0005420824.tif 000013
【図１１】
0005420824.tif 000014
【図１２】
0005420824.tif 000015
【図１３】
0005420824.tif 000016
【図１４】
0005420824.tif 000017
【図１５】
0005420824.tif 000018
【図１６】
0005420824.tif 000019
【図１７】
0005420824.tif 000020
【図１８】
0005420824.tif 000021
【図１９】
0005420824.tif 000022
【図２０】
0005420824.tif 000023
【図２１】
0005420824.tif 000024