以下、図面を参照して、本発明の実施形態を説明する。各図において同一の符号は、特に言及が無い限り同一又は相当部分を示すものとし、説明の便宜上、図面の縦横の縮尺を実際のものとは異なるように表す場合がある。また、説明の便宜上、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成についての重複説明を省略する場合がある。
本発明の一実施形態による電子装置10は、仮想空間に配置された仮想的なオブジェクトをユーザに提示し、ゲームを進行するゲームアプリケーションがインストールされている。電子装置10は、当該ゲームアプリケーションが実行されると、ユーザの操作に応じて、仮想空間内のユーザの操作対象の仮想的なオブジェクトである操作対象オブジェクトを制御するための仮想的なコントローラ(仮想コントローラ)を提供する。仮想空間及び仮想コントローラは、当該ゲームアプリケーションにより定められるものであり、仮想空間は、2次元空間であることもできるし、3次元空間であることもできる。本実施形態では、操作対象オブジェクトは、仮想空間に配置されたキャラクタ(操作対象キャラクタ)である。ただし、操作対象オブジェクトは、仮想空間に配置されたアイテム又は仮想カメラなどとすることもできる。また本実施形態では、ユーザの仮想コントローラに対する入力は、仮想空間内の操作対象キャラクタに対するユーザの操作を意味することができる。また本実施形態では、電子装置10は、仮想空間内の操作対象キャラクタに対するユーザの操作を支援するための仮想的なオブジェクト(仮想オブジェクト)をユーザに対して表示する。
説明の便宜上、本実施形態においては、電子装置10には上記のようなゲームアプリケーションがインストールされているものとするが、これに限定されない。電子装置10は、ユーザの操作に応じて、操作対象オブジェクトを制御することが可能なアプリケーションを実装していればよい。例えば、電子装置10には、ゲームアプリケーションの代わりに又はこれに追加して、ユーザの操作に応じて操作対象オブジェクトを動作させる入力支援アプリケーション又はシミュレーションアプリケーションが実装されてもよい。以下の説明において、アプリケーションは、アプリケーションプログラム全般を意味するものであり、スマートフォンやタブレット端末にインストールされるアプリを意味することができる。
図1は本発明の一実施形態の電子装置10のハードウェア構成を示すブロック図である。電子装置10は、プロセッサ11、入力装置12、表示装置13、記憶装置14、及び通信装置15を備える。これらの各構成装置はバス16によって接続される。なお、バス16と各構成装置との間には必要に応じてインタフェースが介在しているものとする。本実施形態において、電子装置10はスマートフォンである。ただし、電子装置10は、上記の構成を備えるものであれば、タブレット型コンピュータ、タッチパッド等の接触型入力装置を備えるコンピュータなどの端末とすることができる。
プロセッサ11は、電子装置10全体の動作を制御する。例えばプロセッサ11は、CPUである。なお、プロセッサ11としては、MPU等の電子回路が用いられてもよい。プロセッサ11は、記憶装置14に格納されているプログラムやデータを読み込んで実行することにより、様々な処理を実行する。1つの例では、プロセッサ11は、複数のプロセッサから構成される。
入力装置12は、電子装置10に対するユーザからの入力を受け付けるユーザインタフェースである。表示装置13は、プロセッサ11の制御に従って、アプリケーション画面などを電子装置10のユーザに表示するディスプレイである。本実施形態においては、スマートフォンである電子装置10は入力装置12としてタッチパネル17を備え、タッチパネル17は表示装置13としても機能し、入力装置12と表示装置13は一体となった構造である。ただし、入力装置12は、タッチパッドとすることもでき、表示装置13は、それに対応して、タッチパネル以外のディスプレイとすることもできる。
記憶装置14は、揮発性メモリ及び不揮発性メモリを含む一般的なスマートフォンが備える記憶装置である。記憶装置14は、外部メモリを含むこともできる。記憶装置14は、ゲームアプリケーションを含む各種プログラムを記憶する。例えば、記憶装置14は、オペレーティングシステム(OS)、ミドルウェア、アプリケーションプログラム、これらのプログラムの実行に伴って参照され得る各種データなどを格納する。
1つの例では、記憶装置14は、主記憶装置及び補助記憶装置を含む。主記憶装置は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、プロセッサ11が情報を処理する際の記憶領域及び作業領域として用いられる。補助記憶装置は、様々なプログラムや、各プログラムの実行に際してプロセッサ11が使用するデータを格納する。補助記憶装置は、例えばハードディスク装置であるが、情報を格納できるものであればいかなる不揮発性ストレージ又は不揮発性メモリであってもよく、着脱可能なものであっても構わない。
通信装置15は、ネットワークを介してユーザ端末又はサーバなどの他のコンピュータとの間でデータの授受を行うことが可能な無線LANモジュールである。ただし、通信装置15は、Bluetooth(登録商標)モジュールなどの他の無線用通信デバイスとすることもできるし、イーサネット(登録商標)モジュールやUSBインタフェースなどの有線用通信デバイスとすることもできる。1つの例では、電子装置10は、通信装置15によってプログラムをサーバからダウンロードして、記憶装置14に格納する。他のコンピュータとの間でデータの送受信を行わない場合、電子装置10は通信装置15を備えなくてもよい。
図2は本発明の一実施形態の電子装置10の機能ブロック図である。電子装置10は、入力部21、表示部22、コントローラ入力決定部23、コントローラ入力判定部24、及びキャラクタ状態決定部25を備える。本実施形態においては、プログラムがプロセッサ11により実行されることによりこれらの機能が実現される。例えば実行されるプログラムは、記憶装置14に記憶されている又は通信装置15を介して受信したプログラムである。このように、各種機能がプログラム読み込みにより実現されるため、1つのパート(機能)の一部又は全部を他のパートが有していてもよい。ただし、各機能の一部又は全部を実現するための電子回路等を構成することによりハードウェアによってもこれらの機能は実現してもよい。
入力部21は、入力装置12を用いて構成されるものであり、電子装置10に対するユーザからの入力を受け付ける。本実施形態では、入力部21は、タッチパネル17へのユーザのタッチ操作を受け付けてタッチイベントを発生するものである。入力部21は、スマートフォンが一般的に有する機能である。
表示部22は、ゲームアプリケーション画面(ゲーム用画面)をタッチパネル17に表示し、ユーザ操作に応じた画面を表示する。
コントローラ入力決定部23は、操作対象キャラクタ40を制御するための仮想コントローラに対する入力を決定する。コントローラ入力決定部23は、タッチパネル17を介したユーザの操作に基づいて、タッチ位置を決定し、操作対象キャラクタ40を移動させるためのユーザ入力の方向及び大きさを決定する。
コントローラ入力決定部23は、タッチパネル17へのユーザの操作により発生したタッチイベントに基づいて、第1の軸の値及び第2の軸の値により示されるデータポイントを取得する。ここで、タッチイベントは、ユーザがタッチパネル17へ指を接触したときに発生するtouchstart、ユーザがタッチパネル17に指を接触させたまま動かしたときに発生するtouchmove、ユーザがタッチパネル17から指を離したときに発生するtouchendを含む。タッチイベントは、タッチがキャンセルされた際に発生するtouchcancelを含むこともできる。
コントローラ入力決定部23は、タッチイベントが発生するときに、タッチイベントを取得する。コントローラ入力決定部23は、タッチイベントを取得するとき、タッチパネル17上の静電容量が変化した位置に対応する、2つの変数からなる数値の組(x、y)を取得して、バッファに格納する。当該2つの変数からなる数値の組のデータは、タッチイベントに付随してコントローラ入力決定部23が取得するものであり、第1の軸の値及び第2の軸の値により示されるデータポイントに対応するものである。
本実施形態では、説明の便宜上、第1の軸及び第2の軸を以下のとおり定める。図3は、本実施形態の第1の軸及び第2の軸からなる座標軸を示す図である。第1の軸は、略長方形であるタッチパネル17の短辺と実質的に平行な横軸(x軸)である。第2の軸は、タッチパネル17の長辺と実質的に平行な縦軸(y軸)である。タッチパネル17上の位置は、第1の軸(x軸)及び第2の軸(y軸)により座標(x、y)として表される。したがって、本実施形態では、データポイントの座標(x、y)は、タッチパネル17上の位置に対応し、コントローラ入力決定部23は、当該座標(x、y)を、データポイントとしてバッファに保持する。図3に示す座標設定は、一例であり、電子装置10が実装するプログラムにより、上記例示と異なるように設定することができる。
本実施形態では、コントローラ入力決定部23は、発生したタッチイベントがタッチパネル17の所定領域50内で発生したものであるか否かを判定する。コントローラ入力決定部23は、所定領域50内で発生したものであると判定したタッチイベントに基づいて、第1の軸の値及び第2の軸の値により示されるデータポイントを取得する。所定領域50は、タッチパネル17に表示される画面における所定の領域である。例えば、電子装置10は、ゲームアプリケーションが実行されると、ゲームの進行に応じて所定領域50を決定する。所定領域50は、ゲームの進行及び操作対象キャラクタ40の位置に応じて設定されてもよい。
コントローラ入力決定部23は、フレームの時間(フレーム間の時間)ごとに、その時間内に取得した1又は複数のデータポイントをデータポイント列としてバッファに格納する。フレームの時間F(秒)は、ゲームを実行するためのフレームレートに対応する時間であり、例えばフレームレートが30fpsの場合、Fは1/30秒である。
コントローラ入力決定部23がi番目のフレームにおいて保持したデータポイント列P(i)は、各データポイント
により表される。P(i)が含む各データポイントは、i番目のフレームの時間内にバッファに保持されたデータポイントである。各データポイントP
i,k(k=1〜m)のx座標の値及びy座標の値は(x
i,k,y
i,k)で表される。各データポイントは、P
i,1、P
i,2、…、P
i,mの順番にバッファに格納された時間が早いものとする。コントローラ入力決定部23は、i−1番目のP(i−1)を保持してから1フレームの時間F(秒)経過後にP(i)を保持し、更に1フレームの時間経過後にP(i+1)を保持する。変数mは、P(i)が含むデータポイントの数であるため、P(i)に応じて異なる。
コントローラ入力決定部23は、バッファに保持されているデータポイント列のうち既定の保持時間を超えたデータポイント列の保持を終了する。例えばコントローラ入力決定部23は、データポイント列のデータの保持を終了する場合、該データを削除してもよいし、該データを無効化してもよいし、又は該データに保持を終了したことを示すフラグを関連付けて適宜削除するようにしてもよい。例えばコントローラ入力決定部23は、バッファに格納するデータポイントの寿命を指定する変数Dを定める。例えばコントローラ入力決定部23は、データポイント列P(i)を保持した時間tiと対応付けて該データポイント列P(i)をバッファに保持する。コントローラ入力決定部23は、一のデータポイント列P(i)をバッファに格納すると、該データポイント列P(i)が格納されてからの経過時間Tを監視し、継続的に変数Dと比較する。コントローラ入力決定部23は、監視したデータポイント列P(i)の経過時間Tが変数Dを超えたとき、該データポイント列P(i)のバッファへの保持を終了する。コントローラ入力決定部23は、保持した時間tiを用いて、経過時間Tを算出することができる。
コントローラ入力決定部23は、Nフレームに対応するN×F(秒)、一のデータポイント列P(i)をバッファに保持する。本実施形態では、Nは5であり、コントローラ入力決定部23は、5フレームに対応する時間5F(秒)、一のデータポイント列P(i)をバッファに保持する。したがって、コントローラ入力決定部23は、5つのデータポイント列を保持することになる。コントローラ入力決定部23は、新しいデータポイント列から順番にP(5)、P(4)、P(3)、P(2)、P(1)となるように5つのデータポイント列を保持する。したがって、コントローラ入力決定部23が5フレームに対応するデータポイント列を保持する場合、P(5)が最新の保持したデータポイント列となる。コントローラ入力決定部23は、新たにデータポイント列を保持する場合、新たなデータポイント列をP(5)として保持し、P(i)(1≦i≦4)をP(i+1)のデータで置き換える。このときコントローラ入力決定部23は、既定の保持時間を超えたP(1)の保持を終了する。ただし、保持するデータポイント列の数量は、必要な処理に応じて、変更することができる。
コントローラ入力決定部23は、touchend又はtouchcancelのタッチイベントを取得した場合、保持したデータポイント列の保持を解除する。
1つの好適な例では、コントローラ入力決定部23は、フレームの時間ごとに、データポイント列として、x座標の値とy座標の値を分けて保持する。コントローラ入力決定部23が保持するx座標の値の集合Xとy座標の値の集合Yは、各々式(1)、式(2)のとおりである。
(1)
(2)
ここで、nは、コントローラ入力決定部23がバッファに保持しているデータポイント列の数であり、フレーム数に対応する。本実施形態では、コントローラ入力決定部23は5フレームに対応する時間5F(秒)データポイント列を保持するため、経過時間に応じて、n=1、n=2、n=3、n=4、n=5、n=5、…n=5となる。したがって、5フレームに対応する時間5F(秒)経過後は、n=5となる。また、最も新しく保持したデータポイント列P(n)のx座標の値がx
n,0,…x
n,mであり、最も新しく保持したデータポイント列P(n)のy座標の値がy
n,0,…y
n,mである。なお、コントローラ入力決定部23がデータポイント列を保持する時間に応じて、nの最大値は異なる値となる。
コントローラ入力決定部23のタッチ位置の決定について説明する。コントローラ入力決定部23は、コントローラ入力決定部23が保持した最新のデータポイント列P(n)に基づいてタッチ位置を決定する。コントローラ入力決定部23は、フレームの時間(フレーム間の時間)ごとに、タッチ位置を決定する。具体的には、コントローラ入力決定部23は、最新のデータポイント列P(n)が含むデータポイントうちの最新のデータポイントPi,mのデータポイントが示すXY座標をタッチ位置として決定する。P(n)が含むデータポイントが1つの場合、コントローラ入力決定部23は、そのデータポイントが示すXY座標をタッチ位置として決定する。1つの例では、コントローラ入力決定部23は、touchmoveのイベント発生後のフレームにおいてタッチイベントを取得しない場合、他のタッチイベントが発生するまで、タッチイベントを取得しているときに決定されたタッチ位置を保持する。保持されたタッチ位置は、他の機能部やプログラムが参照することができる。この場合において、コントローラ入力決定部23がtouchend又はtouchcancelのタッチイベントを取得した場合、コントローラ入力決定部23は保持したタッチ位置の保持を解除する。なお、コントローラ入力決定部23がタッチ位置を決定することは、コントローラ入力決定部23がタッチ位置を保持することを含むことができる。
コントローラ入力決定部23のユーザ入力の大きさの決定について説明する。コントローラ入力決定部23は、フレームの時間(フレーム間の時間)ごとに、ユーザ入力の大きさを決定する。本実施形態では、コントローラ入力決定部23は、速度因子をユーザ入力の大きさとして決定する。したがって、本実施形態においては、ユーザ入力の大きさは速度因子と同義である。コントローラ入力決定部23の速度因子の決定方法は、例えば特許第6560801号に記載されるエンジン部の速度因子の決定と同様の方法を用いることができる。
コントローラ入力決定部23は、保持されたデータポイント列P(i)のうちの一のデータポイント列における変位速さvi(i=1〜n)の、該一のデータポイント列より前に保持されたデータポイント列における変位速さv1〜vi-1の平均値に対する偏りに基づいて、速度因子を決定する。ここで、変位速さviの変位速さv0〜vi-1の平均値に対する偏りは、例えば変位速さviの変位速さv0〜vi-1の平均値からの偏り(偏差)である。なお、変位速さv1〜vi-1の平均値は、i=1の場合は0とし、i=2の場合はv1とする。
1つの例では、コントローラ入力決定部23は、touchmoveのイベント発生後に所定数の連続するフレームにおいてタッチイベントを取得しない場合、他のタッチイベントが発生するまで、タッチイベントを取得しているときに決定された速度因子を保持する。保持された速度因子は、他の機能部やプログラムが参照することができる。所定数の連続するフレームの数は、コントローラ入力決定部23がデータポイント列を保持する数量N以下である。この場合において、コントローラ入力決定部23がtouchend又はtouchcancelのタッチイベントを取得した場合、コントローラ入力決定部23は保持した速度因子の保持を解除する。なお、コントローラ入力決定部23が速度因子を決定することは、コントローラ入力決定部23が速度因子を保持することを含むことができる。
具体的には、コントローラ入力決定部23は、以下のように速度因子を算出する。速度因子は、以下のように定義されたCumulative Pointwize Deviation関数(CPD関数)の出力値である。CPD関数は、式(3)により算出する。
(3)
ここで、nは、コントローラ入力決定部23がバッファに保持しているデータポイント列の数である。
viは、i番目のデータポイント列における変位速さ、又はi番目のフレームにおける変位速さである。変位速さは、対象となるフレームの時間におけるタッチポイントの集合(データポイントの集合)から算出されたユーザの指の移動速度に対応する。コントローラ入力決定部23は、バッファに保持されているデータポイント列におけるデータポイントの変位に基づいて、該データポイント列におけるデータポイントの変位速さを決定する。コントローラ入力決定部23が、データポイント列としてx座標の値とy座標の値を分けて保持する場合、コントローラ入力決定部23は、バッファに保持されているデータポイント列におけるx座標の値の変位及びy座標の値の変位に基づいて、変位速さを決定する。例えば、コントローラ入力決定部23は、バッファに保持されているデータポイント列において時系列的に隣接するデータポイントの変位量、及び該データポイント列が含むデータポイントの数量に基づいて、変位速さを決定する。
具体的には、変位速さは、式(4)により算出する。
(4)
ここで、αは、ディスプレイのピクセル密度DPI(Dot-Per-Inch)に対応する係数としての0以上の実数であり、一般的には1である。βは、積算重みであり、大きくすることにより突発的な変化を変位速さに反映しやすくなり、小さくすることにより突発的な変化を変位速さに反映しにくくなる。P(i)がデータポイントを含まない場合、コントローラ入力決定部23は、変位速さv
iを算出せず、例えばv
i=0と設定する。P(i)がデータポイントを1つのみ含む場合も、コントローラ入力決定部23は、変位速さv
iを同様に算出せず、例えばv
i=0と設定する。
avg
i-1(v)は、i番目のフレームの直前までの変位速さv
iの平均である。avg
i-1(v)は、式(5)により算出する。
(5)
ここで、i=1の場合は、直前までの変位速さが存在しないため、avg
i-1(v)=0となる。
例えば、式(3)に示すCPD関数は、n=5のとき、式(6)により表される。
(6)
例えば、ユーザが意図的に指を早く動かした場合、必然的に指が一定の時間加速することになる。この場合、式(6)におけるv
1〜v
5の値は全体的に大きくなるため、CPD関数はより大きな値を出力することとなる。一方、ユーザが意図的に指を早く動かしていない場合、例えば式(6)におけるv
1〜v
5のいずれか1つの値が大きくなる。この場合、CPD関数は、v
1〜v
5の値による演算に対して1/5(1/n)を乗算することにより平準化するため、極端に大きな値を出力しない。このように、5フレームに対応する時間5F(秒)経過後においては、CPD関数の出力値は、意図的に指を加速し続けている場合に大きな値となり、意図的に加速しないときは大きな値とならない。
コントローラ入力決定部23のユーザ入力の方向の決定について説明する。コントローラ入力決定部23の角度決定方法は、例えば特許第6389581号に記載される角度決定部の角度の決定と同様の方法を用いることができる。上記の角度決定部のように、コントローラ入力決定部23がフレームの時間とは関係なくデータポイントの保持をデータポイントごとに所定時間保持し、コントローラ入力決定部23は、該データポイントを用いて角度を決定することもできる。
コントローラ入力決定部23は、角度を算出可能な場合、保持されたデータポイント列のうち最新のデータポイント列P(n)が含むデータポイントを用いて、該データポイントの集合が示す角度を算出し、算出した角度に基づいてユーザ入力の方向を決定する。このように、コントローラ入力決定部23は、データポイントの集合が示す角度を求めることにより、タッチパネル17に対してタッチ操作を行ったユーザが意図する方向の角度を求めることが可能となる。ユーザ入力の方向は、フレームの時間(フレーム間の時間)ごとに決定される。
コントローラ入力決定部23は、最新のデータポイント列P(n)が含むデータポイントの数量が所定数B以上であった場合、該データポイントを用いて角度を算出する。一般的には、回帰直線の傾きを求めるにあたっては3個以上のデータポイントが有ること好ましいため、所定数Bは3以上に設定されるのが好ましい。
最新のデータポイント列P(n)が含むデータポイントの集合が示す角度を算出するにあたって、コントローラ入力決定部23は、該データポイントに基づいて回帰直線の傾きを決定する。コントローラ入力決定部23は、回帰直線の傾きを決定するにあたって、当該データポイントにおけるx軸の値の変位量及びy軸の値の変位量に基づいて、独立変数の軸としてx軸及びy軸のいずれか一方の軸を決定する。同時に、コントローラ入力決定部23は、他方の軸を従属変数の軸として決定する。1つの例では、コントローラ入力決定部23は、最小二乗法を用いて回帰直線の傾きを算出する。
コントローラ入力決定部23は、独立変数の軸をx軸とするとき、y=ax+bの回帰直線の傾きaを決定し、独立変数の軸をy軸とするとき、x=cy+dの回帰直線の傾きcを決定する。
1つの例では、コントローラ入力決定部23は、当該データポイントにおけるx軸の値の最大値と最小値の差分値及びy軸の値の最大値と最小値の差分値に基づいて、独立変数の軸としてx軸及びy軸のいずれか一方の軸を決定し、他方の軸を従属変数の軸として決定する。好ましくは、コントローラ入力決定部23は、当該データポイントにおけるx軸の値の最大値と最小値の差分値に対して重み係数を用いて重み付けを行った値及びy軸の値の最大値と最小値の差分値に基づいて、独立変数の軸としてx軸及びy軸のいずれか一方の軸を決定し、他方の軸を従属変数の軸として決定する。
算出される回帰直線の傾きは正負の方向を持たないため、コントローラ入力決定部23は、最小二乗法を用いて回帰直線の傾きを算出する際、例えば0度〜90度及び270度〜360度の範囲内で算出する。したがって、例えばデータポイントの集合が示す角度が、45度の場合であっても225度の場合であっても、回帰直線の傾きとして45度が算出される。そのため、コントローラ入力決定部23は、回帰直線の傾きを決定した後、データポイントの集合としての変位方向に基づいて、決定された回帰直線の傾き(角度)に対して180度回転させるか否かを示す回転量を決定する。具体的には、コントローラ入力決定部23は、データポイントにおける時系列的に前後する、決定された独立変数の軸の値の差分値の正負の数量を比較することにより、回転量を決定する。ここで、データポイントの集合としての変位方向は、データポイントが時間とともに変位する方向を示すものであり、例えばユーザがタッチパネル17上で指を動かす大まかな方向に対応するものである。
コントローラ入力決定部23は、決定された回帰直線の傾き及び決定された回転量に基づいて、データポイントの集合が示す角度を算出する。コントローラ入力決定部23は、算出された角度に基づいて、ユーザ入力の方向に対応する角度を決定する。
1つの好適な例では、コントローラ入力決定部23は、以下のとおり角度を決定する。コントローラ入力決定部23は、取得したタッチイベントがtouchstartのとき、角度を算出しない。コントローラ入力決定部23は、角度算出可能な場合、算出した角度を出力するとともに算出した角度を保持する。このとき、最新の算出された角度が保持されればよい。コントローラ入力決定部23は、角度算出不可能な場合、保持された角度を出力する。コントローラ入力決定部23は、出力された角度を有する0.2の大きさのベクトルと、予め保持された1.0の大きさを有するベクトルとを加算したベクトルの角度を、ユーザ入力の方向に対応する角度として決定する。コントローラ入力決定部23は、角度を決定した後、該決定した角度を有する1.0の大きさのベクトルを保持する。コントローラ入力決定部23が加算するベクトルの大きさは0.2であるため、保持するベクトルの大きさが1.0以下である場合は、該ベクトルをそのままの大きさで保持される。コントローラ入力決定部23は、取得したタッチイベントがtouchend又はtouchcancelのとき、ベクトルの保持を解除する。
コントローラ入力判定部24は、コントローラ入力決定部23が決定した速度因子が所定値τを超える大きさであるか否かを判定する。
キャラクタ状態決定部25は、コントローラ入力判定部24の判定結果に基づいて、タッチパネル17に表示される操作対象キャラクタ40の移動状態を決定する。キャラクタ状態決定部25は、速度因子が所定の閾値(所定値)τを超える大きさである場合に操作対象キャラクタ40が走る状態であると決定し、速度因子が所定値τ以下である場合に操作対象キャラクタ40が歩く状態であると決定する。またキャラクタ状態決定部25は、ユーザ入力の方向及び大きさに基づいて、操作対象キャラクタ40の移動方向及び移動速さを決定する。1つの好適な例では、キャラクタ状態決定部25は、ユーザ入力の方向を操作対象キャラクタ40の移動方向と決定し、ユーザ入力の大きさを操作対象キャラクタ40の移動速さと決定する。
本実施形態において、電子装置10は、仮想コントローラに対する入力以外の入力の決定、例えばゲーム設定に対する入力を決定する設定入力決定部(図示せず)を含むことができる。この場合、表示部22は、タッチパネル17に表示されるゲーム用画面内にゲーム設定に関するGUI(グラフィカルユーザインタフェース)要素を表示する。設定入力決定部は、タッチイベントが発生するときに、タッチイベントを取得し、取得したタッチイベントに基づいて、タッチパネル17上の位置に対応するデータポイントの座標(x、y)を取得する。設定入力決定部は、取得したデータポイントの座標の位置に対応するGUI要素に対する入力を決定し、例えば電子装置10は、当該GUI要素に対応する処理を実行する。説明を簡単にするため、以下で説明するゲーム用画面を示す図は、ゲーム設定に関するGUI要素を含まないが、好ましくは、ゲーム用画面は、ゲーム設定に関するGUI要素を含む。
図4は、表示部22によりタッチパネル17に表示されるゲーム用画面の1つの例示であり、当該ゲーム用画面は、仮想空間内の操作対象キャラクタ40に対するユーザの操作を支援するための仮想オブジェクトを含む画面である。表示部22は、ユーザにタッチ推奨領域を示唆するための環状オブジェクト30をタッチパネル17の所定領域50内に表示する。1つの例では、所定領域50は、ゲーム開発者により作成されたゲームアプリケーションにより定められる領域であり、タッチパネル17上の座標を用いて定められる領域である。例えば所定領域50は、タッチパネル17が表示するゲーム用画面において、操作対象キャラクタ40と重複しない領域に設定される。1つの例では、ゲーム用画面がゲーム設定に関するGUI要素を含む場合、所定領域50は、当該GUI要素とも重複しない領域に設定される。
環状オブジェクト30は、環状に配置された複数のオブジェクト31であり、例えば各々のオブジェクト31は球体状のオブジェクトである。環状オブジェクト30は、円状に配置された複数のオブジェクト31とすることもでき、また多角形に配置された複数のオブジェクト31とすることもできる。環状オブジェクト30は、円状オブジェクトのような1つの環状オブジェクト30とすることもできる。このように、環状オブジェクト30は、ユーザがタッチする範囲を推奨するオブジェクトとすることができる。
図5は、表示部22によりタッチパネル17に表示されるゲーム用画面の1つの例示であり、当該ゲーム用画面は、仮想空間内の操作対象キャラクタ40に対するユーザの操作を支援するための仮想オブジェクトを示す。図5は、図4においてコントローラ入力決定部23がタッチ位置を決定した直後のゲーム用画面を示す。コントローラ入力決定部23がタッチ位置を決定すると、表示部22は、決定したタッチ位置を中心として、時間の経過とともに内径が徐々に小さくなるように環状オブジェクト30をタッチパネル17に表示する。表示部22は、環状に配置された複数のオブジェクトを移動させることにより、決定したタッチ位置を中心として、時間の経過とともに内径が徐々に小さくなるように環状オブジェクト30をタッチパネル17に表示する。ただし、表示部22は、環状オブジェクトの画像を拡大又は縮小することにより、決定したタッチ位置を中心として、時間の経過とともに内径が徐々に小さくなるように環状オブジェクトをタッチパネル17に表示することもできる。
図6は、表示部22によりタッチパネル17に表示されるゲーム用画面の1つの例示であり、当該ゲーム用画面は、仮想空間内の操作対象キャラクタ40に対するユーザの操作を支援するための仮想オブジェクトを示す。図6は、図5においてコントローラ入力決定部23がユーザの入力の方向及び大きさを決定した後のゲーム用画面を示す。表示部22は、コントローラ入力決定部23が決定したタッチ位置に対してコントローラ入力決定部23が決定したユーザ入力の方向を示す第1のオブジェクト33をタッチパネル17に表示する。1つの例では、第1のオブジェクト33は、コントローラ入力決定部23が決定したタッチ位置に対してコントローラ入力決定部23が決定したユーザ入力の方向へ離れた位置に配置されるオブジェクトである。この場合、好ましくは、第1のオブジェクト33は、図4又は図5における環状オブジェクト30を構成する各オブジェクト31よりもタッチパネル17に表示されるサイズの大きい球状体のオブジェクトである。
表示部22は、最新の所定数のフレームにおいて、コントローラ入力決定部23が決定したタッチ位置を中心とした円状オブジェクト35を表示する。本実施形態では、コントローラ入力決定部23は、5つのデータポイント列を保持するため、表示部22は、最新の5つのフレームにおいて決定されたタッチ位置を中心とした円状オブジェクト35を表示する。ただし、最新の所定数のフレームの数量は、ゲームアプリケーションなどに応じて、変更することができる。
1つの例では、円状オブジェクト35は、最新のフレームにおいて決定されたタッチ位置を中心とした円状オブジェクト35aと、その1つ前のフレームにおいて決定されたタッチ位置を中心とした円状オブジェクト35bと、更にその1つ前のフレームにおいて決定されたタッチ位置を中心とした円状オブジェクト35cと、更にその1つ前のフレームにおいて決定されたタッチ位置を中心とした円状オブジェクト35dと、更にその1つ前のフレームにおいて決定されたタッチ位置を中心とした円状オブジェクト35eと、を含む。上記例示のように、例えば表示部22は、最新の5つのフレームにおいて、コントローラ入力決定部23が決定したタッチ位置を中心とした円状オブジェクト35を表示する。好ましくは、表示部22は、より新しいフレームにおいて決定されたタッチ位置を中心とした円状オブジェクトほど大きく表示する。例えば円状オブジェクト35aの半径が一番大きく、円状オブジェクト35eの半径が一番小さく表示される。この場合、環状オブジェクト30はタッチ推奨領域を示唆するためのものであるため、一番半径の大きい円状オブジェクト35aの半径は、複数のオブジェクト31が構成する環状オブジェクト30の環状形状の半径よりも小さいことが好ましい。例えばtouchmoveのイベント発生後における最新の所定数のフレームにおいて、コントローラ入力決定部23が決定したタッチ位置が2つの場合、表示部22は、2つの円状オブジェクト35a及び35bを表示する。例えばtouchmoveのイベント発生後における最新の所定数のフレームにおいてタッチイベントが発生しないとき、表示部22は、コントローラ入力決定部23が決定した最新のタッチ位置を中心とした円状オブジェクト35aのみを表示する。
図7は、表示部22によりタッチパネル17に表示されるゲーム用画面の1つの例示であり、当該ゲーム用画面は、仮想空間内の操作対象キャラクタ40に対するユーザの操作を支援するための仮想オブジェクトを示す。図7は、図6においてコントローラ入力決定部23がユーザの入力の方向及び大きさを決定した後に、コントローラ入力判定部24により速度因子が所定値τを超える大きさであると判定した場合のゲーム用画面を示す。コントローラ入力決定部23が決定した速度因子が所定値τを超える大きさであるとコントローラ入力判定部24が判定した場合、表示部22は、コントローラ入力決定部23が決定したユーザ入力の方向への入力を抑制させるための第2のオブジェクト34へ第1のオブジェクト33を変化させて、タッチパネル17に表示する。
1つの例では、第2のオブジェクト34は、コントローラ入力決定部23が決定したタッチ位置に対してコントローラ入力決定部23が決定したユーザ入力の方向へ離れた位置に配置されるオブジェクトである。この場合、タッチパネル17に表示される第2のオブジェクト34の最大幅は、タッチパネル17に表示される第1のオブジェクト33の最大幅よりも大きい。1つの例では、第2のオブジェクト34は、第1のオブジェクト33が壁状の物体に衝突して広がったような形状を有するオブジェクトである。1つの例では、第2のオブジェクト34は、第1のオブジェクト33の色を変化させたオブジェクトである。
図8は、表示部22によりタッチパネル17に表示されるゲーム用画面の1つの例示であり、当該ゲーム用画面は、仮想空間内の操作対象キャラクタ40に対するユーザの操作を支援するための仮想オブジェクトを示す。図8は、図5においてコントローラ入力決定部23がユーザの入力の方向及び大きさを決定した直後のゲーム用画面を示す。表示部22は、コントローラ入力決定部23がユーザの入力の方向を決定すると、タッチ位置を中心とした円状オブジェクト35の外側に複数のオブジェクト32を表示し、時間の経過とともに複数のオブジェクト32が、タッチ位置に対してユーザ入力の方向へ離れた位置に収束するように移動するように表示する。その後、表示部22は、図6に示すような第1のオブジェクト33を表示する。オブジェクト32は、環状オブジェクト30を構成するオブジェクト31とは異なるオブジェクトであるが、オブジェクト31は、複数のオブジェクト32の合成により構成されてもよい。
図9は、本発明の一実施形態の電子装置10において実行される情報処理を説明するフローチャートである。なお本実施形態においては電子装置10としてスマートフォンを用いているが、一般的にスマートフォンは30fps、60fpsなどのフレームレートが設定される。電子装置10は、好ましくは、フレームレートに対応させて一定時間ごとに処理を実行する。
表示部22は、ゲームを開始すると、図4に示すようなゲーム用画面を表示する(ステップ101)。
コントローラ入力決定部23は、タッチイベントが発生するときに、タッチイベントを取得する(ステップ102)。本ステップにおいて、コントローラ入力決定部23は、タッチイベントが発生しない場合又は有効なタッチイベントでない場合、タッチイベントを取得しない。
図10は、図9に示すステップ102において実行される1つの実施例の情報処理を説明するフローチャートである。コントローラ入力決定部23は、タッチパネル17へのユーザの操作により発生したタッチイベントがタッチパネル17の所定領域50内で発生したものであるか否かを判定する(ステップ111)。コントローラ入力決定部23は、所定領域50内で発生したものでないと判定した場合、当該タッチイベントを無効なタッチイベントと判定する(ステップ112)。コントローラ入力決定部23は、所定領域50内で発生したものであると判定した場合、当該タッチイベントを有効なタッチイベントと判定する(ステップ113)。
コントローラ入力決定部23は、有効なタッチイベントと判定されたタッチイベントに基づいて、タッチ位置を決定する(ステップ103)。次にコントローラ入力決定部23は、有効なタッチイベントと判定されたタッチイベントに基づいて、ユーザ入力の方向及び大きさを決定する(ステップ104)。
次に電子装置10は、ゲーム状態を更新し、表示部22は、ゲーム用画面を更新する(ステップ105)。ゲーム状態は、ユーザ入力の大きさが所定値τを超える大きさであるか否かを判定した結果を含む。表示部22は、ゲーム状態と、ステップ103で決定されたタッチ位置と、ステップ104で決定されたユーザ入力の方向及び大きさとに基づいて、ユーザの操作を支援するための仮想オブジェクトを含むゲーム用画面を描画することによりゲーム用画面を更新する。なおゲーム状態は、操作対象キャラクタ40の移動方向、移動速度、及び位置などを含むものであり、表示部22は、更新されたゲーム状態に基づいて、ゲーム用画面を描画することによりゲーム用画面を更新するものであるが、本明細書では説明を省略する。
ステップ106において、ゲームが終了しない限り、本処理はステップ102へ戻る。本処理は、必要に応じて、他の処理との同期を持たせてもよい。
なお、本フローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて又は代えて別の処理が実行されてもよい。例えば、ステップ103〜ステップ105の処理の順序は入れ替えることができる。また、一のタッチイベントがステップ112で無効なタッチイベントと判定された場合であっても、電子装置10が備える他の機能部やプログラムは、当該一のタッチイベントを有効なタッチイベントとして用いることができる。例えば電子装置10が設定入力決定部を備える場合、設定入力決定部は、ステップ112の判定に関わらず、取得したタッチイベントに基づいてデータポイントの座標を取得することができる。設定入力決定部は、当該座標の位置に対応するGUI要素に対する入力を決定し、電子装置10は当該GUI要素に対応する処理を実行することができる。
図11は、図9に示すステップ105において実行される1つの実施例の情報処理を説明するフローチャートである。電子装置10は、決定されたユーザ入力の大きさが所定値τを超えるか否かを判定する(ステップ121)。ステップ121で超えると判定されない場合、電子装置10は、第1のオブジェクト33を含むゲーム用画面を描画することによりゲーム用画面を更新する(ステップ122)。ステップ121で超えると判定された場合、電子装置10は、第1のオブジェクト33が第2のオブジェクト34へ変化したゲーム用画面を描画することによりゲーム用画面を更新する(ステップ123)。
次に、本発明の実施形態による電子装置10の主な作用効果について説明する。本実施形態では、コントローラ入力決定部23は、ユーザの操作により発生したタッチイベントに基づいてタッチ位置を決定するとともにユーザ入力の方向及び大きさを決定する。表示部22は、決定されたタッチ位置に対して決定したユーザ入力の方向を示す第1のオブジェクト33をタッチパネル17に表示する。コントローラ入力判定部24は、決定されたユーザ入力の大きさ(ユーザ入力の大きさが速度因子と異なるときは速度因子)が所定値を超える大きさであるか否かを判定する。表示部22は、決定されたユーザ入力の大きさが所定値を超える大きさでないと判定された場合、第1のオブジェクト33を表示する。表示部22は、決定されたユーザ入力の大きさが所定値を超える大きさであると判定された場合、決定されたユーザ入力の方向への入力を抑制させるための第2のオブジェクト34へ第1のオブジェクト33を変化させる。
ユーザは、タッチパネル17を介して仮想コントローラを操作するとき、従来型の据置型ゲームの物理的なコントローラにおける方向レバーを操作する感触を得ることは難しい。特に仮想コントローラの場合、ユーザがある方向へ入力を行う際に、更に大きな入力を行うことができるか否かが不明な場合がある。本実施形態のように、決定されたユーザ入力の大きさが所定値を超える大きさである場合、表示部22がユーザ入力の方向を示す第1のオブジェクト33をユーザ入力の方向への入力を抑制させるための第2のオブジェクト34へ変化させる構成とすることにより、電子装置10は、ユーザに対して入力が十分な大きさに達した印象を与えること(アフォーダンス)が可能となる。一方、ユーザは、入力が十分な大きさに達したという認識を得ることができるため、自身の入力の大きさを把握し易くなる。これにより、ユーザの過剰な入力を防ぐことが可能となり、より操作性を高めることが可能となる。
また本実施形態では、第1のオブジェクト33は、決定されたタッチ位置から決定されたユーザ入力の方向へ離れた位置に配置されるオブジェクトであり、第2のオブジェクト34は、決定されたタッチ位置から決定されたユーザ入力の方向へ離れた位置に配置されるオブジェクトである。そしてタッチパネル17に表示される第2のオブジェクト34の最大幅は、タッチパネル17に表示される第1のオブジェクト33の最大幅よりも大きい。本実施形態のような構成とすることにより、ユーザは、入力が十分な大きさに達したことをより容易に認識することが可能となる。これにより、ユーザの過剰な入力をより防ぐことが可能となり、より操作性を高めることが可能となる。
また本実施形態では、表示部22は、第1のステップとして、ユーザにタッチ推奨領域を示唆するための環状オブジェクト30をタッチパネル17の所定領域50内に表示する。コントローラ入力決定部23は、発生したタッチイベントがタッチパネル17の所定領域50内で発生したものであるか否かを判定する。コントローラ入力決定部23は、所定領域50内で発生したものであると判定したタッチイベントに基づいて、タッチ位置を決定する。表示部22は、第2のステップとして、決定されたタッチ位置を中心として、時間の経過とともに内径が徐々に小さくなるように環状オブジェクト30をタッチパネル17に表示する。
本実施形態のように、表示部22が第2のステップとして環状オブジェクト30を動的に変化させて表示することにより、ユーザは、自身が指を置いている画面上の位置を、該指で画面が隠れている場合であっても、正確に把握することが可能となる。これにより、より操作性を高めることが可能となる。また、ユーザの操作を支援するための環状オブジェクト30は常に固定位置に表示されるわけではないため、ユーザの操作を支援するための仮想オブジェクトが固定位置に表示される場合と比較して、ゲーム開発者はゲーム用画面を有効に活用したゲームアプリケーションを作成することが可能となる。
また、表示部22は、図8に示すように、タッチ位置に対してユーザ入力の方向へ離れた位置に複数のオブジェクト32を収束させ、その後、図6に示すように、タッチ位置に対してユーザ入力の方向へ離れた位置に第1のオブジェクト33を表示する。このように、表示部22が、ユーザ入力に応じて複数のオブジェクト32を動的に収束させるように表示することにより、電子装置10は、ユーザに対して当該オブジェクト32を移動させる印象を与えること(アフォーダンス)が可能となる。一方、ユーザは、自身の入力に応じてオブジェクト32が移動するため、自身の入力が適切に反映されているという認識を得ることができる。これにより、ユーザの過剰な入力を防ぐことが可能となり、より操作性を高めることが可能となる。
また表示部22が所定領域50内に環状オブジェクト30を表示することにより、ユーザに対して環状オブジェクト30の中央に指を置きたくなる印象を与えること(アフォーダンス)が可能となる。従来、ユーザは、タッチパネル17を介して仮想コントローラを操作するとき、特に固定位置に仮想コントローラが無い場合、自身の指をどこに置くべきかが分かりづらい場合があった。本実施形態のような構成とすることにより、ユーザは、最初に指を置くべき位置を把握し易くなる。これにより、より操作性を高めることが可能となる。更に操作対象キャラクタ40を制御するための入力領域を明確化するとともに、所定領域50内で発生したタッチイベントのみを有効とすることにより、ユーザに対するゲームアプリケーションが要求する範囲への入力を支援することが可能となる。
また本実施形態では、表示部22は、最新の所定数のフレームにおいて決定したタッチ位置を中心とした円状オブジェクト35を表示する。本実施形態のような構成とすることにより、ユーザは、自身が入力した方向及び大きさとは異なるタッチ位置そのものを把握し易くなる。これにより、より操作性を高めることが可能となる。
上記の作用効果は、特に言及が無い限り、他の実施形態や他の実施例においても同様である。
本発明の他の変形実施形態では、表示部22は、環状オブジェクト30を表示しない。したがって、表示部22は、コントローラ入力決定部23がタッチ位置を決定した後に、環状オブジェクト30を変化させない。当該変形実施形態においても、例えば表示部22は第1のオブジェクト33及び第2のオブジェクト34を表示し、これによりユーザは自身の入力の大きさを把握し易くなる点において、より操作性を高くすることが可能となる。
本発明の他の変形実施形態では、表示部22は、円状オブジェクト35を表示しない。当該変形実施形態においても、例えば表示部22は第1のオブジェクト33及び第2のオブジェクト34を表示し、これによりユーザは自身の入力の大きさを把握し易くなる点において、より操作性を高くすることが可能となる。
本発明の他の変形実施形態では、表示部22は、第1のオブジェクト33及び第2のオブジェクト34を表示しない。したがって、電子装置10は、コントローラ入力判定部24を備えない。当該変形実施形態においても、例えば電子装置10は、環状オブジェクト30を表示し、表示部22は、決定したタッチ位置を中心として、時間の経過とともに内径が徐々に小さくなるように環状オブジェクト30を表示する。これにより、当該変形実施形態においても、ユーザは最初に指を置くべき位置を把握しやすくなる点において、より操作性を高くすることが可能となる。
本発明の他の変形実施形態では、コントローラ入力決定部23は、所定領域50に関係なく、発生したタッチイベントに基づいて、第1の軸の値及び第2の軸の値により示されるデータポイントを取得する。この場合、電子装置10は、ステップ102においてステップ111〜113を実行せず、タッチパネル17へのユーザの操作により発生したすべてのタッチイベントに基づいてステップ103〜105を実行する。当該変形実施形態においても、例えば操作対象キャラクタ40を制御するための入力領域が明確化され、ユーザは最初に指を置くべき位置を把握し易くなる点において、より操作性を高くすることが可能となる。
本発明の他の変形実施形態では、コントローラ入力決定部23は、フレームの時間とは異なる既定の処理時間ごとに、その時間内に取得した1又は複数のデータポイントをデータポイント列としてバッファに格納する。この場合、コントローラ入力決定部23は、フレームの時間とは異なる既定の処理時間ごとに、タッチ位置、ユーザ入力の方向及び大きさを決定することができる。
本発明の他の変形実施形態では、コントローラ入力決定部23は、発生したタッチイベントに基づいて取得したデータポイントをその取得時間と関連付けてバッファに格納する。コントローラ入力決定部23は、既定の保持時間を超えたデータポイントの保持を終了する。この場合、コントローラ入力決定部23は、既定の処理時間ごとに、データポイントをデータポイント列としてバッファに格納しない。この場合、コントローラ入力決定部23は、バッファに保持されたデータポイントに基づいて、タッチ位置、ユーザ入力の方向及び大きさを決定することができる。
本発明の他の変形実施形態では、コントローラ入力決定部23は、touchmoveのイベント発生後のフレームにおいてタッチイベントを取得しない場合、そのフレームの時間に対応するデータポイント列P(i)を保持しない。この場合、コントローラ入力決定部23は、保持時間に関わらず、データポイントが格納された5つのデータポイント列を保持する。この場合、コントローラ入力決定部23は、保持されたデータポイントに基づいて、タッチ位置、ユーザ入力の方向及び大きさを決定することができる。
本発明の他の変形実施形態では、コントローラ入力決定部23は、最新のデータポイント列P(n)が含むデータポイントの各々が示すXY座標のX座標の値の平均値及びY座標の値の平均値からなるXY座標の位置をタッチ位置として決定する。当該変形実施形態では、コントローラ入力決定部23は、最新のデータポイント列P(n)が含むデータポイントうちの最新のデータポイントが示すXY座標をタッチ位置として決定しない。
本発明の他の変形実施形態では、コントローラ入力決定部23は、取得したタッチイベントに基づいて、第1の軸の値及び第2の軸の値により示されるデータポイントの座標(x、y)を取得し、当該座標をタッチ位置として決定する。当該変形実施形態では、コントローラ入力決定部23は、最新のデータポイント列P(n)が含むデータポイントうちの最新のデータポイントが示すXY座標をタッチ位置として決定しない。当該変形実施形態では、コントローラ入力決定部23は、発生したタッチイベントに基づいて取得したデータポイントをバッファに保持してもよいし、保持しなくてもよい。
本発明の他の変形実施形態では、コントローラ入力決定部23は、touchmoveのイベント発生後のフレームにおいてタッチイベントを取得しない場合、他のタッチイベントが発生するまで、タッチイベントを取得しているときに決定されたタッチ位置をタッチ位置として決定する。また、コントローラ入力決定部23は、touchmoveのイベント発生後に所定数の連続するフレームにおいてタッチイベントを取得しない場合、他のタッチイベントが発生するまで、タッチイベントを取得しているときに決定された速度因子を速度因子として決定する。
本発明の他の変形実施形態では、コントローラ入力決定部23は、速度因子ではなく、変位速さをユーザ入力の大きさとして決定する。この場合、ユーザ入力の大きさは変位速さである。この場合においても、コントローラ入力決定部23は、速度因子を決定し、コントローラ入力判定部24は、速度因子が所定値τを超える大きさであるか否かを判定する。キャラクタ状態決定部25は、コントローラ入力判定部24の判定結果に基づいて、タッチパネル17に表示される操作対象キャラクタの移動状態を決定する。
本発明の他の変形実施形態では、キャラクタ状態決定部25は、速度因子をコントローラ入力判定部24とは異なる閾値と比較して判定し、操作対象キャラクタ40が歩く状態及び走る状態のうちのいずれか1つの状態を決定する。このような構成とすることにより、ゲームアプリケーションに応じた動作を実現することが可能となる。
本発明の他の変形実施形態では、キャラクタ状態決定部25は、速度因子を2つの閾値と比較して判定し、操作対象キャラクタ40が歩く状態、早く歩く状態及び走る状態のいずれかの1つの状態を決定する。
本発明の他の変形実施形態では、表示部22は、touchmoveのイベント発生後における最新の所定数のフレームにおいてタッチイベントが発生しないとき、表示部22は、円状オブジェクト35を表示しない。このような構成とすることにより、ユーザは、新たなタッチイベントを発生させずに操作を継続していることを確認することができる。
本発明の他の変形実施形態では、電子装置10は、振動機構及びスピーカのうちの少なくとも一方を備え、これらを制御するための出力制御部を備える。コントローラ入力決定部23が決定した速度因子が所定値τを超える大きさであるとコントローラ入力判定部24が判定した場合、出力制御部は、電子装置10を振動させるための制御又は電子装置10から音声を出力させるための制御を実行する。このような構成とすることにより、ユーザは、自身の入力の大きさを振動又は音声により認識することが可能となり、より操作性を高めることが可能となる。
本発明の他の変形実施形態では、コントローラ入力決定部23及びコントローラ入力判定部24は、上記の実施形態の処理を実行せず(例えばコントローラ入力決定部23は速度因子を決定せず)、以下の処理を実行する。コントローラ入力決定部23は、決定したタッチ位置のうちタッチ開始のタッチイベントに基づいて決定したタッチ位置を基準位置として設定する。1つの例では、コントローラ入力決定部23は、取得したタッチイベントに基づいて、第1の軸の値及び第2の軸の値により示されるデータポイントの座標(x、y)を取得し、当該座標をタッチ位置として決定する。タッチ開始のタッチイベントは、touchstartのタッチイベントである。
当該変形実施形態では、コントローラ入力決定部23は、決定したタッチ位置のうち基準位置を設定した後に発生したタッチイベントに基づいて決定したタッチ位置を指示位置として設定する。1つの例では、コントローラ入力決定部23は、基準位置を設定した後に取得したタッチイベントに基づいて座標(x、y)を取得し、当該座標を指示位置として決定する。
当該変形実施形態では、コントローラ入力決定部23は、基準位置から指示位置への方向に基づいてユーザ入力の方向を決定する。1つの例では、コントローラ入力決定部23は、基準位置から指示位置への方向のベクトルの角度をユーザ入力の方向に対応する角度として決定する。
当該変形実施形態では、コントローラ入力決定部23は、基準位置から指示位置までの距離に基づいてユーザ入力の大きさを決定する。1つの例では、コントローラ入力決定部23は、基準位置から指示位置までの距離をユーザ入力の大きさとして決定する。
当該変形実施形態では、コントローラ入力判定部24は、ユーザ入力の大きさが所定値τを超える大きさであるか否かを判定する。キャラクタ状態決定部25は、コントローラ入力判定部24の判定結果に基づいて、タッチパネル17に表示される操作対象キャラクタ40の移動状態を決定する。
当該変形実施形態においても、表示部22は第1のオブジェクト33及び第2のオブジェクト34を表示し、決定されたユーザ入力の大きさが所定値を超える大きさである場合、表示部22がユーザ入力の方向を示す第1のオブジェクト33をユーザ入力の方向への入力を抑制させるための第2のオブジェクト34へ変化させる。このような構成とすることにより、電子装置10は、ユーザに対して入力が十分な大きさに達した印象を与えること(アフォーダンス)が可能となる。一方、ユーザは、入力が十分な大きさに達したという認識を得ることができるため、自身の入力の大きさを把握し易くなる。これにより、ユーザの過剰な入力を防ぐことが可能となり、より操作性を高くすることが可能となる。
また当該変形実施形態においても、電子装置10は、環状オブジェクト30を表示し、表示部22は、決定したタッチ位置を中心として、時間の経過とともに内径が徐々に小さくなるように環状オブジェクト30を表示する。このように、当該変形実施形態においても、表示部22が第2のステップとして環状オブジェクト30を動的に変化させて表示することにより、ユーザは、自身が指を置いている画面上の位置を、該指で画面が隠れている場合であっても、正確に把握することが可能となる。これにより、より操作性を高めることが可能となる。また、ユーザの操作を支援するための環状オブジェクト30は常に固定位置に表示されるわけではないため、ユーザの操作を支援するための仮想オブジェクトが固定位置に表示される場合と比較して、ゲーム開発者はゲーム用画面を有効に活用したゲームアプリケーションを作成することが可能となる。
また当該変形実施形態においても、表示部22は、図8に示すように、タッチ位置に対してユーザ入力の方向へ離れた位置に複数のオブジェクト32を収束させ、その後、図6に示すように、タッチ位置に対してユーザ入力の方向へ離れた位置に第1のオブジェクト33を表示する。このように当該変形実施形態においても、表示部22が、ユーザ入力に応じて複数のオブジェクト32を動的に収束させるように表示することにより、電子装置10は、ユーザに対して当該オブジェクト32を移動させる印象を与えること(アフォーダンス)が可能となる。一方、ユーザは、自身の入力に応じてオブジェクト32が移動するため、自身の入力が適切に反映されているという認識を得ることができる。これにより、ユーザの過剰な入力を防ぐことが可能となり、より操作性を高めることが可能となる。
また当該変形実施形態においても、表示部22が所定領域50内に環状オブジェクト30を表示することにより、ユーザに対して環状オブジェクト30の中央に指を置きたくなる印象を与えること(アフォーダンス)が可能となる。これにより、ユーザは最初に指を置くべき位置を把握しやすくなるため、より操作性を高くすることが可能となる。更に当該変形実施形態においても、操作対象キャラクタ40を制御するための入力領域を明確化するとともに、所定領域50内で発生したタッチイベントのみを有効とすることにより、ユーザに対するゲームアプリケーションが要求する範囲への入力を支援することが可能となる。
なお、当該変形実施形態では、コントローラ入力決定部23は、所定領域50内で発生したものであると判定したタッチイベントのみに基づいて、第1の軸の値及び第2の軸の値により示されるデータポイントを取得してもよい。この場合、タッチ開始のタッチイベントは、所定領域50内で発生したものであると判定した最初のタッチイベントである。
上記の変形実施形態は、矛盾が生じない限りにおいて、適宜組み合わせて本発明の任意の実施形態とすることもできるし、任意の実施形態に適用することもできる。
本発明の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現する電子装置やプログラムとすることができ、また該プログラムを格納したコンピュータ読み取り可能な記憶媒体とすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現する方法とすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現するプログラムをコンピュータに供給することができるサーバとすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現する仮想マシンとすることもできる。
以上に説明した処理又は動作において、あるステップにおいて、そのステップではまだ利用することができないはずのデータを利用しているなどの処理又は動作上の矛盾が生じない限りにおいて、処理又は動作を自由に変更することができる。また以上に説明してきた各実施例は、本発明を説明するための例示であり、本発明はこれらの実施例に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。