(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-05
(45)【発行日】2023-06-13
(54)【発明の名称】情報処理装置、ゲーム処理方法及びゲーム処理プログラム
(51)【国際特許分類】
A63F 13/56 20140101AFI20230606BHJP
A63F 13/52 20140101ALI20230606BHJP
A63F 13/577 20140101ALI20230606BHJP
【FI】
A63F13/56
A63F13/52
A63F13/577
(21)【出願番号】P 2019021049
(22)【出願日】2019-02-07
【審査請求日】2021-11-11
(73)【特許権者】
【識別番号】595000427
【氏名又は名称】株式会社コーエーテクモゲームス
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】隆藤 唯信
【審査官】岸 智史
(56)【参考文献】
【文献】特開2017-217334(JP,A)
【文献】特開2010-273946(JP,A)
【文献】特開2006-244046(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24、13/00-13/98
(57)【特許請求の範囲】
【請求項1】
ゲーム画面に表示されているオブジェクトの下の非表示の地面である仮想地面を作成する特定部と、
作成した前記仮想地面の情報に基づき、前記オブジェクトの次のアクションを決定する決定部と、
決定した前記次のアクションに基づき、前記ゲーム画面に表示するオブジェクトの動作を制御する動作制御部と、を有し、
前記特定部は、
前記オブジェクトの大きさに応じたサイズであって前記オブジェクトに重ねて移動する判定オブジェクトの前記ゲーム画面に表示されている表示部品からの押出方向に応じて前記仮想地面を作成する、
情報処理装置。
【請求項2】
前記決定部は、
前記仮想地面が作成できた場合
、足場があると判定し、前記仮想地面が作成できなかった場合
、足場がないと判定し、前記足場があると判定した場合と前記足場がないと判定した場合と、に分けて前記オブジェクトの次のアクションを決定する、
請求項1に記載の情報処理装置。
【請求項3】
前記動作制御部は、
決定した前記次のアクションに基づき前記オブジェクトを動作させた後の前記判定オブジェクトの位置を補正し、
前記特定部は、
補正した前記判定オブジェクトの前記表示部品からの押出方向に応じて前記仮想地面を作成する、
請求項1又は2に記載の情報処理装置。
【請求項4】
前記決定部は、
作成した前記仮想地面の角度に基づき、前記オブジェクトの次のアクションを決定する、
請求項1~3のいずれか一項に記載の情報処理装置。
【請求項5】
前記決定部は、
作成した前記仮想地面の角度が所定の角度未満である場合、前記オブジェクトの次のアクションを前記オブジェクトの直前の動作と同じ動作に決定する、
請求項1~4のいずれか一項に記載の情報処理装置。
【請求項6】
前記決定部は、
作成した前記仮想地面の角度が所定の角度以上である場合、前記オブジェクトの次のアクションを前記オブジェクトの直前の動作と異なる動作に決定する、
請求項1~5のいずれか一項に記載の情報処理装置。
【請求項7】
前記決定部は、
前記仮想地面が作成されなかった場合、前記オブジェクトの次のアクションを、前記オブジェクトの直前の動作と異なる動作に決定する、
請求項1~6のいずれか一項に記載の情報処理装置。
【請求項8】
前記特定部は、フレーム毎に前記仮想地面を作成する、
請求項1~7のいずれか一項に記載の情報処理装置。
【請求項9】
ゲーム画面に表示されているオブジェクトの下の非表示の地面である仮想地面を作成し、
作成した前記仮想地面の情報に基づき、前記オブジェクトの次のアクションを決定し、
決定した前記次のアクションに基づき、前記ゲーム画面に表示するオブジェクトの動作を制御し、
前記オブジェクトの大きさに応じたサイズであって前記オブジェクトに重ねて移動する判定オブジェクトの前記ゲーム画面に表示されている表示部品からの押出方向に応じて前記仮想地面を作成する、
処理をコンピュータが実行するゲーム処理方法。
【請求項10】
ゲーム画面に表示されているオブジェクトの下の非表示の地面である仮想地面を作成し、
作成した前記仮想地面の情報に基づき、前記オブジェクトの次のアクションを決定し、
決定した前記次のアクションに基づき、前記ゲーム画面に表示するオブジェクトの動作を制御し、
前記オブジェクトの大きさに応じたサイズであって前記オブジェクトに重ねて移動する判定オブジェクトの前記ゲーム画面に表示されている表示部品からの押出方向に応じて前記仮想地面を作成する、
処理をコンピュータに実行させるゲーム処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、ゲーム処理方法及びゲーム処理プログラムに関する。
【背景技術】
【0002】
ゲームにおいてキャラクタが移動する地面等の地形を検出するレイキャストの技術がある。この技術では、キャラクタの真下に向かってレイキャストを行い、地形情報を検出することが行われている。その際、レイ(光線)がヒットした場所の情報を取得し、取得した情報に基づきキャラクタの下の地面の位置及び角度を設定する。
【0003】
また、地形を検出するための地形検出用オブジェクトを仮想空間に配置し、キャラクタと地形検出用オブジェクトとの衝突情報から地形を自動的に判定する技術が開示されている(例えば特許文献1、2参照)。
【0004】
また、
【先行技術文献】
【特許文献】
【0005】
【文献】特開2017-46951号公報
【文献】特開2017-217334号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、建物の間の狭い隙間や道路に設けられた低い段差等の特定の地形は無視してキャラクタを移動させる方が、キャラクタをゲーム上の地形に応じてスムーズに動作させることができ、ゲームの進行上好ましい場合がある。
【0007】
そこで、本開示は、オブジェクトをゲーム上の地形に応じてスムーズに動作させることが可能な技術を提供する。
【課題を解決するための手段】
【0008】
本開示の一の態様によれば、ゲーム画面に表示されているオブジェクトの下の非表示の地面である仮想地面を作成する特定部と、作成した前記仮想地面の情報に基づき、前記オブジェクトの次のアクションを決定する決定部と、決定した前記次のアクションに基づき、前記ゲーム画面に表示するオブジェクトの動作を制御する動作制御部と、を有し、前記特定部は、前記オブジェクトの大きさに応じたサイズであって前記オブジェクトに重ねて移動する判定オブジェクトの前記ゲーム画面に表示されている表示部品からの押出方向に応じて前記仮想地面を作成する、情報処理装置が提供される。
【発明の効果】
【0009】
一の側面によれば、オブジェクトをゲーム上の地形に応じてスムーズに動作させることができる。
【図面の簡単な説明】
【0010】
【
図2】一実施形態に係る情報処理装置の機能構成の一例を示す図である。
【
図3】一実施形態に係る情報処理装置のハードウェア構成の一例を示す図である。
【
図4】一実施形態に係るアクション処理の概要を説明するための図である。
【
図5】一実施形態に係るアクション処理の概要を説明するための図である。
【
図6】一実施形態に係るキャラクタテーブルの一例を示す図である。
【
図7】一実施形態に係る表示部品位置テーブルの一例を示す図である。
【
図8】一実施形態に係る動作ルールテーブルの一例を示す図である。
【
図9】一実施形態に係るアクション処理の一例を示すフローチャートである。
【
図10】一実施形態に係る仮想地面の作成を説明するための図である。
【
図11】一実施形態に係るアクション処理の効果の一例を示す図である。
【
図12】一実施形態に係るキャラクタの大きさに応じたアクション処理を説明するための図である。
【
図13】一実施形態に係るアクション処理の効果の一例を示す図である。
【発明を実施するための形態】
【0011】
以下、一実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く場合がある。
【0012】
以下の説明に際し、ゲーム画面においてキャラクタが動作する仮想空間に置かれた建物等のオブジェクトを「表示部品」という。また、以下では、「キャラクタ」は、プレイヤーによって操作されるプレイヤーキャラクタを想定して説明を行う。しかし、キャラクタは、これに限られず、通信ゲームの通信相手が操作するキャラクタであってもよいし、自動で動作するキャラクタ(ノンプレイヤキャラクタ)であってもよい。
<従来の地形検出の一例>
従来の地形検出の一例について
図1を参照して説明する。
図1は、従来の地形検出を説明するための図である。ゲーム画面に表示されているキャラクタ100の足場の地形を判定する手法の一つとして、キャラクタの真下に向かってレイキャストを行う方法がある。この方法では、レイ(光線)がヒットした場所の情報を取得し、取得した情報に基づきキャラクタの下の地面の位置及び角度を検出し、キャラクタの足元の地面の高さ、角度を判定する。
【0013】
かかる判定では、キャラクタ100の落下やキャラクタ100が隙間に挟まれてしまう等の意図しない動作が生じ、キャラクタ100の動作が望む通りの挙動とならない場合がある。たとえば、
図1(a)にて、キャラクタ100が表示部品201、202の間の隙間203付近にいる場合、レイキャストでは、レイが隙間203に入る。その結果、キャラクタ100は、
図1(b)に示すように隙間203に入り込み、
図1(c)に示すように隙間203の底部の地面の表示部品102(以下、「地面102」とも表記する。)上に着地する動作が行われる。これにより、キャラクタ100は、隙間203に挟まった状態で動けなくなる場合がある。
【0014】
レイキャストを複数回行ったとしても、
図1(d)に示すように表示部品204、205が細く、キャラクタが細い足場にいる場合、レイが表示部品204、205の間の隙間206に入り、キャラクタが隙間206に挟まってしまう。
【0015】
また、
図1(e)に示すように地面102に無視できる程度の小さな段差を生じさせる表示部品207があり、その上にキャラクタ100がいる場合、レイキャストを行った結果、表示部品207は傾斜が45°以上の不正な足場と判定され、キャラクタ100の落下処理が発生する場合がある。
【0016】
そこで、狭い隙間や低い段差等の地形は無視してキャラクタ100の動作が望む通りの挙動となることで、キャラクタ100をスムーズに動作させることが可能な情報処理装置、ゲーム処理方法及びゲーム処理プログラムを提供する。
【0017】
[情報処理装置の機能構成]
以下では、一実施形態に係る情報処理装置10の機能構成の一例について、
図2を参照しながら説明する。
図2は、一実施形態に係る情報処理装置10の機能構成の一例を示す図である。
【0018】
本実施形態に係る情報処理装置10は、プレイヤーがゲームをプレイする機器であればいずれの電子機器でもよく、スマートフォン、携帯ゲーム機、パーソナルコンピュータ、タブレット端末、家庭用ゲーム装置、業務用ゲーム装置等であってもよい。
【0019】
情報処理装置10は、記憶部11、入力部12、特定部13、決定部14、動作制御部15、グラフィック処理部16、サウンド処理部17、表示部18及び音出力部19を有する。
【0020】
記憶部11は、キャラクタテーブル111、表示部品位置テーブル112、動作ルールテーブル113を記憶する。キャラクタテーブル111は、キャラクタの情報を記憶するテーブルである。表示部品位置テーブル112は、ゲーム画面に表示する表示部品の位置を記憶するテーブルである。動作ルールテーブル113は、キャラクタの動作を行うルールを定義したテーブルである。これらのテーブルについての具体例は後述する。
【0021】
入力部12は、プレイヤーからのコントローラ(
図3参照)の操作を受け付ける。入力部12は、プレイヤーからの操作をタッチパネルにより受け付けてもよい。
【0022】
特定部13は、ゲーム画面に表示されているキャラクタの足元の仮想地面を特定する。キャラクタの足元の仮想地面は、キャラクタの足元において仮想的に作成される非表示の地面であり、キャラクタの足場(足元の状態)を判定するために用いられる。なお、ゲーム画面に表示されているキャラクタは、ゲーム画面に表示されているオブジェクトの一例である。すなわち、オブジェクトは、キャラクタに限られず、車等の乗り物、キャラクタが乗った移動物、その他のゲーム画面に表示されるすべてのものを含む。また、キャラクタの足元(足場)の仮想地面は、オブジェクトの下の仮想地面の一例である。すなわち、オブジェクトは、キャラクタの足元に限られず、キャラクタがほふく前進していたり、寝そべっていたり、逆立ちしていたりしている場合、キャラクタの腹や背中や両手が「オブジェクトの下」となり、キャラクタの腹や背中や両手において仮想的に非表示の地面が作成される。
【0023】
決定部14は、特定した仮想地面の情報に基づき、キャラクタの次のアクションを決定する。決定部14は、動作ルールテーブル113に定義されたルールに基づき、キャラクタの次のアクションを決定してもよい。動作制御部15は、決定した次のアクションに基づき、キャラクタの動作を制御する。
【0024】
グラフィック処理部16は、動作制御部15から描画命令が出力されると、表示部18に所定の画像を表示するためのビデオ信号を出力する。これにより、表示部18は、キャラクタと背景のステージとを仮想空間に表示する。グラフィック処理部16から出力されるビデオ信号に含まれる画像の一フレーム時間は、例えば30分の1秒である。よって、グラフィック処理部16は、フレーム単位(すなわち、30分の1秒単位)で1枚の画像の描画を実行する。
【0025】
サウンド処理部17は、グラフィック処理部16からサウンド出力の指示命令が出力されると、音出力部19に所定の音を出力するためのサウンド信号を出力する。これにより、ゲームの状況に応じたサウンドが出力される。
【0026】
[情報処理装置のハードウェア構成]
次に、一実施形態に係る情報処理装置10のハードウェア構成の一例について、
図3を参照しながら説明する。
図3は、一実施形態に係る情報処理装置10のハードウェア構成の一例を示す図である。
【0027】
情報処理装置10は、CPU21、ROM22、RAM23、HDD24、グラフィックカード25、外部I/F(インターフェース)26、通信I/F27、入力I/F28、ディスプレイ29及びスピーカ30を有する。各部は、バスで相互に接続されている。
【0028】
ROM22は、電源を切っても内部データを保持することができる不揮発性の半導体メモリである。ROM22には、プログラム及びデータが格納されている。RAM23は、プログラムやデータを一時保持する揮発性の半導体メモリである。
【0029】
HDD24は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムには、情報処理装置10の全体を制御する基本ソフトウェア及びアプリケーションソフトウェアがある。HDD24には、各種のデータベースが格納されてもよい。本実施形態では、HDD24にアクション処理を実行するためのプログラムや基本ゲームプログラムが格納される。また、HDD24にキャラクタテーブル111、表示部品位置テーブル112及び動作ルールテーブル113の各情報が格納される。
【0030】
CPU21は、HDD24からプログラムやデータをRAM23上に読み出し、アクション処理や基本ゲーム処理を実行することで、情報処理装置10の全体の制御や情報処理装置10に搭載された機能を実現する。
【0031】
具体的には、
図2に示す特定部13、決定部14及び動作制御部15の機能は、情報処理装置10にインストールされたアクション処理を実行するためのプログラムがCPU21に実行させる処理により実現される。
【0032】
外部I/F26は、情報処理装置10を記録媒体26a等の外部装置に接続するインターフェースである。これにより、情報処理装置10は、外部I/F26を介して記録媒体26aの読み取り及び書き込みを行うことができる。記録媒体26aの一例としては、CD(Compact Disk)、DVD(Digital Versatile Disk)が挙げられる。記録媒体26aは、SDメモリーカード(SD Memory card)又はUSBメモリ(Universal Serial Bus memory)等であってもよい。
【0033】
例えば、情報処理装置10には、アクション処理を実行するためのプログラム及び基本ゲームプログラムが格納された記録媒体26aを装着することが可能である。これらのプログラムは、外部I/F26により読み出されて、RAM23に読み込まれる。
【0034】
CPU21は、RAM23にロードされた上記の各種のプログラムを処理し、グラフィックカード25にゲームの進行に応じた画像の出力を指示する。グラフィックカード25は、指示に従い画面に表示するゲームの場面に応じた画像処理を行い、ディスプレイ29にキャラクタの画像及びステージの画像を描画させる。これにより、グラフィック処理部16及び表示部18の機能が実行される。なお、グラフィックカード25は、フレーム単位で1枚の画像の描画を実行し、一秒間に30回~60回のフレームの画像が描画される。
【0035】
また、CPU21は、RAM23に読み込まれた上記の各種のプログラムを処理し、ゲームの進行に応じてスピーカ30から所定の音を出力させる。これにより、サウンド処理部17及び音出力部19の機能が実行される。
【0036】
ディスプレイ29はタッチパネル式としても良い。これにより、コントローラ1を用いずに入力操作を行うことができる。この場合、タッチパネルにより検出されたタッチ位置の入力情報は、RAM23に格納され、CPU21はRAM23に格納された入力情報をもとに各種の演算処理を実行する。
【0037】
通信I/F27は、情報処理装置10をネットワークに接続するインターフェースである。また、通信I/F27は、アンテナを有する通信ユニットを介して、他のゲーム機器と無線により通信を行う機能を有していてもよい。
【0038】
入力I/F28は、コントローラ1に接続するインターフェースである。コントローラ1は、操作ボタン2及び方向キー3を有する。プレイヤーは、操作ボタン2を操作することでキャラクタに所定の動作を行わせることができる。また、プレイヤーは、方向キー3を操作することでキャラクタを所定の方向に移動させることができる。入力I/F28は、プレイヤーがコントローラ1を用いて行った入力操作に基づく入力情報をRAM23に格納させる。これにより、入力部12の機能が実行される。
【0039】
CPU21は、RAM23に格納された入力情報に基づきキャラクタの動作等の各種の演算処理を実行する。また、入力I/F28は、CPU21からの指示に従いRAM23に記憶されているゲームの進行状況を示すデータをメモリーカード28aに保存させ、メモリーカード28aに保存されている中断時のゲームのデータを読み出してRAM23に転送する処理を行う。
【0040】
[アクション処理の概要]
次に、
図4及び
図5を参照して、一実施形態に係るアクション処理の概要について説明する。
図4及び
図5は、一実施形態に係るアクション処理の概要を説明するための図である。本実施形態に係るアクション処理では、レイキャストではなく、キャラクタに重ねてキャラクタとともに移動する非表示の判定オブジェクトを使用し、判定オブジェクトの押出情報に基づき仮想地面が特定される。そして、仮想地面を用いてキャラクタの足場の状態が判定される。これにより、キャラクタは狭い隙間に落下することなく、小さな段差であれば段差でなく坂道とみなして乗り越えることができる。ただし、これらのキャラクタの動作は一例であり、キャラクタをゲーム上の地形に応じてスムーズに動作させることができる。
【0041】
図4及び
図5に示すように、キャラクタ100には判定オブジェクト101が重ねて設けられる。プレイヤーには、キャラクタ100は見えるが、判定オブジェクト101は見えない。ここでは、説明の便宜上、判定オブジェクト101を表示する。判定オブジェクト101は、キャラクタ100の大きさに応じてサイズが異なってもよい。判定オブジェクト101は、キャラクタ100の大きさに応じて形状が異なってもよい。
【0042】
一実施形態に係るアクション処理では、キャラクタ100の大きさに応じたサイズの判定オブジェクト101が予めキャラクタテーブル111に設定されている。キャラクタテーブル111の一例を
図6に示す。例えば、キャラクタIDが「Aa」のキャラクタ100には、判定オブジェクトIDが「Ba」の判定オブジェクト101が重ねられる。キャラクタIDが「Ab」のキャラクタ100には、判定オブジェクトIDが「Bb」の判定オブジェクト101が重ねられる。「Aa」のキャラクタ100が「Ab」のキャラクタ100の1.5倍の大きさであれば、「Ba」の判定オブジェクト101は「Bb」の判定オブジェクト101の1.5倍の大きさに設定されてもよい。
【0043】
ゲーム画面には、建物、地面、山等のキャラクタ以外のオブジェクト(以下、「表示部品」という。)が表示される。
図4及び
図5では、表示部品102、103、104が図示されている。
【0044】
一実施形態に係るアクション処理に用いる表示部品の表示位置は、表示部品位置テーブル112に記憶される。一実施形態に係る表示部品位置テーブル112の一例を
図7に示す。例えば、表示部品IDが「Ca」の表示部品103に対応する位置情報の左上の座標(x
a1、y
a1)及び右下の座標(x
a2、y
a2)から表示部品103の位置及び大きさが定まる。
【0045】
図4は、表示部品102、103とキャラクタ100が表示されている場面を示す。判定オブジェクト101は、ゲーム中のプレイヤーには見えないように非表示にして、キャラクタ100の移動に応じてキャラクタ100に重ねて移動される。なお、キャラクタ100、判定オブジェクト101、表示部品102、103の大きさ及び形状は一例であり、これに限られない。
【0046】
情報処理装置10は、毎フレーム、すなわち、一フレーム毎に以下の手順(1)~(4)を実行することで、キャラクタ100のアクションを更新する。
(1)足場の判定
(2)アクションの決定
(3)移動
(4)判定オブジェクトの押出
図4(a)~(d)を参照して、キャラクタが表示部品103の側壁に衝突する場合のアクションの更新について説明する。まず、手順(1)において、特定部13は、キャラクタ100がいる位置の足場を判定する。
図4(a)の例では、特定部13は、キャラクタ100の足場を判定した結果、キャラクタ100の足元に所定幅の地面102があるため、足場があると判定する。特定部13は、キャラクタ100の足元に所定幅の面がある場合、後述する仮想地面を作成せずに「足場がある」と判定できる。
【0047】
次に、手順(2)において、決定部14は、判定結果に応じてキャラクタ100の次のアクションを決定する。アクションを決定するための動作ルールは、動作ルールテーブル113に定義されている。
【0048】
動作ルールテーブル113の一例を
図8に示す。
図8の動作ルールテーブル113の例では、条件が「足場がある」の場合であって足場の傾斜がない又は足場の傾斜が45°未満の場合、キャラクタのアクションは「動作継続」に設定される。条件が「足場がある」の場合であって足場の傾斜が45°以上の場合、キャラクタのアクションは「動作停止」又は「落下」に設定される。条件が「足場がない」の場合、キャラクタのアクションは「落下」に設定される。
【0049】
よって、
図4(b)の例では、決定部14は、動作ルールテーブル113を参照して、条件が「足場がある」の場合の「足場の傾斜なし」の条件に従い、次のアクションとして、キャラクタの動作継続を決定する。つまり、決定部14は、キャラクタ100の走りを継続させるようにアクションを決定する。
【0050】
次に、手順(3)において、動作制御部15は、決定した次のアクションに基づき、キャラクタの動作を制御する。
図4(c)の例では、動作制御部15は、キャラクタ100の走りを継続し、キャラクタ100を移動させる。移動の結果、キャラクタ100は表示部品103に衝突し、キャラクタ100に重ねられた判定オブジェクト101とともに表示部品103内に押し込まれる。
【0051】
次に、手順(4)において、動作制御部15は、判定オブジェクト101の表示部品103からの押出を制御する。この結果、判定オブジェクト101が表示部品103から押し出される。このとき、判定オブジェクト101は、押し込まれた方向と逆の方向に押し出される。これにより、
図4(d)に示すように、キャラクタ100が表示部品103の壁に衝突する動作が表示される。
【0052】
次に、
図5(a)~(f)を参照して、キャラクタが表示部品104の段差から落下する場合のアクションの更新について説明する。まず、手順(1)において、特定部13は、キャラクタ100がいる位置の足場を判定する。
図5(a)の例では、特定部13は、キャラクタ100の足場を判定した結果、キャラクタ100の足元に所定幅の表示部品104の上面があるため、地面があると判定する。
【0053】
次に、手順(2)において、決定部14は、判定結果に応じてキャラクタ100の次のアクションを決定する。
図5(b)の例では、決定部14は、動作ルールテーブル113を参照して、条件が「足場がある」の場合の「足場の傾斜なし」の条件に従い、次のアクションとして、キャラクタの動作の継続を決定する。つまり、決定部14は、キャラクタ100の走りを継続させるようにアクションを決定する。
【0054】
次に、手順(3)において、動作制御部15は、決定した次のアクションに基づき、キャラクタの動作を制御する。
図5(c)の例では、動作制御部15は、キャラクタ100の走りを継続し、キャラクタ100を移動させる。移動の結果、キャラクタ100は表示部品104の先に飛び出し、空中に浮いた状態となる。
【0055】
次に、手順(4)において、動作制御部15は、判定オブジェクト101の押出を行う。ここでは、判定オブジェクト101は、キャラクタ100に重なる位置にて空中に浮き、表示部品104内に押し込まれていない。よって、動作制御部15は、判定オブジェクト101を押し出す動作を行えず、
図5(d)に示すように、キャラクタ100は空中に浮いた状態のままとなる。
【0056】
次に、次のフレームの手順(1)において、特定部13は、キャラクタ100がいる位置の足場を判定する。
図5(e)の例では、特定部13は、仮想地面を作成できず、キャラクタ100の足場を判定した結果、地面がないと判定する。
【0057】
次に、手順(2)において、決定部14は、判定結果に応じてキャラクタ100の次のアクションを決定する。決定部14は、動作ルールテーブル113を参照して、条件が「足場がない」の場合のルールに従い、次のアクションとして、キャラクタの落下を決定する。この結果、動作制御部15は、決定した次のアクションに基づき、ゲーム画面に表示するキャラクタの動作を制御する。その結果、
図5(f)の例では、動作制御部15は、決定した次のアクションに従い、キャラクタ100を表示部品104から落下する動作を実行する。
【0058】
[アクション処理の詳細]
次に、
図9及び
図10を参照して、一実施形態に係る仮想地面の作成を含むアクション処理の詳細について説明する。
図9は、一実施形態に係るアクション処理の詳細を説明するための図である。
【0059】
仮想地面の作成を含むアクション処理では、上記手順(1)~(4)のうち、手順(1)において仮想地面の作成を行った後に足場の判定を行う。仮想地面の作成は、レイキャストを使用せずに判定オブジェクトの押出情報に基づき行う。また、上記手順(3)と手順(4)との間にキャラクタ100の着地補正を行う。
【0060】
図9の本処理が開始されると、入力部12が、キャラクタ100に対するプレイヤーの操作を受け付け、特定部13は、キャラクタ100の仮想地面を作成する(ステップS1)。
図10(a)の例では、地面102と平行に仮想地面が作成されてもよい。特定部13は、キャラクタ100の足元に所定幅の面がある場合、仮想地面を作成せずに「足場がある」と判定してもよい。
【0061】
図9に戻り、次に、特定部13は、足場の判定を行う(ステップS2)。特定部13が「足場あり」と判定した場合、決定部14は、キャラクタ100の次のアクションを、動作ルールテーブル113に定義したルールに基づき決定する(ステップS3)。決定部14は、水平方向に足場がある場合、動作ルールテーブル113に記憶された「動作継続」を次のアクションに決定する。
図10(b)の例では、走りを継続するアクションに決定される。
【0062】
図9に戻り、次に、動作制御部15は、決定したアクションに従いキャラクタを動作させる(ステップS4)。これにより、
図10(c)に示すように、キャラクタ100が走りを継続する。その結果、
図10(c)の例では、キャラクタ100が、キャラクタ100の前方に配置された表示部品105まで移動し、キャラクタ100と判定オブジェクト101とが、表示部品105内に押し込まれる。
【0063】
図9に戻り、次に、動作制御部15は、決定したアクションに従い動作後のキャラクタの着地を補正する(ステップS5)。着地補正とは、キャラクタ100と判定オブジェクト101とを地面に押し込ませることをいう。例えば、動作制御部15は、
図10(d)に示すように、キャラクタ100が接触する地面102が水平であれば、地面102に対して垂直な方向に判定オブジェクト101とキャラクタ100とを押し込ませる。キャラクタ100が接触する地面102が斜めであれば、その角度に垂直な方向に判定オブジェクト101とキャラクタ100とを押し込ませる。なお、押し込ませる対象は、判定オブジェクト101だけでもよい。
【0064】
図9に戻り、次に、動作制御部15は、表示部品105及び地面102に押し込まれた判定オブジェクト101を押し出す(ステップS6)。10(e)の例では、地面102と衝突した表示部品105からの押出により、判定オブジェクト101とキャラクタ100とが左上の45°の方向に斜めに押し出される。判定オブジェクト101の押出情報は、記憶部11に記憶される。
【0065】
図9に戻り、次に、特定部13は、次のフレームの更新タイミングかを判定する(ステップS7)。特定部13は、次のフレームの更新タイミングであると判定すると、ステップS1に戻り、キャラクタ100の仮想地面を作成する(ステップS1)。
【0066】
特定部13は、前回の判定オブジェクト101の押出情報に基づき、判定オブジェクト101の押出方向に略垂直な方向に仮想地面を作成する。この結果、
図10(f)に示すように、判定オブジェクト101の押出方向に応じて判定オブジェクト101の押出方向に略垂直な方向に仮想地面150が作成される。
【0067】
図9に戻り、次に、特定部13は、足場の判定を行う(ステップS2)。特定部13は、仮想地面150が作成されている場合、足場があると判定する。足場があると判定された場合、前述したステップS3~S7の処理が繰り返される。その結果、次のアクションは、動作継続に決定され、
図10(g)~
図10(j)に示すキャラクタ100の動作が実行される。
【0068】
一方、特定部13は、ステップS2において足場がないと判定すると、キャラクタ100の次のアクションを、動作ルールテーブル113に記憶された動作ルールに基づき「落下」に決定する(ステップS8)。
【0069】
次に、動作制御部15は、決定したアクションに従いキャラクタを動作させる(ステップS9)。これに応じてキャラクタ100が落下する。次に、動作制御部15は、キャラクタ100が落下した後の着地補正を行い(ステップS5)、判定オブジェクトの押出を行う(ステップS6)。次フレームの更新タイミングが来るたびに(ステップS7)、ステップS1に戻ってステップS1以降の処理が繰り返され、キャラクタの動作が更新される。
【0070】
以上に説明したように、一実施形態に係るアクション処理によれば、キャラクタ100に重ねて判定オブジェクト101を設け、判定オブジェクト101の押出情報に基づき、キャラクタ100の足場である仮想地面150を作成し、キャラクタの足場を判定する。
【0071】
これにより、
図11(a)に示すように、表示部品201、202の間に隙間203が生じていても、隙間203が所定以下の狭い隙間であればキャラクタ100の下に作成された足場(仮想地面150)により、キャラクタ100が隙間203に落下して身動きが取れない動作は発生しない。
【0072】
また、
図11(b)に示すように、小さな段差を形成する表示部品207が地面102に置かれている場合、キャラクタ100の下に作成される仮想地面150と地面102との角度は45°未満になる。このため、決定部14は、動作ルールテーブル113に基づき次のアクションを「動作継続」に決定する。
【0073】
これにより、表示部品207の小さな段差であれば、仮想地面150に基づき、キャラクタ100は、表示部品207を段差でなく坂道とみなして乗り越える等の動作を行う。これにより、キャラクタ100が小さな段差から落下するなどの不自然な動作を回避し、キャラクタ100をゲーム上の地形に応じてスムーズに動作させることができる。
【0074】
更に、特定部13は、キャラクタ100の大きさ及び/又は形状に応じて判定オブジェクト101のサイズを設定することで、キャラクタ100の大きさ及び/又は形状に応じた仮想地面150を作成できる。
【0075】
キャラクタテーブル111に一例を示した通り、キャラクタ100毎に設定される判定オブジェクト101は、キャラクタ100の大きさ及び/又は形状に応じてサイズを変えることができる。特定部13は、判定オブジェクト101の表示部品からの押出方向に応じて仮想地面150を作成する。このため、作成される仮想地面150の傾斜角度はキャラクタ100の大きさ及び/又は形状に応じて変わり、キャラクタ100の乗り越えられる段差の高さがキャラクタ100の大きさ及び/又は形状に応じて自動的に変わる。
【0076】
例えば、
図12(a)~(c)に示すキャラクタ100Aは、
図12(d)~(f)に示すキャラクタ100Bよりも小さい。これに応じて、キャラクタ100Aに重ねる判定オブジェクト101Aは、キャラクタ100Bに重ねる判定オブジェクト101Bよりも小さく設定することができる。
【0077】
これにより、
図12(a)及び(d)に示すキャラクタ100A、100Bの移動、
図12(b)及び(e)に示すキャラクタ100A、100Bの着地補正の後の、
図12(c)及び(f)に示す判定オブジェクト101A、101Bの押出方向が変わる。この結果、作成された仮想地面150A,150Bの角度は、判定オブジェクト101Aよりも大きい判定オブジェクト101B側の仮想地面150Bと地面102との角度θ
2が、仮想地面150Aと地面102との角度θ
1よりも小さくなる。
【0078】
このように、判定オブジェクト101の大きさをキャラクタ100に応じて変えることで、判定オブジェクト101の押出方向が変わり、これにより、作成する仮想地面150の傾斜を変えることができる。これにより、キャラクタ100Aでは登ることが困難な高さの表示部品106であっても、キャラクタ100Aよりも大きなキャラクタ100Bでは表示部品106を越える又は登る動作を、次のアクションに決定することが可能となる。
【0079】
これにより、キャラクタ100Bは、表示部品106を乗り越えられるが、キャラクタ100Aは、表示部品106を乗り越えられないというように、キャラクタ100の大きさに応じて乗り越えられる段差の高さを自動的に変えることができる。これにより、キャラクタ100の大きさに応じてキャラクタ100の動作を自動で変え、キャラクタ100をゲーム上の地形とキャラクタ100の大きさ及び/又は形状に応じてスムーズに動作させることができる。
【0080】
[変形例]
以上に説明したキャラクタ100の次のアクションは、一例であり、これに限られない。例えば、
図13(a)に示した仮想地面150と地面102との角度θ
3は45°以上である。この場合、決定部14は、動作ルールテーブル113に基づき、次のアクションを「動作停止」又は「落下」に決定する。
【0081】
しかしながら、これに限らず、決定部14は、仮想地面150と地面102との角度θ3が45°以上である場合、キャラクタ100を表示部品107の壁面に沿って走らせる壁走りのアクションに決定してもよい。
【0082】
例えば、動作ルールテーブル113に、仮想地面の角度θ3が45°以上の場合、壁走りのアクションを予め設定しておくことにより、決定部14は、仮想地面の角度θ3が45°以上の場合のキャラクタ100の次のアクションを壁走りに決定することができる。また、キャラクタ100の次のアクションは壁走りに限られず、表示部品107を登ったり、乗り越えたり、転がったりするアクションであってもよい。
【符号の説明】
【0083】
10:情報処理装置
11:記憶部
12:入力部
13:特定部
14:決定部
15:動作制御部
16:グラフィック処理部
17:サウンド処理部
18:表示部
19:音出力部
21:CPU
22:ROM
23:RAM
24:HDD
25:グラフィックカード
26:外部I/F
26a:記録媒体
27:通信I/F
28:入力I/F
28a:メモリーカード
29:ディスプレイ
30:スピーカ
111:キャラクタテーブル
112:表示部品位置テーブル
113:動作ルールテーブル
150:仮想地面