(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022160998
(43)【公開日】2022-10-20
(54)【発明の名称】情報処理プログラム、情報処理装置、情報処理方法、および情報処理システム
(51)【国際特許分類】
A63F 13/211 20140101AFI20221013BHJP
A63F 13/24 20140101ALI20221013BHJP
A63F 13/55 20140101ALI20221013BHJP
A63F 13/812 20140101ALI20221013BHJP
G06F 3/0346 20130101ALI20221013BHJP
【FI】
A63F13/211
A63F13/24
A63F13/55
A63F13/812 D
G06F3/0346 425
【審査請求】未請求
【請求項の数】15
【出願形態】OL
【公開請求】
(21)【出願番号】P 2022021341
(22)【出願日】2022-02-15
(71)【出願人】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】特許業務法人 小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】辰田 英之
(72)【発明者】
【氏名】正岡 隆史
(72)【発明者】
【氏名】吉川 和宏
(72)【発明者】
【氏名】鈴木 亮祐
【テーマコード(参考)】
5B087
【Fターム(参考)】
5B087AA07
5B087AA09
5B087BC31
5B087DD03
(57)【要約】
【課題】振り操作の判定の精度を向上できる情報処理プログラム、情報処理装置、情報処理方法、および情報処理システムを提供すること。
【解決手段】慣性センサーの出力に基づき、操作装置が振られている振り状態であるか否かを判定する。更に、慣性センサーの所定軸周りにおいて第1方向に回転、または、当該第1の方向とは逆方向の第2の方向に回転したかを判定する。更に、操作装置が上方向に振られたか下方向に振られたかも判定する。そして、上記振り状態となる期間において、操作装置が所定軸周りの第1の方向へ回転した場合か、操作装置が上方向に振られた場合の少なくともいずれかにおいて、第1の処理を実行する。また、当該振り状態となる期間において、操作装置が所定軸周りの第2の方向へ回転した場合か、下方向に振られたと判定される場合の少なくともいずれかにおいて、第2の処理を実行する。
【選択図】
図19
【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータに実行させる情報処理プログラムであって、
前記コンピュータに、
慣性センサ―を備える操作装置から、当該慣性センサーの出力に基づいたデータを少なくとも含む操作データを取得させ、
前記操作データに基づいて、前記操作装置が振られていることを示す振り状態であるか否かを判定させ、
前記操作データに基づいて、前記慣性センサーの所定軸周りにおいて第1方向に回転、または、当該第1の方向とは逆方向の第2の方向に回転したかを判定させ、
前記操作データに基づいて、前記操作装置が上方向に振られたか、下方向に振られたかを判定させ、
前記操作データに基づいて、前記操作装置が前記振り状態となる期間において、前記操作装置が前記所定軸周りにおいて前記第1の方向に回転した場合か、前記操作装置が上方向に振られたと判定される場合の少なくともいずれかにおいて、第1の処理を実行させ、
前記操作データに基づいて、前記操作装置が前記振り状態となる期間において、前記操作装置が前記所定軸周りにおいて前記第2の方向に回転した場合か、前記操作装置が下方向に振られたと判定される場合の少なくともいずれかにおいて、第2の処理を実行させる、情報処理プログラム。
【請求項2】
前記コンピュータに更に、
前記第1の処理または前記第2の処理に基づいて、仮想空間内の移動オブジェクトを移動させ、
前記移動オブジェクトを用いたゲーム処理を実行させる、請求項1に記載の情報処理プログラム。
【請求項3】
前記コンピュータに、
前記第1の処理に基づいて前記移動オブジェクトを移動させる場合、前記移動オブジェクトの軌道に第1の変化を加えて移動させ、
前記第2の処理に基づいて前記移動オブジェクトを移動させる場合、前記移動オブジェクトの軌道に第2の変化を加えて移動させる、請求項2に記載の情報処理プログラム。
【請求項4】
前記コンピュータに、
前記キャラクタオブジェクトが前記移動オブジェクトに対して第1アクションを行わせる処理を前記第1の処理として実行させ、
前記キャラクタオブジェクトが前記移動オブジェクトに対して第2アクションを行わせる処理を前記第2の処理として実行させる、請求項2に記載の情報処理プログラム。
【請求項5】
前記コンピュータに更に
前記操作データに基づいて、前記操作装置の姿勢を算出させ、
前記算出された前記操作装置の姿勢に基づいて、当該操作装置が上方向に振られたか、下方向に振られたかを判定させる、請求項1~4のいずれかに記載の情報処理プログラム。
【請求項6】
前記コンピュータに更に、
前記操作データに基づいて、前記振り期間中における前記慣性センサーの所定軸周りにおける回転量を算出させ、
前記操作データに基づいて、前記振り期間中における前記操作装置の姿勢変化量を算出させ、
前記回転量と前記姿勢変化量とに基づいて前記第1の処理または前記第2の処理を実行させる、請求項5に記載の情報処理プログラム。
【請求項7】
前記コンピュータに、
前記第1の処理については、前記回転量と、前記姿勢変化量とを加算して算出される第1パラメータに基づいて実行させ、
前記第2の処理については、前記回転量と、前記姿勢変化量とを加算して算出される第2パラメータに基づいて実行させる、請求項6に記載の情報処理プログラム。
【請求項8】
前記コンピュータに、
前記第1の処理については、前記姿勢変化量を減少させるように調整したうえで前記第1パラメータを算出させ、
前記第2の処理については、前記姿勢変化量を減少させるように調整したうえで前記第2パラメータを算出させる、請求項7に記載の情報処理プログラム。
【請求項9】
前記コンピュータに、
前記第1方向への回転量が第1閾値を超える場合に、当該第1方向に回転したものと判定させ、
前記第2方向への回転量が第2閾値を超える場合に、当該第2方向に回転したものと判定させる、請求項6に記載の情報処理プログラム。
【請求項10】
前記コンピュータに、
前記操作装置が上方向に振られたと判定された場合であって、前記姿勢変化量が第3閾値を超える場合に前記第1の処理を実行させ、
前記操作装置が下方向に振られたと判定された場合であって、前記姿勢変化量が第4閾値を超える場合に前記第2の処理を実行させる、請求項6に記載の情報処理プログラム。
【請求項11】
前記コンピュータに、
加速度データを含む操作データを取得させ、
前記取得した前記操作データが含む前記加速度データが示す加速度の大きさが第1閾値を超えた場合に前記振り状態が開始したと判定させ、当該加速度の大きさがピークに達した後の解除タイミングにおいて、振り状態が終了したと判定させる、請求項1~10のいずれかに記載の情報処理プログラム。
【請求項12】
前記コンピュータに更に、
取得した前記操作データに基づいて、前記第1の処理を実行するための条件、および、前記第2の処理を実行するための条件が前記振り期間中に満たされなかった場合、第3の処理を実行させる、請求項1~11のいずれかに記載の情報処理プログラム。
【請求項13】
コンピュータを備える情報処理装置であって、
前記コンピュータは、
慣性センサーを備える操作装置から、当該慣性センサーの出力に基づいたデータを少なくとも含む操作データを取得し、
前記操作データに基づいて、前記操作装置が振られていることを示す振り状態であるか否かを判定し、
前記操作データに基づいて、前記慣性センサーの所定軸周りにおいて第1方向に回転、または、当該第1の方向とは逆方向の第2の方向に回転したかを判定し、
前記操作データに基づいて、前記操作装置が上方向に振られたか、下方向に振られたかを判定し、
前記操作データに基づいて、前記操作装置が前記振り状態となる期間において、前記操作装置が前記所定軸周りにおいて前記第1の方向に回転した場合か、前記操作装置が上方向に振られたと判定される場合の少なくともいずれかにおいて、第1の処理を実行し、
前記操作データに基づいて、前記操作装置が前記振り状態となる期間において、前記操作装置が前記所定軸周りにおいて前記第2の方向に回転した場合か、前記操作装置が下方向に振られたと判定される場合の少なくともいずれかにおいて、第2の処理を実行する、情報処理装置。
【請求項14】
情報処理装置のコンピュータに実行させる情報処理方法であって、
前記コンピュータに、
慣性センサーを備える操作装置から、当該慣性センサーの出力に基づいたデータを少なくとも含む操作データを取得させ、
前記操作データに基づいて、前記操作装置が振られていることを示す振り状態であるか否かを判定させ、
前記操作データに基づいて、前記慣性センサーの所定軸周りにおいて第1方向に回転、または、当該第1の方向とは逆方向の第2の方向に回転したかを判定させ、
前記操作データに基づいて、前記操作装置が上方向に振られたか、下方向に振られたかを判定させ、
前記操作データに基づいて、前記操作装置が前記振り状態となる期間において、前記操作装置が前記所定軸周りにおいて前記第1の方向に回転した場合か、前記操作装置が上方向に振られたと判定される場合の少なくともいずれかにおいて、第1の処理を実行させ、
前記操作データに基づいて、前記操作装置が前記振り状態となる期間において、前記操作装置が前記所定軸周りにおいて前記第2の方向に回転した場合か、前記操作装置が下方向に振られたと判定される場合の少なくともいずれかにおいて、第2の処理を実行させる、情報処理方法。
【請求項15】
慣性センサーを有する入力装置と情報処理装置とを含む情報処理システムであって、
前記入力装置は、
前記慣性センサーの出力に基づいた慣性データを少なくとも含む操作データを前記情報処理装置に送信し、
前記情報処理装置は、
前記操作装置から前記操作データを取得し、
前記操作データに基づいて、前記操作装置が振られていることを示す振り状態であるか否かを判定し、
前記操作データに基づいて、前記慣性センサーの所定軸周りにおいて第1方向に回転、または、当該第1の方向とは逆方向の第2の方向に回転したかを判定し、
前記操作データに基づいて、前記操作装置が上方向に振られたか、下方向に振られたかを判定し、
前記操作データに基づいて、前記操作装置が前記振り状態となる期間において、前記操作装置が前記所定軸周りにおいて前記第1の方向に回転した場合か、前記操作装置が上方向に振られたと判定される場合の少なくともいずれかにおいて、第1の処理を実行し、
前記操作データに基づいて、前記操作装置が前記振り状態となる期間において、前記操作装置が前記所定軸周りにおいて前記第2の方向に回転した場合か、前記操作装置が下方向に振られたと判定される場合の少なくともいずれかにおいて、第2の処理を実行する、情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、慣性センサーを備える入力装置を利用するゲーム処理に関する。
【背景技術】
【0002】
従来から、慣性センサーを用いた入力を行わせるゲームであって、慣性センサーを有するコントローラを振る操作に基づいて、所定のオブジェクトを移動させるようなゲームについて知られている(例えば特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のゲームでは、振り操作を検出して、所定のオブジェクトを移動させている。すなわち、慣性センサーの出力に基づいて、振り操作の発生や終了を判定し、また、振り操作における入力装置の姿勢を把握し、これをゲーム処理に反映している。
【0005】
上記の点について、ゲーム処理における操作性の向上を図るために、振り操作に関する判定の精度を更に向上させる余地があった。
【0006】
それ故に、本開示における目的は、振り操作の判定の精度を向上できる情報処理プログラム、情報処理装置、情報処理方法、および情報処理システムを提供することである。
【課題を解決するための手段】
【0007】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0008】
構成例の一例は、情報処理装置のコンピュータに実行させる情報処理プログラムであって、コンピュータに、以下の処理を実行させる。まず、慣性センサーを備える操作装置から、当該慣性センサーの出力に基づいたデータを少なくとも含む操作データを取得させる。次に、操作データに基づいて、操作装置が振られていることを示す振り状態であるか否かを判定させる。更に、当該操作データに基づいて、慣性センサーの所定軸周りにおいて第1方向に回転、または、当該第1の方向とは逆方向の第2の方向に回転したかを判定させる。また、当該操作データに基づいて、操作装置が上方向に振られたか下方向に振られたかも判定させる。そして、操作データに基づいて、操作装置が振り状態となる期間において、操作装置が所定軸周りにおいて第1の方向に回転した場合か、操作装置が上方向に振られたと判定される場合の少なくともいずれかにおいて、第1の処理を実行させる。また、操作データに基づいて、操作装置が振り状態となる期間において、操作装置が所定軸周りにおいて第2の方向に回転した場合か、操作装置が下方向に振られたと判定される場合の少なくともいずれかにおいて、第2の処理を実行させる。
【0009】
上記構成例によれば、所定軸周りの回転方向と、上下方向に係る振り方向との2つの要素を用いて振り状態における操作内容を判定する。これにより、手首の捻りを加えながらの振り操作に関する判定精度を向上できる。
【0010】
他の構成例として、コンピュータに更に、第1の処理または第2の処理に基づいて、仮想空間内の移動オブジェクトを移動させ、当該移動オブジェクトを用いたゲーム処理を実行させてもよい。
【0011】
上記構成例によれば、テニスゲーム等のボールを打つ球技ゲームで、ボールにスピンをかけるような打ち方の操作を判定し、スピンがかかったようなボールの動きとして反映させることができる。これにより、球技ゲームの興趣性を向上できる。
【0012】
他の構成例として、コンピュータに、第1の処理に基づいて移動オブジェクトを移動させる場合、移動オブジェクトの軌道に第1の変化を加えて移動させてもよい。また、第2の処理に基づいて移動オブジェクトを移動させる場合、移動オブジェクトの軌道に第2の変化を加えて移動させてもよい。
【0013】
上記構成例によれば、ボールの軌道について、複数の種類の軌道を使い分けることが可能なゲームを提供できる。例えば、スピンがかかっていない場合のボールの軌道に対して、トップスピンがかかったときのような軌道になるよう変化を加えたり、バックスピンが係ったときのような軌道になるよう変化を加えたりすることができる。
【0014】
他の構成例として、コンピュータに、キャラクタオブジェクトが移動オブジェクトに対して第1アクションを行わせる処理を第1の処理として実行させてもよい。更には、キャラクタオブジェクトが移動オブジェクトに対して第2アクションを行わせる処理を第2の処理として実行させてもよい。
【0015】
上記構成例によれば、例えばキャラクタオブジェクトに、テニスのラケットを振るようなアクションを行わせる。この際に、例えば、ボールにトップスピンをかけるときのアクションとバックスピンをかけるときのアクションとで別々のアクションを行わせることが出できる。これにより、ボールにどのような効果が加えられるかについて、プレイヤに判別させやすくすることができる。
【0016】
他の構成例として、コンピュータに更に、操作データに基づいて、操作装置の姿勢を算出させ、当該算出された操作装置の姿勢に基づいて、当該操作装置が上方向に振られたか、下方向に振られたかを判定させてもよい。
【0017】
上記構成例によれば、操作装置の姿勢の変化に基づいて振り方向を判定するため、より正確な判定が可能となる。
【0018】
他の構成例として、コンピュータに更に、操作データに基づいて、振り期間中における慣性センサーの所定軸周りにおける回転量を算出させ、更に、操作データに基づいて、振り期間中における操作装置の姿勢変化量を算出させてもよい。そして、回転量と姿勢変化量とに基づいて第1の処理または第2の処理を実行させてもよい。
【0019】
上記構成例によれば、所定軸周りの回転量と、姿勢変化量とによって、第1の処理または第2の処理として実行する内容を変化させることができる。
【0020】
他の構成例として、コンピュータに、第1の処理については、回転量と、姿勢変化量とを加算して算出される第1パラメータに基づいて実行させてもよい。また、第2の処理については、回転量と、姿勢変化量とを加算して算出される第2パラメータに基づいて実行させてもよい。
【0021】
他の構成例として、コンピュータに、第1の処理については、姿勢変化量を減少させるように調整したうえで第1パラメータを算出させ、第2の処理については、姿勢変化量を減少させるように調整したうえで第2パラメータを算出させてもよい。
【0022】
上記構成例によれば、振り操作に対するレスポンス等について、ゲーム内容に応じた微調整を行うことができ、操作性をより向上できる。
【0023】
他の構成例として、コンピュータに、第1方向への回転量が第1閾値を超える場合に、当該第1方向に回転したものと判定させ、第2方向への回転量が第2閾値を超える場合に、当該第2方向に回転したものと判定させてもよい。
【0024】
上記構成例によれば、回転量に関して所定の閾値を超えないような動きの場合は、第1の処理が実行されることを抑制できる。
【0025】
他の構成例として、コンピュータに、操作装置が上方向に振られたと判定された場合であって、姿勢変化量が第3閾値を超える場合に第1の処理を実行させ、操作装置が下方向に振られたと判定された場合であって、姿勢変化量が第4閾値を超える場合に第2の処理を実行させてもよい。
【0026】
上記構成例によれば、上下方向に係る姿勢変化量が所定の閾値を超えないような動きの場合は、第2の処理が実行されることを抑制できる。
【0027】
他の構成例として、コンピュータに、加速度データを含む操作データを取得させ、当該取得した操作データが含む加速度データが示す加速度の大きさが第1閾値を超えた場合に振り状態が開始したと判定させ、当該加速度の大きさがピークに達した後の解除タイミングにおいて、振り状態が終了したと判定させてもよい。
【0028】
上記構成例によれば、振り状態の開始から終了までの期間を適切に判定できる。
【0029】
他の構成例として、コンピュータに更に、取得した操作データに基づいて、第1の処理を実行するための条件、および、第2の処理を実行するための条件が振り期間中に満たされなかった場合、第3の処理を実行させてもよい。
【0030】
上記構成例によれば、プレイヤが可能な操作を多様化でき、ゲームの興趣性を向上できる。
【発明の効果】
【0031】
本実施形態によれば、振り操作における判定精度を向上できる。
【図面の簡単な説明】
【0032】
【
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
【
図2】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
【
図6】本体装置2の内部構成の一例を示すブロック図
【
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
【
図9】フラットなボール203の軌道の一例を示す図
【
図10】トップスピンの場合のボール203の軌道の一例を示す図
【
図11】バックスピンの場合のボール203の軌道の一例を示す図
【
図12】コントローラの振り方について説明するための図
【
図13】コントローラの振り方について説明するための図
【
図14】コントローラの振り方について説明するための図
【
図15】コントローラの振り方について説明するための図
【
図16】DRAM85に記憶される各種データの一例を示すメモリマップ
【
図19】本実施形態に係るテニスゲーム処理の詳細を示すフローチャート
【
図20】スイング開始制御処理の詳細を示すフローチャート
【
図21】z回転値判定処理の詳細を示すフローチャート
【
図22】上下振り値判定処理の詳細を示すフローチャート
【
図23】ショット関連処理の詳細を示すフローチャート
【発明を実施するための形態】
【0033】
以下、一実施形態について説明する。
【0034】
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0035】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0036】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0037】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0038】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0039】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0040】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0041】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0042】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0043】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0044】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0045】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、
図4における上下方向(
図4に示すz軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0046】
左コントローラ3は、方向入力デバイスの一例である左アナログスティック(以下、左スティックと呼ぶ)32を備える。
図4に示すように、左スティック32は、ハウジング31の主面に設けられる。左スティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、左スティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、左スティック32を押下する入力が可能である。
【0047】
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33~36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。更に、左コントローラ3は、録画ボタン37および-(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0048】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0049】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、
図5における上下方向(
図5に示すz軸方向)に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0050】
右コントローラ4は、左コントローラ3と同様、方向入力部として右アナログスティック(以下、右スティックと呼ぶ)52を備える。本実施形態においては、右スティック52は、左コントローラ3の左スティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53~56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。更に、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。
【0051】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0052】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0053】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0054】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0055】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0056】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0057】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0058】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0059】
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0060】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0061】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0062】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0063】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0064】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0065】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0066】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0067】
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。
図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
【0068】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0069】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、左スティック32を備える。各ボタン103および左スティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0070】
左コントローラ3は、慣性センサーを備える。具体的には、左コントローラ3は、加速度センサー104を備える。また、左コントローラ3は、角速度センサー105を備える。本実施形態においては、加速度センサー104は、所定の3軸(例えば、
図4に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサー104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサー105は、所定の3軸(例えば、
図4に示すxyz軸)回りの角速度を検出する。なお、角速度センサー105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサー104および角速度センサー105は、それぞれ通信制御部101に接続される。そして、加速度センサー104および角速度センサー105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
【0071】
通信制御部101は、各入力部(具体的には、各ボタン103、左スティック32、各センサー104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサーによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0072】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103および左スティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサー104および角速度センサー105の検出結果)に基づいて算出することができる。
【0073】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0074】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0075】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、右スティック52、慣性センサー(加速度センサー114および角速度センサー115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0076】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0077】
[本実施形態におけるゲーム処理の概要]
次に、本実施形態に係るゲームシステム1で実行されるゲーム処理の動作概要を説明する。上記のように、上記ゲームシステム1では、本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能な構成となっている。本体装置2に左コントローラ3および右コントローラ4を装着した状態でゲームを遊ぶ場合は、ゲーム画像はディスプレイ12に出力される。また、左コントローラ3および右コントローラ4をそれぞれ外した状態の本体装置2単体がクレードルに装着された場合は、本体装置2が、クレードルを介してゲーム画像を据置型モニタ等に出力することもできる。本実施形態では、後者の態様でゲームプレイを行う場合を例に説明する。具体的には、左コントローラ3および右コントローラ4をそれぞれ外した状態の本体装置2単体がクレードルに装着され、本体装置2が、クレードルを介してゲーム画像等を据置型モニタ等に出力する態様である。また、右利きのプレイヤが、右手に右コントローラ4を把持している態様で、ゲームをプレイする場合を想定する。なお、左コントローラ3については本実施形態では使用しないものとするが、例えばプレイヤが左利きの場合は、右コントローラ4の代わりに左コントローラ3を用いる態様で、以下に説明するような処理が行われてもよい。
【0078】
[想定するゲームについて]
本実施形態で想定するゲームは、仮想3次元空間内において対戦するテニスゲームである。また、本実施形態では、一例として、シングルスの試合で、対CPU戦を行う場合を例として説明する。もちろん、他のプレイヤが対戦相手を操作する、プレイヤ同士の対戦形式でもよい。また、プレイヤ同士の対戦の場合、1台のゲーム装置を用いて2人のプレイヤで対戦プレイしてもよいし、2台のゲーム装置をネットワーク経由で接続した通信対戦プレイであってもよい。また、シングルスではなくダブルスの試合であってもよい。
【0079】
図8に、本実施形態に係るテニスゲームのゲーム画像の一例を示す。
図8で示すゲーム画像は、3次元仮想空間(仮想テニスコート)を仮想カメラで撮像した画像である。当該ゲーム画像(仮想テニスコート内)には、2体のキャラクタオブジェクトが表示されている。仮想テニスコートの手前側のコート(自側コート)には、プレイヤの操作対象であるプレイヤキャラクタオブジェクト(以下、プレイヤキャラクタと呼ぶ)201が配置されている。また、ネット越しの奥行き側のコート(相手側コート)には、対戦相手となるキャラクタオブジェクト(以下、相手キャラクタ)202が配置されている。また、各キャラクタオブジェクトは、テニスラケットオブジェクト(以下、単にラケット)を右手に持っている。その他、ゲーム画像には、移動オブジェクトであるテニスボールオブジェクト(以下、単にボールと呼ぶ)203も表示されている。
【0080】
本実施形態に係るテニスゲームの基本的な仕様・操作方法について説明する。まず、本テニスゲームでは、プレイヤは、ラケットに見立てた右コントローラ4を振ることで、プレイヤキャラクタ201に、その振り方向に応じた方向へラケットを振らせることができる。本例では一例として、操作ボタンのある面をラケットフェイス(ボールを打つ面)に見立てるような持ち方で、右コントローラ4を振るものとする。以下では、プレイヤキャラクタ201がラケットを振る動作のことを、ラケットスイングモーションと呼ぶ。また、本テニスゲームでは、プレイヤキャラクタ201の移動はオートで制御される。つまり、ボール203の移動軌道(移動方向)に応じて、ボール203を打ち返せるような位置に向けてプレイヤキャラクタ201は自側コート内で自動的に移動する(以下、このような移動のことをオート移動と呼ぶ)。そのため、プレイヤは、移動操作については考慮せず、ボール203が来たタイミングに合わせて右コントローラ4を振る、という操作に集中すればよいゲームとなっている。
【0081】
ところで、現実のテニスにおいては、ボールを打ち返す際に、トップスピンやバックスピンと呼ばれるような、テニスボールに回転をかけるテクニックが知られている。本実施形態に係る処理は、このようなテニスボールに回転をかける要素を、上述したようなテニスゲームの操作に取り入れた処理である。
【0082】
具体的には、本実施形態では、以下のような処理が行われる。まず、右コントローラ4を持つ手首のひねり具合が算出される。更に、右コントローラ4の振り方について、振り上げか振り下げかが判別される。そして、これら2つの要素に基づいて、トップスピンまたはバックスピンをかけたときのようなボール203の移動制御が行われる。
【0083】
図9~
図11に、上記の移動制御によるボール203が移動する軌道(以下、ボール軌道)の一例を示す。
図9は、ボール203に回転がかかっていない場合のボール軌道の一例であり、
図10は、トップスピンがかかっている場合のボール軌道の一例であり、
図11は、バックスピンがかかっている場合のボール軌道の一例である。いずれの図も、z軸正方向に向けてボール203が打たれた場合を示す。
図10に示すように、トップスピンをかけた場合のボール軌道は、
図9に比べ、より高く上がるようなボール軌道となり、バウンドしたときに、(z軸の)移動方向の順方向に向かって、ボール203に回転がかかっていない場合よりも遠くに跳ねるような軌道となる。一方、バックスピンの場合は、
図11に示すように、ボール203に回転がかかっていない場合よりも低めのボール軌道となり、ボール203がバウンドした際、ボール203が跳ねる高さや距離が、ボール203に回転がかかっていない場合よりも小さなものとなる。
【0084】
上記の振り方に関する判別手法について、より具体的に説明する。本実施形態では、手首のひねりについては、右コントローラ4のz軸周りの回転度合い(回転量)に基づいて判定される。
図12に、右コントローラ4を平面視したものを、また、
図13に、これを背面視したものを示す。
図12に示すように、右スティック52のある面が真上を向いている姿勢を基準姿勢として、右回りの回転か、左回りの回転かを判定する。一般に、トップスピンをかける場合は、打ち返したボールが移動する方向に対して順方向の回転を加えるような打ち方となる。この場合は、z軸周りで考えると、左回転させるような手首のひねりを加えて振るような操作が考えられる(右利きの場合)。また、バックスピンの場合は、これとは逆に、打ち返したボールが移動する方向に対して逆方向の回転を加えるような打ち方となる。この場合は、z軸周りで考えると、右回転させるような手首のひねりを加えて振るような操作が考えられる。そこで、本実施形態では、振り操作中におけるz軸周りの右コントローラ4の姿勢変化を観測し、右回転しているか左回転しているかを判定することで、トップスピンまたはバックスピンをボール203にかける操作の判定に利用する。
【0085】
また、トップスピン/バックスピンをかける場合の実際のラケットの振り方に着目すると、一般的には、トップスピンをかける場合は、現実空間において上方向に振り上げるような振り方となり、バックスピンをかける場合は、現実空間において下方向に向けて振り下げるような振り方となる。そこで、本実施形態では、上記のz軸の回転の観測に加えて、振り操作中における振り動作(振り方向)が、振り上げ(上に向かう振り方向)であるか、振り下げ(下に向かう振り方向)であるかも判定する。そして、その結果を、トップスピン/バックスピンの操作の判定に利用する。なお、この振り上げ/振り下げの判定手法の詳細は後述するが、本実施形態では、振り操作中の右コントローラ4の姿勢の変化量に基づいて判定する手法を用いる。
【0086】
図14に、トップスピンがかかるような右コントローラ4の姿勢変化の一例を示し、
図15に、バックスピンがかかるような右コントローラ4の姿勢変化の一例を示す。いずれの図も、右コントローラ4を正面(第1Rボタン60およびZRボタン61が見える側)からみた場合の図で示している。トップスピンをかける際は、z軸左回りに回転させつつ、振り上げるという振り動作となる。また、バックスピンをかけたい場合は、z軸右回りに回転させつつ、振り上げるという振り動作となる。
【0087】
本実施形態では、上記のように、z軸周りの回転具合(手首のひねり具合)と、振り動作の上下方向(振り上げか振り下げか)との2つの要素をパラメータ化したものに基づいて、ボール203にトップスピンをかけるような操作(以下、トップスピン操作)が行われたか、あるいは、バックスピンをかけるような操作(以下、バックスピン操作)が行われたかを判定する。また、本実施形態では、上記パラメータが所定の条件を満たさない場合は、いわゆるフラットなボールを打つ操作(フラットショット)が行われたものとして扱う。この場合は、ボール203が、回転がかかっていない場合の動きとなるように移動制御が行われる。つまり、本実施形態では、上記のパラメータに基づいて、トップスピンとなるショット、バックスピンとなるショット、および、フラットショットの、3種類の打ち方を使い分けることが可能な操作性をプレイヤに提供する。換言すれば、通常の打ち方であればフラットショットの場合の軌道(上記
図9参照)となるようなボール軌道について、トップスピン操作が行われた場合は当該ボール軌道に第1の変化(上記
図10参照)を加え、バックスピン操作が行われた場合は当該ボール軌道に第2の変化(上記
図11参照)を加えたうえで、ボール203を移動させるような処理を行っている。
【0088】
ここで、以下の説明では、上記z軸周りの回転具合を示すパラメータのことを「z軸回転値」と呼ぶ。また、振り動作の上下方向を示すパラメータのことを「上下振り値」と呼ぶ。また、トップスピンがかかったようなボール軌道のことを「トップスピン軌道」と呼び、バックスピンがかかったようなボール軌道のことを「バックスピン軌道」と呼び、いずれの回転もかかっていないときのボール軌道のことを「フラットショット軌道」と呼ぶ。
【0089】
[本実施形態のテニスゲーム処理の詳細]
次に、
図16~
図23を参照して、本実施形態におけるテニスゲーム処理についてより詳細に説明する。
【0090】
[使用データについて]
まず、本テニスゲーム処理にて用いられる各種データに関して説明する。
図16は、本体装置2のDRAM85に記憶される各種データの一例を示すメモリマップである。本体装置2のDRAM85には、ゲームプログラム301、キャラクタオブジェクトデータ302、キャラクタ動作制御用データ303、ボール移動制御用データ304、振り判定用データ305、振り状態フラグ306、スピン判定用パラメータ307、操作データ308等が記憶されている。
【0091】
ゲームプログラム301は、本実施形態におけるテニスゲーム処理を実行するためのプログラムである。
【0092】
キャラクタオブジェクトデータ302は、プレイヤキャラクタ201や相手キャラクタ202の外観に関するデータである。キャラクタオブジェクトデータ302には、各キャラクタオブジェクトの3次元モデルのモデリングデータやテクスチャデータ等が含まれている。
【0093】
キャラクタ動作制御用データ303は、各キャラクタの動作を制御するためのデータである。キャラクタ動作制御用データ303には、各キャラクタオブジェクトの現在位置情報や、オート移動制御における移動目標地点、上記ラケットスイングモーション等の各種モーションを再生するためのモーションデータ、各キャラクタが、モーションの再生中の状態であるか否か等、各キャラクタの現在の状態を示すためのデータ等、キャラクタの動作を制御するための各種データが含まれている。
【0094】
ボール移動制御用データ304は、ボール203の移動制御を行うためのデータである。ボール移動制御用データ304には、ボールの軌道や移動速度等を示すデータが含まれる。
【0095】
振り判定用データ305は、振り操作が行われたか否かを判定するためのデータであり、また、振り操作に係る内容を示すデータである。具体的には、振り判定用データ305は、上記各慣性センサーから得られた加速度データや角速度データを所定の期間分(例えば数十フレーム分)溜め込むことが可能なバッファである。本実施形態では、当該振り判定用データ305を用いて、上記のような振り操作の発生および終了を検出したり、どのような動きの振り操作が行われたのかを判定したりする。
【0096】
振り状態フラグ306は、右コントローラ4が現在振られている状態(振り状態)であるか否かを示すためのフラグである。当該フラグがオンのときは、現在は振り状態であることを示す。また、振り状態フラグ306の初期値としては、オフが設定される。
【0097】
スピン判定用パラメータ307は、上記のようなスピンをかける操作が行われたか否かの判定に用いられるデータである。
図17は、当該スピン判定用パラメータ307に含まれるパラメータの一例である。スピン判定用パラメータ307には、合計z軸回転値321、および、合計上下振り値322が含まれる。合計z軸回転値321は、振り状態中において毎フレーム算出されるz軸回転値を合算(累計)したものである。また、合計上下振り値322も同様に、振り状態中において毎フレーム算出される上下振り値を合算したものである。なお、本実施形態では、一例として、上記z軸回転値は、-256~+256の範囲の値で算出されるものとする。そして、0が基準姿勢の状態であることを示し、正の値は左回転、負の値は右回転を示すものとする(つまり、右回転、左回転それぞれの大きさを256段階で示している)。また、上記上下振り値についても、一例として-256~+256の範囲の値で算出されるものとする。そして、0が基準姿勢の状態であることを示し、正の値は振り上げ状態であることと、その動きの大きさ、負の値は振り下げ状態であることと、その動きの大きさを示すものとする(つまり、振り上げ、振り下げそれぞれの動きの大きさを256段階で示している)。更に、スピン判定用パラメータ307には、スピン値323が含まれている。スピン値323は、合計z軸回転値321、および、合計上下振り値322に基づいて算出されるパラメータであり、ボール203にかける回転量(回転の大きさ)を示すパラメータである。スピン値323は、例えば、-256~+256の範囲の値で算出され、負の値はバックスピンの回転量、正の値はトップスピンの回転量を示し、0は回転が無い(つまり、フラットショット)ことを示す。
【0098】
なお、上記z軸回転値や上下振り値に関して、0を中心に正の値と負の値を併用した値で扱う例を示した。他の実施形態では、z軸回転値について、右回転の値と左回転の値とを、それぞれ正の値で個別に算出し、上下振り値についても、振り上げに係る値と振り下げに係る値とをそれぞれ個別に正の値で算出して扱うようにしてもよい。
【0099】
操作データ308は、上記左コントローラ3および右コントローラ4から得られるデータであり、ユーザの操作内容を示すデータである。
図15に、操作データ308のデータ構成の一例を示す。操作データ308には、デジタルボタンデータ331と、右スティックデータ332と、左スティックデータ333と、右慣性センサーデータ334と、左慣性センサーデータ335とが少なくとも含まれている。デジタルボタンデータ331は、コントローラが有する各種ボタンの押下状態を示すデータである。右スティックデータ332は、上記右スティック52に対する操作内容を示すためのデータである。具体的には、x、yの2次元のデータが含まれる。左スティックデータ333は、上記左スティック32に対する操作内容を示すためのデータである。右慣性センサーデータ334は、右コントローラ4の加速度センサー114や角速度センサー115の慣性センサーの検出結果を示すデータである。具体的には、3軸の加速度データや3軸の角速度データが含まれる。左慣性センサーデータ335は、左コントローラ3の加速度センサー104や角速度センサー105の慣性センサーの検出結果を示すデータである。
【0100】
その他、ゲーム処理に必要な各種データも適宜生成され、DRAM85に格納される。
【0101】
[プロセッサ81が実行する処理の詳細]
次に、本実施形態におけるテニスゲーム処理の詳細を説明する。なお、ここでは主に、上記のようなトップスピン/バックスピンをかけるような操作およびこれに関連する処理について説明し、その他のテニスゲーム処置の詳細については説明を割愛する。また、以下に示すフローチャートは、処理過程の単なる一例にすぎない。そのため、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判定ステップで利用される閾値も、単なる一例であり、必要に応じて他の値を採用してもよい。
【0102】
図19は、本実施形態に係るテニスゲーム処理(1試合分)の詳細を示すフローチャートである。なお、
図19のステップS1~S14の処理ループは、1フレーム毎に繰り返し実行される。
【0103】
テニスゲーム処理(試合)が開始されると、まず、ステップS1で、プロセッサ81は、操作データ308を取得する。
【0104】
次に、ステップS2で、プロセッサ81は、振り状態フラグ306がオンであるか否かを判定することで、現在が振り状態中であるか否かを判定する。当該判定の結果、振り状態中ではない場合は(ステップS2でNO)、ステップS3で、プロセッサ81は、振り判定用データ305に基づき、振り状態が開始されたか否かを判定する。振り状態の検出手法はどのような手法でもよいが、本実施形態では、z軸方向の加速度に基づいて判定する。すなわち、プロセッサ81は、右コントローラ4のz軸方向の加速度が所定の閾値を越えているか否かを振り判定用データ305に基づいて判定する。その結果、越えている場合は、振り状態が開始されたと判定する。
【0105】
上記判定の結果、振り状態が開始されていない場合は(ステップS3でNO)、後述のステップS10に処理が進められる。一方、振り状態が開始された場合は(ステップS3でYES)、ステップS4で、プロセッサ81は、振り状態フラグ306にオンを設定する。また、この際、プロセッサ81は、スピン判定用パラメータ307の内容を初期化する。
【0106】
次に、ステップS5で、プロセッサ81は、右慣性センサーデータ334に基づき、z軸周りの角速度の検出値を取得し、上記のような-256~+256の範囲の値に変換したものを合計z軸回転値321として記憶する。更に、プロセッサ81は、この時点における上下振り値を算出し、上記のような-256~+256の範囲の値に変換したものを合計上下振り値322として記憶する。その後、プロセッサ81は、後述するステップS10に処理を進める。
【0107】
ここで、上記上下振り値の算出手法の一例について説明する。これについては、上下方向にかかる振りの大きさが算出できればどのような手法でもよいが、本実施形態では、振り判定用データ305に基づき、以下のような手法で算出する。
(1)まず、現在のコントローラの姿勢から算出される、右コントローラ4のz軸方向が現在どの方向を向いているかを示す現在ベクトルと、1フレーム前のコントローラの姿勢から算出される、右コントローラ4のz軸方向が1フレーム前にどの方向を向いていたかを示す直前姿勢ベクトルとの外積を求め、これに基づいて第1の法線ベクトルを求める。
(2)次に、上記第1の法線ベクトルのxy軸の成分だけを抜き出した2次元ベクトルを算出する。
(3)次に、現在ベクトルと、上記2次元ベクトルとの外積を算出し、これに基づいて第2の法線ベクトルを求める。
(4)この第2の法線ベクトルの向きが上向きか下向きかによって、振り上げの動きであるか振り下げの動きであるかが判別可能である。そのため、この第2の法線ベクトルに基づいて、振り上げ/振り下げの動きの大きさ(姿勢の変化量)を示す値を上下振り値として算出する。なお、上下振り値は、上記のように-256~+256の範囲内の値となるように算出される。
【0108】
なお、上記算出手法の第1の法線ベクトルの算出について、本実施形態では1フレーム前のコントローラの姿勢を直前姿勢ベクトルとして用いる例を示した。他の実施形態では、1フレーム前ではなく、1つ前に取得した右慣性センサーデータ334から算出されるコントローラの姿勢を用いてもよい。例えば、コントローラから本体装置2に操作データ308が送信される間隔がフレームレートよりも小さい間隔である場合は、1フレーム内で複数の慣性センサーデータが取得され得るが、このうち、直近に取得されたデータに基づいてコントローラの姿勢(直近姿勢ベクトル)が算出されてもよい。
【0109】
次に、上記ステップS2の判定の結果、振り状態中と判定された場合(ステップS2でYES)の処理について説明する。この場合は、まず、ステップS6で、プロセッサ81は、右慣性センサーデータ334に基づき、上記z軸回転値を算出して、合計z軸回転値321に加算する。つまり、振り状態中において1フレーム毎に検出されるz軸回転値を合算していく処理が行われる。
【0110】
次に、ステップS7で、プロセッサ81は、プロセッサ81は、振り判定用データ305に基づき、上述したような上下振り値を算出し、合計上下振り値322に加算する。つまり、振り状態中において1フレーム毎に検出される上下振り値を合算していく処理が行われる。
【0111】
次に、ステップS8で、プロセッサ81は、振り判定用データ305に基づき、振り状態が終了したか否かを判定する。当該判定の結果、振り状態が終了した場合は(ステップS8でYES)、ステップS9で、プロセッサ81は、振り状態フラグ306にオフを設定する。その後、後述のステップS10に処理が進められる。一方、振り状態がまだ終了していない場合は(ステップS8でNO)、上記ステップS9の処理はスキップされる。
【0112】
なお、上記ステップS8の判定タイミングについて、他の実施形態では、上記ステップS6の前に行うようにしてもよいし、その他のタイミングで行ってもよい。
【0113】
次に、ステップS10で、プロセッサ81は、キャラクタ動作制御用データ303等に基づき、プレイヤキャラクタ201の動作制御を行う。具体的には、以下のような制御が行われる。まず、上記のようなオート移動に係る制御が行われる。更に、上記ステップS3で振り状態が開始したと判定された場合は、プレイヤキャラクタ201にラケットスイングモーションを開始させる制御も行われる。この際、仮想空間内のどの座標でラケットとボール203が衝突するのかを計算し、当該衝突する座標を通過するような高さに合わせてラケットスイングモーションを開始させる。また、上記ステップS2で振り状態中と判定されていた場合は、開始済みのラケットスイングモーションの再生を、当該モーションが終了するまで継続する制御も行われる。このラケットスイングモーションに伴い、ラケットも移動し、ボール203とラケットとの衝突が発生し得る状態になる。その他、プレイヤキャラクタ201の現在位置や現在の状態を示すデータの更新等、プレイヤキャラクタ201の動作を制御するための各種の処理も実行される。
【0114】
次に、ステップS11で、プロセッサ81は、ショット関連処理を実行する。
図20は、当該ショット関連処理の詳細を示すフローチャートである。
図20において、まず、ステップS21で、プロセッサ81は、ボール203とラケットとが衝突したか否か、すなわち、ショットが発生したか否かを判定する。なお、当該ショットが発生するのは、プレイヤキャラクタ201に係るラケットスイングモーションが再生中のときである。当該判定の結果、発生していない場合は(ステップS21でNO)、プロセッサ81は、ショット関連処理を終了する。
【0115】
一方、上記ステップS21の判定の結果、ショットが発生した場合は(ステップS21でYES)、ステップS22で、プロセッサ81は、スピン値計算処理を実行する。当該処理は、打ち返すボール203のボール軌道に適用するスピン値を計算するための処理である。
【0116】
図21は、上記スピン値計算処理の詳細を示すフローチャートである。
図21において、まず、ステップS31で、プロセッサ81は、スピン判定用パラメータ307を取得する。次に、ステップS32で、プロセッサ81は、z軸回転値判定処理を実行する。この処理は、振り状態の開始~ショット発生時点までの期間に係る合計z軸回転値321に基づいて、トップスピンまたはバックスピンをかけるような操作が行われたか否かを判定するための処理である。
【0117】
図22は、上記z軸回転値判定処理の詳細を示すフローチャートである。
図22において、まず、ステップS41で、プロセッサ81は、合計z軸回転値321が、第1の閾値を超えているか否かが判定される。当該第1の閾値は、トップスピンを掛ける操作と判定される条件である。そのため、当該判定は、z軸周りの左回転の量が第1の閾値を越えているかを判定するものでもある。なお、本実施形態では、左回転に係るz軸回転値を正の値で扱う例を示しているため、正の方向について、第1の閾値を超えているか否かが判定されることになる。当該判定の結果、第1の閾値を超えている場合は(ステップS41でYES)、プロセッサ81は、z軸回転値判定処理を終了する。
【0118】
一方、第1の閾値を越えていない場合は(ステップS41でNO)、次に、ステップS42で、プロセッサ81は、合計z軸回転値321が、第2の閾値を超えているか否かが判定される。当該第2の閾値は、バックスピンをかける操作と判定される条件である。そのため、当該判定は、z軸周りの右回転の量が第2の閾値を越えているかを判定するものでもある。なお、本実施形態では、右回転に係るz軸回転値を負の値で扱う例を示しているため、負の方向について、第2の閾値を超えているか否かが判定されることになる。当該判定の結果、第2の閾値を超えている場合は(ステップS42でYES)、プロセッサ81は、z軸回転値判定処理を終了する。
【0119】
一方、第2の閾値を越えていない場合は(ステップS42でNO)、次に、ステップS43で、プロセッサ81は、合計z軸回転値321に0を設定する。これは、上記フラットショットを実現するための設定である。つまり、本実施形態では、振り状態中における手首の捻り方が上記各閾値を超えない程度に小さい場合は、合計z軸回転値321を0にすることで、ボール203に回転がかからないフラットショットとして扱われ得るようにしている。換言すれば、合計z軸回転値321が0でない場合は、トップスピンまたはバックスピンの効果をボール203に加える条件を満たしている状態であるといえる。なお、後述するが、最終的にフラットショットと判定されるには、合計z軸回転値321と合計上下振り値322の双方が0であることが要求される。以上で、z軸回転値判定処理は終了する。
【0120】
図21に戻り、次に、ステップS33で、プロセッサ81は、上下振り値判定処理を実行する。この処理は、振り状態の開始~ショット発生時点までの期間に係る合計上下振り値322に基づいて、トップスピンまたはバックスピンをかけるような操作が行われたか否かを判定するための処理である。
【0121】
図23は、上記上下振り値判定処理の詳細を示すフローチャートである。
図23において、まず、ステップS51で、プロセッサ81は、合計上下振り値322が、第3の閾値を超えているか否かが判定される。当該第3の閾値は、トップスピンを掛ける操作と判定される条件である。そのため、当該判定は、右コントローラ4の振り方向が上方向(上振り)であって、その振りの大きさが第3の閾値を越えているかを判定するものでもある。当該判定の結果、第3の閾値を超えている場合は(ステップS51でYES)、プロセッサ81は、上下振り値判定処理を終了する。
【0122】
一方、第3の閾値を越えていない場合は(ステップS51でNO)、次に、ステップS52で、プロセッサ81は、合計上下振り値322が、第4の閾値を超えているか否かが判定される。当該第4の閾値は、バックスピンを掛ける操作と判定される条件である。そのため、当該判定は、右コントローラ4の振り方向が下方向(下振り)であって、その振りの大きさが第4の閾値を越えているかを判定するものでもある。当該判定の結果、第4の閾値を超えている場合は(ステップS52でYES)、プロセッサ81は、上下振り値判定処理を終了する。
【0123】
一方、第4の閾値を越えていない場合は(ステップS52でNO)、次に、ステップS53で、プロセッサ81は、合計上下振り値322に0を設定する。これも、上記z軸回転値の場合と同様に、上記フラットショットを実現するための設定である。つまり、本実施形態では、振り状態中における振り上げ/振り下げの動きが上記各閾値を超えない程度に小さい場合は、合計上下振り値322に0にすることで、ボール203に回転がかからないフラットショットとして扱われ得るようにしている。以上で、上下振り値判定処理は終了する。
【0124】
図21に戻り、次に、ステップS34で、プロセッサ81は、上記合計z軸回転値321および合計上下振り値322に基づいて、上記スピン値323を算出する。具体的は、以下の数式でスピン値323が算出される。
スピン値=合計z軸回転値321+(合計上下振り値322×重み付け係数) ・・・式1
当該数式により、トップスピンを示すようなスピン値323、バックスピンを示すようなスピン値323、回転がかかっていないことを示すスピン値323のいずれかが算出されることになる。なお、上記数式において、重み付け係数は、ゲームバランス調整の観点等から用いられている。例えば、重み付け係数を用いずに合計上下振り値322の値をそのまま用いた場合、プレイヤのゲーム体験として、ボール203にかかる回転が強すぎるあるいは弱すぎると感じさせる可能性がある。また、プレイヤが行った振り上げ/振り下げの実際の動きに対して、トップ/バックスピンがかかりやすい/かかりにくい、とプレイヤに感じさせる可能性もある。そこで、本実施形態では、上記の重み付け係数を用いて、合計上下振り値322を調整した上で、より適切なプレイヤ体験となるようなスピン値323を算出する。一例として、本実施形態では、0.8という値を用いる。すなわち、振り上げ/振り下げに係る右コントローラ4の姿勢変化量が減少するような調整を行う。
【0125】
以上で、スピン値計算処理は終了する。
【0126】
図20に戻り、次に、ステップS23で、プロセッサ81は、上記のように算出されたスピン値323がボール203の軌道に反映されるように、ボール移動制御用データ304を設定する。具体的には、プロセッサ81は、当該スピン値323の内容、および、振り判定用データ305に基づき算出される振り方向や振り速度等に基づいて、ショットによって打ち返したボール203のボール軌道および移動速度を算出する。この際、打ち返したボール203のボール軌道については、上記スピン値323に基づいて、トップスピン軌道(スピン値323が正の値の場合)、バックスピン軌道(スピン値323が負の値の場合)、フラットショット軌道(スピン値323が0の場合)のいずれかになるように算出される。例えば、ボール203がバウンドしたときの跳ね方等がスピン値323に基づき設定される。そして、プロセッサ81は、当該算出したボール軌道および移動速度を示す情報をボール移動制御用データ304として設定する。以上で、ショット関連処理は終了する。
【0127】
図19に戻り、次に、ステップS12で、プロセッサ81は、ボール移動制御用データ304に基づいて、ボール203の移動制御を行う。すなわち、プロセッサ81は、ボール移動制御用データ304で示されるボール軌道に沿ってボール203を移動させる。本実施形態では、当該ボール軌道は、上記トップスピン軌道、バックスピン軌道、フラットショット軌道のいずれかとなる。
【0128】
次に、ステップS13で、プロセッサ81は、当該テニスゲームに関するその他のゲーム処理を実行する。具体的には、プロセッサ81は、相手キャラクタ202の動作制御を行う。この際、相手キャラクタ202がショットしたボール203についても、トップスピン軌道、バックスピン軌道、フラットショット軌道のいずれかとなるように適宜設定してもよい。また、その他、プロセッサ81は、得点を与えるか否かの判定や、得点状況の更新、試合の進行状況の管理等、テニスゲームの進行に関する各種のゲーム処理を実行する。更に、プロセッサ81は、上記の処理が反映された仮想ゲーム空間を仮想カメラで撮像し、ゲーム画像を生成する。そして、プロセッサ81は、当該ゲーム画像を据置型モニタ等に出力する。
【0129】
次に、ステップS14で、プロセッサ81は、試合が終了するための条件が満たされたか否かを判定する。試合終了の条件が満たされていない場合は(ステップS14でNO)、上記ステップS1に戻り、処理が繰り返される。試合終了の条件が満たされた場合は(ステップS14でYES)、プロセッサ81は、当該テニスゲーム処理を終了する。
【0130】
以上で、本実施形態に係るテニスゲーム処理の詳細説明を終了する。
【0131】
このように、本実施形態では、上記のようなテニスゲームにおいて、右コントローラ4の振り操作における手首の捻りの大きさ(z軸回転値)と、振り上げまたは振り下げ動作の実行(上下振り値)との2つの要素を用いて、トップスピンまたはバックスピンをボール203にかけるような操作が行われたか否かを判定している。また、本実施形態では、手首の捻りの大きさと、振り上げまたは振り下げ動作の大きさとのいずれか一方が所定の閾値を超えるような大きさであれば、その内容に応じてトップスピンまたはバックスピンの効果をボール203に与えるようにしている。これにより、トップスピンまたはバックスピンに係る振り操作の判定精度を向上させることができる。
【0132】
また、本実施形態では、合計z軸回転値321および合計上下振り値322の一方が0であっても、他方が0でない場合は、ボール203の軌道をトップスピン軌道またはバックスピン軌道とすることが可能な例を示している。すなわち、合計z軸回転値321および合計上下振り値322の少なくとも一方が上記いずれかのスピンの効果を加える条件を満たしていれば、上記スピン値323に基づいて、トップスピンまたはバックスピンの効果をボール203に加えている。これにより、例えば、手首を捻らずにスピンをかけるような打ち方(操作)にも対応可能となる。例えば、実際のテニスにおいては、ラケットフェイスが垂直な状態でボールとインパクトした際に、そのまま腕を下から上に振り上げた場合も、トップスピンの回転を加えることができる。このような、手首の捻りがないような操作が行われた場合でも、本実施形態ではトップスピンの効果をボール203に加えることが可能となっている。
【0133】
[変形例]
なお、上記実施形態では、振り操作が終了したタイミングで、そのとき行われた振り操作の内容(振り方向、振り速度、上記スピンをかける操作の有無)を判定し、その判定内容に応じたラケットスイングモーションを開始させていた。他の実施形態では、振り状態の開始と共に、そのときに検出された振り方向に応じたラケットスイングモーションを開始させるような制御としてもよい。この場合は、ラケットスイングモーション中に上記ショットが発生したか否かを判定すればよい。そして、ショットが発生した場合は、振り状態の開始から当該ショット発生時点までの期間における振り操作の内容(上記スピン値323等)を算出し、その内容に応じてボール移動制御用データ304を設定するようにしてもよい。
【0134】
また、上記スピン値323の算出に関し、本実施形態では、合計z軸回転値321および合計上下振り値322の一方が0であっても、他方が0でない場合は、ボール203の軌道をトップスピン軌道またはバックスピン軌道とすることが可能な例を示していた。この点、他の実施形態では、合計z軸回転値321および合計上下振り値322の双方共に上記のような所定の閾値を超えていることを、トップスピンまたはバックスピンの効果をボール203に加える条件としてもよい。この場合は、合計z軸回転値321および合計上下振り値322のいずれかが各スピンの効果を加える条件を満たしていないときはフラットショットとして扱うようにしてもよい。
【0135】
また、上記実施形態では、ラケットスイングモーションについて、トップスピンのモーション、バックスピンのモーション、フラットショットのモーションの3種類のモーションのいずれかをプレイヤキャラクタ201に行わせる例を示した。他の実施形態では、ラケットスイングモーションについては1種類(例えばフラットショットのモーションのみ)としてもよい。この場合でも、ショットしたボール203の軌道そのものについては、振り操作中のトップスピン操作やバックスピン操作を反映させればよい。
【0136】
また、本実施形態では、ショットの発生時点で、打ち返したボール203の軌道を算出し、その後は当該算出した軌道に沿ってボール203を移動させるような制御を例示した。すなわち、スピン値323に基づいて、トップスピンやバックスピンがかかったときのような軌道をショット発生時点で算出する例を示した。この点、他の実施形態では、このような軌道を(事前に)算出せず、リアルタイムでボール203の動きをシミュレートするような制御を行ってもよい。例えば、ボールの移動速度、移動方向、スピン値323に基づく回転を示すパラメータに基づいて、毎フレーム、仮想空間内でボール203の動きをシミュレートするような制御を行ってもよい。
【0137】
また、上記実施形態では、振り操作の発生時にラケットスイングモーションを開始させ、ショット発生時に、上記スピン値323を反映したボール軌道を決定する処理例を示した。換言すれば、ラケットスイングモーション自体にはスピン値323は反映されていなかった。他の実施形態では、スピン値323(すなわち、手首の捻り具合と上下振り方向)に応じたラケットスイングモーションをプレイヤキャラクタに行わせるようにしてもよい。例えば、上記ショット発生のタイミングで、このとき以降にプレイヤキャラクタに行わせるモーションを、スピン値323に応じて設定するようにしてもよい。例えばボール軌道がトップスピン軌道に設定される場合は、ショット発生時以降はラケットを振り上げるようなモーションを行わせ、ボール軌道がバックスピン軌道に設定される場合は、ラケットを振り下げるようなモーションを行わせてもよい。また更に他の実施形態では、振り操作が終了したと判定された時点で、そのとき行われた振り操作における手首の捻り具合と上下振り方向を算出してもよい。そして、その結果に応じて、例えばトップスピン用のモーション、あるいは、バックスピン用のモーションをプレイヤキャラクタ201に開始させるよう制御してもよい。
【0138】
また、上記ではテニスゲームを例示したが、この他、ボールに対して回転を加えることが可能な球技ゲーム全般についても、上記の処理は適用可能である。例えば卓球や野球等のスポーツゲームにも適用可能である。
【0139】
更には、ボール以外の所定のオブジェクトに回転を加えることが可能なゲームや、手首の捻りと上下方向の振り分けを用いる要素のあるゲームについても、上記の処理は適用可能である。すなわち、上記実施形態では、合計z軸回転値321および合計上下振り値322に基づいた処理として、ボール203にトップスピン/バックスピンの効果を加える処理を例示した。この点、他の実施形態で、ボールにスピンの効果を与えるような処理の代わりに、他の所定の処理を実行するようにしてもよい。例えば、コントローラを振ってプレイ可能な格闘ゲームで、手首の捻りを加えたアッパーカットのような操作を判別して所定の処理を行うようにしてもよい。また例えば、コントローラを剣に見立てて振ることで、プレイヤキャラクタに剣を振らせる動きを行わせることが可能なゲームにも適用可能である。例えば、剣を振ることで衝撃波を飛ばすような攻撃が可能なゲームで、上記のような合計z軸回転値321および合計上下振り値322に基づいた処理として、このような攻撃の実行可否(衝撃波を飛ばすか否か)の判定や、衝撃波を飛ばす方向やその軌道を設定するような処理を行ってもよい
【0140】
また、上記実施形態においては、テニスゲーム処理に係る一連の処理を単一の本体装置2で実行される場合を説明した。他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。また、いわゆるクラウドゲーミングの構成としてもよい。例えば、本体装置2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種ゲーム処理が実行され、その実行結果が動画・音声として本体装置2にストリーミング配信されるような構成としてもよい。
【符号の説明】
【0141】
1 ゲームシステム
2 本体装置
3 左コントローラ
4 右コントローラ
81 プロセッサ
84 フラッシュメモリ
85 DRAM