説明

情報処理プログラム及び情報処理装置

【課題】より自由度の高い操作を可能とする情報処理プログラムおよび情報処理装置等を提供すること。
【解決手段】まず第1入力装置の動きを算出可能にする動き情報を逐次取得する。操作キーが所定の入力状態にある期間には、動き情報の変化に連動させて表示画像を拡大又は縮小させる。所定の入力状態が解除されたと判定された時に、拡大又は縮小されていた表示画像を元の倍率に戻すと共に、表示画像内における少なくとも1つの第1オブジェクトの動作制御を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム及び情報処理装置に関し、より特定的には、少なくとも1つの撮像対象を撮像するための撮像手段を備える操作装置から、当該撮像手段によって得られる撮像情報に基づいて所定の処理を実行する情報処理プログラム及び情報処理装置に関する。
【背景技術】
【0002】
従来、プレイヤが操作装置を把持して移動させることによって、表示画像をズームする技術が知られている。例えば、特許文献1の画像処理装置では、プレイヤが所定のボタンを押下した状態でコントローラ(操作装置)を画像表示装置に対して前後に移動させると、コントローラの移動距離等が算出される。そして、算出された移動距離等に応じて表示画像の拡大縮小が行われる。
【0003】
また、例えば、非特許文献1のアーチェリーのビデオゲームでは、プレイヤが、コントローラ(操作装置)の前面を表示画像に向けて所定のボタンを押下した状態で当該コントローラを後方に移動させる。そして、プレイヤが、コントローラの方向を調整することで狙いを定めた後、押下した所定のボタンを離すことで矢が放たれる。
【0004】
また、例えば、非特許文献2のビデオゲームでは、プレイヤがコントローラ(操作装置)のAボタンを押下した状態でコントローラを画像表示装置の方向に移動させると、表示画像が拡大される。そしてこの状態でBボタンを押下すると、コントローラによって指し示される照準に向けて銃を撃つ動作が行われる。このように、非特許文献2の技術では、プレイヤは、コントローラを操作することによって、表示画像のズームと攻撃動作の双方を実現できる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−236697号公報
【非特許文献】
【0006】
【非特許文献1】「任天堂公式ガイドブック マリオ&ソニック AT 北京オリンピック(Wii版)」、小学館、2008年2月2日、P66〜67
【非特許文献2】「レッドスティール取扱説明書」、RVL−REDJ−JPN ユービーアイソフト、2006年12月2日、P18(銃を撃つ)、P20(ズームイン)
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上記した従来の技術には、以下の課題がある。
【0008】
特許文献1の技術では、画像の拡大縮小を行うことはできる。しかし、プレイヤは、一度行った画像の拡大又は縮小の解除を行って元の画像に戻すために、コントローラを逆方向へ移動させる必要がある。このため、プレイヤにとって、操作が煩雑となり易い。
【0009】
非特許文献1のビデオゲームでは、プレイヤがコントローラの所定のボタンを押下した状態で当該コントローラを後方に移動させると、表示画像中に標的が出現する。しかし、表示画像は拡大されない。このため、臨場感をもって標的を狙うという効果が比較的少ない。
【0010】
また、非特許文献2のビデオゲームでは、ズームして攻撃する操作が可能であり、プレイヤは標的に狙いを定め易い。しかし、ズーム動作と攻撃動作とはそれぞれ独立した操作によって実現されるため、プレイヤは、ズーム又はズーム解除の操作と攻撃の操作とを別々に行う必要がある。このため、素早くズームを解除して次の攻撃を行いたいような場合、プレイヤにとって、操作が煩雑となり易い。
【0011】
それ故に、本発明の目的は、上記の課題を解決するものであり、表示画像内のオブジェクトの動作処理と表示画像の拡大又は縮小の解除処理とを、プレイヤが行う一連の簡易な操作によって実現できる情報処理プログラム及び情報処理装置等を提供することである。
【課題を解決するための手段】
【0012】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【0013】
本発明は、少なくとも1つの操作キーを有する第1入力装置を備え、表示画像を生成する情報処理装置のコンピュータに実行させる情報処理プログラムであって、コンピュータを、入力状態判定手段と、動き情報取得手段と、第1画像処理手段と、第2画像処理手段として機能させる。入力状態判定手段は、操作キーの入力状態を判定する。動き情報取得手段は、動き情報を逐次取得する。第1画像処理手段は、入力状態判定手段によって操作キーが所定の入力状態にあると判定されている期間には、動き情報の変化に連動させて表示画像を拡大又は縮小させる。第2画像処理手段は、入力状態判定手段によって所定の入力状態が解除されたと判定された時に、拡大又は縮小されていた表示画像を元の倍率に戻すと共に、表示画像内における少なくとも1つの第1オブジェクトの動作制御を行う。
【0014】
このことによって、表示画像内のオブジェクトの動作処理と表示画像の拡大又は縮小の解除処理とを、ユーザ(プレイヤ)が行う一連の簡易な操作によって実現できる。
【0015】
また、本発明において、第1入力装置は、所定の撮像対象を撮像する撮像手段を備え、情報処理プログラムは、コンピュータを、座標特定手段として更に機能させてもよい。この場合、座標特定手段は、撮像手段によって撮像された撮像画像における所定の撮像対象の位置に基づいて、第1入力装置が指し示す表示画像上の指示座標を逐次特定する。そして、この場合、第2画像処理手段は、入力状態判定手段によって所定の入力状態が解除されたと判定された時の指示座標が示す位置に向けて、少なくとも1つの第1オブジェクトを移動制御する。
【0016】
このことによって、撮像対象の位置に基づいて特定される指示位置に向けて第1オブジェクトを移動制御することができるので、ユーザは直感的な操作が可能となる。
【0017】
また、本発明において、所定の入力状態は、上記操作キーが押下された入力状態であってもよい。
【0018】
また、本発明において、第1画像処理手段は、更に、少なくとも入力状態判定手段によって所定の入力状態にあると判定されている期間には、表示画像上の指示座標を表示してもよい。
【0019】
このことによって、ユーザは、表示画像を拡大(又は縮小)しているときの指示座標を目安に狙いを定めることができる。
【0020】
また、本発明において、情報処理プログラムは、コンピュータを、期間計測手段と、第1閾値判定手段として更に機能させてもよい。この場合、入力状態判定手段によって操作キーが継続して所定の入力状態にあると判定されている期間を計測する。また、この場合、第1閾値判定手段は、上記期間が第1閾値以上か否かを判定する。そして、この場合、第2画像処理手段は、所定の入力状態が解除されたと判定され、かつ、上記期間が第1閾値以上と判定された時に、拡大又は縮小されていた表示画像を元の倍率に戻すと共に、表示画像内における少なくとも1つの第1オブジェクトの動作制御を行う。
【0021】
このことによって、第1入力装置の移動量が所定量以上である状態を所定期間維持させなければ動作制御が行われないので、ユーザの誤操作を防止できる。また、上記情報処理装置がゲーム装置であって、第1オブジェクトが弓矢の矢のオブジェクト等である場合、ユーザは、矢のオブジェクト等を動作させるまでに所定期間待つ必要があるので慎重な操作が求められ、ゲーム性が向上する。
【0022】
また、本発明において、情報処理プログラムは、コンピュータを、期間計測手段として更に機能させてもよい。この場合、期間計測手段は、入力状態判定手段によって操作キーが継続して所定の入力状態にあると判定されている期間を計測する。そして、この場合、第1画像処理手段は、上記期間に応じた比率で表示画像を拡大又は縮小させる。
【0023】
このことによって、操作キーが継続して所定の入力状態にあると判定されている期間に応じて表示画像が拡大又は縮小するので、ユーザは、直感的な操作によって自在に表示画像を拡大又は縮小させることができる。
【0024】
また、本発明において、情報処理プログラムは、コンピュータを、移動量算出手段として更に機能させてもよい。この場合、移動量算出手段は、入力状態判定手段によって所定の入力状態になったと判定された時からの第1入力装置の動きのうち少なくとも所定方向の移動量を、動き情報に基づいて算出する。そして、この場合、期間計測手段によって計測される上記期間は上限値を有し、この上限値は、上記移動量が大きくなるほど大きな値になるように決定され、上記期間が上記上限値を超えたとき、上記期間は上記記上限値に設定される。
【0025】
このことによって、期間計測手段によって計測される期間の上限値が第1入力装置の移動量に応じて決定されるので、ある程度の時間が経過した場合には、第1入力装置の移動量が大きいほど表示画像の拡大(又は縮小)の比率も大きくなる。このこと結果として、ユーザは、直感的な操作によって自在に表示画像を拡大又は縮小させることができる。
【0026】
また、本発明において、上記移動量が減少し、減少した当該移動量に対応する上記上限値を上記期間が超えたとき、当該期間は、減少した当該移動量に対応する当該上限値に設定されてもよい。
【0027】
このことによって、第1入力装置の移動量が大きい状態から小さい状態に戻ったとき、上記上限値も小さくなり、表示画像の拡大(又は縮小)の比率を決定する上記期間も小さくなる。このことから、第1入力装置の移動量が大きい状態から小さい状態に戻ったとき、表示画像の拡大(又は縮小)の比率も大きい状態から小さい状態に戻る。このこと結果として、ユーザは、直感的な操作によって違和感無く表示画像を拡大又は縮小させることができる。
【0028】
また、本発明において、情報処理プログラムは、コンピュータを、移動量算出手段と、第2閾値判定手段として更に機能させてもよい。この場合、移動量算出手段は、入力状態判定手段によって所定の入力状態になったと判定された時からの第1入力装置の動きのうち少なくとも所定方向の移動量を、動き情報に基づいて算出する。また、この場合、第2閾値判定手段は、移動量が第2閾値以上か否かを判定する。そして、この場合、第2画像処理手段は、所定の入力状態が解除されたと判定され、かつ、移動量が第2閾値以上と判定された時に、拡大又は縮小されていた表示画像を元の倍率に戻すと共に、表示画像内における少なくとも1つの第1オブジェクトの動作制御を行う。
【0029】
このことによって、第1入力装置の移動量が所定量以上でなければ第1オブジェクトの動作制御が行われないので、ユーザの誤操作を防止できる。また、第1オブジェクトが弓矢の矢のオブジェクトである場合、ユーザは、実際に弓の弦を所定量以上引くような操作を行ったときに矢が飛ぶという感覚を体感できる。
【0030】
また、本発明において、情報処理プログラムは、コンピュータを、移動量算出手段として更に機能させてもよい。この場合、移動量算出手段は、入力状態判定手段によって所定の入力状態になったと判定された時からの第1入力装置の動きのうち少なくとも所定方向の移動量を、動き情報に基づいて算出する。そして、この場合、第1画像処理手段は、上記移動量に応じた比率で表示画像を拡大又は縮小させる。
【0031】
このことによって、第1入力装置の移動量に基づいて表示画像の拡大又は縮小の比率を変化させるので、ユーザは、直感的な操作で自在に表示画像を拡大又は縮小させることができる。
【0032】
また、本発明において、第1入力装置は、少なくとも1つの所定の撮像対象を撮像する撮像手段を更に備え、動き情報取得手段は、撮像手段によって撮像された撮像画像における所定の撮像対象の大きさ又は所定の撮像対象間の間隔を表す動き情報を逐次取得してもよい。
【0033】
このことによって、撮像手段によって撮像された撮像画像に基づいて、第1入力装置の移動量を算出できる。
【0034】
また、本発明において、情報処理プログラムは、コンピュータを、移動量算出手段と、第1移動速度決定手段として更に機能させてもよい。この場合、移動量算出手段は、入力状態判定手段によって所定の入力状態になったと判定された時からの第1入力装置の動きのうち少なくとも所定方向の移動量を、動き情報に基づいて算出する。また、この場合、第1移動速度決定手段は、上記移動量に基づいて少なくとも1つの第1オブジェクトの移動速度を決定する。そして、この場合、第2画像処理手段は、少なくとも1つの第1オブジェクトを移動速度で移動制御する。
【0035】
このことによって、第1入力装置の移動量に応じて第1オブジェクトの移動速度が決定されるので、ユーザは、直感的な操作で自在に第1オブジェクトの速度を決定できる。
【0036】
また、本発明において、情報処理プログラムは、コンピュータを、第2移動速度決定手段として更に機能させてもよい。この場合、第2移動速度決定手段は、期間計測手段によって計測された期間に基づいて少なくとも1つの第1オブジェクトの移動速度を決定する。また、この場合、第2画像処理手段は、少なくとも1つの第1オブジェクトを上記移動速度で移動制御する。
【0037】
このことによって、操作キーが継続して所定の入力状態にあると判定されている期間に応じた速度で少なくとも1つの第1オブジェクトが移動するので、ユーザは、直感的な操作によって自在に少なくとも1つの第1オブジェクトの移動速度を決定することができる。
【0038】
また、本発明において、第1入力装置は、所定の撮像対象を撮像する撮像手段を更に備え、情報処理プログラムは、コンピュータを、座標特定手段として更に機能させてもよい。この場合、座標特定手段は、撮像手段によって撮像された撮像画像における所定の撮像対象の位置に基づいて、第1入力装置が指し示す表示画像上の指示座標を逐次特定する。また、この場合、第1画像処理手段は、更に、少なくとも入力状態判定手段によって所定の入力状態にあると判定されている期間には、表示画像上の指示座標を表示する。
【0039】
このことによって、ユーザは、表示画像の拡大(又は縮小)と、指示座標を目安に狙いを定めることとを、一連の操作で同時に行うことができる。
【0040】
また、本発明において、第1入力装置は、所定の撮像対象を撮像する撮像手段を更に備え、情報処理プログラムは、コンピュータを、座標特定手段と、標的オブジェクト配置手段と、マーキング手段として機能させてもよい。この場合、座標特定手段は、撮像手段によって撮像された撮像画像における所定の撮像対象の位置に基づいて、第1入力装置が指し示す表示画像上の指示座標を逐次特定する。また、この場合、標的オブジェクト配置手段は、標的である少なくとも1つの第2オブジェクトを表示画像上に配置する。また、この場合、マーキング手段は、入力状態判定手段によって操作キーが所定の入力状態にあると判定されている期間に指示座標が少なくとも1つの第2オブジェクトの何れかを指し示した場合、指し示された第2オブジェクトのそれぞれに対してマーキングを設定する。そして、この場合、第2画像処理手段は、各マーキングが示す位置に向けて、少なくとも1つの第1オブジェクトをそれぞれ移動制御する。
【0041】
このことによって、ユーザは、表示画像の拡大(又は縮小)中に標的オブジェクトを指し示すことによって、簡単な操作で標的オブジェクトに対してマーキングを行うことができる。すなわち、ユーザは、表示画像の拡大(又は縮小)と標的オブジェクトのマーキングとを、一連の操作で同時に行うことができる。また、ユーザは、マーキングされた標的オブジェクトに向かって各第1オブジェクトを自動的に移動させることができる。
【0042】
また、本発明において、マーキング手段は、設定されたマーキングの数を計測するマーキング数計測手段を含み、マーキング数計測手段によって計測された数が所定数に達すると、最も以前に設定されたマーキングを解除してもよい。
【0043】
このことによって、マーキングできる標的オブジェクトの数が予め決まっているため、ユーザに対してマーキングする標的オブジェクトを慎重に選ばせることができる。
【0044】
また、本発明において、第1入力装置は、少なくとも1つの所定の撮像対象を撮像する撮像手段を更に備え、動き情報取得手段は、撮像手段によって撮像された撮像画像における所定の撮像対象の大きさ又は所定の撮像対象間の間隔を表す動き情報を逐次取得し、情報処理プログラムは、コンピュータを、第1距離算出手段と、第2距離算出手段と、比較手段と、第1距離再設定手段として更に機能させてもよい。この場合、第1距離算出手段は、入力状態判定手段によって所定の入力状態にあると判定された時点の撮像手段と少なくとも1つの所定の撮像対象との間の第1距離を、動き情報に基づいて算出する。また、この場合、第2距離算出手段は、第1距離が算出された後に、撮像手段と少なくとも1つの所定の撮像対象との間の第2距離を、動き情報に基づいて算出する。また、この場合、比較手段は、第1距離よりも第2距離の方が小さいか否かを判定する。また、この場合、第1距離再設定手段は、比較手段によって第1距離よりも第2距離の方が小さいと判定された場合、当該第2距離を第1距離として再設定する。そして、この場合、第1画像処理手段は、入力状態判定手段によって所定の入力状態にあると判定されている期間には、第1距離と第2距離との差の変化に連動させて、表示画像を拡大又は縮小させる。
【0045】
このことによって、操作キーが所定の入力状態にある状態で第1入力装置が所定の撮像対象に近づいた場合であっても、第1入力装置の移動量を算出する基準位置を当該近づいた位置に再設定できる。具体的には、ユーザは、操作キーを押下したままで第1入力装置を所定の撮像対象に近づけた場合であっても、当該近づけた位置で操作キーの押下を一旦解除する必要がなくなる。この結果として、ユーザの操作性は大きく向上する。
【0046】
また、本発明において、情報処理装置は、第2入力装置を更に備え、第2入力装置は、自己の傾き角度を算出可能にする傾き算出データを取得する手段を有し、情報処理プログラムは、コンピュータを、傾き角度算出手段として更に機能させてもよい。この場合、傾き角度算出手段は、傾き算出データに基づいて第2入力装置の傾き角度を算出する。そして、この場合、第2画像処理手段は、更に傾き角度に基づいて、少なくとも1つの第1オブジェクトの動作制御を行う。
【0047】
このことによって、ユーザは第2入力装置を傾けることによって第1のオブジェクトを操作できるので、ユーザによる操作の自由度が大幅に向上する。
【0048】
また、本発明において、情報処理装置は、ゲーム装置であり、少なくとも1つの第1オブジェクトは、少なくとも1つの矢オブジェクトであってもよい。
【0049】
このことによって、ゲーム画像内の矢オブジェクトの動作処理とゲーム画像の拡大又は縮小の解除処理とを、プレイヤが行う一連の簡易な操作によって実現できる。
【0050】
また、本発明は、少なくとも1つの操作キーを有する第1入力装置を備え、ゲーム画像を生成するゲーム装置のコンピュータに実行させる情報処理プログラムであって、コンピュータを、入力状態判定手段と、動き情報取得手段と、第1画像処理手段と、第2画像処理手段として機能させる。入力状態判定手段は、上記操作キーの入力状態を判定する。動き情報取得手段は、第1入力装置の動き情報を逐次取得する。第1画像処理手段は、入力状態判定手段によって上記操作キーが所定の入力状態にあると判定されている期間には、動き情報の変化に連動させてゲーム画像を拡大又は縮小させる。第2画像処理手段は、入力状態判定手段によって所定の入力状態が解除されたと判定された時に、拡大又は縮小されていたゲーム画像を元の倍率に戻すと共に、ゲーム画像内における少なくとも1つの矢オブジェクトの発射制御を行う。
【0051】
このことによって、ゲーム画像内の矢オブジェクトの動作処理とゲーム画像の拡大又は縮小の解除処理とを、プレイヤが行う一連の簡易な操作によって実現できる。
【0052】
また、本発明において、第1入力装置は、所定の撮像対象を撮像する撮像手段を備え、情報処理プログラムは、コンピュータを、座標特定手段として更に機能させてもよい。この場合、座標特定手段は、撮像手段によって撮像された撮像画像における所定の撮像対象の位置に基づいて、第1入力装置が指し示すゲーム画像上の指示座標を逐次特定する。そして、この場合、第2画像処理手段は、入力状態判定手段によって所定の入力状態が解除されたと判定された時の指示座標が示す位置に向けて、少なくとも1つの矢オブジェクトを移動制御する。
【0053】
このことによって、撮像対象の位置に基づいて特定される指示位置に向けて矢オブジェクトを移動制御することができるので、プレイヤは直感的な操作が可能となる。
【0054】
また、本発明において、情報処理プログラムは、コンピュータを、期間計測手段と第1閾値判定手段として更に機能させてもよい。この場合、期間計測手段は、入力状態判定手段によって操作キーが継続して所定の入力状態にあると判定されている期間を計測する。また、この場合、第1閾値判定手段は、上記期間が第1閾値以上か否かを判定する。そして、この場合、第2画像処理手段は、上記所定の入力状態が解除されたと判定され、かつ、上記期間が第1閾値以上と判定された時に、拡大又は縮小されていたゲーム画像を元の倍率に戻すと共に、ゲーム画像内における少なくとも1つの矢オブジェクトの動作制御を行う。
【0055】
このことによって、第1入力装置の移動量が所定量以上である状態を所定期間維持させなければ動作制御が行われないので、プレイヤの誤操作を防止できる。また、プレイヤは、矢のオブジェクトを動作させるまでに所定期間待つ必要があるので慎重な操作が求められ、ゲーム性が向上する。
【0056】
以上では、情報処理プログラムとして本発明を構成する場合について記載した。しかし、本発明は、情報処理装置、情報処理システム、又は情報処理方法として構成されてもよい。
【発明の効果】
【0057】
本発明によれば、表示画像内のオブジェクトの動作処理と表示画像の拡大又は縮小の解除処理とを、ユーザ(プレイヤ)が行う一連の簡易な操作によって実現できる。
【図面の簡単な説明】
【0058】
【図1】本発明の各実施形態に係るゲームシステム1の外観図
【図2】図1のゲーム装置本体3の構成を示すブロック図
【図3】図1のコントローラ7を上面後方から見た斜視図
【図4】図1のコントローラ7を下面前方から見た斜視図
【図5】図3のコントローラ7の上ハウジングを外した状態を後面側から見た斜視図
【図6】図4のコントローラ7の下ハウジングを外した状態を前面側から見た斜視図
【図7】図3のコントローラ7の内部構成について説明するための図
【図8】撮像画像の一例を示す図
【図9】本発明の実施形態で想定するゲーム画像の一例
【図10】拡張コントローラ36をコントローラ7のコネクタ73に接続した形態を示す図
【図11】プレイヤがコントローラ7及び拡張コントローラ36を持った状態を示す図
【図12】本発明の実施形態で想定するゲーム画像の一例
【図13】本発明の実施形態で想定するゲーム画像の一例
【図14】プレイヤが、A及びBボタンを押下し、その状態でコントローラ7をテレビ2から離れる方向に移動させる動作を具体的に説明するための図
【図15】本発明の実施形態で想定するゲーム画像の一例
【図16】本発明の第1の実施形態におけるゲーム装置本体3の外部メインメモリ12のメモリマップを示す図
【図17】本発明の第1〜第3実施形態に係る処理を説明するためのフローチャート
【図18】本発明の第1実施形態に係る処理を説明するためのフローチャート
【図19】図17のステップS5の処理について説明するための図
【図20】図17のステップS5の処理について説明するための図
【図21】本発明の実施形態で想定するゲーム画像の一例
【図22】本発明の実施形態で想定するゲーム画像の一例
【図23】本発明の第2の実施形態におけるゲーム装置本体3の外部メインメモリ12のメモリマップを示す図
【図24】本発明の第2実施形態に係る処理を説明するためのフローチャート
【図25】本発明の実施形態で想定するゲーム画像の一例
【図26】本発明の実施形態で想定するゲーム画像の一例
【図27】本発明の実施形態で想定するゲーム画像の一例
【図28】本発明の第3の実施形態におけるゲーム装置本体3の外部メインメモリ12のメモリマップを示す図
【図29】本発明の第3実施形態に係る処理を説明するためのフローチャート
【図30】図29のステップS95〜S97における矢の発射処理について説明するための図
【発明を実施するための形態】
【0059】
以下、本発明の各実施形態について、図面を参照して説明する。なお、以下に説明する実施形態によって本発明が限定されるものではない。
【0060】
(第1の実施形態)
[ゲームシステムの全体構成]
図1を参照して、本発明の第1の実施形態に係る情報処理装置について説明する。以下、説明を具体的にするために、一例として、本発明の情報処理装置を用いたゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、本発明の情報処理装置として据置型のゲーム装置を一例に挙げて、当該ゲームシステム1について説明する。
【0061】
図1に示すように、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」という)2、ゲーム装置本体3、光ディスク4、コントローラ7、及びマーカ部8を含む。ゲームシステム1は、コントローラ7を用いたゲーム操作に基づいてゲーム装置本体3によってゲーム処理を実行するものである。
【0062】
ゲーム装置本体3には、当該ゲーム装置本体3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置本体3において実行されるためのゲームプログラムが記憶されている。ゲーム装置本体3の前面には光ディスク4の挿入口が設けられている。ゲーム装置本体3は、挿入口に挿入された光ディスク4に記憶されたゲームプログラムを読み出して実行することによって、ゲーム処理を実行する。
【0063】
ゲーム装置本体3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2には、ゲーム装置本体3において実行されるゲーム処理の結果得られるゲーム画像が表示される。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部8が設置される。マーカ部8は、その両端に2つのマーカ8Rおよび8Lを備えている。マーカ8R(マーカ8Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部8はゲーム装置本体3に接続されており、ゲーム装置本体3はマーカ部8が備える各赤外LEDの点灯を制御することが可能である。
【0064】
コントローラ7は、当該コントローラ7自身に対して行われた操作の内容を示す操作データをゲーム装置本体3に与える入力装置である。なお、図10及び図11を用いて後に説明する拡張コントローラ36がコントローラ7に接続されている場合には、コントローラ7は、拡張コントローラ36に対して行われた操作の内容を示す操作データも、ゲーム装置本体3に与える。コントローラ7とゲーム装置本体3とは無線通信によって接続される。本実施形態において、コントローラ7とゲーム装置本体3との間の無線通信には、例えばBluetooth(ブルートゥース;登録商標)の技術が用いられる。なお、コントローラ7とゲーム装置本体3とは、有線で接続されてもよい。
【0065】
[ゲーム装置本体3の内部構成]
次に、図2を参照して、ゲーム装置本体3の内部構成について説明する。図2は、ゲーム装置本体3の構成を示すブロック図である。ゲーム装置本体3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、及びAV−IC15等を有する。
【0066】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14及びAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置本体3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11e又は外部メインメモリ12に読み出したデータを書き込む。
【0067】
また、システムLSI11には、入出力プロセッサ11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、及び内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは、内部バスによって互いに接続される。
【0068】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。より具体的には、GPU11bは、当該グラフィクスコマンドに従って3Dグラフィックスの表示に必要な計算処理、例えば、レンダリングの前処理にあたる3D座標から2D座標への座標変換等の処理や、テクスチャの張り込み等の最終的なレンダリング処理を行うことで、ゲーム画像データを生成する。ここで、CPU10は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU11bに与える。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0069】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。また、内部メインメモリ11eは、外部メインメモリ12と同様に、プログラムや各種データを記憶したり、CPU10のワーク領域やバッファ領域としても用いられる。
【0070】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されると共に音声がスピーカ2aから出力される。
【0071】
入出力プロセッサ(I/Oプロセッサ)11aは、それに接続される構成要素との間でのデータの送受信の実行や、外部装置からのデータのダウンロードの実行等を行う。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、及びメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0072】
入出力プロセッサ11aは、無線通信モジュール18及びアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信できる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22及び無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10は、ゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置本体3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体3を利用してプレイしたゲームのセーブデータ(ゲームの結果データ又は途中データ)が記憶されてもよい。
【0073】
また、入出力プロセッサ11aは、コントローラ7から送信される操作データをアンテナ23及び無線コントローラモジュール19を介して受信し、内部メインメモリ11e又は外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0074】
更に、入出力プロセッサ11aには、拡張コネクタ20及びメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりできる。
【0075】
ゲーム装置本体3には、電源ボタン24、リセットボタン25、及びイジェクトボタン26が設けられる。電源ボタン24及びリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンにされると、ゲーム装置本体3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。また、一旦電源がオンにされた状態で、再度電源ボタン24を押すと、低電力スタンバイモードへの移行が行われる。この状態でも、ゲーム装置本体3への通電は行われているため、インターネット等のネットワークに常時接続しておくことができる。なお、一旦電源がオンにされた状態で、電源をオフにしたいときは、電源ボタン24を所定時間以上長押しすることで、電源をオフとすることが可能である。リセットボタン25が押されると、システムLSI11は、ゲーム装置本体3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0076】
次に、図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7を上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
【0077】
図3および図4において、コントローラ7は、ハウジング71と、当該ハウジング71の表面に設けられた複数個の操作ボタンで構成される操作部72とを備える。本実施例のハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
【0078】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向が選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりできる。
【0079】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
【0080】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置本体3が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0081】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0082】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7からゲーム装置本体3へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0083】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5のスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0084】
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
【0085】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0086】
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するxyz軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をz軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をz軸正方向とする。また、コントローラ7の上下方向をy軸とし、ハウジング71の上面(操作ボタン72a等が設けられた面)方向をy軸正方向とする。さらに、コントローラ7の左右方向をx軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をx軸正方向とする。
【0087】
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上ハウジング(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下ハウジング(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
【0088】
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。マイコン751は本願発明のボタンデータ発生手段の一例として、操作ボタン72a等の種類に応じた操作ボタンデータを発生させるように機能する。この仕組みは公知技術であるが、例えばキートップ下側に配置されたタクトスイッチなどのスイッチ機構による配線の接触/切断をマイコン751が検出することによって実現されている。より具体的には、操作ボタンが例えば押されると配線が接触して通電するので、この通電がどの操作ボタンにつながっている配線で発生したかをマイコン751が検出し、操作ボタンの種類に応じた信号を発生させている。
【0089】
また、コントローラ7は、無線モジュール753(図7参照)およびアンテナ754によって、ワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の回転を良好な感度でゲーム装置本体3等が判定することができる。
【0090】
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体3から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0091】
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体3から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0092】
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
【0093】
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
【0094】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。ここで、テレビ2の表示画面近傍に配置されるマーカ8Lおよび8Rは、テレビ2の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ741を設けることによってマーカ8Lおよび8Rの画像をより正確に撮像することができる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ入射させる。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子743によって撮像された画像を撮像画像と呼ぶ。撮像素子743によって生成された画像データは、画像処理回路744で処理される。画像処理回路744は、撮像画像内における撮像対象(マーカ8Lおよび8R)の位置を算出する。以下、図8を用いて撮像対象の位置の算出方法を説明する。
【0095】
図8は、撮像画像の一例を示す図である。図8に示す撮像画像においては、マーカ8Lの画像8L’およびマーカ8Rの画像8R’が左右に並んでいる。撮像画像が入力されると、まず、画像処理回路744は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。ここで、所定条件とは、撮像対象の画像(対象画像)を特定するための条件であり、所定条件の具体的な内容は、輝度が所定値以上の領域(高輝度領域)であり、かつ、領域の大きさが所定範囲内の大きさであることである。なお、所定条件は撮像対象を特定するための条件であればよく、他の実施形態においては、画像の色に関する条件を含んでいてもよい。
【0096】
対象画像の位置を算出する際、まず、画像処理回路744は、撮像画像の領域から上記高輝度領域を対象画像の候補として特定する。撮像画像の画像データにおいて対象画像は高輝度領域として現れるからである。次に、画像処理回路744は、特定された高輝度領域の大きさに基づいて、その高輝度領域が対象画像であるか否かを判定する判定処理を行う。撮像画像には、対象画像である2つのマーカ8Lおよび8Rの画像8L’および8R’の他、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれている場合がある。この場合、マーカ8Lおよび8Rの画像8L’および8R’以外の画像も高輝度領域として現れてしまう。上記の判定処理は、対象画像であるマーカ8Lおよび8Rの画像8L’および8R’とそれ以外の画像とを区別し、対象画像を正確に特定するための処理である。具体的には、当該判定処理においては、特定された高輝度領域が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度領域が所定範囲内の大きさである場合、当該高輝度領域は対象画像を表すと判定され、高輝度領域が所定範囲内の大きさでない場合、当該高輝度領域は対象画像以外の画像を表すと判定される。
【0097】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度領域について、画像処理回路744は当該高輝度領域の位置を算出する。具体的には、当該高輝度領域の重心位置を算出する。なお、重心位置は撮像素子743の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子743によって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、重心位置の座標は、(0,0)から(1024,768)までの整数値で表現される。なお、撮像画像における位置は、図8に示すように、撮像画像の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とする座標系(xy座標系)で表現されるものとする。
【0098】
以上のようにして、画像処理回路744は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。なお、以下では、画像処理回路744によって算出される座標をマーカ座標と呼ぶ。マーカ座標は、撮像画像に対応する平面上の位置を表すための座標系において撮像対象の位置を示す座標である。画像処理回路744は、マーカ座標を通信部75のマイコン751へ出力する。マーカ座標のデータは、マイコン751によって操作データとしてゲーム装置本体3に送信される。マーカ座標はコントローラ7自体の向き(姿勢)や位置に対応して変化するので、ゲーム装置本体3は当該座標値を用いてコントローラ7の向きや位置を算出することができる。なお、本実施形態では、撮像画像からマーカ座標を算出する処理までをコントローラ7の画像処理回路744および/またはマイコン751で行ったが、例えば撮像画像をゲーム装置本体3に送り、以降の処理と同等の処理をゲーム装置本体3のCPU10等で行わせることもできる。
【0099】
コントローラ7は、3軸(x、y、z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向(または他の対になった方向)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。例えば、この3軸または2軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であってもよい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または2軸の加速度センサ701が提供されてもよい。
【0100】
当業者には公知であるように、加速度センサ701に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、その2軸または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0101】
しかしながら、加速度センサ701から出力される加速度の信号に基づいて、ゲーム装置本体3のプロセッサ(例えばCPU10)またはコントローラ7のプロセッサ(例えばマイコン751)などのコンピュータが処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ701を搭載するコントローラ7が静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサ701によって検出される加速度が重力加速度のみであるとして処理する場合)、コントローラ7が現実に静的な状態であれば、検出された加速度に基づいてコントローラ7の姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかを知ることができる。具体的には、加速度センサ701の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かだけで傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかも知ることができる。また、多軸の加速度センサ701の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、各軸が重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ701からの出力に基づいて、プロセッサがコントローラ7の傾き角度のデータを算出する処理をおこなってもよいが、当該傾き角度のデータを算出する処理をおこなうことなく、加速度センサ701からの出力に基づいて、おおよその傾き具合を推定するような処理としてもよい。このように、加速度センサ701をプロセッサと組み合わせて用いることによって、コントローラ7の傾き、姿勢または位置を判定することができる。一方、加速度センサ701が動的な状態であることを前提とする場合には、重力加速度成分に加えて加速度センサ701の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動き方向などを知ることができる。具体的には、加速度センサ701を備えるコントローラ7がユーザの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7のさまざまな動きおよび/または位置を算出することができる。なお、加速度センサ701が動的な状態であることを前提とする場合であっても、加速度センサ701の動きに応じた加速度を所定の処理により除去すれば、重力方向に対する傾きを知ることが可能である。他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0102】
他の実施形態の例では、コントローラ7の動きを検出する動きセンサとして、回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるMEMSジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ701と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転(または角速度)を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【0103】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、2つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロセンサとの基本的な差異と同様にジャイロセンサの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【0104】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体3からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体3から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体3から送信された振動データ(例えば、バイブレータ704をオンまたはオフする信号)等に応じて、バイブレータ704を作動させる。
【0105】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの加速度信号(x、y、およびz軸方向加速度データ;以下、単に加速度データという)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、加速度データ、処理結果データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(Bluetooth)で構成される通信部75の送信間隔は例えば5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥースの技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その電波信号をアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からの加速度データ、および撮像情報演算部74からの処理結果データが無線モジュール753で電波信号に変調されてコントローラ7から送信される。そして、ゲーム装置本体3の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置本体3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体3のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥースの技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0106】
[本実施形態で想定するゲームの概要]
次に、図9〜図15を用いて、本実施形態で想定するゲームの概要について説明する。本実施形態で想定するゲームは、仮想3次元空間内を舞台にした戦闘ゲームである。図9は、本実施形態で想定するゲーム画像の一例である。図9において、ゲーム画像にはプレイヤオブジェクト101、ポインタ102、敵オブジェクト103等が表示されている。本ゲームは、プレイヤオブジェクト101の後方に仮想カメラを配置した、いわゆる三人称視点でゲーム画像が描画される。そして、プレイヤオブジェクト101は、弓矢オブジェクト104を持っている。本ゲームは、プレイヤオブジェクト101が当該弓矢オブジェクト104を使って敵オブジェクト103を倒していくゲームである。
【0107】
次に、本ゲームにおける操作について説明する。本ゲームでは、図10に示すように、プレイヤは、拡張コントローラ36をコントローラ7のコネクタ73に接続した形態でプレイヤオブジェクト101の操作を行う。ここで、拡張コントローラ36は、アナログ方式の入力が可能なアナログスティック39を備えている。また、拡張コントローラ36は、コントローラ7が備える既に説明した加速度センサ701と同様の加速度センサ(図示せず)を備える。そして、拡張コントローラ36の加速度センサから出力される加速度の信号に基づいて、ゲーム装置本体3のプロセッサ(例えばCPU10)またはコントローラ7のプロセッサ(例えばマイコン751)などのコンピュータが処理を行うことによって、拡張コントローラ36の傾き、姿勢等は、コントローラ7の傾き、姿勢等と同様にして算出される。そして、プレイヤは、ゲームをプレイする際に、例えば図11に示すように、右手でコントローラ7を持ち、左手で拡張コントローラ36を持つ。このとき、プレイヤは、右手に持ったコントローラ7の前面(撮像情報演算部74が撮像する光の入射口側)がマーカ8Lおよび8Rの方向(つまりテレビ2の方向)を向く状態でコントローラ7を把持する。この状態で、プレイヤは、コントローラ7の傾きを変化させたり、コントローラ7が指し示す画面上の位置(指示位置)を変更したり、コントローラ7と各マーカ8Lおよび8R(テレビ2)との距離を変更したりすることによってゲーム操作を行うことができる。そして、本実施形態のゲームでは、プレイヤは、左手に持った拡張コントローラ36を用いて、主にプレイヤオブジェクト101の移動操作を行い、右手に持ったコントローラ7を用いて、主にポインタ102の移動操作および弓矢オブジェクト104を用いた攻撃操作を行う。ここで、本ゲームは上述のように戦闘ゲームであり、プレイヤオブジェクト101の攻撃動作の内容は、弓矢オブジェクト104で敵オブジェクト103を「射る」動作となる。そのため、以下では当該攻撃操作のことを「弓撃操作」と呼ぶ。
【0108】
まず、拡張コントローラ36を用いたプレイヤオブジェクト101の移動操作に関して簡単に説明する。プレイヤが、左手に持った拡張コントローラ36のアナログスティック39を上方向に入力すると、プレイヤオブジェクト101が前進する。また、下方向に入力すると、プレイヤオブジェクト101が後退する。右方向に入力したときは、プレイヤオブジェクト101は右に水平移動する(プレイヤキャラの向きを変えずに右に移動する。例えば、前を向いたまま右に横歩きする動作)。左方向に入力したときは、プレイヤオブジェクト101は左に水平移動する。
【0109】
次に、コントローラ7を用いた操作について簡単に説明する。まず、図9に示すように、ゲーム画像には、コントローラ7が指し示す画像上の位置(指示位置)にポインタ102が表示される。ポインタ102は、矢が放たれる方向を示している。プレイヤが、コントローラ7の操作ボタン72d及び72i(図3及び図4を参照:以下、A及びBボタンという)を共に押下すると、図12に示すように、プレイヤオブジェクト101が弓矢オブジェクト104を構える。次に、プレイヤがA及びBボタンを押下したままでコントローラ7をマーカ8Lおよび8R(テレビ2)から離れる方向に移動させると、図13に示すように、プレイヤオブジェクト101が弓矢オブジェクト104の弓を引く動作を行うと同時に、ゲーム画像が拡大(ズーム)される。ここで、プレイヤは、拡大された画像を見ながらコントローラ7の向き等を調整してポインタ102を移動させることによって、敵オブジェクト103等に狙いを合わせることができる。
【0110】
図14は、プレイヤが、A及びBボタンを押下し、その状態でコントローラ7をマーカ8Lおよび8R(テレビ2)から離れる方向に移動させる動作を具体的に説明するための図である。図14において、プレイヤは、コントローラ7を、その前面をマーカ8Lおよび8R(テレビ2)に向けて把持している。ここで、マーカ8Lおよび8Rの中点からコントローラ7の前面までの距離を距離realDとする。そして、例えば、図14に示す状態Aは、距離realD0の位置でプレイヤがコントローラ7のA及びBボタンを共に押下した時点の状態とする。この状態Aが、上記したプレイヤオブジェクト101が弓矢オブジェクト104を構えた状態(図12参照)に対応する。その後、プレイヤは、A及びBボタンを共に押下したままでコントローラ7をテレビ2に向かって後ろに移動させる。このことによって、マーカ8Lおよび8Rの中点からコントローラ7の前面までの距離realDは増加し、図14に示す状態Bとなる。この状態Bが、上記した弓が引かれると同時にゲーム画像が拡大された状態(図13参照)に対応する。
【0111】
次に、ユーザが押下していたA及びBボタンの少なくとも一方を離すと、図15に示すように、プレイヤオブジェクト101が矢150を放ち、同時に、拡大されていた画像(図13を参照)が元の倍率(図9及び図12の倍率;以下、基本倍率という)に戻る。
【0112】
以上のように、プレイヤは、A及びBボタンを押下した後にコントローラ7を引き、拡大されたゲーム画像を見ながらコントローラ7の向き等を調整して狙いを定めた後に、A及びBボタンの少なくとも一方を離す操作を行う。このことによって、プレイヤは、弓を引いて矢を放つ一連の動作を、プレイヤオブジェクト101に行わせることができる。そして、プレイヤオブジェクト101が矢を放つと同時に拡大されていたゲーム画像が基本倍率に自動的に戻る。このことから、プレイヤは、プレイヤオブジェクト101が弓を引いた時は狙いを定め易く、矢を放った後は煩雑な操作をすることなく次の操作に移ることができる。また、以上に説明した操作は、実際に弓を射る動作に類似しているので、プレイヤは、実際に矢を射ているような臨場感を体感できる。
【0113】
[ゲーム処理の詳細]
次に、ゲーム装置本体3によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際に外部メインメモリ12に記憶されるデータについて説明する。図16は、ゲーム装置本体3の外部メインメモリ12のメモリマップを示す図である。図16において、外部メインメモリ12は、プログラム記憶領域330およびデータ記憶領域332を含む。プログラム記憶領域330およびデータ記憶領域332のデータの一部は、光ディスク4に記憶され、ゲームプログラム実行時には外部メインメモリ12に転送されて記憶される。
【0114】
プログラム記憶領域330には、後述する図17等に示すフローチャートの処理を実行するメイン処理プログラム331等のプログラムが記憶される。
【0115】
データ記憶領域332には、操作データ333、ポインティング座標データ334、コントローラ距離データ335、A,Bボタン押下フラグ336、押下開始時距離データ337、コントローラ移動量データ338、引き絞り値・拡大率テーブル339、拡大率データ340、引き絞り値・弓引き量テーブル341、引き絞り値データ343、引き絞り閾値データ344、引き絞り値・矢速度テーブル345、移動量・引き絞り上限値テーブル346、引き絞り上限値データ347等のデータが記憶される。
【0116】
操作データ333は、コントローラ7から取得されるデータであり、既に説明したマーカ座標(図8参照)を示すマーカ座標データ3331が含まれる。ここで、図8に示したような撮像画像内にマーカ8Lおよび8Rの少なくとも一方が写っていない場合は、そのことを示す値(例えばNULL値)が設定されるものとする。その他、操作データ333には、各種ボタンの押下状態を示すデータや加速度データ、拡張コントローラ36の操作内容(上記アナログスティック39の操作内容等)を示すデータ等、プレイヤの操作内容を示すデータが含まれる。
【0117】
ポインティング座標データ334は、マーカ座標データ3331に基づいて算出されるデータであり、コントローラ7が指している位置を表すポインティング座標を示すデータである。
【0118】
コントローラ距離データ335は、図14を用いて説明したコントローラ7とテレビ2との距離realDの現在の値を示すデータである。
【0119】
A,Bボタン押下フラグ336は、A及びBボタンが共に押下された状態か否かを示すフラグである。このフラグがオンの場合、A及びBボタンが共に押下された状態であることを示し、このフラグがオフの場合、A及びBボタンの少なくとも一方は押下されていない状態であることを示す。
【0120】
押下開始時距離データ337は、A及びBボタンが共に押下された時点におけるコントローラ距離データ335の値を示すデータである。言い換えれば、押下開始時距離データ337は、A及びBボタンが共に押下された時点におけるコントローラ7とテレビ2との距離realD(図14のrealD0)を示すデータである。
【0121】
コントローラ移動量データ338は、コントローラ距離データ335が示す値から押下開始時距離データ337が示す値を差引いた値を示すデータである。なお、コントローラ移動量データ338は、押下開始時距離データ337が示す値よりもコントローラ距離データ335が示す値が大きい場合にのみ算出される。つまり、コントローラ移動量データ338は、コントローラ7が、A及びBボタンが共に押下された時点の位置(図14の状態A)からテレビ2に向かって後ろに移動した距離(移動量)を示すデータである。
【0122】
引き絞り値・拡大率テーブル339は、引き絞り値データ343が示す引き絞り値とゲーム画像の拡大率とを対応付けたテーブルであり、引き絞り値データ343が示す引き絞り値の増加に伴ってゲーム画像の拡大率が増加する関係を示すテーブルである。また、引き絞り値・拡大率テーブル339において、引き絞り値データ343が示す引き絞り値0に対応する拡大率は、ゲーム画像の倍率のベースとなる1倍(基本倍率)である。なお、引き絞り値・拡大率テーブル339は、比例関係等を示す数式に置き換えられてもよい。
【0123】
拡大率データ340は、引き絞り値・拡大率テーブル339を用いて決定されたゲーム画像の拡大率を示すデータである。なお、拡大率データ340が示す拡大率の初期値(ゲーム開始時の値)は、1倍(基本倍率)である。
【0124】
引き絞り値・弓引き量テーブル341は、引き絞り値データ343が示す引き絞り値とゲーム空間で弓が引かれる量(長さ)とを対応付けたテーブルであり、引き絞り値データ343が示す引き絞り値の増加に伴って弓が引かれる量が増加するテーブルである。なお、引き絞り値・弓引き量テーブル341は、比例関係等を示す数式に置き換えられてもよい。
【0125】
引き絞り値データ343は、コントローラ移動量データ338が示す移動量が正の値を維持している時間に応じて加算される引き絞り値を示すデータである。言い換えると、引き絞り値データ343は、コントローラ7が引かれている時間に応じて加算される値である引き絞り値を示すデータである。なお、引き絞り値は、所定の割合で線形的に加算されてもよいし、更には、非線形的に加算されてもよい。
【0126】
引き絞り閾値データ344は、引き絞り値データ343が示す引き絞り値に対して用いられる予め定められた閾値を示すデータである。例えば、引き絞り閾値データ344は、コントローラ移動量データ338が示す移動量が正の値を維持している時間3秒に対応する引き絞り値を示すデータである。
【0127】
引き絞り値・矢速度テーブル345は、引き絞り値データ343が示す引き絞り値とゲーム空間で矢のオブジェクトが飛ぶ速度とを対応付けたテーブルであり、引き絞り値データ343が示す引き絞り値の増加に伴って矢のオブジェクトが飛ぶ速度が増加するテーブルである。なお、引き絞り値・矢速度テーブル345は、比例関係等を示す数式に置き換えられてもよい。
【0128】
移動量・引き絞り上限値テーブル346は、コントローラ移動量データ338が示す移動量と引き絞り値データ343が示す引き絞り値の上限値とを対応付けたテーブルであり、コントローラ移動量データ338が示す移動量の増加に伴って引き絞り値データ343が示す引き絞り値の上限値が増加するテーブルである。なお、移動量・引き絞り上限値テーブル346は、比例関係等を示す数式に置き換えられてもよい。
【0129】
引き絞り上限値データ347は、移動量・引き絞り上限値テーブル346を用いて決定された引き絞り値データ343が示す引き絞り値の上限値を示すデータである。
【0130】
次に、図17〜図20を参照して、ゲーム装置本体3によって実行されるゲーム処理について説明する。なお、図17および図18はゲーム装置本体3によって実行されるゲーム処理を示すフローチャートである。また、図19は、図17の距離算出処理(ステップS5)の詳細を示すサブルーチンであり、図20は、図17の距離算出処理を説明するための図である。また、図17および図18のフローチャートの処理が1フレーム(例えば、1/60秒)毎に繰り返されることによって、ゲームが進行する。このことから、以下の説明では、典型的な処理の流れを、1フレーム単位で説明する。また、以下では、ゲーム全体に係る処理のうち、弓撃操作についての処理について説明し、本願発明とは直接関連しない他の処理については詳細な説明を省略する。
【0131】
まず、ステップS1において、CPU10は、ゲーム空間(仮想空間)に各オブジェクト(プレイヤオブジェクト、敵オブジェクト等)を配置する。
【0132】
次に、ステップS2において、CPU10は、外部メインメモリ12から、操作データの一つであるマーカ座標データ3331を取得する。
【0133】
次に、ステップS3において、CPU10は、コントローラ7の撮像画像において、マーカが検出されているか否かを判定する。言い換えると、CPU10は、コントローラ7の前面がテレビ2の方向に向いているか否かを判定する。具体的には、CPU10は、図8に示した撮像画像において、マーカ8Lおよび8Rの画像(8L’、8R’)が撮像されているか否かを判定する。当該撮像画像内にマーカ8Lおよび8Rのうち少なくとも一方が写っていない場合、そのことを示す値(例えば、NULL値)がマーカ座標データ3331に設定される。このことから、CPU10は、当該値が設定されているか否かを判定することで、コントローラ7の前面がテレビ2の方向を向いているか否かを判定できる。ステップS3の判定の結果、CPU10が、マーカ8Lまたは8Rのうち少なくとも一方を検出しなかった場合(ステップS3でNO)、処理は図18に示すステップS11に移る。一方、CPU10が、マーカ8Lおよび8Rの双方を検出した場合(ステップS3でYES)、処理はステップS4に移る。
【0134】
ステップS4において、CPU10は、コントローラ7が指し示すテレビ2の画面上の位置であるポインティング座標を算出する。以下、ポインティング座標の算出方法の一例について説明する。既に説明したように、マーカ座標データ3331には、マーカ8Lおよび8Rに対応する2つのマーカ座標(図8参照)を示すデータが含まれる。CPU10は、この2つのマーカ座標の中点を算出する。この中点の位置は、撮像画像に対応する平面上の位置を表すためのxy座標系によって表現される。次に、CPU10は、この中点の位置を示す座標(x,y)を、テレビ2の画面上の位置を表すためのx’y’座標系の座標(x’,y’)に変換する。この変換は、或る撮像画像から算出される中点の座標を、当該撮像画像が撮像された時点のコントローラ7の実際の指示位置に対応するテレビ2の画面上の座標に変換する関数を用いて行うことができる。その際、コントローラ7の指示位置と、撮像画像内でのマーカ座標の位置とは逆方向に移動することになるので、上下左右が反転するような変換を行う。以上のようにして算出されたx’y’座標値により示される値がコントローラ7のポインティング座標となる。CPU10は、算出したポインティング座標を用いて、外部メインメモリ12のポインティング座標データ334を更新する。なお、ゲーム画像において、このポインティング座標に、ポインタ102が表示される(図9参照)。
【0135】
次に、ステップS5において、CPU10は、コントローラ7とテレビ2(マーカ8Lおよび8R)との現在距離(図14のrealD)を算出する距離算出処理を行う。距離算出処理において、CPU10は、マーカ座標データ3331に含まれるマーカ座標を使用する。マーカ座標は、図8を用いて説明したように、コントローラ7によって撮像された撮像画像において、マーカ8Lの画像8L’およびマーカ8Rの画像8R’の位置を示す座標である。ここで、マーカ8Lの画像8L’の位置を示すマーカ座標のデータを、第1座標データとする。また、マーカ8Rの画像8R’の位置を示すマーカ座標のデータを、第2座標データとする。以下、図19および図20を参照して、ステップS5における詳細な動作について説明する。
【0136】
図19において、CPU10は、第1座標データおよび第2座標データを、外部メインメモリ12から取得し(ステップS51)、距離miを算出する(ステップS52)。ここで、図20に示すように、距離miは、撮像画像内における2点間の距離である。この2点は、画像8L’および画像8R’に相当し、それぞれの座標を第1座標データおよび第2座標データとして得ている。したがって、CPU10は、第1座標データおよび第2座標データを用いれば、距離miを算出できる。具体的には、第1座標データが位置座標(Lx,Ly)、第2座標データが位置座標(Rx,Ry)であるとすると、距離miは、
【0137】
【数1】

で算出される。
【0138】
次に、CPU10は、マーカ8Lおよび8Rの設置位置に対する撮像素子743の撮像可能範囲の幅w(図20参照)を算出する(ステップS53)。ここで、幅wは、
w=wi×m/mi
で算出される。なお、mは、マーカ8Lおよび8Rの設置間隔(実際の設置間隔;例えば、20cm)であり、固定値である。また、wiは、幅wに対応する撮像素子743の撮像画像の幅wiであり、固定値である。これら設置間隔mおよび幅wiは、いずれも固定値であるため、予めゲーム装置本体3内の記憶手段(図示せず)に格納される。なお、設置間隔mについては、プレイヤの設置環境に応じて任意の間隔でマーカ8Lおよび8Rを設置してもかまわない。この場合、マーカ8Lおよび8Rを設置した間隔を設置間隔mとしてプレイヤが入力するようにすれば、上記数式を同様に扱うことができる。
【0139】
次に、CPU10は、幅wおよび撮像素子743の視野角θを用いて、マーカ8Lおよび8Rと撮像素子743(コントローラ7)との現在距離realD(図20参照)を算出し、外部メインメモリ12のコントローラ距離データ335を、算出した現在距離realDで更新して(ステップS54)、当該サブルーチンによる処理を終了する。ここで、現在距離realDは、
realD=(w/2)/{tan(θ/2)}
の関係式から算出できる。なお、視野角θは固定値であるため、予めゲーム装置本体3内の記憶手段(図示せず)に格納されている。
【0140】
なお、以上では、コントローラ7によって撮像された撮像画像において、マーカ8Lの画像8L’およびマーカ8Rの画像8R’の位置を示すマーカ座標間の距離を用いて現在距離realDを算出した。しかし、コントローラ7によって撮像された撮像画像において、マーカ8Lの画像8L’およびマーカ8Rの画像8R’のうち少なくとも一方を用いて、現在距離realDを算出してもよい。ここで、現在距離realDが増加すると、画像8L’(又は画像8R’)の大きさ(例えば直径)は減少するという関係が成り立つ。このことから、この関係を用いて、画像8L’(又は画像8R’)の直径から、現在距離realDを算出できる。具体的には、現在距離realDが1mの場合において、コントローラ7によって撮像された撮像画像中の画像8L’(又は画像8R’)の直径が例えば5mmであるとする。また、現在距離realDが2mの場合において、コントローラ7によって撮像された撮像画像中の画像8L’(又は画像8R’)の直径が例えば3mmであるとする。この場合、例えば画像8L’の直径が4mmであったとすると、現在距離realDは1.5mであると算出できる。また、このような計算によってではなく、マーカ8Lの画像8L’およびマーカ8Rの画像8R’の位置を示すマーカ座標間の距離と現在距離RealDとの対応表、あるいは、マーカ8Lの画像8L’およびマーカ8Rの画像8R’のうち少なくとも一方の直径と現在距離RealDとの対応表を用いることでRealDの値を決定しても良い。
【0141】
次に、ステップS6において、CPU10は、操作データ333を参照することによって、A及びBボタンが共に押下された状態であるか否かを判定する。A及びBボタンが共に押下された状態ではないと判定された場合(ステップS6でNO)、処理は図18のステップS24に移る。一方、A及びBボタンが共に押下された状態であると判定された場合(ステップS6でYES)、処理はステップS7に移る。
【0142】
ステップS7において、CPU10は、A,Bボタン押下フラグ336を参照して、当該フラグがオンか否かを確認する。A,Bボタン押下フラグ336がオンの場合(ステップS7でYES)、処理はステップS14に移る。この場合、コントローラ7のA及びBボタンは、既に押下されている状態である。一方、A,Bボタン押下フラグ336がオンではない場合(ステップS7でNO)、処理はステップS8に移る。この場合、コントローラ7のA及びBボタンは、押下が開始された状態である。
【0143】
ステップS8において、CPU10は、ゲーム空間においてプレイヤオブジェクト101に弓矢を構えさせる(図12参照)。なお、このとき、ゲーム空間のプレイヤオブジェクト101は、弓の弦を引いていない状態である。
【0144】
次に、ステップS9において、CPU10は、ステップS5で算出された最新のコントローラ距離データ335を、押下開始時距離データ337(距離Aとする)として外部メインメモリ12に保存する。言い換えると、CPU10は、コントローラ7のA及びBボタンが共に押下開始された時点におけるコントローラ7とテレビ2との距離Aを外部メインメモリ12に保存する。
【0145】
次に、ステップS10において、CPU10は、A,Bボタン押下フラグ336をオンにする。
【0146】
次に、ステップS11において(図18参照)、CPU10は、ゲーム空間において飛んでいる矢が存在する場合には、当該矢をゲーム空間において移動させて当該矢の位置を更新する。
【0147】
次に、ステップS12において、CPU10は、ゲーム空間において飛んでいる矢が存在する場合には、当該矢が敵に命中したか否かを判定し、命中した場合には、ゲーム空間において例えば敵にダメージを与える。
【0148】
次に、ステップS13において、CPU10は、外部メインメモリ12の拡大率データ340の値、ゲーム空間の各オブジェクトの状態及び位置関係等に基づいたグラフィクスコマンド(作画命令)を、GPU11bに通知する。そして、GPU11bは当該通知に従ってゲーム画像の描画処理を行い、テレビ2は当該ゲーム画像を表示する。その後、処理は図17のステップS1に戻る。
【0149】
以上に説明した1フレームの期間では、ステップS1〜S13のルートで処理が行われた。つまり、プレイヤは、今回の1フレームの期間において、コントローラ7の前面をテレビ2に向けた状態でA及びBボタンを共に押下開始する動作を行った。このことから、今回のステップS13で生成されたゲーム画像は、ステップS8の処理(ゲーム空間においてプレイヤオブジェクト101に弓矢を構えさせた処理)を反映させ、また、ゲーム画像の拡大率は1倍(基本倍率)であるゲーム画像となる(図12参照)。
【0150】
次に、ステップS1〜S7の処理が行われ、ステップS7において、A,Bボタン押下フラグ336がオンの場合(ステップS7でYES)について説明する。この場合、処理はステップS14に移る。
【0151】
ステップS14において、CPU10は、ステップS5で算出された最新のコントローラ距離データ335が示す値(距離Bとする)が、ステップS9で外部メインメモリ12に保存された押下開始時距離データ337が示す値(距離A)より大きいか否かを判定する。言い換えると、CPU10は、コントローラ7が、A及びBボタンが共に押下開始された時点の位置からテレビ2に向かって後ろに移動したか否かを判定する。距離Bが距離Aより大きくない場合(ステップS14でNO)、処理はステップS32に移る。この場合、コントローラ7は、テレビ2に近づいた、又は、テレビ2に対して一定の距離を保っている。一方、距離Bが距離Aより大きい場合(ステップS14でYES)、処理はステップS15に移る。この場合、コントローラ7は、テレビ2から遠ざかっている。
【0152】
ステップS15において、CPU10は、距離Bから距離Aを差引く演算を行うことによって、コントローラ7が、A及びBボタンが共に押下開始された時点の位置からテレビ2に向かって後ろに移動した距離(移動量)を算出する。そして、CPU10は、算出した距離の値でコントローラ移動量データ338を更新する。
【0153】
次に、図18のステップS16において、CPU10は、移動量・引き絞り上限値テーブル346を用いて、ステップS15で算出した最新のコントローラ移動量データ338が示す移動量から引き絞り上限値を決定し、この値で引き絞り上限値データ347を更新する。なお、既に述べたように、コントローラ移動量データ338の値の増加に伴って、引き絞り値データ343が示す引き絞り値の上限値(引き絞り上限値)は増加する。その後、処理はステップS17に移る。
【0154】
ステップS17において、CPU10は、現在の引き絞り値データ343が示す現在の引き絞り値が、移動量・引き絞り上限値テーブル346を用いて決定された引き絞り上限値データ347が示す引き絞り上限値未満か否かを判定する。引き絞り値データ343が示す引き絞り値が引き絞り上限値データ347が示す引き絞り上限値未満と判定された場合(ステップS17でYES)、処理はステップS18に移る。一方、引き絞り値データ343が示す引き絞り値が引き絞り上限値データ347が示す引き絞り上限値未満とではないと判定された場合(ステップS17でNO)、処理はステップS19に移る。
【0155】
ステップS18において、CPU10は、引き絞り値データ343が示す引き絞り値をインクリメントする。その後、処理はステップS20に移る。
【0156】
一方、ステップS19において、CPU10は、引き絞り値データ343が示す引き絞り値に、現在の引き絞り上限値データ347が示す現在の引き絞り上限値をセットする。このことによって、例えばプレイヤがコントローラ7をテレビ2から一度遠ざけて再びテレビ2の近くに戻した場合であっても、引き絞り値データ343が示す引き絞り値が引き絞り上限値データ347が示す引き絞り上限値を超えないように、引き絞り値を引き絞り上限値に抑えることができる。その後、処理はステップS20に移る。
【0157】
ステップS20において、CPU10は、引き絞り値・拡大率テーブル339を参照して、最新の引き絞り値データ343が示す引き絞り値に対応するゲーム画像の拡大率を求め、求めた拡大率で拡大率データ340を更新する。ここで、既に説明したように、引き絞り値・拡大率テーブル339は、引き絞り値データ343が示す引き絞り値の増加に伴ってゲーム画像の拡大率が増加する関係を示すテーブルである。
【0158】
次に、ステップS21において、CPU10は、引き絞り値・弓引き量テーブル341を参照して、最新の引き絞り値データ343が示す引き絞り値に対応するゲーム空間で弓が引かれる量(距離)を求め、求めた量でゲーム空間においてプレイヤオブジェクト101に弓を引かせる(図13参照)。
【0159】
次に、ステップS22において、CPU10は、操作データ333を参照することによって、押下されていたA及びBボタンの少なくとも一方が離された(解除された)か否かを判定する。A及びBボタンの少なくとも一方が離されたと判定された場合(ステップS22でYES)、処理はステップS23に移る。一方、A及びBボタンが共に押下されたままであると判定された場合(ステップS22でNO)、処理はステップS11に移る。この場合、その後、既に説明したステップS11〜S13の処理が行われる。
【0160】
以上に説明した1フレームの期間では、ステップS1〜S7、S14〜S22、S11〜S13のルートで処理が行われた。つまり、プレイヤは、今回の1フレームの期間において、コントローラ7の前面をテレビ2に向けてA,Bボタンを共に押下した状態で、A,Bボタンを押下開始した位置を基準に、コントローラ7をテレビ2から遠ざける(引く)動作を行った。このことから、今回のステップS13で生成されるゲーム画像は、ステップS21の処理(ゲーム空間においてプレイヤオブジェクト101に弓を引かせた処理)を反映させたゲーム画像となる。また、当該ゲーム画像は、ステップS20で求められた最新の拡大率(拡大率データ340が示す最新の拡大率)で拡大(ズーム)された画像である(図13参照)。
【0161】
次に、ステップS1〜S7、S14〜S22のルートで処理が行われ、ステップS22において、A及びBボタンの少なくとも一方が離されたと判定された場合(ステップS22でYES)について説明する。この場合、処理はステップS23に移る。
【0162】
ステップS23において、CPU10は、引き絞り値データ343が示す引き絞り値が引き絞り閾値データ344が示す引き絞り閾値以上か否かを判定する。ここで、既に説明したように、引き絞り閾値データ344が示す引き絞り閾値は、例えば、3秒に対応する値である。引き絞り値データ343が示す引き絞り値が引き絞り閾値データ344が示す引き絞り閾値以上の場合(ステップS23でYES)、処理はステップS28に移る。一方、引き絞り値データ343が示す引き絞り値が引き絞り閾値データ344が示す引き絞り閾値以上ではない場合(ステップS23でNO)、処理はステップS24に移る。
【0163】
ステップS24において、CPU10は、引き絞り値データ343が示す引き絞り値をリセットする。
【0164】
次に、ステップS25において、CPU10は、拡大率データ340が示す拡大率を1倍(基本倍率)にする。
【0165】
次に、ステップS26において、CPU10は、ゲーム空間においてプレイヤオブジェクト101を、弓矢を構えていない通常状態に戻す。
【0166】
次に、ステップS27において、CPU10は、A,Bボタン押下フラグ336をオフにする。その後、既に説明したステップS11〜S13の処理が行われる。
【0167】
以上に説明した1フレームの期間では、ステップS1〜S7、S14〜S27、S11〜S13のルートで処理が行われた。つまり、プレイヤは、今回の1フレームの期間において、コントローラ7の前面をテレビ2に向けてA及びBボタンを共に押下した後にコントローラ7を引いた状態が所定時間(例えば、引き絞り値が3秒に対応する値となる時間)に達しないうちに、A及びBボタンの少なくとも一方を離した。このことから、今回のステップS13で生成されるゲーム画像は、ステップS26の処理(ゲーム空間においてプレイヤオブジェクト101を、弓矢を構えていない通常状態に戻す処理)を反映させたゲーム画像となる。また、当該ゲーム画像は、ステップS25で設定された1倍の拡大率(基本倍率)で表された画像である(図9参照)。A及びBボタンを共に押下した後にコントローラ7を引いた状態が所定時間に達していたとしても、コントローラ移動量データ338が示す移動量が小さいために、引き絞り閾値よりも引き絞り上限値が低く設定されているような場合は、引き絞り値は引き絞り閾値を超えないため、上記のルートで処理が行われる。
【0168】
次に、ステップS1〜S7、S14〜S23のルートで処理が行われ、ステップS23において、引き絞り値データ343が示す引き絞り値が引き絞り閾値データ344が示す引き絞り閾値以上の場合(ステップS23でYES)について説明する。この場合、処理はステップS28に移る。
【0169】
ステップS28において、CPU10は、引き絞り値・矢速度テーブル345を参照して、最新の引き絞り値データ343が示す引き絞り値に対応する矢の速度を決定する。
【0170】
次に、ステップS29において、CPU10は、ゲーム空間において、プレイヤオブジェクト101に、ステップS28で決定した矢の速度でポインタ102が示す位置に向かって矢150を発射させる。なお、発射される矢の速度が速いほど矢の飛距離が伸びるものとしてもよい。
【0171】
次に、ステップS30において、CPU10は、引き絞り値データ343が示す引き絞り値をリセットする。
【0172】
次に、ステップS31において、CPU10は、拡大率データ340が示す拡大率を1倍(基本倍率)にする。その後、既に説明したステップS27、S11〜S13の処理が行われる。
【0173】
以上に説明した1フレームの期間では、ステップS1〜S7、S14〜S23、S28〜S31、S27、S11〜S13のルートで処理が行われた。つまり、プレイヤは、今回の1フレームの期間において、コントローラ7の前面をテレビ2に向けてA及びBボタンを共に押下してコントローラ7を引いた状態が所定時間(例えば、引き絞り値が3秒に対応する値となる時間)に達した後に、A及びBボタンの少なくとも一方を離した。このことから、今回のステップS13で生成されるゲーム画像は、ステップS29の処理(ゲーム空間においてプレイヤオブジェクト101にステップS28で決定した矢の速度で矢150を発射させる処理)を反映させたゲーム画像となる。また、当該ゲーム画像は、ステップS31で設定された1倍の拡大率(基本倍率)で表された画像である(図15参照)。
【0174】
次に、図17のステップS14において、距離Bが距離Aより大きくない場合(ステップS14でNO)について説明する。この場合、コントローラ7は、テレビ2に近づいた、又は、テレビ2に対して一定の距離を保っている。この場合、処理はステップS32に移る。
【0175】
ステップS32において、CPU10は、距離A(押下開始時距離データ337が示す値)を、距離B(ステップS5で算出された最新のコントローラ距離データ335が示す値)に置き換える。このことによって、プレイヤがA及びBボタンを押下したままでコントローラ7をテレビ2に近づけた場合、次回以後のフレーム期間におけるステップS15の処理において、コントローラ7がその近づいた位置からテレビ2に向かって後ろに移動した距離を算出できる。つまり、コントローラ7の移動量を算出する基準となる位置を補正できる。この結果として、操作性が向上する。その後、既に説明したステップS11〜S13の処理が行われる。この場合、ステップS13で生成されるゲーム画像は、プレイヤオブジェクト101が弓を構えてはいるが弦を引いていない状態であって、画像の拡大率が1倍(基本倍率)の画像となる。
【0176】
次に、ステップS3において、マーカ8Lまたは8Rのうち少なくとも一方が検出されなかった場合(ステップS3でNO)について説明する。この場合、処理はステップS11に移り、既に説明したステップS11〜S13の処理が行われる。つまり、コントローラ7の前面がテレビ2の方向に向いていない場合である。この場合、ステップS13で生成されるゲーム画像は、弓撃操作の内容に関しては1つ前のフレームと同じものとなる。
【0177】
次に、ステップS6において、A及びBボタンが共に押下された状態ではないと判定された場合(ステップS6でNO)について説明する。この場合、処理は既に説明したステップS24に移り、ステップS24〜S27、S11〜S13のルートで処理が行われる。この場合、今回のステップS13で生成されるゲーム画像は、ステップS26の処理(ゲーム空間においてプレイヤオブジェクト101を弓矢を構えていない通常状態に戻す処理)を反映させたゲーム画像となる。また、当該ゲーム画像は、ステップS25で設定された1倍の拡大率(基本倍率)で表された画像である(図9参照)。
【0178】
以上に説明したように、本発明の第1の実施形態では、プレイヤがA及びBボタンを押下してコントローラ7を引いた距離に応じてプレイヤオブジェクト101が弓の弦を引き、更に、この引いた距離に応じてゲーム画像が拡大(ズーム)される。そして、その後、プレイヤがA及びBボタンの少なくとも一方を離すと、プレイヤオブジェクト101が矢を発射すると同時に拡大されていたゲーム画像が元の倍率(基本倍率)に戻る。このことから、本発明によれば、プレイヤは、A及びBボタンの少なくとも一方を離すという簡易な操作を行うだけで、プレイヤオブジェクト101に矢を発射させると同時に拡大されていたゲーム画像を元の倍率に戻すことができる。
【0179】
また、以上に説明したコントローラ7の操作は、実際に弓矢を用いて矢を射る動作と類似している。具体的には、コントローラ7のA及びBボタンを押下する操作は、実際の弓の弦に実際の矢を番える動作に類似する。また、A及びBボタンを押下したコントローラ7を引く操作は、実際の弓の弦に番えた矢を引く動作に類似する。また、コントローラ7の指し示す方向を調整して狙いを定める操作は、実際の弓矢で狙いを定める動作に類似する。また、押下したA及びBボタンの少なくとも一方を離す操作は、実際の矢を放つ動作に類似している。このように、以上に説明した弓撃操作は実際の矢を射る動作に類似している。これに加えて、本発明では、上記したように、プレイヤが弓撃操作を行うことに連動して、ゲーム画像の拡大縮小が自動的に行われる。この結果として、プレイヤは、煩雑な操作を行うことなく高い臨場感を持ってゲームをプレイでき、ゲーム性を向上することができる。
【0180】
(第2の実施形態)
第2の実施形態に係る処理は、第1の実施形態で説明した特徴に加えて、発射された矢がマーキングされた敵を自動追跡(lock−on)する点等に特に特徴を有する。具体的には、第2の実施形態に係る情報処理装置は、第1の実施形態に係る情報処理装置に対して、外部メインメモリ12に記憶されるデータの一部が異なり、また、図18のフローチャートに従った処理の換わりに、後に説明する図24のフローチャートに従った処理を行う点で異なる。このことから、以下では、第1の実施形態の内容と重複する内容は、原則として省略する。
【0181】
まず、図21及び図22を参照して、第2の実施形態に特有の特徴について簡単に説明する。図21に示すように、プレイヤは、プレイヤオブジェクト101が弓の弦を引いた状態でポインタ102を移動させることによって、拡大されたゲーム画像を見ながら敵オブジェクト103の部位をマーキングする。このマーキングは、敵オブジェクト103の部位をポインタ102がポイントしたことを検出することで実施される。また、このマーキングは、一旦設定されると、敵オブジェクト103の動きに追随して移動する。図21では、敵オブジェクト103の部位である頭、胸、右足及びハンマがマーキングされている。なお、マーキングは、一例として、四角形状の枠で表示されている。図21及び図22から解るように、例えばハンマに設定されたマーキングは、敵オブジェクト103のハンマの動きに追随して移動する。更に、このマーキングは、所定数量(例えば4つ)まで維持できる。具体的には、所定数量を超えて新たにマーキングが行われると、最も以前に行われたマーキングが解除される。図22では、所定数量4つを超えて新たに左腕がマーキングされたので、最も以前に設定された右足のマーキングが解除されている。なお、図21及び図22では、敵オブジェクト103が大型タイプであるので、1つの敵オブジェクト103の各部位にマーキングできる設定となっている。しかし、図12のように、敵オブジェクト103が小型タイプである場合には、敵オブジェクト103毎に1つのみマーキングできる設定としてもよい。以下では、図21及び図22を用いて、大型タイプの敵オブジェクト103の各部位がマーキングされる場合であって、維持できるマーキングの所定数量が4つの場合を例に挙げて説明する。
【0182】
次に、第2の実施形態において、ゲーム処理の際に外部メインメモリ12に記憶されるデータについて説明する。図23は、第2の実施形態におけるゲーム装置本体3の外部メインメモリ12のメモリマップを示す図である。図23のメモリマップは、第1の実施形態で説明した図16のメモリマップに対して、引き絞り値・拡大率テーブル339、引き絞り値・弓引き量テーブル341、引き絞り値データ343、引き絞り閾値データ344、引き絞り値・矢速度テーブル345、移動量・引き絞り上限値テーブル346、引き絞り上限値データ347を、移動量・拡大率テーブル3391、移動量・弓引き量テーブル3411、移動量閾値データ342、マーキングカウンタ3461及びマーキングオブジェクトデータ3471に置き換えたものである。
【0183】
移動量・拡大率テーブル3391は、コントローラ移動量データ338が示す移動量とゲーム画像の拡大率とを対応付けたテーブルであり、コントローラ移動量データ338が示す移動量の増加に伴ってゲーム画像の拡大率が増加する関係を示すテーブルである。また、移動量・拡大率テーブル3391において、コントローラ移動量データ338が示す移動量が0であるときの拡大率は、ゲーム画像の倍率のベースとなる1倍(基本倍率)である。なお、移動量・拡大率テーブル3391は、比例関係等を示す数式に置き換えられてもよい。
【0184】
移動量・弓引き量テーブル3411は、コントローラ移動量データ338が示す移動量とゲーム空間で弓が引かれる量(長さ)とを対応付けたテーブルであり、コントローラ移動量データ338が示す移動量の増加に伴って弓が引かれる量が増加するテーブルである。なお、移動量・弓引き量テーブル3411は、比例関係等を示す数式に置き換えられてもよい。
【0185】
移動量閾値データ342は、コントローラ移動量データ338が示す移動量に対して用いられる予め定められた閾値を示すデータであり、例えば、20cmを示すデータである。
【0186】
マーキングカウンタ3461は、マーキングの数量を示すカウンタである。
【0187】
マーキングオブジェクトデータ3471は、マーキングされたオブジェクト又はオブジェクトの部位、及び、それらがマーキングされた時刻(又は順序)を示すデータである。
【0188】
次に、図17、図23及び図24を参照して、ゲーム装置本体3によって実行される第2の実施形態に係るゲーム処理について説明する。以下の説明では、第1の実施形態の説明と同様に、典型的な処理の流れを、1フレーム単位で説明する。
【0189】
まず、図17のステップS1〜S7、S14、S15のルートで処理が行われた後に、図24のステップS60の処理が行われる場合について説明する。
【0190】
ステップS60において、CPU10は、移動量・拡大率テーブル3391を参照して、ステップS15で算出した最新のコントローラ移動量データ338が示す最新の移動量に対応するゲーム画像の拡大率を求め、求めた拡大率で拡大率データ340を更新する。ここで、既に説明したように、移動量・拡大率テーブル3391は、コントローラ移動量データ338が示す移動量の増加に伴ってゲーム画像の拡大率が増加する関係を示すテーブルである。
【0191】
次に、ステップS61において、CPU10は、移動量・弓引き量テーブル3411を参照して、ステップS15で算出した最新のコントローラ移動量データ338が示す最新の移動量に対応するゲーム空間で弓が引かれる量(距離)を求め、求めた量でゲーム空間においてプレイヤオブジェクト101に弓を引かせる(図13参照)。ここで、既に説明したように、移動量・弓引き量テーブル3411は、コントローラ移動量データ338が示す移動量の増加に伴って弓が引かれる量が増加するテーブルである。
【0192】
次に、ステップS62において、CPU10は、ポインティング座標(ポインタ102の位置)が敵オブジェクト103の特定の部位をポイントしたか否かを判定する。ここで、特定の部位とは、頭、胸、右腕、左腕、右足、左足、武器等である。ポインティング座標が敵オブジェクト103の特定の部位をポイントした場合(ステップS62でYES)、処理はステップS63に移る。一方、ポインティング座標が敵オブジェクト103の特定の部位をポイントしていない場合(ステップS62でNO)、処理はステップS67に移る。
【0193】
ステップS67において、CPU10は、操作データ333を参照することによって、押下されていたA及びBボタンの少なくとも一方が離された(解除された)か否かを判定する。A及びBボタンの少なくとも一方が離されたと判定された場合(ステップS67でYES)、処理はステップS68に移る。一方、A及びBボタンが共に押下されたままであると判定された場合(ステップS67でNO)、処理はステップS75に移る。
【0194】
ステップS75において、CPU10は、ゲーム空間において飛んでいる矢が存在する場合には、当該矢をゲーム空間において移動させて当該矢の位置を更新する。なお、飛んでいる矢の移動の態様については、後に詳しく説明する。
【0195】
次に、ステップS76において、CPU10は、ゲーム空間において発射されて飛んでいる矢が存在する場合には、当該矢が敵に命中したか否かを判定し、命中した場合には、ゲーム空間において例えば敵にダメージを与える。
【0196】
次に、ステップS77において、CPU10は、外部メインメモリ12の拡大率データ340の値、ゲーム空間の各オブジェクトの状態及び位置関係等に基づいたグラフィクスコマンド(作画命令)を、GPU11bに通知する。そして、GPU11bは当該通知に従ってゲーム画像の描画処理を行い、テレビ2は当該ゲーム画像を表示する。その後、処理は図17のステップS1に戻る。
【0197】
以上に説明した1フレームの期間では、ステップS1〜S7、S14、S15、S60〜S62、S67、S75〜S77のルートで処理が行われた。つまり、プレイヤは、今回の1フレームの期間において、コントローラ7の前面をテレビ2に向けてA,Bボタンを共に押下してコントローラ7を引く動作を行った。このことから、今回のステップS77で生成されるゲーム画像は、ステップS61の処理(ゲーム空間においてプレイヤオブジェクト101に弓を引かせた処理)を反映させたゲーム画像となる。また、当該ゲーム画像は、図13と同様に、ステップS60で求められた最新の拡大率(拡大率データ340が示す最新の拡大率)で拡大(ズーム)された画像である。
【0198】
次に、ステップS62において、ポインティング座標が敵オブジェクト103の部位をポイントした場合(ステップS62でYES)について説明する。この場合、処理はステップS63に移る。
【0199】
ステップS63において、CPU10は、マーキングカウンタ3461を参照して、カウント数が所定数量である4つか否かを判定する。つまり、CPU10は、既にマーキングされている数量が上限数量である4つに達しているか否かを判定する。カウント数が4つの場合は(ステップS63でYES)、処理はステップS65に移る。一方、カウント数が上限の4つではない場合は(ステップS63でNO)、処理はステップS64に移る。
【0200】
ステップS65において、CPU10は、マーキングオブジェクトデータ3471を参照して、最も以前に設定されたマーキングの設定を解除し、マーキングオブジェクトデータ3471を更新する。これによって、マーキングされている数量は3つとなる。その後、処理はステップS66に移る。
【0201】
一方、ステップS64において、CPU10は、マーキングカウンタ3461の値をインクリメントする。その後、処理はステップS66に移る。
【0202】
ステップS66において、CPU10は、ゲーム空間においてステップS62でポイントされた敵オブジェクト103の部位にマーキングを設定し、その内容をマーキングオブジェクトデータ3471に反映する。
【0203】
その後、ステップS67でNOと判定されて、ステップS75〜S77の処理が行われた場合、今回の1フレームの期間では、ステップS1〜S7、S14、S15、S60〜S63、S64(又はS65)、S66、S67、S75〜S77のルートで処理が行われたこととなる。この場合、ステップS77で生成されるゲーム画像は、ステップS66の処理(ゲーム空間においてポイントされた敵オブジェクト103の部位にマーキングを設定する処理)を反映させたゲーム画像となる(図21及び図22参照)。また、当該ゲーム画像は、ステップS60で求められた最新の拡大率(拡大率データ340が示す最新の拡大率)で拡大(ズーム)された画像である。
【0204】
次に、ステップS67において、A及びBボタンの少なくとも一方が離されたと判定された場合(ステップS67でYES)について説明する。この場合、処理はステップS68に移る。
【0205】
ステップS68において、CPU10は、ステップS15で算出した最新のコントローラ移動量データ338が示す移動量が、予め定められた移動量閾値データ342が示す移動量閾値以上か否かを判定する。ステップS15で算出した最新のコントローラ移動量データ338が示す移動量が、予め定められた移動量閾値データ342が示す移動量閾値以上ではない場合(ステップS68でNO)、処理はステップS78に移る。一方、ステップS15で算出した最新のコントローラ移動量データ338が示す移動量が、予め定められた移動量閾値データ342が示す移動量閾値以上の場合(ステップS68でYES)、処理はステップS69に移る。
【0206】
ステップS69において、CPU10は、マーキングカウンタ3461を参照して、マーキングが1つ以上設定されているか否かを判定する。マーキングが1つ以上設定されている場合(ステップS69でYES)、処理はステップS70に移る。一方、マーキングが1つも設定されていない場合(ステップS69でNO)、処理はステップS71に移る。
【0207】
ステップS71において、CPU10は、ゲーム空間において、プレイヤオブジェクト101にポインタ102が示すゲーム空間内の位置に向けて矢を発射させる。つまり、マーキングが設定されていない場合、矢はポインタ102が示すゲーム空間内の位置に向けて発射される。この場合の矢は、発射時点のポインタ102が示すゲーム空間内の位置に向けて、直進(又は放物線を描いて)移動する。以下では、このポインタ102が示すゲーム空間内の位置に向けて発射される矢を、通常矢と呼ぶ。その後、処理はステップS72に移る。
【0208】
一方、ステップS70において、CPU10は、ゲーム空間において、プレイヤオブジェクト101に設定されたマーキングが示すゲーム空間内の位置に向けて矢を発射させる。つまり、マーキングが設定されている場合、矢はマーキングが示すゲーム空間内の位置に向けて発射される。この場合の矢は、マーキングが示すゲーム空間内の位置に向いて移動し、敵オブジェクトの動きに追随してマーキングが移動した場合であってもマーキングが示すゲーム空間内の位置に向いて移動する。以下では、このマーキングが示すゲーム空間内の位置に向けて発射される矢を、追尾矢と呼ぶ。つまり、追尾矢は、敵オブジェクトのマーキングが設定された部位に向かうように方向を変えながら飛ぶ。この際、複数のマーキングが設定されている場合には、複数の矢が各マーキングが示すゲーム空間内の各位置に向けて同時に発射される。その後、処理はステップS72に移る。
【0209】
ステップS72において、CPU10は、マーキングカウンタ3461の値をリセットする。
【0210】
次に、ステップS73において、CPU10は、拡大率データ340が示す拡大率を1倍(基本倍率)にする。
【0211】
次に、ステップS74において、CPU10は、A,Bボタン押下フラグ336をオフにする。
【0212】
次に、ステップS75において、CPU10は、ゲーム空間において飛んでいる矢が存在する場合には、当該矢をゲーム空間において移動させて当該矢の位置を更新する。この際、既に説明したように、通常矢は、発射時点のポインタ102が示すゲーム空間内の位置に向けて、直進(又は放物線を描いて)移動する。一方、既に説明したように、追尾矢は、マーキングが示すゲーム空間内の位置に向いて移動し、敵オブジェクトの動きに追随してマーキングが移動した場合であってもマーキングが示すゲーム空間内の位置に向いて移動する。
【0213】
次に、ステップS76において、既に説明したように、矢の命中判定処理が行われる。この際、追尾矢が敵に命中した場合、CPU10は、マーキングオブジェクトデータ3471において、命中した追尾矢に対応するデータを削除する。その後、ステップ77の処理が行われる。
【0214】
以上に説明した1フレームの期間では、ステップS67〜S69、S70(又はS71)、S72〜S77のルートで処理が行われた。このことから、マーキングが1つ以上設定されている場合(ステップS69でYES)には、今回のステップS77で生成されるゲーム画像は、ステップS70の処理(ゲーム空間においてプレイヤオブジェクト101にマーキングが示すゲーム空間内の位置に向けて追尾矢を発射させる処理)を反映させたゲーム画像となる。一方、マーキングが設定されていない場合(ステップS69でNO)には、今回のステップS77で生成されるゲーム画像は、ステップS71の処理(ゲーム空間においてプレイヤオブジェクト101に発射時点のポインタ102の位置が示すゲーム空間内の位置に向けて通常矢を発射させる処理)を反映させたゲーム画像となる。また、上記のゲーム画像は、いずれの場合も、図15と同様に、ステップS73で設定された1倍の拡大率(基本倍率)で表された画像である。
【0215】
次に、ステップS68において、ステップS15で算出した最新のコントローラ移動量データ338が示す移動量が、予め定められた移動量閾値データ342が示す移動量閾値以上ではない場合(ステップS68でNO)について説明する。この場合、処理はステップS78に移る。
【0216】
ステップS78において、CPU10は、マーキングカウンタ3461の値をリセットする。
【0217】
次に、ステップS79において、CPU10は、拡大率データ340が示す拡大率を1倍(基本倍率)にする。
【0218】
次に、ステップS80において、CPU10は、ゲーム空間においてプレイヤオブジェクト101を、弓矢を構えていない通常状態に戻す。その後、ステップS74〜S77の処理が行われる。
【0219】
以上に説明した1フレームの期間では、ステップS67、S68、S78〜S80、S74〜S77のルートで処理が行われた。このことから、今回のステップS77で生成されるゲーム画像は、ステップS80の処理(ゲーム空間においてプレイヤオブジェクト101を、弓矢を構えていない通常状態に戻す処理)を反映させたゲーム画像となる。また、上記のゲーム画像は、ステップS79で設定された1倍の拡大率(基本倍率)で表された画像である(図9参照)。
【0220】
次に、図17のステップS6において、A及びBボタンが共に押下された状態ではないと判定された場合(ステップS6でNO)について説明する。この場合、処理は既に説明したステップS78に移り、ステップS78〜S80、S74〜S77のルートで処理が行われる。この場合、ステップS77で生成されるゲーム画像は、ステップS80の処理(ゲーム空間においてプレイヤオブジェクト101を、弓矢を構えていない通常状態にする処理)を反映させたゲーム画像となる。また、当該ゲーム画像は、ステップS79で設定された1倍の拡大率(基本倍率)で表された画像である(図9参照)。
【0221】
次に、図17のステップS3において、マーカ8Lまたは8Rのうち少なくとも一方が検出されなかった場合(ステップS3でNO)について説明する。この場合、処理はステップS75に移り、既に説明したステップS75〜S77の処理が行われる。そして、ステップS77で生成されるゲーム画像は、弓撃操作の内容に関して前回のフレームと同じとなる。
【0222】
次に、図17のステップS32の処理が行われた場合について説明する。この場合、既に説明したステップS75〜S77の処理が行われる。そして、ステップS77で生成されるゲーム画像は、プレイヤオブジェクト101が弓を構えてはいるが弦を引いていない状態であって、画像の拡大率が1倍(基本倍率)の画像となる。
【0223】
なお、以上に説明した第2の実施形態の処理に対して、第1の実施形態で説明した「引き絞り値」に関連する処理を付加又は置換してもよい。例えば、第2の実施形態の処理に、引き絞り値が引き絞り閾値以上となるまで弓を引いた後でなければ矢が発射されない処理(図18のステップS23等参照)を加えてもよいし、また、引き絞り値に応じた速度で矢が発射される処理(図18のステップS28及びS29参照)を加えてもよい。
【0224】
また、以上に説明した第2の実施形態の処理において、発射される矢の速度をコントローラ7の移動量に応じて変更(決定)してもよい。具体的には、図24のステップS68の処理とステップS69の処理との間に、図17のステップS15で算出された最新のコントローラ移動量データ338が示す移動量に対応した矢の速度を決定する処理を追加し、ステップS71(又はステップS70)において、決定した速度で通常矢(又は追尾矢)を発射してもよい。この場合、図23のデータ記憶領域332には、上記処理を実現するために、コントローラ移動量データ338が示す移動量と矢の速度とを対応付けたテーブルであり、コントローラ移動量データ338が示す移動量の増加に伴って矢の速度が増加する関係を示すテーブルである移動量・矢速度テーブルが更に格納される。なお、移動量・矢速度テーブルは、比例関係等を示す数式に置き換えられてもよい。このことによって、ゲーム空間において、弓が引かれた距離に応じて矢の発射速度を変更することができる。
【0225】
以上に説明したように、本発明の第2の実施形態では、第1の実施形態と同様に、プレイヤが実際の弓で矢を射る動作と類似した弓撃操作を行うことに連動して、ゲーム画像の拡大縮小が自動的に行われる。この結果として、本発明の第2の実施形態では、第1の実施形態と同様に、プレイヤは、煩雑な操作を行うことなく高い臨場感を持ってゲームをプレイできる。
【0226】
また、本発明の第2の実施形態では、プレイヤは、プレイヤオブジェクト101が弓矢を構えた状態でポインタ102を移動させることによって敵オブジェクト103の所定数の部位(又は所定数の敵オブジェクト)等をマーキングできる。そして、プレイヤは、マーキングした数量の追尾矢をプレイヤオブジェクト101に同時に発射させて、同時に敵オブジェクトを攻撃できる。
【0227】
(第3の実施形態)
第3の実施形態に係る処理は、第1の実施形態で説明した特徴に加えて、プレイヤオブジェクト101が弓を傾けて複数の矢を同時に放射状に発射できる点等に特に特徴を有する。具体的には、第3の実施形態に係る情報処理装置は、第1の実施形態に係る情報処理装置に対して、外部メインメモリ12に記憶されるデータの一部が異なり、また、図18のフローチャートに従った処理の換わりに、後に説明する図29のフローチャートに従った処理を行う点で異なる。このことから、以下では、第1の実施形態の内容と重複する内容は、原則として省略する。
【0228】
まず、図25〜図27を参照して、第3の実施形態の特有の特徴について簡単に説明する。図25に示すように、プレイヤは、プレイヤオブジェクト101が弓矢を構えた状態で、拡張コントローラ36をY軸周り(図10の矢印方向)に回転させることによって、弓を傾けることができる。そして、図26及び図27に示すように、プレイヤは、プレイヤオブジェクト101に複数の矢150を同時に発射させることができる。この際、複数の矢150は、弓の傾きに基づいた方向に発射され、直進(又は放物線を描いて)するように飛ぶ。具体的には、図27に示すように、ポインタ102上を通り矢発射時の弓と平行である直線h(描画されない直線)が示すゲーム空間内の位置に向けて、複数の矢が放射状に発射される。なお、図26では、矢発射時の視覚効果によって、発射された矢が見えなくなっている。
【0229】
次に、第3の実施形態において、ゲーム処理の際に外部メインメモリ12に記憶されるデータについて説明する。図28は、第3の実施形態におけるゲーム装置本体3の外部メインメモリ12のメモリマップを示す図である。図28のメモリマップは、第1の実施形態で説明した図16のメモリマップに対して、引き絞り値・拡大率テーブル339、引き絞り値・弓引き量テーブル341、引き絞り値データ343、引き絞り閾値データ344、引き絞り値・矢速度テーブル345、移動量・引き絞り上限値テーブル346、及び引き絞り上限値データ347を、移動量・拡大率テーブル3391、移動量・弓引き量テーブル3411、及び移動量閾値データ342に置き換えたものである。移動量・拡大率テーブル3391、移動量・矢引き量テーブル3411、及び移動量閾値データ342については、第2の実施形態で述べたため、説明は省略する。
【0230】
次に、図10、図25〜図30を参照して、ゲーム装置本体3によって実行される第3の実施形態に係るゲーム処理について説明する。以下の説明では、第1の実施形態の説明と同様に、典型的な処理の流れを、1フレーム単位で説明する。
【0231】
まず、図17のステップS1〜S7、S14、S15のルートで処理が行われた後に、図29のステップS60の処理が行われる場合について説明する。
【0232】
ステップS60において、CPU10は、移動量・拡大率テーブル3391を参照して、ステップS15で算出した最新のコントローラ移動量データ338が示す最新の移動量に対応するゲーム画像の拡大率を求め、求めた拡大率で拡大率データ340を更新する。
【0233】
次に、ステップS61において、CPU10は、移動量・弓引き量テーブル3411を参照して、ステップS15で算出した最新のコントローラ移動量データ338が示す最新の移動量に対応するゲーム空間で弓が引かれる量(距離)を求め、求めた量でゲーム空間においてプレイヤオブジェクト101に弓を引かせる。なお、図29のステップS60及びS61の処理は、図24のステップS60及びS61の処理とそれぞれ同じである。
【0234】
次に、ステップS90において、CPU10は、操作データ333を参照して、拡張コントローラ36の加速度センサが検出した加速度データを取得する。
【0235】
次に、ステップS91において、CPU10は、ステップS90で取得した加速度データに基づいて、拡張コントローラ36のY軸回りの回転角度θを算出する(図10の矢印参照)。以下では一例として、この回転角度θは0°〜360°の値をとり、拡張コントローラ36のZ軸正方向が鉛直上向きである場合を0°とし、Y軸周りに矢印で示す回転をすると値が増加するものとして説明する(図10参照)。
【0236】
次に、ステップS92において、CPU10は、ゲーム空間において、プレイヤオブジェクト101が構えた弓を、ステップS91で算出された回転角度θで傾斜させる。具体的には、ステップS91で算出した回転角度θが0°の場合弓は垂直に立てられ、当該回転角度θが60°の場合は図25のように弓は60°傾けられ、当該回転角度θが90°の場合弓は90°傾けられる(つまり、水平にされる)。なお、弓の傾けられる角度は0°〜90°の範囲に拘束されてもよい。この場合、例えば、ステップS91で算出された回転角度θが90°<θ≦180°の場合は弓を90°傾斜させ、当該回転角度θが180°<θ<360°の場合は弓を垂直に立てればよい。
【0237】
次に、ステップS93において、CPU10は、操作データ333を参照することによって、押下されていたA及びBボタンの少なくとも一方が離された(解除された)か否かを判定する。A及びBボタンが共に押下されたままであると判定された場合(ステップS93でNO)、処理はステップS100に移る。一方、A及びBボタンの少なくとも一方が離されたと判定された場合(ステップS93でYES)、処理はステップS94に移る。
【0238】
ステップS94において、CPU10は、ステップS15で算出した最新のコントローラ移動量データ338が示す移動量が、予め定められた移動量閾値データ342が示す移動量閾値以上か否かを判定する。ステップS15で算出した最新のコントローラ移動量データ338が示す移動量が、予め定められた移動量閾値データ342が示す移動量閾値以上ではない場合(ステップS94でNO)、処理はステップS103に移る。一方、ステップS15で算出した最新のコントローラ移動量データ338が示す移動量が、予め定められた移動量閾値データ342が示す移動量閾値以上の場合(ステップS94でYES)、処理はステップS95に移る。
【0239】
図30は、ステップS95〜S97における矢の発射処理について説明するための図である。図30(a)は、ゲーム空間において、プレイヤオブジェクト101の背後から視た弓の一例を示す模式図であり、図25に対応している。図30(b)は、図30(a)に示した弓を矢印の方向から視た模式図である。図30(a)及び(b)において、弓の弦は、プレイヤオブジェクト101の手によって引かれた状態である。以下では、図30を用いて、ステップS95〜S97における矢の発射処理について説明する。
【0240】
ステップS95において、CPU10は、ステップS92で傾斜させた弓の傾斜角度θ(回転角度θ)に基づいて、ゲーム空間において直線を設定する。具体的には、CPU10は、図30(a)及び(b)に示すように、ゲーム空間において、弓と弦とを含む平面上に存在し、弓の中央に接する直線Wを設定する。なお、この直線Wはゲーム画像には描画されない。
【0241】
次に、ステップS96において、CPU10は、図30(a)及び(b)に示すように、ステップS95で設定した直線W上に複数の発射ポイントDを設定する。
【0242】
次に、ステップS97において、CPU10は、ゲーム空間において、図30(b)に示すように、弦を引いたプレイヤオブジェクト101の手の位置Oから、各発射ポイントDに向かう各方向(各矢印の方向)に向けて、それぞれ矢を発射させる。
【0243】
次に、ステップS98において、CPU10は、拡大率データ340が示す拡大率を1倍(基本倍率)にする。
【0244】
次に、ステップS99において、CPU10は、A,Bボタン押下フラグ336をオフにする。
【0245】
次に、ステップS100において、CPU10は、ゲーム空間において飛んでいる矢が存在する場合には、当該矢をゲーム空間において移動させて当該矢の位置を更新する。
【0246】
次に、ステップS101において、CPU10は、ゲーム空間において飛んでいる矢が存在する場合には、当該矢が敵に命中したか否かを判定し、命中した場合には、ゲーム空間において例えば敵にダメージを与える。
【0247】
次に、ステップS102において、CPU10は、外部メインメモリ12の拡大率データ340の値、ゲーム空間の各オブジェクトの状態及び位置関係等に基づいたグラフィクスコマンド(作画命令)を、GPU11bに通知する。そして、GPU11bは当該通知に従ってゲーム画像の描画処理を行い、テレビ2は当該ゲーム画像を表示する。その後、処理はステップS1に戻る。
【0248】
以上に説明した1フレームの期間では、ステップS60、S61、S90〜S102のルートの処理が行われた。このことから、今回のステップS102で生成されたゲーム画像は、ステップS97の処理(ゲーム空間においてプレイヤオブジェクト101に傾斜した弓で複数の矢を放射状に発射させた処理)を反映させ、また、画像の拡大率は1倍(基本倍率)であるゲーム画像となる(図26参照)。
【0249】
次に、ステップS94において、ステップS15で算出した最新のコントローラ移動量データ338が示す移動量が、予め定められた移動量閾値データ342が示す移動量閾値以上ではない場合(ステップS94でNO)について説明する。この場合、処理はステップS103に移る。
【0250】
ステップS103において、CPU10は、拡大率データ340が示す拡大率を1倍(基本倍率)にする。
【0251】
次に、ステップS104において、CPU10は、ゲーム空間においてプレイヤオブジェクト101が弓矢を構えていない通常状態に戻す。その後、ステップS99〜S102の処理が行われる。
【0252】
以上に説明した1フレームの期間では、ステップS60、S61、S90〜S94、S103、S104、S99〜S102のルートの処理が行われた。このことから、今回のステップS102で生成されたゲーム画像は、ステップS104の処理(ゲーム空間において、プレイヤオブジェクト101を、弓矢を構えていない通常状態にする処理)を反映させ、また、当該ゲーム画像は、ステップS103で設定された1倍の拡大率(基本倍率)で表された画像である(図9参照)。
【0253】
次に、ステップS93において、A及びBボタンが共に押下されたままであると判定された場合(ステップS93でNO)について説明する。この場合、処理はステップS100に移る。そして、この場合、ステップS102で生成されたゲーム画像は、ステップS92の処理(ゲーム空間において、プレイヤオブジェクト101が構えた弓を回転角度θ傾斜させる処理)を反映させた画像となる。また、ゲーム画像の拡大率は、ステップS60で算出された拡大率となる(図25参照)。
【0254】
次に、図17のステップS6において、A及びBボタンが共に押下された状態ではないと判定された場合(ステップS6でNO)について説明する。この場合、処理はステップS103に移り、ステップS103、S104、S99〜S102のルートで処理が行われる。この場合、ステップS102で生成されるゲーム画像は、ステップS104の処理(ゲーム空間においてプレイヤオブジェクト101が弓矢を構えていない通常状態にする処理)を反映させたゲーム画像となる。また、当該ゲーム画像は、ステップS103で設定された1倍の拡大率(基本倍率)で表された画像である(図9参照)。
【0255】
次に、図17のステップS3において、マーカ8Lまたは8Rのうち少なくとも一方が検出されなかった場合(ステップS3でNO)について説明する。この場合、処理はステップS100に移り、ステップS100〜S102の処理が行われる。そして、ステップS102で生成されるゲーム画像は、弓撃操作の内容に関して前回のフレームと同じ内容となる。
【0256】
次に、図17のステップS32の処理が行われた場合について説明する。この場合、ステップS100〜S102の処理が行われる。そして、ステップS102で生成されるゲーム画像は、プレイヤオブジェクト101が弓を構えてはいるが弦を引いていない状態であって、画像の拡大率が1倍(基本倍率)の画像となる。
【0257】
なお、以上に説明した第3の実施形態の処理に対して、第1の実施形態で説明した「引き絞り値」に関連する処理を付加又は置換してもよい。例えば、第3の実施形態の処理に、引き絞り値が引き絞り閾値以上となるまで弓を引いた後でなければ矢が発射されない処理(図18のステップS23等参照)を加えてもよいし、また、引き絞り値に応じた速度で矢が発射される処理(図18のステップS28及びS29参照)を加えてもよい。
【0258】
また、以上に説明した第3の実施形態の処理において、発射される矢の速度をコントローラ7の移動量に応じて変更してもよい。具体的には、図29のステップS94の処理とステップS95の処理との間に、図17のステップS15で算出された最新のコントローラ移動量データ338が示す移動量に対応した矢の速度を決定する処理を追加し、ステップS97において、決定した速度で矢を発射してもよい。この場合、図28のデータ記憶領域332には、上記処理を実現するために、コントローラ移動量データ338が示す移動量と矢の速度とを対応付けたテーブルであり、コントローラ移動量データ338が示す移動量の増加に伴って矢の速度が増加する関係を示すテーブルである移動量・矢速度テーブルが更に格納される。なお、移動量・矢速度テーブルは、比例関係等を示す数式に置き換えられてもよい。このことによって、ゲーム空間において、弓が引かれた距離に応じて矢の発射速度を変更することができる。
【0259】
また、以上に説明した第3の実施形態の処理に、1以上のマーキングを行って1以上の追尾矢を同時に発射する第2の実施形態で説明した処理(図24参照)を加えてもよい。
【0260】
以上に説明したように、本発明の第3の実施形態では、第1の実施形態と同様に、プレイヤが実際の弓で矢を射る動作と類似した弓撃操作を行うことに連動して、ゲーム画像の拡大縮小が自動的に行われる。この結果として、本発明の第3の実施形態では、第1の実施形態と同様に、プレイヤは、煩雑な操作を行うことなく高い臨場感を持ってゲームをプレイできる。
【0261】
また、本発明の第3の実施形態では、プレイヤは、左手に把持した拡張コントローラ36を傾ける(回転させる)ことによって、プレイヤオブジェクト101の左手が把持した弓を傾斜させることができる。つまり、プレイヤは、実際の弓を傾斜させる動作と類似する操作を行うことによって、ゲーム空間内で弓を傾斜させることができる。そして、プレイヤは、コントローラ7を操作することによって、プレイヤオブジェクト101に、傾斜させた弓の角度に応じた方向に同時に複数の矢を放射状に発射させて、同時に複数の矢で敵オブジェクトを攻撃できる。
【0262】
なお、以上では、本発明の情報処理装置として据置型のゲーム装置を一例に用いて説明を行った。しかし、本発明の情報処理装置は、例えば、携帯型のゲーム装置、パーソナルコンピュータ、PDA等であってもよい。
【0263】
また、以上の説明では、図19及び図20を用いて説明したように、コントローラ7が撮像した撮像画像を用いてコントローラ7とテレビ2との距離を算出することによって、コントローラ7の移動距離を算出した。しかし、コントローラ7の移動距離は、例えば、コントローラ7が備える加速度センサ701(図7参照)によって検出された加速度データを用いて算出されてもよい。また、コントローラ7の移動距離は、例えば、コントローラ7の外部に設置されたカメラによってコントローラ7を撮像した撮像画像を用いて算出されてもよい。この場合、コントローラ7にマーカ部が設けられる。
【0264】
また、第2及び第3の実施形態では、コントローラ7の移動距離が所定値以上か否かを判定して(図24のステップS68等)矢の発射の可否を決定した。しかし、コントローラ7の移動速度が所定値以上か否かを判定して矢の発射の可否を決定してもよい。
【0265】
また、第1の実施形態では、引き絞り値に応じて矢の速度を上げている(図18のステップS28及びS29参照)。しかし、矢の速度は、引き絞り値に関係なく、常に一定であってもよい。
【0266】
また、第1の実施形態では、引き絞り値が引き絞り閾値以上となった後でなければ、矢が発射されない(図18のステップS23参照)。しかし、引き絞り閾値を設けず、引き絞り値に関わらず矢が発射できるものとしてもよい。
【0267】
また、以上では、コントローラ7を引く操作に応じて、ゲーム空間において弓が引かれ、ゲーム画像が拡大された。しかし、コントローラ7を押し出す操作に応じて、ゲーム空間において弓が引かれ、ゲーム画像の拡大率が縮小されてもよい(ゲーム空間において仮想カメラが後方に引いた画像とされてもよい)。また、コントローラ7を引く操作に応じて、ゲーム空間において弓が引かれ、ゲーム画像の拡大率が縮小されてもよい。また、コントローラ7を押し出す操作に応じて、ゲーム空間において弓が引かれ、ゲーム画像の拡大率が拡大されてもよい。
【0268】
また、第2の実施形態では、敵オブジェクトの動きに追随してマーキングが移動し、当該マーキングが示すゲーム空間内の位置に向かって追尾矢が飛んだ。しかし、例えば、マーキングは敵オブジェクトの動きに追随して移動せず、追尾矢は単に設定時の位置から移動しないマーキングが示すゲーム空間内の位置に向かって飛んでもよい。また、例えば、マーキングは、追尾矢の発射までは敵オブジェクトの動きに追随して移動し、追尾矢の発射後は移動せず、追尾矢は単に移動しないマーキングが示すゲーム空間内の位置に向かって飛んでもよい。
【0269】
また、第2の実施形態では、マーキングは、プレイヤが視認できるようにゲーム画像に描画されることとした(図21及び図22参照)。しかし、マーキングは、ゲーム画像に描画されなくてもよい。
【0270】
また、第3の実施形態では、拡張コントローラ36を傾ける(回転させる)操作をプレイヤが行うことによって、弓を傾斜させた。しかし、コントローラ7を傾ける操作をプレイヤが行うことによって、弓を傾斜させてもよい。この場合、コントローラ7の加速度センサ701が検出する加速度データを用いて、コントローラ7の傾きが算出されることとなる。
【0271】
また、以上に説明した第1〜第3の実施形態で説明した各処理を組み合わせてもよい。
【0272】
また、拡張コントローラ36を傾ける操作を検出する手段として、加速度センサに代えてジャイロセンサを用いてもよい。また、拡張コントローラ36の外部に設置されたカメラによって拡張コントローラ36を撮像した撮像画像を用いて拡張コントローラの傾きを算出してもよい。
【0273】
また、以上では、プレイヤがA及びBボタンの少なくとも一方を離す操作(例えば、図18のステップS22)を行うことによって、プレイヤオブジェクト101が矢を発射した。しかし、プレイヤがA及びBボタンの両方を離す操作を行うことによって、プレイヤオブジェクト101が矢を発射してもよい。
【0274】
また、以上では、いわゆる三人称視点でゲーム画像が描画される場合を例に挙げて説明した。しかし、いわゆる一人称視点でゲーム画像が描画されてもよい。
【0275】
また、以上では、一例として、図1に示すゲームシステム1内において以上に説明した処理の全てが実行されるものとした。しかし、以上に説明した処理は、有線又は無線で接続された複数の装置(又はシステム)によって処理分担されて実行されてもよい。
【符号の説明】
【0276】
1 ゲームシステム
2 テレビ
2a スピーカ
3 ゲーム装置本体
4 光ディスク
7 コントローラ
8 マーカ部
10 CPU
11 システムLSI
11a 入出力プロセッサ
11b GPU
11c DSP
11d VRAM
11e 内部メインメモリ
12 外部メインメモリ
13 ROM/RTC
14 ディスクドライブ
15 AV−IC
16 AVコネクタ
17 フラッシュメモリ
18 無線通信モジュール
19 無線コントローラモジュール
20 拡張コネクタ
21 外部メモリカード用コネクタ
22 アンテナ
23 アンテナ
24 電源ボタン
25 リセットボタン
26 イジェクトボタン
36 拡張コントローラ
71 ハウジング
72 操作部
73 コネクタ
74 撮像情報演算部
75 通信部
700 基板
701 加速度センサ
702 LED
703 水晶振動子
704 バイブレータ
707 サウンドIC
708 アンプ
741 赤外線フィルタ
742 レンズ
743 撮像素子
744 画像処理回路
751 マイコン
752 メモリ
753 無線モジュール
754 アンテナ

【特許請求の範囲】
【請求項1】
少なくとも1つの操作キーを有する第1入力装置を備え、表示画像を生成する情報処理装置のコンピュータに実行させる情報処理プログラムであって、
前記コンピュータを、
前記操作キーの入力状態を判定する入力状態判定手段と、
前記第1入力装置の動き情報を逐次取得する動き情報取得手段と、
前記入力状態判定手段によって前記操作キーが所定の入力状態にあると判定されている期間には、前記動き情報の変化に連動させて前記表示画像を拡大又は縮小させる第1画像処理手段と、
前記入力状態判定手段によって前記所定の入力状態が解除されたと判定された時に、拡大又は縮小されていた前記表示画像を元の倍率に戻すと共に、前記表示画像内における少なくとも1つの第1オブジェクトの動作制御を行う第2画像処理手段として機能させる、情報処理プログラム。
【請求項2】
前記第1入力装置は、所定の撮像対象を撮像する撮像手段を備え、
前記コンピュータを、前記撮像手段によって撮像された撮像画像における前記所定の撮像対象の位置に基づいて、前記第1入力装置が指し示す前記表示画像上の指示座標を逐次特定する座標特定手段として更に機能させ、
前記第2画像処理手段は、前記入力状態判定手段によって前記所定の入力状態が解除されたと判定された時の前記指示座標が示す位置に向けて、前記少なくとも1つの第1オブジェクトを移動制御する、請求項1に記載の情報処理プログラム。
【請求項3】
前記所定の入力状態は、前記操作キーが押下された入力状態である、請求項1に記載の情報処理プログラム。
【請求項4】
前記第1画像処理手段は、更に、少なくとも前記入力状態判定手段によって前記所定の入力状態にあると判定されている期間には、前記表示画像上の指示座標を表示する、請求項2に記載の情報処理プログラム。
【請求項5】
前記コンピュータを、
前記入力状態判定手段によって前記操作キーが継続して所定の入力状態にあると判定されている期間を計測する期間計測手段と、
前記期間が第1閾値以上か否かを判定する第1閾値判定手段として更に機能させ、
前記第2画像処理手段は、前記所定の入力状態が解除されたと判定され、かつ、前記期間が前記第1閾値以上と判定された時に、拡大又は縮小されていた前記表示画像を元の倍率に戻すと共に、前記表示画像内における前記少なくとも1つの第1オブジェクトの動作制御を行う、請求項1に記載の情報処理プログラム。
【請求項6】
前記コンピュータを、前記入力状態判定手段によって前記操作キーが継続して所定の入力状態にあると判定されている期間を計測する期間計測手段として更に機能させ、
前記第1画像処理手段は、前記期間に応じた比率で前記表示画像を拡大又は縮小させる、請求項1に記載の情報処理プログラム。
【請求項7】
前記コンピュータを、前記入力状態判定手段によって前記所定の入力状態になったと判定された時からの前記第1入力装置の動きのうち少なくとも所定方向の移動量を、前記動き情報に基づいて算出する移動量算出手段として更に機能させ、
前記期間計測手段によって計測される前記期間は上限値を有し、
前記上限値は、前記移動量が大きくなるほど大きな値になるように決定され、
前記期間が前記上限値を超えたとき、前記期間は前記上限値に設定される、請求項6に記載の情報処理プログラム。
【請求項8】
前記移動量が減少し、減少した当該移動量に対応する前記上限値を前記期間が超えたとき、当該期間は、減少した当該移動量に対応する前記上限値に設定される、請求項7に記載の情報処理プログラム。
【請求項9】
前記コンピュータを、
前記入力状態判定手段によって前記所定の入力状態になったと判定された時からの前記第1入力装置の動きのうち少なくとも所定方向の移動量を、前記動き情報に基づいて算出する移動量算出手段と、
前記移動量が第2閾値以上か否かを判定する第2閾値判定手段として更に機能させ、
前記第2画像処理手段は、前記所定の入力状態が解除されたと判定され、かつ、前記移動量が前記第2閾値以上と判定された時に、拡大又は縮小されていた前記表示画像を元の倍率に戻すと共に、前記表示画像内における前記少なくとも1つの第1オブジェクトの動作制御を行う、請求項1に記載の情報処理プログラム。
【請求項10】
前記コンピュータを、前記入力状態判定手段によって前記所定の入力状態になったと判定された時からの前記第1入力装置の動きのうち少なくとも所定方向の移動量を、前記動き情報に基づいて算出する移動量算出手段として更に機能させ、
前記第1画像処理手段は、前記移動量に応じた比率で前記表示画像を拡大又は縮小させる、請求項1に記載の情報処理プログラム。
【請求項11】
前記第1入力装置は、少なくとも1つの所定の撮像対象を撮像する撮像手段を更に備え、
前記動き情報取得手段は、前記撮像手段によって撮像された撮像画像における前記所定の撮像対象の大きさ又は前記所定の撮像対象間の間隔を表す動き情報を逐次取得する、請求項1に記載の情報処理プログラム。
【請求項12】
前記コンピュータを、
前記入力状態判定手段によって前記所定の入力状態になったと判定された時からの前記第1入力装置の動きのうち少なくとも所定方向の移動量を、前記動き情報に基づいて算出する移動量算出手段と、
前記移動量に基づいて前記少なくとも1つの第1オブジェクトの移動速度を決定する第1移動速度決定手段として更に機能させ、
前記第2画像処理手段は、前記少なくとも1つの第1オブジェクトを前記移動速度で移動制御する、請求項1に記載の情報処理プログラム。
【請求項13】
前記コンピュータを、前記期間計測手段によって計測された前記期間に基づいて前記少なくとも1つの第1オブジェクトの移動速度を決定する第2移動速度決定手段として更に機能させ、
前記第2画像処理手段は、前記少なくとも1つの第1オブジェクトを前記移動速度で移動制御する、請求項6に記載の情報処理プログラム。
【請求項14】
前記第1入力装置は、所定の撮像対象を撮像する撮像手段を更に備え、
前記コンピュータを、前記撮像手段によって撮像された撮像画像における前記所定の撮像対象の位置に基づいて、前記第1入力装置が指し示す前記表示画像上の指示座標を逐次特定する座標特定手段として更に機能させ、
前記第1画像処理手段は、更に、少なくとも前記入力状態判定手段によって前記所定の入力状態にあると判定されている期間には、前記表示画像上の指示座標を表示する、請求項1に記載の情報処理プログラム。
【請求項15】
前記第1入力装置は、所定の撮像対象を撮像する撮像手段を更に備え、
前記コンピュータを、
前記撮像手段によって撮像された撮像画像における前記所定の撮像対象の位置に基づいて、前記第1入力装置が指し示す前記表示画像上の指示座標を逐次特定する座標特定手段と、
標的である少なくとも1つの第2オブジェクトを前記表示画像上に配置する標的オブジェクト配置手段と、
前記入力状態判定手段によって前記操作キーが所定の入力状態にあると判定されている期間に前記指示座標が前記少なくとも1つの第2オブジェクトの何れかを指し示した場合、指し示された第2オブジェクトのそれぞれに対してマーキングを設定するマーキング手段として更に機能させ、
前記第2画像処理手段は、各前記マーキングが示す位置に向けて、前記少なくとも1つの第1オブジェクトをそれぞれ移動制御する、請求項1に記載の情報処理プログラム。
【請求項16】
前記マーキング手段は、
設定されたマーキングの数を計測するマーキング数計測手段を含み、
前記マーキング数計測手段によって計測された数が所定数に達すると、最も以前に設定されたマーキングを解除する、請求項15に記載の情報処理プログラム。
【請求項17】
前記第1入力装置は、少なくとも1つの所定の撮像対象を撮像する撮像手段を更に備え、
前記動き情報取得手段は、前記撮像手段によって撮像された撮像画像における前記所定の撮像対象の大きさ又は前記所定の撮像対象間の間隔を表す動き情報を逐次取得し、
前記コンピュータを、
前記入力状態判定手段によって前記所定の入力状態にあると判定された時点の前記撮像手段と少なくとも1つの前記所定の撮像対象との間の第1距離を、前記動き情報に基づいて算出する第1距離算出手段と、
前記第1距離が算出された後に、前記撮像手段と少なくとも1つの前記所定の撮像対象との間の第2距離を、前記動き情報に基づいて算出する第2距離算出手段と、
前記第1距離よりも前記第2距離の方が小さいか否かを判定する比較手段と、
前記比較手段によって前記第1距離よりも前記第2距離の方が小さいと判定された場合、当該第2距離を第1距離として再設定する第1距離再設定手段として更に機能させ、
前記第1画像処理手段は、前記入力状態判定手段によって前記所定の入力状態にあると判定されている期間には、前記第1距離と前記第2距離との差の変化に連動させて、前記表示画像を拡大又は縮小させる、請求項1に記載の情報処理プログラム。
【請求項18】
前記情報処理装置は、第2入力装置を更に備え、
前記第2入力装置は、自己の傾き角度を算出可能にする傾き算出データを取得する手段を有し、
前記コンピュータを、前記傾き算出データに基づいて前記第2入力装置の傾き角度を算出する傾き角度算出手段として更に機能させ、
前記第2画像処理手段は、更に前記傾き角度に基づいて、前記少なくとも1つの第1オブジェクトの動作制御を行う、請求項1に記載の情報処理プログラム。
【請求項19】
前記情報処理装置は、ゲーム装置であり、
前記少なくとも1つの第1オブジェクトは、少なくとも1つの矢オブジェクトである、請求項1に記載の情報処理プログラム。
【請求項20】
少なくとも1つの操作キーを有する第1入力装置を備え、ゲーム画像を生成するゲーム装置のコンピュータに実行させる情報処理プログラムであって、
前記コンピュータを、
前記操作キーの入力状態を判定する入力状態判定手段と、
前記第1入力装置の動き情報を逐次取得する動き情報取得手段と、
前記入力状態判定手段によって前記操作キーが所定の入力状態にあると判定されている期間には、前記動き情報の変化に連動させて前記ゲーム画像を拡大又は縮小させる第1画像処理手段と、
前記入力状態判定手段によって前記所定の入力状態が解除されたと判定された時に、拡大又は縮小されていた前記ゲーム画像を元の倍率に戻すと共に、前記ゲーム画像内における少なくとも1つの矢オブジェクトの発射制御を行う第2画像処理手段として機能させる、情報処理プログラム。
【請求項21】
前記第1入力装置は、所定の撮像対象を撮像する撮像手段を備え、
前記コンピュータを、前記撮像手段によって撮像された撮像画像における前記所定の撮像対象の位置に基づいて、前記第1入力装置が指し示す前記ゲーム画像上の指示座標を逐次特定する座標特定手段として更に機能させ、
前記第2画像処理手段は、前記入力状態判定手段によって前記所定の入力状態が解除されたと判定された時の前記指示座標が示す位置に向けて、前記少なくとも1つの矢オブジェクトを移動制御する、請求項20に記載の情報処理プログラム。
【請求項22】
前記コンピュータを、
前記入力状態判定手段によって前記操作キーが継続して所定の入力状態にあると判定されている期間を計測する期間計測手段と、
前記期間が第1閾値以上か否かを判定する第1閾値判定手段として更に機能させ、
前記第2画像処理手段は、前記所定の入力状態が解除されたと判定され、かつ、前記期間が前記第1閾値以上と判定された時に、拡大又は縮小されていた前記ゲーム画像を元の倍率に戻すと共に、前記ゲーム画像内における前記少なくとも1つの矢オブジェクトの動作制御を行う、請求項20に記載の情報処理プログラム。
【請求項23】
少なくとも1つの操作キーを有する第1入力装置を備え、表示画像を生成する情報処理装置であって、
前記操作キーの入力状態を判定する入力状態判定手段と、
前記第1入力装置の動き情報を逐次取得する動き情報取得手段と、
前記入力状態判定手段によって前記操作キーが所定の入力状態にあると判定されている期間には、前記動き情報の変化に連動させて前記表示画像を拡大又は縮小させる第1画像処理手段と、
前記入力状態判定手段によって前記所定の入力状態が解除されたと判定された時に、拡大又は縮小されていた前記表示画像を元の倍率に戻すと共に、前記表示画像内における少なくとも1つの第1オブジェクトの動作制御を行う第2画像処理手段とを備える、情報処理装置。
【請求項24】
少なくとも1つの操作キーを有する第1入力装置を備え、表示画像を生成する情報処理システムであって、
前記操作キーの入力状態を判定する入力状態判定手段と、
前記第1入力装置の動き情報を逐次取得する動き情報取得手段と、
前記入力状態判定手段によって前記操作キーが所定の入力状態にあると判定されている期間には、前記動き情報の変化に連動させて前記表示画像を拡大又は縮小させる第1画像処理手段と、
前記入力状態判定手段によって前記所定の入力状態が解除されたと判定された時に、拡大又は縮小されていた前記表示画像を元の倍率に戻すと共に、前記表示画像内における少なくとも1つの第1オブジェクトの動作制御を行う第2画像処理手段とを備える、情報処理システム。
【請求項25】
表示画像を生成する情報処理方法であって、
第1入力装置が有する少なくとも1つの操作キーの入力状態を判定する入力状態判定ステップと、
前記第1入力装置の動き情報を逐次取得する動き情報取得ステップと、
前記入力状態判定ステップによって前記操作キーが所定の入力状態にあると判定されている期間には、前記動き情報の変化に連動させて前記表示画像を拡大又は縮小させる第1画像処理ステップと、
前記入力状態判定ステップによって前記所定の入力状態が解除されたと判定された時に、拡大又は縮小されていた前記表示画像を元の倍率に戻すと共に、前記表示画像内における少なくとも1つの第1オブジェクトの動作制御を行う第2画像処理ステップとを備える、情報処理方法。

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


【公開番号】特開2011−141826(P2011−141826A)
【公開日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願番号】特願2010−3089(P2010−3089)
【出願日】平成22年1月8日(2010.1.8)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 平成21年12月24日掲載、掲載アドレス(http://www.nintendo.co.jp/wii/rznj/、http://www.nintendo.co.jp/wii/rznj/intro/index.html及びhttp://www.nintendo.co.jp/n00/index.html)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(508294088)株式会社サンドロット (2)
【Fターム(参考)】