(58)【調査した分野】(Int.Cl.,DB名)
前記指示位置算出手段は、前記指示位置に対応する画面上の位置が、前記基準位置に対応する画面上の位置と前記入力位置との間の所定範囲内となることを前記範囲条件として、前記指示位置を算出する、請求項1または請求項2に記載の情報処理プログラム。
前記指示位置算出手段は、前記指示位置に対応する画面上の位置が、前記基準位置に対応する画面上の位置と前記入力位置とを結ぶ線分上に位置することを前記範囲条件として、前記指示位置を算出する、請求項3に記載の情報処理プログラム。
前記指示位置算出手段は、指示位置に対応する画面上の位置が、前記基準位置に対応する画面上の位置を基準とする所定領域内となるか、または、指示位置が前記仮想空間において前記基準位置から所定距離内となることを前記距離条件として用いて前記指示位置を算出する、請求項1から請求項11のいずれか1項に記載の情報処理プログラム。
前記指示位置算出手段は、仮想空間内の位置のうちで画面に表示されている位置を前記指示位置とする、請求項1から請求項12のいずれか1項に記載の情報処理プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0004】
入力装置を用いて指示された方向へ単にカーソルを移動させるだけでは、指示位置(カーソルの位置)を動かす操作をユーザが快適に行うことができない場合があった。
【0005】
それ故、本発明の目的は、指示位置を指定する操作の操作性を向上することができる情報処理プログラム、情報処理装置、情報処理システム、および、指示位置の算出方法を提供することである。
【課題を解決するための手段】
【0006】
上記の課題を解決すべく、本発明は、以下の(1)〜(13)の構成を採用した。
【0007】
(1)
本発明の一例は、表示装置の画面に表示される3次元の仮想空間における指示位置を算出する情報処理装置のコンピュータにおいて実行される情報処理プログラムである。情報処理プログラムは、入力位置算出手段と、指示位置算出手段としてコンピュータを機能させる。
入力位置算出手段は、ユーザの入力に基づいて画面上における2次元の入力位置を算出する。
指示位置算出手段は、仮想空間における所定の基準位置からの距離に関する距離条件を満たす3次元位置であって、かつ、当該3次元位置に対応する画面上の位置が、基準位置に対応する画面上の位置と入力位置とによって決められる範囲内となることを示す範囲条件を満たす3次元位置を、指示位置として入力位置に基づいて算出する。
【0008】
上記(1)の構成によれば、上記距離条件を満たすように指示位置が算出されるので、画面上において指示位置が取り得る範囲を制限することができる。これによって、指示位置を指定する操作の操作性を向上することができる。また、上記範囲条件を満たすように指示位置が算出されるので、ユーザによる入力位置を反映して指示位置を決定することができる。これによっても、指示位置を指定する操作の操作性を向上することができる。
【0009】
(2)
指示位置算出手段は、指示位置に対応する画面上の位置が、基準位置に対応する画面上の位置と入力位置との間の所定範囲内となることを範囲条件として、指示位置を算出してもよい。
【0010】
上記(2)の構成によれば、画面上において指示位置は基準位置と入力位置との間の範囲内となるので、基準位置から見た入力位置の向きと指示位置の向きとが概ね同じ方向となる。したがって、画面上において入力位置と指示位置とが同じ位置にならない場合でもユーザが違和感を抱きにくくなるので、操作性の良い操作方法を提供することができる。
【0011】
(3)
指示位置算出手段は、指示位置に対応する画面上の位置が、基準位置に対応する画面上の位置と入力位置とを結ぶ線分上に位置することを範囲条件として、指示位置を算出してもよい。
【0012】
上記(3)の構成によれば、上記線分上から指定位置を容易に算出することができる。また、基準位置から見た入力位置の向きと指示位置の向きとを同じ方向とすることができるので、操作性の良い操作方法を提供することができる。
【0013】
(4)
指示位置算出手段は、仮想空間において基準位置から所定距離内となることを距離条件として、指示位置を算出してもよい。
【0014】
上記(4)の構成によれば、指示位置が取り得る範囲を、基準位置から所定距離内となる範囲に容易に制限することができる。
【0015】
(5)
指示位置算出手段は、仮想空間における所定平面に関する距離が基準位置から所定距離内となることを距離条件として、指示位置を算出してもよい。
【0016】
上記(5)の構成によれば、例えば所定平面に関する距離が短く、所定平面と垂直な方向について距離が長いような位置を、指示位置とすることができる。このように、上記(5)の構成によれば、所定平面を適宜設定することによって、指示位置の取り得る範囲を、指示位置の用途に応じた適切な範囲とすることができる。
【0017】
(6)
指示位置算出手段は、指示位置に対応する画面上の位置が画面上における所定の制限領域内となるように、指示位置を算出してもよい。
【0018】
上記(6)の構成によれば、上記距離条件による方法とは別の方法で、指示位置の取り得る範囲を制限することができる。したがって、指示位置を大きく動かさなければならない状況をより生じにくくすることができるので、指示位置を指定する操作の操作性をより向上することができる。
【0019】
(7)
情報処理装置は、方向入力装置から入力情報を取得してもよい。入力位置算出手段は、最後に算出された指示位置の画面上における位置を入力情報が示す方向へ移動させた位置となるように、入力情報に基づいて新たな入力位置を算出してもよい。指示位置算出手段は、新たな入力位置に基づいて新たな指示位置を算出してもよい。
【0020】
上記(7)の構成によれば、前回の指示位置から、ユーザによって指示された入力方向へ移動した位置が新たな入力位置となる。これによって、ユーザにとってわかりやすい位置となるように入力位置を算出することができる。
【0021】
(8)
指示位置算出手段は、候補算出手段と、指示位置決定手段とを含んでいてもよい。
候補算出手段は、画面上において範囲条件を満たす1以上の位置を候補位置として入力位置に基づいて算出する。
指示位置決定手段は、候補位置のうちで距離条件を満たす位置に対応する仮想空間内の位置を指示位置として決定する。
【0022】
上記(8)の構成によれば、候補位置を算出し、候補位置について上記範囲条件および距離条件を判定することによって、範囲条件および距離条件を満たす指示位置を容易に算出することができる。
【0023】
(9)
指示位置決定手段は、距離条件を満たす候補位置のうちで基準位置から最も離れた位置に対応する仮想空間内の位置を指示位置として決定してもよい。
【0024】
上記(9)の構成によれば、候補位置のうちで入力位置に最も近いものが指示位置となる。これによれば、ユーザが指示した方向と、指示位置の移動方向とのずれを小さくすることができるので、ユーザにとって違和感が少なく、操作性の良い操作方法を提供することができる。
【0025】
(10)
候補算出手段は、画面上における基準位置と入力位置とについて二分探索法を用いることによって、所定の条件が満たされるまで候補位置を繰り返し算出してもよい。
指示位置決定手段は、候補位置が算出される毎に距離条件を満たすか否かを判定し、距離条件を満たす候補位置から指示位置を決定してもよい。
【0026】
上記(10)の構成によれば、二分探索法を用いて候補位置を算出することによって、候補位置を効率良く決定することができ、指示位置の算出処理を効率良く行うことができる。
【0027】
(11)
指示位置算出手段は、範囲条件を満たす3次元位置のうちで、距離条件を満たし、かつ、画面上における距離が基準位置から最も離れた位置付近の位置を指示位置としてもよい。
【0028】
上記(11)の構成によれば、範囲条件および距離条件を満たす位置のうちで、画面上において入力位置に最も近い位置が指示位置となる。これによれば、ユーザが指示した方向と、指示位置の移動方向とのずれを小さくすることができるので、ユーザにとって違和感が少なく、操作性の良い操作方法を提供することができる。
【0029】
(12)
指示位置算出手段は、指示位置に対応する画面上の位置が、基準位置に対応する画面上の位置を基準とする所定領域内となるか、または、指示位置が仮想空間において基準位置から所定距離内となることを距離条件として用いて指示位置を算出してもよい。
【0030】
上記(12)の構成によれば、所定領域内の範囲については、仮想空間における距離に関わらず、指示位置として指定することが可能となる。これによって、指示位置を移動させる操作の操作性をより向上することができる。
【0031】
(13)
指示位置算出手段は、仮想空間内の位置のうちで画面に表示されている位置を指示位置としてもよい。
【0032】
上記(13)の構成によれば、上記視点の位置から直線を延ばして仮想空間内のオブジェクトと接触した位置が指示位置となる。これによれば、画面に表示されている位置が指示位置となるので、仮想空間内に配置されるオブジェクトによって指示位置が隠れてしまうことなく、指示位置をユーザにわかりやすく提示することができる。
【0033】
なお、本発明の別の一例は、上記(1)〜(13)の情報処理プログラムを実行することによって実現される各手段と同等の手段を備える情報処理装置あるいは情報処理システムであってもよいし、上記(1)〜(13)において実行される指示位置の算出方法であってもよい。
【発明の効果】
【0034】
本発明によれば、距離条件および範囲条件を満たすように指示位置を算出することによって、指示位置を指定する操作の操作性を向上することができる。
【発明を実施するための形態】
【0036】
[1.情報処理システムの構成]
以下、本実施形態の一例に係る情報処理プログラム、情報処理システム、情報処理装置、および、情報処理の実行方法について説明する。
図1は、本実施形態に係る情報処理システムの一例を示すブロック図である。
図1において、情報処理システム1は、入力装置2、情報処理装置3、および、テレビ4を備える。本実施形態における情報処理システム1は、テレビ4の画面に表示される3次元の仮想空間において、入力装置2を用いてユーザが指示する指示位置を算出するものである。
【0037】
情報処理システム1は、ユーザが入力を行うための入力装置(コントローラ)2を含む。本実施形態においては、入力装置2は、スティック11を有する。スティック11は、少なくとも方向を入力可能な方向入力装置の一例である。本実施形態においては、スティック11は、基準状態から上下左右の任意の方向(0°から360°の任意の方向)に傾倒可能であり、基準状態から傾倒した方向および傾倒した量(角度)に応じた値を出力する。具体的には、スティック11の出力値は、傾倒方向および傾倒量を表す2次元座標値である。
【0038】
なお、入力装置2が有する方向入力装置は、スティック11の他、スライドパッドや、十字キーや、ポインティングデバイス(マウス等)であってもよい。また、入力装置2は、方向入力装置に加えて(または代えて)、ボタン、入力装置2の姿勢を検知可能なセンサ(ジャイロセンサ等)、および/または、タッチパネルといった他の種類の入力装置を備えていてもよい。
【0039】
入力装置2は、ユーザの操作を検出し、ユーザの操作を表す操作データを情報処理装置3へ送信する。本実施形態においては、操作データは、スティック11の出力値のデータを含む。
【0040】
情報処理システム1は情報処理装置3を含む。情報処理装置3は、情報処理システム1において実行される情報処理(後述する指示位置算出処理)を実行する。情報処理装置3は、パーソナルコンピュータ、ゲーム装置、携帯端末、スマートフォン等、どのような形態の情報処理装置であってもよい。情報処理装置3は、入力装置2およびテレビ4と通信可能である。なお、情報処理装置3と入力装置2またはテレビ4との通信は、有線であってもよいし無線であってもよい。
【0041】
図1に示すように、情報処理装置3は、CPU14、メモリ15、および、プログラム記憶部16を備える。CPU14は、メモリ15を用いて所定の情報処理プログラムを実行することによって、上記情報処理を実行する。詳細は後述するが、本実施形態における上記情報処理は、上記操作データに基づいて指示位置を算出する操作位置算出処理である。なお、指示位置は、テレビ4に表示される仮想空間内の位置であって、ユーザによって操作される位置である。また、情報処理装置3は、情報処理を実行することが可能な任意の構成でよく、例えば情報処理の一部または全部が専用回路によって実行されてもよい。本実施形態においては、上記情報処理によって情報処理装置3が画像を生成し、生成された画像が情報処理装置3からテレビ4へ出力される。
【0042】
プログラム記憶部16は、上記情報処理プログラムを記憶する。プログラム記憶部16は、CPU14がアクセス可能な任意の記憶装置(記憶媒体)である。プログラム記憶部16は、例えばハードディスク等の、情報処理装置3に内蔵される記憶部であってもよいし、例えば光ディスク等の、情報処理装置3に着脱可能な記憶媒体であってもよい。
【0043】
テレビ4は、画像を表示する表示装置の一例である。情報処理装置3からテレビ4へ画像が送信されてくる場合、テレビ4は当該画像を表示する。
【0044】
上記情報処理システム1においては、入力装置2に対する入力に応じて情報処理装置3が情報処理を実行し、実行の結果得られた画像がテレビ4に表示される。このように、本実施形態においては、情報処理システム1は、入力機能、情報処理機能、および表示機能が複数の装置によって実現される構成である。なお、他の実施形態においては、これらの機能のうち複数の機能が単一の情報処理装置によって実現されてもよい。例えば、情報処理システム1は、入力装置2および情報処理装置3に代えて、入力機能および情報処理機能を有する単一の情報処理装置(例えば、携帯型の情報処理端末等)を含んでいてもよい。
【0045】
また、他の実施形態においては、情報処理装置3で実行される情報処理が複数の装置によって実行されてもよい。例えば、他の実施形態においては、情報処理装置3において実行される情報処理の少なくとも一部が、ネットワーク(広域ネットワークおよび/またはローカルネットワーク)によって通信可能な複数の装置によって分散して実行されてもよい。
【0046】
[2.本実施形態における処理の概要]
以下、本実施形態において実行される情報処理の概要について説明する。本実施形態においては、情報処理システム1は、仮想空間内における指示位置をユーザの入力に基づいて算出(制御)する情報処理を実行する。ここで、本実施形態においては、指示位置がゲーム操作に用いられる場合を例として説明する。すなわち、本実施形態においては、仮想のゲーム空間がテレビ4に表示され、ゲーム空間内において指示位置が算出される場合を例として説明する。
【0047】
(2−1:ゲーム画像の概要)
図2は、テレビ4の画面に表示されるゲーム画像の一例を示す図である。
図2に示すように、画面には、ユーザによって操作されるプレイヤキャラクタ21が配置された仮想空間(ゲーム空間)が表示される。本実施形態においては、プレイヤキャラクタ21は、画面上における所定位置(具体的には、画面中央よりやや下の位置)に表示される。また、
図2に示すように、仮想空間内においてポインタ画像22が表示される。ポインタ画像22は、指示位置を示す。さらに、本実施形態においては、プレイヤキャラクタ21から指示位置までを結ぶ線23が表示される。詳細は後述するが、スティック11に対する操作に応じて、ポインタ画像22が移動するとともに、線23が変化する。なお、本実施形態においては、指示位置を示す画像(上記ポインタ画像22および線23)が表示されるが、他の実施形態においては、指示位置を示す画像は表示されなくてもよい。
【0048】
また、ユーザによる所定の動作指示に応じて、指示位置に対して所定の処理(ゲーム処理)が実行される。例えば、情報処理システム1は、上記動作指示に応じて、指示位置に対してプレイヤキャラクタ21に攻撃動作を行わせたり、他のキャラクタ(仲間のキャラクタ等)を指示位置へ移動させたりする。
【0049】
(2−2:指示位置の制御の概要)
次に、
図3および
図4を参照して、ユーザの入力に応じて指示位置を移動させる方法の概要について説明する。
図3は、指示位置が移動する前の状態におけるゲーム画像の一例を示す図である。
図3に示す状態では、仮想空間に配置される壁26上に指示位置Ps1がある。以下では、この状態において、右方向を指示する入力(具体的には、スティック11を右に傾倒する入力)が行われた場合を例として説明する。
【0050】
入力装置2(スティック11)に対して方向を指示する入力が行われると、情報処理システム1は、当該入力に基づいて入力位置(
図3に示す位置Pi2)を算出する。入力位置は、画面上の位置として算出される。すなわち、入力位置は、画面上の位置を示す2次元座標によって表される。なお、ユーザの入力に基づく入力位置の算出方法は任意である。本実施形態においては、入力位置Pi2は、移動前(入力前)における指示位置Ps1に対応する画面上の位置を、入力に応じた位置および方向へ移動させた位置として算出される。具体的には、入力位置Pi2は、画面上において、スティック11の傾倒方向に応じた方向へ、傾倒量に応じた量だけ指示位置Ps1を移動させた位置となる。
図3に示す例においては、右方向を指示する入力が行われるので、入力位置Pi2は、入力前の指示位置Ps1が画面上において右方向へ移動した位置となる。このように、本実施形態においては、入力位置の算出(制御)は、画面に対応する2次元平面において行われる。
【0051】
なお、
図3に示す仮想空間においては、プレイヤキャラクタ21の前方には、壁と壁の間から突き出た足場24があり、足場24の先は崖になっている。そのため、画面上は、プレイヤキャラクタ21から遠く離れた地面25が足場24の向こうに表示されている。
図3に示す例では、入力位置Pi2は、この地面25を指している。つまり、入力位置Pi2に対応する仮想空間内の位置は、地面25上の位置となっている。
【0052】
図4は、
図3に示す状態から指示位置が移動した後の状態におけるゲーム画像の一例を示す図である。上記のようにして入力位置Pi2が算出されると、情報処理システム1は、入力位置Pi2に基づいて指示位置を算出する。なお、指示位置は、仮想空間内の位置として算出される。すなわち、指示位置は、仮想空間内の位置を示す3次元座標によって表される。ここで、本実施形態においては、以下に示す範囲条件および距離条件を満たすように指示位置が算出される。
・範囲条件:画面上において、プレイヤキャラクタ21の位置と、入力位置とを結ぶ線分上の範囲内となること
・距離条件:仮想空間において、プレイヤキャラクタ21からの距離が所定距離内となること
なお、
図3および
図4に示す例では、地面25はプレイヤキャラクタ21から上記所定距離よりも離れており、地面25の位置は距離条件を満たさないものとする。したがって、このとき、上記範囲条件および距離条件を満たす指示位置Ps2は、画面上においてプレイヤキャラクタ21の位置から入力位置Pi2を結ぶ線分上となる位置であって、仮想空間において地面25ではない位置となる。すなわち、
図4に示されるように、指示位置Ps2は、壁26上の位置となる。なお、本実施形態においては、指示位置Ps2は、上記線分上で、プレイヤキャラクタ21から離れた位置となるように算出される(詳細は後述する)。
【0053】
また、
図3および
図4の例では示されないが、入力位置が範囲条件および距離条件を満たす場合、情報処理システム1は、入力位置に対応する仮想空間内の位置を指示位置とする。
【0054】
以上のように、本実施形態においては、ユーザの方向入力に応じて指示位置が移動される場合、入力位置(に対応する仮想空間内の位置)がそのまま指示位置とならない場合がある。具体的には、本実施形態においては、仮想空間内の距離に関してプレイヤキャラクタ21から遠い位置が指示位置とならないように、上記距離条件を考慮して指示位置が算出される。ここで、指示位置を移動させる操作に関しては、例えば画面の右上から左下まで指示位置を移動させる場合のように、指示位置を大きく動かす場合には時間を要するおそれがある。そのため、指示位置を大きく動かす場合には、時間を要するために操作性が悪いとユーザが感じるおそれがある。これに対して、本実施形態によれば、距離条件によって指示位置の取り得る範囲が制限されるので、指示位置を大きく動かさなければならない状況が生じにくくなる。したがって、ユーザは指示位置の操作をより快適に行うことができ、操作性を向上することができる。
【0055】
また、本実施形態においては、プレイヤキャラクタ21から所定距離よりも遠い領域が指示位置の取り得る範囲から排除される。このような領域は、ユーザが指示位置として指定する必要性が小さいと推測することができ、このような領域を指示位置として指定できないとしても、ユーザにとって不都合は少ない(あるいは無い)と考えられる。むしろ場合によっては、このような領域が指定できないことによってユーザにとって都合が良いと考えられる。したがって、本実施形態によれば、操作の際に生じる不都合が小さく(あるいは不都合が無く)、かつ、操作性の良い操作方法を提供することができる。
【0056】
また、本実施形態においては、上記範囲条件を用いることによって、画面上におけるプレイヤキャラクタ21の位置から見た入力位置Pi2の向きと指示位置Ps2の向きとが同じ方向となる(
図4参照)。詳細は後述するが、これによって、ユーザが違和感を抱きにくい、操作性の良い操作方法を提供することができる。
【0057】
以上のように、情報処理システム1は、距離条件を満たす位置であって、かつ、範囲条件を満たす位置を、指示位置として入力位置に基づいて算出する。これによって、情報処理システム1は、上述した効果を奏し、画面上の指示位置を指定する操作の操作性を向上することができる。
【0058】
[3.指示位置の算出]
次に、指示位置の算出方法の詳細について説明する。なお、以下においても、
図3および
図4に示す状況と同じ状況を例として用いて説明を行う。
【0059】
(3−1:入力位置の算出)
まず、指示位置を算出するために用いられる入力位置の算出方法の詳細について説明する。入力位置は、スティック11に対する方向指示入力に応じて算出される。上述のように、本実施形態においては、新たな入力位置は、現在の指示位置に対応する画面上の位置を、方向指示入力に応じた位置および方向へ移動させた位置として算出される。
【0060】
上記のように、本実施形態においては、新たな入力位置は、最後に算出された指示位置を基準として算出される。すなわち、情報処理システム1は、方向入力装置(スティック11)から入力情報を取得し、最後に算出された指示位置の画面上における位置を入力情報が示す方向へ移動させた位置となるように、入力情報に基づいて新たな入力位置を算出する。そして、新たな指示位置は、上記新たな入力位置に基づいて算出される。このように、前回の指示位置から、指示された入力方向へ移動した位置を新たな入力位置とすることで、ユーザにとってわかりやすい位置となるように入力位置を算出することができる。
【0061】
また、本実施形態においては、ユーザの入力に基づいて入力位置Pi2が算出されると、入力位置Pi2は、画面上における所定の制限領域内に位置するように補正される。
図5は、入力位置を補正するための制限領域の一例を示す図である。
図5に示すように、本実施形態においては、画面上において制限領域30が設定される。制限領域30は、画面上における所定位置(例えば画面中央の位置)を基準として設定されてもよいし、プレイヤキャラクタ21に対応する画面上の位置を基準として設定されてもよい。
【0062】
ユーザの入力に基づいて入力位置が算出されると、情報処理システム1は、入力位置が制限領域30内に含まれるか否かを判定する。
図5に示す入力位置Pi2のように、入力位置が制限領域30内である場合、入力位置Pi2に対する補正は行われない。一方、入力位置が制限領域30外である場合、制限領域30内に含まれるように入力位置Pi2に対する補正が行われる。補正の具体的な方法は任意であるが、本実施形態においては、以下の方法によって補正が行われる。例えば、
図5に示す指示位置Ps5が設定されている状態において、ユーザの入力に基づいて入力位置Pi6が算出された場合を例として説明する。この場合、補正後の入力位置Pi7は、最新の指示位置Ps5と補正前の入力位置Pi6とを結ぶ線分上であって制限領域30内の位置となるように算出される。
【0063】
上記のように、本実施形態においては、入力位置が制限領域30内に補正されるので、入力位置に基づいて算出される指示位置の画面上における位置は制限領域30内となる。つまり、情報処理システム1は、指示位置に対応する画面上の位置が画面上における制限領域30内となるように、指示位置を算出する。これによれば、上記距離条件による方法とは別の方法で、指示位置の取り得る範囲を制限領域30内に制限することができる。したがって、指示位置を大きく動かさなければならない状況をより生じにくくすることができるので、指示位置を指定する操作の操作性をより向上することができる。なお、他の実施形態においては、制限領域30を用いた入力位置の補正処理は実行されなくてもよい。
【0064】
(3−2:指示位置の算出)
上記制限領域30を用いた補正によって入力位置が(必要に応じて)補正されると、情報処理システム1は、入力位置に基づいて指示位置を算出する。上述のように、指示位置は、上記距離条件および範囲条件を満たすように算出される。ここで、本実施形態においては、情報処理システム1は、画面上におけるプレイヤキャラクタ21の位置(「キャラクタ位置」と呼ぶ。)Pcと入力位置Pi2とを結ぶ線分上で二分探索法を用いて候補位置を算出する。そして、候補位置のうちから上記距離条件を満たすものと指示位置とする。以下、本実施形態における指示位置の算出方法の詳細について説明する。
【0065】
図6は、指示位置を算出する途中の状態の一例を示す図である。本実施形態においては、まず情報処理システム1は、画面上におけるキャラクタ位置Pcから入力位置Pi2までの線分上を探索範囲とし、当該探索範囲の中点となる位置Pm1を1回目の候補位置として算出する。そして、情報処理システム1は、1回目の候補位置である位置Pm1について上記距離条件を満たすか否かを判定する。すなわち、情報処理システム1は、候補位置Pm1に対応する仮想空間内での位置を算出し、プレイヤキャラクタ21の位置から、算出された位置までの距離が、上記所定距離以下であるか否かを判定する。
【0066】
次に、情報処理システム1は、上記1回目の候補位置Pm1についての判定結果に応じて、2回目の候補位置を算出する。
図7は、候補位置の決定方法の一例を示す図である。本実施形態においては、1回目の候補位置Pm1が距離条件を満たす場合、現在の探索範囲のうちで、(キャラクタ位置Pcから見て)候補位置Pm1よりも奥側の半分を新たな探索範囲とし、新たな探索範囲の中点を2回目の候補位置Pm2とする。すなわち、この場合、2回目の候補位置Pm2は、1回目の候補位置Pm1と入力位置Pi2との中点の位置に決定される(
図7に示す(a))。一方、1回目の候補位置Pm1が距離条件を満たさない場合、現在の探索範囲のうちで、(キャラクタ位置Pcから見て)候補位置Pm1よりも手前側の半分を新たな探索範囲とし、新たな探索範囲の中点を2回目の候補位置Pm2とする。すなわち、この場合、2回目の候補位置Pm2は、1回目の候補位置Pm1とキャラクタ位置Pcとの中点の位置に決定される(
図7に示す(b))。なお、2回目の候補位置Pm2についても1回目の候補位置Pm1と同様、距離条件を満たすか否かが判定される。
【0067】
本実施形態においては、情報処理システム1は、候補位置の決定処理と、新たに決定された候補位置に関する判定処理(候補位置が距離条件を満たすか否かの判定)とを、所定の終了条件が満たされるまで繰り返す。なお、本実施形態においては、終了条件は、上記決定処理と判定処理を所定回数(例えば7回)だけ実行したことである。終了条件が満たされると、情報処理システム1は、距離条件を満たす候補位置であって最後に算出された候補位置に対応する仮想空間内の位置を、指示位置とする。すなわち、本実施形態においては、距離条件を満たす候補位置のうちで、キャラクタ位置Pcから最も遠い候補位置に対応する仮想空間内の位置が指示位置となる。
【0068】
なお、3回目以降の候補位置を算出する方法は2回目の候補位置を算出する方法と同様である。すなわち、n回目(nは1以上の整数)の候補位置Pm(n)が距離条件を満たす場合、n回目の探索範囲のうちで候補位置Pm(n)よりも奥側の半分を新たな探索範囲とし、新たな探索範囲の中点が(n+1)回目の候補位置Pm(n+1)として設定される。一方、n回目の候補位置Pm(n)が距離条件を満たさない場合、n回目の探索範囲のうちで候補位置Pm(n)よりも手前側の半分を新たな探索範囲とし、新たな探索範囲の中点が(n+1)回目の候補位置Pm(n+1)として設定される。例えば、
図7に示す(a)の場合において、2回目の候補位置Pm2が距離条件を満たす場合、3回目の候補位置Pm3は、2回目の候補位置Pm2と入力位置Pi2との中点の位置に決定される(
図7に示す(c))。一方、2回目の候補位置Pm2が距離条件を満たさない場合、3回目の候補位置Pm3は、1回目の候補位置Pm1と2回目の入力位置Pi2との中点の位置に決定される(
図7に示す(d))。
【0069】
また、上記終了条件の内容は任意である。例えば他の実施形態においては、ある候補位置と次に算出される候補位置との差が所定値以下になったことを終了条件としてもよい。上記の差は、画面上の距離であってもよいし、仮想空間内の距離であってもよい。
【0070】
以上のように、本実施形態においては、情報処理システム1は、範囲条件を満たす(キャラクタ位置Pcと入力位置Pi2との線分上となる)1以上の候補位置を入力位置に基づいて算出する。そして、候補位置のうちで距離条件を満たす候補位置に対応する仮想空間内の位置を、指示位置として決定する。これによれば、範囲条件および距離条件を満たす指示位置を容易に算出することができる。
【0071】
また、本実施形態においては、情報処理システム1は、画面上における基準位置(キャラクタ位置Pc)と入力位置とについて二分探索法を用いることによって、所定の終了条件が満たされるまで候補位置を繰り返し算出する。また、情報処理システム1は、候補位置が算出される毎に距離条件を満たすか否かを判定し、距離条件を満たす候補位置から指示位置を決定する。このように、二分探索法を用いて候補位置を算出することによって、候補位置を効率良く決定することができ、指示位置の算出処理を効率良く行うことができる。
【0072】
なお、候補位置を用いて指示位置を算出する方法は、本実施形態のような二分探索法を用いる方法に限らない。例えば他の実施形態においては、情報処理システム1は、キャラクタ位置Pcから入力位置Pi2までの線分上において所定の間隔で候補位置を設定し、各候補位置について距離条件を判定してもよい。そして、情報処理システム1は、距離条件を満たす候補位置のうちから指示位置を選択する(例えば、キャラクタ位置Pcから最も離れた候補位置を指示位置とする)ようにしてもよい。
【0073】
また、本実施形態においては、距離条件を満たす候補位置のうちで基準位置(プレイヤキャラクタ21の位置)から最も離れた位置に対応する仮想空間内の位置が指示位置として決定される。したがって、候補位置のうちで入力位置に最も近いものが指示位置となる。これによれば、ユーザが指示した方向と、指示位置の移動方向とのずれを小さくすることができるので、ユーザにとって違和感が少なく、操作性の良い操作方法を提供することができる。
【0074】
なお、他の実施形態においては、指示位置は、候補位置を用いない方法で算出されてもよい。例えば、情報処理システム1は、上記範囲条件を満たす仮想空間内の位置のうちで、画面上における距離が基準位置から最も離れた位置(かつ、距離条件を満たす位置)を指示位置としてもよい。具体的には、情報処理システム1は、まず、範囲条件を満たし、かつ、距離条件を満たす仮想空間内の領域を算出する。次に、情報処理システム1は、算出された領域のうちで、画面上における距離が基準位置から最も遠い位置を指示位置とする。これによっても本実施形態と同様、ユーザが指示した方向と、指示位置の移動方向とのずれを小さくすることができる。なお、このとき、指示位置は、厳密な意味で「最も離れた位置」である必要はない。指示位置は、上記特定された領域のうちで、画面上における距離が基準位置から最も離れた位置の付近の位置(最も離れた位置から所定距離内の位置)であってもよい。これによっても本実施形態と同様、ユーザが指示した方向と、指示位置の移動方向とのずれを小さくする効果を有する。
【0075】
なお、本実施形態においては、候補位置に関して距離条件を判定する場合、候補位置Pm1に対応する仮想空間内での位置として、画面に表示されている位置が算出される。つまり、情報処理システム1は、画面に仮想空間を表示する場合の視点の位置から直線を延ばした場合に当該直線が最初に接触した位置を候補位置とする。そのため、指示位置は、仮想空間内の位置のうち、画面に表示されている位置となる。これによれば、画面に表示されている位置が指示位置となるので、仮想空間内に配置されるオブジェクトによって指示位置が隠れてしまうことなく、指示位置をユーザにわかりやすく提示することができる。
【0076】
(3−3:範囲条件)
上述のように、本実施形態においては、情報処理システム1は、「画面上において、プレイヤキャラクタ21の位置と、入力位置とを結ぶ線分上の範囲内となること」を範囲条件として用いる。ここで、範囲条件は、指示位置に対応する画面上の位置が、基準位置(プレイヤキャラクタ21の位置)に対応する画面上の位置と入力位置とによって決められる範囲内となることを示す任意の条件でよい。
【0077】
ここで、本実施形態においては、入力位置と指示位置とが対応しない(画面上において同じ位置にならない)場合があり、ユーザの指示した入力方向と指示位置の移動方向とが一致しない場合がある。例えば、
図3および
図4に示す例では、スティック11に対して右方向の入力が行われるのに対して、ポインタ画像22は下方向へ移動する。そのため、ユーザは指示位置の移動先を予測しにくく、指示位置の挙動に違和感を抱くおそれがある。
【0078】
これに関して、本実施形態においては、情報処理システム1は、「指示位置に対応する画面上の位置が、基準位置に対応する画面上の位置と入力位置との間の所定範囲内となること」を範囲条件として用いる。これによれば、指示位置は基準位置と入力位置との間の範囲内となるので、基準位置から見た入力位置の向きと指示位置の向きとが概ね同じ方向となる。したがって、画面上において入力位置と指示位置とが同じ位置にならない場合でもユーザが違和感を抱きにくくなるので、操作性の良い操作方法を提供することができる。
【0079】
なお、本実施形態における範囲条件は、上記所定の範囲を、キャラクタ位置Pcと入力位置Pi2とを結ぶ線分上の範囲とした範囲条件である。つまり、本実施形態における範囲条件は、指示位置に対応する画面上の位置が、基準位置に対応する画面上の位置と入力位置とを結ぶ線分上に位置することである。これによれば、上記線分上から指定位置を容易に算出することができる。
【0080】
なお、上記所定範囲は、例えば、キャラクタ位置Pcと入力位置Pi2とを結ぶ線分から所定距離以内の範囲として設定されてもよい。これによれば、上記線分から少し外れた位置が指示位置となり得る。そのため、場合によっては、画面上での距離が入力位置Pi2により近い位置を指示位置とすることができ、それによってユーザの違和感をより抑えることができる。
【0081】
(3−4:距離条件)
上述のように、本実施形態においては、情報処理システム1は、「仮想空間において、プレイヤキャラクタ21からの距離が所定距離内となること」を距離条件として用いた。これによれば、指示位置が取り得る範囲を、プレイヤキャラクタ21から所定距離内となる範囲に容易に制限することができる。
【0082】
また、本実施形態においては、情報処理システム1は、仮想空間における「基準位置から指示位置までの距離」として、仮想空間における所定平面(例えば地面と平行な平面)上での距離を用いてもよい。つまり、情報処理システム1は、仮想空間における所定平面に関する距離が基準位置から所定距離内となることを距離条件として、指示位置を算出してもよい。これによれば、情報処理システム1は、所定平面と垂直な方向の長さを無視して距離条件を判定することとなる。例えば、地面を所定平面とする場合、プレイヤキャラクタ21の位置から段差がある(高さ方向に差がある)位置を指示位置とすることができる。
【0083】
距離条件は、仮想空間における所定の基準位置からの距離に関する任意の条件でよい。本実施形態においては、基準位置はプレイヤキャラクタ21の位置であったが、他の実施形態においては、基準位置は他の位置であってもよい。例えば、画面の中央に対応する仮想空間内の位置が基準位置に設定されてもよいし、ユーザが設定した位置が基準位置に設定されてもよい。
【0084】
また、本実施形態においては、指示位置が基準位置から所定距離内となることを条件としたが、他の実施形態においては、距離条件の内容はこれに限らない。例えば他の実施形態においては、情報処理システム1は、キャラクタ位置Pcと入力位置Pi2とを結ぶ線分上をキャラクタ位置Pcから進んだ場合に「(仮想空間における)基準位置からの距離」が急激に変化する(変化量が所定値以上となる)位置を特定し、当該位置の手前の位置を指示位置としてもよい。例えば
図3に示す例においては、プレイヤキャラクタ21と入力位置Pi2を結ぶ線分上において、仮想空間での位置が壁26から地面25に変化する箇所で、「基準位置からの距離」が急激に変化する。そのため、上記の方法によっても本実施形態と同様に、壁26の位置を指示位置として算出することができる。このように、距離条件として、基準位置からの距離の変化量に関する条件が用いられても良い。
【0085】
(3−5:許可領域)
次に、本実施形態において指示位置の算出に用いられる許可領域について説明する。本実施形態においては、情報処理システム1は、上記距離条件を単に用いるのではなく、許可領域を考慮した距離条件をゲーム状況に応じて用いる。詳細は後述するが、許可領域とは、画面上において(画面に対応する平面において)設定される領域であり、上記“(2−2:指示位置の制御の概要)”で述べた距離条件を満たさない場合でも、許可領域内の位置であれば指示位置となり得る。
【0086】
図8は、距離条件が満たされる範囲の一例を示す図である。上述のように、距離条件は、「プレイヤキャラクタ21から所定距離以内であること」であるので、
図8に示す例においては、画面に表示される仮想空間のうちで距離条件を満たす範囲は、領域31の範囲(
図8において斜線で示す範囲)となる。ここで、
図8においては、仮想空間を表示するための視線(仮想カメラの視線)の地面に対する俯角が、
図3に示す場合よりも小さい。そのため、画面上で見ると領域31は、プレイヤキャラクタ21の前方(画面上においては上側)にはあまり広がっていない。
図8に示す例においては、地面がほぼ平らであり、プレイヤキャラクタ21のはるか前方まで地面が広がっているにも関わらず、プレイヤキャラクタ21の前方については広い範囲で指示位置を移動させることができない。そのため、ユーザは、指示位置を十分に移動させることができず、操作を行いにくいと感じるおそれがある。
【0087】
そこで、本実施形態においては、情報処理システム1は、仮想カメラの俯角が所定角度以下となる場合には、許可領域を設定する。
図9は、許可領域の一例を示す図である。
図9においては、画面上において許可領域32が設定されている。許可領域32は、どのような範囲に設定されてもよいが、本実施形態においては、上記基準位置(プレイヤキャラクタ21の位置)に対応する画面上の位置を基準に設定される。すなわち、プレイヤキャラクタ21を中心とする楕円領域が許可領域32として設定される。なお、許可領域32は、上述した制限領域30よりも狭い(すなわち、許可領域32は制限領域30内に含まれる)ように設定される。
【0088】
上記許可領域32が設定される場合、情報処理システム1は、許可領域32を考慮した距離条件を用いて指示位置の算出を行う。つまり、仮想空間内におけるある位置が、プレイヤキャラクタ21から所定距離以内とならない場合であっても、画面上において許可領域32内に含まれる場合には、当該位置が距離条件を満たすと判断される。したがって、許可領域32内においては指示位置を移動させることが可能となる。
図10は、
図9に示す領域31および許可領域32の一例を真上から見た図である。
図9および
図10に示すように、許可領域32を設定することによって、ユーザは、プレイヤキャラクタ21の前方においてより広い範囲を指示位置とすることが可能となる。
【0089】
許可領域32が設定される場合、指示位置の算出処理において用いられる距離条件は、「指示位置に対応する画面上の位置が許可領域内となるか、または、指示位置が仮想空間においてプレイヤキャラクタの位置から所定距離内となること」である。すなわち、候補位置が距離条件を満たすか否かの判断は、許可領域32が設定されない場合とは異なる。より具体的には、情報処理システム1は、候補位置に対応する画面上の位置が許可領域32内となる場合、距離条件が満たされると判定する。また、候補位置がプレイヤキャラクタ21から所定距離以内となる場合も、距離条件が満たされると判定する。一方、候補位置に対応する画面上の位置が許可領域32内とならず、かつ、候補位置がプレイヤキャラクタ21から所定距離以内とならない場合、距離条件が満たされないと判定する。なお、候補位置を算出する方法は、許可領域32が設定される場合も許可領域32が設定されない場合と同じである。
【0090】
以上のように、本実施形態においては、(所定条件下で)許可領域32を考慮した距離条件が用いられる。つまり、情報処理システム1は、指示位置に対応する画面上の位置が、基準位置(プレイヤキャラクタ21の位置)に対応する画面上の位置を基準とする許可領域32内となるか、または、指示位置が仮想空間において基準位置から所定距離内となることを距離条件として用いて指示位置を算出する。これによれば、許可領域32内の範囲については、仮想空間における距離に関わらず、指示位置として指定することが可能となる。これによって、指示位置を移動させる操作の操作性をより向上することができる。
【0091】
なお、本実施形態においては、情報処理システム1は、仮想空間を画面に表示するための仮想カメラの俯角が所定角度以下である場合には許可領域32を設定し、当該俯角が所定角度より大きい場合には許可領域32を設定しない。ここで、許可領域32を設定するか否か(許可領域32を考慮した距離条件を用いるか否か)の条件は任意である。例えば、情報処理システム1は、ユーザの指示に応じて許可領域32の設定/非設定が切り替えられてもよい。また、プレイヤキャラクタの状態(例えば、指示位置に対して行われるプレイヤキャラクタの動作等)に応じて許可領域32の設定/非設定を切り替えられてもよい。また、他の実施形態においては、許可領域32が常に設定されてもよいし、許可領域32が常に設定されなくてもよい。
【0092】
また、本実施形態においては、許可領域32の位置および大きさは、画面上において固定であるが、他の実施形態においては、許可領域32の位置および/または大きさは可変であってもよい。例えば、他の実施形態においては、情報処理システム1は、プレイヤキャラクタの状態(例えば、指示位置に対して行われるプレイヤキャラクタの動作等)に応じて許可領域32の位置および/または大きさを変更してもよい。例えば、プレイヤキャラクタ21が、自身の近くでしか使用できないアイテムを使用可能な状態である場合には、許可領域32を相対的に小さくし、自身から離れた位置で使用できるアイテムを使用可能な状態である場合には、許可領域32を相対的に大きくしてもよい。
【0093】
[4.指示位置算出処理の具体例]
以下、本実施形態において情報処理システム1(情報処理装置3)で実行される指示位置算出処理の具体的な一例について説明する。
図11は、本実施形態において情報処理装置3(CPU14)が実行する指示位置算出処理の流れの一例を示すフローチャートである。本実施形態においては、
図11に示す一連の処理は、CPU14が、プログラム記憶部16に記憶される情報処理プログラムを実行することによって行われる。
【0094】
図11に示す指示位置算出処理が開始されるタイミングは任意である。本実施形態においては、上記情報処理プログラムが、所定のゲームプログラムの一部として構成されるものとする。このとき、
図11に示す指示位置算出処理は、例えば上記ゲームプログラムの実行を開始する指示をユーザが行ったことに応じて開始される。また、情報処理プログラム(ゲームプログラム)は、適宜のタイミングでその一部または全部がメモリ15に読み出され、CPU14によって実行される。これによって、
図11に示す一連の処理が開始される。なお、上記情報処理プログラムは、情報処理装置3内のプログラム記憶部16に予め記憶されているものとする。ただし、他の実施形態においては、情報処理プログラムは、情報処理装置3に着脱可能な記憶媒体から取得されてメモリ15に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてメモリ15に記憶されてもよい。
【0095】
なお、
図11に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPUが実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU以外のプロセッサや専用回路が実行するようにしてもよい。
【0096】
指示位置算出処理においては、まずステップS1において、CPU14は、操作データを取得する。すなわち、CPU14は、スティック11の出力値のデータを含む操作データを入力装置2から受信し、受信した操作データをメモリ15に記憶する。ステップS1の次にステップS2の処理が実行される。
【0097】
ステップS2において、CPU14は、ステップS1で取得した操作データに基づいて入力位置を算出する。本実施形態においては、入力位置は、上記“(2−2:指示位置の制御の概要)”および“(3−1:画面上での入力位置の制限)”で述べた方法に従って算出される。CPU14は、操作データをメモリ15から読み出し、操作データに基づいて算出した入力位置を示すデータをメモリ15に記憶する。ステップS2の次にステップS3の処理が実行される。
【0098】
ステップS3において、CPU14は、許可領域を設定するか否かを判定する。具体的には、仮想カメラの視線方向の俯角が所定角度以下であるか否かを判定する。なお、仮想カメラの視線方向は、後述するステップS7の処理において設定・変更される。ステップS3における判定結果が否定である場合、ステップS4の処理が実行される。一方、ステップS3における判定結果が肯定である場合、ステップS5の処理が実行される。
【0099】
ステップS4において、CPU14は、許可領域を設定せずに指示位置を算出する。すなわち、上記“(3−2:指示位置の算出)”で述べた方法に従って指示位置が算出される。具体的な処理としては、CPU14は、メモリ15から読み出した入力位置のデータに基づいて指示位置を算出し、算出した指示位置を示すデータをメモリ15に記憶する。ステップS4の次に、後述するステップS6の処理が実行される。
【0100】
ステップS5において、CPU14は、許可領域を設定して指示位置を算出する。すなわち、上記“(3−2:指示位置の算出)”および“(3−5:許可領域)”で述べた方法に従って指示位置が算出される。具体的な処理としては、CPU14は、メモリ15から読み出した入力位置のデータに基づいて指示位置を算出し、算出した指示位置を示すデータをメモリ15に記憶する。ステップS5の次に、後述するステップS6の処理が実行される。
【0101】
ステップS6において、CPU14は、指示位置を示す画像を表示する。具体的には、CPU14は、仮想空間における指示位置に、ポインタ画像を表すオブジェクトを配置し、プレイヤキャラクタ21から指示位置までを結ぶ線のオブジェクトを配置する。これによって、後述する表示処理(ステップS7)によって、画面上にポインタ画像22および線23が表示される。ステップS6の次に、後述するステップS7の処理が実行される。
【0102】
ステップS7において、CPU14は、他の情報処理(上記ステップS1〜S6における処理以外のゲーム処理)を実行する。他の情報処理としては、例えば、ユーザによる入力に従ってプレイヤキャラクタ21の動作を制御する処理、所定のアルゴリズムに従ってプレイヤキャラクタ21以外の他のキャラクタの動作を制御する処理、仮想カメラの位置(視点)および姿勢(視線方向)を制御する処理、および、仮想カメラに基づいてゲーム画像を生成してテレビ4に表示させる処理等がある。ステップS7の次にステップS8の処理が実行される。
【0103】
ステップS8において、CPU14は、指示位置算出処理を終了するか否かを判定する。この判定の具体的な方法は任意である。例えば、ゲームプログラムの実行を終了する旨の指示がユーザによって行われた場合には、CPU14は、指示位置算出処理を終了すると判定し、ユーザによる当該指示がない場合には、操作位置算出処理を終了しないと判定する。ステップS8の判定結果が否定である場合、ステップS1の処理が再度実行される。以降、ステップS8において操作位置算出処理を終了すると判定されるまで、ステップS1〜S8の処理が繰り返し実行される。一方、ステップS8の判定結果が肯定である場合、CPU14は、
図11に示す指示位置算出処理を終了する。
【0104】
[5.変形例]
(指示位置に基づく情報処理に関する変形例)
本実施形態においては、上述の方法で算出された指示位置に基づく情報処理の一例として、指示位置を示す画像を表示する(指示位置を示すオブジェクトを配置する)処理が実行された。ここで、指示位置に基づく情報処理の内容は任意である。例えば、他の実施形態においては指示位置を示す画像は表示されなくてもよく、情報処理システム1は、仮想空間に配置されるオブジェクトに、指示位置に対して何らかの動作(例えば、指示位置へ移動する動作や、指示位置に対する射撃動作)を行わせる処理を実行してもよい。
【0105】
また、本実施形態においては、ゲームを進行するためのゲーム処理に対して、指示位置算出処理が用いられる場合を例として説明したが、本実施形態における指示位置算出処理は、ゲーム処理以外の任意の情報処理に用いることが可能である。
【0106】
(入力装置に関する変形例)
上記実施形態においては、方向を入力することが可能な方向入力装置(スティック11)に対する入力に基づいて入力位置を算出する場合を例として説明した。ここで、他の実施形態においては、方向入力装置とは異なる種類の入力装置に対する入力に基づいて入力位置が算出されてもよい。例えば他の実施形態においては、情報処理システム1は、ポインティングデバイス(タッチパネルやマウス等)によって指定された位置を入力位置として算出するようにしてもよい。