(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-31
(45)【発行日】2022-11-09
(54)【発明の名称】情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法
(51)【国際特許分類】
G06F 3/0486 20130101AFI20221101BHJP
G06F 3/04842 20220101ALI20221101BHJP
G06F 3/0488 20220101ALI20221101BHJP
A63F 13/2145 20140101ALI20221101BHJP
A63F 13/426 20140101ALI20221101BHJP
A63F 13/55 20140101ALI20221101BHJP
A63F 13/533 20140101ALI20221101BHJP
【FI】
G06F3/0486
G06F3/04842
G06F3/0488
A63F13/2145
A63F13/426
A63F13/55
A63F13/533
(21)【出願番号】P 2021046055
(22)【出願日】2021-03-19
(62)【分割の表示】P 2018075340の分割
【原出願日】2018-04-10
【審査請求日】2021-04-05
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】押野 洋介
(72)【発明者】
【氏名】清水 勇作
【審査官】滝谷 亮一
(56)【参考文献】
【文献】特開2011-145779(JP,A)
【文献】特開2013-012021(JP,A)
【文献】国際公開第2015/071947(WO,A1)
【文献】特開2015-069226(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/0486
G06F 3/04842
G06F 3/0488
A63F 13/2145
A63F 13/426
A63F 13/55
A63F 13/533
(57)【特許請求の範囲】
【請求項1】
表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理プログラムであって、情報処理装置のコンピュータを、
前記オブジェクトに対する前記ドラッグ操作の入力座標を取得する入力座標取得手段と、
前記ドラッグ操作が開始されてからの前記入力座標の座標変化量を算出する変化量算出手段と、
前記ドラッグ操作中の前記入力座標に基づいて前記オブジェクトを移動させるオブジェクト移動手段として前記コンピュータを機能させ、
前記オブジェクト移動手段は、前記座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、前記入力座標と前記オブジェクトの座標との距離が大きくなるように、
前記ドラッグ操作の方向とは独立した方向へ、前記オブジェクトを
現在の前記入力座標から離す補正を行って当該オブジェクトを移動させる、情報処理プログラム。
【請求項2】
前記入力座標取得手段は、前記ドラッグ操作中において前記入力座標を繰り返し取得し、
前記変化量算出手段は、前記ドラッグ操作が開始された入力座標から現在の前記入力座標までの差分に基づいて前記座標変化量を算出する、請求項1に記載の情報処理プログラム。
【請求項3】
前記オブジェクト移動手段は、
前記座標変化量に基づく補正量を用いて前記入力座標を補正した座標に前記オブジェクトを配置し、
前記ドラッグ操作中における前記差分の最大値に応じた大きさとなるように前記補正量を算出する、請求項2に記載の情報処理プログラム。
【請求項4】
前記変化量算出手段は、前記ドラッグ操作中における前記入力座標の累積移動距離に基づいて前記座標変化量を算出する、請求項1から請求項3のいずれか1項に記載の情報処理プログラム。
【請求項5】
前記オブジェクト移動手段は、前記ドラッグ操作中の前記入力座標と前記オブジェクトの座標との距離に上限を設定する、請求項1から請求項
4のいずれか1項に記載の情報処理プログラム。
【請求項6】
前記オブジェクト移動手段は、前記ドラッグ操作中の前記入力座標または前記オブジェクトの座標が前記表示装置における表示領域の端から所定距離内の位置となることを少なくとも条件として、前記補正に基づく前記オブジェクトの位置が当該端に近づくように、当該補正の方向および量の少なくとも一方を修正する、請求項1から請求項
5のいずれか1項に記載の情報処理プログラム。
【請求項7】
前記オブジェクト移動手段は、
前記ドラッグ操作中の前記入力座標が前記表示装置における表示領域の端から所定距離内の位置となることを少なくとも条件として、前記補正の量を減少させる、請求項1から請求項
6のいずれか1項に記載の情報処理プログラム。
【請求項8】
前記オブジェクト移動手段は、前記ドラッグ操作が開始されてからの各前記入力座標または前記オブジェクトの座標が、前記表示領域の端から所定距離内の範囲にある間は、前記オブジェクトを当該ドラッグ操作中の前記入力座標の位置に配置する、請求項1から請求項
7のいずれか1項に記載の情報処理プログラム。
【請求項9】
前記入力座標取得手段は、前記入力座標を繰り返し取得し、
前記変化量算出手段は、前記ドラッグ操作の前記入力座標が取得されなくなってから所定時間内に前記入力座標が再び取得された場合、当該ドラッグ操作に関して前記座標変化量を継続して算出する、請求項1から請求項
8のいずれか1項に記載の情報処理プログラム。
【請求項10】
前記入力座標取得手段は、前記表示装置の画面上に設けられるタッチパネルから前記入力座標を取得する、請求項1から請求項
9のいずれか1項に記載の情報処理プログラム。
【請求項11】
表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理装置であって、
前記オブジェクトに対する前記ドラッグ操作の入力座標を取得する入力座標取得手段と、
前記ドラッグ操作が開始されてからの前記入力座標の座標変化量を算出する変化量算出手段と、
前記ドラッグ操作中の前記入力座標に基づいて前記オブジェクトを移動させるオブジェクト移動手段とを備え、
前記オブジェクト移動手段は、前記座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、前記入力座標と前記オブジェクトの座標との距離が大きくなるように、
前記ドラッグ操作の方向とは独立した方向へ、前記オブジェクトを
現在の前記入力座標から離す補正を行って当該オブジェクトを移動させる、情報処理装置。
【請求項12】
表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理システムであって、
前記オブジェクトに対する前記ドラッグ操作の入力座標を取得する入力座標取得手段と、
前記ドラッグ操作が開始されてからの前記入力座標の座標変化量を算出する変化量算出手段と、
前記ドラッグ操作中の前記入力座標に基づいて前記オブジェクトを移動させるオブジェクト移動手段とを備え、
前記オブジェクト移動手段は、前記座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、前記入力座標と前記オブジェクトの座標との距離が大きくなるように、
前記ドラッグ操作の方向とは独立した方向へ、前記オブジェクトを
現在の前記入力座標から離す補正を行って当該オブジェクトを移動させる、情報処理システム。
【請求項13】
表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理システムにおいて実行される情報処理方法であって、
前記オブジェクトに対する前記ドラッグ操作の入力座標を取得する入力座標取得ステップと、
前記ドラッグ操作が開始されてからの前記入力座標の座標変化量を算出する変化量算出ステップと、
前記ドラッグ操作中の前記入力座標に基づいて前記オブジェクトを移動させるオブジェクト移動ステップとを備え、
前記オブジェクト移動ステップにおいては、前記座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、前記入力座標と前記オブジェクトの座標との距離が大きくなるように、
前記ドラッグ操作の方向とは独立した方向へ、前記オブジェクトを
現在の前記入力座標から離す補正を行って当該オブジェクトを移動させる、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、表示装置に表示されるオブジェクトを入力座標に基づいて移動させる情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法に関する。
【背景技術】
【0002】
従来、表示装置に表示される仮想のオブジェクトをユーザの操作に基づいて移動させる技術がある。例えば、ブロック等のオブジェクトを、ユーザの指またはタッチペンを用いたドラッグ操作によって移動させる情報処理システムがある(例えば、非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【文献】"SUPER MARIO MAKER"、[online]、任天堂株式会社、[平成30年2月20日検索]、インターネット<http://supermariomaker.nintendo.com/make-it/>
【発明の概要】
【発明が解決しようとする課題】
【0004】
ユーザがオブジェクトに対するドラッグ操作を行う場合、ドラッグ操作の対象となるオブジェクトが指示体(例えば、指、タッチペン、または、カーソル等)によって隠れてしまい、操作がやりにくくなるおそれがあった。
【0005】
それ故、本発明の目的は、ドラッグ操作の操作性を向上することができる情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記の課題を解決すべく、本発明は、以下の(1)~(17)の構成を採用した。
【0007】
(1)
本発明の一例は、表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理プログラムである。情報処理プログラムは、情報処理装置のコンピュータを、入力座標取得手段と、変化量算出手段と、オブジェクト移動手段として機能させる。入力座標取得手段は、オブジェクトに対するドラッグ操作の入力座標を取得する。変化量算出手段は、ドラッグ操作が開始されてからの入力座標の座標変化量を算出する。オブジェクト移動手段は、ドラッグ操作中の入力座標に基づいてオブジェクトを移動させる。オブジェクト移動手段は、座標変化量が大きい場合に、当該座標変化量が小さい場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って当該オブジェクトを移動させる。
【0008】
上記(1)の構成によれば、座標変化量が大きい場合には、オブジェクトと入力座標を比較的大きく離して配置することによって、ドラッグ操作中におけるオブジェクトを見やすく表示することができる。また、座標変化量が小さい場合には、オブジェクトと入力座標との距離を比較的小さくする(0であってもよい)ことによって、オブジェクトを少しだけ移動させるドラッグ操作を行いやすくすることができる。これらによって、ドラッグ操作の操作性を向上することができる。
【0009】
(2)
入力座標取得手段は、ドラッグ操作中において入力座標を繰り返し取得してもよい。変化量算出手段は、ドラッグ操作が開始された入力座標から現在の入力座標までの差分に基づいて座標変化量を算出してもよい。
【0010】
上記(2)の構成によれば、ドラッグ操作が開始された開始位置に基づいて座標変化量が算出されるので、ドラッグ操作中において当該開始位置がユーザにとってわかりやすくなる。なお、「差分に基づいて座標変化量を算出する」とは、差分を座標変化量として用いる態様と、差分を用いた何らかの計算結果(例えば、差分と、後述の移動距離とを用いた計算結果)を座標変化量として用いる態様との両方を含む意味である。
【0011】
(3)
オブジェクト移動手段は、座標変化量に基づく補正量を用いて入力座標を補正した座標にオブジェクトを配置してもよい。オブジェクト移動手段は、ドラッグ操作中における差分の最大値に応じた大きさとなるように補正量を算出してもよい。
【0012】
上記(3)の構成によれば、ドラッグ操作中において座標変化量が減少した場合でもオブジェクトが見やすい状態を維持しやすくすることができる。これによって、ドラッグ操作の操作性を向上することができる。
【0013】
(4)
変化量算出手段は、ドラッグ操作中における入力座標の累積移動距離に基づいて座標変化量を算出してもよい。
【0014】
上記(4)の構成によれば、ユーザは、ドラッグ操作による累積移動距離を長くすることによって、オブジェクトを見やすい位置に表示させることができる。なお、「入力座標の累積移動距離に基づいて座標変化量を算出する」とは、累積移動距離を座標変化量として用いる態様と、累積移動距離を用いた何らかの計算結果(例えば、上記差分と累積移動距離とを用いた計算結果)を座標変化量として用いる態様との両方を含む意味である。
【0015】
(5)
オブジェクト移動手段は、ドラッグ操作が開始されてから座標変化量が所定の閾値以下となる期間において、入力座標とオブジェクトの座標との位置関係を維持してオブジェクトを移動させてもよい。
【0016】
上記(5)の構成によれば、ドラッグ操作中においてユーザが入力位置を開始位置からほとんど動かしていない場合(つまり、ユーザが入力位置を動かす意図がない場合)に、当該入力位置から離れた位置にオブジェクトが配置される可能性を低減することができる。これによって、ドラッグ操作に対してユーザが違和感を抱く可能性を低減することができる。
【0017】
(6)
オブジェクト移動手段は、ドラッグ操作中の入力座標とオブジェクトの座標との距離に上限を設定してもよい。
【0018】
上記(6)の構成によれば、オブジェクトがユーザによる入力位置から離れすぎてしまい、ユーザが入力位置とオブジェクトとの関係を把握しにくくなってしまう可能性を低減することができる。
【0019】
(7)
オブジェクト移動手段は、ドラッグ操作が開始された入力座標が、オブジェクト内の基準位置を通る所定軸について補正の方向と同じ側にある場合、当該入力座標が当該所定軸について当該補正の方向の反対側にある場合に比べて、当該ドラッグ操作中における当該補正の量を同じ側において大きく設定してもよい。
【0020】
上記(7)の構成によれば、オブジェクト内においてドラッグ操作が開始された位置に応じて補正量を調節することができるので、オブジェクトを見やすい位置に表示しやすくなる。
【0021】
(8)
オブジェクト移動手段は、ドラッグ操作中の入力座標に対して、表示装置に表示される画像における斜め上方向の位置にオブジェクトを配置してもよい。
【0022】
上記(8)の構成によれば、ドラッグ操作を行うユーザの指によって隠されにくい位置にオブジェクトを表示することができるので、ドラッグ操作の操作性を向上することができる。
【0023】
(9)
情報処理プログラムは、ドラッグ操作を行うユーザの手が右手であるか左手であるかを判別する判別手段としてコンピュータをさらに機能させてもよい。オブジェクト移動手段は、ドラッグ操作を行うユーザの手が右手であると判定される場合、ドラッグ操作中の入力座標に対して、表示装置に表示される画像を基準として左上方向の位置にオブジェクトを配置してもよい。オブジェクト移動手段は、ドラッグ操作を行うユーザの手が左手であると判定される場合、ドラッグ操作中の入力座標に対して、表示装置に表示される画像を基準として右上方向の位置にオブジェクトを配置してもよい。
【0024】
上記(9)の構成によれば、ドラッグ操作が左右のいずれの手で行われる場合であっても、オブジェクトを見やすく表示することができるので、ドラッグ操作の操作性を向上することができる。
【0025】
(10)
オブジェクト移動手段は、ドラッグ操作中の入力座標またはオブジェクトの座標が表示装置における表示領域の端から所定距離内の位置となることを少なくとも条件として、補正に基づくオブジェクトの位置が当該端に近づくように、当該補正の方向および量の少なくとも一方を修正してもよい。
【0026】
上記(10)の構成によれば、ユーザは、オブジェクトを表示領域の端部に配置しやすくなる。
【0027】
(11)
オブジェクト移動手段は、ドラッグ操作中の入力座標またはオブジェクトの座標が表示領域の端から所定距離内となり、修正前の補正の方向が当該入力座標から当該表示領域の端への向きとは反対側を向く場合、当該補正の方向に基づくオブジェクトの位置が当該端に近づくように、当該補正の方向を修正してもよい。
【0028】
上記(11)の構成によれば、ユーザは、修正前の補正方向とは反対側の向きにある表示領域の端部にオブジェクトを配置しやすくなる。
【0029】
(12)
オブジェクト移動手段は、ドラッグ操作中の入力座標が表示装置における表示領域の端から所定距離内の位置となることを少なくとも条件として、補正の量を減少させてもよい。
【0030】
上記(12)の構成によれば、ユーザは、オブジェクトを表示領域の端部に配置しやすくなる。
【0031】
(13)
オブジェクト移動手段は、ドラッグ操作が開始されてからの各入力座標またはオブジェクトの座標が、表示領域の端から法線方向に所定距離内の範囲にある間は、当該ドラッグ操作中の入力座標を、当該法線方向に垂直な方向へ、座標変化量に基づく補正量に応じて補正した座標にオブジェクトを配置してもよい。
【0032】
上記(13)の構成によれば、表示領域の端から法線方向に所定距離内の範囲においてドラッグ操作が行われる場合に、オブジェクトを見やすく表示することができるとともに、ユーザの意図とは異なる方向にオブジェクトが移動する可能性を低減することができる。
【0033】
(14)
オブジェクト移動手段は、ドラッグ操作が開始されてからの各入力座標またはオブジェクトの座標が、表示領域の端から所定距離内の範囲にある間は、オブジェクトを当該ドラッグ操作中の入力座標の位置に配置してもよい。
【0034】
上記(14)の構成によれば、表示領域の端から法線方向に所定距離内の範囲においてドラッグ操作が行われる場合に、ユーザの意図とは異なる方向にオブジェクトが移動する可能性を低減することができる。
【0035】
(15)
入力座標取得手段は、入力座標を繰り返し取得してもよい。変化量算出手段は、ドラッグ操作の入力座標が取得されなくなってから所定時間内に入力座標が再び取得された場合、当該ドラッグ操作に関して座標変化量を継続して算出してもよい。
【0036】
上記(15)の構成によれば、ドラッグ操作中に何らかの理由で入力座標が一時的に取得されなくなった場合でも、ユーザはドラッグ操作を継続することができる。
【0037】
(16)
入力座標取得手段は、表示装置の画面上に設けられるタッチパネルから入力座標を取得してもよい。
【0038】
(17)
本発明の他の一例は、表示装置に表示されるオブジェクトをユーザのドラッグ操作に基づいて移動させる情報処理プログラムである。情報処理プログラムは、情報処理装置のコンピュータを、入力座標取得手段と、経過時間算出手段と、オブジェクト移動手段としてコンピュータを機能させる。入力座標取得手段は、オブジェクトに対するドラッグ操作の入力座標を取得する。経過時間算出手段は、ドラッグ操作が開始されてからの経過時間を算出する。オブジェクト移動手段は、ドラッグ操作中の入力座標に基づいてオブジェクトを移動させる。オブジェクト移動手段は、経過時間が長い場合に、当該経過時間が短い場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って当該オブジェクトを移動させる。
【0039】
上記(17)の構成によれば、経過時間が長い場合には、オブジェクトと入力座標を比較的大きく離して配置することによって、ドラッグ操作中におけるオブジェクトを見やすく表示することができる。また、経過時間が短い場合には、オブジェクトと入力座標との距離を比較的小さくする(0であってもよい)ことによって、オブジェクトを少しだけ移動させるドラッグ操作を行いやすくすることができる。これらによって、ドラッグ操作の操作性を向上することができる。
【0040】
なお、本発明の別の一例は、上記(1)~(17)における各手段を備える情報処理装置または情報処理システムであってもよい。また、本発明の別の一例は、上記(1)~(17)における情報処理装置(または情報処理システム)において実行される情報処理方法であってもよい。
【発明の効果】
【0041】
上記情報処理プログラム、情報処理装置、情報処理システム、および、情報処理方法によれば、ドラッグ操作の操作性を向上することができる。
【図面の簡単な説明】
【0042】
【
図1】本体装置に左コントローラおよび右コントローラを装着した状態の一例を示す図
【
図2】本体装置から左コントローラおよび右コントローラをそれぞれ外した状態の一例を示す図
【
図7】本体装置と左コントローラおよび右コントローラとの内部構成の一例を示すブロック図
【
図8】ゲームシステム1の機能的構成の一例を示す機能ブロック図
【
図9】オブジェクトの位置を算出する方法の一例を示す図
【
図10】ドラッグ距離と補正基礎値との関係の一例を示す図
【
図11】ドラッグ操作が開始されてからドラッグ距離が増加する場合におけるオブジェクトの移動の一例を示す図
【
図12】ドラッグ距離が増加した後で減少する場合におけるオブジェクトの移動の一例を示す図
【
図13】左手操作モードにおけるオブジェクト配置の一例を示す図
【
図14】現在座標が表示領域の端部に移動する場合における第1修正処理の一例を示す図
【
図15】端部領域においてドラッグ操作によってオブジェクトが移動される様子の一例を示す図
【
図16】開始座標が異なる2通りの場合においてオブジェクトが移動する様子の一例を示す図
【
図17】左右方向に関する開始座標の位置と開始修正率との関係の一例を示す図
【
図18】表示領域の端部付近でドラッグ操作が行われる様子の一例を示す図
【
図19】ゲームシステム1におけるオブジェクト移動処理に用いられる各種情報の一例を示す図
【
図20】ゲームシステム1によって実行されるオブジェクト移動処理の流れの一例を示すフローチャート
【
図21】
図20に示すステップS10の補正ベクトル算出処理の詳細な流れの一例を示すサブフローチャート
【発明を実施するための形態】
【0043】
[1.ゲームシステムの構成]
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0044】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0045】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0046】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0047】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0048】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0049】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0050】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0051】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0052】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0053】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0054】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、
図1および
図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0055】
左コントローラ3は、アナログスティック32を備える。
図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック32を押下する入力が可能である。
【0056】
左コントローラ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プログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0057】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0058】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0059】
右コントローラ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を備える。
【0060】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0061】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0062】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0063】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0064】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0065】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0066】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0067】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0068】
プロセッサ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は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0069】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0070】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0071】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0072】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0073】
また、本体装置2は、加速度センサ89を備える。本実施形態においては、加速度センサ89は、所定の3軸(例えば、
図1に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ89は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。
【0074】
また、本体装置2は、角速度センサ90を備える。本実施形態においては、角速度センサ90は、所定の3軸(例えば、
図1に示すxyz軸)回りの角速度を検出する。なお、角速度センサ90は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。
【0075】
加速度センサ89および角速度センサ90は、プロセッサ81に接続され、加速度センサ89および角速度センサ90の検出結果は、プロセッサ81へ出力される。プロセッサ81は、上記の加速度センサ89および角速度センサ90の検出結果に基づいて、本体装置2の動きおよび/または姿勢に関する情報を算出することが可能である。
【0076】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0077】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0078】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0079】
左コントローラ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(登録商標)の規格に従って行われる。
【0080】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0081】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(
図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0082】
左コントローラ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へ出力される。
【0083】
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0084】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
【0085】
左コントローラ3は、電力供給部106を備える。本実施形態において、電力供給部106は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0086】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0087】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、アナログスティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0088】
右コントローラ4は、電力供給部116を備える。電力供給部116は、左コントローラ3の電力供給部106と同様の機能を有し、同様に動作する。
【0089】
[2.ゲームシステムにおける処理の概要]
[2-1.処理の概要]
以下、
図8を参照して、本実施形態におけるゲームシステム1によって実行される情報処理の概要について説明する。本実施形態においては、ゲームシステム1は、ユーザによるドラッグ操作に基づいて、ディスプレイ12に表示されるオブジェクトを移動させる処理を実行する。
【0090】
ドラッグ操作とは、例えば、操作対象(例えば、オブジェクト)の位置を指定する入力に続けて、当該入力を継続した状態で入力位置を移動させる操作である。本実施形態においては、ゲームシステム1は、ディスプレイ12の画面上に設けられるタッチパネル13に対するドラッグ操作を受け付ける。ただし、他の実施形態においては、ドラッグ操作が行われる入力装置はタッチパネルに限らない。例えば、他の実施形態においては、ゲームシステム1は、マウス等のポインティングデバイスを備えていてもよく、当該ポインティングデバイスに対するドラッグ操作を受け付けてもよい。上記のように、ドラッグ操作を行うための入力装置は、画面上のオブジェクトを(例えばユーザの指またはタッチペンによって)直接指定することができる種類の入力装置(例えば、タッチパネル)であってもよいし、表示画面上のオブジェクトをカーソル(換言すれば、ポインタ)によって間接的に指定することができる種類の入力装置(例えば、マウス)であってもよい。
【0091】
図8は、ゲームシステム1の機能的構成の一例を示す機能ブロック図である。本実施形態においては、ゲームシステム1は、入力座標取得手段151と、変化量算出手段152と、オブジェクト移動手段153と、判別手段154とを備える。本実施形態において、上記各手段151~154は、本体装置2のプロセッサ81によって実現される。具体的には、上記各手段151~154は、プロセッサ81がアクセス可能な記憶媒体に記憶された情報処理プログラムをプロセッサ81が実行することによって実現される。なお、「プロセッサ81がアクセス可能な記憶媒体」とは、例えば、スロット23に装着される記憶媒体であってもよいし、フラッシュメモリ84であってもよい。
【0092】
入力座標取得手段151は、オブジェクトに対するドラッグ操作の入力座標を取得する。ドラッグ操作の入力座標とは、ドラッグ操作の入力(本実施形態においては、タッチパネル13に対するタッチ入力)の位置を示す座標である。入力座標は、ディスプレイ12の画面上の位置を特定可能な情報であり、具体的には、画面上の位置を示す座標系における座標である。本実施形態においては、入力座標取得手段151は、入力装置(すなわち、タッチパネル13)から、所定時間に1回の割合で入力座標を繰り返し取得する。また、入力座標取得手段151は、取得された入力座標を示す入力座標情報を出力する。
【0093】
変化量算出手段152は、上記入力座標情報を取得し、ドラッグ操作が開始されてからの入力座標の座標変化量を算出する。また、変化量算出手段152は、算出された座標変化量を示す変化量情報を出力する。本実施形態においては、座標変化量とは、ドラッグ操作が開始された時点の入力座標から、ドラッグ操作中における現在の入力座標(換言すれば、最後に取得された入力座標。)までの距離である。なお、以下では、ドラッグ操作が開始された時点の入力座標を「開始座標」と呼び、ドラッグ操作中における現在の入力座標を「現在座標」と呼ぶ。また、開始座標から現在座標までの距離(換言すれば、差分)を「ドラッグ距離」と呼ぶ。
【0094】
なお、座標変化量は、上記ドラッグ距離に限らず、他の指標であってもよい。例えば、他の実施形態においては、変化量算出手段152は、座標変化量として、ドラッグ操作が開始されてからの入力座標の移動軌跡の長さ(換言すれば、ドラッグ操作中における入力座標の累積移動距離)を算出してもよい。なお、本実施形態において、座標変化量は、ドラッグ操作が開始されてからドラッグ操作中の現時点までの期間における入力座標の変化を示す指標であり、ドラッグ操作中の一時点における変化量(例えば、ある一時点における入力座標の移動速度)を示す指標ではない。
【0095】
オブジェクト移動手段153は、上記入力座標情報および上記変化量情報を取得する。そして、オブジェクト移動手段153は、ドラッグ操作中の入力座標および座標変化量に基づいて、オブジェクトをディスプレイ12の画面上において移動させる。詳細は後述するが、オブジェクト移動手段153は、ドラッグ操作中における現在座標に基づく位置にオブジェクトを移動させる。すなわち、オブジェクトは、ドラッグ操作中における入力座標の移動に応じて移動する。また、本実施形態においては、オブジェクト移動手段153は、上記座標変化量に基づく補正量を算出し、当該補正量を用いて現在座標を補正した座標にオブジェクトを配置する。すなわち、本実施形態においては、オブジェクトは、現在座標から少しずれた位置に表示される。詳細は後述するが、これによって、ドラッグ操作を行うユーザの指にオブジェクトが隠れる可能性を低減することができ、オブジェクトを見やすく表示することができる。
【0096】
判別手段154は、ドラッグ操作を行うユーザの手が右手であるか左手であるかを判別する。判別手段154による判別の具体的な手法は任意である。また、判別手段は、右手であるか左手であるかを示す操作手情報を出力する。詳細は後述するが、オブジェクト移動手段153は、上記操作手情報を取得し、操作手情報に基づいて、オブジェクトをずらす方向を切り替える。したがって、現在座標を基準にオブジェクトが配置される方向は、ドラッグ操作を行うユーザの手が右手であるか左手であるかによって変化する。
【0097】
[2-2.オブジェクトを移動させる処理]
[2-2-1.移動処理の概要]
図9を参照して、ドラッグ操作に応じてオブジェクトを移動させる(すなわち、入力座標に基づいてオブジェクトの位置を算出する)処理の概要について説明する。
図9は、オブジェクトの位置を算出する方法の一例を示す図である。
図9は、オブジェクト161に対するドラッグ操作が行われる場合において、開始座標Pからドラッグ操作が開始され、現在座標Qまでドラッグ操作が行われた状態を示している。
【0098】
図9に示す状態において、変化量算出手段152は、変化量情報として、開始座標Pから現在座標Qまでのドラッグ距離Dを算出する。次に、オブジェクト移動手段153は、ドラッグ距離Dに基づいて、現在座標Qを補正するための補正ベクトルAを算出する。詳細は後述するが、補正ベクトルAの大きさ(すなわち、補正量)は、ドラッグ距離Dの大きさに応じて算出され、大略的には、ドラッグ距離Dが大きくなると補正量も大きくなるように算出される。また、補正ベクトルAの向き(すなわち、補正方向)は、ドラッグ操作を行う手が右手であるか左手であるかに応じて設定される。
【0099】
オブジェクト移動手段153は、補正ベクトルAを用いて現在座標Qを補正する(換言すれば移動する)ことによって、オブジェクト161の位置を示すオブジェクト座標Oを算出する。
図9に示すように、オブジェクト座標Oは、補正ベクトルAの方向(
図9では、左上方向)に、補正ベクトルAの大きさだけ現在座標Qを補正した座標として算出される。
【0100】
なお、
図9においては、オブジェクト161は、オブジェクト座標Oの位置を中心とするように配置される場合を示しているが、本実施形態において、オブジェクト161は、必ずしもそのように配置されるわけではない。本実施形態においては、オブジェクト移動手段153は、オブジェクト161の領域のうちで開始座標Pの位置を、配置基準位置に設定する。オブジェクト移動手段153は、配置基準位置がオブジェクト座標Oの位置となるように、オブジェクト161を配置する。ただし、他の実施形態においては、オブジェクト移動手段153は、オブジェクト161のうちの所定の位置(例えば、中心位置、または、右下の角の位置等)がオブジェクト座標Oの位置となるように、オブジェクト161を配置してもよい。
【0101】
上記のように、本実施形態においては、ゲームシステム1は、現在座標Qからずれた位置にオブジェクト161を配置することができる。これによれば、ドラッグ操作を行う指によってオブジェクト161が隠される可能性を低減することができる。なお、オブジェクト161が指で隠されて見にくくなると、オブジェクト161の形状および/または種類がわかりにくくなったり、オブジェクト161の正確な位置がわかりにくくなったりするおそれがある。これに対して、本実施形態によれば、オブジェクト161を見やすく表示することができ、それによってドラッグ操作の操作性を向上することができる。
【0102】
[2-2-2.補正量の算出]
次に、補正量を算出する処理について説明する。本実施形態においては、上記補正量(すなわち、現在座標からオブジェクト座標までのずれ量)は、可変である。具体的には、オブジェクト移動手段153は、上記ドラッグ距離に応じて補正量を変化させる。以下、補正量を算出する処理の詳細について説明する。
【0103】
まず、オブジェクト移動手段153は、ドラッグ距離に基づいて補正基礎値を算出する。
図10は、ドラッグ距離と補正基礎値との関係の一例を示す図である。
図10に示すように、補正基礎値は、ドラッグ距離が大きくなるにつれて大きくなるように算出される。ただし、本実施形態においては、ドラッグ距離が所定値(D0)以下である場合には補正基礎値は0と算出される。また、補正基礎値には上限(
図10に示すamax)が設定される。なお、
図10においては、(ドラッグ距離の増加に応じて補正基礎値が増加する範囲において)ドラッグ距離と補正基礎値とが比例する例を示している。ただし、ドラッグ距離と補正基礎値との関係を示す関数は、比例関数に限らず、ドラッグ距離が大きくなるにつれて補正基礎値が次第に大きくなるような任意の関数であってよい。また、本実施形態においては、ドラッグ距離と補正基礎値との関係を示す関数は、連続関数であり、補正基礎値は、ドラッグ距離の連続的な変化に応じて連続的に変化する。
【0104】
次に、オブジェクト移動手段153は、算出された補正基礎値に基づいて補正量を算出する。本実施形態においては、補正量は、ドラッグ操作が開始されてからの補正基礎値の最大値として算出される。つまり、オブジェクト移動手段153は、ドラッグ操作が開始されてからの補正基礎値が最大値を更新したことに応じて(換言すれば、ドラッグ距離が最大値を更新したことに応じて)補正量を増加させる。したがって、ドラッグ操作中において入力座標が開始座標に近づく方向に移動することによってドラッグ距離が減少した場合であっても、補正量は減少しない。このように、本実施形態においては、オブジェクト移動手段153は、1回のドラッグ操作中において、補正量を減少させないように算出する。
【0105】
なお、上記のように、ドラッグ操作が開始されてからドラッグ距離が所定の閾値(D0)以下となる期間においては、補正基礎値が0となる。したがって、上記期間においては、補正量は0となる結果、オブジェクト座標は入力座標と等しくなるので、オブジェクト移動手段153は、入力座標とオブジェクト座標との位置関係を維持して(本実施形態においては、入力座標とオブジェクト座標とを一致させて)オブジェクト161を移動させることとなる。これによれば、ドラッグ操作中においてユーザが入力位置を開始座標からほとんど動かしていない場合に、入力座標から離れた位置にオブジェクト161が配置されることを防止することができる。
【0106】
また、上述のように、補正基礎値には上限が設けられるので、補正量についても上限が設けられることとなる(具体的には、補正基礎値の上限値が補正量の上限となる)。このように、オブジェクト移動手段153は、ドラッグ操作中の入力座標(換言すれば、現在座標)とオブジェクト座標との距離に上限を設定する。これによれば、オブジェクトがユーザによる入力位置から離れすぎてしまい、ユーザが入力位置とオブジェクトとの関係を把握しにくくなってしまう可能性を低減することができる。これによって、ドラッグ操作中のオブジェクトを見やすく表示することができ、ドラッグ操作の操作性を向上することができる。
【0107】
なお、オブジェクト移動手段153は、ドラッグ操作中において補正量を繰り返し算出する。具体的には、本実施形態においては、補正量は、ドラッグ操作中において入力座標(換言すれば、現在座標)が取得される度に算出される。ただし、他の実施形態においては、オブジェクト移動手段153は、ドラッグ操作中において入力座標が所定回数取得される度に1回の割合で補正量を算出してもよい。また、他の実施形態において、ドラッグ操作中において取得された各入力座標を用いて補間処理が行われてもよく、この場合、補間処理によって得られた入力座標について補正量が算出されてもよい。
【0108】
図11および
図12を参照して、上記のように補正量が算出される場合の具体例について説明する。
図11は、ドラッグ操作が開始されてからドラッグ距離が増加する場合におけるオブジェクトの移動の一例を示す図である。
【0109】
図11に示す(a)は、ドラッグ操作が開始された時点におけるオブジェクト161を示す。なお、開始座標Pは、オブジェクト161の中心位置であるとする。入力座標(換言すれば、開始座標)Pがオブジェクト161内の位置である場合、当該オブジェクト161がドラッグ操作の操作対象として指定されたこととなる。
【0110】
図11に示す(b)は、現在座標Q1が開始座標Pから少しだけ移動した(つまり、ドラッグ距離が小さい)時点におけるオブジェクト161を示す。
図11に示す(b)においては、ドラッグ距離D1が比較的小さいので、補正基礎値も小さい値(例えば、
図10に示すa1)となり、その結果、補正量(すなわち、補正ベクトルA1の大きさ)は比較的小さい値(すなわち、a1)となる。そのため、オブジェクト座標O1は現在座標Q1から少しだけ離れた位置となり、オブジェクト161は現在座標Q1から少しだけずれた位置に配置される。
【0111】
図11に示す(c)は、現在座標Q2が開始座標Pから大きく移動した(つまり、ドラッグ距離が大きい)時点におけるオブジェクト161を示す。
図11に示す(c)においては、ドラッグ距離D2が比較的大きいので、補正基礎値も大きい値(例えば、
図10に示すa2)となり、その結果、補正量(すなわち、補正ベクトルA2の大きさ)は比較的大きい値(すなわち、a2)となる。そのため、オブジェクト座標O2は現在座標Q2から大きく離れた位置となり、オブジェクト161は現在座標Q2から大きくずれた位置に配置される。
【0112】
上記のように、オブジェクト移動手段153は、座標変化量が大きい場合(例えば、ドラッグ距離D=D2である場合)は、当該座標変化量が小さい場合(例えば、ドラッグ距離D=D1である場合)と比べて、入力座標(換言すれば、現在座標)とオブジェクト161の座標との距離が大きくなるように、オブジェクトを入力座標から離して配置する。したがって、本実施形態においては、ユーザがドラッグ操作を開始した後、開始位置から次第に離れるようにドラッグ操作を行う場合、オブジェクトは、ドラッグ操作に応じて移動しつつ、ユーザによるタッチ入力の位置(すなわち、入力座標)から次第に離れるように配置される。
【0113】
ここで、ドラッグ操作を開始してから入力座標が少ししか移動していない状態(例えば、
図11の(b)に示す状態)では、ユーザは、操作対象であるオブジェクトを少しだけ移動させるような細かい操作を行うことを意図している可能性が考えられる。そのため、上記の状態において、仮に入力座標とオブジェクト座標とのずれ量を大きくしすぎると、ユーザが操作をしにくく感じるおそれがある。上記を考慮して、本実施形態では、上記の状態では、補正量を小さく設定することによって、ユーザが細かい操作を行いやすくしている。
【0114】
一方、ドラッグ操作を開始してから入力座標がある程度移動した状態(例えば、
図11の(c)に示す状態)では、ユーザは、オブジェクトを少しだけ移動させるような細かい操作を行うことを意図している可能性がほとんどないと考えられる。そのため、上記の状態においては、入力座標とオブジェクト座標との距離をある程度大きくしてもユーザは違和感を抱かないと考えられるので、本実施形態においては、補正量を大きく設定することによって、オブジェクトを見やすくしている。
【0115】
以上より、本実施形態によれば、ゲームシステム1は、ドラッグ操作を開始した初期段階と、初期段階よりも後の段階とで、補正量を変化させることによって、いずれの段階においてもドラッグ操作を行いやすくすることができる。これによって、ドラッグ操作の操作性を向上することができる。
【0116】
なお、本実施形態においては、オブジェクト移動手段153は、入力座標の連続的な変化に応じて補正量を連続的に変化させる(
図10)。これによって、ドラッグ操作中にオブジェクトの位置が急激に変化する可能性を低減することができるので、ドラッグ操作の操作性を向上することができる。
【0117】
図12は、ドラッグ距離が増加した後で減少する場合におけるオブジェクトの移動の一例を示す図である。
図12に示す(a)は、ドラッグ距離D3に応じた補正基礎値a3に等しい大きさの補正ベクトルA3が算出され、補正ベクトルA3に基づくオブジェクト座標O3にオブジェクト161が配置されている状態である。また、
図12に示す(b)は、
図12に示す(a)の状態から入力座標が開始座標Pに近づく方向へ移動した状態である。したがって、
図12に示す(b)の状態では、ドラッグ距離D4は、上記ドラッグ距離D3より小さくなっている。
【0118】
図12に示す(b)の状態において、補正基礎値a4は、上記補正基礎値a3より小さい値となる。ただし、上述のように、補正量は、ドラッグ操作が開始されてからの補正基礎値の最大値となるので、上記状態においては補正量(すなわち補正ベクトルA3の大きさ)は減少せずに維持される。したがって、
図12に示す(b)の状態においては、オブジェクト座標O4は、現在座標Q4から、
図12に示す(a)の状態と同じ距離だけ離れた位置になる。つまり、現在座標を基準としたオブジェクト161のずれ量は、
図12に示す(a)の状態と(b)の状態とで同じになる。
【0119】
以上のように、本実施形態においては、オブジェクト移動手段153は、ドラッグ操作中におけるドラッグ距離の最大値に応じた大きさとなるように補正量を算出する。換言すれば、オブジェクト移動手段153は、ドラッグ操作中においてドラッグ距離が減少した場合には、値を維持するように、補正量を算出する。これによれば、補正量は、ドラッグ操作中において値が減少しないように算出される。ここで、
図12に示した場合のように、ドラッグ距離が一旦増加してから減少する場合には、ドラッグ操作の初期段階とは異なり、ユーザの意図は、オブジェクトを少しだけ移動させる意図ではないと考えられる。そのため、上記の場合には、入力座標からずれた位置にオブジェクトを配置してもユーザは違和感を抱きにくいと考えられる。したがって、本実施形態においては、上記の場合には入力座標からオブジェクトまでの距離を維持することによって、オブジェクトが見やすい状態を維持し、操作性を向上するようにしている。
【0120】
[2-2-3.操作を行う手の判別]
本実施形態においては、判別手段154は、ドラッグ操作を行うユーザの手が右手であるか左手であるかを判別する。そして、右手であると判別される場合と左手であると判別される場合とで、補正ベクトルの方向(換言すれば、現在座標に対してオブジェクトをずらす方向)を切り替える。
【0121】
具体的には、本実施形態においては、ドラッグ操作を行う手が右手であると判別される場合、オブジェクト移動手段153は、オブジェクト移動処理における処理モードを右手操作モードに設定する。一方、ドラッグ操作を行う手が左手であると判別される場合、オブジェクト移動手段153は、オブジェクト移動処理における処理モードを左手操作モードに設定する。
【0122】
右手操作モードにおいては、オブジェクト移動手段153は、補正ベクトルの向きを左上方向とする。したがって、右手操作モードにおいては、
図9に示したように、現在座標を左上方向にずらした位置にオブジェクトが配置される。
【0123】
図13は、左手操作モードにおけるオブジェクト配置の一例を示す図である。左手操作モードにおいては、
図13に示すように、オブジェクト移動手段153は、補正ベクトルAの向きを右上方向とする。つまり、上記の場合、オブジェクト移動手段153は、現在座標Qを右上方向に移動させた座標をオブジェクト座標Oとして算出する。したがって、オブジェクト161は、現在座標Qから右上方向にずれた位置に配置される。なお、右手操作モードと左手操作モードとで、補正方向は異なる一方、補正量は同じである。
【0124】
ここで、本実施形態においては、上記補正方向は、ディスプレイ12に表示される画像の方向を基準として設定される。例えば、ディスプレイ12が横長となる向きに画像が表示される場合、画像の上下方向とは、ディスプレイ12の短手方向であり、画像の左右方向とは、ディスプレイ12の長手方向である。一方、ディスプレイ12が縦長となる向きに画像が表示される場合、画像の上下方向とは、ディスプレイ12の長手方向であり、画像の左右方向とは、ディスプレイ12の短手方向である。
【0125】
また、ドラッグ操作を行うユーザの手が右手であるか左手であるかを判別する方法は任意である。本実施形態においては、判別手段154は、オブジェクト移動処理における処理モードを右手操作モードにするか左手操作モードにするかを、ユーザの設定指示に基づいて予め(すなわち、ドラッグ操作を用いた情報処理を実行する前に)設定しておく。なお、他の実施形態においては、判別手段154は、上記の判別を自動的に(すなわち、ユーザによる設定指示なしに)行うようにしてもよい。例えば、判別手段154は、ドラッグ操作中において検出されるタッチ領域の形状に基づいて上記の判別を行ってもよい。なお、上記の判別を自動的に行う方法は、従来用いられている判別方法であってもよい。
【0126】
以上のように、オブジェクト移動手段153は、ドラッグ操作を行うユーザの手が右手であると判定される場合、ドラッグ操作中の入力座標(換言すれば、現在座標)に対して、ディスプレイ12に表示される画像を基準として左上方向の位置にオブジェクトを配置する(
図9)。一方、ドラッグ操作を行うユーザの手が左手であると判定される場合、オブジェクト移動手段153は、ドラッグ操作中の入力座標に対して、ディスプレイ12に表示される画像を基準として右上方向の位置にオブジェクトを配置する(
図13)。これによれば、ドラッグ操作が左右のいずれの手で行われる場合であっても、オブジェクトを見やすく表示することができ、ドラッグ操作の操作性を向上することができる。
【0127】
また、上記のように、本実施形態においては、オブジェクト移動手段153は、ドラッグ操作中の入力座標に対して、ディスプレイ12に表示される画像における斜め上方向の位置にオブジェクトを配置する。これによって、ドラッグ操作を行うユーザの指によって隠されにくい位置にオブジェクトを表示することができるので、ドラッグ操作の操作性を向上することができる。
【0128】
なお、他の実施形態においては、ゲームシステム1は、ドラッグ操作を行う手の判別を行わなくてもよい(つまり、判別手段154を備えていなくてもよい)。このとき、オブジェクト移動手段153は、ドラッグ操作中の現在座標に対して上方向(具体的には、ディスプレイ12に表示される画像を基準とした方向)の位置にオブジェクトを配置してもよい。
【0129】
[2-2-4.第1修正処理]
上述のように、本実施形態においては、現在座標から補正方向にずらした位置にオブジェクトが表示される。そのため、表示領域の端部(換言すれば、表示領域の周付近)において、状況によっては、ユーザはドラッグ操作によって所望の位置にオブジェクトを配置しにくくなるおそれがあった。例えば、現在座標から左上方向にずらした位置にオブジェクトが常に配置されるとすれば、表示領域の右端または下端に現在座標が位置する場合、オブジェクトは右端または下端よりも中央寄りに配置され、右端または下端にオブジェクトを配置することができない。そこで、本実施形態においては、オブジェクト移動手段153は、現在座標が表示領域の端部に位置する場合に、上述の補正ベクトルを修正する第1修正処理を実行する。以下、第1修正処理について説明する。
【0130】
ここで、本実施形態においては、「表示領域」とは、ディスプレイ12において1つの画像が表示される領域を指す。例えば、ディスプレイ12の全画面に1つの画像(例えば、ゲーム空間を表すゲーム画像)が表示される場合、ディスプレイ12の画面領域が1つの表示領域である。また例えば、ディスプレイ12の画面領域が2つに分割されてそれぞれに異なる画像が表示される場合(例えば、第1のプレイヤのためのゲーム画像が一方の分割された画面領域に表示され、第2のプレイヤのためのゲーム画像が他方の分割された画面領域に表示される場合)、分割された画面領域が1つの表示領域である。本実施形態においては、表示領域は、ドラッグ操作の対象となるオブジェクトを含む画像が表示される領域である。
【0131】
なお、本実施形態に関する以下の説明においては、ディスプレイ12の全画面領域に、ドラッグ操作の対象となるオブジェクトを含む1つの画像が表示されるものとする。つまり、ディスプレイ12の全画面領域が1つの表示領域であるものとする。
【0132】
図14は、現在座標が表示領域の端部に移動する場合における第1修正処理の一例を示す図である。
図14に示す一点鎖線の上側の図は、ドラッグ操作の現在座標が表示領域の端部に移動する様子を示している。なお、
図14に示す例については、オブジェクト移動処理における処理モードが右手操作モードに設定されているものとして説明を行う。
【0133】
ここで、本実施形態においては、表示領域には端部領域が設定される。具体的には、長方形であるディスプレイ12の4辺についてそれぞれ端部領域が設定される。より具体的には、
図14に示すように、表示領域の右端(換言すれば、右辺)から所定距離Bの領域が右端部領域に設定される。また、図示しないが、ディスプレイ12の左辺から所定距離Bの領域が左端部領域に設定され、ディスプレイ12の上辺から所定距離Bの領域が上端部領域に設定され、ディスプレイ12の下辺から所定距離Bの領域が下端部領域に設定される。なお、ディスプレイ12の4つの角付近においては、2つの端部領域が重複することとなる。
【0134】
図14においては、現在座標が座標Q11から座標Q12を介して座標Q13へ移動している。座標Q11は、右端部領域外の位置である。座標Q12は、右端部領域内の位置であり、表示領域の右端から距離b2だけ離れた位置である。座標Q13は、右端部領域内の位置であり、表示領域の右端からの距離が上記距離b2よりも短い距離b3となる位置である。
【0135】
詳細は後述するが、本実施形態においては、現在座標が右端部領域外の位置である場合、第1修正処理において補正ベクトルに対する修正は行われず、現在座標が右端部領域内の位置である場合、第1修正処理において補正ベクトルに対する修正が行われる。この場合、
図14に示すように、オブジェクト移動手段153は、オブジェクト161が表示領域の端(より具体的には、当該端部領域に対応する端)に近づくように、補正ベクトルを修正する。なお、
図14においては、修正前の補正ベクトルを点線で示している。以下、第1修正処理における補正ベクトルを修正する処理の詳細について説明する。
【0136】
本実施形態においては、オブジェクト移動手段153は、補正ベクトルの成分のうちで、現在座標が位置する端部領域に関する法線方向に関する成分について修正を行い、当該法線方向に垂直な成分について修正を行わない。ここで、「端部領域に関する法線方向」とは、表示領域の端となる辺のうちで、当該端部領域が設けられる辺における法線方向である。具体的には、右端部領域または左端部領域に関する法線方向は、左右方向であり、上端部領域または下端部領域に関する法線方向は、上下方向である。
図14に示す例においては、現在座標が右端部領域内に位置しているので、補正ベクトルのうち左右方向に関する成分が修正されており、補正ベクトルのうち上下方向に関する成分は修正されていない。
【0137】
本実施形態においては、オブジェクト移動手段153は、上記方線方向に関する補正ベクトルの成分を、端修正率を用いて修正する。具体的には、端修正率は、現在座標から表示領域の端までの距離に基づいて算出される。
【0138】
図14に示す一点鎖線の下側のグラフは、現在座標から表示領域の右端までの距離と、端修正率との関係の一例を示す。
図14に示すように、現在座標から表示領域の右端までの距離がB以上である場合(つまり、現在座標が右端部領域外の位置である場合)、端修正率は1と算出される。また、現在座標から表示領域の右端までの距離がB未満である場合(つまり、現在座標が右端部領域外内の位置である場合)、端修正率は1未満と算出される。具体的には、上記距離が小さくなるほど端修正率が小さくなるように算出される。また、本実施形態においては、上記距離がb2となる場合に端修正率が0になるように算出される(
図14参照)。また、上記距離がb3未満となる場合に端修正率が下限値(-1)となるように算出される。
【0139】
なお、
図14に示す例においては、(上記距離の減少に応じて端修正率が減少する期間において)当該距離と端修正率とが比例する例を示している。ただし、上記距離と端修正率との関係を示す関数は、比例関数に限らず、上記距離が小さくなるにつれて端修正率が次第に小さくなるような任意の関数であってよい。なお、本実施形態のように、上記距離に応じて端修正率を連続的に変化させることによって、ドラッグ操作中にオブジェクトの位置が急激に変化する可能性を低減することができるので、ドラッグ操作の操作性を向上することができる。
【0140】
図14に示す例において、現在座標が右端部領域外の座標Q11である場合、端修正率は1となる。この場合、オブジェクト移動手段153は、第1修正処理において、補正ベクトルの法線方向(具体的には、左右方向)の成分に1を乗算するので、補正ベクトルの値は変化しない。つまり、上記の場合、オブジェクト移動手段153は補正ベクトルの修正を実質的には行わない。その結果、上述したように、現在座標Q11を左上方向に補正したオブジェクト座標O11の位置にオブジェクト161が表示される(
図14参照)。
【0141】
また、現在座標が右端部領域内に位置する場合、オブジェクト移動手段153は、補正ベクトルの法線方向の成分に、1より小さい値の端修正率を乗算する。したがって、補正ベクトルのうちで左方向を向く成分が小さくなるように修正される。すなわち、補正ベクトルは、オブジェクト161から表示領域の右端への向き(すなわち、右向き)に近づくように修正される。したがって、第1修正処理が実行される場合のオブジェクト座標は、第1修正処理が実行されない場合のオブジェクト座標に比べて、表示領域の右端に近づく位置となる。
【0142】
例えば、現在座標が、右端までの距離がb2である座標Q12である場合、端修正率は0となる。この場合、補正ベクトルの法線方向(すなわち、左右方向)の成分は0となるので、修正された補正ベクトルA12は上方向を向く。そのため、オブジェクト座標O12は現在座標Q12の上方向にずれた位置となり、当該位置にオブジェクト161が表示される(
図14参照)。
【0143】
また例えば、現在座標が、右端までの距離がb3である座標Q13である場合、端修正率は負の値(-1)となる。この場合、補正ベクトルの法線方向(すなわち、左右方向)の成分は右向きとなるので、修正された補正ベクトルA13は右上方向を向く。そのため、オブジェクト座標O13は現在座標Q13の右上方向にずれた位置となり、当該位置にオブジェクト161が表示される(
図14参照)。
【0144】
上記においては、表示領域における右端部領域内に現在座標が位置する場合を例として説明したが、右端部領域以外の他の端部領域内に現在座標が位置する場合も同様である。すなわち、左端部領域に現在座標が位置する場合には、オブジェクトが表示領域の左端に近づくように(換言すれば、補正方向が左向きに近づくように)補正ベクトルが修正される。また、上端部領域に現在座標が位置する場合には、オブジェクトが表示領域の上端に近づくように補正ベクトルが修正される。また、下端部領域に現在座標が位置する場合には、オブジェクトが表示領域の下端に近づくように補正ベクトルが修正される。なお、右手操作モードにおいては補正ベクトルは左上方向を向く。そのため、左端部領域に現在座標が位置する場合、または、上端部領域に現在座標が位置する場合には、補正ベクトルは、その向きが反対になることなく、その大きさが大きくなるように修正される。具体的には、上記の場合には、端修正率は1より大きい値となるように、例えば、1~2の範囲で設定される。この場合、補正ベクトルは1倍~2倍の範囲で修正される。
【0145】
また、現在座標が、2つの端部領域が重複する領域に位置する場合には、各端部領域に関する各法線方向に関してそれぞれ補正ベクトルが修正される。例えば、現在座標が表示領域の右下の角付近に位置する場合(すなわち、右端部領域内であってかつ下端部領域内に位置する場合)、オブジェクトが表示領域の右端および下端に近づくように(換言すれば、補正方向が右下向きに近づくように)補正ベクトルが修正される。
【0146】
以上のように、本実施形態においては、オブジェクト移動手段153は、ドラッグ操作中の入力座標(具体的には、現在座標)がディスプレイ12における表示領域の端から所定距離内の位置となることを少なくとも条件として、補正方向に基づくオブジェクトの位置が当該端に近づくように、補正ベクトルを修正する。なお、補正ベクトルは、補正方向および補正量の少なくとも一方が修正されればよい。これによれば、ユーザは、ドラッグ操作中においてオブジェクトを表示領域の端に配置しやすくなるので、ドラッグ操作の操作性を向上することができる。例えば、修正前の補正方向が左上方向である場合において、入力座標が表示領域の右端部領域内に位置すると、オブジェクトが当該右端に近づくように補正方向が修正される(
図14)。これによって、ユーザは、オブジェクトを右端に配置しやすくなる。また例えば、修正前の補正方向が左上方向である場合において、入力座標が表示領域の左端部領域内に位置すると、オブジェクトが当該左端に近づくように補正方向が修正される。これによって、ユーザは、入力座標を左端まで移動させなくてもオブジェクトを左端に配置することができる。
【0147】
なお、本実施形態においては、オブジェクト移動手段153は、第1修正処理において、ドラッグ操作中の入力座標(具体的には、現在座標)が端部領域内の位置となることを少なくとも条件として、補正方向を修正した。ここで、他の実施形態においては、オブジェクト移動手段153は、第1修正処理において、入力座標に代えて、オブジェクト座標を用いてもよい。すなわち、オブジェクト移動手段153は、第1修正処理において、オブジェクト座標が端部領域内の位置となることを少なくとも条件として、補正方向を修正してもよい。
【0148】
また、本実施形態においては、オブジェクト移動手段153は、ドラッグ操作中の入力座標が表示領域の端から所定距離内となり、修正前の補正方向(例えば、
図14における点線で示される補正ベクトルの方向)が当該入力座標から当該表示領域の端への向き(
図14においては、右向き)とは反対側を向く場合(例えば、
図14において、現在座標が、修正前の補正ベクトルが左上方向を向き、表示領域の端が右側に位置する座標Q12およびQ13となる場合)、補正方向に基づく当該オブジェクトが当該端に近づくように、前記補正方向を修正する。これによって、上述のように、ユーザは、修正前の補正方向とは反対側の向きにある端(例えば、修正前の補正方向が左上方向である場合、右端または下端)にオブジェクトを配置しやすくなる。なお、「補正方向が、入力座標から表示領域の端への向きとは反対側を向く」とは、補正ベクトルと、入力座標から表示領域の端への方向とのなす角度θが、90°<θ<270°となることを意味する。
【0149】
なお、他の実施形態においては、端部領域は、表示領域の全ての辺に設定されなくてもよい。例えば、他の実施形態においては、オブジェクト移動手段153は、上記右手操作モードにおいては、右端部領域および下端部領域を設定し、上記左手操作モードにおいては、左端部領域および下端部領域を設定するようにしてもよい。これによれば、上記実施形態と同様、補正方向とは反対側の向きにある端にオブジェクトを配置しやすくなる。また、他の実施形態においては、表示領域から端部領域が設定される幅(例えば、上述の所定距離B)は、端部領域毎に異なる長さであってもよい。例えば、右端部領域はディスプレイ12の右辺から距離B1までの範囲に設定され、上端部領域はディスプレイ12の上辺から距離B2(ただし、距離B2は距離B1とは異なる長さ)までの範囲に設定されてもよい。
【0150】
また、本実施形態においては、第1修正処理においては、補正ベクトルの法線方向の成分について修正が行われたが、他の実施形態においては、補正ベクトルの2方向の成分(すなわち、法線方向の成分と、法線方向に垂直な成分)について修正が行われてもよい。例えば、オブジェクト移動手段153は、補正ベクトルに対して上記端修正率を乗算することによって修正を行ってもよい。具体的には、オブジェクト移動手段153は、補正ベクトルの大きさ(すなわち、補正量)を減少させる修正を行ってもよい。なお、このとき、端修正率の下限値は0以上とする。これによれば、現在座標が表示領域の端に近づくほど、オブジェクトは現在座標の近くに配置されることとなる。これによっても本実施形態と同様、ユーザは、ドラッグ操作によって表示領域の端にオブジェクトを配置することができる。
【0151】
本実施形態においては、第1修正処理は、ドラッグ操作の入力座標が端部領域外の位置から端部領域内の位置に変化した場合に実行される。したがって、ドラッグ操作の開始座標が端部領域内の位置であった場合において、当該ドラッグ操作の入力座標が端部領域外の位置となることなく端部領域内の位置を維持している状態では、第1修正処理は実行されない。なお、本実施形態においては、上記の状態においては、後述する第2修正処理が実行される。
【0152】
なお、他の実施形態においては、第1修正処理は、ドラッグ操作の入力座標が端部領域外の位置から端部領域内の位置に変化した場合に限らず、現在座標が端部領域内の位置にある任意の場合に実行されてもよい。すなわち、オブジェクト移動手段153は、ドラッグ操作の開始座標が端部領域内の位置であった場合において、当該ドラッグ操作の入力座標が端部領域外の位置となることなく端部領域内の位置を維持している状態であっても、第1修正処理を実行してもよい。なお、このとき、後述する第2修正処理は実行されない。
【0153】
[2-2-5.第2修正処理]
ユーザは、表示領域の端部付近において表示領域の辺に沿ってドラッグ操作を行う場合がある。このような場合、ユーザの意図は、ドラッグ操作によって表示領域の辺に沿ってオブジェクトを移動させることであると推測される。したがって、上記の場合において、上記補正ベクトルによる補正によって、辺に沿った方向とは異なる方向にオブジェクトが移動されると、ユーザがドラッグ操作に違和感を抱くおそれがある。そこで、本実施形態においては、上記の場合において、オブジェクト移動手段153は、現在座標から辺に沿った方向にオブジェクトが配置されるように補正ベクトルを修正する第2修正処理を実行する。以下、第2修正処理の詳細を説明する。
【0154】
図15は、端部領域においてドラッグ操作によってオブジェクトが移動される様子の一例を示す図である。
図15においては、オブジェクト161に対するドラッグ操作が下端部領域において行われる様子を示している。
図15に示す例においては、ドラッグ操作は、下端部領域内の座標P21から、下端部領域内を通って座標Q21まで行われたものとする。また、
図15に示す例については、オブジェクト移動処理における処理モードが右手操作モードに設定されているものとして説明を行う。
【0155】
図15においては、オブジェクト移動手段153は、下端部領域に関する法線方向(すなわち、上下方向)については補正が行われないように、補正ベクトルを修正する。具体的には、オブジェクト移動手段153は、第2修正処理において、補正ベクトルのうちで上記法線方向の成分を0にする修正を行う。これによって、現在座標Q21から左方向を向く補正ベクトルA21に基づいてオブジェクト座標O21が算出され、オブジェクト座標O21の位置にオブジェクト161が表示される(
図15参照)。
【0156】
また、端部領域内を開始座標として開始されたドラッグ操作の入力座標が、当該端部座標外の位置となった場合、オブジェクト移動手段153は第2修正処理の実行を終了する。この場合、ユーザは、表示領域の辺に沿ってオブジェクトを移動させることを意図していないと推測することができるからである。なお、端部座標外の位置となった入力座標が再度当該端部座標内に入った場合は、上述の第1修正処理が実行される。
【0157】
なお、第2修正処理の実行を終了した後で第1修正処理を実行する場合、オブジェクト移動手段153は、法線方向についての補正量(すなわち、補正ベクトルにおける法線方向の成分の大きさ)を、第2修正処理の実行終了時からの座標変化量に基づいて算出する。つまり、法線方向についての補正量は、第2修正処理の実行終了時における入力座標から現在座標までの距離に基づいて算出される。これによれば、第2修正処理の実行が終了した後でオブジェクトの位置が急激に変化する可能性を低減することができるので、ドラッグ操作の操作性を向上することができる。なお、他の実施形態においては、上記の場合において、オブジェクト移動手段153は、法線方向についての補正量を、ドラッグ操作開始時からの座標変化量に基づいて算出してもよい。
【0158】
上記においては、表示領域における下端部領域内に開始座標が位置する場合を例として説明したが、下端部領域以外の他の端部領域内に開始座標が位置する場合も同様である。すなわち、上端部領域内においてドラッグ操作が行われる場合には、下端部領域内においてドラッグ操作が行われる場合と同様、現在座標から左右方向にのみずれた位置にオブジェクトが配置される。右端部領域内または左端部領域内においてドラッグ操作が行われる場合には、現在座標から上下方向にのみずれた位置にオブジェクトが配置される。なお、本実施形態においては、修正前の補正ベクトルは左上方向または右上方向を向くので、右端部領域内または左端部領域内においてドラッグ操作が行われる場合には、第2修正処理によって、真上方向にずれた位置にオブジェクトが配置される。そのため、第2修正処理が実行される場合におけるオブジェクトの位置も第2修正処理が実行されない場合と同様、ドラッグ操作を行うユーザの指に隠れにくく、見やすい位置となっている。
【0159】
また、上記においては、オブジェクト移動処理における処理モードが右手操作モードに設定されている場合を例として説明したが、当該処理モードが左手操作モードに設定されている場合、(補正方向が右手操作モードとは異なるものの)右手操作モードと同様の第2修正処理が実行される。すなわち、左手操作モードにおいても右手操作モードと同様に、端部領域内においてドラッグ操作が開始されて継続される場合には、オブジェクト移動手段153は、補正ベクトルのうちで、端部領域に関する法線方向の成分を0にする修正を行う。
【0160】
以上のように、本実施形態においては、オブジェクト移動手段153は、ドラッグ操作が開始されてからの各入力座標が端部領域内の範囲にある間は、当該ドラッグ操作中の入力座標(具体的には、現在座標)を、当該端部領域に関する法線方向に垂直な方向へ補正したオブジェクト座標にオブジェクトを配置する(つまり、入力座標は法線方向に関しては補正されない)。これによれば、ドラッグ操作を行うユーザの意図とは異なる方向にオブジェクトが移動する可能性を低減することができるので、ドラッグ操作の操作性を向上することができる。
【0161】
なお、他の実施形態においては、オブジェクト移動手段153は、第2修正処理において修正を行うか否かの判定を、入力座標に代えて、オブジェクトの座標(例えば、オブジェクトの中心を示す座標)を用いて行ってもよい。すなわち、他の実施形態においては、オブジェクト移動手段153は、オブジェクトの座標が端部領域内の範囲にある間は、ドラッグ操作中の入力座標(具体的には、現在座標)を、当該端部領域に関する法線方向に垂直な方向へ補正したオブジェクト座標にオブジェクトを配置するようにしてもよい。
【0162】
なお、他の実施形態においては、オブジェクト移動手段153は、上記第2修正処理において、補正ベクトルを0にするように修正してもよい。このとき、補正ベクトルによる補正は行われないので、オブジェクトは現在座標の位置に配置されることになる。このように、オブジェクト移動手段153は、ドラッグ操作が開始されてからの各入力座標が端部領域内の範囲にある間は、オブジェクトを当該ドラッグ操作中の入力座標(具体的には、現在座標)の位置に配置してもよい。これによっても本実施形態と同様、ドラッグ操作を行うユーザの意図とは異なる方向にオブジェクトが移動する可能性を低減することができる。
【0163】
なお、上記第1修正処理において用いられる端部領域と、上記第2修正処理において用いられる端部領域とは、同じであってもよいし、異なっていてもよい。例えば、端部領域の幅は、上記第1修正処理において用いられる端部領域と、上記第2修正処理において用いられる端部領域とで同じであってもよいし、異なっていてもよい。また例えば、上記第1修正処理においては、上下左右の4つの端部領域が用いられるのに対して、上記第2修正処理においては、下端部領域のみが用いられてもよい。
【0164】
[2-2-6.第3修正処理]
本実施形態においては、ドラッグ操作における開始座標が、操作対象となるオブジェクトのうちのどの位置であるかによって、適切な補正量が異なる可能性がある。例えば、上記右手操作モードにおいては、現在座標を左上方向にずらした位置にオブジェクトが配置される。このとき、オブジェクトのうちの左上部分の位置が開始座標となる場合と、右下部分の位置が開始座標となる場合とでは、ドラッグ操作を行う指によって隠れないようにオブジェクトを現在座標からずらすために必要な補正量は異なる。したがって、本実施形態においては、オブジェクト移動手段153は、オブジェクト内における開始座標の位置に基づいて(換言すれば、オブジェクトと開始座標との位置関係に基づいて)補正ベクトルを修正する第3修正処理を実行する。以下、第3修正処理の詳細を説明する。
【0165】
図16は、開始座標が異なる2通りの場合においてオブジェクトが移動する様子の一例を示す図である。なお、
図16に示す例については、オブジェクト移動処理における処理モードが右手操作モードに設定されているものとして説明を行う。
【0166】
図16に示す(a)は、オブジェクト161の中央より右側(より具体的には、中央を通る上下方向の軸より右側)の座標P31が開始座標となる場合においてオブジェクトが移動する様子を表す。本実施形態においては、開始座標がオブジェクト161の中央より右側となる場合、第3修正処理による補正ベクトルの修正は行われない。したがって、上記の場合、開始座標P31からドラッグ距離D31だけ離れた現在座標Q31については、第3修正処理による修正は行われない補正ベクトルA31が用いられる。すなわち、現在座標Q31から左上方向を向く補正ベクトルA31に基づいてオブジェクト座標O31が算出され、オブジェクト座標O31の位置にオブジェクト161が表示される(
図16(a)参照)。
【0167】
一方、
図16に示す(b)は、オブジェクト161の中央より左側(より具体的には、中央を通る上下方向の軸より左側)の座標P32が開始座標となる場合においてオブジェクトが移動する様子を表す。本実施形態においては、開始座標がオブジェクト161の中央より左側となる場合、第3修正処理による補正ベクトルに対する修正が行われる。具体的には、上記の場合、オブジェクト移動手段153は、補正ベクトルにおける左方向の成分を増加させる修正を行う。したがって、上記の場合、開始座標P32からドラッグ距離D31(すなわち、
図16(a)に示す場合と同じドラッグ距離)だけ離れた現在座標Q32については、第3修正処理によって修正された補正ベクトルA32が用いられる。詳細は後述するが、補正ベクトルA32は、補正ベクトルA31よりも左方向の成分が増加したベクトルである。したがって、現在座標Q32から左上方向を向き、補正ベクトルA31よりも大きい補正ベクトルA32に基づいてオブジェクト座標O32が算出され、オブジェクト座標O32の位置にオブジェクト161が表示される(
図16(b)参照)。なお、
図16(b)においては、第3修正処理による修正が行われない補正ベクトルA31を用いて算出される位置に配置されるオブジェクト161を、点線で示している。
図16より、第3修正処理によって、オブジェクトが指に隠れにくくなり、より見やすい位置に配置されていることが分かる。
【0168】
第3修正処理における修正は、補正ベクトルの左右方向に関する成分に対して開始修正率を乗算することによって行われる。本実施形態においては、開始修正率は、オブジェクト内における開始座標の位置(より具体的には、左右方向に関するオブジェクトの中央から開始座標までの距離)に基づいて算出される。
【0169】
図17は、左右方向に関する開始座標の位置と開始修正率との関係の一例を示す図である。
図17に示すように、開始座標がオブジェクトの中央より右側の領域となる場合、開始修正率は1に設定される。したがって、この場合、第3修正処理による修正は実質的には行われない。一方、開始座標がオブジェクトの中央より左側の領域となる場合、開始修正率は1以上の値に設定される。具体的には、
図17に示すように、上記の場合、開始修正率は、オブジェクトの中央から開始座標までの距離(左右方向についての距離)に比例して増加し、開始座標がオブジェクトの左端の位置となる場合に上限値(ここでは、1.5)となる。
【0170】
上記より、本実施形態においては、開始座標がオブジェクト内における左側に位置するほど開始修正率が大きくなる。したがって、開始座標がオブジェクト内における左側に位置するほど、オブジェクトは現在座標から離れた位置に配置されるので、ドラッグ操作を行う指にオブジェクトが隠れにくくなる。
【0171】
上記においては、オブジェクト移動処理における処理モードが右手操作モードに設定されている場合を例として説明した。ここで、上記処理モードが左手操作モードに設定されている場合には、オブジェクト移動手段153は、開始座標の位置と開始修正率との関係(
図17)を左右反対にして第3修正処理を実行する。すなわち、左手操作モードにおいては、開始座標がオブジェクトの中央より左側の領域となる場合、開始修正率は1に設定され、修正は実質的には行われない。また、開始座標がオブジェクトの中央より右側の領域となる場合、開始修正率は、オブジェクトの中央から開始座標までの距離(左右方向についての距離)に比例して増加するように算出される。また、上記処理モードが左手操作モードに設定されている場合には、オブジェクト移動手段153は、開始修正率が1より大きい値となる場合、補正ベクトルにおける右方向の成分を増加させる修正を行う。
【0172】
以上のように、本実施形態においては、オブジェクト移動手段153は、開始座標が、オブジェクトの基準位置(ここでは、中央)を通る所定軸より補正方向の側(すなわち、左側)である場合、当該開始座標が当該所定軸より補正方向の反対側(例えば、右側)である場合に比べて、当該ドラッグ操作中における補正量を当該補正方向の側に大きく設定する。これによれば、オブジェクト内における開始座標の位置に応じて補正量を調節することができるので、オブジェクトを見やすい位置に表示することができる。これによって、ドラッグ操作の操作性を向上することができる。
【0173】
なお、本実施形態においては、上記基準位置をオブジェクトの中央の位置として、中央より右側である場合と左側である場合とで補正量を異ならせるようにした。ここで、他の実施形態においては、基準位置はオブジェクト内の任意の位置でよい。
【0174】
また、上記所定軸は、本実施形態においては、上下方向に平行な軸としたが、他の実施形態においては、左右方向に平行な軸であってもよい。すなわち、本実施形態においては、オブジェクト移動手段153は、開始座標の左右方向に関する位置に基づいて、左右方向に関する補正量を変化させたが、他の実施形態においては、開始座標の上下方向に関する位置に基づいて、上下方向に関する補正量を変化させてもよい。例えば、オブジェクト移動手段153は、開始座標がオブジェクトの中央より上側である場合、開始座標がオブジェクトの中央より下側である場合に比べて補正量が大きくなるようにしてもよい。また、他の実施形態においては、上記所定軸は、斜め方向に平行な軸であってもよく、開始座標の左右方向の位置および上下方向の位置の両方を考慮して補正量を変化させるようにしてもよい。例えば、オブジェクト移動手段153は、開始座標がオブジェクトの中心より左上側である場合、開始座標がオブジェクトの中心より右下側である場合に比べて補正量が大きくなるようにしてもよい。
【0175】
また、本実施形態においては、オブジェクト移動手段153は、第3修正処理において、補正ベクトルの左右方向の成分について修正を行った。ここで、他の実施形態においては、第3修正処理において、補正ベクトルの2方向の成分(すなわち、法線方向の成分と、法線方向に垂直な成分)について修正が行われてもよい。具体的には、オブジェクト移動手段153は、補正ベクトルに対して上記開始修正率を乗算する修正を行ってもよい。この場合、修正前後において補正方向は変化せずに補正量が変化することとなる。
【0176】
[2-2-7.ドラッグ操作中に入力座標が取得されなかった場合の処理]
本実施形態においては、ドラッグ操作中において何らかの理由で入力座標の取得(換言すれば、検出)が途切れ、その後に入力座標が再度取得された場合、ゲームシステム1は、一定条件下でドラッグ操作が継続していると判断する。これによって、ドラッグ操作がユーザの意図に反して終了されてしまう可能性を低減する。以下、ドラッグ操作を継続させるための処理について説明する。
【0177】
図18は、表示領域の端部付近でドラッグ操作が行われる様子の一例を示す図である。
図18においては、時刻t=t1~t4の期間におけるドラッグ操作による入力軌跡を示している。
図18においては、時刻t1において入力座標Q41が取得され、時刻t2および時刻t3においては、ユーザによる入力位置(
図18において白丸で表される位置)は表示領域外であるために入力座標が取得されず、時刻t4において入力座標Q42が取得されたものとする。
【0178】
本実施形態においては、変化量算出手段152は、ドラッグ操作中に入力座標が取得されなくなってからの経過時間を測定する。そして、入力座標が再度取得された場合、変化量算出手段152は、上記経過時間が、予め定められた継続判定時間より短いか否かを判定する。なお、継続判定時間の長さは任意であるが、例えば、入力座標に基づきオブジェクト座標が10回更新される期間(換言すれば、10フレーム期間)に相当する長さに設定される。
【0179】
上記経過時間が継続判定時間より短い場合、変化量算出手段152は、ドラッグ操作が継続していると判断する。すなわち、変化量算出手段152は、入力座標の取得が中断される前のドラッグ操作における開始座標と、中断後に取得された入力座標とに基づいてドラッグ距離を算出する。このように、上記経過時間が継続判定時間より短い場合には、入力座標の取得が中断される前のドラッグ操作について、ドラッグ距離が継続して算出される。上記の場合、算出されたドラッグ距離に基づくオブジェクト座標の位置にオブジェクトが表示される。例えば、
図18に示す例において、経過時間が継続判定時間よりも短いと仮定すると、入力座標Q41に基づく位置にオブジェクトが表示された後、入力座標Q42に基づく位置にオブジェクトが表示される。このようにして、ユーザはドラッグ操作を継続することができる。
【0180】
一方、上記経過時間が継続判定時間以上となる場合、変化量算出手段152は、ドラッグ操作が終了したと判断し、オブジェクトの移動を終了する。この場合、オブジェクトは、ドラッグ操作中に入力座標が取得されなくなった時点で移動を停止する。例えば、
図18に示す例において、経過時間が継続判定時間以上であると仮定すると、入力座標Q41に基づく位置に表示されたオブジェクトは、入力座標Q42が取得されても移動されない。
【0181】
なお、
図18においては、ユーザによる入力位置が表示領域外となることが理由で入力座標が取得されない場合を例として示すが、入力座標が取得されなくなる理由は任意である。本実施形態においては、変化量算出手段152は、入力座標が取得されなくなる理由にかかわらず、変化量算出手段152は、上記経過時間が継続判定時間より短い場合には、ドラッグ操作が継続していると判断する。
【0182】
以上のように、本実施形態においては、変化量算出手段152は、ドラッグ操作の入力座標が取得されなくなってから所定時間(具体的には上記継続判定時間)内に入力座標が再び取得された場合、当該ドラッグ操作に関して座標変化量を継続して算出する。これによれば、ドラッグ操作中に何らかの理由で入力座標が一時的に取得されなくなった場合でも、ユーザはドラッグ操作を継続することができるので、ドラッグ操作の操作性を向上することができる。
【0183】
[3.ゲームシステムにおける処理の具体例]
次に、
図19~
図21を参照して、ゲームシステム1において実行されるオブジェクト移動処理の具体例について説明する。
【0184】
[3-1.処理に用いられるデータ]
図19は、ゲームシステム1におけるオブジェクト移動処理に用いられる各種情報の一例を示す図である。
図19に示す各種情報は、本体装置2がアクセス可能な記憶媒体(例えば、フラッシュメモリ84、DRAM85、および/または、スロット23に装着されたメモリカード等)に記憶される。
【0185】
図19に示すように、ゲームシステム1は、情報処理プログラムを記憶する。情報処理プログラムは、本実施形態におけるオブジェクト移動処理を実行するためのプログラム(例えば、ゲームプログラム等のアプリケーションプログラム)であり、例えば、フラッシュメモリ84、および/または、スロット23に装着されたメモリカードに記憶される。
【0186】
また、
図19に示すように、ゲームシステム1は、ドラッグ操作情報、変化量情報、操作手情報、補正ベクトル情報、および、オブジェクト情報を記憶する。これらの情報(換言すれば、データ)は、後述するオブジェクト移動処理(
図20および
図21)において生成されて用いられる。
【0187】
ドラッグ操作情報は、ドラッグ操作中における入力座標を示す。本実施形態においては、ドラッグ操作情報は、開始座標を示す入力座標情報と、現在座標を示す入力座標情報と、現在座標の1つ前に取得された入力座標を示す入力座標情報とを少なくとも含む。
【0188】
変化量情報は、上述の座標変化量を示す。上述のように、本実施形態においては、変化量情報は、上記ドラッグ距離を示す。また、操作手情報は、上述のように、ドラッグ操作を行うユーザの手が右手であるか左手であるかを示す。また、補正ベクトル情報は、ドラッグ操作中に算出される補正ベクトルを示す。
【0189】
オブジェクト情報は、ディスプレイ12に表示される仮想空間に配置されるオブジェクトに関する情報である。本実施形態においては、オブジェクト情報は、上述のオブジェクト座標を示す情報を含む。なお、オブジェクト情報は、仮想空間に配置されるオブジェクト毎に生成されて記憶される。
【0190】
[3-2.ゲームシステムにおいて実行される処理]
図20および
図21は、ゲームシステム1によって実行されるオブジェクト移動処理の流れの一例を示すフローチャートである。なお、
図20および
図21に示す一連のオブジェクト移動処理は、プロセッサ81によって上記情報処理プログラムが起動された後における適宜のタイミングで開始される。例えば、ドラッグ操作可能なオブジェクトが配置された仮想空間がディスプレイ12に表示された場合に、オブジェクト移動処理の実行が開始される。
【0191】
なお、本実施形態では、本体装置2のプロセッサ81が、ゲームシステム1に記憶されている上記情報処理プログラムを実行することによって、
図20および
図21に示す各ステップの処理を実行するものとして説明する。ただし、他の実施形態においては、上記各ステップの処理のうちの一部の処理を、プロセッサ81とは別のプロセッサ(例えば、専用回路等)が実行するようにしてもよい。また、ゲームシステム1が他の情報処理装置(例えば、サーバ)と通信可能である場合、
図20および
図21に示す各ステップの処理の一部は、他の情報処理装置において実行されてもよい。また、
図20および
図21に示す各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。
【0192】
また、プロセッサ81は、
図20および
図21に示す各ステップの処理を、メモリ(例えば、DRAM85)を用いて実行する。すなわち、プロセッサ81は、各処理ステップによって得られる情報(換言すれば、データ)をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
【0193】
図21に示すステップS1において、プロセッサ81(換言すれば、判別手段154)は、処理モードが右手操作モードであるか左手操作モードであるかを判別する。ステップS1の処理は、ドラッグ操作を行うユーザの手が右手であるか左手であるかを判別するための処理である。本実施形態では、上記“[2-2-3.操作を行う手の判別]”の欄で述べたように、プロセッサ81は、ユーザの設定指示に基づいて、処理モードが右手操作モードであるか左手操作モードであるかを判別する。このとき、プロセッサ81は、判別結果を示す操作手情報をメモリに記憶する。ステップS1の次に、ステップS2の処理が実行される。
【0194】
ステップS2において、プロセッサ81は、初期設定処理を実行する。初期設定処理においては、プロセッサ81は、以降の処理(すなわち、ステップS3~S17の一連の処理)において用いられる各種情報の初期値を設定する。例えば、本実施形態においては、後述する操作中フラグがオフに設定され、後述する第2修正フラグがオフに設定される。また、初期設定処理において、プロセッサ81は、所定の処理に用いられる設定情報を、ステップS1で判別された結果(すなわち、右手操作モードであるか左手操作モードであるか)に応じて設定する。具体的には、補正ベクトルの補正方向は、上記ステップS1の判別結果に応じて設定される(上記“[2-2-3.操作を行う手の判別]”参照)。また、第3修正処理における開始修正率の算出方法と、第3修正処理によって補正ベクトルを修正する方向とが、上記ステップS1の判別結果に応じて設定される(上記“[2-2-6.第3修正処理]”参照)。ステップS2の次に、ステップS3の処理が実行される。
【0195】
ステップS3において、プロセッサ81(換言すれば、入力座標取得手段151)は、タッチパネルに対する入力を示す入力情報を取得する。すなわち、プロセッサ81は、タッチパネル13に対して行われた入力を示す入力情報を当該タッチパネル13から取得する。ここで、タッチパネル13に対するユーザのタッチ入力が検出される場合、入力情報は上述の入力座標情報を含む。一方、タッチパネル13に対するユーザのタッチ入力が検出されない場合、入力情報は、タッチ入力がないことを示す情報を含む。ステップS3の次に、ステップS4の処理が実行される。
【0196】
ステップS4において、プロセッサ81は、ドラッグ操作が新たに開始されたか否かを判定する。具体的には、オブジェクトに対するタッチ入力が新たに開始され、かつ、操作中フラグがオフである場合、プロセッサ81は、ドラッグ操作が新たに開始されたと判定する。なお、このとき、プロセッサ81は、ドラッグ操作情報に含まれる開始座標を示す入力座標情報として、今回の処理ループにおけるステップS3で取得された入力座標を示す入力座標情報をメモリに記憶する。一方、オブジェクトに対するタッチ入力が新たに開始されていない場合、または、操作中フラグがオンである場合、プロセッサ81は、ドラッグ操作が新たに開始されていないと判定する。
【0197】
なお、オブジェクトに対するタッチ入力が新たに開始されたか否かの判定は、ステップS3で取得される入力情報に基づいて行うことができる。すなわち、今回の処理ループ(すなわち、ステップS3~S17の処理ループ)におけるステップS3で取得された入力情報がオブジェクト内の入力座標を示し、前回の処理ループにおけるステップS3で取得された入力情報が、タッチ入力がないことを示す場合、プロセッサ81は、オブジェクトに対するタッチ入力が新たに開始されたと判定する。一方、上記の場合以外は、プロセッサ81は、オブジェクトに対するタッチ入力が新たに開始されていないと判定する。
【0198】
ステップS4の判定結果が肯定である場合、ステップS5の処理が実行される。一方、ステップS4の判定結果が否定である場合、ステップS5~S8の一連の処理がスキップされて、後述するステップS9の処理が実行される。
【0199】
ステップS5において、プロセッサ81は、ドラッグ操作中であることを示す操作中フラグをオンに設定する。詳細は後述するが、操作中フラグがオンに設定されている間、入力座標に基づいてオブジェクトが移動する。ステップS5の次に、ステップS6の処理が実行される。
【0200】
ステップS6において、プロセッサ81(換言すれば、オブジェクト移動手段153)は、開始座標が、表示領域に設定されるいずれかの端部領域内の位置であるか否かを判定する。すなわち、プロセッサ81は、メモリに記憶されているドラッグ操作情報に含まれる、開始座標を示す入力座標情報に基づいて、ステップS6の判定処理を実行する。ステップS6の判定結果が肯定である場合、ステップS7の処理が実行される。一方、ステップS6の判定結果が否定である場合、ステップS7の処理がスキップされて、ステップS8の処理が実行される。
【0201】
ステップS7において、プロセッサ81は、第2修正処理の実行中であることを示す第2修正フラグをオンにする。詳細は後述するが、第2修正フラグがオンに設定されている間、第2修正処理が実行される。ステップS7の次に、ステップS8の処理が実行される。
【0202】
ステップS8において、プロセッサ81は、上述の開始修正率を算出する。開始修正率は、上記“[2-2-6.第3修正処理]”で述べた方法に従って算出される。プロセッサ81は、ドラッグ操作が継続している間、ステップS8で算出した開始修正率をメモリに記憶しておき、当該開始修正率を用いて第3修正処理(ステップS30)を実行する。ステップS8の次に、ステップS9の処理が実行される。
【0203】
ステップS9において、プロセッサ81は、ドラッグ操作中であるか否かを判定する。ステップS9の判定は、操作中フラグがオンであるか否かによって行われる。ステップS9の判定結果が肯定である場合、ステップS10の処理が実行される。なお、このとき、プロセッサ81は、ドラッグ操作情報に含まれる現在座標を示す入力座標情報として、今回の処理ループにおけるステップS3で取得された入力座標を示す入力座標情報をメモリに記憶する。一方、ステップS9の判定結果が否定である場合、ステップS10およびS11の一連の処理がスキップされて、後述するステップS12の処理が実行される。
【0204】
ステップS10において、プロセッサ81は、補正ベクトル算出処理を実行する。以下、
図21を参照して、補正ベクトル算出処理の詳細について説明する。
【0205】
図21は、
図20に示すステップS10の補正ベクトル算出処理の詳細な流れの一例を示すサブフローチャートである。補正ベクトル算出処理においては、まずステップS21において、プロセッサ81は、今回の処理ループにおいて入力座標が取得されたか否かを判定する。すなわち、プロセッサ81は、今回の処理ループにおける上記ステップS3において、入力座標を示す入力情報が取得されたか、それとも、タッチ入力がないことを示す入力情報が取得されたかを判定する。なお、ステップS21の処理において、タッチ入力がないことを示す入力情報が取得される場合とは、ドラッグ操作の途中で入力座標が取得されなくなった場合である。ステップS21の判定結果が肯定である場合、ステップS22の処理が実行される。一方、ステップS21の判定結果が否定である場合、ステップS22~S31の一連の処理がスキップされて、プロセッサ81は補正ベクトル算出処理を終了する。
【0206】
ステップS22において、プロセッサ81(換言すれば、変化量算出手段152)は、上述の座標変化量を算出する。上述したように、本実施形態においては、プロセッサ81は、座標変化量として上記ドラッグ距離を算出する。ドラッグ距離は、メモリに記憶されているドラッグ操作情報が示す開始座標および現在座標に基づいて算出される。ステップS22の次に、ステップS23の処理が実行される。
【0207】
ステップS23において、プロセッサ81(換言すれば、オブジェクト移動手段153)は、上述の補正基礎値を算出する。補正基礎値は、上記ステップS22で算出されたドラッグ距離に基づいて、上記“[2-2-2.補正量の算出]”で述べた方法に従って算出される。なお、プロセッサ81は、ドラッグ操作中において算出される補正基礎値をメモリに記憶しておく。ステップS23の次に、ステップS24の処理が実行される。
【0208】
ステップS24において、プロセッサ81(換言すれば、オブジェクト移動手段153)は、補正ベクトルを算出する。ステップS24では、プロセッサ81は、上記第1~第3修正処理による修正前の補正ベクトルを算出する。すなわち、プロセッサ81は、上記“[2-2-2.補正量の算出]”の欄で述べた方法に従って、補正基礎値に基づいて補正量を算出する。また、プロセッサ81は、算出された補正量の大きさを有し、上記ステップS2で設定された補正方向を向く補正ベクトルを算出する。このとき、プロセッサ81は、算出された補正ベクトルを示す補正ベクトル情報をメモリに記憶する。ステップS24の次に、ステップS25の処理が実行される。
【0209】
ステップS25において、プロセッサ81は、第2修正フラグがオンに設定されているか否かを判定する。ステップS25の判定処理は、第2修正処理を実行する条件が満たされているか否か、すなわち、端部領域内から開始されたドラッグ操作の入力座標が当該端部領域内を維持しているか否かを判定するための処理である。ステップS25の判定結果が否定である場合、ステップS26の処理が実行される。一方、ステップS25の判定結果が肯定である場合、後述するステップS28の処理が実行される。
【0210】
ステップS26において、プロセッサ81は、現在座標が、表示領域に設定されるいずれかの端部領域内の位置であるか否かを判定する。すなわち、プロセッサ81は、メモリに記憶されているドラッグ操作情報に含まれる、現在座標を示す入力座標情報に基づいて、ステップS26の判定処理を実行する。ステップS26の判定結果が肯定である場合、ステップS27の処理が実行される。一方、ステップS26の判定結果が否定である場合、ステップS27の処理がスキップされて、後述するステップS31の処理が実行される。
【0211】
ステップS27において、プロセッサ81(換言すれば、オブジェクト移動手段153)は、第1修正処理を実行する。すなわち、プロセッサ81は、メモリに記憶されているドラッグ操作情報に含まれる、現在座標を示す入力座標情報に基づいて、上記“[2-2-4.第1修正処理]”で述べた方法に従って端修正率を算出する。そして、プロセッサ81は、算出された端修正率を用いて、上記ステップS24で算出された補正ベクトルを修正する。このとき、プロセッサ81は、修正後の補正ベクトルを示す補正ベクトル情報をメモリに記憶する。ステップS27の次に、ステップS31の処理が実行される。
【0212】
一方、ステップS28において、プロセッサ81は、現在座標が、開始座標が含まれていた端部領域内であるか否かを判定する。すなわち、プロセッサ81は、メモリに記憶されているドラッグ操作情報に含まれる、現在座標を示す入力座標情報に基づいて、ステップS28の判定処理を実行する。ステップS28の判定結果が肯定である場合、ステップS29の処理が実行される。一方、ステップS28の判定結果が否定である場合、ステップS30の処理が実行される。
【0213】
ステップS29において、プロセッサ81(換言すれば、オブジェクト移動手段153)は、第2修正処理を実行する。すなわち、プロセッサ81は、上記ステップS24で算出された補正ベクトルを、上記“[2-2-5.第2修正処理]”で述べた方法に従って修正する。このとき、プロセッサ81は、修正後の補正ベクトルを示す補正ベクトル情報をメモリに記憶する。ステップS27の次に、ステップS31の処理が実行される。
【0214】
一方、ステップS30において、プロセッサ81は、第2修正フラグをオフにする。したがって、1回のドラッグ操作中において、ステップS30の処理が実行された後においては、第2修正処理が実行されない。ステップS30の次に、ステップS31の処理が実行される。
【0215】
ステップS31において、プロセッサ81(換言すれば、オブジェクト移動手段153)は、第3修正処理を実行する。すなわち、プロセッサ81は、上記ステップS8で算出された開始修正率を用いて、上記“[2-2-6.第3修正処理]”で述べた方法に従って、補正ベクトルを修正する。ここで、ステップS31において修正の対象となる補正ベクトルは、上記ステップS24で算出された補正ベクトル、または、当該補正ベクトルに対して第1修正処理(ステップS27)若しくは第2修正処理(ステップS29)による修正が行われた補正ベクトルである。なお、プロセッサ81は、修正後の補正ベクトルを示す補正ベクトル情報をメモリに記憶する。ステップS31の処理が終了すると、プロセッサ81は補正ベクトル算出処理を終了する。ステップS10の補正ベクトル算出処理が終了すると、ステップS11の処理が実行される。
【0216】
図20に示すステップS11において、プロセッサ81(換言すれば、オブジェクト移動手段153)は、オブジェクト座標を算出する。すなわち、プロセッサ81は、メモリに記憶されているドラッグ操作情報に含まれる、現在座標を示す入力座標情報と、ステップS10で算出された補正ベクトルとに基づいて、オブジェクト座標を算出する(“[2-2-1.移動処理の概要]”参照)。このとき、プロセッサ81は、算出されたオブジェクト座標を含むオブジェクト情報をメモリに記憶する。ステップS11の次に、ステップS12の処理が実行される。
【0217】
ステップS12において、プロセッサ81は、今回の処理ループにおいて入力座標が取得されたか否かを判定する。ステップS12の判定処理は、上記ステップS21の判定処理と同様である。ステップS12の判定結果が否定である場合、ステップS13の処理が実行される。なお、このとき、プロセッサ81は、入力座標が取得されなくなってからの経過時間をカウントする。一方、ステップS12の判定結果が肯定である場合、ステップS13~S15の一連の処理がスキップされて、後述するステップS16の処理が実行される。
【0218】
ステップS13において、プロセッサ81は、入力座標が取得されなくなってからの経過時間が、予め定められた継続判定時間を超えたか否かを判定する。なお、継続判定時間は、上記情報処理プログラムにおいて予め定められている。ステップS13の判定結果が肯定である場合、ステップS14の処理が実行される。一方、ステップS13の判定結果が否定である場合、ステップS14およびS15の一連の処理がスキップされて、後述するステップS16の処理が実行される。
【0219】
ステップS14において、プロセッサ81は、上記操作中フラグをオフに設定する。これによって、ドラッグ操作が終了したと判断されたこととなる。なお、ドラッグ操作中において入力座標が取得されなくなった場合でもステップS14の処理によって操作中フラグがオフに設定されていない期間は、ドラッグ操作が継続していると判断される。したがって、この期間において入力座標が再度取得された場合には、上記ステップS9の判定結果は肯定となり、上記ステップS10およびS11の処理によってオブジェクト座標が算出される結果、ドラッグ操作に応じてオブジェクトが移動される。ステップS14の次に、ステップS15の処理が実行される。
【0220】
ステップS15において、プロセッサ81は、第2修正フラグをオフに設定する。ステップS15の次に、ステップS16の処理が実行される。
【0221】
ステップS16において、プロセッサ81(換言すれば、オブジェクト移動手段153)は、オブジェクトを含む仮想空間の画像を表示する。すなわち、プロセッサ81は、ステップS11で算出されたオブジェクト座標にオブジェクトが配置される仮想空間を表す画像を生成し、生成された画像をディスプレイ12に表示する。なお、ステップS3~S17の一連の処理ループが繰り返し実行される場合、ステップS16の処理は、所定時間(例えば、1フレーム時間)に1回の割合で実行される。上記処理ループが繰り返し実行される間において、ドラッグ操作の現在座標が移動する場合には、上記ステップS11で算出されるオブジェクト座標が変化するので、オブジェクトが移動するように表示されることとなる。ステップS16の次に、ステップS17の処理が実行される。
【0222】
ステップS17において、プロセッサ81は、オブジェクト移動処理を終了するか否かを判定する。例えば、プロセッサ81は、オブジェクトが表示される上記仮想空間の画像の表示を終了する指示がユーザにより行われたかを判定する。ステップS17の判定結果が否定である場合、上記ステップS3の処理が再度実行される。本実施形態においては、ステップS17の判定処理の結果が肯定となるまで、ステップS3~S17の一連の処理が繰り返し実行される。一方、ステップS17の判定結果が肯定である場合、プロセッサ81は、上記オブジェクト移動処理を終了する。
【0223】
[4.上記実施形態の作用効果および変形例]
上記実施形態においては、情報処理プログラムは、表示装置(すなわち、ディスプレイ12)に表示されるオブジェクト161をユーザのドラッグ操作に基づいて移動させるためのプログラムである。情報処理プログラムは、情報処理装置(すなわち、本体装置2)のコンピュータ(すなわち、プロセッサ81)を、以下の手段として機能させる。
・オブジェクトに対するドラッグ操作の入力座標を取得する入力座標取得手段151
・ドラッグ操作が開始されてからの入力座標の座標変化量(具体的には、ドラッグ距離)を算出する変化量算出手段152
・ドラッグ操作中の入力座標に基づいてオブジェクトを移動させるオブジェクト移動手段153
また、オブジェクト移動手段153は、座標変化量が大きい場合(
図11(c))に、当該座標変化量が小さい場合(
図11(b))と比べて、入力座標(具体的には、現在座標)とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って当該オブジェクトを移動させる。
【0224】
なお、上記における「座標変化量が大きい場合は、当該座標変化量が小さい場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように」という条件は、座標変化量が特定の値となる状態において当該条件が満たされればよく、座標変化量が取り得る範囲の全ての値について当該条件が満たされることを要求する意味ではない。例えば、「オブジェクト移動手段153は、座標変化量が第1の値となる場合は、座標変化量が第1の値よりも小さい第2の値となる場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って移動させる」場合、上記条件は満たされていると言うことができる。
【0225】
上記より、本実施形態によれば、座標変化量が大きい場合には、オブジェクトと入力座標とが離れるので、ドラッグ操作中におけるオブジェクトを見やすく表示することができる。また、座標変化量が小さい場合には、オブジェクトと入力座標とが比較的近くに配置される(同じ位置であってもよい)ので、オブジェクトを少しだけ移動させるドラッグ操作を行いやすくすることができる。以上によって、ドラッグ操作の操作性を向上することができる。
【0226】
なお、ドラッグ操作の操作対象となるオブジェクトは、任意のオブジェクトであってよい。例えば、オブジェクトは、仮想のゲーム空間に配置されるゲームオブジェクト(例えば、プレイヤキャラクタ、アイテム、あるいは、パズルゲームにおけるブロック等)であってもよい。また、オブジェクトは、ゲームオブジェクト以外のオブジェクトであってもよく、例えば、パーソナルコンピュータまたはスマートフォンにおけるメニュー画面またはウィンドウ内に配置されるアイコンであってもよい。このように、本実施形態は、ゲーム用途に限らず、各種のアプリケーションに適用することが可能である。
【0227】
また、オブジェクト移動手段153は、入力座標とオブジェクトとの距離を座標変化量に応じて変化させる処理を、仮想空間に配置されるオブジェクト(ただし、ドラッグ操作可能なオブジェクト)のうち、所定の種類のオブジェクトに対してのみ実行するようにしてもよい。そして、オブジェクト移動手段153は、上記所定の種類のオブジェクト以外のオブジェクトに対しては、入力座標とオブジェクトとの距離を一定として、ドラッグ操作に応じて当該オブジェクトを移動させてもよい。なお、上記所定の種類のオブジェクトとは、例えば、表示上の大きさが所定値以下となるオブジェクトである。ここで、表示上の大きさが比較的小さいオブジェクトについては、ドラッグ操作を行う指によって隠されると、当該オブジェクトがほとんど見えなくなってしまって見にくくなる可能性が高い。一方、表示上の大きさが比較的大きいオブジェクトについては、ドラッグ操作を行う指によって一部が隠されても見にくくなる可能性が低い。したがって、入力座標と当該オブジェクトとの距離を座標変化量に応じて変化させる処理は、表示上の大きさが所定値以下となるオブジェクトに対してのみ実行されてもよい。
【0228】
(座標変化量に関する変形例)
上記実施形態においては、ゲームシステム1は、入力座標(具体的には、現在座標)とオブジェクトとの距離を、座標変化量(具体的には、ドラッグ距離)に応じて変化させた。ここで、他の実施形態においては、ゲームシステム1は、座標変化量に代えて、ドラッグ操作が開始されてからの経過時間に応じて入力座標とオブジェクトとの距離を変化させてもよい。すなわち、ゲームシステム1は、上記変化量算出手段に代えて、ドラッグ操作が開始されてからの経過時間を算出する経過時間算出手段を備えていてもよい。このとき、オブジェクト移動手段153は、経過時間が長い場合に、当該経過時間が短い場合と比べて、入力座標とオブジェクトの座標との距離が大きくなるように、オブジェクトを入力座標から離す補正を行って当該オブジェクトを移動させる。
【0229】
上記変形例によれば、経過時間が長い場合には、オブジェクトと入力座標を離して配置することによって、ドラッグ操作中におけるオブジェクトを見やすく表示することができる。また、経過時間が短い場合(つまり、座標変化量が小さいと推測される場合)には、オブジェクトと入力座標との距離を小さくする(0であってもよい)ことによって、オブジェクトを少しだけ移動させるドラッグ操作を行いやすくすることができる。したがって、上記変形例によっても上記実施形態と同様に、ドラッグ操作の操作性を向上することができる。なお、上記経過時間算出手段は、ドラッグ操作が実質的に行われている期間(具体的には、ドラッグ操作の入力座標が移動している期間)に時間をカウントし、ドラッグ操作が実質的には行われていない期間(具体的には、ドラッグ操作の入力座標が停止している期間)には時間をカウントするようにしてもよい。
【0230】
また、他の実施形態においては、入力座標とオブジェクトの座標との距離は、上記座標変化量と、上記経過時間との両方に基づいて設定されてもよい。
【0231】
以上より、情報処理プログラムは、上記座標変化量および上記経過時間のように、ドラッグ操作が継続されることによって増加する指標に基づいて、入力座標とオブジェクトとの距離を設定する。これによって、ドラッグ操作の操作性を向上することができる。
【産業上の利用可能性】
【0232】
以上のように、本実施形態は、ドラッグ操作の操作性を向上すること等を目的として、例えば情報処理プログラムまたは情報処理システム等に利用することができる。
【符号の説明】
【0233】
1 ゲームシステム
2 本体装置
81 プロセッサ
151 入力座標取得手段
152 変化量取得手段
153 オブジェクト移動手段
154 判別手段
161 オブジェクト
P 開始座標
Q 現在座標
D ドラッグ距離
A 補正ベクトル
O オブジェクト座標