(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-25
(45)【発行日】2024-05-08
(54)【発明の名称】ゲームプログラム、ゲームシステム、ゲーム装置、およびゲーム処理方法
(51)【国際特許分類】
A63F 13/55 20140101AFI20240426BHJP
【FI】
A63F13/55
(21)【出願番号】P 2023073421
(22)【出願日】2023-04-27
【審査請求日】2023-05-22
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】出村 佑史
(72)【発明者】
【氏名】高山 貴裕
(72)【発明者】
【氏名】深田 直希
(72)【発明者】
【氏名】川村 一弘
【審査官】岸 智史
(56)【参考文献】
【文献】特開2014-033909(JP,A)
【文献】特開2021-186373(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24、13/00-13/98
(57)【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータに、
仮想空間内に配置され、物理演算に基づいて移動制御される動的オブジェクトのうち、空中に配置される少なくとも1つの浮遊オブジェクトについて、
ゲーム処理に基づいて、前記浮遊オブジェクトに加えられる荷重を算出させ、
前記仮想空間における少なくとも下方向を含む第1の方向に関して、前記荷重が、
第1の耐荷重量を超えない第1の場合に、前記仮想空間内において前記浮遊オブジェクトの位置を維持する第1の力を前記浮遊オブジェクトに対してさらに加えさせ、
前記第1の耐荷重量を超える第2の場合に、前記第1の力を解除させ、
前記物理演算に基づいて前記浮遊オブジェクトの位置および姿勢を更新させる、ゲームプログラム。
【請求項2】
前記コンピュータに、
前記物理演算に基づいて更新される前記浮遊オブジェクトの位置および姿勢を記憶させ、
前記第1の場合に、前記第1の力を加えずに前記荷重に基づいて移動する場合の前記浮遊オブジェクトの位置および姿勢から、前記記憶された直前の位置および姿勢に戻す力を前記第1の力として前記浮遊オブジェクトに加えさせる、請求項1記載のゲームプログラム。
【請求項3】
前記第1の方向は、前記仮想空間における上下方向である、請求項1記載のゲームプログラム。
【請求項4】
前記第1の力は、前記浮遊オブジェクトの前記上下方向に関する位置を維持する力である、請求項3記載のゲームプログラム。
【請求項5】
前記コンピュータに、さらに、
前記仮想空間内における水平方向の第2の方向に関して、前記荷重が、
第2の耐荷重量を超えない第3の場合に、前記仮想空間内において前記浮遊オブジェクトの水平方向に関する位置を維持する第2の力を前記浮遊オブジェクトに対してさらに加えさせ、
前記第2の耐荷重量を超える第4の場合に、前記第2の力を解除させる、請求項4記載のゲームプログラム。
【請求項6】
前記荷重は、前記ゲーム処理に基づいて前記浮遊オブジェクトに積載された前記動的オブジェクトの重量に基づいた前記仮想空間の重力方向への荷重、および所定方向に推進力を発生させる前記動的オブジェクトから接触に基づいて加えられる推進力を含む、請求項3から5のいずれか記載のゲームプログラム。
【請求項7】
前記コンピュータに、さらに、操作入力に基づいて、前記仮想空間内においてプレイヤキャラクタを制御させ、
前記荷重は、前記浮遊オブジェクトに乗った前記プレイヤキャラクタの重量に基づいた前記重力方向への荷重を含む、請求項6記載のゲームプログラム。
【請求項8】
前記コンピュータに、さらに、前記物理演算に基づいて前記浮遊オブジェクトが移動する場合に、当該移動の移動速度を減衰させる力を発生させて前記浮遊オブジェクトの移動速度を制御させる、請求項3から5のいずれか記載のゲームプログラム。
【請求項9】
プロセッサを備えたゲームシステムであって、
前記プロセッサは、
仮想空間内に配置され、物理演算に基づいて移動制御される動的オブジェクトのうち、空中に配置される少なくとも1つの浮遊オブジェクトについて、
ゲーム処理に基づいて、前記浮遊オブジェクトに加えられる荷重を算出し、
前記仮想空間における少なくとも下方向を含む第1の方向に関して、前記荷重が、
第1の耐荷重量を超えない第1の場合に、前記仮想空間内において前記浮遊オブジェクトの位置を維持する第1の力を前記浮遊オブジェクトに対してさらに加え、
前記第1の耐荷重量を超える第2の場合に、前記第1の力を解除し、
前記物理演算に基づいて前記浮遊オブジェクトの位置および姿勢を更新する、ゲームシステム。
【請求項10】
前記プロセッサは、
前記物理演算に基づいて更新される前記浮遊オブジェクトの位置および姿勢を記憶し、
前記第1の場合に、前記第1の力を加えずに前記荷重に基づいて移動する場合の前記浮遊オブジェクトの位置および姿勢から、前記記憶された直前の位置および姿勢に戻す力を前記第1の力として前記浮遊オブジェクトに加える、請求項9記載のゲームシステム。
【請求項11】
前記第1の方向は、前記仮想空間における上下方向である、請求項9記載のゲームシステム。
【請求項12】
前記第1の力は、前記浮遊オブジェクトの前記上下方向に関する位置を維持する力である、請求項11記載のゲームシステム。
【請求項13】
前記プロセッサは、さらに、
前記仮想空間内における水平方向の第2の方向に関して、前記荷重が、
第2の耐荷重量を超えない第3の場合に、前記仮想空間内において前記浮遊オブジェクトの水平方向に関する位置を維持する第2の力を前記浮遊オブジェクトに対してさらに加え、
前記第2の耐荷重量を超える第4の場合に、前記第2の力を解除する、請求項12記載のゲームシステム。
【請求項14】
前記荷重は、前記ゲーム処理に基づいて前記浮遊オブジェクトに積載された前記動的オブジェクトの重量に基づいた前記仮想空間の重力方向への荷重、および所定方向に推進力を発生させる前記動的オブジェクトから接触に基づいて加えられる推進力を含む、請求項11から13のいずれか記載のゲームシステム。
【請求項15】
前記プロセッサは、さらに、操作入力に基づいて、前記仮想空間内においてプレイヤキャラクタを制御し、
前記荷重は、前記浮遊オブジェクトに乗った前記プレイヤキャラクタの重量に基づいた前記重力方向への荷重を含む、請求項14記載のゲームシステム。
【請求項16】
前記プロセッサは、さらに、前記物理演算に基づいて前記浮遊オブジェクトが移動する場合に、当該移動の移動速度を減衰させる力を発生させて前記浮遊オブジェクトの移動速度を制御する、請求項11から13のいずれか記載のゲームシステム。
【請求項17】
プロセッサを備えたゲーム装置であって、
前記プロセッサは、
仮想空間内に配置され、物理演算に基づいて移動制御される動的オブジェクトのうち、空中に配置される少なくとも1つの浮遊オブジェクトについて、
ゲーム処理に基づいて、前記浮遊オブジェクトに加えられる荷重を算出し、
前記仮想空間における少なくとも下方向を含む第1の方向に関して、前記荷重が、
第1の耐荷重量を超えない第1の場合に、前記仮想空間内において前記浮遊オブジェクトの位置を維持する第1の力を前記浮遊オブジェクトに対してさらに加え、
前記第1の耐荷重量を超える第2の場合に、前記第1の力を解除し、
前記物理演算に基づいて前記浮遊オブジェクトの位置および姿勢を更新する、ゲーム装置。
【請求項18】
前記プロセッサは、
前記物理演算に基づいて更新される前記浮遊オブジェクトの位置および姿勢を記憶し、
前記第1の場合に、前記第1の力を加えずに前記荷重に基づいて移動する場合の前記浮遊オブジェクトの位置および姿勢から、前記記憶された直前の位置および姿勢に戻す力を前記第1の力として前記浮遊オブジェクトに加える、請求項17記載のゲーム装置。
【請求項19】
情報処理システムによって実行されるゲーム処理方法であって、
前記情報処理システムは、
仮想空間内に配置され、物理演算に基づいて移動制御される動的オブジェクトのうち、空中に配置される少なくとも1つの浮遊オブジェクトについて、
ゲーム処理に基づいて、前記浮遊オブジェクトに加えられる荷重を算出し、
前記仮想空間における少なくとも下方向を含む第1の方向に関して、前記荷重が、
第1の耐荷重量を超えない第1の場合に、前記仮想空間内において前記浮遊オブジェクトの位置を維持する第1の力を前記浮遊オブジェクトに対してさらに加え、
前記第1の耐荷重量を超える第2の場合に、前記第1の力を解除し、
前記物理演算に基づいて前記浮遊オブジェクトの位置および姿勢を更新する、ゲーム処理方法。
【請求項20】
前記情報処理システムは、
前記物理演算に基づいて更新される前記浮遊オブジェクトの位置および姿勢を記憶し、
前記第1の場合に、前記第1の力を加えずに前記荷重に基づいて移動する場合の前記浮遊オブジェクトの位置および姿勢から、前記記憶された直前の位置および姿勢に戻す力を前記第1の力として前記浮遊オブジェクトに加える、請求項19記載のゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想空間におけるオブジェクトを用いた処理を行うゲームプログラム、ゲームシステム、ゲーム装置、およびゲーム処理方法に関する。
【背景技術】
【0002】
従来、仮想空間におけるオブジェクトを用いるゲームプログラムがある(例えば、非特許文献1参照)。例えば、上記ゲームプログラムは、仮想空間における空中をプレイヤキャラクタが滑空したりジャンプしたりすることができる。
【先行技術文献】
【非特許文献】
【0003】
【文献】”The Legend of Zelda:Breath of the Wild“、Features、By land, sea, and air、[online]、Nintendo of America Inc.、[令和5年3月31日検索]、インターネット<URL:https://www.zelda.com/breath-of-the-wild/features#!/bylandseaandair/>
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記非特許文献1で開示されたゲームプログラムは、仮想空間においてプレイヤキャラクタがジャンプしたり空中を滑空したりすることができた。しかしながら、ゲームにおいて、空中でできることをさらに多様なものにする余地があった。
【0005】
それ故に、本発明の目的は、仮想空間の空中において、できることを豊富にすることができるゲームプログラム、ゲームシステム、ゲーム装置、およびゲーム処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は例えば以下の(1)~(8)のような構成を採用し得る。
【0007】
(1)
本発明のゲームプログラムの一構成例は、情報処理装置のコンピュータに、仮想空間内に配置され、物理演算に基づいて移動制御される動的オブジェクトのうち、空中に配置される少なくとも1つの浮遊オブジェクトについて、ゲーム処理に基づいて、浮遊オブジェクトに加えられる荷重を算出させ、仮想空間における少なくとも下方向を含む第1の方向に関して、荷重が、第1の耐荷重量を超えない第1の場合に、仮想空間内において浮遊オブジェクトの位置を維持する第1の力を浮遊オブジェクトに対してさらに加えさせ、第1の耐荷重量を超える第2の場合に、第1の力を解除させ、物理演算に基づいて浮遊オブジェクトの位置および姿勢を更新させる。
【0008】
上記(1)の構成によれば、荷重が加えられても第1の耐荷重量を超えない荷重の場合は仮想空間における空中でその位置を維持する挙動をとりながら、その位置から動かすこともできる浮遊オブジェクトを実現することができる。
【0009】
(2)
上記(1)の構成において、上記コンピュータに、物理演算に基づいて更新される浮遊オブジェクトの位置および姿勢を記憶させ、第1の場合に、第1の力を加えずに荷重に基づいて移動する場合の浮遊オブジェクトの位置および姿勢から、記憶された直前の位置および姿勢に戻す力を第1の力として浮遊オブジェクトに加えさせてもよい。
【0010】
上記(2)の構成によれば、記憶された直前の位置および姿勢に戻す力が浮遊オブジェクトに加えられるため、加えられる荷重により当該浮遊オブジェクトが動かされてしまうことを防止することができる。
【0011】
(3)
上記(1)または(2)の構成において、上記第1の方向は、仮想空間における上下方向でもよい。
【0012】
上記(3)の構成によれば、浮遊オブジェクトを仮想空間の上方向へ上昇させることもできる。
【0013】
(4)
上記(3)の構成において、上記第1の力は、浮遊オブジェクトの上下方向に関する位置を維持する力でもよい。
【0014】
上記(4)の構成によれば、浮遊オブジェクトに上方向の荷重が加えられた場合も仮想空間における空中でその位置を維持する挙動をとりながら、当該浮遊オブジェクトを仮想空間の上方向へ上昇させることもできる。
【0015】
(5)
上記(1)乃至(4)の何れか1つの構成において、上記コンピュータに、さらに、仮想空間内における水平方向の第2の方向に関して、荷重が、第2の耐荷重量を超えない第3の場合に、仮想空間内において浮遊オブジェクトの水平方向に関する位置を維持する第2の力を浮遊オブジェクトに対してさらに加えさせ、第2の耐荷重量を超える第4の場合に、第2の力を解除させてもよい。
【0016】
上記(5)の構成によれば、上下方向と水平方向とについて、別々の耐荷重量を設け、それぞれについて位置を維持させる挙動をさせることで、一方の方向に関する荷重が耐荷重を超えた場合に他方の方向の移動もしてしまう状況を抑制でき、上下方向と水平方向との移動をそれぞれ制御できる。
【0017】
(6)
上記(1)乃至(5)の何れか1つの構成において、上記荷重は、ゲーム処理に基づいて浮遊オブジェクトに積載された動的オブジェクトの重量に基づいた仮想空間の重力方向への荷重、および所定方向に推進力を発生させる動的オブジェクトから接触に基づいて加えられる推進力を含んでもよい。
【0018】
上記(6)の構成によれば、推進力を用いて浮遊オブジェクトを移動させることができる。
【0019】
(7)
上記(6)の構成において、上記コンピュータに、さらに、操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御させてもよい。上記荷重は、浮遊オブジェクトに乗ったプレイヤキャラクタの重量に基づいた重力方向への荷重を含んでもよい。
【0020】
上記(7)の構成によれば、プレイヤキャラクタが浮遊オブジェクトに乗った状態で空中に留まったり、浮遊オブジェクトに乗って空中を移動したりすることができる。
【0021】
(8)
上記(1)乃至(7)の何れか1つの構成において、上記コンピュータに、さらに、物理演算に基づいて浮遊オブジェクトが移動する場合に、当該移動の移動速度を減衰させる力を発生させて浮遊オブジェクトの移動速度を制御させてもよい。
【0022】
上記(8)の構成によれば、浮遊オブジェクトが移動する場合に移動速度を減衰させることにより、空中における動作を緩慢にすることができ、移動する場合であってもその位置を維持しようとしているかのような演出が可能となる。
【0023】
また、本発明は、ゲームシステム、ゲーム装置、およびゲーム処理方法の形態で実施されてもよい。
【発明の効果】
【0024】
本発明によれば、荷重が加えられても耐荷重量を超えない荷重の場合は仮想空間における空中でその位置を維持する挙動をとりながら、その位置から動かすこともできる浮遊オブジェクトを実現することができる。
【図面の簡単な説明】
【0025】
【
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
【
図2】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
【
図6】本体装置2の内部構成の一例を示すブロック図
【
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
【
図8】浮遊石オブジェクトFS1が仮想空間の空中に配置されている様子を示すゲーム画像の一例
【
図9】オブジェクトOBJ1が乗せられた状態で空中に配置されている浮遊石オブジェクトFS1の様子を示すゲーム画像の一例
【
図10】オブジェクトOBJ2が乗せられることにより空中を降下する浮遊石オブジェクトFS1の様子を示すゲーム画像の一例
【
図11】第1のゲーム処理例における各状態において浮遊石オブジェクトFS1に加えられている荷重や移動速度の一例を示す図
【
図12】オブジェクトOBJ3による上方向の推進力が加えられた状態で空中に配置されている浮遊石オブジェクトFS1の様子を示すゲーム画像の一例
【
図13】オブジェクトOBJ3による上方向の推進力により空中を上昇する浮遊石オブジェクトFS1の様子を示すゲーム画像の一例
【
図14】第2のゲーム処理例における各状態において浮遊石オブジェクトFS1に加えられている荷重や移動速度の一例を示す図
【
図15】オブジェクトOBJ5による水平方向の推進力が加えられた状態で空中に配置されている浮遊石オブジェクトFS1の様子を示すゲーム画像の一例
【
図16】オブジェクトOBJ6による水平方向の推進力により空中を水平方向に移動する浮遊石オブジェクトFS1の様子を示すゲーム画像の一例
【
図17】第3のゲーム処理例における各状態において浮遊石オブジェクトFS1に加えられている荷重や移動速度の一例を示す図
【
図18】オブジェクトOBJ7による水平方向の推進力が加えられた状態で空中に配置されている浮遊ステージオブジェクトFS2の様子を示すゲーム画像の一例
【
図19】第4のゲーム処理例において浮遊ステージオブジェクトFS2に加えられている荷重や移動速度の一例を示す図
【
図20】プレイヤキャラクタPCがオブジェクト操作アクションにより組立品オブジェクトASを生成している様子を示すゲーム画像の一例
【
図21】本体装置2のDRAM85に設定されるデータ領域の一例を示す図
【
図22】ゲームシステム1で実行されるゲーム処理の一例を示すフローチャート
【
図23】
図22のステップS123における動的オブジェクト更新処理の一例を示すサブルーチン
【
図24】
図23のステップS134における浮遊石更新処理の一例を示すサブルーチン
【
図25】
図23のステップS136における浮遊ステージ更新処理の一例を示すサブルーチン
【発明を実施するための形態】
【0026】
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0027】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0028】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0029】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0030】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0031】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0032】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0033】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0034】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0035】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0036】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0037】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、
図1および
図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0038】
左コントローラ3は、アナログスティック32を備える。
図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック32を押下する入力が可能である。
【0039】
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33~36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。さらに、左コントローラ3は、録画ボタン37および-(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0040】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0041】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0042】
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。本実施形態においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53~56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。さらに、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。
【0043】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0044】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0045】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0046】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0047】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0048】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0049】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0050】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0051】
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0052】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0053】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0054】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0055】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0056】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0057】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0058】
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。
図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
【0059】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0060】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(
図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0061】
通信制御部101は、各入力部(具体的には、各ボタン103、および、アナログスティック32)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0062】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。
【0063】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0064】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0065】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、および、アナログスティック52を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0066】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0067】
以上に説明したように、本実施形態におけるゲームシステム1については左コントローラ3および右コントローラ4が本体装置2から着脱可能である。また、クレードルに左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置や本体装置2単体を装着することによって据置型モニタ等の外部表示装置に画像(および音声)を出力可能である。以下の説明では、ディスプレイ12に画像を表示する利用態様におけるゲームシステム1を用いて説明する。なお、ディスプレイ12に画像を表示する利用態様におけるゲームシステム1を用いる場合、左コントローラ3および右コントローラ4が本体装置2に固定された態様(例えば、本体装置2、左コントローラ3、および右コントローラ4が1つの筐体で一体化された態様)のゲームシステム1が用いられてもかまわない。
【0068】
ゲームシステム1における左コントローラ3および/または右コントローラ4の各操作ボタンやスティックの操作、あるいは本体装置2のタッチパネル13に対するタッチ操作等に応じて、ディスプレイ12に表示される仮想空間を用いたゲームプレイが行われる。本実施例では、一例として、上記操作ボタンおよびスティックを用いたユーザ操作に応じて、仮想空間内で動作するプレイヤキャラクタPCを用いたゲームプレイが可能となる。
【0069】
図8および
図19を用いて、ゲームシステム1において行われるゲーム処理の概要について説明する。本実施例では、仮想空間の空中に配置される浮遊オブジェクトの所定の方向に関して耐荷重量を超えない荷重が加えられた場合に、当該浮遊オブジェクトの位置を維持するための戻す力を当該浮遊オブジェクトに対してさらに加えることにより、空中である程度耐える挙動によって、空中において乗ることも動かすこともできる浮遊オブジェクトを実現する。以下の説明では、浮遊オブジェクトに加えられる荷重の例として第1~第4のゲーム処理例を用いて、実現される浮遊オブジェクトの例を説明する。
【0070】
図8~
図11を用いて、浮遊オブジェクトに重力方向の荷重が加えられる第1のゲーム処理例の概要について説明する。なお、
図8は、浮遊石オブジェクトFS1が仮想空間の空中に配置されている様子を示すゲーム画像の一例である。
図9は、オブジェクトOBJ1が乗せられた状態で空中に配置されている浮遊石オブジェクトFS1の様子を示すゲーム画像の一例である。
図10は、オブジェクトOBJ2が乗せられることにより空中を降下する浮遊石オブジェクトFS1の様子を示すゲーム画像の一例である。
図11は、第1のゲーム処理例における各状態において浮遊石オブジェクトFS1に加えられている荷重や移動速度の一例を示す図である。
【0071】
図8において、仮想空間におけるゲームフィールド上にプレイヤキャラクタPC配置され、空中に浮遊石オブジェクトFS1が配置されている画像がディスプレイ12に表示されている。プレイヤキャラクタPCは、ユーザの操作入力に基づいて、仮想空間内におけるゲームフィールド上で移動したり動作したりすることができる。なお、本実施例においては、ゲーム画像が本体装置2のディスプレイ12に表示されるものとするが、本体装置2に接続される他の表示装置に表示されてもよい。
【0072】
プレイヤキャラクタPCは、ユーザの移動操作入力に応じて仮想空間内を移動したり、ユーザの動作指示操作入力(例えば、操作ボタン53(Aボタン)を押下する操作入力)に応じて他のキャラクタや仮想オブジェクトを触ったり、叩いたり、攻撃したりするようなアクションを行うことができる。一例として、ユーザの動作指示操作入力に応じて、プレイヤキャラクタPCが浮遊石オブジェクトFS1の上に乗るアクションを行う制御が可能である。プレイヤキャラクタPCは、自身の重量(自重)が設定されており、浮遊石オブジェクトFS1の上に乗った場合、当該自重による重力方向の荷重が浮遊石オブジェクトFS1に加わる。
【0073】
浮遊石オブジェクトFS1は、仮想空間の空中に配置される浮遊オブジェクトの一例である。浮遊石オブジェクトFS1は、仮想空間の空中で静止可能な岩や石等の剛体であり、その上に他のオブジェクトやキャラクタ(例えば、プレイヤキャラクタPC)を乗せることができる。例えば、
図8に示すように、浮遊石オブジェクトFS1の上に乗っているものがなく、浮遊石オブジェクトFS1に外部から荷重が加えられていない状態では、浮遊石オブジェクトFS1は、仮想空間の空中に浮いた状態で静止またはその位置で浮遊して配置される。なお、浮遊石オブジェクトFS1は、自身の重量(自重)がない剛体として設定されてもよいし、所定の重量を有する剛体として設定されてもよい。
【0074】
浮遊石オブジェクトFS1には、耐荷重量が設定されている。浮遊石オブジェクトFS1は、その上に上記耐荷重量より軽いものを乗せても、仮想空間の空中に浮いた状態でその位置で静止またはその位置で浮遊して配置される。例えば、
図9に示す浮遊石オブジェクトFS1は、上記耐荷重量よりも軽いオブジェクトOBJ1を乗せている。オブジェクトOBJ1を乗せた場合、浮遊石オブジェクトFS1は、当該オブジェクトOBJ1を乗せる前の位置を維持するように、仮想空間の空中に配置される。これは、プレイヤキャラクタPCが乗る場合も同様であり、浮遊石オブジェクトFS1は、浮遊石オブジェクトFS1の上に乗っているプレイヤキャラクタPCおよびオブジェクトの重量の総和が上記耐荷重量を超えない場合、空中における位置を維持するように、仮想空間の空中に配置される。
【0075】
一方、浮遊石オブジェクトFS1は、その上に上記耐荷重量より重いものを乗せた場合、仮想空間の空中に浮いていた位置から降下するように移動する。例えば、
図10に示すオブジェクトOBJ2は、オブジェクトOBJ1より重く、上記耐荷重量を超える重量を有している。このようなオブジェクトOBJ2を乗せた場合、浮遊石オブジェクトFS1は、オブジェクトOBJ2の重量に基づいた移動速度V1で仮想空間の重力方向に降下して空中を移動する。これは、プレイヤキャラクタPCが乗る場合も同様であり、浮遊石オブジェクトFS1は、浮遊石オブジェクトFS1の上に乗っているプレイヤキャラクタPCおよびオブジェクトの重量の総和が上記耐荷重量を超える場合、当該総和した重量に基づいた移動速度で仮想空間の重力方向に降下して空中を移動する。なお、本実施例では、浮遊石オブジェクトFS1が空中を降下して移動する場合、その移動速度を減衰させる力が浮遊石オブジェクトFS1に加えられるため、その挙動は相対的に遅いものとなる。
【0076】
図11を参照して、上述した2つの状態において浮遊石オブジェクトFS1に加わる荷重および浮遊石オブジェクトFS1に生じる移動速度について説明する。以下の説明においては、互いに直交するXYZ軸を仮想空間に設定し、仮想空間の上下方向であるY方向(上方向をY正方向、下方向をY負方向)、仮想空間において水平となる2次元の水平方向であるXZ方向(左右方向をX方向、奥行方向をZ方向)とする。また、以下の説明では、浮遊石オブジェクトFS1の自重が0であるとするとともに、浮遊石オブジェクトFS1に何も乗せられておらず外部からの荷重も加えられていない状態(
図8に示す状態)では、浮遊石オブジェクトFS1に加わる荷重がなく、仮想空間の空中に浮いた状態で静止またはその位置で浮遊して配置されるものとする。
【0077】
本実施例では、浮遊石オブジェクトFS1を空中に浮遊させるとともに、浮遊石オブジェクトFS1に乗せる耐荷重量を表現するために、浮遊石オブジェクトFS1に加えられる荷重を、上下方向(Y方向)と2次元の水平方向(XZ方向)とに分け、それぞれ独立した抵抗力が加えられるように制御される。例えば、
図11の上図は、浮遊石オブジェクトFS1がオブジェクトOBJ1を乗せている状態を示している。この状態では、オブジェクトOBJ1の重量による荷重が浮遊石オブジェクトFS1の重力方向(Y負方向)に加わり、当該荷重が浮遊石オブジェクトFS1の耐荷重量を超えていない状態となる。本実施例では、仮想空間における下方向(Y負方向)に上記耐荷重量を超えない荷重が浮遊石オブジェクトFS1に加えられた場合、仮想空間内において浮遊石オブジェクトFS1の位置を維持するための戻す力が浮遊石オブジェクトFS1に対してさらに加えられる。
図11の上図に示すように、上記戻す力は、浮遊石オブジェクトFS1に加えられている下方向(Y負方向)の荷重とは相反する荷重、すなわち当該荷重と同じ大きさで仮想空間における上方向(Y正方向)の力となる。上記戻す力が浮遊石オブジェクトFS1にさらに加えられることにより、浮遊石オブジェクトFS1に乗っているオブジェクトOBJ1の重量による荷重が相殺されるため、浮遊石オブジェクトFS1は、オブジェクトOBJ1を乗せる前の位置を維持するように、仮想空間の空中に配置される。
【0078】
上記戻す力は、浮遊石オブジェクトFS1の動きに基づいて算出されてもよい。例えば、物理演算に基づいて更新される浮遊石オブジェクトFS1の位置および姿勢を記憶しておく。そして、上記戻す力を加えずにオブジェクトOBJ1の重量による荷重によってY負方向に移動する場合の浮遊石オブジェクトFS1の位置および姿勢を算出し、当該算出された位置および姿勢から上記記憶されている直前の位置および姿勢(具体的には、前回の処理(前フレームの処理)において更新された位置および姿勢)に仮想空間における上方向(Y正方向)へ戻すための力を、浮遊石オブジェクトFS1にさらに加える戻す力として算出する。このように戻す力を算出することにより、オブジェクトOBJ1の重量による仮想空間におけるY負方向への荷重が浮遊石オブジェクトFS1に加わっても、浮遊石オブジェクトFS1が空中で留まって釣り合う荷重を算出することができる。また、浮遊石オブジェクトFS1の動きに基づいて戻す力を算出することにより、浮遊石オブジェクトFS1の上に様々なオブジェクトやキャラクタが乗った状態であっても、それぞれの状態やそれぞれにより加えられる荷重を個別に算出するような処理をすることなく、戻す力を容易に算出することができる。
【0079】
また、浮遊石オブジェクトFS1に加えられているY負方向への荷重が耐荷重量を超えているか否かについて、浮遊石オブジェクトFS1の動きに基づいて判定されてもよい。例えば、浮遊石オブジェクトFS1の位置および姿勢とともに、浮遊石オブジェクトFS1に加えられていた戻す力も記憶しておく。そして、前回の処理で算出された浮遊石オブジェクトFS1の位置および姿勢と今回の処理で算出された浮遊石オブジェクトFS1の位置および姿勢とのY方向の差分、すなわち浮遊石オブジェクトFS1におけるY方向の移動量を算出し、当該移動量を生じさせるためのY方向の力から前回の処理で加えられていたY方向の戻す力を差し引くことにより、今回の処理において実際に浮遊石オブジェクトFS1に加えられている荷重を算出する。このように算出された荷重と上記耐荷重量とを比較することにより、浮遊石オブジェクトFS1のY負方向に加えられている荷重が耐荷重量を超えているか否かについての判定を行うことができる。また、浮遊石オブジェクトFS1の動きに基づいて耐荷重量の判定が行われることにより、浮遊石オブジェクトFS1の上に様々なオブジェクトやキャラクタが乗った状態であっても、それぞれの状態やそれぞれにより加えられる荷重を個別に算出するような処理をすることなく、容易に判定することができる。
【0080】
図11の下図は、浮遊石オブジェクトFS1がオブジェクトOBJ2を乗せている状態を示している。この状態では、オブジェクトOBJ2の重量による荷重が浮遊石オブジェクトFS1の重力方向(Y負方向)に加わり、当該荷重が浮遊石オブジェクトFS1の耐荷重量を超えている状態となる。本実施例では、仮想空間における下方向(Y負方向)に上記耐荷重量を超える荷重が浮遊石オブジェクトFS1に加えられた場合、上記Y正方向に戻す力をオフ(解除)する。これによって、
図11の下図に示すように、浮遊石オブジェクトFS1に加えられているオブジェクトOBJ2の重量による荷重を相殺する力がなくなるため、浮遊石オブジェクトFS1は、オブジェクトOBJ2の重量による荷重に基づいた移動速度V1で空中を降下する。なお、浮遊石オブジェクトFS1が空中を降下してY負方向へ移動する場合、移動速度を減衰させるY正方向の力が浮遊石オブジェクトFS1に加えられる。一例として、加えられた荷重に基づいて算出された速度に1未満の値を乗算する、または当該速度から所定の値を減算することにより、浮遊石オブジェクトFS1を移動させる移動速度V1が算出される。
【0081】
上記耐荷重量を超える荷重による浮遊石オブジェクトFS1の移動が行われた後に、当該荷重が当該耐荷重量を超えない状態となった場合、浮遊石オブジェクトFS1には当該荷重に応じた戻す力がY正方向に加えられる。これにより、浮遊石オブジェクトFS1は、加えられている荷重が上記耐荷重量を超えない状態となった時点の位置で降下を停止して、空中の当該位置で静止または浮遊するように配置される。
【0082】
なお、本実施例では、浮遊石オブジェクトFS1が降下して移動している状態では、当該降下した位置および姿勢が浮遊石オブジェクトFS1を空中で停止させる目標位置および目標姿勢として常に更新されて記録されている。本実施例では、浮遊石オブジェクトFS1の降下中に、浮遊石オブジェクトFS1に加えられているY負方向の荷重が上記耐荷重量を超えない状態となった場合、上記目標位置および目標姿勢(すなわち、前フレームにおいて算出された浮遊石オブジェクトFS1の位置および姿勢)に戻すためのY正方向の戻す力が浮遊石オブジェクトFS1に加えられる。なお、浮遊石オブジェクトFS1が降下して移動している状態において、浮遊石オブジェクトFS1に加えられているY負方向の荷重と上記耐荷重量とを比較する判定は、浮遊石オブジェクトFS1に上記戻す力が加えられていないため、移動速度の減衰を考慮した当該移動中の移動量に基づいて算出された荷重と上記耐荷重量との比較によって行われてもよい。
【0083】
図12~
図14を用いて、浮遊オブジェクトに上方向の荷重が加えられる第2のゲーム処理例の概要について説明する。なお、
図12は、オブジェクトOBJ3による上方向の推進力が加えられた状態で空中に配置されている浮遊石オブジェクトFS1の様子を示すゲーム画像の一例である。
図13は、オブジェクトOBJ3による上方向の推進力により空中を上昇する浮遊石オブジェクトFS1の様子を示すゲーム画像の一例である。
図14は、第2のゲーム処理例における各状態において浮遊石オブジェクトFS1に加えられている荷重や移動速度の一例を示す図である。
【0084】
浮遊石オブジェクトFS1には、仮想空間における上方向(Y正方向)への空中移動に関しても耐荷重量が設定されている。浮遊石オブジェクトFS1は、上記耐荷重量より小さい荷重で持ち上げられても、その位置から上昇する移動を行わずに仮想空間の空中に浮いた状態でその位置で静止またはその位置で浮遊して配置される。例えば、
図12に示す浮遊石オブジェクトFS1は、2つのロケットの推進力により上昇するオブジェクトOBJ3との接触により持ち上げられている。オブジェクトOBJ3は、浮遊石オブジェクトFS1と離間可能な状態で浮遊石オブジェクトFS1に接触して押している状態であってもよいし、後述するように浮遊石オブジェクトFS1に結合されて一体化していてもよい。オブジェクトOBJ3は、浮遊石オブジェクトFS1の上方向への耐荷重量より小さい推進力で仮想空間を上昇する荷重を浮遊石オブジェクトFS1に加えるため、浮遊石オブジェクトFS1は、当該オブジェクトOBJ3による持ち上げられる前の位置を維持するように、仮想空間の空中に配置される。なお、浮遊石オブジェクトFS1に設定されている上方向へ上昇する移動に関する上記耐荷重量は、上述した下方向へ降下する移動に関する耐荷重量と同じ荷重量でもよいし、異なる荷重量でもよい。
【0085】
一方、浮遊石オブジェクトFS1は、上記耐荷重量より大きい推進力で持ち上げられた場合、仮想空間の空中に浮いていた位置から上昇するように移動する。例えば、
図13に示すオブジェクトOBJ4は、オブジェクトOBJ3より推進力が大きい4つのロケットを備えており、浮遊石オブジェクトFS1との接触により上記耐荷重量を超える上昇推進力を与えることができる。オブジェクトOBJ4は、浮遊石オブジェクトFS1と離間可能な状態で浮遊石オブジェクトFS1に接触して押している状態であってもよいし、後述するように浮遊石オブジェクトFS1に結合されて一体化していてもよい。このようなオブジェクトOBJ4により持ち上げられた場合、浮遊石オブジェクトFS1は、オブジェクトOBJ4から加えられる荷重に基づいた移動速度V2で仮想空間を上昇する。また、プレイヤキャラクタPCや他のオブジェクトが乗っている場合、浮遊石オブジェクトFS1は、上記上昇推進力によるY正方向への荷重から浮遊石オブジェクトFS1の上に乗っているプレイヤキャラクタPCおよびオブジェクトの重量によるY負方向への荷重を減算した荷重が上記耐荷重量を超える場合、当該荷重に基づいた移動速度で仮想空間を上昇する。なお、本実施例では、浮遊石オブジェクトFS1が空中を上昇する場合も、その移動速度を減衰させる力が浮遊石オブジェクトFS1に加えられる。
【0086】
図14を参照して、上述した2つの状態において浮遊石オブジェクトFS1に加わる荷重および浮遊石オブジェクトFS1に生じる移動速度について説明する。
【0087】
例えば、
図14の上図は、浮遊石オブジェクトFS1がオブジェクトOBJ3に持ち上げられている状態を示している。この状態では、オブジェクトOBJ3の上昇推進力による荷重が浮遊石オブジェクトFS1の上方向(Y正方向)に加わり、当該荷重が浮遊石オブジェクトFS1の耐荷重量を超えていない状態となる。本実施例では、仮想空間における上方向(Y正方向)に上記耐荷重量を超えない荷重が浮遊石オブジェクトFS1に加えられた場合、仮想空間内において浮遊石オブジェクトFS1の位置を維持するための戻す力が浮遊石オブジェクトFS1に対してさらに加えられる。
図14の上図に示すように、上記戻す力は、浮遊石オブジェクトFS1に加えられている上方向(Y正方向)の荷重とは相反する荷重、すなわち当該荷重と同じ大きさで仮想空間における下方向(Y負方向)の力となる。上記戻す力が浮遊石オブジェクトFS1にさらに加えられることにより、浮遊石オブジェクトFS1に加えられているオブジェクトOBJ3の推進力による荷重が相殺されるため、浮遊石オブジェクトFS1は、オブジェクトOBJ3により持ち上げられる前の位置を維持するように、仮想空間の空中に配置される。
【0088】
上記Y負方向への戻す力も、浮遊石オブジェクトFS1の動きに基づいて算出されてもよい。例えば、上記戻す力を加えずにオブジェクトOBJ3の推進力による荷重によってY正方向に移動する場合の浮遊石オブジェクトFS1の位置および姿勢を算出し、当該算出された位置および姿勢から記憶されている直前の位置および姿勢(具体的には、前回の処理(前フレームの処理)において更新された位置および姿勢)に仮想空間における下方向(Y負方向)へ戻すための力を、浮遊石オブジェクトFS1にさらに加える戻す力として算出する。このように戻す力を算出することにより、オブジェクトOBJ3の推進力による仮想空間におけるY正方向への荷重が浮遊石オブジェクトFS1に加わっても、浮遊石オブジェクトFS1が空中で留まって釣り合う荷重を算出することができる。また、浮遊石オブジェクトFS1の動きに基づいて戻す力を算出することにより、浮遊石オブジェクトFS1の上に様々なオブジェクトやキャラクタが乗った状態でオブジェクトOBJ3によって持ち上げられる場合あっても、それぞれの状態やそれぞれにより加えられる荷重を個別に算出するような処理をすることなく、戻す力を容易に算出することができる。
【0089】
なお、上述したY負方向への荷重と同様に、浮遊石オブジェクトFS1を持ち上げるY正方向への荷重が耐荷重量を超えているか否かについても、浮遊石オブジェクトFS1の動きに基づいて判定されてもよい。
【0090】
図14の下図は、浮遊石オブジェクトFS1がオブジェクトOBJ4により持ち上げられている状態を示している。この状態では、オブジェクトOBJ4の推進力による荷重が浮遊石オブジェクトFS1の上方向(Y正方向)に加わり、当該荷重が浮遊石オブジェクトFS1の耐荷重量を超えている状態となる。本実施例では、仮想空間における上方向(Y正方向)に上記耐荷重量を超える荷重が浮遊石オブジェクトFS1に加えられた場合、上記Y負方向に戻す力をオフ(解除)する。これによって、
図14の下図に示すように、浮遊石オブジェクトFS1に加えられているオブジェクトOBJ4の推進力による荷重を相殺する力がなくなるため、浮遊石オブジェクトFS1は、オブジェクトOBJ4の推進力による荷重に基づいた移動速度V2で空中を上昇する。なお、浮遊石オブジェクトFS1が空中を上昇してY正方向へ移動する場合も、移動速度を減衰させるY負方向の力が浮遊石オブジェクトFS1に加えられる。
【0091】
上記耐荷重量を超える荷重による浮遊石オブジェクトFS1の上昇が行われた後に、当該荷重が当該耐荷重量を超えない状態となった場合、浮遊石オブジェクトFS1には当該荷重に応じた戻す力がY負方向に加えられる。これにより、浮遊石オブジェクトFS1は、加えられている荷重が上記耐荷重量を超えない状態となった時点の位置で上昇を停止して、空中の当該位置で静止または浮遊するように配置される。
【0092】
なお、本実施例では、浮遊石オブジェクトFS1が上昇して移動している状態でも、当該上昇した位置および姿勢が浮遊石オブジェクトFS1を空中で停止させる目標位置および目標姿勢として常に更新されて記録されている。本実施例では、浮遊石オブジェクトFS1の上昇中に、浮遊石オブジェクトFS1に加えられているY正方向の荷重が上記耐荷重量を超えない状態となった場合、上記目標位置および目標姿勢(すなわち、前フレームにおいて算出された浮遊石オブジェクトFS1の位置および姿勢)に戻すためのY負方向の戻す力が浮遊石オブジェクトFS1に加えられる。なお、浮遊石オブジェクトFS1が上昇して移動している状態において、浮遊石オブジェクトFS1に加えられているY正方向の荷重と上記耐荷重量とを比較する判定も、浮遊石オブジェクトFS1に上記戻す力が加えられていないため、移動速度の減衰を考慮した当該移動中の移動量に基づいて算出された荷重と上記耐荷重量との比較によって行われてもよい。
【0093】
図15~
図17を用いて、浮遊オブジェクトに上下方向および水平方向の荷重が加えられる第3のゲーム処理例の概要について説明する。なお、
図15は、オブジェクトOBJ5による水平方向の推進力が加えられた状態で空中に配置されている浮遊石オブジェクトFS1の様子を示すゲーム画像の一例である。
図16は、オブジェクトOBJ6による水平方向の推進力により空中を水平方向に移動する浮遊石オブジェクトFS1の様子を示すゲーム画像の一例である。
図17は、第3のゲーム処理例における各状態において浮遊石オブジェクトFS1に加えられている荷重や移動速度の一例を示す図である。
【0094】
浮遊石オブジェクトFS1には、仮想空間における水平方向(XZ方向)への空中移動に関しても耐荷重量が設定され、上下方向の荷重と水平方向と荷重とがそれぞれ独立して制御される。浮遊石オブジェクトFS1は、上記耐荷重量より小さい荷重で水平方向や上下方向へ押されても、その位置から移動を行わずに仮想空間の空中に浮いた状態でその位置で静止またはその位置で浮遊して配置される。例えば、
図15に示す浮遊石オブジェクトFS1は、上下方向の耐荷重量よりも軽いプレイヤキャラクタPCを乗せながら、2つのロケットの推進力により移動するオブジェクトOBJ5との接触により水平方向へ押されている。オブジェクトOBJ5は、浮遊石オブジェクトFS1と離間可能な状態で浮遊石オブジェクトFS1に接触して押している状態であってもよいし、後述するように浮遊石オブジェクトFS1に結合されて一体化していてもよい。上下方向に関して、プレイヤキャラクタPCの重量による荷重にオブジェクトOBJ5の重量等による上下方向の荷重が加わったとしても、当該上下方向の耐荷重量を超えていないため、浮遊石オブジェクトFS1は、当該プレイヤキャラクタPCを乗せる前の上下方向の位置を維持するように、仮想空間の空中に配置されている。また、水平方向に関しても、浮遊石オブジェクトFS1の水平方向への耐荷重量より小さい推進力で水平方向へ移動する荷重が浮遊石オブジェクトFS1に加えられるため、浮遊石オブジェクトFS1は、当該オブジェクトOBJ5により押される前の水平方向の位置を維持するように、仮想空間の空中に配置される。なお、浮遊石オブジェクトFS1に設定されている水平方向への移動に関する上記耐荷重量は、上述した上下方向への移動に関する耐荷重量と同じ荷重量でもよいし、異なる荷重量でもよい。
【0095】
一方、浮遊石オブジェクトFS1は、上記耐荷重量より大きい推進力で水平方向へ押された場合、仮想空間の空中において水平方向へ移動する。例えば、
図16に示すオブジェクトOBJ6は、オブジェクトOBJ5より推進力が大きい4つのロケットを備えており、浮遊石オブジェクトFS1との接触により上記耐荷重量を超える水平方向の推進力を与えることができる。オブジェクトOBJ6は、浮遊石オブジェクトFS1と離間可能な状態で浮遊石オブジェクトFS1に接触して押している状態であってもよいし、後述するように浮遊石オブジェクトFS1に結合されて一体化していてもよい。このようなオブジェクトOBJ6により押された場合、浮遊石オブジェクトFS1は、オブジェクトOBJ6から加えられる荷重に基づいた移動速度V3で仮想空間を水平方向へ移動する。一方、上下方向に関しては、プレイヤキャラクタPCの重量による荷重にオブジェクトOBJ5の重量等による上下方向の荷重が加わったとしても、当該上下方向の耐荷重量を超えていない状態が継続しているため、浮遊石オブジェクトFS1は、当該プレイヤキャラクタPCを乗せる前の上下方向の位置を維持するように、仮想空間の空中に配置される。これらの水平方向および上下方向それぞれの制御により、水平方向へはオブジェクトOBJ5の推進力に基づいて移動するものの上下方向には移動しない動作制御が行われるため、浮遊石オブジェクトFS1は、結果的に仮想空間における水平方向へ移動速度V3で移動することになる。なお、浮遊石オブジェクトFS1は、オブジェクトOBJ5の推進力によるXZ方向への荷重に基づいた移動速度で水平方向へ移動するが、浮遊石オブジェクトFS1が空中を水平方向に移動する場合も、その移動速度を減衰させる力が浮遊石オブジェクトFS1に加えられてもよい。
【0096】
図17を参照して、上述した2つの状態において浮遊石オブジェクトFS1に加わる荷重および浮遊石オブジェクトFS1に生じる移動速度について説明する。
【0097】
例えば、
図17の上図は、浮遊石オブジェクトFS1がプレイヤキャラクタPCを乗せながら、オブジェクトOBJ5によって押されている状態を示している。この状態では、オブジェクトOBJ5の推進力による荷重が浮遊石オブジェクトFS1の水平方向(XZ方向)に加わっているが、水平方向に関して当該荷重が浮遊石オブジェクトFS1の水平方向の耐荷重量を超えていない状態となる。また、プレイヤキャラクタPC(およびオブジェクトOBJ5)の重量による荷重が浮遊石オブジェクトFS1の重力方向(Y負方向)に加わっているが、上下方向に関しても当該荷重が浮遊石オブジェクトFS1の上下方向の耐荷重量を超えていない状態となる。
【0098】
本実施例では、仮想空間における水平方向(XZ方向)に荷重が加えられた場合であっても、当該水平方向の耐荷重量を超えない荷重であれば、浮遊石オブジェクトFS1の水平方向における位置を維持するための戻す力が浮遊石オブジェクトFS1の水平方向にさらに加えられる。
図17の上図に示すように、水平方向に戻す力は、浮遊石オブジェクトFS1に加えられている水平方向(XZ方向)の荷重とは相反する荷重、すなわち当該荷重と同じ大きさで反対の水平方向の力となる。この水平方向の戻す力が浮遊石オブジェクトFS1にさらに加えられることにより、浮遊石オブジェクトFS1に加えられているオブジェクトOBJ5の推進力による水平方向の荷重が相殺されるため、浮遊石オブジェクトFS1は、オブジェクトOBJ5により押される前の水平方向の位置を維持するように、仮想空間の空中に配置される。
【0099】
上記水平方向への戻す力も、浮遊石オブジェクトFS1の水平方向への動きに基づいて算出されてもよい。例えば、上記水平方向への戻す力を加えずにオブジェクトOBJ5の推進力による荷重によってXZ方向に移動する場合の浮遊石オブジェクトFS1の位置および姿勢を算出し、当該算出された位置および姿勢から記憶されている直前の位置および姿勢(具体的には、前回の処理(前フレームの処理)において更新された位置および姿勢)に仮想空間における水平方向(XZ方向)へ戻すための力を、浮遊石オブジェクトFS1にさらに加える戻す力として算出する。このように水平方向に戻す力を算出することにより、オブジェクトOBJ5の推進力による仮想空間におけるXZ方向への荷重が浮遊石オブジェクトFS1に加わっても、浮遊石オブジェクトFS1が空中で留まって釣り合う荷重を算出することができる。
【0100】
なお、上述した上下方向への荷重と同様に、浮遊石オブジェクトFS1を押すXZ方向への荷重が耐荷重量を超えているか否かについても、浮遊石オブジェクトFS1の水平方向への動きに基づいて判定されてもよい。
【0101】
また、上述したように、仮想空間における上下方向(Y方向)に関しても、上下方向の耐荷重量を超えない荷重が浮遊石オブジェクトFS1に加えられた場合、仮想空間内において浮遊石オブジェクトFS1の上下方向の位置を維持するための戻す力が浮遊石オブジェクトFS1の上下方向にさらに加えられる。
図17の上図に示すように、上下方向の戻す力は、浮遊石オブジェクトFS1に加えられている下方向(Y負方向)の荷重とは相反する荷重、すなわち当該荷重と同じ大きさで仮想空間における上方向(Y正方向)の力となる。上下方向の戻す力が浮遊石オブジェクトFS1にさらに加えられることにより、浮遊石オブジェクトFS1に乗っているプレイヤキャラクタPC(およびオブジェクトOBJ5)の重量による上下方向の荷重が相殺されるため、浮遊石オブジェクトFS1は、プレイヤキャラクタPC(およびオブジェクトOBJ5)を乗せる前の上下方向の位置を維持するように、仮想空間の空中に配置される。
【0102】
このように、浮遊石オブジェクトFS1がプレイヤキャラクタPCを乗せながら、オブジェクトOBJ5によって水平方向に押されている状態は、水平方向および上下方向の何れの位置も維持するように制御されるため、結果的に浮遊石オブジェクトFS1は、仮想空間の空中においてその位置で静止またはその位置で浮遊して配置される。
【0103】
図17の下図は、浮遊石オブジェクトFS1がプレイヤキャラクタPCを乗せながら、オブジェクトOBJ6によって押されている状態を示している。この状態では、オブジェクトOBJ6の推進力による荷重が浮遊石オブジェクトFS1の水平方向(XZ方向)に加わり、当該荷重が浮遊石オブジェクトFS1の水平方向の耐荷重量を超えている状態となる。本実施例では、仮想空間における水平方向(XZ方向)に上記水平方向の耐荷重量を超える荷重が浮遊石オブジェクトFS1に加えられた場合、上記水平方向に戻す力をオフ(解除)する。これによって、
図17の下図に示すように、浮遊石オブジェクトFS1に加えられているオブジェクトOBJ6の推進力による荷重を相殺する水平方向の力がなくなるため、浮遊石オブジェクトFS1は、オブジェクトOBJ6の推進力による荷重に基づいた移動速度V3で空中を水平方向に移動する。なお、浮遊石オブジェクトFS1が空中を水平方向に移動する場合も、移動速度を減衰させる水平方向の力が浮遊石オブジェクトFS1に加えられてもよい。
【0104】
一方、上下方向(Y方向)に関しては、上下方向の耐荷重量を超えない荷重が浮遊石オブジェクトFS1に加えられているため、浮遊石オブジェクトFS1の上下方向の位置を維持するための戻す力が浮遊石オブジェクトFS1の上下方向に加えられている状態が継続している。したがって、浮遊石オブジェクトFS1に乗っているプレイヤキャラクタPC(およびオブジェクトOBJ5)の重量による上下方向の荷重を相殺する上下方向の戻す力がさらに加わっているため、浮遊石オブジェクトFS1は、プレイヤキャラクタPC(およびオブジェクトOBJ5)を乗せる前の上下方向の位置を維持するように、仮想空間の空中に配置される。
【0105】
このように、浮遊石オブジェクトFS1がプレイヤキャラクタPCを乗せながら、オブジェクトOBJ6によって水平方向に押されている状態は、上下方向の位置を維持するように制御されるものの、水平方向の位置が移動速度V3で移動するように制御されるため、結果的に浮遊石オブジェクトFS1は、仮想空間の空中を水平方向に移動速度V3で移動することになる。上記第3のゲーム処理例では、上下方向と水平方向とについて、別々の耐荷重量を設け、それぞれについて位置を維持させる挙動をさせることで、一方の方向に関する荷重が耐荷重を超えた場合に他方の方向の移動もしてしまう状況を抑制でき、上下方向と水平方向との移動をそれぞれ制御することができる。
【0106】
図18および
図19を用いて、他の浮遊オブジェクトに水平方向および上下方向の荷重が加えられる第4のゲーム処理例の概要について説明する。なお、
図18は、オブジェクトOBJ7による水平方向の推進力が加えられた状態で空中に配置されている浮遊ステージオブジェクトFS2の様子を示すゲーム画像の一例である。
図19は、第4のゲーム処理例において浮遊ステージオブジェクトFS2に加えられている荷重や移動速度の一例を示す図である。
【0107】
浮遊ステージオブジェクトFS2は、仮想空間の空中に配置される浮遊オブジェクトの他の例である。浮遊ステージオブジェクトFS2は、仮想空間の空中で静止可能なステージ状の剛体であり、その上に他のオブジェクトやキャラクタ(例えば、プレイヤキャラクタPC)を乗せることができる。浮遊ステージオブジェクトFS2は、外部から荷重が加えられていない状態では、浮遊石オブジェクトFS1と同様に仮想空間の空中に浮いた状態で静止またはその位置で浮遊して配置される。そして、ユーザの動作指示操作入力に応じて、プレイヤキャラクタPCが浮遊ステージオブジェクトFS2の上に乗るアクションを行う制御が可能となり、この場合、浮遊ステージオブジェクトFS2は、プレイヤキャラクタPCが高所で留まるための浮遊足場として機能する。なお、浮遊ステージオブジェクトFS2も、自身の重量(自重)がない剛体として設定されてもよいし、所定の重量を有する剛体として設定されてもよい。
【0108】
上述した浮遊石オブジェクトFS1は、空中に浮かんだ状態で仮想空間の上下方向および水平方向に移動可能であるが、仮想空間の上方向、下方向、および水平方向にそれぞれ耐荷重量が設定されており、当該耐荷重量を超えない荷重が加えられてもその位置から移動しないように制御されていた。一方、浮遊ステージオブジェクトFS2も、空中に浮かんだ状態で仮想空間の上下方向および水平方向に移動可能であるが、仮想空間の下方向のみに耐荷重量が設定されている。つまり、浮遊ステージオブジェクトFS2は、仮想空間の下方向に耐荷重量を超えない荷重が加えられた場合、その位置から仮想空間の下方向へ移動しないように制御され、仮想空間の下方向に耐荷重量を超える荷重が加えられた場合に、その位置から降下するように制御される。浮遊ステージオブジェクトFS2は、他の方向(上方向および水平方向)に関しては、耐荷重量が設定されていないため、当該方向への荷重が加えられた場合、耐荷重量による制限を受けることなく当該荷重に基づいた移動速度で空中を移動する。なお、浮遊ステージオブジェクトFS2に設定されている下方向への移動に関する耐荷重量は、上述した浮遊石オブジェクトFS1の上下方向および水平方向への移動に関する耐荷重量と同じ荷重量でもよいし、異なる荷重量でもよい。
【0109】
浮遊ステージオブジェクトFS2においても、上下方向に加えられる荷重と水平方向に加えられる荷重とがそれぞれ独立して制御される。例えば、
図18に示す浮遊ステージオブジェクトFS2は、下方向の荷重に対して設定されている耐荷重量よりも軽いプレイヤキャラクタPCを乗せながら、2つのロケットの推進力により移動するオブジェクトOBJ7との接触により水平方向へ押されている。オブジェクトOBJ7は、浮遊ステージオブジェクトFS2と離間可能な状態で浮遊ステージオブジェクトFS2に接触して押している状態であってもよいし、後述するように浮遊ステージオブジェクトFS2に結合されて一体化していてもよい。下方向に関して、プレイヤキャラクタPCの重量による荷重にオブジェクトOBJ7の重量等による上下方向の荷重が加わったとしても、当該下方向の耐荷重量を超えていないため、浮遊ステージオブジェクトFS2は、当該プレイヤキャラクタPCを乗せる前の上下方向の位置を維持するように、仮想空間の空中に配置されている。
【0110】
一方、浮遊ステージオブジェクトFS2は、仮想空間における水平方向へ押された場合、上述した耐荷重量による制限を受けることなく当該水平方向へ押された荷重に基づいた移動速度で水平方向へ移動する。また、浮遊ステージオブジェクトFS2は、仮想空間の上方向へ持ち上げられた場合、上述した耐荷重量による制限を受けることなく当該上方向へ持ち上げられた荷重に基づいた移動速度で上昇する。例えば、
図18に示すように、オブジェクトOBJ7により水平方向へ押された場合、浮遊ステージオブジェクトFS2は、オブジェクトOBJ7から加えられる荷重に基づいた移動速度V4で仮想空間を水平方向へ移動する。
【0111】
これらの水平方向および上下方向それぞれの制御により、水平方向へはオブジェクトOBJ7の推進力に基づいて移動するものの上下方向には移動しない動作制御が行われるため、浮遊ステージオブジェクトFS2は、結果的に仮想空間における水平方向へ移動速度V4で移動することになる。なお、浮遊ステージオブジェクトFS2は、オブジェクトOBJ7の推進力によるXZ方向への荷重に基づいた移動速度で水平方向へ移動するが、浮遊ステージオブジェクトFS2が空中を水平方向に移動する場合も、その移動速度を減衰させる力が浮遊ステージオブジェクトFS2に加えられてもよい。また、浮遊ステージオブジェクトFS2が空中を他の方向に移動する場合も、その移動速度を減衰させる力が浮遊ステージオブジェクトFS2に加えられてもよい。
【0112】
図19を参照して、上述した状態において浮遊ステージオブジェクトFS2に加わる荷重および浮遊ステージオブジェクトFS2に生じる移動速度について説明する。
【0113】
図19に示す状態では、オブジェクトOBJ7の推進力による荷重が浮遊ステージオブジェクトFS2の水平方向(XZ方向)に加えられている。本実施例では、仮想空間における水平方向(XZ方向)に荷重が浮遊ステージオブジェクトFS2に加えられた場合、上述した耐荷重量による制限を受けることなくオブジェクトOBJ7の推進力による荷重に基づいた移動速度V4で空中を水平方向に移動する。そして、浮遊ステージオブジェクトFS2が空中を水平方向に移動する移動速度を減衰させる水平方向の力が浮遊ステージオブジェクトFS2に加えられている。
【0114】
一方、下方向(Y負方向)に関しては、下方向の耐荷重量を超えない荷重が浮遊ステージオブジェクトFS2に加えられているため、浮遊ステージオブジェクトFS2の上下方向の位置を維持するための戻す力が浮遊ステージオブジェクトFS2の上方向(Y正方向)に加えられている状態となっている。したがって、浮遊ステージオブジェクトFS2に乗っているプレイヤキャラクタPC(およびオブジェクトOBJ7)の重量による下方向の荷重を相殺する上方向の戻す力がさらに加わっているため、浮遊ステージオブジェクトFS2は、プレイヤキャラクタPC(およびオブジェクトOBJ7)を乗せる前の上下方向の位置を維持するように、仮想空間の空中に配置される。
【0115】
なお、浮遊ステージオブジェクトFS2に加えられる上方向への戻す力も、浮遊ステージオブジェクトFS2の下方向への動きに基づいて算出されてもよい。例えば、上記上方向への戻す力を加えずにプレイヤキャラクタPC等の重量による荷重によってY負方向に移動する場合の浮遊ステージオブジェクトFS2の位置および姿勢を算出し、当該算出された位置および姿勢から記憶されている直前の位置および姿勢(具体的には、前回の処理(前フレームの処理)において更新された位置および姿勢)に仮想空間における上方向(Y正方向)へ戻すための力を、浮遊ステージオブジェクトFS2にさらに加える戻す力として算出してもよい。
【0116】
このように、浮遊ステージオブジェクトFS2がプレイヤキャラクタPCを乗せながら、オブジェクトOBJ7によって水平方向に押されている状態は、上下方向の位置を維持するように制御されるものの、水平方向の位置が移動速度V4で移動するように制御されるため、結果的に浮遊ステージオブジェクトFS2は、仮想空間の空中を水平方向に移動速度V4で移動することになる。
【0117】
なお、本実施例では、複数のオブジェクトが結合されて一体化された組立品オブジェクトが生成されてもよい。例えば、上述した浮遊オブジェクトに他のオブジェクトが接着されることにより、一体化された組立品オブジェクトが生成されてもよい。以下、
図20を参照して、プレイヤキャラクタPCがオブジェクト操作アクションにより組立品オブジェクトを生成する例について説明する。なお、
図20は、プレイヤキャラクタPCがオブジェクト操作アクションにより制御対象(オブジェクトOBJ8)を移動させて浮遊石オブジェクトFS1に接着することにより組立品オブジェクトASを生成している様子を示すゲーム画像の一例である。
【0118】
プレイヤキャラクタPCは、ユーザ操作入力に応じて行う複数のアクションの1つとして、オブジェクト操作アクションを行うことができる。オブジェクト操作アクションは、例えば、プレイヤキャラクタPCの前方にある操作可能オブジェクトを制御対象として遠隔で操作するアクションである。例えば、プレイヤの操作入力に基づいて、仮想空間に配置された複数の操作可能オブジェクトのうちの何れかがオブジェクト操作アクションの制御対象として設定され、仮想空間内で当該制御対象の移動制御や姿勢制御が行われる。また、オブジェクト操作アクションに基づいて、制御対象が、仮想空間に配置された他のオブジェクトに組み付けられて当該他のオブジェクトと接着することにより組立品オブジェクトが生成される。
【0119】
図20に示すように、プレイヤキャラクタPCの前方(または仮想カメラの注視点近傍)にオブジェクト操作アクションによる制御対象となり得る操作可能オブジェクトが配置されているときに、所定のユーザ操作入力が行われた場合、プレイヤキャラクタPCは当該操作可能オブジェクトに対してオブジェクト操作アクションを行うことができる。
図20に示す例では、所定のユーザ選択操作入力に応じて、操作可能オブジェクトOBJ8が制御対象として選択されて、オブジェクト操作アクションが行われている。例えば、操作可能オブジェクトOBJ8は、他のオブジェクトに接合されることにより当該他のオブジェクトに推進力を与える動力源となるオブジェクト(例えば、ロケット)である。操作可能オブジェクトOBJ8に対してオブジェクト操作アクションが行われている状態では、操作可能オブジェクトOBJ8は、仮想空間の地面から浮いた状態になるとともに、通常とは異なる表示態様になる。具体的には、制御対象となっている操作可能オブジェクトは、他のオブジェクトとは異なる色で表示されたり、エフェクト画像が付加されて表示されたり、他のオブジェクトに付加されるエフェクト画像とは異なるエフェクト画像が付加されて表示されたりする(なお、
図20においては、表示態様の違いを斜線により表している)。また、本実施例では、オブジェクト操作アクションが行われていることを示すエフェクト画像も表示される(なお、
図20においては、当該エフェクト画像を破線により表している)。これらにより、ゲームフィールドを示すゲーム画像が表示される状態において、ゲームフィールド上のオブジェクトのうちでオブジェクト操作アクションの制御対象となった操作可能オブジェクトやオブジェクト操作アクションが行われていることをユーザにわかりやすく提示することができる。
【0120】
上記オブジェクト操作アクション中に、所定のユーザの操作入力(例えば、左コントローラ3のアナログスティック32を傾倒する方向操作入力)に応じてプレイヤキャラクタPCが移動した場合、当該オブジェクト操作アクションの制御対象となっている操作可能オブジェクトOBJ8も移動する。また、上記オブジェクト操作アクション中に、所定のユーザの操作入力(例えば、右コントローラ4のアナログスティック52を傾倒する方向操作入力)が行われた場合、プレイヤキャラクタPCの向きが変化するとともに、プレイヤキャラクタPCの正面に制御対象が位置するように、操作可能オブジェクトOBJ8が仮想空間内で移動してもよい。さらに、上記オブジェクト操作アクション中に、所定のユーザの操作入力(例えば、方向キー33~36を押下する方向操作入力)が行われた場合、制御対象である操作可能オブジェクトOBJ8のみが仮想空間内で移動してもよい。さらに、上記オブジェクト操作アクション中に、所定のユーザの操作入力(例えば、操作ボタン60(Rボタン)を押下しながら方向キー33~36を押下する操作入力)が行われた場合、制御対象である操作可能オブジェクトOBJ8のみが仮想空間内で回転してもよい。
【0121】
オブジェクト操作アクションにより、操作可能オブジェクトOBJ8を浮遊石オブジェクトFS1に向かって移動させ、操作可能オブジェクトOBJ8と浮遊石オブジェクトFS1とが所定の接続条件(例えば、両者の距離が閾値未満)を満たす場合、操作可能オブジェクトOBJ8と浮遊石オブジェクトFS1とを結ぶ接着オブジェクトGが出現する。具体的には、操作可能オブジェクトOBJ8の表面における最も浮遊石オブジェクトFS1に近い位置が、接着位置の一方として設定される。同様に、浮遊石オブジェクトFS1の表面における最も操作可能オブジェクトOBJ8に近い位置が、接着位置の他方として設定される。そして、接着オブジェクトGは、これら2つの接着位置を結ぶように表示される。
【0122】
そして、ユーザの接着指示操作入力(例えば、操作ボタン53(Aボタン)を押下する操作入力)が行われることに応じて、操作可能オブジェクトOBJ8と浮遊石オブジェクトFS1とが接着されて組立品オブジェクトASが生成される。一例として、操作可能オブジェクトOBJ8における上記接着位置の一方と浮遊石オブジェクトFS1における上記接着位置の他方とが接触するように操作可能オブジェクトOBJ8と浮遊石オブジェクトFS1とが接着される。そして、操作可能オブジェクトOBJ8と浮遊石オブジェクトFS1とが接着された後も、これらのオブジェクトの接着部位に当該接着後の隙間形状に合わせた形状に変形した接着オブジェクトGが残留して表示されてもよい。
【0123】
このように、本実施例では、接着する操作可能オブジェクトをユーザが任意に選択できるとともに、当該選択された操作可能オブジェクトをユーザが任意の位置に任意の姿勢で浮遊オブジェクトに接着して組立品オブジェクトを生成できる。ここで、本実施例において、オブジェクト同士の「接着」とは、オブジェクト同士が近接した位置で結合されて一体的なオブジェクトとしてふるまうことを意味する。例えば、2つのオブジェクトが接着されている場合、当該2つのオブジェクトは互いに接してもよい。また、2つのオブジェクトが接着されている場合、2つのオブジェクトが厳密に接していなくてもよく、例えば、2つのオブジェクト間に、間隙があったり、上述した接着オブジェクトGが介在したりしてもよい。また、「複数のオブジェクトが一体的なオブジェクトとしてふるまう」とは、複数のオブジェクトの相対的な位置関係が維持され、複数のオブジェクトが1つのオブジェクトであるかのように仮想空間内を移動したり、姿勢を変化させたりすることを含む。つまり、複数のオブジェクトが結合されて生成された組立品オブジェクトは、一体的なオブジェクトとして仮想空間に配置される。なお、接着された複数のオブジェクトの相対的な位置関係が完全に固定されず、例えば、複数のオブジェクトの何れかに力が加わったり、衝撃が加わったりした場合に、これらが接着されたまま、これらの位置関係に多少の変化があってもよい。
【0124】
このような浮遊オブジェクトに他のオブジェクトが結合された組立品オブジェクトにおいても、上述した物理判定や物理演算が同様に行われてもよい。例えば、組立品オブジェクトとして結合されたオブジェクト同士の相互作用に基づいて、それぞれのオブジェクトに加えられる力を計算することにより、組立品オブジェクト全体が一体となって移動してもよいし、組立品オブジェクトを一体となった1つのオブジェクトとして物理演算してもよい。
【0125】
上述した組立品オブジェクトが生成される場合、
図20で例示した組立品オブジェクトASを構成するオブジェクトOBJ8のように、当該組立品オブジェクトASを動作させる動力源や当該組立品オブジェクトASの動作を制御する操縦装置等として機能する機能オブジェクトが含まれていてもよい。例えば、浮遊オブジェクト(浮遊石オブジェクトFS1、浮遊ステージオブジェクトFS2)に、上述したオブジェクトOBJ3~OBJ7の何れかが結合されることにより組立品オブジェクトが構成されてもよい。浮遊オブジェクトに上記機能オブジェクトが結合されて一体化されている場合、組立品オブジェクトは、プレイヤキャラクタPCが乗って操作するアクションに応じて、仮想空間内において移動したり動作したりしてもよい。
【0126】
また、上述した第1~第4のゲーム処理例では、仮想空間の上下方向および水平方向にそれぞれ耐荷重量による制限が設定されて上下方向および水平方向に移動可能な浮遊オブジェクト(浮遊石オブジェクトFS1)と、仮想空間の下方向に耐荷重量による制限が設定されて上下方向および水平方向に移動可能な浮遊オブジェクト(浮遊ステージオブジェクトFS2)との例を用いて説明したが、浮遊オブジェクトに対する各方向への動作制御の態様は、これらの例に限られない。第1の例として、仮想空間における上下方向のうち、少なくとも下方向に耐荷重量による制限が設定されて、当該上下方向に移動可能であるが、水平方向への移動ができない浮遊オブジェクトであってもよい。第2の例として、仮想空間の上下方向にそれぞれ耐荷重量による制限が設定されて、上下方向および水平方向に移動可能な浮遊オブジェクトであってもよい。第3の例として、仮想空間の下方向および水平方向にそれぞれ耐荷重量による制限が設定されて、当該下方向および水平方向に移動可能であるが、上方向への移動ができない浮遊オブジェクトであってもよい。第4の例として、仮想空間の下方向に耐荷重量による制限が設定されて、当該下方向に移動可能であるが、上方向および水平方向への移動ができない浮遊オブジェクトであってもよい。
【0127】
また、上述した説明では、浮遊オブジェクトの例として浮遊石オブジェクトFS1と浮遊ステージオブジェクトFS2とを挙げたが、浮遊オブジェクトは、他の形状の盤状のオブジェクトでもよいし、他の態様のオブジェクトでもよい。例えば、浮遊オブジェクトは、厚地の織物や網等のシート状のオブジェクトであってもよいし、水滴や氷摘が固まって浮かぶ雲状のオブジェクトであってもよいし、各種立体形状や複雑な形状の剛体や軟体で構成される立体オブジェクトであってもよい。
【0128】
また、浮遊オブジェクトに推進力を加えるオブジェクトの動力源は、ロケットに限らない。例えば、プロペラを駆動して前進する動力源でもよいし、伸縮により推進力を与える動力源でもよいし、磁力や浮力により推進力を与える動力源でもよいし、圧縮された気体を吹き出すことにより推進力を与える動力源でもよいし、浮遊オブジェクトを動かす動作(投げる、蹴る、叩く、押す、引っ張る、持ち上げる等)により推進力を与えるキャラクタが動力源でもよい。
【0129】
また、上述した浮遊オブジェクトに加えられている荷重や浮遊オブジェクトに加える戻す力は、他の方法によって算出されてもよい。例えば、荷重が加えられることによる浮遊オブジェクトの動き(速度、加速度、角速度、角加速度等)に基づいて、当該浮遊オブジェクトに加えられている荷重や当該浮遊オブジェクトに加える戻す力を算出してもよい。また、浮遊オブジェクトに相互作用を与えているオブジェクト毎(例えば、浮遊オブジェクトに乗っているオブジェクト毎)に、当該浮遊オブジェクトに加えている荷重を算出し、当該荷重を総和することにより、当該浮遊オブジェクトに加えられている荷重や当該浮遊オブジェクトに加える戻す力を算出してもよい。
【0130】
また、上述した例では、浮遊オブジェクトの自重を0として説明したが、当該自重を所定の重量に設定してもよい。一例として、上記自重による浮遊オブジェクトの移動や動作を当該移動前の位置や姿勢に戻すための戻す力を、常に当該浮遊オブジェクトに加えることにより、空中で静止または浮遊する浮遊オブジェクトを実現してもよい。この場合、浮遊オブジェクトに設定される耐荷重量は、当該浮遊オブジェクトの自重未満に設定してもよい。
【0131】
また、上述した説明では、前回の処理(前フレームの処理)において記憶された位置および姿勢に浮遊オブジェクトを戻すための力を、戻す力として算出する例を用いた。他の実施例においては、前回より前の処理(2フレーム以上前の処理)において記憶された位置および姿勢に浮遊オブジェクトを戻すための力を、戻す力として算出してもよい。この場合、浮遊オブジェクトの位置および姿勢の履歴を2フレーム以上前まで記憶しておき、当該履歴を用いて上記戻す力を算出してもよい。
【0132】
次に、
図21を参照して、ゲームシステム1で実行される具体的な処理の一例について説明する。
図21は、本体装置2のDRAM85に設定されるデータ領域の一例を示す図である。なお、DRAM85には、
図21に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。
【0133】
DRAM85のプログラム記憶領域には、ゲームシステム1で実行される各種プログラムPaが記憶される。本実施例においては、各種プログラムPaは、左コントローラ3および/または右コントローラ4や本体装置2から取得したデータに基づいた情報処理を行うためのアプリケーションプログラム(例えば、ゲームプログラム)等が記憶される。なお、各種プログラムPaは、フラッシュメモリ84に予め記憶されていてもよいし、ゲームシステム1に着脱可能な記憶媒体(例えば、スロット23に装着された所定の種類の記憶媒体)から取得されてDRAM85に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてDRAM85に記憶されてもよい。プロセッサ81は、DRAM85に記憶された各種プログラムPaを実行する。
【0134】
また、DRAM85のデータ記憶領域には、ゲームシステム1において実行される情報処理等の処理において用いられる各種のデータが記憶される。本実施例においては、DRAM85には、操作データDa、プレイヤキャラクタデータDb、浮遊石オブジェクトデータDc、浮遊ステージオブジェクトデータDd、オブジェクトデータDe、荷重データDf、移動量データDg、戻す力データDh、仮想カメラデータDi、および画像データDj等が記憶される。
【0135】
操作データDaは、左コントローラ3および/または右コントローラ4や本体装置2からそれぞれ適宜取得した操作データである。上述したように、左コントローラ3および/または右コントローラ4や本体装置2からそれぞれ取得される操作データには、各入力部(具体的には、各ボタン、アナログスティック、タッチパネル)からの入力に関する情報(具体的には、操作に関する情報)が含まれている。本実施例では、左コントローラ3および/または右コントローラ4や本体装置2からそれぞれ操作データを取得しており、当該取得した操作データを用いて操作データDaが適宜更新される。なお、操作データDaの更新周期は、後述するゲームシステム1で実行される処理の周期である1フレーム毎に更新されてもよいし、上記操作データが取得される周期毎に更新されてもよい。
【0136】
プレイヤキャラクタデータDbは、仮想空間に配置されているプレイヤキャラクタPCの配置位置、配置方向、および配置姿勢や、仮想空間における動作や状態(移動速度等の移動パラメータを含む)等を示すデータである。
【0137】
浮遊石オブジェクトデータDcは、仮想空間に配置されている浮遊石オブジェクトそれぞれの配置位置、配置方向、および配置姿勢や、仮想空間における動作や状態(速度、加速度、角速度、角加速度等のパラメータを含む)等を示すデータである。
【0138】
浮遊ステージオブジェクトデータDdは、仮想空間に配置されている浮遊ステージオブジェクトそれぞれの配置位置、配置方向、および配置姿勢や、仮想空間における動作や状態(速度、加速度、角速度、角加速度等のパラメータを含む)等を示すデータである。
【0139】
オブジェクトデータDeは、仮想空間に配置されている各オブジェクトの配置位置、配置方向、および配置姿勢や、仮想空間における動作や状態(速度、加速度、角速度、角加速度等のパラメータを含む)等を示すデータである。
【0140】
荷重データDfは、仮想空間に配置されている各キャラクタ(プレイヤキャラクタPC)やオブジェクト(浮遊石オブジェクトおよび浮遊ステージオブジェクト)それぞれに加わっている荷重(戻す力を除く)およびそれぞれが他のオブジェクトに与えている荷重を示すデータである。
【0141】
移動量データDgは、仮想空間に配置されている浮遊石オブジェクトおよび浮遊ステージオブジェクトそれぞれの移動量を示すデータである。
【0142】
戻す力データDhは、仮想空間に配置されている浮遊石オブジェクトおよび浮遊ステージオブジェクトそれぞれについて設定されたY方向の戻す力およびXZ方向の戻す力をそれぞれ示すデータである。
【0143】
仮想カメラデータDiは、仮想空間に配置されている仮想カメラの位置、方向、画角等を示すデータである。
【0144】
画像データDjは、表示画面(例えば、本体装置2のディスプレイ12)に画像(例えば、プレイヤキャラクタPCの画像、各オブジェクトの画像、他のキャラクタの画像、仮想空間のフィールドの画像、背景画像等)を表示するためのデータである。
【0145】
次に、
図22~
図25を参照して、本実施例における情報処理の一例であるゲーム処理の詳細な一例を説明する。
図22は、ゲームシステム1で実行されるゲーム処理の一例を示すフローチャートである。
図23は、
図22のステップS123における動的オブジェクト更新処理の一例を示すサブルーチンである。
図24は、
図23のステップS134における浮遊石更新処理の一例を示すサブルーチンである。
図25は、
図23のステップS136における浮遊ステージ更新処理の一例を示すサブルーチンである。本実施例においては、
図22~
図25に示す一連の処理は、プロセッサ81が各種プログラムPaに含まれる所定のアプリケーションプログラム(ゲームプログラム)を実行することによって行われる。また、
図22~
図25に示すゲーム処理が開始されるタイミングは任意である。
【0146】
なお、
図22~
図25に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施例では、上記フローチャートの各ステップの処理をプロセッサ81が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、プロセッサ81以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置2において実行される処理の一部は、本体装置2と通信可能な他の情報処理装置(例えば、本体装置2とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、
図22~
図25に示す各処理は、本体装置2を含む複数の情報処理装置が協働することによって実行されてもよい。
【0147】
図22において、プロセッサ81は、ゲーム処理における初期設定を行い(ステップS121)、次のステップに処理を進める。例えば、上記初期設定では、プロセッサ81は、以下に説明する処理を行うためのパラメータを初期化して、各データを更新する。一例として、プロセッサ81は、仮想空間のゲームフィールドに各種オブジェクトやキャラクタ等を配置することによって初期状態の仮想空間を生成して、浮遊石オブジェクトデータDc、浮遊ステージオブジェクトデータDd、およびオブジェクトデータDeを更新する。また、プロセッサ81は、初期状態の仮想空間におけるデフォルト位置に所定の姿勢のプレイヤキャラクタPCおよび仮想カメラを配置して、プレイヤキャラクタデータDbおよび仮想カメラデータDiを更新する。
【0148】
次に、プロセッサ81は、左コントローラ3、右コントローラ4、および/または本体装置2から操作データを取得して操作データDaを更新し(ステップS122)、次のステップに処理を進める。
【0149】
次に、プロセッサ81は、動的オブジェクト更新処理を行い(ステップS123)、ステップS124に処理を進める。以下、
図23を参照して、上記ステップS123における動的オブジェクト更新処理について説明する。
【0150】
図23において、プロセッサ81は、仮想空間に配置されている全ての動的オブジェクトに対するステップS132~S137の処理が完了したか否かを判定する(ステップS131)。ここで、上記ステップS123の処理において扱われる動的オブジェクトは、仮想空間において移動可能なオブジェクトであり、上述した浮遊石オブジェクトFS1や浮遊ステージオブジェクトFS2等の浮遊オブジェクトを含む仮想空間に配置されているオブジェクト、複数のオブジェクトが結合された組立品オブジェクト、プレイヤキャラクタPC、敵キャラクタ等の他のノンプレイヤキャラクタ、仮想空間に配置されているアイテムオブジェクト等を含む概念である。そして、プロセッサ81は、全ての動的オブジェクトに対するステップS132~S137の処理が完了していない場合、ステップS132に処理を進める。一方、プロセッサ81は、全ての動的オブジェクトに対するステップS132~S137の処理が完了している場合、ステップS138に処理を進める。
【0151】
ステップS132において、プロセッサ81は、仮想空間に配置されている全ての動的オブジェクトのうち、ステップS133~S137の処理が完了していない動的オブジェクトを選択し、次のステップに処理を進める。
【0152】
次に、プロセッサ81は、処理対象となっている動的オブジェクトが浮遊石オブジェクトFS1(
図8~
図17参照)であるか否かを判定する(ステップS133)。そして、プロセッサ81は、処理対象となっている動的オブジェクトが浮遊石オブジェクトFS1である場合、ステップS134に処理を進める。一方、プロセッサ81は、処理対象となっている動的オブジェクトが浮遊石オブジェクトFS1でない場合、ステップS135に処理を進める。
【0153】
ステップS134において、プロセッサ81は、浮遊石更新処理を行い、次のステップS135に処理を進める。以下、
図24を参照して、上記ステップS134における浮遊石更新処理について説明する。
【0154】
図24において、プロセッサ81は、処理対象となっている浮遊石オブジェクトFS1の移動量を仮計算し(ステップS151)、次のステップに処理を進める。例えば、プロセッサ81は、処理対象となっている浮遊石オブジェクトFS1の浮遊石オブジェクトデータDc、荷重データDf、および戻す力データDhを参照して、当該浮遊石オブジェクトFS1にかかる力(重量や推進力による荷重や移動している場合の推進力を含む)や当該浮遊石オブジェクトFS1と他のオブジェクトとの衝突等に基づく物理演算により、当該浮遊石オブジェクトFS1の動作(移動速度、移動加速度、移動角速度、移動角加速度、移動方向等)を算出して、当該動作後の浮遊石オブジェクトFS1の位置および姿勢を仮計算する。そして、プロセッサ81は、浮遊石オブジェクトデータDcを参照して前回の処理(前フレームにおける処理)において設定されている当該浮遊石オブジェクトFS1の位置および姿勢を取得し、上記仮計算された当該浮遊石オブジェクトFS1の位置および姿勢との上下方向(Y方向)の差分、すなわち当該浮遊石オブジェクトFS1におけるY方向の移動量を仮計算して、当該浮遊石オブジェクトFS1に関する移動量データDgを更新する。
【0155】
次に、プロセッサ81は、処理対象となっている浮遊石オブジェクトFS1に加えられている上下方向(Y方向)の荷重を算出し(ステップS152)、次のステップに処理を進める。例えば、プロセッサ81は、上記ステップS151において仮計算されたY方向の移動量を処理対象となっている浮遊石オブジェクトFS1に生じさせるためのY方向の力を、物理演算に基づいて算出する。そして、プロセッサ81は、戻す力データDhを参照して前回の処理(前フレームにおける処理)において当該浮遊石オブジェクトFS1に加えられていたY方向の戻す力を取得して、算出されたY方向の力から当該戻す力を差し引くことにより、当該浮遊石オブジェクトFS1に加えられているY方向の荷重を算出する。
【0156】
次に、プロセッサ81は、上記ステップS152において算出されたY方向の荷重が、処理対象となっている浮遊石オブジェクトFS1に設定されているY方向の耐荷重量以上であるか否かを判定する(ステップS153)。そして、プロセッサ81は、上記Y方向の荷重が耐荷重量未満である場合、ステップS154に処理を進める。一方、プロセッサ81は、上記Y方向の荷重が耐荷重量以上である場合、ステップS155に処理を進める。
【0157】
ステップS154において、プロセッサ81は、Y方向に戻す力を処理対象となっている浮遊石オブジェクトFS1に加えて、ステップS156に処理を進める。例えば、プロセッサ81は、上記ステップS151において仮計算された浮遊石オブジェクトFS1の位置および姿勢から前回の処理(前フレームにおける処理)において設定されている当該浮遊石オブジェクトFS1の位置および姿勢にY方向へ戻す力を、当該浮遊石オブジェクトFS1にさらに加えて、戻す力データDhにおける当該浮遊石オブジェクトFS1のY方向の戻す力を更新する。
【0158】
一方、ステップS155において、プロセッサ81は、処理対象となっている浮遊石オブジェクトFS1に加えられているY方向の戻す力をオフ(解除)して、ステップS156に処理を進める。例えば、プロセッサ81は、処理対象となっている浮遊石オブジェクトFS1に加えられているY方向の戻す力を解除して、戻す力データDhにおける当該浮遊石オブジェクトFS1のY方向の戻す力を更新する。
【0159】
ステップS156において、プロセッサ81は、処理対象となっている浮遊石オブジェクトFS1に加えられている水平方向(XZ方向)の荷重を算出し、次のステップに処理を進める。例えば、プロセッサ81は、上記ステップS151において仮計算されたXZ方向の移動量を処理対象となっている浮遊石オブジェクトFS1に生じさせるためのXZ方向の力を、物理演算に基づいて算出する。そして、プロセッサ81は、戻す力データDhを参照して前回の処理(前フレームにおける処理)において当該浮遊石オブジェクトFS1に加えられていたXZ方向の戻す力を取得して、算出されたXZ方向の力から当該戻す力を差し引くことにより、当該浮遊石オブジェクトFS1に加えられているXZ方向の荷重を算出する。
【0160】
次に、プロセッサ81は、上記ステップS156において算出されたXZ方向の荷重が、処理対象となっている浮遊石オブジェクトFS1に設定されているXZ方向の耐荷重量以上であるか否かを判定する(ステップS157)。そして、プロセッサ81は、上記XZ方向の荷重が耐荷重量未満である場合、ステップS158に処理を進める。一方、プロセッサ81は、上記XZ方向の荷重が耐荷重量以上である場合、ステップS159に処理を進める。
【0161】
ステップS158において、プロセッサ81は、XZ方向に戻す力を処理対象となっている浮遊石オブジェクトFS1に加えて、ステップS160に処理を進める。例えば、プロセッサ81は、上記ステップS151において仮計算された浮遊石オブジェクトFS1の位置および姿勢から前回の処理(前フレームにおける処理)において設定されている当該浮遊石オブジェクトFS1の位置および姿勢にXZ方向へ戻す力を、当該浮遊石オブジェクトFS1にさらに加えて、戻す力データDhにおける当該浮遊石オブジェクトFS1のXZ方向の戻す力を更新する。
【0162】
一方、ステップS159において、プロセッサ81は、処理対象となっている浮遊石オブジェクトFS1に加えられているXZ方向の戻す力をオフ(解除)して、ステップS160に処理を進める。例えば、プロセッサ81は、処理対象となっている浮遊石オブジェクトFS1に加えられているXZ方向の戻す力を解除して、戻す力データDhにおける当該浮遊石オブジェクトFS1のXZ方向の戻す力を更新する。
【0163】
ステップS160において、プロセッサ81は、処理対象となっている浮遊石オブジェクトFS1が移動中である場合、移動速度を減衰させる力を当該浮遊石オブジェクトFS1に加えて荷重データDfを更新して、当該サブルーチンによる処理を終了する。例えば、プロセッサ81は、処理対象となっている浮遊石オブジェクトFS1の移動速度に1未満の値が乗算される減衰を生じさせる力や当該移動速度から所定の値が減算される減衰を生じさせる力を当該浮遊石オブジェクトFS1に加えて荷重データDfを更新する。なお、浮遊石オブジェクトFS1の移動速度を減衰させる力は、移動方向に応じて、異なる減衰が行われてもよい。例えば、移動速度を減衰させる力は、Y負方向への移動速度成分、Y正方向への移動速度成分、およびXZ方向への移動方向成分それぞれに対して、異なる減衰が行われてもよい。
【0164】
図23に戻り、プロセッサ81は、処理対象となっている動的オブジェクトが浮遊ステージオブジェクトFS2(
図18および
図19参照)であるか否かを判定する(ステップS135)。そして、プロセッサ81は、処理対象となっている動的オブジェクトが浮遊ステージオブジェクトFS2である場合、ステップS136に処理を進める。一方、プロセッサ81は、処理対象となっている動的オブジェクトが浮遊ステージオブジェクトFS2でない場合、ステップS137に処理を進める。
【0165】
ステップS136において、プロセッサ81は、浮遊ステージ更新処理を行い、次のステップS137に処理を進める。以下、
図25を参照して、上記ステップS136における浮遊ステージ更新処理について説明する。
【0166】
図25において、プロセッサ81は、処理対象となっている浮遊ステージオブジェクトFS2の移動量を仮計算し(ステップS171)、次のステップに処理を進める。例えば、プロセッサ81は、処理対象となっている浮遊ステージオブジェクトFS2の浮遊ステージオブジェクトデータDd、荷重データDf、および戻す力データDhを参照して、当該浮遊ステージオブジェクトFS2にかかる力(重量や推進力による荷重や移動している場合の推進力を含む)や当該浮遊ステージオブジェクトFS2と他のオブジェクトとの衝突等に基づく物理演算により、当該浮遊ステージオブジェクトFS2の動作(移動速度、移動加速度、移動角速度、移動角加速度、移動方向等)を算出して、当該動作後の浮遊ステージオブジェクトFS2の位置および姿勢を仮計算する。そして、プロセッサ81は、浮遊ステージオブジェクトデータDdを参照して前回の処理(前フレームにおける処理)において設定されている当該浮遊ステージオブジェクトFS2の位置および姿勢を取得し、上記仮計算された当該浮遊ステージオブジェクトFS2の位置および姿勢との上下方向(Y方向)の差分、すなわち当該浮遊ステージオブジェクトFS2におけるY方向の移動量を仮計算して、当該浮遊ステージオブジェクトFS2に関する移動量データDgを更新する。
【0167】
次に、プロセッサ81は、処理対象となっている浮遊ステージオブジェクトFS2に加えられている下方向(Y負方向)の荷重を算出し(ステップS172)、次のステップに処理を進める。例えば、プロセッサ81は、上記ステップS171において仮計算された移動量がY負方向へ移動する成分を含んでいる場合、当該Y負方向への移動量を処理対象となっている浮遊ステージオブジェクトFS2に生じさせるためのY負方向の力を、物理演算に基づいて算出する。そして、プロセッサ81は、戻す力データDhを参照して前回の処理(前フレームにおける処理)において当該浮遊ステージオブジェクトFS2に加えられていたY正方向への戻す力を取得して、算出されたY負方向の力から当該戻す力を差し引くことにより、当該浮遊ステージオブジェクトFS2に加えられているY負方向の荷重を算出する。
【0168】
次に、プロセッサ81は、上記ステップS172において算出されたY負方向の荷重が、処理対象となっている浮遊ステージオブジェクトFS2に設定されているY負方向の耐荷重量以上であるか否かを判定する(ステップS173)。そして、プロセッサ81は、上記Y負方向の荷重が耐荷重量未満である場合、ステップS174に処理を進める。一方、プロセッサ81は、上記Y負方向の荷重が耐荷重量以上である場合、ステップS175に処理を進める。
【0169】
ステップS174において、プロセッサ81は、Y負方向に戻す力を処理対象となっている浮遊ステージオブジェクトFS2に加えて、ステップS176に処理を進める。例えば、プロセッサ81は、上記ステップS171において仮計算された浮遊ステージオブジェクトFS2の位置および姿勢から前回の処理(前フレームにおける処理)において設定されている当該浮遊ステージオブジェクトFS2の位置および姿勢にY正方向へ戻す力を、当該浮遊ステージオブジェクトFS2にさらに加えて、戻す力データDhにおける当該浮遊ステージオブジェクトFS2のY正方向への戻す力を更新する。
【0170】
一方、ステップS175において、プロセッサ81は、処理対象となっている浮遊ステージオブジェクトFS2に加えられているY正方向への戻す力をオフ(解除)して、ステップS176に処理を進める。例えば、プロセッサ81は、処理対象となっている浮遊ステージオブジェクトFS2に加えられているY正方向への戻す力を解除して、戻す力データDhにおける当該浮遊ステージオブジェクトFS2のY正方向の戻す力を更新する。
【0171】
ステップS176において、プロセッサ81は、処理対象となっている浮遊ステージオブジェクトFS2が移動中である場合、移動速度を減衰させる力を当該浮遊ステージオブジェクトFS2に加えて荷重データDfを更新して、当該サブルーチンによる処理を終了する。例えば、プロセッサ81は、処理対象となっている浮遊ステージオブジェクトFS2の移動速度に1未満の値が乗算される減衰を生じさせる力や当該移動速度から所定の値が減算される減衰を生じさせる力を当該浮遊ステージオブジェクトFS2に加えて荷重データDfを更新する。なお、浮遊ステージオブジェクトFS2の移動速度を減衰させる力は、移動方向に応じて、異なる減衰が行われてもよい。例えば、移動速度を減衰させる力は、Y負方向への移動速度成分、Y正方向への移動速度成分、およびXZ方向への移動方向成分それぞれに対して、異なる減衰が行われてもよい。
【0172】
図23に戻り、ステップS137において、プロセッサ81は、処理対象の動的オブジェクトが生じる力を全て算出し、上記ステップS131に戻って処理を繰り返す。例えば、プロセッサ81は、仮想空間において処理対象となっている動的オブジェクトが生じる全ての力を物理演算により算出して、荷重データDfを更新する。ここで、動的オブジェクトが生じる力は、当該動的オブジェクトの動作や移動により生じる力や当該動的オブジェクトの周囲において他のオブジェクト以外から受ける仮想空間内の様々な力であり、仮想空間における移動および動作や振動による慣性力、当該動的オブジェクトの少なくとも一部の破壊に関する応力や飛散力、動的オブジェクトの自重による重力、仮想空間に生じている各種現象(他のオブジェクトとの相互作用を除く)に起因する圧力等を含んでいる。
【0173】
上記ステップS131において全ての動的オブジェクトに対するステップS132~S137の処理が完了していると判定された場合、プロセッサ81は、仮想空間に配置されている全ての動的オブジェクトに対するステップS139~S140の処理が完了したか否かを判定する(ステップS138)。そして、プロセッサ81は、全ての動的オブジェクトに対するステップS139~S140の処理が完了していない場合、ステップS139に処理を進める。一方、プロセッサ81は、全ての動的オブジェクトに対するステップS139~S140の処理が完了している場合、ステップS141に処理を進める。
【0174】
ステップS139において、プロセッサ81は、仮想空間に配置されている全ての動的オブジェクトのうち、ステップS140の処理が完了していない動的オブジェクトを選択し、次のステップに処理を進める。
【0175】
次に、プロセッサ81は、処理対象となっている動的オブジェクトと他のオブジェクトとの相互作用を算出し(ステップS140)、上記ステップS138に戻って処理を繰り返す。例えば、プロセッサ81は、オブジェクト同士が互いに影響(力)を及ぼし合ってそれぞれの運動状態を変えていく相互作用を物理判定によって算出し、当該相互作用により変化した運動状態に基づいて処理対象となっている動的オブジェクトに生じる力を物理演算により算出して、当該動的オブジェクトの荷重データDfを更新する。例えば、他のオブジェクトとの相互作用により算出される力は、他のオブジェクトからの攻撃により受ける力、他のオブジェクトへの攻撃による反発力、他のオブジェクトやフィールド等との衝突や接触による衝撃力や摩擦力、他のオブジェクトから押されたり引かれたり持ち上げられたり等することにより受ける推進力、接触している他のオブジェクトの重量による重力、他のオブジェクトと接合されて一体化された状態で当該他のオブジェクトから受ける応力等を含んでいる。
【0176】
上記ステップS138において全ての動的オブジェクトに対するステップS139~S140の処理が完了していると判定された場合、プロセッサ81は、仮想空間に配置されている全ての動的オブジェクトに対するステップS142~S144の処理が完了したか否かを判定する(ステップS141)。そして、プロセッサ81は、全ての動的オブジェクトに対するステップS142~S144の処理が完了していない場合、ステップS142に処理を進める。一方、プロセッサ81は、全ての動的オブジェクトに対するステップS142~S144の処理が完了している場合、当該サブルーチンによる処理を終了する。
【0177】
ステップS142において、プロセッサ81は、仮想空間に配置されている全ての動的オブジェクトのうち、ステップS143およびS144の処理が完了していない動的オブジェクトを選択し、次のステップに処理を進める。
【0178】
次に、プロセッサ81は、処理対象の動的オブジェクトに作用している力に基づいて、当該動的オブジェクトの動きを算出し(ステップS143)、次のステップに処理を進める。例えば、プロセッサ81は、処理対象の動的オブジェクトの荷重データDfおよび戻す力データDhを参照して、当該動的オブジェクトに対して作用している力(戻す力を含む)の影響(物理判定)による当該動的オブジェクトの動きパラメータ(速度、加速度、角速度、角加速度等)を算出して、プレイヤキャラクタデータDb、浮遊石オブジェクトデータDc、浮遊ステージオブジェクトデータDd、またはオブジェクトデータDeを更新する。なお、処理対象となっている動的オブジェクトに、複数の力による動きパラメータがそれぞれ算出されている場合、これらの動きパラメータを相殺したり累積したりすることにより、1つの動きパラメータにまとめられてもよい。
【0179】
上記ステップS143における動的オブジェクトの動きを算出には、ユーザ操作入力に基づいたプレイヤキャラクタPCの動作の設定や他のキャラクタにおける動作の設定も含まれる。一例として、プレイヤキャラクタPCが処理対象である場合、プロセッサ81は、操作データDaが示すユーザ操作入力および仮想空間における仮想的な物理演算(例えば、仮想的な慣性や重力)等に基づいて、プレイヤキャラクタPCの姿勢、動作、および状態等を設定して、プレイヤキャラクタデータDbを更新する。
【0180】
次に、プロセッサ81は、処理対象となっている動的オブジェクトの仮想空間における位置および姿勢を更新し(ステップS144)、上記ステップS141に戻って処理を繰り返す。例えば、プロセッサ81は、プレイヤキャラクタデータDb、浮遊石オブジェクトデータDc、浮遊ステージオブジェクトデータDd、またはオブジェクトデータDeを参照して、処理対象となっている動的オブジェクトに対して設定されている仮想空間における配置位置、配置方向、および配置姿勢と動きパラメータとを取得する。そして、プロセッサ81は、取得した動きパラメータに基づいた物理演算を行うことにより、仮想空間において上記動的オブジェクトを移動させて、当該移動後の配置位置、配置方向、および配置姿勢を用いてプレイヤキャラクタデータDb、浮遊石オブジェクトデータDc、浮遊ステージオブジェクトデータDd、またはオブジェクトデータDeを更新する。
【0181】
図22に戻り、上記ステップS123における動的オブジェクト更新処理の後、プロセッサ81は、描画処理を行い(ステップS124)、次のステップに処理を進める。例えば、プロセッサ81は、プレイヤキャラクタデータDb、浮遊石オブジェクトデータDc、浮遊ステージオブジェクトデータDd、およびオブジェクトデータDeに基づいて、仮想空間にプレイヤキャラクタPCおよび各オブジェクト等をそれぞれ配置する。また、プロセッサ81は、仮想カメラデータDiに基づいて、表示画像を生成するための仮想カメラの位置および/または姿勢を設定し、当該仮想カメラを仮想空間に配置する。そして、設定した仮想カメラから見た仮想空間の画像を生成して、当該仮想空間画像をディスプレイ12に表示する制御を行う。なお、プロセッサ81は、プレイヤキャラクタPCの位置や姿勢に基づいて、仮想空間における仮想カメラの移動を制御する処理を実行して、仮想カメラデータDiを更新してもよい。また、プロセッサ81は、操作データDaに基づいて、仮想空間において仮想カメラを移動させて、仮想カメラデータDiを更新してもよい。
【0182】
次に、プロセッサ81は、ゲーム処理を終了するか否かを判定する(ステップS125)。上記ステップS125においてゲーム処理を終了する条件としては、例えば、ゲーム処理が終了される条件が満たされたことや、ユーザがゲーム処理を終了する操作を行ったこと等がある。プロセッサ81は、ゲーム処理を終了しない場合に上記ステップS122に戻って処理を繰り返し、ゲーム処理を終了する場合に当該フローチャートによる処理を終了する。以降、ステップS122~ステップS125の一連の処理は、ステップS125で処理を終了すると判定されるまで繰り返し実行される。
【0183】
このように、本実施例における浮遊石オブジェクトFS1や浮遊ステージオブジェクトFS2は、荷重が加えられても耐荷重量を超えない荷重の場合は仮想空間における空中でその位置で浮遊する挙動をとりながら、その位置から動かすこともできる浮遊オブジェクトとして実現することができる。
【0184】
なお、ゲームシステム1は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器(PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ、タブレット等)等であってもよい。
【0185】
また、上述した説明では情報処理(ゲーム処理)をゲームシステム1で行われる例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲームシステム1がさらに他の装置(例えば、サーバ、他の情報処理装置、他の画像表示装置、他のゲーム装置、他の携帯端末)と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、ゲームシステム1のプロセッサ81が所定のプログラムを実行することによって情報処理を行うことが可能であるが、ゲームシステム1が備える専用回路によって上記処理の一部または全部が行われてもよい。
【0186】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置(据置型のゲーム装置)と携帯型の情報処理装置(携帯型のゲーム装置)との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
【0187】
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
【0188】
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じてゲームシステム1に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD-ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【0189】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
【産業上の利用可能性】
【0190】
以上のように、本発明は、仮想空間の空中において、できることを豊富にすること等ができるゲームプログラム、ゲームシステム、ゲーム装置、およびゲーム処理方法等として利用することができる。
【符号の説明】
【0191】
1…情報処理システム
2…本体装置
3…左コントローラ
4…右コントローラ
11…ハウジング
12…ディスプレイ
13…タッチパネル
32、52…アナログスティック
42、64…端子
81…プロセッサ
82…ネットワーク通信部
83…コントローラ通信部
85…DRAM
101、111…通信制御部