(58)【調査した分野】(Int.Cl.,DB名)
前記出力ステップにおいては、前記所定面に対して略垂直な方向から見た前記操作装置を表す画像および/または音声が出力される、請求項9または請求項10に記載の判別方法。
【発明を実施するための形態】
【0030】
[1.情報処理システムの構成]
以下、本実施形態の一例に係る情報処理システム、情報処理装置、情報処理プログラム、および判別方法について説明する。
図1は、本実施形態に係る情報処理システムの一例を示すブロック図である。
図1において、情報処理システム1は、操作装置2、ゲーム装置3、およびテレビ4を備える。本実施形態における情報処理システム1は、操作装置2に対するゲーム操作に応じてゲーム処理を実行するゲームシステムである。
【0031】
本情報処理システム1においては、操作装置2に対する入力に応じてゲーム装置3が所定の情報処理(後述するゲーム制御処理)を実行し、実行の結果得られた画像(ゲーム画像)が操作装置2および/またはテレビ4に表示される。このように、本実施形態においては、情報処理システム1は、入力機能、情報処理機能、および表示機能が複数の装置によって実現される構成である。なお、他の実施形態においては、情報処理システム1は、これらの機能を有する単一の情報処理装置(例えば携帯型あるいは可搬型の情報処理装置)で構成されてもよい。
【0032】
操作装置2は、ユーザが把持可能な入力装置である。操作装置2はゲーム装置3と通信可能である。操作装置2は、操作装置2に対する操作を表す操作データをゲーム装置3へ送信する。また、本実施形態においては、操作装置2は表示部(LCD11)を備えている。ゲーム装置3から画像(ゲーム画像)が送信されてくる場合、操作装置2は表示部に当該画像を表示する。なお、操作装置2の具体的な構成については後述する(
図2および
図3参照)。
【0033】
ゲーム装置3は、情報処理装置の一例である。本実施形態においては、ゲーム装置3はCPU(制御部)5およびメモリ6を有し、CPU5がメモリ6を用いて所定の情報処理プログラムを実行することによって、ゲーム装置3における各種機能(
図19に示すゲーム処理)が実現される。なお、ゲーム装置3は、上記の情報処理を実行することができればどのような構成であってもよい。ゲーム装置3は、操作装置2からの操作データを入力として情報処理を実行する。そして、ゲーム装置3は、情報処理の実行結果に応じて画像(ゲーム画像)を生成する。生成された画像は、表示装置である操作装置2および/またはテレビ4へ出力される。
【0034】
テレビ4は、生成された画像を表示する表示装置の一例である。テレビ4はゲーム装置3から送信されるデータを受信可能である。ゲーム装置3において生成された画像がテレビ4へ送信されてくると、テレビ4は当該画像を表示する。
【0035】
図2は、操作装置2の外観構成の一例を示す図である。
図2に示すように、操作装置2は略板状のハウジング10を備える。ハウジング10は、ユーザが両手または片手で把持可能な大きさ(形状)である。また、操作装置2は、表示部の一例であるLCD11を備える。LCD11は、ゲーム装置3における情報処理の結果得られる画像が表示される。また、操作装置2はタッチパネル12を備える。タッチパネル12は、ハウジング10に設けられる所定の入力面(表示部の画面)に対して入力された位置を検出する位置検出部の一例である。さらに、操作装置2は、操作部(
図3に示す操作部22)として、スライドパッド14、十字キー15、およびボタン16等を備える。
【0036】
また、
図2(c)等に示すように、操作装置2は把持部13を備える。把持部13は、ハウジング10の裏面において、上下方向に関する中心よりもやや上側の位置に突起して設けられる。このように、把持部13は、ハウジング10の所定面において中心から偏って形成される。なお、他の実施形態においては、把持部13は、操作装置2の中心から偏った位置に配置されてもよいし、例えば中心から斜めに突起して形成されるように、中心から偏って形成されれば中心に配置されてもよい。また、本実施形態において、把持部13は、ハウジング10から突起した形状である。ただし、他の実施形態においては、ユーザが操作装置2を安定して把持できるように、把持部13に指を当接させる(例えば指を乗せたり掛けたりする)ことが可能な形状であれば、把持部13はどのような形状であってもよい。本実施形態においては、把持部13は、ハウジング10の長辺方向である左右方向に延びるように設けられる。そのため、操作装置2を縦持ちで持つ場合にはユーザは把持部13に指を掛けることで操作装置2を容易に持つことができる(
図4等参照)。
【0037】
図3は、操作装置2の電気的な構成を示すブロック図である。
図3に示すように、操作装置2は、上述のLCD11、タッチパネル12、および操作部22を備える他、以下の構成を備えている。
【0038】
図3に示すように、操作装置2は加速度センサ23を備える。加速度センサ23は、操作装置2の所定軸方向(本実施形態では3軸方向とするが、1軸以上でよい)に関する加速度を検出する。また、操作装置2は、ジャイロセンサ24を備える。ジャイロセンサ24は、操作装置2の所定軸方向(本実施形態では3軸方向とするが、1軸以上でよい)を軸とした回転に関する角速度を検出する。加速度センサ23およびジャイロセンサ24は、操作装置2の姿勢を算出するための情報(姿勢を算出あるいは推定可能な情報)を検出するセンサである。なお、他の実施形態においては、姿勢を算出するための情報を検出するセンサとして、磁気センサ(方位センサ)等、他のセンサが用いられてもよい。
【0039】
上記のように本実施形態においては、操作装置2の姿勢を算出するためのセンサを操作装置2が備えるものとしたが、他の実施形態においては、情報処理システム1は、操作装置2以外の他の装置が当該センサを備える構成であってもよい。例えば、操作装置2を撮影可能なカメラを情報処理システム1が備えており、カメラによって撮影された画像に基づいて操作装置2の姿勢が算出されてもよい。
【0040】
また、操作装置2は、ゲーム装置3との無線通信が可能な無線通信部25を備える。このように、本実施形態においては、操作装置2とゲーム装置3との間では無線通信が行われるが、他の実施形態においては有線で通信が行われてもよい。
【0041】
操作装置2は、操作装置2における動作を制御する制御部21を備える。具体的には、制御部21は、各入力部(タッチパネル12、操作部22、加速度センサ23、およびジャイロセンサ24)からの出力データを受け取り、操作データとして無線通信部25を介してゲーム装置3へ送信する。また、制御部21は、ゲーム装置3からの画像データが無線通信部25において受信されると、必要に応じて適宜の処理(例えば、画像データが圧縮されている場合には伸張処理)を行い、ゲーム装置3からの画像をLCD11に表示させる。
【0042】
[2.把持部の向きを判別する処理]
以下、
図4〜
図11を参照して、操作装置2の把持部13の向き(操作装置2の把持状態)を判別する処理(向き判別処理)について説明する。なお、本実施形態においては、例えば
図4〜
図6に示すように、操作装置2を縦持ち(長辺方向(長手方向)が縦向きとなる持ち方)で使用する場合を想定する。ただし、本実施形態における把持部13の向きの判別方法は、操作装置2を横持ちで使用する場合にも適用可能である。
【0043】
本実施形態における操作装置2を縦持ちで使用する場合、ユーザは、例えば
図4に示すように把持部13に指を掛けることで安定的に操作装置2を持つことができる。ここで、把持部13が持ち手に近い側に位置するようにユーザが操作装置2を持つとすれば、把持部13は中心より偏って設けられることから、ユーザが左右のいずれの手で操作装置2を持つかによって、中心に対する把持部13の向きは反対となる。具体的には、
図4に示すようにユーザが左手で操作装置2を持つ場合、把持部13は(ハウジング10の表側から見て)中心より左側となる。一方、
図5に示すようにユーザが右手で操作装置2を持つ場合、把持部13は(ハウジング10の表側から見て)中心より右側となる。
【0044】
また、仮に操作装置2を持つ手を特定(推定)できる場合でも、ユーザの手の大きさあるいは持ち方の好み等によって把持部13の向きは異なる。例えば手が大きいユーザは、
図6に示すように、把持部13が持ち手から遠い側に位置するように持つことも考えられるからである。このように、操作装置2の把持部13が中心から偏った位置に設けられる場合には、ユーザにとって持ちやすい把持部13の向きはユーザ毎に異なると考えられる。
【0045】
以上のように、本実施形態においては、操作装置2の把持部13が中心から偏った位置に設けられることから、操作時における把持部13の向きを一通りに決めることが適切ではない。ここで、把持部13の向きが異なると、ユーザが操作装置2に対して同じ操作を行っているつもりでも、情報処理システム1における処理上は操作が異なるものとして認識される場合があり、この場合、ユーザが正しく操作を行うことができないおそれがある。例えば、把持部13が左向きとなる場合(
図4)において、操作装置2の前方(
図4に示す上方)へタッチ位置をスライドさせる操作は、タッチ位置の軌跡がx軸正方向を向く入力となる。一方、把持部13が右向きとなる場合(
図5)において、上記の操作は、タッチ位置の軌跡がx軸負方向を向く入力となり、把持部13が左向きとなる場合とは反対向きの入力となる。このとき、把持部13の向きが判別されなければ、ユーザは正しく操作を行うことができないおそれがある。
【0046】
そこで、本実施形態においては、情報処理システム1は、把持部13の向き、すなわち、ユーザが把持部13をどの向きにして操作装置2を把持するかを判別する。さらに、本実施形態においては、ユーザによる操作に基づく情報処理(ゲーム制御処理)を、向き判別の結果に応じて異なるように実行する。これによって、情報処理システム1は、操作装置2の把持状態にかかわらず(把持部13が右側であるか左側であるかにかかわらず)適切な情報処理を実行することができる。以下、向き判別処理について説明する。
【0047】
(2−1)向き判別処理の概要
本実施形態においては、向き判別処理は、操作装置2の姿勢を用いて行われる。すなわち、情報処理システム1はまず、操作装置2の姿勢を算出する。そして、(把持部13が設けられる面の中心に対する)把持部13の向きを操作装置2の姿勢に基づいて判別する。
【0048】
図7は、本実施形態における向き判別方法の一例を示す図である。なお、
図7に示すxyz座標系は、操作装置2を基準に設定される座標系である(
図2(a)参照)。
図7に示すように、操作装置2を立てた状態において、x軸負方向が下向きとなる姿勢が算出される場合、把持部13は左側を向く(中心より左側に位置する)と判別することができる。また、操作装置2を立てた状態において、x軸正方向が下向きとなる姿勢が算出される場合、把持部13は右側を向く(中心より右側に位置する)と判別することができる。
【0049】
なお、本実施形態においては、想定される把持部13の向き(操作装置2の持ち方)は2通りであり、情報処理システム1は、把持部13の向きが2通りのいずれであるかを判別する。ここで、他の実施形態においては、3通り以上のうちから把持部13の向きを判別することも可能である。例えば、縦持ちと横持ちとの両方が想定される場合には、上下左右の4通りのうち把持部13がどちらの方向を向くかを判別することも可能である。
【0050】
(2−2)向き判別処理の流れ
本実施形態においては、向き判別処理は、操作装置2を用いたゲームの開始前に行われる。また、本実施形態においては、操作装置2の姿勢に関するキャリブレーション処理が実行されるので、向き判別処理は、キャリブレーション処理の前に実行される。このように、向き判別処理は、操作装置2に対する入力に基づく所定の情報処理(後述するゲーム制御処理およびキャリブレーション処理)の前に少なくとも実行される。なお、他の実施形態においては、上記所定の情報処理中(ゲーム中)においても向き判別処理が実行されるようにしてもよい。
【0051】
図8は、本実施形態における向き判別方法の流れの一例を示す図である。
図8に示すように、向き判別方法は、(1)候補画像31の表示、(2)ユーザが操作装置2を実際に持つ動作、(3)確認画像32の表示、(4)ユーザによる確認操作、および、(5)向き判別、という流れで行われる。
【0052】
(2−3)候補画像の表示
本実施形態においては、向き判別の前に、候補画像31がユーザに提示される(
図8に示す(1)参照)。
図9は、候補画像の一例を示す図である。
図9に示すように、本実施形態における候補画像31は、把持部13が左向きとなる場合を表す画像33と、把持部13が右向きとなる場合を表す画像34とを含む。このように、候補画像31は、把持部13の向き(操作装置2の持ち方)の候補(選択肢)を表す画像である。つまり、本実施形態においては、把持部13の向きが異なる複数の(操作装置2の)状態を表す画像が表示され、当該複数の状態が表す向きのうちから1つが選択されることによって把持部13の向きが判別される。
【0053】
また、本実施形態においては、候補画像31は、「コントローラを縦に持って下さい。」という文章を表す画像35を含む。候補画像31は、画像33および34のような図面を表すものであっても、画像35のような文章を表すものであってもよい。また、他の実施形態においては、候補画像31とともに、または、候補画像31に代えて、上記複数の状態を表す音声が出力されてもよい。また、他の実施形態においては、候補画像31が表示されずに向き判別が行われてもよい。
【0054】
上記候補画像31が提示されることによって、ユーザは、候補画像31によって表される選択肢のうち、好みの(持ちやすい)持ち方で操作装置2を実際に持つ(
図8に示す(2)参照)。候補画像31をユーザに提示することによって、情報処理システム1は、操作装置2の持ち方に複数の選択肢があることをユーザに通知するとともに、その具体的な選択肢をユーザに提示することができる。これによって、ユーザは、複数の持ち方の候補のうちから自分の好みの持ち方を容易に選択することができる。
【0055】
また、本実施形態においては、
図9に示す画像33および34から明らかなように、候補画像31は、上記所定の情報処理が実行される際における操作装置2の把持状態(持ち方)を表す。したがって、候補画像31をユーザに提示することで、ゲーム時における操作装置2の持ち方をユーザに教示することができる。
【0056】
なお、詳細は後述するが、本実施形態においては、加速度センサ23の検出結果を用いて重力方向を基準とする姿勢を算出し、当該姿勢を用いて把持部13の向きを判別する。そのため、ハウジング10の裏面が水平となる状態では、把持部13の向きが変化しても(当該裏面に対する)重力方向が変わらないので、重力方向を基準とする姿勢によって把持部13の向きを判別することができない。一方、ハウジング10の裏面が鉛直となる状態では、重力方向を基準とする姿勢によって把持部13の向きを判別することができる。そのため、本実施形態においては、情報処理システム1は、候補画像31として、操作装置2を立てた状態を表す画像を表示する(
図9参照)。つまり、情報処理システム1は、把持部13が設けられる所定面(ハウジング10の裏面)に対して略垂直な方向から見た操作装置2を表す画像を表示する。これによれば、候補画像31を見たユーザは操作装置2を立てて持つので、情報処理システム1は加速度センサ23の検出結果を用いて把持部13の向きを容易に判別することができる。つまり、本実施形態における候補画像31によれば、把持部13の向きの判別を行うことができる姿勢へと操作装置2の姿勢を変更するようにユーザを誘導することができる。
【0057】
なお、本実施形態において、候補画像31は、操作装置2のLCD11およびテレビ4の両方に表示される。これによって、候補画像31をユーザにより確実に気づかせることができる。ただし、他の実施形態においては、候補画像31は少なくとも1つの表示装置に表示されてもよい。
【0058】
(2−4)確認処理
本実施形態においては、上記候補画像31の表示に応じて、候補画像31が表す持ち方でユーザが操作装置2を実際に持つと、確認処理が行われる。すなわち、操作装置2の持ち方を確認するための確認画像32が表示され(
図8に示す(3)参照)、これに応じてユーザが確認操作を行う(
図8に示す(4)参照)。以下、確認処理の詳細を説明する。
【0059】
情報処理システム1は、上記候補画像31を表示した後、操作装置2の姿勢を算出し、把持部13の向きが、候補画像31によって表される2通りの向きのいずれかとなったか否かを判定する。そして、把持部13の向きが上記2通りのいずれかとなった場合、情報処理システム1は確認画像32を表示する。
【0060】
図10は、確認画像が表示される場合における各表示装置の様子の一例を示す図である。確認画像32は、候補画像31が表す操作装置2の姿勢のうち、実際の(現時点の)操作装置2の姿勢(または、それに近い姿勢)を表す画像である。つまり、情報処理システム1は、候補画像31に含まれる画像33および34のうち、現時点で算出された操作装置2の姿勢を表す画像を表示する。例えば
図10においては、実際の操作装置2は把持部13が左向きとなる姿勢となっているので、当該姿勢を表す画像33がテレビ4に表示される。このように、本実施形態においては、候補画像31として提示された把持部13の向きのうち、実際の(現時点の)把持部13の向きを表す画像が確認画像32として表示される。したがって、ユーザは、把持部13の向きを容易に確認することができる。
【0061】
確認画像32は、候補画像31が表す把持部13の向きのうちからユーザによって選択された向きを表す画像であれば、どのような画像であってもよい。また、確認画像32は、操作装置2およびテレビ4のどちらに表示されてもよく、少なくとも1つの表示装置に表示されればよい。また、他の実施形態においては、確認画像32とともに、または、確認画像32に代えて、上記選択された向きを表す音声が出力されてもよい。また、他の実施形態においては、確認画像32は表示されずに把持部13の向きの判別が行われてもよい。なお、確認画像32が表示されない場合でも、情報処理システム1は、ユーザによる確認操作を条件として把持部13の向きを判別してもよい。
【0062】
本実施形態においては、上記確認画像32がテレビ4に表示される場合、
図10に示すように、操作装置2には、確認操作を行うための画像(確認ボタン)36が表示される。すなわち、確認画像32が表示される状態において、情報処理システム1は、操作装置2に対する確認操作を受け付ける。確認操作は任意の操作であってよいが、本実施形態においては、上記確認ボタン36をタッチする操作である。なお、本実施形態においては、情報処理システム1は、「この向きでいいですか?」という文章を表す画像37をテレビ4および操作装置2に表示し、ユーザに対して確認操作を促す。
【0063】
上記確認画像32が提示された場合、ユーザは、現在の持ち方でよい場合には確認操作を行う(
図8に示す(4)参照)。一方、現在の持ち方が気に入らない場合、ユーザは、操作装置2を持ち替えることが可能である。このとき、確認画像32は、把持部13の向き(操作装置2の姿勢)に応じて画像33および34が切り替えて表示される。
【0064】
このように、本実施形態における向き判別処理においては、情報処理システム1は、ユーザに意思確認(確認操作)を行わせた上で、把持部13の向きを判別する(把持部13の向きを確定させる)。本実施形態においては、ユーザによる確認操作を条件として把持部13の向きを確定するので、把持部13の向きをより正確に判別することができる。また、ユーザは、操作装置2を実際に持ってみた後で気に入らなければ把持部13の向きを別の向きに変更することも可能であり、より確実に自分の持ちやすい持ち方で操作装置2を使用することができる。なお、他の実施形態においては、情報処理システム1は、確認操作無しで向き判別を行ってもよい。例えば、情報処理システム1は、把持部13の向きが上記候補画像31が表す2通りの向きのいずれかとなったか否かを判定し、把持部13の向きが上記2通りのいずれかとなった場合、その向きを判別結果として用いてもよい。
【0065】
(2−5)向き判別
ユーザが確認操作を行ったことに応じて、情報処理システム1は把持部13の向きを判別する(
図8に示す(5)参照)。すなわち、確認操作が行われた時点における把持部13の向きを判別結果とする。これによって、把持部13の向きが判別されたこととなる。なお、向き判別の具体的な方法はどのような方法であってもよく、例えば、確認操作が行われた時点において算出される姿勢から把持部13の向きを算出してもよいし、当該時点においてテレビ4に表示されている確認画像32に対応する把持部13の向きを判別結果としてもよい。
【0066】
以上のように、本実施形態においては、情報処理システム1は、候補画像31が表示される場合において操作装置2が当該候補画像31によって表される所定の姿勢となったか否かを判定する。そして、操作装置2が上記所定の姿勢となった場合における把持部13の向きを判別する。つまり、本実施形態においては、操作装置2の持ち方の候補を表す候補画像31を表示し(
図8に示す(1))、ユーザに操作装置2を実際に持たせ(
図8に示す(2))、実際にユーザが持った場合の把持部13の向きを判別する(
図8に示す(5))。これによれば、ユーザに操作装置2を実際に持たせるので、誤操作(誤入力)の可能性は小さく、把持部13の向きを正確に判別することができる。
【0067】
また、本実施形態においては、
図8に示す(1)〜(5)の流れによって、(a)操作装置2の持ち方の選択肢の提示、(b)持ち方の誘導(教示)、および、(c)ユーザが選択した持ち方の推定および確認を、向き判別処理が実行される間に自然な流れで行うことができる。したがって、ユーザは、面倒な設定作業を行わされている感覚を抱くことなく、快適に操作を行うことができる。
【0068】
また、後述する
図11等から明らかなように、把持部13の向きが判別された時の操作装置2の把持状態は、ユーザがゲーム操作を行う場合(キャリブレーション処理あるいはゲーム制御処理が実行される場合)における把持状態と同じである。つまり、本実施形態においては、向き判別処理においてユーザに操作装置2を実際に持たせることによって、ユーザはその持ち方のままでゲーム操作を開始することができる。これによれば、向き判別処理をユーザに意識させることなく自然にゲームを開始させることができるので、ユーザは余計な作業を行っている感覚がなく、快適に操作を行うことができる。
【0069】
(2−6)姿勢の算出方法
向き判別処理における操作装置2の姿勢の算出方法はどのような方法であってもよいが、本実施形態においては、情報処理システム1は、操作装置2が備える加速度センサ23の検出結果に基づいて姿勢を算出する。具体的には、情報処理システム1は、重力方向を基準とした操作装置2の姿勢を加速度センサ23の検出結果に基づいて算出する。把持部13の向きは、算出された姿勢に基づいて判別することができる。本実施形態においては、
図7に示すように、加速度センサ23の検出結果から算出される重力方向がx軸負方向を向く場合、把持部13は左側を向くと判別することができる。また、算出される重力方向がx軸正方向を向く場合、把持部13は右側を向くと判別することができる。
【0070】
(2−7)判別結果に基づく情報処理
判別処理の後、判別結果に基づいて、操作装置2に対する操作を入力とする上記所定の情報処理が実行される。情報処理システム1は、判別処理の結果(把持部13が右向きか左向きか)に応じて処理内容が異なるように所定の情報処理を実行する。なお、本実施形態においては、この情報処理として、キャリブレーション処理およびゲーム制御処理が実行される。ゲーム制御処理は、操作装置に対するゲーム操作を入力としてゲームを進行させる処理である。キャリブレーション処理については後述する。
【0071】
図11は、ゲーム制御処理によって実行されるゲームの一例を示す図である。
図11においては、操作装置2を用いて所定のオブジェクト(手裏剣)38を発射して敵オブジェクト39に当てることを目的とする射撃ゲームが行われる。本実施形態においては、操作装置2を所望の発射方向へ向け、タッチパネル12に対して前方向に線を描くタッチ入力操作(スライド操作とも言う。
図11に示す矢印参照。)を行うことによって、発射方向に向けて手裏剣38が発射される。発射された手裏剣38はテレビ4に表示されるので、
図11に示すゲームによれば、ユーザは、手元から手裏剣を飛ばしているような感覚でゲームを行うことができる。
【0072】
本実施形態においては、情報処理システム1は、操作装置2の姿勢を少なくとも入力として所定の情報処理を実行する。具体的には、情報処理システム1は、操作装置2の姿勢に基づいて手裏剣38の発射方向を決定する。より具体的には、発射方向は、操作装置2を縦持ちで持った場合における操作装置2の前方向に応じて決められる。ここで、操作装置2の前方向は、把持部13の向きが右向きになるか左向きになるかによって異なる。そのため、本実施形態においては、情報処理システム1は、向き判別処理によって判別された向きに応じて操作装置2の前方向を設定し、設定した前方向に応じて発射方向を決定する。具体的には、把持部13の向きが左向きとなる場合(
図11に示す場合)、情報処理システム1は操作装置2のx軸正方向を前方向として設定する(
図7参照)。一方、把持部13の向きが右向きとなる場合、情報処理システム1は操作装置2のx軸負方向を前方向として設定する(
図7参照)。このように、本実施形態においては、情報処理システム1は、操作装置2の姿勢を入力とする処理を、把持部13の向きに応じて処理内容が異なるように実行する。
【0073】
ここで、操作装置2の姿勢の変化に応じて発射方向が変化する向きは、把持部13の向きに応じて異なる場合がある。
図12は、ピッチ方向に関して操作装置2の姿勢が変化する様子の一例を示す図である。ここで、
図12に示すように、操作装置2のx軸正方向が下方に下がる向きに姿勢が変化する状態を考える。把持部13が右向き(
図12に示す実線の矢印が前方向)であると判別される場合において、上記の状態が生じたとすれば、ユーザは、操作装置2の前方向を上向きに変化させたと考えられる。一方、把持部13が左向き(
図13に示す点線の矢印が前方向)であると判別される場合において、上記の状態が生じたとすれば、ユーザは、操作装置2の前方向を下向きに変化させたと考えられる。このように、ピッチ方向の変化(左右方向(y軸方向)に関する姿勢変化)の変化に関しては、操作装置2の姿勢の変化に応じて発射方向が変化したと考えられる向きは、把持部13の向き判別結果に応じて異なる。なお、ピッチ方向と同様、ロール方向(上下方向(x軸方向)を軸とする姿勢変化)に関しても、発射方向が変化する向きは向き判別結果に応じて異なる。これに対して、ヨー方向(z軸方向を軸とする姿勢変化)に関しては、発射方向が変化する向きは判別結果がいずれであっても同じである。
【0074】
そこで、本実施形態においては、情報処理システム1は、ピッチ方向および/またはロール方向に関して、操作装置2の姿勢変化に応じた仮想空間における方向(発射方向)の変化の向きを、判別結果に応じて反転させる。例えばピッチ方向に関して言えば、把持部13が右向きであると判別される場合において、
図13に示すように操作装置2の姿勢が変化したことに応じて、情報処理システム1は、発射方向を上向きに変化させる。一方、把持部13が左向きであると判別される場合において、
図13に示すように操作装置2の姿勢が変化したことに応じて、情報処理システム1は、発射方向を下向きに変化させる。一方、ヨー方向に関しては、操作装置2の姿勢変化に応じた仮想空間における方向の変化の向きを、判別結果がいずれであっても一定とする(反転させない)。以上によれば、操作装置2の姿勢の変化に応じて仮想空間内の方向を変化させるゲーム制御処理を実行する場合において、当該方向を適切に算出することができる。
【0075】
また、情報処理システム1は、タッチパネル12によって検出された位置(タッチ位置)を少なくとも入力として所定の情報処理を実行する。具体的には、タッチパネル12に対する前方向を向くスライド操作に応じて手裏剣38を発射させる。この前方向は、上述した発射方向を決定するための前方向と同じである。したがって、本実施形態においては、情報処理システム1は、タッチパネル12に対するタッチ操作を入力とする処理を、把持部13の向きに応じて処理内容が異なるように実行する。具体的には、情報処理システム1は、タッチパネル12における上下方向(x軸方向)を判別結果に応じて反転させて、タッチ位置を認識する処理を行う。
【0076】
また、情報処理システム1は、操作装置2のLCD11に表示される画像の向きを、向き判別の結果に応じて変化させる。すなわち、判別結果に基づいて決定される上記前方向が上方向となるように、LCD11に表示される画像の向きが調整される。
【0077】
以上のように、本実施形態では、向き判別の判別結果に応じて異なる情報処理が実行される。具体的には、情報処理システム1は、操作装置2に対して所定の操作が行われた場合に、把持部13の向きがどの向きであっても同じ処理結果となるように、判別結果に応じて異なる内容の処理を実行する。例えば本実施形態においては、把持部13が右向きとなる場合であっても左向きとなる場合であっても、ユーザは、操作装置2の前方向を所望の方向に向ける操作によって発射方向を設定することができ、タッチパネル12上において前方向に線を描く操作によって射撃動作を行うことができる。このように、ユーザは、把持部13がどの向きとなるように操作装置2を持っても、同じ操作でゲーム操作を行うことができる。以上のように、向き判別の判別結果に応じて異なる情報処理を実行することによって、情報処理システム1は、把持部13の向きに応じた適切な内容で情報処理を実行することができる。また、どの持ち方を選択してもゲーム操作は同等であるので、ユーザは、持ちやすい持ち方を自由に選択することができる。
【0078】
なお、本実施形態においては、向き判別の判別結果に応じて異なる情報処理において、情報処理システム1は、タッチパネル12に対する入力の方向を判別結果に応じて反転させたり、操作装置2の姿勢に基づいて算出される方向(発射方向)を判別結果に応じて反転させたりした。ここで、他の実施形態においては、上記情報処理はどのような内容であってもよい。例えば、情報処理システム1は、所定の指示を行うための操作部(ボタン)の割り当てを、向き判別の判別結果に応じて異なるようにしてもよい。
【0079】
[3.キャリブレーション処理]
以下、
図11〜
図17を参照して、情報処理システム1において実行されるキャリブレーション処理について説明する。本実施形態においては、操作装置2に対するゲーム操作を入力としてゲームを進行させるゲーム制御処理が実行され、このゲーム制御処理は操作装置2の姿勢に基づいて実行される。キャリブレーション処理は、ゲーム制御処理において用いる姿勢の基準となる姿勢(「基準姿勢」と呼ぶ。)を決定する処理である。
【0080】
(3−1)キャリブレーション処理およびゲーム制御処理におけるゲーム操作
本実施形態におけるゲーム制御処理においては、
図11に示すように、ユーザが操作装置2の所定方向(ここでは、操作装置2の前方向)を所望の方向へ向けることで発射方向が指定され、タッチパネル12に対して前方向に線を描くタッチ入力操作に応じて、発射方向に向けて手裏剣38が発射される。
【0081】
一方、
図13は、キャリブレーション処理において表示される画像の一例を示す図である。
図13に示すように、キャリブレーション処理においてはテレビ4に標的41が表示される。また、テレビ4には「標的を狙って3回手裏剣を投げて下さい。」というメッセージが表示される。これに応じて、ユーザは、操作装置2を標的41の方へ向け、所定のゲーム操作を行う。
【0082】
ここで、上記所定のゲーム操作は、ゲーム中におけるゲーム操作と同様のゲーム操作、すなわち、操作装置2を所望の発射方向へ向けた状態でのスライド操作である。つまり、本実施形態におけるキャリブレーション処理においては、ゲーム中におけるゲーム操作と同様(同種)のゲーム操作をユーザに行わせることによって基準姿勢を決定する。これによれば、ユーザはゲーム中の操作と同じ操作でキャリブレーションのための操作を行うことができるので、情報処理システム1は、自然なゲーム操作でユーザに違和感を与えることなくキャリブレーション処理を実行することができる。
【0083】
なお、上記所定のゲーム操作は、入力面上の位置を指定する操作(より具体的にはスライド操作)に限らず、ボタンを押下する操作等、どのような操作であってもよい。また、キャリブレーション処理におけるゲーム操作とゲーム制御処理におけるゲーム操作とは、厳密に同じである必要はない。例えば、上記スライド操作の方向は任意であってもよく、スライド操作の方向がキャリブレーション処理時とゲーム制御処理時とで一致する必要はない。例えば、上記所定のゲーム操作として、キャリブレーション処理においてもゲーム制御処理においてもタッチパネル12に対して同じ(同種の)図形を描くジェスチャー入力が行われる場合は、ユーザに違和感を与えることなくキャリブレーション処理を実行することができる。また、キャリブレーション処理とゲーム制御処理とにおいて行われるゲーム操作が厳密に同じでなくても、当該ゲーム操作によって同種の動作制御(例えば、オブジェクトに対して同じ動作を行わせる制御)が行われる場合には、ユーザに違和感を与えることなくキャリブレーション処理を実行することができる。換言すれば、キャリブレーション処理におけるゲーム操作とゲーム制御処理におけるゲーム操作とによって同種の動作制御が行われる場合、これらのゲーム操作は同じ(同種)であると言うことができる。
【0084】
(3−2)キャリブレーション処理の流れ
以下、本実施形態におけるキャリブレーション処理の流れを説明する。
図14は、本実施形態におけるキャリブレーション処理の流れを示す図である。本実施形態においては、複数回の入力(上記所定のゲーム操作)を受け付け、各入力が行われた場合の操作装置2の姿勢を用いて基準姿勢を決定する。
【0085】
なお、本実施形態においては、現実空間におけるヨー方向(水平方向)に関する姿勢(鉛直方向を軸とした回転に関する姿勢)に関してキャリブレーション処理を実行する場合を例として説明する。ただし、本実施形態におけるキャリブレーション処理は、ピッチ方向およびロール方向に関する姿勢に対して適用することが可能である。
【0086】
また、本実施形態においては、キャリブレーション処理は操作装置2を用いたゲームの前(上記ゲーム制御処理の前)に実行されるが、他の実施形態においては、ゲーム中に実行されてもよい。
【0087】
(第1の入力)
情報処理システム1はまず、第1の入力として上記所定のゲーム操作を受け付ける。そして、第1の入力が行われた場合の操作装置2の姿勢(
図14に示すベクトルV1。なお、図に示す各ベクトルは、操作装置2の前方向を示す。)を算出する。この姿勢は暫定基準姿勢(
図14に示すベクトルVt)として設定される。
【0088】
本実施形態においては、第1の入力については、ヨー方向に関して操作装置2がいずれの方向を向いていても入力が受け付けられる。すなわち、ヨー方向に関する操作装置2の姿勢に関わらず、上記所定のゲーム操作が行われると情報処理システム1は当該ゲーム操作を第1の入力として受け付ける。したがって、ユーザは、操作装置2をテレビ4の方を向ける一般的な操作態様の他、操作装置2を自由な方向に向けてゲームを行うことができる。
【0089】
なお、本実施形態においては、ピッチ方向に関しては、操作装置2の前方向が所定の基準より水平方向に近いことを条件として、第1の入力が受け付けられる。すなわち、操作装置2の前方向と水平方向とのなす角が所定角度以上である状態で上記所定のゲーム操作が行われた場合、情報処理システム1は、当該ゲーム操作を第1の入力としない(このゲーム操作は無視される)。また、ロール方向に関しては、操作装置2の表面(LCD11の面)の法線方向が所定の基準より鉛直上方向に近いことを条件として、第1の入力が受け付けられる。本実施形態においては、操作装置2は垂直方向よりも水平方向に近い姿勢で、かつ、LCD11が鉛直上向きとなる姿勢で使用されると想定されるので、上記条件を満たさない場合には誤操作あるいは誤検出であると推定できるからである。なお、他の実施形態においては、ロール、ピッチ、およびヨー方向に関して、第1の入力に関する条件を設定してもよいし、しなくてもよい。
【0090】
(第2の入力)
第1の入力の後さらに、情報処理システム1は、追加入力として上記所定のゲーム操作を受け付ける。本実施形態においては、追加入力として第2の入力および第3の入力の2回の入力が受け付けられる。なお、他の実施形態においては、追加入力の回数は1回以上であれば何回でもよい。
【0091】
第1の入力の後、情報処理システム1は、第2の入力を受け付け、第2の入力が行われた場合の操作装置2の姿勢(
図14に示すベクトルV2)を算出する。本実施形態においては、第2の入力に対応する姿勢を用いて上記暫定基準姿勢が修正される。具体的には、情報処理システム1は、上記暫定基準姿勢(ベクトルVt)と第2の入力に対応する姿勢(ベクトルV2)とを所定の割合で合成する。この所定の割合は任意であるが、本実施形態においては、2つの姿勢が1:1の割合で合成される。
図14に示すように、合成されたベクトルが修正後の暫定基準姿勢(ベクトルVt’)に設定される。
【0092】
(第3の入力)
第2の入力の後、情報処理システム1は、第3の入力を受け付け、第3の入力が行われた場合の操作装置2の姿勢(
図14に示すベクトルV3)を算出する。本実施形態においては、第3の入力に対応する姿勢を用いて上記暫定基準姿勢が修正されることによって基準姿勢が決定される。具体的には、情報処理システム1は、上記暫定基準姿勢(ベクトルVt’)と第3の入力に対応する姿勢(ベクトルV3)とを所定の割合で合成する。この所定の割合は任意であるが、本実施形態においては、2つの姿勢が1:1の割合で合成される。合成されたベクトルが基準姿勢(ベクトルVs)に決定される。
【0093】
(追加入力の条件)
本実施形態においては、上記追加入力(第2および第3の入力)は、操作装置2の姿勢が上述の暫定基準姿勢によって定められる所定範囲内となる状態で行われた入力であることを条件とする。
図15は、暫定基準姿勢および所定範囲の一例を示す図である。
図15において、ベクトルVtは暫定基準姿勢を表し、ベクトルV2は第2の入力時における操作装置2の姿勢を表す。本実施形態においては、暫定基準姿勢(ベクトルVt)によって所定範囲42が定められる。
図15においては、所定範囲42は、暫定基準姿勢の向きを中心とした所定角度内の範囲である。なお、他の実施形態においては、所定範囲42は、暫定基準姿勢によって定められればよく、例えば“(3−4)他の処理例”において後述するように、暫定基準姿勢を含まない範囲に設定されてもよい。情報処理システム1は、操作装置2の姿勢が上記所定範囲42内となる状態で上記所定のゲーム操作が行われた場合、当該ゲーム操作を追加入力として受け付ける。なお、第2の入力と第3の入力とでは暫定基準姿勢が異なる可能性があり、それによって所定範囲42が異なる可能性があるが、暫定基準姿勢によって所定範囲42が定められる(具体的には、暫定基準姿勢の向きを中心とした所定角度内の範囲となるように設定される)点は、第2の入力と第3の入力とで同じである。
【0094】
本実施形態においては、上記所定範囲42は、標的41に対応する範囲として設定される。つまり、暫定基準姿勢を基準姿勢として(ゲーム制御処理と同様に)発射方向を算出する場合において、手裏剣38が標的41に当たるような操作装置2の姿勢の範囲が所定範囲42として設定される。これによれば、ユーザは所定範囲42を認識することができるので、キャリブレーション処理における入力(所定のゲーム操作)を行いやすくなる。
【0095】
以上のように、追加入力に関しては、操作装置2の姿勢が上記所定範囲内となることが条件とされる。これによって、ユーザが誤操作によって暫定基準姿勢とは全く異なる姿勢で上記所定のゲーム操作を行った場合には、当該ゲーム操作は追加入力とはみなされない。このように、誤操作による入力を無視することで、基準姿勢を精度良く決定することができる。なお、他の実施形態においては、追加入力についても第1の入力と同様、上記のような条件を設定しなくてもよい。
【0096】
また、本実施形態においては、上記条件を満たさない所定のゲーム操作が行われた場合、暫定基準姿勢がリセットされる。すなわち、情報処理システム1は、第1の入力の後であって所定回数の追加入力が完了する前に、操作装置2の姿勢が上記所定範囲42から外れた状態で上記所定のゲーム操作が行われた場合、暫定基準姿勢の設定を解除する。そして、解除された後に上記所定のゲーム操作が行われた場合、当該ゲーム操作が第1の入力として受け付けられる。すなわち、暫定基準姿勢の設定が解除された場合、情報処理システム1は、設定が解除された後において上記所定のゲーム操作が行われた場合の操作装置2の姿勢を暫定基準姿勢として再設定する。このように、本実施形態においては、暫定基準姿勢とは大きく異なる向きで所定のゲーム操作が行われた場合には、暫定基準姿勢がリセットされ、ユーザは第1の入力および追加入力を最初からやり直すことになる。これによれば、ユーザが誤って所定のゲーム操作を行ってしまった場合には最初から入力をやり直すことができるので、基準姿勢を精度良く決定することができる。
【0097】
(基準姿勢の決定方法)
上記のように、本実施形態においては、情報処理システム1は、上記追加入力が所定回数(ここでは2回)行われたことに応じて、上記暫定基準姿勢と、当該所定回数の追加入力が行われた場合の操作装置2の姿勢とを用いて基準姿勢を決定する。このように、本実施形態においては、複数回の入力に対応する複数個の姿勢に基づいて基準姿勢を決定するので、基準姿勢を精度良く決定することができる。
【0098】
なお、他の実施形態においては、基準姿勢は、複数回の入力に対応する各姿勢のうち少なくとも1つを用いて基準姿勢を決定してもよい。例えば、所定回数の追加入力が行われた場合、情報処理システム1は、暫定基準姿勢を基準姿勢として決定してもよい。つまり、第1の入力が行われた後、上記所定範囲に関する条件を満たす追加入力が行われた場合、第1の入力に対応する姿勢を基準姿勢として設定してもよい。これによっても本実施形態と同様、基準姿勢を適切に決定することができる。
【0099】
また、本実施形態においては、情報処理システム1は、追加入力(第2の入力)が行われたことに応じて、当該追加入力が行われた場合における操作装置2の姿勢を用いて暫定基準姿勢を更新(修正)する。これによれば、暫定基準姿勢が修正されることに応じて上記の所定範囲42も変化するので、所定範囲42が適切な範囲となるように入力毎に変更することができる。
【0100】
(3−3)キャリブレーション処理における制御
また、本実施形態においては、キャリブレーション処理においてユーザが上記所定のゲーム操作を行うと、情報処理システム1は、ゲーム制御処理と同様の制御処理を実行する。すなわち、
図13に示すように、ユーザによる所定のゲーム操作に応じて、ゲーム中と同様、操作装置2の姿勢に応じた発射方向へ手裏剣38が発射される。本実施形態においては、各入力(第1の入力および追加入力)のそれぞれに応じて、情報処理システム1は手裏剣38を発射する制御を行う。ただし、他の実施形態においては、各入力の少なくともいずれかに応じて上記制御が行われてもよい。
【0101】
以上のように、情報処理システム1は、第1の入力および所定回数の追加入力のうち少なくともいずれかに応じて、ゲーム制御処理におけるオブジェクトの動作の制御と同種の制御を実行する。これによれば、ゲーム中と同様のゲーム操作に応じて、仮想空間においてゲーム中と同様の動作が行われる。したがって、ユーザは、キャリブレーション処理における作業を例えばゲーム操作の練習であるように認識するので、キャリブレーション処理に対する違和感をより軽減することができる。
【0102】
なお、本実施形態においては、キャリブレーション処理時およびゲーム制御処理時に行われる制御として、情報処理システム1は、操作装置2の姿勢に基づいて決定される方向へオブジェクトを移動させる制御を行った。ここで、他の実施形態においては、上記制御はどのようなものであってもよく、例えば、オブジェクトに対して同じ動作(例えば、姿勢に基づいて決定される方向を向く動作)を行わせる制御であってもよい。
【0103】
また、キャリブレーション処理における上記制御は、ゲーム制御処理における制御と同種の内容であればよく、両者が厳密に一致する必要はない。例えば、ゲーム制御処理では手裏剣が発射される一方で、キャリブレーション処理では石が飛ばされるというように、制御の対象となるオブジェクトが2つの処理で異なっていてもよい。また、一方の処理ではオブジェクトが直線的に移動するのに対して他方の処理ではオブジェクトが放物線を描いて移動する等、動作のアルゴリズムが2つの処理で異なっていてもよい。
【0104】
また、本実施形態においてはゲーム制御処理およびキャリブレーション処理におけるゲーム画像はテレビ4に表示されたが、少なくとも1つの表示装置に表示されればよく、操作装置2のLCD11にゲーム画像が表示されてもよい。
【0105】
なお、本実施形態においては、
図13に示すように、標的41には、入力回数を表す画像(数字)が描かれる。本実施形態においてはこの画像は、キャリブレーションを完了するのに必要な上記所定のゲーム操作の入力回数を表す(
図14参照)が、例えば入力を行った回数を表してもよい。これによって、ユーザは、キャリブレーションにおける入力回数を容易に認識することができる。
【0106】
(3−4)他の処理例
なお、他の実施形態においては、標的を複数個表示させるようにしてもよい。
図16は、他の実施形態におけるキャリブレーション処理において表示される画像の一例を示す図である。
図16においては、3つの標的43〜45が表示される。また、テレビ4には「3つの標的に手裏剣を投げて下さい。」というメッセージが表示される。これに応じて、ユーザは、3つの標的43〜45に向かって1回ずつ、合計3回所定のゲーム操作を行う。
【0107】
キャリブレーション処理において狙い(標的)となるオブジェクトが複数表示される場合、情報処理システム1は、各入力(第1の入力および追加入力)を複数のオブジェクトのいずれかに対応付ける処理を各入力について行う。この対応付けはどのように行われてもよいが、情報処理システム1は、例えば、予め定められた順番で各オブジェクトを各入力に対応づけてもよい。
図16においては、標的に描かれた数字の順、すなわち、標的43、44、および45の順に、第1、第2、および第3の入力に対応づけられる。つまり、ユーザは、標的43、44、および45の順に狙って手裏剣を発射する。
【0108】
また、上記の場合、暫定基準姿勢によって定められる上記所定範囲は、暫定基準姿勢を含まない範囲となる。
図17は、他の実施形態における各入力に対応する姿勢および所定範囲の一例を示す図である。
図17においては、第2の入力に対して用いられる所定範囲42は、標的44に対応する姿勢を含むように設定される。
図17では図示していないが、第2の入力と同様に、第3の入力に対して用いられる所定範囲は、標的45に対応する姿勢を含むように設定される。なお、上記「標的に対応する姿勢」とは、暫定基準姿勢を基準姿勢とした場合において、発射方向が当該標的への向きとなる姿勢である。
【0109】
上記の場合においても上記実施形態と同様、基準姿勢は、各入力に対応する各姿勢のうち少なくとも1つを用いて決定される。例えば、第1の入力に対応する姿勢(暫定基準姿勢)を基準姿勢として用いてもよいし、各姿勢の平均を基準姿勢としてもよい。
【0110】
また、上記のように、各入力における操作装置2の姿勢が異なることを想定する場合には、情報処理システム1は、操作装置2の姿勢の変化量に対する発射方向の変化量を決定することが可能である。例えば
図17において、第1の入力に対応する姿勢(ベクトルV1)から第2の入力に対応する姿勢(ベクトルV2)へと変化する場合の発射方向の変化量は、標的43を向く方向から標的44を向く方向への変化量として決定されてもよい。例えば、上記発射方向の変化量は、2つの入力に対応する2つの姿勢の間の変化量(角度θ)と、当該2つの入力に対応する2つの標的43および44の間の距離とに基づいて算出することができる。
【0111】
以上のように、上記他の処理例においては、情報処理システム1は、暫定基準姿勢と、複数回の追加入力に対応する各姿勢とのうち少なくとも2つの差に基づいて、姿勢の変化量に対するオブジェクトの動作方向(発射方向)の変化量を決定する。そして、ゲーム制御処理は、上記動作方向の変化量に基づいて実行される。これによれば、操作装置2の姿勢の変化に対する動作方向の変化の割合をキャリブレーション処理によって決定することができる。この割合の適切な値は、テレビ4の画面の大きさ、あるいは、テレビ4からユーザ(操作装置2)までの距離等によって異なるが、上記他の処理例によれば上記割合を適切な値に設定することができる。
【0112】
また、上記他の処理例においては、情報処理システム1は、複数の所定のオブジェクト(標的43〜45)を含む仮想空間を表す画像を生成し、各入力が受け付けられる場合に、操作装置2とは異なる表示装置(テレビ4)に当該画像を表示させる。そして、上記動作方向の変化量は、各入力のうちいずれか2つの入力に対応する2つの姿勢の間の変化量と、当該2つの入力に対応する2つのオブジェクト間の距離とに基づいて決定される。これによれば、ユーザは、各オブジェクトの方へ操作装置2を向けて所定のゲーム操作を行うことで、上記動作方向の変化量を設定することができる。
【0113】
(3−5)基準姿勢を用いたゲーム制御処理
上記キャリブレーション処理によって基準姿勢が決定された後、ゲーム制御処理が実行される。本実施形態においては、ゲーム制御処理として、操作装置2の姿勢と基準姿勢とに基づいてオブジェクトの移動方向(手裏剣38の発射方向)を算出する処理が実行される。本実施形態においては、手裏剣38の発射方向は、その時点における操作装置2の姿勢と、基準姿勢との関係に基づいて算出される。具体的には、操作装置2の姿勢が基準姿勢となる場合、発射方向は所定の基準方向となる。所定の基準方向は、仮想空間(ゲーム空間)内において予め定められた方向である。本実施形態においては、所定の基準方向は、仮想空間における正面方向、換言すれば、手裏剣38の発射位置から標的41の位置への方向である。また、操作装置2の姿勢が基準姿勢とは異なる場合、発射方向は、上記基準方向に対して、基準姿勢から当該姿勢への変化に応じた方向へ、基準姿勢から当該姿勢への変化量に応じた変化量だけ変化した方向として算出される。以上によって、ユーザは、操作装置2の姿勢を変化させる操作によって、仮想空間における方向(発射方向)を変化させることができる。
【0114】
以上のように、情報処理システム1は、ゲーム制御処理において、所定のゲーム操作が行われた場合の操作装置2の姿勢が基準姿勢となる場合、オブジェクトの動作方向(手裏剣38の発射方向)として、キャリブレーション処理時に表示される標的41の表示位置に対応する方向を算出する。したがって、ユーザは、標的41を狙って複数回の所定のゲーム操作を行うことで、キャリブレーションのための作業を行うことができる。これによれば、操作装置2を一定の方向に向けた状態でユーザに複数回の入力を行わせるので、基準姿勢を精度良く算出することができる。
【0115】
なお、ゲーム制御処理において算出されるオブジェクトの動作方向は、操作装置2の姿勢と基準姿勢とに基づいて算出されればよい。例えば他の実施形態においては、操作装置2の姿勢および基準姿勢に加え、タッチパネル12に対するスライド操作によって描かれる軌跡の向きを反映するように動作方向が算出されてもよい。
【0116】
[4.本実施形態の具体的な処理例]
以下、
図18〜
図22を参照して、本実施形態に係る情報処理システム1の具体的な処理および動作を説明する。
図18は、本実施形態においてゲーム装置3のメモリ6に記憶されるデータの一例を示す図である。
図18に示すように、ゲーム装置3のメモリ6には、情報処理プログラム51および処理用データ52が記憶される。なお、メモリ6には、
図18に示すデータの他、操作装置2から取得した操作データや、各表示装置へ出力すべき画像やそれを生成するために用いられる画像のデータ等が記憶されてもよい。
【0117】
情報処理プログラム51は、ゲーム装置3のコンピュータ(CPU5)に実行させるためのプログラムである。なお、情報処理プログラム51は、ゲーム装置3がアクセス可能であってゲーム装置3の内部または外部に設けられるプログラム格納部(記憶装置または記憶媒体等)に記憶されている。プログラム格納部に記憶される情報処理プログラム51の一部または全部が適宜のタイミングで読み込まれてメモリ6に記憶され、CPU5によって実行される。また、情報処理プログラム51の一部または全部は、情報処理プログラム51を実行する情報処理装置内に(例えばライブラリとして)予め記憶されていてもよい。
【0118】
処理用データ52は、CPU5において実行される情報処理(
図8に示すゲーム処理)において用いられるデータである。処理用データ52は、姿勢データ53、把持部データ54、暫定基準姿勢データ55、基準姿勢データ56、および方向データ57を含む。
【0119】
姿勢データ53は、操作装置2の姿勢を表すデータである。姿勢データ53は、所定の1軸周りの回転に関する1次元の値であってもよいし、2軸以上の回転に関する2次元以上の値であってもよい。
【0120】
把持部データ54は、向き判別処理の判別結果を表すデータである。すなわち、把持部データ54は、把持部13の向きを表すデータであり、例えば、把持部13が右向きか左向きかを表すフラグデータであってもよい。
【0121】
暫定基準姿勢データ55は、上述の暫定基準姿勢を表すデータである。また、基準姿勢データ56は、上述の基準姿勢を表すデータである。これらの各データは、姿勢データと同様、所定の1軸周りの回転に関する1次元の値であってもよいし、2軸以上の回転に関する2次元以上の値であってもよい。
【0122】
方向データ57は、操作装置2の姿勢に基づいて算出される、仮想空間における方向(ここでは手裏剣38の発射方向)を表すデータである。
【0123】
図19は、本実施形態においてゲーム装置のCPU5が実行する処理の流れの一例を示すフローチャートである。例えば、CPU5は、メモリ6等の記憶部を初期化し、プログラム格納部から情報処理プログラム(ゲームプログラム)40をメモリ6に読み込む。そして、CPU5によって当該情報処理プログラム51の実行が開始される。
図19に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0124】
なお、
図19に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU5が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU5以外のプロセッサや専用回路が実行するようにしてもよい。
【0125】
まずステップS1において、CPU5は上記の向き判別処理を実行する。
図20は、
図19に示す向き判別処理(ステップS1)の詳細な流れの一例を示すフローチャートである。ステップS11において、CPU5は候補画像を表示する。CPU5は、上記“(2−3)候補画像の表示”で説明した候補画像31を生成し、操作装置2およびテレビ4に表示させる。
【0126】
ステップS12において、CPU5は操作装置2の姿勢を算出する。操作装置2の姿勢は、上記“(2−6)姿勢の算出方法”で説明した方法で算出される。より具体的には、CPU5は、操作装置2から操作データを取得し、操作データに含まれる加速度データに基づいて姿勢を算出する。操作装置2の姿勢としては、例えば、加速度データから算出される重力方向を表すベクトルが算出されてもよい。CPU5は、算出された姿勢を表すデータを姿勢データ53としてメモリ6に記憶する。
【0127】
ステップS13において、CPU5は、操作装置2の姿勢が、候補画像31が表す姿勢のいずれかとなったか否かを判定する。本実施形態においては、ステップS12で算出された姿勢が、操作装置2が立てられた状態で把持部13が左向きとなる姿勢、または、操作装置2が立てられた状態で把持部13が右向きとなる姿勢のいずれかになったか否かが判定される。この判定の具体的な方法はどのような方法であってもよいが、例えば、上記重力方向を表すベクトルが、操作装置2を基準に設定される上記x軸に対して所定の基準よりも近づいたか否かによって行われてもよい。具体的には、CPU5は、上記姿勢データ53をメモリ6から読み出し、姿勢データ53が表す姿勢を用いて上記の判定を行う。ステップS13の判定結果が肯定である場合、ステップS14の処理が実行される。一方、ステップS13の判定結果が否定である場合、ステップS12の処理が再度実行される。つまり、操作装置2の姿勢が候補画像31によって表される姿勢となるまで、ステップS12およびS13の処理が繰り返し実行される。
【0128】
ステップS14において、CPU5は確認画像32を表示する。CPU5は、上記“(2−4)確認処理”で説明した確認画像32を生成し、テレビ4に表示させる。また、本実施形態においては、上記“(2−4)確認処理”で説明した、確認ボタン36を含む画像を操作装置2に表示させる。
【0129】
ステップS15において、CPU5は、ユーザによって確認操作が行われたか否かを判定する。すなわち、CPU5は、操作装置2から操作データを取得し、操作データに含まれるタッチ位置データ(タッチパネル12に対して入力された位置を表すデータ)に基づいて、確認操作が行われたか否かを判定する。ステップS15の判定結果が肯定である場合、ステップS16の処理が実行される。一方、ステップS15の判定結果が否定である場合、ステップS12の処理が再度実行される。つまり、確認操作が行われるまで、ステップS12〜S15の処理が繰り返し実行される。
【0130】
ステップS16において、CPU5は把持部13の向きを判別する。すなわち、CPU5は、上記“(2−5)向き判別”で説明した方法で把持部13の向きを判別する。そして、判別結果を表すデータを把持部データ54としてメモリ6に記憶する。ステップS16の後、向き判別処理を終了する。
【0131】
上記向き判別処理(ステップS1)の次に、ステップS2の処理が実行される。ステップS2において、CPUは上記のキャリブレーション処理を実行する。
図21は、
図19に示すキャリブレーション処理(ステップS2)の詳細な流れの一例を示すフローチャートである。
【0132】
キャリブレーション処理においては、まずステップS21において、CPUは、各表示装置(操作装置2のLCD11およびテレビ4)に画像を表示する。すなわち、テレビ4に表示する画像を生成してテレビ4へ出力し、LCD11に表示する画像を生成して操作装置2へ出力する。なお、テレビ4に表示すべき画像は、標的41を含む仮想空間の画像であり、操作装置2に表示する画像は手裏剣38の画像である(
図5参照)。また、
図21に示すフローチャートでは示されないが、各表示装置に表示される画像は、所定時間間隔に1回の割合で更新して表示される。
【0133】
ステップS22において、CPUは第1の入力を受け付ける。すなわち、CPUは、操作装置2から操作データを逐次取得し、操作データに含まれるタッチ位置データに基づいて、上記所定のゲーム操作が行われたか否かを判定する。このとき、上記“(2−7)判別結果に基づく情報処理”で説明したように、CPUは、タッチパネル12における上下方向(x軸方向)を判別結果に応じて反転させて、上記の判定を行う。すなわち、CPUは、メモリ6から把持部データ54を読み出し、把持部データ54の内容に応じてタッチパネル12における上下方向を反転させて上記判定を行う。
【0134】
上記ステップS22において、CPUは、所定のゲーム操作が行われたと判定されるまで待機し、所定のゲーム操作が行われたと判定された場合、操作装置2の姿勢を算出する。この姿勢はどのように算出されてもよいが、本実施形態においては、加速度センサ23および/またはジャイロセンサ24の検出結果に基づいて算出される。CPUは、算出された姿勢を表すデータを姿勢データとしてメモリ6に記憶する。
【0135】
ステップS23において、CPUは、第1の入力が所定の条件を満たすか否かを判定する。すなわち、CPUは、上述の“(第1の入力)”で説明した条件を満たすか否かを判定する。ステップS23の判定結果が肯定である場合、ステップS24の処理が実行される。ステップS23の判定結果が否定である場合、ステップS24の処理が実行される。
【0136】
ステップS24において、CPUは暫定基準姿勢を設定する。すなわち、CPUは、暫定基準姿勢データとして、上記姿勢データの内容をメモリ6に記憶する。
【0137】
ステップS25において、CPUは、追加入力として第2の入力を受け付ける。ステップS25の処理は、上記ステップS22と同様である。したがって、第2の入力が行われた時点の操作装置2の姿勢を表すデータが姿勢データとしてメモリ6に記憶される。
【0138】
ステップS26において、CPUは、第2の入力に対応する姿勢が所定範囲内であるか否かを判定する。すなわち、上述の“(追加入力の条件)”で説明した方法によって判定が行われる。ステップS26の判定結果が肯定である場合、後述するステップS28の処理が実行される。ステップS26の判定結果が否定である場合、ステップS27の処理が実行される。
【0139】
ステップS27において、CPUは、暫定基準姿勢の設定を解除する。すなわち、CPUは、メモリ6に記憶されている暫定基準姿勢データを削除する。ステップS27の後、ステップS22の処理が再度実行される。
【0140】
ステップS28において、CPUは、暫定基準姿勢を更新(修正)する。暫定基準姿勢は、上述の“(第2の入力)”で説明した方法によって修正される。CPUは、修正後の暫定基準姿勢を表すデータを暫定基準姿勢データとしてメモリ6に記憶する。
【0141】
ステップS29において、CPUは、追加入力として第3の入力を受け付ける。ステップS29の処理は、上記ステップS22と同様である。したがって、第3の入力が行われた時点の操作装置2の姿勢を表すデータが姿勢データとしてメモリ6に記憶される。
【0142】
ステップS30において、CPUは、第3の入力に対応する姿勢が所定範囲内であるか否かを判定する。すなわち、上記ステップS26と同様、上述の“(追加入力の条件)”で説明した方法によって判定が行われる。ステップS30の判定結果が肯定である場合、ステップS31の処理が実行される。ステップS30の判定結果が否定である場合、上記ステップS27の処理が実行される。
【0143】
ステップS31において、CPUは、基準姿勢を決定する。基準姿勢は、上述の“(第3の入力)”で説明した方法によって算出される。CPUは、算出された基準姿勢を表すデータを基準姿勢データとしてメモリ6に記憶する。
【0144】
なお、
図21に示すフローチャートでは示されていないが、各入力が受け付けられたことに応じて、CPUは、手裏剣38を発射する動作の制御を行う。この制御は、上記“(3−3)キャリブレーション処理における制御”で説明した方法で行われる。なお、手裏剣38の発射方向を算出する方法は、後述するステップS42の処理と同様である。
【0145】
上記キャリブレーション処理(ステップS2)の次に、ステップS3の処理が実行される。ステップS3において、CPUは上記のゲーム制御処理を実行する。
図22は、
図19に示すゲーム制御処理(ステップS3)の詳細な流れの一例を示すフローチャートである。
【0146】
ゲーム制御処理においては、まずステップS41において、CPUは、上記所定のゲーム操作が行われたか否かを判定する。この判定は上記ステップS22と同様、操作装置2から取得される操作データに含まれるタッチ位置データに基づいて行われる。ステップS41の判定結果が肯定である場合、ステップS42の処理が実行される。ステップS41の判定結果が否定である場合、ステップS42およびS43の処理がスキップされてステップS44の処理が実行される。
【0147】
ステップS42において、CPU5は、操作装置2の姿勢に基づいて仮想空間における方向(発射方向)を算出する。具体的には、まず、上記ステップS22と同様の方法で操作装置2の姿勢が算出される。次に、上記“(2−7)判別結果に基づく情報処理”および上記“(3−5)基準姿勢を用いたゲーム制御処理”で説明した方法で、算出された姿勢に基づいて発射方向が算出される。すなわち、CPU5は、メモリ6から把持部データ54を読み出し、ピッチ方向および/またはロール方向に関して、操作装置2の姿勢変化に応じた発射方向の変化の向きを把持部データ54の内容に応じて反転させるように、発射方向を算出する。CPUは、算出された発射方向を表すデータを方向データとしてメモリ6に記憶する。
【0148】
以上のように、本実施形態においては、上記ステップS41およびS42において、向き判別の判別結果に応じて異なる情報処理が実行される。
【0149】
ステップS43において、CPU5は、オブジェクト(手裏剣38)の動作を制御する。すなわち、手裏剣38を発射方向へ移動させる制御が実行される。続くステップS44において、CPUは、操作装置2およびテレビ4に表示すべきゲーム画像を生成し、操作装置2およびテレビ4へゲーム画像を出力する。
【0150】
ステップS45において、CPU5は、ゲームを終了するか否かを判定する。ステップS45の判定結果が否定の場合、ステップS41の処理が再度実行される。一方、ステップS45の判定結果が肯定の場合、CPU5は
図19に示すゲーム処理を終了する。以降、ステップS41〜S45の一連の処理は、ステップS45でゲームを終了すると判定されるまで繰り返し実行される。以上によって、
図18に示すゲーム処理の説明を終了する。
【0151】
[5.変形例]
他の実施形態においては、情報処理システム1は上記向き判別処理およびキャリブレーション処理のうち、いずれか一方のみを実行してもよい。すなわち、情報処理システム1は操作装置2の把持部13の向きを判別することを目的として上記向き判別処理のみを実行してもよいし、操作装置2の基準姿勢を決定することを目的として上記キャリブレーション処理のみを実行してもよい。
【0152】
上記実施形態においては、情報処理システム1は、向き判別における判別結果に応じて処理内容が異なる情報処理を実行した。ここで、他の実施形態においては、向き判別における判別結果は、どのように用いられてもよい。例えば、他の実施形態において、操作装置2の正しい(推奨される)持ち方が定められている場合においては、情報処理システムは、判別結果に基づいて正しい持ち方であるか否かを判定し、正しい持ち方である場合には警告を行わず、正しい持ち方でない場合にユーザに対して警告を行うようにしてもよい。
【0153】
なお、他の実施形態においては、上記向き判別処理および/またはキャリブレーション処理は、ゲーム処理以外の他の情報処理に用いられてもよい。向き判別処理およびキャリブレーション処理は、操作装置に対する入力に基づく任意の情報処理に適用することが可能である。
【0154】
また、上記実施形態においては、横方向に長い形状である操作装置2を縦持ちにして使用する場合を例として説明した。ここで、他の実施形態においては、操作装置2が他の持ち方で使用される場合についても、上記向き判別処理および/またはキャリブレーション処理を適用することが可能である。つまり、情報処理システム1は、操作装置2の使用時の姿勢にかかわらず、上記向き判別処理を用いて把持部13の向きを判別し、上記キャリブレーション処理を用いて基準姿勢を設定することができる。