(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
(51)【国際特許分類】
A63F 13/525 20140101AFI20241001BHJP
A63F 13/837 20140101ALI20241001BHJP
【FI】
A63F13/525
A63F13/837
(21)【出願番号】P 2020103108
(22)【出願日】2020-06-15
【審査請求日】2023-05-10
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(73)【特許権者】
【識別番号】504440133
【氏名又は名称】株式会社ポケモン
(74)【代理人】
【識別番号】100158780
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【氏名又は名称】小沢 昌弘
(72)【発明者】
【氏名】中口 健一
(72)【発明者】
【氏名】北田 和将
【審査官】前地 純一郎
(56)【参考文献】
【文献】特開2012-170648(JP,A)
【文献】特開2011-255119(JP,A)
【文献】[分析] ニンテンドースイッチのジャイロ操作はなぜ画期的なのか?FPS/TPSにおける視点移動問題とその解決法,GAME LIFE HACK[online],2017年09月10日,インターネット<URL:https://gamelifehack.hatenablog.com/entry/2017/09/10/100000>,[2024年3月8日検索]
【文献】プレイガイド 基礎知識や操作方法,RAGON QUEST X 目覚めし冒険者の広場(WaybackMachine)[online],2019年10月23日,インターネット<URL:https://web.archive.org/web/20191023164049/https://hiroba.dqx.jp/sc/public/playguide/guide_2_1_ns/>,[2024年3月8日検索]
【文献】基本操作,Cities in Motion 2 攻略[online],2013年08月16日,インターネット<URL:https://citiesinmotion2.wiki.fc2.com/wiki/基本操作>,[2024年3月8日検索]
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-13/98
A63F 9/24
(57)【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記コンピュータを、
画面に表示される表示用画像を生成するために、仮想空間を仮想カメラにより撮像する撮像手段と、
第1入力手段によるポインタ操作に基づき、前記画面に表示されるポインタの位置を変更するポインタ操作処理を行うポインタ操作手段と、
第2入力手段による第1カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第1カメラ操作手段と、
慣性センサを用いた第3入力手段による第2カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第2カメラ操作手段と、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間に前記第2カメラ操作が行われた場合、当該ポインタ操作に基づく前記ポインタ操作処理および当該第1カメラ操作に基づく前記カメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量の絶対値を減少させる変更量決定手段と
、
前記画面内で、前記ポインタが移動可能な範囲を示す可動範囲を設定する可動範囲設定手段と、
前記ポインタが前記可動範囲の端部に位置する場合に、前記第1入力手段による当該可動範囲の端部から当該可動範囲の外部への方向を指示する操作である端部操作が行われたときは、当該端部操作の方向に応じて前記仮想カメラの位置または撮像方向を変更する端部操作処理手段として機能させ
、
前記変更量決定手段は、
前記第1カメラ操作が行われずに第1操作量の前記端部操作が行われた場合、前記仮想カメラの位置または撮像方向を第1軸成分において第1変更量だけ変更し、
前記端部操作が行われずに第2操作量の前記第1カメラ操作が行われた場合、前記仮想カメラの位置または撮像方向を前記第1軸成分において第2変更量だけ変更し、
前記第1操作量の前記端部操作と前記第2操作量の前記第1カメラ操作とが同時に行われた場合、前記仮想カメラの位置または撮像方向の変更量を、前記第1変更量の前記第1軸成分と前記第2変更量の当該第1軸成分がともに正であるときは、当該第1軸成分において前記第1変更量および前記第2変更量の何れよりも大きい第3変更量とし、ともに負であるときは、当該第1軸成分において前記第1変更量および前記第2変更量の何れよりも小さい第3変更量とする、情報処理プログラム。
【請求項2】
情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記コンピュータを、
画面に表示される表示用画像を生成するために、仮想空間を仮想カメラにより撮像する撮像手段と、
第1入力手段によるポインタ操作に基づき、前記画面に表示されるポインタの位置を変更するポインタ操作処理を行うポインタ操作手段と、
第2入力手段による第1カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第1カメラ操作手段と、
慣性センサを用いた第3入力手段による第2カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第2カメラ操作手段と、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間に前記第2カメラ操作が行われた場合、当該ポインタ操作に基づく前記ポインタ操作処理および当該第1カメラ操作に基づく前記カメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量の絶対値を減少させる変更量決定手段として機能させ
、
前記変更量決定手段は、
前記第3入力手段における基準姿勢からの姿勢変化操作を前記第2カメラ操作として、前記慣性センサの出力に基づいて算出される姿勢変化の変化量に基づいて前記仮想カメラの位置または撮像方向の変更量を決定し、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間、前記姿勢変化に基づく前記変更量の決定をスキップして、当該ポインタ操作または当該第1カメラ操作が終了した時点の前記第3入力手段の姿勢を新たな前記基準姿勢として設定する、情報処理プログラム。
【請求項3】
前記変更量決定手段は、前記端部操作に基づ
く端部操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間に前記第2カメラ操作が行われた場合、当該端部操作に基づく
当該端部操作処理および当該第1カメラ操作に基づく前記カメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量の絶対値を減少させる、請求項
1に記載の情報処理プログラム。
【請求項4】
前記端部操作処理手段は、前記端部操作が行われた場合、前記可動範囲の端部に位置して前記画面に表示される前記ポインタを移動させない、請求項
1または
3に記載の情報処理プログラム。
【請求項5】
前記変更量決定手段は、前記第1変更量と前記第2変更量とを加算することによって前記第3変更量を決定する、請求項
1に記載の情報処理プログラム。
【請求項6】
前記変更量決定手段は、前記ポインタ操作に基づく前記ポインタ操作処理が行われている間に前記第1カメラ操作が行われた場合と、当該ポインタ操作に基づく前記ポインタ操作処理が行われていない間に前記第1カメラ操作が行われた場合とで、当該第1カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量を同じとする、請求項1乃至
5の何れか1つに記載の情報処理プログラム。
【請求項7】
前記変更量決定手段は、前記端部操作に基づ
く端部操作処理が行われている間に前記第1カメラ操作が行われた場合と、当該端部操作に基づく
当該端部操作処理が行われていない間に前記第1カメラ操作が行われた場合とで、当該第1カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量を同じとする、請求項
1、3、4、および5の何れか1つに記載の情報処理プログラム。
【請求項8】
前記変更量決定手段は、前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間に前記第2カメラ操作が行われた場合、当該第2カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更を行わない、請求項1乃至
7の何れか1つに記載の情報処理プログラム。
【請求項9】
前記画面に表示される前記ポインタの位置に基づいて定まる前記仮想空間の位置または方向に基づいたゲーム処理を行うゲーム処理手段として、さらに前記コンピュータを機能させる、請求項1乃至
8の何れか1つに記載の情報処理プログラム。
【請求項10】
前記ゲーム処理手段は、前記ゲーム処理として、前記ポインタの位置に基づいて定まる前記仮想空間の位置または方向に仮想オブジェクトを発射する、請求項
9に記載の情報処理プログラム。
【請求項11】
前記第1入力手段および前記第2入力手段は、それぞれユーザの指による操作に基づく出力を行うデバイスである、請求項1乃至1
0の何れか1つに記載の情報処理プログラム。
【請求項12】
画面に表示される表示用画像を生成するために、仮想空間を仮想カメラにより撮像する撮像手段と、
第1入力手段によるポインタ操作に基づき、前記画面に表示されるポインタの位置を変更するポインタ操作処理を行うポインタ操作手段と、
第2入力手段による第1カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第1カメラ操作手段と、
慣性センサを用いた第3入力手段による第2カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第2カメラ操作手段と、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間に前記第2カメラ操作が行われた場合、当該ポインタ操作に基づく前記ポインタ操作処理および当該第1カメラ操作に基づく前記カメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量の絶対値を減少させる変更量決定手段と
、
前記画面内で、前記ポインタが移動可能な範囲を示す可動範囲を設定する可動範囲設定手段と、
前記ポインタが前記可動範囲の端部に位置する場合に、前記第1入力手段による当該可動範囲の端部から当該可動範囲の外部への方向を指示する操作である端部操作が行われたときは、当該端部操作の方向に応じて前記仮想カメラの位置または撮像方向を変更する端部操作処理手段とを備え
、
前記変更量決定手段は、
前記第1カメラ操作が行われずに第1操作量の前記端部操作が行われた場合、前記仮想カメラの位置または撮像方向を第1軸成分において第1変更量だけ変更し、
前記端部操作が行われずに第2操作量の前記第1カメラ操作が行われた場合、前記仮想カメラの位置または撮像方向を前記第1軸成分において第2変更量だけ変更し、
前記第1操作量の前記端部操作と前記第2操作量の前記第1カメラ操作とが同時に行われた場合、前記仮想カメラの位置または撮像方向の変更量を、前記第1変更量の前記第1軸成分と前記第2変更量の当該第1軸成分がともに正であるときは、当該第1軸成分において前記第1変更量および前記第2変更量の何れよりも大きい第3変更量とし、ともに負であるときは、当該第1軸成分において前記第1変更量および前記第2変更量の何れよりも小さい第3変更量とする、情報処理装置。
【請求項13】
画面に表示される表示用画像を生成するために、仮想空間を仮想カメラにより撮像する撮像手段と、
第1入力手段によるポインタ操作に基づき、前記画面に表示されるポインタの位置を変更するポインタ操作処理を行うポインタ操作手段と、
第2入力手段による第1カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第1カメラ操作手段と、
慣性センサを用いた第3入力手段による第2カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第2カメラ操作手段と、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間に前記第2カメラ操作が行われた場合、当該ポインタ操作に基づく前記ポインタ操作処理および当該第1カメラ操作に基づく前記カメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量の絶対値を減少させる変更量決定手段とを備え
、
前記変更量決定手段は、
前記第3入力手段における基準姿勢からの姿勢変化操作を前記第2カメラ操作として、前記慣性センサの出力に基づいて算出される姿勢変化の変化量に基づいて前記仮想カメラの位置または撮像方向の変更量を決定し、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間、前記姿勢変化に基づく前記変更量の決定をスキップして、当該ポインタ操作または当該第1カメラ操作が終了した時点の前記第3入力手段の姿勢を新たな前記基準姿勢として設定する、情報処理装置。
【請求項14】
画面に表示される表示用画像を生成するために、仮想空間を仮想カメラにより撮像する撮像手段と、
第1入力手段によるポインタ操作に基づき、前記画面に表示されるポインタの位置を変更するポインタ操作処理を行うポインタ操作手段と、
第2入力手段による第1カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第1カメラ操作手段と、
慣性センサを用いた第3入力手段による第2カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第2カメラ操作手段と、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間に前記第2カメラ操作が行われた場合、当該ポインタ操作に基づく前記ポインタ操作処理および当該第1カメラ操作に基づく前記カメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量の絶対値を減少させる変更量決定手段と
、
前記画面内で、前記ポインタが移動可能な範囲を示す可動範囲を設定する可動範囲設定手段と、
前記ポインタが前記可動範囲の端部に位置する場合に、前記第1入力手段による当該可動範囲の端部から当該可動範囲の外部への方向を指示する操作である端部操作が行われたときは、当該端部操作の方向に応じて前記仮想カメラの位置または撮像方向を変更する端部操作処理手段とを備え
、
前記変更量決定手段は、
前記第1カメラ操作が行われずに第1操作量の前記端部操作が行われた場合、前記仮想カメラの位置または撮像方向を第1軸成分において第1変更量だけ変更し、
前記端部操作が行われずに第2操作量の前記第1カメラ操作が行われた場合、前記仮想カメラの位置または撮像方向を前記第1軸成分において第2変更量だけ変更し、
前記第1操作量の前記端部操作と前記第2操作量の前記第1カメラ操作とが同時に行われた場合、前記仮想カメラの位置または撮像方向の変更量を、前記第1変更量の前記第1軸成分と前記第2変更量の当該第1軸成分がともに正であるときは、当該第1軸成分において前記第1変更量および前記第2変更量の何れよりも大きい第3変更量とし、ともに負であるときは、当該第1軸成分において前記第1変更量および前記第2変更量の何れよりも小さい第3変更量とする、情報処理システム。
【請求項15】
画面に表示される表示用画像を生成するために、仮想空間を仮想カメラにより撮像する撮像手段と、
第1入力手段によるポインタ操作に基づき、前記画面に表示されるポインタの位置を変更するポインタ操作処理を行うポインタ操作手段と、
第2入力手段による第1カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第1カメラ操作手段と、
慣性センサを用いた第3入力手段による第2カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第2カメラ操作手段と、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間に前記第2カメラ操作が行われた場合、当該ポインタ操作に基づく前記ポインタ操作処理および当該第1カメラ操作に基づく前記カメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量の絶対値を減少させる変更量決定手段とを備え
、
前記変更量決定手段は、
前記第3入力手段における基準姿勢からの姿勢変化操作を前記第2カメラ操作として、前記慣性センサの出力に基づいて算出される姿勢変化の変化量に基づいて前記仮想カメラの位置または撮像方向の変更量を決定し、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間、前記姿勢変化に基づく前記変更量の決定をスキップして、当該ポインタ操作または当該第1カメラ操作が終了した時点の前記第3入力手段の姿勢を新たな前記基準姿勢として設定する、情報処理システム。
【請求項16】
情報処理装置のプロセッサに、
画面に表示される表示用画像を生成するために、仮想空間を仮想カメラにより撮像する撮像ステップと、
第1入力手段によるポインタ操作に基づき、前記画面に表示されるポインタの位置を変更するポインタ操作処理を行うポインタ操作ステップと、
第2入力手段による第1カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第1カメラ操作ステップと、
慣性センサを用いた第3入力手段による第2カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第2カメラ操作ステップと、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間に前記第2カメラ操作が行われた場合、当該ポインタ操作に基づく前記ポインタ操作処理および当該第1カメラ操作に基づく前記カメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量の絶対値を減少させる変更量決定ステップと
、
前記画面内で、前記ポインタが移動可能な範囲を示す可動範囲を設定する可動範囲設定ステップと、
前記ポインタが前記可動範囲の端部に位置する場合に、前記第1入力手段による当該可動範囲の端部から当該可動範囲の外部への方向を指示する操作である端部操作が行われたときは、当該端部操作の方向に応じて前記仮想カメラの位置または撮像方向を変更する端部操作処理ステップとを実行させ
、
前記変更量決定ステップでは、
前記第1カメラ操作が行われずに第1操作量の前記端部操作が行われた場合、前記仮想カメラの位置または撮像方向が第1軸成分において第1変更量だけ変更され、
前記端部操作が行われずに第2操作量の前記第1カメラ操作が行われた場合、前記仮想カメラの位置または撮像方向が前記第1軸成分において第2変更量だけ変更され、
前記第1操作量の前記端部操作と前記第2操作量の前記第1カメラ操作とが同時に行われた場合、前記仮想カメラの位置または撮像方向の変更量が、前記第1変更量の前記第1軸成分と前記第2変更量の当該第1軸成分がともに正であるときは、当該第1軸成分において前記第1変更量および前記第2変更量の何れよりも大きい第3変更量とされ、ともに負であるときは、当該第1軸成分において前記第1変更量および前記第2変更量の何れよりも小さい第3変更量とされる、情報処理方法。
【請求項17】
情報処理装置のプロセッサに、
画面に表示される表示用画像を生成するために、仮想空間を仮想カメラにより撮像する撮像ステップと、
第1入力手段によるポインタ操作に基づき、前記画面に表示されるポインタの位置を変更するポインタ操作処理を行うポインタ操作ステップと、
第2入力手段による第1カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第1カメラ操作ステップと、
慣性センサを用いた第3入力手段による第2カメラ操作に基づき、前記仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う第2カメラ操作ステップと、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間に前記第2カメラ操作が行われた場合、当該ポインタ操作に基づく前記ポインタ操作処理および当該第1カメラ操作に基づく前記カメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく前記仮想カメラの位置または撮像方向の変更量の絶対値を減少させる変更量決定ステップとを実行させ
、
前記変更量決定ステップでは、
前記第3入力手段における基準姿勢からの姿勢変化操作を前記第2カメラ操作として、前記慣性センサの出力に基づいて算出される姿勢変化の変化量に基づいて前記仮想カメラの位置または撮像方向の変更量が決定され、
前記ポインタ操作に基づく前記ポインタ操作処理または前記第1カメラ操作に基づく前記カメラ操作処理が行われている間、前記姿勢変化に基づく前記変更量の決定をスキップして、当該ポインタ操作または当該第1カメラ操作が終了した時点の前記第3入力手段の姿勢が新たな前記基準姿勢として設定される、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想空間に対する表示範囲を変化させる処理を行う情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関する。
【背景技術】
【0002】
従来、複数の入力手段を用いて、照準の表示位置を移動させたり、仮想カメラの撮像方向を変更したりするゲームプログラムがある(例えば、非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【文献】”スターフォックス ゼロ“、[online]、Nintendo of America Inc、[令和2年6月1日検索]、インターネット(URL:https://www.nintendo.com/consumer/downloads/manual-WiiU-Star_Fox_Zero.pdf)
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記非特許文献1で開示されたゲームプログラムでは、仮想カメラの位置や撮像方向を変更する入力手段の用い方に改善の余地があった。
【0005】
それ故に、本発明の目的は、仮想カメラの位置や撮像方向を変更する入力手段の操作性を向上させることを可能とする情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
【0007】
本発明の情報処理プログラムの一構成例は、情報処理装置のコンピュータにおいて実行される。情報処理プログラムは、撮像手段、ポインタ操作手段、第1カメラ操作手段、第2カメラ操作手段、および変更量決定手段として、コンピュータを機能させる。撮像手段は、画面に表示される表示用画像を生成するために、仮想空間を仮想カメラにより撮像する。ポインタ操作手段は、第1入力手段によるポインタ操作に基づき、画面に表示されるポインタの位置を変更するポインタ操作処理を行う。第1カメラ操作手段は、第2入力手段による第1カメラ操作に基づき、仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う。第2カメラ操作手段は、慣性センサを用いた第3入力手段による第2カメラ操作に基づき、仮想カメラの位置または撮像方向を変更するカメラ操作処理を行う。変更量決定手段は、ポインタ操作に基づくポインタ操作処理または第1カメラ操作に基づくカメラ操作処理が行われている間に第2カメラ操作が行われた場合、当該ポインタ操作に基づくポインタ操作処理および当該第1カメラ操作に基づくカメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく仮想カメラの位置または撮像方向の変更量の絶対値を減少させる。
【0008】
上記によれば、仮想カメラの位置や撮像方向を変更する入力手段が複数存在する場合に、当該入力手段の1つを用いた操作に基づく処理が行われているか否かによって他の入力手段を用いた操作に基づいて当該変更する量が調整されるため、入力手段の操作性を向上させることができる。
【0009】
また、上記情報処理プログラムは、可動範囲設定手段および端部操作処理手段として、さらにコンピュータを機能させてもよい。可動範囲設定手段は、画面内で、ポインタが移動可能な範囲を示す可動範囲を設定する。端部操作処理手段は、ポインタが可動範囲の端部に位置する場合に、第1入力手段による当該可動範囲の端部から当該可動範囲の外部への方向を指示する操作である端部操作が行われたときは、当該端部操作の方向に応じて仮想カメラの位置または撮像方向を変更する。
【0010】
上記によれば、3つの異なる入力手段を用いて、仮想カメラの位置や撮像方向を変更することが可能となる。
【0011】
また、上記変更量決定手段は、端部操作に基づく端部操作処理または第1カメラ操作に基づくカメラ操作処理が行われている間に第2カメラ操作が行われた場合、当該端部操作に基づく端部操作処理および当該第1カメラ操作に基づくカメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく仮想カメラの位置または撮像方向の変更量の絶対値を減少させてもよい。
【0012】
上記によれば、3つの異なる入力手段を用いて、仮想カメラの位置や撮像方向を変更することを可能としても、これらの入力手段の操作性を向上させることができる。
【0013】
また、上記端部操作処理手段は、端部操作が行われた場合、可動範囲の端部に位置して画面に表示されるポインタを移動させなくてもよい。
【0014】
上記によれば、ポインタ操作における操作性を向上させることができる。
【0015】
また、上記変更量決定手段は、第1カメラ操作が行われずに第1操作量の端部操作が行われた場合、仮想カメラの位置または撮像方向を第1軸成分において第1変更量だけ変更し、端部操作が行われずに第2操作量の第1カメラ操作が行われた場合、仮想カメラの位置または撮像方向を第1軸成分において第2変更量だけ変更し、第1操作量の端部操作と第2操作量の第1カメラ操作とが同時に行われた場合、仮想カメラの位置または撮像方向の変更量を、第1変更量の第1軸成分と第2変更量の当該第1軸成分がともに正であるときは、当該第1軸成分において第1変更量および第2変更量の何れよりも大きい第3変更量とし、ともに負であるときは、当該第1軸成分において第1変更量および第2変更量の何れよりも小さい第3変更量としてもよい。
【0016】
上記によれば、端部操作と第1カメラ操作とを同時に行うことによって、仮想カメラの位置または撮像方向を素早く変更することができる。
【0017】
また、上記変更量決定手段は、第1変更量と第2変更量とを加算することによって第3変更量を決定してもよい。
【0018】
上記によれば、端部操作と第1カメラ操作とを同時に行うことによって、仮想カメラの位置または撮像方向を素早く変更することができる。
【0019】
また、上記変更量決定手段は、ポインタ操作に基づくポインタ操作処理が行われている間に第1カメラ操作が行われた場合と、当該ポインタ操作に基づくポインタ操作処理が行われていない間に第1カメラ操作が行われた場合とで、当該第1カメラ操作に基づく仮想カメラの位置または撮像方向の変更量を同じとしてもよい。
【0020】
上記によれば、第1カメラ操作に基づく仮想カメラの位置または撮像方向の変更が、ポインタ操作処理が行われているか否かに関わらずに同じ変更量で行われるため、ユーザ所望のタイミングで変更量を変えることなく仮想カメラの位置または撮像方向の変更が第1カメラ操作によって可能となる。また、ポインタ操作に基づくポインタ操作処理を行いながら、第1カメラ操作に基づく仮想カメラの位置または撮像方向を変更する処理を行うことができる。
【0021】
また、上記変更量決定手段は、端部操作に基づく端部操作処理が行われている間に第1カメラ操作が行われた場合と、当該端部操作に基づく端部操作処理が行われていない間に第1カメラ操作が行われた場合とで、当該第1カメラ操作に基づく仮想カメラの位置または撮像方向の変更量を同じとしてもよい。
【0022】
上記によれば、第1カメラ操作に基づく仮想カメラの位置または撮像方向の変更が、端部操作処理が行われているか否かに関わらずに同じ変更量で行われるため、ユーザ所望のタイミングで変更量を変えることなく仮想カメラの位置または撮像方向の変更が第1カメラ操作によって可能となる。
【0023】
また、上記変更量決定手段は、ポインタ操作に基づくポインタ操作処理または第1カメラ操作に基づくカメラ操作処理が行われている間に第2カメラ操作が行われた場合、当該第2カメラ操作に基づく仮想カメラの位置または撮像方向の変更を行わなくてもよい。
【0024】
上記によれば、第1カメラ操作に基づくカメラ操作処理が行われている間に第2カメラ操作が行われた場合、当該第2カメラ操作に基づく仮想カメラの位置または撮像方向の変更が無効にされるため第3入力手段の意図しない動きによって、第1カメラ操作に基づく仮想カメラ制御が乱されることを防止することができる。
【0025】
また、上記変更量決定手段は、第3入力手段における基準姿勢からの姿勢変化操作を第2カメラ操作として、慣性センサの出力に基づいて算出される当該姿勢変化の変化量に基づいて仮想カメラの位置または撮像方向の変更量を決定し、ポインタ操作に基づくポインタ操作処理または第1カメラ操作に基づくカメラ操作処理が行われている間、姿勢変化に基づく変更量の決定をスキップして、当該ポインタ操作または当該第1カメラ操作が終了した時点の第3入力手段の姿勢を新たな基準姿勢として設定してもよい。
【0026】
上記によれば、適切なタイミングで第3入力装置の基準姿勢がリセットされるため、第2入力装置を用いた操作性を向上させることができる。
【0027】
また、上記情報処理プログラムは、ゲーム処理手段として、さらにコンピュータを機能させてもよい。ゲーム処理手段は、画面に表示されるポインタの位置に基づいて定まる仮想空間の位置または方向に基づいたゲーム処理を行う。
【0028】
上記によれば、ポインタを用いたゲームプレイにおける操作性を向上させることができる。
【0029】
また、上記ゲーム処理手段は、ゲーム処理として、ポインタの位置に基づいて定まる仮想空間の位置または方向に仮想オブジェクトを発射してもよい。
【0030】
上記によれば、ポインタを照準として仮想オブジェクトを発射するゲームをプレイする際の操作性を向上させることができる。
【0031】
また、上記第1入力手段および第2入力手段は、それぞれユーザの指による操作に基づく出力を行うデバイスでもよい。
【0032】
上記によれば、ユーザが指を用いて操作する場合の操作性を向上させることができる。
【0033】
また、本発明は、情報処理装置、情報処理システム、および情報処理方法の形態で実施されてもよい。
【発明の効果】
【0034】
本発明によれば、仮想カメラの位置や撮像方向を変更する入力手段の操作性を向上させることができる。
【図面の簡単な説明】
【0035】
【
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
【
図2】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
【
図6】本体装置2の内部構成の一例を示すブロック図
【
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
【
図8】本体装置2のディスプレイ12に表示されるゲーム画像の例を示す図
【
図9】左コントローラ3のアナログスティック32を用いたユーザ操作に応じてディスプレイ12に表示されるゲーム画像の例を示す図
【
図10】右コントローラ45のアナログスティック32を用いたユーザ操作に応じてディスプレイ12に表示されるゲーム画像の例を示す図
【
図11】慣性センサを用いたユーザ操作に応じてディスプレイ12に表示されるゲーム画像の例を示す図
【
図12】本実施例において本体装置2のDRAM85に設定されるデータ領域の一例を示す図
【
図13】ゲームシステム1で実行される情報処理の一例を示すフローチャート
【
図14】
図13におけるステップS126において行われる左スティック操作処理の詳細な一例を示すサブルーチン
【
図15】
図13におけるステップS127において行われる右スティック操作処理の詳細な一例を示すサブルーチン
【
図16】
図13におけるステップS132において行われるジャイロ操作処理の詳細な一例を示すサブルーチン
【発明を実施するための形態】
【0036】
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含み、情報処理システムとしても機能する。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0037】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0038】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0039】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0040】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0041】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0042】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0043】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0044】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0045】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0046】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0047】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、
図1および
図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0048】
左コントローラ3は、アナログスティック32を備える。
図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック32を押下する入力が可能である。
【0049】
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33~36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。さらに、左コントローラ3は、録画ボタン37および-(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0050】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0051】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0052】
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。本実施形態においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53~56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。さらに、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。
【0053】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0054】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0055】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0056】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0057】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0058】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0059】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0060】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0061】
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0062】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0063】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0064】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0065】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0066】
また、本体装置2は、加速度センサ89を備える。本実施形態においては、加速度センサ89は、所定の3軸(例えば、
図1に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ89は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。
【0067】
また、本体装置2は、角速度センサ90を備える。本実施形態においては、角速度センサ90は、所定の3軸(例えば、
図1に示すxyz軸)回りの角速度を検出する。なお、角速度センサ90は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。
【0068】
加速度センサ89および角速度センサ90は、プロセッサ81に接続され、加速度センサ89および角速度センサ90の検出結果は、プロセッサ81へ出力される。プロセッサ81は、上記の加速度センサ89および角速度センサ90の検出結果に基づいて、本体装置2の動きおよび/または姿勢に関する情報を算出することが可能である。
【0069】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0070】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0071】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0072】
左コントローラ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(登録商標)の規格に従って行われる。
【0073】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0074】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(
図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0075】
左コントローラ3は、慣性センサを備える。具体的には、左コントローラ3は、加速度センサ104を備える。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、
図4に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ105は、所定の3軸(例えば、
図4に示すxyz軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
【0076】
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0077】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
【0078】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0079】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0080】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、アナログスティック52、および慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0081】
右コントローラ4は、処理部121を備える。処理部121は、通信制御部111に接続される。
【0082】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0083】
以上に説明したように、本実施形態におけるゲームシステム1については左コントローラ3および右コントローラ4が本体装置2から着脱可能である。また、クレードルに左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置や本体装置2単体を装着することによって据置型モニタ等の外部表示装置に画像(および音声)を出力可能である。以下、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置の利用態様におけるゲームシステム1を用いて説明する。
【0084】
このように、一体型装置となったゲームシステム1における左コントローラ3および/または右コントローラ4の各操作ボタンやスティックの操作、あるいは本体装置2のタッチパネル13に対するタッチ操作、一体型装置全体を動かす操作等に応じて、ディスプレイ12に表示される仮想空間を用いたゲームプレイが行われる。本実施例では、一例として、上記操作ボタン、スティック、および慣性センサを用いたユーザ操作に応じて、仮想空間内におけるプレイヤオブジェクトや仮想空間内に配置された各オブジェクトを用いたゲームプレイが可能となる。
【0085】
図8~
図11を用いてゲームシステム1において行われるゲーム処理の概要について説明する。なお、
図8は、本体装置2のディスプレイ12に表示されるゲーム画像の例を示す図である。
図9は、左コントローラ3のアナログスティック32(以下、左スティック32と記載する)を用いたユーザ操作に応じてディスプレイ12に表示されるゲーム画像の例を示す図である。
図10は、右コントローラ45のアナログスティック32(以下、右スティック52と記載する)を用いたユーザ操作に応じてディスプレイ12に表示されるゲーム画像の例を示す図である。
図11は、慣性センサを用いたユーザ操作に応じてディスプレイ12に表示されるゲーム画像の例を示す図である。なお、以下の説明では、ゲームシステム1において実行するアプリケーションの一例としてゲームを用いているが、ゲームシステム1において他のアプリケーションを実行してもかまわない。また、左スティック32が、第1入力手段の一例に相当し、右スティック52が第2入力手段の一例に相当する。
【0086】
図8において、ゲームシステム1のディスプレイ12には、仮想空間にキャラクタオブジェクトCOやオブジェクトOBJが配置されたゲーム画像が表示されている。例えば、上記ゲーム画像は、予め設定された経路に沿って自動で移動する乗り物に乗って仮想空間内を移動することができるプレイヤオブジェクトから見た主観画像が表示され、所定のユーザ操作に応じて当該主観画像を撮影するゲームをプレイすることができる。したがって、上記ゲーム画像を生成するための仮想カメラは、予め設定された経路に沿って自動で移動するプレイヤオブジェクトとともに、仮想空間内を移動させることができる。また、後述により明らかとなるが、仮想カメラの方向は、左スティック32の傾倒操作、右スティック52の傾倒操作、および一体型装置全体の姿勢を変化させることによる慣性センサを用いた操作によって変更することができる。ここで、ユーザが一体化装置を両手で把持して操作する場合、左スティック32の傾倒操作においてはユーザの左手の指(例えば、親指)による操作が可能であり、右スティック52の傾倒操作においてはユーザの右手の指(例えば、親指)による操作が可能であり、一体型装置全体の姿勢を変化させることによる慣性センサを用いた操作においてはユーザの両手(両腕)を動かす操作が可能となる。なお、プレイヤオブジェクトは、上述した仮想カメラの方向を変化させる操作とは異なるユーザ操作に応じて、仮想空間内を移動可能に構成されてもかまわない。また、姿勢を変化させることによる慣性センサを用いた操作が可能となる一体型装置全体が、第3入力手段の一例に相当する。
【0087】
上記ゲーム画像には、ポインタMが表示される。ポインタMは、表示されている仮想空間の一部をユーザが指定するための標識として機能する。例えば、ポインタMの表示位置に基づいて定まる仮想空間の位置または方向に基づいたゲーム処理が行われ、一例として、ポインタMの表示位置に基づいて定まる仮想空間の位置または方向に仮想オブジェクトを発射するゲームが行われる。ポインタMは、左スティック32の傾倒操作によって、その表示位置を変更することができ、所定の操作(例えば、Aボタン53やBボタン54を押下する操作)に応じて、ポインタMの表示位置に基づいて定まる仮想空間の位置または方向に仮想オブジェクト(例えば、果物オブジェクトやボールオブジェクト等)が発射される。なお、ゲーム処理手段は、画面に表示されるポインタの位置に基づいて定まる仮想空間の位置または方向に基づいたゲーム処理を行うものであり、一例として上記ゲーム処理を行うプロセッサ81に相当する。また、上記ゲーム処理は、画面に表示されるポインタの位置に基づいて定まる仮想空間の位置または方向に弾丸オブジェクトや砲弾オブジェクト等を発射することによって、仮想空間に配置された標的を射撃する射撃ゲームを行うものであってもよい。
【0088】
ポインタMは、可動範囲A内に限って移動することができる。例えば、可動範囲Aは、表示画面の一部を示す範囲として設定される。なお、
図8~
図11においては、説明をわかりやすくするために可動範囲Aを便宜上図示しているが、実際のゲーム画像においては可動範囲Aが表示されなくてもよく、可動範囲Aの外枠の一部(例えば、四隅)を示すガイド枠が表示されてもよい。一例として、可動範囲Aは、表示画面の中央に配置された矩形範囲に設定され、その幅および高さが表示画面の全幅および全高さより短い長さ(例えば、全幅の1/3、全高さの1/2程度)に設定される。なお、可動範囲Aは、表示画面の中央からずれて設定されてもよい。また、可動範囲Aの形状は、矩形でなくてもよく、他の多角形形状や円、楕円、半円、扇形形状等であってもよい。
【0089】
なお、ポインタMは、仮想空間内に配置することによって表示されてもよいし、仮想空間画像に合成することによって表示されてもよい。前者の場合、一例として、プレイヤオブジェクト、キャラクタオブジェクトCO、およびオブジェクトOBJ等が配置されている仮想空間において、仮想カメラの視線方向に垂直な主面を有する仮想的な平面を配置し、当該平面の主面にポインタMを貼り付ける。これによって、ポインタMは、上記平面上を平行移動することにより、2次元移動することが可能となる。前者の場合、他の例として、仮想空間内のゲームフィールド上やオブジェクト表面等にポインタMを配置した仮想空間を生成する。これによって、ポインタMは、仮想空間の左右上下前後方向を3次元移動することが可能となる。このようにポインタMを含めてレンダリングした画像を生成することによって、ポインタMが配置されたゲーム画像をディスプレイ12に表示することができる。後者の場合、プレイヤオブジェクト、キャラクタオブジェクトCO、およびオブジェクトOBJ等がレンダリングされた仮想空間画像に、ポインタMを重畳して合成することによりゲーム画像をディスプレイ12に表示することができる。これによって、ポインタMは、2次元移動して重畳表示することが可能となる。
【0090】
図9を参照して、左スティック32によるポインタ操作および端部操作について説明する。本実施例では、左スティック32を傾倒する操作によって、可動範囲A内でポインタMを移動させる操作(ポインタ操作)と、ポインタMが可動範囲Aの端部に到達した後に仮想カメラの方向を変更する操作(端部操作)とが可能である。
【0091】
図9の上段図において、仮想空間にキャラクタオブジェクトやオブジェクトが配置されたゲーム画像がディスプレイ12に表示されている。そして、ディスプレイ12の中心には、可動範囲Aが設定されており、デフォルト位置(可動範囲Aの中央)にポインタMが表示されている。このようなゲーム画像がディスプレイ12に表示された状態で、左スティック32を右に傾倒操作(x軸負方向へ左スティックを倒す操作;図示矢印方向の操作)する場合を説明する。
【0092】
図9の中段図において、左スティック32が右に傾倒操作された場合、ポインタMの表示位置が右(図示矢印L1;図示x軸負方向)に移動する。例えば、ポインタMが移動する移動方向は、左スティック32の傾倒方向と同じ方向となる。また、ポインタMの移動量は、左スティック32の傾倒角度に基づいて算出される移動速度(傾倒角度が大きいほど、移動速度が速くなる)によって制御される。そして、ポインタMが可動範囲Aの端部に到達した場合、ポインタMの移動が停止する。例えば、
図9の中段図の例では、表示画面の右方向へ移動するポインタMは、可動範囲Aの右端に到達することによって、可動範囲Aの右端に到達した位置で停止して表示され、可動範囲Aの右端を越えて移動することができない。
【0093】
図9の下段図において、ポインタMが可動範囲Aの右端に到達して停止した状態で、さらに左スティック32が右に傾倒操作された場合、ポインタMの表示位置を維持した状態で仮想カメラが右回転して撮像方向が変更される。この仮想カメラの右回転によって、ディスプレイ12に表示される仮想空間の表示範囲も右方向に移動することになるため、ディスプレイ12に表示される仮想空間内の表示対象が左(図示矢印L2)に移動して表示される(例えば、
図9中段図~
図9下段図の例では、右側に表示されていた樹木オブジェクトが中央付近に表示される)。例えば、仮想カメラが回転する方向は、左スティック32の傾倒方向と同じ方向となる。また、仮想カメラの回転量は、左スティック32の傾倒角度に基づいて算出される回転速度(傾倒角度が大きいほど、回転速度が速くなる)によって制御される。このように、本実施例では、ポインタMが可動範囲Aの端部に位置する場合に、左スティック32による当該端部から可動範囲Aの外部への方向を指示する傾倒操作(端部操作)が行われた場合、当該傾倒操作の方向に応じて仮想カメラの撮像方向が変更される。
【0094】
なお、ポインタMが可動範囲Aの端部に表示されている場合であっても、左スティック32の傾倒操作によってポインタMが可動範囲A内において移動する場合があり得る。第1の例として、ポインタMが可動範囲Aの端部に位置する場合に、左スティック32による当該端部から可動範囲Aの内部への方向を指示する傾倒操作(例えば、ポインタMが可動範囲Aの端部に到達した後に戻す方向の傾倒操作)が行われた場合、ポインタMが可動範囲Aの内部に向かって移動する。第2の例として、ポインタMが可動範囲Aの端部に到達した後、当該端部に沿った方向の成分を有する傾倒方向の傾倒操作が行われた場合、当該端部に沿ってポインタMが移動する。例えば、
図9の中段図や下段図の例のように、ポインタMが可動範囲Aの右端に表示されている場合、ポインタMは表示画面の右方向への移動はできないが、当該右端に沿った上方向または下方向への移動は可能となる。具体的には、ポインタMが可動範囲Aの右端に表示されている状態で、左スティック32による表示画面の上方向(図示y軸正方向)または右上方向を傾倒方向とする傾倒操作が行われた場合、ポインタMは、可動範囲Aの上端に到達するまで当該右端に沿って上方向へ移動する。
【0095】
また、本実施例では、左スティック32による傾倒操作によって、ポインタMを移動するポインタ操作と仮想カメラの方向を変更する端部操作との両方が行われることもあり得る。本実施例の可動範囲Aは、ポインタAが左右方向に移動できる左右範囲と上下方向に移動できる上下範囲とを有している。そして、ポインタMは、左スティック32の傾倒操作によって上記左右範囲を超えるポインタMの左右移動が指示された場合、当該左右範囲内でポインタMの移動を停止させて、それ以降の傾倒操作は、仮想カメラの左右回転の指示に移行している。また、ポインタMは、左スティック32の傾倒操作によって上記上下範囲を超えるポインタMの上下移動が指示された場合、当該上下範囲内でポインタMの移動を停止させて、それ以降の傾倒操作は、仮想カメラの上下回転の指示に移行している。したがって、左右方向の成分と上下方向の成分との両方を有する傾倒方向の左スティック32の傾倒操作(例えば、左上方向の傾倒操作)が行われた場合、ポインタMの移動が一方の範囲を越える傾倒操作であったとしても他方の範囲を超えていない傾倒操作となることもあり得る。この場合、ポインタMの移動が越える当該一方の範囲の方向については仮想カメラの回転指示に移行しながら、ポインタMの移動が越えていない当該他方の範囲の方向についてはポインタMの移動が継続することになり、左スティック32による傾倒操作によって、ポインタMを移動するポインタ操作と仮想カメラの方向を変更する端部操作との両方が同時に行われることになる。
【0096】
また、左スティック32による傾倒操作によって、可動範囲A内をポインタMが移動している状態であっても、当該ポインタMの移動とともに仮想カメラの方向を変更してもかまわない。一例として、可動範囲A内をポインタMが所定の方向(例えば、上下方向)へ移動している状態に限って、当該ポインタMの所定の方向への移動とともに仮想カメラの方向を当該所定の方向(例えば、上下方向)に変更してもかまわない。
【0097】
また、ポインタMの表示位置を維持した状態であっても、仮想空間の表示範囲が変化することによって、ポインタMの表示位置に基づいて定まる仮想空間の位置または方向が変化することは言うまでもない。
【0098】
図10を参照して、右スティック52による第1仮想カメラ操作について説明する。本実施例では、右スティック52を傾倒する操作によって、ポインタMを表示画面上で移動させることなく仮想カメラの方向を変更する操作(第1仮想カメラ操作)が可能である。
【0099】
図10の上段図において、仮想空間にキャラクタオブジェクトやオブジェクトが配置されたゲーム画像がディスプレイ12に表示されている。そして、ディスプレイ12の中心には、可動範囲Aが設定されており、デフォルト位置(可動範囲Aの中央)にポインタMが表示されている。このようなゲーム画像がディスプレイ12に表示された状態で、右スティック52を右に傾倒操作(x軸負方向へ右スティックを倒す操作;図示矢印方向の操作)する場合を説明する。
【0100】
図10の中段図において、右スティック52が右に傾倒操作された場合、ポインタMの表示位置を維持した状態で仮想カメラが右回転して撮像方向が変更される。この仮想カメラの右回転によって、ディスプレイ12に表示される仮想空間の表示範囲も右方向に移動することになるため、ディスプレイ12に表示される仮想空間内の表示対象が左(図示矢印R1)に移動して表示される。例えば、仮想カメラが回転する方向は、右スティック52の傾倒方向と同じ方向となる。また、仮想カメラの回転量は、右スティック52の傾倒角度に基づいて算出される回転速度(傾倒角度が大きいほど、回転速度が速くなる)によって制御される。
【0101】
図10の下段図において、さらに右スティック52が右に傾倒操作された場合、ポインタMの表示位置を維持した状態で仮想カメラがさらに右回転して撮像方向が変更される。この仮想カメラの右回転によって、ディスプレイ12に表示される仮想空間の表示範囲もさらに右方向に移動することになるため、ディスプレイ12に表示される仮想空間内の表示対象がさらに左(図示矢印R2)に移動して表示される(例えば、
図10上段図~
図10下段図の例では、右側に表示されていた樹木オブジェクトが中央付近に表示される)。このように、本実施例では、右スティック52による傾倒操作が行われた場合、ポインタMの表示位置を維持した状態で、当該傾倒操作の方向に応じて仮想カメラの撮像方向が変更される。
【0102】
図11を参照して、一体型装置全体の姿勢を変化させることによる慣性センサを用いた第2仮想カメラ操作について説明する。本実施例では、一体型装置全体の姿勢を変化させる操作によって、ポインタMを表示画面上で移動させることなく仮想カメラの方向を変更する操作(第2仮想カメラ操作)が可能である。なお、一体型装置全体の姿勢の変化を検出するために用いられる慣性センサは、当該一体型装置に備えられている角速度センサでもよいし、当該一体型装置に備えられている加速度センサでもよいし、それらの両方であってもよい。また、一体型装置全体の姿勢の変化を検出するために用いられる角速度センサは、本体装置2に備えられている角速度センサ90、左コントローラ3に備えられている角速度センサ105、および右コントローラ4に備えられている角速度センサ115の少なくとも1つであってもよい。また、一体型装置全体の姿勢の変化を検出するために用いられる加速度センサは、本体装置2に備えられている加速度センサ89、左コントローラ3に備えられている加速度センサ104、および右コントローラ4に備えられている加速度センサ114の少なくとも1つであってもよい。
【0103】
図11の上段図において、仮想空間にキャラクタオブジェクトやオブジェクトが配置されたゲーム画像がディスプレイ12に表示されている。そして、ディスプレイ12の中心には、可動範囲Aが設定されており、デフォルト位置(可動範囲Aの中央)にポインタMが表示されている。このようなゲーム画像がディスプレイ12に表示された状態で、一体型装置全体の姿勢を右にヨーする(ヨーイング)操作(図示y軸方向を中心に表示画面奥行方向が右に動くように一体型装置全体が回転する操作;図示Y方向の操作)する場合を説明する。
【0104】
図11の中段図において、一体型装置全体を右にヨーする操作が行われた場合、ポインタMの表示位置を維持した状態で仮想カメラが右回転して撮像方向が変更される。この仮想カメラの右回転によって、ディスプレイ12に表示される仮想空間の表示範囲も右方向に移動することになるため、ディスプレイ12に表示される仮想空間内の表示対象が左(図示矢印J1)に移動して表示される。例えば、仮想カメラが回転する方向は、一体型装置全体が右にヨーする回転方向(ヨー方向)と同じ方向となる。また、仮想カメラの回転量は、一体型装置全体が右にヨーする回転角度(ヨー角度)と同じ角度で回転するように制御される。
【0105】
ここで、第2仮想カメラ操作による仮想カメラは、一体型装置に対して設定された基準姿勢からの姿勢変化(ヨー、ピッチ、およびロール方向それぞれに対する基準姿勢からの角度変化量)と同じように姿勢変化してもよい。具体的には、実空間における一体型装置の基準姿勢に対する姿勢変化の方向に応じて、仮想空間における仮想カメラの姿勢を基準姿勢から当該姿勢変化と同じ方向に変化させる。そして、実空間における一体型装置の基準姿勢に対する姿勢変化量と同じ量だけ、仮想空間における仮想カメラの姿勢を基準姿勢から変化させる。なお、仮想カメラの姿勢を変化させる量は、一体型装置の基準姿勢に対する姿勢変化量と異なっていてもよく、一体型装置の姿勢変化量より多くても少なくてもよい。なお、本実施例では、スティックの傾倒操作(左スティック32および/または右スティック52の傾倒操作)が開始された後で当該傾倒操作が終了した時点で一体型装置の基準姿勢が設定され、当該時点の一体型装置の実空間における姿勢が新たな基準姿勢としてリセットされる。また、仮想空間における仮想カメラの基準姿勢についても、上記時点の仮想カメラの仮想空間における姿勢が新たな基準姿勢としてリセットされる。
【0106】
また、他の例として、第2仮想カメラ操作による仮想カメラの姿勢変化は、一体化装置における処理周期(フレーム)毎の姿勢変化方向および姿勢変化量に基づいて制御されてもよい。例えば、実空間における一体化装置の前フレームからの姿勢変化方向および姿勢変化量に基づいて、仮想空間における仮想カメラの姿勢を変化させる方向および量を決定してもよい。この例においては、後述するように、スティック操作(左スティック32および/または右スティック52の傾倒操作)に基づく処理が行われている間に、一体型装置全体の姿勢を変化させることによる慣性センサを用いた第2仮想カメラ操作が行われた場合に、一体化装置における処理周期毎の変化に基づいて仮想カメラの姿勢を変化させる方向および量を決定する上記処理を行わないことによって、スティック操作に基づく処理が行われている間の第2仮想カメラ操作に基づく仮想カメラの撮像方向の変更量を0にしてもよい。
【0107】
図11の下段図において、さらに一体型装置全体を右にヨーする操作が行われた場合、ポインタMの表示位置を維持した状態で仮想カメラがさらに右回転して撮像方向が変更される。この仮想カメラの右回転によって、ディスプレイ12に表示される仮想空間の表示範囲もさらに右方向に移動することになるため、ディスプレイ12に表示される仮想空間内の表示対象がさらに左(図示矢印J2)に移動して表示される(例えば、
図11上段図~
図11下段図の例では、右側に表示されていた樹木オブジェクトが中央付近に表示される)。このように、本実施例では、一体型装置全体の姿勢を変化させる操作が行われた場合、ポインタMの表示位置を維持した状態で、当該姿勢変化方向および姿勢変化量に応じて仮想カメラの撮像方向が変更される。
【0108】
本実施例では、上述した3つのユーザ操作が重複して行われた場合、以下の(a)~(d)の制御が行われる。
【0109】
(a)左スティック32の傾倒操作に基づいてポインタMを移動させる処理や仮想カメラの撮像方向を変更する処理が行われている間に、一体型装置全体の姿勢を変化させることによる慣性センサを用いた第2仮想カメラ操作が行われた場合、左スティック32の傾倒操作に基づく処理が行われていないときに当該第2仮想カメラ操作が行われた場合と比べて、当該第2仮想カメラ操作に基づく仮想カメラの撮像方向の変更量の絶対値を減少させる。例えば、左スティック32の傾倒操作に基づく処理が行われていないときに第2仮想カメラ操作が行われた場合と比べて、当該第2仮想カメラ操作に基づく仮想カメラの撮像方向の変更量の絶対値を0にする、30%に減少する、50%に減少する、または80%に減少する。なお、上述した仮想カメラの撮像方向の変更量を0にすることは、第2仮想カメラ操作による仮想カメラ制御を無効にすることを含んでおり、仮想カメラの撮像方向の変更量を実質的に0にすることを含んでいる。
【0110】
(b)右スティック52の傾倒操作(第1仮想カメラ操作)に基づいて仮想カメラの撮像方向を変更する処理が行われている間に、一体型装置全体の姿勢を変化させることによる慣性センサを用いた第2仮想カメラ操作が行われた場合、第1仮想カメラ操作に基づく処理が行われていないときに当該第2仮想カメラ操作が行われた場合と比べて、当該第2仮想カメラ操作に基づく仮想カメラの撮像方向の変更量の絶対値を減少させる。例えば、右スティック52の傾倒操作に基づく処理が行われていないときに第2仮想カメラ操作が行われた場合と比べて、当該第2仮想カメラ操作に基づく仮想カメラの撮像方向の変更量の絶対値を0にする、30%に減少する、50%に減少する、または80%に減少する。
【0111】
(c)左スティック32の傾倒操作に基づいてポインタMを移動させる処理が行われている間に、右スティック32を用いた第1仮想カメラ操作が行われた場合、ポインタMを移動させる処理と第1仮想カメラ操作に基づいて仮想カメラの撮像方向の変更する処理との両方を行う。
【0112】
(d)左スティック32の傾倒操作に基づいて仮想カメラの撮像方向を変更する処理が行われている間に、右スティック32を用いた第1仮想カメラ操作が行われた場合、左スティック32の傾倒操作に基づいて仮想カメラの撮像方向を変更する変更量と第1仮想カメラ操作に基づいて仮想カメラの撮像方向を変更する変更量とを加算した変更量で仮想カメラの撮像方向を変更する。上述した加算は、加算される変更量の絶対値の少なくとも一方を減少した上で行われてもよい。何れの場合であっても、左スティック32の傾倒操作に基づいて仮想カメラの撮像方向を左右方向成分において変更する変更量および第1仮想カメラ操作に基づいて仮想カメラの撮像方向を当該左右方向成分において変更する変更量がともに正である場合、当該左右方向成分において何れより大きい変更量で仮想カメラの撮像方向が変更され、ともに負である場合、当該左右方向成分において何れより小さい変更量で仮想カメラの撮像方向が変更される。また、左スティック32の傾倒操作に基づいて仮想カメラの撮像方向を上下方向成分において変更する変更量および第1仮想カメラ操作に基づいて仮想カメラの撮像方向を当該上下方向成分において変更する変更量がともに正である場合、当該上下方向成分において何れより大きい変更量で仮想カメラの撮像方向が変更され、ともに負である場合、当該上下方向成分において何れより小さい変更量で仮想カメラの撮像方向が変更される。なお、本実施例において用いる変更量は、負を取り得る量であり、一例として正負を有するベクトル量であってもよい。なお、負の変更量における「小さい変更量」とは、変更量の絶対値が小さいという意味ではなく、負の値である変更量が数学的に小さい(変更量の絶対値は大きい)という意味である。また、2つの操作によって仮想カメラの撮像方向が変更されるそれぞれの方向により、両者の変更量を加算することによって当該変更量の少なくとも一部が相殺される場合もあり得る。
【0113】
このように、上述した(a)~(d)の制御が行われることによって、スティック操作(左スティック32および/または右スティック52の傾倒操作)による処理と一体型装置全体の姿勢を変化させる操作による処理とが同時に行われる場合、一体型装置全体の姿勢を変化させる操作による処理による仮想カメラに対する作用が減縮(例えば、無効)されることになる。これによって、スティック操作によるゲームプレイを行っている状態でユーザが意図せずに装置自体が動いてしまうことによる仮想カメラの移動を防止することができ、安定したゲームプレイが期待でき操作性を向上させることができる。また、左スティック32の傾倒操作による処理と右スティック52の傾倒操作による処理とが同時に行われる場合、それぞれの処理が並行して両方行われる、またはそれぞれの処理による仮想カメラに対する作用が合わせられる(例えば、加算される)ことになる。これにより、表示画面に表示する仮想空間の表示範囲を素早く移動させたい場合に好適となり、仮想カメラ制御における操作性が向上する。また、ポインタの表示位置を動かしながら、表示画面に表示する仮想空間の表示範囲を移動させたい場合に好適となり、ポインタ表示位置制御および仮想カメラ制御を両立させる操作が可能となる。
【0114】
なお、上述した実施例では、スティック操作(左スティック32および/または右スティック52の傾倒操作)や一体型装置全体の姿勢を変化させる操作によって仮想カメラの方向が変更される例を用いたが、仮想カメラの他のパラメータを変化させてもかまわない。例えば、スティック操作や一体型装置全体の姿勢を変化させる操作によって、仮想空間における仮想カメラの位置を変更してもよい。一例として、スティックが傾倒操作される傾倒方向や一体型装置全体の姿勢が変化する方向に応じて仮想カメラの移動方向を設定し、スティックが傾倒操作される傾倒角度や一体型装置全体の姿勢が変化する角度に応じて仮想カメラの移動速度や移動量を設定することによって、仮想カメラの位置が変更されても良い。また、スティック操作や一体型装置全体の姿勢を変化させる操作によって、仮想空間における仮想カメラの方向および位置の両方を変更してもよい。また、上述した仮想カメラの方向および/または位置を変更することに応じて、主観画像を生成しているプレイヤオブジェクトの方向および/または位置も変更してもかまわない。
【0115】
また、上述した実施例では、ユーザ操作に基づいた処理が行われているか否かを条件として他のユーザ操作による仮想カメラ制御を調整しているが、他の条件による仮想カメラ制御が行われてもよい。例えば、ユーザ操作が行われているか否かを条件として、他のユーザ操作による仮想カメラ制御が調整されてもよい。
【0116】
次に、
図12~
図16を参照して、本実施例においてゲームシステム1で実行される具体的な処理の一例について説明する。
図12は、本実施例において本体装置2のDRAM85に設定されるデータ領域の一例を示す図である。なお、DRAM85には、
図12に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。
【0117】
DRAM85のプログラム記憶領域には、ゲームシステム1で実行される各種プログラムPaが記憶される。本実施例においては、各種プログラムPaは、左コントローラ3および/または右コントローラ4や本体装置2から取得したデータに基づいた情報処理を行うためのアプリケーションプログラム(例えば、ゲームプログラム)等が記憶される。なお、各種プログラムPaは、フラッシュメモリ84に予め記憶されていてもよいし、ゲームシステム1に着脱可能な記憶媒体(例えば、スロット23に装着された所定の種類の記憶媒体)から取得されてDRAM85に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてDRAM85に記憶されてもよい。プロセッサ81は、DRAM85に記憶された各種プログラムPaを実行する。
【0118】
また、DRAM85のデータ記憶領域には、ゲームシステム1において実行される情報処理等の処理において用いられる各種のデータが記憶される。本実施形態においては、DRAM85には、操作データDa、基準姿勢データDb、変化量データDc、仮想カメラデータDd、ポインタデータDe、プレイヤオブジェクトデータDf、オブジェクトデータDg、スティック操作フラグデータDh、および画像データDi等が記憶される。
【0119】
操作データDaは、左コントローラ3および/または右コントローラ4や本体装置2からそれぞれ適宜取得した操作データである。上述したように、左コントローラ3および/または右コントローラ4や本体装置2からそれぞれ取得される操作データには、各入力部(具体的には、各ボタン、アナログスティック、タッチパネル、各センサ)からの入力に関する情報(具体的には、操作に関する情報や各センサによる検出結果)が含まれている。本実施例では、左コントローラ3および/または右コントローラ4や本体装置2からそれぞれ操作データを取得しており、当該取得した操作データを用いて操作データDaが適宜更新される。なお、操作データDaの更新周期は、後述するゲームシステム1で実行される処理の周期である1フレーム毎に更新されてもよいし、上記操作データが取得される周期毎に更新されてもよい。
【0120】
基準姿勢データDbは、一体型装置に対して設定される実空間における基準姿勢を示すデータである。例えば、基準姿勢データDbは、実空間の重力方向を基準とする一体型装置の基準姿勢(例えば、重力方向に対する一体化装置の所定の3軸(例えば、本体装置2、左コントローラ3、または右コントローラ4の互いに直交するxyz軸)それぞれの方向)を示すデータである。
【0121】
変化量データDcは、基準姿勢に対して実空間における一体型装置の姿勢が変化した変化量を示すデータである。例えば、変化量データDcは、基準姿勢における一体化装置の3軸を基準として、現時点の一体化装置の当該3軸それぞれの差(角度差)を姿勢の変化量として示すデータである。
【0122】
仮想カメラデータDdは、仮想空間における仮想カメラの位置および姿勢と基準姿勢とを示すデータである。
【0123】
ポインタデータDeは、ディスプレイ12に表示されるポインタMの位置を示すデータである。
【0124】
プレイヤオブジェクトデータDfは、仮想空間に配置されているプレイヤオブジェクトの配置位置および配置姿勢や、仮想空間における動作や状態等を示すデータである。オブジェクトデータDgは、仮想空間にそれぞれ配置されているオブジェクト毎のオブジェクトの種別、配置位置、配置姿勢、および配置状態等を示すデータである。
【0125】
スティック操作フラグデータDhは、左スティック32および/または右スティック52が傾倒操作されている際にオンに設定されるスティック操作フラグを示すデータである。
【0126】
画像データDiは、表示画面(例えば、本体装置2のディスプレイ12)に画像(例えば、プレイヤオブジェクトの画像、キャラクタオブジェクトCOやオブジェクトOBJの画像、仮想空間の画像、背景画像等)を表示するためのデータである。
【0127】
次に、
図13~
図16を参照して、本実施例における情報処理の詳細な一例を説明する。
図13は、ゲームシステム1で実行される情報処理の一例を示すフローチャートである。
図14は、
図13におけるステップS126において行われる左スティック操作処理の詳細な一例を示すサブルーチンである。
図15は、
図13におけるステップS127において行われる右スティック操作処理の詳細な一例を示すサブルーチンである。
図16は、
図13におけるステップS132において行われるジャイロ操作処理の詳細な一例を示すサブルーチンである。本実施例においては、
図13~
図16に示す一連の処理は、プロセッサ81が各種プログラムPaに含まれる所定のアプリケーションプログラム(ゲームプログラム)を実行することによって行われる。また、
図13~
図16に示す情報処理が開始されるタイミングは任意である。
【0128】
なお、
図13~
図16に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をプロセッサ81が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、プロセッサ81以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置2において実行される処理の一部は、本体装置2と通信可能な他の情報処理装置(例えば、本体装置2とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、
図13~
図16に示す各処理は、本体装置2を含む複数の情報処理装置が協働することによって実行されてもよい。
【0129】
図13において、プロセッサ81は、情報処理における初期設定を行い(ステップS121)、次のステップに処理を進める。例えば、上記初期設定では、プロセッサ81は、以下に説明する処理を行うためのパラメータを初期化する。例えば、プロセッサ81は、予め設定されている仮想空間の設定に基づいて、プレイヤオブジェクトや複数のオブジェクトを仮想空間に初期配置して、プレイヤオブジェクトデータDfおよびオブジェクトデータDgを初期設定する。また、プロセッサ81は、プレイヤオブジェクトの主観画像を生成するための仮想カメラを設定し、現時点の仮想カメラの姿勢を基準姿勢として仮想カメラデータDdを更新する。また、プロセッサ81は、実空間における現時点の一体型装置の姿勢を基準姿勢に設定して、基準姿勢データDbを更新する。
【0130】
次に、プロセッサ81は、左コントローラ3、右コントローラ4、および/または本体装置2から操作データを取得して操作データDaを更新し(ステップS122)、次のステップに処理を進める。
【0131】
次に、プロセッサ81は、スティック操作が行われているか否かを判定する(ステップS123)。例えば、プロセッサ81は、操作データDaを参照して、左スティック32および右スティック52の少なくとも一方が傾倒操作されている場合、上記ステップS123において肯定判定し、左スティック32および右スティック52の何れもが傾倒操作されていない場合、上記ステップS123において否定判定する。そして、プロセッサ81は、スティック操作が行われている場合、ステップS125に処理を進める。一方、プロセッサ81は、スティック操作が行われていない場合、ステップS128に処理を進める。
【0132】
ステップS125において、プロセッサ81は、スティック操作フラグをオンに設定して、次のステップに処理を進める。例えば、プロセッサ81は、スティック操作フラグをオンに設定して、スティック操作フラグデータDhを更新する。
【0133】
次に、プロセッサ81は、左スティック操作処理を行い(ステップS126)、ステップS127に処理を進める。以下、
図14を参照して、上記ステップS126において行われる左スティック操作処理について説明する。
【0134】
図14において、プロセッサ81は、左スティックが操作されているか否かを判定する(ステップS141)。例えば、プロセッサ81は、操作データDaを参照して、左スティック32が傾倒操作されている場合、上記ステップS141において肯定判定する。そして、プロセッサ81は、左スティックが操作されている場合、ステップS142に処理を進める。一方、プロセッサ81は、左スティックが操作されていない場合、当該サブルーチンによる処理を終了する。
【0135】
ステップS142において、プロセッサ81は、左スティックの傾倒操作が、ポインタMの表示位置が可動範囲Aを越える指示を示しているか否かを判定する。例えば、プロセッサ81は、操作データDaおよびポインタデータDeを参照して、ポインタMの表示位置が可動範囲Aの端部に配置されており、当該端部から可動範囲Aの外部にポインタMを移動させる指示を左スティック32の傾倒操作が示している場合、上記ステップS142において肯定判定する。そして、プロセッサ81は、左スティックの傾倒操作が、ポインタMの表示位置が可動範囲Aを越える指示を示している場合、ステップS143に処理を進める。一方、プロセッサ81は、左スティックの傾倒操作が、ポインタMの表示位置が可動範囲Aを越える指示を示していない場合、ステップS151に処理を進める。
【0136】
ステップS143において、プロセッサ81は、左スティックの傾倒操作が、ポインタMの表示位置が可動範囲Aの左右端部を越える指示を示しているか否かを判定する。例えば、プロセッサ81は、操作データDaおよびポインタデータDeを参照して、ポインタMの表示位置が可動範囲Aの左端部または右端部に配置されており、当該左端部または右端部から可動範囲Aの外部にポインタMを移動させる指示を左スティック32の傾倒操作が示している場合、上記ステップS143において肯定判定する。そして、プロセッサ81は、左スティックの傾倒操作が、ポインタMの表示位置が可動範囲Aの左右端部を越える指示を示している場合、ステップS144に処理を進める。一方、プロセッサ81は、左スティックの傾倒操作が、ポインタMの表示位置が可動範囲Aの左右端部を越える指示を示していない場合、ステップS147に処理を進める。なお、可動範囲設定手段は、画面内で、ポインタが移動可能な範囲を示す可動範囲を設定する処理を行うものであり、一例としてステップS142およびS143の処理を行うプロセッサ81に相当する。
【0137】
ステップS144において、プロセッサ81は、左スティック32の傾倒操作に応じて、仮想カメラの方向を左右に変更し、次のステップに処理を進める。例えば、プロセッサ81は、仮想カメラが回転する方向を、ポインタMの表示位置が可動範囲Aの左端部を越える指示が行われている場合に左方向とし、ポインタMの表示位置が可動範囲Aの右端部を越える指示が行われている場合に右方向とする。また、プロセッサ81は、左スティック32の傾倒角度の左右方向成分に基づいて、仮想カメラの回転速度を算出する(傾倒角度の左右方向成分が大きいほど、回転速度を速くする)。そして、プロセッサ81は、仮想カメラデータDdが示す仮想カメラの姿勢を、算出された仮想カメラの回転方向および回転速度に基づいて変化させ、変化後の仮想カメラの姿勢を用いて仮想カメラデータDdを更新する。なお、上記ステップS144の処理においては、プロセッサ81は、左スティック32の傾倒操作に応じて、ポインタMを左右方向に移動させることなく、そのままの位置を維持する。なお、端部操作処理手段は、ポインタが可動範囲の端部に位置する場合に、第1入力手段による当該可動範囲の端部から当該可動範囲の外部への方向を指示する操作である端部操作が行われたときは、当該端部操作の方向に応じて仮想カメラの位置または撮像方向を変更する処理を行うものであり、一例としてステップS144の処理を行うプロセッサ81に相当する。
【0138】
次に、プロセッサ81は、左スティック32の傾倒操作における傾倒角度の上下方向成分があるか否かを判定する(ステップS145)。そして、プロセッサ81は、左スティック32の傾倒操作における傾倒角度の上下方向成分がある場合、ステップS146に処理を進める。一方、プロセッサ81は、左スティック32の傾倒操作における傾倒角度の上下方向成分がない場合、ステップS147に処理を進める。
【0139】
ステップS146において、プロセッサ81は、ポインタMが配置されている可動範囲Aの左端部または右端部に沿って、ポインタMを移動させ、ステップS147に処理を進める。例えば、プロセッサ81は、ポインタMが可動範囲Aの左端部上に配置されている場合、左スティック32の傾倒操作における傾倒角度の上下方向成分に基づいて移動速度を算出し、当該上下成分が生じている方向に当該移動速度で左端部に沿ってポインタMを移動させ、移動後の位置を用いてポインタデータDeを更新する。また、プロセッサ81は、ポインタMが可動範囲Aの右端部上に配置されている場合、左スティック32の傾倒操作における傾倒角度の上下方向成分に基づいて移動速度を算出し、当該上下成分が生じている方向に当該移動速度で右端部に沿ってポインタMを移動させ、移動後の位置を用いてポインタデータDeを更新する。なお、上記ポインタMの移動によって、可動範囲Aの上端部または下端部を越える移動となる場合、プロセッサ81は、当該上端部または下端部に到達した位置でポインタMの移動を停止して、ポインタデータDeを更新する。また、ポインタ操作手段は、第1入力手段によるポインタ操作に基づき、画面に表示されるポインタの位置を変更するポインタ操作処理を行うものであり、一例としてステップS146の処理を行うプロセッサ81に相当する。
【0140】
ステップS147において、プロセッサ81は、左スティックの傾倒操作が、ポインタMの表示位置が可動範囲Aの上下端部を越える指示を示しているか否かを判定する。例えば、プロセッサ81は、操作データDaおよびポインタデータDeを参照して、ポインタMの表示位置が可動範囲Aの上端部または下端部に配置されており、当該上端部または下端部から可動範囲Aの外部にポインタMを移動させる指示を左スティック32の傾倒操作が示している場合、上記ステップS147において肯定判定する。そして、プロセッサ81は、左スティックの傾倒操作が、ポインタMの表示位置が可動範囲Aの上下端部を越える指示を示している場合、ステップS148に処理を進める。一方、プロセッサ81は、左スティックの傾倒操作が、ポインタMの表示位置が可動範囲Aの左右端部を越える指示を示していない場合、当該サブルーチンによる処理を終了する。なお、可動範囲設定手段は、画面内で、ポインタが移動可能な範囲を示す可動範囲を設定する処理を行うものであり、一例としてステップS147の処理を行うプロセッサ81に相当する。
【0141】
ステップS148において、プロセッサ81は、左スティック32の傾倒操作に応じて、仮想カメラの方向を上下に変更し、次のステップに処理を進める。例えば、プロセッサ81は、仮想カメラが回転する方向を、ポインタMの表示位置が可動範囲Aの上端部を越える指示が行われている場合に上方向とし、ポインタMの表示位置が可動範囲Aの下端部を越える指示が行われている場合に下方向とする。また、プロセッサ81は、左スティック32の傾倒角度の上下方向成分に基づいて、仮想カメラの回転速度を算出する(傾倒角度の上下方向成分が大きいほど、回転速度を速くする)。そして、プロセッサ81は、仮想カメラデータDdが示す仮想カメラの姿勢を、算出された仮想カメラの回転方向および回転速度に基づいて変化させ、変化後の仮想カメラの姿勢を用いて仮想カメラデータDdを更新する。なお、上記ステップS148の処理においては、プロセッサ81は、左スティック32の傾倒操作に応じて、ポインタMを上下方向に移動させることなく、そのままの位置を維持する。なお、端部操作処理手段は、ポインタが可動範囲の端部に位置する場合に、第1入力手段による当該可動範囲の端部から当該可動範囲の外部への方向を指示する操作である端部操作が行われたときは、当該端部操作の方向に応じて仮想カメラの位置または撮像方向を変更する処理を行うものであり、一例としてステップS148の処理を行うプロセッサ81に相当する。
【0142】
次に、プロセッサ81は、左スティック32の傾倒操作における傾倒角度の左右方向成分があるか否かを判定する(ステップS149)。そして、プロセッサ81は、左スティック32の傾倒操作における傾倒角度の左右方向成分がある場合、ステップS150に処理を進める。一方、プロセッサ81は、左スティック32の傾倒操作における傾倒角度の左右方向成分がない場合、当該サブルーチンによる処理を終了する。
【0143】
ステップS150において、プロセッサ81は、ポインタMが配置されている可動範囲Aの上端部または下端部に沿って、ポインタMを移動させ、当該サブルーチンによる処理を終了する。例えば、プロセッサ81は、ポインタMが可動範囲Aの上端部上に配置されている場合、左スティック32の傾倒操作における傾倒角度の左右方向成分に基づいて移動速度を算出し、当該左右成分が生じている方向に当該移動速度で上端部に沿ってポインタMを移動させ、移動後の位置を用いてポインタデータDeを更新する。また、プロセッサ81は、ポインタMが可動範囲Aの下端部上に配置されている場合、左スティック32の傾倒操作における傾倒角度の左右方向成分に基づいて移動速度を算出し、当該左右成分が生じている方向に当該移動速度で下端部に沿ってポインタMを移動させ、移動後の位置を用いてポインタデータDeを更新する。なお、上記ポインタMの移動によって、可動範囲Aの左端部または右端部を越える移動となる場合、プロセッサ81は、当該左端部または右端部に到達した位置でポインタMの移動を停止して、ポインタデータDeを更新する。
【0144】
一方、上記ステップS142における処理において、左スティックの傾倒操作が、ポインタMの表示位置が可動範囲Aを越える指示ではないと判定された場合、プロセッサ81は、左スティックの傾倒操作に応じてポインタMを移動させ(ステップS151)、当該サブルーチンによる処理を終了する。例えば、プロセッサ81は、左スティック32の傾倒操作における傾倒角度に基づいて移動速度を算出し、当該傾倒操作が行われている方向にポインタMを当該移動速度で移動させ、移動後の位置を用いてポインタデータDeを更新する。なお、上記ポインタMの移動によって、可動範囲Aの端部を越える移動となる場合、プロセッサ81は、当該端部に到達した位置でポインタMの移動を停止して、ポインタデータDeを更新する。なお、ポインタ操作手段は、第1入力手段によるポインタ操作に基づき、画面に表示されるポインタの位置を変更するポインタ操作処理を行うものであり、一例としてステップS150およびS151の処理を行うプロセッサ81に相当する。
【0145】
図13に戻り、上記ステップS126における左スティック操作処理の後、プロセッサ81は、右スティック操作処理を行い(ステップS127)、ステップS133に処理を進める。以下、
図15を参照して、上記ステップS127において行われる右スティック操作処理について説明する。なお、第1カメラ操作手段は、第2入力手段による第1カメラ操作に基づき、仮想カメラの位置または撮像方向を変更するカメラ操作処理を行うものであり、一例としてステップS127の処理を行うプロセッサ81に相当する。
【0146】
図14において、プロセッサ81は、右スティックが操作されているか否かを判定する(ステップS161)。例えば、プロセッサ81は、操作データDaを参照して、右スティック52が傾倒操作されている場合、上記ステップS161において肯定判定する。そして、プロセッサ81は、右スティックが操作されている場合、ステップS162に処理を進める。一方、プロセッサ81は、右スティックが操作されていない場合、当該サブルーチンによる処理を終了する。
【0147】
ステップS162において、プロセッサ81は、右スティック操作に応じて、仮想カメラの方向を変更し、当該サブルーチンによる処理を終了する。例えば、プロセッサ81は、操作データDaに基づいて、仮想カメラが回転する方向を右スティック52の傾倒方向と同じ方向とする。また、プロセッサ81は、右スティック52の傾倒角度に基づいて、仮想カメラの回転速度を算出(傾倒角度が大きいほど、回転速度が速くなるように算出)する。そして、プロセッサ81は、仮想カメラデータDdが示す仮想カメラの姿勢を、算出された仮想カメラの回転方向および回転速度に基づいて変化させ、変化後の仮想カメラの姿勢を用いて仮想カメラデータDdを更新する。なお、上記ステップS144および/または上記ステップS148において左スティック32の傾倒操作によって仮想カメラの方向が変更されている場合、上記ステップS162における処理は、当該仮想カメラの方向の変更に加えて(すなわち、それぞれの変更量を加算して)さらに仮想カメラの方向を変更することになる。また、上記ステップS162の処理においては、プロセッサ81は、右スティック52の傾倒操作に応じて、ポインタMを移動させることなく、そのままの位置を維持する。なお、変更量決定手段は、ポインタ操作に基づくポインタ操作処理または第1カメラ操作に基づくカメラ操作処理が行われている間に第2カメラ操作が行われた場合、当該ポインタ操作に基づくポインタ操作処理および当該第1カメラ操作に基づくカメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく仮想カメラの位置または撮像方向の変更量の絶対値を減少させる処理を行うものであり、一例としてステップS162の処理を行うプロセッサ81に相当する。
【0148】
図13において、上記ステップS123においてスティック操作が行われていないと判定した場合、プロセッサ81は、スティック操作フラグがオンされているか否かを判定する(ステップS128)。例えば、プロセッサ81は、スティック操作フラグデータDhを参照して、スティック操作フラグがオンに設定されているか否かを判定する。そして、プロセッサ81は、スティック操作フラグがオンされている場合、ステップS129に処理を進める。一方、プロセッサ81は、スティック操作フラグがオフされている場合、ステップS131に処理を進める。
【0149】
ステップS129において、プロセッサ81は、一体型装置および仮想カメラの基準姿勢を設定し、次のステップに処理を進める。例えば、プロセッサ81は、実空間における現時点の一体型装置の姿勢を当該一体型装置の基準姿勢として設定し、基準姿勢データDbを更新する。また、プロセッサ81は、仮想空間における現時点の仮想カメラの姿勢を当該仮想カメラの基準姿勢として設定し、仮想カメラデータDdを更新する。このように、上記ステップS129において、スティックの傾倒操作(左スティック32および/または右スティック52の傾倒操作)が終了した時点で一体型装置および仮想カメラの基準姿勢がリセットされ、当該時点の一体型装置および仮想カメラそれぞれの姿勢が新たな基準姿勢として設定される。
【0150】
次に、プロセッサ81は、プロセッサ81は、スティック操作フラグをオフに設定して(ステップS130)、ステップS131に処理を進める。例えば、プロセッサ81は、スティック操作フラグをオフに設定して、スティック操作フラグデータDhを更新する。
【0151】
ステップS131において、プロセッサ81は、一体化装置の姿勢を変化させることによるジャイロ操作が行われているか否かを判定する(ステップS131)。例えば、プロセッサ81は、操作データDaを参照して、前回の処理と比較して一体化装置の姿勢が変化している(例えば、一体化装置に角速度が生じている)場合、上記ステップS131において肯定判定する。そして、プロセッサ81は、ジャイロ操作が行われている場合、ステップS132に処理を進める。一方、プロセッサ81は、ジャイロ操作が行われていない場合、ステップS133に処理を進める。
【0152】
ステップS132において、プロセッサ81は、ジャイロ操作処理を行い、ステップS133に処理を進める。以下、
図16を参照して、上記ステップS132において行われるジャイロ操作処理について説明する。なお、第2カメラ操作手段は、慣性センサを用いた第3入力手段による第2カメラ操作に基づき、仮想カメラの位置または撮像方向を変更するカメラ操作処理を行うものであり、一例としてステップS132の処理を行うプロセッサ81に相当する。
【0153】
図16において、プロセッサ81は、一体化装置における基準姿勢からの姿勢変化量を算出し(ステップS171)、次のステップに処理を進める。例えば、プロセッサ81は、操作データDaが示す角速度および基準姿勢データDbが示す基準姿勢を参照して、一体化装置の3軸(xyz軸)それぞれにおける基準姿勢から姿勢変化量(例えば、3軸それぞれの基準姿勢からの角度差)を算出し、算出された姿勢変化量を用いて変化量データDcを更新する。
【0154】
次に、プロセッサ81は、上記ステップS171において算出された姿勢変化量を用いて、仮想カメラの方向を変更し(ステップS172)、当該サブルーチンによる処理を終了する。例えば、プロセッサ81は、仮想カメラデータDdが示す仮想カメラの基準姿勢を、変化量データDcが示す姿勢変化量を用いて方向を変更した仮想カメラの姿勢を算出し、当該姿勢を仮想カメラの現時点の姿勢として仮想カメラデータDdを更新する。具体的には、プロセッサ81は、変化量データDcが示す一体型装置の基準姿勢に対する姿勢変化の方向に応じて、仮想空間における仮想カメラの姿勢を基準姿勢から当該姿勢変化と同じ方向に変化させる。そして、プロセッサ81は、変化量データDcが示す一体型装置の基準姿勢に対する姿勢変化量と同じ量だけ、仮想空間における仮想カメラの姿勢を基準姿勢から変化させる。このように仮想カメラの姿勢を変更することによって、仮想カメラの姿勢は、一体型装置に対して設定された基準姿勢からの姿勢変化(ヨー、ピッチ、およびロール方向それぞれに対する基準姿勢からの角度変化量)と同じように基準姿勢から変更されることになる。なお、変更量決定手段は、ポインタ操作に基づくポインタ操作処理または第1カメラ操作に基づくカメラ操作処理が行われている間に第2カメラ操作が行われた場合、当該ポインタ操作に基づくポインタ操作処理および当該第1カメラ操作に基づくカメラ操作処理のいずれも行われていないときに当該第2カメラ操作が行われた場合と比べて、当該第2カメラ操作に基づく仮想カメラの位置または撮像方向の変更量の絶対値を減少させる処理を行うものであり、一例としてステップS172の処理を行うプロセッサ81に相当する。
【0155】
図13に戻り、ステップS133において、プロセッサ81は、仮想空間においてプレイヤオブジェクトを動作させ、次のステップに処理を進める。例えば、プロセッサ81は、ステップS122において取得した操作データDaに基づいて、プレイヤオブジェクトを動作させ、プレイヤオブジェクトデータDfを更新する。また、プロセッサ81は、プレイヤオブジェクトの動作および周囲の状態に応じて、プレイヤオブジェクトおよび仮想空間における仮想的な物理演算に基づいて、仮想空間に配置されたプレイヤオブジェクトを動作させ、プレイヤオブジェクトデータDfを更新する。さらに、プロセッサ81は、プレイヤオブジェクトの状態を変化させる状態変化演算に基づいて、プレイヤオブジェクトの状態を変化させ、プレイヤオブジェクトデータDfを更新する。
【0156】
次に、プロセッサ81は、仮想空間において各オブジェクトを動作させ(ステップS134)、次のステップに処理を進める。例えば、プロセッサ81は、プレイヤオブジェクトの動作、キャラクタオブジェクト等のオブジェクト自身や他のオブジェクトの動作、および仮想空間における仮想的な物理演算に基づいて、仮想空間に配置された各オブジェクトを動作させ、オブジェクトデータDgを更新する。また、プロセッサ81は、各オブジェクトの状態を変化させる状態変化演算に基づいて、各オブジェクトの状態を変化させ、オブジェクトデータDgを更新する。
【0157】
次に、プロセッサ81は、表示制御処理を行い(ステップS135)、次のステップに処理を進める。例えば、プロセッサ81は、ポインタデータDe、プレイヤオブジェクトデータDf、およびオブジェクトデータDgに基づいて、仮想空間にプレイヤオブジェクト、各オブジェクト、およびポインタMをそれぞれ配置する。また、プロセッサ81は、プレイヤオブジェクトデータDfおよび仮想カメラデータDdに基づいて、表示画像を生成するための仮想カメラの位置および/または姿勢を設定し、当該仮想カメラを仮想空間に配置する。そして、設定した仮想カメラから見た仮想空間の画像を生成して、当該仮想空間画像をディスプレイ12に表示する制御を行う。なお、撮像手段は、画面に表示される表示用画像を生成するために、仮想空間を仮想カメラにより撮像する処理を行うものであり、一例としてステップS135の処理を行うプロセッサ81に相当する。
【0158】
次に、プロセッサ81は、ゲーム処理を終了するか否かを判定する(ステップS136)。上記ステップS136においてゲーム処理を終了する条件としては、例えば、ゲーム処理が終了される条件が満たされたことや、ユーザがゲーム処理を終了する操作を行ったこと等がある。プロセッサ81は、ゲーム処理を終了しない場合に上記ステップS122に戻って処理を繰り返し、ゲーム処理を終了する場合に当該フローチャートによる処理を終了する。以降、ステップS122~ステップS136の一連の処理は、ステップS136で処理を終了すると判定されるまで繰り返し実行される。
【0159】
このように、本実施例においては、スティック操作および装置全体の姿勢を変化させる操作を少なくとも含む複数のユーザ操作によって、仮想カメラの位置や撮像方向を変更することが可能である場合に、当該複数のユーザ操作に基づく処理が同時に行われた際の操作性を向上することができる。
【0160】
なお、上述した実施例では、仮想カメラの位置や撮像方向を変更する入力手段が複数存在する場合に、当該入力手段の1つを用いた操作に基づく処理が行われているか否かによって他の入力手段を用いた操作に基づいて当該変更する量が調整されるため、入力手段の操作性を向上させることができる。
【0161】
なお、ゲームシステム1は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器(PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ、タブレット等)等であってもよい。この場合、オブジェクトを移動する操作を行うための入力装置は、左コントローラ3や右コントローラ4でなくてもよく、別のコントローラ、マウス、タッチパッド、タッチパネル、トラックボール、キーボード、十字キー、スライドパッド等であってもよい。
【0162】
また、上述した説明では情報処理をゲームシステム1でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲームシステム1がさらに他の装置(例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末)と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、ゲームシステム1のプロセッサ81が所定のプログラムを実行することによって情報処理を行うことが可能であるが、ゲームシステム1が備える専用回路によって上記処理の一部または全部が行われてもよい。
【0163】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置(据置型のゲーム装置)と携帯型の情報処理装置(携帯型のゲーム装置)との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
【0164】
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
【0165】
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じてゲームシステム1に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD-ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【0166】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
【産業上の利用可能性】
【0167】
以上のように、本発明は、仮想カメラの位置や撮像方向を変更する入力手段の操作性を向上させることを可能とする情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法等として利用することができる。
【符号の説明】
【0168】
1…情報処理システム
2…本体装置
3…左コントローラ
4…右コントローラ
11…ハウジング
12…ディスプレイ
13…タッチパネル
32、52…アナログスティック
42、64…端子
81…プロセッサ
82…ネットワーク通信部
83…コントローラ通信部
85…DRAM
89、104、114…加速度センサ
90、105、115…角速度センサ
101、111…通信制御部