以下、本実施形態の一例に係るゲームシステム、ゲーム装置、ゲームプログラム、操作判定方法、および情報処理装置について説明する。本実施形態におけるゲームシステムの一例となる情報処理システム1は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とによって構成される。本実施形態における情報処理システム1は、本体装置2に対して左コントローラ3および右コントローラ4が着脱可能であり、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用でき、また、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(図2参照)。また、情報処理システム1は、本体装置2に画像を表示する態様での利用と、テレビ等の他の表示装置(例えば、据置型モニタ)に画像を表示させる態様での利用が可能である。前者の態様において、情報処理システム1は、携帯型装置(例えば、携帯ゲーム機)として利用することができる。また、後者の態様において、情報処理システム1は、据置型装置(例えば、据置型ゲーム機)として利用することができる。
図1は、本実施形態における情報処理システム1の一例において、本体装置2に左コントローラ3および右コントローラ4を装着した状態を示す図である。図1に示すように、情報処理システム1は、本体装置2と、左コントローラ3と、右コントローラ4とを含む。左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、情報処理システム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。図1および図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。左コントローラ3は、本体装置2の左側面(図1に示すx軸正方向側の側面)に装着することができ、本体装置2の左側面に沿って図1に示すy軸方向にスライドさせることによって本体装置2に着脱可能となっている。また、右コントローラ4は、本体装置2の右側面(図1に示すx軸負方向側の側面)に装着することができ、本体装置2の右側面に沿って図1に示すy軸方向にスライドさせることによって本体装置2に着脱可能となっている。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。なお、本実施形態において、1人のユーザが操作する「操作装置」は、1つのコントローラ(例えば、左コントローラ3および右コントローラ4の一方)でも複数のコントローラ(例えば、左コントローラ3および右コントローラ4の両方、またはさらに他のコントローラを含んでもよい)でもよく、当該「操作装置」は、1以上のコントローラによって構成可能となる。以下、本体装置2と左コントローラ3および右コントローラ4との具体的な構成の一例について説明する。
図3は、本体装置2の一例を示す六面図である。図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。本実施形態においては、ハウジング11は、横長の形状であるものとする。つまり、本実施形態においては、ハウジング11の主面の長手方向(すなわち、図1に示すx軸方向)を横方向(左右方向とも言う)と呼び、当該主面の短手方向(すなわち、図1に示すy軸方向)を縦方向(上下方向とも言う)と呼び、主面に垂直な方向(すなわち、図1に示すz軸方向)を奥行方向(前後方向とも言う)と呼ぶこととする。本体装置2は、本体装置2が横長となる向きで利用されることが可能である。また、本体装置2が縦長となる向きで利用されることも可能である。その場合には、ハウジング11を縦長の形状であるものと見なしてもよい。
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が取得または生成した画像(静止画であってもよいし、動画であってもよい)を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、図6に示すスピーカ88)を備えている。図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
図3に示すように、本体装置2は、ハウジング11の左側面において左レール部材15を備える。左レール部材15は、左コントローラ3を本体装置2に着脱可能に装着するための部材である。左レール部材15は、ハウジング11の左側面において、上下方向に沿って延びるように設けられる。左レール部材15は、左コントローラ3のスライダ(すなわち、図4に示すスライダ40)と係合可能な形状を有しており、左レール部材15とスライダ40とによってスライド機構が形成される。このスライド機構によって、左コントローラ3を本体装置2に対してスライド可能かつ着脱可能に装着することができる。
また、本体装置2は左側端子17を備える。左側端子17は、本体装置2が左コントローラ3と有線通信を行うための端子である。左側端子17は、左コントローラ3が本体装置2に装着された場合に、左コントローラ3の端子(図5に示す端子42)と接触する位置に設けられる。左側端子17の具体的な位置は任意である。本実施形態においては、図3に示すように、左側端子17は、左レール部材15の底面に設けられる。また、本実施形態においては、左側端子17は、左レール部材15の底面における下側の端部付近に設けられる。
図3に示すように、ハウジング11の右側面には、左側面に設けられる構成と同様の構成が設けられる。すなわち、本体装置2は、ハウジング11の右側面において右レール部材19を備える。右レール部材19は、ハウジング11の右側面において、上下方向に沿って延びるように設けられる。右レール部材19は、右コントローラ4のスライダ(すなわち、図5に示すスライダ62)と係合可能な形状を有しており、右レール部材19とスライダ62とによってスライド機構が形成される。このスライド機構によって、右コントローラ4を本体装置2に対してスライド可能かつ着脱可能に装着することができる。
また、本体装置2は右側端子21を備える。右側端子21は、本体装置2が右コントローラ4と有線通信を行うための端子である。右側端子21は、右コントローラ4が本体装置2に装着された場合に、右コントローラ4の端子(図5に示す端子64)と接触する位置に設けられる。右側端子21の具体的な位置は任意である。本実施形態においては、図3に示すように、右側端子21は、右レール部材19の底面に設けられる。また、本実施形態においては、右側端子21は、右レール部材19の底面における下側の端部付近に設けられる。
図3に示すように、本体装置2は、第1スロット23を備える。第1スロット23は、ハウジング11の上側面に設けられる。第1スロット23は、第1の種類の記憶媒体を装着可能な形状を有する。第1の種類の記憶媒体は、例えば、情報処理システム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。第1の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。図3に示すように、電源ボタン28は、ハウジング11の上側面に設けられる。電源ボタン28は、本体装置2の電源のオン/オフを切り替えるためのボタンである。
本体装置2は、音声入出力端子(具体的には、イヤホンジャック)25を備える。すなわち、本体装置2は、音声入出力端子25にマイクやイヤホンを装着することができる。図3に示すように、音声入出力端子25は、ハウジング11の上側面に設けられる。
本体装置2は、音量ボタン26aおよび26bを備える。図3に示すように、音量ボタン26aおよび26bは、ハウジング11の上側面に設けられる。音量ボタン26aおよび26bは、本体装置2によって出力される音量を調整する指示を行うためのボタンである。すなわち、音量ボタン26aは、音量を下げる指示を行うためのボタンであり、音量ボタン26bは、音量を上げる指示を行うためのボタンである。
また、ハウジング11には、排気孔11cが形成される。図3に示すように、排気孔11cは、ハウジング11の上側面に形成される。排気孔11cは、ハウジング11の内部で発生した熱をハウジング11の外部へ排気する(換言すれば、放出する)ために形成される。すなわち、排気孔11cは、排熱孔であるとも言える。
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。図3に示すように、下側端子27は、ハウジング11の下側面に設けられる。本体装置2がクレードルに装着された場合、下側端子27は、クレードルの端子に接続される。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。クレードルは、左コントローラ3および右コントローラ4を本体装置2から取り外した状態で本体装置2のみを載置することが可能である。また、さらに他の例として、クレードルは、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置を載置することも可能である。そして、クレードルは、本体装置2とは別体の外部表示装置の一例である据置型モニタ(例えば、据置型テレビ)と通信可能である(有線通信であってもよいし、無線通信であってもよい)。上記一体型装置または本体装置2単体をクレードルに載置した場合、情報処理システムは、本体装置2が取得または生成した画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
また、本体装置2は第2スロット24を備える。本実施形態においては、第2スロット24は、ハウジング11の下側面に設けられる。ただし、他の実施形態においては、第2スロット24は、第1スロット23とは同じ面に設けられてもよい。第2スロット24は、第1の種類とは異なる第2の種類の記憶媒体を装着可能な形状を有する。第2の種類の記憶媒体は、例えば、汎用の記憶媒体であってもよい。例えば、第2の種類の記憶媒体は、SDカードであってもよい。第2の種類の記憶媒体は、例えば、第1の種類の記憶媒体と同様、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。
また、ハウジング11には、吸気孔11dが形成される。図3に示すように、吸気孔11dは、ハウジング11の下側面に形成される。吸気孔11dは、ハウジング11の外部の空気をハウジング11の内部へ吸気する(換言すれば、導入する)ために形成される。本実施形態においては、排気孔11cが形成される面の反対側の面に吸気孔11dが形成されるので、ハウジング11内部の放熱を効率良く行うことができる。
以上に説明した、ハウジング11に設けられる各構成要素(具体的には、ボタン、スロット、端子等)の形状、数、および設置位置は、任意である。例えば、他の実施形態においては、電源ボタン28および各スロット23および24のうちのいくつかは、ハウジング11の他の側面あるいは背面に設けられてもよい。また、他の実施形態においては、本体装置2は、上記各構成要素のうちいくつかを備えていない構成であってもよい。
図4は、左コントローラ3の一例を示す六面図である。図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態において、ハウジング31は、略板状である。また、ハウジング31の主面(換言すれば、表側の面、すなわち、図1に示すz軸負方向側の面)は、大略的には矩形形状である。また、本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、図1に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。なお、ハウジング31の形状は任意であり、他の実施形態においては、ハウジング31は略板状でなくてもよい。また、ハウジング31は、矩形形状でなくてもよく、例えば半円状の形状等であってもよい。また、ハウジング31は、縦長の形状でなくてもよい。
ハウジング31の上下方向の長さは、本体装置2のハウジング11の上下方向の長さとほぼ同じである。また、ハウジング31の厚さ(すなわち、前後方向の長さ、換言すれば、図1に示すz軸方向の長さ)は、本体装置2のハウジング11の厚さとほぼ同じである。したがって、左コントローラ3が本体装置2に装着された場合(図1参照)には、ユーザは、本体装置2と左コントローラ3とを一体の装置のような感覚で把持することができる。
また、図4に示すように、ハウジング31の主面は、左側の角部分が、右側の角部分よりも丸みを帯びた形状になっている。すなわち、ハウジング31の上側面と左側面との接続部分、および、ハウジング31の下側面と左側面との接続部分は、その上側面と右側面との接続部分、および、その下側面と右側面との接続部分に比べて、丸くなっている(換言すれば、面取りにおけるRが大きい)。したがって、左コントローラ3が本体装置2に装着された場合(図1参照)には、一体型装置となった情報処理システム1の左側が丸みを帯びた形状となるので、ユーザにとって持ちやすい形状となる。
左コントローラ3は、アナログスティック32を備える。図4に示すように、アナログスティック32が、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部の一例である。アナログスティック32は、ハウジング31の主面に平行な全方向(すなわち、上下左右および斜め方向を含む、360°の方向)に傾倒可能なスティック部材を有する。ユーザは、スティック部材を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、方向入力部は、十字キーまたはスライドスティック等であってもよい。また、本実施形態においては、スティック部材を(ハウジング31に垂直な方向に)押下する入力が可能である。すなわち、アナログスティック32は、スティック部材の傾倒方向および傾倒量に応じた方向および大きさの入力と、スティック部材に対する押下入力とを行うことが可能な入力部である。
左コントローラ3は、4つの操作ボタン33〜36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および、左方向ボタン36)を備える。図4に示すように、これら4つの操作ボタン33〜36は、ハウジング31の主面においてアナログスティック32の下側に設けられる。なお、本実施形態においては、左コントローラ3の主面に設けられる操作ボタンを4つとするが、操作ボタンの数は任意である。これらの操作ボタン33〜36は、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。なお、本実施形態においては、各操作ボタン33〜36は方向入力を行うために用いられてもよいことから、各操作ボタン33〜36を、右方向ボタン33、下方向ボタン34、上方向ボタン35、および、左方向ボタン36と呼んでいる。ただし、各操作ボタン33〜36は、方向入力以外の指示を行うために用いられてもよい。
また、左コントローラ3は−(マイナス)ボタン47を備える。図4に示すように、−ボタン47は、ハウジング31の主面に設けられ、より具体的には、主面における右上領域に設けられる。−ボタン47は、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。−ボタン47は、例えば、ゲームアプリケーションにおいてセレクトボタン(例えば、選択項目の切り替えに用いられるボタン)として用いられる。
左コントローラ3の主面に設けられる各操作部(具体的には、アナログスティック32および上記各ボタン33〜36、47)は、左コントローラ3が本体装置2に装着される場合、一体型装置となった情報処理システム1を把持するユーザの例えば左手の親指によって操作される。また、左コントローラ3が本体装置2から外された状態において両手で横向きに把持されて使用される場合、上記各操作部は、左コントローラ3を把持するユーザの例えば左右の手の親指で操作される。具体的には、この場合、アナログスティック32はユーザの左手の親指で操作され、各操作ボタン33〜36はユーザの右手の親指で操作される。
左コントローラ3は、第1Lボタン38を備える。また、左コントローラ3は、ZLボタン39を備える。これらの操作ボタン38および39は、上記操作ボタン33〜36と同様、本体装置2で実行される各種プログラムに応じた指示を行うために用いられる。図4に示すように、第1Lボタン38は、ハウジング31の側面のうちの左上部分に設けられる。また、ZLボタン39は、ハウジング31の側面から裏面にかけての左上部分(厳密には、ハウジング31を表側から見たときの左上部分)に設けられる。つまり、ZLボタン39は、第1Lボタン38の後側(図1に示すz軸正方向側)に設けられる。本実施形態においては、ハウジング31の左上部分が丸みを帯びた形状であるので、第1Lボタン38およびZLボタン39は、ハウジング31の当該左上部分の丸みに応じた丸みを帯びた形状を有する。左コントローラ3が本体装置2に装着される場合、第1Lボタン38およびZLボタン39は、一体型装置となった情報処理システム1における左上部分に配置されることになる。
左コントローラ3は、上述のスライダ40を備えている。図4に示すように、スライダ40は、ハウジング31の右側面において、上下方向に延びるように設けられる。スライダ40は、本体装置2の左レール部材15(より具体的には、左レール部材15の溝)と係合可能な形状を有している。したがって、左レール部材15に係合したスライダ40は、スライド方向(換言すれば左レール部材15が延びる方向)に垂直な向きに関しては固定されて外れないようになっている。
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。端子42は、左コントローラ3が本体装置2に装着された場合に、本体装置2の左側端子17(図3)と接触する位置に設けられる。端子42の具体的な位置は任意である。本実施形態においては、図4に示すように、端子42は、スライダ40の装着面に設けられる。また、本実施形態においては、端子42は、スライダ40の装着面における下側の端部付近に設けられる。
図5は、右コントローラ4の一例を示す六面図である。図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態において、ハウジング51は、略板状である。また、ハウジング51の主面(換言すれば、表側の面、すなわち、図1に示すz軸負方向側の面)は、大略的には矩形形状である。また、本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
右コントローラ4のハウジング51は、左コントローラ3のハウジング31と同様、その上下方向の長さは、本体装置2のハウジング11の上下方向の長さとほぼ同じであり、その厚さは、本体装置2のハウジング11の厚さとほぼ同じである。したがって、右コントローラ4が本体装置2に装着された場合(図1参照)には、ユーザは、本体装置2と右コントローラ4とを一体の装置のような感覚で把持することができる。
また、図5に示すように、ハウジング51の主面は、右側の角部分が、左側の角部分よりも丸みを帯びた形状になっている。すなわち、ハウジング51の上側面と右側面との接続部分、および、ハウジング51の下側面と右側面との接続部分は、その上側面と左側面との接続部分、および、その下側面と左側面との接続部分に比べて、丸くなっている(換言すれば、面取りにおけるRが大きい)。したがって、右コントローラ4が本体装置2に装着された場合(図1参照)には、一体型装置となった情報処理システム1の右側が丸みを帯びた形状となるので、ユーザにとって持ちやすい形状となる。
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。本実施形態においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、左コントローラ3と同様、4つの操作ボタン53〜56(具体的には、Aボタン53、Bボタン54、Xボタン55、および、Yボタン56)を備える。本実施形態においては、これら4つの操作ボタン53〜56は、左コントローラ3の4つの操作ボタン33〜36と同じ機構である。図5に示すように、これらアナログスティック52および各操作ボタン53〜56は、ハウジング51の主面に設けられる。なお、本実施形態においては、右コントローラ4の主面に設けられる操作ボタンを4つとするが、操作ボタンの数は任意である。
ここで、本実施形態においては、右コントローラ4における2種類の操作部(アナログスティックおよび操作ボタン)の位置関係は、左コントローラ3におけるこれら2種類の操作部の位置関係とは反対になっている。すなわち、右コントローラ4においては、アナログスティック52は各操作ボタン53〜56の上方に配置されるのに対して、左コントローラ3においては、アナログスティック32は各操作ボタン33〜36の下方に配置される。このような配置によって、左コントローラ3および右コントローラ4を本体装置2から外して使用する場合に似たような操作感覚で使用することができる。
また、右コントローラ4は、+(プラス)ボタン57を備える。図5に示すように、+ボタン57は、ハウジング51の主面に設けられ、より具体的には、主面の左上領域に設けられる。+ボタン57は、他の操作ボタン53〜56と同様、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。+ボタン57は、例えば、ゲームアプリケーションにおいてスタートボタン(例えば、ゲーム開始の指示に用いられるボタン)として用いられる。
右コントローラ4は、ホームボタン58を備える。図5に示すように、ホームボタン58は、ハウジング51の主面に設けられ、より具体的には、主面の左下領域に設けられる。ホームボタン58は、本体装置2のディスプレイ12に所定のメニュー画面を表示させるためのボタンである。メニュー画面は、例えば、本体装置2において実行可能な1以上のアプリケーションのうちからユーザが指定したアプリケーションを起動することが可能な画面である。メニュー画面は、例えば、本体装置2の起動時に表示されてもよい。本実施形態においては、本体装置2においてアプリケーションが実行されている状態(すなわち、当該アプリケーションの画像がディスプレイ12に表示されている状態)において、ホームボタン58が押下されると、所定の操作画面がディスプレイ12に表示されてもよい(このとき、操作画面に代えてメニュー画面が表示されてもよい)。なお、操作画面は、例えば、アプリケーションを終了してメニュー画面をディスプレイ12に表示させる指示、および、アプリケーションを再開する指示等を行うことが可能な画面である。
右コントローラ4の主面に設けられる各操作部(具体的には、アナログスティック52および上記各ボタン53〜58)は、右コントローラ4が本体装置2に装着される場合、情報処理システム1を把持するユーザの例えば右手の親指によって操作される。また、右コントローラ4が本体装置2から外された状態において両手で横向きに把持されて使用される場合、上記各操作部は、右コントローラ4を把持するユーザの例えば左右の手の親指で操作される。具体的には、この場合、アナログスティック52はユーザの左手の親指で操作され、各操作ボタン53〜56はユーザの右手の親指で操作される。
右コントローラ4は、第1Rボタン60を備える。また、右コントローラ4は、ZRボタン61を備える。図5に示すように、第1Rボタン60は、ハウジング51の側面のうちの右上部分に設けられる。また、ZRボタン61は、ハウジング51の側面から裏面にかけての右上部分(厳密には、ハウジング51を表側から見たときの右上部分)に設けられる。つまり、ZRボタン61は、第1Rボタン60の後側(図1に示すz軸正方向側)に設けられる。本実施形態においては、ハウジング51の右上部分が丸みを帯びた形状であるので、第1Rボタン60およびZRボタン61は、ハウジング51の当該右上部分の丸みに応じた丸みを帯びた形状を有する。右コントローラ4が本体装置2に装着される場合、第1Rボタン60およびZRボタン61は、情報処理システム1における右上部分に配置されることになる。
右コントローラ4は、左コントローラ3と同様のスライダ機構を備えている。すなわち、右コントローラ4は、上述のスライダ62を備えている。図5に示すように、スライダ62は、ハウジング51の左側面において、上下方向に延びるように設けられる。スライダ62は、本体装置2の右レール部材19(より具体的には、右レール部材19の溝)と係合可能な形状を有している。したがって、右レール部材19に係合したスライダ62は、スライド方向(換言すれば右レール部材19が延びる方向)に垂直な向きに関しては固定されて外れないようになっている。
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。端子64は、右コントローラ4が本体装置2に装着された場合に、本体装置2の右側端子21(図3)と接触する位置に設けられる。端子64の具体的な位置は任意である。本実施形態においては、図5に示すように、端子64は、スライダ62の装着面に設けられる。本実施形態においては、端子64は、スライダ62の装着面における下側の端部付近に設けられる。
なお、上記左コントローラ3および右コントローラ4において、ハウジング31または51に設けられる各構成要素(具体的には、スライダ、スティック、およびボタン等)の形状、数、および、設置位置は任意である。例えば、他の実施形態においては、左コントローラ3および右コントローラ4は、アナログスティックとは別の種類の方向入力部を備えていてもよい。また、スライダ40または62は、本体装置2に設けられるレール部材15または19の位置に応じた位置に配置されてよく、例えば、ハウジング31または51の主面または裏面に配置されてもよい。また、他の実施形態においては、左コントローラ3および右コントローラ4は、上記各構成要素のうちいくつかを備えていない構成であってもよい。
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、図3に示す構成の他、図6に示す各構成要素81〜98を備える。これらの構成要素81〜98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
本体装置2は、CPU(Central Processing Unit)81を備える。CPU81は、本体装置2において実行される各種の情報処理を実行する情報処理部である。CPU81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、各スロット23および24に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、CPU81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
本体装置2は、第1スロットインターフェース(以下、「I/F」と略記する。)91を備える。また、本体装置2は、第2スロットI/F92を備える。第1スロットI/F91および第2スロットI/F92は、CPU81に接続される。第1スロットI/F91は、第1スロット23に接続され、第1スロット23に装着された第1の種類の記憶媒体(例えば、SDカード)に対するデータの読み出しおよび書き込みを、CPU81の指示に応じて行う。第2スロットI/F92は、第2スロット24に接続され、第2スロット24に装着された第2の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、CPU81の指示に応じて行う。
CPU81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、CPU81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi−Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、CPU81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
CPU81は、上述の左側端子17、右側端子21、および、下側端子27に接続される。CPU81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、CPU81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、CPU81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、ユーザは、複数の左コントローラ3および複数の右コントローラ4を用いて本体装置2に対する入力を行うことができる。
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とCPU81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、CPU81へ出力する。
また、ディスプレイ12は、CPU81に接続される。CPU81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、CPU81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。すなわち、コーデック回路87は、CPU81から音声データを受け取った場合、当該音声データに対してD/A変換を行って得られる音声信号をスピーカ88または音声入出力端子25へ出力する。これによって、スピーカ88あるいは音声入出力端子25に接続された音声出力部(例えば、イヤホン)から音が出力される。また、コーデック回路87は、音声入出力端子25から音声信号を受け取った場合、音声信号に対してA/D変換を行い、所定の形式の音声データをCPU81へ出力する。また、音量ボタン26は、CPU81に接続される。CPU81は、音量ボタン26に対する入力に基づいて、スピーカ88または上記音声出力部から出力される音量を制御する。
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびCPU81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、CPU81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。また、電力制御部97は、電源ボタン28に接続される。電力制御部97は、電源ボタン28に対する入力に基づいて、上記各部への電力供給を制御する。すなわち、電力制御部97は、電源ボタン28に対して電源をオフする操作が行われた場合、上記各部の全部または一部への電力供給を停止し、電源ボタン28に対して電源をオンする操作が行われた場合、電力制御部97は、上記各部の全部または一部への電力供給を開始する。また、電力制御部97は、電源ボタン28に対する入力を示す情報(具体的には、電源ボタン28が押下されているか否かを示す情報)をCPU81へ出力する。
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
また、本体装置2は、本体装置2内部の熱を放熱するための冷却ファン96を備える。冷却ファン96が動作することによって、ハウジング11の外部の空気が吸気孔11dから導入されるとともに、ハウジング11内部の空気が排気孔11cから放出されることで、ハウジング11内部の熱が放出される。冷却ファン96は、CPU81に接続され、冷却ファン96の動作はCPU81によって制御される。また、本体装置2は、本体装置2内の温度を検出する温度センサ95を備える。温度センサ95は、CPU81に接続され、温度センサ95の検出結果がCPU81へ出力される。CPU81は、温度センサ95の検出結果に基づいて、冷却ファン96の動作を制御する。
図7は、情報処理システム1の内部構成の一例を示すブロック図である。なお、情報処理システム1のうちの本体装置2に関する内部構成の詳細については、図6で示しているため図7では省略している。
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
左コントローラ3は、各ボタン103(具体的には、ボタン33〜39,43,および44)を備える。また、左コントローラ3は、アナログスティック(図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
左コントローラ3は、加速度センサ104を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、図8に示すXYZ軸)方向に沿った直線加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、角速度センサ105は、所定の3軸(例えば、図8に示すXYZ軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、または、センサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
左コントローラ3は、振動によってユーザに通知を行うための振動子107を備える。本実施形態においては、振動子107は、本体装置2からの指令によって制御される。すなわち、通信制御部101は、本体装置2からの上記指令を受け取ると、当該指令に従って振動子107を駆動させる。ここで、左コントローラ3は、増幅器106を備える。通信制御部101は、上記指令を受け取ると、指令に応じた制御信号を増幅器106へ出力する。増幅器106は、通信制御部101からの制御信号を増幅して、振動子107を駆動させるための駆動信号を生成して振動子107へ与える。これによって振動子107が動作する。
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。電力制御回路は、バッテリから上記各部への電力供給を制御する。また、バッテリは、端子42に接続される。本実施形態においては、左コントローラ3が本体装置2に装着される場合、所定の条件下で、バッテリは、端子42を介して本体装置2からの給電によって充電される。
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部(具体的には、各ボタン113、アナログスティック52、加速度センサ114、および、角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
また、右コントローラ4は、振動子117および増幅器116を備える。振動子117および増幅器116は、左コントローラ3の振動子107および増幅器106と同様に動作する。すなわち、通信制御部111は、本体装置2からの指令に従って、増幅器116を用いて振動子117を動作させる。
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。すなわち、電力供給部118は、バッテリから給電を受ける各部への電力供給を制御する。また、右コントローラ4が本体装置2に装着される場合、所定の条件下で、バッテリは、端子64を介して本体装置2からの給電によって充電される。
右コントローラ4は、処理部121を備える。処理部121は、通信制御部111に接続されるとともに、NFC通信部122に接続される。処理部121は、本体装置2からの指令に応じて、NFC通信部122に対する管理処理を実行する。例えば、処理部121は、本体装置2からの指令に応じてNFC通信部122の動作を制御する。また、処理部121は、NFC通信部122の起動を制御したり、通信相手(例えば、NFCタグ)に対するNFC通信部122の動作(具体的には、読み出しおよび書き込み等)を制御したりする。また、処理部121は、通信制御部111を介して上記通信相手に送信されるべき情報を本体装置2から受信してNFC通信部122へ渡したり、上記通信相手から受信された情報をNFC通信部122から取得して通信制御部111を介して本体装置2へ送信したりする。また、処理部121は、本体装置2からの指令に応じて、赤外撮像部123に対する管理処理を実行する。例えば、処理部121は、赤外撮像部123に撮像動作を行わせたり、撮像結果に基づく情報(撮像画像の情報、あるいは、当該情報から算出される情報等)を取得して、通信制御部111を介して本体装置2へ送信したりする。
以上に説明したように、本実施形態における情報処理システム1については左コントローラ3および右コントローラ4が本体装置2から着脱可能である。以下、左コントローラ3および右コントローラ4を本体装置2から取り外した状態で、本体装置2(ディスプレイ12およびスピーカ88)に画像(および音声)を出力する利用態様における情報処理システムを用いて説明する。
上述のように、本実施形態においては、左コントローラ3および右コントローラ4を本体装置2から外した状態(「離脱状態」と呼ぶ)で情報処理システム1を利用することも可能である。離脱状態で情報処理システム1を利用して同じアプリケーション(例えば、ゲームアプリケーション)に対する複数人プレイを行う場合の態様としては、複数のユーザのうちの1人が左コントローラ3を用い、他のユーザが右コントローラ4を用いる態様が考えられる。なお、当該利用態様によって3人以上のユーザが同じアプリケーションを用いて操作する場合は、左コントローラ3および/または右コントローラ4を複数用意して、それぞれのユーザが左コントローラ3または右コントローラ4を用いる態様が考えられる。
図8は、離脱状態において、ユーザAが左コントローラ3を把持して情報処理システム1を利用する様子の一例を示す図である。図9は、離脱状態において、ユーザBが右コントローラ4を把持して情報処理システム1を利用する様子の一例を示す図である。図8および図9に示すように、離脱状態において、ユーザAが左コントローラ3を右手で把持し、ユーザBが右コントローラ4を右手で把持して、それぞれ操作を行う。そして、ユーザAおよびユーザBは、それぞれ同じ本体装置2(ディスプレイ12)に表示された画像を見たり、本体装置2(スピーカ88)から出力される音声を聴いたりすることができる。
例えば、本実施例では、図8に示すように、ユーザAは、縦長の略板状である左コントローラ3の長手方向の上方向(図1に示す上方向(y軸正方向))が前方になるとともに、本体装置2に装着された際に当該本体装置2と接する側面(スライダ40が設けられている側面)が右方向に向き、かつ、左コントローラ3の主面(アナログスティック32等が設けられる面)が上方向に向くように左コントローラ3を例えば右手で把持する。このように左コントローラ3を把持して人差し指等をZLボタン39が押下可能な位置に添え、ユーザAが左コントローラ3を把持している手(例えば、右手)を前方に突き出すように動かした場合、左コントローラ3の長手方向で前方を指し示しながらZLボタン39を押下する操作が可能となる。
また、本実施例では、図9に示すように、ユーザBは、縦長の略板状である右コントローラ4の長手方向の上方向(図1に示す上方向(y軸正方向))が前方になるとともに、本体装置2に装着された際に当該本体装置2と接する側面(スライダ62が設けられている側面)が左方向に向き、かつ、右コントローラ4の主面(アナログスティック52等が設けられる面)が上方向に向くように右コントローラ4を例えば右手で把持する。このように右コントローラ4を把持して人差し指等をZRボタン61が押下可能な位置に添え、ユーザBが右コントローラ4を把持している手(例えば、右手)を前方に突き出すように動かした場合、右コントローラ4の長手方向で前方を指し示しながらZRボタン61を押下する操作が可能となる。このように左コントローラ3や右コントローラ4を把持した状態で左コントローラ3や右コントローラ4を上下左右前後に動かしたり、左コントローラ3や右コントローラ4を回転させたり、左コントローラ3や右コントローラ4を振り動かしたりすることによって、左コントローラ3や右コントローラ4の動きや姿勢に応じてゲームプレイが行われる。
なお、左コントローラ3に生じる加速度や角速度の方向をわかりやすくするために、上記把持状態における右方向(丸みを帯びた側面から本体装置2と接する側面に向かう方向であり、図1に示すx軸負方向)をX軸正方向とし、上記把持状態における上方向(背面から主面に向かう方向であり、図1に示すz軸負方向)をY軸正方向とし、上記把持状態における前方向(長手方向の上に向かう方向であり、図1に示すy軸正方向)をZ軸正方向とする。そして、左コントローラ3の加速度センサ104は、上記XYZ軸方向の加速度をそれぞれ検出可能であり、角速度センサ105は、上記XYZ軸方向周りの角速度をそれぞれ検出可能であるとする。また、右コントローラ4に生じる加速度や角速度の方向をわかりやすくするために、上記把持状態における右方向(本体装置2と接する側面から丸みを帯びた側面に向かう方向であり、図1に示すx軸負方向)をX軸正方向とし、上記把持状態における上方向(背面から主面に向かう方向であり、図1に示すz軸負方向)をY軸正方向とし、上記把持状態における前方向(長手方向の上に向かう方向であり、図1に示すy軸正方向)をZ軸正方向とする。そして、右コントローラ4の加速度センサ114は、上記XYZ軸方向の加速度をそれぞれ検出可能であり、角速度センサ115は、上記XYZ軸方向周りの角速度をそれぞれ検出可能であるとする。
次に、図10〜図12は、ユーザAが左コントローラ3を動かし、ユーザBが右コントローラ4を動かすことによって、2人のユーザがプレイするゲームにおいて表示されるゲーム画像例を示す図である。図10〜図12に示すように、本ゲーム例では、ユーザAとユーザBとがそれぞれ左コントローラ3および右コントローラ4を拳銃のように取り扱って早撃ちを競うゲームの画像が本体装置2(ディスプレイ12)に表示される。そして、左コントローラ3を操作するユーザAと右コントローラ4を操作するユーザBとは、お互いに左コントローラ3本体および右コントローラ4本体をそれぞれ振り動かしながら操作ボタン(例えば、ZLボタン39およびZRボタン61)を押下操作することによって、拳銃を早撃ちするゲーム(早撃ちゲーム)をプレイすることができる。
例えば、図10に示すように、上記早撃ちゲームを開始するにあたって、早撃ちゲームを開始する準備をするための操作指示「コントローラを下に向けて準備してください」が本体装置2に表示されるとともに、本体装置2から当該操作指示を示す音声が出力される。これに応じて、ユーザAおよびユーザBは、それぞれが把持している左コントローラ3および右コントローラ4を下に向ける(すなわち、Z軸正方向が実空間の下方向となるように左コントローラ3および右コントローラ4を把持する)ことによって、早撃ちゲームを開始するための準備が整う。具体的には、本実施形態では、実空間における重力方向を−90°、水平方向を0°とした場合に、左コントローラ3および右コントローラ4のZ軸正方向の角度がそれぞれ−35°未満となる準備判定範囲内にある場合に、左コントローラ3および右コントローラ4を用いた早撃ちゲームを開始するための準備が整ったと判定される。
次に、図11に示すように、上記早撃ちゲームを開始する旨を報知するための操作指示「撃て!」が本体装置2に表示されるとともに、本体装置2から当該操作指示を示す音声が出力される。これに応じて、ユーザAおよびユーザBは、それぞれが把持している左コントローラ3および右コントローラ4を相手に向かって振り上げる(すなわち、Z軸正方向が実空間の相手ユーザ方向に向くように左コントローラ3および右コントローラ4を水平方向に持ち上げる)とともに、左コントローラ3および右コントローラ4を用いて相手ユーザを指し示したタイミングでそれぞれ所定の操作(例えば、ZLボタン39およびZRボタン61を押下する操作)を行うことによって、相手ユーザを先に撃つことを競い合う。具体的には、本実施形態では、実空間における重力方向を−90°、水平方向を0°とした場合に、左コントローラ3および右コントローラ4のZ軸正方向の角度がそれぞれ−30°以上から30°未満の間となる当たり判定範囲内にあり、かつ、当該当たり判定範囲内にある状態でZLボタン39およびZRボタン61が押下操作された場合に、相手ユーザに当たる有効な射撃が行われたと判定(射撃成功判定)される。一方、左コントローラ3および右コントローラ4のZ軸正方向の角度が当たり判定範囲外にある状態でZLボタン39およびZRボタン61が押下操作された場合や、有効時間内にZLボタン39およびZRボタン61が押下操作されなかった場合は、相手ユーザに当たらなかった無効な射撃が行われたと判定(射撃無効判定)される。
そして、図12に示すように、上記早撃ちゲームの結果が本体装置2に表示されるとともに、どちらのユーザが勝者なのかを示す音声が本体装置2から出力される。ここで、上記早撃ちゲームは、上記射撃有効判定された射撃が行われたタイミング、すなわちZLボタン39およびZRボタン61を押下操作されたタイミングが早いユーザが勝者となる。例えば、図12の例では、上記早撃ちゲームを開始する旨を報知したタイミングから有効な射撃が行われたタイミングまでの射撃時間が0.254秒であったユーザAが、当該射撃時間が0.284秒であったユーザBより素早く有効な射撃操作を行ったため、ユーザAが勝者であることが示されている。また、図12の画面例では、上記射撃時間とともに、それぞれのユーザが有効な射撃操作を行った際の左コントローラ3および右コントローラ4の姿勢が表示される。具体的には、左コントローラ3および右コントローラ4のZ軸正方向を拳銃オブジェクトの射撃方向として、左コントローラ3および右コントローラ4がそれぞれ有効な射撃が行われた際の実空間の鉛直方向を基準とした角度を示すように当該拳銃オブジェクトをそれぞれ表示する。
次に、図13および図14を参照して、上記早撃ちゲームにおける射撃判定方法についての詳細を説明する。なお、図13は、上記早撃ちゲームにおいて射撃有効判定される第1の例を示すグラフである。図14は、上記早撃ちゲームにおいて射撃有効判定される第2の例を示すグラフである。
図13におけるグラフでは、横軸が時間、縦軸がZ軸正方向角度(実空間の水平方向を0°および重力方向を−90°とした場合のZ軸正方向の方向を示す角度)を示している。そして、左コントローラ3または右コントローラ4(以下の説明では、単にコントローラと記載する)の姿勢を判定するために、準備判定範囲および当たり判定範囲が設定される。一例として、準備判定範囲は、上記Z軸正方向角度に対して−35°未満に設定される。また、一例として、当たり判定範囲は、上記Z軸正方向角度に対して−30°以上から30°未満の間に設定される。
上述したように、コントローラの姿勢が上記準備判定範囲内にある場合に、上記早撃ちゲームを開始する準備が完了したとされる。そして、コントローラのZ軸正方向角度が準備判定範囲内にある姿勢から、早撃ちゲームが開始される(図13における「スタート」点)。
上記早撃ちゲームが開始されると、ユーザが相手ユーザを指し示すように把持しているコントローラを振り上げるため、Z軸正方向角度は、上記「スタート」点から実空間の水平方向となる0°に向かって上昇する。そして、ユーザは、相手ユーザを指し示すような角度になると射撃操作(ZLボタン39またはZRボタン61を押下する操作)を行う(図13における「押下操作」点)。この射撃操作が行われた時点のコントローラのZ軸正方向角度が当たり判定範囲内にあれば、当該射撃操作は、有効な射撃となる。そして、上記「スタート」点から上記「押下操作」点までの経過時間が上記有効な射撃が行われた際の発射時間となる。また、上記「押下操作」点におけるZ軸正方向角度が射撃を行った際の射撃方向(当たり角度)となる。このように、上記早撃ちゲームにおいて射撃有効判定される第1の例では、コントローラの姿勢が当たり判定範囲外に設定されている準備判定範囲内に含まれている状態からゲームが開始され、所定の射撃操作があったタイミングにおいてコントローラの姿勢が当たり判定範囲内に含まれる場合に、当該射撃が成功したと判定される。
図14におけるグラフでも、横軸が時間、縦軸がZ軸正方向角度を示している。そして、上記早撃ちゲームにおいて射撃有効判定される第2の例においても、上記第1の例と同様の準備判定範囲および当たり判定範囲が設定される。また、当該第2の例においても、コントローラの姿勢が上記準備判定範囲内にある場合に、上記早撃ちゲームを開始する準備が完了したとされる。そして、コントローラのZ軸正方向角度が準備判定範囲内にある姿勢から、早撃ちゲームが開始される(図14における「スタート」点)。
上記早撃ちゲームが開始されると、ユーザが相手ユーザを指し示すように把持しているコントローラを振り上げるため、Z軸正方向角度は、上記「スタート」点から実空間の水平方向となる0°に向かって上昇する。ここで、コントローラが上記当たり判定範囲内の姿勢になる前にユーザが射撃操作をしてしまうと、上記第1の例における射撃判定では射撃が失敗した(はずれた)と判定される。しかしながら、当該第2の例における射撃判定では、コントローラが上記当たり判定範囲外の姿勢において射撃操作された場合であっても有効な射撃であると判定されることがあり得る。例えば、本実施例では、上記当たり判定範囲に含まれるコントローラの姿勢より当該コントローラのZ軸正方向が実空間において下向きとなった姿勢で射撃操作された場合であっても、当該射撃操作後にコントローラが静止状態またはコントローラの動きが所定量以下になった場合の当該コントローラの姿勢が上記当たり判定範囲に含まれる場合は、当該射撃操作が成功したと判定される。なお、上記下向きとなった姿勢で射撃操作された場合とは、本実施例では、上記準備判定範囲に含まれるコントローラの姿勢で射撃操作された場合や上記当たり判定範囲と上記準備判定範囲との間の範囲に含まれるコントローラの姿勢で射撃操作された場合が考えられる。
例えば、図14に示すように、上記当たり判定範囲に含まれるコントローラの姿勢より当該コントローラのZ軸正方向が実空間において下向きとなった姿勢(上記当たり判定範囲の俯角側範囲に含まれるコントローラの姿勢)でユーザが射撃操作を行った場合を考える(図14における「押下操作」点)。この場合、当該射撃操作からコントローラの静止状態を確認する静止確認期間(例えば、射撃操作後20フレームが経過するまでの期間)が設定される。そして、当該静止確認期間中にコントローラが静止状態または静止状態に準ずる状態(例えば、コントローラの動きが所定量以下になる状態であり、Z軸正方向の動きが±10°以内となる状態)となり、当該状態におけるコントローラの姿勢が上記当たり判定範囲内であれば、上記射撃操作も有効な射撃と判定される(図14における「静止期間」点)。そして、上記早撃ちゲームにおいて射撃有効判定される第2の例においても、上記「スタート」点から上記「押下操作」点までの経過時間が有効な射撃と判定された際の発射時間となる。このように、上記早撃ちゲームにおいて射撃有効判定される第2の例では、コントローラの姿勢が当たり判定範囲外に設定されている準備判定範囲内に含まれている状態からゲームが開始され、所定の射撃操作があったタイミングにおいてコントローラの姿勢が当たり判定範囲外である場合に、当該射撃操作タイミングから開始される静止確認期間内にコントローラの姿勢が当たり判定範囲内に含まれ、かつコントローラが静止状態またはコントローラの動きが所定量以下になった場合に当該射撃も成功したと判定される。
ここで、上記早撃ちゲームにおいて射撃有効判定される第2の例において、上記「押下操作」点におけるZ軸正方向角度を有効判定された射撃方向(当たり角度)としてユーザに提示すると、違和感のある射撃結果となることが考えられる。したがって、本実施例では、上記第2の例における射撃方向(当たり角度)は、上記当たり判定範囲内の数値からランダムで選択する。なお、上記第2の例では、上記「静止期間」点における代表点のZ軸正方向角度(例えば、静止期間内におけるZ軸正方向角度の平均値、最小値、最大値等)を有効判定された射撃方向(当たり角度)としてもよい。
また、上記早撃ちゲームにおいて射撃有効判定される第2の例において、コントローラが静止状態またはコントローラの動きが所定量以下になった状態の姿勢を判定する静止姿勢判定範囲は、上記当たり判定範囲から変化させてもよい。一例として、静止姿勢判定範囲は、上記当たり判定範囲に含まれる当該当たり判定範囲より狭い範囲(例えば、上記Z軸正方向角度に対して−20°以上から20°未満の範囲)に設定してもよい。他の例として、静止姿勢判定範囲は、上記当たり判定範囲の一部と上記当たり判定範囲の外部とを含む範囲に設定してもよい。他の例における静止姿勢判定範囲は、上記当たり判定範囲と同じ大きさに設定してもよいし、上記当たり判定範囲より狭い範囲に設定してもよいし、上記当たり判定範囲より広い範囲に設定してもよい。
次に、図15〜図18を参照して、本実施形態において情報処理システム1で実行される具体的な処理の一例について説明する。図15は、本実施形態において本体装置2のDRAM85に設定されるデータ領域の一例を示す図である。なお、DRAM85には、図15に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。
DRAM85のプログラム記憶領域には、情報処理システム1で実行される各種プログラムPaが記憶される。本実施形態においては、各種プログラムPaは、上述した左コントローラ3および右コントローラ4との間で無線通信するための通信プログラムや、左コントローラ3および/または右コントローラ4から取得したデータに基づいた情報処理(例えば、ゲーム処理)を行うためのアプリケーションプログラム等が記憶される。なお、各種プログラムPaは、フラッシュメモリ84に予め記憶されていてもよいし、情報処理システム1に着脱可能な記憶媒体(例えば、第1スロット23に装着された第1の種類の記憶媒体、第2スロット24に装着された第2の種類の記憶媒体)から取得されてDRAM85に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてDRAM85に記憶されてもよい。CPU81は、DRAM85に記憶された各種プログラムPaを実行する。
また、DRAM85のデータ記憶領域には、情報処理システム1において実行される通信処理や情報処理等の処理において用いられる各種のデータが記憶される。本実施形態においては、DRAM85には、操作データDa、姿勢データDb、角速度データDc、加速度データDd、左コントローラデータDe、右コントローラデータDf、および画像データDg等が記憶される。
操作データDaは、左コントローラ3および右コントローラ4からそれぞれ適宜取得した操作データである。上述したように、左コントローラ3および右コントローラ4からそれぞれ送信される操作データには、各入力部(具体的には、各ボタン、アナログスティック、各センサ)からの入力に関する情報(具体的には、操作に関する情報、または、センサによる検出結果)が含まれている。本実施形態では、無線通信によって左コントローラ3および右コントローラ4からそれぞれ所定周期で操作データが送信されており、当該受信した操作データを用いて操作データDaが適宜更新される。なお、操作データDaの更新周期は、後述する情報処理システム1で実行される処理の周期である1フレーム毎に更新されてもよいし、上記無線通信によって操作データが送信される周期毎に更新されてもよい。
姿勢データDbは、実空間における重力加速度の方向を基準とした左コントローラ3および右コントローラ4それぞれの姿勢を示すデータである。例えば、姿勢データDbは、左コントローラ3および右コントローラ4それぞれに作用している重力加速度の方向を示すデータや、当該重力加速度方向に対するXYZ軸方向を示すデータ等を含んでいる。
角速度データDcは、左コントローラ3および右コントローラ4それぞれに生じている角速度を示すデータである。例えば、角速度データDcは、左コントローラ3および右コントローラ4それぞれに生じているXYZ軸周りの角速度を示すデータ等を含んでいる。
加速度データDdは、左コントローラ3および右コントローラ4それぞれに生じている加速度を示すデータである。例えば、加速度データDdは、左コントローラ3および右コントローラ4それぞれに生じている重力加速度を除いて、XYZ軸方向に生じている加速度を示すデータ等を含んでいる。
左コントローラデータDeは、左コントローラ3の動き、姿勢、操作状況等に関するデータであり、押下フラグデータDe1、当否判定結果データDe2、射撃時間データDe3、射撃角度データDe4、および静止時間データDe5等を含んでいる。押下フラグデータDe1は、上記当たり判定範囲に含まれる左コントローラ3の姿勢より左コントローラ3のZ軸正方向が実空間において下向きとなった姿勢でユーザが射撃操作を行った際にオンに設定される押下フラグを示すデータである。当否判定結果データDe2は、左コントローラ3を用いて行われた射撃操作が、有効な操作(相手ユーザに当たる操作)、無効な操作(相手ユーザからはずれる操作や有効時間内の射撃ではない操作等)、射撃操作なしの何れであるのかを示すデータである。射撃時間データDe3は、左コントローラ3を用いて射撃操作が行われた射撃時間を示すデータである。射撃角度データDe4は、射撃が行われた際の左コントローラ3の射撃方向(当たりの場合は当たり角度、はずれの場合ははずれ角度)を示すデータである。静止時間データDe5は、左コントローラ3の動きが所定量以下になる状態が連続している時間(静止時間)を示すデータである。
右コントローラデータDfは、右コントローラ4の動き、姿勢、操作状況等に関するデータであり、押下フラグデータDf1、当否判定結果データDf2、射撃時間データDf3、射撃角度データDf4、および静止時間データDf5等を含んでいる。押下フラグデータDf1は、上記当たり判定範囲に含まれる右コントローラ4の姿勢より右コントローラ4のZ軸正方向が実空間において下向きとなった姿勢でユーザが射撃操作を行った際にオンに設定される押下フラグを示すデータである。当否判定結果データDf2は、右コントローラ4を用いて行われた射撃操作が有効な操作(相手ユーザに当たる操作)、無効な操作(相手ユーザからはずれる操作や有効時間内の射撃ではない操作等)、射撃操作なしの何れであるのかを示すデータである。射撃時間データDf3は、右コントローラ4を用いて射撃操作が行われた射撃時間を示すデータである。射撃角度データDf4は、射撃が行われた際の右コントローラ4の射撃方向(当たりの場合は当たり角度、はずれの場合ははずれ角度)を示すデータである。静止時間データDf5は、右コントローラ4の動きが所定量以下になる状態が連続している時間(静止時間)を示すデータである。
画像データDpは、ゲームの際に本体装置2のディスプレイ12に画像(例えば、仮想オブジェクトの画像、射撃結果を示す画像、背景画像)を表示するためのデータである。
次に、本実施形態における情報処理(ゲーム処理)の詳細な一例を説明する。図16は、情報処理システム1で実行されるゲーム処理の一例を示すフローチャートである。図17および図18は、図16におけるステップS151において行われる射撃操作判定処理の詳細の一例を示すサブルーチンである。本実施形態においては、図16〜図18に示す一連の処理は、CPU81が各種プログラムPaに含まれる通信プログラムや所定のアプリケーションプログラム(ゲームプログラム)を実行することによって行われる。また、図16〜図18に示すゲーム処理が開始されるタイミングは任意である。
なお、図16〜図18に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU81が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU81以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置2において実行される処理の一部は、本体装置2と通信可能な他の情報処理装置(例えば、本体装置2とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、図16〜図18に示す各処理は、本体装置2を含む複数の情報処理装置が協働することによって実行されてもよい。
図16において、CPU81は、ゲーム処理における初期設定を行い(ステップS141)、次のステップに処理を進める。例えば、上記初期設定では、CPU81は、以下に説明する処理を行うためのパラメータを初期化する。
次に、CPU81は、左コントローラ3および右コントローラ4から操作データを取得して操作データDaを更新し(ステップS142)、次のステップに処理を進める。
次に、CPU81は、左コントローラ3および右コントローラ4それぞれの姿勢、角速度、加速度を算出し(ステップS143)、次のステップに処理を進める。例えば、CPU81は、左コントローラ3および右コントローラ4それぞれに生じている加速度を示すデータを操作データDaから取得し、左コントローラ3および右コントローラ4それぞれに作用している重力加速度の方向を算出して、当該方向を示すデータを用いて姿勢データDbを更新する。重力加速度を抽出する方法については任意の方法を用いればよく、例えば左コントローラ3および右コントローラ4それぞれに平均的に生じている加速度成分を算出して当該加速度成分を重力加速度として抽出してもよい。そして、CPU81は、左コントローラ3に対して算出された重力加速度の方向を基準とした左コントローラ3のXYZ軸方向を左コントローラ3の姿勢として算出し、当該姿勢を示すデータを用いて姿勢データDbを更新する。また、CPU81は、右コントローラ4に対して算出された重力加速度の方向を基準とした右コントローラ4のXYZ軸方向を右コントローラ4の姿勢として算出し、当該姿勢を示すデータを用いて姿勢データDbを更新する。また、CPU81は、左コントローラ3および右コントローラ4それぞれに生じている角速度を示すデータを操作データDaから取得し、左コントローラ3および右コントローラ4それぞれのXYZ軸周りの角速度を算出して、当該角速度を示すデータを用いて角速度データDcを更新する。さらに、CPU81は、左コントローラ3および右コントローラ4それぞれに生じている加速度を示すデータを操作データDaから取得し、左コントローラ3および右コントローラ4それぞれに生じているXYZ軸方向の加速度から上記重力加速度成分を除去して、当該除去後の加速度を示すデータを用いて加速度データDdを更新する。
なお、左コントローラ3や右コントローラ4の姿勢については、重力加速度を基準としたXYZ軸方向が算出された以降は、XYZ各軸周りの角速度のみに応じて更新してもよい。しかしながら、左コントローラ3や右コントローラ4の姿勢と重力加速度の方向との関係が誤差の累積によってずれていくことを防止するために、所定周期毎に重力加速度の方向に対するXYZ軸方向を算出して左コントローラ3や右コントローラ4の姿勢を補正してもよい。
次に、CPU81は、現時点が早撃ちゲームにおいて射撃を始める準備期間か否かを判断する(ステップS144)。そして、CPU81は、現時点が射撃の準備期間である場合、ステップS145に処理を進める。一方、CPU81は、現時点が射撃の準備期間でない場合、ステップS148に処理を進める。
ステップS145において、CPU81は、左コントローラ3および右コントローラ4のZ軸正方向角度を算出し、次のステップに処理を進める。例えば、CPU81は、姿勢データDbを参照して、重力加速度方向に対する左コントローラ3のZ軸正方向を取得し、実空間の水平方向に対するZ軸正方向の差角(仰角の角度を正の角度とし俯角の角度を負の角度とする)を、左コントローラ3のZ軸正方向角度として算出する。また、CPU81は、姿勢データDbを参照して、重力加速度方向に対する右コントローラ4のZ軸正方向を取得し、実空間の水平方向に対するZ軸正方向の差角を、右コントローラ4のZ軸正方向角度として算出する。
次に、CPU81は、左コントローラ3および右コントローラ4の姿勢が何れも準備判定範囲内に含まれているか否かを判定する(ステップS146)。例えば、CPU81は、上記ステップS145において算出された左コントローラ3および右コントローラ4のZ軸正方向角度が、何れも予め設定された準備判定範囲(例えば、Z軸正方向角度が−35°未満)に含まれる場合、上記ステップS146において肯定判定する。そして、CPU81は、左コントローラ3および右コントローラ4の姿勢の何れかが準備判定範囲内に含まれていない場合、ステップS147に処理を進める。一方、CPU81は、左コントローラ3および右コントローラ4の姿勢の何れも準備判定範囲内に含まれている場合、ステップS148に処理を進める。
ステップS147において、CPU81は、左コントローラ3および右コントローラ4の姿勢を準備姿勢にするように促す報知を行い、ステップS149に処理を進める。例えば、CPU81は、早撃ちゲームを開始する準備をするための操作指示「コントローラを下に向けて準備してください」を本体装置2に表示するとともに、本体装置2から当該操作指示を示す音声を出力することによって(図10参照)、左コントローラ3および右コントローラ4の姿勢を準備姿勢にするように促す報知を行う。
一方、ステップS148において、CPU81は、左コントローラ3および右コントローラ4を用いて射撃操作する射撃用意を促す報知を行い、ステップS149に処理を進める。例えば、CPU81は、射撃操作を行うタイミングが迫っていることを示す報知「用意!」を本体装置2に表示するとともに、本体装置2から当該報知を示す音声を出力することによって、射撃用意を促す報知を行う。
なお、上記早撃ちゲームにおいて射撃を始める準備期間において、ユーザが左コントローラ3または右コントローラ4を用いて射撃操作を行った場合、当該ユーザはフライングしたとして失格判定される。この場合、上記ユーザがフライングしたことを示す画像を本体装置2に表示した後に準備期間をやり直してもいいし、上記フライングによって射撃判定結果が確定したとして後述するステップS153における射撃結果表示処理を行ってもよい。
ステップS149において、現時点が早撃ちゲームにおいて射撃を行う始める射撃期間か否かを判断する。そして、CPU81は、現時点が射撃期間である場合、ステップS150に処理を進める。一方、CPU81は、現時点が射撃期間でない場合、ステップS152に処理を進める。
ステップS150において、CPU81は、左コントローラ3および右コントローラ4を用いた射撃操作を促す報知を行い、次のステップに処理を進める。例えば、CPU81は、上記早撃ちゲームを開始する旨を報知するための操作指示「撃て!」を本体装置2に表示するとともに、本体装置2から当該操作指示を示す音声を出力することによって(図11参照)、左コントローラ3および右コントローラ4を用いた射撃操作を促す報知を行う。
次に、CPU81は、射撃操作判定処理を行い(ステップS151)、ステップS152に処理を進める。以下、図17および図18を参照して、上記ステップS151で行われる射撃操作判定処理について説明する。
図17において、CPU81は、射撃操作判定処理の対象とするコントローラを選択して(ステップS161)、次のステップに処理を進める。例えば、CPU81は、本処理フレームにおいて射撃操作判定処理を行っていない、かつ射撃判定結果が確定していないコントローラ(すなわち、左コントローラ3または右コントローラ4)を選択して、以降の処理における処理対象のコントローラとして設定する。
次に、CPU81は、押下フラグがオンされているか否かを判定する(ステップS162)。例えば、CPU81は、処理対象のコントローラに対応する押下フラグデータDe1またはDf1を参照して、押下フラグがオンに設定されているか否かを判定する。そして、CPU81は、処理対象のコントローラに対応する押下フラグがオフに設定されている場合、ステップS163に処理を進める。一方、CPU81は、処理対象のコントローラに対応する押下フラグがオンに設定されている場合、ステップS181(図18参照)に処理を進める。
ステップS163において、CPU81は、射撃操作が行われたか否かを判定する。例えば、CPU81は、操作データDaを参照して、処理対象のコントローラに対して所定の操作(例えば、ZLボタン39またはZRボタン61を押下する操作)が行われた場合、上記ステップS163において肯定判定する。そして、CPU81は、処理対象のコントローラに対して射撃操作が行われた場合、ステップS164に処理を進める。一方、CPU81は、処理対象のコントローラに対して射撃操作が行われていない場合、ステップS173に処理を進める。
ステップS164において、CPU81は、処理対象のコントローラのZ軸正方向角度を算出し、次のステップに処理を進める。例えば、CPU81は、姿勢データDbを参照して、重力加速度方向に対する処理対象のコントローラのZ軸正方向を取得し、実空間の水平方向に対するZ軸正方向の差角(仰角の角度を正の角度とし俯角の角度を負の角度とする)を処理対象のコントローラのZ軸正方向角度として算出する。
次に、CPU81は、処理対象のコントローラの姿勢が当たり判定範囲内に含まれているか否かを判定する(ステップS165)。例えば、CPU81は、上記ステップS164において算出された処理対象のコントローラのZ軸正方向角度が、予め設定された当たり判定範囲(例えば、Z軸正方向角度が−30°以上、30°未満)に含まれる場合、上記ステップS165において肯定判定する。そして、CPU81は、処理対象のコントローラの姿勢が当たり判定範囲内に含まれている場合、ステップS166に処理を進める。一方、CPU81は、処理対象のコントローラの姿勢が当たり判定範囲内に含まれていない場合、ステップS168に処理を進める。
ステップS166において、CPU81は、射撃時間を算出し、次のステップに処理を進める。例えば、CPU81は、上記ステップS150における射撃操作指示が開始されてから現時点までの経過時間を射撃時間として算出し、当該射撃時間を用いて処理対象のコントローラの射撃時間データDe3またはDf3を更新する。
次に、CPU81は、処理対象のコントローラの射撃判定結果を当たりに確定し(ステップS167)、ステップS168に処理を進める。例えば、CPU81は、処理対象のコントローラの射撃判定結果を当たり(射撃操作が有効)に確定して、当該射撃判定結果を用いて処理対象のコントローラの当否判定結果データDe2またはDf2を更新する。また、CPU81は、上記ステップS164で算出されたZ軸正方向角度を当たり角度として設定し、当該当たり角度を用いて処理対象のコントローラの射撃角度データDe4またはDf4を更新する。
ステップS168において、CPU81は、処理対象のコントローラの姿勢が上方範囲内に含まれているか否かを判定する。例えば、CPU81は、上記ステップS164において算出された処理対象のコントローラのZ軸正方向角度が、予め設定された上方範囲(上記当たり判定範囲の仰角側全域を示す範囲であって、例えばZ軸正方向角度が30°以上)に含まれる場合、上記ステップS168において肯定判定する。そして、CPU81は、処理対象のコントローラの姿勢が上方範囲内に含まれている場合、ステップS169に処理を進める。一方、CPU81は、処理対象のコントローラの姿勢が上方範囲内に含まれていない場合、ステップS170に処理を進める。
ステップS169において、CPU81は、処理対象のコントローラの射撃判定結果をはずれに確定して、ステップS170に処理を進める。例えば、CPU81は、処理対象のコントローラの射撃判定結果をはずれ(射撃操作が無効)に確定して、当該射撃判定結果を用いて処理対象のコントローラの当否判定結果データDe2またはDf2を更新する。また、CPU81は、上記ステップS164で算出されたZ軸正方向角度をはずれ角度として設定し、当該はずれ角度を用いて処理対象のコントローラの射撃角度データDe4またはDf4を更新する。
ステップS170において、CPU81は、処理対象のコントローラの姿勢が下方範囲内に含まれているか否かを判定する。例えば、CPU81は、上記ステップS164において算出された処理対象のコントローラのZ軸正方向角度が、予め設定された下方範囲(上記当たり判定範囲の俯角側全域を示す範囲であって、例えばZ軸正方向角度が−30°未満)に含まれる場合、上記ステップS170において肯定判定する。そして、CPU81は、処理対象のコントローラの姿勢が下方範囲内に含まれている場合、ステップS171に処理を進める。一方、CPU81は、処理対象のコントローラの姿勢が下方範囲内に含まれていない場合、ステップS175に処理を進める。
ステップS171において、CPU81は、射撃時間を算出し、次のステップに処理を進める。例えば、CPU81は、上記ステップS150における射撃操作指示が開始されてから現時点までの経過時間を射撃時間として算出し、当該射撃時間を用いて処理対象のコントローラの射撃時間データDe3またはDf3を更新する。
次に、CPU81は、押下フラグをオンに設定し(ステップS172)、ステップS175に処理を進める。例えば、CPU81は、処理対象のコントローラの押下フラグをオンに設定して、処理対象のコントローラの押下フラグデータDe1またはDf1を更新する。
一方、上記ステップS163において射撃操作が行われていないと判定された場合、CPU81は、判定時間が終了したか否かを判定する(ステップS173)。例えば、CPU81は、上記ステップS150における射撃操作指示が開始されてから現時点までの経過時間が所定の判定時間に到達した場合、判定時間が終了したと判定する。そして、CPU81は、判定時間が終了した場合、ステップS174に処理を進める。一方、CPU81は、判定時間が終了していない場合、ステップS175に処理を進める。
ステップS174において、CPU81は、処理対象のコントローラの射撃判定結果を射撃操作なしに確定して、ステップS175に処理を進める。例えば、CPU81は、処理対象のコントローラの射撃判定結果を射撃操作なしに確定して、当該射撃判定結果を用いて処理対象のコントローラの当否判定結果データDe2またはDf2を更新する。
ステップS175において、CPU81は、射撃操作判定処理が未処理のコントローラがあるか否かを判定する。例えば、CPU81は、本処理フレームにおいて射撃操作判定処理を行っていない、かつ射撃結果が確定していないコントローラが残っている場合、上記ステップS161に戻って別のコントローラを処理対象とした射撃操作判定処理を行う。一方、CPU81は、全てのコントローラが本処理フレームにおいて射撃操作判定処理が行われている、または射撃判定結果が確定している場合、当該サブルーチンによる処理を終了する。
図18に進み、上記ステップS162において、押下フラグがオンに設定されていると判定された場合、CPU81は、処理対象のコントローラのZ軸正方向角度を算出し(ステップS181)、次のステップに処理を進める。なお、上記ステップS181における処理は、上述したステップS164の処理と同様であるため、ここでは詳細な説明を省略する。
次に、CPU81は、処理対象のコントローラが静止状態にあるか否かを判定する(ステップS182)。例えば、CPU81は、上記ステップS181において今回算出された処理対象のコントローラのZ軸正方向角度と前回算出された処理対象のコントローラのZ軸正方向角度とを比較して、所定範囲内(例えば、±10°以内)にある場合、処理対象のコントローラが静止状態にあると判定する。そして、CPU81は、処理対象のコントローラが静止状態にある場合、ステップS183に処理を進める。一方、CPU81は、処理対象のコントローラが静止状態にない場合、ステップS188に処理を進める。
ステップS183において、CPU81は、静止時間を算出し、次のステップに処理を進める。例えば、CPU81は、処理対象のコントローラに対する直前のZ軸正方向角度の履歴を参照して、現時点から遡って連続して所定範囲内(例えば、±10°以内)にあるZ軸正方向角度データを抽出する。そして、上記所定範囲内となっているZ軸正方向角度のデータ数(フレーム数)を静止時間として、当該静止時間を用いて処理対象のコントローラの静止時間データDe5またはDf5を更新する。
次に、CPU81は、処理対象のコントローラにおける上記静止状態の姿勢が当たり判定範囲内に含まれているか否かを判定する(ステップS184)。例えば、CPU81は、上記ステップS183において静止時間が算出される対象となったZ軸正方向角度の履歴が上記当たり判定範囲に全て含まれる場合、上記ステップS184において肯定判定する。そして、CPU81は、処理対象のコントローラにおける静止状態の姿勢が当たり判定範囲内に含まれている場合、ステップS185に処理を進める。一方、CPU81は、処理対象のコントローラにおける静止状態の姿勢が当たり判定範囲内に含まれていない場合、ステップS188に処理を進める。
ステップS185において、CPU81は、静止判定時間に到達したか否かを判定する。例えば、CPU81は、上記ステップS183において算出された静止時間が、予め定められた静止判定時間(例えば、5フレーム)に到達した場合、処理対象のコントローラが静止判定時間に到達したと判定する。そして、CPU81は、処理対象のコントローラが静止判定時間に到達した場合、ステップS186に処理を進める。一方、CPU81は、処理対象のコントローラが静止判定時間に到達した場合、当該サブルーチンによる処理を終了する。
ステップS186において、CPU81は、処理対象のコントローラの射撃判定結果を当たりに確定し、次のステップに処理を進める。例えば、CPU81は、処理対象のコントローラの射撃判定結果を当たり(射撃操作が有効)に確定して、当該射撃判定結果を用いて処理対象のコントローラの当否判定結果データDe2またはDf2を更新する。また、CPU81は、当たり判定範囲内におけるランダムな値を当たり角度として設定し、当該当たり角度を用いて処理対象のコントローラの射撃角度データDe4またはDf4を更新する。
次に、CPU81は、押下フラグをオフに設定し(ステップS187)、当該サブルーチンによる処理を終了する。例えば、CPU81は、処理対象のコントローラの押下フラグをオフに設定して、処理対象のコントローラの押下フラグデータDe1またはDf1を更新する。
一方、上記ステップS182において、処理対象のコントローラが静止状態にないと判定された場合、または上記ステップS184において処理対象のコントローラの姿勢が当たり判定範囲内にないと判定された場合、CPU81は、静止判定を終了するか否かを判定する(ステップS188)。例えば、CPU81は、上記ステップS172において、処理対象のコントローラの押下フラグがオンされてから現時点までの経過時間が所定の静止判定時間(例えば、20フレーム)以上である場合、静止判定を終了すると判定する。そして、CPU81は、静止判定を終了する場合、ステップS189に処理を進める。一方、CPU81は、静止判定を継続する場合、当該サブルーチンによる処理を終了する。
ステップS189において、CPU81は、処理対象のコントローラの射撃判定結果をはずれに確定して、次のステップに処理を進める。例えば、CPU81は、処理対象のコントローラの射撃判定結果をはずれ(射撃操作が無効)に確定して、当該射撃判定結果を用いて処理対象のコントローラの当否判定結果データDe2またはDf2を更新する。また、CPU81は、上記ステップS164で算出されたZ軸正方向角度(すなわち、射撃操作された際のZ軸正方向角度)をはずれ角度として設定し、当該はずれ角度を用いて処理対象のコントローラの射撃角度データDe4またはDf4を更新する。
次に、CPU81は、押下フラグをオフに設定し(ステップS190)、当該サブルーチンによる処理を終了する。例えば、CPU81は、処理対象のコントローラの押下フラグをオフに設定して、処理対象のコントローラの押下フラグデータDe1またはDf1を更新する。
図16に戻り、ステップS152において、CPU81は、全てのコントローラに対する射撃操作判定処理が終了したか否かを判定する。例えば、CPU81は、当否判定結果データDe2およびDf2を参照して、左コントローラ3および右コントローラ4に対する射撃判定結果が両方ともに確定している場合、上記ステップS152において肯定判定する。そして、CPU81は、全てのコントローラに対する射撃操作判定処理が終了している場合、ステップS153に処理を進める。一方、CPU81は、コントローラの何れかに対する射撃操作判定処理が終了していない場合、ステップS154に処理を進める。
ステップS153において、CPU81は、射撃結果を表示する処理を行い、ステップS154に処理を進める。例えば、CPU81は、左コントローラデータDeの当否判定結果データDe2および射撃時間データDe3と、右コントローラデータDfの当否判定結果データDf2および射撃時間データDf3とを比較して、当たり判定され、かつ射撃時間が短い方を勝者として判定する。そして、CPU81は、どちらのユーザが勝者なのかを示す画像を本体装置2に表示するとともに、どちらのユーザが勝者なのかを示す音声を本体装置2から出力する。また、CPU81は、左コントローラデータDeの射撃時間データDe3および右コントローラデータDfの射撃時間データDf3に基づいて、ユーザそれぞれの射撃時間を示す文字画像を本体装置2に表示する。さらに、CPU81は、左コントローラデータDeの射撃角度データDe4および、右コントローラデータDfの射撃角度データDf4に基づいて、当たり角度を示す拳銃オブジェクト画像をそれぞれ本体装置2に表示する(図12参照)。なお、上記準備期間において、何れかのユーザがフライング判定されることによって射撃判定結果が確定している場合、当該フライングしたユーザが失格したことを示す画像を本体装置2に表示するとともに、フライングしたユーザを示す音声を本体装置2から出力してもよい。
ステップS154において、CPU81は、ゲームを終了するか否かを判定する。上記ステップS154においてゲームを終了する条件としては、例えば、上記射撃結果を表示する時間が満了したことや、ユーザがゲームを終了する操作を行ったこと等がある。CPU81は、ゲームを終了しない場合に上記ステップS142に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。以降、ステップS142〜ステップS154の一連の処理は、ステップS154でゲームを終了すると判定されるまで繰り返し実行される。
このように、本実施例においては、左コントローラ3または右コントローラ4の姿勢と当該左コントローラ3または右コントローラ4を用いた所定の指示操作とに応じて、当該姿勢が当たり判定範囲に含まれる状態で当該指示操作が行われた場合に当該指示操作が成功したと判定される。そして、本実施例においては、左コントローラ3または右コントローラ4の姿勢が当たり判定範囲に含まれていない状態で指示操作された場合であっても、静止を確認する時間内に当たり判定範囲に含まれる姿勢で当該左コントローラ3または右コントローラ4が静止した場合は、当該指示操作が成功したと判定される。したがって、指示操作が成功するために要求される入力装置の姿勢条件が緩和されるため、ユーザに要求する操作を容易にすることができる。例えば、一般的にコントローラに設けられた操作ボタンを押下する操作は、ユーザにとって非常に慣れた操作の1つであり、操作ボタンが押下する操作抵抗自体も非常に軽微なものであるために、ユーザが意図するタイミングより早く押下操作してしまうことがあり得る。このような場合、ユーザが意図している操作タイミングより早いタイミングで操作判定されて無効な操作とされてしまうことがあり、ユーザの不満が残ることが考えられる。しかしながら、本実施例においては、このようなユーザが意図せずに操作タイミングが早くなる現象が生じたとしても、その後のコントローラの動きによってユーザが意図する操作タイミングに救済判定されるため、ユーザおける操作判定の不満感を解消することができる。
なお、上述した実施例では、左コントローラ3のZLボタン39を押下操作することや、右コントローラ4のZRボタン61を押下操作することによって指示操作(射撃操作)される例を用いたが、他の操作ボタンを操作することによって当該指示操作が行われてもよい。例えば、左コントローラ3の第1Lボタン38や右コントローラ4の第1Rボタン60を押下操作することによって上記指示操作が行われてもよい。また、左コントローラ3のZLボタン39を押下操作した場合に加えて第1Lボタン38を押下操作した場合も指示操作(射撃操作)として認識され、右コントローラ4のZRボタン61を押下操作した場合に加えて第1Rボタン60を押下操作した場合も指示操作(射撃操作)として認識されてもよい。この場合、ユーザは、自分自身の操作のしやすさに応じて、指示操作するための操作ボタンを選択することが可能となる。
また、操作ボタンを押下するだけでなく、他の操作方法によって上記指示操作が行われる態様であってもよい。一例として、操作ボタンを離す操作によって上記指示動作が行われてもよいし、タッチパネルやタッチパットをタッチオンしたりタッチオフしたりすることによって上記指示操作が行われてもよい。他の例として、左コントローラ3や右コントローラ4に生じている加速度の大きさが所定の閾値以上となる操作を上記指示操作としてもよい。例えば、左コントローラ3および右コントローラ4の一方の加速度の大きさが閾値以上となる操作を上記指示操作とし、他方の姿勢によって判定を行うことができる。このようにして、例えば剣と盾によって敵の攻撃をタイミングよく防ぎながら攻撃を加えるゲーム等を実施することができる。
また、上述した実施例では、コントローラを振り上げることによって当たり判定範囲に含まれる姿勢とするゲーム例を用いているが、コントローラを他の方向に振るゲームであってもよいことは言うまでもない。
第1の例として、コントローラを振り上げた状態から振り下ろすことによって、当該コントローラが所定の有効範囲内の姿勢になった時点で指示操作を行うようなゲームでもよい。この場合、上記有効範囲より仰角側からコントローラが振り下ろされることになるが、当該有効範囲に含まれるコントローラの姿勢より当該コントローラのZ軸正方向が実空間において上向きとなった姿勢(有効範囲の仰角側範囲に含まれるコントローラの姿勢)でユーザが指示操作を行ったとしても、当該有効範囲内で指示操作されたと判定されることがあり得る。すなわち、上記有効範囲の仰角側範囲に含まれるコントローラの姿勢で指示操作された後の静止確認期間中に、当該コントローラが静止状態または静止状態に準ずる状態となり、当該状態におけるコントローラの姿勢が上記有効範囲内であれば、当該指示操作も当該有効範囲内で指示操作されたと判定される。
第2の例として、コントローラを左にヨーしたりロールしたりすることによって、当該コントローラが所定の有効範囲内の姿勢になった時点で指示操作を行うようなゲームでもよい。この場合、上記有効範囲より右側からコントローラを動かすことになるが、当該有効範囲に含まれるコントローラの姿勢より当該コントローラのZ軸正方向が実空間において右向きとなった姿勢やコントローラのX軸正方向やY軸正方向が実空間において右に傾いている姿勢(有効範囲の右側範囲に含まれるコントローラの姿勢)でユーザが指示操作を行ったとしても、当該有効範囲内で指示操作されたと判定されることがあり得る。すなわち、上記有効範囲の右側範囲に含まれるコントローラの姿勢で指示操作された後の静止確認期間中に、当該コントローラが静止状態または静止状態に準ずる状態となり、当該状態におけるコントローラの姿勢が上記有効範囲内であれば、当該指示操作も当該有効範囲内で指示操作されたと判定される。
第3の例として、コントローラを右にヨーしたりロールしたりすることによって、当該コントローラが所定の有効範囲内の姿勢になった時点で指示操作を行うようなゲームでもよい。この場合、上記有効範囲より左側からコントローラを動かすことになるが、当該有効範囲に含まれるコントローラの姿勢より当該コントローラのZ軸正方向が実空間において左向きとなった姿勢やコントローラのX軸正方向やY軸正方向が実空間において左に傾いている姿勢(有効範囲の左側範囲に含まれるコントローラの姿勢)でユーザが指示操作を行ったとしても、当該有効範囲内で指示操作されたと判定されることがあり得る。すなわち、上記有効範囲の左側範囲に含まれるコントローラの姿勢で指示操作された後の静止確認期間中に、当該コントローラが静止状態または静止状態に準ずる状態となり、当該状態におけるコントローラの姿勢が上記有効範囲内であれば、当該指示操作も当該有効範囲内で指示操作されたと判定される。
第4の例として、コントローラを前に動かすことによって、当該コントローラが所定の有効範囲内の位置になった時点で指示操作を行うようなゲームでもよい。この場合、上記有効範囲より手前側からコントローラを動かすことになるが、当該有効範囲に含まれるコントローラの位置より実空間において手前の位置(有効範囲の手前側範囲に含まれるコントローラの位置)でユーザが指示操作を行ったとしても、当該有効範囲内で指示操作されたと判定されることがあり得る。すなわち、上記有効範囲の手前側範囲に含まれるコントローラの位置で指示操作された後の静止確認期間中に、当該コントローラが静止状態または静止状態に準ずる状態となり、当該状態におけるコントローラの位置が上記有効範囲内であれば、当該指示操作も当該有効範囲内で指示操作されたと判定される。
第5の例として、コントローラを後に動かすことによって、当該コントローラが所定の有効範囲内の位置になった時点で指示操作を行うようなゲームでもよい。この場合、上記有効範囲より向こう側からコントローラを動かすことになるが、当該有効範囲に含まれるコントローラの位置より実空間において向こう側位置(有効範囲の向こう側範囲に含まれるコントローラの位置)でユーザが指示操作を行ったとしても、当該有効範囲内で指示操作されたと判定されることがあり得る。すなわち、上記有効範囲の向こう側範囲に含まれるコントローラの位置で指示操作された後の静止確認期間中に、当該コントローラが静止状態または静止状態に準ずる状態となり、当該状態におけるコントローラの位置が上記有効範囲内であれば、当該指示操作も当該有効範囲内で指示操作されたと判定される。
また、上述した実施例において、左コントローラ3や右コントローラ4の動きや姿勢を検出する方法については、単なる一例であって、他の方法や他のデータを用いて左コントローラ3や右コントローラ4の動きや姿勢を検出してもよい。例えば、左コントローラ3や右コントローラ4の姿勢を、当該左コントローラ3や右コントローラ4に生じる角速度のみで算出、または当該左コントローラ3や右コントローラ4に生じる角速度と加速度とを組み合わせて算出しているが、当該左コントローラ3や右コントローラ4に生じる加速度のみで姿勢を算出してもかまわない。左コントローラ3や右コントローラ4に生じる加速度のみ検出する場合であっても、左コントローラ3や右コントローラ4に生じる重力加速度が生じている方向を算出可能であり、当該重力加速度を基準としたZ軸正方向の角度を逐次算出すれば上述した実施例と同様の処理が可能であることは言うまでもない。また、上述した実施例では、左コントローラ3や右コントローラ4を用いた操作に応じたゲーム画像を本体装置2のディスプレイ12に表示しているが、クレードルを介して据置型モニタに表示してもよい。また、上述した実施例で用いるコントローラは、左コントローラ3および右コントローラ4だけでなく、他のコントローラが組み合わせられてゲーム処理されたり、他のコントローラだけでゲーム処理されたりしてもよい。
また、上述した実施例では、2人のユーザが拳銃を早撃ちする時間を競うゲームを用いたが、他のゲームも適用可能であることもできることは言うまでもない。例えば、ボーリングゲーム、バスケットボールゲーム、射撃ゲーム、剣や刀等を振って戦ってボタン操作を加えることによって特殊なアクションが行われるゲーム等も本願発明に適用可能である。例えば、射撃ゲームの場合、左コントローラ3や右コントローラ4の姿勢に応じて、表示画面に対して指し示されている位置を算出し、所定の操作ボタンが押下された場合に当該位置に向かって弾が飛ぶようなゲームが考えられる。このような射撃ゲームでは、表示画面上で移動する仮想オブジェクトを射撃対象物とする場合、射撃操作した時点では当該射撃対象物が射撃位置となっていたとしてもその後の当該射撃対象物の移動によって外れることが考えられる。本願発明では、このような射撃においても、上記射撃操作後において移動する上記射撃対象物上および/またはその周辺を指し示すように、左コントローラ3や右コントローラ4が所定時間以内に静止状態となった場合は、当該射撃対象物に弾が当たるように弾の軌道を制御することができる。また、3人以上のユーザがプレイするゲームであっても、それぞれのユーザが操作するコントローラに対する指示操作をそれぞれ同様に判定することによって、本願発明に適用することもできる。
また、上述した実施例では、本願の実施例をゲーム処理に適用する例を用いたが、ゲーム以外の情報処理に適用してもよい。例えば、本願の他の実施例として、操作装置としてマウスを用いることが考えられる。具体的には、マウスの移動に応じて表示画面上を移動するカーソルを用いて、当該表示画面に表示された複数の選択肢から選択する操作を考える。一例として、複数の選択肢のうち、1つの選択肢の一部と重なるように上記カーソルをマウスで移動させ、当該マウスを左クリック操作することによって当該1つの選択肢を選択する情報処理が行われる。このとき、本願の他の実施例では、上記カーソルが何れの選択肢上に重なっていない状態で左クリック操作が行われた場合であっても、何れかの選択肢を選択する情報処理を可能とする。すなわち、上記カーソルが何れの選択肢上に重なっていない当該カーソルの移動中に左クリック操作が行われた場合、当該左クリック操作から所定時間以内に何れかの選択肢上において当該カーソルが停止した場合、当該選択肢を選択する情報処理が行われる。
なお、上述した本願の他の実施例は、マウスを動かすことによって制御される表示画面上の位置パラメータがある選択肢の範囲外となった状態で指示操作(左クリック操作)された場合でも当該選択肢が選択される例を用いたが、他の操作装置であってもよい。例えば、本願の他の実施例は、ジャイロセンサによって検出される角速度に基づいて遠隔ポインティング操作可能なポインティングデバイスを操作装置としてもよい。この場合、上記ポインティングデバイスの姿勢がある表示物の範囲外を指し示す姿勢で指示操作(ポインティング操作)された場合でも、当該指示操作から所定時間以内に当該表示物の範囲内を指し示す姿勢で上記ポインティングデバイスの姿勢が静止状態となった場合は、当該表示物をポインティングする処理が行われる。
また、情報処理システム1は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器(PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ、タブレット等)等であってもよい。
また、上述した説明では情報処理(ゲーム処理)を情報処理システム1でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、情報処理システム1がさらに他の装置(例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末)と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理(ゲーム処理)は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、情報処理システム1のCPU81が所定のプログラムを実行することによって情報処理を行うことが可能であるが、情報処理システム1が備える専用回路によって上記処理の一部または全部が行われてもよい。
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置(据置型のゲーム装置)と携帯型の情報処理装置(携帯型のゲーム装置)との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じて情報処理システム1に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。