説明

ゲームシステムおよびゲームプログラム

【課題】プレイヤキャラクタの移動制御を直感的かつ容易な操作で多様に制御する、または、ゲーム入力のダイレクト感をユーザに効果的に感じさせるゲームシステムおよびゲームプログラムを提供する。
【解決手段】ハウジングに設けられた方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する。ハウジングの基準姿勢からの姿勢変化やハウジングに生じる加速度に応じて、移動ベクトルを補正する。そして、補正された移動ベクトルに基づいて、オブジェクトを仮想ゲーム世界において移動制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームシステムおよびゲームプログラムに関し、より特定的には、コントローラのハウジングの姿勢変化やハウジングに生じる加速度を検出して操作されるゲームシステムおよびゲームプログラムに関する。
【背景技術】
【0002】
従来、プレイヤが入力装置を操作することによって、ゲームをプレイするゲーム装置が各種開発されている。例えば、プレイヤ操作するゲームコントローラの方向指示入力手段からの出力を用いて、ゲーム処理する装置が開示されている(例えば、特許文献1参照)。上記特許文献1で開示されたゲーム装置は、方向指示入力手段としてジョイスティック37を用いて選手キャラクタの仮想ゲーム世界における移動制御を行いつつ、R1ボタン38を押下することによって当該選手キャラクタがダッシュして移動する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−263363号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1で開示されたゲーム装置は、方向指示入力手段(ジョイスティック37)で決定された選手キャラクタの移動制御の内容を、ボタン(R1ボタン38)押下操作で補正するものであるため、プレイヤの操作が煩雑となる。また、上記特許文献1で開示されたゲーム装置は、仮想ゲーム世界に対するゲーム入力のダイレクト感を効果的にプレイヤに感じさせるようなインターフェースではない。例えば、上記特許文献1で開示されたゲーム装置は、方向指示入力手段を用いた操作によって選手キャラクタの仮想ゲーム世界における移動方向と移動量との両方を入力するため、プレイヤの指先だけの操作となり、ゲーム入力のダイレクト感が得られない。
【0005】
それ故に、本発明の目的は、上述した課題の少なくとも1つを解決するものであり、プレイヤキャラクタの移動制御を直感的かつ容易な操作で多様に制御する、または、ゲーム入力のダイレクト感を効果的に感じさせるゲームシステムおよびゲームプログラムを提供することである。
【課題を解決するための手段】
【0006】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0007】
第1の発明は、プレイヤが片手で把持可能なハウジング(77)を有するゲームコントローラ(7、76)と、当該ゲームコントローラと接続されるゲーム装置(5)と、当該ハウジングの姿勢を検出する検出部(701)とを含むゲームシステム(3)である。少なくともゲームコントローラは、方向指示部(78a)を備える。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、移動ベクトル制御手段(S43)、補正手段(S46、S52)、および移動制御手段(S21)を備える。移動ベクトル制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクト(PC)の移動ベクトルを決定する。補正手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、移動ベクトル制御手段によって決定された移動ベクトルを補正する。移動制御手段は、補正手段によって補正された移動ベクトルに基づいて、オブジェクトを仮想ゲーム世界において移動制御する。なお、方向指示部は、例えば、ジョイスティック、十字キー、または、複数のボタンキー(それぞれに各方向が割り当てられる)とすることができる。
【0008】
移動ベクトル制御手段は、少なくともオブジェクトの仮想ゲーム世界における移動方向を決定するものであり、それに加えて仮想ゲーム世界における移動量を決定してもよい。補正手段は、移動ベクトル制御手段によって決定された移動ベクトルを補正するが、移動ベクトル制御手段によって決定された移動方向を補正してもよいし、移動ベクトル制御手段が移動量も決定する場合には、当該移動量を補正してもよい。すなわち、以下のバリエーションが考えられる。
・移動ベクトル制御手段が移動方向を決定し、補正手段が移動方向を補正する。
・移動ベクトル制御手段が移動方向および移動量を決定し、補正手段が移動方向を補正する。
・移動ベクトル制御手段が移動方向および移動量を決定し、補正手段が移動量を補正する。
・移動ベクトル制御手段が移動方向および移動量を決定し、補正手段が移動方向および移動量を補正する。
・3次元の仮想ゲーム空間であり、移動ベクトル制御手段が2次元の移動成分(典型的には仮想水平2方向の移動量)を決定し、補正手段が残りの1次元の移動成分(典型的には仮想垂直方向の移動量)を決定する。
【0009】
なお、上述における「移動量」に代えて、「移動速度」や「移動加速度」としてもよい。
【0010】
検出部は所定のセンサを含むものであり、補正手段は当該センサの出力値に基づいてハウジングの基準姿勢からの姿勢変化を判断して移動ベクトルを補正する。補正手段は、ハウジングの基準姿勢からの姿勢変化を判断するが、より具体的には、ハウジングが基準姿勢から所定軸周りに回転したことを判断する。この所定軸は、ハウジングの所定軸であってもよいし、現実世界における所定軸であってもよい。すなわち、補正手段は、ハウジングの所定軸周りに当該ハウジングが回転したことを判断してもよいし、現実世界における所定軸周りに当該ハウジングが回転したことを判断してもよい。前者について、例えば、ハウジングの前後軸周り(例えば、ハウジングの長軸周り)の回転(ロール)、ハウジングの左右軸周り(例えば、ハウジングの左右短軸周り)の回転(ピッチ)、ハウジングの上下軸周り(例えば、ハウジングの上下短軸周り)の回転(ヨー)を判断してもよい。また、後者について、例えば、水平軸周りの回転や鉛直軸周りの回転を判断してもよい。補正手段は、基準姿勢からのハウジングの回転角度を算出してもよいが、これは必須ではない。例えば、後述の実施例のように、加速度センサによって所定軸方向にかかる重力加速度を検出する場合、回転角度を算出しなくても、検出した加速度の大小や方向に基づいて、基準姿勢から所定軸周りにハウジングが回転したことを判断することができる。
【0011】
典型的には、検出部は、ハウジングに固設されるセンサである。このセンサとしては、重力方向に対する傾き(以下、単に「傾き」と言う)に応じたデータを出力するセンサ(加速度センサ、傾きセンサ)、方位に応じたデータを出力するセンサ(磁気センサ)、回転運動に応じたデータを出力するセンサ(ジャイロセンサ)などを用いることができる。また、加速度センサおよびジャイロセンサは、多軸検出可能なものだけなく1軸検出のものでもよい。また、これらのセンサを組み合わせて、より正確な検出を行うものであってもかまわない。なお、ハウジングに固定されたカメラを、上記センサとして利用することも可能である。この場合、ハウジングの姿勢の変化に応じてカメラが撮像する撮像画像が変化するので、この画像を解析することにより、ハウジングの基準姿勢からの姿勢変化を判断することができる。
【0012】
また、検出部は、センサの種類によっては、ハウジングの外部に別設されてもよい。一例として、センサとしてのカメラでハウジングの外部から当該ハウジングを撮影し、撮像画像内に撮像されたハウジングの画像を解析することにより、ハウジングの基準姿勢からの姿勢変化を判断することが可能である。さらに、ハウジングに固設されたユニットとハウジング外部に別設されたユニットとの協働によるシステムを用いてもよい。この例としては、ハウジング外部に発光ユニットを別設し、ハウジングに固設されたカメラで発光ユニットからの光を撮影する。このカメラで撮像された撮像画像を解析することにより、ハウジングの基準姿勢からの姿勢変化を判断することができる。また、他の例としては、ハウジング外部に磁場発生装置を別設し、ハウジングに磁気センサを固設するようなシステムなどが挙げられる。
【0013】
前述の通り、補正手段は、ハウジングの所定軸の周りに当該ハウジングが回転したことを判断してもよいし(第1種の補正手段)、現実世界における所定軸の周りにハウジングが回転したことを判断してもよい(第2種の補正手段)。
【0014】
(1)第1種の補正手段の場合
まず、加速度センサをハウジングに固設する例を説明する。単純な例として、ハウジングの所定方向に生じる加速度を加速度センサで検出する。そして、加速度センサが検出した加速度を用いて、重力加速度成分の変化を分析することによって、重力加速度方向に直交する軸周りにハウジングが回転したことを判断することが可能である。例えば、ハウジングの上下方向に生じる加速度を検出して、重力加速度の当該上下方向成分の変化を分析することによって、ハウジングの左右軸周りに当該ハウジングが回転したことを判断することが可能である。
【0015】
ここで、加速度センサを用いる場合、加速度センサの検出軸がハウジングの姿勢変化における回転軸と一致するケースなど、加速度センサの検出軸の傾きが変化しないハウジングの回転に対しては、重力加速度の検出軸方向の成分が変化しないので、ハウジングの回転を判断することが難しい。しかしながら、加速度センサの検出軸がハウジングの姿勢変化における回転軸と一致しない場合(典型的には、加速度センサの検出軸が鉛直面に沿って傾きを変化するような姿勢変化など)であれば、重力加速度の影響により当該検出軸についての出力値が変化するのでハウジングの回転が判断できる。
【0016】
なお、本願発明が適用されるゲームの分野においては、ゲーム開発者が予め定める正しい操作方法に従って操作したときに正しいゲーム処理が行われるようにしておけば十分であって、それ以外の操作をした場合に正しいゲーム処理が行われないとしても格段の問題は生じない。したがって、ゲームの取扱説明書やゲーム画面などにおいて、正しい操作方法として、ハウジングの姿勢を変化させる方法(より具体的には、どの軸周りに回転操作させるか)を指示しておけば、プレイヤはその指示にしたがってハウジングを回転させる操作する。つまり、ある回転操作を前提として、ハウジングの姿勢が判断できれば十分である。なお、プレイヤが指示された操作から逸脱した操作を行った場合には、ハウジングの姿勢を正確に判断することができないが、その逸脱した程度が許容範囲内であれば、ゲーム処理としてもおおよそ正しい処理結果が得られる。また、ゲーム装置の用途においては、格段の正確性を必要としないことが多いため、そのような場合でも十分な実用性を有する。
【0017】
なお、加速度センサを用いる場合、ハウジングに作用する重力加速度のみならず、ハウジングの動きに応じて作用する加速度を検出するが、当業者にとって既知の処理により、当該動きに応じて検出された加速度を除去することが可能である。例えば、単純な例としては、加速度センサが検出した加速度の値が重力加速度よりも大きな値(または、十分大きな値)を示すときには、検出された加速度の値が重力加速度を示していないと判断して除去するような処理としてもよい。また、加速度センサが検出した加速度の値の変動が小さいときにのみ、検出された加速度の値が重力加速度を示しているとして、姿勢の分析に採用するような処理としてもよい。さらに、加速度センサが検出した加速度の値の高周波成分を除去してもよい。また、ハウジングを激しく動かす必要のないゲームの場合には、ハウジングの動きに応じて作用する加速度を除去する処理をしなくてもよい。なぜなら、ハウジングの動きに応じた加速度が検出されても、プレイヤがハウジングを激しく動かさなければ、ある程度正しい結果が得られるのであって、十分な実用性を有するからである。
【0018】
なお、多軸検出可能な加速度センサを用いて、当該多軸方向にそれぞれ生じた加速度の値を用いる場合には、基準姿勢からのハウジングの回転角度を算出して、より詳細な判断することが可能である。例えば、加速度センサが検出する2つの軸方向の加速度の値を用いて、所定の演算処理をすることにより、ハウジングの回転角度を算出することが可能である。典型的には、2つの軸方向の加速度の値を逆正接関数に代入するなどの、三角関数を利用した演算処理を、ハウジングの回転角度の算出に用いることができる。
【0019】
また、多軸検出可能な加速度センサを用いる場合には、どの検出軸方向の加速度が変化するかに基づいて、どの検出軸周りにハウジングが回転したかの判定も可能である。また、3軸方向の加速度をそれぞれ検出する加速度センサを用いる場合に、例えば、第1の軸方向の加速度の値と第2の軸方向の加速度の値とを用いて演算処理をすることにより、第3の軸周りにハウジングが回転したことを判断することが可能である。また、第1の軸方向の加速度の値と第3の軸方向の加速度の値とを用いて演算処理をすることにより、第2の軸周りにハウジングが回転したこと判断することが可能である。
【0020】
なお、ハウジングを実空間で回転移動させると、ハウジングに遠心力が生じる。この遠心力を加速度センサが検出することにより、ハウジングの姿勢変化の判断に利用してもかまわない。すなわち、例えば、ハウジングのある方向に加速度が生じたことが加速度センサにより検出された場合、それに直交する方向に伸びる軸周りにハウジングが回転した可能性があると判定できる。
【0021】
次に、ジャイロセンサをハウジングに固設する場合を説明する。この場合、ハウジングの姿勢を変化させる(すなわち、ハウジングをローカル座標系における所定軸周りに回転させる)と、ジャイロセンサはその回転を直接検出して、角速度データを出力する。そして、出力された角速度データに基づいて、基準姿勢からのハウジングの姿勢変化を判断することが可能である。より具体的には、角速度データを用いてハウジング回転角度の変化を判断することが可能である。より典型的には、ハウジングの前後軸周りの回転角度の変化、ハウジングの左右軸周りの回転角度の変化、および/または、ハウジングの上下軸周りの回転角度の変化をそれぞれ判断することが可能である。また、初期状態におけるハウジングの回転角度を設定しておくことにより、ハウジングの前後軸周りの回転角度、ハウジングの左右軸周りの回転角度、および/または、ハウジングの上下軸周りの回転角度を判断することが可能である。
【0022】
(2)第2種の補正手段の場合
典型的には、3軸方向の加速度をそれぞれ検出可能な加速度センサをハウジングに固設し、各軸方向に生じた加速度の値に基づいて、ハウジングに対する重力方向を判定することにより、水平軸周りのハウジングの回転角を判断することが可能である。または、例えば、3軸方向の加速度をそれぞれ検出可能な加速度センサについて、第1軸方向の加速度の値と第2軸方向の加速度の値とから合成ベクトルを算出する。そして、上記合成ベクトルの大きさと第3軸方向の加速度の値とからなる2次元ベクトルから、水平軸周りの当該第3軸の回転角を判断することも可能である。または、方位センサをハウジングに設けることにより、鉛直軸周りの回転角を判断することが可能である。
【0023】
なお、補正手段は、基準姿勢からの姿勢変化量が閾値に到達したときに、移動ベクトルを所定量だけ補正するようなものでもよいし、姿勢変化量に応じて移動ベクトルを補正する量を変化させるようなものでもよい。より具体的には、姿勢変化量が大きくなることに応じて、移動ベクトルの補正量を大きくしてもよい。
【0024】
さらに、補正手段は、所定軸周りのハウジングの回転に応じて、オブジェクトの仮想ゲーム世界における所定方向への移動量が増加するように移動ベクトルを補正してもよい。ここで、「仮想ゲーム世界における所定方向」とは、仮想ゲーム世界におけるワールド座標系における所定方向であってもよいし、オブジェクトのローカル座標系における所定方向であってもよいし、視点座標系における所定方向であってもよい。また、「方向指示手段により、前方向が指示されたときにオブジェクトが移動する方向」を基準として、所定方向を決定してもよい。典型的には、ハウジングの左右軸周りの当該ハウジングの回転を判断し、その判断に基づいて、オブジェクトの前方向(ローカル座標系における前方向および/または後ろ方向)への移動量を補正してもよい(より具体的には、ハウジングを前に倒すように回転させると、オブジェクトの前方向の移動量が増加するように補正し、および/または、ハウジングを後ろに倒すように回転させると、オブジェクトの後ろ方向の移動量が増加するように補正する。)。また、ハウジングの前後軸周りの当該ハウジングの回転を判断し、その判断に基づいて、オブジェクトの左右方向(ローカル座標系における左右方向)への移動量を補正してもよい。また、ハウジングの前後軸(または上下軸)が水平軸周りに回転したことを判断し、その判断に基づいて、オブジェクトの前方向の移動量を補正してもよい。さらに、ハウジングの左右軸が水平軸周りに回転したことを判断し、その判断に基づいて、オブジェクトの左右方向への移動量を補正してもよい。
【0025】
なお、上述した「オブジェクトの前方向」とは、(A)オブジェクトが向いている方向(典型的には、オブジェクトのローカル座標またはカメラ座標のZ軸方向)、または、(B)オブジェクトの移動方向(「方向指示部の前方向の指示入力に応じてオブジェクトが移動する方向」)である。なお、方向指示部の前方向の指示入力に応じて、オブジェクトが向いている方向に移動する場合には、上記(A)と上記(B)とが一致する。
【0026】
移動ベクトル制御手段は、方向指示部の前方向の指示入力に応じて「オブジェクトの前方向」にオブジェクトを移動させる移動ベクトルを決定し、方向指示部の後方向の指示入力に応じて「オブジェクトの前方向」と反対方向にオブジェクトを移動させる移動ベクトルを決定し、方向指示部の左右方向の指示入力に応じて「オブジェクトの前方向」に直交する左右方向にオブジェクトを移動させる移動ベクトルを決定する。なお、「左右方向」は、ローカル座標系における左右方向で定義してもよいし、ワールド座標系における左右方向で定義してもよい。
【0027】
なお、「オブジェクトの前方向」は、ワールド座標系において固定方向としてもよいし、方向指示部の指示入力に応じて変化させてもよい。後者の場合には、オブジェクトの移動ベクトルが決定されたときに、当該移動ベクトルの方向が新たな前方向に設定されるのが典型的である。
【0028】
また、補正手段は、1つの軸周りのハウジングの回転を判断してもよいし、複数の軸周りのハウジングの回転を判断してもよい。後者の場合、各軸のそれぞれについて「仮想ゲーム世界における所定方向」が設定される。すなわち、軸A周りのハウジングの回転に応じて、仮想ゲーム世界における方向Aのオブジェクトの移動量を補正し、軸B周りのハウジングの回転に応じて、仮想ゲーム世界における方向Bのオブジェクトの移動量を補正する(軸Aと軸Bとは異なり、方向Aと方向Bとは異なる)。ここで、軸Aと軸Bとが直交するように設定し、方向Aと方向Bとが直交するように設定するのが好ましい。なお、3軸以上についてハウジングの回転を判定してもよく、すなわち、軸C周りのハウジングの回転に応じて、方向Cのオブジェクトの移動量を補正してもよい。
【0029】
第2の発明は、上記第1の発明において、補正手段は、ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界における所定方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。
【0030】
第3の発明は、上記第2の発明において、補正手段は、ハウジングの左右軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界におけるオブジェクトの前方向への移動量が増加するように移動ベクトルを補正する。
【0031】
第4の発明は、上記第2の発明において、補正手段は、ハウジングの前後軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界におけるオブジェクトの左右方向への移動量が増加するように移動ベクトルを補正する。
【0032】
第5の発明は、上記第1の発明において、補正手段は、ハウジングの所定軸が当該所定軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における所定方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。
【0033】
第6の発明は、上記第1の発明において、補正手段は、ハウジングの第1軸が当該第1軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第1方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。補正手段は、ハウジングの第1軸とは異なる第2軸が当該第2軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第1方向とは異なる第2方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。
【0034】
第7の発明は、上記第1の発明において、方向指示部は、少なくともスティック(78a)をハウジングの所定方向に傾倒させる入力が可能なものである。移動ベクトル制御手段は、スティックが所定方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第1方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングが所定方向に傾くように回転したことに応じて、仮想ゲーム世界におけるオブジェクトの第1方向への移動量が増加するように移動ベクトルを補正する。
【0035】
第8の発明は、上記第1の発明において、方向指示部は、少なくともスティックがハウジングの所定軸周りに回転するように傾倒させる入力が可能なものである。移動ベクトル制御手段は、スティックが所定軸周りに回転する方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第1方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界におけるオブジェクトの第1方向への移動量が増加するように移動ベクトルを補正する。
【0036】
第9の発明は、上記第1の発明において、方向指示部は、少なくともスティックをハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能である。移動ベクトル制御手段は、スティックが所定方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第1方向に移動させるように移動ベクトルを決定し、かつ、スティックが直交する方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第1方向と直交する第2方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングが所定方向に傾くように回転したことに応じて、仮想ゲーム世界におけるオブジェクトの第1方向への移動量が増加するように移動ベクトルを補正し、かつ、ハウジングが直交する方向に傾くように回転したことに応じて、仮想ゲーム世界におけるオブジェクトの第2方向への移動量が増加するように移動ベクトルを補正する。
【0037】
第10の発明は、上記第1の発明において、方向指示部は、少なくともスティックをハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能である。移動ベクトル制御手段は、方向指示部による指示方向に応じて、スティックがハウジングの前方向に傾倒されたときに仮想ゲーム世界においてオブジェクトが移動する方向である基準方向を変更し、オブジェクトを当該基準方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングが前方向に傾いたことに応じて、仮想ゲーム世界におけるオブジェクトの基準方向への移動量が増加するように移動ベクトルを補正する。
【0038】
第11の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、ハウジングと、方向指示部と、動き検出手段(761)とを備える。ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成される。方向指示部は、ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、ハウジングの前後左右方向への指示入力するために設けられる。動き検出手段は、ハウジングの動きを検出する。ゲーム装置は、移動方向制御手段、補正手段、および移動制御手段を備える。移動方向制御手段は、方向指示部によりハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、方向指示部によりハウジングの後ろ方向への指示がされたときに、オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、方向指示部によりハウジングの左右方向への指示がされたときに、オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向とする決定する。補正手段は、動き検出手段の検出に基づいてハウジングの前方向に当該ハウジングが回転したことを示すとき、仮想ゲーム世界における前方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。移動制御手段は、仮想ゲーム世界内で、補正手段によって補正された移動ベクトルに基づいてオブジェクトを移動させる。
【0039】
なお、動き検出手段は、ハウジングに設けられる加速度センサ、ハウジングに設けられるジャイロセンサ、ハウジングに設けられる撮影手段で撮影した画像を解析することにより動きを検出するもの(例えば、後述の撮像情報演算部74とマーカ8とにより実現されるようなシステムを含む)、その他、ハウジングに設けられ傾きを検出できる傾きセンサなどとすることができる。なお、ジャイロセンサを採用する場合には、後述のような特別な処理が必要となる。
【0040】
また、より具体的には、ハウジングは、その一方側面(右側面または左側面の一方)に片手の掌を接触させ、他方側面(右側面または左側面の他方)に当該片手の指(人差指・中指・薬指・小指)のうちの少なくとも1つ(好ましくはこれらのうちの少なくとも2つであり、また、好ましくは少なくとも中指を含む)を接触させることによって把持し、当該把持した状態で親指が届く範囲に方向指示部が配置される。
【0041】
第12の発明は、上記第2〜11の何れかの発明において、移動ベクトル制御手段は、方向指示部で操作された指示方向に応じて、仮想ゲーム世界におけるオブジェクトの前方向を基準とした移動ベクトルの方向を決定する。ゲーム装置は、オブジェクト方向制御手段を、さらに備える。オブジェクト方向制御手段は、移動ベクトル制御手段によって決定され補正手段によって補正された移動ベクトルの方向を、オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界におけるオブジェクトの方向を変更する。
【0042】
第13の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、少なくとも、ハウジング、加速度検出手段、および方向指示部を備える。ハウジングは、プレイヤが片手で把持可能である。加速度検出手段は、ハウジングに生じる加速度を検出する。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、移動ベクトル制御手段、補正手段、および移動制御手段を備える。移動ベクトル制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する。補正手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、移動ベクトル制御手段によって決定された移動ベクトルを補正する。移動制御手段は、補正手段によって補正された移動ベクトルに基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【0043】
第14の発明は、上記第13の発明において、補正手段は、ハウジングの所定軸方向に生じた加速度に応じて、仮想ゲーム世界における所定方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。
【0044】
第15の発明は、上記第14の発明において、補正手段は、ハウジングの前方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの前方向への移動量が増加するように移動ベクトルを補正する。
【0045】
第16の発明は、上記第14の発明において、補正手段は、ハウジングの左右方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの左右方向への移動量が増加するように移動ベクトルを補正する。
【0046】
第17の発明は、上記第13の発明において、補正手段は、ハウジングの第1方向に生じた加速度に応じて、仮想ゲーム世界における第1方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。補正手段は、ハウジングの第1方向とは異なる第2方向に生じた加速度に応じて、仮想ゲーム世界における第1方向とは異なる第2方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。
【0047】
第18の発明は、上記第13の発明において、方向指示部は、少なくともスティックをハウジングの所定方向に傾倒させる入力が可能なものである。移動ベクトル制御手段は、スティックが所定方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第1方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングの所定方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの第1方向への移動量が増加するように移動ベクトルを補正する。
【0048】
第19の発明は、上記第13の発明において、方向指示部は、少なくともスティックをハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能である。移動ベクトル制御手段は、スティックが所定方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第1方向に移動させるように移動ベクトルを決定し、かつ、スティックが直交する方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトを第1方向と直交する第2方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングの所定方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの第1方向への移動量が増加するように移動ベクトルを補正し、かつ、ハウジングの直交する方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの第2方向への移動量が増加するように移動ベクトルを補正する。
【0049】
第20の発明は、上記第13の発明において、方向指示部は、少なくともスティックをハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能である。移動ベクトル制御手段は、方向指示部による指示方向に応じて、スティックがハウジングの前方向に傾倒されたときに仮想ゲーム世界においてオブジェクトが移動する方向である基準方向を変更し、オブジェクトを当該基準方向に移動させるように移動ベクトルを決定する。補正手段は、ハウジングの前方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの基準方向への移動量が増加するように移動ベクトルを補正する。
【0050】
第21の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、ハウジング、方向指示部、および加速度検出手段を備える。ハウジングは、その側周をプレイヤが片手で握持可能な形状および大きさで形成される。方向指示部は、ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、ハウジングの前後左右方向への指示入力するために設けられる。加速度検出手段は、少なくともハウジングの前方向に生じる加速度を検出する。ゲーム装置は、移動ベクトル制御手段、補正手段、および移動制御手段を備える。移動ベクトル制御手段は、方向指示部によりハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、方向指示部によりハウジングの後ろ方向への指示がされたときに、オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、方向指示部によりハウジングの左右方向への指示がされたときに、オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向として決定する。補正手段は、加速度検出手段の検出に基づいて、ハウジングの前方向に加速度が生じたときに、仮想ゲーム世界におけるオブジェクトの前方向への移動量が増加するように移動ベクトルを補正する。移動制御手段は、仮想ゲーム世界内で、補正手段によって補正された移動ベクトルに基づいてオブジェクトを移動させる。
【0051】
第22の発明は、上記第13〜第21の発明の何れかにおいて、移動ベクトル制御手段は、方向指示部で操作された指示方向に応じて、仮想ゲーム世界におけるオブジェクトの前方向を基準とした移動ベクトルの方向を決定する。ゲーム装置は、オブジェクト方向制御手段を、さらに備える。オブジェクト方向制御手段は、移動ベクトル制御手段によって決定され補正手段によって補正された移動ベクトルの方向を、オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界におけるオブジェクトの方向を変更する。
【0052】
第23の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムである。少なくともゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、移動方向決定手段、移動量決定手段、および移動制御手段を備える。移動方向決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する。移動量決定手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、オブジェクトの移動量を決定する。移動制御手段は、移動方向決定手段によって決定された移動方向、および、移動量決定手段によって決定された移動量に基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【0053】
第24の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、少なくとも、ハウジング、加速度検出手段、および方向指示部を備える。ハウジングは、プレイヤが片手で把持可能である。加速度検出手段は、ハウジングに生じる加速度を検出する。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、移動方向決定手段、移動量決定手段、および移動制御手段を備える。移動方向決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する。移動量決定手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、オブジェクトの移動量を決定する。移動制御手段は、移動方向決定手段によって決定された移動方向、および、移動量決定手段によって決定された移動量に基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【0054】
第25の発明は、プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムである。少なくともゲームコントローラは、方向指示部を備える。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、位置決定手段(S43、S171)、変位決定手段(S172、S173)、および移動制御手段(S21)を備える。位置決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する。変位決定手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、オブジェクトの仮想ゲーム世界における変位を決定する。移動制御手段は、位置決定手段によって決定されたオブジェクトの位置を、変位決定手段によって決定された変位だけ変化させて、オブジェクトが移動するように制御する。
【0055】
第26の発明は、上記第25の発明において、変位決定手段は、ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界における所定方向へのオブジェクトの変位を決定する。
【0056】
第27の発明は、上記第25の発明において、変位決定手段は、ハウジングの左右軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界におけるオブジェクトの前方向へ当該オブジェクトが変位するように変位を決定する。
【0057】
第28の発明は、上記第25の発明において、変位決定手段は、ハウジングの前後軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界におけるオブジェクトの左右方向へ当該オブジェクトが変位するように変位を決定する。
【0058】
第29の発明は、上記第25の発明において、変位決定手段は、ハウジングの所定軸が当該所定軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における所定方向へオブジェクトが変位するように変位を決定する。
【0059】
第30の発明は、上記第25の発明において、変位決定手段は、ハウジングの第1軸が当該第1軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第1方向へオブジェクトが変位するように変位を決定する。変位決定手段は、ハウジングの第1軸とは異なる第2軸が当該第2軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第1方向とは異なる第2方向へオブジェクトが変位するように変位を決定する。
【0060】
第31の発明は、上記第25の発明において、方向指示部は、少なくともスティックをハウジングの所定方向に傾倒させる入力が可能である。位置決定手段は、スティックが所定方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界における第1方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングが所定方向に傾くように回転したことに応じて、仮想ゲーム世界における第1方向へオブジェクトが変位するように変位を決定する。
【0061】
第32の発明は、上記第25の発明において、方向指示部は、少なくともスティックがハウジングの所定軸周りに回転するように傾倒させる入力が可能である。位置決定手段は、スティックが所定軸周りに回転する方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界における第1方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界における第1方向へオブジェクトが変位するように変位を決定する。
【0062】
第33の発明は、上記第25の発明において、方向指示部は、少なくともスティックをハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能である。位置決定手段は、スティックが所定方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界における第1方向に移動させて新たな位置を決定し、かつ、スティックが直交する方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界において第1方向と直交する第2方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングが所定方向に傾くように回転したことに応じて、第1方向へオブジェクトが変位するように変位を決定し、かつ、ハウジングが直交する方向に傾くように回転したことに応じて、第2方向へオブジェクトが変位するように変位を決定する。
【0063】
第34の発明は、上記第25の発明において、方向指示部は、少なくともスティックをハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能である。位置決定手段は、方向指示部による指示方向に応じて、スティックがハウジングの前後左右方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界において前後左右方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングが左右方向に傾いたことに応じて、仮想ゲーム世界におけるオブジェクトの左右方向に当該オブジェクトが変位するように変位を決定する。
【0064】
第35の発明は、プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムである。ゲームコントローラは、少なくとも、ハウジング、加速度検出手段、および方向指示部を備える。ハウジングは、プレイヤが片手で把持可能である。加速度検出手段は、前記ハウジングに生じる加速度を検出する。方向指示部は、ハウジングに設けられ、方向指示入力するために設けられる。ゲーム装置は、位置決定手段、変位決定手段、および移動制御手段を備える。位置決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する。変位決定手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、オブジェクトの仮想ゲーム世界における変位を決定する。移動制御手段は、位置決定手段によって決定されたオブジェクトの位置を、変位決定手段によって決定された変位だけ変化させて、オブジェクトが移動するように制御する。
【0065】
第36の発明は、上記第35の発明において、変位決定手段は、ハウジングの前後方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの前後方向へ当該オブジェクトが変位するように変位を決定する。
【0066】
第37の発明は、上記第35の発明において、変位決定手段は、ハウジングの第1方向に生じた加速度に応じて、仮想ゲーム世界における第1方向へオブジェクトが変位するように変位を決定する。変位決定手段は、ハウジングの第1方向とは異なる第2方向に生じた加速度に応じて、仮想ゲーム世界における第1方向とは異なる第2方向へオブジェクトが変位するように変位を決定する。
【0067】
第38の発明は、上記第35の発明において、方向指示部は、少なくともスティックをハウジングの所定方向に傾倒させる入力が可能である。位置決定手段は、スティックが所定方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界における第1方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングの所定方向に生じた加速度に応じて、仮想ゲーム世界における第1方向へオブジェクトが変位するように変位を決定する。
【0068】
第39の発明は、上記第35の発明において、方向指示部は、少なくともスティックをハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能である。位置決定手段は、スティックが所定方向に傾倒されたときに、オブジェクトの位置を仮想ゲーム世界における第1方向に移動させて新たな位置を決定し、かつ、スティックが直交する方向に傾倒されたときに、オブジェクトの位置を第1方向と直交する第2方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングの所定方向に生じた加速度に応じて、仮想ゲーム世界における第1方向へオブジェクトが変位するように変位を決定し、かつ、ハウジングの直交する方向に生じた加速度に応じて、仮想ゲーム世界における第2方向へオブジェクトが変位するように変位を決定する。
【0069】
第40の発明は、上記第35の発明において、方向指示部は、少なくともスティックをハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能である。位置決定手段は、方向指示部による指示方向に応じて、スティックがハウジングの前後左右方向に傾倒されたときに、仮想ゲーム世界においてオブジェクトの位置を前後左右方向に移動させて新たな位置を決定する。変位決定手段は、ハウジングの左右方向に生じた加速度に応じて、仮想ゲーム世界におけるオブジェクトの左右方向に当該オブジェクトが変位するように変位を決定する。
【0070】
第41の発明は、上記第25〜第40の発明の何れかにおいて、位置決定手段は、方向指示部で操作された指示方向に応じて、仮想ゲーム世界におけるオブジェクトの前方向を基準として、オブジェクトの新たな位置を決定する。ゲーム装置は、オブジェクト方向制御手段を、さらに備える。オブジェクト方向制御手段は、位置決定手段がオブジェクトの位置を移動させた仮想ゲーム世界における方向を、オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界におけるオブジェクトの方向を変更する。
【0071】
第42の発明は、上記第6または第30の発明において、第1軸と第2軸とは、互いに直交する。第1方向と第2方向とは、仮想ゲーム世界において互いに直交する。
【0072】
第43の発明は、上記第17または第37の発明において、ハウジングの第1方向と第2方向とは、互いに直交する。仮想ゲーム世界における第1方向と第2方向とは、仮想ゲーム世界において互いに直交する。
【0073】
第44の発明は、上記第1、第13、第23〜第25、および第35の発明の何れかにおいて、ハウジングは、当該ハウジングの側周をプレイヤが片手で握持可能な形状および大きさで形成される。
【0074】
第45の発明は、上記第44の発明において、ハウジングは、当該ハウジングの側周をプレイヤが片手で握持したときに、当該片手の親指で操作可能な位置に方向指示部が配設される。
【0075】
第46の発明は、プレイヤが片手で把持可能なハウジングおよび当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムにおいて、当該ゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動ベクトル制御手段、補正手段、および移動制御手段として、コンピュータを機能させる。移動ベクトル制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する。補正手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、移動ベクトル制御手段によって決定された移動ベクトルを補正する。移動制御手段は、補正手段によって補正された移動ベクトルに基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【0076】
第47の発明は、その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジング、当該ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、ハウジングの前後左右方向への指示入力するための方向指示部、および当該ハウジングの動きを検出する動き検出手段を備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動方向制御手段、補正手段、および移動制御手段として、コンピュータを機能させる。移動方向制御手段は、方向指示部によりハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、方向指示部によりハウジングの後ろ方向への指示がされたときに、オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、方向指示部によりハウジングの左右方向への指示がされたときに、オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向とする決定する。補正手段は、動き検出手段の検出に基づいてハウジングの前方向に当該ハウジングが回転したことを示すとき、仮想ゲーム世界における前方向へのオブジェクトの移動量が増加するように移動ベクトルを補正する。移動制御手段は、仮想ゲーム世界内で、補正手段によって補正された移動ベクトルに基づいてオブジェクトを移動させる。
【0077】
第48の発明は、プレイヤが片手で把持可能なハウジング、当該ハウジングに生じる加速度を検出する加速度検出手段、および当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動ベクトル制御手段、補正手段、および移動制御手段として、コンピュータを機能させる。移動ベクトル制御手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する。補正手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、移動ベクトル制御手段によって決定された移動ベクトルを補正する。移動制御手段は、補正手段によって補正された移動ベクトルに基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【0078】
第49の発明は、その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジング、当該ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、ハウジングの前後左右方向への指示入力するための方向指示部、および少なくとも当該ハウジングの前方向に生じる加速度を検出する加速度検出手段を備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動ベクトル制御手段、補正手段、および移動制御手段として、コンピュータを機能させる。移動ベクトル制御手段は、方向指示部によりハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、方向指示部によりハウジングの後ろ方向への指示がされたときに、オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、方向指示部によりハウジングの左右方向への指示がされたときに、オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向として決定する。補正手段は、加速度検出手段の検出に基づいて、ハウジングの前方向に加速度が生じたときに、仮想ゲーム世界におけるオブジェクトの前方向への移動量が増加するように移動ベクトルを補正する。移動制御手段は、仮想ゲーム世界内で、補正手段によって補正された移動ベクトルに基づいてオブジェクトを移動させる。
【0079】
第50の発明は、プレイヤが片手で把持可能なハウジングおよび当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムにおいて、当該ゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動方向決定手段、移動量決定手段、および移動制御手段として、コンピュータを機能させる。移動方向決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する。移動量決定手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、オブジェクトの移動量を決定する。移動制御手段は、移動方向決定手段によって決定された移動方向、および、移動量決定手段によって決定された移動量に基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【0080】
第51の発明は、プレイヤが片手で把持可能なハウジング、当該ハウジングに生じる加速度を検出する加速度検出手段、および当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、移動方向決定手段、移動量決定手段、および移動制御手段として、コンピュータを機能させる。移動方向決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する。移動量決定手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、オブジェクトの移動量を決定する。移動制御手段は、移動方向決定手段によって決定された移動方向、および、移動量決定手段によって決定された移動量に基づいて、オブジェクトを仮想ゲーム世界において移動制御する。
【0081】
第52の発明は、プレイヤが片手で把持可能なハウジングおよび当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムにおいて、当該ゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、位置決定手段、変位決定手段、および移動制御手段として、コンピュータを機能させる。位置決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する。変位決定手段は、検出部の検出に基づき、ハウジングの基準姿勢からの姿勢変化に応じて、オブジェクトの仮想ゲーム世界における変位を決定する。移動制御手段は、位置決定手段によって決定されたオブジェクトの位置を、変位決定手段によって決定された変位だけ変化させて、オブジェクトが移動するように制御する。
【0082】
第53の発明は、プレイヤが片手で把持可能なハウジング、当該ハウジングに生じる加速度を検出する加速度検出手段、および当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムである。ゲームプログラムは、位置決定手段、変位決定手段、および移動制御手段として、コンピュータを機能させる。位置決定手段は、方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する。変位決定手段は、加速度検出手段の検出に基づき、ハウジングに生じた加速度に応じて、オブジェクトの仮想ゲーム世界における変位を決定する。移動制御手段は、位置決定手段によって決定されたオブジェクトの位置を、変位決定手段によって決定された変位だけ変化させて、オブジェクトが移動するように制御する。
【発明の効果】
【0083】
上記第1の発明によれば、方向指示部の操作で決定されたオブジェクトの移動制御の内容(移動ベクトル)が、当該方向指示部が設けられたハウジングの姿勢で補正されるため、プレイヤの操作が容易となる。したがって、プレイヤキャラクタ等のオブジェクトの移動のための入力にダイレクト感があり、直感的かつ容易な操作で多様に制御することができる。
【0084】
上記第2〜第6の発明によれば、ハウジングが回転するように姿勢変化したことに応じて、その回転軸に応じた仮想ゲーム世界の方向への移動量が増加するようなオブジェクトの移動制御が可能となる。
【0085】
上記第7〜第11の発明によれば、方向指示部のスティック操作の傾倒方向とハウジングの姿勢変化の方向とを適切に対応付けることにより、より直感的かつ容易な操作で多様に制御することができる。
【0086】
上記第12の発明によれば、設定された移動ベクトルの方向にオブジェクトの前方向を向けて移動制御することができる。
【0087】
上記第13〜第22の発明によれば、方向指示部の操作で決定されたオブジェクトの移動制御の内容(移動ベクトル)が、当該方向指示部が設けられたハウジングに生じる加速度を用いて補正されるため、プレイヤの操作が容易となる。したがって、プレイヤキャラクタ等のオブジェクトの移動制御を直感的かつ容易な操作で多様に制御することができ、上述したゲームシステムと同様の効果が得られる。
【0088】
上記第23の発明によれば、方向指示部の操作でオブジェクトの移動方向を決定し、当該方向指示部が設けられたハウジングの姿勢に応じてオブジェクトの移動量が決定されるようなプレイヤの操作が容易なゲームが可能となり、ゲーム入力のダイレクト感をプレイヤに効果的に感じさせることができる。
【0089】
上記第24の発明によれば、方向指示部の操作でオブジェクトの移動方向を決定し、当該方向指示部が設けられたハウジングに生じる加速度に応じてオブジェクトの移動量が決定されるようなプレイヤの操作が容易なゲームが可能となり、ゲーム入力のダイレクト感をプレイヤに効果的に感じさせることができる。
【0090】
上記第25〜第34の発明によれば、方向指示部の操作でオブジェクトの基本的な位置を決定し、当該方向指示部が設けられたハウジングの姿勢によって当該基本的な位置からオブジェクトが変位するようなゲームが可能となる。したがって、プレイヤキャラクタ等のオブジェクトの移動制御を直感的かつ容易な操作で多様に制御することができ、違和感のない操作性が得られる。また、上述したゲームシステムと同様の効果が得られる。
【0091】
上記第35〜第40の発明によれば、方向指示部の操作でオブジェクトの基本的な位置を決定し、当該方向指示部が設けられたハウジングに生じる加速度によって当該基本的な位置からオブジェクトが変位するようなゲームが可能となる。したがって、プレイヤキャラクタ等のオブジェクトの移動制御を直感的かつ容易な操作で多様に制御することができ、違和感のない操作性が得られる。また、上述したゲームシステムと同様の効果が得られる。
【0092】
上記第41の発明によれば、オブジェクトが基本的な位置へ移動する方向にオブジェクトの前方向を向けて移動制御することができる。
【0093】
上記第42および第43の発明によれば、ハウジングの姿勢を判断するための2つの軸が直交し、当該姿勢に応じて仮想ゲーム世界に反映するための2つの軸も直交しており、それらの軸を対応付けて移動制御を行うことができる。したがって、実空間内に設定した仮想的な平面を仮想ゲーム世界内の仮想的な平面に対応させて、オブジェクトの移動制御を行うことができ、よりダイレクト感のあるゲーム入力とすることができる。
【0094】
上記第44の発明によれば、プレイヤがハウジングを片手で包み込むように把持することができ、プレイヤの一方の手自体を自由に動かしてプレイすることができる。
【0095】
上記第45の発明によれば、プレイヤがハウジングを片手で包み込むように把持することができ、プレイヤの一方の手自体を自由に動かしながら、従来のコントローラと同じように親指による入力を行うことができる。
【0096】
また、本発明のゲームプログラムによれば、上述したゲームシステムと同様の効果を得ることができる。
【図面の簡単な説明】
【0097】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置本体5の機能ブロック図
【図3】図1のコントローラ7の外観構成を示す斜視図
【図4】図3のコントローラ7の接続ケーブル79をコアユニット70から脱着する状態を示す斜視図
【図5】図3のコアユニット70の上面後方から見た斜視図
【図6】図5のコアユニット70を下面前方から見た斜視図
【図7】図5のコアユニット70の上筐体を外した状態を示す斜視図
【図8】図6のコアユニット70の下筐体を外した状態を示す斜視図
【図9】サブユニット76の一例を示す斜視図
【図10】図9のサブユニット76の上筐体を外した状態を示す斜視図
【図11】図3のコントローラ7の構成を示すブロック図
【図12】図3のコントローラ7を用いてゲーム操作するときの状態を概説する図解図
【図13】プレイヤがコアユニット70を右手で把持した状態をコアユニット70の前面側から見た一例
【図14】プレイヤがコアユニット70を右手で把持した状態をコアユニット70の左側面側から見た一例
【図15】LEDモジュール8Lおよび8Rと撮像素子743との視野角を説明するための図
【図16】プレイヤがサブユニット76を左手で把持した状態をサブユニット76の右側面側から見た一例
【図17】ゲーム装置本体5のメインメモリ33に記憶される主なデータを示す図
【図18】ゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャート
【図19】図18におけるステップ15のサブユニット移動処理の詳細な動作を示すサブルーチン
【図20】図18におけるステップ16のパス処理の詳細な動作を示すサブルーチン
【図21】図18におけるステップ17の第1シュート処理の詳細な動作を示すサブルーチン
【図22】図18におけるステップ18の第2シュート処理の詳細な動作を示すサブルーチン
【図23】図18におけるステップ19の一時監督モード処理の詳細な動作を示すサブルーチン
【図24】図18におけるステップ20の監督モード処理の詳細な動作を示すサブルーチン
【図25】モニタ2に表示されるゲーム画像の一例
【図26】プレイヤキャラクタPCに設定される姿勢ベクトルVcを説明するための図
【図27】パスの目標位置TPと領域AおよびBを説明するための図
【図28】ボールオブジェクトBが移動する軌道の一例を示す図
【図29】ノンプレイヤキャラクタNPCに設定される移動ベクトルVmnpcの一例を示す図
【図30】サブユニット移動処理における他の例の詳細な動作を示すサブルーチン
【発明を実施するための形態】
【0098】
図1を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置の一例の据置型のゲーム装置を含むゲームシステムについて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の外観図であり、図2はゲーム装置本体5のブロック図である。以下、当該ゲームシステム1について説明する。
【0099】
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置本体5から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明のゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
【0100】
また、ゲーム装置本体5は、通信ユニット6を内蔵する。通信ユニット6は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置本体5の前部主面には、当該ゲーム装置本体5の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトスイッチ等が設けられている。
【0101】
また、ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ38が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置本体5は、フラッシュメモリ38に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置本体5のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0102】
コントローラ7は、通信ユニット6を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、2つのコントロールユニット(コアユニット70およびサブユニット76)が屈曲自在な接続ケーブル79を介して互いに接続されて構成されており、主にモニタ2に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コアユニット70およびサブユニット76は、それぞれ複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コアユニット70は、当該コアユニット70から見た画像を撮像するための撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール8Lおよび8R(以下、マーカ8Lおよび8Rと記載する)が設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。なお、本実施例では、コアユニット70とサブユニット76を屈曲自在なケーブルで接続したが、サブユニット76に無線ユニットを搭載することで、接続ケーブル79をなくすこともできる。例えば、無線ユニットとしてBluetooth(登録商標)ユニットをサブユニット76に搭載することで、サブユニット76からコアユニット70へ操作データを送信することが可能になる。また、コントローラ7(例えば、コアユニット70)は、ゲーム装置本体5の通信ユニット6から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
【0103】
図2において、ゲーム装置本体5は、各種プログラムを実行する例えばCPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムの実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35などが接続される。また、メモリコントローラ31には、所定のバスを介して、通信ユニット6、ビデオI/F(インターフェース)37、フラッシュメモリ38、オーディオI/F39、およびディスクI/F41が接続され、それぞれのインターフェースにモニタ2、スピーカ2a、およびディスクドライブ40が接続されている。
【0104】
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0105】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等が、CPU30によって実行される。
【0106】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0107】
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。上述したように通信ユニット6は、コントローラ7からの送信データを受信し、当該送信データをCPU30へ出力する。また、通信ユニット6は、CPU30から出力された送信データをコントローラ7の通信部75へ送信する。ビデオI/F37には、モニタ2が接続される。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置本体5のバスやオーディオI/F39に出力する。
【0108】
次に、図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の外観構成を示す斜視図である。図4は、図3のコントローラ7の接続ケーブル79をコアユニット70から脱着する状態を示す斜視図である。
【0109】
図3において、コントローラ7は、コアユニット70とサブユニット76とが接続ケーブル79で接続されて構成されている。コアユニット70は、ハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。一方、サブユニット76は、ハウジング77を有しており、当該ハウジング77に複数の操作部78が設けられている。そして、コアユニット70とサブユニット76とは、接続ケーブル79によって接続されている。
【0110】
図4において、接続ケーブル79の一方端にはコアユニット70のコネクタ73に着脱自在なコネクタ791が設けられており、接続ケーブル79の他方端は固定的にサブユニット76と接続されている。そして、接続ケーブル79のコネクタ791は、コアユニット70の後面に設けられたコネクタ73と嵌合し、コアユニット70とサブユニット76とが当該接続ケーブル79を介して接続される。
【0111】
次に、図5および図6を参照して、コアユニット70について説明する。なお、図5は、コアユニット70の上面後方から見た斜視図である。図6は、コアユニット70を下面前方から見た斜視図である。
【0112】
図5および図6において、コアユニット70は、例えばプラスチック成型によって形成されたハウジング71を有している。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0113】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0114】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー72aの代わりに設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。
【0115】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、詳細は後述する。なお、図5に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0116】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置5本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0117】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(コントローラ識別番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コアユニット70から通信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0118】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図7のスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0119】
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、プレイヤがコアユニット70を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部であり、サッカーゲームにおけるシュートのトリガスイッチや選手の切り替え操作等に用いられる。
【0120】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コアユニット70が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコアユニット70の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えば32ピンのエッジコネクタであり、接続ケーブル79のコネクタ791と嵌合して接続するために利用される。
【0121】
ここで、以下の説明を具体的にするために、コアユニット70に対して設定する座標系について定義する。図5および図6に示すように、互いに直交するXYZ軸をコアユニット70に対して定義する。具体的には、コアユニット70の前後方向となるハウジング71の長手方向をZ軸とし、コアユニット70の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コアユニット70の上下方向をY軸とし、ハウジング71の上面(操作ボタン72aが設けられた面)方向をY軸正方向とする。さらに、コアユニット70の左右方向をX軸とし、ハウジング71の右側面(図6では表されずに図5で表されている側面)方向をX軸正方向とする。
【0122】
次に、図7および図8を参照して、コアユニット70の内部構造について説明する。なお、図7は、コアユニット70の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図8は、コアユニット70の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図8に示す基板700は、図7に示す基板700の裏面から見た斜視図となっている。
【0123】
図7において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図8、図11参照)に接続される。また、図示しない無線モジュール753(図11参照)およびアンテナ754によって、コアユニット70がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。加速度センサ701が、基板700の中央部ではなく周辺部に設けられていることにより、コアユニット70の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコアユニット70の回転を良好な感度で判定することができる。
【0124】
一方、図8において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コアユニット70の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。そして、基板700の下主面上には、バイブレータ704が取り付けられる。このバイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704が作動することによってコアユニット70に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0125】
図9および図10を参照して、サブユニット76について説明する。なお、図9は、サブユニット76の一例を示す斜視図である。図10は、図9のサブユニット76の上筐体(ハウジング77の一部)を外した状態を示す斜視図である。
【0126】
図9において、サブユニット76は、例えばプラスチック成型によって形成されたハウジング77を有している。ハウジング77は、その前後方向を長手方向とし、サブユニット76において最太部となる頭部を前方に形成した流線型の立体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。さらに言えば、サブユニット76のハウジング77は、プレイヤの片手の手のひらおよび親指以外の指により包み込むように把持することが可能であり、当該把持をしたときにプレイヤの親指がスティック78aに位置するようにその形状が設計される。
【0127】
ハウジング77上面の上記最太部近傍に、スティック78aが設けられる。スティック78aは、ハウジング77上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向(さらには、付加的に傾倒量)を検出し、それに応じて操作信号を出力する操作部である。例えば、プレイヤがスティック先端を360°任意の方向に傾倒することによって任意の方向や位置を指定することができ、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。また、プレイヤは、スティック78aの傾倒量によって、プレイヤキャラクタやカーソル等の移動量を指示することができる。
【0128】
なお、スティック78aは、プレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、上述した十字キーやリング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記スティック78aの代わりに設けてもかまわない。また、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記スティック78aの代わりに設けてもかまわない。また、タッチパッドを、上記スティック78aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記スティック78aの代わりに設けてもかまわない。
【0129】
サブユニット76のハウジング77の前面に、複数の操作ボタン78dおよび78eが設けられる。操作ボタン78dおよび78eは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン78dおよび78eに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン78dおよび78eには、XボタンおよびYボタン等としての機能が割り当てられる。これら操作ボタン78dおよび78eは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図9に示した配置例では、操作ボタン78dおよび78eは、ハウジング77前面の上下方向に沿って並設されている。
【0130】
図10において、ハウジング77の内部には基板が固設されており、当該基板の上主面上にスティック78aおよび加速度センサ761等が設けられる。そして、これらは、基板等に形成された配線(図示せず)を介して接続ケーブル79と接続されている。加速度センサ761は、ハウジング77の長手方向の中央部かつ短手方向の中央部に配置されるのが好ましい。また、プレイヤがハウジング77を片手の手のひらおよび親指以外の指により包み込むように把持したときに、当該手のひらと指によって囲まれる空間(好ましくは、当該空間のほぼ中心)に配置されるのが好ましい。
【0131】
ここで、以下の説明を具体的にするために、サブユニット76に対して設定する座標系について定義する。図9に示すように、互いに直交するXYZ軸をサブユニット76に対して定義する。具体的には、サブユニット76の前後方向となるハウジング77の長手方向をZ軸とし、サブユニット76の前面(操作ボタン78dおよび78eが設けられている面)方向をZ軸正方向とする。また、サブユニット76の上下方向をY軸とし、ハウジング77の上面方向(スティック78aが突出する方向)をY軸正方向とする。さらに、サブユニット76の左右方向をX軸とし、ハウジング77の右側面(図9では表されない側面)方向をX軸正方向とする。
【0132】
次に、図11を参照して、コントローラ7の内部構成について説明する。なお、図11は、コントローラ7の構成を示すブロック図である。
【0133】
図11において、コアユニット70は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。また、サブユニット76は、上述した操作部78および加速度センサ761を備えており、接続ケーブル79とコネクタ791および73とを介して、マイコン751と接続されている。
【0134】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コアユニット70の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コアユニット70のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
【0135】
コアユニット70は、3軸(X、Y、Z軸)の加速度センサ701を備えていることが好ましい。また、サブユニット76は、3軸(X、Y、Z軸)の加速度センサ761を備えていることが好ましい。この3軸の加速度センサ701および761は、それぞれ3方向、すなわち、上下方向、左右方向、および前後方向(上述したXYZ軸方向)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向(または他の対になった方向)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段や何れか1軸に沿った直線加速度のみを検知する1軸の加速度検出手段を使用してもよい。例えば、この1軸〜3軸の加速度センサ701および761は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701および761は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて1軸〜3軸の加速度センサ701および761が提供されてもよい。
【0136】
当業者には公知であるように、加速度センサ701および761に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701および761からの直接の出力は、その1軸〜3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701および761は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0137】
しかしながら、加速度センサ701および761から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ(例えばCPU30)、コントローラ7またはサブユニット76のプロセッサ(例えばマイコン751)等のコンピュータが処理を行うことによって、コアユニット70およびサブユニット76に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【0138】
例えば、加速度センサ701および761を搭載するコアユニット70およびサブユニット76が静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサ701および761によって検出される加速度が重力加速度のみであるとして処理する場合)、コアユニット70およびサブユニット76が現実に静的な状態であれば、検出された加速度に基づいてコアユニット70およびサブユニット76の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ701および761の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に1G(重力加速度)が作用しているか否かだけでコアユニット70およびサブユニット76が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コアユニット70およびサブユニット76が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ701および761の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコアユニット70およびサブユニット76がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ701および761からの出力に基づいて、プロセッサがコアユニット70およびサブユニット76の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ701および761からの出力に基づいて、おおよそのコアユニット70およびサブユニット76の傾き具合を推定するような処理としてもよい。このように、加速度センサ701および761をプロセッサと組み合わせて用いることによって、コアユニット70およびサブユニット76の傾き、姿勢、または位置を判定することができる。
【0139】
一方、加速度センサ701および761が動的な状態であることを前提とする場合には、当該加速度センサ701および761が重力加速度成分に加えて加速度センサ701および761の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コアユニット70およびサブユニット76の動き方向等を知ることができる。具体的には、加速度センサ701および761を備えるコアユニット70およびサブユニット76がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ701および761によって生成される加速度信号を処理することによって、コアユニット70およびサブユニット76の様々な動きおよび/または位置を算出することができる。なお、加速度センサ701および761が動的な状態であることを前提とする場合であっても、加速度センサ701および761の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコアユニット70およびサブユニット76の傾きを知ることが可能である。
【0140】
他の実施例では、加速度センサ701および761は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置をそれぞれ備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701および761が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角に変換するものであってもよい。加速度センサ701および761でそれぞれ検知された加速度を示すデータは、通信部75に出力される。
【0141】
ここで、コアユニット70やサブユニット76を把持してプレイヤが振った場合、振り始めは加速して振り終わりは減速となる。したがって、コアユニット70やサブユニット76には、振り始めで振っている方向と同じ方向の加速度が生じた後、徐々に加速度の大きさが減少して、振り終わりで振っている方向とは逆の方向に加速度が生じる。一方、一般的に、加速度センサ701および761から出力される加速度ベクトル(あるいは、加速度の正負)は、コアユニット70やサブユニット76の加速方向とは真逆のベクトルとなる。
【0142】
他の実施形態の例では、加速度センサ701および761の代わりに、少なくとも一方を回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるMEMSジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ701および761と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転(または角速度)を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【0143】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、2つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロスコープとの基本的な差異と同様にジャイロスコープの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【0144】
通信部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を作動させる。また、メモリ752または図示しない不揮発記憶手段には、コアユニット70ごとに固有に設定される識別番号データが記憶される。
【0145】
コアユニット70に設けられた操作部72からの操作信号(コアキーデータ)、加速度センサ701からの加速度信号(コア加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。また、接続ケーブル79を介して、サブユニット76に設けられた操作部78からの操作信号(サブキーデータ)および加速度センサ761からの加速度信号(サブ加速度データ)は、マイコン751に出力される。マイコン751は、入力した各データ(コアキーデータ、サブキーデータ、コア加速度データ、サブ加速度データ、処理結果データ)を通信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から通信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期でデータを収集して送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(Bluetooth;登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、通信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として、コントローラ7に固有のコントローラ識別番号を付与して無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その微弱電波信号をアンテナ754から放射する。つまり、コアユニット70に設けられた操作部72からのコアキーデータ、サブユニット76に設けられた操作部78からのサブキーデータ、コアユニット70に設けられた加速度センサ701からのコア加速度データ、サブユニット76に設けられた加速度センサ761からのサブ加速度データ、撮像情報演算部74からの処理結果データ、およびコントローラ識別番号は、無線モジュール753で微弱電波信号に変調されてコアユニット70から放射される。そして、ゲーム装置3の通信ユニット6でその微弱電波信号を受信し、ゲーム装置3で当該微弱電波信号を復調や復号することによって、一連の操作情報(コアキーデータ、サブキーデータ、コア加速度データ、サブ加速度データ、および処理結果データ)およびコントローラ識別番号を取得することができる。そして、ゲーム装置3のCPU30は、取得した操作情報およびコントローラ識別番号とゲームプログラムとに基づいて、ゲーム処理を行う。
【0146】
図12に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイするためには、プレイヤは、一方の手(例えば右手)でコアユニット70を把持し(図13および図14参照)、他方の手(例えば左手)でサブユニット76を把持する(図16参照)。そして、プレイヤは、コアユニット70の前面(撮像情報演算部74が撮像する光の入射口側)がモニタ2に向くようにコアユニット70を把持する。一方、モニタ2の表示画面近傍には、2つのマーカ8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。
【0147】
プレイヤがその前面がモニタ2に向くようにコアユニット70を把持することによって、撮像情報演算部74には2つのマーカ8Lおよび8Rが出力した赤外光が入射する。そして、赤外線フィルタ741およびレンズ742を介して、入射した赤外光を撮像素子743が撮像し、当該撮像画像を画像処理回路744が処理する。ここで、撮像情報演算部74では、マーカ8Lおよび8Rから出力される赤外線成分を検出することで、当該マーカ8Lおよび8Rの位置や面積情報を取得する。具体的には、撮像情報演算部74は、撮像素子743が撮像した画像データを解析して、面積情報からマーカ8Lおよび8Rからの赤外光ではあり得ない画像を除外し、輝度が高い位置をマーカ8Lおよび8Rそれぞれの位置として判別する。そして、撮像情報演算部74は、判別されたそれらの位置座標やそれらの重心座標等を取得し、上記処理結果データとして出力する。このような処理結果データをゲーム装置3へ送信することによって、ゲーム装置3では、上記位置座標や重心座標に基づいて、マーカ8Lおよび8Rに対する撮像情報演算部74、すなわちコアユニット70の動き、姿勢、位置等に関連のある操作信号を得ることができる。具体的には、コアユニット70が動かされることによって、通信部75から送信される画像内の高輝度点の位置が変化するため、高輝度点の位置の変化に対応させた方向入力や座標入力を行うことで、コアユニット70の移動方向に沿った方向入力や座標入力を行うことができる。
【0148】
このように、コアユニット70の撮像情報演算部74によって固定的に設置されたマーカ(実施例では、2つのマーカ8Lおよび8Rからの赤外光)を撮像することによって、ゲーム装置3におけるゲーム処理において、コアユニット70の動き、姿勢、位置等に関連した処理結果データを用いることが可能となり、ボタンを押下するような操作ボタンや操作キーとは異なったより直感的な操作入力となる。また、上述したように上記マーカは、モニタ2の表示画面近傍に設置されているため、マーカに対する位置をモニタ2の表示画面に対するコアユニット70の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コアユニット70の動き、姿勢、位置等による処理結果データは、モニタ2の表示画面に直接作用する操作入力として用いることができる。
【0149】
図13および図14を参照して、プレイヤがコアユニット70を一方の手で把持した状態について説明する。なお、図13は、プレイヤがコアユニット70を右手で把持した状態をコアユニット70の前面側から見た一例である。図14は、プレイヤがコアユニット70を右手で把持した状態をコアユニット70の左側面側から見た一例である。
【0150】
図13および図14に示すように、コアユニット70は、全体として大人や子供の片手で把持可能な大きさである。そして、プレイヤの親指をコアユニット70の上面(例えば、十字キー72a付近)に添え、プレイヤの人差し指をコアユニット70下面の凹部(例えば、操作ボタン72i付近)に添えたとき、コアユニット70の前面に設けられている撮像情報演算部74の光入射口がプレイヤの前方方向に露出する。なお、このようなコアユニット70に対する把持状態は、プレイヤの左手であっても同様に行えることは言うまでもない。
【0151】
ここで、図15に示すように、マーカ8Lおよび8Rは、それぞれ視野角θ1を有している。また、撮像素子743は、視野角θ2を有している。例えば、マーカ8Lおよび8Rの視野角θ1は共に34°(半値角)であり、撮像素子743の視野角θ2は41°である。そして、撮像素子743の視野角θ2の中にマーカ8Lおよび8Rが共に存在し、マーカ8Lの視野角θ1の中でかつマーカ8Rの視野角θ1の中に撮像素子743が存在するとき、ゲーム装置本体5は、2つのマーカ8Lおよび8Rによる高輝度点に関する位置データを用いてコアユニット70の位置を判定する。
【0152】
一方、撮像素子743の視野角θ2の中に1つのマーカ8Lまたは8Rだけが存在するとき、またはマーカ8Lの視野角θ1およびマーカ8Rの視野角θ1の何れか一方の中に撮像素子743が存在するとき、2つのマーカ8Lおよび8Rの何れか一方だけによる高輝度点に関する位置データを用いてコアユニット70の位置を判定する。
【0153】
また、上述したようにコアユニット70に設けられた加速度センサ701からの出力(コア加速度データ)を用いることによって、コアユニット70の傾き、姿勢、または位置を決定することができる。つまり、プレイヤがコアユニット70を把持した手を上下左右等に動かすことによって、コアユニット70は、プレイヤの手の運動や向きに応じた操作入力手段として機能する。
【0154】
次に、図16を参照して、プレイヤがサブユニット76を一方の手で把持した状態について説明する。なお、図16は、プレイヤがサブユニット76を左手で把持した状態をサブユニット76の右側面側から見た一例である。
【0155】
図16に示すように、サブユニット76は、全体として大人や子供の片手で把持可能な大きさである。例えば、プレイヤの親指をサブユニット76の上面(例えば、スティック78a付近)に添え、プレイヤの人差し指をサブユニット76前面(例えば、操作ボタン78dおよび78e付近)に添え、プレイヤの中指、薬指、および小指をサブユニット76下面に添えるように、サブユニット76を把持することが可能である。なお、このようなサブユニット76に対する把持状態は、プレイヤの右手であっても同様に行えることは言うまでもない。このように、サブユニット76は、プレイヤが片手で把持した状態でスティック78aや操作ボタン78dおよび78e等の操作部78を容易に操作することができる。このように、サブユニット76の本体(ハウジング77)は、サブユニット76全体の側周をプレイヤが片手で握持可能な形状および大きさで形成される。
【0156】
また、上述したようにサブユニット76に設けられた加速度センサ761からの出力(サブ加速度データ)を用いることによって、サブユニット76の傾き、姿勢、または位置を決定することができる。つまり、プレイヤがサブユニット76を把持した手を上下左右等に動かすことによって、サブユニット76は、プレイヤの手の運動や向きに応じた操作入力手段として機能する。
【0157】
本発明を適用して実現するゲームの一例として、仮想ゲーム空間で行うサッカーゲームがある。以下、サッカーゲームを一例として、ゲームシステム1において行われるゲーム処理の詳細を説明する。なお、図17は、ゲーム装置本体5のメインメモリ33に記憶される主なデータを示す図である。
【0158】
図17に示すように、メインメモリ33には、操作情報Da、コントローラ識別番号データDb、移動ベクトルデータDc、姿勢ベクトルデータDd、指示座標データDe、仮想空間位置座標データDf、指示対象選手データDg、位置データDh、および画像データDi等が記憶される。なお、後述するように、各コントローラ7は、監督モードまたは一時監督モードのときに、当該コントローラ7の座標入力により特定の選手キャラクタの動作を制御することができるが、当該特定の選手キャラクタのことを指示対象選手と呼ぶ。なお、メインメモリ33には、図17に示す情報に含まれるデータの他、ゲームに登場するオブジェクト等に関するデータや仮想ゲーム空間に関するデータ等、ゲーム処理に必要なデータが記憶される。これらのデータは、光ディスク4に記憶されるゲームプログラムをCPU30が実行することにより生成されるデータである。
【0159】
操作情報Daは、コントローラ7から送信データとして送信されてくる一連の操作情報であり、最新の操作情報に更新される。操作情報Daには、上述の処理結果データに相当する第1座標データDa1および第2座標データDa2が含まれる。第1座標データDa1は、撮像素子743が撮像した撮像画像に対して、2つのマーカ8Lおよび8Rのうちの一方の画像の位置(撮像画像内における位置)を表す座標のデータである。第2座標データDa2は、他方のマーカの画像の位置(撮像画像内における位置)を表す座標のデータである。例えば、マーカの画像の位置は、撮像画像におけるXY座標系によって表される。
【0160】
また、操作情報Daには、撮像画像から得られる処理結果データの一例の座標データ(第1座標データDa1および第2座標データDa2)の他、キーデータDa3および加速度データDa4等が含まれる。具体的には、キーデータDa3は、操作部72から得られるコアキーデータおよび操作部78から得られるサブキーデータである。また、加速度データDa4は、加速度センサ701から得られるコア加速度データおよび加速度センサ761から得られるサブ加速度データである。なお、ゲーム装置3に備える通信ユニット6は、コントローラ7から所定間隔例えば5msごとに送信される操作情報Daを受信し、通信ユニット6に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である例えば1フレーム毎(1/60秒)に読み出され、その最新の情報がメインメモリ33に記憶される。また、操作情報Daには、最新の操作情報のみならず、必要に応じて、過去の所定時間分の操作情報が履歴として格納される。また、複数のコントローラ7によって、ゲーム装置本体5が操作される場合、各コントローラ7からそれぞれ送信された操作情報がコントローラ識別番号毎に対応付けられて、操作情報Daに格納される。
【0161】
コントローラ識別番号データDbは、後述する操作チームおよび操作モード別に操作情報を採用するコントローラ識別番号が記述される。例えば、コントローラ識別番号データDbは、チームAの選手モード用コントローラ識別番号Db1、チームAの監督モード用コントローラ識別番号Db2、チームBの選手モード用コントローラ識別番号Db3、およびチームBの監督モード用コントローラ識別番号Db4等が記述される。なお、コントローラ識別番号データDbは、コアユニット70内に記憶される識別番号データ(前述)が当該コアユニット70から送信されて記憶されたものである。また、コントローラ識別番号Dbは、常にすべてが設定されている必要はなく、プレイヤの希望がなかったものについては未設定を示す情報が設定される。また、未設定を示す情報が設定されたチーム・モードについては、コンピュータ制御するようにしてもかまわない。また、3以上のチームが存在するようなゲームであれば、そのチーム数に応じたコントローラ識別番号データDbが設定される。また、チームの概念が無いゲームであれば、選手モード用コントローラが少なくとも1つ設定されればよい。なお、1つのコントローラの識別番号データを、複数のコントローラ識別番号データDbに設定してもよい。この場合には、例えば、1つのコントローラの操作により、選手モードの処理と監督モードの処理とを実行できる。
【0162】
移動ベクトルデータDcは、仮想ゲーム空間に登場する各選手キャラクタやボールオブジェクトがそれぞれ仮想ゲーム空間内を移動する方向や速度を示す移動ベクトルデータである。例えば、移動ベクトルデータDcは、プレイヤキャラクタPCの移動ベクトルデータDc1、ノンプレイヤキャラクタNPCの移動ベクトルデータDc2、指示対象選手の移動ベクトルデータDc3、およびボールオブジェクトBの移動ベクトルデータDc4等が記述される。なお、本実施例では、仮想ゲーム空間は3次元空間である。しかしながら、本実施例には2次元空間のゲームにも適用可能な要素が含まれることは、当業者には容易に把握可能である。
【0163】
姿勢ベクトルデータDdは、仮想ゲーム空間におけるプレイヤキャラクタPCの上体の姿勢を示すデータである。例えば、姿勢ベクトルデータDdは、プレイヤキャラクタ座標系において、プレイヤキャラクタPCの腰から頭に向かうベクトルデータ(姿勢ベクトルデータVc)が記述される。この姿勢ベクトルデータVcは、3次元ベクトルである。
【0164】
指示座標データDeは、第1座標データDa1および第2座標データDa2に基づいて得られるモニタ2の画面座標系に基づいた指示座標を示すデータである。例えば、指示座標は、第1座標データDa1から第2座標データDa2への方向を示す方向データ(例えば、第1座標データDa1の位置を始点とし第2座標データDa2の位置を終点とするベクトルデータ)や第1座標データDa1と第2座標データDa2との中点を示す中点座標データに基づいて算出される。ここで、2つのマーカ(マーカ8Lおよび8R)の画像を1つの対象画像としてみた場合、中点座標データは、対象画像の位置を示すことになる。仮想空間位置座標データDfは、上記指示座標に対応する仮想ゲーム空間の仮想空間位置を示す座標データである。仮想空間位置座標データDfは、指示座標データDe、仮想カメラのパラメータ、および仮想空間の構成データ(地形データやオブジェクト位置データ)に基づいて算出される。なお、複数のコントローラ7によって、ゲーム装置本体5が操作される場合、各コントローラ7からそれぞれ送信された第1座標データDa1および第2座標データDa2に基づいて算出された指示座標および仮想空間位置がそれぞれコントローラ識別番号毎に対応付けられて、指示座標データDeおよび仮想空間位置座標データDfに格納される。
【0165】
指示対象選手データDgは、各コントローラ7の指示対象選手を示すデータである。例えば、指示対象選手データDgは、チームAの選手モード用コントローラ7の指示対象選手を示すデータDg1、チームAの監督モード用コントローラ7の指示対象選手を示すデータDg2、チームBの選手モード用コントローラ7の指示対象選手を示すデータDg3、およびチームBの監督モード用コントローラ7の指示対象選手を示すデータDg4等が記述される。
【0166】
位置データDhは、仮想ゲーム空間に登場するキャラクタやオブジェクトがそれぞれ配置される位置を示す仮想ゲーム空間における座標データである。画像データDiは、仮想ゲーム空間に登場するキャラクタやオブジェクトや背景を生成するための画像データである。
【0167】
次に、図18〜図29を参照して、ゲーム装置本体5において行われるゲーム処理の詳細を説明する。なお、図18は、ゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャートである。図19は、図18におけるステップ15のサブユニット移動処理の詳細な動作を示すサブルーチンである。図20は、図18におけるステップ16のパス処理の詳細な動作を示すサブルーチンである。図21は、図18におけるステップ17の第1シュート処理の詳細な動作を示すサブルーチンである。図22は、図18におけるステップ18の第2シュート処理の詳細な動作を示すサブルーチンである。図23は、図18におけるステップ19の一時監督モード処理の詳細な動作を示すサブルーチンである。図24は、図18におけるステップ20の監督モード処理の詳細な動作を示すサブルーチンである。図25は、モニタ2に表示されるゲーム画像の一例である。図26は、プレイヤキャラクタPCに設定される姿勢ベクトルVcを説明するための図である。図27は、パスの目標位置TPと領域AおよびBを説明するための図である。図28は、ボールオブジェクトBが移動する軌道の一例を示す図である。図29は、ノンプレイヤキャラクタNPCに設定される移動ベクトルVmnpcの一例を示す図である。なお、図18〜図24に示すフローチャートにおいては、ゲーム処理のうち、仮想ゲーム空間において、サッカーゲームが実行される処理について主に説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図18〜図24では、CPU30が実行する各ステップを「S」と略称する。なお、図25に示される仮想ゲーム空間の座標軸は、左右方向(水平方向でありかつタッチラインが伸びる方向)がX方向であり、上下方向(垂直方向)がY方向であり、奥行き方向(水平方向でありかつゴールラインが伸びる方向)がZ方向として説明する。
【0168】
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図18〜図24に示すフローチャートは、以上の処理が完了した後に当該ゲームプログラムをCPU30が実行することにより行われるゲーム処理を示すフローチャートである。
【0169】
図18において、CPU30は、ゲーム処理の初期設定処理を行い(ステップ10)、処理を次のステップに進める。例えば、当該サッカーゲームは、選手キャラクタがチームAとチームBとに別れてゲームが進行し、プレイヤが何れか一方のチーム(チームXとする)の選手キャラクタを操作することが可能となっている。そして、プレイヤは、チームXの選手キャラクタを直接的に操作する選手モードと、チームXの選手キャラクタを総合的に統率する監督モードとによって、操作モードを選択することが可能である。なお、選手モードと監督モードとの両方を設けることは必須ではなく、選手モードのみでも良いし、監督モードのみでもよい。したがって、上記ステップ10において、CPU30は、各チームおよび各モードで操作するコントローラ7をそれぞれ区別して管理するために、チームAの選手モード用コントローラ識別番号、チームAの監督モード用コントローラ識別番号、チームBの選手モード用コントローラ識別番号、およびチームBの監督モード用コントローラ識別番号を設定して、コントローラ識別番号データDbに記述する。
【0170】
具体的には、使用するコントローラ7(複数の場合はそれぞれ)の操作により、モニタ2上に表示されるメニュ画面においてチーム(AまたはB)およびモード(選手または監督)を選択し、当該選択をしたコントローラ7内に記憶される識別番号データが、対応するコントローラ識別番号Dbに設定される。例えば、あるコントローラ7の操作により、チームAを選択し、選手モードを選択した場合、そのコントローラ7の識別番号が、チームAの選手モード用コントローラ識別番号Db1に設定される。また、上記ステップ10においては、CPU30は、サッカーゲームを開始する前の初期設定(ゲームフィールドの設定、各選手キャラクタ、ボールオブジェクトの初期配置等)を行って、メインメモリ33に記述された各データを更新する。
【0171】
次に、CPU30は、ゲームを開始するか否かを判断する(ステップ11)。ゲームを開始する条件としては、例えば、ゲーム開始となる条件が満たされたことや、プレイヤがゲームを開始する操作を行ったこと等がある。CPU30は、ゲームを開始しない場合に上記ステップ11の処理を繰り返し、ゲームを開始する場合に次のステップ12に処理を進める。
【0172】
ステップ12〜ステップ24の各処理は、上述したゲームの処理単位(例えば、1/60秒)毎に繰り返される処理であり、チームAおよびチームBそれぞれ(チームX)について行われる処理である。以下の説明では、チームAおよびチームBそれぞれについて行う処理を、チームXについて行う処理として記載する。
【0173】
ステップ12において、CPU30は、コントローラ7(複数の場合はそれぞれ)から操作情報を受信して、各コントローラ識別番号別に操作情報Daに格納する。次に、CPU30は、コントローラ識別番号データDbを参照して、チームXについて選手モード用のコントローラ識別番号Dbが設定されているか否かを判断する(ステップ13)。そして、CPU30は、チームXについて選手モード用のコントローラ識別番号Dbが設定されている場合、次のステップ14に処理を進める。一方、CPU30は、チームXについて選手モード用のコントローラ識別番号Dbが設定されていない場合、次のステップ25に処理を進める。
【0174】
ステップ14において、CPU30は、チームXの各ノンプレイヤキャラクタNPCの移動ベクトルVmnpcを所定の自動移動アルゴリズムを用いて設定して、移動ベクトルデータDcに格納する。次に、CPU30は、サブユニット移動処理(ステップ15)、パス処理(ステップ16)、第1シュート処理(ステップ17)、第2シュート処理(ステップ18)、一時監督モード処理(ステップ19)、および監督モード処理(ステップ20)を経て、処理をステップ21に進める。なお、ステップ15〜ステップ20で行う詳細な処理については、後述する。
【0175】
例えば、図25に示すように、プレイヤがチームAに所属する選手キャラクタPA(白抜き図形で示す)を選手モードで操作し、チームBに所属するコンピュータ制御の選手キャラクタPB(塗りつぶし図形で示す)とサッカーゲームで対戦する場合を想定する。この場合、プレイヤは、選手キャラクタPAの何れか(図25においては、選手キャラクタPA1)をプレイヤキャラクタPCとして直接的に操作し、他の選手キャラクタPAがノンプレイヤキャラクタNPCとなる。また、選手キャラクタPBは、全てノンプレイヤキャラクタNPCとなる。そして、選手キャラクタの何れかがボールオブジェクトBをキープしているチームが攻撃側のチームであり(図25においては、プレイヤキャラクタPA1がボールオブジェクトBをキープしているのでチームAが攻撃側のチーム)と、他方のチームが守備側のチームである(図25においては、チームB)。ここで、CPU30は、上記ステップ14において、チームXが守備側の場合(チームXがチームBの場合)、ボールオブジェクトBをキープしている選手キャラクタ(プレイヤキャラクタPA1)の位置データを基準とする所定範囲に配置されたチームX(チームB)の選手キャラクタ(図25においては、選手キャラクタPB1)の移動ベクトルを、ボールオブジェクトBをキープしている選手キャラクタの上体の姿勢ベクトル(後述)に応じて設定する。具体的には、本実施例では、CPU30は、上記所定範囲に配置された選手キャラクタの移動ベクトルを、「ボールオブジェクトBをキープしている選手キャラクタ(PA1)の姿勢ベクトルを仮想水平面に投影したベクトルA(X成分が姿勢ベクトルのX成分に等しく、Y成分が0で、Z成分が姿勢ベクトルのZ成分に等しいベクトル)」に基づいた方向になるように設定する。なお、前述の自動移動アルゴリズムによって設定された当該選手キャラクタの移動ベクトルを、当該ベクトルAで補正(典型的には加算)してもよい。
【0176】
一方、ステップ13においてNoの場合(すなわち、チームXの選手モード用のコントローラ7が未設定の場合)、ステップ25において、CPU30は、チームXの全選手キャラクタの移動ベクトルVmnpcを所定の自動移動アルゴリズムを用いて設定して、移動ベクトルデータDcに格納する(つまり、チームXに選手モード用のコントローラ7が設定されていないため、チームXの全選手キャラクタがノンプレイヤキャラクタNPCとなる)。なお、上記ステップ25においても、上記ステップ14と同様に上記所定範囲に配置された選手キャラクタの移動ベクトルの上記姿勢ベクトルに応じた設定または補正が行われる。次に、CPU30は、監督モード処理(ステップ20)を経て、処理をステップ21に進める。
【0177】
ステップ21において、CPU30は、移動ベクトルデータDcに記述された各移動ベクトルデータに基づいて、各キャラクタやオブジェクトを仮想ゲーム空間内で移動させ、ゲーム画像をモニタ2に表示する。次に、CPU30は、移動ベクトルデータDcに記述された各移動ベクトルデータを、それぞれ所定量減衰させて移動ベクトルデータDcを更新する(ステップ22)。そして、CPU30は、ゴール処理、ファウル処理、プレイヤキャラクタPCの切替処理等、サッカーゲームで行われる他の処理を行って(ステップ23)、処理を次のステップに進める。
【0178】
次に、CPU30は、ゲームを終了するか否かを判断する(ステップ24)。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。CPU30は、ゲームを終了しない場合に上記ステップ12に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
【0179】
次に、図19を参照して、上記ステップ15におけるサブユニット移動処理について、詳細な動作を説明する。
【0180】
図19において、CPU30は、操作情報DaからチームXの選手モード用サブユニットから送信された操作情報に含まれる最新のサブキーデータを参照し(ステップ41)、処理を次のステップに進める。ここで、上記ステップ12において、操作情報Daは、各コントローラ識別番号別にそれぞれのコントローラ7から送信された操作情報が格納されており、コントローラIDデータDbには、チームXの選手モード用コントローラ識別番号が記述されている。したがって、CPU30は、コントローラIDデータDbに記述されたチームXの選手モード用コントローラ識別番号に基づいて、操作情報Daから選手モード用サブユニットから送信された操作情報を抽出することが可能となる。
【0181】
次に、CPU30は、上記ステップ41で参照した選手モード用サブユニットのサブキーデータに基づいて、プレイヤから方向指示入力があるか否かを判断する(ステップ42)。上述したように、サブユニット76は、スティック78aが設けられており、プレイヤが傾倒可能なスティック78aを倒すことによって方向指示入力が可能である。そして、CPU30は、プレイヤから方向指示入力がある場合、次のステップ43に処理を進める。一方、CPU30は、プレイヤから方向指示入力がない場合、次のステップ47に処理を進める。
【0182】
ステップ43において、CPU30は、チームXの選手モード用サブユニット76からの方向指示入力に基づいて、チームXのプレイヤキャラクタPCの移動ベクトルVmpcを算出して、移動ベクトルデータDcを更新し、処理を次のステップに進める。例えば、図26に示すように、仮想ゲーム空間におけるプレイヤキャラクタPCの移動方向および移動速度を示すデータとして、移動ベクトルVmpcが設定される。上記ステップ43において、CPU30は、移動ベクトルデータDcに格納されているプレイヤキャラクタPCの現在の移動ベクトルVmpcを基準として、スティック78aの傾倒方向に応じて決定される仮想ゲーム空間における方向で、かつスティック78aの傾倒角度に応じた大きさの新たな移動ベクトルVmpcを算出する。この処理によって、プレイヤが操作するチームXのプレイヤキャラクタPCは、当該プレイヤが所持するサブユニット76のスティック78aを操作することによって、仮想ゲーム空間における移動方向および移動速度が制御される。
【0183】
次に、CPU30は、操作情報DaからチームXの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する(ステップ44)。そして、CPU30は、サブ加速度データが示すZ軸正方向(図9参照)の加速度が所定値以上であるか否かを判断する(ステップ45)。そして、CPU30は、Z軸正方向の加速度が所定値以上である場合、前述のようにステップ43で決定された、チームXにおけるプレイヤキャラクタPCの移動ベクトルVmpcの大きさを所定アルゴリズムにより増加させて(例えば、当該Z軸正方向の加速度の大きさに応じて増加させて、または、所定値だけ増加させて、または、n倍(nは1より大きい数値)して)、プレイヤキャラクタPCの移動ベクトルデータDcを更新し(ステップ46)、次のステップ47に処理を進める。このステップ46の処理によって、プレイヤが操作するプレイヤキャラクタPCの仮想ゲーム空間における移動速度は、プレイヤがサブユニット76を前方に傾けることによって(すなわち、Z軸正方向がZ軸負方向よりも低い位置を指す方向となるようにすることによって)加速される。一方、CPU30は、Z軸方向の加速度の大きさが所定値未満である場合、そのまま次のステップ47に処理を進める。なお、ステップ45において、Z軸負方向の加速度が所定値(マイナス値)よりも小さいか否かを判断し、当該判断がYesのときには、チームXにおけるプレイヤキャラクタPCの移動ベクトルVmpcの大きさを所定アルゴリズムにより減少させて(例えば、当該Z軸負方向の加速度の大きさに応じて減少させて、または、所定値だけ減少させて、または、m倍(mは1より小さい数値)して)、プレイヤキャラクタPCの移動ベクトルデータDcを更新するようにしてもよい。
【0184】
ステップ47において、CPU30は、操作情報DaからチームXの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する。そして、CPU30は、サブ加速度データに応じて、チームXにおけるプレイヤキャラクタPCの姿勢ベクトルVcを算出して、姿勢ベクトルデータDdを更新し、処理を次のステップに進める。
【0185】
例えば、図26に示すように、仮想ゲーム空間におけるプレイヤキャラクタPCの姿勢を示すデータとして、姿勢ベクトルVcが設定される。ここで、姿勢ベクトルVcは、プレイヤキャラクタ座標系に基づいて設定される。プレイヤキャラクタ座標系は、仮想ゲーム空間におけるプレイヤキャラクタPCの正面方向をZp軸方向とし(典型的には、プレイヤキャラクタPCの移動ベクトルVmpcの方向をZp軸方向とする。または、プレイヤキャラクタPCの移動方向ベクトルとプレイヤキャラクタPCの向きベクトル(前方ベクトル)とを独立して制御する場合には、プレイヤキャラクタPCの向きベクトルの方向を、Zp軸方向とが一致するようにしてもよい)、プレイヤキャラクタPCの前方方向をZp軸正方向とする。また、仮想ゲーム空間におけるプレイヤキャラクタPCの左右方向をXp軸方向とし、プレイヤキャラクタPCから見て右方向をXp軸正方向とする。また、仮想ゲーム空間におけるプレイヤキャラクタPCの垂直方向をYp軸方向とし、上方向をYp軸正方向とする。姿勢ベクトルVcは、プレイヤキャラクタPCの腰部から頭部に向かうベクトルデータとして設定されている。姿勢ベクトルVcは、典型的にはプレイヤキャラクタ座標系におけるベクトルデータである。
【0186】
上記ステップ48において、CPU30は、サブ加速度データが示すX軸方向(図9参照)の加速度をプレイヤキャラクタ座標系のXp軸方向に対応付け、サブ加速度データが示すY軸方向の加速度をプレイヤキャラクタ座標系のYp軸方向に対応付け、サブ加速度データが示すZ軸方向の加速度をプレイヤキャラクタ座標系のZp軸方向に対応付けて、姿勢ベクトルVcを算出する。
【0187】
例えば、上記ステップ48では、一例としてサブユニット76の傾きに応じて、プレイヤキャラクタPCの姿勢が制御される。この場合、具体的には、サブ加速度データが示すX軸方向の加速度の値に応じて(典型的には、比例して)、プレイヤキャラクタ座標系における姿勢ベクトルデータのXp軸方向の値を決定し、サブ加速度データが示すY軸方向の加速度の正負を反転した値に応じて(典型的には、比例して)、プレイヤキャラクタ座標系における姿勢ベクトルデータのYp軸方向の値を決定し、サブ加速度データが示すZ軸方向の加速度の値に応じて(典型的には、比例して)、プレイヤキャラクタ座標系における姿勢ベクトルデータのZp軸方向の値を決定する(それぞれの比例定数は、共通とするのが典型的であるがこれに限らない)。より具体的には、例えば、サブ加速度データが示すX軸方向の加速度の値:Y軸方向の加速度の値:Z軸方向の加速度の値=プレイヤキャラクタ座標系における姿勢ベクトルデータのXp軸方向の値:姿勢ベクトルデータのYp軸方向の値:姿勢ベクトルデータのZp軸方向の値となるように、姿勢ベクトルデータを決定する。または、サブ加速度データが示すX軸方向の加速度の値に応じて、プレイヤキャラクタ座標系における姿勢ベクトルデータのXp軸方向の値を決定し、サブ加速度データが示すZ軸方向の加速度の値に応じて、プレイヤキャラクタ座標系における姿勢ベクトルデータのZp軸方向の値を決定するようにし、プレイヤキャラクタ座標系における姿勢ベクトルデータのYp軸方向の値は一定としてもよい。
【0188】
例えば、上記ステップ48では、一例としてサブユニット76の動き(平行移動)に応じて、プレイヤキャラクタPCの姿勢が制御される。例えば、プレイヤがサブユニット76を右方向に動かした場合、サブユニット76にX軸正方向の加速度が生じる(プレイヤがサブユニット76を右方向に動かした場合に、当該動きの当初に出力されるX軸正方向の加速度を検出してもよいし、当該動きを止めるときに出力されるX軸負方向の加速度を検出してもよい)。そして、サブユニット76に設けられた加速度センサ761が上記X軸正方向の加速度を検出し、サブユニット76から当該加速度を示すサブ加速度データがゲーム装置本体5へ送信される。一方、CPU30は、受信したサブ加速度データが示す上記X軸正方向の加速度に応じて、当該加速度の大きさでXp軸正方向のベクトルを姿勢ベクトルVcに足して、新たな姿勢ベクトルVcを算出する。そして、プレイヤキャラクタPCの上体は、新たに算出された姿勢ベクトルVcに応じてXp軸正方向に傾くことになる。そして、プレイヤがサブユニット76を前方向に動かした場合、サブユニット76にZ軸正方向の加速度が生じる。そして、サブユニット76に設けられた加速度センサ761が、上記Z軸正方向の加速度を検出し、サブユニット76から当該加速度を示すサブ加速度データがゲーム装置本体5へ送信される。一方、CPU30は、受信したサブ加速度データが示す上記Z軸正方向の加速度に応じて、当該加速度の大きさでZp軸正方向のベクトルを姿勢ベクトルVcに足して、新たな姿勢ベクトルVcを算出する。そして、プレイヤキャラクタPCの上体は、新たに算出された姿勢ベクトルVcに応じてZp軸正方向に傾くことになる。このステップ48の処理によって、プレイヤが操作するプレイヤキャラクタPCの仮想ゲーム空間における姿勢は、プレイヤがサブユニット76全体を動かす動作に応じて変化する。
【0189】
ここで、上記ステップ14およびステップ25において、ボールオブジェクトBをキープしているプレイヤキャラクタPCの所定範囲に配置された相手チームの選手キャラクタ(例えば、図25に示す選手キャラクタPB1)の移動ベクトルは、プレイヤキャラクタPCの姿勢ベクトルVcに応じて補正される。具体的には、姿勢ベクトルVcを仮想水平面に投影したベクトルを、上記相手チームの選手キャラクタの移動ベクトルに加えることによって補正されるため、当該選手キャラクタが移動する方向は、仮想ゲーム空間の垂直方向に対して姿勢ベクトルVcが傾く方向へ変化する。つまり、プレイヤがサブユニット76全体を動かす動作によって変化したプレイヤキャラクタPCの姿勢に応じて相手チームの選手キャラクタが移動することになり、いわゆるサッカーゲームでドリブル中のフェイントに相手選手がつられるような動作が表現される。
【0190】
図19に戻り、上記ステップ48の処理の後、CPU30は、チームXに所属する何れかの選手キャラクタがボールオブジェクトBを保持しているか否かを判断する(ステップ49)。そして、CPU30は、チームXに所属する何れかの選手キャラクタがボールオブジェクトBを保持している場合(すなわち、チームXが攻撃側の場合)、次のステップ50に処理を進める。一方、CPU30は、チームXに所属する選手キャラクタがボールオブジェクトBを保持していない場合、次の上記ステップ19に処理を進める。
【0191】
ステップ50において、CPU30は、上記ステップ47で参照した最新のサブ加速度データが示すX軸方向の加速度の大きさ(絶対値)が所定加速度A1以上(例えば、0.5G以上としてよいが、任意の値でよい)であるか否かを判断する。そして、CPU30は、X軸方向の加速度の大きさが当該所定加速度A1以上である場合、次のステップ51に処理を進める。一方、CPU30は、X軸方向の加速度の大きさが当該所定加速度A1未満である場合、当該サブルーチンによる処理を終了して、上記ステップ16の処理へ進める。
【0192】
ステップ51において、CPU30は、操作情報DaからチームXの選手モード用サブユニットから送信された操作情報に含まれるサブ加速度データの履歴を参照し、サブ加速度データの履歴が示すX軸方向の加速度の方向が直近の所定時間内に所定加速度A1以上の大きさでn回(nは、1以上の整数)反転しているか否かを判断する。例えば、サブ加速度データの履歴を参照して、「直近の過去所定時間内に、最新のサブ加速度データ(ステップ50において加速度A1以上と判定されたデータ)が示す加速度とは正負が反対でかつ絶対値が加速度A1以上のデータが存在する」か否かを判断する(n=1の場合)。または、「直近の過去所定時間内に、最新のサブ加速度データが示す加速度とは正負が反対でかつ絶対値が加速度A1以上のデータが存在し、さらに、当該データより前に、当該データとは正負が反対で絶対値が加速度A1以上のデータが存在する」か否かを判断する(n=2の場合)。または、サブ加速度データの履歴が示すX軸方向の加速度の方向が所定加速度A1以上の大きさでn回反転し、かつ、反転の間隔がそれぞれ所定時間以内であるか否かを判断してもよい。
【0193】
そして、CPU30は、X軸方向の加速度の方向が所定時間内に反転している場合、チームXにおけるプレイヤキャラクタPCの移動ベクトルVmpcにXp軸方向の所定の大きさのベクトル(ベクトルの大きさは、固定でもよいし、サブ加速度データが示すX軸方向の加速度の大きさに比例した大きさとしてもよい。ベクトルの向きは、X軸方向の加速度が正ならXp軸の正方向であり、X軸方向の加速度が負ならXp軸の負方向)を加算して、移動ベクトルVmpcとする。(ステップ52)、当該サブルーチンによる処理を終了して、上記ステップ16の処理へ進める。このステップ50〜ステップ52の処理によって、プレイヤが操作するプレイヤキャラクタPCの仮想ゲーム空間における移動速度は、プレイヤがサブユニット76を左右(つまり、X軸方向)に振り動かすことによってジグザグに移動するように移動制御される。一方、CPU30は、X軸方向の加速度の方向が所定時間内に反転していない場合、そのまま当該サブルーチンによる処理を終了して、上記ステップ16の処理へ進める。
【0194】
なお、上述したサブユニット移動処理については、以下のようにしてもよい。第1の例として、最新のサブ加速度データが示すX軸方向の加速度の大きさ(絶対値)が所定値(例えば、重力加速度(1.0G))以内の場合、ステップ48において、最新のサブ加速度データが示すX軸方向の加速度を用いた姿勢ベクトルの制御を行う。第2の例として、最新のサブ加速度データが示すX軸方向の加速度の大きさ(絶対値)が当該所定値より大きい場合、ステップ48において、プレイヤキャラクタPCが上体または全身をXp軸方向に大きく振る動作をするような(フェイントを表現した姿勢をするような)動作制御をする。
【0195】
さらに、上記サブユニット移動処理の第1の例について、以下のようにしてもよい。第3の例として、最新のサブ加速度データが示すX軸方向の加速度の大きさ(絶対値)が当該所定値以内で、かつ、サブ加速度データの履歴が示すX軸方向の加速度の方向が直近の所定時間内に加速度A1以上の大きさでn回(nは1以上の整数)反転している場合、プレイヤキャラクタPCの移動ベクトルVmpcにXp軸方向の所定の大きさのベクトルを加算して、移動ベクトルVmpcとする。第4の例として、最新のサブ加速度データが示すX軸方向の加速度の大きさ(絶対値)が所定値A2以内で、かつ、上記第3の例以外の場合、ステップ48において、最新のサブ加速度データが示すX軸方向の加速度を用いた姿勢ベクトルの制御を行う。そして、上記第1の例や第4の例の場合には、ステップ14とステップ25において前述した「プレイヤキャラクタPCの所定範囲に配置された相手チームの選手キャラクタ」が、プレイヤキャラクタPCのフェイントにつられる移動制御はしないようにしてもよい。
【0196】
このように、ステップ15におけるサブユニット移動処理においては、サブユニット76に設けられた方向指示部(スティック78a)でプレイヤキャラクタPCの移動方向(さらには、付加的に移動速度)が制御されながら、サブユニット76に設けられた加速度センサ761から出力される加速度データに応じてプレイヤキャラクタPCの姿勢が制御される。つまり、プレイヤは、プレイヤキャラクタPCの移動方向制御と姿勢制御とを、片手で効率的かつ直感的に入力することができる。
【0197】
また、上記サブユニット移動処理においては、サブユニット76に設けられた方向指示部(スティック78a)でプレイヤキャラクタPCの移動方向(さらには、付加的に移動速度)が制御されながら、当該移動方向が、サブユニット76に設けられた加速度センサ761から出力される加速度データに応じて補正される。つまり、プレイヤは、プレイヤキャラクタPCの移動方向制御とその補正とを、片手で効率的かつ直感的に入力することができる。具体的には、以下のようにすることができる。スティック78aの傾倒方向に応じてプレイヤキャラクタPCの移動ベクトルの方向を決める。すなわち、例えば、上方向に指示したときに、プレイヤキャラクタPCのローカル座標系のZ軸正方向(プレイヤキャラクタPCの前方向)に移動(プレイヤキャラクタPCの前進方向ベクトルの方向に移動)する。方向指示手段を下方向に指示したときに、プレイヤキャラクタPCのローカル座標系のZ軸負方向に移動する。方向指示手段を右方向に指示したときに、ローカル座標系のX軸正方向に移動する。そして、方向指示手段を左方向に指示したときに、ローカル座標系のX軸負方向に移動するように移動制御する。移動ベクトルの大きさは、固定値でもよいし、スティック78aの傾倒量に応じて決めても良い。そして、加速度センサ761の出力に応じて、プレイヤキャラクタPCの移動方向を以下のように補正することができる。
【0198】
プレイヤキャラクタPCの移動方向を補正する第1の例として、加速度センサ761のX軸、Y軸、Z軸をそれぞれ、所定座標系のX軸、Y軸、Z軸に対応付けた(または、前進方向とそれに直交する2方向に対応付けて)加速度センサ761の出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。そして、上記方向ベクトルを補正ベクトルとして、当該補正ベクトルをスティック78aの傾倒により求めた上記移動ベクトルに加算する。上記補正ベクトルの大きさは、固定値でもよいし、上記出力ベクトルの大きさに応じて決めても良い。
【0199】
プレイヤキャラクタPCの移動方向を補正する第2の例として、加速度センサ761の所定方向(例えば、X軸方向)の出力値が所定値以上のときに、所定座標系の対応する方向(例えば、X軸方向)の補正ベクトルを、スティック78aの傾倒により求めた上記移動ベクトルに加算する。
【0200】
プレイヤキャラクタPCの移動方向を補正する第3の例として、加速度センサ761の所定方向(例えば、X軸方向)の出力値に応じた大きさで、所定座標系の対応する方向(例えば、X軸方向)の補正ベクトルを、スティック78aの傾倒により求めた上記移動ベクトルに加算する。
【0201】
なお、プレイヤキャラクタPCの移動方向を補正する第2および第3の例について、複数の方向について実施してもよい。すなわち、例えば、第3の例について、加速度センサ761のX軸方向の出力値に応じた大きさで、所定座標系のX軸方向の補正ベクトルを、スティック78aの傾倒により求めた上記移動ベクトルに加算し、さらに、加速度センサ761のY軸方向の出力値に応じた大きさで、所定座標系のY軸方向の補正ベクトルを加算してもよい。
【0202】
また、上記所定座標系は、プレイヤキャラクタPCのローカル座標系でもよいし、仮想ゲーム空間の座標系でもよいし(この場合、方向ベクトルは、典型的には仮想垂直方向や仮想水平方向などとなる)、カメラ座標系であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく座標系(例えば、上記補正ベクトルが当該移動方向に直交する方向など)であってもよい。
【0203】
また、上記サブユニット移動処理においては、サブユニット76に設けられた方向指示部(スティック78a)でプレイヤキャラクタPCの移動方向が制御されながら、プレイヤキャラクタPCの移動速度の制御がされる。つまり、プレイヤは、プレイヤキャラクタPCの移動方向制御と移動速度の制御とを、片手で効率的かつ直感的に入力することができる。この場合、以下のようにすることができる。スティック78aの傾倒方向に応じて、プレイヤキャラクタPCの移動方向を決める。そして、プレイヤキャラクタPCの移動速度(絶対値)は、加速度センサ761の出力に応じて、以下のように決めることができる。
【0204】
プレイヤキャラクタPCの移動速度を決定する第1の例は、加速度センサ761の出力ベクトルの絶対値が所定値以上のときに、当該移動速度を所定速度とし、当該所定値より小さいときは当該移動速度を0とする。
【0205】
プレイヤキャラクタPCの移動速度を決定する第2の例は、当該移動速度を加速度センサ761の出力ベクトルの絶対値に応じた速度とする(当該絶対値が大きいほど、当該移動速度が大きくなるようにする)。このとき、上記出力ベクトルの所定成分(例えば、Z軸方向成分)が正のときには、プレイヤキャラクタPCがスティック78aの傾倒方向に応じた移動方向に移動し、負のときには、プレイヤキャラクタPCがスティック78aの傾倒方向に応じた移動方向と反対方向に移動するようにしてもよい。また、上記所定方向の出力成分が正のときのみ、当該第2の例によって上記移動速度を決定するようにしてもよい。
【0206】
プレイヤキャラクタPCの移動速度を決定する第3の例は、加速度センサ761の所定方向の出力成分(例えば、Z軸方向の出力値)が所定値以上のときに、当該移動速度を所定速度とし、当該所定値より小さいときは当該移動速度を0とする。
【0207】
プレイヤキャラクタPCの移動速度を決定する第4の例は、当該移動速度を加速度センサ761の所定方向の出力成分(例えば、Z軸方向の出力値)の絶対値に応じた速度とする。
【0208】
なお、プレイヤキャラクタPCの移動速度を決定する第3および第4の例において、上記所定方向の出力成分が正のときにはスティック78aの傾倒方向に応じた移動方向にプレイヤキャラクタPCが移動し、上記所定方向の出力成分が負のときには、当該移動方向と反対の方向にプレイヤキャラクタPCが移動するようにしてもよい。また、上記所定方向の出力成分が正のときのみ、当該第3および第4の例によって上記移動速度を決定するようにしてもよい。
【0209】
プレイヤキャラクタPCの移動速度を決定する第5の例は、加速度センサ761の、スティック78aの傾倒方向に対応する方向の出力成分(例えば、スティック78aの傾倒方向が上方向のときにはZ軸方向の出力値、スティック78aの傾倒方向が右方向のときにはX軸方向の出力値など)が、所定値以上のときに当該移動速度を所定速度とし、当該所定値より小さいときは当該移動速度を0とする。
【0210】
プレイヤキャラクタPCの移動速度を決定する第6の例は、当該移動速度を加速度センサ761の、スティック78aの傾倒方向に対応する方向の出力成分(例えば、スティック78aの傾倒方向が上方向のときにはZ軸方向の出力値、スティック78aの傾倒方向が右方向のときにはX軸方向の出力値など)の絶対値に応じた速度とする。
【0211】
なお、プレイヤキャラクタPCの移動速度を決定する第5および第6の例において、上記対応する方向の出力成分が正のときにはスティック78aの傾倒方向に応じた移動方向にプレイヤキャラクタPCが移動し、上記対応する方向の出力成分が負のときには、当該移動方向と反対の方向にプレイヤキャラクタPCが移動するようにしてもよい。
【0212】
また、上記サブユニット移動処理においては、サブユニット76に設けられた方向指示部(スティック78a)でプレイヤキャラクタPCの移動方向と移動速度とが制御されながら、移動速度の補正制御がされる。つまり、プレイヤは、プレイヤキャラクタPCの移動方向制御と移動速度の補正制御とを、片手で効率的かつ直感的に入力することができる。この場合、以下のようにすることができる。スティック78aの傾倒方向に応じてプレイヤキャラクタPCの移動方向を決めて、かつ、スティック78aの傾倒量に応じてプレイヤキャラクタPCの移動速度を決める。そして、加速度センサ761の出力に応じて、プレイヤキャラクタPCの移動速度を以下のように補正することができる。
【0213】
プレイヤキャラクタPCの移動速度を補正する第1の例は、加速度センサ761の出力ベクトルの絶対値が所定値以上のときに、スティック78aの傾倒量に応じた移動速度をプレイヤキャラクタPCの移動速度としてそのまま使用し、当該所定値より小さいときはプレイヤキャラクタPCの移動速度を0に補正する。
【0214】
プレイヤキャラクタPCの移動速度を補正する第2の例は、加速度センサ761の出力ベクトルの絶対値が所定値以下のときに、スティック78aの傾倒量に応じた移動速度をプレイヤキャラクタPCの移動速度としてそのまま使用し、当該所定値より大きいときはプレイヤキャラクタPCの移動速度を増加補正する(所定値を加算、n倍(n>1)など)。
【0215】
プレイヤキャラクタPCの移動速度を補正する第3の例は、加速度センサ761の出力ベクトルの絶対値に応じて、スティック78aの傾倒量に応じた移動速度をプレイヤキャラクタPCの移動速度に増加補正する(当該絶対値が大きいほど、増加量が大きくなるようにする)。
【0216】
なお、プレイヤキャラクタPCの移動速度を補正する第2および第3の例において、上記出力ベクトルの所定成分(例えばZ軸方向成分)が正のときには、スティック78aの傾倒方向に応じた移動方向にプレイヤキャラクタPCが移動し、負のときには、スティック78aの傾倒方向に応じた移動方向と反対方向にプレイヤキャラクタPCが移動するようにしてもよい。また、上記所定方向の出力成分が正のときのみ、当該第2および第3の例によって上記移動速度を補正するようにしてもよい。
【0217】
プレイヤキャラクタPCの移動速度を補正する第4の例は、加速度センサ761の所定方向の出力成分(例えば、Z軸方向の出力値)が所定値以上のときにスティック78aの傾倒量に応じた移動速度をプレイヤキャラクタPCの移動速度としてそのまま使用し、当該所定値より小さいときはプレイヤキャラクタPCの移動速度を0に補正する。
【0218】
プレイヤキャラクタPCの移動速度を補正する第5の例は、加速度センサ761の所定方向の出力成分(例えば、Z軸方向の出力値)が所定値以下のときにスティック78aの傾倒量に応じた移動速度をプレイヤキャラクタPCの移動速度としてそのまま使用し、当該所定値より大きいときはプレイヤキャラクタPCの移動速度を増加補正する。なお、上記所定方向の出力成分が正のときのみ、当該第5の例によって上記移動速度を補正してもよいし、上記所定方向の出力成分が負のときにはスティック78aの傾倒量に応じた移動速度を用いてプレイヤキャラクタPCの移動速度を減少補正してもよい。
【0219】
プレイヤキャラクタPCの移動速度を補正する第6の例は、加速度センサ761の所定方向の出力成分(例えば、Z軸方向の出力値)の大きさに応じて、スティック78aの傾倒量に応じた移動速度を用いてプレイヤキャラクタPCの移動速度を増加補正する(当該絶対値が大きいほど、増加量が大きくなるようにする)。なお、上記所定方向の出力成分が正のときのみ、当該第6の例によって上記移動速度を補正してもよいし、上記所定方向の出力成分が負のときにはスティック78aの傾倒量に応じた移動速度を用いてプレイヤキャラクタPCの移動速度を減少補正してもよい。
【0220】
プレイヤキャラクタPCの移動速度を補正する第7の例は、加速度センサ761の、スティック78aの傾倒方向に対応する方向の出力成分(例えば、スティック78aの傾倒方向が上方向のときにはZ軸正方向の出力値、スティック78aの傾倒方向が右方向のときにはX軸正方向の出力値など)が、所定値以上のときにスティック78aの傾倒量に応じた移動速度をプレイヤキャラクタPCの移動速度としてそのまま使用し、当該所定値より小さいときはプレイヤキャラクタPCの移動速度を0に補正する。
【0221】
プレイヤキャラクタPCの移動速度を補正する第8の例は、加速度センサ761の、スティック78aの傾倒方向に対応する方向の出力成分が、所定値以下のときにスティック78aの傾倒量に応じた移動速度をプレイヤキャラクタPCの移動速度としてそのまま使用し、当該所定値より大きいときにプレイヤキャラクタPCの移動速度を増加補正する。
【0222】
プレイヤキャラクタPCの移動速度を補正する第9の例は、加速度センサ761の、スティック78aの傾倒方向に対応する方向の出力成分の大きさに応じて、スティック78aの傾倒量に応じた移動速度を用いてプレイヤキャラクタPCの移動速度を増加補正する(当該絶対値が大きいほど、増加量が大きくなるようにする)。
【0223】
なお、プレイヤキャラクタPCの移動速度を補正する第8および第9の例において、上記所定方向の出力成分が正のときのみ当該第8および第9の例によって上記移動速度を補正してもよいし、上記対応する出力値が正のときにはスティック78aの傾倒方向に応じた移動方向にプレイヤキャラクタPCが移動し、上記対応する出力値が負のとき(当該対応する方向と反対方向の出力があるとき)には、当該移動方向と反対の方向にプレイヤキャラクタPCが移動するようにしてもよい。
【0224】
また、上記サブユニット移動処理においては、サブユニット76に設けられた方向指示部(スティック78a)でプレイヤキャラクタPCの移動方向(さらには、付加的に移動速度)が制御されながら、プレイヤキャラクタPCの動作制御(例えば、前述のフェイント動作)が行われる。つまり、プレイヤは、プレイヤキャラクタPCの移動方向制御と動作制御とを、片手で効率的かつ直感的に入力することができる。これは、加速度センサ761の出力が所定の条件を満たしたときに、プレイヤキャラクタPCに所定の動作をさせるように制御することにより実現される。さらに、上述したサブユニット移動処理の例の少なくとも1つと、加速度センサ761の出力が所定の条件を満たしたときにプレイヤキャラクタPCに所定の動作をさせるように制御する処理とを同時に実施する場合には、加速度センサ761の出力値の大きさが所定値以下のときに上述したサブユニット移動処理の例の少なくとも1つを実施し、所定値より大きいときに所定の動作をさせるように制御する処理を実施するようにしてもよい。
【0225】
また、上記サブユニット移動処理においては、サブユニット76に設けられた方向指示部(スティック78a)の操作に応じて決定されるプレイヤキャラクタPCの位置を、異なる態様によって決定してもかまわない。図30は、サブユニット移動処理における他の例の詳細な動作を示すサブルーチンである。なお、図30に示すサブユニット移動処理における他の例は、図19で示したサブユニット移動処理と比較して、ステップ43とステップ44との間で行う処理、ステップ46の処理、およびステップ52の処理が異なる。以下、図19で示したサブユニット移動処理と異なる処理について説明し、図19で示したサブユニット移動処理と同様の処理については詳細な説明を省略する。なお、サブユニット移動処理における他の例においては、メインメモリ33の図示しない領域に、仮想ゲーム空間におけるプレイヤキャラクタPCの位置を示す位置データが記憶される(以下、PC位置データと記載する)。
【0226】
図30において、CPU30は、方向指示入力に基づいて上記ステップ43で算出された算出された移動ベクトルVmpcに基づいて、メインメモリ33のPC位置データを更新し(ステップ171)、上記ステップ44へ処理を進める。例えば、ステップ171の処理においては、メインメモリ33に記憶されている直前のPC位置データが示す仮想ゲーム空間における位置を、上記移動ベクトルVmpcで移動させた位置を算出し、当該算出された位置を示すPC位置データに更新する。
【0227】
また、上記ステップ45においてZ軸正方向の加速度が所定値以上である場合、CPU30は、加速度データDa4に応じて変位ベクトルを算出し(ステップ172)、上記ステップ47に処理を進める。ここで、ステップ172における変位ベクトルの算出方法は、ステップ46について上述した補正ベクトルの算出方法(上述のバリエーションを含む)と同様である。
【0228】
また、上記ステップ51においてX軸方向の加速度の方向が所定時間内に反転している場合、CPU30は、加速度データDa4に応じて変位ベクトルを算出し(ステップ173)、当該サブルーチンによる処理を終了する。ここで、ステップ173における変位ベクトルの算出方法は、ステップ52について上述した補正ベクトルの算出方法(上述のバリエーションを含む)と同様である。
【0229】
そして、図18に示したステップ21の処理では、上記ステップ172で算出された変位ベクトルと上記ステップ173で算出された変位ベクトルとを加算した和ベクトルを算出し、PC位置データが示す仮想ゲーム空間の位置を当該和ベクトルで変位させた位置に、プレイヤキャラクタPCを仮想ゲーム空間内で移動させ、ゲーム画像をモニタ2に表示する。ただし、ステップ21においては、メインメモリ33に格納されたPC位置データの更新は行わない。このような処理を行えば、プレイヤキャラクタPCの仮想ゲーム空間における基本的な位置(PC位置データが示す位置)は方向指示入力によって移動する。そして、加速度センサ701から出力された加速度データに応じて、上記基本的な位置を一時的に変位させた位置に、プレイヤキャラクタPCを移動させて表示する。このような処理によって、違和感のない操作性が得られる。
【0230】
次に、図20を参照して、上記ステップ16におけるパス処理について、詳細な動作を説明する。
【0231】
図20において、CPU30は、操作情報DaからチームXの選手モード用コアユニットから送信された操作情報に含まれる最新のコアキーデータを参照する(ステップ81)。次に、CPU30は、上記ステップ81で参照したコアキーデータに基づいて、プレイヤがコアユニット70の操作部72d(Aボタン)のみを押下しているか否かを判断する(ステップ82)。そして、CPU30は、プレイヤがAボタンのみを押下している場合、次のステップ83に処理を進める。一方、CPU30は、プレイヤがAボタンを押下していない、またはAボタンと同時に他のボタン(例えば、Bボタン)を押下している場合、当該サブルーチンによる処理を終了して、上記ステップ17の処理へ進める。
【0232】
ステップ83において、CPU30は、操作情報DaからチームXの選手モード用コアユニットから送信された操作情報に含まれる最新の第1座標データDa1および第2座標データDa2を参照する(ステップ83)。次に、CPU30は、上記ステップ83で参照した第1座標データDa1および第2座標データDa2に対応する指示座標、および当該指示座標に対応する仮想ゲーム空間の位置を算出して、それぞれチームXの選手モード用コアユニットに対応する指示座標データDeおよび仮想空間位置座標データDfを更新して(ステップ84)、処理を次のステップに進める。以下、座標データを用いて指示座標および仮想空間位置を算出する一例について詳述する。
【0233】
まず、CPU30は、第1座標データDa1から第2座標データDa2への方向データを算出する。具体的には、CPU30は、第1座標データDa1および第2座標データDa2を参照して、第1座標データDa1の位置を始点とし第2座標データDa2の位置を終点とするベクトルを算出する。そして、CPU30は、算出されたベクトルのデータを、方向データとしてメインメモリ33に記憶する。この方向データと所定の基準方向との差によって、コアユニット70の撮像面に垂直な方向を軸とするコアユニット70本体の回転を算出することができる。
【0234】
また、CPU30は、第1座標データDa1と第2座標データDa2との中点を示す中点データを算出する。具体的には、CPU30は、第1座標データDa1および第2座標データDa2を参照して、当該中点の座標を算出する。そして、CPU30は、算出された中点の座標のデータを、メインメモリ33に記憶する。ここで、中点データは、撮像画像内における対象画像(マーカ8Lおよび8R)の位置を示している。この中点データと所定の基準位置との差によって、コアユニット70の位置の変化による画像位置の変化を算出することができる。
【0235】
ここで、マーカ8Lおよび8Rと、モニタ2の表示画面と、コアユニット70との位置関係について考える。例えば、モニタ2の上面に2つのマーカ8Lおよび8Rを設置し(図1参照)、上面が上方向を向いたコアユニット70を用いてプレイヤがモニタ2の表示画面の中央を指し示した場合(撮像情報演算部74の撮像画像の中央に表示画面中央が撮像されている状態)を考える。このとき、撮像情報演算部74の撮像画像において、対象画像の中点(マーカ8Lおよび8Rの中点)位置と指し示した位置(表示画面中央)とが一致しない。具体的には、上記撮像画像における対象画像の位置は撮像画像の中心から上方の位置となる。このような位置に対象画像が位置する場合に、表示画面中央を指し示しているという基準位置の設定を行う。一方、コアユニット70の移動に対応して、撮像画像中の対象画像の位置も移動する(移動方向は逆方向となる)ので、撮像画像中の対象画像の位置の移動に対応させて表示画面を指し示す位置を移動させる処理を行うことによって、コアユニット70で指し示された表示画面基準の位置(画面座標系の位置座標)を算出することができる。ここで、基準位置の設定は、予めプレイヤが表示画面の所定位置を指し示し、そのときの対象画像の位置を当該所定位置と対応させて記憶しておくようにしてもよいし、対象画像と表示画面との位置関係が固定的であれば、予め設定されていても良い。また、マーカ8Lおよび8Rが、モニタ2とは別体で設けられてモニタ2の近く(モニタ2の上や下など)に載置されて使用されるものである場合には、ゲーム開始前に、マーカ8Lおよび8Rをモニタに対してどの位置に載置しているかをプレイヤに入力させ(例えば、モニタ2の上に載置したか下に載置したか等の選択肢から選択させ)、光ディスク4やゲーム装置3の内蔵不揮発メモリなどに、モニタ2の上に載置した場合の基準位置データと、モニタ2の下に載置した場合の基準位置データをそれぞれ記憶しておいて、それらを選択して使用してもよい。このような画面座標系の位置座標は、中点データからモニタ2の表示画面基準の座標(指示座標)を算出する関数を用いた線形変換で算出される。この関数は、ある撮像画像から算出される中点座標の値を、当該撮像画像が撮像される時のコアユニット70によって指し示される表示画面上の位置(画面座標系の位置座標)を表す座標に変換するものである。この関数によって、中点座標から表示画面を基準とした指示座標を算出することができる。
【0236】
しかしながら、上面が上方向以外(例えば、右方向)を向いたコアユニット70を用いてプレイヤがモニタ2の表示画面の中央を指し示した場合、上記撮像画像における対象画像の位置は撮像画像の中心から上方以外(例えば、左方)の方向にずれた位置となる。つまり、コアユニット70の傾きによって、コアユニット70の移動方向と、表示画面基準の指し示し位置の移動方向が一致しないことになる。そこで、方向データに基づいて、中点データを補正する。具体的には、中点データを、コアユニット70の上面が上方向を向いた状態であるとした場合における中点座標に補正する。より具体的には、上記基準位置の設定の際には方向データの基準も設定され、中点データを方向データと当該基準方向との角度差に応じた量だけ、撮像画像の中心を軸として中点データが示す座標を回転移動させて補正する。そして、補正された中点データを用いて上述したように指示座標を算出する。
【0237】
また、算出した画面座標系の指示座標を仮想ゲーム空間内における位置(仮想空間位置)を表す仮想空間座標に変換する場合には、当該画面座標系における位置に対応する仮想ゲーム空間内における位置にさらに変換すればよい。ここで、画面座標系における位置に対応する仮想ゲーム空間内における位置とは、モニタ2の表示画面上における位置に表示される仮想ゲーム空間内における位置(例えば、透視投影される位置)や画面座標系の位置座標から直接的に指定される仮想ゲーム空間の3次元座標値等である。
【0238】
上記指示座標の算出処理の本質的な原理は、コアユニット70の移動による対象画像の位置の変化によって、指し示された2次元座標の所定の基準位置からの変位を算出し、座標を設定するというものである。したがって、画面座標系の位置座標は、他の2次元座標の入力としても幅広く用いることができる。例えば、画面座標系の位置座標をワールド座標系におけるx座標およびy座標の値として直接的に用いることができる。この場合、モニタ2の表示画面とは無関係に、対象画像の移動をワールド座標系におけるx座標およびy座標の基準位置からの移動に対応付ける算出処理を行えばよい。また、2次元のゲーム画像がモニタ2に表示されている場合などは、画面座標系の位置座標をそのまま2次元のゲーム座標系におけるx座標およびy座標の値として直接的に用いることができる。
【0239】
ステップ84の処理の後、CPU30は、算出された指示座標に対応する仮想ゲーム空間の仮想空間位置が、仮想フィールド上の位置であるか否かを判断する(ステップ85)。例えば、仮想フィールドは、仮想サッカーフィールドを含むゲーム空間の地面を示す仮想平面である。次に、CPU30は、仮想空間位置が仮想フィールド上である場合、次のステップ90に処理を進める。一方、CPU30は、仮想空間位置が仮想フィールド上でない場合、上記画面座標系の指示座標がモニタ2の表示領域の上または下に外れているか否か(ステップ86)、および上記画面座標系の指示座標がモニタ2の表示領域の左または右に外れているか否か(ステップ87)を判断する。そして、CPU30は、指示座標がモニタ2の表示領域の上下に外れている場合(ステップ86でYes)、次のステップ88に処理を進める。また、CPU30は、指示座標がモニタ2の表示領域の左右に外れている場合(ステップ87でYes)、次のステップ89に処理を進める。一方、CPU30は、指示座標がモニタ2の表示領域の上下および左右以外に外れている、または指示座標が無効(例えば、算出不可)である場合(ステップ86およびステップ87でNo)、次のステップ95に処理を進める。
【0240】
ステップ88において、CPU30は、ボールオブジェクトBの移動方向および移動速度を示すボール移動ベクトルを、仮想ゲーム空間に設定されたサッカーフィールドのゴールラインと平行な方向に所定の大きさで設定し、移動ベクトルデータDcを更新して、次のステップ95に処理を進める。なお、上記ステップ88で設定するボール移動ベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に設定してもかまわない。
【0241】
ステップ89において、CPU30は、ボールオブジェクトBの移動方向および移動速度を示すボール移動ベクトルを、仮想ゲーム空間に設定されたサッカーフィールドのタッチラインと平行な方向に所定の大きさで設定し、移動ベクトルデータDcを更新して、次のステップ95に処理を進める。なお、上記ステップ89で設定するボール移動ベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に対して垂直な水平方向に設定してもかまわない。
【0242】
ステップ90において、CPU30は、上記ステップ84で算出された仮想空間位置を中心とした領域A内(典型的には、当該仮想空間位置を中心とする所定半径R1の円領域内であるが、円領域でなくてもよい)に、チームXの選手キャラクタが配置されているか否かを判断し、当該判断がYesの場合には当該選択キャラクタを選択する(複数の選手キャラクタが該当する場合には、当該仮想空間位置に一番近い選手キャラクタを選択する)。また、CPU30は、領域A内にチームXの選手キャラクタが配置されていない場合、上記ステップ84で算出された仮想空間位置を中心とした領域B内(典型的には、当該仮想空間位置を中心とする所定半径R2(>R1)の円領域内であるが、円領域でなくてもよい)に、チームXの選手キャラクタが配置されているか否かを判断し、当該判断がYesの場合には当該選択キャラクタを選択する(ステップ92)(複数の選手キャラクタが該当する場合には、当該仮想空間位置に一番近い選手キャラクタを選択してもよいし、当該複数の選手キャラクタの全てまたは複数を選択してもよい)。そして、CPU30は、領域A内にチームXの選手キャラクタが配置されている場合(ステップ90でYes)、次のステップ91に処理を進める。また、CPU30は、領域B内にチームXの選手キャラクタが配置されている場合(ステップ92でYes)、次のステップ93に処理を進める。さらに、CPU30は、領域Aおよび領域B内の何れにもチームXの選手キャラクタが配置されていない場合(ステップ90およびステップ92でNo)、次のステップ94に処理を進める。例えば、図27に示すように、領域Aおよび領域Bは、仮想空間位置TPを中心とした円形の領域でそれぞれ形成され、領域Aより領域Bが大きい。そして、CPU30は、最新の位置データDhを参照して、仮想ゲーム空間における各選手キャラクタの配置位置に基づいて、領域Aおよび領域B内に配置された選手キャラクタを判断する。
【0243】
ステップ91において、CPU30は、ステップ90で選択された選手キャラクタの配置位置に応じて、ボール移動ベクトルを設定して、移動ベクトルデータDcを更新する。例えば、CPU30は、現在のボールオブジェクトBの位置から当該選手キャラクタの配置位置へ向かう方向をボール移動ベクトルの方向とする。さらに、現在のボールオブジェクトBの位置から当該選手キャラクタの配置位置までの仮想距離に応じた大きさをボール移動ベクトルの大きさとして設定してもよい。そして、CPU30は、次のステップ95に処理を進める。
【0244】
ステップ93において、CPU30は、ステップ92で選択された選手キャラクタの移動ベクトルを仮想空間位置TPに応じて設定して、移動ベクトルデータDcを更新する。例えば、CPU30は、ステップ92で選択された選手キャラクタの現在の配置位置から仮想空間位置TPに向かう方向を当該選手キャラクタの移動ベクトルの方向とする。さらに、当該現在の配置位置から仮想空間位置TPまでの仮想距離に応じた大きさを当該選手キャラクタの移動ベクトルの大きさとして設定してもよい。そして、CPU30は、次のステップ94に処理を進める。
【0245】
ステップ94において、CPU30は、仮想空間位置TPに応じてボール移動ベクトルを設定して、移動ベクトルデータDcを更新する。例えば、CPU30は、現在のボールオブジェクトBの位置から仮想空間位置TPへ向かう方向をボール移動ベクトルの方向とする。さらに、現在のボールオブジェクトBの位置から仮想空間位置TPまでの仮想距離に応じた大きさをボール移動ベクトルの大きさとして設定してもよい。そして、CPU30は、次のステップ95に処理を進める。
【0246】
このようにプレイヤがAボタンを押下しているときに行われる上記ステップ90〜ステップ94の処理によってボールオブジェクトBの移動ベクトルが設定され、当該ボールオブジェクトBの移動方向(さらには、付加的に移動速度)が決定されるため、いわゆるサッカーゲームにおいてボールをパスする方向が設定される。ここで、上述から明らかなように、コアユニット70で指し示された仮想空間位置TP近傍に自チームの選手が存在しない場合、ボールオブジェクトBがパスされる目標地点は仮想空間位置TPとなる。また、コアユニット70で指し示された仮想空間位置TP近傍である領域A内に自チームの選手が存在する場合、ボールオブジェクトBがパスされる目標地点は領域A内に存在する自チームの選手となる。さらに、コアユニット70で指し示された仮想空間位置TPから少し離れた領域B内に自チームの選手が存在する場合、ボールオブジェクトBがパスされる目標地点は仮想空間位置TPとなり、領域B内に存在する自チームの選手も仮想空間位置TPへ移動する。
【0247】
ステップ95において、CPU30は、操作情報DaからチームXの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する。そして、CPU30は、サブ加速度データが示すZ軸方向の加速度が負(つまり、Z軸負方向の加速度を検出)であるか否かを判断する(ステップ96)。そして、CPU30は、Z軸方向の加速度が負である場合、ボール移動ベクトルに垂直上方向のベクトルを加算する(ステップ97)。なお、当該加算するベクトルは、当該Z軸方向の加速度の大きさ(絶対値)に応じた大きさとしてもよい。そして、当該サブルーチンによる処理を終了して、上記ステップ17の処理へ進める。このステップ97の処理によって、プレイヤキャラクタPCがパスするボールオブジェクトBの軌道は、プレイヤがサブユニット76の前方を持ち上げるような動作を行う(つまり、Z軸負方向の加速度が生じる)ことによって、仮想ゲーム空間内で高く蹴る軌道となる。一方、CPU30は、Z軸方向の加速度が負でない場合、そのまま当該サブルーチンによる処理を終了して、上記ステップ17の処理へ進める。
【0248】
このように、ステップ16におけるパス処理においては、プレイヤがAボタンのみを押下することによって、ボールオブジェクトBをキープするプレイヤキャラクタPCの位置からボールオブジェクトBが移動する動作を行う。そして、サブユニット76に設けられた方向指示部(スティック78a)でプレイヤキャラクタPCの移動方向(さらには、付加的に移動速度)が制御されながら、コアユニット70から得られる座標データ(第1座標データDa1および第2座標データDa2)によってボールオブジェクトBの移動方向(さらには、付加的に移動速度)が制御される。したがって、プレイヤは、2つのユニットを操作しながらそれぞれ別のキャラクタ(オブジェクト)を操作することが可能である。つまり、プレイヤは、第1キャラクタ(プレイヤキャラクタPC)の移動方向制御と当該第1キャラクタの位置(正確には、第1キャラクタの位置に付随して決定される第2キャラクタの位置)から移動する第2キャラクタ(ボールオブジェクトB)の移動方向制御とを、効率的かつ直感的に独立して入力することができる。また、プレイヤキャラクタPCを移動させる操作とパス方向を決定する操作とが独立している(さらには、プレイヤキャラクタPCを移動させる操作にかかるハウジング77とパス方向を決定する操作にかかるハウジング71とが独立している)ため、自由度が高くリアルなサッカーゲームが実現できる。
【0249】
また、第2キャラクタ(ボールオブジェクトB)の移動制御について、コアユニット70による指示座標により決定された第1方向ベクトルに、サブユニット76の加速度センサ761の出力に応じて決定される第2方向ベクトルを加えて、第2キャラクタの移動方向ベクトルとする。具体的には以下のようにすることができる。
【0250】
第2キャラクタの移動方向ベクトルを算出する第1の例として、加速度センサ761のX軸、Y軸、Z軸をそれぞれ、所定座標系のX軸、Y軸、Z軸に対応付けた(または前進方向とそれに直交する2方向に対応付けて)加速度センサ761の出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。そして、上記方向ベクトルを第2方向ベクトルとして、当該第2方向ベクトルを第1方向ベクトルに加算する。上記第2方向ベクトルの大きさは、固定値でもよいし、上記出力ベクトルの大きさに応じて決めても良い。
【0251】
第2キャラクタの移動方向ベクトルを算出する第2の例として、加速度センサ761の所定方向(例えば、X軸方向)の出力値が所定値以上のときに、所定座標系の対応する方向(例えば、X軸方向)の第2方向ベクトルを、第1方向ベクトルに加算する。
【0252】
第2キャラクタの移動方向ベクトルを算出する第3の例として、加速度センサ761の所定方向(例えば、X軸方向)の出力値に応じた大きさで、所定座標系の対応する方向(例えば、X軸方向)の第2方向ベクトルを、第1方向ベクトルに加算する。
【0253】
なお、第2キャラクタの移動方向ベクトルを算出する第2および第3の例について、複数の方向について実施してもよい。すなわち、例えば、第3の例について、加速度センサ761のX軸方向の出力値に応じた大きさで、所定座標系のX軸方向の第2方向ベクトルを第1方向ベクトルに加算し、さらに、加速度センサ761のY軸方向の出力値に応じた大きさで所定座標系のY軸方向の第2方向ベクトルを当該第1方向ベクトルに加算してもよい。
【0254】
なお、上記所定座標系は、プレイヤキャラクタPCのローカル座標系でもよいし、仮想ゲーム空間の座標系でもよいし(この場合、第2方向ベクトルは、典型的には仮想垂直方向や仮想水平方向などとなる)、カメラ座標系であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく座標系(例えば、上記第2方向ベクトルが当該移動方向に直交する方向など)であってもよい。
【0255】
これらにより、コアユニット70による指示座標によりキャラクタの移動方向を制御しつつ、サブユニットを傾けたり動かしたりすることによりその方向を補正するような操作が実現できる。
【0256】
次に、図21を参照して、上記ステップ17における第1シュート処理について、詳細な動作を説明する。
【0257】
図21において、CPU30は、操作情報DaからチームXの選手モード用コアユニットから送信された操作情報に含まれる最新のコアキーデータを参照する(ステップ101)。次に、CPU30は、上記ステップ101で参照したコアキーデータに基づいて、プレイヤがコアユニット70の操作部72d(Aボタン)および操作部72i(Bボタン)を同時に押下しているか否かを判断する(ステップ102)。そして、CPU30は、プレイヤがAおよびBボタンを同時に押下している場合、次のステップ103に処理を進める。一方、CPU30は、プレイヤがAおよびBボタンを同時に押下していない場合、当該サブルーチンによる処理を終了して、上記ステップ18の処理へ進める。
【0258】
ステップ103において、CPU30は、操作情報DaからチームXの選手モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。そして、CPU30は、コア加速度データに応じて、ボール移動ベクトルを算出して、移動ベクトルデータDcを更新し(ステップ104)、処理を次のステップに進める。例えば、CPU30は、ボールオブジェクトBをキープしているプレイヤキャラクタPCの前方方向(例えば、移動方向;すなわち、PCの移動方向ベクトルの方向)で、参照したコア加速度データに含まれるZ軸方向の加速度の大きさに応じた大きさのボール移動ベクトルを算出する。
【0259】
これにより、サブユニット76に設けられた方向指示部(スティック78a)でボールオブジェクトBの移動方向が制御されながら、ボールオブジェクトBの移動速度がコアユニット70に設けられた加速度センサ701から出力される加速度データに応じて決定される。つまり、プレイヤは、ボールオブジェクトBの移動方向制御と移動速度制御とを、それぞれの手で独立して効率的かつ直感的に入力することができる。さらに、サブユニット76に設けられた方向指示部(スティック78a)の傾斜量に応じてボールオブジェクトBの移動速度を制御するようにして、ボールオブジェクトBの移動速度をサブユニット76に設けられた加速度センサ761から出力される加速度データ(または当該加速度データの所定軸方向の成分)に応じて補正するようにしてもよい(例えば、Z軸方向の加速度があったときに、所定値を加算してもよいし、n倍(n>1)するようにしてもよいし、Z軸方向の加速度の大きさに応じて倍数を決定するようにしてもよい)。つまり、プレイヤは、ボールオブジェクトBの移動方向制御と移動速度制御(または移動速度補正制御)とを、それぞれの手で独立して効率的かつ直感的に入力することができる。
【0260】
次に、CPU30は、操作情報DaからチームXの選手モード用サブユニットから送信された操作情報に含まれる最新のサブ加速度データを参照する(ステップ105)。そして、CPU30は、サブ加速度データが示すZ軸方向の加速度が負(つまり、Z軸負方向の加速度を検出)であるか否かを判断する(ステップ106)。そして、CPU30は、Z軸方向の加速度が負である場合、仮想ゲーム空間に対する垂直上方向のベクトルを、ボール移動ベクトルに加えて移動ベクトルデータDcを更新し(ステップ107)、次のステップ108に処理を進める。なお、当該加える垂直上方向のベクトルは、当該Z軸方向の加速度の大きさに応じた大きさとしてもよい。一方、CPU30は、Z軸方向の加速度が負でない場合、そのまま次のステップ108へ処理を進める。
【0261】
ステップ108において、CPU30は、上記ステップ105で参照したサブ加速度データが示すX軸方向の加速度データに応じてボール移動ベクトルを変更し、処理を次のステップに進める。例えば、CPU30は、仮想水平面に平行で当該ボール移動ベクトルに直交する方向(向きは、X軸方向の加速度データの正負で決定する)で当該X軸方向の加速度の大きさに応じた大きさのベクトルを、現在のボール移動ベクトルに加えて、移動ベクトルデータDcを更新する。
【0262】
これにより、サブユニット76に設けられた方向指示部(スティック78a)でボールオブジェクトBの移動方向が制御されながら、ボールオブジェクトBの移動方向がサブユニット76に設けられた加速度センサ761から出力される加速度データに応じて補正される。つまり、プレイヤは、ボールオブジェクトBの移動方向制御と移動方向補正制御とを、片手で効率的かつ直感的に入力することができる。また、補正ベクトルの向きは、仮想ゲーム空間における固定方向(仮想垂直方向、仮想水平方向など)であってもよいし、仮想カメラの視線方向に基づく方向(当該視線方向または当該視線方向に直交する方向など)であってもよいし、方向指示部により決定される移動方向に基づく方向(当該移動方向に直交する方向など)であってもよいし、プレイヤキャラクタPCのローカル座標系における所定軸方向であってもよい。
【0263】
次に、CPU30は、操作情報DaからチームXの選手モード用コアユニットから送信された操作情報に含まれるコア加速度データの履歴を参照し、XYZ軸方向それぞれに生じた直近の所定時間分の加速度平均を算出する(ステップ109)。そして、CPU30は、上記ステップ109で算出したZ軸方向の加速度平均の大きさが所定値以上か否かを判断する(ステップ110)。そして、CPU30は、Z軸方向の加速度平均の大きさが所定値以上である場合、ステップ111に処理を進める。一方、CPU30は、Z軸方向の加速度平均の大きさが所定値未満である場合、ステップ112に処理を進める。
【0264】
ステップ111において、CPU30は、ボール移動ベクトルの大きさを増加させる。例えば、所定値を加算してもよいし、n倍(n>1)してもよいし、上記ステップ109で算出したZ軸方向の加速度平均の大きさに応じて増加させてもよい。
【0265】
ステップ112において、CPU30は、上記ステップ109で算出したY軸方向の加速度平均の大きさが所定値以上か否かを判断する。なお、図5等から明らかなように、コアユニット70を水平に保持した場合、重力加速度がY軸負方向に常に作用するため、ステップ112における判定基準は、当該重力加速度を考慮した所定値を設定するのが好ましい。そして、CPU30は、Y軸方向の加速度平均の大きさが所定値以上である場合、ステップ113に処理を進める。一方、CPU30は、Y軸方向の加速度平均の大きさが所定値未満である場合、ステップ114に処理を進める。
【0266】
ステップ113において、CPU30は、垂直上方向のベクトルを、ボール移動ベクトルに加えて移動ベクトルデータDcを更新し、次のステップ114に処理を進める。当該垂直上方向のベクトルの大きさは、固定の大きさでもよいし、上記ステップ109で算出したY軸方向の加速度平均の大きさに応じた大きさでもよい。
【0267】
ステップ114において、CPU30は、上記ステップ109で算出したX軸方向の加速度平均の大きさが所定値以上か否かを判断する。そして、CPU30は、X軸方向の加速度平均の大きさが所定値以上である場合、ステップ115に処理を進める。一方、CPU30は、X軸方向の加速度平均の大きさが所定値未満である場合、当該サブルーチンによる処理を終了して、上記ステップ18の処理へ進める。
【0268】
ステップ115において、CPU30は、仮想水平面に平行で当該ボール移動ベクトルに直交する方向(向きは、X軸方向の加速度平均の正負で決定する)のベクトルを、現在のボール移動ベクトルに加えて、移動ベクトルデータDcを更新する。そして、CPU30は、当該サブルーチンによる処理を終了して、上記ステップ18の処理へ進める。なお、上記直交する方向のベクトルの大きさは、上記ステップ109で算出したX軸方向の加速度平均の大きさに応じた大きさとしてもよい。
【0269】
このように、所定操作ボタン(上述の例ではコアユニット70の操作ボタンとしたがサブユニット76の操作ボタンでもよい)を操作したときにキャラクタ(ボールオブジェクトB)が移動開始し、当該移動方向がサブユニット76の方向指示部による指示方向に基づいて決定される。さらに、上記移動方向は、上記所定操作ボタンを操作する前のコアユニット70の加速度センサ701の出力に応じて補正される(典型的には、上記所定操作ボタンを操作する前の、直近の所定時間における加速度センサ701の出力を利用する)。これにより、プレイヤは、ボールオブジェクトBの移動方向制御と移動方向補正制御とを、それぞれの手で独立して効率的かつ直感的に入力することができる。なお、上記移動方向を、上記所定操作ボタンを操作する前の加速度センサ761の出力に応じて補正するようにしてもよい。また、補正ベクトルの向きは、仮想ゲーム空間の座標系における所定方向(典型的には、いずれかの軸の方向)であってもよいし、カメラ座標系における所定方向であってもよいし、ローカル座標系における所定方向であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく方向(当該移動方向に直交する方向など)であってもよい。これにより、プレイヤは、ボールオブジェクトBの移動方向制御と移動方向補正制御とを、効率的かつ直感的に入力することができる。
【0270】
また、ステップ17における第1シュート処理においては、プレイヤがAおよびBボタンを同時に押下することによって、ボールオブジェクトBをキープするプレイヤキャラクタPCがシュートする動作を行う。そして、プレイヤキャラクタPCがシュートする初速度および初期方向は、プレイヤキャラクタPCが向く方向と、コアユニット70から得られるコア加速度データが示す加速度の大きさと、サブユニット76から得られるサブ加速度データが示す加速度の大きさとによって決定される。つまり、プレイヤキャラクタPCがシュートする初期軌道は、単純なボタン操作のみによって決定されるものではなく、プレイヤがシュート操作を行ったときのコアユニット70およびサブユニット76全体の動作に応じて決定される。したがって、プレイヤは、コアユニット70およびサブユニット76全体を動かしながら、自由度のあるシュートを放つことが可能でありリアルなサッカーゲームが実現できる。
【0271】
次に、図22を参照して、上記ステップ18における第2シュート処理について、詳細な動作を説明する。
【0272】
図22において、CPU30は、操作情報DaからチームXの選手モード用コアユニットから送信された操作情報に含まれるコアキーデータの履歴を参照する(ステップ121)。次に、CPU30は、上記ステップ121で参照したコアキーデータに基づいて、プレイヤがコアユニット70の操作部72d(Aボタン)および操作部72i(Bボタン)を同時に押下してから所定時間内か否かを判断する(ステップ122)。そして、CPU30は、プレイヤがAおよびBボタンを同時に押下してから所定時間内の場合、次のステップ123に処理を進める。一方、CPU30は、プレイヤがAおよびBボタンを同時に押下してから所定時間内でない場合、当該サブルーチンによる処理を終了して、上記ステップ19の処理へ進める。
【0273】
ステップ123において、CPU30は、操作情報DaからチームXの選手モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。そして、CPU30は、上記ステップ123で参照したコア加速度データが示すZ軸方向の加速度の大きさが所定値以上か否かを判断する(ステップ124)。そして、CPU30は、Z軸方向の加速度の大きさが所定値以上である場合、ステップ125に処理を進める。一方、CPU30は、Z軸方向の加速度の大きさが所定値未満である場合、ステップ126に処理を進める。
【0274】
ステップ125において、CPU30は、ボール移動ベクトルの大きさを増加させる。例えば、所定値を加算してもよいし、n倍(n>1)してもよいし、上記ステップ123で参照したコア加速度データが示すZ軸方向の加速度の大きさに応じて増加させてもよい。
【0275】
ステップ126において、CPU30は、上記ステップ123で参照したコア加速度データが示すY軸方向の加速度の大きさが所定値以上か否かを判断する。なお、図5等から明らかなように、コアユニット70を水平に保持した場合、重力加速度がY軸負方向に常に作用するため、ステップ126における判定基準も、当該重力加速度を考慮した所定値を設定するのが好ましい。そして、CPU30は、Y軸方向の加速度の大きさが所定値以上である場合、ステップ127に処理を進める。一方、CPU30は、Y軸方向の加速度の大きさが所定値未満である場合、ステップ128に処理を進める。
【0276】
ステップ127において、CPU30は、仮想ゲーム空間に対する垂直上方向のベクトルを、ボール移動ベクトルに加えて移動ベクトルデータDcを更新し、次のステップ128に処理を進める。ここで、当該垂直方向のベクトルの大きさは固定の大きさとしてもよいし、上記ステップ123で参照したコア加速度データが示すY軸方向の加速度の大きさに応じた大きさとしてもよい。
【0277】
ステップ128において、CPU30は、上記ステップ123で参照したコア加速度データが示すX軸方向の加速度の大きさが所定値以上か否かを判断する。そして、CPU30は、X軸方向の加速度の大きさが所定値以上である場合、ステップ129に処理を進める。一方、CPU30は、X軸方向の加速度の大きさが所定値未満である場合、当該サブルーチンによる処理を終了して、上記ステップ19の処理へ進める。
【0278】
ステップ129において、CPU30は、仮想水平面に平行で当該ボール移動ベクトルに直交する方向(向きは、X軸方向の加速度の正負で決定する)のベクトルを、現在のボール移動ベクトルに加えて、移動ベクトルデータDcを更新する。ここで、上記直交する方向のベクトルの大きさは固定の大きさとしてもよいし、上記ステップ123で参照したコア加速度データが示すX軸方向の加速度の大きさに応じた大きさとしてもよい。そして、CPU30は、当該サブルーチンによる処理を終了して、上記ステップ19の処理へ進める。
【0279】
このように、所定操作ボタン(上述の例ではコアユニット70の操作ボタンとしたがサブユニット76の操作ボタンでもよい)を操作したときにキャラクタ(ボールオブジェクトB)が移動開始し、当該移動方向がサブユニット76の方向指示部による指示方向に基づいて決定される。さらに、上記移動方向は、上記所定操作ボタンを操作した後におけるコアユニット70の加速度センサ701の出力に応じて補正される(典型的には、上記所定操作ボタンを操作した直後の直近の所定時間における加速度センサ701の出力を利用する)。これにより、プレイヤは、ボールオブジェクトBの移動方向制御と移動方向補正制御とを、それぞれの手で独立して効率的かつ直感的に入力することができる。なお、上記移動方向を、上記所定操作ボタンを操作した後のおける加速度センサ761の出力に応じて補正するようにしてもよい。また、仮想ゲーム空間の座標系における所定方向(典型的には、いずれかの軸の方向)であってもよいし、カメラ座標系における所定方向であってもよいし、ローカル座標系における所定方向であってもよいし、カメラ座標系を仮想水平面に投影した座標系であってもよいし、方向指示部により決定される移動方向に基づく方向(当該移動方向に直交する方向など)であってもよい。これにより、プレイヤは、ボールオブジェクトBの移動方向制御と移動方向補正制御とを、効率的かつ直感的に入力することができる。
【0280】
このように、ステップ18における第2シュート処理においては、プレイヤがAおよびBボタンを同時に押下してシュート操作した後のボールの軌道は、コアユニット70から得られるコア加速度データに応じて、移動速度、移動方向、移動距離等が決定される。例えば、図28に示すように、ボールオブジェクトBのボール移動ベクトルVmbによって決定された軌道aは、コアユニット70から得られるコア加速度データに応じて軌道bや軌道cのように変化させることが可能である。つまり、プレイヤキャラクタPCの移動制御が方向入力で行われながら、シュートした後の軌道が単純なボタン操作のみによって決定されるものではなく、プレイヤがシュート操作を行った後のコアユニット70全体の動作に応じて決定される。したがって、プレイヤは、プレイヤキャラクタPCの移動方向を制御しつつ、コアユニット70全体を動かしながら直感的にシュート軌道を変化させることができ、リアルなサッカーゲームが実現できる。
【0281】
次に、図23を参照して、上記ステップ19における一時監督モード処理について、詳細な動作を説明する。
【0282】
図23において、CPU30は、操作情報DaからチームXの選手モード用コアユニットから送信された操作情報に含まれる最新のコアキーデータを参照する(ステップ131)。次に、CPU30は、上記ステップ131で参照したコアキーデータに基づいて、プレイヤがコアユニット70の操作部72a(十字キー)の上方向を押下しているか否かを判断する(ステップ132)。そして、CPU30は、プレイヤが十字キーの上方向を押下している場合、次のステップ133に処理を進める。一方、CPU30は、プレイヤが十字キーの上方向を押下していない場合、次のステップ136に処理を進める。
【0283】
ステップ133において、CPU30は、操作情報DaからチームXの選手モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。次に、CPU30は、コア加速度データが示すX軸方向の加速度の大きさが所定値以上であるか否かを判断する(ステップ134)。そして、CPU30は、X軸方向の加速度の大きさが所定値以上である場合、次のステップ135に処理を進める。一方、CPU30は、X軸方向の加速度の大きさが所定値未満である場合、次のステップ136に処理を進める。
【0284】
ステップ135において、CPU30は、上記ステップ133で参照したコア加速度データが示すX軸方向の加速度の大きさに基づいて、チームXのノンプレイヤキャラクタNPC全ての移動ベクトルを更新して、移動ベクトルデータDcを更新し、次のステップ136に処理を進める。例えば、図29に示すように、CPU30は、仮想ゲーム空間に設定されたサッカーフィールドのタッチラインと平行な方向の補正ベクトルを、チームXのノンプレイヤキャラクタNPC全ての移動ベクトルに加え、新たな移動ベクトルVmnpcを算出する。上記補正ベクトルは、固定の大きさとしてもよいし、上記X軸方向の加速度の大きさに応じた大きさとしてもよい。なお、補正ベクトルの方向を、コア加速度データが示す加速度の方向に応じて決定してもよい。この場合、以下のような例が考えられる。
【0285】
補正ベクトルの方向を決定する第1の例として、コア加速度データの各軸を、それぞれ、仮想ゲーム空間座標の直交する3方向に対応付けて(典型的には、仮想空間座標の各軸に対応付けて)、コア加速度データの出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。
【0286】
補正ベクトルの方向を決定する第2の例として、コア加速度データの各軸を、それぞれ、所定キャラクタ(プレイヤキャラクタPCなど)のローカル座標系の各軸に対応付けて、コア加速度データの出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。
【0287】
補正ベクトルの方向を決定する第3の例として、コア加速度データの各軸を、それぞれ、カメラ座標系の各軸(またはカメラ座標系のX、Z軸を仮想水平面に投影した軸)に対応付けて、コア加速度データの出力ベクトルを、仮想空間の方向ベクトルに変換する。
【0288】
補正ベクトルの方向を決定する第4の例として、コア加速度データの各軸を、所定キャラクタの移動方向ベクトル(または向きベクトル)とそれに直交する2方向とに対応付けて、コア加速度データの出力ベクトルを、仮想ゲーム空間の方向ベクトルに変換する。
【0289】
なお、上記ステップ135の処理においては、コア加速度データの代わりに、サブ加速度データの出力を利用しても良い。
【0290】
また、上記ステップ135の処理においては、チームXのプレイヤキャラクタPCの移動ベクトルについても、同様のベクトル加算を行って更新してもかまわない。また、チームXのノンプレイヤキャラクタNPCの何れか(例えば、チームXのゴールキーパー)を、ベクトル加算の対象から外してもかまわない。また、上述した処理では、タッチラインと平行な方向でX軸方向の加速度の大きさに応じた大きさのベクトルを加算する例を示したが、当該ベクトルをそのままチームXのノンプレイヤキャラクタNPC全ての移動ベクトルに設定してもかまわない。さらに、加算するベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に対して垂直な水平方向や、当該視線方向を基準とした他の方向に設定してもかまわない。また、一般的に、コアユニット70をある方向に動かし始めのときに加速度センサ701によって検出される加速度ベクトルの方向は、当該動かす方向とは反対方向であるので、そのときに検出された加速度ベクトルの方向を反対にして利用してもかまわない。また、コアユニット70をある方向に動かした後、その動きを止めたときに加速度センサ701によって検出される加速度ベクトルの方向は、当該動かす方向であるので、そのときの検出を使用してもかまわない。この点は、本願明細書の他の箇所に記載した同様の処理についても同じである。
【0291】
このように、プレイヤキャラクタPCの移動方向がサブユニット76のスティック78aによって制御され、複数のノンプレイヤキャラクタNPC(プレイヤキャラクタPCを含めても良い)の移動方向がコアユニット70から得られるコア加速度データ(またはサブ加速度データでもよい)に応じて制御される。つまり、プレイヤは、方向指示手段で特定キャラクタの移動方向を制御しながら、コアユニット70全体(またはサブユニット76全体)の動作によって複数のキャラクタの移動方向の制御を行うことができる。したがって、プレイヤは、特定キャラクタの移動方向を方向指示手段で制御しながら、複数のキャラクタの移動方向も直感的に操作することができる。
【0292】
ステップ136において、CPU30は、上記ステップ131で参照したコアキーデータに基づいて、プレイヤがコアユニット70の十字キーの下方向を押下しているか否かを判断する。そして、CPU30は、プレイヤが十字キーの下方向を押下している場合、次のステップ137に処理を進める。一方、CPU30は、プレイヤが十字キーの下方向を押下していない場合、当該サブルーチンによる処理を終了して、次のステップ20に処理を進める。
【0293】
ステップ137において、CPU30は、操作情報DaからチームXの選手モード用コアユニットから送信された操作情報に含まれる最新の第1座標データDa1および第2座標データDa2を参照する。次に、CPU30は、上記ステップ137で参照した第1座標データDa1および第2座標データDa2に対応する指示座標、および当該指示座標に対応する仮想空間位置を算出して、それぞれチームXの選手モード用コアユニットに対応する指示座標データDeおよび仮想空間位置座標データDfを更新して(ステップ138)、処理を次のステップに進める。なお、上記ステップ138で算出する指示座標および仮想空間位置の算出方法については、上記ステップ84と同様であるため、詳細な説明を省略する。
【0294】
次に、CPU30は、指示対象選手データDgを参照して、チームXの選手モード用コントローラ7の指示対象選手が設定されているか否かを判断する(ステップ139)。そして、CPU30は、指示対象選手が未設定の場合、次のステップ141に処理を進める。一方、CPU30は、指示対象選手が設定されている場合、次のステップ143に処理を進める。
【0295】
ステップ141において、CPU30は、上記ステップ138で算出された仮想空間位置を中心とした領域A(図27参照)内に、チームXの選手キャラクタのいずれかが配置されているか否かを判断する。次に、CPU30は、領域A内にチームXの選手キャラクタが配置されている場合、当該選手キャラクタをチームXの選手モード用コントローラ7の指示対象選手に設定して、そのキャラクタ識別番号等を指示対象選手データDgに記述する(ステップ142)。なお、上記領域A内にチームXの選手キャラクタが複数存在する場合には、ステップ138で算出された仮想空間位置に最も近い選手キャラクタが指示対象選手に設定される。そして、CPU30は、当該サブルーチンによる処理を終了して、次のステップ20に処理を進める。一方、CPU30は、領域A内にチームXの選手キャラクタが1人も配置されていない場合、そのまま当該サブルーチンによる処理を終了して、次のステップ20に処理を進める。
【0296】
ステップ143において、CPU30は、算出された仮想空間座標が仮想ゲーム空間に設定されたサッカーフィールド内か否かを判断する。次に、CPU30は、仮想空間座標が上記サッカーフィールド内である場合、仮想空間位置に応じて指示対象選手の移動ベクトルを設定して移動ベクトルデータDcを更新する(ステップ144)。例えば、CPU30は、指示対象選手の現在の配置位置から仮想空間位置TP(図27参照)に向かう方向を当該指示対象選手の移動ベクトルの方向とする。さらに、現在の配置位置から仮想空間位置TPまでの仮想距離に応じた大きさを当該指示対象選手の移動ベクトルの大きさとして設定してもよい。そして、CPU30は、指示対象選手データDgに記述されたチームXの選手モード用コントローラの指示対象選手をクリアし(ステップ145)、当該サブルーチンによる処理を終了して、次のステップ20に処理を進める。一方、CPU30は、仮想空間座標が上記サッカーフィールド外である場合、そのまま当該サブルーチンによる処理を終了して、次のステップ20に処理を進める。なお、ステップ145において、指示対象選手をクリアしなくてもよく、この場合には、指示対象選手を設定した後、その指示対象選手に対して複数回移動指示を出すことが可能になる(この場合には、ボタン操作や所定領域への座標指示などに応じて当該クリアの処理をするとよい)。
【0297】
次に、図24を参照して、上記ステップ20における監督モード処理について、詳細な動作を説明する。
【0298】
図24において、CPU30は、コントローラ識別番号データDbを参照して、チームXについて監督モード用のコントローラ識別番号が設定されているか否かを判断する(ステップ151)。そして、CPU30は、チームXについて監督モード用のコントローラ識別番号が設定されている場合、次のステップ152に処理を進める。一方、CPU30は、チームXについて監督モード用のコントローラ識別番号が設定されていない場合、当該サブルーチンによる処理を終了して、次のステップ21に処理を進める。
【0299】
ステップ152において、CPU30は、操作情報DaからチームXの監督モード用コアユニットから送信された操作情報に含まれる最新のコア加速度データを参照する。次に、CPU30は、コア加速度データが示すX軸方向の加速度の大きさが所定値以上であるか否かを判断する(ステップ153)。そして、CPU30は、X軸方向の加速度の大きさが所定値以上である場合、次のステップ154に処理を進める。一方、CPU30は、X軸方向の加速度の大きさが所定値未満である場合、次のステップ155に処理を進める。
【0300】
ステップ154において、CPU30は、上記ステップ152で参照したコア加速度データが示すX軸方向の加速度の大きさに基づいて、チームXのノンプレイヤキャラクタNPC全ての移動ベクトルを更新して、移動ベクトルデータDcを更新し、次のステップ155に処理を進める。例えば、図29に示すように、CPU30は、仮想ゲーム空間に設定されたサッカーフィールドのタッチラインと平行な方向の補正ベクトルを、チームXのノンプレイヤキャラクタNPC全ての移動ベクトルに加え、新たな移動ベクトルVmnpcを算出する。上記補正ベクトルは、固定の大きさとしてもよいし、当該X軸方向の加速度の大きさに応じた大きさとしてもよい。なお、補正ベクトルの方向を、コア加速度データが示す加速度の方向に応じて決定してもよい。具体的には上述した補正ベクトルの方向を決定する第1〜第4の例と同様である。
【0301】
なお、上記ステップ154の処理においても上記ステップ135の処理と同様に、チームXのプレイヤキャラクタPCの移動ベクトルについても、同様のベクトル加算を行って更新してもかまわない。また、チームXのノンプレイヤキャラクタNPCの何れか(例えば、チームXのゴールキーパー)を、ベクトル加算の対象から外してもかまわない。また、上述した処理では、タッチラインと平行な方向でX軸方向の加速度の大きさに応じた大きさのベクトルを加算する例を示したが、当該ベクトルをそのままチームXのノンプレイヤキャラクタNPC全ての移動ベクトルに設定してもかまわない。さらに、加算するベクトルの方向は、仮想カメラの視線方向ベクトルを仮想ゲーム空間の仮想水平面に投影した方向に対して垂直な水平方向や、当該視線方向を基準とした他の方向に設定してもかまわない。
【0302】
ステップ155において、CPU30は、操作情報DaからチームXの監督モード用コアユニットから送信された操作情報に含まれる最新の第1座標データDa1および第2座標データDa2を参照する。次に、CPU30は、上記ステップ155で参照した第1座標データDa1および第2座標データDa2に対応する指示座標、および当該指示座標に対応する仮想空間位置を算出して、それぞれチームXの監督モード用コアユニットに対応する指示座標データDeおよび仮想空間位置座標データDfを更新して(ステップ156)、処理を次のステップに進める。なお、上記ステップ156で算出する指示座標および仮想空間位置の算出方法については、上記ステップ84と同様であるため、詳細な説明を省略する。
【0303】
次に、CPU30は、指示対象選手データDgを参照して、チームXの監督モード用コントローラ7の指示対象選手が設定されているか否かを判断する(ステップ157)。そして、CPU30は、指示対象選手が未設定の場合、次のステップ158に処理を進める。一方、CPU30は、指示対象選手が設定されている場合、次のステップ160に処理を進める。
【0304】
ステップ158において、CPU30は、上記ステップ156で算出された仮想空間位置を中心とした領域A(図27参照)内に、チームXの選手キャラクタのいずれかが配置されているか否かを判断する。次に、CPU30は、領域A内にチームXの選手キャラクタが配置されている場合、当該選手キャラクタをチームXの監督モード用コントローラの指示対象選手に設定して、そのキャラクタ識別番号等を指示対象選手データDgに記述する(ステップ159)。なお、上記領域A内にチームXの選手キャラクタが複数存在する場合には、ステップ138で算出された仮想空間位置に最も近い選手キャラクタが指示対象選手に設定される。そして、CPU30は、当該サブルーチンによる処理を終了して、次のステップ21に処理を進める。一方、CPU30は、領域A内にチームXの選手キャラクタが1人も配置されていない場合、そのまま当該サブルーチンによる処理を終了して、次のステップ21に処理を進める。
【0305】
ステップ160において、CPU30は、算出された仮想空間座標が仮想ゲーム空間に設定されたサッカーフィールド内か否かを判断する。次に、CPU30は、仮想空間座標が上記サッカーフィールド内である場合、仮想空間位置に応じて指示対象選手の移動ベクトルを設定して移動ベクトルデータDcを更新する(ステップ161)。例えば、CPU30は、指示対象選手の現在の配置位置から仮想空間位置TP(図27参照)に向かう方向を当該指示対象選手の移動ベクトルの方向とする。さらに、現在の配置位置から仮想空間位置TPまでの仮想距離に応じた大きさを当該指示対象選手の移動ベクトルの大きさとして設定してもよい。そして、CPU30は、指示対象選手データDgに記述されたチームXの監督モード用コントローラの指示対象選手をクリアし(ステップ162)、当該サブルーチンによる処理を終了して、次のステップ21に処理を進める。一方、CPU30は、仮想空間座標が上記サッカーフィールド外である場合、そのまま当該サブルーチンによる処理を終了して、次のステップ21に処理を進める。なお、ステップ162において、指示対象選手をクリアしなくてもよく、この場合には、指示対象選手を設定した後、その指示対象選手に対して複数回移動指示を出すことが可能になる(この場合には、ボタン操作や所定領域への座標指示などに応じて当該クリアの処理をするとよい)。
【0306】
このように、ステップ20における監督モード処理においては、プレイヤが操作するコントローラ7を監督モードに設定することによって、チーム全体に対して総合的な操作が可能となる。具体的には、チーム内の複数のノンプレイヤキャラクタNPC(プレイヤキャラクタPCを含めても良い)の移動方向が、コアユニット70から得られるコア加速度データ(またはサブ加速度データでもよい)に応じて制御される。つまり、プレイヤは、コアユニット70全体(またはサブユニット76全体)の動作によって複数のキャラクタの移動方向の制御を行うことができる。したがって、プレイヤは、監督モードで複数のキャラクタの移動方向を直感的に操作することができる。
【0307】
なお、上述したフローチャートの処理から明らかなように、ステップ19における一時監督モード処理では、十字キーを操作する手順が異なるが、他の処理についてはステップ20の監督モード処理と類似している。つまり、プレイヤが操作するコントローラ7が選手モードに設定されていても、十字キーの上下方向を操作することによって、上述した監督モードと同様の操作が可能になっている。
【0308】
また、上記ステップ22の処理においては、移動ベクトルデータDcに記述された各移動ベクトルデータがそれぞれ所定量減衰するが、ノンプレイヤキャラクタNPCが所定の地点まで到達するまで継続して動作させたい場合、当該ノンプレイヤキャラクタNPCの移動ベクトルについては減衰しなくてもかまわない。例えば、指示対象選手をコアユニット70で指し示した仮想空間位置TPまで移動させたい場合、当該指示対象選手が仮想空間位置TPに到達するまで当該指示対象選手の移動ベクトルの大きさおよび方向を維持してもかまわない。
【0309】
また、上述した説明では、表示画面に対して遠隔から座標指定するために、コアユニット70に設けられた撮像素子743で撮像対象を撮像した画像データを解析することによって、モニタ2の表示画面に対して座標指定する態様を用いた。この態様は、表示画面近傍に撮像対象となる2つのマーカを設置し、撮像手段およびその撮像方向を自在に変更可能なハウジングを備えたデバイスが撮像画像中の2つのマーカを検出し、当該撮像画像におけるマーカの位置に基づいて当該デバイスが指定する座標位置を導出するものである。しかしながら、他の態様で上記座標指定を行ってもかまわない。
【0310】
例えば、表示画面近傍に設置する撮像対象は、上述した電気的なマーカ(LEDモジュール)の他に、光を反射する部材や特定色や特定形状を有する物理的なマーカでもかまわない。また、モニタ2の表示画面に撮像対象を表示してもかまわない。また、コアユニット70が備える撮像手段でラスタスキャン型モニタの走査線を読み取ることによって、当該モニタ自体を撮像対象にしてもかまわない。また、磁気発生装置を設け、当該磁気発生装置から生じる磁気を利用して遠隔から座標指定してもかまわない。この場合、コアユニット70には、上記磁気を検出するための磁気センサを設けることになる。
【0311】
また、上述した説明では、2つのマーカ8Lおよび8Rからの赤外光を、コアユニット70の撮像情報演算部74の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、1つまたは3つ以上のマーカをモニタ2の近傍に設置し、それらのマーカからの赤外光を撮像情報演算部74の撮像対象としてもかまわない。例えば、所定の長さを有する1つのマーカをモニタ2の近傍に設置しても、本発明を同様に実現することができる。また、モニタ2の表示画面自体や他の発光体(室内灯等)を撮像情報演算部74の撮像対象としてもかまわない。撮像対象とモニタ2の表示画面との配置関係に基づいて、当該表示画面に対するコアユニット70の位置を演算すれば、様々な発光体を撮像情報演算部74の撮像対象として用いることができる。
【0312】
また、コアユニット70側にマーカ等の撮像対象を設けて、撮像手段をモニタ2側に設けてもかまわない。さらに他の例では、コアユニット70の前面から光を放射する機構を設けてもかまわない。この場合、コアユニット70およびモニタ2とは別の場所にモニタ2の表示画面を撮像する撮像装置を設置し、モニタ2の表示画面にコアユニット70から放射された光が反射した位置を当該撮像装置が撮像した画像から解析することによって、同様に表示画面に対して遠隔から座標指定するためのデータを出力可能なポインティングデバイスを構成することができる。
【0313】
また、上述した説明では、コントローラ7とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コアユニット70とサブユニット76とが接続ケーブル79で接続され、コアユニット70とゲーム装置本体5とが別のケーブルで接続される。
【0314】
また、上述したコントローラ7の形状や、それらに設けられている操作部72および78の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。
【0315】
また、本発明のゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【産業上の利用可能性】
【0316】
本発明に係るゲームシステムおよびゲームプログラムは、プレイヤキャラクタの移動制御を直感的かつ容易な操作で多様に制御する、または、ゲーム入力のダイレクト感を効果的に感じさせることができ、仮想ゲーム世界におけるオブジェクトを移動させるゲームシステムや当該ゲーム装置本体で実行されるゲームプログラムとして有用である。
【符号の説明】
【0317】
1…ゲームシステム
2…モニタ
2a、706…スピーカ
3…ゲーム装置
30…CPU
31…メモリコントローラ
32…GPU
33…メインメモリ
34…DSP
35…ARAM
36…コントローラI/F
37…ビデオI/F
38…フラッシュメモリ
39…オーディオI/F
40…ディスクドライブ
41…ディスクI/F
4…光ディスク
5…ゲーム装置本体
6…通信ユニット
7…コントローラ
70…コアユニット
71、77…ハウジング
72、78…操作部
73、791…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701、761…加速度センサ
702…LED
704…バイブレータ
707…サウンドIC
708…アンプ
76…サブユニット
79…接続ケーブル
8…マーカ

【特許請求の範囲】
【請求項1】
プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムであって、
少なくとも前記ゲームコントローラは、前記ハウジングに設けられ、方向指示入力するための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する移動ベクトル制御手段と、
前記検出部の検出に基づき、前記ハウジングの基準姿勢からの姿勢変化に応じて、前記移動ベクトル制御手段によって決定された移動ベクトルを補正する補正手段と、
前記補正手段によって補正された移動ベクトルに基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段とを備える、ゲームシステム。
【請求項2】
前記補正手段は、前記ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界における所定方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する、請求項1に記載のゲームシステム。
【請求項3】
前記補正手段は、前記ハウジングの左右軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前方向への移動量が増加するように前記移動ベクトルを補正する、請求項2に記載のゲームシステム。
【請求項4】
前記補正手段は、前記ハウジングの前後軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界における前記オブジェクトの左右方向への移動量が増加するように前記移動ベクトルを補正する、請求項2に記載のゲームシステム。
【請求項5】
前記補正手段は、前記ハウジングの所定軸が当該所定軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における所定方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する、請求項1に記載のゲームシステム。
【請求項6】
前記補正手段は、前記ハウジングの第1軸が当該第1軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第1方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正し、
前記補正手段は、前記ハウジングの前記第1軸とは異なる第2軸が当該第2軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における前記第1方向とは異なる第2方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する、請求項1に記載のゲームシステム。
【請求項7】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向に傾倒させる入力が可能なものであり、
前記移動ベクトル制御手段は、前記スティックが前記所定方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを第1方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングが前記所定方向に傾くように回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前記第1方向への移動量が増加するように前記移動ベクトルを補正する、請求項1に記載のゲームシステム。
【請求項8】
前記方向指示部は、少なくともスティックが前記ハウジングの所定軸周りに回転するように傾倒させる入力が可能なものであり、 前記移動ベクトル制御手段は、前記スティックが前記所定軸周りに回転する方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを第1方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングが前記所定軸周りに回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前記第1方向への移動量が増加するように前記移動ベクトルを補正する、請求項1に記載のゲームシステム。
【請求項9】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能なものであり、
前記移動ベクトル制御手段は、前記スティックが前記所定方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを第1方向に移動させるように前記移動ベクトルを決定し、かつ、前記スティックが前記直交する方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを前記第1方向と直交する第2方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングが前記所定方向に傾くように回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前記第1方向への移動量が増加するように前記移動ベクトルを補正し、かつ、前記ハウジングが前記直交する方向に傾くように回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前記第2方向への移動量が増加するように前記移動ベクトルを補正する、請求項1に記載のゲームシステム。
【請求項10】
前記方向指示部は、少なくともスティックを前記ハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能なものであり、
前記移動ベクトル制御手段は、前記方向指示部による指示方向に応じて、前記スティックが前記ハウジングの前方向に傾倒されたときに仮想ゲーム世界において前記オブジェクトが移動する方向である基準方向を変更し、前記オブジェクトを当該基準方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングが前記前方向に傾いたことに応じて、仮想ゲーム世界における前記オブジェクトの前記基準方向への移動量が増加するように前記移動ベクトルを補正する、請求項1に記載のゲームシステム。
【請求項11】
プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムであって、
前記ゲームコントローラは、
その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジングと、
前記ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、前記ハウジングの前後左右方向への指示入力するための方向指示部と、
前記ハウジングの動きを検出する動き検出手段とを備え、
前記ゲーム装置は、
前記方向指示部により前記ハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの後ろ方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの左右方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向とする決定する移動方向制御手段と、
前記動き検出手段の検出に基づいて前記ハウジングの前方向に当該ハウジングが回転したことを示すとき、仮想ゲーム世界における前記前方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する補正手段と、
仮想ゲーム世界内で、前記補正手段によって補正された移動ベクトルに基づいて前記オブジェクトを移動させる移動制御手段とを備える、ゲームシステム。
【請求項12】
前記移動ベクトル制御手段は、前記方向指示部で操作された指示方向に応じて、仮想ゲーム世界における前記オブジェクトの前方向を基準とした前記移動ベクトルの方向を決定し、
前記ゲーム装置は、前記移動ベクトル制御手段によって決定され前記補正手段によって補正された移動ベクトルの方向を、前記オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界における前記オブジェクトの方向を変更するオブジェクト方向制御手段を、さらに備える、請求項2乃至11の何れかに記載のゲームシステム。
【請求項13】
プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムであって、
前記ゲームコントローラは、少なくとも、
プレイヤが片手で把持可能なハウジングと、
前記ハウジングに生じる加速度を検出する加速度検出手段と、
前記ハウジングに設けられ、方向指示入力するための方向指示部とを備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する移動ベクトル制御手段と、
前記加速度検出手段の検出に基づき、前記ハウジングに生じた加速度に応じて、前記移動ベクトル制御手段によって決定された移動ベクトルを補正する補正手段と、
前記補正手段によって補正された移動ベクトルに基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段とを備える、ゲームシステム。
【請求項14】
前記補正手段は、前記ハウジングの所定軸方向に生じた加速度に応じて、仮想ゲーム世界における所定方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する、請求項13に記載のゲームシステム。
【請求項15】
前記補正手段は、前記ハウジングの前方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前方向への移動量が増加するように前記移動ベクトルを補正する、請求項14に記載のゲームシステム。
【請求項16】
前記補正手段は、前記ハウジングの左右方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの左右方向への移動量が増加するように前記移動ベクトルを補正する、請求項14に記載のゲームシステム。
【請求項17】
前記補正手段は、前記ハウジングの第1方向に生じた加速度に応じて、仮想ゲーム世界における第1方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正し、
前記補正手段は、前記ハウジングの前記第1方向とは異なる第2方向に生じた加速度に応じて、仮想ゲーム世界における前記第1方向とは異なる第2方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する、請求項13に記載のゲームシステム。
【請求項18】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向に傾倒させる入力が可能なものであり、
前記移動ベクトル制御手段は、前記スティックが前記所定方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを第1方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングの前記所定方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前記第1方向への移動量が増加するように前記移動ベクトルを補正する、請求項13に記載のゲームシステム。
【請求項19】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能なものであり、
前記移動ベクトル制御手段は、前記スティックが前記所定方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを第1方向に移動させるように前記移動ベクトルを決定し、かつ、前記スティックが前記直交する方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトを前記第1方向と直交する第2方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングの前記所定方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前記第1方向への移動量が増加するように前記移動ベクトルを補正し、かつ、前記ハウジングの前記直交する方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前記第2方向への移動量が増加するように前記移動ベクトルを補正する、請求項13に記載のゲームシステム。
【請求項20】
前記方向指示部は、少なくともスティックを前記ハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能なものであり、
前記移動ベクトル制御手段は、前記方向指示部による指示方向に応じて、前記スティックが前記ハウジングの前方向に傾倒されたときに仮想ゲーム世界において前記オブジェクトが移動する方向である基準方向を変更し、前記オブジェクトを当該基準方向に移動させるように前記移動ベクトルを決定し、
前記補正手段は、前記ハウジングの前記前方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前記基準方向への移動量が増加するように前記移動ベクトルを補正する、請求項13に記載のゲームシステム。
【請求項21】
プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムであって、
前記ゲームコントローラは、
その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジングと、
前記ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、前記ハウジングの前後左右方向への指示入力するための方向指示部と、
少なくとも前記ハウジングの前方向に生じる加速度を検出する加速度検出手段とを備え、
前記ゲーム装置は、
前記方向指示部により前記ハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの後ろ方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの左右方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向として決定する移動ベクトル制御手段と、
前記加速度検出手段の検出に基づいて、前記ハウジングの前方向に加速度が生じたときに、仮想ゲーム世界における前記オブジェクトの前方向への移動量が増加するように前記移動ベクトルを補正する補正手段と、
仮想ゲーム世界内で、前記補正手段によって補正された移動ベクトルに基づいて前記オブジェクトを移動させる移動制御手段とを備える、ゲームシステム。
【請求項22】
前記移動ベクトル制御手段は、前記方向指示部で操作された指示方向に応じて、仮想ゲーム世界における前記オブジェクトの前方向を基準とした前記移動ベクトルの方向を決定し、 前記ゲーム装置は、前記移動ベクトル制御手段によって決定され前記補正手段によって補正された移動ベクトルの方向を、前記オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界における前記オブジェクトの方向を変更するオブジェクト方向制御手段を、さらに備える、請求項13乃至21の何れかに記載のゲームシステム。
【請求項23】
プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムであって、
少なくとも前記ゲームコントローラは、前記ハウジングに設けられ、方向指示入力するための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向決定手段と、
前記検出部の検出に基づき、前記ハウジングの基準姿勢からの姿勢変化に応じて、前記オブジェクトの移動量を決定する移動量決定手段と、
前記移動方向決定手段によって決定された移動方向、および、前記移動量決定手段によって決定された移動量に基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段とを備える、ゲームシステム。
【請求項24】
プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムであって、
前記ゲームコントローラは、少なくとも、
プレイヤが片手で把持可能なハウジングと、
前記ハウジングに生じる加速度を検出する加速度検出手段と、
前記ハウジングに設けられ、方向指示入力するための方向指示部とを備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向決定手段と、
前記加速度検出手段の検出に基づき、前記ハウジングに生じた加速度に応じて、前記オブジェクトの移動量を決定する移動量決定手段と、
前記移動方向決定手段によって決定された移動方向、および、前記移動量決定手段によって決定された移動量に基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段とを備える、ゲームシステム。
【請求項25】
プレイヤが片手で把持可能なハウジングを有するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムであって、
少なくとも前記ゲームコントローラは、前記ハウジングに設けられ、方向指示入力するための方向指示部を備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する位置決定手段と、
前記検出部の検出に基づき、前記ハウジングの基準姿勢からの姿勢変化に応じて、前記オブジェクトの仮想ゲーム世界における変位を決定する変位決定手段と、
前記位置決定手段によって決定された前記オブジェクトの位置を、前記変位決定手段によって決定された変位だけ変化させて、前記オブジェクトが移動するように制御する移動制御手段とを備える、ゲームシステム。
【請求項26】
前記変位決定手段は、前記ハウジングが所定軸周りに回転したことに応じて、仮想ゲーム世界における所定方向への前記オブジェクトの変位を決定する、請求項25に記載のゲームシステム。
【請求項27】
前記変位決定手段は、前記ハウジングの左右軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界における前記オブジェクトの前方向へ当該オブジェクトが変位するように前記変位を決定する、請求項25に記載のゲームシステム。
【請求項28】
前記変位決定手段は、前記ハウジングの前後軸周りに当該ハウジングが回転したことに応じて、仮想ゲーム世界における前記オブジェクトの左右方向へ当該オブジェクトが変位するように前記変位を決定する、請求項25に記載のゲームシステム。
【請求項29】
前記変位決定手段は、前記ハウジングの所定軸が当該所定軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における所定方向へ前記オブジェクトが変位するように前記変位を決定する、請求項25に記載のゲームシステム。
【請求項30】
前記変位決定手段は、前記ハウジングの第1軸が当該第1軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における第1方向へ前記オブジェクトが変位するように前記変位を決定し、
前記変位決定手段は、前記ハウジングの前記第1軸とは異なる第2軸が当該第2軸に直交する軸周りに回転したことに応じて、仮想ゲーム世界における前記第1方向とは異なる第2方向へ前記オブジェクトが変位するように前記変位を決定する、請求項25に記載のゲームシステム。
【請求項31】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向に傾倒させる入力が可能なものであり、
前記位置決定手段は、前記スティックが前記所定方向に傾倒されたときに、前記オブジェクトの位置を仮想ゲーム世界における第1方向に移動させて新たな位置を決定し、
前記変位決定手段は、前記ハウジングが前記所定方向に傾くように回転したことに応じて、仮想ゲーム世界における前記第1方向へ前記オブジェクトが変位するように前記変位を決定する、請求項25に記載のゲームシステム。
【請求項32】
前記方向指示部は、少なくともスティックが前記ハウジングの所定軸周りに回転するように傾倒させる入力が可能なものであり、
前記位置決定手段は、前記スティックが前記所定軸周りに回転する方向に傾倒されたときに、前記オブジェクトの位置を仮想ゲーム世界における第1方向に移動させて新たな位置を決定し、
前記変位決定手段は、前記ハウジングが前記所定軸周りに回転したことに応じて、仮想ゲーム世界における前記第1方向へ前記オブジェクトが変位するように前記変位を決定する、請求項25に記載のゲームシステム。
【請求項33】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能なものであり、
前記位置決定手段は、前記スティックが前記所定方向に傾倒されたときに、前記オブジェクトの位置を仮想ゲーム世界における第1方向に移動させて新たな位置を決定し、かつ、前記スティックが前記直交する方向に傾倒されたときに、前記オブジェクトの位置を仮想ゲーム世界において前記第1方向と直交する第2方向に移動させて新たな位置を決定し、
前記変位決定手段は、前記ハウジングが前記所定方向に傾くように回転したことに応じて、前記第1方向へ前記オブジェクトが変位するように前記変位を決定し、かつ、前記ハウジングが前記直交する方向に傾くように回転したことに応じて、前記第2方向へ前記オブジェクトが変位するように前記変位を決定する、請求項25に記載のゲームシステム。
【請求項34】
前記方向指示部は、少なくともスティックを前記ハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能なものであり、
前記位置決定手段は、前記方向指示部による指示方向に応じて、前記スティックが前記ハウジングの前後左右方向に傾倒されたときに、前記オブジェクトの位置を仮想ゲーム世界において前後左右方向に移動させて新たな位置を決定し、
前記変位決定手段は、前記ハウジングが左右方向に傾いたことに応じて、仮想ゲーム世界における前記オブジェクトの左右方向に当該オブジェクトが変位するように前記変位を決定する、請求項25に記載のゲームシステム。
【請求項35】
プレイヤが操作するゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置とを含むゲームシステムであって、
前記ゲームコントローラは、少なくとも、
プレイヤが片手で把持可能なハウジングと、
前記ハウジングに生じる加速度を検出する加速度検出手段と、
前記ハウジングに設けられ、方向指示入力するための方向指示部とを備え、
前記ゲーム装置は、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する位置決定手段と、
前記加速度検出手段の検出に基づき、前記ハウジングに生じた加速度に応じて、前記オブジェクトの仮想ゲーム世界における変位を決定する変位決定手段と、
前記位置決定手段によって決定された前記オブジェクトの位置を、前記変位決定手段によって決定された変位だけ変化させて、前記オブジェクトが移動するように制御する移動制御手段とを備える、ゲームシステム。
【請求項36】
前記変位決定手段は、前記ハウジングの前後方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの前後方向へ当該オブジェクトが変位するように前記変位を決定する、請求項35に記載のゲームシステム。
【請求項37】
前記変位決定手段は、前記ハウジングの第1方向に生じた加速度に応じて、仮想ゲーム世界における第1方向へ前記オブジェクトが変位するように前記変位を決定し、
前記変位決定手段は、前記ハウジングの前記第1方向とは異なる第2方向に生じた加速度に応じて、仮想ゲーム世界における前記第1方向とは異なる第2方向へ前記オブジェクトが変位するように前記変位を決定する、請求項35に記載のゲームシステム。
【請求項38】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向に傾倒させる入力が可能なものであり、
前記位置決定手段は、前記スティックが前記所定方向に傾倒されたときに、前記オブジェクトの位置を仮想ゲーム世界における第1方向に移動させて新たな位置を決定し、
前記変位決定手段は、前記ハウジングの前記所定方向に生じた加速度に応じて、仮想ゲーム世界における前記第1方向へ前記オブジェクトが変位するように前記変位を決定する、請求項35に記載のゲームシステム。
【請求項39】
前記方向指示部は、少なくともスティックを前記ハウジングの所定方向および当該所定方向に直交する方向に傾倒させる入力が可能なものであり、
前記位置決定手段は、前記スティックが前記所定方向に傾倒されたときに、前記オブジェクトの位置を仮想ゲーム世界における第1方向に移動させて新たな位置を決定し、かつ、前記スティックが前記直交する方向に傾倒されたときに、前記オブジェクトの位置を前記第1方向と直交する第2方向に移動させて新たな位置を決定し、
前記変位決定手段は、前記ハウジングの前記所定方向に生じた加速度に応じて、仮想ゲーム世界における前記第1方向へ前記オブジェクトが変位するように前記変位を決定し、かつ、前記ハウジングの前記直交する方向に生じた加速度に応じて、仮想ゲーム世界における前記第2方向へ前記オブジェクトが変位するように前記変位を決定する、請求項35に記載のゲームシステム。
【請求項40】
前記方向指示部は、少なくともスティックを前記ハウジングの前後左右に傾倒させることにより前後左右方向の指示入力が可能なものであり、
前記位置決定手段は、前記方向指示部による指示方向に応じて、前記スティックが前記ハウジングの前後左右方向に傾倒されたときに、仮想ゲーム世界において前記オブジェクトの位置を前後左右方向に移動させて新たな位置を決定し、
前記変位決定手段は、前記ハウジングの左右方向に生じた加速度に応じて、仮想ゲーム世界における前記オブジェクトの左右方向に当該オブジェクトが変位するように前記変位を決定する、請求項35に記載のゲームシステム。
【請求項41】
前記位置決定手段は、前記方向指示部で操作された指示方向に応じて、仮想ゲーム世界における前記オブジェクトの前方向を基準として、前記オブジェクトの新たな位置を決定し、
前記ゲーム装置は、前記位置決定手段が前記オブジェクトの位置を移動させた仮想ゲーム世界における方向を、前記オブジェクトの新たな前方向に設定し、当該前方向に基づいて仮想ゲーム世界における前記オブジェクトの方向を変更するオブジェクト方向制御手段を、さらに備える、請求項25乃至40の何れかに記載のゲームシステム。
【請求項42】
前記第1軸と前記第2軸とは、互いに直交し、
前記第1方向と前記第2方向とは、仮想ゲーム世界において互いに直交する、請求項6または30に記載のゲームシステム。
【請求項43】
前記ハウジングの第1方向と第2方向とは、互いに直交し、
前記仮想ゲーム世界における第1方向と第2方向とは、仮想ゲーム世界において互いに直交する、請求項17または37に記載のゲームシステム。
【請求項44】
前記ハウジングは、当該ハウジングの側周をプレイヤが片手で握持可能な形状および大きさで形成される、請求項1、13、23、24、25、および35の何れかに記載のゲームシステム。
【請求項45】
前記ハウジングは、当該ハウジングの側周をプレイヤが片手で握持したときに、当該片手の親指で操作可能な位置に前記方向指示部が配設される、請求項44に記載のゲームシステム。
【請求項46】
プレイヤが片手で把持可能なハウジングおよび当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムにおいて、当該ゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する移動ベクトル制御手段と、
前記検出部の検出に基づき、前記ハウジングの基準姿勢からの姿勢変化に応じて、前記移動ベクトル制御手段によって決定された移動ベクトルを補正する補正手段と、
前記補正手段によって補正された移動ベクトルに基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段として機能させる、ゲームプログラム。
【請求項47】
その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジング、当該ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、前記ハウジングの前後左右方向への指示入力するための方向指示部、および当該ハウジングの動きを検出する動き検出手段を備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部により前記ハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの後ろ方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの左右方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向とする決定する移動方向制御手段と、
前記動き検出手段の検出に基づいて前記ハウジングの前方向に当該ハウジングが回転したことを示すとき、仮想ゲーム世界における前記前方向への前記オブジェクトの移動量が増加するように前記移動ベクトルを補正する補正手段と、
仮想ゲーム世界内で、前記補正手段によって補正された移動ベクトルに基づいて前記オブジェクトを移動させる移動制御手段として機能させる、ゲームプログラム。
【請求項48】
プレイヤが片手で把持可能なハウジング、当該ハウジングに生じる加速度を検出する加速度検出手段、および当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動ベクトルを決定する移動ベクトル制御手段と、
前記加速度検出手段の検出に基づき、前記ハウジングに生じた加速度に応じて、前記移動ベクトル制御手段によって決定された移動ベクトルを補正する補正手段と、
前記補正手段によって補正された移動ベクトルに基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段として機能させる、ゲームプログラム。
【請求項49】
その側周をプレイヤが片手で握持可能な形状および大きさで形成されるハウジング、当該ハウジングをプレイヤが片手で握持したときに当該片手の親指で操作可能な位置配設され、前記ハウジングの前後左右方向への指示入力するための方向指示部、および少なくとも当該ハウジングの前方向に生じる加速度を検出する加速度検出手段を備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部により前記ハウジングの前方向への指示がされたときに、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における前方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの後ろ方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における後ろ方向を移動ベクトルの方向とし、前記方向指示部により前記ハウジングの左右方向への指示がされたときに、前記オブジェクトの仮想ゲーム世界における左右方向を移動ベクトルの方向として決定する移動ベクトル制御手段と、
前記加速度検出手段の検出に基づいて、前記ハウジングの前方向に加速度が生じたときに、仮想ゲーム世界における前記オブジェクトの前方向への移動量が増加するように前記移動ベクトルを補正する補正手段と、
仮想ゲーム世界内で、前記補正手段によって補正された移動ベクトルに基づいて前記オブジェクトを移動させる移動制御手段として機能させる、ゲームプログラム。
【請求項50】
プレイヤが片手で把持可能なハウジングおよび当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムにおいて、当該ゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向決定手段と、
前記検出部の検出に基づき、前記ハウジングの基準姿勢からの姿勢変化に応じて、前記オブジェクトの移動量を決定する移動量決定手段と、
前記移動方向決定手段によって決定された移動方向、および、前記移動量決定手段によって決定された移動量に基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段として機能させる、ゲームプログラム。
【請求項51】
プレイヤが片手で把持可能なハウジング、当該ハウジングに生じる加速度を検出する加速度検出手段、および当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの移動方向を決定する移動方向決定手段と、
前記加速度検出手段の検出に基づき、前記ハウジングに生じた加速度に応じて、前記オブジェクトの移動量を決定する移動量決定手段と、
前記移動方向決定手段によって決定された移動方向、および、前記移動量決定手段によって決定された移動量に基づいて、前記オブジェクトを仮想ゲーム世界において移動制御する移動制御手段として機能させる、ゲームプログラム。
【請求項52】
プレイヤが片手で把持可能なハウジングおよび当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと、当該ゲームコントローラと接続されるゲーム装置と、当該ハウジングの姿勢を検出する検出部とを含むゲームシステムにおいて、当該ゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する位置決定手段と、
前記検出部の検出に基づき、前記ハウジングの基準姿勢からの姿勢変化に応じて、前記オブジェクトの仮想ゲーム世界における変位を決定する変位決定手段と、
前記位置決定手段によって決定された前記オブジェクトの位置を、前記変位決定手段によって決定された変位だけ変化させて、前記オブジェクトが移動するように制御する移動制御手段として機能させる、ゲームプログラム。
【請求項53】
プレイヤが片手で把持可能なハウジング、当該ハウジングに生じる加速度を検出する加速度検出手段、および当該ハウジングに設けられて方向指示入力するための方向指示部とを備えたゲームコントローラと接続されるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記方向指示部の操作に応じて、仮想ゲーム世界に登場するオブジェクトの仮想ゲーム世界における位置を決定する位置決定手段と、
前記加速度検出手段の検出に基づき、前記ハウジングに生じた加速度に応じて、前記オブジェクトの仮想ゲーム世界における変位を決定する変位決定手段と、
前記位置決定手段によって決定された前記オブジェクトの位置を、前記変位決定手段によって決定された変位だけ変化させて、前記オブジェクトが移動するように制御する移動制御手段として機能させる、ゲームプログラム。

【図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

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate


【公開番号】特開2013−78624(P2013−78624A)
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2012−282852(P2012−282852)
【出願日】平成24年12月26日(2012.12.26)
【分割の表示】特願2007−15532(P2007−15532)の分割
【原出願日】平成19年1月25日(2007.1.25)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】