ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法
【課題】プレイヤが入力装置を自由な方向に向けて容易にゲーム操作を行うことを可能とする。
【解決手段】ゲーム装置は、ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する。プレイヤによる所定の指示入力があった場合、ゲーム装置は、所定平面上における所定の基準位置を設定する。そして、基準位置を基準としたときの所定平面上の位置を表す座標を角速度データに基づいて算出する。ゲーム処理は、座標に基づいて実行される。
【解決手段】ゲーム装置は、ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する。プレイヤによる所定の指示入力があった場合、ゲーム装置は、所定平面上における所定の基準位置を設定する。そして、基準位置を基準としたときの所定平面上の位置を表す座標を角速度データに基づいて算出する。ゲーム処理は、座標に基づいて実行される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法に関し、より特定的には、入力装置の角速度をゲーム入力として用いてゲーム処理を実行するゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法に関する。
【背景技術】
【0002】
従来、入力装置を動かしてゲーム操作を行うことができるゲーム装置がある。例えば、特許文献1には、光学式ポインティングデバイスを用いたゲームシステムが開示されている。このゲームシステムでは、入力装置は撮像手段を有しており、任意の位置に配置されるマーカを撮像することができる。ゲーム装置は、撮像手段による撮像結果(すなわち、撮像された画像内におけるマーカの位置等)を操作データとして取得し、操作データに基づいてゲーム処理を行う。撮像結果は入力装置の位置や向きに応じて変化するので、上記ゲームシステムによれば、プレイヤは、入力装置自体を動かすゲーム操作を行うことができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−75353号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記特許文献1に記載の方法では、撮像手段がマーカを撮像した結果をゲーム処理に用いるので、プレイヤは、撮像手段がマーカの方を向くようにして(撮像手段がマーカを撮像可能な状態で)入力装置を使用しなければならない。つまり、プレイヤは、ゲーム操作を行う場合には入力装置を常にマーカの方へ向けておく必要があるので、入力装置を自由な方向に向けてゲーム操作を行うことができなかった。
【0005】
それ故、本発明の目的は、プレイヤが入力装置を自由な方向に向けて容易にゲーム操作を行うことができるゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の(1)〜(17)の構成を採用した。
【0007】
(1)
本発明は、操作データ取得部と、基準設定部と、座標算出部と、ゲーム処理部とを備える、ゲーム装置である。操作データ取得部は、ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する。基準設定部は、プレイヤによる所定の指示入力があった場合、所定平面上における所定の基準位置を設定する。座標算出部は、基準位置を基準としたときの所定平面上の位置を表す座標を角速度データに基づいて算出する。ゲーム処理部は、座標に基づいてゲーム処理を実行する。
【0008】
上記「ゲーム装置」は、後述する実施形態においては据え置き型のゲーム装置であるが、携帯型のゲーム装置であってもよい。例えば、上記「ゲーム装置」は、ゲーム装置本体に入力装置が含まれていてもよい。
上記「所定平面」とは、後述する実施形態においては仮想空間における平面であるが、これに限らず、例えば表示画面に対応する平面であってもよい。
【0009】
上記(1)の構成によれば、上記座標は、所定の指示入力があった時の入力装置の姿勢(基準姿勢)からの姿勢を反映するものとなる。そして、この座標がゲーム入力として用いられるので、プレイヤは、基準姿勢から入力装置8の姿勢を変化させることによってゲーム操作を行うことができる。また、上記(1)の構成によれば、上記基準位置はプレイヤによる所定の指示入力があった場合に設定されるので、プレイヤは、基準姿勢を自由に設定することができる。以上より、プレイヤは、基準姿勢を自由に設定し、その基準姿勢から入力装置の姿勢を変化させるゲーム操作を行うことができる。すなわち、本発明によれば、プレイヤが入力装置を自由な方向に向けて容易にゲーム操作を行うことができるゲーム装置を提供することができる。
【0010】
(2)
ゲーム処理部は、座標に対応する仮想空間内の位置に向けて所定の動作を所定のオブジェクトに行わせる処理、または、当該仮想空間内の位置に存在するオブジェクトに対する所定の処理をゲーム処理として実行してもよい。
【0011】
上記(2)において、「座標に対応する仮想空間内の位置に向けて所定の動作を所定のオブジェクトに行わせる処理」とは、当該位置を目標として何らかの動作を行わせる処理であればよい。例えば、後述する実施形態のように、上記位置の方へ向かってオブジェクト(矢)を移動させる処理であってもよいし、当該位置までオブジェクトを移動させる処理であってもよい。
また、「(座標に対応する)仮想空間内の位置に存在するオブジェクトに対する所定の処理」とは、当該位置に存在するオブジェクトを対象として行われる処理であればよく、処理内容はどのようなものであってもよい。例えば、後述する実施形態のように、上記位置に表示されるアイコンが表すアイテムを選択する処理であってもよい。
【0012】
上記(2)の構成によれば、上記座標に対応する位置をプレイヤの指示位置とするゲーム処理が実行される。すなわち、入力装置8の姿勢を変更することによって指示位置を変更する操作に、本発明を適用することができる。
【0013】
(3)
ゲーム処理部は、座標に対応する仮想空間内の位置を指示する所定の画像を表示し、入力装置に対する所定の第1操作があったことに応じて、ゲーム処理を実行してもよい。
【0014】
上記(3)の構成によれば、プレイヤの指示位置(座標に対応する位置)に所定の画像が表示される。また、第1の操作があったことに応じてゲーム処理が実行される。これによれば、プレイヤは、入力装置の姿勢を変更することによって指示位置(所定の画像)を動かしつつ、指示位置が所望の位置となった時点で第1の操作を行うことによってプレイヤキャラクタ等に動作を行わせるゲーム操作を行うことができる。
【0015】
(4)
基準設定部は、入力装置に対する所定の第2操作があった場合に基準位置を更新してもよい。
【0016】
上記(4)の構成によれば、第2操作があった場合に基準位置が更新されるので、プレイヤは、所望のタイミングで基準位置を更新することができる。したがって、プレイヤは、入力装置の姿勢を変化させる操作の途中であっても、入力装置の基準姿勢を変更することができる。
【0017】
(5)
所定の第2操作は、所定のオブジェクトが使用するアイテムを決定する操作であってもよい。このとき、ゲーム処理部は、決定されたアイテムを使用する動作を所定のオブジェクトに行わせる処理をゲーム処理として実行する。
【0018】
上記(5)の構成によれば、所定のオブジェクトに使用させるアイテムを決定したことに応じて基準位置が設定される。したがって、プレイヤは、アイテムを決定する時に入力装置を操作しやすい姿勢にしておけば、所定のオブジェクトがアイテムを使用する動作をその姿勢を基準姿勢として操作することができる。すなわち、基準姿勢(基準位置)を設定する操作を別途行う必要がなく簡単な操作で、プレイヤは入力装置を自由な方向に向けてゲーム操作を行うことができる。
【0019】
(6)
所定のオブジェクトが使用するアイテムの候補のうちから、角速度データに基づいて算出される入力装置の姿勢または座標に応じて1つのアイテムを選択し、所定の第2操作が行われた時点で選択されているアイテムを、所定のオブジェクトが使用するアイテムに決定するアイテム選択部をさらに備える、請求項5に記載のゲーム装置。
【0020】
上記(6)の構成によれば、アイテムの選択も入力装置の姿勢を変更する操作で行うことができる。したがって、プレイヤは、アイテムの選択操作と、選択されたアイテムを使用する操作との両方を入力装置の姿勢を変更する操作で行うことができるので、プレイヤにとって操作しやすい操作方法を提供することができる。
【0021】
(7)
ゲーム装置は、仮想カメラの位置および/または方向を座標に基づいて制御するカメラ制御部をさらに備えていてもよい。このとき、カメラ制御部は、座標が基準位置を表す場合は少なくとも、仮想カメラの移動を停止する。
【0022】
上記「座標に基づいて」とは、仮想カメラの位置および/または方向が座標から直接算出される場合と、間接的に算出される場合の両方を含む。例えば、後述する実施形態のように、座標から照準画像の位置が算出され、照準画像の位置から仮想カメラの方向が算出されてもよい。
【0023】
上記(7)の構成によれば、入力装置の姿勢を変更する操作によってゲーム画面を移動(スクロール)させることができる。特に、上記(7)の構成と上記(2)または(3)の構成とを組み合わせる場合には、プレイヤは、上記指示位置を移動させる操作と、ゲーム画面をスクロールさせる操作との両方の操作を同時に行うことができるので、指示位置を移動させる操作の操作性を向上することができる。また、上記(7)の構成によれば、座標が基準位置となる場合にはゲーム画面はスクロールしないので、基準を設定した時点で急にゲーム画面がスクロールすることはなく、プレイヤにとって操作しやすい操作方法を提供することができる。
さらに、上記(7)の構成と上記(4)の構成とを組み合わせる場合には、上記第2の操作が行われることによって、座標が基準位置となる結果、ゲーム画面のスクロールが停止される。ここで、プレイヤは、入力装置を基準姿勢に戻す操作によってもスクロールを停止させることができるが、本発明では基準姿勢が固定ではないので、この操作を素早く行うことは難しい場合がある。これに対して、上記(7)の構成と上記(4)の構成とを組み合わせる場合には、プレイヤは、第2の操作によって素早くスクロールを停止させることができるので、ゲームの操作性をより向上することができる。
【0024】
(8)
カメラ制御部は、座標が基準位置から離れている度合に応じて仮想カメラを移動させてもよい。
【0025】
上記(8)の構成によれば、基準姿勢から入力装置を傾ける度合に応じてゲーム画面をスクロールさせることができるので、直感的な操作でゲーム画面をスクロールさせることができる。
【0026】
(9)
ゲーム装置は、入力装置に対する所定の第3操作があった場合、仮想空間内の所定の対象の方を仮想カメラが向くように仮想カメラの位置および/または方向を制御するカメラ制御部をさらに備えていてもよい。このとき、基準設定部は、所定の第3操作があった場合に基準位置を更新する。
【0027】
上記「所定の対象の方を仮想カメラが向く」とは、仮想カメラの視線と所定の対象とが交わる場合に限らず、少なくとも所定の対象が表示されるように仮想カメラの位置および方向が変更される場合を含む。
【0028】
上記(9)の構成によれば、第3の操作が行われた場合、所定の対象が表示されるように仮想カメラの位置および/または方向が変化する。したがって、プレイヤは、第3の操作によって所定の対象を見やすく表示させることができる。
ここで、第3の操作が行われた場合には、ゲーム画面の視点の位置および/または視線の方向が変化するので、座標の基準位置がそのままで変化しないとすると、プレイヤが違和感を抱くおそれがある。例えば、下記(10)の構成や後述する実施形態のように、座標に応じてゲーム空間内のオブジェクトの向きが制御される場合には、視点の位置および/または視線の方向が変化することによって、表示上、オブジェクトの向きが変わってしまい、プレイヤが違和感を抱くおそれがある。また、座標に応じて画面上のカーソルを制御する場合には、視点の位置および/または視線の方向が変化することによって、カーソルが指し示す位置が変わってしまう。これに対して、上記(9)の構成によれば、第3の操作が行われた場合、基準位置が再設定(リセット)されるので、プレイヤが抱く違和感を軽減することができる。
【0029】
(10)
ゲーム処理部は、プレイヤの操作対象となるオブジェクトの動作を、座標に応じて向きを変えるように制御する処理をゲーム処理として実行してもよい。
【0030】
上記「プレイヤの操作対象となるオブジェクト」とは、プレイヤキャラクタ自身であってもよいし、プレイヤキャラクタの体の一部であってもよいし、後述する実施形態における剣オブジェクトのように、プレイヤキャラクタが持っているアイテムであってもよい。
【0031】
上記(10)の構成によれば、入力装置の姿勢を変更する操作によって仮想空間内のオブジェクトの向きを操作することができる。これによれば、入力装置の向きによって仮想空間内の向きが変わるので、直感的で操作しやすい操作方法を提供することができる。
【0032】
(11)
ゲーム処理部は、所定の指示入力があったことに応じて、プレイヤの操作対象となるオブジェクトの動作の制御を開始してもよい。
【0033】
上記(11)の構成によれば、所定の指示入力によって、基準位置が設定されるとともに、操作対象となるオブジェクトの操作が開始されることになる。したがって、プレイヤは、上記操作の開始時に入力装置を操作しやすい姿勢にしておけば、その姿勢を基準姿勢として当該操作を行うことができる。すなわち、基準姿勢(基準位置)を設定する操作を別途行う必要がなく簡単な操作で、プレイヤは入力装置を自由な方向に向けて上記操作を行うことができる。
【0034】
(12)
座標算出部は、角速度データが示す角速度に応じて変化するように座標を算出してもよい。
【0035】
上記(12)の構成によれば、上記座標は、入力装置の姿勢の変化を反映して算出されるので、入力装置の姿勢に応じた座標を容易に算出することができる。
【0036】
(13)
ゲーム装置は、角速度データに基づいて入力装置の姿勢を算出する姿勢算出部をさらに備えていてもよい。このとき、座標算出部は、入力装置の姿勢に基づいて座標を算出する。
【0037】
上記(13)の構成によれば、ゲーム装置は、入力装置の姿勢を算出し、算出された姿勢に基づいて上記座標を算出するので、入力装置の姿勢に応じた座標を容易に算出することができる。
【0038】
(14)
座標算出部は、所定の基準点から入力装置の姿勢を示すベクトルの方向へ延ばした線分と所定平面との交点の位置を表す座標を算出してもよい。
【0039】
上記(14)の構成によれば、入力装置の姿勢に応じて変化する(平面上の)位置を表す座標を容易に算出することができる。
【0040】
(15)
入力装置は加速度センサをさらに有していてもよい。このとき、姿勢算出部は、角速度データに基づいて入力装置の姿勢を算出するとともに、加速度センサが検出する加速度に基づいて当該姿勢を補正する。
【0041】
上記(15)の構成によれば、角速度に基づく入力装置の姿勢を、加速度に基づいて補正することによって、姿勢をより正確に算出することができる。
【0042】
(16)
入力装置は撮像手段をさらに有していてもよい。このとき、姿勢算出部は、角速度データに基づいて入力装置の姿勢を算出するとともに、撮像手段が撮像する画像内における所定の撮像対象の位置に基づいて、少なくとも重力方向を軸とした回転に関して当該姿勢を補正する。
【0043】
上記(16)の構成によれば、角速度に基づく入力装置の姿勢を、撮像手段によって撮像された画像の情報を用いて補正することによって、姿勢をより正確に算出することができる。
【0044】
(17)
また、本発明は、操作データ取得部と、基準算出部と、姿勢算出部と、ゲーム処理部とを備える、ゲーム装置であってもよい。操作データ取得部は、ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する。基準算出部は、プレイヤによる所定の指示入力があった場合、指示入力があった時点で取得された角速度データに基づいて入力装置の基準姿勢を算出する。姿勢算出部は、指示入力があった後で取得された角速度データに基づいて入力装置の姿勢を算出する。ゲーム処理部は、姿勢算出部によって算出される姿勢の、基準姿勢に対する傾きに基づいてゲーム処理を実行する。
【0045】
上記「姿勢算出部によって算出される姿勢の、基準姿勢に対する傾き」とは、基準姿勢から、姿勢算出部によって算出される姿勢までの変化を指す。すなわち、上記「ゲーム処理部」は、当該変化の量および/または変化の方向に基づいてゲーム処理を実行する。
【0046】
上記(17)の構成によれば、プレイヤは、基準姿勢から入力装置8の姿勢を変化させることによってゲーム操作を行うことができる。また、上記(17)の構成によれば、上記基準姿勢はプレイヤによる所定の指示入力があった場合に設定されるので、プレイヤは、基準姿勢を自由に設定することができる。以上より、プレイヤは、基準姿勢を自由に設定し、その基準姿勢から入力装置の姿勢を変化させるゲーム操作を行うことができる。すなわち、本発明によれば、プレイヤが入力装置を自由な方向に向けて容易にゲーム操作を行うことができるゲーム装置を提供することができる。
【0047】
また、本発明は、ゲーム装置のコンピュータを上記各部と同等の手段として機能させるゲームプログラムの形態で実施されてもよい。また、本発明は、上記各部を備える1以上の情報処理装置からなるゲームシステムの形態で実施されてもよい。このとき、1以上の情報処理装置は、有線または無線通信によって直接通信を行ってもよいし、ネットワークを介して通信を行ってもよい。さらに、本発明は、上記各部によって行われるゲーム処理方法の形態で実施されてもよい。
【発明の効果】
【0048】
本発明によれば、入力装置の姿勢に応じた位置を示す座標を、プレイヤに自由に設定させた基準位置を基準として算出し、算出された座標をゲーム入力として用いる。これによって、プレイヤが基準姿勢を自由に設定し、その基準姿勢から入力装置の姿勢を変化させるゲーム操作を提供することができる。これによって、プレイヤは入力装置を自由な方向に向けて容易にゲーム操作を行うことができる。
【図面の簡単な説明】
【0049】
【図1】ゲームシステムの外観図
【図2】ゲーム装置の機能ブロック図
【図3】入力装置の外観構成を示す斜視図
【図4】コントローラの外観構成を示す斜視図
【図5】コントローラの内部構造を示す図
【図6】コントローラの内部構造を示す図
【図7】入力装置の構成を示すブロック図
【図8】プレイヤキャラクタが剣を使用する場合におけるゲーム画像の一例を示す図
【図9】入力装置の姿勢と剣の向きとの関係を示す図
【図10】プレイヤキャラクタが弓を使用する場合におけるゲーム画像の一例を示す図
【図11】図10に示すゲーム画像から表示対象領域が変化した場合のゲーム画像を示す図
【図12】図11に示すゲーム画像から基準位置が再設定された場合におけるゲーム画像を示す図
【図13】ゲーム装置のメインメモリに記憶される主なデータを示す図
【図14】ゲーム装置において実行される処理の流れを示すメインフローチャート
【図15】2次元座標を算出するために用いられる仮想空間を示す図
【図16】図14に示す剣動作処理(ステップS4)の流れを示すフローチャート
【図17】図16に示す構え動作処理(ステップS16)の流れを示すフローチャート
【図18】図15に示す仮想空間をy軸正方向側から負方向側へ見た図
【図19】図16に示す振り動作処理(ステップS18)の流れを示すフローチャート
【図20】図14に示すアイテム処理(ステップS8)の流れを示すフローチャート
【図21】図20に示すアイテム選択処理(ステップS41)の流れを示すフローチャート
【発明を実施するための形態】
【0050】
[ゲームシステムの全体構成]
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステムについて説明する。図1は、ゲームシステムの外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、入力装置8、およびマーカ部6を含む。本システムは、入力装置8を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0051】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0052】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0053】
入力装置8は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与えるものである。本実施形態では、入力装置8はコントローラ5とジャイロセンサユニット7とを含む。詳細は後述するが、入力装置8は、コントローラ5に対してジャイロセンサユニット7が着脱可能に接続されている構成である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
【0054】
[ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0055】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSIの内部構成について後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0056】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0057】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0058】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0059】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0060】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0061】
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0062】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0063】
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0064】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0065】
[入力装置8の構成]
次に、図3〜図6を参照して、入力装置8について説明する。図3は、入力装置8の外観構成を示す斜視図である。図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
【0066】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0067】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
【0068】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、ジャイロセンサユニット7や他のコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0069】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0070】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0071】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0072】
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0073】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0074】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0075】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
【0076】
また、ジャイロセンサユニット7は、3軸回りの角速度を検知するジャイロセンサ(図7に示すジャイロセンサ55および56)を有する。ジャイロセンサユニット7は、コントローラ5のコネクタ33に着脱可能に装着される。ジャイロセンサユニット7の前端(図3に示すZ軸正方向側の端部)には、コネクタ33に接続可能なプラグ(図7に示すプラグ53)が設けられる。さらに、プラグ53の両側にはフック(図示せず)が設けられる。ジャイロセンサユニット7がコントローラ5に対して装着される状態では、プラグ53がコネクタ33に接続されるとともに、上記フックがコントローラ5の係止穴33aに係止する。これによって、コントローラ5とジャイロセンサユニット7とがしっかりと固定される。また、ジャイロセンサユニット7は側面(図3に示すX軸方向の面)にボタン51を有している。ボタン51は、それを押下すれば上記フックの係止穴33aに対する係止状態を解除することができるように構成されている。したがって、ボタン51を押下しながらプラグ53をコネクタ33から抜くことによって、ジャイロセンサユニット7をコントローラ5から離脱することができる。
【0077】
また、ジャイロセンサユニット7の後端には、上記コネクタ33と同形状のコネクタが設けられる。したがって、コントローラ5(のコネクタ33)に対して装着可能な他の機器は、ジャイロセンサユニット7のコネクタに対しても装着可能である。なお、図3においては、当該コネクタに対してカバー52が着脱可能に装着されている。
【0078】
なお、図3〜図6に示したコントローラ5およびジャイロセンサユニット7の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0079】
図7は、入力装置8(コントローラ5およびジャイロセンサユニット7)の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、および加速度センサ37を備えている。コントローラ5は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置3へ送信するものである。
【0080】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示す操作ボタンデータを通信部36のマイコン42へ出力する。
【0081】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0082】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるマーカ部6のマーカ6Rおよび6Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ6Rおよび6Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ6Rおよび6L)の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0083】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0084】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、3軸または2軸の加速度センサは、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。なお、加速度センサ37は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0085】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置8(コントローラ5)を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトル(ax,ay,az)として表される。以下では、加速度センサ37によって検出される3軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【0086】
加速度センサ37が検出した加速度を示すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、加速度データに基づいてコントローラ5の姿勢を判断する。
【0087】
加速度センサ37が検出した加速度(加速度ベクトル)を示すデータ(加速度データ)は、通信部36へ出力される。本実施形態において、加速度センサ37は、コントローラ5の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
【0088】
なお、加速度センサ37から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
【0089】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0090】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。また、マイコン42はコネクタ33に接続されている。ジャイロセンサユニット7から送信されてくるデータは、コネクタ33を介してマイコン42に入力される。以下、ジャイロセンサユニット7の構成について説明する。
【0091】
ジャイロセンサユニット7は、プラグ53、マイコン54、2軸ジャイロセンサ55、および1軸ジャイロセンサ56を備えている。上述のように、ジャイロセンサユニット7は、3軸(本実施形態では、XYZ軸)周りの角速度を検出し、検出した角速度を示すデータ(角速度データ)をコントローラ5へ送信する。
【0092】
2軸ジャイロセンサ55は、X軸周りの角速度およびZ軸周りの(単位時間あたりの)角速度を検出する。また、1軸ジャイロセンサ56は、Y軸周りの(単位時間あたりの)角速度を検出する。なお、本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、XYZ軸周りの回転方向を、それぞれ、ピッチ方向、ヨー方向、ロール方向と呼ぶ。すなわち、2軸ジャイロセンサ55は、ピッチ方向(X軸周りの回転方向)およびロール方向(Z軸周りの回転方向)の角速度を検出し、1軸ジャイロセンサ56は、ヨー方向(Y軸周りの回転方向)の角速度を検出する。
【0093】
なお、本実施形態では、3軸回りの角速度を検出するために、2軸ジャイロセンサ55と1軸ジャイロセンサ56とを用いる構成としたが、他の実施形態においては、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。
【0094】
また、本実施形態では、後述する姿勢算出処理における計算を容易にする目的で、各ジャイロセンサ55および56が角速度を検出する3つの軸は、加速度センサ37が加速度を検出する3つの軸(XYZ軸)と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ55および56が角速度を検出する3つの軸と、加速度センサ37が加速度を検出する3つの軸とは一致しなくてもよい。
【0095】
各ジャイロセンサ55および56で検出された角速度を示すデータは、マイコン54に出力される。したがって、マイコン54には、XYZ軸の3軸回りの角度速度を示すデータが入力されることになる。マイコン54は、上記3軸回りの角速度を示すデータを角速度データとしてプラグ53を介してコントローラ5へ送信する。なお、マイコン54からコントローラ5への送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【0096】
コントローラ5の説明に戻り、操作部32、撮像情報演算部35、および加速度センサ37からマイコン42へ出力されたデータ、ならびに、ジャイロセンサユニット7からマイコン42へ送信されてきたデータは、一時的にメモリ43に格納される。これらのデータは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の無線コントローラモジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の無線コントローラモジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部36から無線コントローラモジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の無線コントローラモジュール19へ出力する。
【0097】
上記入力装置8を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、入力装置8を任意の傾斜角度に傾けることによるゲーム操作を行うことができる。その他、上記入力装置8によれば、プレイヤは、入力装置8によって画面上の任意の位置を指示する操作、および、入力装置8自体を動かす操作を行うこともできる。
【0098】
なお、本実施形態においては、入力装置8の姿勢や動きを検出するための構成として、ジャイロセンサ55および56、加速度センサ37、ならびに撮像素子40を有する入力装置8を例として説明する。ただし、他の実施形態においては、入力装置8は、少なくともジャイロセンサを有していればよく、加速度センサ37および撮像素子40の両方を有していない構成であってもよい。また、本実施形態では、入力装置8は、コントローラ5と、コントローラ5に着脱可能なジャイロセンサユニット7とから構成されたが、他の実施形態においては、ジャイロセンサは入力装置に内蔵されていてもよい。例えば、コントローラ5がジャイロセンサ55および56を内蔵していてもよい。
【0099】
[ゲーム処理の概要]
次に、図8〜図12を参照して、ゲーム装置3において実行されるゲーム処理の概要を説明する。本実施形態では、ゲーム処理によって行われるゲームの一例として、入力装置8自体を動かす操作によって仮想空間においてプレイヤキャラクタを操作するゲームを説明する。このゲームでは、プレイヤは、プレイヤキャラクタに剣や弓等のアイテム(武器)を使用する動作を行わせる。
【0100】
また、本実施形態では、ゲーム入力として、ジャイロセンサ55および56によって検出される角速度に基づいて算出される2次元座標が用いられる。この2次元座標は、所定の仮想平面上において入力装置8の姿勢に対応する位置を表す(図15参照)。2次元座標の算出方法の詳細については後述するが、この2次元座標は、所定のタイミングにおける入力装置8の姿勢(基準姿勢)に対応する位置を基準位置(原点(0,0))とし、当該基準姿勢から姿勢が変化した方向および量に応じて座標値が変化するように算出される。例えば、入力装置8が基準姿勢から右方向(左方向)に変化した場合、2次元座標のx成分が増加(減少)し、入力装置8が基準姿勢から上方向(下方向)に変化した場合、2次元座標のy成分が増加(減少)する。このように、本実施形態では、ジャイロセンサ55および56によって検出される角速度を用いて上記2次元座標を算出する。したがって、入力装置8がどのような姿勢であっても(すなわち、撮像素子40がマーカ部6の方を向いていなくても)2次元座標は算出可能である。
【0101】
図8は、プレイヤキャラクタが剣を使用する場合におけるゲーム画像の一例を示す図である。図8に示すゲーム画像においては、プレイヤキャラクタ61は剣62を持っている。プレイヤキャラクタ61が剣62をしまっている状態において、プレイヤが所定の剣抜き操作を行った場合、プレイヤキャラクタ61は剣62を出す。剣62の向きは、上記2次元座標に基づいて、入力装置8の姿勢に応じて変化するように決定される。つまり、プレイヤキャラクタ61は、構えている剣62の向きを入力装置8の向きに応じて変えるように動作する。
【0102】
図9は、入力装置8の姿勢と剣62の向きとの関係を示す図である。図9に示すように、剣62の操作の開始時(剣62を出した時点)において、仮想平面における2次元座標は基準位置(原点)となるように算出される。これによって、開始時における入力装置8の姿勢が基準姿勢として設定されることになる。また、2次元座標が基準位置となる場合、剣62は、プレイヤキャラクタ61の正面の向きとなるように制御される。つまり、開始時において、剣62は、プレイヤキャラクタ61の正面の向きとなる(図9に示す表の右上欄参照)。
【0103】
剣62が出された後の操作中においては、ゲーム装置3は、基準姿勢から姿勢が変化した方向および量に応じて2次元座標を算出する。そして、2次元座標に基づいて剣62の向きを制御する。例えば、図9の表の中欄に示すように、入力装置8が基準姿勢から右方向を向いた場合、2次元座標はx成分が正の値となり、剣62は開始時の向きから右を向く。なお、図9では、入力装置8の姿勢が基準姿勢から左右方向にのみ変化した場合を示しているが、姿勢が上下方向に変化した場合も2次元座標は変化する。すなわち、姿勢が上下方向に変化した場合には2次元座標のy成分が変化する。
【0104】
以上のように、本実施形態においては、剣62の操作の開始時において仮想平面上に基準位置が設定され、開始時からの入力装置8の姿勢の変化に応じて2次元座標が算出される。そして、2次元座標に基づいて剣62の向きが制御される。つまり、ゲーム装置3は、開始時における入力装置8の姿勢を基準姿勢として、基準姿勢からの姿勢の変化に応じて剣62の向きを制御することになる。これによれば、プレイヤは剣62の操作開始時に入力装置8をどのような姿勢にしていても、開始時の姿勢が基準となるので、プレイヤは入力装置8を自由な向きに向けてゲーム操作を行うことができる。
【0105】
ここで、例えば、入力装置8が特定の向きを向く姿勢(例えばマーカ部6の方を向く姿勢)を基準姿勢とする方法も考えられる。しかし、この方法では、剣62を特定の方向(例えば正面方向)に向けるためにはプレイヤは入力装置を当該特定の向きに向けなければならない。これでは、角速度データによって入力装置8の任意の姿勢を算出できても、入力装置8を自由な向きに向けてゲーム操作を行うことはできない。これに対して、本実施形態によれば、プレイヤは、剣62が正面方向を向く場合の入力装置8の姿勢を自由に設定することができるので、入力装置8を自由な向きに向けてゲーム操作を行うことができる。例えば、プレイヤは、入力装置8がテレビ2の方向を向く場合に剣62が正面方向を向くようにすることも可能であるし、テレビ2の反対方向を向く場合に剣62が正面方向を向くようにすることも可能である。
【0106】
また、本実施形態では、剣62の操作中において所定の操作が行われた場合、2次元座標の基準位置は再設定される。つまり、所定の操作が行われた時点における2次元座標が基準位置となるので、この時点で剣62は正面方向を向く(図9に示す表の下欄参照)。このように、本実施形態では、プレイヤは、剣62の操作中において基準位置を設定し直すことができる。したがって、プレイヤは、剣62を一度しまって再度出す操作を行う必要がなく、容易に基準位置を設定し直すことができる。なお、詳細は後述するが、本実施形態では、上記所定の操作は、仮想カメラおよびプレイヤキャラクタ61を所定の対象の方へ向ける操作(注目操作)でもある。注目操作に応じて基準位置を再設定することによって、ゲームの操作性をより向上することができる。
【0107】
次に、プレイヤキャラクタ61が弓を使用する場合について説明する。図10は、プレイヤキャラクタ61が弓を使用する場合におけるゲーム画像の一例を示す図である。ここでは、プレイヤキャラクタ61は弓以外にも複数のアイテムを使用することが可能であり、アイテム選択画面(後述)においてプレイヤが所望のアイテムを選択した場合、選択されたアイテムを使用する場合のゲーム画像が表示される。具体的には、アイテム選択画面においてプレイヤが弓を選択する操作を行った場合、図10に示すゲーム画像が表示される。弓が使用される場合、図10に示すように、プレイヤキャラクタ61から見た仮想空間の画像が表示され、照準を表す画像(照準画像)64が表示される。照準画像64は、矢を発射する方向を表す。照準画像64が表示される場合において、プレイヤが所定の発射操作を行ったことに応じて、プレイヤキャラクタ61は照準画像64が示す方向へ矢を発射する。
【0108】
弓が使用される場合、ゲーム装置3は、上記2次元座標に基づいて照準画像64の位置(弓の発射方向)を制御する。表示画面上における照準画像64の位置は、2次元座標が基準位置となる場合に画面中央となり、2次元座標のx軸成分の値と画面の左右方向の位置とが対応し、y軸成分の値と画面の上下方向の位置とが対応するように算出される。したがって、弓の場合も剣62の場合と同様、弓の操作の開始時における入力装置8の姿勢を基準姿勢として、基準姿勢からの姿勢の変化に応じて照準画像64の位置を制御することができる。そのため、プレイヤは、入力装置8を自由な向きに向けてゲーム操作を行うことができる。
【0109】
ここで、照準画像64がテレビ2の表示領域の周付近に位置する場合、ゲーム装置3は、仮想カメラの向きを変更する。その結果、仮想空間のうちで表示される領域(表示対象領域)が変化する。図11は、図10に示すゲーム画像から表示対象領域が変化した場合のゲーム画像を示す図である。例えば、照準画像64が表示領域の右端付近に位置した場合、仮想カメラは右側へ回転して向きを変える。その結果、図11に示すように、表示対象領域は右側へスクロールする。このように、照準画像64の位置に応じて表示対象領域を変更することによって、照準画像64を自由な方向へ向けることができ、照準画像64の操作性を向上することができる。
【0110】
また、弓が操作される場合においても剣62の場合と同様、プレイヤは、2次元座標の基準位置を再設定することが可能である。すなわち、弓が操作される場合において、入力装置8に対して所定のリセット操作が行われた場合、ゲーム装置3は、2次元座標の基準位置を再設定する。リセット操作が行われた時点における2次元座標が基準位置となるので、この時点で照準画像64は画面中央となる。図12は、図11に示すゲーム画像から基準位置が再設定された場合におけるゲーム画像を示す図である。図11に示すように、照準画像64が画面の端付近に位置して表示対象領域がスクロールしている場合においてリセット操作が行われると、図12に示すように、照準画像64が画面中央に位置する。そして、照準画像64が画面中央に位置することによって、スクロールが停止する。
【0111】
本実施形態では、ゲーム装置3は、2次元座標によって照準画像64の位置を制御するとともに、照準画像64の位置によって仮想カメラを制御する。そのため、上記リセット操作が行われた場合、仮想カメラの移動も停止することになる。つまり、プレイヤは、画面のスクロールを止めたい場合にはリセット操作を行えばよい。ここで、仮想カメラを停止させることは、照準画像64を画面中央に戻す(入力装置8を基準姿勢に戻す)ことによっても可能である。しかし、本実施形態では入力装置8の基準姿勢は自由に設定されて固定ではないので、入力装置8を基準姿勢に戻す操作はプレイヤにとって容易な操作とは言えない。そこで、本実施形態では、リセット操作によって仮想カメラが停止するようにし、プレイヤがスクロールを容易に止められるようにしている。つまり、本実施形態によれば、プレイヤは、照準画像64の位置を操作することによって画面のスクロールを容易に行うことができるとともに、リセット操作によってスクロールを容易に停止させることができる。これによって、照準画像64を用いたゲーム操作の操作性をより向上することができる。なお、照準画像64の位置に基づく仮想カメラの制御方法はどのような方法であってもよいが、2次元座標が基準位置を表す場合は少なくとも、仮想カメラが移動しないようにすることが好ましい。
【0112】
[ゲーム処理の詳細]
次に、ゲーム装置3において実行される処理の詳細について説明する。まず、ゲーム装置3における処理において用いられる主なデータについて図13を用いて説明する。図13は、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11e)に記憶される主なデータを示す図である。図13に示すように、ゲーム装置3のメインメモリには、ゲームプログラム70、操作データ71、および処理用データ76が記憶される。なお、メインメモリには、図13に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【0113】
ゲームプログラム70は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。ゲームプログラム70には、操作データ71に基づいて入力装置8の姿勢を算出し、算出された姿勢に基づいて上記2次元座標を算出する処理を実行するためのプログラムが含まれる。また、ゲームプログラム70には、2次元座標をゲーム入力として用いて所定のゲーム処理を実行するためのプログラムが含まれる。
【0114】
操作データ71は、入力装置8(入力装置8)からゲーム装置3へ送信されてくる操作データである。上述したように、入力装置8からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、メインメモリに記憶される操作データ71はこの割合で更新される。なお、メインメモリには、最新の(最後に取得された)ものから順に所定個数の操作データが記憶される。操作データ71には、角速度データ72、加速度データ73、マーカ座標データ74、および操作ボタンデータ75が含まれる。
【0115】
角速度データ72は、ジャイロセンサユニット7のジャイロセンサ55および56によって検出された角速度を示すデータである。ここでは、角速度データ72は、図3に示すXYZの3軸回りのそれぞれの角速度を示す。
【0116】
加速度データ73は、加速度センサ37によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ73は、図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度ベクトルVa1を示す。また、本実施形態においては、入力装置8が静止している状態で加速度センサ37が検出する加速度ベクトルVa1の大きさを“1”とする。つまり、加速度センサ37によって検出される重力加速度の大きさは“1”である。
【0117】
マーカ座標データ74は、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための2次元座標系(図17に示すx’y’座標系)で表現される。なお、撮像素子40によって2つのマーカ6Rおよび6Lが撮像される場合には、2つのマーカ座標が算出される。一方、撮像素子40の撮像可能な範囲内にマーカ6Rおよび6Lのいずれか一方が位置しない場合には、撮像素子40によって1つのマーカのみが撮像され、1つのマーカ座標のみが算出される。また、撮像素子40の撮像可能な範囲内にマーカ6Rおよび6Lの両方が位置しない場合には、撮像素子40によってマーカが撮像されず、マーカ座標は算出されない。したがって、マーカ座標データ74は、2つのマーカ座標を示す場合もあるし、1つのマーカ座標を示す場合もあるし、マーカ座標がないことを示す場合もある。
【0118】
操作ボタンデータ75は、各操作ボタン32a〜32iに対する入力状態を示すデータである。
【0119】
処理用データ76は、後述するゲーム処理(図14)において用いられるデータである。処理用データ76は、姿勢データ77、座標データ78、剣データ79、表示位置データ80、およびカメラデータ81を含む。なお、図13に示すデータの他、処理用データ76は、ゲーム処理において用いられる各種データ(ゲームパラメータを示すデータ等)を含む。
【0120】
姿勢データ77は、入力装置8の姿勢を示すデータである。姿勢データ77は、上記操作データ71に基づいて算出される。なお、本実施形態では、入力装置8の姿勢は、所定の姿勢から現在の入力装置8の姿勢への回転を表す回転行列によって表現される。ただし、他の実施形態においては、入力装置8の姿勢は、3次のベクトルまたは3つの角度によって表現されてもよい。
【0121】
座標データ78は、上記2次元座標を示すデータである。本実施形態では、座標データ78は、上記姿勢データ77に基づいて算出される。本実施形態では、ゲーム装置3は、角速度データ72を用いて姿勢データ77を算出し、当該姿勢データ77に基づいて2次元座標を算出するが、他の実施形態においては、角速度データ72から2次元座標を直接算出するようにしてもよい。
【0122】
剣データ79は、プレイヤキャラクタ61が持つ剣62の向きを示すデータである。剣データ79は、上記座標データ78に基づいて算出される。なお、剣データ79が算出される場合、剣62の向きが剣データ79が示す向きとなるように、プレイヤキャラクタ61の動作が制御される。
【0123】
表示位置データ80は、表示画面上における上記照準画像64の位置を示すデータである。表示位置データ80は、上記座標データ78に基づいて算出され、座標データ78が示す仮想平面上の2次元座標の位置に対応する、表示画面上の位置を示す。
【0124】
カメラデータ81は、仮想空間における仮想カメラの位置および向きを示すデータである。仮想カメラは、仮想空間における視点および視線方向を決めるものであり、仮想カメラの位置から仮想カメラの向きに見たときの仮想空間の画像がゲーム画像として生成されて表示される。本実施形態では、プレイヤキャラクタ61が弓を使用する場合、仮想カメラの向きは上記表示位置データ80に基づいて制御される。なお、その他の場合、仮想カメラの位置および向きは、プレイヤキャラクタ61の位置や向き等に応じて制御される。
【0125】
次に、ゲーム装置3において行われる処理の詳細を、図14〜図21を用いて説明する。図14は、ゲーム装置3において実行される処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図14に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、図14〜図21に示すフローチャートでは、2次元座標の算出および2次元座標に基づくゲーム処理について主に説明し、本発明の理解を容易にする目的で、その他の処理については説明を省略することがある。例えば、プレイヤキャラクタ61以外の他のオブジェクト(例えば敵オブジェクト等)の動作を制御する処理、および、ゲーム画像を表示する処理は、1フレーム時間に1回の割合で適宜実行されるが、図14〜図21に示すフローチャートではこれらの処理を省略している箇所がある。
【0126】
図14に示すステップS1において、CPU10は操作データを取得する。すなわち、入力装置8から送信されてくる操作データが無線コントローラモジュール19を介して受信される。そして、受信された操作データに含まれる角速度データ、加速度データ、マーカ座標データ、操作ボタンデータがそれぞれメインメモリに記憶される。ステップS1の次にステップS2の処理が実行される。
【0127】
ステップS2において、CPU10は、剣抜き操作が行われたか否かを判定する。剣抜き操作は、剣62をしまっているプレイヤキャラクタ61に剣62を抜かせるための操作である。本実施形態において、剣抜き操作は入力装置8を振る操作である。ステップS2の判定は、操作データ71に含まれる加速度データ73を用いて行われる。すなわち、CPU10は、入力装置8に対して所定値以上の加速度が加えられたか否かを、加速度データ73を用いて判断する。そして、入力装置8に対して所定値以上の加速度が加えられた場合、入力装置8が振られた、すなわち、剣抜き操作が行われたと判断する。なお、剣抜き操作はどのような操作であってもよく、例えば、入力装置8の所定のボタン(例えば、Aボタン32d)を押下する操作であってもよい。ステップS2の判定結果が肯定である場合、後述するステップS4の処理が実行される。一方、ステップS2の判定結果が否定である場合、ステップS3の処理が実行される。
【0128】
ステップS3において、CPU10は、プレイヤキャラクタ61の他の動作を制御する。ここで、他の動作とは、剣62や弓等のアイテムを使用する動作以外の動作を指す。ステップS3においては、例えば、仮想空間においてプレイヤキャラクタ61を移動させる等の動作が制御される。そして、他のオブジェクト(敵オブジェクト等)の動作が制御され、プレイヤキャラクタ61を含むゲーム画像が生成されてテレビ2の画面に表示される。ステップS3の後、ステップS1の処理が再度実行される。
【0129】
一方、ステップS4において、CPU10は入力装置8の姿勢を算出する。ステップS4における姿勢の算出方法はどのような方法であってもよい。姿勢の算出方法は、例えば、角速度データと加速度データとマーカ座標データとを用いて姿勢を算出する方法(後述するステップS22〜S24)であってもよいし、これらのデータのうちいずれか1つのみを用いて姿勢を算出する方法であってもよい。ステップS4の次にステップS5の処理が実行される。
【0130】
ステップS5において、CPU10は、2次元座標の基準位置を設定する。ここで、本実施形態では、CPU10は、3次元の仮想空間(ゲーム空間とは異なる)を定義し、入力装置8と所定の平面とが仮想的に配置されていると考えて2次元座標の算出を行う。図15は、2次元座標を算出するために用いられる仮想空間を示す図である。CPU10は、仮想空間において入力装置8のZ軸(図15に示すZ軸ベクトルVZ)の方向が指し示す平面Q上の位置Rを表す2次元座標を算出する。すなわち、仮想空間において入力装置8の姿勢を表すZ軸ベクトルVZを延ばした線分と、当該仮想空間における所定平面Qとの交点の位置Rの2次元座標を算出する。「Z軸ベクトルVZを延ばした線分」とは、Z軸ベクトルVZに平行でかつZ軸ベクトルVZを通る線分を意味する。なお、ここでは、仮想空間の位置を、入力装置8の姿勢を表すための座標系(X’Y’Z’座標系)によって表現するものとする。これによって、入力装置8の姿勢を示すデータとして上記姿勢データ77をそのまま用いることができるので、仮想空間における計算を容易に行うことができる。
【0131】
上記のように、本実施形態では、所定平面Q上の位置Rを2次元座標として算出する。そのため、ステップS5における基準位置の設定処理としては、CPU10は、現時点の入力装置8の姿勢に対応する上記位置Rを基準位置(原点)に設定する処理を行う。つまり、CPU10は、ステップS4で算出された姿勢に対応する位置Rが原点となるように、平面Q上のxy座標系を設定する。ステップS5で設定されたxy座標系を示すデータ(例えば、原点の位置とx軸およびy軸の向きとを示すデータ)は、メインメモリに記憶される。
【0132】
なお、平面Qは、どのように設定されてもよいが、本実施形態では、仮想空間における入力装置8の位置から所定距離で、上記Z軸ベクトルVZを延ばした線分と垂直に交わるように設定される。また、他の実施形態においては、CPU10は、仮想空間において1以上の平面を予め定義しておき、いずれかの平面上にxy座標系が設定されるようにしてもよい。例えば、仮想空間における入力装置8の位置の周囲四方に平面を定義しておき、4つの平面のうちのいずれかの上にxy座標系を設定するようにしてもよい。これによれば、4つの平面をY’Z’平面あるいはX’Y’平面のいずれかと平行となるように定義することによって、xy座標系における計算を容易にすることができる。
【0133】
上記ステップS5の次のステップS6において、剣動作処理(ステップS6)が実行される。剣動作処理は、プレイヤの操作に従って、プレイヤキャラクタ61に剣62を持った動作を行わせる処理である。このように、本実施形態では、上記ステップS5で2次元座標の基準位置が設定された直後に剣動作処理が開始されるので、剣62に対する操作の開始時点で基準位置が設定される。以下、図16を参照して、ステップS6の剣動作処理の詳細を説明する。
【0134】
図16は、図14に示す剣動作処理(ステップS4)の流れを示すフローチャートである。なお、剣動作処理におけるステップS10〜S19の処理ループは、後述するステップS18の処理が実行される場合を除いて、1フレーム時間に1回の割合で実行される。
【0135】
まずステップS10において、CPU10は操作データを取得する。ステップS10の処理は上述のステップS1と同じ処理である。ステップS10の次にステップS11の処理が実行される。
【0136】
ステップS11において、CPU10は、注目操作が行われたか否かを判定する。注目操作は、仮想カメラおよびプレイヤキャラクタ61を所定の注目対象の方へ向けるための操作である。具体的には、注目操作は、入力装置8の所定のボタン(例えば、Bボタン32i)を押下する操作である。すなわち、CPU10は、ステップS10で取得された操作データ71の操作ボタンデータ75を参照して、注目操作のための所定のボタンが押下されたか否かを判定する。ステップS11の判定結果が肯定である場合、ステップS12の処理が実行される。一方、ステップS11の判定結果が否定である場合、ステップS12〜S15の処理がスキップされてステップS16の処理が実行される。
【0137】
ステップS12〜S15の一連の処理は、仮想カメラおよびプレイヤキャラクタ61を所定の注目対象の方へ向ける処理である。まずステップS12において、CPU10は、注目操作が行われた直後であるか否か(注目操作のための所定のボタンが押下された直後であるか否か)を判定する。ステップS12の判定は、上記ステップS10で取得された操作データの1つ前に取得された操作データを参照することで行うことができる。つまり、上記1つ前に取得された操作データが、上記所定のボタンが押下されていないことを示す場合、注目操作が行われた直後であると判断することができる。ステップS12の判定結果が肯定である場合、ステップS13の処理が実行される。一方、ステップS12の判定結果が否定である場合、ステップS13およびS14の処理がスキップされてステップS15の処理が実行される。
【0138】
ステップS13において、CPU10は、仮想空間に配置されるオブジェクトのうちから所定の注目対象を選択する。選択すべき注目対象はどのように決定されてもよいが、例えば、プレイヤキャラクタ61の近傍に存在する敵オブジェクトや、プレイヤキャラクタ61の正面方向に近い位置に存在するオブジェクト等が注目対象として決定される。ステップS13の次にステップS14の処理が実行される。
【0139】
ステップS14において、CPU10は2次元座標の基準位置を再設定する。ステップS14の処理は、上述のステップS4およびS5の処理と同じである。つまり、CPU10は、現時点の入力装置8の姿勢を算出し、算出された姿勢に対応する上記平面Q上の位置Rが原点となるように、xy座標系を設定する。設定されたxy座標系を示すデータは、メインメモリに記憶される。ステップS14の次にステップS15の処理が実行される。このように、本実施形態では、注目操作が行われた場合に(ステップS12でYes)、ステップS14が実行されるので、プレイヤは、注目操作を行うことによって、基準位置をリセットすることができる。
【0140】
ステップS15において、CPU10は、ステップS13で選択された注目対象の方へ仮想カメラおよびプレイヤキャラクタ61を向ける。また、仮想カメラの位置は、注目対象を向くプレイヤキャラクタ61の後方の位置に決定される。これによって、プレイヤキャラクタ61の後方から注目対象の方を見たときのゲーム画像が表示されるので、プレイヤにとって注目対象が見やすいゲーム画像を表示することができる。なお、仮想カメラの位置は、仮想カメラから注目対象への直線上にプレイヤキャラクタ61が位置するように決定されてもよいが、当該直線上からややずれてプレイヤキャラクタ61が位置するように決定されることが好ましい。仮想カメラがプレイヤキャラクタ61の真後ろに位置すると、注目対象がプレイヤキャラクタ61に隠れてよく見えなくなる可能性があるからである。また、他の実施形態においては、CPU10は、仮想カメラだけを注目対象の方へ向け、プレイヤキャラクタ61に関しては向きを変更しないようにしてもよい。
【0141】
以上のように、上記ステップS11〜S15の処理によれば、注目操作が行われた場合、仮想カメラおよびプレイヤキャラクタ61が注目対象の方を向くので、プレイヤは、簡単な操作で見やすいゲーム画像を表示させることができる。また、注目操作が行われている間(所定のボタンが押下されている間)はステップS15の処理が実行されるので、プレイヤは、注目操作を行い続けることによって、仮想カメラおよびプレイヤキャラクタ61が注目対象の方を向く状態を継続することができる。つまり、注目操作を行っている間、プレイヤは注目対象を画面に表示させることができる。
【0142】
ステップS16において、CPU10は構え動作処理を実行する。構え動作処理は、プレイヤキャラクタ61が持つ剣62の向きを、プレイヤの操作に従って制御する処理である。以下、図17を参照して、ステップS16の構え動作処理の詳細を説明する。
【0143】
図17は、図16に示す構え動作処理(ステップS16)の流れを示すフローチャートである。構え動作処理においては、まずステップS21において、CPU10は、プレイヤによる操作に基づいてプレイヤキャラクタ61の位置を決定する。プレイヤキャラクタ61の移動は、どのように制御されてもよいが、ここでは、入力装置の十字ボタン32aに対する入力に従って制御される。具体的には、CPU10は、操作データ71の操作ボタンデータ75を参照して、十字ボタン32aのうちで押下された方向を特定し、押下された方向に応じた方向へプレイヤキャラクタ61を移動させる。移動後のプレイヤキャラクタ61の位置を示すデータは、メインメモリに記憶される。ステップS21の処理の次にステップS22の処理が実行される。
【0144】
ステップS22〜S24の処理は、操作データに基づいて入力装置8の姿勢を算出する処理である。まずステップS22において、CPU10は、メインメモリに記憶されている角速度データ72に基づいて入力装置8の姿勢を算出する。入力装置8の姿勢を角速度から算出する方法はどのような方法であってもよいが、本実施形態においては、姿勢は、前回の姿勢(前回に算出された姿勢)と、今回の角速度(今回の処理ループにおいて取得された角速度)とを用いて算出される。具体的には、CPU10は、前回の姿勢を今回の角速度で単位時間分回転させることによって、姿勢を算出する。なお、前回の姿勢は、メインメモリに記憶されている姿勢データ77により示され、今回の角速度は、メインメモリに記憶されている角速度データ72により示されている。ステップS22で算出された姿勢を示すデータが、姿勢データ77としてメインメモリに新たに記憶される。ステップS22の次にステップS23の処理が実行される。
【0145】
なお、角速度から姿勢を算出する場合、初期の姿勢がわかっている必要がある。つまり、角速度から姿勢を算出する場合(前回の姿勢が算出されていない場合)には、初期の姿勢を算出しておく必要がある。初期の姿勢は、加速度データに基づいて算出されてもよいし(後述するステップS23参照)、マーカ座標データに基づいて算出されてもよい(後述するステップS24参照)。また、初期の姿勢は、入力装置8を特定の姿勢にした状態でプレイヤに所定の操作を行わせることで、所定の操作が行われた時点の特定の姿勢を初期の姿勢として用いるようにしてもよい。
【0146】
ステップS23において、CPU10は、入力装置8の姿勢を加速度データ73を用いて補正する。具体的には、CPU10は、まず、加速度データ73に基づいて入力装置8の姿勢を算出する。ここで、加速度センサ37は、入力装置8がほぼ静止している状態では、入力装置8に対して加えられる重力加速度を検出するので、CPU10は、検出された重力加速度の方向(重力方向)を算出することができる。そのため、加速度センサ37が重力加速度を検出する状況では、加速度データ73を用いて、重力方向に対する入力装置の向き(姿勢)を算出することができる。
【0147】
加速度データ73に基づく姿勢を算出すると、次に、CPU10は、角速度データ72に基づく姿勢を、加速度データ73に基づく姿勢へ所定の割合で近づける補正を行う。この所定の割合は、予め定められた固定値であってもよいし、加速度データ73が示す加速度等に応じて設定されてもよい。また、加速度データ73に基づく姿勢に関しては、重力方向を軸とする回転方向については姿勢を算出することができないので、CPU10は、当該回転方向については補正を行わないようにしてもよい。ステップS23において補正された姿勢を示すデータが、姿勢データ77としてメインメモリに新たに記憶される。ステップS23の次にステップS24の処理が実行される。
【0148】
ステップS24において、CPU10は、入力装置8の姿勢をマーカ座標データ74を用いて補正する。具体的には、CPU10は、まず、マーカ座標データ74に基づいて入力装置8の姿勢を算出する。ここで、マーカ座標データ74は、撮像画像内におけるマーカ6Rおよび6Lの位置を示すので、これらの位置から、ロール方向(Z軸回りの回転方向)に関する入力装置8の姿勢を算出することができる。つまり、マーカ6Rの位置とマーカ6Lの位置とを結ぶ直線の傾きから、ロール方向に関する入力装置8の姿勢を算出することができる。また、マーカ部6に対する入力装置8の位置が特定できる場合(例えば、マーカ部6の正面に入力装置8が位置すると想定できる場合)には、撮像画像内におけるマーカ部6の位置から、ピッチ方向およびヨー方向に関する入力装置8の姿勢を算出することができる。例えば、マーカ6Rの位置とマーカ6Lの位置との中点の位置から、ピッチ方向およびヨー方向に関する入力装置8の姿勢を算出することができる。なお、入力装置8の撮像素子40によってマーカ部6が撮像されていない場合は、マーカ座標データ74に基づく姿勢を算出することができないので、ステップS24の処理はスキップされてもよい。
【0149】
マーカ座標データ74に基づく姿勢を算出すると、次に、CPU10は、ステップS23で補正された姿勢を、マーカ座標データ74に基づく姿勢へ所定の割合で近づける補正を行う。この所定の割合は、予め定められた固定値であってもよい。また、ステップS24における補正は、ロール方向、ピッチ方向、およびヨー方向のいずれか1つまたは2つの方向のみについて行われてもよい。例えば、マーカ座標データ74を用いる場合、ロール方向については精度良く姿勢を算出することができるので、CPU10は、ロール方向についてのみ、マーカ座標データ74に基づく姿勢を用いて補正を行ってもよい。ステップS24において補正された姿勢を示すデータが、姿勢データ77としてメインメモリに新たに記憶される。ステップS24の次にステップS25の処理が実行される。
【0150】
以上のステップS22〜S24の処理によって、入力装置8の姿勢が算出される。ここで、入力装置8の姿勢を算出する方法のうち、角速度を用いる方法では、入力装置8がどのような向きであっても姿勢を算出することができる。一方、角速度を用いる方法では、逐次検出される角速度を累積加算していくことによって姿勢を算出するので、誤差が累積すること等によって精度が悪くなったり、いわゆる温度ドリフトの問題でジャイロセンサの精度が悪くなったりするおそれがある。また、加速度を用いる方法は、入力装置8がどのような向きであっても姿勢を算出することができる一方、入力装置8が激しく動かされている状態では、(重力方向を検出することができないので)姿勢を精度良く算出することができない。また、マーカ座標を用いる方法は、姿勢(特にロール方向の姿勢)を正確に算出することができる一方、(入力装置8の撮像方向にマーカ部6がなければマーカ座標が検出されないので)入力装置8の向きによっては姿勢を算出することができない。本実施形態によれば、上記のように特長の異なる3種類の方法を用いるので、入力装置8の姿勢をより正確に算出することができる。なお、本実施形態では、ゲーム装置3は、上記3つの方法を用いて入力装置8の姿勢を算出するが、他の実施形態においては、3つの方法のうちいずれか1つまたは2つを用いて姿勢を算出するようにしてもよい。
【0151】
ステップS25において、CPU10は、入力装置8の姿勢に基づいて上記2次元座標を算出する。上述のように、2次元座標は、入力装置8が仮想的に配置される仮想空間において、入力装置8のZ軸ベクトルVZを延ばした線分と、所定平面Qとの交点の位置Rを表す座標として算出される(図15参照)。以下、図18を参照して、2次元座標の算出方法の詳細を説明する。
【0152】
図18は、図15に示す仮想空間をy軸正方向側から負方向側へ見た図である。図18においては、入力装置8の位置を表す点Sから、当該点Sを平面Qに投影させた点(投影点)Tまでの長さを“L”とする。また、投影点Tから上記交点Rまでの、x成分に関する長さを“Wx”とする。本実施形態では、上記長さLの値は、所定のタイミング(例えば、ゲーム処理が開始されるタイミング等)でプレイヤによって設定される。メインメモリには、プレイヤによって設定された長さLの値を示すデータ(長さデータと呼ぶ)が記憶される。
【0153】
上記Z軸ベクトルVZは、入力装置8の姿勢により決まる。すなわち、上記Z軸ベクトルVZの各成分(Zx,Zy,Zz)は、姿勢を表す回転行列の要素の一部であり、算出済みの値である。また、図18から明らかなように、上記長さWxと上記長さLとの比は、Z軸ベクトルVZのx成分(Zx)とZ軸ベクトルVZのz成分(Zz)との比に等しくなるという関係がある。したがって、この関係に基づいて、算出済みのベクトルVZのx成分Zx、z成分Zz、および既知の長さLから、長さWxを算出することができる。具体的には、次の式(1)によって長さWxを算出することができる。
Wx=L×Zx/Zz …(1)
また、x成分の長さWxと同様に、投影点Tから交点Rまでのy成分の長さWyは、次の式(2)によって算出することができる。
Wy=L×Zy/Zz …(2)
【0154】
上記長さWxおよびWyが得られれば、平面Q上における交点Rの位置を示す2次元座標を算出することができる。本実施形態では、平面Q上のxy座標系は、入力装置8のZ軸ベクトルを延ばした直線と原点とが交わるように設定される。つまり、上記投影点Tの位置がxy座標系の原点となる。したがって、交点Rの2次元座標は(Wx,Wy)となる。
【0155】
ステップS25における具体的な処理を説明すると、CPU10は、まずメインメモリから姿勢データ77および長さデータを読み出す。そして、姿勢データ77により示される回転行列からZ軸ベクトルの各成分Zx、Zy、およびZzと、長さデータにより示される長さLとを上式(1)および(2)に代入することによって上記長さWxおよびWyを算出する。これによって、平面Q上における交点Rの2次元座標(Wx,Wy)が得られたこととなる。CPU10は、2次元座標を示すデータを座標データ78としてメインメモリに記憶する。ステップS25の次にステップS26の処理が実行される。
【0156】
上記ステップS25のように、本実施形態では、入力装置8の姿勢に応じた2次元座標を算出するために、入力装置8の姿勢を算出し、さらに、仮想空間において入力装置8が指し示す所定平面Q上の位置を算出した。ここで、他の実施形態においては、2次元座標は、入力装置8の姿勢に応じて変化するように、角速度に基づいて算出されればどのような方法で算出されてもよい。2次元座標は、例えば、角速度データが示す角速度に応じて変化するように算出されてもよい。具体的には、CPU10は、基準位置を設定する時点で2次元座標を原点に設定し、その時点以降は、取得される角速度の向きに応じた方向に、角速度の大きさに応じた移動量で座標を移動させることで、2次元座標を逐次算出するようにしてもよい。
【0157】
図17の説明に戻り、ステップS26において、CPU10は、2次元座標に応じて向きを変えるように剣62を制御する。つまり、2次元座標に応じた方向へ剣62を向ける動作をプレイヤキャラクタ61に行わせる。具体的には、CPU10は、メインメモリから座標データ78を読み出し、座標データ78が示す2次元座標に基づいて剣62の向きを算出する。ここで、プレイヤキャラクタ61の正面方向に対する剣62の向きは、原点から2次元座標への方向に応じた向きとなるように算出される。また、正面方向に対して剣62が傾く大きさは、原点から2次元座標までの距離に応じた大きさとなるように算出される。算出された剣62の向きを示すデータは、剣データ79としてメインメモリに記憶される。なお、CPU10は、ゲーム画像を生成して表示する処理において、上記剣データ79を参照して剣62の向きを特定し、プレイヤキャラクタ61は、剣62の向きが剣データ79が示す向きとなるようにプレイヤキャラクタ61を動作させる。そして、プレイヤキャラクタ61を含む仮想空間を表すゲーム画像を生成して画面に表示する。上記ステップS26の後、CPU10は、図17に示す構え動作処理を終了する。
【0158】
上記ステップS26によって、剣62の向きは、入力装置8の姿勢に概ね対応するように制御される。ただし、剣62の向きと入力装置8の姿勢とは完全に一致する必要はない。入力装置8についてはプレイヤが自由な向きに向けることができる一方、剣62の向きについては、プレイヤキャラクタ61の動作が不自然にならないように、剣62の可動範囲に制限を設けてもよい。例えば、2次元座標が原点から所定距離以上離れた場合(入力装置8が基準姿勢から所定角度以上回転した場合)には、剣62の向きがそれ以上変化しないようにしてもよい。
【0159】
図16の説明に戻り、ステップS16の次のステップS17において、CPU10は、振り操作が行われたか否かを判定する。振り操作は、プレイヤキャラクタ61に剣62を振らせる指示のための操作である。本実施形態において、振り操作は入力装置8を振る操作である。振り操作が行われたか否かの判定は、どのように行われてもよく、角速度データ72あるいは加速度データ73を用いて行われてもよいし、上記ステップS22〜S24で算出される入力装置8の姿勢を用いて行われてもよい。すなわち、最新のものから順に複数の角速度データ72を参照して、一定期間内における入力装置8の回転量および回転方向を算出することによって上記判定を行うことができる。また、上記剣抜き操作(ステップS2)と同様、入力装置8に対して所定値以上の加速度が加えられたか否かを、加速度データ73を用いて判断することによって上記判定を行うことができる。また、上記ステップS22〜S24で算出される入力装置8の姿勢の変化を算出することによっても上記判定を行うことができる。ステップS17の判定結果が肯定である場合、ステップS18の処理が実行される。一方、ステップS17の判定結果が否定である場合、ステップS18の処理がスキップされてステップS19の処理が実行される。
【0160】
ステップS18において、CPU10は、振り動作処理を実行する。振り動作処理は、プレイヤキャラクタ61に剣62を振る動作を行わせる処理である。以下、図19を参照して、ステップS18の振り動作処理の詳細を説明する。
【0161】
図19は、図16に示す振り動作処理(ステップS18)の流れを示すフローチャートである。振り動作処理においては、まずステップS31において、CPU10は、入力装置8が振られた方向(振り方向)を算出する。なお、振り方向の算出方法はどのような方法でもよい。CPU10は、上記ステップS17で述べたように、角速度データ72あるいは加速度データ73を用いて振り方向を算出してもよいし、入力装置8の姿勢を用いて振り方向を算出してもよい。ステップS31の次にステップS32の処理が実行される。
【0162】
ステップS32において、CPU10は、振り方向に応じた向きにプレイヤキャラクタ61に剣62を振る動作を行わせる。すなわち、CPU10は、ステップS31で算出される入力装置8の振り方向に応じた向きに剣62を振る動作をプレイヤキャラクタ61に行わせる。なお、ステップS32における、剣62を振る動作を表すゲーム画像の生成・表示処理は、複数フレームにわたって実行されてもよい。また、他の実施形態においては、剣62を振る動作は、入力装置8の振り方向に応じた向きに行われなくてもよく、予め定められた特定の向きに剣62を振る動作であってもよい。ステップS32の処理の次にステップS33の処理が実行される。
【0163】
ステップS33において、CPU10は、剣62の軌跡の画像を生成して表示する。これは、剣62を振った方向をプレイヤにわかりやすく視認させるためである。したがって、剣62の軌跡の画像は、プレイヤキャラクタ61が剣62を振り終わった少し後で表示されるようにしてもよい。ステップS33の次にステップS34の処理が実行される。
【0164】
ステップS34において、CPU10は、剣62を振ったことによるエフェクトが発生させるか否かを判定する。剣62を振ったことによるエフェクトとは、例えば、敵オブジェクトが剣62で切られたり、壊されたりしたことを表す画像である。ステップS34における判定は、剣62が他のオブジェクトに接触したか否かによって行われる。ステップS34の判定結果が肯定である場合、ステップS35の処理が実行される。一方、ステップS34の判定結果が否定である場合、ステップS35の処理がスキップされて、CPU10は振り動作処理を終了する。
【0165】
ステップS35において、CPU10は、剣62の振り方向に応じたエフェクトを生成して表示する。つまり、剣62の振り方向に応じて異なるエフェクトが生成されて表示される。例えば、CPU10は、剣62の振り方向に応じた向きにオブジェクトが切れる様子を表す画像を生成して表示してもよい。このとき、剣62の振り方向とエフェクトが表す方向とは厳密に一致している必要はない。例えば、CPU10は、処理を簡易化する等の目的で、複数のパターンのエフェクト(例えば上下左右と斜めの8方向に対応するエフェクト)を用意しておき、剣62の振り方向に応じたパターンのエフェクトを表示するようにしてもよい。また、エフェクトは、剣62の振り方向が特定の方向である場合にのみ表示されてもよい。例えば、剣62を特定の方向に振った場合にだけ攻撃が有効となる敵オブジェクトを登場させ、剣62を当該特定の方向に振った場合にだけエフェクト(攻撃が当たったことを表すエフェクト)を表示するようにしてもよい。また、オブジェクトの種類によっては、振り方向にかかわらず同じエフェクトが表示されるようにしてもよい。ステップS35の後、CPU10は振り動作処理を終了する。
【0166】
以上のように、上記振り動作処理によれば、入力装置8を振った方向に応じた方向に剣62を振るようにプレイヤキャラクタ61を動作させることができる。また、剣62の振り方向に応じて異なるゲーム効果が生じるようにすることで、ゲームの興趣性をより向上することができる。
【0167】
なお、上記振り動作処理においては、上記2次元座標はゲーム入力としては用いられなかった。つまり、入力装置8の振り操作の判定には2次元座標は用いられなかった。ここで、他の実施形態においては、入力装置8の振り操作の判定に2次元座標を用いるようにしてもよい。例えば、CPU10は、2次元座標の移動量によって振り操作が行われたか否かを判定し、2次元座標の移動方向によって振り方向を算出するようにしてもよい。
【0168】
図16の説明に戻り、ステップS18の次のステップS19において、CPU10は、剣動作処理を終了するか否かを判定する。ステップS19の判定は、操作データ71の操作ボタンデータ75を参照し、剣62をしまう操作(例えば、入力装置8の所定のボタンを押下する操作)が行われたか否かによって行うことができる。ステップS19の判定結果が否定である場合、ステップS10の処理が再度実行される。以降、ステップS19で剣動作処理を終了すると判定されるまで、ステップS10〜S19の処理が繰り返し実行される。一方、ステップS19の判定結果が肯定である場合、CPU10は剣動作処理を終了する。
【0169】
上記剣動作処理によれば、2次元座標に基づくゲーム処理として、プレイヤキャラクタ61が構える剣62の向きを2次元座標に応じて変化させる処理が実行される。このとき、2次元座標の基準位置は、剣動作処理を開始するための操作である剣抜き操作が行われたことに応じて設定される(ステップS5)。したがって、プレイヤは、剣抜き操作を行った時の入力装置8の姿勢を基準姿勢として、剣62の向きを操作することができる。つまり、プレイヤは、剣62の操作を行う場合、入力装置8を自由な向きに向けて剣抜き操作を行い、その後の剣62の操作も入力装置8を自由な向きに向けて行うことができる。
【0170】
また、上記剣動作処理によれば、注目操作が行われた場合(ステップS11でYes)、基準位置が再設定される(ステップS14)。つまり、プレイヤは、剣を操作している途中で基準位置を再設定することができる。ここで、本実施形態では、入力装置8を自由な向きに向けてゲーム操作を行うことができるために、剣操作の途中で、プレイヤが剣動作を開始した時点での入力装置8の姿勢(基準姿勢)がどこであったかがわからなくなる可能性がある。つまり、プレイヤが剣62を初期状態(プレイヤキャラクタ61の正面方向を向く状態)に戻すことが難しくなってしまう可能性がある。これに対して、本実施形態によれば、剣動作処理の途中に基準位置を再設定することによって、プレイヤは、剣62を初期状態に容易に戻すことができる。
【0171】
さらに、上記注目操作は、仮想カメラおよびプレイヤキャラクタ61を注目対象の方へ向ける操作である。仮想カメラの向きが変わると、表示される剣62の向きが表示上変化するので、表示される剣の向きと入力装置8の姿勢との関係が変化する。これによって、プレイヤが違和感を抱くおそれがある。これに対して、本実施形態によれば、注目操作が行われた場合には、基準位置が再設定されて剣62が初期状態に戻るので、プレイヤに上記の違和感を与えることを防止することができる。
【0172】
図14の説明に戻り、剣動作処理(ステップS6)の次のステップS7において、CPU10は、アイテム選択操作が行われたか否かを判定する。アイテム選択操作は、プレイヤキャラクタ61に剣62以外のアイテムを使用させるための操作である。詳細は後述するが、アイテム選択操作が行われると、アイテム選択画面が表示され、アイテム選択画面においてプレイヤはプレイヤキャラクタ61が使用するアイテムを選択する。アイテム選択操作は、入力装置8の所定のボタン(例えば、1番ボタン32b)を押下する操作である。CPU10は、ステップS1と同様に操作データ71を取得し、操作データ71の操作ボタンデータ75を参照して、アイテム選択操作のための所定のボタンが押下されたか否かを判定する。ステップS7の判定結果が肯定である場合、ステップS8の処理が実行される。一方、ステップS7の判定結果が否定である場合、ステップS1の処理が再度実行される。
【0173】
ステップS8において、CPU10はアイテム処理を実行する。アイテム処理は、剣62以外のアイテムを使用する動作をプレイヤキャラクタ61に行わせるための処理である。以下、図20を参照して、ステップS8のアイテム処理の詳細を説明する。
【0174】
図20は、図14に示すアイテム処理(ステップS8)の流れを示すフローチャートである。アイテム処理においては、まずステップS41において、CPU10はアイテム選択処理を実行する。アイテム選択処理は、プレイヤキャラクタ61が使用するアイテムをプレイヤに選択させるための処理である。アイテム選択処理においては、プレイヤキャラクタ61が使用するアイテムの候補のうちから、2次元座標に応じて1つのアイテムが選択され、所定のアイテム選択操作が行われた時点で選択されているアイテムが、プレイヤキャラクタが使用するアイテムに決定される。以下、図21を参照して、ステップS41のアイテム選択処理の詳細を説明する。
【0175】
図21は、図20に示すアイテム選択処理(ステップS41)の流れを示すフローチャートである。アイテム選択処理においては、まずステップS61において、CPU10は、アイテム選択画面を表示する。アイテム選択画面は、例えば、プレイヤキャラクタ61が使用可能なアイテムを表す画像(アイコン)が表示される画面である。ステップS61の次にステップS62の処理が実行される。
【0176】
ステップS62において、CPU10は上記2次元座標の基準位置を設定する。ステップS62の処理は上述のステップS4およびS5の処理と同じである。このように、本実施形態においては、アイテムを選択する操作の開始時において2次元座標の基準位置が設定される。ステップS62の次にステップS63の処理が実行される。
【0177】
ステップS63において、CPU10は操作データを取得する。ステップS63の処理は上述のステップS1の処理と同じである。なお、アイテム選択処理においては、ステップ63〜S66の処理ループが1フレーム時間に1回の割合で繰り返し実行される。ステップS63の次にステップS64の処理が実行される。
【0178】
ステップS64において、CPU10は上記2次元座標を算出する。ステップS64における2次元座標の算出方法は、上述したステップS22〜S25における算出方法と同じである。ステップS64の次にステップS65の処理が実行される。
【0179】
ステップS65において、CPU10は、ステップS64で算出された2次元座標に対応する表示画面上の位置にカーソルを表示する。まず、CPU10は、表示画面上におけるカーソルの位置を2次元座標に基づいて算出する。カーソルの位置は、2次元座標に基づいて算出されればどのように算出されてもよいが、本実施形態においては例えば次のようにして算出される。すなわち、カーソルの位置は、2次元座標が原点である場合には画面中央の位置に決められる。また、2次元座標が原点である場合には、画面中央の位置に対するカーソルの位置が、原点に対する2次元座標の方向に応じた方向で、かつ、原点から2次元座標までの距離に応じた距離となるように決められる。カーソルの位置を算出すると、CPU10は、上記アイテム選択画面に重ねて、算出された位置にカーソルを表示する。これによって、アイテムを表すアイコン画像とともに、プレイヤによって操作されるカーソルが表示されることとなる。ステップS65の次にステップS66の処理が実行される。
【0180】
ステップS66において、CPU10は、アイテムが選択されたか否かを判定する。すなわち、CPU10は、カーソルがアイテムのアイコン画像を指し示す状態で、アイテム選択操作が行われたか否かを判定する。アイテム選択操作は、プレイやキャラクタ61が使用するアイテムを決定するための操作であり、例えば、入力装置の所定のボタンを押下する操作である。ステップS66の判定結果が肯定である場合、CPU10はアイテム選択処理を終了する。この場合、アイテム選択操作が行われた時点でカーソルが指し示していたアイテムが、プレイヤキャラクタ61が使用するアイテムとして選択されたこととなる。一方、ステップS66の判定結果が否定である場合、ステップS63の処理が再度実行される。以降、ステップS66においてアイテムが選択されたと判定されるまで、ステップS63〜S66の処理ループが繰り返し実行される。
【0181】
以上のアイテム選択処理に示したように、本実施形態においては、プレイヤキャラクタ61が使用するアイテムを選択・決定する操作において、上記2次元座標が用いられる。また、2次元座標の基準位置は、アイテムを選択・決定する操作の開始時(ステップS62)において設定されるので、当該操作においても上記剣62の操作と同様、入力装置8を好きな向きに向けてゲーム操作を行うことができる。
【0182】
なお、他の実施形態においては、アイテム選択処理は、2次元座標に基づいて行われなくてもよい。例えば、アイテム選択処理の上記ステップS65において、CPU10は、2次元座標に代えて、ステップS22〜S24で算出される入力装置8の姿勢に基づいてカーソルの位置を算出するようにしてもよい。
【0183】
図20の説明に戻り、アイテム選択処理(ステップS41)が終了すると、ステップS42〜S55の処理において、ステップS66で決定されたアイテムを使用する動作をプレイヤキャラクタ61に行わせる処理が実行される。本実施形態では、プレイヤキャラクタ61が弓を使用する動作は上記2次元座標に基づいて制御されるものとし、図20のステップS42〜S55の処理においては、弓を使用する場合の処理について主に説明する。ステップS42〜S55の処理においては、2次元座標に対応する仮想空間内の位置を指示する照準画像64が表示され、入力装置8に対する所定の発射操作があったことに応じて、照準画像64が示す方向へ矢を発射するゲーム処理が実行される。
【0184】
ステップS42において、CPU10は、上記ステップS41のアイテム選択処理において弓が選択されたか否かを判定する。ステップS42の判定結果が否定である場合、ステップS43において、CPU10は、弓以外の他のアイテムをプレイヤキャラクタ61が使用する動作を制御する処理を実行する。なお、他のアイテムはどのようなものであってもよいし、また、他のアイテムの操作方法や動作の制御方法もどのようなものであってもよい。他のアイテムが例えばパチンコやブーメラン等、物体を飛ばす(発射する)アイテムである場合には、当該アイテムに関しては弓と同じ操作方法を採用してもよい。つまり、本実施形態における弓の操作方法は、物体を飛ばす他のアイテムについて用いることも可能である。ステップS43の次に、後述するステップS54の処理が実行される。一方、ステップS42の判定結果が肯定である場合、ステップS44の処理が実行される。
【0185】
ステップS44〜S46の処理は、上述したステップS62〜S64の処理と同様である。すなわち、ステップS44において、CPU10は上記2次元座標の基準位置を設定する。つまり、本実施形態においては、弓を使用する操作の開始時において、2次元座標の基準位置が設定される。ステップS44に続くステップS45において、CPU10は操作データを取得する。なお、本実施形態においては、弓を使用する動作を終了するまでの間、ステップS53の処理が実行される場合を除き、ステップ45〜S55の処理ループが1フレーム時間に1回の割合で繰り返し実行される。ステップS45に続くステップS46において、CPU10は上記2次元座標を算出する。ステップS46の次にステップS47の処理が実行される。
【0186】
ステップS47において、CPU10は、仮想空間(ゲーム空間)の画像を照準画像64とともにテレビ2の画面に表示させる。ここで、照準画像64は、上記2次元座標に応じた位置に表示される。ステップS47の処理は、具体的には次のようにして実行される。
【0187】
まず、CPU10は、2次元座標に基づいて照準画像64の表示位置を算出する。表示位置の具体的な算出方法は、上記カーソルの位置の算出方法(上記ステップS65)と同じであってもよい。ステップS47で算出された照準画像64の位置を示すデータは、表示位置データ80としてメインメモリに記憶される。
【0188】
次に、CPU10は、メインメモリからカメラデータ81を読み出し、仮想カメラの位置から仮想カメラの方向に見た仮想空間の画像を生成する。なお、弓の操作中においては、図10に示すような、いわゆる1人称視点のゲーム画像(プレイヤキャラクタ61から見た仮想空間の画像)が表示されるので、仮想カメラの位置は、プレイヤキャラクタ61の位置に基づいて決定される。また、仮想カメラの方向は、後述するステップS51で更新される。
【0189】
最後に、CPU10は、メインメモリから表示位置データ80を読み出し、仮想空間の画像に対して、表示位置データ80が示す位置に照準画像64を重ねた画像を表示する。以上のステップS47の処理によって、仮想空間を表す画像とともに、プレイヤによって操作される照準画像64が表示されることとなる。ステップS47の次にステップS48の処理が実行される。
【0190】
なお、本実施形態では、弓の操作中においては、プレイヤはより細かい精度で照準画像64の位置を調整しやすいように、ゲーム画像をズームアップ/ズームダウンすることができるものとする。そのため、本実施形態においては、CPU10は、弓の操作中においては1人称視点のゲーム画像を表示させるものとするが、他の実施形態においては、図8に示すようにプレイヤキャラクタ61を含むゲーム画像を弓の操作中において表示させるようにしてもよい。
【0191】
ステップS48において、CPU10は、リセット操作が行われたか否かを判定する。リセット操作は、弓の操作中において2次元座標の基準位置を再設定(リセット)するための操作である。リセット操作は、例えば、入力装置8の所定のボタンを押下する操作である。具体的には、CPU10は、ステップS45で取得された操作データ71の操作ボタンデータ75を参照して、リセット操作のための所定のボタンが押下されたか否かを判定する。ステップS48の判定結果が肯定である場合、ステップS49の処理が実行される。一方、ステップS48の判定結果が否定である場合、ステップS49の処理がスキップされてステップS50の処理が実行される。
【0192】
ステップS49において、CPU10は2次元座標の基準位置を再設定する。ステップS49の処理は、ステップS44(上記ステップS4およびS5)の処理と同じである。つまり、CPU10は、現時点の入力装置8の姿勢を算出し、算出された姿勢に対応する上記平面Q上の位置Rが原点となるように、xy座標系を設定する。設定されたxy座標系を示すデータは、メインメモリに記憶される。ステップS49の次にステップS50の処理が実行される。このように、本実施形態では、プレイヤは、弓の操作中においては、リセット操作によって基準位置をリセットすることができる。
【0193】
ステップS50において、CPU10は、照準画像64の位置が画面の周付近にあるか否かを判定する。具体的には、画面(表示領域)の周から所定距離以内の位置に照準画像64があるか否かを判定する。なお、照準画像64の位置は、表示位置データ80をメインメモリから読み出して参照することによって知ることができる。ステップS50の判定結果が肯定である場合、ステップS51の処理が実行される。一方、ステップS50の判定結果が否定である場合、ステップS51の処理がスキップされてステップS52の処理が実行される。
【0194】
ステップS51においては、CPU10は、照準画像64の位置に応じて仮想カメラの方向を変更する。本実施形態では、照準画像64が画面の端部から所定距離以内の位置にない場合には、仮想カメラは移動しない。したがって、図10および図12に示したように、照準画像64が画面中央に位置する場合(2次元座標が基準位置となる場合)には、仮想カメラは移動しない。また、照準画像64が画面の端部から所定距離以内の位置にある場合には、仮想カメラは、照準画像64の位置に応じた方向へ移動される。すなわち、照準画像64が画面の右端部から所定距離以内の位置にある場合には仮想カメラは右方向へ回転移動させられ、照準画像64が画面の左端部から所定距離以内の位置にある場合には仮想カメラは左方向へ回転移動させられる。また、照準画像64が画面の上端部から所定距離以内の位置にある場合には仮想カメラは上方向へ回転移動させられ、照準画像64が画面の下端部から所定距離以内の位置にある場合には仮想カメラは下方向へ回転移動させられる。また、本実施形態においては、照準画像64が画面の端部に近づくほど仮想カメラの移動量(回転量)は大きくなる。つまり、CPU10は、2次元座標が基準位置から離れている度合に応じて仮想カメラを移動させる。なお、仮想カメラを上下方向に180°回転すると、画面に表示される画像が上下反対になってしまうので、上下方向に関しては、仮想カメラの向きに制限を設けるようにしてもよい。例えば、仮想カメラが真上または真下の向きまでしか回転しないようにしてもよい。
【0195】
CPU10は、移動(変更)後の仮想カメラの方向(および位置)を示すデータをカメラデータ81としてメインメモリに記憶する。上記ステップS47において仮想空間の画像を生成する際にこのカメラデータ81が用いられることによって、仮想空間内の表示対象領域がスクロールして表示されることになる。なお、ステップS51の処理は1フレーム時間毎に実行されるので、プレイヤは、照準画像64を画面の端部付近に位置させることによって、仮想カメラを継続的に回転させることができ、画面をスクロールさせることができる。また、照準画像64に基づく仮想カメラの制御方法はどのような方法であってもよく、他の実施形態においては、仮想カメラの方向に代えて(あるいは、方向に加えて)、仮想カメラの位置を変更するようにしてもよい。上記ステップS51の次にステップS52の処理が実行される。
【0196】
ステップS52において、CPU10は、発射操作が行われたか否かを判定する。発射操作は、プレイヤキャラクタ61に矢を発射させる操作である。発射操作は、入力装置8の所定のボタン(例えば、Aボタン32d)を押下する操作である。すなわち、CPU10は、ステップS10で取得された操作データ71の操作ボタンデータ75を参照して、注目操作のための所定のボタンが押下されたか否かを判定する。ステップS52の判定結果が肯定である場合、ステップS53の処理が実行される。一方、ステップS52の判定結果が否定である場合、ステップS53の処理がスキップされてステップS54の処理が実行される。
【0197】
ステップS53において、CPU10は、照準画像64が示す方向に向けてプレイヤキャラクタ61に矢を発射させる動作を行わせる。すなわち、発射操作が行われた場合、CPU10は、照準画像64が示す方向に向けて矢が飛んでいく画像を生成して画面に表示する処理を実行する。なお、この処理は、複数フレームにわたって実行されてもよい。また、「照準画像64が示す方向」とは、仮想カメラあるいはプレイヤキャラクタ61の位置から、照準画像64が示す仮想空間内の位置への方向である。つまり、本実施形態においては、照準画像64は矢の発射方向を示すものである。ただし、他の実施形態においては、照準画像64は着弾位置を示すものであってもよい。ステップS53の次にステップS54の処理が実行される。
【0198】
ステップS54において、CPU10は、アイテム選択操作が行われたか否かを判定する。ステップS54の処理は、上述のステップS7の処理と同じである。ステップS54の判定結果が肯定である場合、上記ステップS41の処理が再度実行される。この場合、プレイヤキャラクタ61が使用するアイテムが再度選択され、選択されたアイテムを使用する動作が行われる。一方、ステップS54の判定結果が否定である場合、ステップS55の処理が実行される。
【0199】
ステップS55において、CPU10は、アイテムを使用する動作を終了するか否かを判定する。ステップS55の判定は、アイテムを使用する動作を終了するための所定の操作(例えば、2番ボタン32cを押下する操作)が行われたか否かによって行われる。ステップS55の判定結果が否定である場合、上記ステップS45の処理が再度実行される。この場合、弓の操作が引き続き行われることなる。一方、ステップS55の判定結果が肯定である場合、CPU10はアイテム処理を終了する。
【0200】
図14の説明に戻り、アイテム処理(ステップS8)を終了すると、ステップS1の処理が再度実行される。以降、ゲームを終了するまで、ステップS1〜S8の処理が繰り返し実行される。なお、CPU10は、ゲームがクリアされた場合や、ゲームオーバーとなった場合や、プレイヤがゲームを中止する指示を行った場合等にゲームを終了する。以上で、図14に示すゲーム処理の説明を終了する。
【0201】
以上のように、本実施形態によれば、プレイヤによる所定の指示入力があった場合(ステップS2,S7,S11,S48,S66でYesとなる場合)に、2次元座標の基準位置が設定される(ステップS5,S62,S14,S49,S44)。その後、2次元座標は、基準位置を基準としたときの位置を表すものとして、角速度データに基づいて算出される(S25,S46,S64)。そして、算出された2次元座標をゲーム入力としてゲーム処理が実行される(S26,S47,S65)。
【0202】
上記によれば、2次元座標は、所定の指示入力があった時の入力装置8の姿勢を基準姿勢として、基準姿勢からの姿勢を反映するものとなる。そして、この2次元座標がゲーム入力として用いられるので、プレイヤは、基準姿勢から入力装置8の姿勢を変化させることによってゲーム操作を行うことができる。また、上記によれば、上記基準位置はプレイヤによる所定の指示入力があった場合に設定される。つまり、プレイヤは好きな時に基準位置を設定することができるので、プレイヤは、基準姿勢を自由に設定することができる。以上より、本実施形態によれば、プレイヤが自由に設定できる姿勢を基準姿勢として、その基準姿勢から入力装置8の姿勢を変化させるゲーム操作を行うことができる。したがって、本実施形態によれば、プレイヤが入力装置8を自由な方向に向けて容易にゲーム操作を行うことができる。
【0203】
[変形例]
(ゲーム処理に関する変形例)
上記実施形態では、2次元座標に基づくゲーム処理の例として、所定のオブジェクト(剣62)の向きを制御する処理(ステップS26)、照準画像の位置を制御して照準画像が示す方向へ矢を発射する処理(ステップS47,S53)、および、カーソルの位置を制御してカーソルが指し示すアイテムを選択する処理(ステップS65,S66)を挙げた。ここで、他の実施形態においては、2次元座標に基づくゲーム処理は、上記3つの処理に限らず、どのような処理であってもよい。例えば、ゲーム装置は、オブジェクトの移動方向を2次元座標に基づいて決定するゲーム処理や、2次元座標に基づいてカーソルの位置を制御してカーソルが指し示すオブジェクトに対して何らかの処理を行うゲーム処理等を実行してもよい。
【0204】
(基準位置の設定タイミングに関する変形例)
上記実施形態においては、基準位置を設定するタイミングとして、(a)2次元座標に基づくゲーム処理を開始するタイミング(ステップS5,S44,S62)と、(b)2次元座標に基づくゲーム処理の途中のタイミング(ステップS14,S49)との2通りの例を説明した。ここで、他の実施形態においては、基準位置の設定は、プレイヤの指示入力があったことに応じて行われれば、どのようなタイミングであってもよい。すなわち、基準位置を設定するタイミングは、2次元座標に基づくゲーム処理を開始するタイミングとは別であってもよく、基準位置を設定するための操作は、当該ゲーム処理を開始するための操作と別であってもよい。
【0205】
(ゲーム入力として用いる情報に関する変形例)
上記実施形態においては、入力装置8の姿勢に応じた値となる2次元座標をゲーム入力として用いる場合を例として説明した。ここで、他の実施形態においては、ゲーム装置は、入力装置8の姿勢をゲーム入力として用いるようにしてもよい。すなわち、ゲーム装置3は、プレイヤによる所定の指示入力があった場合、指示入力があった時点で取得された操作データ(角速度データ)に基づいて算出される入力装置8の姿勢を基準姿勢とし、基準姿勢に対する姿勢の変化をゲーム入力として用いるようにしてもよい。図14に示すゲーム処理に即して言えば、CPU10は、ステップS5において、ステップS4で算出された姿勢を基準姿勢として設定してもよい。そして、ステップS26において、ステップS22〜S24で算出された姿勢の、基準姿勢に対する変化量および/または変化方向に基づいて、剣62を向ける動作を制御してもよい。
【0206】
(ネットワークを介したゲームシステムに関する変形例)
上記実施形態においては、角速度データを取得してから2次元座標に基づく処理を実行するまでの一連の処理が単一のゲーム装置で実行される場合を例として説明した。ここで、他の実施形態においては、上記の一連の処理は、複数の情報処理装置からなるゲームシステムにおいて実行されてもよい。つまり、本発明は、複数の情報処理装置からなるゲームシステムの形態で実現されてもよい。例えば、端末装置とサーバ装置とからなるゲームシステムに本発明を適用することも可能である。具体的には、端末装置は、ジャイロセンサを備え、角速度データをネットワークを介してサーバ装置へ送信する。サーバ装置は、受信した角速度データに基づいて2次元座標を算出するとともに、2次元座標に基づくゲーム処理を実行し、ゲーム処理の結果を端末装置へ送信する。端末装置は、ゲーム処理の結果に基づいてゲーム画像を生成して表示画面に表示する。以上のゲームシステムによっても、上記実施形態と同様の効果を得ることができる。また、上記のゲームシステムにおいて、サーバ側のシステムは、ネットワークを介して互いに通信可能な複数の情報処理装置によって構成されてもよく、複数の情報処理装置が一連の処理を分担して実行するようにしてもよい。
【産業上の利用可能性】
【0207】
以上のように、本発明は、プレイヤが入力装置を自由な方向に向けて容易にゲーム操作を行えるようにすること等を目的として、ゲーム装置やゲームプログラム等として利用することが可能である。
【符号の説明】
【0208】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ部
7 ジャイロセンサユニット
8 入力装置
10 CPU
11e 内部メインメモリ
12 外部メインメモリ
70 ゲームプログラム
71 操作データ
72 角速度データ
73 加速度データ
74 マーカ座標データ
77 姿勢データ
78 座標データ
【技術分野】
【0001】
本発明は、ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法に関し、より特定的には、入力装置の角速度をゲーム入力として用いてゲーム処理を実行するゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法に関する。
【背景技術】
【0002】
従来、入力装置を動かしてゲーム操作を行うことができるゲーム装置がある。例えば、特許文献1には、光学式ポインティングデバイスを用いたゲームシステムが開示されている。このゲームシステムでは、入力装置は撮像手段を有しており、任意の位置に配置されるマーカを撮像することができる。ゲーム装置は、撮像手段による撮像結果(すなわち、撮像された画像内におけるマーカの位置等)を操作データとして取得し、操作データに基づいてゲーム処理を行う。撮像結果は入力装置の位置や向きに応じて変化するので、上記ゲームシステムによれば、プレイヤは、入力装置自体を動かすゲーム操作を行うことができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−75353号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記特許文献1に記載の方法では、撮像手段がマーカを撮像した結果をゲーム処理に用いるので、プレイヤは、撮像手段がマーカの方を向くようにして(撮像手段がマーカを撮像可能な状態で)入力装置を使用しなければならない。つまり、プレイヤは、ゲーム操作を行う場合には入力装置を常にマーカの方へ向けておく必要があるので、入力装置を自由な方向に向けてゲーム操作を行うことができなかった。
【0005】
それ故、本発明の目的は、プレイヤが入力装置を自由な方向に向けて容易にゲーム操作を行うことができるゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の(1)〜(17)の構成を採用した。
【0007】
(1)
本発明は、操作データ取得部と、基準設定部と、座標算出部と、ゲーム処理部とを備える、ゲーム装置である。操作データ取得部は、ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する。基準設定部は、プレイヤによる所定の指示入力があった場合、所定平面上における所定の基準位置を設定する。座標算出部は、基準位置を基準としたときの所定平面上の位置を表す座標を角速度データに基づいて算出する。ゲーム処理部は、座標に基づいてゲーム処理を実行する。
【0008】
上記「ゲーム装置」は、後述する実施形態においては据え置き型のゲーム装置であるが、携帯型のゲーム装置であってもよい。例えば、上記「ゲーム装置」は、ゲーム装置本体に入力装置が含まれていてもよい。
上記「所定平面」とは、後述する実施形態においては仮想空間における平面であるが、これに限らず、例えば表示画面に対応する平面であってもよい。
【0009】
上記(1)の構成によれば、上記座標は、所定の指示入力があった時の入力装置の姿勢(基準姿勢)からの姿勢を反映するものとなる。そして、この座標がゲーム入力として用いられるので、プレイヤは、基準姿勢から入力装置8の姿勢を変化させることによってゲーム操作を行うことができる。また、上記(1)の構成によれば、上記基準位置はプレイヤによる所定の指示入力があった場合に設定されるので、プレイヤは、基準姿勢を自由に設定することができる。以上より、プレイヤは、基準姿勢を自由に設定し、その基準姿勢から入力装置の姿勢を変化させるゲーム操作を行うことができる。すなわち、本発明によれば、プレイヤが入力装置を自由な方向に向けて容易にゲーム操作を行うことができるゲーム装置を提供することができる。
【0010】
(2)
ゲーム処理部は、座標に対応する仮想空間内の位置に向けて所定の動作を所定のオブジェクトに行わせる処理、または、当該仮想空間内の位置に存在するオブジェクトに対する所定の処理をゲーム処理として実行してもよい。
【0011】
上記(2)において、「座標に対応する仮想空間内の位置に向けて所定の動作を所定のオブジェクトに行わせる処理」とは、当該位置を目標として何らかの動作を行わせる処理であればよい。例えば、後述する実施形態のように、上記位置の方へ向かってオブジェクト(矢)を移動させる処理であってもよいし、当該位置までオブジェクトを移動させる処理であってもよい。
また、「(座標に対応する)仮想空間内の位置に存在するオブジェクトに対する所定の処理」とは、当該位置に存在するオブジェクトを対象として行われる処理であればよく、処理内容はどのようなものであってもよい。例えば、後述する実施形態のように、上記位置に表示されるアイコンが表すアイテムを選択する処理であってもよい。
【0012】
上記(2)の構成によれば、上記座標に対応する位置をプレイヤの指示位置とするゲーム処理が実行される。すなわち、入力装置8の姿勢を変更することによって指示位置を変更する操作に、本発明を適用することができる。
【0013】
(3)
ゲーム処理部は、座標に対応する仮想空間内の位置を指示する所定の画像を表示し、入力装置に対する所定の第1操作があったことに応じて、ゲーム処理を実行してもよい。
【0014】
上記(3)の構成によれば、プレイヤの指示位置(座標に対応する位置)に所定の画像が表示される。また、第1の操作があったことに応じてゲーム処理が実行される。これによれば、プレイヤは、入力装置の姿勢を変更することによって指示位置(所定の画像)を動かしつつ、指示位置が所望の位置となった時点で第1の操作を行うことによってプレイヤキャラクタ等に動作を行わせるゲーム操作を行うことができる。
【0015】
(4)
基準設定部は、入力装置に対する所定の第2操作があった場合に基準位置を更新してもよい。
【0016】
上記(4)の構成によれば、第2操作があった場合に基準位置が更新されるので、プレイヤは、所望のタイミングで基準位置を更新することができる。したがって、プレイヤは、入力装置の姿勢を変化させる操作の途中であっても、入力装置の基準姿勢を変更することができる。
【0017】
(5)
所定の第2操作は、所定のオブジェクトが使用するアイテムを決定する操作であってもよい。このとき、ゲーム処理部は、決定されたアイテムを使用する動作を所定のオブジェクトに行わせる処理をゲーム処理として実行する。
【0018】
上記(5)の構成によれば、所定のオブジェクトに使用させるアイテムを決定したことに応じて基準位置が設定される。したがって、プレイヤは、アイテムを決定する時に入力装置を操作しやすい姿勢にしておけば、所定のオブジェクトがアイテムを使用する動作をその姿勢を基準姿勢として操作することができる。すなわち、基準姿勢(基準位置)を設定する操作を別途行う必要がなく簡単な操作で、プレイヤは入力装置を自由な方向に向けてゲーム操作を行うことができる。
【0019】
(6)
所定のオブジェクトが使用するアイテムの候補のうちから、角速度データに基づいて算出される入力装置の姿勢または座標に応じて1つのアイテムを選択し、所定の第2操作が行われた時点で選択されているアイテムを、所定のオブジェクトが使用するアイテムに決定するアイテム選択部をさらに備える、請求項5に記載のゲーム装置。
【0020】
上記(6)の構成によれば、アイテムの選択も入力装置の姿勢を変更する操作で行うことができる。したがって、プレイヤは、アイテムの選択操作と、選択されたアイテムを使用する操作との両方を入力装置の姿勢を変更する操作で行うことができるので、プレイヤにとって操作しやすい操作方法を提供することができる。
【0021】
(7)
ゲーム装置は、仮想カメラの位置および/または方向を座標に基づいて制御するカメラ制御部をさらに備えていてもよい。このとき、カメラ制御部は、座標が基準位置を表す場合は少なくとも、仮想カメラの移動を停止する。
【0022】
上記「座標に基づいて」とは、仮想カメラの位置および/または方向が座標から直接算出される場合と、間接的に算出される場合の両方を含む。例えば、後述する実施形態のように、座標から照準画像の位置が算出され、照準画像の位置から仮想カメラの方向が算出されてもよい。
【0023】
上記(7)の構成によれば、入力装置の姿勢を変更する操作によってゲーム画面を移動(スクロール)させることができる。特に、上記(7)の構成と上記(2)または(3)の構成とを組み合わせる場合には、プレイヤは、上記指示位置を移動させる操作と、ゲーム画面をスクロールさせる操作との両方の操作を同時に行うことができるので、指示位置を移動させる操作の操作性を向上することができる。また、上記(7)の構成によれば、座標が基準位置となる場合にはゲーム画面はスクロールしないので、基準を設定した時点で急にゲーム画面がスクロールすることはなく、プレイヤにとって操作しやすい操作方法を提供することができる。
さらに、上記(7)の構成と上記(4)の構成とを組み合わせる場合には、上記第2の操作が行われることによって、座標が基準位置となる結果、ゲーム画面のスクロールが停止される。ここで、プレイヤは、入力装置を基準姿勢に戻す操作によってもスクロールを停止させることができるが、本発明では基準姿勢が固定ではないので、この操作を素早く行うことは難しい場合がある。これに対して、上記(7)の構成と上記(4)の構成とを組み合わせる場合には、プレイヤは、第2の操作によって素早くスクロールを停止させることができるので、ゲームの操作性をより向上することができる。
【0024】
(8)
カメラ制御部は、座標が基準位置から離れている度合に応じて仮想カメラを移動させてもよい。
【0025】
上記(8)の構成によれば、基準姿勢から入力装置を傾ける度合に応じてゲーム画面をスクロールさせることができるので、直感的な操作でゲーム画面をスクロールさせることができる。
【0026】
(9)
ゲーム装置は、入力装置に対する所定の第3操作があった場合、仮想空間内の所定の対象の方を仮想カメラが向くように仮想カメラの位置および/または方向を制御するカメラ制御部をさらに備えていてもよい。このとき、基準設定部は、所定の第3操作があった場合に基準位置を更新する。
【0027】
上記「所定の対象の方を仮想カメラが向く」とは、仮想カメラの視線と所定の対象とが交わる場合に限らず、少なくとも所定の対象が表示されるように仮想カメラの位置および方向が変更される場合を含む。
【0028】
上記(9)の構成によれば、第3の操作が行われた場合、所定の対象が表示されるように仮想カメラの位置および/または方向が変化する。したがって、プレイヤは、第3の操作によって所定の対象を見やすく表示させることができる。
ここで、第3の操作が行われた場合には、ゲーム画面の視点の位置および/または視線の方向が変化するので、座標の基準位置がそのままで変化しないとすると、プレイヤが違和感を抱くおそれがある。例えば、下記(10)の構成や後述する実施形態のように、座標に応じてゲーム空間内のオブジェクトの向きが制御される場合には、視点の位置および/または視線の方向が変化することによって、表示上、オブジェクトの向きが変わってしまい、プレイヤが違和感を抱くおそれがある。また、座標に応じて画面上のカーソルを制御する場合には、視点の位置および/または視線の方向が変化することによって、カーソルが指し示す位置が変わってしまう。これに対して、上記(9)の構成によれば、第3の操作が行われた場合、基準位置が再設定(リセット)されるので、プレイヤが抱く違和感を軽減することができる。
【0029】
(10)
ゲーム処理部は、プレイヤの操作対象となるオブジェクトの動作を、座標に応じて向きを変えるように制御する処理をゲーム処理として実行してもよい。
【0030】
上記「プレイヤの操作対象となるオブジェクト」とは、プレイヤキャラクタ自身であってもよいし、プレイヤキャラクタの体の一部であってもよいし、後述する実施形態における剣オブジェクトのように、プレイヤキャラクタが持っているアイテムであってもよい。
【0031】
上記(10)の構成によれば、入力装置の姿勢を変更する操作によって仮想空間内のオブジェクトの向きを操作することができる。これによれば、入力装置の向きによって仮想空間内の向きが変わるので、直感的で操作しやすい操作方法を提供することができる。
【0032】
(11)
ゲーム処理部は、所定の指示入力があったことに応じて、プレイヤの操作対象となるオブジェクトの動作の制御を開始してもよい。
【0033】
上記(11)の構成によれば、所定の指示入力によって、基準位置が設定されるとともに、操作対象となるオブジェクトの操作が開始されることになる。したがって、プレイヤは、上記操作の開始時に入力装置を操作しやすい姿勢にしておけば、その姿勢を基準姿勢として当該操作を行うことができる。すなわち、基準姿勢(基準位置)を設定する操作を別途行う必要がなく簡単な操作で、プレイヤは入力装置を自由な方向に向けて上記操作を行うことができる。
【0034】
(12)
座標算出部は、角速度データが示す角速度に応じて変化するように座標を算出してもよい。
【0035】
上記(12)の構成によれば、上記座標は、入力装置の姿勢の変化を反映して算出されるので、入力装置の姿勢に応じた座標を容易に算出することができる。
【0036】
(13)
ゲーム装置は、角速度データに基づいて入力装置の姿勢を算出する姿勢算出部をさらに備えていてもよい。このとき、座標算出部は、入力装置の姿勢に基づいて座標を算出する。
【0037】
上記(13)の構成によれば、ゲーム装置は、入力装置の姿勢を算出し、算出された姿勢に基づいて上記座標を算出するので、入力装置の姿勢に応じた座標を容易に算出することができる。
【0038】
(14)
座標算出部は、所定の基準点から入力装置の姿勢を示すベクトルの方向へ延ばした線分と所定平面との交点の位置を表す座標を算出してもよい。
【0039】
上記(14)の構成によれば、入力装置の姿勢に応じて変化する(平面上の)位置を表す座標を容易に算出することができる。
【0040】
(15)
入力装置は加速度センサをさらに有していてもよい。このとき、姿勢算出部は、角速度データに基づいて入力装置の姿勢を算出するとともに、加速度センサが検出する加速度に基づいて当該姿勢を補正する。
【0041】
上記(15)の構成によれば、角速度に基づく入力装置の姿勢を、加速度に基づいて補正することによって、姿勢をより正確に算出することができる。
【0042】
(16)
入力装置は撮像手段をさらに有していてもよい。このとき、姿勢算出部は、角速度データに基づいて入力装置の姿勢を算出するとともに、撮像手段が撮像する画像内における所定の撮像対象の位置に基づいて、少なくとも重力方向を軸とした回転に関して当該姿勢を補正する。
【0043】
上記(16)の構成によれば、角速度に基づく入力装置の姿勢を、撮像手段によって撮像された画像の情報を用いて補正することによって、姿勢をより正確に算出することができる。
【0044】
(17)
また、本発明は、操作データ取得部と、基準算出部と、姿勢算出部と、ゲーム処理部とを備える、ゲーム装置であってもよい。操作データ取得部は、ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する。基準算出部は、プレイヤによる所定の指示入力があった場合、指示入力があった時点で取得された角速度データに基づいて入力装置の基準姿勢を算出する。姿勢算出部は、指示入力があった後で取得された角速度データに基づいて入力装置の姿勢を算出する。ゲーム処理部は、姿勢算出部によって算出される姿勢の、基準姿勢に対する傾きに基づいてゲーム処理を実行する。
【0045】
上記「姿勢算出部によって算出される姿勢の、基準姿勢に対する傾き」とは、基準姿勢から、姿勢算出部によって算出される姿勢までの変化を指す。すなわち、上記「ゲーム処理部」は、当該変化の量および/または変化の方向に基づいてゲーム処理を実行する。
【0046】
上記(17)の構成によれば、プレイヤは、基準姿勢から入力装置8の姿勢を変化させることによってゲーム操作を行うことができる。また、上記(17)の構成によれば、上記基準姿勢はプレイヤによる所定の指示入力があった場合に設定されるので、プレイヤは、基準姿勢を自由に設定することができる。以上より、プレイヤは、基準姿勢を自由に設定し、その基準姿勢から入力装置の姿勢を変化させるゲーム操作を行うことができる。すなわち、本発明によれば、プレイヤが入力装置を自由な方向に向けて容易にゲーム操作を行うことができるゲーム装置を提供することができる。
【0047】
また、本発明は、ゲーム装置のコンピュータを上記各部と同等の手段として機能させるゲームプログラムの形態で実施されてもよい。また、本発明は、上記各部を備える1以上の情報処理装置からなるゲームシステムの形態で実施されてもよい。このとき、1以上の情報処理装置は、有線または無線通信によって直接通信を行ってもよいし、ネットワークを介して通信を行ってもよい。さらに、本発明は、上記各部によって行われるゲーム処理方法の形態で実施されてもよい。
【発明の効果】
【0048】
本発明によれば、入力装置の姿勢に応じた位置を示す座標を、プレイヤに自由に設定させた基準位置を基準として算出し、算出された座標をゲーム入力として用いる。これによって、プレイヤが基準姿勢を自由に設定し、その基準姿勢から入力装置の姿勢を変化させるゲーム操作を提供することができる。これによって、プレイヤは入力装置を自由な方向に向けて容易にゲーム操作を行うことができる。
【図面の簡単な説明】
【0049】
【図1】ゲームシステムの外観図
【図2】ゲーム装置の機能ブロック図
【図3】入力装置の外観構成を示す斜視図
【図4】コントローラの外観構成を示す斜視図
【図5】コントローラの内部構造を示す図
【図6】コントローラの内部構造を示す図
【図7】入力装置の構成を示すブロック図
【図8】プレイヤキャラクタが剣を使用する場合におけるゲーム画像の一例を示す図
【図9】入力装置の姿勢と剣の向きとの関係を示す図
【図10】プレイヤキャラクタが弓を使用する場合におけるゲーム画像の一例を示す図
【図11】図10に示すゲーム画像から表示対象領域が変化した場合のゲーム画像を示す図
【図12】図11に示すゲーム画像から基準位置が再設定された場合におけるゲーム画像を示す図
【図13】ゲーム装置のメインメモリに記憶される主なデータを示す図
【図14】ゲーム装置において実行される処理の流れを示すメインフローチャート
【図15】2次元座標を算出するために用いられる仮想空間を示す図
【図16】図14に示す剣動作処理(ステップS4)の流れを示すフローチャート
【図17】図16に示す構え動作処理(ステップS16)の流れを示すフローチャート
【図18】図15に示す仮想空間をy軸正方向側から負方向側へ見た図
【図19】図16に示す振り動作処理(ステップS18)の流れを示すフローチャート
【図20】図14に示すアイテム処理(ステップS8)の流れを示すフローチャート
【図21】図20に示すアイテム選択処理(ステップS41)の流れを示すフローチャート
【発明を実施するための形態】
【0050】
[ゲームシステムの全体構成]
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステムについて説明する。図1は、ゲームシステムの外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、入力装置8、およびマーカ部6を含む。本システムは、入力装置8を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0051】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0052】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0053】
入力装置8は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与えるものである。本実施形態では、入力装置8はコントローラ5とジャイロセンサユニット7とを含む。詳細は後述するが、入力装置8は、コントローラ5に対してジャイロセンサユニット7が着脱可能に接続されている構成である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
【0054】
[ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0055】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSIの内部構成について後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0056】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0057】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0058】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0059】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0060】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0061】
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0062】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0063】
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0064】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0065】
[入力装置8の構成]
次に、図3〜図6を参照して、入力装置8について説明する。図3は、入力装置8の外観構成を示す斜視図である。図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
【0066】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0067】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
【0068】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、ジャイロセンサユニット7や他のコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0069】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0070】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0071】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0072】
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0073】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0074】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0075】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
【0076】
また、ジャイロセンサユニット7は、3軸回りの角速度を検知するジャイロセンサ(図7に示すジャイロセンサ55および56)を有する。ジャイロセンサユニット7は、コントローラ5のコネクタ33に着脱可能に装着される。ジャイロセンサユニット7の前端(図3に示すZ軸正方向側の端部)には、コネクタ33に接続可能なプラグ(図7に示すプラグ53)が設けられる。さらに、プラグ53の両側にはフック(図示せず)が設けられる。ジャイロセンサユニット7がコントローラ5に対して装着される状態では、プラグ53がコネクタ33に接続されるとともに、上記フックがコントローラ5の係止穴33aに係止する。これによって、コントローラ5とジャイロセンサユニット7とがしっかりと固定される。また、ジャイロセンサユニット7は側面(図3に示すX軸方向の面)にボタン51を有している。ボタン51は、それを押下すれば上記フックの係止穴33aに対する係止状態を解除することができるように構成されている。したがって、ボタン51を押下しながらプラグ53をコネクタ33から抜くことによって、ジャイロセンサユニット7をコントローラ5から離脱することができる。
【0077】
また、ジャイロセンサユニット7の後端には、上記コネクタ33と同形状のコネクタが設けられる。したがって、コントローラ5(のコネクタ33)に対して装着可能な他の機器は、ジャイロセンサユニット7のコネクタに対しても装着可能である。なお、図3においては、当該コネクタに対してカバー52が着脱可能に装着されている。
【0078】
なお、図3〜図6に示したコントローラ5およびジャイロセンサユニット7の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0079】
図7は、入力装置8(コントローラ5およびジャイロセンサユニット7)の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、および加速度センサ37を備えている。コントローラ5は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置3へ送信するものである。
【0080】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示す操作ボタンデータを通信部36のマイコン42へ出力する。
【0081】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0082】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるマーカ部6のマーカ6Rおよび6Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ6Rおよび6Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ6Rおよび6L)の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0083】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0084】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、3軸または2軸の加速度センサは、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。なお、加速度センサ37は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0085】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置8(コントローラ5)を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトル(ax,ay,az)として表される。以下では、加速度センサ37によって検出される3軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【0086】
加速度センサ37が検出した加速度を示すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、加速度データに基づいてコントローラ5の姿勢を判断する。
【0087】
加速度センサ37が検出した加速度(加速度ベクトル)を示すデータ(加速度データ)は、通信部36へ出力される。本実施形態において、加速度センサ37は、コントローラ5の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
【0088】
なお、加速度センサ37から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
【0089】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0090】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。また、マイコン42はコネクタ33に接続されている。ジャイロセンサユニット7から送信されてくるデータは、コネクタ33を介してマイコン42に入力される。以下、ジャイロセンサユニット7の構成について説明する。
【0091】
ジャイロセンサユニット7は、プラグ53、マイコン54、2軸ジャイロセンサ55、および1軸ジャイロセンサ56を備えている。上述のように、ジャイロセンサユニット7は、3軸(本実施形態では、XYZ軸)周りの角速度を検出し、検出した角速度を示すデータ(角速度データ)をコントローラ5へ送信する。
【0092】
2軸ジャイロセンサ55は、X軸周りの角速度およびZ軸周りの(単位時間あたりの)角速度を検出する。また、1軸ジャイロセンサ56は、Y軸周りの(単位時間あたりの)角速度を検出する。なお、本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、XYZ軸周りの回転方向を、それぞれ、ピッチ方向、ヨー方向、ロール方向と呼ぶ。すなわち、2軸ジャイロセンサ55は、ピッチ方向(X軸周りの回転方向)およびロール方向(Z軸周りの回転方向)の角速度を検出し、1軸ジャイロセンサ56は、ヨー方向(Y軸周りの回転方向)の角速度を検出する。
【0093】
なお、本実施形態では、3軸回りの角速度を検出するために、2軸ジャイロセンサ55と1軸ジャイロセンサ56とを用いる構成としたが、他の実施形態においては、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。
【0094】
また、本実施形態では、後述する姿勢算出処理における計算を容易にする目的で、各ジャイロセンサ55および56が角速度を検出する3つの軸は、加速度センサ37が加速度を検出する3つの軸(XYZ軸)と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ55および56が角速度を検出する3つの軸と、加速度センサ37が加速度を検出する3つの軸とは一致しなくてもよい。
【0095】
各ジャイロセンサ55および56で検出された角速度を示すデータは、マイコン54に出力される。したがって、マイコン54には、XYZ軸の3軸回りの角度速度を示すデータが入力されることになる。マイコン54は、上記3軸回りの角速度を示すデータを角速度データとしてプラグ53を介してコントローラ5へ送信する。なお、マイコン54からコントローラ5への送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【0096】
コントローラ5の説明に戻り、操作部32、撮像情報演算部35、および加速度センサ37からマイコン42へ出力されたデータ、ならびに、ジャイロセンサユニット7からマイコン42へ送信されてきたデータは、一時的にメモリ43に格納される。これらのデータは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の無線コントローラモジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の無線コントローラモジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部36から無線コントローラモジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の無線コントローラモジュール19へ出力する。
【0097】
上記入力装置8を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、入力装置8を任意の傾斜角度に傾けることによるゲーム操作を行うことができる。その他、上記入力装置8によれば、プレイヤは、入力装置8によって画面上の任意の位置を指示する操作、および、入力装置8自体を動かす操作を行うこともできる。
【0098】
なお、本実施形態においては、入力装置8の姿勢や動きを検出するための構成として、ジャイロセンサ55および56、加速度センサ37、ならびに撮像素子40を有する入力装置8を例として説明する。ただし、他の実施形態においては、入力装置8は、少なくともジャイロセンサを有していればよく、加速度センサ37および撮像素子40の両方を有していない構成であってもよい。また、本実施形態では、入力装置8は、コントローラ5と、コントローラ5に着脱可能なジャイロセンサユニット7とから構成されたが、他の実施形態においては、ジャイロセンサは入力装置に内蔵されていてもよい。例えば、コントローラ5がジャイロセンサ55および56を内蔵していてもよい。
【0099】
[ゲーム処理の概要]
次に、図8〜図12を参照して、ゲーム装置3において実行されるゲーム処理の概要を説明する。本実施形態では、ゲーム処理によって行われるゲームの一例として、入力装置8自体を動かす操作によって仮想空間においてプレイヤキャラクタを操作するゲームを説明する。このゲームでは、プレイヤは、プレイヤキャラクタに剣や弓等のアイテム(武器)を使用する動作を行わせる。
【0100】
また、本実施形態では、ゲーム入力として、ジャイロセンサ55および56によって検出される角速度に基づいて算出される2次元座標が用いられる。この2次元座標は、所定の仮想平面上において入力装置8の姿勢に対応する位置を表す(図15参照)。2次元座標の算出方法の詳細については後述するが、この2次元座標は、所定のタイミングにおける入力装置8の姿勢(基準姿勢)に対応する位置を基準位置(原点(0,0))とし、当該基準姿勢から姿勢が変化した方向および量に応じて座標値が変化するように算出される。例えば、入力装置8が基準姿勢から右方向(左方向)に変化した場合、2次元座標のx成分が増加(減少)し、入力装置8が基準姿勢から上方向(下方向)に変化した場合、2次元座標のy成分が増加(減少)する。このように、本実施形態では、ジャイロセンサ55および56によって検出される角速度を用いて上記2次元座標を算出する。したがって、入力装置8がどのような姿勢であっても(すなわち、撮像素子40がマーカ部6の方を向いていなくても)2次元座標は算出可能である。
【0101】
図8は、プレイヤキャラクタが剣を使用する場合におけるゲーム画像の一例を示す図である。図8に示すゲーム画像においては、プレイヤキャラクタ61は剣62を持っている。プレイヤキャラクタ61が剣62をしまっている状態において、プレイヤが所定の剣抜き操作を行った場合、プレイヤキャラクタ61は剣62を出す。剣62の向きは、上記2次元座標に基づいて、入力装置8の姿勢に応じて変化するように決定される。つまり、プレイヤキャラクタ61は、構えている剣62の向きを入力装置8の向きに応じて変えるように動作する。
【0102】
図9は、入力装置8の姿勢と剣62の向きとの関係を示す図である。図9に示すように、剣62の操作の開始時(剣62を出した時点)において、仮想平面における2次元座標は基準位置(原点)となるように算出される。これによって、開始時における入力装置8の姿勢が基準姿勢として設定されることになる。また、2次元座標が基準位置となる場合、剣62は、プレイヤキャラクタ61の正面の向きとなるように制御される。つまり、開始時において、剣62は、プレイヤキャラクタ61の正面の向きとなる(図9に示す表の右上欄参照)。
【0103】
剣62が出された後の操作中においては、ゲーム装置3は、基準姿勢から姿勢が変化した方向および量に応じて2次元座標を算出する。そして、2次元座標に基づいて剣62の向きを制御する。例えば、図9の表の中欄に示すように、入力装置8が基準姿勢から右方向を向いた場合、2次元座標はx成分が正の値となり、剣62は開始時の向きから右を向く。なお、図9では、入力装置8の姿勢が基準姿勢から左右方向にのみ変化した場合を示しているが、姿勢が上下方向に変化した場合も2次元座標は変化する。すなわち、姿勢が上下方向に変化した場合には2次元座標のy成分が変化する。
【0104】
以上のように、本実施形態においては、剣62の操作の開始時において仮想平面上に基準位置が設定され、開始時からの入力装置8の姿勢の変化に応じて2次元座標が算出される。そして、2次元座標に基づいて剣62の向きが制御される。つまり、ゲーム装置3は、開始時における入力装置8の姿勢を基準姿勢として、基準姿勢からの姿勢の変化に応じて剣62の向きを制御することになる。これによれば、プレイヤは剣62の操作開始時に入力装置8をどのような姿勢にしていても、開始時の姿勢が基準となるので、プレイヤは入力装置8を自由な向きに向けてゲーム操作を行うことができる。
【0105】
ここで、例えば、入力装置8が特定の向きを向く姿勢(例えばマーカ部6の方を向く姿勢)を基準姿勢とする方法も考えられる。しかし、この方法では、剣62を特定の方向(例えば正面方向)に向けるためにはプレイヤは入力装置を当該特定の向きに向けなければならない。これでは、角速度データによって入力装置8の任意の姿勢を算出できても、入力装置8を自由な向きに向けてゲーム操作を行うことはできない。これに対して、本実施形態によれば、プレイヤは、剣62が正面方向を向く場合の入力装置8の姿勢を自由に設定することができるので、入力装置8を自由な向きに向けてゲーム操作を行うことができる。例えば、プレイヤは、入力装置8がテレビ2の方向を向く場合に剣62が正面方向を向くようにすることも可能であるし、テレビ2の反対方向を向く場合に剣62が正面方向を向くようにすることも可能である。
【0106】
また、本実施形態では、剣62の操作中において所定の操作が行われた場合、2次元座標の基準位置は再設定される。つまり、所定の操作が行われた時点における2次元座標が基準位置となるので、この時点で剣62は正面方向を向く(図9に示す表の下欄参照)。このように、本実施形態では、プレイヤは、剣62の操作中において基準位置を設定し直すことができる。したがって、プレイヤは、剣62を一度しまって再度出す操作を行う必要がなく、容易に基準位置を設定し直すことができる。なお、詳細は後述するが、本実施形態では、上記所定の操作は、仮想カメラおよびプレイヤキャラクタ61を所定の対象の方へ向ける操作(注目操作)でもある。注目操作に応じて基準位置を再設定することによって、ゲームの操作性をより向上することができる。
【0107】
次に、プレイヤキャラクタ61が弓を使用する場合について説明する。図10は、プレイヤキャラクタ61が弓を使用する場合におけるゲーム画像の一例を示す図である。ここでは、プレイヤキャラクタ61は弓以外にも複数のアイテムを使用することが可能であり、アイテム選択画面(後述)においてプレイヤが所望のアイテムを選択した場合、選択されたアイテムを使用する場合のゲーム画像が表示される。具体的には、アイテム選択画面においてプレイヤが弓を選択する操作を行った場合、図10に示すゲーム画像が表示される。弓が使用される場合、図10に示すように、プレイヤキャラクタ61から見た仮想空間の画像が表示され、照準を表す画像(照準画像)64が表示される。照準画像64は、矢を発射する方向を表す。照準画像64が表示される場合において、プレイヤが所定の発射操作を行ったことに応じて、プレイヤキャラクタ61は照準画像64が示す方向へ矢を発射する。
【0108】
弓が使用される場合、ゲーム装置3は、上記2次元座標に基づいて照準画像64の位置(弓の発射方向)を制御する。表示画面上における照準画像64の位置は、2次元座標が基準位置となる場合に画面中央となり、2次元座標のx軸成分の値と画面の左右方向の位置とが対応し、y軸成分の値と画面の上下方向の位置とが対応するように算出される。したがって、弓の場合も剣62の場合と同様、弓の操作の開始時における入力装置8の姿勢を基準姿勢として、基準姿勢からの姿勢の変化に応じて照準画像64の位置を制御することができる。そのため、プレイヤは、入力装置8を自由な向きに向けてゲーム操作を行うことができる。
【0109】
ここで、照準画像64がテレビ2の表示領域の周付近に位置する場合、ゲーム装置3は、仮想カメラの向きを変更する。その結果、仮想空間のうちで表示される領域(表示対象領域)が変化する。図11は、図10に示すゲーム画像から表示対象領域が変化した場合のゲーム画像を示す図である。例えば、照準画像64が表示領域の右端付近に位置した場合、仮想カメラは右側へ回転して向きを変える。その結果、図11に示すように、表示対象領域は右側へスクロールする。このように、照準画像64の位置に応じて表示対象領域を変更することによって、照準画像64を自由な方向へ向けることができ、照準画像64の操作性を向上することができる。
【0110】
また、弓が操作される場合においても剣62の場合と同様、プレイヤは、2次元座標の基準位置を再設定することが可能である。すなわち、弓が操作される場合において、入力装置8に対して所定のリセット操作が行われた場合、ゲーム装置3は、2次元座標の基準位置を再設定する。リセット操作が行われた時点における2次元座標が基準位置となるので、この時点で照準画像64は画面中央となる。図12は、図11に示すゲーム画像から基準位置が再設定された場合におけるゲーム画像を示す図である。図11に示すように、照準画像64が画面の端付近に位置して表示対象領域がスクロールしている場合においてリセット操作が行われると、図12に示すように、照準画像64が画面中央に位置する。そして、照準画像64が画面中央に位置することによって、スクロールが停止する。
【0111】
本実施形態では、ゲーム装置3は、2次元座標によって照準画像64の位置を制御するとともに、照準画像64の位置によって仮想カメラを制御する。そのため、上記リセット操作が行われた場合、仮想カメラの移動も停止することになる。つまり、プレイヤは、画面のスクロールを止めたい場合にはリセット操作を行えばよい。ここで、仮想カメラを停止させることは、照準画像64を画面中央に戻す(入力装置8を基準姿勢に戻す)ことによっても可能である。しかし、本実施形態では入力装置8の基準姿勢は自由に設定されて固定ではないので、入力装置8を基準姿勢に戻す操作はプレイヤにとって容易な操作とは言えない。そこで、本実施形態では、リセット操作によって仮想カメラが停止するようにし、プレイヤがスクロールを容易に止められるようにしている。つまり、本実施形態によれば、プレイヤは、照準画像64の位置を操作することによって画面のスクロールを容易に行うことができるとともに、リセット操作によってスクロールを容易に停止させることができる。これによって、照準画像64を用いたゲーム操作の操作性をより向上することができる。なお、照準画像64の位置に基づく仮想カメラの制御方法はどのような方法であってもよいが、2次元座標が基準位置を表す場合は少なくとも、仮想カメラが移動しないようにすることが好ましい。
【0112】
[ゲーム処理の詳細]
次に、ゲーム装置3において実行される処理の詳細について説明する。まず、ゲーム装置3における処理において用いられる主なデータについて図13を用いて説明する。図13は、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11e)に記憶される主なデータを示す図である。図13に示すように、ゲーム装置3のメインメモリには、ゲームプログラム70、操作データ71、および処理用データ76が記憶される。なお、メインメモリには、図13に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【0113】
ゲームプログラム70は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。ゲームプログラム70には、操作データ71に基づいて入力装置8の姿勢を算出し、算出された姿勢に基づいて上記2次元座標を算出する処理を実行するためのプログラムが含まれる。また、ゲームプログラム70には、2次元座標をゲーム入力として用いて所定のゲーム処理を実行するためのプログラムが含まれる。
【0114】
操作データ71は、入力装置8(入力装置8)からゲーム装置3へ送信されてくる操作データである。上述したように、入力装置8からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、メインメモリに記憶される操作データ71はこの割合で更新される。なお、メインメモリには、最新の(最後に取得された)ものから順に所定個数の操作データが記憶される。操作データ71には、角速度データ72、加速度データ73、マーカ座標データ74、および操作ボタンデータ75が含まれる。
【0115】
角速度データ72は、ジャイロセンサユニット7のジャイロセンサ55および56によって検出された角速度を示すデータである。ここでは、角速度データ72は、図3に示すXYZの3軸回りのそれぞれの角速度を示す。
【0116】
加速度データ73は、加速度センサ37によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ73は、図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度ベクトルVa1を示す。また、本実施形態においては、入力装置8が静止している状態で加速度センサ37が検出する加速度ベクトルVa1の大きさを“1”とする。つまり、加速度センサ37によって検出される重力加速度の大きさは“1”である。
【0117】
マーカ座標データ74は、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための2次元座標系(図17に示すx’y’座標系)で表現される。なお、撮像素子40によって2つのマーカ6Rおよび6Lが撮像される場合には、2つのマーカ座標が算出される。一方、撮像素子40の撮像可能な範囲内にマーカ6Rおよび6Lのいずれか一方が位置しない場合には、撮像素子40によって1つのマーカのみが撮像され、1つのマーカ座標のみが算出される。また、撮像素子40の撮像可能な範囲内にマーカ6Rおよび6Lの両方が位置しない場合には、撮像素子40によってマーカが撮像されず、マーカ座標は算出されない。したがって、マーカ座標データ74は、2つのマーカ座標を示す場合もあるし、1つのマーカ座標を示す場合もあるし、マーカ座標がないことを示す場合もある。
【0118】
操作ボタンデータ75は、各操作ボタン32a〜32iに対する入力状態を示すデータである。
【0119】
処理用データ76は、後述するゲーム処理(図14)において用いられるデータである。処理用データ76は、姿勢データ77、座標データ78、剣データ79、表示位置データ80、およびカメラデータ81を含む。なお、図13に示すデータの他、処理用データ76は、ゲーム処理において用いられる各種データ(ゲームパラメータを示すデータ等)を含む。
【0120】
姿勢データ77は、入力装置8の姿勢を示すデータである。姿勢データ77は、上記操作データ71に基づいて算出される。なお、本実施形態では、入力装置8の姿勢は、所定の姿勢から現在の入力装置8の姿勢への回転を表す回転行列によって表現される。ただし、他の実施形態においては、入力装置8の姿勢は、3次のベクトルまたは3つの角度によって表現されてもよい。
【0121】
座標データ78は、上記2次元座標を示すデータである。本実施形態では、座標データ78は、上記姿勢データ77に基づいて算出される。本実施形態では、ゲーム装置3は、角速度データ72を用いて姿勢データ77を算出し、当該姿勢データ77に基づいて2次元座標を算出するが、他の実施形態においては、角速度データ72から2次元座標を直接算出するようにしてもよい。
【0122】
剣データ79は、プレイヤキャラクタ61が持つ剣62の向きを示すデータである。剣データ79は、上記座標データ78に基づいて算出される。なお、剣データ79が算出される場合、剣62の向きが剣データ79が示す向きとなるように、プレイヤキャラクタ61の動作が制御される。
【0123】
表示位置データ80は、表示画面上における上記照準画像64の位置を示すデータである。表示位置データ80は、上記座標データ78に基づいて算出され、座標データ78が示す仮想平面上の2次元座標の位置に対応する、表示画面上の位置を示す。
【0124】
カメラデータ81は、仮想空間における仮想カメラの位置および向きを示すデータである。仮想カメラは、仮想空間における視点および視線方向を決めるものであり、仮想カメラの位置から仮想カメラの向きに見たときの仮想空間の画像がゲーム画像として生成されて表示される。本実施形態では、プレイヤキャラクタ61が弓を使用する場合、仮想カメラの向きは上記表示位置データ80に基づいて制御される。なお、その他の場合、仮想カメラの位置および向きは、プレイヤキャラクタ61の位置や向き等に応じて制御される。
【0125】
次に、ゲーム装置3において行われる処理の詳細を、図14〜図21を用いて説明する。図14は、ゲーム装置3において実行される処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図14に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、図14〜図21に示すフローチャートでは、2次元座標の算出および2次元座標に基づくゲーム処理について主に説明し、本発明の理解を容易にする目的で、その他の処理については説明を省略することがある。例えば、プレイヤキャラクタ61以外の他のオブジェクト(例えば敵オブジェクト等)の動作を制御する処理、および、ゲーム画像を表示する処理は、1フレーム時間に1回の割合で適宜実行されるが、図14〜図21に示すフローチャートではこれらの処理を省略している箇所がある。
【0126】
図14に示すステップS1において、CPU10は操作データを取得する。すなわち、入力装置8から送信されてくる操作データが無線コントローラモジュール19を介して受信される。そして、受信された操作データに含まれる角速度データ、加速度データ、マーカ座標データ、操作ボタンデータがそれぞれメインメモリに記憶される。ステップS1の次にステップS2の処理が実行される。
【0127】
ステップS2において、CPU10は、剣抜き操作が行われたか否かを判定する。剣抜き操作は、剣62をしまっているプレイヤキャラクタ61に剣62を抜かせるための操作である。本実施形態において、剣抜き操作は入力装置8を振る操作である。ステップS2の判定は、操作データ71に含まれる加速度データ73を用いて行われる。すなわち、CPU10は、入力装置8に対して所定値以上の加速度が加えられたか否かを、加速度データ73を用いて判断する。そして、入力装置8に対して所定値以上の加速度が加えられた場合、入力装置8が振られた、すなわち、剣抜き操作が行われたと判断する。なお、剣抜き操作はどのような操作であってもよく、例えば、入力装置8の所定のボタン(例えば、Aボタン32d)を押下する操作であってもよい。ステップS2の判定結果が肯定である場合、後述するステップS4の処理が実行される。一方、ステップS2の判定結果が否定である場合、ステップS3の処理が実行される。
【0128】
ステップS3において、CPU10は、プレイヤキャラクタ61の他の動作を制御する。ここで、他の動作とは、剣62や弓等のアイテムを使用する動作以外の動作を指す。ステップS3においては、例えば、仮想空間においてプレイヤキャラクタ61を移動させる等の動作が制御される。そして、他のオブジェクト(敵オブジェクト等)の動作が制御され、プレイヤキャラクタ61を含むゲーム画像が生成されてテレビ2の画面に表示される。ステップS3の後、ステップS1の処理が再度実行される。
【0129】
一方、ステップS4において、CPU10は入力装置8の姿勢を算出する。ステップS4における姿勢の算出方法はどのような方法であってもよい。姿勢の算出方法は、例えば、角速度データと加速度データとマーカ座標データとを用いて姿勢を算出する方法(後述するステップS22〜S24)であってもよいし、これらのデータのうちいずれか1つのみを用いて姿勢を算出する方法であってもよい。ステップS4の次にステップS5の処理が実行される。
【0130】
ステップS5において、CPU10は、2次元座標の基準位置を設定する。ここで、本実施形態では、CPU10は、3次元の仮想空間(ゲーム空間とは異なる)を定義し、入力装置8と所定の平面とが仮想的に配置されていると考えて2次元座標の算出を行う。図15は、2次元座標を算出するために用いられる仮想空間を示す図である。CPU10は、仮想空間において入力装置8のZ軸(図15に示すZ軸ベクトルVZ)の方向が指し示す平面Q上の位置Rを表す2次元座標を算出する。すなわち、仮想空間において入力装置8の姿勢を表すZ軸ベクトルVZを延ばした線分と、当該仮想空間における所定平面Qとの交点の位置Rの2次元座標を算出する。「Z軸ベクトルVZを延ばした線分」とは、Z軸ベクトルVZに平行でかつZ軸ベクトルVZを通る線分を意味する。なお、ここでは、仮想空間の位置を、入力装置8の姿勢を表すための座標系(X’Y’Z’座標系)によって表現するものとする。これによって、入力装置8の姿勢を示すデータとして上記姿勢データ77をそのまま用いることができるので、仮想空間における計算を容易に行うことができる。
【0131】
上記のように、本実施形態では、所定平面Q上の位置Rを2次元座標として算出する。そのため、ステップS5における基準位置の設定処理としては、CPU10は、現時点の入力装置8の姿勢に対応する上記位置Rを基準位置(原点)に設定する処理を行う。つまり、CPU10は、ステップS4で算出された姿勢に対応する位置Rが原点となるように、平面Q上のxy座標系を設定する。ステップS5で設定されたxy座標系を示すデータ(例えば、原点の位置とx軸およびy軸の向きとを示すデータ)は、メインメモリに記憶される。
【0132】
なお、平面Qは、どのように設定されてもよいが、本実施形態では、仮想空間における入力装置8の位置から所定距離で、上記Z軸ベクトルVZを延ばした線分と垂直に交わるように設定される。また、他の実施形態においては、CPU10は、仮想空間において1以上の平面を予め定義しておき、いずれかの平面上にxy座標系が設定されるようにしてもよい。例えば、仮想空間における入力装置8の位置の周囲四方に平面を定義しておき、4つの平面のうちのいずれかの上にxy座標系を設定するようにしてもよい。これによれば、4つの平面をY’Z’平面あるいはX’Y’平面のいずれかと平行となるように定義することによって、xy座標系における計算を容易にすることができる。
【0133】
上記ステップS5の次のステップS6において、剣動作処理(ステップS6)が実行される。剣動作処理は、プレイヤの操作に従って、プレイヤキャラクタ61に剣62を持った動作を行わせる処理である。このように、本実施形態では、上記ステップS5で2次元座標の基準位置が設定された直後に剣動作処理が開始されるので、剣62に対する操作の開始時点で基準位置が設定される。以下、図16を参照して、ステップS6の剣動作処理の詳細を説明する。
【0134】
図16は、図14に示す剣動作処理(ステップS4)の流れを示すフローチャートである。なお、剣動作処理におけるステップS10〜S19の処理ループは、後述するステップS18の処理が実行される場合を除いて、1フレーム時間に1回の割合で実行される。
【0135】
まずステップS10において、CPU10は操作データを取得する。ステップS10の処理は上述のステップS1と同じ処理である。ステップS10の次にステップS11の処理が実行される。
【0136】
ステップS11において、CPU10は、注目操作が行われたか否かを判定する。注目操作は、仮想カメラおよびプレイヤキャラクタ61を所定の注目対象の方へ向けるための操作である。具体的には、注目操作は、入力装置8の所定のボタン(例えば、Bボタン32i)を押下する操作である。すなわち、CPU10は、ステップS10で取得された操作データ71の操作ボタンデータ75を参照して、注目操作のための所定のボタンが押下されたか否かを判定する。ステップS11の判定結果が肯定である場合、ステップS12の処理が実行される。一方、ステップS11の判定結果が否定である場合、ステップS12〜S15の処理がスキップされてステップS16の処理が実行される。
【0137】
ステップS12〜S15の一連の処理は、仮想カメラおよびプレイヤキャラクタ61を所定の注目対象の方へ向ける処理である。まずステップS12において、CPU10は、注目操作が行われた直後であるか否か(注目操作のための所定のボタンが押下された直後であるか否か)を判定する。ステップS12の判定は、上記ステップS10で取得された操作データの1つ前に取得された操作データを参照することで行うことができる。つまり、上記1つ前に取得された操作データが、上記所定のボタンが押下されていないことを示す場合、注目操作が行われた直後であると判断することができる。ステップS12の判定結果が肯定である場合、ステップS13の処理が実行される。一方、ステップS12の判定結果が否定である場合、ステップS13およびS14の処理がスキップされてステップS15の処理が実行される。
【0138】
ステップS13において、CPU10は、仮想空間に配置されるオブジェクトのうちから所定の注目対象を選択する。選択すべき注目対象はどのように決定されてもよいが、例えば、プレイヤキャラクタ61の近傍に存在する敵オブジェクトや、プレイヤキャラクタ61の正面方向に近い位置に存在するオブジェクト等が注目対象として決定される。ステップS13の次にステップS14の処理が実行される。
【0139】
ステップS14において、CPU10は2次元座標の基準位置を再設定する。ステップS14の処理は、上述のステップS4およびS5の処理と同じである。つまり、CPU10は、現時点の入力装置8の姿勢を算出し、算出された姿勢に対応する上記平面Q上の位置Rが原点となるように、xy座標系を設定する。設定されたxy座標系を示すデータは、メインメモリに記憶される。ステップS14の次にステップS15の処理が実行される。このように、本実施形態では、注目操作が行われた場合に(ステップS12でYes)、ステップS14が実行されるので、プレイヤは、注目操作を行うことによって、基準位置をリセットすることができる。
【0140】
ステップS15において、CPU10は、ステップS13で選択された注目対象の方へ仮想カメラおよびプレイヤキャラクタ61を向ける。また、仮想カメラの位置は、注目対象を向くプレイヤキャラクタ61の後方の位置に決定される。これによって、プレイヤキャラクタ61の後方から注目対象の方を見たときのゲーム画像が表示されるので、プレイヤにとって注目対象が見やすいゲーム画像を表示することができる。なお、仮想カメラの位置は、仮想カメラから注目対象への直線上にプレイヤキャラクタ61が位置するように決定されてもよいが、当該直線上からややずれてプレイヤキャラクタ61が位置するように決定されることが好ましい。仮想カメラがプレイヤキャラクタ61の真後ろに位置すると、注目対象がプレイヤキャラクタ61に隠れてよく見えなくなる可能性があるからである。また、他の実施形態においては、CPU10は、仮想カメラだけを注目対象の方へ向け、プレイヤキャラクタ61に関しては向きを変更しないようにしてもよい。
【0141】
以上のように、上記ステップS11〜S15の処理によれば、注目操作が行われた場合、仮想カメラおよびプレイヤキャラクタ61が注目対象の方を向くので、プレイヤは、簡単な操作で見やすいゲーム画像を表示させることができる。また、注目操作が行われている間(所定のボタンが押下されている間)はステップS15の処理が実行されるので、プレイヤは、注目操作を行い続けることによって、仮想カメラおよびプレイヤキャラクタ61が注目対象の方を向く状態を継続することができる。つまり、注目操作を行っている間、プレイヤは注目対象を画面に表示させることができる。
【0142】
ステップS16において、CPU10は構え動作処理を実行する。構え動作処理は、プレイヤキャラクタ61が持つ剣62の向きを、プレイヤの操作に従って制御する処理である。以下、図17を参照して、ステップS16の構え動作処理の詳細を説明する。
【0143】
図17は、図16に示す構え動作処理(ステップS16)の流れを示すフローチャートである。構え動作処理においては、まずステップS21において、CPU10は、プレイヤによる操作に基づいてプレイヤキャラクタ61の位置を決定する。プレイヤキャラクタ61の移動は、どのように制御されてもよいが、ここでは、入力装置の十字ボタン32aに対する入力に従って制御される。具体的には、CPU10は、操作データ71の操作ボタンデータ75を参照して、十字ボタン32aのうちで押下された方向を特定し、押下された方向に応じた方向へプレイヤキャラクタ61を移動させる。移動後のプレイヤキャラクタ61の位置を示すデータは、メインメモリに記憶される。ステップS21の処理の次にステップS22の処理が実行される。
【0144】
ステップS22〜S24の処理は、操作データに基づいて入力装置8の姿勢を算出する処理である。まずステップS22において、CPU10は、メインメモリに記憶されている角速度データ72に基づいて入力装置8の姿勢を算出する。入力装置8の姿勢を角速度から算出する方法はどのような方法であってもよいが、本実施形態においては、姿勢は、前回の姿勢(前回に算出された姿勢)と、今回の角速度(今回の処理ループにおいて取得された角速度)とを用いて算出される。具体的には、CPU10は、前回の姿勢を今回の角速度で単位時間分回転させることによって、姿勢を算出する。なお、前回の姿勢は、メインメモリに記憶されている姿勢データ77により示され、今回の角速度は、メインメモリに記憶されている角速度データ72により示されている。ステップS22で算出された姿勢を示すデータが、姿勢データ77としてメインメモリに新たに記憶される。ステップS22の次にステップS23の処理が実行される。
【0145】
なお、角速度から姿勢を算出する場合、初期の姿勢がわかっている必要がある。つまり、角速度から姿勢を算出する場合(前回の姿勢が算出されていない場合)には、初期の姿勢を算出しておく必要がある。初期の姿勢は、加速度データに基づいて算出されてもよいし(後述するステップS23参照)、マーカ座標データに基づいて算出されてもよい(後述するステップS24参照)。また、初期の姿勢は、入力装置8を特定の姿勢にした状態でプレイヤに所定の操作を行わせることで、所定の操作が行われた時点の特定の姿勢を初期の姿勢として用いるようにしてもよい。
【0146】
ステップS23において、CPU10は、入力装置8の姿勢を加速度データ73を用いて補正する。具体的には、CPU10は、まず、加速度データ73に基づいて入力装置8の姿勢を算出する。ここで、加速度センサ37は、入力装置8がほぼ静止している状態では、入力装置8に対して加えられる重力加速度を検出するので、CPU10は、検出された重力加速度の方向(重力方向)を算出することができる。そのため、加速度センサ37が重力加速度を検出する状況では、加速度データ73を用いて、重力方向に対する入力装置の向き(姿勢)を算出することができる。
【0147】
加速度データ73に基づく姿勢を算出すると、次に、CPU10は、角速度データ72に基づく姿勢を、加速度データ73に基づく姿勢へ所定の割合で近づける補正を行う。この所定の割合は、予め定められた固定値であってもよいし、加速度データ73が示す加速度等に応じて設定されてもよい。また、加速度データ73に基づく姿勢に関しては、重力方向を軸とする回転方向については姿勢を算出することができないので、CPU10は、当該回転方向については補正を行わないようにしてもよい。ステップS23において補正された姿勢を示すデータが、姿勢データ77としてメインメモリに新たに記憶される。ステップS23の次にステップS24の処理が実行される。
【0148】
ステップS24において、CPU10は、入力装置8の姿勢をマーカ座標データ74を用いて補正する。具体的には、CPU10は、まず、マーカ座標データ74に基づいて入力装置8の姿勢を算出する。ここで、マーカ座標データ74は、撮像画像内におけるマーカ6Rおよび6Lの位置を示すので、これらの位置から、ロール方向(Z軸回りの回転方向)に関する入力装置8の姿勢を算出することができる。つまり、マーカ6Rの位置とマーカ6Lの位置とを結ぶ直線の傾きから、ロール方向に関する入力装置8の姿勢を算出することができる。また、マーカ部6に対する入力装置8の位置が特定できる場合(例えば、マーカ部6の正面に入力装置8が位置すると想定できる場合)には、撮像画像内におけるマーカ部6の位置から、ピッチ方向およびヨー方向に関する入力装置8の姿勢を算出することができる。例えば、マーカ6Rの位置とマーカ6Lの位置との中点の位置から、ピッチ方向およびヨー方向に関する入力装置8の姿勢を算出することができる。なお、入力装置8の撮像素子40によってマーカ部6が撮像されていない場合は、マーカ座標データ74に基づく姿勢を算出することができないので、ステップS24の処理はスキップされてもよい。
【0149】
マーカ座標データ74に基づく姿勢を算出すると、次に、CPU10は、ステップS23で補正された姿勢を、マーカ座標データ74に基づく姿勢へ所定の割合で近づける補正を行う。この所定の割合は、予め定められた固定値であってもよい。また、ステップS24における補正は、ロール方向、ピッチ方向、およびヨー方向のいずれか1つまたは2つの方向のみについて行われてもよい。例えば、マーカ座標データ74を用いる場合、ロール方向については精度良く姿勢を算出することができるので、CPU10は、ロール方向についてのみ、マーカ座標データ74に基づく姿勢を用いて補正を行ってもよい。ステップS24において補正された姿勢を示すデータが、姿勢データ77としてメインメモリに新たに記憶される。ステップS24の次にステップS25の処理が実行される。
【0150】
以上のステップS22〜S24の処理によって、入力装置8の姿勢が算出される。ここで、入力装置8の姿勢を算出する方法のうち、角速度を用いる方法では、入力装置8がどのような向きであっても姿勢を算出することができる。一方、角速度を用いる方法では、逐次検出される角速度を累積加算していくことによって姿勢を算出するので、誤差が累積すること等によって精度が悪くなったり、いわゆる温度ドリフトの問題でジャイロセンサの精度が悪くなったりするおそれがある。また、加速度を用いる方法は、入力装置8がどのような向きであっても姿勢を算出することができる一方、入力装置8が激しく動かされている状態では、(重力方向を検出することができないので)姿勢を精度良く算出することができない。また、マーカ座標を用いる方法は、姿勢(特にロール方向の姿勢)を正確に算出することができる一方、(入力装置8の撮像方向にマーカ部6がなければマーカ座標が検出されないので)入力装置8の向きによっては姿勢を算出することができない。本実施形態によれば、上記のように特長の異なる3種類の方法を用いるので、入力装置8の姿勢をより正確に算出することができる。なお、本実施形態では、ゲーム装置3は、上記3つの方法を用いて入力装置8の姿勢を算出するが、他の実施形態においては、3つの方法のうちいずれか1つまたは2つを用いて姿勢を算出するようにしてもよい。
【0151】
ステップS25において、CPU10は、入力装置8の姿勢に基づいて上記2次元座標を算出する。上述のように、2次元座標は、入力装置8が仮想的に配置される仮想空間において、入力装置8のZ軸ベクトルVZを延ばした線分と、所定平面Qとの交点の位置Rを表す座標として算出される(図15参照)。以下、図18を参照して、2次元座標の算出方法の詳細を説明する。
【0152】
図18は、図15に示す仮想空間をy軸正方向側から負方向側へ見た図である。図18においては、入力装置8の位置を表す点Sから、当該点Sを平面Qに投影させた点(投影点)Tまでの長さを“L”とする。また、投影点Tから上記交点Rまでの、x成分に関する長さを“Wx”とする。本実施形態では、上記長さLの値は、所定のタイミング(例えば、ゲーム処理が開始されるタイミング等)でプレイヤによって設定される。メインメモリには、プレイヤによって設定された長さLの値を示すデータ(長さデータと呼ぶ)が記憶される。
【0153】
上記Z軸ベクトルVZは、入力装置8の姿勢により決まる。すなわち、上記Z軸ベクトルVZの各成分(Zx,Zy,Zz)は、姿勢を表す回転行列の要素の一部であり、算出済みの値である。また、図18から明らかなように、上記長さWxと上記長さLとの比は、Z軸ベクトルVZのx成分(Zx)とZ軸ベクトルVZのz成分(Zz)との比に等しくなるという関係がある。したがって、この関係に基づいて、算出済みのベクトルVZのx成分Zx、z成分Zz、および既知の長さLから、長さWxを算出することができる。具体的には、次の式(1)によって長さWxを算出することができる。
Wx=L×Zx/Zz …(1)
また、x成分の長さWxと同様に、投影点Tから交点Rまでのy成分の長さWyは、次の式(2)によって算出することができる。
Wy=L×Zy/Zz …(2)
【0154】
上記長さWxおよびWyが得られれば、平面Q上における交点Rの位置を示す2次元座標を算出することができる。本実施形態では、平面Q上のxy座標系は、入力装置8のZ軸ベクトルを延ばした直線と原点とが交わるように設定される。つまり、上記投影点Tの位置がxy座標系の原点となる。したがって、交点Rの2次元座標は(Wx,Wy)となる。
【0155】
ステップS25における具体的な処理を説明すると、CPU10は、まずメインメモリから姿勢データ77および長さデータを読み出す。そして、姿勢データ77により示される回転行列からZ軸ベクトルの各成分Zx、Zy、およびZzと、長さデータにより示される長さLとを上式(1)および(2)に代入することによって上記長さWxおよびWyを算出する。これによって、平面Q上における交点Rの2次元座標(Wx,Wy)が得られたこととなる。CPU10は、2次元座標を示すデータを座標データ78としてメインメモリに記憶する。ステップS25の次にステップS26の処理が実行される。
【0156】
上記ステップS25のように、本実施形態では、入力装置8の姿勢に応じた2次元座標を算出するために、入力装置8の姿勢を算出し、さらに、仮想空間において入力装置8が指し示す所定平面Q上の位置を算出した。ここで、他の実施形態においては、2次元座標は、入力装置8の姿勢に応じて変化するように、角速度に基づいて算出されればどのような方法で算出されてもよい。2次元座標は、例えば、角速度データが示す角速度に応じて変化するように算出されてもよい。具体的には、CPU10は、基準位置を設定する時点で2次元座標を原点に設定し、その時点以降は、取得される角速度の向きに応じた方向に、角速度の大きさに応じた移動量で座標を移動させることで、2次元座標を逐次算出するようにしてもよい。
【0157】
図17の説明に戻り、ステップS26において、CPU10は、2次元座標に応じて向きを変えるように剣62を制御する。つまり、2次元座標に応じた方向へ剣62を向ける動作をプレイヤキャラクタ61に行わせる。具体的には、CPU10は、メインメモリから座標データ78を読み出し、座標データ78が示す2次元座標に基づいて剣62の向きを算出する。ここで、プレイヤキャラクタ61の正面方向に対する剣62の向きは、原点から2次元座標への方向に応じた向きとなるように算出される。また、正面方向に対して剣62が傾く大きさは、原点から2次元座標までの距離に応じた大きさとなるように算出される。算出された剣62の向きを示すデータは、剣データ79としてメインメモリに記憶される。なお、CPU10は、ゲーム画像を生成して表示する処理において、上記剣データ79を参照して剣62の向きを特定し、プレイヤキャラクタ61は、剣62の向きが剣データ79が示す向きとなるようにプレイヤキャラクタ61を動作させる。そして、プレイヤキャラクタ61を含む仮想空間を表すゲーム画像を生成して画面に表示する。上記ステップS26の後、CPU10は、図17に示す構え動作処理を終了する。
【0158】
上記ステップS26によって、剣62の向きは、入力装置8の姿勢に概ね対応するように制御される。ただし、剣62の向きと入力装置8の姿勢とは完全に一致する必要はない。入力装置8についてはプレイヤが自由な向きに向けることができる一方、剣62の向きについては、プレイヤキャラクタ61の動作が不自然にならないように、剣62の可動範囲に制限を設けてもよい。例えば、2次元座標が原点から所定距離以上離れた場合(入力装置8が基準姿勢から所定角度以上回転した場合)には、剣62の向きがそれ以上変化しないようにしてもよい。
【0159】
図16の説明に戻り、ステップS16の次のステップS17において、CPU10は、振り操作が行われたか否かを判定する。振り操作は、プレイヤキャラクタ61に剣62を振らせる指示のための操作である。本実施形態において、振り操作は入力装置8を振る操作である。振り操作が行われたか否かの判定は、どのように行われてもよく、角速度データ72あるいは加速度データ73を用いて行われてもよいし、上記ステップS22〜S24で算出される入力装置8の姿勢を用いて行われてもよい。すなわち、最新のものから順に複数の角速度データ72を参照して、一定期間内における入力装置8の回転量および回転方向を算出することによって上記判定を行うことができる。また、上記剣抜き操作(ステップS2)と同様、入力装置8に対して所定値以上の加速度が加えられたか否かを、加速度データ73を用いて判断することによって上記判定を行うことができる。また、上記ステップS22〜S24で算出される入力装置8の姿勢の変化を算出することによっても上記判定を行うことができる。ステップS17の判定結果が肯定である場合、ステップS18の処理が実行される。一方、ステップS17の判定結果が否定である場合、ステップS18の処理がスキップされてステップS19の処理が実行される。
【0160】
ステップS18において、CPU10は、振り動作処理を実行する。振り動作処理は、プレイヤキャラクタ61に剣62を振る動作を行わせる処理である。以下、図19を参照して、ステップS18の振り動作処理の詳細を説明する。
【0161】
図19は、図16に示す振り動作処理(ステップS18)の流れを示すフローチャートである。振り動作処理においては、まずステップS31において、CPU10は、入力装置8が振られた方向(振り方向)を算出する。なお、振り方向の算出方法はどのような方法でもよい。CPU10は、上記ステップS17で述べたように、角速度データ72あるいは加速度データ73を用いて振り方向を算出してもよいし、入力装置8の姿勢を用いて振り方向を算出してもよい。ステップS31の次にステップS32の処理が実行される。
【0162】
ステップS32において、CPU10は、振り方向に応じた向きにプレイヤキャラクタ61に剣62を振る動作を行わせる。すなわち、CPU10は、ステップS31で算出される入力装置8の振り方向に応じた向きに剣62を振る動作をプレイヤキャラクタ61に行わせる。なお、ステップS32における、剣62を振る動作を表すゲーム画像の生成・表示処理は、複数フレームにわたって実行されてもよい。また、他の実施形態においては、剣62を振る動作は、入力装置8の振り方向に応じた向きに行われなくてもよく、予め定められた特定の向きに剣62を振る動作であってもよい。ステップS32の処理の次にステップS33の処理が実行される。
【0163】
ステップS33において、CPU10は、剣62の軌跡の画像を生成して表示する。これは、剣62を振った方向をプレイヤにわかりやすく視認させるためである。したがって、剣62の軌跡の画像は、プレイヤキャラクタ61が剣62を振り終わった少し後で表示されるようにしてもよい。ステップS33の次にステップS34の処理が実行される。
【0164】
ステップS34において、CPU10は、剣62を振ったことによるエフェクトが発生させるか否かを判定する。剣62を振ったことによるエフェクトとは、例えば、敵オブジェクトが剣62で切られたり、壊されたりしたことを表す画像である。ステップS34における判定は、剣62が他のオブジェクトに接触したか否かによって行われる。ステップS34の判定結果が肯定である場合、ステップS35の処理が実行される。一方、ステップS34の判定結果が否定である場合、ステップS35の処理がスキップされて、CPU10は振り動作処理を終了する。
【0165】
ステップS35において、CPU10は、剣62の振り方向に応じたエフェクトを生成して表示する。つまり、剣62の振り方向に応じて異なるエフェクトが生成されて表示される。例えば、CPU10は、剣62の振り方向に応じた向きにオブジェクトが切れる様子を表す画像を生成して表示してもよい。このとき、剣62の振り方向とエフェクトが表す方向とは厳密に一致している必要はない。例えば、CPU10は、処理を簡易化する等の目的で、複数のパターンのエフェクト(例えば上下左右と斜めの8方向に対応するエフェクト)を用意しておき、剣62の振り方向に応じたパターンのエフェクトを表示するようにしてもよい。また、エフェクトは、剣62の振り方向が特定の方向である場合にのみ表示されてもよい。例えば、剣62を特定の方向に振った場合にだけ攻撃が有効となる敵オブジェクトを登場させ、剣62を当該特定の方向に振った場合にだけエフェクト(攻撃が当たったことを表すエフェクト)を表示するようにしてもよい。また、オブジェクトの種類によっては、振り方向にかかわらず同じエフェクトが表示されるようにしてもよい。ステップS35の後、CPU10は振り動作処理を終了する。
【0166】
以上のように、上記振り動作処理によれば、入力装置8を振った方向に応じた方向に剣62を振るようにプレイヤキャラクタ61を動作させることができる。また、剣62の振り方向に応じて異なるゲーム効果が生じるようにすることで、ゲームの興趣性をより向上することができる。
【0167】
なお、上記振り動作処理においては、上記2次元座標はゲーム入力としては用いられなかった。つまり、入力装置8の振り操作の判定には2次元座標は用いられなかった。ここで、他の実施形態においては、入力装置8の振り操作の判定に2次元座標を用いるようにしてもよい。例えば、CPU10は、2次元座標の移動量によって振り操作が行われたか否かを判定し、2次元座標の移動方向によって振り方向を算出するようにしてもよい。
【0168】
図16の説明に戻り、ステップS18の次のステップS19において、CPU10は、剣動作処理を終了するか否かを判定する。ステップS19の判定は、操作データ71の操作ボタンデータ75を参照し、剣62をしまう操作(例えば、入力装置8の所定のボタンを押下する操作)が行われたか否かによって行うことができる。ステップS19の判定結果が否定である場合、ステップS10の処理が再度実行される。以降、ステップS19で剣動作処理を終了すると判定されるまで、ステップS10〜S19の処理が繰り返し実行される。一方、ステップS19の判定結果が肯定である場合、CPU10は剣動作処理を終了する。
【0169】
上記剣動作処理によれば、2次元座標に基づくゲーム処理として、プレイヤキャラクタ61が構える剣62の向きを2次元座標に応じて変化させる処理が実行される。このとき、2次元座標の基準位置は、剣動作処理を開始するための操作である剣抜き操作が行われたことに応じて設定される(ステップS5)。したがって、プレイヤは、剣抜き操作を行った時の入力装置8の姿勢を基準姿勢として、剣62の向きを操作することができる。つまり、プレイヤは、剣62の操作を行う場合、入力装置8を自由な向きに向けて剣抜き操作を行い、その後の剣62の操作も入力装置8を自由な向きに向けて行うことができる。
【0170】
また、上記剣動作処理によれば、注目操作が行われた場合(ステップS11でYes)、基準位置が再設定される(ステップS14)。つまり、プレイヤは、剣を操作している途中で基準位置を再設定することができる。ここで、本実施形態では、入力装置8を自由な向きに向けてゲーム操作を行うことができるために、剣操作の途中で、プレイヤが剣動作を開始した時点での入力装置8の姿勢(基準姿勢)がどこであったかがわからなくなる可能性がある。つまり、プレイヤが剣62を初期状態(プレイヤキャラクタ61の正面方向を向く状態)に戻すことが難しくなってしまう可能性がある。これに対して、本実施形態によれば、剣動作処理の途中に基準位置を再設定することによって、プレイヤは、剣62を初期状態に容易に戻すことができる。
【0171】
さらに、上記注目操作は、仮想カメラおよびプレイヤキャラクタ61を注目対象の方へ向ける操作である。仮想カメラの向きが変わると、表示される剣62の向きが表示上変化するので、表示される剣の向きと入力装置8の姿勢との関係が変化する。これによって、プレイヤが違和感を抱くおそれがある。これに対して、本実施形態によれば、注目操作が行われた場合には、基準位置が再設定されて剣62が初期状態に戻るので、プレイヤに上記の違和感を与えることを防止することができる。
【0172】
図14の説明に戻り、剣動作処理(ステップS6)の次のステップS7において、CPU10は、アイテム選択操作が行われたか否かを判定する。アイテム選択操作は、プレイヤキャラクタ61に剣62以外のアイテムを使用させるための操作である。詳細は後述するが、アイテム選択操作が行われると、アイテム選択画面が表示され、アイテム選択画面においてプレイヤはプレイヤキャラクタ61が使用するアイテムを選択する。アイテム選択操作は、入力装置8の所定のボタン(例えば、1番ボタン32b)を押下する操作である。CPU10は、ステップS1と同様に操作データ71を取得し、操作データ71の操作ボタンデータ75を参照して、アイテム選択操作のための所定のボタンが押下されたか否かを判定する。ステップS7の判定結果が肯定である場合、ステップS8の処理が実行される。一方、ステップS7の判定結果が否定である場合、ステップS1の処理が再度実行される。
【0173】
ステップS8において、CPU10はアイテム処理を実行する。アイテム処理は、剣62以外のアイテムを使用する動作をプレイヤキャラクタ61に行わせるための処理である。以下、図20を参照して、ステップS8のアイテム処理の詳細を説明する。
【0174】
図20は、図14に示すアイテム処理(ステップS8)の流れを示すフローチャートである。アイテム処理においては、まずステップS41において、CPU10はアイテム選択処理を実行する。アイテム選択処理は、プレイヤキャラクタ61が使用するアイテムをプレイヤに選択させるための処理である。アイテム選択処理においては、プレイヤキャラクタ61が使用するアイテムの候補のうちから、2次元座標に応じて1つのアイテムが選択され、所定のアイテム選択操作が行われた時点で選択されているアイテムが、プレイヤキャラクタが使用するアイテムに決定される。以下、図21を参照して、ステップS41のアイテム選択処理の詳細を説明する。
【0175】
図21は、図20に示すアイテム選択処理(ステップS41)の流れを示すフローチャートである。アイテム選択処理においては、まずステップS61において、CPU10は、アイテム選択画面を表示する。アイテム選択画面は、例えば、プレイヤキャラクタ61が使用可能なアイテムを表す画像(アイコン)が表示される画面である。ステップS61の次にステップS62の処理が実行される。
【0176】
ステップS62において、CPU10は上記2次元座標の基準位置を設定する。ステップS62の処理は上述のステップS4およびS5の処理と同じである。このように、本実施形態においては、アイテムを選択する操作の開始時において2次元座標の基準位置が設定される。ステップS62の次にステップS63の処理が実行される。
【0177】
ステップS63において、CPU10は操作データを取得する。ステップS63の処理は上述のステップS1の処理と同じである。なお、アイテム選択処理においては、ステップ63〜S66の処理ループが1フレーム時間に1回の割合で繰り返し実行される。ステップS63の次にステップS64の処理が実行される。
【0178】
ステップS64において、CPU10は上記2次元座標を算出する。ステップS64における2次元座標の算出方法は、上述したステップS22〜S25における算出方法と同じである。ステップS64の次にステップS65の処理が実行される。
【0179】
ステップS65において、CPU10は、ステップS64で算出された2次元座標に対応する表示画面上の位置にカーソルを表示する。まず、CPU10は、表示画面上におけるカーソルの位置を2次元座標に基づいて算出する。カーソルの位置は、2次元座標に基づいて算出されればどのように算出されてもよいが、本実施形態においては例えば次のようにして算出される。すなわち、カーソルの位置は、2次元座標が原点である場合には画面中央の位置に決められる。また、2次元座標が原点である場合には、画面中央の位置に対するカーソルの位置が、原点に対する2次元座標の方向に応じた方向で、かつ、原点から2次元座標までの距離に応じた距離となるように決められる。カーソルの位置を算出すると、CPU10は、上記アイテム選択画面に重ねて、算出された位置にカーソルを表示する。これによって、アイテムを表すアイコン画像とともに、プレイヤによって操作されるカーソルが表示されることとなる。ステップS65の次にステップS66の処理が実行される。
【0180】
ステップS66において、CPU10は、アイテムが選択されたか否かを判定する。すなわち、CPU10は、カーソルがアイテムのアイコン画像を指し示す状態で、アイテム選択操作が行われたか否かを判定する。アイテム選択操作は、プレイやキャラクタ61が使用するアイテムを決定するための操作であり、例えば、入力装置の所定のボタンを押下する操作である。ステップS66の判定結果が肯定である場合、CPU10はアイテム選択処理を終了する。この場合、アイテム選択操作が行われた時点でカーソルが指し示していたアイテムが、プレイヤキャラクタ61が使用するアイテムとして選択されたこととなる。一方、ステップS66の判定結果が否定である場合、ステップS63の処理が再度実行される。以降、ステップS66においてアイテムが選択されたと判定されるまで、ステップS63〜S66の処理ループが繰り返し実行される。
【0181】
以上のアイテム選択処理に示したように、本実施形態においては、プレイヤキャラクタ61が使用するアイテムを選択・決定する操作において、上記2次元座標が用いられる。また、2次元座標の基準位置は、アイテムを選択・決定する操作の開始時(ステップS62)において設定されるので、当該操作においても上記剣62の操作と同様、入力装置8を好きな向きに向けてゲーム操作を行うことができる。
【0182】
なお、他の実施形態においては、アイテム選択処理は、2次元座標に基づいて行われなくてもよい。例えば、アイテム選択処理の上記ステップS65において、CPU10は、2次元座標に代えて、ステップS22〜S24で算出される入力装置8の姿勢に基づいてカーソルの位置を算出するようにしてもよい。
【0183】
図20の説明に戻り、アイテム選択処理(ステップS41)が終了すると、ステップS42〜S55の処理において、ステップS66で決定されたアイテムを使用する動作をプレイヤキャラクタ61に行わせる処理が実行される。本実施形態では、プレイヤキャラクタ61が弓を使用する動作は上記2次元座標に基づいて制御されるものとし、図20のステップS42〜S55の処理においては、弓を使用する場合の処理について主に説明する。ステップS42〜S55の処理においては、2次元座標に対応する仮想空間内の位置を指示する照準画像64が表示され、入力装置8に対する所定の発射操作があったことに応じて、照準画像64が示す方向へ矢を発射するゲーム処理が実行される。
【0184】
ステップS42において、CPU10は、上記ステップS41のアイテム選択処理において弓が選択されたか否かを判定する。ステップS42の判定結果が否定である場合、ステップS43において、CPU10は、弓以外の他のアイテムをプレイヤキャラクタ61が使用する動作を制御する処理を実行する。なお、他のアイテムはどのようなものであってもよいし、また、他のアイテムの操作方法や動作の制御方法もどのようなものであってもよい。他のアイテムが例えばパチンコやブーメラン等、物体を飛ばす(発射する)アイテムである場合には、当該アイテムに関しては弓と同じ操作方法を採用してもよい。つまり、本実施形態における弓の操作方法は、物体を飛ばす他のアイテムについて用いることも可能である。ステップS43の次に、後述するステップS54の処理が実行される。一方、ステップS42の判定結果が肯定である場合、ステップS44の処理が実行される。
【0185】
ステップS44〜S46の処理は、上述したステップS62〜S64の処理と同様である。すなわち、ステップS44において、CPU10は上記2次元座標の基準位置を設定する。つまり、本実施形態においては、弓を使用する操作の開始時において、2次元座標の基準位置が設定される。ステップS44に続くステップS45において、CPU10は操作データを取得する。なお、本実施形態においては、弓を使用する動作を終了するまでの間、ステップS53の処理が実行される場合を除き、ステップ45〜S55の処理ループが1フレーム時間に1回の割合で繰り返し実行される。ステップS45に続くステップS46において、CPU10は上記2次元座標を算出する。ステップS46の次にステップS47の処理が実行される。
【0186】
ステップS47において、CPU10は、仮想空間(ゲーム空間)の画像を照準画像64とともにテレビ2の画面に表示させる。ここで、照準画像64は、上記2次元座標に応じた位置に表示される。ステップS47の処理は、具体的には次のようにして実行される。
【0187】
まず、CPU10は、2次元座標に基づいて照準画像64の表示位置を算出する。表示位置の具体的な算出方法は、上記カーソルの位置の算出方法(上記ステップS65)と同じであってもよい。ステップS47で算出された照準画像64の位置を示すデータは、表示位置データ80としてメインメモリに記憶される。
【0188】
次に、CPU10は、メインメモリからカメラデータ81を読み出し、仮想カメラの位置から仮想カメラの方向に見た仮想空間の画像を生成する。なお、弓の操作中においては、図10に示すような、いわゆる1人称視点のゲーム画像(プレイヤキャラクタ61から見た仮想空間の画像)が表示されるので、仮想カメラの位置は、プレイヤキャラクタ61の位置に基づいて決定される。また、仮想カメラの方向は、後述するステップS51で更新される。
【0189】
最後に、CPU10は、メインメモリから表示位置データ80を読み出し、仮想空間の画像に対して、表示位置データ80が示す位置に照準画像64を重ねた画像を表示する。以上のステップS47の処理によって、仮想空間を表す画像とともに、プレイヤによって操作される照準画像64が表示されることとなる。ステップS47の次にステップS48の処理が実行される。
【0190】
なお、本実施形態では、弓の操作中においては、プレイヤはより細かい精度で照準画像64の位置を調整しやすいように、ゲーム画像をズームアップ/ズームダウンすることができるものとする。そのため、本実施形態においては、CPU10は、弓の操作中においては1人称視点のゲーム画像を表示させるものとするが、他の実施形態においては、図8に示すようにプレイヤキャラクタ61を含むゲーム画像を弓の操作中において表示させるようにしてもよい。
【0191】
ステップS48において、CPU10は、リセット操作が行われたか否かを判定する。リセット操作は、弓の操作中において2次元座標の基準位置を再設定(リセット)するための操作である。リセット操作は、例えば、入力装置8の所定のボタンを押下する操作である。具体的には、CPU10は、ステップS45で取得された操作データ71の操作ボタンデータ75を参照して、リセット操作のための所定のボタンが押下されたか否かを判定する。ステップS48の判定結果が肯定である場合、ステップS49の処理が実行される。一方、ステップS48の判定結果が否定である場合、ステップS49の処理がスキップされてステップS50の処理が実行される。
【0192】
ステップS49において、CPU10は2次元座標の基準位置を再設定する。ステップS49の処理は、ステップS44(上記ステップS4およびS5)の処理と同じである。つまり、CPU10は、現時点の入力装置8の姿勢を算出し、算出された姿勢に対応する上記平面Q上の位置Rが原点となるように、xy座標系を設定する。設定されたxy座標系を示すデータは、メインメモリに記憶される。ステップS49の次にステップS50の処理が実行される。このように、本実施形態では、プレイヤは、弓の操作中においては、リセット操作によって基準位置をリセットすることができる。
【0193】
ステップS50において、CPU10は、照準画像64の位置が画面の周付近にあるか否かを判定する。具体的には、画面(表示領域)の周から所定距離以内の位置に照準画像64があるか否かを判定する。なお、照準画像64の位置は、表示位置データ80をメインメモリから読み出して参照することによって知ることができる。ステップS50の判定結果が肯定である場合、ステップS51の処理が実行される。一方、ステップS50の判定結果が否定である場合、ステップS51の処理がスキップされてステップS52の処理が実行される。
【0194】
ステップS51においては、CPU10は、照準画像64の位置に応じて仮想カメラの方向を変更する。本実施形態では、照準画像64が画面の端部から所定距離以内の位置にない場合には、仮想カメラは移動しない。したがって、図10および図12に示したように、照準画像64が画面中央に位置する場合(2次元座標が基準位置となる場合)には、仮想カメラは移動しない。また、照準画像64が画面の端部から所定距離以内の位置にある場合には、仮想カメラは、照準画像64の位置に応じた方向へ移動される。すなわち、照準画像64が画面の右端部から所定距離以内の位置にある場合には仮想カメラは右方向へ回転移動させられ、照準画像64が画面の左端部から所定距離以内の位置にある場合には仮想カメラは左方向へ回転移動させられる。また、照準画像64が画面の上端部から所定距離以内の位置にある場合には仮想カメラは上方向へ回転移動させられ、照準画像64が画面の下端部から所定距離以内の位置にある場合には仮想カメラは下方向へ回転移動させられる。また、本実施形態においては、照準画像64が画面の端部に近づくほど仮想カメラの移動量(回転量)は大きくなる。つまり、CPU10は、2次元座標が基準位置から離れている度合に応じて仮想カメラを移動させる。なお、仮想カメラを上下方向に180°回転すると、画面に表示される画像が上下反対になってしまうので、上下方向に関しては、仮想カメラの向きに制限を設けるようにしてもよい。例えば、仮想カメラが真上または真下の向きまでしか回転しないようにしてもよい。
【0195】
CPU10は、移動(変更)後の仮想カメラの方向(および位置)を示すデータをカメラデータ81としてメインメモリに記憶する。上記ステップS47において仮想空間の画像を生成する際にこのカメラデータ81が用いられることによって、仮想空間内の表示対象領域がスクロールして表示されることになる。なお、ステップS51の処理は1フレーム時間毎に実行されるので、プレイヤは、照準画像64を画面の端部付近に位置させることによって、仮想カメラを継続的に回転させることができ、画面をスクロールさせることができる。また、照準画像64に基づく仮想カメラの制御方法はどのような方法であってもよく、他の実施形態においては、仮想カメラの方向に代えて(あるいは、方向に加えて)、仮想カメラの位置を変更するようにしてもよい。上記ステップS51の次にステップS52の処理が実行される。
【0196】
ステップS52において、CPU10は、発射操作が行われたか否かを判定する。発射操作は、プレイヤキャラクタ61に矢を発射させる操作である。発射操作は、入力装置8の所定のボタン(例えば、Aボタン32d)を押下する操作である。すなわち、CPU10は、ステップS10で取得された操作データ71の操作ボタンデータ75を参照して、注目操作のための所定のボタンが押下されたか否かを判定する。ステップS52の判定結果が肯定である場合、ステップS53の処理が実行される。一方、ステップS52の判定結果が否定である場合、ステップS53の処理がスキップされてステップS54の処理が実行される。
【0197】
ステップS53において、CPU10は、照準画像64が示す方向に向けてプレイヤキャラクタ61に矢を発射させる動作を行わせる。すなわち、発射操作が行われた場合、CPU10は、照準画像64が示す方向に向けて矢が飛んでいく画像を生成して画面に表示する処理を実行する。なお、この処理は、複数フレームにわたって実行されてもよい。また、「照準画像64が示す方向」とは、仮想カメラあるいはプレイヤキャラクタ61の位置から、照準画像64が示す仮想空間内の位置への方向である。つまり、本実施形態においては、照準画像64は矢の発射方向を示すものである。ただし、他の実施形態においては、照準画像64は着弾位置を示すものであってもよい。ステップS53の次にステップS54の処理が実行される。
【0198】
ステップS54において、CPU10は、アイテム選択操作が行われたか否かを判定する。ステップS54の処理は、上述のステップS7の処理と同じである。ステップS54の判定結果が肯定である場合、上記ステップS41の処理が再度実行される。この場合、プレイヤキャラクタ61が使用するアイテムが再度選択され、選択されたアイテムを使用する動作が行われる。一方、ステップS54の判定結果が否定である場合、ステップS55の処理が実行される。
【0199】
ステップS55において、CPU10は、アイテムを使用する動作を終了するか否かを判定する。ステップS55の判定は、アイテムを使用する動作を終了するための所定の操作(例えば、2番ボタン32cを押下する操作)が行われたか否かによって行われる。ステップS55の判定結果が否定である場合、上記ステップS45の処理が再度実行される。この場合、弓の操作が引き続き行われることなる。一方、ステップS55の判定結果が肯定である場合、CPU10はアイテム処理を終了する。
【0200】
図14の説明に戻り、アイテム処理(ステップS8)を終了すると、ステップS1の処理が再度実行される。以降、ゲームを終了するまで、ステップS1〜S8の処理が繰り返し実行される。なお、CPU10は、ゲームがクリアされた場合や、ゲームオーバーとなった場合や、プレイヤがゲームを中止する指示を行った場合等にゲームを終了する。以上で、図14に示すゲーム処理の説明を終了する。
【0201】
以上のように、本実施形態によれば、プレイヤによる所定の指示入力があった場合(ステップS2,S7,S11,S48,S66でYesとなる場合)に、2次元座標の基準位置が設定される(ステップS5,S62,S14,S49,S44)。その後、2次元座標は、基準位置を基準としたときの位置を表すものとして、角速度データに基づいて算出される(S25,S46,S64)。そして、算出された2次元座標をゲーム入力としてゲーム処理が実行される(S26,S47,S65)。
【0202】
上記によれば、2次元座標は、所定の指示入力があった時の入力装置8の姿勢を基準姿勢として、基準姿勢からの姿勢を反映するものとなる。そして、この2次元座標がゲーム入力として用いられるので、プレイヤは、基準姿勢から入力装置8の姿勢を変化させることによってゲーム操作を行うことができる。また、上記によれば、上記基準位置はプレイヤによる所定の指示入力があった場合に設定される。つまり、プレイヤは好きな時に基準位置を設定することができるので、プレイヤは、基準姿勢を自由に設定することができる。以上より、本実施形態によれば、プレイヤが自由に設定できる姿勢を基準姿勢として、その基準姿勢から入力装置8の姿勢を変化させるゲーム操作を行うことができる。したがって、本実施形態によれば、プレイヤが入力装置8を自由な方向に向けて容易にゲーム操作を行うことができる。
【0203】
[変形例]
(ゲーム処理に関する変形例)
上記実施形態では、2次元座標に基づくゲーム処理の例として、所定のオブジェクト(剣62)の向きを制御する処理(ステップS26)、照準画像の位置を制御して照準画像が示す方向へ矢を発射する処理(ステップS47,S53)、および、カーソルの位置を制御してカーソルが指し示すアイテムを選択する処理(ステップS65,S66)を挙げた。ここで、他の実施形態においては、2次元座標に基づくゲーム処理は、上記3つの処理に限らず、どのような処理であってもよい。例えば、ゲーム装置は、オブジェクトの移動方向を2次元座標に基づいて決定するゲーム処理や、2次元座標に基づいてカーソルの位置を制御してカーソルが指し示すオブジェクトに対して何らかの処理を行うゲーム処理等を実行してもよい。
【0204】
(基準位置の設定タイミングに関する変形例)
上記実施形態においては、基準位置を設定するタイミングとして、(a)2次元座標に基づくゲーム処理を開始するタイミング(ステップS5,S44,S62)と、(b)2次元座標に基づくゲーム処理の途中のタイミング(ステップS14,S49)との2通りの例を説明した。ここで、他の実施形態においては、基準位置の設定は、プレイヤの指示入力があったことに応じて行われれば、どのようなタイミングであってもよい。すなわち、基準位置を設定するタイミングは、2次元座標に基づくゲーム処理を開始するタイミングとは別であってもよく、基準位置を設定するための操作は、当該ゲーム処理を開始するための操作と別であってもよい。
【0205】
(ゲーム入力として用いる情報に関する変形例)
上記実施形態においては、入力装置8の姿勢に応じた値となる2次元座標をゲーム入力として用いる場合を例として説明した。ここで、他の実施形態においては、ゲーム装置は、入力装置8の姿勢をゲーム入力として用いるようにしてもよい。すなわち、ゲーム装置3は、プレイヤによる所定の指示入力があった場合、指示入力があった時点で取得された操作データ(角速度データ)に基づいて算出される入力装置8の姿勢を基準姿勢とし、基準姿勢に対する姿勢の変化をゲーム入力として用いるようにしてもよい。図14に示すゲーム処理に即して言えば、CPU10は、ステップS5において、ステップS4で算出された姿勢を基準姿勢として設定してもよい。そして、ステップS26において、ステップS22〜S24で算出された姿勢の、基準姿勢に対する変化量および/または変化方向に基づいて、剣62を向ける動作を制御してもよい。
【0206】
(ネットワークを介したゲームシステムに関する変形例)
上記実施形態においては、角速度データを取得してから2次元座標に基づく処理を実行するまでの一連の処理が単一のゲーム装置で実行される場合を例として説明した。ここで、他の実施形態においては、上記の一連の処理は、複数の情報処理装置からなるゲームシステムにおいて実行されてもよい。つまり、本発明は、複数の情報処理装置からなるゲームシステムの形態で実現されてもよい。例えば、端末装置とサーバ装置とからなるゲームシステムに本発明を適用することも可能である。具体的には、端末装置は、ジャイロセンサを備え、角速度データをネットワークを介してサーバ装置へ送信する。サーバ装置は、受信した角速度データに基づいて2次元座標を算出するとともに、2次元座標に基づくゲーム処理を実行し、ゲーム処理の結果を端末装置へ送信する。端末装置は、ゲーム処理の結果に基づいてゲーム画像を生成して表示画面に表示する。以上のゲームシステムによっても、上記実施形態と同様の効果を得ることができる。また、上記のゲームシステムにおいて、サーバ側のシステムは、ネットワークを介して互いに通信可能な複数の情報処理装置によって構成されてもよく、複数の情報処理装置が一連の処理を分担して実行するようにしてもよい。
【産業上の利用可能性】
【0207】
以上のように、本発明は、プレイヤが入力装置を自由な方向に向けて容易にゲーム操作を行えるようにすること等を目的として、ゲーム装置やゲームプログラム等として利用することが可能である。
【符号の説明】
【0208】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ部
7 ジャイロセンサユニット
8 入力装置
10 CPU
11e 内部メインメモリ
12 外部メインメモリ
70 ゲームプログラム
71 操作データ
72 角速度データ
73 加速度データ
74 マーカ座標データ
77 姿勢データ
78 座標データ
【特許請求の範囲】
【請求項1】
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得部と、
プレイヤによる所定の指示入力があった場合、所定平面上における所定の基準位置を設定する基準設定部と、
前記基準位置を基準としたときの前記所定平面上の位置を表す座標を前記角速度データに基づいて算出する座標算出部と、
前記座標に基づいてゲーム処理を実行するゲーム処理部とを備える、ゲーム装置。
【請求項2】
前記ゲーム処理部は、前記座標に対応する仮想空間内の位置に向けて所定の動作を所定のオブジェクトに行わせる処理、または、当該仮想空間内の位置に存在するオブジェクトに対する所定の処理を前記ゲーム処理として実行する、請求項1に記載のゲーム装置。
【請求項3】
前記ゲーム処理部は、前記座標に対応する仮想空間内の位置を指示する所定の画像を表示し、前記入力装置に対する所定の第1操作があったことに応じて、前記ゲーム処理を実行する、請求項2に記載のゲーム装置。
【請求項4】
前記基準設定部は、前記入力装置に対する所定の第2操作があった場合に前記基準位置を更新する、請求項2または請求項3に記載のゲーム装置。
【請求項5】
前記所定の第2操作は、所定のオブジェクトが使用するアイテムを決定する操作であり、
前記ゲーム処理部は、決定されたアイテムを使用する動作を前記所定のオブジェクトに行わせる処理を前記ゲーム処理として実行する、請求項4に記載のゲーム装置。
【請求項6】
前記所定のオブジェクトが使用するアイテムの候補のうちから、前記角速度データに基づいて算出される前記入力装置の姿勢または前記座標に応じて1つのアイテムを選択し、前記所定の第2操作が行われた時点で選択されているアイテムを、前記所定のオブジェクトが使用するアイテムに決定するアイテム選択部をさらに備える、請求項5に記載のゲーム装置。
【請求項7】
仮想カメラの位置および/または方向を前記座標に基づいて制御するカメラ制御部をさらに備え、
前記カメラ制御部は、前記座標が前記基準位置を表す場合は少なくとも、前記仮想カメラの移動を停止する、請求項1から請求項6のいずれか1項に記載のゲーム装置。
【請求項8】
前記カメラ制御部は、前記座標が前記基準位置から離れている度合に応じて前記仮想カメラを移動させる、請求項7に記載のゲーム装置。
【請求項9】
前記入力装置に対する所定の第3操作があった場合、仮想空間内の所定の対象の方を仮想カメラが向くように仮想カメラの位置および/または方向を制御するカメラ制御部をさらに備え、
前記基準設定部は、前記所定の第3操作があった場合に前記基準位置を更新する、請求項1に記載のゲーム装置。
【請求項10】
前記ゲーム処理部は、プレイヤの操作対象となるオブジェクトの動作を、前記座標に応じて向きを変えるように制御する処理を前記ゲーム処理として実行する、請求項9に記載のゲーム装置。
【請求項11】
前記ゲーム処理部は、前記所定の指示入力があったことに応じて、前記プレイヤの操作対象となるオブジェクトの動作の制御を開始する、請求項10に記載のゲーム装置。
【請求項12】
前記座標算出部は、前記角速度データが示す角速度に応じて変化するように前記座標を算出する、請求項1から請求項11のいずれか1項に記載のゲーム装置。
【請求項13】
前記角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出部をさらに備え、
前記座標算出部は、前記入力装置の姿勢に基づいて前記座標を算出する、請求項1から請求項11のいずれか1項に記載のゲーム装置。
【請求項14】
前記座標算出部は、所定の基準点から前記入力装置の姿勢を示すベクトルの方向へ延ばした線分と前記所定平面との交点の位置を表す座標を算出する、請求項13に記載のゲーム装置。
【請求項15】
前記入力装置は加速度センサをさらに有しており、
前記姿勢算出部は、角速度データに基づいて前記入力装置の姿勢を算出するとともに、前記加速度センサが検出する加速度に基づいて当該姿勢を補正する、請求項14に記載のゲーム装置。
【請求項16】
前記入力装置は撮像手段をさらに有しており、
前記姿勢算出部は、前記角速度データに基づいて前記入力装置の姿勢を算出するとともに、前記撮像手段が撮像する画像内における所定の撮像対象の位置に基づいて、少なくとも重力方向を軸とした回転に関して当該姿勢を補正する、請求項14に記載のゲーム装置。
【請求項17】
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得部と、
プレイヤによる所定の指示入力があった場合、前記指示入力があった時点で取得された角速度データに基づいて前記入力装置の基準姿勢を算出する基準算出部と、
前記指示入力があった後で取得された角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出部と、
前記姿勢算出部によって算出される姿勢の、前記基準姿勢に対する傾きに基づいてゲーム処理を実行するゲーム処理部とを備える、ゲーム装置。
【請求項18】
ゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得手段と、
プレイヤによる所定の指示入力があった場合、所定平面上における所定の基準位置を設定する基準設定手段と、
前記基準位置を基準としたときの前記所定平面上の位置を表す座標を前記角速度データに基づいて算出する座標算出手段と、
前記座標に基づいてゲーム処理を実行するゲーム処理手段として前記コンピュータを機能させる、ゲームプログラム。
【請求項19】
前記ゲーム処理手段は、前記座標に対応する仮想空間内の位置に向けて所定の動作を所定のオブジェクトに行わせる処理、または、当該仮想空間内の位置に存在するオブジェクトに対する所定の処理を前記ゲーム処理として実行する、請求項18に記載のゲームプログラム。
【請求項20】
前記ゲーム処理手段は、前記座標に対応する仮想空間内の位置を指示する所定の画像を表示し、前記入力装置に対する所定の第1操作があったことに応じて、前記ゲーム処理を実行する、請求項19に記載のゲームプログラム。
【請求項21】
前記基準設定手段は、前記入力装置に対する所定の第2操作があった場合に前記基準位置を更新する、請求項19または請求項20に記載のゲームプログラム。
【請求項22】
前記所定の第2操作は、所定のオブジェクトが使用するアイテムを決定する操作であり、
前記ゲーム処理手段は、決定されたアイテムを使用する動作を前記所定のオブジェクトに行わせる処理を前記ゲーム処理として実行する、請求項21に記載のゲームプログラム。
【請求項23】
前記所定のオブジェクトが使用するアイテムの候補のうちから、前記角速度データに基づいて算出される前記入力装置の姿勢または前記座標に応じて1つのアイテムを選択し、前記所定の第2操作が行われた時点で選択されているアイテムを、前記所定のオブジェクトが使用するアイテムに決定するアイテム選択手段として前記コンピュータをさらに機能させる、請求項22に記載のゲームプログラム。
【請求項24】
仮想カメラの位置および/または方向を前記座標に基づいて制御するカメラ制御手段として前記コンピュータをさらに機能させ、
前記カメラ制御手段は、前記座標が前記基準位置を表す場合は少なくとも、前記仮想カメラの移動を停止する、請求項18から請求項23のいずれか1項に記載のゲームプログラム。
【請求項25】
前記カメラ制御手段は、前記座標が前記基準位置から離れている度合に応じて前記仮想カメラを移動させる、請求項24に記載のゲームプログラム。
【請求項26】
前記入力装置に対する所定の第3操作があった場合、仮想空間内の所定の対象の方を仮想カメラが向くように仮想カメラの位置および/または方向を制御するカメラ制御手段をさらに備え、
前記基準設定手段は、前記所定の第3操作があった場合に前記基準位置を更新する、請求項18に記載のゲームプログラム。
【請求項27】
前記ゲーム処理手段は、プレイヤの操作対象となるオブジェクトの動作を、前記座標に応じて向きを変えるように制御する処理を前記ゲーム処理として実行する、請求項26に記載のゲームプログラム。
【請求項28】
前記ゲーム処理手段は、前記所定の指示入力があったことに応じて、前記プレイヤの操作対象となるオブジェクトの動作の制御を開始する、請求項27に記載のゲームプログラム。
【請求項29】
前記座標算出手段は、前記角速度データが示す角速度に応じて変化するように前記座標を算出する、請求項18から請求項28のいずれか1項に記載のゲームプログラム。
【請求項30】
前記角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出手段として前記コンピュータをさらに機能させ、
前記座標算出手段は、前記入力装置の姿勢に基づいて前記座標を算出する、請求項18から請求項28のいずれか1項に記載のゲームプログラム。
【請求項31】
前記座標算出手段は、所定の基準点から前記入力装置の姿勢を示すベクトルの方向へ延ばした線分と前記所定平面との交点の位置を表す座標を算出する、請求項30に記載のゲームプログラム。
【請求項32】
前記入力装置は加速度センサをさらに有しており、
前記姿勢算出手段は、角速度データに基づいて前記入力装置の姿勢を算出するとともに、前記加速度センサが検出する加速度に基づいて当該姿勢を補正する、請求項31に記載のゲームプログラム。
【請求項33】
前記入力装置は撮像手段をさらに有しており、
前記姿勢算出手段は、前記角速度データに基づいて前記入力装置の姿勢を算出するとともに、前記撮像手段が撮像する画像内における所定の撮像対象の位置に基づいて、少なくとも重力方向を軸とした回転に関して当該姿勢を補正する、請求項31に記載のゲームプログラム。
【請求項34】
ゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得手段と、
プレイヤによる所定の指示入力があった場合、前記指示入力があった時点で取得された角速度データに基づいて前記入力装置の基準姿勢を算出する基準算出手段と、
前記指示入力があった後で取得された角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出手段と、
前記姿勢算出手段によって算出される姿勢の、前記基準姿勢に対する傾きに基づいてゲーム処理を実行するゲーム処理手段として前記コンピュータを機能させる、ゲームプログラム。
【請求項35】
互いに通信可能な1以上の情報処理装置を含むゲームシステムであって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得部と、
プレイヤによる所定の指示入力があった場合、所定平面上における所定の基準位置を設定する基準設定部と、
前記基準位置を基準としたときの前記所定平面上の位置を表す座標を前記角速度データに基づいて算出する座標算出部と、
前記座標に基づいてゲーム処理を実行するゲーム処理部とを備える、ゲームシステム。
【請求項36】
互いに通信可能な1以上の情報処理装置を含むゲームシステムであって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得部と、
プレイヤによる所定の指示入力があった場合、前記指示入力があった時点で取得された角速度データに基づいて前記入力装置の基準姿勢を算出する基準算出部と、
前記指示入力があった後で取得された角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出部と、
前記姿勢算出部によって算出される姿勢の、前記基準姿勢に対する傾きに基づいてゲーム処理を実行するゲーム処理部とを備える、ゲームシステム。
【請求項37】
互いに通信可能な1以上の情報処理装置のコンピュータによって実行されるゲーム処理方法であって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得ステップと、
プレイヤによる所定の指示入力があった場合、所定平面上における所定の基準位置を設定する基準設定ステップと、
前記基準位置を基準としたときの前記所定平面上の位置を表す座標を前記角速度データに基づいて算出する座標算出ステップと、
前記座標に基づいてゲーム処理を実行するゲーム処理ステップとを備える、ゲーム処理方法。
【請求項38】
互いに通信可能な1以上の情報処理装置のコンピュータによって実行されるゲーム処理方法であって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得ステップと、
プレイヤによる所定の指示入力があった場合、前記指示入力があった時点で取得された角速度データに基づいて前記入力装置の基準姿勢を算出する基準算出ステップと、
前記指示入力があった後で取得された角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出ステップと、
前記姿勢算出ステップにおいて算出される姿勢の、前記基準姿勢に対する傾きに基づいてゲーム処理を実行するゲーム処理ステップとを備える、ゲーム処理方法。
【請求項1】
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得部と、
プレイヤによる所定の指示入力があった場合、所定平面上における所定の基準位置を設定する基準設定部と、
前記基準位置を基準としたときの前記所定平面上の位置を表す座標を前記角速度データに基づいて算出する座標算出部と、
前記座標に基づいてゲーム処理を実行するゲーム処理部とを備える、ゲーム装置。
【請求項2】
前記ゲーム処理部は、前記座標に対応する仮想空間内の位置に向けて所定の動作を所定のオブジェクトに行わせる処理、または、当該仮想空間内の位置に存在するオブジェクトに対する所定の処理を前記ゲーム処理として実行する、請求項1に記載のゲーム装置。
【請求項3】
前記ゲーム処理部は、前記座標に対応する仮想空間内の位置を指示する所定の画像を表示し、前記入力装置に対する所定の第1操作があったことに応じて、前記ゲーム処理を実行する、請求項2に記載のゲーム装置。
【請求項4】
前記基準設定部は、前記入力装置に対する所定の第2操作があった場合に前記基準位置を更新する、請求項2または請求項3に記載のゲーム装置。
【請求項5】
前記所定の第2操作は、所定のオブジェクトが使用するアイテムを決定する操作であり、
前記ゲーム処理部は、決定されたアイテムを使用する動作を前記所定のオブジェクトに行わせる処理を前記ゲーム処理として実行する、請求項4に記載のゲーム装置。
【請求項6】
前記所定のオブジェクトが使用するアイテムの候補のうちから、前記角速度データに基づいて算出される前記入力装置の姿勢または前記座標に応じて1つのアイテムを選択し、前記所定の第2操作が行われた時点で選択されているアイテムを、前記所定のオブジェクトが使用するアイテムに決定するアイテム選択部をさらに備える、請求項5に記載のゲーム装置。
【請求項7】
仮想カメラの位置および/または方向を前記座標に基づいて制御するカメラ制御部をさらに備え、
前記カメラ制御部は、前記座標が前記基準位置を表す場合は少なくとも、前記仮想カメラの移動を停止する、請求項1から請求項6のいずれか1項に記載のゲーム装置。
【請求項8】
前記カメラ制御部は、前記座標が前記基準位置から離れている度合に応じて前記仮想カメラを移動させる、請求項7に記載のゲーム装置。
【請求項9】
前記入力装置に対する所定の第3操作があった場合、仮想空間内の所定の対象の方を仮想カメラが向くように仮想カメラの位置および/または方向を制御するカメラ制御部をさらに備え、
前記基準設定部は、前記所定の第3操作があった場合に前記基準位置を更新する、請求項1に記載のゲーム装置。
【請求項10】
前記ゲーム処理部は、プレイヤの操作対象となるオブジェクトの動作を、前記座標に応じて向きを変えるように制御する処理を前記ゲーム処理として実行する、請求項9に記載のゲーム装置。
【請求項11】
前記ゲーム処理部は、前記所定の指示入力があったことに応じて、前記プレイヤの操作対象となるオブジェクトの動作の制御を開始する、請求項10に記載のゲーム装置。
【請求項12】
前記座標算出部は、前記角速度データが示す角速度に応じて変化するように前記座標を算出する、請求項1から請求項11のいずれか1項に記載のゲーム装置。
【請求項13】
前記角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出部をさらに備え、
前記座標算出部は、前記入力装置の姿勢に基づいて前記座標を算出する、請求項1から請求項11のいずれか1項に記載のゲーム装置。
【請求項14】
前記座標算出部は、所定の基準点から前記入力装置の姿勢を示すベクトルの方向へ延ばした線分と前記所定平面との交点の位置を表す座標を算出する、請求項13に記載のゲーム装置。
【請求項15】
前記入力装置は加速度センサをさらに有しており、
前記姿勢算出部は、角速度データに基づいて前記入力装置の姿勢を算出するとともに、前記加速度センサが検出する加速度に基づいて当該姿勢を補正する、請求項14に記載のゲーム装置。
【請求項16】
前記入力装置は撮像手段をさらに有しており、
前記姿勢算出部は、前記角速度データに基づいて前記入力装置の姿勢を算出するとともに、前記撮像手段が撮像する画像内における所定の撮像対象の位置に基づいて、少なくとも重力方向を軸とした回転に関して当該姿勢を補正する、請求項14に記載のゲーム装置。
【請求項17】
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得部と、
プレイヤによる所定の指示入力があった場合、前記指示入力があった時点で取得された角速度データに基づいて前記入力装置の基準姿勢を算出する基準算出部と、
前記指示入力があった後で取得された角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出部と、
前記姿勢算出部によって算出される姿勢の、前記基準姿勢に対する傾きに基づいてゲーム処理を実行するゲーム処理部とを備える、ゲーム装置。
【請求項18】
ゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得手段と、
プレイヤによる所定の指示入力があった場合、所定平面上における所定の基準位置を設定する基準設定手段と、
前記基準位置を基準としたときの前記所定平面上の位置を表す座標を前記角速度データに基づいて算出する座標算出手段と、
前記座標に基づいてゲーム処理を実行するゲーム処理手段として前記コンピュータを機能させる、ゲームプログラム。
【請求項19】
前記ゲーム処理手段は、前記座標に対応する仮想空間内の位置に向けて所定の動作を所定のオブジェクトに行わせる処理、または、当該仮想空間内の位置に存在するオブジェクトに対する所定の処理を前記ゲーム処理として実行する、請求項18に記載のゲームプログラム。
【請求項20】
前記ゲーム処理手段は、前記座標に対応する仮想空間内の位置を指示する所定の画像を表示し、前記入力装置に対する所定の第1操作があったことに応じて、前記ゲーム処理を実行する、請求項19に記載のゲームプログラム。
【請求項21】
前記基準設定手段は、前記入力装置に対する所定の第2操作があった場合に前記基準位置を更新する、請求項19または請求項20に記載のゲームプログラム。
【請求項22】
前記所定の第2操作は、所定のオブジェクトが使用するアイテムを決定する操作であり、
前記ゲーム処理手段は、決定されたアイテムを使用する動作を前記所定のオブジェクトに行わせる処理を前記ゲーム処理として実行する、請求項21に記載のゲームプログラム。
【請求項23】
前記所定のオブジェクトが使用するアイテムの候補のうちから、前記角速度データに基づいて算出される前記入力装置の姿勢または前記座標に応じて1つのアイテムを選択し、前記所定の第2操作が行われた時点で選択されているアイテムを、前記所定のオブジェクトが使用するアイテムに決定するアイテム選択手段として前記コンピュータをさらに機能させる、請求項22に記載のゲームプログラム。
【請求項24】
仮想カメラの位置および/または方向を前記座標に基づいて制御するカメラ制御手段として前記コンピュータをさらに機能させ、
前記カメラ制御手段は、前記座標が前記基準位置を表す場合は少なくとも、前記仮想カメラの移動を停止する、請求項18から請求項23のいずれか1項に記載のゲームプログラム。
【請求項25】
前記カメラ制御手段は、前記座標が前記基準位置から離れている度合に応じて前記仮想カメラを移動させる、請求項24に記載のゲームプログラム。
【請求項26】
前記入力装置に対する所定の第3操作があった場合、仮想空間内の所定の対象の方を仮想カメラが向くように仮想カメラの位置および/または方向を制御するカメラ制御手段をさらに備え、
前記基準設定手段は、前記所定の第3操作があった場合に前記基準位置を更新する、請求項18に記載のゲームプログラム。
【請求項27】
前記ゲーム処理手段は、プレイヤの操作対象となるオブジェクトの動作を、前記座標に応じて向きを変えるように制御する処理を前記ゲーム処理として実行する、請求項26に記載のゲームプログラム。
【請求項28】
前記ゲーム処理手段は、前記所定の指示入力があったことに応じて、前記プレイヤの操作対象となるオブジェクトの動作の制御を開始する、請求項27に記載のゲームプログラム。
【請求項29】
前記座標算出手段は、前記角速度データが示す角速度に応じて変化するように前記座標を算出する、請求項18から請求項28のいずれか1項に記載のゲームプログラム。
【請求項30】
前記角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出手段として前記コンピュータをさらに機能させ、
前記座標算出手段は、前記入力装置の姿勢に基づいて前記座標を算出する、請求項18から請求項28のいずれか1項に記載のゲームプログラム。
【請求項31】
前記座標算出手段は、所定の基準点から前記入力装置の姿勢を示すベクトルの方向へ延ばした線分と前記所定平面との交点の位置を表す座標を算出する、請求項30に記載のゲームプログラム。
【請求項32】
前記入力装置は加速度センサをさらに有しており、
前記姿勢算出手段は、角速度データに基づいて前記入力装置の姿勢を算出するとともに、前記加速度センサが検出する加速度に基づいて当該姿勢を補正する、請求項31に記載のゲームプログラム。
【請求項33】
前記入力装置は撮像手段をさらに有しており、
前記姿勢算出手段は、前記角速度データに基づいて前記入力装置の姿勢を算出するとともに、前記撮像手段が撮像する画像内における所定の撮像対象の位置に基づいて、少なくとも重力方向を軸とした回転に関して当該姿勢を補正する、請求項31に記載のゲームプログラム。
【請求項34】
ゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得手段と、
プレイヤによる所定の指示入力があった場合、前記指示入力があった時点で取得された角速度データに基づいて前記入力装置の基準姿勢を算出する基準算出手段と、
前記指示入力があった後で取得された角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出手段と、
前記姿勢算出手段によって算出される姿勢の、前記基準姿勢に対する傾きに基づいてゲーム処理を実行するゲーム処理手段として前記コンピュータを機能させる、ゲームプログラム。
【請求項35】
互いに通信可能な1以上の情報処理装置を含むゲームシステムであって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得部と、
プレイヤによる所定の指示入力があった場合、所定平面上における所定の基準位置を設定する基準設定部と、
前記基準位置を基準としたときの前記所定平面上の位置を表す座標を前記角速度データに基づいて算出する座標算出部と、
前記座標に基づいてゲーム処理を実行するゲーム処理部とを備える、ゲームシステム。
【請求項36】
互いに通信可能な1以上の情報処理装置を含むゲームシステムであって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得部と、
プレイヤによる所定の指示入力があった場合、前記指示入力があった時点で取得された角速度データに基づいて前記入力装置の基準姿勢を算出する基準算出部と、
前記指示入力があった後で取得された角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出部と、
前記姿勢算出部によって算出される姿勢の、前記基準姿勢に対する傾きに基づいてゲーム処理を実行するゲーム処理部とを備える、ゲームシステム。
【請求項37】
互いに通信可能な1以上の情報処理装置のコンピュータによって実行されるゲーム処理方法であって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得ステップと、
プレイヤによる所定の指示入力があった場合、所定平面上における所定の基準位置を設定する基準設定ステップと、
前記基準位置を基準としたときの前記所定平面上の位置を表す座標を前記角速度データに基づいて算出する座標算出ステップと、
前記座標に基づいてゲーム処理を実行するゲーム処理ステップとを備える、ゲーム処理方法。
【請求項38】
互いに通信可能な1以上の情報処理装置のコンピュータによって実行されるゲーム処理方法であって、
ジャイロセンサを少なくとも含む入力装置から、当該ジャイロセンサからの角速度データを少なくとも含む操作データを取得する操作データ取得ステップと、
プレイヤによる所定の指示入力があった場合、前記指示入力があった時点で取得された角速度データに基づいて前記入力装置の基準姿勢を算出する基準算出ステップと、
前記指示入力があった後で取得された角速度データに基づいて前記入力装置の姿勢を算出する姿勢算出ステップと、
前記姿勢算出ステップにおいて算出される姿勢の、前記基準姿勢に対する傾きに基づいてゲーム処理を実行するゲーム処理ステップとを備える、ゲーム処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2011−239985(P2011−239985A)
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願番号】特願2010−115473(P2010−115473)
【出願日】平成22年5月19日(2010.5.19)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願日】平成22年5月19日(2010.5.19)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]