(58)【調査した分野】(Int.Cl.,DB名)
前記電子装置にさらに、前記第1の操作基準位置を包含する所定範囲を設定する段階を実行させ、前記第1の操作基準位置及び前記第2の操作基準位置の少なくとも一方を移動させる段階は、ユーザが接触型位置入力装置に接触する位置が前記所定範囲の外へ移動したか否かを判定し、ユーザが接触型位置入力装置に接触する位置が前記所定範囲の外へ移動したと判定された場合、ユーザが接触型位置入力装置に接触する位置に追従するように前記第1の操作基準位置及び所定範囲を移動させる段階を含む、請求項1に記載のプログラム。
前記第1の操作基準位置及び前記第2の操作基準位置の少なくとも一方を移動させる段階は、前記第2の操作基準位置をユーザが接触型位置入力装置に接触する位置に移動させる段階を含む、請求項1及び2のいずれか1項に記載のプログラム。
前記電子装置は携帯型電子装置であり、前記ディスプレイ及び前記接触型位置入力装置はこれらを一体としたタッチパネルにより構成され、ユーザによる接触型位置入力装置への接触は前記携帯型電子装置を把持する手の親指である請求項1〜4のいずれか1項に記載のプログラム。
【発明の概要】
【発明が解決しようとする課題】
【0004】
物理的なコントローラにおいては、例えば、ユーザが右方向の入力を行いたい場合は、十字キーの右方向を押下することにより、触覚に基づき意図したとおりのユーザ入力を行うことができた。仮想コントローラにおいては、物理的な入力ボタンが存在しないため、触覚を頼りにした入力を行うことができない。そのため、右方向を意図してタッチを行っても、実際には仮想十字キーの右斜め上をタッチしている場合がある。このような場合には、ユーザは上方向成分の入力を意図していないにも拘わらず、上方向成分が入力され、ビデオゲーム上のキャラクタがジャンプしたりして、煩わしさを感じるという問題がある。
【0005】
図11に示すように、ユーザの指1102のタッチ位置1103をタッチパネル1101上でタッチパネルの一方端から他端に横方向に大きくスライドさせるときに、この問題は顕著である。ユーザは横方向のみスライドさせることを意図している場合であっても、長い距離にわたって、正確にそのような入力を行うことは必ずしも容易ではない。特に、スマートフォンのような携帯型電子装置を持った手の親指のみで操作する場合には特に困難である。親指によりタッチ操作を行う場合には、そのタッチ位置は親指の付け根を中心として半円状を描くのが通常であるから、
図12に示すように上下方向へも指が移動してしまう。
【0006】
意図しないユーザ入力を排除するために、一定の閾値を設けて、閾値を越えない範囲でのタッチ位置の移動は、ユーザ入力として受け付けないという方法も考えられる。しかし、
図12に示すようにスライド幅が大きければ、上下方向への意図しないユーザ入力が累積的に大きくなり、閾値を越えて上方向のユーザ入力として検出される。
【課題を解決するための手段】
【0007】
本発明は上記の課題に鑑みてなされたものであり、以下のような特徴を有している。すなわち、本発明のプログラムは、ディスプレイ及び接触型位置入力装置を有する電子装置において実行されるプログラムであって、当該電子装置に、接触型位置入力装置上に操作基準位置を設定する段階と、ユーザが接触型位置入力装置に接触する位置を移動させると、前記操作基準位置からの接触型位置入力装置上における第1の軸の成分における当該移動後のユーザの接触位置の方向及び距離の少なくとも一方を検出し、前記第1の軸に直交する第2の軸の成分における変位速度または変位加速度を検出する段階と、前記第1の軸の成分における検出された方向及び距離の少なくとも一方に基づいて、第1の制御を実行する段階と、前記第2の軸の成分における検出された変位速度または変位加速度に基づいて、第2の制御を実行する段階と、を実行させる。
【0008】
本発明における前記接触型位置入力装置上に操作基準位置を設定する段階は、前記方向及び距離の少なくとも一方のための第1の操作基準位置を設定する段階と、前記変位速度または変位加速度のための第2の操作基準位置を設定する段階と、を含み、前記電子装置にさらに、移動されたユーザの接触位置に基づいて前記第1の操作基準位置及び前記第2の操作基準位置の少なくとも一方を移動させる段階を実行させる段階を含んでもよい。
【0009】
前記電子装置にさらに、前記第1の操作基準位置を包含する所定範囲を設定する段階を実行させ、前記第1の操作基準位置及び前記第2の操作基準位置の少なくとも一方を移動させる段階は、ユーザが接触型位置入力装置に接触する位置が前記所定範囲の外へ移動したか否かを判定し、ユーザが接触型位置入力装置に接触する位置が前記所定範囲の外へ移動したと判定された場合、ユーザが接触型位置入力装置に接触する位置に追従するように前記第1の操作基準位置及び所定範囲を移動させる段階を含んでもよい。
【0010】
前記第1の操作基準位置及び前記第2の操作基準位置の少なくとも一方を移動させる段階は、前記第2の操作基準位置をユーザが接触型位置入力装置に接触する位置に移動させる段階を含んでもよい。
【0011】
さらに、本発明のプログラムは前記電子装置において実行されるビデオゲームのためのプログラムであって、前記第1の軸は前記接触型位置入力装置上の横軸であり、前記第2の軸は前記接触型位置入力装置上の縦軸であり、前記第2の制御を実行する段階は、前記第2の軸の成分における検出された変位速度または変位加速度が所定の閾値を越えた場合に、前記オブジェクトを前記ディスプレイの縦軸方向にジャンプさせる段階を含むプログラムであってもよい。
【0012】
前記プログラムは前記電子装置において実行されるビデオゲームのためのプログラムであって、前記第1の制御を実行する段階は、前記検出された方向に基づいて、ディスプレイ上に表示されるビデオゲームにおけるユーザが制御するオブジェクトを、当該ディスプレイの第1の軸上を移動させる段階、及び、前記検出された距離に対応する速度でディスプレイ上に表示されるビデオゲームにおけるユーザが制御するオブジェクトを、当該ディスプレイの第1の軸上を移動させる段階、の少なくとも一方を含んでもよい。
【0013】
前記電子装置は携帯型電子装置であり、前記ディスプレイ及び前記接触型位置入力装置はこれらを一体としたタッチパネルにより構成され、ユーザによる接触型位置入力装置への接触は前記携帯型電子装置を把持する手の親指であってもよい。
【0014】
本発明は、前記のプログラムを格納したコンピュータ読み取り可能な記録媒体とすることができる。
【0015】
本発明の電子装置は、ディスプレイ及び接触型位置入力装置を有する電子装置であって、接触型位置入力装置上に操作基準位置を設定する操作基準位置設定手段と、ユーザが接触型位置入力装置に接触する位置を移動させると、前記操作基準位置からの接触型位置入力装置上における第1の軸の成分における当該移動後のユーザの接触位置の方向及び距離の少なくとも一方を検出し、前記第1の軸に直交する第2の軸の成分における変位速度または変位加速度を検出する変位検出手段と、前記第1の軸の成分における検出された方向及び距離の少なくとも一方に基づいて、第1の制御を実行する第1制御実行手段と、前記第2の軸の成分における検出された変位速度または変位加速度に基づいて、第2の制御を実行する第2制御実行手段と、を備える。
【0016】
本発明の方法は、ディスプレイ及び接触型位置入力装置を有する電子装置において実行される方法であって、当該電子装置に、接触型位置入力装置上に操作基準位置を設定する段階と、ユーザが接触型位置入力装置に接触する位置を移動させると、前記操作基準位置からの接触型位置入力装置上における第1の軸の成分における当該移動後のユーザの接触位置の方向及び距離の少なくとも一方を検出し、前記第1の軸に直交する第2の軸の成分における変位速度または変位加速度を検出する段階と、前記第1の軸の成分における検出された方向及び距離の少なくとも一方に基づいて、第1の制御を実行する段階と、前記第2の軸の成分における検出された変位速度または変位加速度に基づいて、第2の制御を実行する段階と、を実行させる。
【発明の効果】
【0017】
本発明の構成を採用することにより、ユーザが意図せずに行ったタッチ位置の累積的に積算された移動による制御が実行されることを防止することができる。これは特に、ユーザがタッチパネルのような接触型入力装置の一端から他端へタッチ位置を大きくスライドさせるときに効果的である。すなわち、ユーザがタッチパネル一端をタッチして、他端へ向けて横方向の入力のみを意図してスライドさせた場合であっても、意図せずに上下方向へもスライドを行ってしまう。単に初期のタッチ位置からの移動変位の積算量に基づいて入力を判定する場合には、上下方向への入力が検出されてしまう。スマートフォンのように片手で把持し、その把持した手の親指で画面にタッチして入力を行う場合にはこの問題は顕著である。親指によりタッチ操作を行う場合には、そのタッチ位置は親指の付け根を中心軸として半円状を描くのが通常だからである。スマートフォンを把持しない手の人差し指等で操作を行えばより正確に操作することも可能ではあるが、スマートフォンのユーザは、片手でスマートフォンを操作し、他方の手で鞄を持ったり、電車のつり革を握ったりすることを望むため、そのような操作を強いることはユーザにとって好ましくない。本発明を用いることにより、意図したとおりの制御を片手の操作で直感的に行うことが可能となる。
【0018】
さらに、本発明を用いれば、連続ジャンプを行う場合であっても、タッチしている指をタッチパネルから離さずに、上方向へ一定速度で指を動かした後いったん指を止めて、そこから再度一定速度で指を動かせばよいため、電子装置を安定して把持したまま実行することが可能となる。
【発明を実施するための形態】
【0020】
図1は本発明の電子装置の構成図の一例を示す。電子装置100はプロセッサ101、ディスプレイ102、接触型位置入力装置103、内部メモリ104、外部メモリ105及び通信部106を備える。本実施の形態においては、これらの各構成部品はバス109によって接続されるが、それぞれが必要に応じて個別に接続される形態であってもかまわない。電子装置100は、例えば、携帯電話、携帯型情報端末、スマートフォン、タブレット型コンピュータ、ビデオゲーム機、携帯型ビデオゲーム機、タッチパネルを備えるコンピュータが含まれる。内部メモリ104は不揮発性メモリや揮発性メモリ等の情報を格納できるものであればいかなるものであってもよい。ハードディスクであってもかまわない。本発明を実行するためのプログラム107を格納する。外部メモリ105は、メモリカードのように着脱可能なメモリである。ここに本発明を実行するためのプログラム108を格納し、電子装置に実行させてもよい。通信部106は、移動体通信、無線LAN等の無線通信やイーサネット(登録商標)ケーブル、USBケーブル等を用いた有線通信を行う。この通信部106によって、プログラムをサーバからダウンロードして、内部メモリ104ないし外部メモリ105に格納してもよい。CD/DVD等の光学ディスクにプログラムを格納し、通信部106に光学ドライブを接続して、光学ディスクからプログラム等を読み込んでメモリに格納してもよい。ディスプレイ102は電子装置において実行されるプログラムによって出力される画像を表示する。プログラム107及び108はビデオゲーム、ウェブブラウザ等のユーザ入力を要求するものであればいかなるアプリケーションのためのプログラムであっても構わない。接触型位置入力装置105は例えばタッチパッドのように、ユーザが接触した位置に基づいた入力を電子装置に与える。ディスプレイ102と接触型位置入力装置103を一体としたタッチパネルとしてもよい。
【0021】
図2は本発明の電子装置の機能ブロック図の一例を示す。電子装置200は、ディスプレイ手段201、接触型位置入力手段202、操作基準位置設定手段203、変位検出手段204、第1制御実行手段205、第2制御実行手段206、記憶手段207及び通信手段208を備える。ディスプレイ手段201は電子装置による出力を表示する機能を有し、接触型位置入力手段202は、ユーザが接触した位置を電子装置に与える機能を有する。操作基準位置設定手段203は接触型位置入力装置上に操作基準位置を設定し、所定の場合に移動する。変位検出手段204は、ユーザが接触型位置入力装置に接触する位置を移動させると、接触型位置入力装置上における第1の軸の成分における当該移動後のユーザの接触位置の操作基準位置からの方向及び距離の少なくとも一方を検出し、第1の軸に直交する第2の軸の成分における変位速度または変位加速度を検出する。第1制御実行手段205は、第1の軸の成分における検出された方向及び距離の少なくとも一方に基づいて第1の制御を実行する。第2制御実行手段206は第2の軸の成分における検出された変位速度または変位加速度に基づいて、第2の制御を実行する。記憶手段207にはプログラムやデータ等を格納する。通信手段208は無線通信、有線通信を行う。通信手段208を介して、サーバ、光学ディスク等からプログラムを取得して、記憶手段207に格納してもよい。
【0022】
[第1の実施形態]
本発明の第1の実施形態における、本発明の動作について説明する。本実施形態においては、電子装置としてスマートフォンを用い、当該スマートフォンによって実行されるビデオゲームにおいて、ユーザが操作するキャラクタオブジェクトに対する制御を行う。本実施形態においては、接触型位置入力装置とディスプレイとが一体となったタッチパネルを用いるが、これらが別の位置に配置され、別個の形態であってもかまわない。
【0023】
図3(A)〜(F)のスマートフォンのタッチパネル300に表示されるキャラクタオブジェクト301を一例として本発明の動作を説明する。
図4(A)〜(D)は本実施形態におけるキャラクタオブジェクトの操作のための情報処理を示したフローチャートである。
【0024】
まず、
図3(A)においては、キャラクタオブジェクト301が、ビデオゲームにおける2次元空間の左下に立っている。ユーザはまだタッチパネル300に触れていない。この段階においては、
図4(A)に示すように、スマートフォンは、ユーザによるタッチパネルへのタッチ(接触)を待ち受ける(ステップ401)。本実施形態においては、ユーザによるタッチはユーザの指によるものとして説明するが、例えばスタイラスペンのような、その他のものでもかまわない。
【0025】
ステップ401において、ユーザによるタッチパネル300へのタッチが検出されると、ステップ410において、カウンタNが0にセットされる。そして、ステップ411において、タッチパネル300がタッチ位置の座標(Tx(0)、Ty(0))を検出して、メモリに格納する。次に、ステップ412において、タッチパネル300上のタッチ位置の座標(Tx(0)、Ty(0))に第1の操作基準位置(R1x、R1y)及び第2の操作基準位置(R2x、R2y)を設定する。第1及び第2の操作基準位置は、予め決定されたタッチパネル上の位置であってもかまわない。タッチパネル上に予め仮想コントローラが表示されているような場合には、その中心点を第1及び第2の操作基準位置とすることができる。
【0026】
次に、操作基準位置を内包する所定範囲としての枠を設定する(ステップ413)。本実施形態においては、第1の操作基準位置(R1x、R1y)を中心とした長方形の枠を設定する。すなわち、
図5に示すように、第1の操作基準位置503(R1x、R1y)を中心としたX軸の正負の方向に所定の値Bの範囲で、Y軸方向の正負の方向に所定値Cの範囲の枠502を設定する。
【0027】
ステップ414において、カウンタNがインクリメントされ、それから、W秒間待機した後(ステップ415)、依然としてユーザがタッチをしているか否かを判定する(ステップ416)。ユーザがタッチパネルから指を離した場合には、ステップ401に戻り、次にユーザがタッチをすることを待つ。このW秒間の待機は、意図的な待機ではなく、スマートフォンが所定の情報処理を行うために必要な時間の経過であってもかまわない。この待機時間は一定でなくともよい。
【0028】
ステップ416において、ユーザがまだタッチしていると判定された場合には、現在のタッチ位置の座標(Tx(1)、Ty(1))を検出して、さらにメモリに格納する(ステップ417)。
【0029】
ステップ418において、第1の操作基準位置(R1x、R1y)からのユーザのタッチ位置(Tx(1)、Ty(1))のX座標における変位量Dx(1)及びY座標における変位量Dy(1)を以下の式に基づいて算出して、メモリに格納する。ここで変位量は絶対値ではなく、正負を含んだ値である。
【0030】
Dx(N)=Tx(N)−R1x ・・・ (1)
Dy(N)=Ty(N)−R1y ・・・ (2)
【0031】
変位量Dx(N)の正負の符号が操作基準位置からの変位の方向を表し、その絶対値|Dx(N)|が操作基準位置からの距離を表す。これにより、ユーザのタッチ位置の変位方向を判定して、キャラクタオブジェクトの制御を行う。X座標変位量Dx(1)が正の値であれば、操作基準位置からの変位の方向は右方向であり、キャラクタオブジェクト301を右へ移動させ、X座標変位量Dx(1)が負の値であれば、変位方向は左方向であり、キャラクタオブジェクト301を左へ移動させる(ステップ419)。
【0032】
例えば、
図3(B)に示すように、ユーザの指310がタッチパネル300の左下320をタッチし、そこから右方向へ移動した場合、ユーザのタッチ位置のX座標変位量は正の値となる。この場合、キャラクタオブジェクト301もまた右へ移動する。一方、ユーザのタッチ位置が左へ移動した場合には、ユーザのタッチ位置のX座標変位量は負の値となり、キャラクタオブジェクト301もまた左へ移動する。
【0033】
また、単に操作基準位置R1xより大きいか否かによって正負の判定と同様の処理を行ってもよい。移動後のタッチ位置Tx(1)が第1の基準位置R1xよりも大きければ、右方向として検出し、ユーザタッチ位置Tx(1)の方が小さければ左方向として検出する。
【0034】
Dx(N)の絶対値が所定の値より小さい場合には、キャラクタオブジェクト301の移動を行わないこともできる。ユーザの指が意図せずにわずかに動いてしまった場合に、キャラクタオブジェクトが移動してしまうことを防止することができる。
【0035】
次に、ステップ420において、第2の操作基準位置(R2x、R2y)からのユーザタッチ位置のY座標における変位速度Vy(1)を以下の式に基づいて算出して、メモリに格納する。Wはステップ415における待ち時間である。変位速度は、絶対値ではなく、正負を含んだ値として扱う。
【0036】
Vy(N)=(Ty(N)−R2y)/W ・・・ (3)
【0037】
Vy(N)が所定の閾値K1よりも大きい場合には、キャラクタオブジェクト301を、タッチパネル300上の上方向に向かってジャンプさせる(ステップ421及び422)。一方、Vy(N)が所定の閾値K2よりも小さい場合には、キャラクタオブジェクト301をしゃがませる(ステップ423及び424)。閾値K2は典型的には負の値である。
【0038】
例えば、
図3(C)に示すように、ユーザの指がタッチパネル300の中央下をタッチし、そこから上方向へすばやく移動した場合、ユーザのタッチ位置の変位速度Vyは正の値で、所定値K1を超えた値となる。この場合には、キャラクタオブジェクト301は上方向に向かってジャンプする。一方、
図3(D)に示すように、ユーザのタッチ位置が下へすばやく移動した場合には、ユーザのタッチ位置のY座標変位速度Vyは負の値となり、キャラクタオブジェクト301はしゃがむ。なお、本実施形態においては、変位速度Vyが正の値のときはジャンプし、負の値のときはしゃがむとしているが、その他の制御であってもかまわない。例えば、正の値のときはメニュー画面に移ったり、負の値の時は、伏せる動作や、下方向へジャンプする動作を行ってもかまわない。また、一方についてはなにも行わなくてもよい。
【0039】
ここまで、X座標変位量に基づく第1の制御と、Y座標変位速度に基づく第2の制御を別々に説明したが、これらの制御を同時に行ってもよい。例えば、
図3(E)に示すように、ユーザがタッチパネル300の左下をタッチして、右上方向にすばやく指を移動させた場合、キャラクタオブジェクト301は右上方向にジャンプさせることができる。
【0040】
一方、
図3(F)に示すように、ユーザがタッチパネル301の左下をタッチして、右上方向にゆっくり指を移動させた場合、キャラクタオブジェクト301は右方向に移動するだけであって、ジャンプの制御は行われない。Y座標変位速度Vyが所定値K1を越えなかったためである。これにより、ユーザが意図せずにタッチ位置を上方向に移動させたことによるジャンプ制御が実行されることを防止することができる。
【0041】
特に、スマートフォンのように片手で把持し、その把持した手の親指で画面にタッチして入力を行う場合にはこの傾向は顕著である。親指によりスライドを行う場合には、そのタッチ位置は親指の付け根を中心軸として半円状を描くのが通常だからである。スマートフォンを把持しない手の人差し指等で操作を行えばより正確に操作することも可能ではあるが、スマートフォンのユーザは、片手でスマートフォンを操作し、他方の手で鞄を持ったり、電車のつり革を握ったりすることを望むため、そのような操作を強いることはユーザにとって好ましくない。
【0042】
タッチ位置の変位速度は、必ずしも毎回算出する必要はない。例えば、タッチ位置の検出を3回行った後に、その3回の合計の移動変位を時間で割ることによって、速度を算出してもよい。また、複数回分の算出された速度の平均値をとってもよい。
【0043】
本発明の構成を用いれば、例えば、連続的なジャンプ制御に対するユーザの操作性を向上させる。仮想コントローラの操作基準位置が最初にタッチした位置であり、縦軸についての制御が、固定された操作基準位置からの距離または変位方向に基づいて行う場合において、ユーザが一度のジャンプ制御を意図してタッチ位置を移動させた場合、ユーザはタッチ位置を操作基準位置に戻さなければ、意図に反して連続的にジャンプ制御が行われてしまう。これを防止するために、連続ジャンプを実行するためには、ユーザはタッチ位置を操作基準位置から上方向に移動させた後、操作基準位置まで一度戻し、再度上方向に移動させる構成とすることもできる。しかし、これは指の感触で操作基準位置が判別できない仮想コントローラにおいては極めて困難である。
【0044】
あるいはいったん指を離して操作基準位置をリセットして、再度タッチして指を上方向へスライドする態様も考えられる。しかし、特に、スマートフォンのように片手で把持して操作する電子装置においては、画面をタッチする指も含めて電子装置を把持しているから、これを一度離すことは好ましくない。しかも、連続してタッチしてスライドさせる操作を行えば、電子装置を不安定にして、落下させる危険性もある。タッチパネルにおける仮想コントローラの基準位置が予め固定されている構成においても、上方向への入力を与える領域を2回タッチする操作が必要であり、同様の問題がある。
【0045】
これに対して、本発明においては、タッチ位置の変位速度に基づいて制御を行うから、連続ジャンプを意図しないときは、一度上方向へタッチ位置を素早く移動させて止めればよい。連続ジャンプを意図するときは、一度上方向へ移動させたのち一度止めて、再度上方向へ移動させればよい。これは意図されたキャラクタの動作と類似する動作であり、ユーザは直感的にキャラクタを操作することが可能となる。また、タッチしている指を離す必要がないから、電子装置を安定して把持したまま実行することが可能となる。
【0046】
さらに、本発明を用いれば、連続ジャンプを意図して、上方向へタッチ位置を素早く移動した後に指を大きく下に戻しても、戻した位置から素早く上方向に再度移動させれば、容易にジャンプ入力を行うことができる。既存の固定仮想コントローラでは操作基準位置を超えて指を大きく戻した場合、少し上に指を上げても下入力の範囲であるため、ユーザの意図したようにジャンプ入力を行うことができない。
【0047】
次に、第1及び第2の操作基準位置を移動させる処理について説明する。ステップ430において、X座標変位量Dx(1)の絶対値が所定の値Bよりも大きいか否か判定し、大きい場合には、以下の式により、第1の操作基準位置のX座標を移動させる(ステップ431)。さらに、Y座標変位量Dy(1)の絶対値が所定の値Cよりも大きいか否か判定し(ステップ432)、大きい場合には、以下の式により、第1の操作基準位置のY座標を移動させる(ステップ433)。
【0048】
R1x=R1x+(|Dx(N)|−B)×
(Dx(N)/|Dx(N)|) ・・・ (4)
R1y=R1y+(|Dy(N)|−C)×
(Dy(N)/|Dy(N)|) ・・・ (5)
【0049】
すなわち、
図5に示すように、ユーザのタッチ位置が第1の操作基準位置のX座標から所定距離Bより離れた場合には、第1の操作基準位置からユーザタッチ位置の距離と所定値Bとの差分だけ、第1の操作基準位置のX座標をユーザタッチ位置に近づける。Y座標についても同様の処理を行う。これにより、第1の操作基準位置がユーザタッチ位置にX座標においては一定距離Bだけ離間し、Y座標においてはCだけ離間して追従する。それにともなって、操作基準位置を中心とする長方形の枠502もまたユーザタッチ位置に追従する。
【0050】
操作基準位置が固定されている場合には、ユーザタッチ位置が操作基準位置から大きく移動した後に、逆方向への入力を行いたい場合には、大きく戻る必要がある。これに対して本発明によれば、所定距離だけ戻れば逆方向への入力を行うことができるため、ユーザの操作性が向上する。
【0051】
本実施形態はその他の点においてもユーザの操作性を向上させる。スマートフォンのような携帯型情報端末を片手で把持し、その把持した手の親指で画面にタッチして入力を行う場合には、親指の稼働範囲は親指の付け根を中心として略90度の範囲に限定される。たとえば、左手でスマートフォンを把持して、左手親指の左方向の可動域の限界位置付近でタッチをし、そこが操作基準位置として設定された場合、操作基準位置の右側でタッチ操作を行うことは容易である一方で、左入力は親指の可動域の範囲外へ指を移動させなければならず、困難である。しかし、本実施形態のように、操作基準位置がユーザタッチ位置に追従すれば、一度右側へ親指をスライドさせると、それにともなって操作基準位置が右に移動する。そして、左入力を行いたい場合は、スライド先から左側へ一定の距離を戻せばよいから、容易に左入力を行うことが可能になる。
【0052】
また、ユーザは画面を注視せずに操作を行うことがある。そのような場合、操作基準位置が固定されていると、ユーザは気が付かないうちに操作基準位置から指が大きくずれてしまい、意図しない制御が行われることがある。このような実際の操作基準位置とユーザが認識する操作基準位置とのズレをユーザに認識させるためには、ディスプレイ上に仮想コントローラを表示する必要がある。これはゲームの進行とは関係のない表示であるから、ゲームによって作り出されている世界にユーザが没頭することを妨げる。これに対して、本件実施形態のように操作基準位置が追従する場合には、仮想コントローラを表示させなくとも、ユーザはこのようなズレを感じることなく操作が可能である。
【0053】
さらに、初期タッチ位置を操作基準位置とした場合にはある方向への入力が不可能になる場合もある。例えば、ユーザがタッチパネルの左端を最初にタッチして、そこが操作基準位置となると、操作基準位置の左側はタッチパネルが存在しないため、左入力ができない。このような場合は、ユーザは一度指を離して、左入力が可能となる場所を再度タッチしなければならない。ユーザは制御対象であるユーザキャラクタの表示されている位置付近に指を置く傾向がある。したがって、ユーザキャラクタが例えば左端に表示されている場合には、ユーザは無意識的にタッチパネルの左端を最初にタッチする。そして、キャラクタオブジェクトを右へ移動させたのち、左へ移動させようと試みた際に、タッチパネルが存在しないから左入力ができないことを認識し、煩わしさを感じる。本発明をもちいれば、このような場合であっても、指をいったん右へスライドさせれば、操作基準位置もそれにともなって右へ移動するから、左入力を行うことが可能となる。
【0054】
本実施形態においては、
図5に示すとおり、X座標及びY座標について所定値B及びCをそれぞれ設けて、所定の範囲として、第1の操作基準位置503を中心とする四角形の枠502を設定した。この枠の中においては、ユーザタッチ位置504が移動しても第1の操作基準位置503は移動しない。そして、この枠502の外へユーザタッチ位置が移動した(タッチ位置505)場合に、この枠502がタッチ位置に追従して移動する。この枠は四角形である必要はなく、任意の形状、例えば、後述するとおり円形等であってもかまわない。またこの枠はタッチパネル501において表示しなくてもよいし、表示してもよい。
【0055】
この所定の枠があるため、一度入力した方向は維持される。タッチ位置に一致するように操作基準位置が追従する場合には、例えば、一度右へタッチ位置を動かして、そこで止めた場合、操作基準位置とタッチ位置とが同一点になるから、右入力が一度入力されたのち、入力なしの状態になる。右方向への入力を連続して与えるためには右方向へタッチ位置を移動させ続けなければならない。しかし、本実施形態のように、所定の枠を設定することによって、右へタッチ位置を動かした場合、基準点からB以下の距離で右方向への変位が維持されるから、右方向への移動の後、タッチ位置を固定しても、右入力が維持される。したがって、物理コントローラを使用している感覚と同様の感覚を得ることが可能となる。
【0056】
次に、ステップ434において、第2の操作基準位置を現在のタッチ位置座標(Tx(1)、Ty(1))に設定する。
【0057】
次に、ステップ414に戻り、上述の処理を繰り返し行う。カウンタNがステップ414においてインクリメントされるから、繰り返しのたびにNがインクリメントされて、更新されたタッチ位置、操作基準位置等に基づいて、上述の説明による動作が実行される。
【0058】
[第2の実施形態]
本発明の第2の実施形態について説明する。本実施形態は第1の実施形態のステップ419(
図4(B))に代えて、ステップ600(
図6)を採用した点を除き、第1の実施形態と同様である。
【0059】
すなわち、ステップ418において、ユーザタッチ位置のX座標変位量Dxを算出した後、ステップ600において、キャラクタオブジェクト301をDx(N)に所定の値Eを乗算して算出された速度で横軸方向にタッチパネル上で移動させる。ここでDx(N)は正または負の値をとるから、例えば、正の値であれば右方向へDx(N)の大きさに基づく速度で移動し、負の値であれば左方向へDx(N)の大きさに基づく速度で移動する。
【0060】
本発明においては、第1の操作基準位置503を包含する所定範囲として、四角形の枠502を設定した(
図5)。この枠の中においては、ユーザタッチ位置が移動しても第1の操作基準位置503は移動しない。このため、第1の操作基準位置からの方向に基づくユーザ入力に加えて、第1の操作基準位置からの距離に基づいた0〜所定値Bないし所定値Cの範囲でのアナログ的なユーザ入力を与えることを可能とする。かかる構成により、キャラクタオブジェクトの移動方向に加えて移動速度も容易に入力することが可能となる。
【0061】
また、キャラクタオブジェクトの移動方向が一方向に限定されているゲームのように、方向についての入力情報を必要としない場合もある。その場合には、単に、操作基準位置からの距離に基づいて制御を行うこともできる。例えば、Dx(N)の大きさ、すなわち、第1の操作基準位置からの距離に基づいて決定された速さで、予め決められた方向にキャラクタオブジェクトを移動させてもよい。
【0062】
[第3の実施形態]
本発明の第3の実施形態について説明する。本実施形態は第1の実施形態のステップ412(
図4(B))及びステップ420(
図4(C))に代えて、ステップ700(
図7(A))及びステップ710(
図7(B))を採用し、ステップ434(
図4(D))を実行しない点を除き、第1の実施形態と同様である。
【0063】
すなわち、本実施形態においては、ステップ700において、第1の操作基準位置(R1x、R1y)をタッチ位置座標(Tx、Ty)に設定し、第2の操作基準位置(R2x、R2y)をタッチパネルにおける座標の原点(0、0)に設定する。タッチパネルにおける座標の原点は、ユーザのタッチ位置等のタッチパネル上で座標を特定するために予め設定されているものである。
【0064】
そして、ステップ710において、以下の式にもとづいて、ユーザタッチ位置のY座標移動速度を算出する。
【0065】
Vy(N)=(Ty(N)−Ty(N−1))/W ・・・ (6)
【0066】
ステップ421〜424において、算出されたVy(N)に基づいて、キャラクタオブジェクトを制御する。そして、ステップ430〜433において、第1の操作基準位置及び所定範囲を移動させたのち、ステップ414に戻る。第2の操作基準位置の移動は行わない。
【0067】
なお、式(6)を一般化すると以下のとおりとなる。
【0068】
Vy(N)=((Ty(N)−R2y)−
(Ty(N−1)−R2y))/W・・・(7)
【0069】
すなわち、本実施形態においては、第2の操作基準位置をタッチパネルにおける座標原点に設定したが、原点以外の所定の座標に設定しても同様に本発明を実施できる。
【0070】
また、第1の操作基準点を移動しなくとも本発明は実施可能である。
【0071】
[第4の実施形態]
次に、本発明の第4の実施形態について説明する。本実施形態は第1の実施形態のステップ413(
図4(B))の後にステップ800(
図8(A))を行う点、及び、ステップ421〜424(
図4(C))に代えて、ステップ810〜814(
図8(B))を採用した点を除き、第1の実施形態と同様である。
【0072】
すなわち、ステップ800において、ユーザタッチ位置の移動のY座標変位速度Vy(t)の初期値Vy(0)を0に設定する。そして、ステップ414〜419を実行した後、ステップ420において、Y座標変位速度Vy(1)を算出してメモリに格納し、ステップ810において、最新のVy(N)とひとつ前のVy(N−1)との差分に基づき、Y座標変位加速度Ay(1)を以下の式により算出して、メモリに格納する。
【0073】
Ay(N)=(Vy(N)−Vy(N−1))/W ・・・ (8)
【0074】
Y座標変位加速度Ay(1)が所定の閾値K3より大きければ(ステップ811)、キャラクタオブジェクト301をジャンプさせ(ステップ812)、所定の閾値K4よりも小さい場合には(ステップ812)、しゃがませる制御を行う(ステップ813)。
[第5の実施形態]
本発明の第5の実施形態について説明する。本実施形態は第1の実施形態の第1の操作基準位置を中心とした四角形の枠502に代えて、円形の枠(902)を採用し(
図9)、ステップ430〜433に代えてステップ1000〜1001(
図10)を採用した点を除き、第1の実施形態と同様である。
【0075】
すなわち、
図9に示すとおり、タッチパネル900上でユーザの指910がタッチした位置903であり、ここを操作基準点とした場合、この操作基準点を中心とした半径Rの範囲を所定の範囲とする。そして、ユーザの指910がこの円形範囲を越えて位置904まで移動した場合を考える。ステップ1000において、以下の式によって、移動後のタッチ位置が円形範囲の内側にあるか否かを判定する。
【0076】
Dx(N)
2+Dy(N)
2>R
2 ・・・ (9)
【0077】
移動後のタッチ位置の操作基準位置からのX座標変位量Dx(N)の2乗とY座標変位量Dy(N)の2乗の和が半径Rの2乗よりも大きい場合にはタッチ位置は円形範囲の外側へ移動したと判断する。
【0078】
次に、円形範囲の外へ移動した場合には、以下の式によって、第1の操作基準位置(R1x、R1y)を移動する(ステップ1001)。
【0080】
すなわち、
図9に示すとおり、操作基準位置903と移動後のタッチ位置904とを直線で結び、タッチ位置が円形範囲の外延の点905を超えて移動した距離Mだけ、円形範囲はその直線上を現在のタッチ位置904へ近づく方向に移動させる。距離Mは、操作基準位置からタッチ位置の距離Hから半径Rを差し引いた値である。Mx及びMyは距離Mのxy座標成分である。Dx(N)及びDy(N)が正負の値をとるため、Mx及びMyも移動の方向成分を含む。本実施形態においては、相似する三角形の比を用いて幾何学的にタッチ位置が円形範囲を超えて移動した距離Mを算出して、操作基準位置を移動させた。しかし、当然ながらその他の方法によっても本実施形態は実施可能である。
【0081】
以上に説明してきた各実施形態は、本発明を説明するための例示であり、本発明はこれらの実施形態に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。
【解決手段】ディスプレイ及び接触型位置入力装置を有する電子装置において実行されるプログラムであって、当該電子装置に、接触型位置入力装置上に操作基準位置を設定する段階と、ユーザが接触型位置入力装置に接触する位置を移動させると、前記操作基準位置からの接触型位置入力装置上における第1の軸の成分における当該移動後のユーザの接触位置の方向及び距離の少なくとも一方を検出し、前記第1の軸に直交する第2の軸の成分における変位速度または変位加速度を検出する段階と、前記第1の軸の成分における検出された方向及び距離の少なくとも一方に基づいて、第1の制御を実行する段階と、前記第2の軸の成分における検出された変位速度または変位加速度に基づいて、第2の制御を実行する段階と、を実行させるプログラム。