(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024155906
(43)【公開日】2024-10-31
(54)【発明の名称】ゲームプログラム、情報処理システム、情報処理装置、および情報処理方法
(51)【国際特許分類】
A63F 13/56 20140101AFI20241024BHJP
A63F 13/42 20140101ALI20241024BHJP
A63F 13/577 20140101ALI20241024BHJP
A63F 13/69 20140101ALI20241024BHJP
A63F 13/58 20140101ALI20241024BHJP
【FI】
A63F13/56
A63F13/42
A63F13/577
A63F13/69 520
A63F13/58
【審査請求】未請求
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2024084573
(22)【出願日】2024-05-24
(62)【分割の表示】P 2023070335の分割
【原出願日】2023-04-21
(71)【出願人】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【弁理士】
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【弁理士】
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】深田 直希
(57)【要約】
【課題】プレイヤキャラクタのアクションによってオブジェクトを適切に操作させることが可能なゲームプログラムを提供する。
【解決手段】本実施形態のゲームでは、仮想空間に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御させ、操作入力に基づいて、指定された動的オブジェクトを移動させる第1の操作と、他の動的オブジェクトに結合させて組立品オブジェクトを形成させる第2の操作とを含むオブジェクト操作アクションをプレイヤキャラクタに行わせ、オブジェクト操作アクションによって指定された動的オブジェクトが含まれる組立品オブジェクトが、プレイヤキャラクタが乗っている動的オブジェクトを含む場合に、オブジェクト操作アクションによる動的オブジェクトの移動をさせない。
【選択図】
図15
【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータに、
前記仮想空間内に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御させ、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御させ、
操作入力に基づいて、指定された前記動的オブジェクトを移動させる第1の操作と、他の前記動的オブジェクトに結合させて前記組立品オブジェクトを形成させる第2の操作を少なくとも含むオブジェクト操作アクションをプレイヤキャラクタに行わせ、
前記プレイヤキャラクタの下方向に対する接触判定を行わせ、前記オブジェクト操作アクションで指定された前記動的オブジェクトを含む前記組立品オブジェクトが、前記プレイヤキャラクタの下方向に接触している前記動的オブジェクトを含む場合に、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行わせる、ゲームプログラム。
【請求項2】
前記コンピュータにさらに、
前記オブジェクト操作アクションで指定された前記動的オブジェクトまたは当該動的オブジェクトを含む前記組立品オブジェクトの上に、前記プレイヤキャラクタの下方向に接触している前記動的オブジェクトが乗っている場合にさらに、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行わせる、請求項1に記載のゲームプログラム。
【請求項3】
前記動的オブジェクトは、稼働状態と非稼働状態を有し、前記稼働状態において推進力を発生させる推進オブジェクトを含み、
前記コンピュータに、
前記組立品オブジェクトに前記稼働状態の前記推進オブジェクトが含まれる場合、前記推進力に基づいて前記組立品オブジェクトを移動制御させる、請求項1または2に記載のゲームプログラム。
【請求項4】
情報処理装置のコンピュータに、
前記仮想空間内に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御させ、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御させ、
操作入力に基づいて、指定された前記動的オブジェクトを移動させる第1の操作を少なくとも含むオブジェクト操作アクションをプレイヤキャラクタに行わせ、
前記プレイヤキャラクタが乗っているオブジェクトに対する接触判定を行わせ、前記オブジェクト操作アクションで指定された前記動的オブジェクトの上に、直接的に前記プレイヤキャラクタが乗っている場合および間接的に前記プレイヤキャラクタが乗っている場合に、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行わせる、ゲームプログラム。
【請求項5】
プロセッサを含む情報処理システムであって、前記プロセッサは、
前記仮想空間内に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御し、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御し、
操作入力に基づいて、指定された前記動的オブジェクトを移動させる第1の操作と、他の前記動的オブジェクトに結合させて前記組立品オブジェクトを形成させる第2の操作を少なくとも含むオブジェクト操作アクションをプレイヤキャラクタに行わせ、
前記プレイヤキャラクタの下方向に対する接触判定を行い、前記オブジェクト操作アクションで指定された前記動的オブジェクトを含む前記組立品オブジェクトが、前記プレイヤキャラクタの下方向に接触している前記動的オブジェクトを含む場合に、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行う、情報処理システム。
【請求項6】
前記プロセッサはさらに、
前記オブジェクト操作アクションで指定された前記動的オブジェクトまたは当該動的オブジェクトを含む前記組立品オブジェクトの上に、前記プレイヤキャラクタの下方向に接触している前記動的オブジェクトが乗っている場合にさらに、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行う、請求項5に記載の情報処理システム。
【請求項7】
前記動的オブジェクトは、稼働状態と非稼働状態を有し、前記稼働状態において推進力を発生させる推進オブジェクトを含み、
前記プロセッサは、
前記組立品オブジェクトに前記稼働状態の前記推進オブジェクトが含まれる場合、前記推進力に基づいて前記組立品オブジェクトを移動制御する、請求項5または6に記載の情報処理システム。
【請求項8】
プロセッサを含む情報処理システムであって、前記プロセッサは、
前記仮想空間内に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御し、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御し、
操作入力に基づいて、指定された前記動的オブジェクトを移動させる第1の操作を少なくとも含むオブジェクト操作アクションをプレイヤキャラクタに行わせ、
前記プレイヤキャラクタが乗っているオブジェクトに対する接触判定を行い、前記オブジェクト操作アクションで指定された前記動的オブジェクトの上に、直接的に前記プレイヤキャラクタが乗っている場合および間接的に前記プレイヤキャラクタが乗っている場合に、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行う、情報処理システム。
【請求項9】
プロセッサを含む情報処理装置であって、前記プロセッサは、
前記仮想空間内に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御し、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御し、
操作入力に基づいて、指定された前記動的オブジェクトを移動させる第1の操作と、他の前記動的オブジェクトに結合させて前記組立品オブジェクトを形成させる第2の操作を少なくとも含むオブジェクト操作アクションをプレイヤキャラクタに行わせ、
前記プレイヤキャラクタの下方向に対する接触判定を行い、前記オブジェクト操作アクションで指定された前記動的オブジェクトを含む前記組立品オブジェクトが、前記プレイヤキャラクタの下方向に接触している前記動的オブジェクトを含む場合に、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行う、情報処理装置。
【請求項10】
前記プロセッサはさらに、
前記オブジェクト操作アクションで指定された前記動的オブジェクトまたは当該動的オブジェクトを含む前記組立品オブジェクトの上に、前記プレイヤキャラクタの下方向に接触している前記動的オブジェクトが乗っている場合にさらに、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行う、請求項9に記載の情報処理装置。
【請求項11】
前記動的オブジェクトは、稼働状態と非稼働状態を有し、前記稼働状態において推進力を発生させる推進オブジェクトを含み、
前記プロセッサは、
前記組立品オブジェクトに前記稼働状態の前記推進オブジェクトが含まれる場合、前記推進力に基づいて前記組立品オブジェクトを移動制御する、請求項9または10に記載の情報処理装置。
【請求項12】
プロセッサを含む情報処理装置であって、前記プロセッサは、
前記仮想空間内に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御し、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御し、
操作入力に基づいて、指定された前記動的オブジェクトを移動させる第1の操作を少なくとも含むオブジェクト操作アクションをプレイヤキャラクタに行わせ、
前記プレイヤキャラクタが乗っているオブジェクトに対する接触判定を行い、前記オブジェクト操作アクションで指定された前記動的オブジェクトの上に、直接的に前記プレイヤキャラクタが乗っている場合および間接的に前記プレイヤキャラクタが乗っている場合に、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行う、情報処理装置。
【請求項13】
情報処理システムにおいて行われる情報処理方法であって、
前記仮想空間内に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御すること、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御すること、
操作入力に基づいて、指定された前記動的オブジェクトを移動させる第1の操作と、他の前記動的オブジェクトに結合させて前記組立品オブジェクトを形成させる第2の操作を少なくとも含むオブジェクト操作アクションをプレイヤキャラクタに行わせること、および、
前記プレイヤキャラクタの下方向に対する接触判定を行い、前記オブジェクト操作アクションで指定された前記動的オブジェクトを含む前記組立品オブジェクトが、前記プレイヤキャラクタの下方向に接触している前記動的オブジェクトを含む場合に、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行うこと、を備える、情報処理方法。
【請求項14】
前記オブジェクト操作アクションで指定された前記動的オブジェクトまたは当該動的オブジェクトを含む前記組立品オブジェクトの上に、前記プレイヤキャラクタの下方向に接触している前記動的オブジェクトが乗っている場合にさらに、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行うこと、をさらに備える、請求項13に記載の情報処理方法。
【請求項15】
前記動的オブジェクトは、稼働状態と非稼働状態を有し、前記稼働状態において推進力を発生させる推進オブジェクトを含み、
前記組立品オブジェクトに前記稼働状態の前記推進オブジェクトが含まれる場合、前記推進力に基づいて前記組立品オブジェクトを移動制御すること、を備える、請求項13または14に記載の情報処理方法。
【請求項16】
情報処理システムにおいて行われる情報処理方法であって、
前記仮想空間内に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御すること、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御すること、
操作入力に基づいて、指定された前記動的オブジェクトを移動させる第1の操作を少なくとも含むオブジェクト操作アクションをプレイヤキャラクタに行わせること、および、
前記プレイヤキャラクタが乗っているオブジェクトに対する接触判定を行い、前記オブジェクト操作アクションで指定された前記動的オブジェクトの上に、直接的に前記プレイヤキャラクタが乗っている場合および間接的に前記プレイヤキャラクタが乗っている場合に、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行うこと、を備える、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームプログラム、情報処理システム、情報処理装置、および情報処理方法に関する。
【背景技術】
【0002】
従来より、プレイヤキャラクタが仮想空間に配置されたオブジェクトを操作できるゲームがある(例えば、非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】“TheLegend of Zelda: Breath of the Wild”、[online]、2022年、Nintendo of America、[令和5年4月13日検索]、インターネット<URL:https://www.zelda.com/breath-of-the-wild/>
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、プレイヤキャラクタが様々なオブジェクトに乗る場合を考えると、プレイヤキャラクタのアクションによってオブジェクトを適切に操作させるためには改善の余地があった。
【0005】
それ故、本発明の目的は、プレイヤキャラクタのアクションによってオブジェクトを適切に操作させることが可能なゲームプログラム、情報処理システム、情報処理装置、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記の課題を解決すべく、本発明は、以下の構成を採用した。
【0007】
(第1の構成)
第1の構成に係るゲームプログラムは、情報処理装置のコンピュータに、前記仮想空間内に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御させ、操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御させる。また、前記ゲームプログラムは、前記コンピュータに、操作入力に基づいて、指定された前記動的オブジェクトを移動させる第1の操作と、他の前記動的オブジェクトに結合させて前記組立品オブジェクトを形成させる第2の操作を少なくとも含むオブジェクト操作アクションをプレイヤキャラクタに行わせ、前記プレイヤキャラクタの下方向に対する接触判定を行わせ、前記オブジェクト操作アクションで指定された前記動的オブジェクトを含む前記組立品オブジェクトが、前記プレイヤキャラクタの下方向に接触している前記動的オブジェクトを含む場合に、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行わせる。
【0008】
上記によれば、組立品オブジェクトに含まれる動的オブジェクトの上にプレイヤキャラクタが接触している場合、当該組立品オブジェクトをオブジェクト操作アクションによって移動させないようにすることができる。これにより、例えば、プレイヤキャラクタが乗っている組立品オブジェクトが、オブジェクト操作アクションによって移動し続けないようにすることができる。
【0009】
(第2の構成)
第2の構成では、上記第1の構成において、前記コンピュータにさらに、前記オブジェクト操作アクションで指定された前記動的オブジェクトまたは当該動的オブジェクトを含む前記組立品オブジェクトの上に、前記プレイヤキャラクタの下方向に接触している前記動的オブジェクトが乗っている場合にさらに、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行わせてもよい。
【0010】
上記によれば、プレイヤキャラクタが乗っている動的オブジェクトの下に、さらに別の動的オブジェクト又は組立品オブジェクトが接触している場合に、当該別の動的オブジェクト又は組立品オブジェクトを指定してオブジェクト操作アクションによる移動ができない。これにより、プレイヤキャラクタPCが間接的に乗っている動的オブジェクト又は組立品オブジェクトを、オブジェクト操作アクションによって移動させないようにすることができる。
【0011】
(第3の構成)
第3の構成では、上記第1又は第2の構成において、前記動的オブジェクトは、稼働状態と非稼働状態を有し、前記稼働状態において推進力を発生させる推進オブジェクトを含んでもよい。前記ゲームプログラムは、前記コンピュータに、前記組立品オブジェクトに前記稼働状態の前記推進オブジェクトが含まれる場合、前記推進力に基づいて前記組立品オブジェクトを移動制御させてもよい。
【0012】
上記によれば、推進力を発生させる推進オブジェクトに基づいて組立品オブジェクトを移動させることができ、例えば、プレイヤキャラクタを組立品オブジェクトに乗せて移動させることができる。
【0013】
(第4の構成)
第1の構成に係るゲームプログラムは、情報処理装置のコンピュータに、前記仮想空間内に配置された移動可能な動的オブジェクトを物理演算に基づいて移動制御させ、操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御させる。また、前記ゲームプログラムは、前記コンピュータに、操作入力に基づいて、指定された前記動的オブジェクトを移動させる第1の操作を少なくとも含むオブジェクト操作アクションをプレイヤキャラクタに行わせ、前記プレイヤキャラクタが乗っているオブジェクトに対する接触判定を行わせ、前記オブジェクト操作アクションで指定された前記動的オブジェクトの上に、直接的に前記プレイヤキャラクタが乗っている場合および間接的に前記プレイヤキャラクタが乗っている場合に、前記第1の操作による前記動的オブジェクトの移動をさせない制御を行わせる。
【0014】
上記によれば、プレイヤキャラクタが直接的に乗っている動的オブジェクト及び間接的に乗っている動的オブジェクトを指定して、オブジェクト操作アクションによる移動を行わせないようにすることができる。
【0015】
また、他の構成は、情報処理システムであってもよいし、情報処理装置であってもよいし、情報処理方法であってもよい。
【発明の効果】
【0016】
本発明によれば、プレイヤキャラクタが動的オブジェクトの上に接触している場合、プレイヤキャラクタを、動的オブジェクト上での位置がずれることなく、動的オブジェクトとともに移動させることができる。
【図面の簡単な説明】
【0017】
【
図2】本体装置2の内部構成の一例を示すブロック図
【
図3】本実施形態のゲームが実行された場合に表示されるゲーム画像の一例を示す図
【
図4】プレイヤキャラクタPCのオブジェクト操作アクションによって、動的オブジェクト31が操作されているときのゲーム画像の一例を示す図
【
図5】オブジェクト操作アクションに基づいて扇風機オブジェクト31aが移動されているときのゲーム画像の一例を示す図
【
図6】オブジェクト操作アクションに基づいて生成された組立品オブジェクトの一例であって、扇風機オブジェクト31aと翼オブジェクト31dとを含む飛行機オブジェクト40の一例を示す図
【
図7】オブジェクト操作アクションに基づいて生成された別の組立品オブジェクトの一例であって、四輪車オブジェクト41の一例を示す図
【
図8】
図8は、四輪車オブジェクト41の上に乗って移動しているプレイヤキャラクタPCを仮想空間の横から見た図であり、各動的オブジェクトにかかる力及び四輪車オブジェクト41の移動を示す図
【
図9】プレイヤキャラクタPCが移動中の四輪車オブジェクト41の上に乗っているときに、方向操作入力に応じて四輪車オブジェクト41上をさらに移動する様子を示す図
【
図10】プレイヤキャラクタPCが飛行機オブジェクト40の上に乗って移動する様子を示す図
【
図11】第1特殊オブジェクト31cと板オブジェクト31eとを含む組立品オブジェクト42の一例を示す図
【
図12】第1特殊オブジェクト31cが稼働状態になったときに、第1特殊オブジェクト31cと板オブジェクト31eとを含む組立品オブジェクト42が所定の挙動を行う様子を示す図
【
図13】プレイヤキャラクタPCが第1特殊オブジェクト31cを含む組立品オブジェクト42の上に乗っているときに、第1特殊オブジェクト31cが所定の挙動を行う様子を示す図
【
図14】プレイヤキャラクタPCが第2特殊オブジェクト31fの上に乗っている場合に、第2特殊オブジェクト31fが所定の挙動を行う様子の一例を示す図
【
図15】プレイヤキャラクタPCが動的オブジェクトの上に乗っているときに、別の動的オブジェクトをオブジェクト操作アクションによって移動させることができない状況の一例を示す図
【
図16】プレイヤキャラクタPCが動的オブジェクトの上に乗っているときに、別の動的オブジェクトをオブジェクト操作アクションによって移動させることができない状況の一例を示す図
【
図17】プレイヤキャラクタPCが動的オブジェクトの上に乗っているときに、別の動的オブジェクトをオブジェクト操作アクションによって移動させることができない状況の一例を示す図
【
図18】ゲーム処理の実行中に本体装置2のメモリに記憶されるデータの一例を示す図
【
図19】プロセッサ21によって実行されるゲーム処理の一例を示すフローチャート
【
図20】ステップS102のプレイヤキャラクタアクション処理の一例を示すフローチャート
【
図21】ステップS103の動的オブジェクト更新処理の一例を示すフローチャート
【
図22】ステップS104のプレイヤキャラクタ更新処理の一例を示すフローチャート
【発明を実施するための形態】
【0018】
(ゲームシステムの構成)
以下、本実施形態の一例に係るゲームシステムについて説明する。
図1は、ゲームシステムの一例を示す図である。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。左コントローラ3は、ユーザが入力を行うための操作部の一例として、複数のボタン5L(上下左右の方向キー)と、アナログスティック6Lとを含む。右コントローラ4は、ユーザが入力を行うための操作部の一例として、複数のボタン5R(Aボタン、Bボタン、Xボタン、Yボタン)と、アナログスティック6Rとを含む。また、左コントローラ3の上面にはLボタン7Lが設けられ、右コントローラ4の上面にはRボタン7Rが設けられる。
【0019】
本体装置2は、左コントローラ3および右コントローラ4をそれぞれ着脱可能に構成される。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できるし、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0020】
図2は、本体装置2の内部構成の一例を示すブロック図である。
図2に示されるように、本体装置2は、プロセッサ21を備える。プロセッサ21は、本体装置2において実行される各種の情報処理(例えばゲーム処理)を実行する情報処理部であって、例えば、CPU(Central Processing Unit)と、GPU(Graphics Processing Unit)とを含む。なお、プロセッサ21は、CPUのみから構成されてもよいし、CPU機能、GPU機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ21は、記憶部(具体的には、フラッシュメモリ26等の内部記憶媒体、あるいは、スロット29に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0021】
また、本体装置2は、ディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。ディスプレイ12は、プロセッサ21に接続される。プロセッサ21は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0022】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子23と、本体装置2が右コントローラ4と有線通信を行うための右側端子22を備える。
【0023】
また、本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ26およびDRAM(Dynamic Random Access Memory)27を備える。フラッシュメモリ26およびDRAM27は、プロセッサ21に接続される。フラッシュメモリ26は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM27は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0024】
本体装置2は、スロット29を備える。スロット29は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、ゲームアプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、ゲームプログラム等)を記憶するために用いられる。
【0025】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)28を備える。スロットI/F28は、プロセッサ21に接続される。スロットI/F28は、スロット29に接続され、スロット29に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ21の指示に応じて行う。
【0026】
プロセッサ21は、フラッシュメモリ26およびDRAM27、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0027】
また、本体装置2は、ネットワーク通信部24を備える。ネットワーク通信部24は、プロセッサ21に接続される。ネットワーク通信部24は、ネットワークを介して外部の装置と無線又は有線により通信を行う。本実施形態においては、ネットワーク通信部24は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部24は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0028】
本体装置2は、コントローラ通信部25を備える。コントローラ通信部25は、プロセッサ21に接続される。コントローラ通信部25は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部25は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0029】
プロセッサ21は、上述の左側端子23および右側端子22に接続される。プロセッサ21は、左コントローラ3と有線通信を行う場合、左側端子23を介して左コントローラ3へデータを送信するとともに、左側端子23を介して左コントローラ3から操作データを受信する。また、プロセッサ21は、右コントローラ4と有線通信を行う場合、右側端子22を介して右コントローラ4へデータを送信するとともに、右側端子22を介して右コントローラ4から操作データを受信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。
【0030】
なお、本体装置2は、
図2に示す各要素の他にも、電源を供給するためのバッテリー、ディスプレイ12とは別の表示装置(例えばテレビ)に画像及び音声を出力するための出力端子を備える。
【0031】
(ゲームの概要)
次に、本実施形態のゲームについて説明する。本実施形態のゲームでは、3次元の仮想空間(ゲーム空間)に、プレイヤの操作入力に基づいて制御されるプレイヤキャラクタPCが配置される。
【0032】
図3は、本実施形態のゲームが実行された場合に表示されるゲーム画像の一例を示す図である。
図3に示されるように、仮想空間の地面30上には、プレイヤキャラクタPCと、複数の動的オブジェクト31(例えば、31a~31f)とが配置される。動的オブジェクト31は、仮想空間内で動くことが可能なオブジェクトである。動的オブジェクト31には、後述するようにそれ自体が力を発生させて動作するオブジェクトと、それ自体は力を発生させないが他のオブジェクトからの力や重力等を受けて動作するオブジェクトとがある。なお、
図3では省略されているが、仮想空間にはプレイヤキャラクタPC以外にも、プロセッサ21によって制御されるノンプレイヤキャラクタ(例えば敵キャラクタ、プレイヤキャラクタPCの仲間のキャラクタ等)が配置される。
【0033】
複数の動的オブジェクト31の少なくとも何れか1つは、予め仮想空間に配置されてもよい。また、複数の動的オブジェクト31の少なくとも何れか1つは、プレイヤによる操作入力に応じて、仮想空間内に配置されてもよい。また、複数の動的オブジェクト31の少なくとも何れか1つは、プレイヤキャラクタPCが敵キャラクタを倒した場合に、仮想空間に配置されてもよい。
【0034】
プレイヤキャラクタPCは、コントローラ(3又は4)に対する操作入力に基づいて、仮想空間内を移動したり、仮想空間内で複数のアクションのうちの何れかを行ったりする。
【0035】
例えば、コントローラ3のアナログスティック6Lに対する方向操作入力に基づいて、プレイヤキャラクタPCは、仮想空間の地面30上を所定の速度で移動する。プレイヤキャラクタPCが地面30上を移動するときの速度は、アナログスティック6Lの傾倒角に応じて変化してもよい。また、プレイヤキャラクタPCが地面30上を移動するときの速度は、プレイヤキャラクタPCと地面30との摩擦、地面30の傾きに応じて変化してもよい。
【0036】
また、プレイヤキャラクタPCは、複数のアクションのうちの1つとして、攻撃アクションを行う。具体的には、プレイヤキャラクタPCは、所有している武器オブジェクトを装備し、プレイヤの操作入力に基づいて、装備した武器オブジェクトに応じた攻撃アクションを行う。
【0037】
また、プレイヤキャラクタPCは、複数のアクションのうちの1つとして、オブジェクト操作アクションを行う。オブジェクト操作アクションは、例えば、プレイヤキャラクタPCの前方にある動的オブジェクト31を遠隔で操作するアクションである。動的オブジェクト31は、プレイヤキャラクタPCのオブジェクト操作アクションの対象となり得るオブジェクトである。プレイヤキャラクタPCは、オブジェクト操作アクションに基づいて、動的オブジェクト31を操作する。
【0038】
具体的には、プレイヤの操作入力に基づいて、仮想空間に配置された複数の動的オブジェクトのうちの何れかがオブジェクト操作アクションの制御対象として設定される。オブジェクト操作アクションに基づいて、制御対象は仮想空間内で移動される。また、オブジェクト操作アクションに基づいて、制御対象の姿勢が制御される。また、オブジェクト操作アクションに基づいて、制御対象が、仮想空間に配置された他の動的オブジェクトに接続(結合)されて当該他の動的オブジェクトと合体される。これにより、複数の動的オブジェクトを組み合わせた組立品オブジェクトが生成される。オブジェクト操作アクションに基づく動的オブジェクト31の操作については後述する。
【0039】
なお、動的オブジェクト31は、オブジェクト操作アクションによらず、プレイヤキャラクタPCの他のアクション(例えば、オブジェクトを持ちあげるアクション)によっても仮想空間内で移動可能であってもよい。このような他のアクションは、動的オブジェクト31を移動可能であるものの、オブジェクト操作アクションのように、動的オブジェクトを他の動的オブジェクトと合体させることはできないようにしてもよい。
【0040】
また、仮想空間には、プレイヤキャラクタPCのアクションや他のオブジェクトからの力によって動かない静的オブジェクトも配置される。静的オブジェクトの一例は、例えば、仮想空間に固定された岩、山、建築物、地面等の地形オブジェクトである。静的オブジェクトは、オブジェクト操作アクションによって操作不可能なオブジェクトである。
【0041】
図3に示されるように、複数の動的オブジェクト31は、例えば、扇風機オブジェクト31aと、車輪オブジェクト31bと、第1特殊オブジェクト31cと、翼オブジェクト31dと、板オブジェクト31eと、第2特殊オブジェクト31fとを含む。
【0042】
扇風機オブジェクト31aは、扇風機を模したオブジェクトである。扇風機オブジェクト31aは、非稼働状態と稼働状態とを有し、稼働状態であるときに仮想空間に風を発生させ、当該風の力により仮想空間に配置されたオブジェクト(例えば敵キャラクタ)を飛ばしたりすることができる。また、扇風機オブジェクト31aは、風の方向と反対方向への推進力を発生させる。
【0043】
車輪オブジェクト31bは、車輪を模したオブジェクトである。車輪オブジェクト31bは、非稼働状態と稼働状態とを有し、稼働状態であるときに予め定められた方向に回転し、当該回転により推進力を発生させる。
【0044】
また、第1特殊オブジェクト31cは、非稼働状態と稼働状態とを有し、稼働状態になった場合には、第1の姿勢から第2の姿勢に変化する所定の挙動を行う。第1特殊オブジェクト31cは、非稼働状態では形状や重心位置に基づいて第1の姿勢となっているが、稼働状態になったときに第2の姿勢になろうとする力を発生させる。第1特殊オブジェクト31cの詳細については後述する。
【0045】
翼オブジェクト31dは、空を飛ぶためのオブジェクトであり、所定の速度以上で仮想空間内を移動する場合に仮想空間の上方への力を発生させる。
【0046】
板オブジェクト31eは、平面状のオブジェクトであり、例えば車両の車体として利用可能である。
【0047】
また、第2特殊オブジェクト31fは、例えばバネを模したオブジェクトである。第2特殊オブジェクト31fは、非稼働状態と稼働状態とを有し、稼働状態である場合に、縮んだ状態から伸びた状態に変化する所定の挙動を行う。第2特殊オブジェクト31fは、所定の挙動を行っている間、その上に乗っているオブジェクトを仮想空間に勢いよく飛ばすことが可能である。第2特殊オブジェクト31fの詳細については後述する。
【0048】
扇風機オブジェクト31a及び車輪オブジェクト31bは、稼働状態である場合に、それ自体が推進力を発生させる動的オブジェクトであり、当該推進力によって仮想空間を移動することが可能である。また、第1特殊オブジェクト31c及び第2特殊オブジェクト31fは、稼働状態である場合に、それ自体が発生させる力によって仮想空間で所定の挙動を行う動的オブジェクトである。一方、翼オブジェクト31d及び板オブジェクト31eは、非稼働状態と稼働状態とを有さないオブジェクトであり、それ自体が推進力を発生させたり、それ自体が発生する力によって所定の挙動を行ったりするものではない。例えば、翼オブジェクト31dは、例えば他のオブジェクトから力を加えられることによって仮想空間内で所定の速度以上で移動する場合には、揚力を発生させるが、それ自体の力によっては移動することはできない。また、板オブジェクト31eは、他のオブジェクトから力を加えられることによって仮想空間内を移動することはできるが、それ自体の力によって移動することはできない。
【0049】
なお、
図3に示す他にも、様々な動的オブジェクト31が用意される。例えば、動的オブジェクト31として、稼働状態の場合に一時的に大きな推進力を発生させるロケットオブジェクトが用意されてもよい。
【0050】
(オブジェクト操作アクションによる動的オブジェクトの操作)
上述のように、本実施形態のゲームでは、プレイヤキャラクタPCのオブジェクト操作アクションに基づいて、動的オブジェクト31を移動させることができる。また、オブジェクト操作アクションに基づいて、複数の動的オブジェクト31を結合させて組立品オブジェクトを生成することができる。
【0051】
図4は、プレイヤキャラクタPCのオブジェクト操作アクションによって、動的オブジェクト31が操作されているときのゲーム画像の一例を示す図である。
【0052】
例えば、プレイヤキャラクタPCの前方(又は仮想カメラの注視点近傍)に動的オブジェクト31があるときに、所定の操作入力が行われた場合、プレイヤキャラクタPCは当該動的オブジェクト31に対してオブジェクト操作アクションを行う。例えば、所定の選択操作に応じて、仮想空間に配置された複数の動的オブジェクト31のうち、扇風機オブジェクト31aが選択される。そして、所定の操作入力が行われた場合、
図4に示されるように、選択された扇風機オブジェクト31aが制御対象となり、当該制御対象に対してオブジェクト操作アクションが行われている状態になる。扇風機オブジェクト31aに対してオブジェクト操作アクションが行われている状態では、扇風機オブジェクト31aは、地面から浮いた状態になるとともに、通常とは異なる表示態様になる。また、オブジェクト操作アクションが行われていることを示すエフェクト画像60が表示される。
【0053】
このとき、プレイヤによる移動操作入力(例えば、左コントローラ3のアナログスティック6Lに対する方向操作入力)に応じてプレイヤキャラクタPCが移動した場合、扇風機オブジェクト31aも移動する。また、例えば、右コントローラ4のアナログスティック6Rに対する方向操作入力が行われた場合、プレイヤキャラクタPCの向きが変化するとともに、プレイヤキャラクタPCの正面に扇風機オブジェクト31aが位置するように、扇風機オブジェクト31aが仮想空間内で移動してもよい。また、例えば、ボタン5Lに対するキー操作に応じて、プレイヤキャラクタPCの移動を伴わずに扇風機オブジェクト31aを移動させたり、プレイヤキャラクタPCの向きの変化を伴わずに扇風機オブジェクト31aを回転させたりしてもよい。
【0054】
図5は、オブジェクト操作アクションに基づいて扇風機オブジェクト31aが移動されているときのゲーム画像の一例を示す図である。
図5に示されるように、例えば、オブジェクト操作アクションに基づいて扇風機オブジェクト31aを操作中に、プレイヤキャラクタPCが翼オブジェクト31dに向かって移動する場合、扇風機オブジェクト31aもプレイヤキャラクタPCに追従して同じ方向に移動する。あるいは、オブジェクト操作アクションに基づいて扇風機オブジェクト31aを操作中に、ボタン5Lに対するキー操作に応じて、扇風機オブジェクト31aが翼オブジェクト31dに向かって移動してもよい。扇風機オブジェクト31aと翼オブジェクト31dとが所定の接続条件(例えば、両者の距離が閾値未満)を満たす場合に、接続位置を示唆する接続オブジェクト32が表示される(
図5)。この接続オブジェクト32が表示されているときに、プレイヤによる接続指示(例えばAボタンの押下)が行われた場合、扇風機オブジェクト31aが翼オブジェクト31dに接続(結合)される。これにより、複数の動的オブジェクト31を含む組立品オブジェクトが生成される。ここでは、組立品オブジェクトとして、扇風機オブジェクト31aと翼オブジェクト31dとを含む飛行機オブジェクト40が生成される。
【0055】
図6は、オブジェクト操作アクションに基づいて生成された組立品オブジェクトの一例であって、扇風機オブジェクト31aと翼オブジェクト31dとを含む飛行機オブジェクト40の一例を示す図である。
【0056】
図6に示されるように、扇風機オブジェクト31aと翼オブジェクト31dとの間には、接続オブジェクト32が配置される。接続オブジェクト32は、動的オブジェクト31同士が接続されていること及びその接続位置を示すオブジェクトであり、動的オブジェクト31同士の位置関係を固定するオブジェクトである。組立品オブジェクトに含まれる複数の動的オブジェクト31は、この接続オブジェクト32によって接続される。
【0057】
複数の動的オブジェクト31を含む組立品オブジェクトは、仮想空間内で一体として動作する。例えば、飛行機オブジェクト40に含まれる扇風機オブジェクト31aが非稼働状態から稼働状態に変化した場合、扇風機オブジェクト31aは推進力を発生させる。この扇風機オブジェクト31aの推進力が、接続オブジェクト32を介して当該扇風機オブジェクト31aと接続された翼オブジェクト31dにも伝わり、扇風機オブジェクト31aと翼オブジェクト31dとを含む飛行機オブジェクト40が移動開始する。
【0058】
飛行機オブジェクト40が移動開始した後、その速度が所定値を超えた場合、飛行機オブジェクト40は、翼オブジェクト31dによる揚力によって空中に浮き、仮想空間を飛行する。プレイヤキャラクタPCは、飛行機オブジェクト40の上に乗り、仮想空間を飛行することができる。
【0059】
図7は、オブジェクト操作アクションに基づいて生成された別の組立品オブジェクトの一例であって、四輪車オブジェクト41の一例を示す図である。
【0060】
図7に示されるように、四輪車オブジェクト41は、板オブジェクト31eと、4つの車輪オブジェクト31bとを含む。例えば、オブジェクト操作アクションに基づいて、板オブジェクト31eの側面に4つの車輪オブジェクト31bが順に接続される。板オブジェクト31eと4つの車輪オブジェクト31bとは、それぞれ、接続オブジェクト32により接続される。これにより、一体として動作する組立品オブジェクトである四輪車オブジェクト41が生成される。
【0061】
各車輪オブジェクト31bは、稼働状態の場合、予め定められた方向に回転する。4つの車輪オブジェクト31bが同じ方向に回転するように、4つの車輪オブジェクト31bが板オブジェクト31eに接続されているとする。この場合、4つの車輪オブジェクト31bが稼働状態になると、4つの車輪オブジェクト31bのそれぞれが同じ方向に推進力を発生させ、四輪車オブジェクト41は仮想空間の地面上を移動開始する。プレイヤキャラクタPCは、四輪車オブジェクト41の上に乗ることで、仮想空間の地面上を歩行するよりも高速で移動することができる。
【0062】
(プレイヤキャラクタが動的オブジェクトの上に乗って移動する場合)
次に、プレイヤキャラクタPCが動的オブジェクトの上に乗って移動するときの制御について説明する。
【0063】
本実施形態のゲームでは、プレイヤキャラクタPCが動的オブジェクトの上に乗っている場合、当該動的オブジェクトは吸着状態になり得る。プレイヤキャラクタPCが乗っている動的オブジェクトが吸着状態である場合は、プレイヤキャラクタPCは、あたかも動的オブジェクトに吸着しているように当該動的オブジェクトとともに移動する。以下、吸着状態について詳細に説明する。
【0064】
図8は、四輪車オブジェクト41の上に乗って移動しているプレイヤキャラクタPCを仮想空間の横から見た図であり、各動的オブジェクトにかかる力及び四輪車オブジェクト41の移動を示す図である。
【0065】
図8に示されるように、四輪車オブジェクト41を構成する各動的オブジェクトには様々な力が加わる。なお、
図8では、図の簡略化のため、オブジェクトの移動に関わる力のみ示されている。例えば、各オブジェクト(動的オブジェクト及びプレイヤキャラクタPC)には仮想空間の下方への重力がかかるが、
図8では、これが省略されている。
【0066】
各車輪オブジェクト31bは、稼働状態のときに、所定の方向に回転する。車輪オブジェクト31bが地面30に接触している場合、この回転によって、車輪オブジェクト31bは、前方への推進力を発生する。また、車輪オブジェクト31bと板オブジェクト31eとは接続オブジェクト32によって接続されており、車輪オブジェクト31bの推進力が接続オブジェクト32を介して板オブジェクト31eに伝わることで、板オブジェクト31eに前方への力が加わる。この力により四輪車オブジェクト41は前方に移動する。
【0067】
本実施形態のゲーム処理では、所定のフレーム時間間隔で各動的オブジェクトに対して物理演算(物理法則に基づく計算)が行われることで、各動的オブジェクトの速度、角速度、位置、姿勢等が算出される。具体的には、動的オブジェクト自体の推進力、動的オブジェクト同士の接触による相互作用(受ける力、与える力)、環境から受ける力(例えば風、地面との摩擦)等に基づいて物理演算が行われ、各動的オブジェクトの最新の速度、角速度、位置、姿勢等が計算される。1フレームにおける動的オブジェクトの移動(移動量及び移動方向)は、動的オブジェクトの最新の位置と1フレーム前の位置との差分により求められる。
【0068】
プレイヤキャラクタPCに対しても、同様の物理演算が行われる。例えば、プレイヤキャラクタPCに動的オブジェクト31が横から衝突した場合、当該衝突による力がプレイヤキャラクタPCに加えられ、その力に基づく物理演算によりプレイヤキャラクタPCの速度、角速度、位置、姿勢が計算される。これにより、プレイヤキャラクタPCは、例えば横方向に移動する。
【0069】
プレイヤキャラクタPCが動的オブジェクトの上に載っている場合、プレイヤキャラクタPCが乗っている動的オブジェクトからプレイヤキャラクタPCが受ける摩擦等の力による移動に替えて、吸着処理によって位置が計算される。すなわち、プレイヤキャラクタPCに加わる全ての力のうち、プレイヤキャラクタPCが乗っている動的オブジェクトから受ける力については物理演算に用いられない。その代わりに、プレイヤキャラクタPCが乗っている動的オブジェクトの移動と同じ移動がプレイヤキャラクタPCに与えられる。具体的には、動的オブジェクトにおけるプレイヤキャラクタPCの位置(動的オブジェクトとプレイヤキャラクタPCとの接触位置)の移動が計算され、当該接触位置の移動がプレイヤキャラクタPCに与えられてもよい。
【0070】
例えば、
図8に示されるように、プレイヤキャラクタPCが板オブジェクト31eの上に乗っている場合、板オブジェクト31eが移動することによって、プレイヤキャラクタPCは、通常、板オブジェクト31eから力Feを受ける。この板オブジェクト31eからの力Feに基づいて物理演算を行うことで、プレイヤキャラクタPCの移動(移動量及び移動方向)を計算することができる。しかしながら、本実施形態では、プレイヤキャラクタPCが板オブジェクト31eの上に乗っている場合、板オブジェクト31eからの力Feに基づく物理演算ではなく、プレイヤキャラクタPCに、板オブジェクト31eの移動Taと同じ移動Ta自体が与えられる。これにより、プレイヤキャラクタPCは、板オブジェクト31e上の位置がずれることなく、四輪車オブジェクト41の移動とともに仮想空間内を移動する。
【0071】
なお、プレイヤキャラクタPCには、板オブジェクト31eからの力Feとは異なる力が加わる場合もある。この力Feとは異なる力に基づく物理演算が行われ、その結果によって、プレイヤキャラクタPCが移動する場合がある。例えば、プレイヤキャラクタPCが板オブジェクト31eの上に乗って移動しているときに、プレイヤキャラクタPCの横から別のオブジェクトが衝突した場合、プレイヤキャラクタPCはその衝突により飛ばされることがある。
【0072】
さらに、プレイヤキャラクタPCは、プレイヤの方向操作入力(例えばアナログスティック6Lに対する方向操作入力)に応じて、仮想空間内の地面上を移動する。プレイヤキャラクタPCが、移動中の動的オブジェクトの上に乗っているときでも、プレイヤキャラクタPCは、プレイヤの方向操作入力に応じて当該移動中の動的オブジェクト上で移動する。
【0073】
図9は、プレイヤキャラクタPCが移動中の四輪車オブジェクト41の上に乗っているときに、方向操作入力に応じて四輪車オブジェクト41上をさらに移動する様子を示す図である。
【0074】
図9に示されるように、プレイヤキャラクタPCが移動中の四輪車オブジェクト41の上に乗っているときに、プレイヤによって方向操作入力が行われた場合、当該方向操作入力に応じたプレイヤキャラクタPCの移動Tbに、四輪車オブジェクト41の移動Taが加えられる。これにより、プレイヤキャラクタPCの仮想空間内での移動Tc(=Ta+Tb)が算出される。このように、プレイヤキャラクタPCの移動Tbに、動的オブジェクトの移動Taを加えることで、プレイヤキャラクタPCが動的オブジェクト上に乗って移動しているときに、プレイヤキャラクタPCを更に動的オブジェクト上で移動させることができる。
【0075】
プレイヤキャラクタPCが他の動的オブジェクトの上に乗っているときも同様である。
図10は、プレイヤキャラクタPCが飛行機オブジェクト40の上に乗って移動する様子を示す図である。飛行機オブジェクト40は、
図10の紙面奥行き方向に所定の速度で飛行中である。
【0076】
プレイヤキャラクタPCは、飛行機オブジェクト40における翼オブジェクト31dの上に乗っており、翼オブジェクト31dの上でプレイヤの操作入力に応じて移動する。具体的には、プレイヤキャラクタPCが飛行機オブジェクト40の翼オブジェクト31d上に乗っている場合、翼オブジェクト31dは吸着状態になり、飛行機オブジェクト40(翼オブジェクト31d)の移動が、プレイヤキャラクタPCの移動に加えられる。飛行機オブジェクト40の移動は、扇風機オブジェクト31aの推進力、飛行機オブジェクト40にかかる重力、飛行機オブジェクト40の上に載っているプレイヤキャラクタにかかる重力、風の影響等に基づく物理演算によって算出される。
【0077】
ここで、
図10に示されるように、例えば、プレイヤキャラクタPCが翼オブジェクト31dにおける左側の位置に移動した場合、プレイヤキャラクタPCを含む飛行機オブジェクト40全体の重心位置が左側にずれる。これにより翼オブジェクト31dを含む飛行機オブジェクト40全体が左側に傾き、飛行機オブジェクト40の進行方向が変化する。この進行方向の変化は、物理演算により算出される。すなわち、翼オブジェクト31dが水平の姿勢のときには、翼オブジェクト31dによって仮想空間の上方向に揚力が働き、飛行機オブジェクト40は直進する。翼オブジェクト31dが左側に傾くと、翼オブジェクト31dの揚力が左側に傾き、翼オブジェクト31dには左方向への力が加わる。これにより、飛行機オブジェクト40は、紙面の奥行き方向かつ左方向に移動する。
【0078】
この飛行機オブジェクト40(翼オブジェクト31d)の奥行き方向かつ左方向への移動が、プレイヤキャラクタPCに与えられる。これにより、プレイヤキャラクタPCは、翼オブジェクト31dとともに仮想空間を移動する。ここで、翼オブジェクト31dの回転(ロール方向の回転)は、プレイヤキャラクタPCに与えられない。すなわち、翼オブジェクト31dが左側に傾いても、プレイヤキャラクタPCは翼オブジェクト31dと同様に左側に傾くことなく、垂直に立つ姿勢を維持する。ただし、プレイヤキャラクタPCの足の姿勢は、足元の翼オブジェクト31dの傾きに合うように調整される。翼オブジェクト31dがロール方向に回転する場合に限らず、ピッチ方向に回転する場合も同様である。なお、ロール、ピッチ、ヨー方向のうち、何れかの方向については、翼オブジェクト31dの回転がプレイヤキャラクタPCに与えられてもよい。例えば、翼オブジェクト31dがロール方向及びヨー方向に回転する場合、プレイヤキャラクタPCには、翼オブジェクト31dのロール方向の回転は与えられないが、ヨー方向の回転は与えられてもよい。
【0079】
図示は省略するが、プレイヤキャラクタPCが四輪車オブジェクト41の上に乗っているときも同様である。例えば、プレイヤキャラクタPCは、四輪車オブジェクト41が走行中にロール方向又はピッチ方向に回転する場合、プレイヤキャラクタPCには、四輪車オブジェクト41に含まれる板オブジェクト31eの移動のみ与えられ、ロール方向又はピッチ方向の回転は与えられなくてもよい。
【0080】
このように、プレイヤキャラクタPCが動的オブジェクト31の上に乗っている場合、動的オブジェクト31の移動がプレイヤキャラクタPCに与えられるが、動的オブジェクト31の回転はプレイヤキャラクタPCに与えられない。これにより、動的オブジェクト31が移動しながら回転する場合でも、プレイヤキャラクタPCを、その姿勢を保持させたまま動的オブジェクト31とともに移動させることができる。なお、この場合でも、プレイヤキャラクタPCを傾けさせる他の力が働いた場合には、プレイヤキャラクタPCはその力によって傾く。
【0081】
なお、プレイヤキャラクタPCが動的オブジェクト31の上に乗っている場合、動的オブジェクト31の回転と同じ回転が、プレイヤキャラクタPCに与えられてもよい。また、プレイヤキャラクタPCが動的オブジェクト31の上に乗っている場合、動的オブジェクト31の回転よりも小さな回転がプレイヤキャラクタPCに与えられてもよい。この場合は、動的オブジェクト31の回転によってプレイヤキャラクタPCも回転するが、その回転量が軽減される。
【0082】
以上のように、本実施形態のゲームでは、仮想空間内に様々な動的オブジェクトが配置されており、プレイヤは、プレイヤキャラクタPCを動的オブジェクトの上に乗せて仮想空間内で移動させることができる。また、プレイヤは、複数の動的オブジェクトを自由に組み合わせて、様々な組立品オブジェクトを生成し、生成した組立品オブジェクトの上にプレイヤキャラクタPCを乗せて移動させることができる。このような自由度の高いゲームにおいて、仮想空間内のそれぞれのオブジェクトについて物理演算を行うことで各オブジェクトの運動を制御することができるが、プレイヤキャラクタPCを動的オブジェクトの上に乗せて移動させることを想定した場合、物理演算に基づいて動的オブジェクト及びプレイヤキャラクタPCの移動を計算すると、所定の状況において、プレイヤキャラクタPCの動的オブジェクト上の位置がずれたり、プレイヤキャラクタPCが乗っている動的オブジェクトから離れてしまうことがある。例えば、各オブジェクトの速度や計算上の誤差等により、動的オブジェクトの移動に対してプレイヤキャラクタPCの移動が遅れたりずれたりすることがある。また、例えば、プレイヤキャラクタPCが乗っている動的オブジェクトに、非常に大きな力を発生させるオブジェクト(たとえばロケットオブジェクト)が接続される場合、乗っている動的オブジェクトに大きな加速度がかかり、プレイヤキャラクタPCが動的オブジェクト上から落とされてしまうことがある。しかしながら、プレイヤキャラクタPCが動的オブジェクトの上に乗っているときには、乗っている動的オブジェクトの移動をプレイヤキャラクタPCに与えることで、プレイヤキャラクタPCが、立っている位置からずれることなく、当該動的オブジェクトから離れないように移動させることができる。また、乗っている動的オブジェクトの移動をプレイヤキャラクタPCの移動に加えることにより、プレイヤキャラクタPCが動的オブジェクト上に乗っているときでも、例えば、プレイヤの移動操作入力に応じてプレイヤキャラクタPCを動的オブジェクト上でさらに移動させたり、他の力によってプレイヤキャラクタPCをさらに移動させたりすることができる。
【0083】
(第1特殊オブジェクトの制御)
次に、第1特殊オブジェクト31cについて説明する。第1特殊オブジェクト31cは、非稼働状態と稼働状態とを有し、稼働状態になったことに応じて、所定の挙動を行う。具体的には、第1特殊オブジェクト31cは、非稼働状態では第1の姿勢となるが、稼働状態になったことに応じて、第1の姿勢から第2の姿勢になろうとする力を発生する。第1特殊オブジェクト31cは、通常は非稼働状態に設定されており、第1の姿勢で仮想空間内に配置されている。第1特殊オブジェクト31cも、オブジェクト操作アクションに基づいて、他の動的オブジェクト31と組み合わされることができる。
【0084】
図11は、第1特殊オブジェクト31cと板オブジェクト31eとを含む組立品オブジェクト42の一例を示す図である。
図12は、第1特殊オブジェクト31cが稼働状態になったときに、第1特殊オブジェクト31cと板オブジェクト31eとを含む組立品オブジェクト42が所定の挙動を行う様子を示す図である。
【0085】
図11に示されるように、第1特殊オブジェクト31cと板オブジェクト31eとを含む組立品オブジェクト42が仮想空間の地面30上に配置されている。第1特殊オブジェクト31cの先端部と板オブジェクト31eの側面とが、接続オブジェクト32により接続されている。第1特殊オブジェクト31cは、非稼働状態であり、第1特殊オブジェクト31cの先端部と後端部とを結ぶ線が地面30と略平行となる第1の姿勢となっている。また、板オブジェクト31eも同様に、地面30と略平行な第1の姿勢となっている。
【0086】
この状態で第1特殊オブジェクト31cが稼働状態になった場合、第1特殊オブジェクト31cは、後端部を中心として回転する(
図12)。具体的には、第1特殊オブジェクト31cは、後端部から先端部に向かう線が仮想空間の上を向く第2の姿勢(起き上がった姿勢)となるように回転する。組立品オブジェクト42は一体として動作するため、板オブジェクト31eも、第1特殊オブジェクト31と同様に、第1の姿勢から第2の姿勢になるように回転する。そして、第1特殊オブジェクト31cが稼働状態になってから所定時間が経過すると、第1特殊オブジェクト31cは第2の姿勢になり、組立品オブジェクト42は、地面30に対して垂直に立った姿勢となる。
【0087】
このような組立品オブジェクト42の挙動も、物理演算により算出される。第1特殊オブジェクト31c及び板オブジェクト31eは、それぞれ質量を有しており、それぞれに重力がかかる。第1特殊オブジェクト31cは、稼働状態においては、第2の姿勢になろうとする力を発生し、板オブジェクト31eは、第1特殊オブジェクト31cからこの力を受ける。第1特殊オブジェクト31c及び板オブジェクト31eのそれぞれに加わる力に基づいて、物理演算が行われる。
【0088】
プレイヤキャラクタPCは、組立品オブジェクト42の上に乗ることができる。プレイヤキャラクタPCが組立品オブジェクト42(の板オブジェクト31e)の上に乗っているときでも、第1特殊オブジェクト31cが稼働状態になった場合は、第1特殊オブジェクト31cを含む組立品オブジェクト42は、
図12に示した動作を行う。
【0089】
図13は、プレイヤキャラクタPCが第1特殊オブジェクト31cを含む組立品オブジェクト42の上に乗っているときに、第1特殊オブジェクト31cが所定の挙動を行う様子を示す図である。
【0090】
図13に示されるように、プレイヤキャラクタPCが組立品オブジェクト42の板オブジェクト31eの上に乗っている場合、板オブジェクト31eはプレイヤキャラクタPCを吸着させる吸着状態に設定される。この場合、上記と同様に、板オブジェクト31eの移動が、プレイヤキャラクタPCに与えられる(
図13の(1)~(2))。この間、プレイヤキャラクタPCが、例えばプレイヤによる方向操作入力、別の動的オブジェクトの衝突など別の要因でさらに移動する場合には、板オブジェクト31eの移動に、この別の要因によるプレイヤキャラクタPCの移動が加えられる。
【0091】
具体的には、板オブジェクト31eは、第1特殊オブジェクト31cの後端部を中心として回転し、板オブジェクト31e上のプレイヤキャラクタPCの位置(板オブジェクト31eとプレイヤキャラクタPCとの接触位置)は、この回転によって移動する。物理演算に基づいて、板オブジェクト31eの回転が計算され、この回転に基づいて板オブジェクト31eとプレイヤキャラクタPCとの接触位置の移動が計算され、当該接触位置の移動がプレイヤキャラクタPCに与えられる。これにより、板オブジェクト31eが移動する間(板オブジェクト31eが第1特殊オブジェクト31cの後端部を中心として回転する間)、プレイヤキャラクタPCを板オブジェクト31eに吸着させて移動させることができ、更に例えば方向操作入力が行われた場合には、板オブジェクト31e上でプレイヤキャラクタPCを移動させることができる。
【0092】
ここで、第1特殊オブジェクト31cが稼働状態になってから所定時間が経過すると、板オブジェクト31eが吸着解除状態になる(
図13の(3))。吸着解除状態では、プレイヤキャラクタPCに板オブジェクト31eの移動と同じ移動を与える処理は行われず、プレイヤキャラクタPCが板オブジェクト31eから受ける力Feに基づく物理演算が行われる。この物理演算の結果、プレイヤキャラクタPCは、例えば、板オブジェクト31eから離れて飛び出す(
図13の(4))。
【0093】
このように、第1特殊オブジェクト31cは、非稼働状態と稼働状態とを有し、非稼働状態から稼働状態になったことに応じて第1の姿勢から第2の姿勢に変化する所定の挙動を行う。第1特殊オブジェクト31cは、所定の挙動を行っている間の所定期間において、当該第1特殊オブジェクト31cおよび接続された動的オブジェクトを吸着解除状態にさせる機能を有する。第1特殊オブジェクト31cが吸着解除状態になると、当該第1特殊オブジェクト31cと複数の動的オブジェクトとを含む組立品オブジェクトにおいて、当該組立品オブジェクト内の全ての動的オブジェクトが吸着解除状態になる。第1特殊オブジェクト31cが所定の挙動を開始してからの第1期間においては、第1特殊オブジェクト31cに接続された動的オブジェクトは吸着状態を維持し、第1期間が経過した後の第2期間においては吸着解除状態になる。なお、第2期間であっても、例えば、第1特殊オブジェクト31cの角速度が閾値を超えていない場合は、吸着状態が維持されてもよい。
【0094】
吸着状態においては、プレイヤキャラクタPCが乗っている動的オブジェクトの移動をプレイヤキャラクタPCの移動に加える処理が行われる。吸着解除状態においては、プレイヤキャラクタPCと動的オブジェクトとの接触に伴う物理演算に基づいてプレイヤキャラクタPCの移動が算出される。すなわち、吸着解除状態では、動的オブジェクトの移動をプレイヤキャラクタPCの移動に加える処理は行われず、プレイヤキャラクタPCと、プレイヤキャラクタPCが乗っている動的オブジェクトとの接触に伴う物理演算に基づいてプレイヤキャラクタPCの移動(乗っている動的オブジェクトの接触に基づく移動。ここでは「第2移動」という)が算出される。この物理演算により算出される第2移動に、さらに別の要因によるプレイヤキャラクタPCの移動(例えば方向操作入力に応じた移動)が加えられる。
【0095】
これにより、プレイヤキャラクタPCが動的オブジェクトに乗っている場合に、プレイヤキャラクタPCを動的オブジェクトに吸着させて移動させ、途中で吸着を解除して、プレイヤキャラクタPCに、動的オブジェクトから離れて移動するなどの別の挙動を行わせることができる。
【0096】
次に、第2特殊オブジェクト31fについて説明する。
図14は、プレイヤキャラクタPCが第2特殊オブジェクト31fの上に乗っている場合に、第2特殊オブジェクト31fが所定の挙動を行う様子の一例を示す図である。
【0097】
第2特殊オブジェクト31fは、非稼働状態と稼働状態とを有し、稼働状態になったことに応じて、縮んだ状態から伸びた状態に変化する所定の挙動を行う。第2特殊オブジェクト31fはさらに、非稼働状態になったことに応じて、伸びた状態から縮んだ状態に変化する所定の挙動を行う。あるいは、第2特殊オブジェクト31fは、稼働状態になったことに応じて、縮んだ状態と伸びた状態を繰り返し遷移する挙動を行ってもよい。
【0098】
図14に示されるように、プレイヤキャラクタPCが第2特殊オブジェクト31fの上に乗っている場合、第2特殊オブジェクト31fは、縮んだ状態から所定の長さになるまでの間、吸着状態になる。吸着状態では、プレイヤキャラクタPCに、第2特殊オブジェクト31fの上面の移動と同じ移動が与えられる。プレイヤキャラクタPCが第2特殊オブジェクト31fの上に乗っている場合でも、プレイヤキャラクタPCは方向操作入力に応じて第2特殊オブジェクト31f上を移動可能である。この場合、第2特殊オブジェクト31fの上面の移動がプレイヤキャラクタPCの移動に加えられる。バネが所定の長さになると、第2特殊オブジェクト31fは吸着解除状態になる。この場合、第2特殊オブジェクト31fの上面の移動をプレイヤキャラクタPCの移動に加える処理は行われない。その代わりに、プレイヤキャラクタPCと、プレイヤキャラクタPCが乗っている第2特殊オブジェクト31fの上面との接触に伴う物理演算に基づいてプレイヤキャラクタPCの移動が算出される。これにより、プレイヤキャラクタPCは、例えば第2特殊オブジェクト31fの上面から離れて上方に飛び出す。
【0099】
このように、第2特殊オブジェクト31fは、非稼働状態と稼働状態とを有し、稼働状態になったことに応じて、縮んだ状態から伸びた状態に変化する所定の挙動を行う。プレイヤキャラクタPCが第2特殊オブジェクト31fの上に乗っている場合に、第2特殊オブジェクト31fが所定の挙動を行っている間の第1期間においては吸着状態になり、第2期間においては吸着解除状態になる。これにより、第1期間においてはプレイヤキャラクタPCを第2特殊オブジェクト31f上に吸着させて移動させ、第2期間においては、プレイヤキャラクタPCを第2特殊オブジェクト31fから離れさせることができる。
【0100】
(動的オブジェクトに対するオブジェクト操作アクションの制限)
次に、プレイヤキャラクタPCが動的オブジェクトの上に乗っているときのオブジェクト操作アクションの制限について説明する。上述のように、プレイヤキャラクタPCのオブジェクト操作アクションに基づいて、仮想空間に配置された動的オブジェクト31を移動させることができる。プレイヤキャラクタPCが動的オブジェクトの上に乗っている場合、オブジェクト操作アクションに基づく動的オブジェクトの移動が制限される場合がある。
【0101】
図15は、プレイヤキャラクタPCが動的オブジェクトの上に乗っているときに、別の動的オブジェクトをオブジェクト操作アクションによって移動させることができない状況の一例を示す図である。
【0102】
図15に示すケース1では、動的オブジェクト310と動的オブジェクト311とが接続オブジェクト32で接続されており、これらで組立品オブジェクト43が形成されている。プレイヤキャラクタPCは、動的オブジェクト310の上に乗っている。この場合において、プレイヤキャラクタPCが動的オブジェクト311を制御対象としてオブジェクト操作アクションを行おうとしても、オブジェクト操作アクションによって動的オブジェクト311を移動させることはできない。
【0103】
また、
図15に示すケース2では、動的オブジェクト310と動的オブジェクト311とが接続され、この動的オブジェクト311にさらに動的オブジェクト312が接続され、これら3つの動的オブジェクト310~312によって組立品オブジェクト44が形成されている。プレイヤキャラクタPCは、動的オブジェクト310の上に乗っている。この場合において、プレイヤキャラクタPCが動的オブジェクト312を制御対象としてオブジェクト操作アクションを行おうとしても、オブジェクト操作アクションによって動的オブジェクト312を移動させることはできない。
【0104】
すなわち、オブジェクト操作アクションの制御対象として指定された動的オブジェクトを含む組立品オブジェクトが、プレイヤキャラクタPCが乗っている動的オブジェクトを含む場合、オブジェクト操作アクションによる当該制御対象の移動は行われない。言い換えると、プレイヤキャラクタPCが組立品オブジェクトに乗っている場合、当該組立品オブジェクトに含まれる動的オブジェクトはオブジェクト操作アクションによって移動不可能に制御される。
【0105】
プレイヤキャラクタPCが直接乗っている動的オブジェクトについても、同様に、オブジェクト操作アクションによって移動されない。例えば、ケース1やケース2において、プレイヤは、オブジェクト操作アクションの制御対象として動的オブジェクト310を設定し、当該動的オブジェクト310をオブジェクト操作アクションに基づいて移動させることはできない。
【0106】
オブジェクト操作アクションは、プレイヤキャラクタPCの位置を基準として制御対象を移動させる。仮に、プレイヤキャラクタPCが乗っている組立品オブジェクトに含まれる動的オブジェクトが、オブジェクト操作アクションによって移動される場合、その移動によって組立品オブジェクト全体が移動してしまう。組立品オブジェクト全体が移動すると、プレイヤキャラクタPCも移動し、この移動によりさらに制御対象が移動し、さらに組立品オブジェクト全体が移動する。このように、プレイヤキャラクタPCが乗っている組立品オブジェクトに含まれる動的オブジェクトが、オブジェクト操作アクションによって移動される場合、組立品オブジェクトが移動し続ける可能性があり、オブジェクト操作アクションによって制御対象を操作し難くなる可能性がある。
【0107】
このため、本実施形態では、制御対象である動的オブジェクトを含む組立品オブジェクトが、プレイヤキャラクタPCが乗っている動的オブジェクトを含む場合、オブジェクト操作アクションによって制御対象を移動させないように制御する。
【0108】
なお、プレイヤキャラクタPCが乗っている動的オブジェクトを含む組立品オブジェクトについては、オブジェクト操作アクションの制御対象にはならないように構成されてもよい。
【0109】
図16は、プレイヤキャラクタPCが動的オブジェクトの上に乗っているときに、別の動的オブジェクトをオブジェクト操作アクションによって移動させることができない状況の一例を示す図である。
【0110】
図16に示すケース3では、動的オブジェクト310と動的オブジェクト311とは接続されておらず、動的オブジェクト311の上に動的オブジェクト310が乗っている。プレイヤキャラクタPCは、動的オブジェクト310の上に乗っている。動的オブジェクト311は、プレイヤキャラクタPCに間接的に乗られている状態ということができる。この場合、プレイヤは、オブジェクト操作アクションによって、動的オブジェクト311を移動させることはできない。このように、プレイヤキャラクタPCに間接的に乗られている動的オブジェクト311については、オブジェクト操作アクションによって移動不可能にされる。
【0111】
また、
図16に示すケース4では、動的オブジェクト311と動的オブジェクト312とが接続され、これらで組立品オブジェクト45が形成されている。組立品オブジェクト45の一部である動的オブジェクト311の上には、動的オブジェクト310が乗っている。プレイヤキャラクタPCは、動的オブジェクト310の上に乗っている。この場合、組立品オブジェクト45は、プレイヤキャラクタPCに間接的に乗られているということができる。この場合、プレイヤは、オブジェクト操作アクションによって、動的オブジェクト312を移動させることはできない。このように、プレイヤキャラクタPCに間接的に乗られている組立品オブジェクト45に含まれる動的オブジェクト312については、オブジェクト操作アクションによって移動不可能にされる。
【0112】
図17は、プレイヤキャラクタPCが動的オブジェクトの上に乗っているときに、別の動的オブジェクトをオブジェクト操作アクションによって移動させることができない状況の一例を示す図である。
【0113】
図17に示すケース5では、動的オブジェクト310と動的オブジェクト311とは接続されており、これらで組立品オブジェクト46が形成されている。また、動的オブジェクト312は他の動的オブジェクトと接続されておらず、動的オブジェクト312の上に動的オブジェクト311が乗っている。また、プレイヤキャラクタPCは、動的オブジェクト310の上に乗っている。この場合、プレイヤは、オブジェクト操作アクションによって動的オブジェクト312を移動させることはできない。この動的オブジェクト312は、プレイヤキャラクタPCに間接的に乗られている状態ということができる。
【0114】
また、
図17に示すケース6では、動的オブジェクト310と動的オブジェクト311とは接続されており、これらで組立品オブジェクト46が形成されている。また、プレイヤキャラクタPCは、動的オブジェクト310の上に乗っている。また、動的オブジェクト312は、オブジェクト操作アクションの制御対象である。オブジェクト操作アクションに基づいて動的オブジェクト312が上方に移動されたことによって、動的オブジェクト312が動的オブジェクト311の下に接触した場合、その瞬間では、動的オブジェクト312の上に動的オブジェクト311が重なった状態となる。この動的オブジェクト312の上に動的オブジェクト311が重なった状態も、動的オブジェクト312は、プレイヤキャラクタPCに間接的に乗られている状態と捉えることができる。この場合、オブジェクト操作アクションによって動的オブジェクト312をさらに移動させることはできないように制御される。すなわち、プレイヤは、オブジェクト操作アクションによって動的オブジェクト312をさらに上に移動させたり、左右に移動させたりすることはできない。なお、この場合、プレイヤは、オブジェクト操作アクションによって動的オブジェクト312を下方に移動させ、動的オブジェクト312が動的オブジェクト311から離れるように移動させることができてもよい。また、オブジェクト操作アクションに基づいて動的オブジェクト312の移動中に、動的オブジェクト312が動的オブジェクト311の下に接触した場合、オブジェクト操作アクションによる重力に抗う力がカットされ、制御対象である動的オブジェクト312が僅かに落下してもよい。この僅かな落下によって、制御対象である動的オブジェクト312は動的オブジェクト311から離れ、再びオブジェクト操作アクションに基づいて移動可能な状態となってもよい。
【0115】
また、
図17に示すケース7では、動的オブジェクト310~312は何れも接続されていない。動的オブジェクト312の上に動的オブジェクト311が乗っており、さらに動的オブジェクト311の上に動的オブジェクト310が乗っている。また、プレイヤキャラクタPCは、動的オブジェクト310の上に乗っている。この場合、プレイヤは、オブジェクト操作アクションによって動的オブジェクト312を移動させることはできない。この動的オブジェクト312は、プレイヤキャラクタPCに間接的に乗られている状態ということができる。
【0116】
以上のように、プレイヤキャラクタPCに間接的に乗られている動的オブジェクトについては、オブジェクト操作アクションによって移動不可能に制御される。仮に、そのような間接的に乗られている動的オブジェクトがオブジェクト操作アクションによって移動される場合、その移動によって、プレイヤキャラクタPCが乗っている動的オブジェクト310が移動してしまう可能性がある。そうするとプレイヤキャラクタPCの位置が変化し、プレイヤキャラクタPCの位置の変化によって制御対象の位置も変化し、制御対象を操作し難くなる可能性がある。
【0117】
したがって、本実施形態では、プレイヤキャラクタPCに間接的に乗られている動的オブジェクト、又は、間接的に乗られている組立品オブジェクトに含まれる動的オブジェクトについては、オブジェクト操作アクションによって移動不可能に制御される。
【0118】
ここで、「プレイヤキャラクタPCに間接的に乗られている動的オブジェクト、又は、間接的に乗られている組立品オブジェクトに含まれる動的オブジェクト」とは、間接的に、プレイヤキャラクタPCを支えているオブジェクトであり、プレイヤキャラクタPCの重量がかかっているオブジェクトであってもよい。本実施形態では、物理演算によってプレイヤキャラクタPC及び全ての動的オブジェクトの相互作用(押す力、押される力)が計算される。動的オブジェクトがプレイヤキャラクタPCを支えているかは、この物理演算の結果によって判定することができる。
【0119】
以上のように、本実施形態のゲームでは、プレイヤの操作入力に基づいて、プレイヤキャラクタPCに、仮想空間に配置された動的オブジェクトを操作するオブジェクト操作アクションを行わせる。具体的には、オブジェクト操作アクションに基づいて、仮想空間に配置された複数の動的オブジェクトのうち指定された動的オブジェクトを移動させる第1の操作と、指定された動的オブジェクトを他の動的オブジェクトに接続(結合)させて組立品オブジェクトを生成する第2の操作とが行われる。オブジェクト操作アクションで指定された動的オブジェクトを含む組立品オブジェクトが、プレイヤキャラクタPCの下方向に接触している動的オブジェクト(プレイヤキャラクタが乗っている動的オブジェクト)を含む場合(ケース1又はケース2)、オブジェクト操作アクションによる動的オブジェクトの移動が不可能となる。これにより、プレイヤキャラクタPCが乗っている組立品オブジェクトを、オブジェクト操作アクションによって移動させないようにすることができ、例えば、乗っている組立品オブジェクトが移動し続けないようにすることができる。
【0120】
また、本実施形態では、オブジェクト操作アクションで指定された動的オブジェクトの上に、プレイヤキャラクタPCの下方向に接触している動的オブジェクトが乗っている場合(ケース3)、オブジェクト操作アクションによる動的オブジェクトの移動が不可能となる。また、オブジェクト操作アクションで指定された動的オブジェクトを含む組立品オブジェクトの上に、プレイヤキャラクタPCの下方向に接触している動的オブジェクトが乗っている場合(ケース4)、オブジェクト操作アクションによる動的オブジェクトの移動が不可能となる。これにより、プレイヤキャラクタPCが間接的に乗っている動的オブジェクト又は組立品オブジェクトを、オブジェクト操作アクションによって移動させないようにすることができ、制御対象を操作し易くすることができる。
【0121】
また、本実施形態では、オブジェクト操作アクションで指定された動的オブジェクトの上に、直接的にプレイヤキャラクタが乗っている場合、オブジェクト操作アクションによる当該動的オブジェクトの移動が不可能となる。また、オブジェクト操作アクションで指定された動的オブジェクトの上に、間接的にプレイヤキャラクタが乗っている場合(ケース5~ケース7)、オブジェクト操作アクションによる当該動的オブジェクトの移動が不可能となる。これにより、プレイヤキャラクタPCが直接的にも間接的にも乗っている動的オブジェクトを、オブジェクト操作アクションによって移動させないようにすることができ、制御対象を操作し易くすることができる。
【0122】
なお、本実施形態のゲームでは、プレイヤが生成した組立品オブジェクトの設計情報を保存し、プレイヤの指示に応じて、保存しておいた設計情報に基づいて組立品オブジェクトを再構築させることができる。設計情報には、組立品オブジェクトを構成する動的オブジェクトの種類および数、動的オブジェクト同士の接続位置、動的オブジェクトそれぞれの姿勢等に関する情報が含まれる。プレイヤは、必要に応じて、保存した設計情報を選択して、設計情報に基づいて組立品オブジェクトを再構築させ、再構築させた組立品オブジェクトを仮想空間に出現させることができる。組立品オブジェクトの再構築には、仮想空間に配置された動的オブジェクトと、プレイヤキャラクタPCがプレイヤキャラクタデータ120として保持している動的オブジェクトとを用いることができる。例えば、設計情報として保存した組立品オブジェクトが、第1の動的オブジェクトと第2の動的オブジェクトとを含む場合において、プレイヤキャラクタPCが保持している第1の動的オブジェクトと、仮想空間に配置された第2の動的オブジェクトとを用いて、組立品オブジェクトを再構築することができる。具体的には、組立品オブジェクトが再構築される際に、仮想空間に配置された第2の動的オブジェクトが移動して組立品オブジェクトの一部として組み入れられる。プレイヤキャラクタPCに直接又は間接的に乗られている動的オブジェクトは、組立品オブジェクトの再構築には用いられないようにしてもよい。すなわち、プレイヤキャラクタPCに直接又は間接的に乗られている動的オブジェクトは、組立品オブジェクトが再構築される際に、移動して組立品オブジェクトの一部として組み入れられない。例えば、仮想空間に第2の動的オブジェクトが配置されている場合であっても、当該第2の動的オブジェクトにプレイヤキャラクタPCが直接又は間接的に乗っている場合は、当該第2の動的オブジェクトは組立品オブジェクトの再構築には用いられず、当該第2の動的オブジェクトは移動されない。
【0123】
(ゲーム処理に用いられるデータ)
次に、上述したゲームに関するゲーム処理の詳細について説明する。まず、ゲーム処理に用いられるデータについて説明する。
図18は、ゲーム処理の実行中に本体装置2のメモリに記憶されるデータの一例を示す図である。
【0124】
図18に示されるように、本体装置2のメモリ(DRAM27、フラッシュメモリ26、又は外部記憶媒体)には、ゲームプログラム100と、操作データ110と、プレイヤキャラクタデータ120と、動的オブジェクトデータ130と、静的オブジェクトデータ140と、組立品オブジェクトデータ200とが記憶される。なお、これらのデータの他にも、メモリにはゲーム処理に用いられる様々なデータ(例えば敵キャラクタに関するデータ等)が記憶される。
【0125】
ゲームプログラム100は、後述するゲーム処理を実行するためのプログラムである。ゲームプログラムは、スロット29に装着される外部記憶媒体又はフラッシュメモリ26に予め記憶されており、ゲームの実行時にDRAM27に読み込まれる。なお、ゲームプログラムは、ネットワーク(例えばインターネット)を介して他の装置から取得されてもよい。
【0126】
操作データ110は、コントローラ3及び4から本体装置2に送信されたデータである。コントローラ3及び4は、所定の時間間隔(例えば、1/200秒間隔)で繰り返し操作データ110を本体装置2に送信する。
【0127】
プレイヤキャラクタデータ120は、プレイヤキャラクタPCに関するデータであり、位置・姿勢データ121と、速度・角速度データ122と、状態データ123とを含む。
【0128】
位置・姿勢データ121は、プレイヤキャラクタPCの仮想空間における位置及び姿勢に関するデータである。具体的には、位置・姿勢データ121は、プレイヤキャラクタPCの最新のフレームにおける位置及び姿勢を示すデータと、少なくとも直前のフレームにおける位置及び姿勢を示すデータとを含む。
【0129】
速度・角速度データ122は、プレイヤキャラクタPCの仮想空間における速度及び角速度に関するデータである。具体的には、速度・角速度データ122は、プレイヤキャラクタPCの最新のフレームにおける速度及び角速度を示すデータと、少なくとも直前のフレームにおける速度及び角速度を示すデータとを含む。
【0130】
状態データ123は、プレイヤキャラクタPCが動的オブジェクトの上に乗っているか否かを示すデータを含む。また、状態データ123は、プレイヤキャラクタPCがオブジェクト操作アクション中(制御対象を操作中)か否かを示すデータを含む。
【0131】
動的オブジェクトデータ130は、仮想空間に配置された動的オブジェクト31に関するデータである。仮想空間に配置された動的オブジェクト31毎に、動的オブジェクトデータ130が記憶される。動的オブジェクトデータ130は、位置・姿勢データ131と、速度・角速度データ132と、状態データ133と、種類データ134とを含む。
【0132】
位置・姿勢データ131は、動的オブジェクト31の仮想空間における位置及び姿勢に関するデータである。具体的には、位置・姿勢データ131は、動的オブジェクト31の最新のフレームにおける位置及び姿勢を示すデータと、少なくとも直前のフレームにおける位置及び姿勢を示すデータとを含む。
【0133】
速度・角速度データ132は、動的オブジェクト31の仮想空間における速度及び角速度に関するデータである。具体的には、速度・角速度データ132は、動的オブジェクト31の最新のフレームにおける速度及び角速度を示すデータと、少なくとも直前のフレームにおける速度及び角速度を示すデータとを含む。
【0134】
状態データ133は、動的オブジェクト31の状態に関するデータである。状態データ133は、動的オブジェクト31がキャラクタ(プレイヤキャラクタPC又はノンプレイヤキャラクタ)によって直接乗られているか否か、間接的に乗られているか否かを示すデータを含む。また、状態データ133は、動的オブジェクト31が吸着解除状態であるか否かを示すデータを含む。また、非稼働状態と稼働状態とを有する動的オブジェクトの状態データ133には、稼働状態か非稼働状態かを示すデータが含まれる。
【0135】
種類データ134は、動的オブジェクト31の種類を示すデータである。例えば、種類データ134は、動的オブジェクト31の形状や外観に関するデータ、動的オブジェクト31の質量に関するデータ、動的オブジェクト31が稼働状態である場合の当該動的オブジェクトの挙動に関するデータ(例えば、推進力を発生させる動的オブジェクトの場合は、推進力の大きさ、推進力の方向等に関するデータ)を含む。
【0136】
静的オブジェクトデータ140は、仮想空間に配置された静的オブジェクト(仮想空間に固定された岩、山、建築物、地面等を表すオブジェクト)に関するデータである。静的オブジェクト毎に、静的オブジェクトデータ140が記憶される。静的オブジェクトデータ140は、静的オブジェクトの位置や姿勢に関するデータ、静的オブジェクトの種類に関するデータ、静的オブジェクトの形状や外観に関するデータを含む。
【0137】
組立品オブジェクトデータ200は、仮想空間に配置された組立品オブジェクトに関するデータである。組立品オブジェクト毎に、組立品オブジェクトデータ200が記憶される。組立品オブジェクトデータ200は、複数の動的オブジェクトデータ(1130、2130等)を含む。組立品オブジェクトデータ200に含まれる各動的オブジェクトデータは、動的オブジェクトデータ130と同様のデータを有する。
【0138】
なお、図示は省略するが、組立品オブジェクトデータ200は、組立品オブジェクトを構成する各動的オブジェクトの、当該組立品オブジェクト内での位置及び姿勢を示すデータ、組立品オブジェクト内の各動的オブジェクトの接続位置を示すデータを含む。また、組立品オブジェクトデータ200は、組立品オブジェクト全体の質量や重心位置、速度、角速度等に関するデータを含んでもよい。
【0139】
(ゲーム処理の詳細)
次に、本体装置2において行われるゲーム処理の詳細について説明する。
図19は、プロセッサ21によって実行されるゲーム処理の一例を示すフローチャートである。
【0140】
図19に示されるように、ゲーム処理が開始されると、プロセッサ21は、初期処理を実行する(ステップS100)。具体的には、プロセッサ21は、仮想空間を設定し、仮想空間に静的オブジェクト(地形オブジェクト)、プレイヤキャラクタPC、複数の動的オブジェクト31、敵キャラクタEC等を配置する。
【0141】
次に、プロセッサ21は、コントローラから送信されてメモリに格納された操作データを取得する(ステップS101)。操作データは、左右のコントローラのボタンやアナログスティック等に対する操作に応じたデータを含む。以降、プロセッサ21は、ステップS101~ステップS107の処理を所定のフレーム時間間隔(例えば、1/60秒間隔)で繰り返し実行する。
【0142】
続いて、プロセッサ21は、操作データに基づいて、プレイヤキャラクタアクション処理を行う(ステップS102)。ここでは、プロセッサ21は、プレイヤの操作入力に応じて、プレイヤキャラクタPCのアクションを制御する。具体的には、ステップS102では、プレイヤキャラクタPCにオブジェクト操作アクションを開始させる処理、オブジェクト操作アクション中の処理、その他のアクションに関連する処理が行われる。以下、ステップS102のプレイヤキャラクタアクション処理の詳細について説明する。
【0143】
(プレイヤキャラクタアクション処理)
図20は、ステップS102のプレイヤキャラクタアクション処理の一例を示すフローチャートである。
【0144】
図20に示されるように、プロセッサ21は、プレイヤキャラクタPCがオブジェクト操作アクション中の状態か否かを判定する(ステップS200)。
【0145】
オブジェクト操作アクション中でない場合(ステップS200:NO)、プロセッサ21は、オブジェクト操作アクションを開始するか否かを判定する(ステップS201)。具体的には、プロセッサ21は、プレイヤの選択操作(例えば、Lボタンの押下)に応じて、複数の動的オブジェクト31(単体の動的オブジェクト、又は、組立品オブジェクトに含まれる動的オブジェクト)のうちの何れか指定する。動的オブジェクト31が指定されている場合において、プロセッサ21は、所定の操作入力(例えば、Aボタンの押下)が行われたか否かを判定する。所定の操作入力が行われた場合、プロセッサ21は、ステップS201でYESと判定する。なお、動的オブジェクト31が指定されている場合において、所定の操作入力が行われた場合、プロセッサ21は、所定の開始期間(数~数十フレームの間)、ステップS201でYESと判定する。
【0146】
オブジェクト操作アクションを開始すると判定した場合(ステップS201:YES)、プロセッサ21は、オブジェクト操作アクション開始処理を行う(ステップS202)。ここでは、プレイヤによる所定の操作入力に応じて、プレイヤキャラクタPCにオブジェクト操作アクションを開始させる処理が行われる。具体的には、プロセッサ21は、オブジェクト操作アクションの開始アニメーションを再生し、ステップS202の処理を実行する毎に、1フレーム分の当該アニメーションの更新を行う。上記所定の開始期間後、指定された動的オブジェクト31を制御対象として、当該制御対象に対するオブジェクト操作アクション中の状態(操作中の状態)になる(
図4参照)。
【0147】
一方、オブジェクト操作アクション中である場合(ステップS200:YES)、プロセッサ21は、オブジェクト操作アクションの制御対象が、プレイヤキャラクタPCに直接乗られている状態、又は、間接的に乗られている状態か否かを判定する(ステップS203)。ここでは、動的オブジェクトデータ130の状態データ133を参照して、制御対象である動的オブジェクト31が、「乗られている状態」又は「間接的に乗られている状態」に設定されているか否かが判定される。「乗られている状態」又は「間接的に乗られている状態」の設定については後述する。
【0148】
制御対象が直接又は間接的に乗られている状態であると判定した場合(ステップS203:YES)、プロセッサ21は、オブジェクト操作アクションによる力をカットする(ステップS204)設定を行う。この処理が行われた場合、次のステップS205において、オブジェクト操作アクションによる力は発生されない。
【0149】
ステップS204を実行した場合、又は、ステップS203でNOと判定した場合、プロセッサ21は、操作データに基づいて、「オブジェクト操作アクションによる力」を発生させる処理、及び接続処理を行う(ステップS205)。ここでは、操作入力に応じて、制御対象に「オブジェクト操作アクションによる力」を加える処理と、操作入力に応じて、制御対象を他の動的オブジェクトに接続させる処理とが行われる。「オブジェクト操作アクションによる力」には、制御対象を宙に浮かせる力、制御対象を移動させる力、制御対象を回転させる力がある。具体的には、プロセッサ21は、操作入力の有無にかかわらず、制御対象に対して重力に抗う力を加える。この重力に抗う力により、制御対象は宙に浮いた状態を維持する。また、プロセッサ21は、操作入力に応じて、制御対象に移動させる力を加える。例えばアナログスティック6Lに対する方向操作入力が行われた場合、プロセッサ21は、入力方向に応じた方向に制御対象を移動させる力を加える。また、例えばボタン5Lに対する操作が行われた場合、プロセッサ21は、制御対象を移動させる力や制御対象を回転させる力を加える。ここで加えられた「オブジェクト操作アクションによる力」に基づいて物理演算(後述するステップS309の処理)が行われることで、制御対象は、操作入力に応じて、仮想空間内で移動したり回転したりする。なお、ステップS204の処理が行われた場合、ステップS205において「オブジェクト操作アクションによる力」は発生されない。
【0150】
また、ステップS205において、プロセッサ21は、接続処理を行う。具体的には、プロセッサ21は、制御対象と他の動的オブジェクトとが所定の接続条件(例えば両者の距離が閾値未満)を満たしている場合において、プレイヤによる接続指示が行われた場合、制御対象を当該他の動的オブジェクトに接続させる。接続指示に応じて、制御対象と他の動的オブジェクトとが互いに引き合うように近づき、所定時間(例えば、0.5秒)後に、制御対象と他の動的オブジェクトとが接続される。これにより、組立品オブジェクトが生成される。制御対象が他の動的オブジェクトに接続された場合、当該制御対象に対するオブジェクト操作アクションが終了する。なお、「オブジェクト操作アクションによる力」が発生されない場合でも、接続条件が満たされている場合において、接続指示が行われた場合、制御対象は、接続条件を満たす他の動的オブジェクトに接続される。
【0151】
ステップS205の処理を行った場合、又は、ステップS202の処理を行った場合、プロセッサ21は、他アクション処理を行う(ステップS206)。ここでは、プロセッサ21は、操作入力に応じて、プレイヤキャラクタPCに、オブジェクト操作アクション以外の様々なアクションを行わせる。例えば、プロセッサ21は、攻撃アクションのための操作入力が行われたか否かを判定し、当該操作入力が行われた場合、プレイヤキャラクタPCに攻撃アクションを開始させる。また、プロセッサ21は、ジャンプのための操作入力が行われたか否かを判定し、当該操作入力が行われた場合、プレイヤキャラクタPCに仮想空間内でジャンプアクションを開始させる。プレイヤキャラクタPCが動的オブジェクトに乗っているときでも、ジャンプのための操作入力が行われた場合、プレイヤキャラクタPCはジャンプアクションを行い、一時的に動的オブジェクトから離れる。
【0152】
また、プロセッサ21は、ステップS206において、操作入力に応じて、プレイヤキャラクタデータ120として保存しておいた設計情報に基づいて、過去にプレイヤが生成した組立品オブジェクトを仮想空間に出現させる再構築処理を行う。プロセッサ21は、再構築処理において、設計情報に基づいて、仮想空間に配置された動的オブジェクト、又は、プレイヤキャラクタデータ120として保存された動的オブジェクトを用いて組立品オブジェクトを再構築し、仮想空間に出現させる。具体的には、仮想空間に配置された動的オブジェクトが移動して組立品オブジェクトの一部又は全部として組み入れられる。なお、プレイヤキャラクタPCに直接又は間接的に乗られている動的オブジェクトは、組立品オブジェクトの再構築には用いられず、移動されない。
【0153】
次に、プロセッサ21は、他オブジェクトに対する力の計算を行う(ステップS207)。ここでは、プロセッサ21は、プレイヤキャラクタPCが仮想空間内の動的オブジェクトに加える力(上記「オブジェクト操作アクションによる力」以外の力)を計算する。例えば、プレイヤキャラクタPCが動的オブジェクトの上に乗っている場合は、当該動的オブジェクトにはプレイヤキャラクタPCの重力が加わる。また、例えば、プレイヤキャラクタPCが動的オブジェクトを押したり、攻撃を加えたりした場合は、当該動的オブジェクトに力が加えられる。ステップS207では、プロセッサ21は、プレイヤキャラクタPCが動的オブジェクトに加える力を計算する。以上で、プロセッサ21は、
図20の処理を終了する。
【0154】
図19に戻り、プロセッサ21は、次に、動的オブジェクト更新処理を行う(ステップS103)。ここでは、各動的オブジェクトに働く力に基づいて物理演算を行うことで、各動的オブジェクトの速度や角速度を計算したり、位置や姿勢を更新したりする処理が行われる。以下、ステップS103の動的オブジェクト更新処理の詳細について説明する。
【0155】
(動的オブジェクト更新処理)
図21は、ステップS103の動的オブジェクト更新処理の一例を示すフローチャートである。
【0156】
図21に示されるように、プロセッサ21は、全ての動的オブジェクトについて、自身が発生する力を計算する(ステップS300)。上述のように、動的オブジェクト31には、それ自体が力を発生させるオブジェクトと、それ自体は力を発生させないオブジェクトとがある。例えば、扇風機オブジェクト31a及び車輪オブジェクト31bは、非稼働状態と稼働状態とを有し、稼働状態において、推進力を発生させる。また、第1特殊オブジェクト31c及び第2特殊オブジェクト31fは、非稼働状態と稼働状態とを有し、稼働状態において、所定の挙動を行わせる力を発生させる。また、翼オブジェクト31dは、非稼働状態及び稼働状態を有さないが、所定の速度以上で移動しているときには、揚力を発生させる。プロセッサ21は、仮想空間に配置された全ての動的オブジェクト31について、それぞれが発生する力(推進力、揚力、所定の挙動を行わせる力)を計算する。
【0157】
次に、プロセッサ21は、仮想空間に配置された全ての動的オブジェクト31について、動的オブジェクト同士の相互作用を計算する(ステップS301)。ここでは、プロセッサ21は、接触している動的オブジェクト間の力を算出する。具体的には、プロセッサ21は、ある動的オブジェクトが他の動的オブジェクトと接触しているか否かを判定し、接触している場合に、これら動的オブジェクト間に働く力を算出する。プロセッサ21は、プレイヤキャラクタPCのアクションに基づいて加えられる力も算出する。たとえば、オブジェクト操作アクションの制御対象である動的オブジェクトに対して、上記ステップS205で発生された「オブジェクト操作アクションによる力」を加える。
【0158】
次に、プロセッサ21は、今回の
図21の処理において、仮想空間に配置された全ての動的オブジェクトについて、次に示すステップS303~ステップS309の処理を行ったか否かを判定する(ステップS302)。
【0159】
ステップS302でNOと判定した場合、プロセッサ21は、まだ処理を行っていない動的オブジェクトを処理対象として選択する(ステップS303)。
【0160】
次に、プロセッサ21は、処理対象の動的オブジェクトがプレイヤキャラクタPCに間接的に乗られているか否かを判定する(ステップS304)。具体的には、プロセッサ21は、上記ステップS301の処理の結果に基づいて、処理対象の動的オブジェクトがプレイヤキャラクタPCを支えているか否かを判定する。上記ステップS207及びステップS301において、各動的オブジェクトに加わる力が計算されている。このため、プロセッサ21は、処理対象の動的オブジェクトが、プレイヤキャラクタPCが乗っている動的オブジェクトを支えているか否かを判定することができる。処理対象の動的オブジェクトが、プレイヤキャラクタPCが乗っている動的オブジェクトを支えている場合、プロセッサ21は、ステップS304でYESと判定する。例えば、プロセッサ21は、処理対象の動的オブジェクトが組立品オブジェクトの一部であり、当該組立品オブジェクトの中にプレイヤキャラクタPCが乗っている動的オブジェクトがある場合(ケース1、ケース2)、ステップS304でYESと判定する。また、プロセッサ21は、処理対象の動的オブジェクトの上に、プレイヤキャラクタPCに乗られている動的オブジェクトが接触している場合(ケース3)、ステップS304でYESと判定する。また、プロセッサ21は、処理対象の動的オブジェクトが組立品オブジェクトの一部である場合において、当該組立品オブジェクトを構成する他の動的オブジェクトの上に、プレイヤキャラクタPCに乗られている動的オブジェクトが接触している場合(ケース4)、ステップS304でYESと判定する。また、プロセッサ21は、処理対象の動的オブジェクトの上に、プレイヤキャラクタPCに乗られている動的オブジェクトを含む組立品オブジェクトが接触している場合(ケース5、ケース6)、ステップS304でYESと判定する。また、プロセッサ21は、処理対象の動的オブジェクトの上に、プレイヤキャラクタPCに間接的に乗られている動的オブジェクトが接触している場合(ケース7)、ステップS304でYESと判定する。なお、処理対象の動的オブジェクトが、プレイヤキャラクタPCに直接乗られている動的オブジェクトである場合、プロセッサ21は、ステップS304でNOと判定する。
【0161】
処理対象の動的オブジェクトがプレイヤキャラクタPCに間接的に乗られていると判定した場合(ステップS304:YES)、プロセッサ21は、処理対象の動的オブジェクトを「間接的に乗られている状態」に設定する(ステップS305)。具体的には、プロセッサ21は、処理対象の動的オブジェクトの状態データ133に、「間接的に乗られている状態」を示す値を設定する。
【0162】
処理対象の動的オブジェクトがプレイヤキャラクタPCに間接的に乗られていないと判定した場合(ステップS304:NO)、プロセッサ21は、処理対象の動的オブジェクトの状態データ133に、「間接的に乗られていない状態」を示す値を設定する(ステップS306)。なお、処理対象の動的オブジェクトがプレイヤキャラクタPCに直接乗られている場合、プロセッサ21は、ステップS306において処理対象の動的オブジェクトの状態データ133を維持する。すなわち、プレイヤキャラクタPCが処理対象の動的オブジェクトに乗っている場合には、状態データ133に「乗られている状態」を示す値が設定されているため(後述するステップS409)、その値が維持される。
【0163】
ステップS305の処理を行った場合、又は、ステップS306の処理を行った場合、プロセッサ21は、吸着を解除するか否かを判定する(ステップS307)。具体的には、プロセッサ21は、処理対象の動的オブジェクトが第1特殊オブジェクト31c又は第1特殊オブジェクト31cを含む組立品オブジェクトの一部であり、かつ、当該第1特殊オブジェクト31cが所定の挙動を行っている間の第2期間か否かを判定する。さらに、プロセッサ21は、第1特殊オブジェクト31cの角速度に基づいて、吸着を解除するか否かを判定してもよい。例えば、プロセッサ21は、第1特殊オブジェクト31cの角速度が閾値を超えているか否かに基づいて、吸着を解除するか否かを判定してもよい。また、プロセッサ21は、処理対象の動的オブジェクトが第2特殊オブジェクト31fである場合において、第2特殊オブジェクト31fが所定の挙動を行っている間の第2期間か否かを判定する。なお、吸着を解除するか否かの条件はこれに限らず、他の条件であってもよい。
【0164】
吸着を解除すると判定した場合(ステップS307:YES)、プロセッサ21は、処理対象の動的オブジェクトに吸着解除状態を設定する(ステップS308)。具体的には、プロセッサ21は、処理対象の動的オブジェクトの状態データ133に、吸着解除状態であることを示す値を格納する。
【0165】
ステップS308の処理を行った場合、又は、ステップS307でNOと判定した場合、プロセッサ21は、処理対象の動的オブジェクトに対して物理演算を行うことにより、当該動的オブジェクトの速度、角速度、位置、姿勢等を更新する(ステップS309)。ここでは、処理対象の動的オブジェクトにかかる力(S207、S300、S301の各ステップで算出された力)、当該動的オブジェクトの現在の速度、角速度、位置、姿勢等に基づいて、物理演算が行われ、当該動的オブジェクトの最新の速度、角速度、位置、姿勢等が算出される。算出された最新の値は、位置・姿勢データ131、速度・角速度データ132として記憶される。
【0166】
ステップS309の処理を行った場合、プロセッサ21は、再びステップS302の処理を実行する。
【0167】
一方、ステップS302でYESと判定した場合、プロセッサ21は、
図21に示す処理を終了する。
【0168】
図19に戻り、プロセッサ21は、次に、プレイヤキャラクタ更新処理を行う(ステップS104)。ここでは、プレイヤキャラクタPCの位置や姿勢を更新する処理が行われる。以下、ステップS104のプレイヤキャラクタ更新処理の詳細について説明する。
【0169】
(プレイヤキャラクタ更新処理)
図22は、ステップS104のプレイヤキャラクタ更新処理の一例を示すフローチャートである。
【0170】
図22に示されるように、プロセッサ21は、プレイヤキャラクタPCが動的オブジェクトの上に乗っているか否かを判定する(ステップS400)。プレイヤキャラクタデータ120の状態データ123には、プレイヤキャラクタPCが動的オブジェクトの上に「乗っている状態」か否かを示す値が設定されているため、プロセッサ21は、このデータに基づいてステップS400の判定を行う。
【0171】
プレイヤキャラクタPCが動的オブジェクトの上に乗っている場合(ステップS400:YES)、プロセッサ21は、プレイヤキャラクタPCが乗っている動的オブジェクトが吸着状態か否かを判定する(ステップS401)。
【0172】
プレイヤキャラクタPCが乗っている動的オブジェクトが吸着状態である場合(ステップS401:YES)、プロセッサ21は、プレイヤキャラクタPCが乗っている動的オブジェクトの移動と同じ移動を設定する(ステップS402)。具体的には、プロセッサ21は、プレイヤキャラクタPCが乗っている動的オブジェクトの1フレームにおける移動(移動量及び移動方向)をメモリに設定する。上記ステップS309において各動的オブジェクトの最新の位置や速度が算出されている。プロセッサ21は、例えば、プレイヤキャラクタPCが乗っている動的オブジェクトの最新の位置と、直前のフレームの位置とに基づいて、当該動的オブジェクトの1フレームにおける移動を算出する。また、プロセッサ21は、プレイヤキャラクタPCが乗っている動的オブジェクトの最新の速度に基づいて、当該動的オブジェクトの1フレームにおける移動を算出してもよい。なお、プロセッサ21は、プレイヤキャラクタPCが乗っている動的オブジェクト上の、プレイヤキャラクタPCとの接触位置(プレイヤキャラクタPCの足元の位置)の移動を、当該動的オブジェクトの移動として設定してもよい。
【0173】
一方、プレイヤキャラクタPCが乗っている動的オブジェクトが吸着状態でない場合(ステップS401:NO)、プロセッサ21は、プレイヤキャラクタPCが乗っている動的オブジェクトとプレイヤキャラクタPCとの相互作用を計算する(ステップS403)。具体的には、プロセッサ21は、プレイヤキャラクタPCが乗っている動的オブジェクトから、プレイヤキャラクタPCが受ける力を計算する。
【0174】
ステップS402の処理を行った場合、又は、ステップS403の処理を行った場合、プロセッサ21は、プレイヤキャラクタPCと他のオブジェクトとの相互作用に基づく移動を計算する(ステップS404)。具体的には、プロセッサ21は、プレイヤキャラクタPCが乗っている動的オブジェクトからの力を除いて、プレイヤキャラクタPCが受ける全ての力を計算する。例えば、プロセッサ21は、プレイヤキャラクタPCと、乗っている動的オブジェクト以外の動的オブジェクトとが接触しているか否かを判定し、接触している場合は、その接触している動的オブジェクトからの力を計算する。また、プロセッサ21は、プレイヤキャラクタPCが敵キャラクタの攻撃を受けたか否かを判定し、攻撃を受けた場合は、その攻撃に応じた力を計算する。そして、プロセッサ21は、ステップS402の後にステップS404を実行する場合は、乗っている動的オブジェクトからの力を除く、プレイヤキャラクタPCが受ける全ての力に基づいて物理演算を行う。また、プロセッサ21は、ステップS403の後にステップS404を実行する場合は、ステップS403で計算した、乗っている動的オブジェクトからの力を含む、プレイヤキャラクタPCが受ける全ての力に基づいて物理演算を行う。物理演算の結果、「他のオブジェクトとの相互作用」に基づくプレイヤキャラクタPCの速度、角速度が計算され、「他のオブジェクトとの相互作用に基づく移動」が計算される。
【0175】
次に、プロセッサ21は、操作入力に応じた移動を計算する(ステップS405)。ここでは、プレイヤキャラクタPCが地面又は動的オブジェクト上にいる場合において、アナログスティック6Lに対する方向操作入力が行われた場合、当該方向操作入力に応じた移動(移動量及び移動方向)が算出される。ここでは、方向操作入力の入力量、プレイヤキャラクタPCがいる地面又は動的オブジェクトの傾きや摩擦等に応じて、算出される移動量や移動方向が異なる。例えば、プレイヤキャラクタPCが摩擦が大きな地面上や傾きが大きな地面上を移動する場合、算出される移動量は小さくなる。
【0176】
次に、プロセッサ21は、プレイヤキャラクタPCのトータルの移動を計算し、仮想空間におけるプレイヤキャラクタPCの位置を更新する(ステップS406)。ここでは、プロセッサ21は、上記ステップS402の結果と、ステップS404の結果と、ステップS405の結果とに基づいて、プレイヤキャラクタPCのトータルの移動を算出する。具体的には、プロセッサ21は、プレイヤキャラクタPCが乗っている動的オブジェクトが吸着状態の場合には、ステップS402で設定された移動に、ステップS404で算出された移動を加え、さらにステップS405で算出された移動を加える。これにより、プレイヤキャラクタPCが乗っている動的オブジェクトが吸着状態の場合には、当該乗っている動的オブジェクトの移動がプレイヤキャラクタPCに与えられる。さらに、プレイヤキャラクタPCが他のオブジェクトと接触する場合において、当該他のオブジェクトとの相互作用に応じた移動が加えられ、操作入力が行われている場合は当該操作入力に応じた移動が加えられる。一方、プレイヤキャラクタPCが乗っている動的オブジェクトが吸着解除状態の場合には、当該乗っている動的オブジェクトとの相互作用に基づく移動が算出され、さらに、プレイヤキャラクタPCが他のオブジェクトと接触する場合は、当該他のオブジェクトとの相互作用に応じた移動が加えられ、操作入力が行われている場合は当該操作入力に応じた移動が加えられる。また、プレイヤキャラクタPCが動的オブジェクトの上に乗っていない場合は、ステップS404で算出された移動に、ステップS405で算出された移動が加えられる。そして、プロセッサ21は、算出したトータルの移動に基づいて、プレイヤキャラクタPCの位置を更新し、位置・姿勢データ121として保存する。また、プロセッサ21は、プレイヤキャラクタPCの速度も更新して、速度・角速度データ122として保存する。
【0177】
次に、プロセッサ21は、プレイヤキャラクタPCの姿勢を更新する(ステップS407)。具体的には、プロセッサ21は、ステップS404の結果に基づいて、プレイヤキャラクタPCの姿勢を更新する。なお、プレイヤキャラクタPCが動的オブジェクトの上に乗っている場合、プロセッサ21は、プレイヤキャラクタPCが仮想空間の上下方向の軸に対して傾かないように(又は上下方向の軸に対する傾きが所定の範囲となるように)、プレイヤキャラクタPCの姿勢を設定する。また、プロセッサ21は、プレイヤキャラクタPCの足の姿勢を、足元のオブジェクトに合わせる。
【0178】
次に、プロセッサ21は、プレイヤキャラクタPCの足元が動的オブジェクトに接触しているか否かを判定する(ステップS408)。ここでは、プレイヤキャラクタPCの下方向に、動的オブジェクトが接触しているか否かが判定される。
【0179】
プレイヤキャラクタPCの足元が動的オブジェクトに接触していると判定した場合(ステップS408:YES)、プロセッサ21は、プレイヤキャラクタPCを、動的オブジェクトの上に「乗っている状態」に設定する(ステップS409)。また、プロセッサ21は、プレイヤキャラクタPCの足元が接触している動的オブジェクトを「(直接)乗られている状態」に設定する。
【0180】
ステップS409の処理を実行した場合、又は、ステップS408でNOと判定した場合、プロセッサ21は、
図22に示す処理を終了する。
【0181】
図19に戻り、プロセッサ21は、次に、NPC更新処理を行う(ステップS105)。このNPC更新処理は、敵キャラクタやその他のノンプレイヤキャラクタ(これらを「NPC」と表記する)の位置や姿勢を更新する処理である。NPC更新処理では、プレイヤの操作入力ではなく、プロセッサ21が所定のアルゴリズムに基づいて、NPCを移動させたり、NPCに攻撃アクションを行わせたりする。また、NPC更新処理において、上記ステップS104の処理と同様の処理が行われる。NPC更新処理では、プロセッサ21は、基本的にプレイヤキャラクタ更新処理と同様の処理を行うが、上記ステップS405において操作入力に応じた移動を計算する代わりに、所定のアルゴリズムに基づいてNPCの移動を計算する。すなわち、NPCが動的オブジェクトに乗っている場合において、当該動的オブジェクトが吸着状態である場合には、当該動的オブジェクトの移動に、NPCの移動が加えられる。
【0182】
次に、プロセッサ21は、描画処理を行う(ステップS106)。ここでは、仮想空間に配置された仮想カメラから仮想空間を見た画像が生成される。これにより、ステップS101~ステップS105の処理に応じたゲーム画像が生成される。生成されたゲーム画像は、ディスプレイ12又は別の表示装置に出力される。ステップS106の描画処理が所定のフレーム時間間隔で繰り返し実行されることにより、プレイヤキャラクタPCが仮想空間を移動する様子や、様々なアクションを行う様子が表示される。
【0183】
次に、プロセッサ21は、ゲームを終了するか否かの判定を行う(ステップS107)。例えば、プレイヤによりゲームの終了が指示された場合、プロセッサ21は、ゲームを終了すると判定し、
図19に示すゲーム処理を終了する。一方、ステップS107でNOと判定した場合、プロセッサ21は、ステップS101の処理を再び実行する。
【0184】
以上のように、上記実施形態のゲームでは、仮想空間に配置された動的オブジェクトを物理演算に基づいて仮想空間内で移動させる(S309)。操作入力に基づいて、プレイヤキャラクタを移動させ(S405)、プレイヤキャラクタの下方向に対する接触判定を行い(S408)、当該下方向においてプレイヤキャラクタと動的オブジェクトとが接触している場合、当該下方向に接触している動的オブジェクトの移動を、プレイヤキャラクタの移動に加える処理を行う(S406)。
【0185】
これにより、プレイヤキャラクタを、乗っている動的オブジェクトとともに仮想空間内で移動させることができるとともに、プレイヤキャラクタを当該動的オブジェクト上で移動させることができる。
【0186】
また、上記実施形態では、プレイヤキャラクタが乗っていない動的オブジェクトと、プレイヤキャラクタとの接触に伴う物理演算に基づいてプレイヤキャラクタを移動させ(S404、S406)、プレイヤキャラクタが乗っている動的オブジェクトについては、物理演算に基づく移動をさせずに、乗っている動的オブジェクトの移動をプレイヤキャラクタに与える(S402)。これにより、プレイヤキャラクタを、乗っている動的オブジェクトとともに仮想空間内で移動させることができるとともに、プレイヤキャラクタが乗っていない他の動的オブジェクトと接触する場合には物理演算に基づいてプレイヤキャラクタを移動させることができる。例えば、プレイヤキャラクタが乗っていない他の動的オブジェクトがプレイヤキャラクタに衝突した場合には、プレイヤキャラクタをさらに移動させることができる。
【0187】
また、上記実施形態では、組立品オブジェクトに特殊オブジェクトが含まれる場合において、当該組立品オブジェクトに含まれる動的オブジェクトにプレイヤキャラクタが乗っている場合、特殊オブジェクトが動作している所定期間において、当該動的オブジェクトの移動をプレイヤキャラクタの移動に加える処理を行わずに、当該動的オブジェクトとプレイヤキャラクタとの接触に伴う物理演算に基づいてプレイヤキャラクタを移動させる(S403、S404、S406)。これにより、例えば、組立品オブジェクトが動作している途中で、プレイヤキャラクタを乗っている動的オブジェクトから離れさせることができる。
【0188】
また、上記実施形態では、プレイヤの操作入力に基づいて、指定された動的オブジェクトを移動させる第1の操作と、指定された動的オブジェクトを他の動的オブジェクトと結合させて組立品オブジェクトを形成させる第2の操作とを含むオブジェクト操作アクションをプレイヤキャラクタに行わせる。オブジェクト操作アクションで指定された動的オブジェクトを含む組立品オブジェクトが、プレイヤキャラクタが乗っている動的オブジェクトを含む場合、オブジェクト操作アクションによる移動は行われない(S204)。これにより、オブジェクト操作アクションによって、組立品オブジェクトが移動し続けないようにすることができ、オブジェクト操作アクションによって制御対象を操作し易くすることができる。
【0189】
(変形例)
以上、本実施形態について説明したが、上記実施形態は単なる一例であり、例えば以下のような変形が加えられてもよい。
【0190】
例えば、上記フローチャートで示した処理は単なる例示に過ぎず、処理の順番や内容等は適宜変更されてもよい。例えば、上記実施形態ではプレイヤキャラクタ更新処理において、ステップS402、ステップS404、ステップS405の順に処理が行われたが、これらの順番は任意に変更されてもよい。また、上記実施形態では、動的オブジェクトについての物理演算を行ってから、プレイヤキャラクタ、NPCについての物理演算を行うものとしたが、他の実施形態では、全てのオブジェクト(動的オブジェクト、プレイヤキャラクタ、及びNPC)について同時に物理演算が行われてもよい。
【0191】
また、上記実施形態では、プレイヤキャラクタPCが動的オブジェクトの上に乗っている場合に、当該動的オブジェクトの移動をプレイヤキャラクタPCの移動に加え、プレイヤキャラクタPCの姿勢については、一定の姿勢を保つようにした。すなわち、上記実施形態では動的オブジェクトの移動をプレイヤキャラクタPCの移動に加えるが、プレイヤキャラクタPCの姿勢については、仮想空間の上下方向の軸に対して傾かないように、又は、所定範囲となるように、プレイヤキャラクタPCの姿勢が調整された。他の実施形態では、プレイヤキャラクタPCが動的オブジェクトの上に乗っている場合に、当該動的オブジェクトの移動をプレイヤキャラクタPCの移動に加えるとともに、動的オブジェクトの姿勢の変化をプレイヤキャラクタPCに与えてもよい。この場合、プレイヤキャラクタPCが乗っている動的オブジェクトが傾いた場合、プレイヤキャラクタPCも同じように傾く。
【0192】
また、上記実施形態では、プレイヤキャラクタPCが動的オブジェクトの上に接触しているときに、プレイヤキャラクタPCがジャンプした場合は、プレイヤキャラクタPCは一時的に動的オブジェクトから離れ、その間、動的オブジェクトの移動はプレイヤキャラクタPCに与えられなくなる。他の実施形態では、プレイヤキャラクタPCが動的オブジェクト上でジャンプして、一時的に動的オブジェクトから離れているときでも、動的オブジェクトの移動がプレイヤキャラクタPCに与えられてもよい。すなわち、このような一時的に離れている状態は、プレイヤキャラクタは動的オブジェクト上にいるものと見なして(吸着状態を維持し)、動的オブジェクトの移動をプレイヤキャラクタに与えてもよい。
【0193】
また、上記実施形態では、プレイヤキャラクタPCのオブジェクト操作アクションによって、制御対象に対して、仮想空間内で移動させる第1操作と、他の動的オブジェクトに接続(結合)させる第2操作とを行うものとした。他の実施形態では、オブジェクト操作アクションによって、制御対象を移動させる第1操作のみが行われてもよい。この場合、動的オブジェクトを他の動的オブジェクトに接続させて組立品オブジェクトを生成する処理は、プレイヤキャラクタの別のアクションに基づいて行われてもよい。また、プレイヤキャラクタのアクションによらず、プレイヤの操作に基づいて組立品オブジェクトが生成されてもよい。また、組立品オブジェクトはプレイヤの操作に基づいて生成されず、予め用意されてもよい。
【0194】
また、上記実施形態では、組立品オブジェクトに含まれる何れか1つの動的オブジェクトが指定されて、オブジェクト操作アクションの制御対象として設定された。他の実施形態では、組立品オブジェクト全体が指定されて、当該組立品オブジェクト全体がオブジェクト操作アクションの制御対象として設定されてもよい。また、組立品オブジェクトに含まれる複数の動的オブジェクトが指定されて、当該複数の動的オブジェクトが、オブジェクト操作アクションの制御対象として設定されてもよい。
【0195】
また、上記実施形態では、第1特殊オブジェクトに接続された動的オブジェクト及び第2特殊オブジェクトについて、稼働状態のときに吸着状態から吸着解除状態に変化させた。他の実施形態では、このような特殊オブジェクトが接続されているか否かにかかわらず、所定の条件が満たされるまでは動的オブジェクトを吸着状態にさせ、所定の条件が満たされた場合には動的オブジェクトを吸着解除状態にさせてもよい。所定の条件は、動的オブジェクトが稼働状態になってからの時間に関する条件であってもよいし、動的オブジェクトの速度、角速度、位置、姿勢等に関する条件であってもよいし、これらを組み合わせた条件であってもよい。
【0196】
また、上記ゲーム処理を行うハードウェアの構成は単なる一例であり、他の任意のハードウェアにおいて上記ゲーム処理が行われてもよい。例えば、パーソナルコンピュータ、タブレット端末、スマートフォン、インターネット上のサーバ等、任意の情報処理システムにおいて上記ゲーム処理が実行されてもよい。また、上記ゲーム処理は、複数の装置によって分散実行されてもよい。
【0197】
また上記実施形態及びその変形例に係る構成は、互いに矛盾しない限り、任意に組み合わせることが可能である。また、上記は本発明の例示に過ぎず、上記以外にも種々の改良や変形が加えられてもよい。
【符号の説明】
【0198】
1 ゲームシステム
2 本体装置
3 左コントローラ
4 右コントローラ
21 プロセッサ
31 動的オブジェクト
32 接続オブジェクト
40 飛行機オブジェクト
41 四輪車オブジェクト
310、311、312 動的オブジェクト