説明

表示領域を移動させる画像処理プログラムおよび画像処理装置

【課題】仮想空間における表示領域をユーザが自由に設定することができる画像処理プログラムおよび画像処理装置を提供する。
【解決手段】ゲーム装置は、予め決められた画面上の基準座標を始点とし、入力座標を終点とする差分ベクトルを算出する。さらに、操作対象オブジェクトの位置から一意に決められる仮想空間内の固定点を基点とし、差分ベクトルの方向に基づいた仮想空間内の方向と、差分ベクトルの大きさに基づいた仮想空間内の距離とによって決められる位置まで注視点を移動させるための移動指標データを算出する。注視点は、移動指標データに基づいて移動される。ゲーム装置は、注視点の移動に応じて移動された仮想カメラに基づいた画像を生成し、当該画像を表示装置の画面に表示させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理プログラムおよび画像処理装置に関し、より特定的には、仮想空間の領域のうちで画面に表示される領域(表示領域)を移動させるための画像処理プログラムおよび画像処理装置に関する。
【背景技術】
【0002】
従来、ゲーム装置やゲームプログラム等において、仮想空間に登場するオブジェクトを画面に表示する技術がある。例えば、3次元の仮想のゲーム空間にオブジェクト(キャラクタ)が登場するゲームにおいて、主要な複数のオブジェクトが画面内に収まるように表示領域を決定するゲームがある(例えば、非特許文献1参照。)。このゲームは、複数のキャラクタが登場する格闘ゲームであり、プレイヤは複数のキャラクタのうちの1つを操作する。ゲーム装置は、各キャラクタが画面内に収まるように仮想カメラの位置および向きを自動的に調節する。そして、仮想カメラからゲーム空間を撮影した画像が画面に表示される。これによって、プレイヤは、自己の操作するキャラクタや対戦相手のキャラクタを見失うことなく、ゲームを楽しむことができる。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】「任天堂公式ガイドブック 大乱闘スマッシュブラザーズDX」、株式会社小学館、2002年1月20日、p4
【発明の概要】
【発明が解決しようとする課題】
【0004】
ここで、ゲームの内容によっては、主要なオブジェクトが画面に表示されているだけでは、必ずしもプレイヤにとって見やすい画面とはならない場合がある。例えば、プレイヤキャラクタがゲーム空間の所定方向に向かって矢を放ったり銃を撃ったりする場合には、当該所定方向の領域を広く画面に表示するべきである。具体的には、プレイヤキャラクタが画面の右上方向に向かって矢を放つ場合、プレイヤキャラクタが画面の左下側に表示されるようにして、プレイヤキャラクタの右上方向の領域を広く画面に表示すべきである。また、プレイヤキャラクタを操作する場合に限らず、ゲーム空間内のある地点を起点として所定方向に向かって何らかの操作を行う場合には、当該所定方向の領域が画面に広く表示されることがプレイヤにとって好ましい。
【0005】
しかし、上記非特許文献1に記載の方法では、ゲーム空間内の複数のオブジェクトに基づいて表示領域が決定される。したがって、特定のオブジェクトが存在しない領域については、たとえ当該領域がプレイヤが見たい領域であっても、当該領域を中心としたゲーム空間を表示することができなかった。そのため、上述したようなプレイヤキャラクタが矢を放つ場合には、プレイヤにとって見やすい画面を表示することができなかった。
【0006】
それ故、本発明の目的は、仮想空間における表示領域をユーザが自由に設定することができる画像処理プログラムおよび画像処理装置を提供することである。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0008】
第1の発明は、ユーザによって操作可能な操作対象オブジェクト(プレイヤキャラクタ41)が配置された3次元の仮想空間(ゲーム空間)に設定される注視点に応じてその位置が設定される仮想カメラを用いて、当該操作オブジェクトを含む仮想空間内の画像を画面に表示する画像処理装置(ゲーム装置10)のコンピュータ(CPUコア21等)に実行させる画像処理プログラム(ゲームプログラム)である。なお、画像処理装置は、ユーザが指示した表示装置(第2のLCD12)の画面上の点に対応する入力座標を出力する入力装置(タッチパネル15)を備える。画像処理プログラムは、取得ステップ(S13)と、第1算出ステップ(S15)と、第2算出ステップ(S19およびS20)と、移動制御ステップ(S24)と、表示制御ステップ(S6)とをコンピュータに実行させる。取得ステップにおいては、コンピュータは、入力装置によって出力された入力座標(図9に示す点P3)を取得する。第1算出ステップにおいては、予め決められた画面上の基準座標(図9に示す点P2)を始点とし、入力座標を終点とする差分ベクトル(図9に示すベクトルV1)を算出する。第2算出ステップにおいては、操作対象オブジェクトの位置から一意に決められる仮想空間内の固定点(図13に示す点p1)を基点とし、差分ベクトルの方向に基づいた仮想空間内の方向と差分ベクトルの大きさに基づいた仮想空間内の距離とによって決められる位置まで注視点を移動させるための移動指標データ(58)を算出する(図13参照)。移動制御ステップにおいては、移動指標データに基づいて注視点を移動させる。表示制御ステップにおいては、注視点の移動に応じて移動された仮想カメラに基づいた画像を生成し、当該画像を表示装置の画面に表示させる。
【0009】
第2の発明においては、第2算出ステップにおいて、固定点を基点として、差分ベクトルの方向に基づいた仮想空間内の方向と差分ベクトルの大きさに基づいた仮想空間内の距離とによって決められる仮想空間内の目標点(図13に示す点p2)を示す座標データが移動指標データとして算出されてもよい。このとき、移動制御ステップにおいては、注視点は目標点へ移動される。
【0010】
第3の発明においては、移動制御ステップにおいて、目標点に徐々に近づくように当該注視点が移動されてもよい。
【0011】
第4の発明においては、第2算出ステップにおいて、目標点に注視点を移動させた場合に画面から操作対象オブジェクトが外れないように移動指標データが算出されてもよい。
【0012】
第5の発明においては、画像処理プログラムは、入力装置に対する入力が検出されなくなったことを検知する検知ステップ(S12)をコンピュータにさらに実行させてもよい。このとき、第2算出ステップにおいては、検知ステップで入力が検出されなくなったことが検知されたとき、固定点に注視点を移動させる移動指標データが算出される。
【0013】
第6の発明は、ユーザによって操作可能な操作対象オブジェクト(プレイヤキャラクタ41)が配置された3次元の仮想空間(ゲーム空間)に設定される注視点に応じてその位置が設定される仮想カメラを用いて、当該操作オブジェクトを含む仮想空間内の画像を画面に表示する画像処理装置(ゲーム装置10)のコンピュータ(CPUコア21等)に実行させる画像処理プログラム(ゲームプログラム)である。なお、画像処理装置は、ユーザが指示した表示装置(第2のLCD12)の画面上の点に対応する入力座標を出力する入力装置(タッチパネル15)を備える。画像処理プログラムは、取得ステップ(S13)と、第1算出ステップ(S15)と、第2算出ステップ(S19およびS20)と、移動制御ステップ(S24)と、表示制御ステップ(S6)とをコンピュータに実行させる。取得ステップにおいては、コンピュータは、入力装置によって出力された入力座標(図9に示す点P3)を取得する。第1算出ステップにおいては、予め決められた画面上の基準座標(図9に示す点P2)を始点とし、入力座標を終点とする差分ベクトル(図9に示すベクトルV1)を算出する。第2算出ステップにおいては、操作対象オブジェクトの位置から一意に決められる仮想空間内の固定点(図13に示す点p1)を基点とし、差分ベクトルの方向に基づいた仮想空間内の方向と差分ベクトルの大きさに基づいた仮想空間内の距離とによって決められる位置に当該表示領域を移動させるための移動指標データ(58)を算出する。移動制御ステップにおいては、移動指標データに基づいて表示領域を移動させる。表示制御ステップにおいては、移動された表示領域内の仮想空間の画像を表示装置に表示させる。
【0014】
第7の発明においては、第2算出ステップにおいて、固定点を基点として、差分ベクトルの方向に基づいた仮想空間内の方向と差分ベクトルの大きさに基づいた仮想空間内の距離とによって決められる仮想空間内の目標点(図13に示す点p2)を示す座標データが移動指標データとして算出されてもよい。このとき、移動制御ステップにおいては、表示領域内の予め決められた所定点が目標点に一致するように表示領域が移動される。
【0015】
第8の発明においては、移動制御ステップにおいて、表示領域内の所定点が目標点に徐々に近づくように表示領域が移動されてもよい。
【0016】
第9の発明においては、第2算出ステップにおいて、目標点に表示領域を移動させた場合に画面から操作対象オブジェクトが外れないように移動指標データが算出されてもよい。
【0017】
第10の発明においては、画像処理プログラムは、入力装置に対する入力が検出されなくなったことを検知する検知ステップ(S12)をコンピュータにさらに実行させてもよい。このとき、第2算出ステップにおいては、検知ステップで入力が検出されなくなったことが検知されたとき、固定点が基準座標の位置に表示されるように表示領域を移動させる移動指標データが算出される。
【0018】
第11の発明においては、第2算出ステップは、空間ベクトル算出ステップ(S19)と、目標点設定ステップ(S20)とを含んでいてもよい。空間ベクトル算出ステップにおいては、コンピュータは、仮想空間におけるベクトルである空間ベクトル(図13に示すベクトルv1)を差分ベクトルに基づいて算出する。目標点設定ステップにおいては、固定点を基点として空間ベクトルの終点の位置に目標点を設定する。空間ベクトル算出ステップは、空間ベクトルの大きさが所定の上限値以下となるように、差分ベクトルまたは空間ベクトルの少なくとも一方を補正する第1補正ステップ(S16およびS17)をさらに含む。
【0019】
第12の発明においては、第2算出ステップは、空間ベクトル算出ステップ(S19)と、目標点設定ステップ(S20)とを含んでいてもよい。空間ベクトル算出ステップにおいては、コンピュータは、仮想空間におけるベクトルである空間ベクトルを差分ベクトルに基づいて算出する。目標点設定ステップにおいては、固定点を基点として空間ベクトルの終点の位置に目標点を設定する。空間ベクトル算出ステップにおいては、仮想区間における第1方向(図13に示すz軸方向)に関する空間ベクトルの成分は、画面上における第3方向(図13に示すY軸方向)に関する差分ベクトルの成分に基づいて算出され、第1方向に垂直な第2方向(図13に示すx軸方向)に関する空間ベクトルの成分は、第3方向に垂直な第4方向(図13に示すX軸方向)に関する差分ベクトルの成分に基づいて算出される。
【0020】
第13の発明においては、仮想空間は、操作対象オブジェクトがその上を移動することが可能な所定面(地面43)を有していてもよい。このとき、仮想カメラは、第2方向に垂直で、かつ、所定面に対して90°未満の俯角で視線方向が設定されている。第3方向は、注視点を通って視線方向に延びる直線が画面に表示されるときの当該直線の画面上における方向に平行である。空間ベクトル算出ステップは、空間ベクトルの第1方向の成分に対する第2方向の成分の割合が、差分ベクトルの第3方向の成分に対する第4方向の成分の割合に比べて大きくなるように、差分ベクトルまたは空間ベクトルの少なくとも一方を補正する第2補正ステップを含む。
【0021】
また、本発明は、上記画像処理プログラムを実行することによって実現される機能と同等の機能を有する画像処理装置の形態で提供されてもよい。
【発明の効果】
【0022】
第1または第6の発明によれば、プレイヤが指示した入力座標に応じて表示領域が移動する。したがって、プレイヤは、画面上における入力位置を検出可能なポインティングデバイスを用いて表示領域を移動させることができる。また、表示領域の移動量を決定するための差分ベクトルは、画面上における基準座標と入力座標とに基づいて算出されるので、その大きさが制限される。したがって、表示領域の移動範囲を、固定点を中心とした所定の範囲に制限することができ、表示領域が固定点から大きく外れた位置になることはない。例えば、固定点を操作オブジェクトの位置またはその近傍に設定することによって、プレイヤは、操作オブジェクトを中心とした範囲で表示領域を自由に移動させることができる。
【0023】
第2または第7の発明によれば、目標点を設定することによって、現在の表示領域がどの位置にあっても、プレイヤによる入力に従った位置に表示領域を容易に移動させることができる。
【0024】
第3または第8の発明によれば、表示領域が急に移動する際に画面が見にくくなることを防止することができる。なお、表示領域が急に移動する場合には、仮想空間の画像が別の画像に切り替わったように見えることから、プレイヤにとっては画像が見づらくなるおそれがある。これに対して、第3または第7の発明によれば、表示領域を次第に移動させることができるので、別の画面に切り替わったような感覚をプレイヤに与えることがなく、プレイヤにとって見やすい画像を表示することができる。
【0025】
第4または第9の発明によれば、操作対象オブジェクトを画面内に常に表示させることができる。
【0026】
第5または第10の発明によれば、プレイヤは、入力装置に対する入力を中止することによって、表示状態を、固定点が基準座標の位置に表示される状態に容易に戻すことができる。これによって、表示領域を移動させる操作の操作性を向上することができる。
【0027】
第11の発明によれば、目標点を設定するために用いられる空間ベクトルの大きさが上限値以下の値に制限される。したがって、上限値を適切に設定することによって、操作対象オブジェクトを画面内に常に表示させることができる。
【0028】
第12の発明によれば、空間ベクトルを差分ベクトルから簡易な方法で算出することができる。これによれば、2次元の画面の座標系を3次元の仮想空間の座標系に変換する等の複雑な計算が不要となるので、少ない処理量で目標点の位置を計算することができる。
【0029】
第13の発明によれば、仮想カメラが所定面に対して90°未満の俯角を有するように設定される。このとき、空間ベクトルにおける第3方向の成分と第4方向の成分との割合を、差分ベクトルにおける第1方向の成分と第2方向の成分との割合と同じにすると、プレイヤは、表示領域が移動する際に違和感を抱くおそれがある。すなわち、画面における第1方向に関して表示領域の移動量が少ないようにプレイヤが感じるおそれがある。これに対して第11の発明によれば、差分ベクトルまたは空間ベクトルの方向を補正することによって、プレイヤが抱く上記違和感を軽減することができる。
【図面の簡単な説明】
【0030】
【図1】本発明の一実施形態に係るゲーム装置の外観図
【図2】ゲーム装置の内部構成図
【図3】本実施形態におけるゲーム画面の一例を示す図
【図4】図3のゲーム画面から表示領域が移動された後のゲーム画面を示す図
【図5】仮想の3次元のゲーム空間を模式的に示す図
【図6】ゲーム装置10のRAM24に記憶される主なデータを示す図
【図7】ゲーム装置10において実行されるゲーム処理の流れを示すフローチャート
【図8】図7に示すステップS5の詳細な処理の流れを示すフローチャート
【図9】図8のステップS15の処理を説明するための図
【図10】図8のステップS16の処理を説明するための図
【図11】図8のステップS17の処理を説明するための図
【図12】図8のステップS18の処理を説明するための図
【図13】図8のステップS19の処理を説明するための図
【図14】図8のステップS23の処理を説明するための図
【図15】プレイヤがタッチ入力を行った直後のゲーム画面を示す図
【図16】図15に示す状態から入力位置が変わらずに所定数のフレームが経過した後のゲーム画面を示す図
【発明を実施するための形態】
【0031】
以下、本発明の一実施形態に係る画像処理プログラムおよび画像処理装置について説明する。まず、画像処理プログラム(ゲームプログラム)を実行する画像処理装置の一例である、携帯型のゲーム装置の構成について説明する。図1は、ゲーム装置の外観図である。図1において、ゲーム装置10は、第1のLCD(Liquid Crystal Display:液晶表示装置)11および第2のLCD12を含む。ハウジング13は上側ハウジング13aと下側ハウジング13bとによって構成されており、第1のLCD11は上側ハウジング13aに収納され、第2のLCD12は下側ハウジング13bに収納される。第1のLCD11および第2のLCD12の解像度はいずれも256dot×192dotである。なお、第1の実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用することができる。また任意の解像度のものを利用することができる。
【0032】
上側ハウジング13aには、後述する1対のスピーカ(図2の30)からの音を外部に放出するための音抜き孔18aおよび18bが形成されている。
【0033】
下側ハウジング13bには、入力装置として、十字スイッチ14a、スタートスイッチ14b、セレクトスイッチ14c、Aボタン14d、Bボタン14e、Xボタン14f、Yボタン14g、Lボタン14LおよびRボタン14Rが設けられている。また、さらなる入力装置として、第2のLCD12の画面上にタッチパネル15(図1に示す2点鎖線)が装着されている。また、下側ハウジング13bには、電源スイッチ19や、メモリカード17やスティック16を収納するための挿入口(図1に示す一点鎖線)も設けられている。
【0034】
タッチパネル15としては、例えば抵抗膜方式や光学式(赤外線方式)や静電容量結合式など、任意の方式のものを利用することができる。タッチパネル15は、その表面をスティック16で触れると、その接触位置に対応する座標データを出力する機能を有している。タッチパネル15は、プレイヤによる入力位置(入力座標)を所定のサンプリング時間間隔で検出し、上記座標データを出力する。なお、以下ではプレイヤがタッチパネル15をスティック16で操作するものとして説明を行うが、スティック16の代わりにペン(スタイラスペン)や指でタッチパネル15を操作することももちろん可能である。第1の実施形態では、タッチパネル15として、第2のLCD12の解像度と同じく256dot×192dotの解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル15の解像度と第2のLCD12の解像度が一致している必要はない。
【0035】
メモリカード17はゲームプログラムを記録した記録媒体であり、下部ハウジング13bに設けられた挿入口に着脱自在に装着される。
【0036】
次に、図2を参照してゲーム装置10の内部構成を説明する。図2において、ハウジング13に収納される電子回路基板20には、CPUコア21が実装される。CPUコア21には、バス22を介して、コネクタ23が接続されるとともに、入出力インターフェース回路(図面ではI/F回路と記す)25、第1GPU(Graphics Processing Unit)26、第2GPU27、RAM24およびLCDコントローラ31が接続される。コネクタ23には、メモリカード17が着脱自在に接続される。メモリカード17は、ゲームプログラムを記憶するROM171と、バックアップデータを書き換え可能に記憶するRAM172を搭載する。メモリカード17のROM171に記憶されたゲームプログラムはRAM24にロードされ、RAM24にロードされたゲームプログラムがCPUコア21によって実行される。RAM24には、ゲームプログラムの他にも、CPUコア21がゲームプログラムを実行して得られる一時的なデータや、ゲーム画像を生成するためのデータが記憶される。I/F回路25には、タッチパネル15と、スピーカ30と、図1の十字スイッチ14aやAボタン14d等からなる操作スイッチ部14とが接続される。スピーカ30は、音抜き孔18aおよび18bの内側に配置される。
【0037】
第1GPU26には、第1VRAM(Video RAM)28が接続され、第2GPU27には、第2VRAM29が接続される。第1GPU26は、CPUコア21からの指示に応じて、RAM24に記憶されているゲーム画像を生成するためのデータに基づいて第1のゲーム画像を生成し、第1VRAM28に描画する。第2GPU27は、同様にCPUコア21からの指示に応じて第2のゲーム画像を生成し、第2VRAM29に描画する。第1VRAM28および第2VRAM29はLCDコントローラ31に接続されている。
【0038】
LCDコントローラ31はレジスタ32を含む。レジスタ32はCPUコア21からの指示に応じて0または1の値を記憶する。LCDコントローラ31は、レジスタ32の値が0の場合は、第1VRAM28に描画された第1のゲーム画像を第1のLCD11に出力し、第2VRAM29に描画された第2のゲーム画像を第2のLCD12に出力する。また、レジスタ32の値が1の場合は、第1VRAM28に描画された第1のゲーム画像を第2のLCD12に出力し、第2VRAM29に描画された第2のゲーム画像を第1のLCD11に出力する。
【0039】
なお、上記のようなゲーム装置10の構成は単なる一例に過ぎず、本発明は、少なくとも1つの表示装置を有する任意のコンピュータシステムに適用することができる。また、本発明のゲームプログラムは、メモリカード17などの外部記憶媒体を通じてコンピュータシステムに供給されるだけでなく、有線または無線の通信回線を通じてコンピュータシステムに供給されてもよいし、さらにはコンピュータシステム内部の不揮発性記憶装置に予め記録されていてもよい。
【0040】
次に、ゲーム装置10においてゲームプログラムを実行することによって行われるゲームの概要を説明する。本ゲームにおいては、プレイヤによって操作されるプレイヤキャラクタおよび敵キャラクタが3次元の仮想のゲーム空間に登場する。プレイヤは、プレイヤキャラクタを操作して敵キャラクタに対して攻撃を行い、敵キャラクタを倒すことを目的としてゲームを行う。以下、本ゲームの概要について図3および図4を用いて説明する。
【0041】
図3は、本実施形態におけるゲーム画面の一例を示す図である。図3においては、プレイヤキャラクタ41を含むゲーム空間の画像が第2のLCD12に表示される。なお、本実施形態においては、第1のLCD11は使用されなくてもよいし、プレイヤキャラクタの体力や能力を示す各種パラメータや、プレイヤキャラクタが所持するアイテム等の情報が第1のLCD11に表示されてもよい。
【0042】
図3において、プレイヤキャラクタ41は第2のLCD12の画面の中心に表示されている。本実施形態では、表示領域を移動する操作(詳細は後述する)が行われるとき以外は、プレイヤキャラクタ41は画面の中心に表示される。プレイヤキャラクタ41は、剣や弓矢等のアイテム(武器)を使用することができ、プレイヤキャラクタ41の周りの敵キャラクタを剣で攻撃したり、プレイヤキャラクタ41から離れた位置の敵キャラクタを弓矢で攻撃したりすることができる。ただし、本ゲームでは、プレイヤキャラクタ41が同時に使用できるアイテムの数は1つとし、プレイヤは、プレイヤキャラクタ41が使用するアイテムを適宜変更してゲームをプレイする。本実施形態では、プレイヤキャラクタ41が弓矢を使用する場合、プレイヤはタッチパネルへの入力を行うことによって表示領域を移動させることができる。
【0043】
図3においては、プレイヤキャラクタ41が弓矢を使用することができる状態である。このとき、プレイヤは表示領域を移動させることができる。具体的には、プレイヤは、表示領域を移動させるために画面上(タッチパネル15の入力面上)の任意の位置をスティック16で指定する。例えば、画面右下方向に向かって弓矢を放とうとする場合、プレイヤは、図3に示すように、プレイヤキャラクタ41の右下方向の位置(ゲーム空間における地点P1が表示される位置)をスティック16で指定する。
【0044】
図4は、図3のゲーム画面から表示領域が移動された後のゲーム画面を示す図である。プレイヤがタッチパネル15への入力を行うと、ゲーム装置10は、タッチパネル15の入力面上においてプレイヤが入力を行った位置(入力位置)を表す座標(入力座標)を検出する。そして、画面上の予め決められた基準位置を表す座標(基準座標)を始点とし、入力座標を終点とする2次元のベクトル(後述する差分ベクトル)を算出する。なお、ここでは基準位置は画面の中心の位置である。詳細は後述するが、表示領域は、このベクトルに基づいて移動される。図4においては、図3においてベクトルの終点の位置に表示されていた地点P1が画面の中心に表示されるように表示領域が移動される。
【0045】
図4においては、図3に示す状態から表示領域が右下方向に移動している。これによって、プレイヤキャラクタ41の主として右下側のゲーム空間が画面に表示される。すなわち、プレイヤが矢を放とうとする右下方向の領域が広く表示される。矢を放つ方向が広く表示されることによって、プレイヤにとって見やすいゲーム画面となる。プレイヤは、例えば図4に示すように、図3の状態では発見できなかった敵キャラクタ42を発見することができる。このように、プレイヤが自由に表示領域を移動させることによって、弓矢の攻撃をより効果的に行うことができ、ゲームの操作性を向上することができる。
【0046】
次に、ゲームプログラムを実行することによってゲーム装置10において行われるゲーム処理の詳細を説明する。まず、本ゲーム処理において構築される仮想のゲーム空間について図5を用いて説明する。図5は、仮想の3次元のゲーム空間を模式的に示す図である。図5に示すように、仮想の3次元のゲーム空間には、プレイヤキャラクタがその上を移動する地面43が構築される。地面43は、ゲーム空間の位置を表すためのワールド座標系のxz平面と平行に構築される。また、ゲーム空間の画像を第2のLCD12に表示するための仮想カメラは、視線方向(図5に示す矢印45)が地面に対して所定の俯角を有するように設定される。俯角θの角度は90°未満に設定される。また、仮想カメラの視線方向は、xz平面に投影したときの方向がz軸に平行な方向である。したがって、仮想空間において画面に表示される領域(換言すれば、仮想カメラによって撮影される領域。以下、表示領域と呼ぶ。)46は、透視投影の場合は台形となり、平行投影の場合は長方形となる。仮想カメラによって撮影されたゲーム空間の画像が画面に表示される際、ゲーム空間のx軸方向が画面の横方向(画面の座標系のX軸方向)となり、ゲーム空間のz軸方向が画面の中心において画面の縦方向(画面の座標系のY軸方向)となるように当該画像が表示される。なお、画面の座標系は、画面の左上を原点とし、画面の下方向をY軸正方向とし、画面の右方向をX軸正方向とする座標系であるとする。
【0047】
表示領域を移動させる操作が行われていない場合、仮想カメラの注視点は、プレイヤキャラクタ41の位置に設定される。したがって、この場合、プレイヤキャラクタ41は画面の中央に表示されることとなる。仮想カメラの位置44は、注視点の位置に従って決定される。本実施形態では、仮想カメラのy軸方向の位置は予め定められており、注視点の位置が移動すること応じて仮想カメラは視線方向を変化させずにxz平面に平行に移動する。具体的には、注視点のx軸方向に関する移動量と仮想カメラの位置44のx軸方向に関する移動量とは同じであり、かつ、注視点のz軸方向に関する移動量と仮想カメラの位置44のz軸方向に関する移動量とは同じである。
【0048】
次に、ゲーム処理において用いられる主なデータについて図6を用いて説明する。図6は、ゲーム装置10のRAM24に記憶される主なデータを示す図である。図6に示すように、RAM24には、キャラクタ空間座標データ50、アイテムデータ51、基準座標データ52、入力座標データ53、差分ベクトルデータ54、上限値データ55、補正データ56、仮想カメラデータ57、移動指標データ58、および移動ベクトルデータ59等が記憶される。なお、RAM24には、図6に示すデータの他、プレイヤキャラクタに関するデータ(プレイヤキャラクタの画像データや位置データ等)やゲーム空間に関するデータ(地形データ等)等、ゲーム処理に必要なデータが記憶される。
【0049】
キャラクタ空間座標データ50は、プレイヤキャラクタのゲーム空間における位置を表す座標(キャラクタ空間座標)を示すデータである。キャラクタ空間座標データ50は、具体的には、上記ワールド座標系(3次元座標系)の座標データである。アイテムデータ51は、プレイヤキャラクタが現在使用可能なアイテムを示すデータである。例えばプレイヤキャラクタが弓矢を使用可能である状態のとき、アイテムデータ51は弓矢を示すデータに設定される。
【0050】
基準座標データ52は、予め決められた画面上の上記基準位置を表す座標(画面基準座標)を示すデータである。基準座標データ52は、具体的には、画面の座標系(2次元座標系)の座標データである。基準位置は、ゲームプログラムにおいて予め決められている。本実施形態では、基準位置は画面の中心の位置である。基準座標データ52は、上記差分ベクトルを算出するために用いられる。
【0051】
入力座標データ53は、タッチパネル15がプレイヤによる入力を検出した画面上の位置を表す座標(入力座標)を示すデータである。具体的には、入力座標データ53は、画面の座標系(2次元座標系)で表される座標データである。また、差分ベクトルデータ54は、上記画面基準座標の位置を始点とし、上記入力座標の位置を終点とする2次元のベクトル(差分ベクトル)を示すデータである。
【0052】
上限値データ55は、差分ベクトルがとり得る大きさ(上限値)を示すデータである。本実施形態では、画面基準座標および入力座標から算出される差分ベクトルの大きさが上限値を超える場合、差分ベクトルの大きさが当該上限値に補正される。上限値は、ゲームプログラムにおいて予め決められている。また、補正データ56は、差分ベクトルの各成分(X成分およびY成分)を補正する倍率を示すデータである。補正データ56には、X成分を補正する倍率(第1倍率)を示すデータ、およびY成分を補正する倍率(第2倍率)を示すデータが含まれる。
【0053】
仮想カメラデータ57は、仮想カメラの各種パラメータを示すデータである。仮想カメラのパラメータには、仮想カメラの位置を表す座標データ、注視点の位置を表す座標データ、および視線方向を示すデータが含まれる。
【0054】
移動指標データ58は、表示領域を移動させる方向および移動量を示すデータである。具体的には、移動指標データ58は、ゲーム空間における目標点の位置(目標位置)を表す座標(目標座標)を示すデータである。目標点とは、仮想カメラの注視点を移動させるべき目標となる点である。移動指標データ58は、具体的には、ワールド座標系で表される座標データである。詳細は後述するが、移動指標データは、上記差分ベクトルに基づいて算出される。なお、他の実施形態においては、移動指標データ58は、注視点を移動させる方向および移動量を示すベクトルのデータであってもよいし、仮想カメラの位置を移動させる方向および移動量を示すベクトルのデータであってもよい。
【0055】
移動ベクトルデータ59は、単位時間当たり(例えば1フレーム当たり)に注視点を移動させる移動方向および移動量を示すベクトル(移動ベクトル)を示すデータである。移動ベクトルは、現在の注視点の位置から目標位置までのベクトルに基づいて算出される。なお、移動ベクトルは3次元のベクトルであるが、xz平面に平行な地面上においてのみ注視点を移動させる場合には、x成分およびz成分からなる2次元のベクトルとしてもよい。
【0056】
次に、ゲームプログラムを実行することによってゲーム装置10において行われるゲーム処理の詳細を、図7〜図13を用いて説明する。図7は、ゲーム装置10において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置10の電源が投入されると、ゲーム装置10のCPUコア21は、図示しないブートROMに記憶されている起動プログラムを実行し、RAM24等の各ユニットが初期化される。そして、メモリカード17に格納されたゲームプログラムがRAM24に読み込まれ、CPUコア21によって当該ゲームプログラムの実行が開始される。図7に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図7および図8に示すフローチャートにおいては、ゲーム処理のうち、表示領域を移動させる操作に関する処理について詳細に示し、本願発明と関連しない他のゲーム処理については詳細な説明を省略する。
【0057】
図7のステップS1において、まず、ゲーム空間が構築され、プレイヤキャラクタや敵キャラクタが初期位置に配置される。そして、プレイヤキャラクタとその周囲のゲーム空間を撮影する位置に仮想カメラが設定され、仮想カメラから視線方向を見たときのゲーム空間の画像が第2のLCDに表示される。このステップS1の次のステップS2以降の処理において、タッチパネル等を用いたゲーム操作が受け付けられ、ゲームが進行する。なお、ステップS2〜S7の処理ループは、1回の処理ループが1フレームの間に実行される。
【0058】
ステップS2において、CPUコア21は、各操作スイッチ14a〜14f,14R,および14Lが押下されたか否かを示す操作データを操作スイッチ部14から取得する。続くステップS3において、プレイヤキャラクタおよび敵キャラクタの動作が制御される。具体的には、ステップS2で取得された操作データに基づいてプレイヤキャラクタの動作(移動動作および攻撃動作を含む)が決定される。プレイヤキャラクタが移動動作を行う場合、RAM24に記憶されているキャラクタ空間座標データキャラクタ空間座標データ50の内容が、移動後の位置を示す座標データに更新される。また、ゲームプログラムにおいて予め決められたアルゴリズムに従って敵キャラクタの動作が決定される。
【0059】
続くステップS4において、プレイヤキャラクタが使用するアイテムが決定される。ここでは、プレイヤキャラクタは、Lボタン14Lが押下されている間は弓矢を使用し、Lボタン14Lが押下されていないときは剣を使用する。すなわち、CPUコア21は、ステップS2で取得された操作データに基づいて、Lボタン14Lが押下されているか否かを判断し、Lボタン14の押下の有無に応じてアイテムを決定する。このとき、RAM24に記憶されているアイテムデータ51の内容が、ステップS4で決定されたアイテムを示すデータに更新される。ステップS4の次にステップS5の処理が実行される。
【0060】
ステップS5において、表示領域決定処理が実行される。表示領域決定処理は、プレイヤの操作に従って表示領域を決定する処理である。以下、表示領域決定処理の詳細を図8〜図13を用いて説明する。
【0061】
図8は、図7に示すステップS5の詳細な処理の流れを示すフローチャートである。表示領域決定処理においてはまずステップS11において、プレイヤキャラクタの使用するアイテムが、予め定められている所定のアイテム(ここでは、弓矢)であるか否かが判定される。具体的には、CPUコア21は、RAM24に記憶されているアイテムデータ51が当該所定のアイテムを示すか否かを判定する。アイテムデータ51が所定のアイテムを示す場合、ステップS12の処理が実行される。一方、アイテムデータ51が所定のアイテム以外のアイテムを示す場合、後述するステップS21の処理が実行される。
【0062】
ステップS12において、プレイヤによるタッチパネル15への入力(タッチ入力)があったか否かが判定される。具体的には、CPUコア21は、タッチパネル15から出力されるデータを読み込み、タッチパネル15から座標データが出力されているか否かを判定する。タッチパネル15から座標データが出力されている場合、タッチ入力があると判定されてステップS13の処理が行われる。一方、入力がないことを示すデータがタッチパネル15から出力されている場合、タッチ入力がないと判定されて後述するステップS21の処理が行われる。
【0063】
ステップS13において、入力座標が取得される。すなわち、CPUコア21は、RAM24に記憶される入力座標データ53の内容を、ステップS12でタッチパネル15から読み込んだ座標データに更新する。なお、更新前の座標データは別途RAM24に記憶される。ステップS13の次にステップS14の処理が実行される。
【0064】
ステップS14において、ステップS13で取得された入力座標は前回から変化したか否かが判定される。具体的には、ステップS13で更新された入力座標データ53により示される入力座標が、更新前と更新後とで変化しているか否かが判定される。ステップS14の判定において、入力座標が変化していると判定される場合、ステップS15の処理が実行される。一方、入力座標が変化していないと判定される場合、後述するステップS24の処理が実行される。なお、他の実施形態においては、更新前の入力座標と更新後の入力座標との距離が所定距離以下である場合には、入力座標が変化していないとみなしてステップS24の処理が実行されるようにしてもよい。
【0065】
ステップS15において、差分ベクトルが算出される。図9は、図8のステップS15の処理を説明するための図である。ここでは、図9に示すように、画面の中央にプレイヤキャラクタ41が表示されているとする。差分ベクトルは、上記画面基準座標(点P2の座標)を始点とし、入力座標(点P3の座標)を終点とするベクトルV1として算出される。ここで、入力座標は、ステップS13でRAM24に記憶された入力座標データ53により示される。したがって、CPUコア21は、RAM24に記憶されている基準座標データ52および入力座標データ53を用いて差分ベクトルを算出する。算出された差分ベクトルのデータは、差分ベクトルデータ54としてRAM24に更新して記憶される。ステップS15の次にステップS16の処理が実行される。
【0066】
ステップS16において、ステップS15で算出された差分ベクトルの大きさが所定の上限値以下であるか否かが判定される。なお、この上限値は、RAM24に記憶されている上限値データ55により示される。CPUコア21は、RAM24に記憶されている差分ベクトルデータ54および上限値データ55を参照することによってステップS16の判定を行う。図10は、図8のステップS16の処理を説明するための図である。差分ベクトルの大きさが上限値以下である場合とは、図10に示すベクトルV1の終点の位置P3が、図10に示す領域61内に存在する場合である。領域61は、上記位置P2を中心とする、半径が上限値である円形の領域である。つまり、ステップS16の判定は、プレイヤによる入力位置P3が、画面上の位置P2を中心とする円形領域61内に含まれるか否かを判定する処理である。ステップS16の判定において、差分ベクトルの大きさが所定の上限値よりも大きいと判定される場合、ステップS17の処理が実行される。一方、差分ベクトルの大きさが所定の上限値以下であると判定される場合、ステップS18の処理が行われる。
【0067】
ステップS17において、ステップS15で算出された差分ベクトルの大きさが上記上限値に補正される。図11は、図8のステップS17の処理を説明するための図である。図11に示すように、ベクトルV1の終点の位置P3が領域61外に位置する場合、差分ベクトルはベクトルV2に補正される。ベクトルV2は、ベクトルV1と同じ向きであり、領域61の外周を終点とするベクトルである。このとき、RAM24に記憶されている差分ベクトルデータ54の内容は、ステップS17における補正後の差分ベクトルのデータに更新される。ステップS17の次にステップS18の処理が実行される。
【0068】
上記ステップS16およびS17の処理は、差分ベクトルの大きさを制限する処理である。ここで、差分ベクトルの大きさを制限しない場合には、差分ベクトルの大きさおよび向きに基づいて表示領域を移動させる結果、プレイヤキャラクタ41の一部が画面から外れてしまうことがある。そこで、本実施形態では、上記ステップS16およびS17の処理によって、プレイヤキャラクタ41の一部が画面から外れてしまわないように、差分ベクトルの大きさを制限している。なお、プレイヤキャラクタの全体を画面に常に表示させるためには、画面の中心から端までの最短の長さ(図11では、画面の中心から上端または下端までの長さ)よりもやや小さく上限値を設定すればよい。具体的には、上限値は、当該長さからプレイヤキャラクタの表示幅を引いた長さとすればよい。
【0069】
ステップS18において、差分ベクトルの各成分(X成分およびY成分)の値が補正される。具体的には、CPUコア21は、差分ベクトルのX成分の値に上記第1倍率を積算し、差分ベクトルのY成分の値に上記第2倍率を積算する。なお第1および第2倍率の値は、RAM24に記憶されている補正データ56を参照することによって知ることができる。なお、CPUコア21は、RAM24に記憶されている差分ベクトルデータ54の内容を、ステップS18における補正後の差分ベクトルのデータに更新する。
【0070】
図12は、図8のステップS18の処理を説明するための図である。ステップS18においては、補正前の差分ベクトルV2がベクトルV3に補正される。補正前の差分ベクトルV2の各成分を(LX,LY)とし、補正後の差分ベクトルV3の各成分を(dX,dY)とすると、(dX,dY)は次の式(1)に従って算出される。
dX=A1×LX
dY=A2×LY …(1)
式(1)において、A1は上記第1倍率であり、A2は上記第2倍率である。また、本実施形態では、0<A1<1、かつ、0<A2<1である。また、A1<A2である。したがって、ベクトルV3は、X成分に対するY成分の割合がベクトルV2に比べて大きくなるように補正される。なお、上記ステップS18においては、ベクトルV2のX成分についてのみ補正を行うようにしてもよい。すなわち、A2=1としてもよい。
【0071】
上記ステップS18において、X成分に対するY成分の割合が補正前の差分ベクトルに比べて大きくなるように補正される理由は、表示領域が移動する際にプレイヤが抱く違和感を軽減するためである。詳細は後述するが、ゲーム空間において表示領域を移動させる方向は差分ベクトルの方向に基づいて決められる(後述するステップS21)。このとき、上記ステップS18の処理を行わない場合、プレイヤは、画面の縦方向(Y軸方向)に関して表示領域の移動量が少ないような違和感を抱くおそれがある。ステップS18の処理は、このような違和感を軽減するための処理である。
【0072】
上記ステップS18の次に、ステップS19およびステップS20において、注視点を移動させるべき目標点の位置が差分ベクトルに基づいて決定される。具体的には、差分ベクトルの方向に基づいたゲーム空間内の方向と差分ベクトルの大きさに基づいたゲーム空間内の距離とによって、目標点の位置が決定される。
【0073】
ステップS19において、まず、CPUコア21は、画面上の2次元ベクトルである差分ベクトルをゲーム空間内の3次元ベクトルに変換する。図13は、図8のステップS19の処理を説明するための図である。図13において、面62は、仮想カメラから見たゲーム空間を2次元平面に投影するための投影面であり、当該ゲーム空間が表示される画面に対応する。また、ベクトルV3は差分ベクトルであり、ベクトルV3Xは差分ベクトルV3のX成分を表し、ベクトルV3Yは差分ベクトルV3のY成分を表す。ベクトルv1は、差分ベクトルV3が変換された3次元ベクトルであり、ベクトルv1xはベクトルv1のx成分を表し、ベクトルv1yは差分ベクトルv1のy成分を表す。以下では、この3次元ベクトルを空間ベクトルと呼ぶ。
【0074】
上記空間ベクトルv1の大きさは、差分ベクトルV3の大きさに基づいて決定され、空間ベクトルv1の方向は、差分ベクトルV3の方向に基づいて決定される。具体的には、空間ベクトルv1は、次の式(2)に従って算出される。
v1x=B×V3X
v1y=0
v1z=B×V3Y …(2)
式(2)に示したように、差分ベクトルのX成分の値に所定の調整量Bが乗算された値が、空間ベクトルのx成分の値となる。また、差分ベクトルのY成分の値に当該調整量Bが乗算された値が、空間ベクトルのz成分の値となる。なお、空間ベクトルのy成分の値は、地面の高さと同じ値(すなわち、0)に設定される。以上によって、差分ベクトルV3は、ゲーム空間のxz平面に平行な空間ベクトルv1に変換される。なお、画面上における横方向の成分は、ゲーム空間内におけるx軸方向(画面上で横方向に表示される方向)の成分に対応する。画面上における縦方向の成分は、ゲーム空間内におけるz軸方向(画面の中心において縦方向に表示される方向)の成分に対応する。このように、本実施形態によれば、差分ベクトルから空間ベクトルを少ない処理量で容易に算出することができる。
【0075】
なお、図13においては、ベクトルv1の始点が注視点の位置であるとしているが、ベクトルv1の始点はプレイヤキャラクタの位置によって決まる位置であり、(後述するステップS20)、必ずしも注視点とはならない。プレイヤによるタッチ入力によって表示領域が移動された後は、注視点とプレイヤキャラクタの位置とは必ずしも一致しないからである。
【0076】
次に、ステップS20において、ステップS19で変換された空間ベクトルに基づいて目標点の位置が決定される。具体的には、目標点の位置は、ゲーム空間における固定点を基点として、空間ベクトルの方向および大きさによって決められる位置である。ここで、固定点とは、プレイヤキャラクタの位置によって決められるゲーム空間内の点である。なお、固定点は、「プレイヤキャラクタの位置が固定されているという条件下で固定的に設定される」という意味であり、ゲーム空間における特定の1点の位置に常に固定される必要はない。プレイヤキャラクタの位置が変化すれば固定点の位置も変化する。ここでは、固定点は、プレイヤキャラクタの位置に設定される。したがって、プレイヤキャラクタの位置から、空間ベクトルの向きに空間ベクトルの大きさ(距離)だけ離れた位置が新たな目標点の位置となる。CPUコア21は、RAM24に記憶されているキャラクタ空間座標データ50とステップS19で算出された空間ベクトルとを参照して目標点の位置座標を算出する。ステップS20で算出された目標点の座標のデータは、RAM24に記憶されている移動指標データ58として更新して記憶される。ステップS20の次にステップS23の処理が実行される。
【0077】
一方、ステップS11またはステップS12における判定結果が否定であった場合、ステップS21の処理が行われる。ステップS21においては、現在設定されている目標点がゲーム空間におけるプレイヤキャラクタの位置に設定されているか否かが判定される。具体的には、CPUコア21は、RAM24に記憶されているキャラクタ空間座標データ50および移動指標データ58を参照し、キャラクタ空間座標データ50により示される座標と移動指標データ58により示される座標とが同じであるか否かを判定する。そして、2つの座標が同じである場合、目標点がプレイヤキャラクタの位置に設定されていると判定し、逆に、2つの座標が同じでない場合、目標点がプレイヤキャラクタの位置に設定されていないと判定する。目標点がプレイヤキャラクタの位置に設定されていると判定される場合、ステップS22およびS23の処理がスキップされてステップS24の処理が実行される。一方、目標位置がプレイヤキャラクタの位置に設定されていないと判定される場合、ステップS22の処理が実行される。
【0078】
ステップS22においては、目標点がキャラクタの位置に設定される。具体的には、CPUコア21は、RAM24に記憶されている移動指標データ58の内容を、キャラクタ空間座標データ50により示される座標に更新する。以上のステップS21およびS22によって、プレイヤキャラクタが弓矢でないアイテムを使用する場合、または、タッチ入力がない場合には、プレイヤキャラクタの位置が目標点となるので、プレイヤキャラクタが画面中央に表示されることになる。ステップS22の次にステップS23の処理が実行される。
【0079】
ステップS23においては、現在の注視点の位置と目標点の位置とに基づいて移動ベクトルが算出される。上述したように、移動ベクトルは、単位時間当たり(例えば1フレーム当たり)に注視点(表示領域)を移動させる移動方向および移動量を示すベクトルである。図14は、図8のステップS23の処理を説明するための図である。図14において、点p1は現在の注視点の位置を示し、点p2は目標点の位置を示す。また、ベクトルv1は、上記ステップS19で算出された空間ベクトルである。ステップS23において、CPUコア21は、ベクトルv1の各成分を予め定められた所定数(図14では所定数を3としている。)で割ったベクトルv2を算出する。このベクトルv2が移動ベクトルである。CPUコア21は、算出された移動ベクトルのデータを移動ベクトルデータ59としてRAM24に記憶する。
【0080】
ステップS23に示したように、本実施形態においては、ベクトルv1を所定数で割ったベクトルV5を移動ベクトルとすることによって、表示領域の目標位置への移動が複数フレーム(当該所定数のフレーム)にわたって行われることになる。これによって、表示領域が急に移動することによってゲーム画面がプレイヤにとって見づらくなることを防止することができる。なお、他の実施形態においては、ベクトルv1の大きさが予め定められた所定値以下の場合にはベクトルv1を移動ベクトルとしてもよい。また、他の実施形態においては、上記所定数を1にしてもよい。ステップS23の次にステップS24の処理が実行される。
【0081】
ステップS24においては、ステップS23で算出された移動ベクトルに従って注視点が移動される。具体的には、CPUコア21は、RAM24に記憶されている仮想カメラデータ57に含まれる注視点を示すデータの内容を、移動後の注視点の座標を示すデータに更新する。また、仮想カメラの位置を示すデータを、移動後の注視点の位置に応じて更新する。ステップS24の後、CPUコア21は表示領域決定処理を終了する。
【0082】
図7の説明に戻り、ステップS6においては、ゲーム画像が表示される。具体的には、CPUコア21は、仮想カメラの位置から視線方向に見たゲーム空間の画像を生成し、生成した画像を第2のLCD12に表示させる。なお、上記ステップS24で仮想カメラのパラメータ(注視点の位置および仮想カメラの位置)が更新されているので、表示領域が移動して表示されることとなる。ステップS6の次にステップS7の処理が実行される。
【0083】
ステップS7において、ゲームを終了するか否かが判定される。ステップS7の判定は、例えば、プレイヤキャラクタの体力が0になったか否かや、プレイヤキャラクタが全ての敵キャラクタを倒したか否か等によって行われる。ステップS7の判定において、ゲームを終了すると判定された場合、CPUコア21は、図7に示すゲーム処理を終了する。一方、ゲームを終了しないと判定された場合、ステップS2の処理が行われ、以降、ステップS7においてゲームを終了すると判定されるまでステップS2〜S7の一連の処理が繰り返される。以上で、ゲーム処理の詳細な説明を終了する。
【0084】
なお、上記実施形態においては、ステップS17で差分ベクトルについて上限値を設定し、差分ベクトルが上限値以内となるように補正する処理を行った。ここで、他の実施形態においては、差分ベクトルを変換して得られる空間ベクトル(図13に示すベクトルv1)について上限値を設定するようにしてもよい。また、上記実施形態においては、ステップS18で差分ベクトルについて各成分の大きさの割合を調整する補正を行ったが、他の実施形態においては、空間ベクトルについて各成分の大きさの割合を調整する補正を行うようにしてもよい。具体的には、空間ベクトルのx成分に対するz成分の割合が大きくなるように空間ベクトルのx成分およびz成分を補正するようにしてもよい。つまり、空間ベクトルは、空間ベクトルのx方向成分に対するz方向成分の割合が、差分ベクトルのX方向成分に対するY方向成分の割合に比べて大きくなるように算出されればよい。
【0085】
以上に説明したゲーム処理においては、ステップS18において、差分ベクトルのX成分に対するY成分の割合が大きくなるように差分ベクトルの各成分が補正される。ここで、本実施形態では、ステップS19において差分ベクトルをゲーム空間における空間ベクトルに変換する際に、差分ベクトルのX成分を空間ベクトルのx成分に変換する際の調整量と、差分ベクトルのY成分を空間ベクトルのz成分に変換する際の調整量とが同じである。したがって、もしステップS18の処理を行わない場合には、差分ベクトルにおける縦方向(Y成分)と横方向(X成分)との比が、そのまま、空間ベクトルの縦方向(z成分)と横方向(x成分)との比になる。しかし、本実施形態では仮想カメラの視線方向は地面に垂直ではなく、画面のY軸方向に傾いている(視線方向は画面のY軸方向を向く)ので、ゲーム空間は画面のY軸方向に関して圧縮されて表示される。したがって、x軸方向とz軸方向とにそれぞれ同じ距離(ゲーム空間内の距離)だけ表示領域を移動させても、画面上では、z軸方向の方が表示領域の移動量が少なくなってしまう。そのため、差分ベクトルにおける縦方向と横方向との比を、そのまま、空間ベクトルの縦方向と横方向との比とすると、画面上では表示領域の縦方向の移動量が少なくなってしまう。そのため、プレイヤによって入力された方向(すなわち、差分ベクトルの方向)と、表示領域が実際に移動する方向とが一致しないので、プレイヤは違和感を抱くおそれがある。
【0086】
そこで、本実施形態では、差分ベクトルのY軸方向(仮想カメラの視線方向に対応する画面上の方向)の成分をX軸方向に比べて増加させている。これによって、表示領域は、差分ベクトルにおける縦方向と横方向との比と同じ比で移動することとなるので、プレイヤの上記違和感を軽減または解消することができる。
【0087】
図15および図16は、プレイヤが画面の右下位置をタッチした場合における表示領域の移動の様子を示す図である。なお、図15および図16においては、画面における位置を表す点に大文字の“P”のつく参照符号を付し、ゲーム空間における位置を表す点に小文字の“p”のつく参照符号を付す。また、図15および図16においては、画面における2次元ベクトルに大文字の“V”のつく参照符号を付し、ゲーム空間におけるベクトルに小文字の“v”のつく参照符号を付す。
【0088】
図15は、プレイヤがタッチ入力を行った直後のゲーム画面を示す図である。図15においては、タッチ入力が行われた直後であるので、プレイヤキャラクタ41が画面の中央に表示されている。すなわち、プレイヤキャラクタ41の位置p21が画面上の基準位置P11に対応する(表示される)。このとき、プレイヤが画面上の位置P12をタッチすると、基準位置P11から入力位置P12までのベクトルV11が差分ベクトルとして算出される(ステップS15)。次に、上限値により示される領域61に応じて差分ベクトルはベクトルV12に補正される(ステップS17)。さらに、X成分に対するY成分の割合が大きくなるようにベクトルV12がベクトルV13に補正される(ステップS18)。次に、画面上の2次元ベクトルV13が、ゲーム空間における空間ベクトルv21に変換される(ステップS19)。ゲーム空間における目標位置p22は、ゲーム空間におけるプレイヤキャラクタの位置p21を基点として空間ベクトルv21に基づいて決定される(ステップS20)。以上によって、表示領域は、目標位置p22が画面中央に表示されるように移動される。
【0089】
図16は、図15に示す状態から入力位置が変わらずに所定数のフレームが経過した後のゲーム画面を示す図である。図16においては、注視点が目標位置p22に位置しており、プレイヤキャラクタ41が画面の左上に表示されている。このとき、画面上の入力位置は、図15に示す状態から変化していないので、図15に示す場合と同様の差分ベクトルV13が算出される。さらに、図15に示す場合と同様の空間ベクトルv21が差分ベクトルV13から算出される。したがって、目標位置p22も図15に示す場合と(ゲーム空間においては)同様の位置となる。ここで、図16においては、注視点はすでに目標位置p22に位置しているので、表示領域の移動は行われない。
【0090】
このように、本実施形態では、画面上の基準位置と画面上の入力位置とに基づいて、ゲーム空間内において表示領域を移動させるための差分ベクトルを決定している。画面上の2つの位置に基づいて差分ベクトルを決定するので、差分ベクトルの大きさは必然的に制限される。また、差分ベクトルをゲーム空間のベクトルに変換し、変換したベクトルに基づいて、ゲーム空間内の固定点を基点として表示領域を移動させる。したがって、表示領域は固定点を中心とした所定距離内の範囲において移動することとなり、表示領域の移動範囲は制限される。そのため、プレイヤキャラクタの位置を上記固定点とすることによって、表示領域の移動範囲は、プレイヤキャラクタの位置を中心とした範囲に制限されることとなるので、プレイヤキャラクタを画面に常に表示させることができる。
【0091】
以上のように、本実施形態によれば、プレイヤによる入力位置に応じて表示領域を移動させることができるので、その時の状況に応じた見やすい表示領域でゲーム画面を表示することができる。また、差分ベクトルの大きさを上記上限値に制限することによって、表示領域が一定の方向に移動し続けることを防止することができる。さらに、差分ベクトルのX成分とY成分との割合を変化させることによって、表示領域が移動する際にプレイヤが抱く違和感を軽減することができる。
【0092】
なお、上記実施形態においては、差分ベクトルの大きさを上限値に制限することによって、プレイヤキャラクタが画面外に外れることを防止した。ここで、他の実施形態においては、表示領域を移動させる前に、プレイヤキャラクタが表示領域内に位置するか否かを判定し、表示領域内に位置する場合にのみ表示領域を移動させるようにしてもよい。具体的には、ステップS23の後、移動後の表示領域内にプレイヤキャラクタが位置するか否かを判定する処理を行う。判定の結果、表示領域内にプレイヤキャラクタが位置する場合はステップS24の処理を行い、表示領域内にプレイヤキャラクタが位置しない場合はステップS24の処理をスキップする。なお、このとき、ステップS16およびS17の処理は不要である。また、他の実施形態では、差分ベクトルに基づいて目標位置を設定する処理(ステップS20)において、プレイヤキャラクタの位置から所定の範囲内に位置するように目標位置を設定するようにしてもよい。なお、このときもステップS16およびS17の処理は不要である。
【0093】
また、上記実施形態においては、表示領域を移動させる具体的な方法として、仮想カメラの位置を移動させることとした。ここで、表示領域を移動させる方法はどのような方法であってもよく、例えば、仮想カメラの位置および視線方向を変化させるようにしてもよいし、仮想カメラの視線方向のみを変化させるようにしてもよい。また、上記実施形態においては、仮想カメラの位置をx軸方向およびz軸方向にのみ移動させることとしたが、他の実施形態においては、y軸方向にも移動させるようにしてもよい。
【0094】
また、上記実施形態においては、3次元の仮想空間を画面に表示する場合を例として説明したが、仮想空間は2次元であってもよい。2次元の仮想空間の場合も上記実施形態と同様、差分ベクトルに基づいて仮想空間上に目標点を設定し、画面上における基準位置(例えば画面の中央の位置)に目標点が表示されるように表示領域を移動させる。
【0095】
また、上記実施形態では、画像処理プログラムがゲームプログラムとして用いられる場合を例として説明したが、本発明は、ゲームに限らず、仮想空間を画面に表示する場合において表示領域を移動させる技術に適用することができる。
【0096】
また、上記実施形態では、入力装置としてタッチパネルを用いる場合を例として説明したが、入力装置は、例えばマウス等のように、画面上において指定された位置を検出することが可能なポインティングデバイスであればどのようなものであってもよい。
【産業上の利用可能性】
【0097】
以上のように、本発明は、仮想空間における表示領域をユーザが自由に設定すること等を目的とした画像処理プログラムおよび画像処理装置に利用することが可能である。
【符号の説明】
【0098】
10 ゲーム装置
11,12 LCD
21 CPUコア
24 RAM
41 プレイヤキャラクタ
42 敵キャラクタ
V1,V2,V3 差分ベクトル
v1 空間ベクトル
P2 基準位置
P3 入力位置
p1 固定点の位置
p2 目標位置

