IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 任天堂株式会社の特許一覧

特開2024-123198情報処理システム、情報処理プログラム、情報処理方法、および情報処理装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024123198
(43)【公開日】2024-09-10
(54)【発明の名称】情報処理システム、情報処理プログラム、情報処理方法、および情報処理装置
(51)【国際特許分類】
   A63F 13/63 20140101AFI20240903BHJP
   A63F 13/69 20140101ALI20240903BHJP
   A63F 13/803 20140101ALI20240903BHJP
   A63F 13/55 20140101ALI20240903BHJP
【FI】
A63F13/63
A63F13/69 520
A63F13/803
A63F13/55
【審査請求】未請求
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2024102024
(22)【出願日】2024-06-25
(62)【分割の表示】P 2023523125の分割
【原出願日】2022-03-03
(71)【出願人】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【弁理士】
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【弁理士】
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】深田 直希
(72)【発明者】
【氏名】古川 朗
(72)【発明者】
【氏名】高山 貴裕
(72)【発明者】
【氏名】佐藤 祐也
(72)【発明者】
【氏名】前野 滝授
(57)【要約】      (修正有)
【課題】仮想オブジェクト同士を接続して複数の仮想オブジェクトからなるオブジェクトを生成する場合にユーザビリティを向上させることが可能な情報処理システムを提供する。
【解決手段】情報処理システムの一例は、ユーザの入力に基づいて、複数の仮想オブジェクトを組み合わせて合体オブジェクトを生成する。複数の仮想オブジェクトには、合体オブジェクトに動力を与える仮想動力オブジェクトと、仮想コントローラオブジェクトとが含まれる。情報処理システムは、合体オブジェクトに仮想動力オブジェクト及び仮想コントローラオブジェクトが含まれる場合、仮想動力オブジェクトを動作させて合体オブジェクトを所定の進行方向に移動させ、ユーザの入力に基づいて、合体オブジェクトの移動方向を変化させる。
【選択図】図15
【特許請求の範囲】
【請求項1】
ユーザの入力に基づくゲーム処理を行うプロセッサを備える情報処理システムであって、
前記ゲーム処理は、
ゲームが進行する仮想空間内に、仮想コントローラオブジェクトを含む複数の仮想オブジェクトと、ユーザの入力に基づいて操作されるプレイヤキャラクタとを配置すること、
前記仮想空間内において、ユーザの入力に基づいて、前記仮想オブジェクト同士を組むことで合体オブジェクトを生成すること、
前記合体オブジェクトが前記仮想コントローラオブジェクトを含む場合、少なくとも前記仮想空間内において前記プレイヤキャラクタと前記合体オブジェクトとの位置関係が第1条件を満たしたことに基づいて、前記プレイヤキャラクタおよび前記合体オブジェクトの向きまたは移動方向の少なくともいずれかをユーザの入力に基づいて変化させる操縦モードを実行すること、を含む、
情報処理システム。
【請求項2】
前記第1条件は、前記プレイヤキャラクタと前記合体オブジェクトに含まれる前記仮想コントローラオブジェクトとが所定の近接関係になることを含む、請求項1に記載の情報処理システム。
【請求項3】
前記操縦モードのとき、前記プレイヤキャラクタと前記仮想コントローラオブジェクトとは所定の位置関係とされる、請求項1又は2に記載の情報処理システム。
【請求項4】
前記操縦モードのとき、前記プレイヤキャラクタと前記仮想コントローラオブジェクトとは所定の関係の向きとされる、請求項1~3のいずれかに記載の情報処理システム。
【請求項5】
前記操縦モードが実行されていないとき、ユーザの所定の入力に基づいて、前記プレイヤキャラクタの向きまたは移動方向の少なくともいずれかを制御し、
前記操縦モードが実行されているとき、ユーザの前記所定の入力に基づいて、前記プレイヤキャラクタおよび前記合体オブジェクトの向きまたは移動方向の少なくともいずれかを制御する、請求項1から4の何れかに記載の情報処理システム。
【請求項6】
前記仮想空間に配置される前記複数の仮想オブジェクトは、さらに動力オブジェクトを含み、
前記動力オブジェクトは、前記合体オブジェクトに組まれたときに当該合体オブジェクトに動力を与える、請求項1から5の何れかに記載の情報処理システム。
【請求項7】
前記動力オブジェクトは、前記合体オブジェクトに組まれていないとき、ユーザの入力に基づいて所定の作用を発揮する状態と、発揮しない状態とに切り替えられる、請求項6に記載の情報処理システム。
【請求項8】
前記操縦モード中に、前記合体オブジェクトに組まれている全ての前記動力オブジェクトのそれぞれの作用が発揮される、請求項6又は7に記載の情報処理システム。
【請求項9】
前記ゲーム処理は、
ユーザの入力に基づいて、前記合体オブジェクトから前記仮想コントローラオブジェクトを分離し、前記合体オブジェクトから分離された仮想コントローラオブジェクトを、分離元の仮想オブジェクトとは異なる仮想オブジェクトに組むことが可能である、請求項1から8の何れかに記載の情報処理システム。
【請求項10】
前記仮想コントローラオブジェクトは、ユーザ入力に基づいて、前記仮想オブジェクトにおける第1位置にも第2位置にも配置可能であり、
前記操縦モードにおいて、ユーザの第1入力に基づいて、前記仮想オブジェクトと前記第1位置に配置された前記仮想コントローラオブジェクトとを含む合体オブジェクトの向きまたは移動方向の少なくともいずれかが変化され、
前記操縦モードにおいて、前記第1入力に基づいて、前記仮想オブジェクトと前記第2位置に配置された前記仮想コントローラオブジェクトとを含む合体オブジェクトの向きまたは移動方向の少なくともいずれかが変化される、請求項1から9の何れかに記載の情報処理システム。
【請求項11】
前記仮想コントローラオブジェクトは、他の仮想オブジェクトと組まれることが可能ないずれの仮想オブジェクトとも組まれることが可能である、請求項1から10の何れかに記載の情報処理システム。
【請求項12】
ユーザの入力に基づいて操作される前記プレイヤキャラクタの前記仮想空間内における位置または向きの少なくともいずれかに基づいて、前記仮想空間内に配置された、前記合体オブジェクトを生成するための前記仮想オブジェクトが選択される、請求項1から11の何れかに記載の情報処理システム。
【請求項13】
前記仮想空間内には、敵オブジェクトが配置される、請求項1から12の何れかに記載の情報処理システム。
【請求項14】
前記操縦モードのとき、前記ユーザ入力に基づいて、移動中の前記プレイヤキャラクタおよび前記合体オブジェクトの移動方向を変化させず向きを変化させる、請求項1から13の何れかに記載の情報処理システム。
【請求項15】
ユーザの入力に基づくゲーム処理を行う情報処理方法であって、
前記ゲーム処理は、
ゲームが進行する仮想空間内に、仮想コントローラオブジェクトを含む複数の仮想オブジェクトと、ユーザの入力に基づいて操作されるプレイヤキャラクタとを配置すること、
前記仮想空間内において、ユーザの入力に基づいて、前記仮想オブジェクト同士を組むことで合体オブジェクトを生成すること、
前記合体オブジェクトが前記仮想コントローラオブジェクトを含む場合、少なくとも前記仮想空間内において前記プレイヤキャラクタと前記合体オブジェクトとの位置関係が第1条件を満たしたことに基づいて、前記プレイヤキャラクタおよび前記合体オブジェクトの向きまたは移動方向の少なくともいずれかをユーザの入力に基づいて変化させる操縦モードを実行すること、を含む、
情報処理方法。
【請求項16】
ユーザの入力に基づくゲーム処理をプロセッサに行わせる情報処理プログラムであって、
前記ゲーム処理は、
ゲームが進行する仮想空間内に、仮想コントローラオブジェクトを含む複数の仮想オブジェクトと、ユーザの入力に基づいて操作されるプレイヤキャラクタとを配置すること、
前記仮想空間内において、ユーザの入力に基づいて、前記仮想オブジェクト同士を組むことで合体オブジェクトを生成すること、
前記合体オブジェクトが前記仮想コントローラオブジェクトを含む場合、少なくとも前記仮想空間内において前記プレイヤキャラクタと前記合体オブジェクトとの位置関係が第1条件を満たしたことに基づいて、前記プレイヤキャラクタおよび前記合体オブジェクトの向きまたは移動方向の少なくともいずれかをユーザの入力に基づいて変化させる操縦モードを実行すること、を含む、
情報処理プログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ユーザの操作により複数の仮想オブジェクトを組み合わせることが可能な情報処理システム、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【0002】
従来より、操作対象オブジェクトを移動させて仮想空間に存在するオブジェクトと接触させることで複数のオブジェクトを一体として構成するゲームシステムがある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007-21248号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、ユーザの操作により複数の仮想オブジェクトを組むことで複数の仮想オブジェクトからなるオブジェクトを生成する場合において、ユーザビリティを向上させるという観点では改善の余地があった。
【0005】
それ故、本発明の目的は、複数の仮想オブジェクトを組んで複数の仮想オブジェクトからなるオブジェクトを生成する場合にユーザビリティを向上させることが可能な情報処理システム、情報処理プログラム、情報処理方法、および情報処理装置を提供することである。
【課題を解決するための手段】
【0006】
上記の課題を解決すべく、本発明は、以下の構成を採用した。
【0007】
一実施形態の情報処理システムは、ユーザの入力に基づくゲーム処理を行うプロセッサを備える情報処理システムであって、前記ゲーム処理は、ゲームが進行する仮想空間内に、仮想コントローラオブジェクトを含む複数の仮想オブジェクトと、ユーザの入力に基づいて操作されるプレイヤキャラクタとを配置すること、前記仮想空間内において、ユーザの入力に基づいて、前記仮想オブジェクト同士を組むことで合体オブジェクトを生成すること、前記合体オブジェクトが前記仮想コントローラオブジェクトを含む場合、少なくとも前記仮想空間内において前記プレイヤキャラクタと前記合体オブジェクトとの位置関係が第1条件を満たしたことに基づいて、前記プレイヤキャラクタおよび前記合体オブジェクトの向きまたは移動方向の少なくともいずれかをユーザの入力に基づいて変化させる操縦モードを実行すること、を含む。
前記第1条件は、前記プレイヤキャラクタと前記合体オブジェクトに含まれる前記仮想コントローラオブジェクトとが所定の近接関係になることを含んでもよい。
前記操縦モードのとき、前記プレイヤキャラクタと前記仮想コントローラオブジェクトとは所定の位置関係とされてもよい。
前記操縦モードのとき、前記プレイヤキャラクタと前記仮想コントローラオブジェクトとは所定の関係の向きとされてもよい。
前記操縦モードが実行されていないとき、ユーザの所定の入力に基づいて、前記プレイヤキャラクタの向きまたは移動方向の少なくともいずれかを制御し、前記操縦モードが実行されているとき、ユーザの前記所定の入力に基づいて、前記プレイヤキャラクタおよび前記合体オブジェクトの向きまたは移動方向の少なくともいずれかを制御してもよい。
前記仮想空間に配置される前記複数の仮想オブジェクトは、さらに動力オブジェクトを含み、前記動力オブジェクトは、前記合体オブジェクトに組まれたときに当該合体オブジェクトに動力を与えてもよい。
前記動力オブジェクトは、前記合体オブジェクトに組まれていないとき、ユーザの入力に基づいて所定の作用を発揮する状態と、発揮しない状態とに切り替えられてもよい。
前記操縦モード中に、前記合体オブジェクトに組まれている全ての前記動力オブジェクトのそれぞれの作用が発揮されてもよい。
前記ゲーム処理は、ユーザの入力に基づいて、前記合体オブジェクトから前記仮想コントローラオブジェクトを分離し、前記合体オブジェクトから分離された仮想コントローラオブジェクトを、分離元の仮想オブジェクトとは異なる仮想オブジェクトに組むことが可能であってもよい。
前記仮想コントローラオブジェクトは、ユーザ入力に基づいて、前記仮想オブジェクトにおける第1位置にも第2位置にも配置可能であり、前記操縦モードにおいて、ユーザの第1入力に基づいて、前記仮想オブジェクトと前記第1位置に配置された前記仮想コントローラオブジェクトとを含む合体オブジェクトの向きまたは移動方向の少なくともいずれかが変化され、前記操縦モードにおいて、前記第1入力に基づいて、前記仮想オブジェクトと前記第2位置に配置された前記仮想コントローラオブジェクトとを含む合体オブジェクトの向きまたは移動方向の少なくともいずれかが変化されてもよい。
前記仮想コントローラオブジェクトは、他の仮想オブジェクトと組まれることが可能ないずれの仮想オブジェクトとも組まれることが可能であってもよい。
ユーザの入力に基づいて操作される前記プレイヤキャラクタの前記仮想空間内における位置または向きの少なくともいずれかに基づいて、前記仮想空間内に配置された、前記合体オブジェクトを生成するための前記仮想オブジェクトが選択されてもよい。
前記仮想空間内には、敵オブジェクトが配置されてもよい。
前記操縦モードのとき、前記ユーザ入力に基づいて、移動中の前記プレイヤキャラクタおよび前記合体オブジェクトの移動方向を変化させず向きを変化させてもよい。
他の実施形態の情報処理システムは、ユーザの入力に基づくゲーム処理を行うプロセッサを備える情報処理システムであって、前記プロセッサは、ユーザの入力に基づいて、複数の仮想オブジェクトを組むことで合体オブジェクトを生成する合体オブジェクト生成手段と、仮想空間に配置された前記合体オブジェクトを制御する合体オブジェクト制御手段として機能する。前記複数の仮想オブジェクトは、前記合体オブジェクトの一部として組み入れられた場合に当該合体オブジェクトに動力を与える仮想動力オブジェクトと、前記合体オブジェクトの一部として組み入れられることが可能な仮想コントローラオブジェクトとを含む。前記合体オブジェクト制御手段は、前記合体オブジェクトに前記仮想動力オブジェクト及び前記仮想コントローラオブジェクトが含まれる場合、前記仮想動力オブジェクトを動作させて前記合体オブジェクトを所定の進行方向に移動させ、ユーザの入力に基づいて、前記合体オブジェクトの移動方向を変化させる。
【0008】
上記によれば、ユーザは、複数の仮想オブジェクトを組むことで仮想コントローラオブジェクトを含む合体オブジェクトを生成することができるとともに、当該合体オブジェクトの移動を制御することができる。
【0009】
また、前記仮想動力オブジェクトの動作状態には、前記動力を与えるON状態と、前記動力を与えないOFF状態とがあってもよい。また、前記プロセッサは、ユーザの入力に基づいて、1の前記仮想動力オブジェクトの動作状態を、前記ON状態又は前記OFF状態にする動作状態設定手段として機能してもよい。前記合体オブジェクト生成手段は、前記仮想コントローラオブジェクトと、複数の前記仮想動力オブジェクトとを含む前記合体オブジェクトを生成してもよい。前記合体オブジェクト制御手段は、前記合体オブジェクトに含まれる全ての前記仮想動力オブジェクトを同時に前記ON状態又はOFF状態にしてもよい。
【0010】
上記によれば、複数の仮想動力オブジェクトが同時にON状態又はOFF状態にされることにより、1つずつON状態又はOFF状態にする場合よりもユーザの利便性を向上させることができる。
【0011】
また、前記合体オブジェクト生成手段は、前記合体オブジェクトにおける、ユーザによって指定された位置に、前記仮想コントローラオブジェクトを配置してもよい。
【0012】
上記によれば、合体オブジェクトにおけるユーザの所望の位置に仮想コントローラオブジェクトを配置することができ、合体オブジェクトを生成するときの自由度を高めることができる。
【0013】
また、前記合体オブジェクトを構成する前記仮想オブジェクトには、他の部分よりも優先される優先部分が設けられてもよい。前記合体オブジェクト生成手段は、前記仮想コントローラオブジェクトを、前記合体オブジェクトを構成する前記仮想オブジェクトにおける前記優先部分に優先的に配置してもよい。
【0014】
上記によれば、ユーザの所望の位置に仮想コントローラオブジェクトを配置するとともに、仮想コントローラオブジェクトを優先部分に優先的に配置することができ、仮想コントローラオブジェクトを合体オブジェクトに配置するときの利便性を向上させることができる。
【0015】
また、前記プロセッサは、ユーザキャラクタを前記仮想空間内で移動させるユーザキャラクタ移動手段として機能してもよい。前記ユーザキャラクタ移動手段は、ユーザの入力に基づいて、前記ユーザキャラクタを前記仮想コントローラオブジェクトに対応する位置に移動させてもよい。前記合体オブジェクト制御手段は、前記ユーザキャラクタが前記仮想コントローラオブジェクトに対応する位置に存在する場合、ユーザの入力に応じて、前記合体オブジェクトを制御してもよい。
【0016】
上記によれば、ユーザキャラクタが仮想コントローラオブジェクトに対応する位置に存在する場合、合体オブジェクトを制御することができる。
【0017】
また、前記合体オブジェクト制御手段は、前記ユーザの入力に基づいて、前記ユーザキャラクタに前記仮想コントローラオブジェクトを操作させることにより、前記仮想コントローラオブジェクトの少なくとも一部の向きを変化させ、前記合体オブジェクトの移動方向を変化させてもよい。
【0018】
上記によれば、ユーザキャラクタに仮想コントローラオブジェクトを操作させることで、仮想コントローラオブジェクトの少なくとも一部の向きを変化させ、合体オブジェクトの移動方向を変化させることができる。これにより、ユーザキャラクタが仮想コントローラオブジェクトを操作している様子が表示され、ユーザに、仮想コントローラオブジェクトを操作して合体オブジェクトの移動方向を制御するような感覚を与えることができる。
【0019】
また、前記合体オブジェクト制御手段は、前記合体オブジェクトにおける前記仮想コントローラオブジェクトの位置にかかわらず、ユーザの入力方向に応じた方向に前記合体オブジェクトの移動方向を変化させてもよい。
【0020】
上記によれば、仮想コントローラオブジェクトがどこに配置されても、ユーザは同じ操作で合体オブジェクトの移動方向を変化させることができ、利便性を向上させることができる。
【0021】
また、前記合体オブジェクト生成手段は、ユーザによって指定された向きで、前記仮想コントローラオブジェクトを前記合体オブジェクトに配置してもよい。
【0022】
上記によれば、仮想コントローラオブジェクトを所望の向きで配置することができ、合体オブジェクトを生成するときの自由度を高めることができる。
【0023】
また、前記合体オブジェクト制御手段は、前記合体オブジェクトにおける前記仮想コントローラオブジェクトの向きにかかわらず、ユーザの入力方向に応じた方向に前記合体オブジェクトの移動方向を変化させてもよい。
【0024】
上記によれば、仮想コントローラオブジェクトがどの向きで配置されても、ユーザは同じ操作で合体オブジェクトの移動方向を変化させることができる。
【0025】
また、前記合体オブジェクト制御手段は、前記合体オブジェクトに対して、前記合体オブジェクトの重心位置回りの回転速度を付与することにより、前記合体オブジェクトの移動方向を変化させてもよい。
【0026】
上記によれば、ユーザによって様々な仮想オブジェクトを用いて合体オブジェクトが生成されても、合体オブジェクトの移動方向を変化させることができる。
【0027】
また、前記合体オブジェクト制御手段は、前記合体オブジェクトを構成する各仮想オブジェクトに対して、前記合体オブジェクトの重心位置回りの回転速度を付与することにより、前記合体オブジェクトの移動方向を変化させてもよい。
【0028】
上記によれば、各仮想オブジェクトに対して回転速度を付与することで合体オブジェクトを回転させることができ、ユーザによって様々な仮想オブジェクトを用いて合体オブジェクトが生成されても、合体オブジェクトの移動方向を変化させることができる。
【0029】
また、前記合体オブジェクトは、前記仮想空間の地面に接触しながら移動するオブジェクトであってもよい。前記合体オブジェクト制御手段は、前記合体オブジェクトの移動方向を変化させる場合、前記合体オブジェクトを前記所定の進行方向に移動させる場合よりも、前記合体オブジェクトと前記地面との摩擦を小さくしてもよい。
【0030】
上記によれば、地面に接触する合体オブジェクトを旋回させやすくすることができる。
【0031】
また、前記プロセッサは、前記合体オブジェクトに含まれる前記仮想コントローラオブジェクトの前記仮想空間における姿勢が所定の姿勢となるように、前記合体オブジェクトのロール方向又はピッチ方向の姿勢を補正する姿勢補正手段、としてさらに機能してもよい。
【0032】
上記によれば、合体オブジェクトの姿勢が変化する場合でも仮想コントローラオブジェクトの姿勢を所定の姿勢に保つことができる。
【0033】
また、前記合体オブジェクト生成手段は、複数の前記仮想オブジェクトを含む第1の合体オブジェクトと、複数の前記仮想オブジェクトを含む第2の合体オブジェクトとを生成可能であってもよい。前記仮想コントローラオブジェクトは、前記第1の合体オブジェクトにも前記第2の合体オブジェクトにも組み入れられることが可能であってもよい。
【0034】
上記によれば、ユーザによって第1の合体オブジェクトが生成されても第2の合体オブジェクトが生成されても、共通の仮想コントローラオブジェクトを組み入れることができる。
【0035】
また、他の発明は、上記各手段を備える情報処理装置であってもよいし、情報処理装置のコンピュータを上記各手段として機能させる情報処理プログラムであってもよい。また、他の発明は、上記情報処理システムにおいて行われる情報処理方法であってもよい。
【発明の効果】
【0036】
本発明によれば、複数の仮想オブジェクトを組み合わせて仮想コントローラオブジェクトを含む合体オブジェクトを生成することができ、当該合体オブジェクトの移動を制御することができる。
【図面の簡単な説明】
【0037】
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
図2】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
図3】本体装置2の一例を示す六面図
図4】左コントローラ3の一例を示す六面図
図5】右コントローラ4の一例を示す六面図
図6】本体装置2の内部構成の一例を示すブロック図
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
図8】本実施形態のゲームが実行された場合に表示されるゲーム画像の一例を示す図
図9】合体オブジェクトの一例としての飛行機オブジェクト75が生成される様子を示す図
図10】合体オブジェクトの一例としての飛行機オブジェクト75が生成される様子を示す図
図11】合体オブジェクトの一例としての飛行機オブジェクト75が生成される様子を示す図
図12】合体オブジェクトの一例としての飛行機オブジェクト75が生成される様子を示す図
図13】合体オブジェクトの一例としての飛行機オブジェクト75が生成される様子を示す図
図14】操縦桿オブジェクト70eを含む飛行機オブジェクト75の上にユーザキャラクタPCが乗って、仮想空間の空を飛ぶ様子の一例を示す図
図15】飛行機オブジェクト75が左方向に旋回する様子の一例を示す図
図16】飛行機オブジェクト75が上方向を向き、上昇する様子の一例を示す図
図17】ユーザキャラクタPCが合体オブジェクトとしての4輪車オブジェクト76に乗り、仮想空間の地面上を移動する様子を示す図
図18】4輪車オブジェクト76が左方向に旋回する様子の一例を示す図
図19】4輪車オブジェクト76が上方向を向く様子の一例を示す図
図20】操縦桿オブジェクト70eを用いた4輪車オブジェクト76のヨー方向の回転について説明するための図
図21】操縦桿オブジェクト70eが4輪車オブジェクト76の進行方向と逆方向に配置されている場合のヨー方向の回転について説明するための図
図22】操縦桿オブジェクト70eを用いた4輪車オブジェクト76のピッチ方向の回転について説明するための図
図23】翼オブジェクト70bと操縦桿オブジェクト70eとを含む飛行機オブジェクト77にユーザキャラクタPCが乗って仮想空間を直進する様子の一例を示す図
図24】飛行機オブジェクト77が操縦桿オブジェクト70eに対する操舵によって左に旋回する様子の一例を示す図
図25】操縦桿オブジェクト70eのロール方向の姿勢の補正の一例を示す図
図26】操縦桿オブジェクト70eのピッチ方向の姿勢の補正の一例を示す図
図27】ゲーム処理の実行中に本体装置2のメモリに記憶されるデータの一例を示す図
図28】本体装置2のプロセッサ81によって実行されるゲーム処理の一例を示すフローチャート
図29】ステップS107の合体オブジェクト制御処理の一例を示すフローチャート
【発明を実施するための形態】
【0038】
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。
【0039】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0040】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。図1および図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0041】
図3は、本体装置2の一例を示す六面図である。図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0042】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。
【0043】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。
【0044】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、図6に示すスピーカ88)を備えている。図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。
【0045】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0046】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。
【0047】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。
【0048】
図4は、左コントローラ3の一例を示す六面図である。図4に示すように、左コントローラ3は、ハウジング31を備える。
【0049】
左コントローラ3は、アナログスティック32を備える。図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック32を押下する入力が可能である。
【0050】
左コントローラ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プログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0051】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0052】
図5は、右コントローラ4の一例を示す六面図である。図5に示すように、右コントローラ4は、ハウジング51を備える。
【0053】
右コントローラ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を備える。
【0054】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0055】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、図3に示す構成の他、図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0056】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0057】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0058】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0059】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0060】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。
【0061】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。
【0062】
プロセッサ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は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0063】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0064】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0065】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0066】
また、本体装置2は、加速度センサ89を備える。本実施形態においては、加速度センサ89は、所定の3軸(例えば、図1に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ89は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。
【0067】
また、本体装置2は、角速度センサ90を備える。本実施形態においては、角速度センサ90は、所定の3軸(例えば、図1に示すxyz軸)回りの角速度を検出する。なお、角速度センサ90は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。
【0068】
加速度センサ89および角速度センサ90は、プロセッサ81に接続され、加速度センサ89および角速度センサ90の検出結果は、プロセッサ81へ出力される。プロセッサ81は、上記の加速度センサ89および角速度センサ90の検出結果に基づいて、本体装置2の動きおよび/または姿勢に関する情報を算出することが可能である。
【0069】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。
【0070】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、図6で示しているため図7では省略している。
【0071】
左コントローラ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(登録商標)の規格に従って行われる。
【0072】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0073】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0074】
左コントローラ3は、慣性センサを備える。具体的には、左コントローラ3は、加速度センサ104を備える。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、図4に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ105は、所定の3軸(例えば、図4に示すxyz軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
【0075】
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0076】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
【0077】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0078】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。
【0079】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、アナログスティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0080】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0081】
(ゲームの概要)
次に、本実施形態のゲームについて説明する。本実施形態のゲームでは、仮想空間(ゲーム空間)に、ユーザキャラクタPCが配置され、ユーザキャラクタPCが仮想空間内を移動したり所定の動作を行ったり、敵キャラクタを倒したりすることでゲームが進行する。仮想空間には仮想カメラが配置される。仮想カメラは、ユーザキャラクタPCをその撮像範囲に含むように設定され、当該仮想カメラを用いてユーザキャラクタPCを含むゲーム画像が生成されて、ディスプレイ12又は据置型モニタに表示される。
【0082】
図8は、本実施形態のゲームが実行された場合に表示されるゲーム画像の一例を示す図である。図8に示されるように、仮想空間には、ユーザキャラクタPCと、複数の仮想オブジェクト70(70a~70f)とが配置される。また、図示は省略するが、仮想空間には、仮想空間に固定される木や建物等のオブジェクトが配置される。
【0083】
ユーザキャラクタPCは、ユーザによって操作されるキャラクタである。ユーザキャラクタPCは、コントローラ(3又は4)に対する入力に応じて仮想空間内を移動したり、仮想空間内で所定の動作を行ったりする。また、ユーザキャラクタPCは、複数の仮想オブジェクト70を組むことで合体オブジェクトを作成する。
【0084】
複数の仮想オブジェクト70は、ユーザの操作に応じて仮想空間内を移動可能なオブジェクトであり、互いに組むことができるオブジェクトである。複数の仮想オブジェクト70は、互いに組まれることで合体オブジェクトの一部を構成する。例えば、複数の仮想オブジェクト70は、予め仮想空間の地面に配置されている。また、複数の仮想オブジェクト70は、ユーザの操作に基づいて仮想空間に出現してもよい。例えば、ユーザキャラクタPCが敵キャラクタを倒した場合や所定の課題をクリアした場合に、仮想オブジェクト70が仮想空間に出現してもよい。また、複数の仮想オブジェクト70は、ユーザキャラクタPCが所有するアイテムとして管理されており、通常は仮想空間に配置されず、ユーザキャラクタPCの仮想的な収容領域内に収容されてもよい。そして、ユーザの操作が行われた場合に、収容領域内に収容された仮想オブジェクト70が仮想空間内に出現してもよい。
【0085】
ユーザは、複数の仮想オブジェクト70を組むことにより、合体オブジェクトを生成することができる。例えば、ユーザは、合体オブジェクトとして、車両、戦車、飛行機等の仮想空間を移動可能な移動オブジェクトを生成することができ、生成した合体オブジェクトを用いてゲームを進めることができる。例えば、ユーザは、生成した合体オブジェクトを、仮想空間内での移動や敵キャラクタへの攻撃のために用いることができる。
【0086】
例えば、複数の仮想オブジェクト70は、エンジンオブジェクト70aと、翼オブジェクト70bと、車輪オブジェクト70cと、板オブジェクト70dと、操縦桿オブジェクト70eと、扇風機オブジェクト70fとを含む。なお、これらの他にも、合体オブジェクトを構成するための別の仮想オブジェクトがさらに用意されてもよい。
【0087】
エンジンオブジェクト70aは、ジェットエンジンを模したオブジェクトであり、動力を有する仮想動力オブジェクトの一例である。エンジンオブジェクト70aは、合体オブジェクトの一部として構成された場合、合体オブジェクト全体に対して動力を与える。具体的には、エンジンオブジェクト70aは、合体オブジェクトに対して所定の速度を与える。翼オブジェクト70bは、空を飛ぶための仮想オブジェクトであり、所定の速度以上で仮想空間内を移動する場合に揚力を発生させる。
【0088】
車輪オブジェクト70cは、動力を有する仮想動力オブジェクトの一例であり、例えば車両の車輪として構成可能なオブジェクトである。車輪オブジェクト70cは、予め定められた一方向に回転可能に構成されている。車輪オブジェクト70cは、合体オブジェクトに対して所定の速度を与える。また、板オブジェクト70dは、平面状の仮想オブジェクトである。板オブジェクト70dは、例えば車両の車体として利用可能である。
【0089】
仮想動力オブジェクト(以下、単に「動力オブジェクト」と表記する場合がある)の動作状態には、ON状態とOFF状態とがある。動力オブジェクトは、通常はOFF状態に設定されている。動力オブジェクトは、合体オブジェクトの一部として構成されている場合でも、合体オブジェクトの一部として構成されていない場合でも、ON状態になり得る。例えば、ユーザキャラクタPCは、ユーザの操作により動力オブジェクトに対して所定の動作(例えば、動力オブジェクトに近づいてたたく動作、動力オブジェクトに矢を発射する動作等の攻撃動作)を行う。ユーザキャラクタPCの所定の動作によって、動力オブジェクトはON状態に移行する。動力オブジェクトがON状態に移行すると、動力オブジェクトは動作する。
【0090】
例えば、エンジンオブジェクト70aが合体オブジェクトの一部として構成されておらず、仮想空間に配置されている場合に、ユーザキャラクタPCがエンジンオブジェクト70aに対して所定の動作を行った場合、エンジンオブジェクト70aはON状態となる。エンジンオブジェクト70aがON状態となると、噴射口から火炎が放射され、火炎と反対方向にエンジンオブジェクト70aが移動する。なお、火炎には攻撃判定があってもよい。ユーザキャラクタPCがエンジンオブジェクト70aに対して所定の停止動作(例えば、矢を発射する動作)を行った場合、エンジンオブジェクト70aはOFF状態となり、停止する。
【0091】
また、車輪オブジェクト70cが合体オブジェクトの一部として構成されておらず、仮想空間に立った状態で配置されている場合(すなわち、車輪の軸が仮想空間の地面と平行な状態で地面に配置されている場合)において、ユーザキャラクタPCが車輪オブジェクト70cに対して所定の動作を行った場合、車輪オブジェクト70cはON状態となる。この場合、車輪オブジェクト70は、予め定められた一方向に回転し、仮想空間の地面上を移動するようになる。ユーザキャラクタPCが車輪オブジェクト70に対して所定の停止動作(例えば、矢を発射する動作)を行った場合、車輪オブジェクト70はOFF状態となり、停止する。
【0092】
なお、車輪オブジェクト70cに加えて、動力を有さない動力無し車輪オブジェクトが設けられてもよい。動力無し車輪オブジェクトは、例えば、板オブジェクト70dと組み合わされて合体オブジェクトとしての車両オブジェクトを形成する。動力無し車輪オブジェクトを有する車両オブジェクトは、仮想空間に働く重力や、その他の動力(例えば、車両オブジェクトに含まれる車輪オブジェクト70c)によって移動される。車両オブジェクトは仮想空間の地面を移動する際に、地面との間で摩擦が発生する。この場合、動力無し車輪オブジェクトと地面との摩擦は、車輪オブジェクト70cと地面との摩擦よりも小さくてもよい。このような動力無し車輪オブジェクトによって、仮想空間の地面上のスムーズな移動を実現することができる。
【0093】
操縦桿オブジェクト70eは、合体オブジェクトの一部として構成された場合に、合体オブジェクトの移動を制御するための仮想コントローラオブジェクトの一例である。操縦桿オブジェクト70eは、例えば、長方形の底面と、底面から上方に延びるハンドル部分とを有する。
【0094】
操縦桿オブジェクト70eは、合体オブジェクトに含まれる動力オブジェクトのON/OFFを制御する機能と、合体オブジェクトを旋回させる機能とを有する。操縦桿オブジェクト70eは、操縦桿操作モードに設定されている場合、仮想空間内においてユーザキャラクタPCによって操作される。具体的には、ユーザキャラクタPCが合体オブジェクトの上に乗っている場合において、ユーザによってコントローラに対する所定の操作(例えば、Aボタン53の押下)が行われた場合、操縦桿操作モードに移行し、ユーザキャラクタPCが操縦桿オブジェクト70eの位置に移動する。より具体的には、ユーザキャラクタPCが合体オブジェクトの上に乗っている場合において、ユーザキャラクタPCが操縦桿オブジェクト70eを含む所定範囲に位置するとき、所定の操作に応じて、操縦桿操作モードに移行する。ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合、合体オブジェクトに含まれる全ての動力オブジェクトの動作状態が同時にONにされる。動力オブジェクトが動作されると、合体オブジェクトには所定方向への推進力(速度)が与えられ、合体オブジェクトは当該推進力により仮想空間内を所定の進行方向に移動するようになる。また、ユーザキャラクタPCが、合体オブジェクトに含まれる操縦桿オブジェクト70eの位置にいる場合において、例えばユーザによってコントローラに対する所定の旋回操作が行われた場合、合体オブジェクトが旋回する。操縦桿オブジェクト70eを用いた合体オブジェクトの移動制御の詳細については後述する。
【0095】
また、扇風機オブジェクト70fは、扇風機を模したオブジェクトであり、動力を有する仮想動力オブジェクトの一例である。扇風機オブジェクト70fは、合体オブジェクトの一部として構成された場合、合体オブジェクト全体に対して動力を与える。扇風機オブジェクト70fの動力は、エンジンオブジェクト70aの動力よりも弱く、合体オブジェクトに対して、エンジンオブジェクト70aよりも小さな速度を与える。
【0096】
図8に示されるように、仮想オブジェクト70の表面には、1又は複数の優先接続部BPが設定される場合がある。優先接続部BPは、仮想オブジェクト70同士を接続する際に、他の部分よりも優先的に接続される位置である。優先接続部BPは、ゲーム制作者によって各仮想オブジェクト70に予め設定されている。例えば、エンジンオブジェクト70aの底面には1つの優先接続部BPが設定される。また、翼オブジェクト70bの上面には、3つの優先接続部BPが設定される。また、板オブジェクト70dの上面、及び、側面には複数の優先接続部BPが設定される。また、車輪オブジェクト70c、及び、操縦桿オブジェクト70eにも、1又は複数の優先接続部BPが予め設定される。
【0097】
2つの仮想オブジェクト70は、優先接続部以外の部分同士で互いに接続(接着)することもできる。また、ある仮想オブジェクトの優先接続部BPと、別の仮想オブジェクトの優先接続部以外の部分とを接続することもできる。ある仮想オブジェクトの優先接続部BPと、別の仮想オブジェクトの優先接続部BPとが例えば所定の距離以内の場合には、当該ある仮想オブジェクトの優先接続部BPと、別の仮想オブジェクトの優先接続部BPとが優先的に接続される。ある仮想オブジェクトの優先接続部BPと、別の仮想オブジェクトの優先接続部BPとが所定の距離を超えている場合は、ある仮想オブジェクトと別の仮想オブジェクトとは、例えば、最近接位置で接続される。
【0098】
ここで、仮想オブジェクト70同士の「接続」とは、仮想オブジェクト70同士が近接した位置で一体的なオブジェクトとしてふるまうことを意味する。例えば、2つの仮想オブジェクト70が接着されている場合、当該2つの仮想オブジェクト70は互いに接してもよい。また、2つの仮想オブジェクト70が接着されている場合、2つの仮想オブジェクト70が厳密に接していなくてもよく、例えば、2つの仮想オブジェクト70間に、間隙があったり、接続のための他のオブジェクトが介在してもよい。また、「複数の仮想オブジェクト70が一体的なオブジェクトとしてふるまう」とは、複数の仮想オブジェクト70の相対的な位置関係が維持され、複数の仮想オブジェクト70が1つのオブジェクトであるかのように仮想空間内を移動したり、姿勢を変化させたりすることを意味する。
【0099】
また、複数の仮想オブジェクト70を「組んだ」合体オブジェクトは、複数の仮想オブジェクト70を互いに接続することで、互いの位置関係が変化しない状態になっている、複数の仮想オブジェクト70の集合を意味する。
【0100】
ユーザは、仮想空間に配置されている何れか1つの仮想オブジェクト70を選択し、他の仮想オブジェクト70と接続することで、複数の仮想オブジェクト70を接続した合体オブジェクトを生成することができる。図9図13は、合体オブジェクトの一例としての飛行機オブジェクト75が生成される様子を示す図である。
【0101】
ユーザは、例えば、仮想空間に配置されたエンジンオブジェクト70aを選択し(図9)、選択したエンジンオブジェクト70a(選択オブジェクト)を翼オブジェクト70bの近傍に移動させる(図10)。仮想空間に配置された仮想オブジェクト70の選択は、例えば、画面の中央に表示された指示標識(図示せず)を仮想オブジェクト70に合わせ、左コントローラ3の所定のボタンを押下することにより行われてもよい。また、選択オブジェクトは、ユーザキャラクタPCとともに移動してもよい。選択オブジェクトは、ユーザキャラクタPCとの位置関係が維持されるように移動してもよい。例えば、左コントローラ3のアナログスティック32の入力方向に応じて、ユーザキャラクタPC及び選択オブジェクトが移動されてもよい。また、例えば、右コントローラ4のアナログスティック52の入力方向に応じて、ユーザキャラクタPC及び仮想カメラの向きを変化させるとともに、選択オブジェクトを移動させてもよい。また、ユーザキャラクタPCの位置が変化しなくても、選択オブジェクトは移動されてもよい。例えば、ユーザキャラクタPCの正面に選択オブジェクトが位置するように、ユーザキャラクタPCの向きの変化に応じて、選択オブジェクトが移動されてもよい。また、ユーザキャラクタPCと選択オブジェクトとの間の距離が変化することによって、選択オブジェクトが移動してもよい。例えば、ユーザキャラクタPCの向きが仮想空間の上方に変化された場合、選択オブジェクトも仮想空間の上方に移動する。ユーザキャラクタPCが仮想空間の上方を向くときは、ユーザキャラクタPCが地面と平行な方向を向くときよりも、ユーザキャラクタPCと選択オブジェクトとの間の距離が長くなってもよい。また、仮想カメラは、ユーザキャラクタPC及び選択オブジェクトをその撮像範囲に含むように制御される。このため、ユーザキャラクタPCの移動や姿勢の変化に応じて選択オブジェクトが仮想空間内を移動する場合、選択オブジェクトが移動される様子が表示される。
【0102】
エンジンオブジェクト70aを移動させることによって、エンジンオブジェクト70aと翼オブジェクト70bとが所定の接続条件を満たす位置関係になると、エンジンオブジェクト70aと翼オブジェクト70bとは接続可能な状態となる。この状態で、ユーザが接続指示(例えば、右コントローラ4の所定のボタンの押下)を行うと、エンジンオブジェクト70aと翼オブジェクト70bとが接続される。これにより、エンジンオブジェクト70aと翼オブジェクト70bとを含む合体オブジェクト75が生成される(図11)。
【0103】
さらに、ユーザは、仮想空間に配置された操縦桿オブジェクト70eを選択し(図12)、選択した操縦桿オブジェクト70eを翼オブジェクト70bの近傍に移動させる。すると、操縦桿オブジェクト70eと翼オブジェクト70bとが所定の接続条件を満たす位置関係となり、ユーザの接続指示に応じて、操縦桿オブジェクト70eは、翼オブジェクト70bの上面に接続される。これにより、合体オブジェクトとして、エンジンオブジェクト70aと、翼オブジェクト70bと、操縦桿オブジェクト70eとを含む飛行機オブジェクト75が生成される(図13)。
【0104】
操縦桿オブジェクト70eは、翼オブジェクト70bの上面における任意の位置に配置されることができる。具体的には、操縦桿オブジェクト70eの底面に設定された優先接続部BPと、翼オブジェクト70bの上面に設定された優先接続部BPとが所定の距離以内の場合には、操縦桿オブジェクト70eは、翼オブジェクト70bの優先接続部BPの位置に優先的に配置される。一方、操縦桿オブジェクト70eの底面に設定された優先接続部BPと、翼オブジェクト70bの上面に設定された優先接続部BPとが所定の距離を超える場合には、操縦桿オブジェクト70eは、翼オブジェクト70bの上面の、ユーザによって指定された任意の位置に配置される。
【0105】
また、操縦桿オブジェクト70eは、向きを有する。操縦桿オブジェクト70eの向きは、操縦桿オブジェクト70eの底面における長辺方向である。図13では、操縦桿オブジェクト70eの向きは、翼オブジェクト70bの向きと一致するように配置されている。具該的には、操縦桿オブジェクト70e及び翼オブジェクト70bの向きは、図13の奥行き方向である。ユーザは、操縦桿オブジェクト70eの向きを指定することが可能である。例えば、操縦桿オブジェクト70eの向きが、翼オブジェクト70bの向きに対して所定の角度を有するように、操縦桿オブジェクト70eを翼オブジェクト70bの上面に配置することができる。所定の角度は、0度から180度の範囲の任意の値であってもよいし、予め定められた複数の値(例えば、45度、90度、75度、180度)の何れかであってもよい。
【0106】
なお、図13に示される飛行機オブジェクト75に対して、さらに別の仮想オブジェクト70を接続することもできる。例えば、翼オブジェクト70b上に2つ以上のエンジンオブジェクト70aを接続することができる。この場合、2つ以上のエンジンオブジェクト70aを有する飛行機オブジェクト75の速度はより大きくなる。また、1つの翼オブジェクト70bの横に別の翼オブジェクト70bを接続することで、2つの翼オブジェクト70bが一体となった大きな翼を構成することもできる。2つの翼オブジェクト70bを有する飛行機オブジェクト75は、より大きな揚力を得ることができ、より重いオブジェクトを乗せても飛行することができる。
【0107】
図14は、操縦桿オブジェクト70eを含む飛行機オブジェクト75の上にユーザキャラクタPCが乗って、仮想空間の空を飛ぶ様子の一例を示す図である。
【0108】
図14に示されるように、ユーザは、複数の仮想オブジェクト70を組んだ飛行機オブジェクト75上にユーザキャラクタPCを乗せて、仮想空間を移動させることが可能である。具体的には、ユーザは、飛行機オブジェクト75を生成した後、コントローラ(3又は4)を用いてユーザキャラクタPCを飛行機オブジェクト75上に乗せる。ユーザキャラクタPCが飛行機オブジェクト75上に乗っており、かつ、ユーザキャラクタPCが操縦桿オブジェクト70eに対応する位置(操縦桿オブジェクト70eを含む所定範囲)にいるときに、コントローラを用いて操縦桿オブジェクト70eを操作対象として設定する操作(例えば、Aボタン53の押下)が行われると、操縦桿操作モードに移行する。具体的には、ユーザキャラクタPCが、操縦桿オブジェクト70eの位置に移動する。ユーザキャラクタPCが操縦桿オブジェクト70eの位置に移動すると、ユーザキャラクタPCは、操縦桿オブジェクト70eのハンドル部分を握り、操縦桿オブジェクト70eのハンドル部分を操作するような動作を行う。
【0109】
ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合、飛行機オブジェクト75の制御が可能となる。具体的には、ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合、動力オブジェクトの一例としてのエンジンオブジェクト70aは、ON状態となる。動力オブジェクトには、動作状態として、合体オブジェクトに対して推進力を与えるON状態と、合体オブジェクトに対して推進力を与えないOFF状態とがある。ユーザキャラクタPCが操縦桿オブジェクト70eの位置に移動したことに応じて(すなわち、操縦桿オブジェクト70eが操作対象として設定されたことに応じて)、エンジンオブジェクト70aはON状態になる。
【0110】
なお、飛行機オブジェクト75に複数の動力オブジェクトが含まれる場合、ユーザキャラクタPCが操縦桿オブジェクト70eの位置に移動したことに応じて、全ての動力オブジェクトが同時にON状態となる。例えば、飛行機オブジェクト75に複数のエンジンオブジェクト70aが含まれる場合は、全てのエンジンオブジェクト70aが同時にON状態となる。また、飛行機オブジェクト75にエンジンオブジェクト70aと扇風機オブジェクト70fとが含まれる場合、エンジンオブジェクト70aと扇風機オブジェクト70fとが同時にON状態となる。
【0111】
エンジンオブジェクト70aがON状態の場合には、飛行機オブジェクト75に対して動力が与えられる。これにより、飛行機オブジェクト75が所定の進行方向に所定の速さで仮想空間内を移動し、空を飛ぶようになる。飛行機オブジェクト75の進行方向は、エンジンオブジェクト70aの位置や向きに依存する。例えば、図14に示されるように、エンジンオブジェクト70aが翼オブジェクト70bの左右方向における中央であって、翼オブジェクト70bと同じ向きで配置されている場合、飛行機オブジェクト75の進行方向は、翼オブジェクト70bの向きと同じ方向になる。この場合、図14に示されるように、飛行機オブジェクト75は、画面の奥行き方向に直進する。このとき、操縦桿オブジェクト70eの向きDeは、画面の奥行き方向である。
【0112】
ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合において、ユーザによって方向入力操作(例えば、アナログスティック32を用いた方向入力)が行われた場合、飛行機オブジェクト75の移動方向が変化する。具体的には、飛行機オブジェクト75は、方向入力操作に応じて、左右方向(ヨー方向)、又は、上下方向(ピッチ方向)に回転する。
【0113】
図15は、飛行機オブジェクト75が左方向に旋回する様子の一例を示す図である。図16は、飛行機オブジェクト75が上方向を向き、上昇する様子の一例を示す図である。
【0114】
図15に示されるように、ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合において、ユーザが例えばアナログスティック32の左方向を入力した場合、ユーザキャラクタPCが操縦桿オブジェクト70eのハンドル部分を左方向に向ける様子が表示され、操縦桿オブジェクト70eのハンドル部分の向きDeが左方向を向く。すると、飛行機オブジェクト75が左方向に旋回する。アナログスティック32の右方向が入力された場合は逆であり、操縦桿オブジェクト70eのハンドル部分は右方向を向き、飛行機オブジェクト75は右方向に旋回する。具体的には、飛行機オブジェクト75を構成する各仮想オブジェクトに対して、飛行機オブジェクト75の重心位置を基準とした回転速度が加えられる。これにより、飛行機オブジェクト75全体が旋回する。
【0115】
なお、操縦桿オブジェクト70eのハンドル部分の向きが変化されても、操縦桿オブジェクト70e自体の向き(操縦桿オブジェクト70eの底面の長辺方向)は変化しない。すなわち、操縦桿オブジェクト70e自体の向きは、操縦桿オブジェクト70eが合体オブジェクトの一部として構成された時点で、その合体オブジェクトに対して固定される。一方、ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合、操縦桿オブジェクト70eのハンドル部分の向きDeは、ユーザの操作によって、変化する。なお、ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合、ユーザの操作によって、操縦桿オブジェクト70e自体の向きが変化し、それによって、飛行機オブジェクト75の移動方向が変化してもよい。
【0116】
また、図16に示されるように、ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合において、ユーザが例えばアナログスティック32の下方向を入力した場合、ユーザキャラクタPCが操縦桿オブジェクト70eのハンドル部分を手前に引く様子が表示され、操縦桿オブジェクト70eのハンドル部分の向きDeが上方向を向く。すると、飛行機オブジェクト75が上方向を向き、上昇する。アナログスティック32の上方向が入力された場合は逆であり、操縦桿オブジェクト70eのハンドル部分は下方向を向き、飛行機オブジェクト75は下方向を向いて下降する。
【0117】
なお、例えば、エンジンオブジェクト70aが翼オブジェクト70bの中央ではなく右側に偏って配置されている場合、飛行機オブジェクト75の進行方向は、翼オブジェクト70bの向きに対して左側となる。この場合、飛行機オブジェクト75は、ユーザによって方向入力操作が行われなくても、左に旋回するように動作する。このような場合において、ユーザによって方向入力操作が行われた場合、飛行機オブジェクト75の進行方向が変化する。例えば、ユーザによって左方向が入力された場合は、飛行機オブジェクト75に対して左方向への回転が与えられ、飛行機オブジェクト75の進行方向がさらに左方向となり、より急に左旋回する。一方、ユーザによって右方向が入力された場合は、飛行機オブジェクト75に対して右方向への回転が与えられる。このユーザの方向入力操作による飛行機オブジェクト75の右方向への回転が、エンジンオブジェクト70aによる進行方向の左方向への偏りより大きい場合は、飛行機オブジェクト75は右方向に旋回する。ユーザの方向入力操作による飛行機オブジェクト75の右方向への回転と、エンジンオブジェクト70aによる進行方向の左方向への偏りとが等しい場合は、飛行機オブジェクト75は前方に直進するようになる。
【0118】
ユーザは、飛行機オブジェクト75の他にも、操縦桿オブジェクト70eを含む様々な移動オブジェクトを作成し、ユーザキャラクタPCを移動オブジェクトに乗せて仮想空間内を移動させることができる。
【0119】
なお、本実施形態において、「移動オブジェクト」とは、複数の仮想オブジェクト70からなる合体オブジェクトであって、仮想空間内を移動可能なオブジェクトである。移動オブジェクトは、動力オブジェクトを含む移動可能な合体オブジェクトと、動力オブジェクトを含まない移動可能な合体オブジェクトとを含む。
【0120】
図17は、ユーザキャラクタPCが合体オブジェクトとしての4輪車オブジェクト76に乗り、仮想空間の地面上を移動する様子を示す図である。
【0121】
まず、ユーザは、上述のようにして、仮想空間に配置された板オブジェクト70d、操縦桿オブジェクト70e、及び、4つの車輪オブジェクト70cを組み合わせて、4輪車オブジェクト76を生成する。ユーザは、生成した4輪車オブジェクト76にユーザキャラクタPCを乗せ、操縦桿オブジェクト70eを操作対象として設定する操作を行う。すると、ユーザキャラクタPCが操縦桿オブジェクト70eの位置に移動する。このとき、車輪オブジェクト70cがON状態となる。各車輪オブジェクト70cは、動力オブジェクトの一種であり、単体で合体オブジェクトに対して動力を与える。ユーザキャラクタPCが操縦桿オブジェクト70eの位置に移動した場合、4つの車輪オブジェクト70cが同時にON状態となる。これにより、4輪車オブジェクト76は、仮想空間内を奥行き方向に向かって直進するようになる。
【0122】
図18は、4輪車オブジェクト76が左方向に旋回する様子の一例を示す図である。図19は、4輪車オブジェクト76が上方向を向く様子の一例を示す図である。
【0123】
図18に示されるように、ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合において、ユーザが例えばアナログスティック32の左方向を入力した場合、ユーザキャラクタPCが操縦桿オブジェクト70eを左方向に向ける様子が表示され、操縦桿オブジェクト70eの向きDeが左方向を向く。すると、4輪車オブジェクト76が左方向に旋回する。アナログスティック32の右方向が入力された場合は逆である。
【0124】
また、図19に示されるように、ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合において、ユーザが例えばアナログスティック32の下方向を入力した場合、ユーザキャラクタPCが操縦桿オブジェクト70eを手前に引く様子が表示され、操縦桿オブジェクト70eの向きDeが上方向を向く。すると、4輪車オブジェクト76が上方向を向き、ウイリー走行する。
【0125】
このように、操縦桿オブジェクト70eは、仮想空間を移動可能な様々な合体オブジェクトに組み入れられることができる。操縦桿オブジェクト70eが合体オブジェクトの一部として組み入れられた場合、操縦桿オブジェクト70eを用いて合体オブジェクトの移動を制御することができる。具体的には、操縦桿オブジェクト70eを用いて、合体オブジェクトに含まれる動力オブジェクトのON/OFFが制御される。また、操縦桿オブジェクト70eを用いて、合体オブジェクトのヨー方向又はピッチ方向の回転が制御される。動力オブジェクトのON/OFFが制御されるとともに、合体オブジェクトのヨー方向又はピッチ方向の回転が制御されることによって、合体オブジェクトの移動が制御される。
【0126】
なお、上記では、ユーザキャラクタPCが操縦桿オブジェクト70eの位置に移動したことに応じて、合体オブジェクトに含まれる各動力オブジェクトをON状態にしたが、ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいる場合において、ユーザによって所定の操作が行われたことに応じて、合体オブジェクトに含まれる各動力オブジェクトがON状態にされてもよい。すなわち、操縦桿操作モードに移行した場合において、ユーザの操作に応じて、合体オブジェクトに含まれる各動力オブジェクトがON状態にされてもよい。
【0127】
また、上記では、ユーザは、動力オブジェクトと操縦桿オブジェクト70eとを含む合体オブジェクトを生成するものとしたが、動力オブジェクトを含み、操縦桿オブジェクト70eを含まない合体オブジェクトを生成することもできる。ユーザキャラクタPCが、操縦桿オブジェクト70eを含まない合体オブジェクトに対して所定の動作(例えば、合体オブジェクトに対して矢を発射させる動作)を行った場合、合体オブジェクトに含まれる動力オブジェクトが動作し、合体オブジェクトが移動する。具体的には、合体オブジェクトとして、4つの車輪オブジェクト70cを含み、操縦桿オブジェクト70eを含まない車両オブジェクトが生成された場合、ユーザは、各車輪オブジェクト70cを個別に動作させる(ON状態にさせる)ことで、車両オブジェクトを移動させることができる。具体的には、ユーザは、ユーザキャラクタPCに1本ずつ矢を発射させ、矢を各車輪オブジェクト70cに当てることで、各車輪オブジェクト70cを個別に動作させることができる。4つの車輪オブジェクト70cが動作すると、車両オブジェクトは前進するようになり、ユーザキャラクタPCを当該車両オブジェクトに乗せることで、仮想空間内を移動することができる。しかしながら、車両オブジェクトは操縦桿オブジェクト70eを含まないため、ユーザは、車両オブジェクトを旋回させることはできない。
【0128】
このように、合体オブジェクトに操縦桿オブジェクト70eが含まれない場合は、ユーザは、合体オブジェクトに含まれる各動力オブジェクトを1つずつ動作させる必要があり、ユーザにとって煩わしい。例えば、各動力オブジェクトを順に動作させる場合、合体オブジェクトが動いてしまい、ユーザは、動力オブジェクトに対して所定の動作を行いにくい場合がある。しかしながら、合体オブジェクトに操縦桿オブジェクト70eが含まれる場合は、ユーザは、合体オブジェクトに含まれる全ての動力オブジェクトを同時に動作させることができるため、利便性が向上する。
【0129】
また、ユーザは、操縦桿オブジェクト70eを含み、動力オブジェクトを含まない合体オブジェクトを生成することも可能である。操縦桿オブジェクト70eを含み、動力オブジェクトを含まない合体オブジェクトの制御については後述する。
【0130】
次に、4輪車オブジェクト76を例として、操縦桿オブジェクト70eを用いた4輪車オブジェクト76の回転制御について説明する。図20は、操縦桿オブジェクト70eを用いた4輪車オブジェクト76のヨー方向の回転について説明するための図である。
【0131】
図20では、4輪車オブジェクト76を仮想空間の上方から見た図が示されている。図20におけるXYZ座標系は、操縦桿オブジェクト70eを基準とした座標系である。Z軸は、操縦桿オブジェクト70eの前方を示す軸であり、X軸は、操縦桿オブジェクト70eの右方向を示す軸であり、Y軸は、操縦桿オブジェクト70eの上方向を示す軸である。図20に示されるように、4輪車オブジェクト76の進行方向と、操縦桿オブジェクト70eのZ軸方向とが一致するように、操縦桿オブジェクト70eが配置されている。
【0132】
例えばアナログスティック32を用いた操縦桿オブジェクト70eの操舵が行われない場合、4輪車オブジェクト76は、4つの車輪オブジェクト70cによって所定の進行方向に移動する。4輪車オブジェクト76の進行方向は、各車輪オブジェクト70cの配置に応じて定まる。図20に示されるように、板オブジェクト70dの左右側面に4つの車輪オブジェクト70cが2つずつバランスよく配置されている場合は、4輪車オブジェクト76の進行方向は、直進方向である。また、4輪車オブジェクト76には、重心位置が定められる。4輪車オブジェクト76の重心位置は、4輪車オブジェクト76を構成する各仮想オブジェクト70の位置、重さによって定められる。図20に示される例では、4つの車輪オブジェクト70cが前後左右にバランスよく配置されているため、4輪車オブジェクト76の重心位置は、4輪車オブジェクト76のほぼ中央に位置する。
【0133】
図20の下図に示されるように、ユーザが例えばアナログスティック32を用いて左方向を入力した場合、ユーザキャラクタPCによって操縦桿オブジェクト70eのハンドル部分が操舵され、操縦桿オブジェクト70eのハンドル部分が左方向を向く。これに応じて、4輪車オブジェクト76は、重心位置を基準としてヨー方向における左方向に回転する。具体的には、4輪車オブジェクト76が、4輪車オブジェクト76の重心位置を通り仮想空間の上下方向に平行な軸を中心として左回りに回転するように、4輪車オブジェクト76を構成する各仮想オブジェクト70に対して回転速度が与えられる。より具体的には、4輪車オブジェクト76を構成する各仮想オブジェクト70に対して、角速度と、4輪車オブジェクト76の重心位置からの距離に応じた並進速度とが与えられる。車輪オブジェクト70cによる前方への速度と、ヨー方向における左方向への回転速度とによって、4輪車オブジェクト76全体が、左方向に旋回する。なお、4輪車オブジェクト76が、4輪車オブジェクト76の重心位置を通り、操縦桿オブジェクト70eを基準としたXYZ座標系におけるY軸と平行な軸を中心として回転するように、4輪車オブジェクト76を構成する各仮想オブジェクト70に対して回転速度が与えられてもよい。
【0134】
なお、車輪オブジェクト70cは、地面と接触しており、車輪オブジェクト70cと地面との間には摩擦が発生する。後述するように、仮想空間でのオブジェクトの挙動は、物理法則に従った計算によって定められる。各オブジェクト間の摩擦も考慮されて、各オブジェクトの挙動が計算される。4輪車オブジェクト76が直進するときには(操縦桿オブジェクト70eが操舵されていないときは)、車輪オブジェクト70cと地面との間の摩擦は比較的大きな値に設定され、4輪車オブジェクト76が旋回する場合には(操縦桿オブジェクト70eが操舵されているときは)、車輪オブジェクト70cと地面との間の摩擦は比較的小さな値に設定される。これにより、4輪車オブジェクト76全体がヨー方向に回転し易くなる。なお、4輪車オブジェクト76を旋回させる際に車輪オブジェクト70cと地面との間の摩擦を下げることにより、車輪オブジェクト70cが地面に対して滑るようなことがあってもよい。例えば、4輪車オブジェクト76が坂道を上っているときに旋回させた場合、車輪オブジェクト70cと地面との間の摩擦が下がり、これによって、4輪車オブジェクト76がずり下がるようになってもよい。なお、このようなずり下がりを防止するために、4輪車オブジェクト76が坂道を上ったり下りたりするときには、車輪オブジェクト70cと地面との間の摩擦の低下量を下げたり、ゼロにしたりしてもよい。
【0135】
図21は、操縦桿オブジェクト70eが4輪車オブジェクト76の進行方向と逆方向に配置されている場合のヨー方向の回転について説明するための図である。
【0136】
図21に示されるように、操縦桿オブジェクト70eの向き(Z軸方向)が4輪車オブジェクト76の進行方向と真逆になるように、操縦桿オブジェクト70eが4輪車オブジェクト76に配置されている。このような合体オブジェクトの構成において、アナログスティック32を用いた操縦桿オブジェクト70eの操舵が行われていない場合、4輪車オブジェクト76は、操縦桿オブジェクト70eの向きとは逆方向に進行する(ユーザキャラクタPCから見れば後進しているように見える)。
【0137】
図21の下図に示されるように、ユーザが例えばアナログスティック32を用いて左方向を入力した場合、ユーザキャラクタPCによって操縦桿オブジェクト70eが操舵され、操縦桿オブジェクト70eのハンドル部分が左方向を向く。これに応じて、図20で示したのと同様に、4輪車オブジェクト76は、重心位置を基準としてヨー方向における左方向に回転する。車輪オブジェクト70cによる後方への速度と、ヨー方向における左方向への回転速度とによって、4輪車オブジェクト76は、操縦桿オブジェクト70eの向きを前方とした場合に、右後方に移動する(4輪車オブジェクト76の進行方向を基準とした場合は、4輪車オブジェクト76は左方向に旋回する)。
【0138】
操縦桿オブジェクト70eが、4輪車オブジェクト76におけるどの位置、4輪車オブジェクト76に対してどの向きに配置されても、同様の制御となる。例えば、ユーザによって左方向が入力された場合、操縦桿オブジェクト70eのハンドル部分が、操縦桿オブジェクト70eを基準として左方向を向き、4輪車オブジェクト76は、重心位置を基準としてヨー方向における左方向に回転する。ユーザによって右方向の入力が行われた場合は逆である。すなわち、ユーザの入力方向と、操縦桿オブジェクト70eのハンドル部分の向きの変化方向と、4輪車オブジェクト76のヨー方向における回転方向とは、一致し、これらは、4輪車オブジェクト76における操縦桿オブジェクト70eの位置や向きに依存しない。
【0139】
操縦桿オブジェクト70eにも重さが設定されており、操縦桿オブジェクト70eの4輪車オブジェクト76における位置に応じて、4輪車オブジェクト76の重心位置は変化する。重心位置を基準として4輪車オブジェクト76を構成する各仮想オブジェクトが回転されるため、操縦桿オブジェクト70eの4輪車オブジェクト76における位置によって、4輪車オブジェクト76の回転の仕方が微妙に変化する。しかしながら、操縦桿オブジェクト70eが4輪車オブジェクト76におけるどのような位置に配置されても、ユーザの入力方向と操縦桿オブジェクト70eの操舵方向と4輪車オブジェクト76の回転方向との関係は変わらない。例えば、図20及び図21で示したように、操縦桿オブジェクト70eが左方向に操舵された場合は、4輪車オブジェクト76は重心位置を基準として左回りに回転する。なお、操縦桿オブジェクト70eには重さが設定されず、操縦桿オブジェクト70eが4輪車オブジェクト76におけるどのような位置に配置されても、4輪車オブジェクト76の重心位置は変わらなくてもよい。この場合、操縦桿オブジェクト70eの位置は、4輪車オブジェクト76のヨー方向の回転には影響を与えない。
【0140】
図22は、操縦桿オブジェクト70eを用いた4輪車オブジェクト76のピッチ方向の回転について説明するための図である。図22では、4輪車オブジェクト76を仮想空間の横方向から見た図が示されている。
【0141】
図22に示されるように、ユーザが例えばアナログスティック32を用いて下方向を入力した場合、ユーザキャラクタPCによって操縦桿オブジェクト70eが操舵され、操縦桿オブジェクト70eがユーザキャラクタPCから見て上方向を向く。これに応じて、4輪車オブジェクト76は、重心位置を基準として上方向(ピッチ方向)に回転する。具体的には、4輪車オブジェクト76が仮想空間の上方向を向くように、4輪車オブジェクト76の重心位置を中心として、4輪車オブジェクト76を構成する各仮想オブジェクト70に対して回転速度が与えられる。これにより、4輪車オブジェクト76全体が、上方向を向き、ウイリーする。
【0142】
図20図22では、4輪車オブジェクト76を例として説明したが、操縦桿オブジェクト70eを含む他の合体オブジェクトも同様である。例えば、図15のように、飛行機オブジェクト75をヨー方向に回転させる場合、飛行機オブジェクト75に対して、重心位置を基準としたヨー方向の回転が加えられる。また、図16のように、飛行機オブジェクト75をピッチ方向に回転させる場合、飛行機オブジェクト75に対して、重心位置を基準としたピッチ方向の回転が加えられる。
【0143】
なお、図示は省略するが、操縦桿オブジェクト70eを有し、動力を有さない他の合体オブジェクトについても同様に、操縦桿オブジェクト70eに対する操舵によって、合体オブジェクトに対して回転が与えられる。
【0144】
例えば、板オブジェクト70dの上面に操縦桿オブジェクト70eが配置され、板オブジェクト70dと操縦桿オブジェクト70eとからなる合体オブジェクトが構成された場合でも、操縦桿オブジェクト70eに対する操舵によって、合体オブジェクトに対して回転が与えられる。具体的には、ユーザキャラクタPCが操縦桿オブジェクト70eの位置にいるときに、ユーザによって例えばアナログスティック32を用いて左方向が入力された場合、合体オブジェクトに対して(合体オブジェクトに含まれる各仮想オブジェクト70に対して)、合体オブジェクトの重心位置を基準としたヨー方向における左方向への回転速度が与えられる。板オブジェクト70dと地面との摩擦が所定位置以下の場合には、合体オブジェクトは、その場で左回りに回転する。
【0145】
また、例えば板オブジェクト70dの上面に操縦桿オブジェクト70eが配置され、合体オブジェクトが構成された場合において、当該合体オブジェクトを仮想空間内の川や海等の水上に浮かべることもできる。この場合、合体オブジェクトは動力オブジェクトを含まないため、川の流れに沿って仮想空間内を移動する。このとき、操縦桿オブジェクト70eが操舵された場合、合体オブジェクトに対して回転が与えられる。具体的には、合体オブジェクトに対して、重心位置を基準としたヨー方向における左方向への回転速度が与えられる。この場合は、合体オブジェクトは、川の流れに沿って進みながらヨー方向に(仮想空間の上下方向の軸回りに)回転するだけであり、合体オブジェクトの移動方向は変化しない。
【0146】
なお、動力オブジェクトを有さない移動オブジェクトであっても、操縦桿オブジェクト70eに対する操舵によって移動オブジェクトの移動方向が変化される場合がある。
【0147】
図23は、翼オブジェクト70bと操縦桿オブジェクト70eとを含む飛行機オブジェクト77にユーザキャラクタPCが乗って仮想空間を直進する様子の一例を示す図である。図24は、飛行機オブジェクト77が操縦桿オブジェクト70eに対する操舵によって左に旋回する様子の一例を示す図である。
【0148】
図23に示されるように、飛行機オブジェクト77は、動力オブジェクトを含まない。しかし、本実施形態では、飛行機オブジェクト77が仮想空間の空を飛ぶ場合には、飛行機オブジェクト77の後方から前方(図23において紙面手前から奥方向)に向かう仮想的な推進力が飛行機オブジェクト77に与えられる。すなわち、画面上には表示されないものの、あたかも図14におけるエンジンオブジェクト70aの位置および方向に動力オブジェクトが設けられているかのように制御される。
【0149】
図24に示されるように、例えば、ユーザがアナログスティック32を用いて左方向を入力した場合、上記と同様に、ユーザキャラクタPCによって操縦桿オブジェクト70eが操舵され、操縦桿オブジェクト70eのハンドル部分が左方向を向く。これに応じて、飛行機オブジェクト77は、重心位置を基準としてヨー方向における左方向に回転する。そして、翼オブジェクト70bの向きが左方向に変化するとともに仮想的な推進力が与えられる方向も左に変化し、それによって飛行機オブジェクト77が左旋回する。すなわち、動力オブジェクトを有さない飛行機オブジェクト77も、動力オブジェクトを有する飛行機オブジェクト75と同様に、進行方向への推進力を有するものと捉えることができ、上記と同じ制御によって飛行機オブジェクト77を旋回させることができる。具体的には、ユーザキャラクタPCによる操縦桿オブジェクト70eのハンドル部分に対する操舵によって、飛行機オブジェクト77の進行方向が、飛行機オブジェクト77の重心位置を基準として回転される。このため、飛行機オブジェクト77が進行方向に移動しているときに、例えば、操縦桿オブジェクト70eのハンドル部分が左右方向に向けられた場合、進行方向を維持したまま(つまり直進したまま)単に飛行機オブジェクト77がヨー方向に回転するのではなく、進行方向自体が変化して、飛行機オブジェクト77は左右方向に旋回する動作を行う。
【0150】
なお、上記のような仮想的な推進力は、エンジンオブジェクト70aや扇風機オブジェクト70fのような動力オブジェクトが操縦桿オブジェクト70eに組まれた際にこれら動力オブジェクトによって与えられる推進力よりも小さく設定される。これは、仮想的な推進力は、飛行機オブジェクト77が操縦桿オブジェクト70eのハンドル部分に対する操舵に応答して旋回すれば足るからである。また、仮想的な推進力が動力オブジェクトの推進力と同等またはそれ以上の大きさの場合、動力オブジェクトを飛行機オブジェクト77に組むモチベーションが低減し、興趣性の低下につながるおそれも考えられるためである。
【0151】
このような仮想的な推進力を与えることによって、ユーザは、動力オブジェクトがなくとも操縦桿オブジェクト70eを用いて飛行機オブジェクト77を旋回させることができる。なお、このような仮想的な推進力は、操縦桿を備えるオブジェクトのうち、飛行機オブジェクト75(操縦桿オブジェクトを備える翼オブジェクト)のみ与えられてもよいし、他の乗り物オブジェクトにも与えられても良い。また、このような仮想的な推進力は、動力オブジェクトが備えられていないときのみ与えられてもよいし、動力オブジェクトの有無と関係なく与えられてもよい。なお、本実施形態では、仮想的な推進力は、飛行機オブジェクト77の後方から前方(図23において紙面手前から奥方向)の所定の方向に与えられた。これは、飛行機オブジェクト77(あるいは翼オブジェクト)のデザインが、一方と他方(前後方向)の区別ができ、かつ、ユーザにとってどちらが前方として妥当であるか事前に想定ができるためである。しかし、他の実施形態では、仮想的な推進力は操縦桿オブジェクトの向きに応じて決定されてもよいし、あるいは、初速が与えられた方向や初動の方向に基づいて決定されてもよい。
【0152】
以上のように、本実施形態では、合体オブジェクトに含まれる操縦桿オブジェクト70eを用いて、合体オブジェクトの移動方向を制御することができる。具体的には、合体オブジェクトは、操縦桿オブジェクト70eを用いてヨー方向又はピッチ方向に回転する。なお、本実施形態では、操縦桿オブジェクト70eを用いて、合体オブジェクトは、ロール方向には回転しないものとするが、他の実施形態では、ロール方向にも回転してもよい。また、本実施形態では、一般的に移動体の移動方向を制御するための機構に対応するオブジェクト(例えば飛行機における可動翼、イカダにおける舵など)が無くとも、合体オブジェクトに操縦桿オブジェクトが含まれることで移動方向を制御することができる。すなわち、合体オブジェクトが操縦桿オブジェクトを含みさえすれば、合体オブジェクトが移動する際の移動方向を制御することができ、ユーザビリティに優れる。
【0153】
(操縦桿オブジェクト70eの姿勢の補正)
次に、操縦桿オブジェクト70eを含む合体オブジェクトの姿勢の補正について説明する。上述のように、本実施形態では、操縦桿オブジェクト70eを含む合体オブジェクトは、ユーザの操作により仮想空間内を移動する。例えば、合体オブジェクトとして、飛行機オブジェクト75が仮想空間を飛行する場合、飛行機オブジェクト75は、例えば仮想空間の風の影響を受けたり、仮想空間内の所定のオブジェクトと衝突したりしながら飛行する。例えば風の影響を受けると、飛行機オブジェクト75はロール方向に回転したり、ピッチ方向に回転したりする。また、ユーザによって操縦桿オブジェクト70eを用いた操舵が行われた場合、飛行機オブジェクト75はロール方向やピッチ方向に回転する。本実施形態では、このような場合に、飛行機オブジェクト75の姿勢の補正が行われる。
【0154】
図25は、操縦桿オブジェクト70eのロール方向の姿勢の補正の一例を示す図である。図26は、操縦桿オブジェクト70eのピッチ方向の姿勢の補正の一例を示す図である。
【0155】
図25では、飛行機オブジェクト75の進行方向は紙面手前から奥方向である。図25に示されるように、飛行機オブジェクト75が仮想空間を飛行する場合、例えば風の影響によって、飛行機オブジェクト75がロール方向に回転する場合がある。このとき、操縦桿オブジェクト70eが左右方向に傾く。この場合、操縦桿オブジェクト70eの姿勢が水平に近づくように、飛行機オブジェクト75の姿勢が補正される。例えば、操縦桿オブジェクト70eのX軸が仮想空間の左右方向の軸と平行に近づくように(X軸と仮想空間の左右方向の軸との角度が0度に近づくように)、飛行機オブジェクト75全体が、Z軸回り(又は仮想空間の奥行き方向の軸回り)に回転される。
【0156】
また、図26では、飛行機オブジェクト75を仮想空間の横から見た図が示されている。図26に示されるように、飛行機オブジェクト75が仮想空間を飛行する場合、例えば風の影響によって、飛行機オブジェクト75がピッチ方向に回転する場合がある。このとき、操縦桿オブジェクト70eが前後方向に傾く。この場合、操縦桿オブジェクト70eの姿勢が水平に近づくように、飛行機オブジェクト75の姿勢が補正される。例えば、操縦桿オブジェクト70eのZ軸が仮想空間の奥行き方向の軸と平行に近づくように(Z軸と仮想空間の奥行き方向の軸との角度が0度に近づくように)、飛行機オブジェクト75全体が、X軸回り(又は仮想空間の左右方向の軸回り)に回転される。
【0157】
このような補正によって、飛行機オブジェクト75が仮想空間において傾く場合があっても、操縦桿オブジェクト70eを水平に近づけることができる。これにより、ユーザは、操縦桿オブジェクト70eを用いた飛行機オブジェクト75の操舵を行いやすくなる。なお、本実施形態では、ロール方向又はピッチ方向にのみこのような補正が行われ、ヨー方向については補正は行われない。
【0158】
なお、図25及び図26では、操縦桿オブジェクト70eが水平になるように補正されたが、補正の度合いは所定の範囲に限られており、飛行機オブジェクト75がロール方向に所定以上傾いている場合は、補正が行われても操縦桿オブジェクト70eは水平にはならなくともよい。また、補正の度合いは小さくされ、ロール方向又はピッチ方向への回転の力が所定以上の場合には、補正によっては水平に戻らないものとされてもよい。例えば、補正は、ロール方向又はピッチ方向への回転力(あるいは回転速度)を合体オブジェクト(又は合体オブジェクトを構成する各仮想オブジェクト)に付与することによって行われ、補正の度合い(付与される回転力あるいは回転速度)は比較的小さく設定される。飛行機オブジェクト75には、風や他のオブジェクト等の影響によってロール方向又はピッチ方向へ回転力(回転速度)が付与されるが、この回転力が所定以上の場合には、補正による回転力が打ち消され、補正によっては飛行機オブジェクト75は水平にならない。
【0159】
このようなロール方向及びピッチ方向の姿勢の補正は、飛行機オブジェクト75(操縦桿オブジェクトを備える翼オブジェクト)のみ行われてもよいし、操縦桿オブジェクト70eを含む他の合体オブジェクトも、同様の補正が行われてもよい。例えば、4輪車オブジェクト76の場合でも、操縦桿オブジェクト70eが水平に近づくように、4輪車オブジェクト76がロール方向又はピッチ方向に回転されてもよい。
【0160】
(ゲーム処理に用いられるデータの説明)
次に、上述したゲーム処理に用いられるデータについて説明する。図27は、ゲーム処理の実行中に本体装置2のメモリに記憶されるデータの一例を示す図である。
【0161】
図27に示されるように、本体装置2のメモリ(DRAM85、フラッシュメモリ84、又は外部記憶媒体)には、ゲームプログラムと、操作データと、ユーザキャラクタデータと、複数の合体オブジェクトデータとが記憶される。
【0162】
ゲームプログラムは、上述したゲーム処理を実行するためのプログラムである。ゲームプログラムは、スロット23に装着される外部記憶媒体又はフラッシュメモリ84に予め記憶されており、ゲームの実行時にDRAM85に読み込まれる。なお、ゲームプログラムは、ネットワーク(例えばインターネット)を介して他の装置から取得されてもよい。
【0163】
操作データは、左コントローラ3の各ボタン103、アナログスティック32、加速度センサ104、角速度センサ105、右コントローラ4の各ボタン113、アナログスティック52、加速度センサ114、角速度センサ115からのデータを含む。本体装置2は、各コントローラから所定の時間間隔(例えば、1/200秒間隔)で操作データを受信し、当該操作データをメモリに記憶する。また、操作データは、本体装置2からのデータ(加速度センサ、角速度センサ、タッチパネル等からのデータ)を含む。
【0164】
ユーザキャラクタデータは、ユーザキャラクタPCに関するデータであり、ユーザキャラクタPCの仮想空間における位置や姿勢に関する情報を含む。また、ユーザキャラクタデータは、ユーザキャラクタPCが所有するアイテムや能力等を示す情報を含んでもよい。
【0165】
合体オブジェクトデータは、ユーザによって作成された、複数の仮想オブジェクト70からなる1つ合体オブジェクトに関するデータである。複数の合体オブジェクトが仮想空間に配置されている場合、合体オブジェクト毎に合体オブジェクトデータが記憶される。
【0166】
合体オブジェクトデータは、合体オブジェクトを構成する複数の仮想オブジェクト70に関するデータを含む。具体的には、合体オブジェクトデータは、動力オブジェクトデータを含む。動力オブジェクトデータは、動力オブジェクト(例えば、エンジンオブジェクト70a、車輪オブジェクト70c等)に関するデータであり、動力オブジェクトの種類、合体オブジェクトにおける位置、姿勢、動作状態、及び重さに関するデータを含む。また、合体オブジェクトデータは、操縦桿オブジェクトデータを含む。操縦桿オブジェクトデータは、操縦桿オブジェクト70eの合体オブジェクトにおける位置、及び、仮想空間における姿勢に関する情報を含む。また、合体オブジェクトデータは、その他の仮想オブジェクト70に関する仮想オブジェクトデータを含む。また、合体オブジェクトデータは、合体オブジェクト情報を含む。
【0167】
合体オブジェクト情報は、合体オブジェクトの挙動を計算する際に用いられる情報であり、例えば、合体オブジェクトの重心位置を含む。合体オブジェクトの重心位置は、その合体オブジェクトを構成する複数の仮想オブジェクト70の重さ、合体オブジェクトにおける位置、姿勢等に基づいて算出される。
【0168】
(本体装置2におけるゲーム処理の詳細)
次に、本体装置2において行われるゲーム処理の詳細について説明する。図28は、本体装置2のプロセッサ81によって実行されるゲーム処理の一例を示すフローチャートである。
【0169】
図28に示されるように、プロセッサ81は、まず、初期処理を実行する(ステップS100)。具体的には、プロセッサ81は、仮想空間を設定し、仮想空間にユーザキャラクタPC、仮想カメラ、及び、複数の仮想オブジェクト70等を配置する。これらの他にも様々なオブジェクト(例えば、仮想空間の地面を表すオブジェクト、仮想空間に固定された木や建物などのオブジェクト)が仮想空間に配置される。
【0170】
次に、プロセッサ81は、合体オブジェクト生成処理を行う(ステップS101)。合体オブジェクト生成処理では、ユーザの操作に基づいて、複数の仮想オブジェクト70からなる合体オブジェクトが生成され、合体オブジェクトデータとしてメモリに記憶される。具体的には、ユーザの選択操作に応じて仮想空間に配置された仮想オブジェクト70が選択され、選択された仮想オブジェクト70と他の仮想オブジェクト70とが接続される。複数の仮想オブジェクト70が接続されることで、合体オブジェクトが生成される。
【0171】
合体オブジェクト生成処理が行われた後、ステップS102以降の処理が所定のフレーム時間間隔(例えば、1/60秒間隔)で繰り返し行われる。以下、ステップS102以降の処理について説明する。
【0172】
ステップS102において、プロセッサ81は、操作データを取得する。ステップS102では、プロセッサ81は、各コントローラから送信されてメモリに記憶された操作データを取得する。
【0173】
次にプロセッサ81は、ユーザキャラクタ制御処理を行う(ステップS103)。ステップS103では、操作データに基づいて、ユーザキャラクタPCを仮想空間内で移動させたり、ユーザキャラクタPCに所定の動作を行わせたりする。例えば、ユーザキャラクタPCが合体オブジェクトの近傍に位置しているときに、コントローラを用いて所定の操作が行われた場合、ユーザキャラクタPCが合体オブジェクトの上に乗る。
【0174】
次に、プロセッサ81は、現在、操縦桿オブジェクト70eを操作する操縦桿操作モードに設定されているか否かを判定する(ステップS104)。操縦桿操作モードでない場合(ステップS104:NO)、プロセッサ81は、操縦桿操作モードに移行するか否かを判定する(ステップS105)。具体的には、ユーザキャラクタPCが操縦桿オブジェクト70eを含む合体オブジェクトの上に乗っている状態で、コントローラを用いて所定の操作が行われた場合、プロセッサ81は、ステップS105でYESと判定する。
【0175】
ステップS105でYESと判定した場合、プロセッサ81は、操縦桿操作モードを設定する(ステップS106)。プロセッサ81は、ステップS106において、プレイヤオブジェクトPCを操縦桿オブジェクト70eの位置に移動させる。一方、ステップS105でNOと判定した場合、プロセッサ81は、次にステップS108の処理を実行する。
【0176】
ステップS106に続いて、プロセッサ81は、合体オブジェクト制御処理を行う(ステップS107)。合体オブジェクト制御処理は、操縦桿オブジェクト70eを用いて合体オブジェクトの移動を制御する処理である。合体オブジェクト制御処理の詳細については後述する。
【0177】
ステップS107の処理を行った場合、又は、ステップS105でNOと判定した場合、プロセッサ81は、物理演算処理を行う(ステップS108)。ステップS108では、仮想空間内の全てのオブジェクトについて、その位置、大きさ、重さ、速度、回転速度、加わる力、摩擦等に基づいて、物理法則に従った計算が行われ、各オブジェクトの動作が制御される。仮想空間内の仮想オブジェクト70や合体オブジェクトが移動する場合には、他のオブジェクトとの衝突判定が行われ、衝突判定の結果に応じて、各オブジェクトの挙動が計算される。
【0178】
例えば、合体オブジェクトとして、4輪車オブジェクト76が移動する場合、ステップS107の処理の結果に基づく4輪車オブジェクト76の進行方向の速度と、4輪車オブジェクト76の回転速度とに基づいて、4輪車オブジェクト76の挙動が計算される。この場合、車輪オブジェクト70cと地面との摩擦が考慮される。例えば、操縦桿オブジェクト70eの操舵によって、4輪車オブジェクト76に対してヨー方向における左方向の回転が加えられた場合、プロセッサ81は、地面との摩擦を減少させて、4輪車オブジェクト76の挙動を計算する。
【0179】
また、合体オブジェクトとして、飛行機オブジェクト75が空を飛ぶ場合、ステップS107の処理の結果に基づく飛行機オブジェクト75の進行方向の速度と、飛行機オブジェクト75の回転速度とに基づいて、飛行機オブジェクト75の挙動が計算される。
【0180】
次に、プロセッサ81は、出力処理を行う(ステップS109)。具体的には、プロセッサ81は、仮想カメラに基づいてゲーム画像を生成し、当該ゲーム画像をディスプレイ12又は据置型モニタに表示させる。また、プロセッサ81は、ゲーム処理の結果に応じた音声をスピーカから出力させる。
【0181】
続いて、プロセッサ81は、ゲーム処理を終了するか否かを判定する(ステップS110)。例えば、ユーザによってゲームの終了が指示された場合、プロセッサ81は、ステップS110でYESと判定して、図28に示すゲーム処理を終了する。ステップS110でNOと判定した場合、プロセッサ81は、ステップS102の処理を再び実行する。
【0182】
(合体オブジェクト制御処理)
次に、上記ステップS107の合体オブジェクト制御処理の詳細について説明する。図29は、ステップS107の合体オブジェクト制御処理の一例を示すフローチャートである。
【0183】
図29に示されるように、プロセッサ81は、合体オブジェクトに動力オブジェクトが含まれているか否かを判定する(ステップS200)。合体オブジェクトに動力オブジェクトが含まれている場合(ステップS200:YES)、プロセッサ81は、合体オブジェクトに含まれる全ての動力オブジェクトをON状態にする(ステップS201)。
【0184】
ステップS201の処理を行った場合、又は、ステップS200でNOと判定した場合、プロセッサ81は、操作データに基づいて、方向指示操作が行われたか否かを判定する(ステップS202)。プロセッサ81は、例えば、アナログスティック32を用いた方向指示操作が行われたか否かを判定する。
【0185】
方向指示操作が行われた場合(ステップS202:YES)、プロセッサ81は、合体オブジェクトを回転させる(ステップS203)。具体的には、プロセッサ81は、アナログスティック32の入力方向に応じて、合体オブジェクトに含まれる各仮想オブジェクト70が合体オブジェクトの重心位置回りで回転するように、各仮想オブジェクト70に回転速度を付与する。このステップS023で付与された回転速度に基づいてステップS108において物理演算が行われることで、各仮想オブジェクト70が回転され、合体オブジェクトが回転する。
【0186】
例えば、プロセッサ81は、ステップS203において、アナログスティック32の左右方向の入力に応じて、合体オブジェクトの重心位置を基準として、合体オブジェクトに含まれる各仮想オブジェクト70をヨー方向(仮想空間の上下方向の軸回り)に回転させる。これにより、合体オブジェクトは、ヨー方向(左右方向)に旋回する。また、プロセッサ81は、アナログスティック32の上下方向の入力に応じて、合体オブジェクトの重心位置を基準として、合体オブジェクトに含まれる各仮想オブジェクト70をピッチ方向(仮想空間の左右方向の軸回り)に回転させる。
【0187】
ステップS203の処理を行った場合、又は、ステップS202でNOと判定した場合、プロセッサ81は、姿勢補正処理を行う(ステップS204)。ここでは、プロセッサ81は、上述のように、操縦桿オブジェクト70eの姿勢が水平に近づくように、合体オブジェクトをロール方向又はピッチ方向に回転させる。
【0188】
次に、プロセッサ81は、操縦桿操作モードを終了するか否かを判定する(ステップS205)。コントローラを用いて操縦桿操作モードを終了する指示が行われた場合、プロセッサ81は、ステップS205でYESと判定し、操縦桿操作モードを終了する(ステップS206)。具体的には、ステップS206において、プロセッサ81は、上記ステップS201でON状態にした全ての動力オブジェクトをOFF状態に設定する。これにより合体オブジェクトの移動が停止するとともに、ユーザキャラクタPCが操縦桿オブジェクト70eの位置から離れる。
【0189】
ステップS206の処理を行った場合、又は、ステップS205でNOと判定した場合、プロセッサ81は、図29に示す処理を終了する。
【0190】
なお、上記フローチャートで示した処理は単なる例示に過ぎず、処理の順番や内容等は適宜変更されてもよい。
【0191】
以上のように、本実施形態では、ユーザは、仮想空間に配置された複数の仮想オブジェクト70を組み合わせて合体オブジェクトを生成する(ステップS101)。複数の仮想オブジェクト70には、合体オブジェクトに動力を与える仮想動力オブジェクト(エンジンオブジェクト70a、車輪オブジェクト70c、扇風機オブジェクト70f等)と、仮想コントローラオブジェクト(操縦桿オブジェクト70e)とが含まれる。ユーザは、合体オブジェクトとして、仮想動力オブジェクトと仮想コントローラオブジェクトとを含む仮想空間を移動可能な移動オブジェクトを生成することができる。仮想コントローラオブジェクトが移動オブジェクトに含まれる場合、仮想動力オブジェクトが動作されて移動オブジェクトが所定の進行方向に移動し(ステップS201)、ユーザの入力に基づいて、移動オブジェクトの移動方向が変化される(ステップS203)。
【0192】
これにより、ユーザは、複数の仮想オブジェクトを組み合わせて合体オブジェクトを生成することができるとともに、当該合体オブジェクトの移動を仮想コントローラオブジェクトを用いて制御することができる。このため、複数の仮想オブジェクトを組み合わせた合体オブジェクトに多様性を持たせることができる。また、仮想コントローラオブジェクトを用いて仮想動力オブジェクトの動作も制御することができるため、ユーザの利便性を向上することができる。
【0193】
また、本実施形態では、仮想動力オブジェクトの動作状態には、移動オブジェクトに動力を与えるON状態と、動力を与えないOFF状態とがあり、ユーザの入力に基づいて、1の仮想動力オブジェクトをON状態又はOFF状態に設定することができる。仮想コントローラオブジェクトが操作対象として設定されている場合、移動オブジェクトに含まれる全ての仮想動力オブジェクトが同時にON状態又はOFF状態にされる。複数の仮想動力オブジェクトが同時にON状態又はOFF状態にされることにより、1つずつON状態又はOFF状態にする場合よりもユーザの利便性が向上する。また、例えば、1つずつ仮想動力オブジェクトがON状態にされる場合には、仮想動力オブジェクトがON状態にされる毎に、移動オブジェクトの移動方向が変化してしまう場合があるが、複数の仮想動力オブジェクトが同時にON状態にされることにより、移動オブジェクトを所定の進行方向に移動させることができる。また、例えば、1つずつ仮想動力オブジェクトがOFF状態にされる場合には、ユーザが移動オブジェクトを停止させようとしても、ON状態の仮想動力オブジェクトが残り、移動オブジェクトをすぐに停止させることができなくなってしまう場合がある。しかしながら、本実施形態では、複数の仮想動力オブジェクトが同時にOFF状態にされるため、所望の位置やタイミングで移動オブジェクトを停止させることができる。
【0194】
また、本実施形態では、仮想コントローラオブジェクトは、移動オブジェクトにおける、ユーザによって指定された位置に配置される。また、移動オブジェクトには、通常部分と優先部分(優先接続部BP)とが設けられ、仮想コントローラオブジェクトは、移動オブジェクトにおける優先部分に優先的に配置される。ユーザは、移動オブジェクトにおける所望の位置に仮想コントローラオブジェクトを配置することができ、移動オブジェクトを生成するときの自由度を高めることができる。また、仮想コントローラオブジェクトは移動オブジェクトにおける優先部分に優先的に配置されるため、仮想コントローラオブジェクトを移動オブジェクトに配置するときの利便性が向上する。
【0195】
また、本実施形態では、ユーザ入力に基づいて、ユーザキャラクタが仮想コントローラオブジェクトを含む移動オブジェクト上に乗る。これにより、ユーザキャラクタが移動オブジェクトを制御することができる。例えば、ユーザの入力に基づいて、ユーザキャラクタが移動オブジェクト上の仮想コントローラオブジェクトを操作し、仮想コントローラオブジェクトの少なくとも一部(ハンドル部分)の向きが変化され、移動オブジェクトの移動方向が変化される。
【0196】
また、本実施形態では、ユーザによるアナログスティック32に対する操作によってユーザキャラクタが移動され、ユーザキャラクタが移動オブジェクト上の仮想コントローラオブジェクトに対応する位置(仮想コントローラオブジェクトの位置を含む所定範囲)に存在する場合、ユーザの入力(例えば所定のボタンの押下)に応じて、ユーザキャラクタが仮想コントローラオブジェクトの位置に移動する。ユーザキャラクタが仮想コントローラオブジェクトの位置に移動した場合、仮想コントローラオブジェクトが操作対象として設定され、移動オブジェクトを制御することができる。
【0197】
また、本実施形態では、移動オブジェクトにおける仮想コントローラオブジェクトの位置にかかわらず、ユーザの入力方向に応じた方向に移動オブジェクトの移動方向が変化される。これにより、仮想コントローラオブジェクトがどこに配置されても、ユーザは同じ操作で移動オブジェクトの移動方向を変化させることができる。
【0198】
また、仮想動力オブジェクトと仮想コントローラオブジェクトとが特定の位置関係でなくても、ユーザの入力に応じて移動オブジェクトの移動が制御される。また、仮想動力オブジェクトと仮想コントローラオブジェクトとの間に特定のオブジェクト(例えば、動力を伝達する特定のオブジェクト)が介在することなく、ユーザの入力に応じて移動オブジェクトの移動が制御される。すなわち、仮想動力オブジェクトと仮想コントローラオブジェクトとの位置関係にかかわらず、また、これらの間を繋ぐような特定のオブジェクトを必要とせずに、ユーザの入力に応じて移動オブジェクトの移動を制御することができる。なお、逆に、仮想動力オブジェクトと仮想コントローラオブジェクトとの位置関係や、これらの間に特定のオブジェクトが介在しているか否かによって、移動オブジェクトの制御の態様が異なってもよい。例えば、仮想動力オブジェクトと仮想コントローラオブジェクトとが特定の位置関係である場合に、ユーザの入力に応じて移動オブジェクトの移動が制御され、特定の位置関係でない場合は、移動オブジェクトの移動が制限されてもよい。また、仮想動力オブジェクトと仮想コントローラオブジェクトとの間に特定のオブジェクトが介在している場合は、ユーザの入力に応じて移動オブジェクトの移動が制御され、特定のオブジェクトが介在していない場合は、移動オブジェクトの移動が制限されてもよい。
【0199】
また、本実施形態では、ユーザは、移動オブジェクトに対する仮想コントローラオブジェクトの向きを指定して、仮想コントローラオブジェクトを移動オブジェクトに配置することができる。これにより、仮想コントローラオブジェクトを所望の向きで配置することができ、移動オブジェクトを生成するときの自由度を高めることができる。
【0200】
また、本実施形態では、移動オブジェクトにおける仮想コントローラオブジェクトの向きにかかわらず、ユーザの入力方向に応じた方向に移動オブジェクトの移動方向が変化される。これにより、仮想コントローラオブジェクトがどの向きで配置されても、ユーザは同じ操作で移動オブジェクトの移動方向を変化させることができる。
【0201】
また、本実施形態では、移動オブジェクトに対して移動オブジェクトの重心位置回りの回転速度を付与することにより、移動オブジェクトの移動方向が変化される。具体的には、移動オブジェクトを構成する各仮想オブジェクトに対して、移動オブジェクトの重心位置回りの回転速度を付与する。これにより、ユーザによって様々な仮想オブジェクトを用いて移動オブジェクトが生成されても、移動オブジェクトの移動方向を変化させることができる。移動オブジェクトに対して重心位置を基準として回転速度を付与するため、例えば、動力を有さない合体オブジェクトが加速して移動することはなく、自然な挙動にすることができる。
【0202】
また、本実施形態では、仮想空間の地面に接触しながら移動する移動オブジェクト(4輪車オブジェクト)を生成することができ、当該4輪車オブジェクトの移動方向を変化させる場合、4輪車オブジェクトを所定の進行方向に移動させる場合よりも、4輪車オブジェクトと地面との摩擦を小さくする。これにより、4輪車オブジェクトを旋回させやすくすることができる。
【0203】
また、本実施形態では、移動オブジェクトに含まれる仮想コントローラオブジェクトの仮想空間における姿勢が所定の姿勢(例えば水平姿勢)となるように、移動オブジェクトのロール方向又はピッチ方向の姿勢が補正される。これにより、移動オブジェクトの姿勢が変化する場合でも仮想コントローラオブジェクトの姿勢を所定の姿勢に保つことができ、操作性を向上させることができる。
【0204】
また、本実施形態では、共通の操縦桿オブジェクトを用いて合体オブジェクト(移動オブジェクト)を操作することができる。ユーザは自由に合体オブジェクト(移動オブジェクト)を組むことができるため、組み合わせられた移動オブジェクトがどのような種類(例えばクルマや飛行機)に分類されるか分からない場合があるが、どのような移動オブジェクトにも共通の操縦桿オブジェクトを組み合わせることが可能であるため、ユーザビリティに優れる。例えば、移動オブジェクトが動力オブジェクトを備えている場合、どの種類の動力オブジェクトであっても、共通の操縦桿オブジェクトを用いることができる。このように、どのような移動オブジェクトであっても、共通の操縦桿オブジェクトを用いて操作することができるため、移動オブジェクトの操作方法を共通にしてユーザビリティを向上させ、また、直観に沿う操作が可能である。例えば、移動オブジェクトの進行方向に対して、あるユーザ操作に対する移動オブジェクトの移動方向の変化の傾向は、移動オブジェクトを構成する仮想オブジェクトの種類や組み方に関わらず共通であってもよい。なお、移動オブジェクトが動力オブジェクトを備える場合、その動力オブジェクトの種類によらず、操縦桿オブジェクトに対する共通の操作によって動力オブジェクトをONできてもよい。また、操縦桿オブジェクトのみを第1の移動オブジェクトから離脱させて第2の移動オブジェクトに接着させることで、1つの操縦桿オブジェクトを用いて第1の移動オブジェクトと第2の移動オブジェクトを切り替えて操縦することができてもよい。
【0205】
なお、上記複数の移動オブジェクトに共通の操縦桿オブジェクトは、1種類だけあってもよい。また、1種類の操縦桿オブジェクトが1個だけあってもよい。また、操縦桿オブジェクトは種類としては1種類だけだが、複数個あってもよい。
【0206】
また、上記実施形態では、操縦桿オブジェクトを用いて移動オブジェクトに含まれる1又は複数の動力オブジェクトのON/OFFを制御したが、操縦桿オブジェクトを用いて動力オブジェクトのON/OFFを制御しなくてもよい。例えば、操縦桿オブジェクトを用いた操作に依らず、移動オブジェクトに含まれる動力オブジェクトは、常にON状態であってもよい。また、移動オブジェクトに含まれる動力オブジェクトは通常はOFF状態であり、操縦桿オブジェクトを用いた操作とは別の操作によって複数の動力オブジェクトを個別に又はまとめてON状態に制御されてもよい。このように、操縦桿オブジェクトによって動力オブジェクトのON/OFFが制御されない場合であっても、操縦桿オブジェクトによって移動オブジェクトの移動方向や移動速度が制御されてもよい。
【0207】
(変形例)
以上、本実施形態について説明したが、上記実施形態は単なる一例であり、例えば以下のような変形が加えられてもよい。
【0208】
例えば、上記実施形態において、合体オブジェクトの移動の制御に用いられたユーザの操作は単なる一例であり、コントローラ3,4の任意のボタン、アナログスティックを用いて、合体オブジェクト(移動オブジェクト)の移動が制御されてもよい。例えば、コントローラ3,4の所定のボタンが押下されることにより、移動オブジェクトが所定の進行方向に移動開始し、別のボタンが押下されることにより、移動オブジェクトの移動方向が変化されてもよい。また、アナログスティックに対する操作によって、移動オブジェクトが所定の進行方向に移動開始し、同じ又は異なるアナログスティックに対する操作によって、移動オブジェクトの移動方向が変化されてもよい。また、コントローラ3,4の姿勢、本体装置2の姿勢に基づいて、移動オブジェクトの移動が制御されてもよい。
【0209】
また、上記実施形態では、ユーザキャラクタが合体オブジェクト上に乗り、合体オブジェクト上の操縦桿オブジェクトの位置にユーザキャラクタが移動した場合に、所定の操作に応じて、当該合体オブジェクトを制御可能に設定した(操作対象として設定した)。合体オブジェクトを操作対象として設定する方法はどのようなものでもよい。例えば、ユーザキャラクタが合体オブジェクトに乗っていることを条件とせず、操縦桿オブジェクトに対応する位置にユーザキャラクタが存在する場合に、所定の操作に応じて、当該合体オブジェクトを操作対象として設定してもよい。あるいは、ユーザキャラクタが合体オブジェクトの近くに存在している場合において、所定の操作に応じて、当該合体オブジェクトを操作対象として設定してもよい。また、位置に関する条件を満たせば、所定の操作を要せずに当該合体オブジェクトを操作対象として設定してもよい。あるいは、ユーザキャラクタと合体オブジェクトとの位置に関係なく、適宜の操作により、合体オブジェクトを操作対象として設定してもよい。
【0210】
また、上記実施形態では、移動オブジェクトに含まれる動力オブジェクトの位置や姿勢に基づいて移動オブジェクトの進行方向が定められ、操縦桿オブジェクト70eに対する操舵が行われない場合は、移動オブジェクトを当該進行方向に移動させた。操縦桿オブジェクト70eに対する操舵が行われる場合は、移動オブジェクトを重心軸回りに回転させることで、移動オブジェクトの移動方向を変化させた。他の実施形態では、別の方法により移動オブジェクトの移動方向が変化されてもよい。例えば、操縦桿オブジェクト70eに対する左右方向の操舵が行われた場合、移動オブジェクトに含まれる動力オブジェクトの向きを左右方向に変化させることで、移動オブジェクトの移動方向を左右方向に変化させてもよい。また、他の実施形態では、操縦桿オブジェクト70eに対する左右方向の操舵が行われた場合、移動オブジェクトに対して左右方向の並進速度を加えることで、移動オブジェクトの移動方向を左右方向に変化させてもよい。また、他の実施形態では、操縦桿オブジェクト70eに対する左右方向の操舵が行われた場合、移動オブジェクトに対して左右方向の加速度(力)を加えることで、移動オブジェクトの移動方向を左右方向に変化させてもよい。
【0211】
また、上記実施形態では、動力オブジェクトの動作状態は、ON状態又はOFF状態のどちらかであるとした。他の実施形態では、動力オブジェクトの出力値(パワー)が変化されてもよい。例えば、操縦桿オブジェクト70eが操作対象として設定された場合、移動オブジェクトに含まれる動力オブジェクトの出力値を上げることで、移動オブジェクトを進行方向に移動させてもよい。また、例えば、操縦桿オブジェクト70eに対する左右方向の操舵が行われた場合、移動オブジェクトに含まれる動力オブジェクトの出力値を変化させることで、移動オブジェクトの移動方向を左右方向に変化させてもよい。また、操縦桿オブジェクト70eを用いて、動力オブジェクトの出力値を変化させることによって、移動オブジェクトの移動を開始させたり、停止させたり、移動オブジェクトの移動速度を変化させたりしてもよい。
【0212】
また、上記実施形態では、動力オブジェクトは、動力として合体オブジェクトに対し所定の速度を与えるものとした。そして、各オブジェクトに対して与えられた速度に基づいて、各オブジェクトの挙動が計算された。他の実施形態では、動力オブジェクトは、合体オブジェクトに対して力(加速度)を与え、与えられた力(加速度)に基づいて各オブジェクトの挙動が計算されてもよい。
【0213】
また、上記実施形態における各仮想オブジェクト70は単なる一例であり、その他の仮想オブジェクトが用いられてもよい。例えば、仮想コントローラオブジェクトの一例として、上記実施形態では操縦桿オブジェクト70eが用いられたが、他の実施形態では、仮想コントローラオブジェクトとして、ハンドルを模したオブジェクトが用いられてもよい。また、仮想コントローラオブジェクトは、操縦席や操縦室のような場所を示すものであってもよい。
【0214】
また、上記実施形態では、操縦桿オブジェクト70eを操作対象として設定した場合にユーザキャラクタPCを操縦桿オブジェクト70eの位置に配置した。他の実施形態では、ユーザキャラクタPCの位置は、操縦桿オブジェクト70eの位置と必ずしも一致しなくてもよく、ユーザキャラクタPCは、操縦桿オブジェクト70eの位置に応じて定められる所定範囲に配置されてもよい。また、操縦桿オブジェクト70eを操作対象として設定する方法は、ボタンの押下に限らず、他の任意の方法であってもよい。例えば、ユーザが、操縦桿オブジェクト70eを所定の指示標識で指示することによって、操縦桿オブジェクト70eを操作対象として設定してもよい。
【0215】
また、ユーザによって、操縦桿オブジェクト70eを含み、動力オブジェクトを含まない移動オブジェクトが生成されてもよい。このような動力オブジェクトを含まない移動オブジェクトの移動方向が、操縦桿オブジェクトを用いて変化される。具体的には、そのような移動オブジェクトがユーザによって生成された場合において、当該移動オブジェクトに対して所定の方向への速度が与えられる。例えば、ユーザキャラクタが移動オブジェクトに対して所定の動作を行うことで速度が与えられてもよいし、移動オブジェクトを落下させたり、坂を滑らせたりすることで速度が与えられてもよい。また、移動オブジェクトに対して他のオブジェクトが衝突することで、当該移動オブジェクトに対して速度が与えられてもよい。このような付与される速度は、移動方向への動力として見なすことができる。このように、移動オブジェクトが所定方向に移動している前提で、ユーザの入力に基づいて、移動オブジェクトに含まれる操縦桿オブジェクトが操作対象として設定され、操縦桿オブジェクトが操作対象として設定されている場合、ユーザの入力に基づいて、移動オブジェクトの移動方向が変化されてもよい。
【0216】
また、操縦桿オブジェクト70eを含み、動力オブジェクトを含まない移動オブジェクトが斜面等を移動している状況において、ユーザキャラクタPCが操縦桿オブジェクト70eの位置に移動した時点における移動オブジェクトの進行方向に動力が発生されてもよい。この動力の方向(進行方向)は、移動オブジェクトを基準として設定される。この場合において、操縦桿オブジェクト70eが操舵されると、操舵方向に応じて、移動オブジェクトが重心位置を基準として回転され、進行方向も回転される。これにより、移動オブジェクトが旋回する。
【0217】
また、上記実施形態では、仮想空間に配置された複数の仮想オブジェクト70を組むことで合体オブジェクトを生成した。他の実施形態では、合体オブジェクトを生成する段階では、複数の仮想オブジェクト70の少なくとも一部は、仮想空間に配置されておらず、収容領域に収容されてもよい。例えば、動力オブジェクトは仮想空間に配置され、操縦桿オブジェクトは収容領域に収容されてもよい。また、操縦桿オブジェクトは仮想空間に配置され、動力オブジェクトは収容領域に収容されてもよい。これら仮想空間は配置された、又は、収容領域に収容された複数の仮想オブジェクトを組むことで、動力オブジェクトと操縦桿オブジェクトとを含む合体オブジェクトが生成され、当該生成された合体オブジェクトが仮想空間に配置されてもよい。
【0218】
また、他の実施形態では、操縦桿オブジェクトは、複数種類あってもよい。例えば、種類の異なる第1操縦桿オブジェクトと第2操縦桿オブジェクトとがあり、ユーザは、移動オブジェクトに対して、第1操縦桿オブジェクトを組み合わせることも、第2操縦桿オブジェクトを組み合わせることも可能であってもよい。この場合において、第1操縦桿オブジェクトを含む移動オブジェクトよりも第2操縦桿オブジェクトを移動オブジェクトの方が、移動速度や移動方向の変化速度が速くてもよい。また、操縦桿オブジェクトが複数種類用意され、動力の種類又は合体オブジェクト(移動オブジェクト)の構成(種類)に対して、当該移動オブジェクトの移動方向を制御可能な操縦桿オブジェクトの種類が対応していてもよい。
【0219】
また、上記実施形態では、動力を与える動力オブジェクトが合体オブジェクトに組み合わされる例を示したが、動力を与えない非動力オブジェクト(例えば発光するライトオブジェクト)が合体オブジェクトに組み合わされてもよい。そして、操縦桿オブジェクトを用いて、当該非動力オブジェクトのON/OFFを制御可能であってもよい。合体オブジェクトが複数の非動力オブジェクトを含んでいる場合、操縦桿オブジェクトを用いて、複数の非動力オブジェクトのON/OFFをまとめて制御可能であってもよいし、複数の非動力オブジェクトのON/OFFを個別に制御可能であってもよい。また、合体オブジェクトが、複数の非動力オブジェクトと複数の動力オブジェクトとを含んでいる場合、操縦桿オブジェクトを用いて、複数の非動力オブジェクト及び動力オブジェクトのON/OFFをまとめて制御可能であってもよいし、複数の非動力オブジェクト及び動力オブジェクトのON/OFFを個別に制御可能であってもよい。すなわち、合体オブジェクトに含まれるON/OFFを切り替え可能なオブジェクトについては、動力を与えるか否かにかかわらず、操縦桿オブジェクトを用いて、まとめて又は個別にON/OFFを制御することができてもよい。
【0220】
なお、動力オブジェクト及び非動力オブジェクトを含む合体オブジェクトにおいて、操縦桿オブジェクトを用いて、動力オブジェクトのみを制御可能であってもよい。合体オブジェクトが、複数の動力オブジェクトと複数の非動力オブジェクトとを含む場合、操縦桿オブジェクトを用いて、当該複数の動力オブジェクトの全てを同時にON状態又はOFF状態に制御することができてもよい。逆に、動力オブジェクト及び非動力オブジェクトを含む合体オブジェクトにおいて、非動力オブジェクトのみを制御可能であってもよい。また、動力オブジェクトのみを制御可能な操縦桿オブジェクトと、非動力オブジェクトのみを制御可能な操縦桿オブジェクトとが用意されてもよい。
【0221】
また、上記ゲームを行うハードウェアの構成は単なる一例であり、他の任意のハードウェアにおいて上記ゲーム処理が行われてもよい。例えば、パーソナルコンピュータ、タブレット端末、スマートフォン、インターネット上のサーバ等、任意の情報処理システムにおいて上記ゲーム処理が実行されてもよい。また、上記ゲーム処理は、複数の装置によって分散実行されてもよい。
【0222】
また上記実施形態及びその変形例に係る構成は、互いに矛盾しない限り、任意に組み合わせることが可能である。また、上記は本発明の例示に過ぎず、上記以外にも種々の改良や変形が加えられてもよい。
【符号の説明】
【0223】
1 ゲームシステム
2 本体装置
3 左コントローラ
4 右コントローラ
32、52 アナログスティック
81 プロセッサ
70 仮想オブジェクト
75、77 飛行機オブジェクト
76 4輪車オブジェクト
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29