【特許請求の範囲】
【請求項1】
ユーザが指示した表示装置の画面上の点に対応する入力座標を出力する入力装置を備え、ユーザによって操作可能な操作対象オブジェクトが配置された3次元の仮想空間に設定される注視点に応じてその位置が設定される仮想カメラを用いて、当該操作オブジェクトを含む仮想空間内の画像を前記画面に表示する画像処理装置のコンピュータに実行させる画像処理プログラムであって、
前記入力装置によって出力された入力座標を取得する取得ステップと、
予め決められた前記画面上の基準座標を始点とし、前記入力座標を終点とする差分ベクトルを算出する第1算出ステップと、
前記操作対象オブジェクトの位置から一意に決められる前記仮想空間内の固定点を基点とし、前記差分ベクトルの方向に基づいた前記仮想空間内の方向と前記差分ベクトルの大きさに基づいた前記仮想空間内の距離とによって決められる位置まで前記注視点を移動させるための移動指標データを算出する第2算出ステップと、
前記移動指標データに基づいて前記注視点を移動させる移動制御ステップと、
前記注視点の移動に応じて移動された仮想カメラに基づいた画像を生成し、当該画像を前記表示装置の画面に表示させる表示制御ステップと、を前記コンピュータに実行させる画像処理プログラム。
【請求項2】
前記第2算出ステップにおいては、前記固定点を基点として、前記差分ベクトルの方向に基づいた前記仮想空間内の方向と前記差分ベクトルの大きさに基づいた前記仮想空間内の距離とによって決められる前記仮想空間内の目標点を示す座標データが前記移動指標データとして算出され、
前記移動制御ステップにおいては、前記注視点は前記目標点へ移動される、請求項1に記載の画像処理プログラム。
【請求項3】
前記移動制御ステップにおいては、前記目標点に徐々に近づくように当該注視点が移動される、請求項2に記載の画像処理プログラム。
【請求項4】
前記第2算出ステップにおいては、前記目標点に前記注視点を移動させた場合に前記画面から前記操作対象オブジェクトが外れないように前記移動指標データが算出される、請求項1または2に記載の画像処理プログラム。
【請求項5】
前記入力装置に対する入力が検出されなくなったことを検知する検知ステップを前記コンピュータにさらに実行させ、
前記第2算出ステップにおいては、前記検知ステップで入力が検出されなくなったことが検知されたとき、前記固定点に前記注視点を移動させる移動指標データが算出される、請求項1に記載の画像処理プログラム。
【請求項6】
ユーザが指示した表示装置の画面上における入力座標を出力する入力装置を備え、ユーザによって操作可能な操作対象オブジェクトが配置された仮想空間において当該操作対象オブジェクトを含むように設定される表示領域内の画像を前記画面に表示する画像処理装置のコンピュータに実行させる画像処理プログラムであって、
前記入力装置によって出力された入力座標を取得する取得ステップと、
予め決められた前記画面上の基準座標を始点とし、前記入力座標を終点とする差分ベクトルを算出する第1算出ステップと、
前記操作対象オブジェクトの位置から一意に決められる前記仮想空間内の固定点を基点とし、前記差分ベクトルの方向に基づいた前記仮想空間内の方向と前記差分ベクトルの大きさに基づいた前記仮想空間内の距離とによって決められる位置に当該表示領域を移動させるための移動指標データを算出する第2算出ステップと、
前記移動指標データに基づいて前記表示領域を移動させる移動制御ステップと、
前記移動された表示領域内の前記仮想空間の画像を前記表示装置に表示させる表示制御ステップと、を前記コンピュータに実行させる、画像処理プログラム。
【請求項7】
前記第2算出ステップにおいては、前記固定点を基点として、前記差分ベクトルの方向に基づいた前記仮想空間内の方向と前記差分ベクトルの大きさに基づいた前記仮想空間内の距離とによって決められる前記仮想空間内の目標点を示す座標データが前記移動指標データとして算出され、
前記移動制御ステップにおいては、前記表示領域内の予め決められた所定点が前記目標点に一致するように前記表示領域が移動される、請求項6に記載の画像処理プログラム。
【請求項8】
前記移動制御ステップにおいては、前記表示領域内の前記所定点が前記目標点に徐々に近づくように前記表示領域が移動される、請求項7に記載の画像処理プログラム。
【請求項9】
前記第2算出ステップにおいては、前記目標点に前記表示領域を移動させた場合に前記画面から前記操作対象オブジェクトが外れないように前記移動指標データが算出される、請求項6または請求項7に記載の画像処理プログラム。
【請求項10】
前記入力装置に対する入力が検出されなくなったことを検知する検知ステップを前記コンピュータにさらに実行させ、
前記第2算出ステップにおいては、前記検知ステップで入力が検出されなくなったことが検知されたとき、前記固定点が前記基準座標の位置に表示されるように前記表示領域を移動させる移動指標データが算出される、請求項6に記載の画像処理プログラム。
【請求項11】
前記第2算出ステップは、
前記仮想空間におけるベクトルである空間ベクトルを前記差分ベクトルに基づいて算出する空間ベクトル算出ステップと、
前記固定点を基点として前記空間ベクトルの終点の位置に前記目標点を設定する目標点設定ステップとを含み、
前記空間ベクトル算出ステップは、前記空間ベクトルの大きさが所定の上限値以下となるように、前記差分ベクトルまたは前記空間ベクトルの少なくとも一方を補正する第1補正ステップをさらに含む、請求項2または請求項7に記載の画像処理プログラム。
【請求項12】
前記第2算出ステップは、
前記仮想空間におけるベクトルである空間ベクトルを前記差分ベクトルに基づいて算出する空間ベクトル算出ステップと、
前記固定点を基点として前記空間ベクトルの終点の位置に前記目標点を設定する目標点設定ステップとを含み、
前記空間ベクトル算出ステップにおいては、前記仮想区間における第1方向に関する前記空間ベクトルの成分は、前記画面上における第3方向に関する前記差分ベクトルの成分に基づいて算出され、前記第1方向に垂直な第2方向に関する前記空間ベクトルの成分は、前記第3方向に垂直な第4方向に関する前記差分ベクトルの成分に基づいて算出される、請求項2または請求項7に記載の画像処理プログラム。
【請求項13】
前記仮想空間は、前記操作対象オブジェクトがその上を移動することが可能な所定面を有しており、
前記仮想カメラは、前記第2方向に垂直で、かつ、前記所定面に対して90°未満の俯角で視線方向が設定されており、
前記第3方向は、前記注視点を通って前記視線方向に延びる直線が画面に表示されるときの当該直線の画面上における方向に平行であり、
前記空間ベクトル算出ステップは、前記空間ベクトルの前記第1方向の成分に対する前記第2方向の成分の割合が、前記差分ベクトルの前記第3方向の成分に対する前記第4方向の成分の割合に比べて大きくなるように、前記差分ベクトルまたは前記空間ベクトルの少なくとも一方を補正する第2補正ステップを含む、請求項12に記載の画像処理プログラム。
【請求項14】
ユーザが指示した表示装置の画面上の点に対応する入力座標を出力する入力装置を備え、ユーザによって操作可能な操作対象オブジェクトが配置された3次元の仮想空間に設定される注視点に応じてその位置が設定される仮想カメラを用いて、当該操作オブジェクトを含む仮想空間内の画像を前記画面に表示する画像処理装置であって、
前記入力装置によって出力された入力座標を取得する取得手段と、
予め決められた前記画面上の基準座標を始点とし、前記入力座標を終点とする差分ベクトルを算出する第1算出手段と、
前記操作対象オブジェクトの位置から一意に決められる前記仮想空間内の固定点を基点とし、前記差分ベクトルの方向に基づいた前記仮想空間内の方向と前記差分ベクトルの大きさに基づいた前記仮想空間内の距離とによって決められる位置まで前記注視点を移動させるための移動指標データを算出する第2算出手段と、
前記移動指標データに基づいて前記注視点を移動させる移動制御手段と、
前記注視点の移動に応じて移動された仮想カメラに基づいた画像を生成し、当該画像を前記表示装置の画面に表示させる表示制御手段とを備える、画像処理装置。
【請求項15】
ユーザが指示した表示装置の画面上における入力座標を出力する入力装置を備え、ユーザによって操作可能な操作対象オブジェクトが配置された仮想空間において当該操作対象オブジェクトを含むように設定される表示領域内の画像を前記画面に表示する画像処理装置であって、
前記入力装置によって出力された入力座標を取得する取得手段と、
予め決められた前記画面上の基準座標を始点とし、前記入力座標を終点とする差分ベクトルを算出する第1算出手段と、
前記操作対象オブジェクトの位置から一意に決められる前記仮想空間内の固定点を基点とし、前記差分ベクトルの方向に基づいた前記仮想空間内の方向と前記差分ベクトルの大きさに基づいた前記仮想空間内の距離とによって決められる位置に当該表示領域を移動させるための移動指標データを算出する第2算出手段と、
前記移動指標データに基づいて前記表示領域を移動させる移動制御手段と、
前記移動された表示領域内の前記仮想空間の画像を前記表示装置に表示させる表示制御ステップとを備える、画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2009−157942(P2009−157942A)
【公開日】平成21年7月16日(2009.7.16)
【国際特許分類】
【出願番号】特願2009−89512(P2009−89512)
【出願日】平成21年4月1日(2009.4.1)
【分割の表示】特願2005−154233(P2005−154233)の分割
【原出願日】平成17年5月26日(2005.5.26)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】