(57)【要約】【課題】ゲーム状況をユーザにとってわかりやすく提示する。【解決手段】情報処理装置は、仮想３次元空間内に、第１〜第４オブジェクト、第１オブジェクトと第２オブジェクトを連結する第１連結オブジェクト、および、第３オブジェクトと第４オブジェクトを連結する第２連結オブジェクトを配置する。情報処理装置は、第１連結オブジェクトに基づいて第１オブジェクトおよび第２オブジェクトの移動に制約を加えて、第１オブジェクトおよび第２オブジェクトの動作を制御する。また、情報処理装置は、第２連結オブジェクトに基づいて第３オブジェクトおよび第４オブジェクトの移動に制約を加えて、第３オブジェクトおよび第４オブジェクトの動作を制御する。仮想カメラは、第３オブジェクトおよび第４オブジェクトの少なくともいずれかが視野範囲に含まれるように、仮想３次元空間内に配置される。【選択図】図１４
2019000221.tif 000002
【特許請求の範囲】
【請求項１】
ユーザが操作する第１オブジェクトおよび第２オブジェクトを含む第１グループと、第３オブジェクトおよび第４オブジェクトを含む第２グループとが対戦するゲーム処理を行う情報処理装置のコンピュータに実行させるためのゲームプログラムであって、
仮想３次元空間内に、前記第１オブジェクト、前記第２オブジェクト、前記第３オブジェクト、前記第４オブジェクト、当該第１オブジェクトと当該第２オブジェクトを連結する第１連結オブジェクト、および、当該第３オブジェクトと当該第４オブジェクトを連結する第２連結オブジェクトを配置するオブジェクト配置手段と、
前記第１連結オブジェクトに基づいて前記第１オブジェクトおよび前記第２オブジェクトの移動に制約を加えて、前記第１オブジェクトおよび前記第２オブジェクトの動作を制御し、前記第２連結オブジェクトに基づいて前記第３オブジェクトおよび前記第４オブジェクトの移動に制約を加えて、前記第３オブジェクトおよび前記第４オブジェクトの動作を制御する動作制御手段と、
前記第３オブジェクトおよび前記第４オブジェクトの少なくともいずれかが視野範囲に含まれるように、前記仮想３次元空間内に配置される仮想カメラを制御する仮想カメラ制御手段と、
前記仮想カメラに基づいて得られる仮想空間画像を生成する仮想空間画像生成手段と、
前記仮想空間画像を表示装置に表示させる表示制御手段として前記コンピュータを機能させるゲームプログラム。
【請求項２】
前記動作制御手段は、前記第１連結オブジェクトの状態に基づいて前記第１オブジェクトおよび前記第２オブジェクトの移動に制約を加えて、前記第１オブジェクトおよび前記第２オブジェクトの動作を制御し、前記第２連結オブジェクトの状態に基づいて前記第３オブジェクトおよび前記第４オブジェクトの移動に制約を加えて、前記第３オブジェクトおよび前記第４オブジェクトの動作を制御する、請求項１に記載のゲームプログラム。
【請求項３】
前記動作制御手段は、
前記第１連結オブジェクトが前記第１オブジェクトおよび前記第２オブジェクトに及ぼす仮想的な第１張力を用いて前記第１オブジェクトおよび前記第２オブジェクトの移動に制約を加え、
前記第２連結オブジェクトが前記第３オブジェクトおよび前記第４オブジェクトに及ぼす仮想的な第２張力を用いて前記第３オブジェクトおよび前記第４オブジェクトの移動に制約を加える、請求項１または請求項２に記載のゲームプログラム。
【請求項４】
前記動作制御手段は、
前記第１連結オブジェクトの長さが第１の長さである場合の第１張力を、前記第１連結オブジェクトの長さが当該第１の長さよりも短い第２の長さである場合の張力よりも大きく設定し、
前記第２連結オブジェクトの長さが前記第１の長さである場合の第２張力を、前記第２連結オブジェクトの長さが前記第２の長さである場合の張力よりも大きく設定する、請求項３に記載のゲームプログラム。
【請求項５】
前記動作制御手段は、
前記第１連結オブジェクトの方向を向く張力のうち、前記仮想３次元空間における所定の第１方向に直交する第２方向に関する成分を減少させることによって第１張力を算出し、
前記第２連結オブジェクトの方向を向く張力のうち、前記第２方向に関する成分を減少させることによって第２張力を算出する、請求項３または請求項４に記載のゲームプログラム。
【請求項６】
前記第２方向は、前記仮想３次元空間における鉛直方向である、請求項４に記載のゲームプログラム。
【請求項７】
前記動作制御手段は、前記第１連結オブジェクトが前記仮想３次元空間における他のオブジェクトと接触するか否かにかかわらず、前記第１オブジェクトおよび前記第２オブジェクトに基づいて前記第１連結オブジェクトの状態を決定する、請求項１から請求項６のいずれか１項に記載のゲームプログラム。
【請求項８】
前記仮想空間画像生成手段は、前記第１オブジェクトと前記第２オブジェクトとの距離に応じて前記第１連結オブジェクトの表示態様を変化させ、前記第３オブジェクトと前記第４オブジェクトとの距離に応じて前記第２連結オブジェクトの表示態様を変化させて、前記仮想空間画像を生成する、請求項１から請求項７のいずれか１項に記載のゲームプログラム。
【請求項９】
前記動作制御手段は、前記第１オブジェクトに関する解除条件が満たされる間、前記第１オブジェクトの移動に関する制約を解除して前記第１オブジェクトの動作を制御する、請求項１から請求項８のいずれか１項に記載のゲームプログラム。
【請求項１０】
前記解除条件は、前記第１オブジェクトが第１動作を行っていることである、請求項９に記載のゲームプログラム。
【請求項１１】
前記動作制御手段は、
前記第２オブジェクトが前記第１動作と同じまたは異なる第２動作を行っている間、前記第２オブジェクトの移動に関する制約を解除して第２オブジェクトの動作を制御し、
前記第１オブジェクトが前記第１動作を行い、かつ、前記第２オブジェクトが前記第２動作を行う場合であって、前記第１動作の動作方向および前記第２動作の動作方向が所定の条件を満たす場合、前記第１動作の動作方向と前記第２動作の動作方向との少なくともいずれかを補正する、請求項１０に記載のゲームプログラム。
【請求項１２】
前記動作制御手段は、前記ユーザによる操作に応じて、前記第１オブジェクトに関連する移動オブジェクトを前記第１オブジェクトから前記第３オブジェクトまたは前記第４オブジェクトへ向けて移動させる移動制御手段を含む、請求項１から請求項１１のいずれか１項に記載のゲームプログラム。
【請求項１３】
前記移動制御手段は、前記移動オブジェクトの移動中における前記ユーザによる操作に応じて、移動中の前記移動オブジェクトの移動方向を変更する、請求項１２に記載のゲームプログラム。
【請求項１４】
前記動作制御手段は、前記移動オブジェクトの移動中において、前記第３オブジェクトまたは前記第４オブジェクトによる動作によって前記第１オブジェクトが前記仮想３次元空間を移動させられる場合、前記移動オブジェクトの移動を中止する、請求項１２または請求項１３に記載のゲームプログラム。
【請求項１５】
入力装置の動きを示す動きデータを取得する取得手段として前記コンピュータをさらに実行させ、
前記動作制御手段は、前記動きデータに基づいて前記第１オブジェクトの動作を制御する、請求項１から請求項１４のいずれか１項に記載のゲームプログラム。
【請求項１６】
前記動作制御手段は、前記第３オブジェクトまたは前記第４オブジェクトによる動作によって前記第２オブジェクトが前記仮想３次元空間を移動させられる場合、前記第１連結オブジェクトの長さが所定の状態を維持するように、前記第２オブジェクトの移動に連動して前記第１オブジェクトを移動させる、請求項１から請求項１５のいずれか１項に記載のゲームプログラム。
【請求項１７】
前記仮想カメラ制御手段は、前記第１オブジェクトの側から前記第３オブジェクトおよび前記第４オブジェクトのいずれかの側を向くように前記仮想カメラを制御する、請求項１から請求項１６のいずれか１項に記載のゲームプログラム。
【請求項１８】
前記仮想カメラ制御手段は、前記ユーザによる操作に応じて、前記仮想カメラが向く対象を、前記第３オブジェクトと前記第４オブジェクトとの間で切り替えるように前記仮想カメラを制御する、請求項１７に記載のゲームプログラム。
【請求項１９】
ユーザが操作する第１オブジェクトおよび第２オブジェクトを含む第１グループと、第３オブジェクトおよび第４オブジェクトを含む第２グループとが対戦するゲーム処理を行う情報処理装置であって、
仮想３次元空間内に、前記第１オブジェクト、前記第２オブジェクト、前記第３オブジェクト、前記第４オブジェクト、当該第１オブジェクトと当該第２オブジェクトを連結する第１連結オブジェクト、および、当該第３オブジェクトと当該第４オブジェクトを連結する第２連結オブジェクトを配置するオブジェクト配置手段と、
前記第１連結オブジェクトに基づいて前記第１オブジェクトおよび前記第２オブジェクトの移動に制約を加えて、前記第１オブジェクトおよび前記第２オブジェクトの動作を制御し、前記第２連結オブジェクトに基づいて前記第３オブジェクトおよび前記第４オブジェクトの移動に制約を加えて、前記第３オブジェクトおよび前記第４オブジェクトの動作を制御する動作制御手段と、
前記第３オブジェクトおよび前記第４オブジェクトの少なくともいずれかが視野範囲に含まれるように、前記仮想３次元空間内に配置される仮想カメラを制御する仮想カメラ制御手段と、
前記仮想カメラに基づいて得られる仮想空間画像を生成する仮想空間画像生成手段と、
前記仮想空間画像を表示装置に表示させる表示制御手段とを備える、情報処理装置。
【請求項２０】
ユーザが操作する第１オブジェクトおよび第２オブジェクトを含む第１グループと、第３オブジェクトおよび第４オブジェクトを含む第２グループとが対戦するゲーム処理を行う情報処理システムであって、
仮想３次元空間内に、前記第１オブジェクト、前記第２オブジェクト、前記第３オブジェクト、前記第４オブジェクト、当該第１オブジェクトと当該第２オブジェクトを連結する第１連結オブジェクト、および、当該第３オブジェクトと当該第４オブジェクトを連結する第２連結オブジェクトを配置するオブジェクト配置手段と、
前記第１連結オブジェクトに基づいて前記第１オブジェクトおよび前記第２オブジェクトの移動に制約を加えて、前記第１オブジェクトおよび前記第２オブジェクトの動作を制御し、前記第２連結オブジェクトに基づいて前記第３オブジェクトおよび前記第４オブジェクトの移動に制約を加えて、前記第３オブジェクトおよび前記第４オブジェクトの動作を制御する動作制御手段と、
前記第３オブジェクトおよび前記第４オブジェクトの少なくともいずれかが視野範囲に含まれるように、前記仮想３次元空間内に配置される仮想カメラを制御する仮想カメラ制御手段と、
前記仮想カメラに基づいて得られる仮想空間画像を生成する仮想空間画像生成手段と、
前記仮想空間画像を表示装置に表示させる表示制御手段とを備える、情報処理システム。
【請求項２１】
ユーザが操作する第１オブジェクトおよび第２オブジェクトを含む第１グループと、第３オブジェクトおよび第４オブジェクトを含む第２グループとが対戦するゲーム処理を行う情報処理システムにおいて実行されるゲーム処理方法であって、
仮想３次元空間内に、前記第１オブジェクト、前記第２オブジェクト、前記第３オブジェクト、前記第４オブジェクト、当該第１オブジェクトと当該第２オブジェクトを連結する第１連結オブジェクト、および、当該第３オブジェクトと当該第４オブジェクトを連結する第２連結オブジェクトを配置するオブジェクト配置ステップと、
前記第１連結オブジェクトに基づいて前記第１オブジェクトおよび前記第２オブジェクトの移動に制約を加えて、前記第１オブジェクトおよび前記第２オブジェクトの動作を制御し、前記第２連結オブジェクトに基づいて前記第３オブジェクトおよび前記第４オブジェクトの移動に制約を加えて、前記第３オブジェクトおよび前記第４オブジェクトの動作を制御する動作制御ステップと、
前記第３オブジェクトおよび前記第４オブジェクトの少なくともいずれかが視野範囲に含まれるように、前記仮想３次元空間内に配置される仮想カメラを制御する仮想カメラ制御ステップと、
前記仮想カメラに基づいて得られる仮想空間画像を生成する仮想空間画像生成ステップと、
前記仮想空間画像を表示装置に表示させる表示制御ステップとを含む、ゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、複数のオブジェクトの動作を制御するゲームプログラム、情報処理装置、情報処理システム、および、ゲーム処理方法に関する。
【背景技術】
【０００２】
従来、ゲーム空間に登場する複数のオブジェクトがいくつかのグループに分かれて対戦するグループ対戦形式のゲームがある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−３０００４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
グループ対戦形式のゲームにおいて各オブジェクトが自由にゲーム空間を移動する場合には、ユーザは、ゲーム状況を把握しづらくなるおそれがあった。例えば、ユーザは、どのオブジェクトが味方であり、どのオブジェクトが敵であるかを把握しづらくなるおそれがあった。
【０００５】
それ故、本発明の目的は、ゲーム状況をユーザにとってわかりやすく提示することができるゲームプログラム、情報処理装置、情報処理システム、および、ゲーム処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記の課題を解決すべく、本発明は、以下の（１）〜（１８）の構成を採用した。
【０００７】
（１）
本発明の一例は、ユーザが操作する第１オブジェクトおよび第２オブジェクトを含む第１グループと、第３オブジェクトおよび第４オブジェクトを含む第２グループとが対戦するゲーム処理を行う情報処理装置のコンピュータに実行させるためのゲームプログラムである。
ゲームプログラムは、オブジェクト配置手段と、動作制御手段と、仮想カメラ制御手段と、仮想空間画像生成手段と、表示制御手段としてコンピュータを機能させる。オブジェクト配置手段は、仮想３次元空間内に、第１オブジェクト、第２オブジェクト、第３オブジェクト、第４オブジェクト、当該第１オブジェクトと当該第２オブジェクトを連結する第１連結オブジェクト、および、当該第３オブジェクトと当該第４オブジェクトを連結する第２連結オブジェクトを配置する。動作制御手段は、第１連結オブジェクトに基づいて第１オブジェクトおよび第２オブジェクトの移動に制約を加えて、第１オブジェクトおよび第２オブジェクトの動作を制御し、第２連結オブジェクトに基づいて第３オブジェクトおよび第４オブジェクトの移動に制約を加えて、第３オブジェクトおよび第４オブジェクトの動作を制御する。仮想カメラ制御手段は、第３オブジェクトおよび第４オブジェクトの少なくともいずれかが視野範囲に含まれるように、仮想３次元空間内に配置される仮想カメラを制御する。仮想空間画像生成手段は、仮想カメラに基づいて得られる仮想空間画像を生成する。表示制御手段は、仮想空間画像を表示装置に表示させる。
【０００８】
上記（１）の構成によれば、同じグループに含まれるオブジェクト同士が連結オブジェクトで連結されるので、ゲーム状況をユーザに対してわかりやすく提示することができる。また、第３オブジェクトおよび第４オブジェクトは第２連結オブジェクトによって移動に制約を受けるので、第３オブジェクトおよび第４オブジェクトの一方が表示範囲に含まれる場合には、他方も表示範囲に含まれやすくなる。これによって、第３オブジェクトおよび第４オブジェクトの位置をユーザが把握しやすいゲーム画像を提示することができる。
【０００９】
（２）
動作制御手段は、第１連結オブジェクトの状態に基づいて第１オブジェクトおよび第２オブジェクトの移動に制約を加えて、第１オブジェクトおよび第２オブジェクトの動作を制御し、第２連結オブジェクトの状態に基づいて第３オブジェクトおよび第４オブジェクトの移動に制約を加えて、第３オブジェクトおよび第４オブジェクトの動作を制御してもよい。
【００１０】
上記（２）の構成によれば、各プレイヤオブジェクトは、自身に連結される連結オブジェクトの長さに基づいて移動の制約を受ける。例えば、連結オブジェクトの長さが第１の長さである場合に、連結オブジェクトの長さが当該第１の長さよりも短い第２の長さである場合よりも、各プレイヤオブジェクトの移動に対して大きな制約が加えられる。これによって、連結オブジェクトによって連結されるオブジェクト同士が離れすぎる可能性を低減することができるので、第３オブジェクトおよび第４オブジェクトの両方を表示範囲に含めやすくなる。
【００１１】
（３）
動作制御手段は、第１連結オブジェクトが第１オブジェクトおよび第２オブジェクトに及ぼす仮想的な第１張力を用いて第１オブジェクトおよび第２オブジェクトの移動に制約を加えてもよい。また、動作制御手段は、第２連結オブジェクトが第３オブジェクトおよび第４オブジェクトに及ぼす仮想的な第２張力を用いて第３オブジェクトおよび第４オブジェクトの移動に制約を加えてもよい。
【００１２】
上記（３）の構成によれば、連結オブジェクトに関して仮想的な張力を計算し、張力を用いてオブジェクトの移動に制約を加えるので、オブジェクトの移動が不自然になる可能性を低減することができる。
【００１３】
（４）
動作制御手段は、第１連結オブジェクトの長さが第１の長さである場合の第１張力を、第１連結オブジェクトの長さが当該第１の長さよりも短い第２の長さである場合の張力よりも大きく設定してもよい。また、動作制御手段は、第２連結オブジェクトの長さが第１の長さである場合の第２張力を、第２連結オブジェクトの長さが第２の長さである場合の張力よりも大きく設定してもよい。
【００１４】
上記（４）の構成によれば、連結オブジェクトが長い場合に、短い場合よりも大きい張力が設定されるので、連結オブジェクトによって連結される２つのオブジェクトの間の距離を短くしやすくすることができる。
【００１５】
（５）
動作制御手段は、第１連結オブジェクトの方向を向く張力のうち、仮想３次元空間における所定の第１方向に直交する第２方向に関する成分を減少させることによって第１張力を算出してもよい。また、動作制御手段は、第２連結オブジェクトの方向を向く張力のうち、第２方向に関する成分を減少させることによって第２張力を算出してもよい。
【００１６】
上記（５）の構成によれば、仮想３次元空間における第２方向に関しては、オブジェクトが受ける張力の制約が、第１方向に関する制約よりも小さくなる。これによって、第２方向に関するオブジェクトの動作をより自然に表現することができる。
【００１７】
（６）
第２方向は、仮想３次元空間における鉛直方向であってもよい。
【００１８】
上記（６）の構成によれば、仮想３次元空間における鉛直方向に関するオブジェクトの動作をより自然に表現することができるので、例えば、オブジェクトのジャンプ動作をより自然に表現することができる。
【００１９】
（７）
動作制御手段は、第１連結オブジェクトが仮想３次元空間における他のオブジェクトと接触するか否かにかかわらず、第１オブジェクトおよび第２オブジェクトに基づいて第１連結オブジェクトの状態を決定してもよい。
【００２０】
上記（７）の構成によれば、連結オブジェクトは他のオブジェクトとの接触が考慮されないので、連結オブジェクトによって連結されるオブジェクトの移動が当該連結オブジェクトによって過度に制約を受けることを抑制することができる。
【００２１】
（８）
仮想空間画像生成手段は、第１オブジェクトと第２オブジェクトとの距離に応じて第１連結オブジェクトの表示態様を変化させ、第３オブジェクトと第４オブジェクトとの距離に応じて第２連結オブジェクトの表示態様を変化させて、仮想空間画像を生成してもよい。
【００２２】
上記（８）の構成によれば、連結オブジェクトによって連結される２つのオブジェクトの間の距離を、連結オブジェクトの表示態様によってプレイヤに認識させることができる。
【００２３】
（９）
動作制御手段は、第１オブジェクトに関する解除条件が満たされる間、第１オブジェクトの移動に関する制約を解除して第１オブジェクトの動作を制御してもよい。
【００２４】
上記（９）の構成によれば、解除条件が満たされる間は、オブジェクトの動作を自然に表現することができる。
【００２５】
（１０）
解除条件は、第１オブジェクトが第１動作を行っていることであってもよい。
【００２６】
上記（１０）の構成によれば、第１オブジェクトが第１動作を行っている間は、当該第１オブジェクトは第１連結オブジェクトによる制約を受けないので、第１オブジェクトによる第１動作を自然に表現することができる。
【００２７】
（１１）
動作制御手段は、第２オブジェクトが第１動作と同じまたは異なる第２動作を行っている間、第２オブジェクトの移動に関する制約を解除して第２オブジェクトの動作を制御してもよい。また、動作制御手段は、第１オブジェクトが第１動作を行い、かつ、第２オブジェクトが第２動作を行う場合であって、第１動作の動作方向および第２動作の動作方向が所定の条件を満たす場合、第１動作の動作方向と第２動作の動作方向との少なくともいずれかを補正してもよい。
【００２８】
上記（１１）の構成によれば、第１オブジェクトが第１動作を行い、かつ、第２オブジェクトが第２動作を行う場合において、連結オブジェクトによる制約が解除される。ここで、上記（１１）の構成によれば、所定の条件下において第１動作の動作方向と第２動作の動作方向との少なくともいずれかが補正されるので、第１動作および／または第２動作の終了後（換言すれば、制約が再度加えられるようになった後）に、急に大きな制約が加えられることによって動作が不自然になる可能性を低減することができる。
【００２９】
（１２）
動作制御手段は、ユーザによる操作に応じて、第１オブジェクトに関連する移動オブジェクトを第１オブジェクトから第３オブジェクトまたは第４オブジェクトへ向けて移動させる移動制御手段を含んでもよい。
【００３０】
上記（１２）の構成によれば、第１オブジェクトは、第２グループのオブジェクト（すなわち、第３オブジェクトおよび第４オブジェクト）に対して、ある程度離れた位置から影響を及ぼすことができる。そのため、第１グループのオブジェクトと第２グループのオブジェクトとが接近した状態となりにくくすることができ、連結オブジェクトによるグループ分けを見やすく提示することができる。
【００３１】
（１３）
移動制御手段は、移動オブジェクトの移動中におけるユーザによる操作に応じて、移動中の移動オブジェクトの移動方向を変更してもよい。
【００３２】
上記（１３）の構成によれば、第１オブジェクトが第２グループのオブジェクトに対して離れた位置から影響を及ぼす場合であっても、第１ユーザは、ある程度自由に移動オブジェクトを操作することができる。つまり、上記（１２）の構成によれば、第１オブジェクトが第２グループのオブジェクトから離れていてもゲーム上において不都合が生じにくいので、興趣性の高いゲームを提供することができる。
【００３３】
（１４）
動作制御手段は、移動オブジェクトの移動中において、第３オブジェクトまたは第４オブジェクトによる動作によって第１オブジェクトが仮想３次元空間を移動させられる場合、移動オブジェクトの移動を中止してもよい。
【００３４】
上記（１４）の構成によれば、第１オブジェクトによる移動オブジェクトの移動動作は、第２グループのオブジェクトによる動作によってキャンセルされ得る。これによって、ゲームの興趣性を向上することができる。
【００３５】
（１５）
ゲームプログラムは、入力装置の動きを示す動きデータを取得する取得手段としてコンピュータをさらに実行させてもよい。動作制御手段は、動きデータに基づいて第１オブジェクトの動作を制御してもよい。
【００３６】
上記（１５）の構成によれば、第１ユーザは、入力装置を動かすという直感的な操作によってオブジェクトを操作することができる。
【００３７】
（１６）
動作制御手段は、第３オブジェクトまたは第４オブジェクトによる動作によって第２オブジェクトが仮想３次元空間を移動させられる場合、第１連結オブジェクトの長さが所定の状態を維持するように、第２オブジェクトの移動に連動して第１オブジェクトを移動させてもよい。
【００３８】
上記（１６）の構成によれば、第２オブジェクトが第２グループのオブジェクトから影響を受けると、連結オブジェクトによって第２オブジェクトと連結される第１オブジェクトも影響を受ける。これによれば、第１ユーザは、自身が操作する第１オブジェクトに加えて第２オブジェクトの状況を把握しながらゲームをプレイすることになるので、ゲームの戦略性を増すことができ、興趣性の高いゲームを提供することができる。
【００３９】
（１７）
仮想カメラ制御手段は、第１オブジェクトの側から第３オブジェクトおよび第４オブジェクトのいずれかの側を向くように仮想カメラを制御してもよい。
【００４０】
上記（１７）の構成によれば、仮想カメラは、第１ユーザにとって相手となる第２グループのオブジェクトのいずれかの方を向くように制御されるので、ユーザにとって見やすいゲーム画像を提示することができる。なお、上記（１５）の構成のように、第１ユーザが入力装置を動かす操作を行う場合には、第１ユーザがさらに仮想カメラを詳細に操作することは煩雑となるおそれがある。これに関して、上記（１７）の構成と上記（１５）の構成とを組み合わせた構成によれば、第１ユーザは仮想カメラを詳細に操作しなくてもよいので、直感的でかつ操作しやすいゲーム操作をユーザに提供することができる。
【００４１】
（１８）
仮想カメラ制御手段は、ユーザによる操作に応じて、仮想カメラが向く対象を、第３オブジェクトと第４オブジェクトとの間で切り替えるように仮想カメラを制御してもよい。
【００４２】
上記（１８）の構成によれば、ユーザは、第２グループのうちで表示対象とするオブジェクトを容易に選択することができる（ただし、他のオブジェクトも表示範囲に含まれ得る）。
【００４３】
なお、本発明の別の一例は、上記（１）〜（１８）における各手段を備える情報処理装置または情報処理システムであってもよい。また、本発明の別の一例は、上記（１）〜（１８）における情報処理装置において実行されるゲーム処理方法であってもよい。
【発明の効果】
【００４４】
本発明によれば、ゲーム状況をユーザにとってわかりやすく提示することができる。
【図面の簡単な説明】
【００４５】
【図１】本実施形態における情報処理システム１の一例において、本体装置２に左コントローラ３および右コントローラ４を装着した状態を示す図
【図２】本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図
【図３】本体装置２の一例を示す六面図
【図４】左コントローラ３の一例を示す六面図
【図５】右コントローラ４の一例を示す六面図
【図６】本実施形態における情報処理システムの他の例の全体構成を示す図
【図７】クレードル５の一例の外観構成を示す図
【図８】本体装置２の内部構成の一例を示すブロック図
【図９】情報処理システム１の内部構成の一例を示すブロック図
【図１０】クレードル５の内部構成の一例を示すブロック図
【図１１】離脱状態において、１人のユーザが左コントローラ３および右コントローラ４の組を把持して情報処理システム１を利用する様子の一例を示す図
【図１２】離脱状態において、１人のユーザが左コントローラ３および右コントローラ４の組を把持して情報処理システム１を利用する様子の一例を示す図
【図１３】離脱状態において、１人のユーザが左コントローラ３および右コントローラ４の組を把持して情報処理システム１を利用する様子の一例を示す図
【図１４】左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図
【図１５】左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図
【図１６】左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図
【図１７】左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図
【図１８】左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図
【図１９】左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図
【図２０】左コントローラ３および右コントローラ４を装着可能な付属機器の一例を示す図
【図２１】連結オブジェクトで連結される２つのプレイヤオブジェクトの一例を示す図
【図２２】連結オブジェクトの他の例を示す図
【図２３】プレイヤオブジェクトに働く張力の一例を示す図
【図２４】飛ばされ動作を行う第１プレイヤオブジェクトの一例を示す図
【図２５】投げられ動作を行うプレイヤオブジェクトの一例を示す図
【図２６】２つのプレイヤオブジェクトが飛ばされ動作を行う様子の一例を示す図
【図２７】本実施形態において本体装置２のＤＲＡＭ８５に設定されるデータ領域の一例を示す図
【図２８】情報処理システム１で実行されるゲーム処理の一例を示すフローチャート
【図２９】図２８におけるステップＳ４およびステップＳ５において行われるコントローラ振り認識処理の詳細の一例を示すサブルーチン
【図３０】図２８におけるステップＳ４およびステップＳ５において行われるコントローラ振り認識処理の詳細の一例を示すサブルーチン
【図３１】図２８におけるステップＳ６およびステップＳ７において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチン
【図３２】図２８におけるステップＳ６およびステップＳ７において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチン
【図３３】図２８におけるステップＳ６およびステップＳ７において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチン
【図３４】図２８におけるステップＳ８において行われるプレイヤオブジェクト移動処理の詳細の一例を示すサブルーチン
【図３５】回転速度Ｖに応じて往路振動波形の振幅を変化させる変化パターンの一例を示す図
【図３６】図２８におけるステップＳ９において行われる動作制御処理の詳細の一例を示すサブルーチン
【図３７】図２８におけるステップＳ９において行われる動作制御処理の詳細の一例を示すサブルーチン
【図３８】図２８におけるステップＳ１０において行われる表示制御処理の詳細の一例を示すサブルーチン
【発明を実施するための形態】
【００４６】
［１．情報処理システムの構成］
以下、本実施形態の一例に係る情報処理システム、情報処理装置、ゲームプログラム、および、ゲーム処理方法について説明する。本実施形態におけるゲームシステムの一例となる情報処理システム１は、本体装置（情報処理装置；本実施形態ではゲーム装置本体として機能する）２と左コントローラ３および右コントローラ４とによって構成される。また、上記情報処理システムの他の態様は、上記構成にクレードル５（図６、図７等参照）を加えて構成されることもある。本実施形態における情報処理システム１は、本体装置２に対して左コントローラ３および右コントローラ４が着脱可能であり、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として利用でき、また、本体装置２と左コントローラ３および右コントローラ４とを別体として利用することもできる（図２参照）。また、情報処理システム１は、本体装置２に画像を表示する態様での利用と、テレビ等の他の表示装置に画像を表示させる態様での利用が可能である。前者の態様において、情報処理システム１は、携帯型装置（例えば、携帯ゲーム機）として利用することができる。また、後者の態様において、情報処理システム１は、据置型装置（例えば、据置型ゲーム機）として利用することができる。
【００４７】
図１は、本実施形態における情報処理システム１の一例において、本体装置２に左コントローラ３および右コントローラ４を装着した状態を示す図である。図１に示すように、情報処理システム１は、本体装置２と、左コントローラ３と、右コントローラ４とを含む。左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、情報処理システム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００４８】
図２は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図１および図２に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。なお、本実施形態において、１人のユーザが操作する「操作装置」は、１つのコントローラ（例えば、左コントローラ３および右コントローラ４の一方）でも複数のコントローラ（例えば、左コントローラ３および右コントローラ４の両方、またはさらに他のコントローラを含んでもよい）でもよく、当該「操作装置」は、１以上のコントローラによって構成可能となる。以下、本体装置２と左コントローラ３および右コントローラ４との具体的な構成の一例について説明する。
【００４９】
図３は、本体装置２の一例を示す六面図である。図３に示すように、本体装置２は、略板状のハウジング１１を備える。本実施形態において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。本実施形態においては、ハウジング１１は、横長の形状であるものとする。つまり、本実施形態においては、ハウジング１１の主面の長手方向（すなわち、図１に示すｘ軸方向）を横方向（左右方向とも言う）と呼び、当該主面の短手方向（すなわち、図１に示すｙ軸方向）を縦方向（上下方向とも言う）と呼び、主面に垂直な方向（すなわち、図１に示すｚ軸方向）を奥行方向（前後方向とも言う）と呼ぶこととする。本体装置２は、本体装置２が横長となる向きで利用されることが可能である。また、本体装置２が縦長となる向きで利用されることも可能である。その場合には、ハウジング１１を縦長の形状であるものと見なしてもよい。
【００５０】
なお、ハウジング１１の形状および大きさは、任意である。一例として、ハウジング１１は、携帯可能な大きさであってよい。また、本体装置２単体または本体装置２に左コントローラ３および右コントローラ４が装着された一体型装置は、携帯型装置となってもよい。また、本体装置２または一体型装置が手持ち型の装置となってもよい。また、本体装置２または一体型装置が可搬型装置となってもよい。
【００５１】
図３に示すように、本体装置２は、ハウジング１１の主面に設けられるディスプレイ１２を備える。ディスプレイ１２は、本体装置２が取得または生成した画像（静止画であってもよいし、動画であってもよい）を表示する。本実施形態においては、ディスプレイ１２は、液晶表示装置（ＬＣＤ）とする。ただし、ディスプレイ１２は任意の種類の表示装置であってよい。
【００５２】
また、本体装置２は、ディスプレイ１２の画面上にタッチパネル１３を備える。本実施形態においては、タッチパネル１３は、マルチタッチ入力が可能な方式（例えば、静電容量方式）のものである。ただし、タッチパネル１３は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式（例えば、抵抗膜方式）のものであってもよい。
【００５３】
本体装置２は、ハウジング１１の内部においてスピーカ（すなわち、図８に示すスピーカ８８）を備えている。図３に示すように、ハウジング１１の主面には、スピーカ孔１１ａおよび１１ｂが形成される。そして、スピーカ８８の出力音は、これらのスピーカ孔１１ａおよび１１ｂからそれぞれ出力される。
【００５４】
また、本体装置２は、本体装置２が左コントローラ３と有線通信を行うための左側端子１７と、本体装置２が右コントローラ４と有線通信を行うための右側端子２１とを備える。
【００５５】
図３に示すように、本体装置２は、スロット２３を備える。スロット２３は、ハウジング１１の上側面に設けられる。スロット２３は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、情報処理システム１およびそれと同種の情報処理装置に専用の記憶媒体（例えば、専用メモリカード）である。所定の種類の記憶媒体は、例えば、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。また、本体装置２は、電源ボタン２８と音量ボタン２６ａおよび２６ｂとを備える。
【００５６】
本体装置２は、下側端子２７を備える。下側端子２７は、本体装置２が、後述するクレードル５と通信を行うための端子である。本実施形態において、下側端子２７は、ＵＳＢコネクタ（より具体的には、メス側コネクタ）である。
【００５７】
図４は、左コントローラ３の一例を示す六面図である。図４に示すように、左コントローラ３は、ハウジング３１を備える。本実施形態において、ハウジング３１は、略板状である。また、本実施形態においては、ハウジング３１は、縦長の形状、すなわち、上下方向（すなわち、図１に示すｙ軸方向）に長い形状である。左コントローラ３は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング３１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ３は、横長となる向きで把持されることも可能である。左コントローラ３が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００５８】
左コントローラ３は、アナログスティック３２を備える。図４に示すように、アナログスティック３２が、ハウジング３１の主面に設けられる。アナログスティック３２は、方向を入力することが可能な方向入力部の一例である。ユーザは、アナログスティック３２を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。なお、左コントローラ３は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック３２を押下する入力が可能である。
【００５９】
左コントローラ３は、各種操作ボタンを備える。まず、左コントローラ３は、ハウジング３１の主面上に４つの操作ボタン３３〜３６（具体的には、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および、左方向ボタン３６）を備える。さらに、左コントローラ３は、録画ボタン３７、−（マイナス）ボタン４７を備える。左コントローラ３は、ハウジング３１の側面の左上に第１Ｌボタン３８およびＺＬボタン３９を備える。また、左コントローラ３は、ハウジング３１の側面の、本体装置２に装着される際に装着される側の面に第２Ｌボタン４３および第２Ｒボタン４４を備える。これらの操作ボタンは、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。
【００６０】
また、左コントローラ３は、左コントローラ３が本体装置２と有線通信を行うための端子４２を備える。
【００６１】
図５は、右コントローラ４の一例を示す六面図である。図５に示すように、右コントローラ４は、ハウジング５１を備える。本実施形態においては、ハウジング５１は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００６２】
右コントローラ４は、左コントローラ３と同様、方向入力部としてアナログスティック５２を備える。本実施形態においては、アナログスティック５２は、左コントローラ３のアナログスティック３２と同じ構成である。また、右コントローラ４は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ４は、左コントローラ３と同様、ハウジング５１の主面上に４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、および、Ｙボタン５６）を備える。さらに、右コントローラ４は、＋（プラス）ボタン５７およびホームボタン５８を備える。また、右コントローラ４は、ハウジング５１の側面の右上に第１Ｒボタン６０およびＺＲボタン６１を備える。また、左コントローラ３と同様、第２Ｌボタン６５および第２Ｒボタン６６を備える。
【００６３】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。
【００６４】
図６は、本実施形態における情報処理システムの他の例の全体構成を示す図である。図６に示すように、一例として、クレードル５は、左コントローラ３および右コントローラ４を本体装置２から取り外した状態で本体装置２のみを載置することが可能である。また、さらに他の例として、クレードル５は、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置を載置することも可能である。また、クレードル５は、ディスプレイ１２とは別体の外部表示装置の一例である据置型モニタ６（例えば、据置型テレビ）と通信可能である（有線通信であってもよいし、無線通信であってもよい）。詳細は後述するが、上記一体型装置または本体装置２単体をクレードル５に載置した場合、情報処理システムは、本体装置２が取得または生成した画像を据置型モニタ６に表示することができる。また、本実施形態においては、クレードル５は、載置された上記一体型装置または本体装置２単体を充電する機能を有する。また、クレードル５は、ハブ装置（具体的には、ＵＳＢハブ）の機能を有する。
【００６５】
図７は、クレードル５の一例の外観構成を示す図である。クレードル５は、上記一体型装置または本体装置２のみを着脱可能に載置する（装着するとも言える）ことが可能なハウジングを有する。本実施形態においては、図７に示すように、ハウジングは、溝７１ａが形成される第１支持部７１と、略平面状の第２支持部７２とを有する。
【００６６】
図７に示すように、第１支持部７１に形成される溝７１ａは、上記一体型装置の下側部分の形状に応じた形状を有する。具体的には、溝７１ａは、上記一体型装置の下側部分を挿入可能な形状であり、より具体的には、上記本体装置２の下側部分と略一致する形状である。したがって、上記一体型装置の下側部分を溝７１ａに挿入することによって、上記一体型装置をクレードル５に載置することができる。また、第２支持部７２は、その下側部分が溝７１ａに挿入された上記一体型装置の表面（すなわち、ディスプレイ１２が設けられる面）を支持する。この第２支持部７２によって、クレードル５は、上記一体型装置をより安定的に支持することができる。なお、図７に示すハウジングの形状は一例であり、他の実施形態においては、クレードル５のハウジングは、上記本体装置２を載置することが可能な任意の形状であってよい。
【００６７】
図７に示すように、また、クレードル５は、クレードル５が上記一体型装置と通信を行うための本体端子７３を備える。図７に示すように、本体端子７３は、第１支持部７１に形成される溝７１ａの底面に設けられる。より具体的には、本体端子７３は、上記一体型装置がクレードル５に装着される場合に、本体装置２の下側端子２７が接触する位置に設けられる。本実施形態においては、本体端子７３は、ＵＳＢコネクタ（より具体的には、オス側コネクタ）である。
【００６８】
図７では図示しないが、クレードル５は、ハウジングの背面に端子（本実施形態においては、複数の端子を有する。具体的には、クレードル５は、図１０に示すモニタ用端子１３２、電源端子１３４、および拡張用端子１３７）を有する。これらの端子の詳細については後述する。
【００６９】
図８は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図３に示す構成の他、図８に示す各構成要素８１〜９８を備える。これらの構成要素８１〜９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００７０】
本体装置２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）８１を備える。ＣＰＵ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部である。ＣＰＵ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、各スロット２３および２４に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００７１】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、ＣＰＵ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００７２】
本体装置２は、スロットインターフェース（以下、「Ｉ／Ｆ」と略記する。）９１を備える。スロットＩ／Ｆ９１は、ＣＰＵ８１に接続される。スロットＩ／Ｆ９１は、スロット２３に接続され、スロット２３に装着された所定の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書き込みを、ＣＰＵ８１の指示に応じて行う。
【００７３】
ＣＰＵ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００７４】
本体装置２は、ネットワーク通信部８２を備える。ネットワーク通信部８２は、ＣＰＵ８１に接続される。ネットワーク通信部８２は、ネットワークを介して外部の装置と通信（具体的には、無線通信）を行う。本実施形態においては、ネットワーク通信部８２は、第１の通信態様としてＷｉ−Ｆｉの規格に準拠した方式により、無線ＬＡＮに接続して外部装置と通信を行う。また、ネットワーク通信部８２は、第２の通信態様として所定の通信方式（例えば、独自プロトコルによる通信や、赤外線通信）により、同種の他の本体装置２との間で無線通信を行う。なお、上記第２の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置２との間で無線通信可能であり、複数の本体装置２の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【００７５】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、ＣＰＵ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、本実施形態においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。
【００７６】
ＣＰＵ８１は、上述の左側端子１７、右側端子２１、および、下側端子２７に接続される。ＣＰＵ８１は、左コントローラ３と有線通信を行う場合、左側端子１７を介して左コントローラ３へデータを送信するとともに、左側端子１７を介して左コントローラ３から操作データを受信する。また、ＣＰＵ８１は、右コントローラ４と有線通信を行う場合、右側端子２１を介して右コントローラ４へデータを送信するとともに、右側端子２１を介して右コントローラ４から操作データを受信する。また、ＣＰＵ８１は、クレードル５と通信を行う場合、下側端子２７を介してクレードル５へデータを送信する。このように、本実施形態においては、本体装置２は、左コントローラ３および右コントローラ４との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置または本体装置２単体がクレードル５に装着された場合、本体装置２は、クレードル５を介してデータ（例えば、画像データや音声データ）を据置型モニタ６に出力することができる。
【００７７】
ここで、本体装置２は、複数の左コントローラ３と同時に（換言すれば、並行して）通信を行うことができる。また、本体装置２は、複数の右コントローラ４と同時に（換言すれば、並行して）通信を行うことができる。したがって、ユーザは、複数の左コントローラ３および複数の右コントローラ４を用いて本体装置２に対する入力を行うことができる。
【００７８】
本体装置２は、タッチパネル１３の制御を行う回路であるタッチパネルコントローラ８６を備える。タッチパネルコントローラ８６は、タッチパネル１３とＣＰＵ８１との間に接続される。タッチパネルコントローラ８６は、タッチパネル１３からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、ＣＰＵ８１へ出力する。
【００７９】
また、ディスプレイ１２は、ＣＰＵ８１に接続される。ＣＰＵ８１は、（例えば、上記の情報処理の実行によって）生成した画像および／または外部から取得した画像をディスプレイ１２に表示する。
【００８０】
本体装置２は、コーデック回路８７およびスピーカ（具体的には、左スピーカおよび右スピーカ）８８を備える。コーデック回路８７は、スピーカ８８および音声入出力端子２５に接続されるとともに、ＣＰＵ８１に接続される。コーデック回路８７は、スピーカ８８および音声入出力端子２５に対する音声データの入出力を制御する回路である。すなわち、コーデック回路８７は、ＣＰＵ８１から音声データを受け取った場合、当該音声データに対してＤ／Ａ変換を行って得られる音声信号をスピーカ８８または音声入出力端子２５へ出力する。これによって、スピーカ８８あるいは音声入出力端子２５に接続された音声出力部（例えば、イヤホン）から音が出力される。また、コーデック回路８７は、音声入出力端子２５から音声信号を受け取った場合、音声信号に対してＡ／Ｄ変換を行い、所定の形式の音声データをＣＰＵ８１へ出力する。また、音量ボタン２６は、ＣＰＵ８１に接続される。ＣＰＵ８１は、音量ボタン２６に対する入力に基づいて、スピーカ８８または上記音声出力部から出力される音量を制御する。
【００８１】
本体装置２は、電力制御部９７およびバッテリ９８を備える。電力制御部９７は、バッテリ９８およびＣＰＵ８１に接続される。また、図示しないが、電力制御部９７は、本体装置２の各部（具体的には、バッテリ９８の電力の給電を受ける各部、左側端子１７、および右側端子２１）に接続される。電力制御部９７は、ＣＰＵ８１からの指令に基づいて、バッテリ９８から上記各部への電力供給を制御する。
【００８２】
また、バッテリ９８は、下側端子２７に接続される。外部の充電装置（例えば、クレードル５）が下側端子２７に接続され、下側端子２７を介して本体装置２に電力が供給される場合、供給された電力がバッテリ９８に充電される。
【００８３】
図９は、情報処理システム１の内部構成の一例を示すブロック図である。なお、情報処理システム１のうちの本体装置２に関する内部構成の詳細については、図８で示しているため図９では省略している。
【００８４】
左コントローラ３は、本体装置２との間で通信を行う通信制御部１０１を備える。図９に示すように、通信制御部１０１は、端子４２を含む各構成要素に接続される。本実施形態においては、通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１０１は、左コントローラ３が本体装置２に対して行う通信方法を制御する。すなわち、左コントローラ３が本体装置２に装着されている場合、通信制御部１０１は、端子４２を介して本体装置２と通信を行う。また、左コントローラ３が本体装置２から外されている場合、通信制御部１０１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１０１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００８５】
また、左コントローラ３は、例えばフラッシュメモリ等のメモリ１０２を備える。通信制御部１０１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１０２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００８６】
左コントローラ３は、各ボタン１０３（具体的には、ボタン３３〜３９，４３，および４４）を備える。また、左コントローラ３は、アナログスティック（図９では「スティック」と記載する）３２を備える。各ボタン１０３およびアナログスティック３２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１０１へ出力する。
【００８７】
左コントローラ３は、加速度センサ１０４を備える。本実施形態においては、加速度センサ１０４は、所定の３軸（例えば、図１１に示すＸＹＺ軸）方向に沿った直線加速度の大きさを検出する。なお、加速度センサ１０４は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。また、左コントローラ３は、角速度センサ１０５を備える。本実施形態においては、角速度センサ１０５は、所定の３軸（例えば、図１１に示すＸＹＺ軸）回りの角速度を検出する。なお、角速度センサ１０５は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。加速度センサ１０４および角速度センサ１０５は、それぞれ通信制御部１０１に接続される。そして、加速度センサ１０４および角速度センサ１０５の検出結果は、適宜のタイミングで繰り返し通信制御部１０１へ出力される。
【００８８】
通信制御部１０１は、各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から、入力に関する情報（具体的には、操作に関する情報、または、センサによる検出結果）を取得する。通信制御部１０１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００８９】
上記操作データが本体装置２へ送信されることによって、本体装置２は、左コントローラ３に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１０３およびアナログスティック３２に対する操作を、操作データに基づいて判別することができる。また、本体装置２は、左コントローラ３の動きおよび／または姿勢に関する情報を、操作データ（具体的には、加速度センサ１０４および角速度センサ１０５の検出結果）に基づいて算出することができる。
【００９０】
左コントローラ３は、振動によってユーザに通知を行うための振動子１０７を備える。本実施形態においては、振動子１０７は、本体装置２からの指令によって制御される。すなわち、通信制御部１０１は、本体装置２からの上記指令を受け取ると、当該指令に従って振動子１０７を駆動させる。ここで、左コントローラ３は、コーデック部１０６を備える。通信制御部１０１は、上記指令を受け取ると、指令に応じた制御信号をコーデック部１０６へ出力する。コーデック部１０６は、通信制御部１０１からの制御信号を増幅して、振動子１０７を駆動させるための駆動信号を生成して振動子１０７へ与える。これによって振動子１０７が動作する。
【００９１】
振動子１０７は、より具体的にはリニア振動モータである。リニア振動モータは、回転運動をする通常のモータと異なり、入力される電圧に応じて所定方向に駆動されるため、入力される電圧の波形に応じた振幅、周波数で振動をさせることができる。本実施形態において、本体装置２から左コントローラ３に送信される振動制御信号は、単位時間ごとに周波数と振幅とを表すデジタル信号であってよい。別の実施形態においては、波形そのものを示す情報を送信するようにしてもよいが、振幅と周波数とだけを送信することで通信データ量を削減することができる。また、さらにデータ量を削減するため、そのときの振幅と周波数との数値に替えて、前回の値からの差分だけを送信するようにしてもよい。この場合、コーデック部１０６は、通信制御部１０１から取得される振幅と周波数との値を示すデジタル信号をアナログの電圧の波形に変換し、当該波形に合わせて電圧を入力することで振動子１０７を駆動させる。したがって、本体装置２は、単位時間ごとに送信する振幅および周波数を変えることによって、そのときに振動子１０７を振動させる振幅と周波数とを制御することができる。なお、本体装置２から左コントローラ３に送信される振幅と周波数とは、１つに限らず、２つ以上送信するようにしてもよい。その場合、コーデック部１０６は、受信された複数の振幅および周波数それぞれが示す波形を合成することで、振動子１０７を制御する電圧の波形を生成することができる。
【００９２】
左コントローラ３は、電力供給部１０８を備える。本実施形態において、電力供給部１０８は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ３の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。
【００９３】
図９に示すように、右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。また、右コントローラ４は、通信制御部１１１に接続されるメモリ１１２を備える。通信制御部１１１は、端子６４を含む各構成要素に接続される。通信制御部１１１およびメモリ１１２は、左コントローラ３の通信制御部１０１およびメモリ１０２と同様の機能を有する。したがって、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信（具体的には、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信）との両方で本体装置２と通信を行うことが可能であり、右コントローラ４が本体装置２に対して行う通信方法を制御する。
【００９４】
右コントローラ４は、左コントローラ３の各入力部と同様の各入力部（具体的には、各ボタン１１３、アナログスティック５２、加速度センサ１１４、および、角速度センサ１１５）を備える。これらの各入力部については、左コントローラ３の各入力部と同様の機能を有し、同様に動作する。
【００９５】
また、右コントローラ４は、振動子１１７およびコーデック部１１６を備える。振動子１１７およびコーデック部１１６は、左コントローラ３の振動子１０７およびコーデック部１０６と同様に動作する。すなわち、通信制御部１１１は、本体装置２からの指令に従って、コーデック部１１６を用いて振動子１１７を動作させる。
【００９６】
右コントローラ４は、電力供給部１１８を備える。電力供給部１１８は、左コントローラ３の電力供給部１０８と同様の機能を有し、同様に動作する。
【００９７】
図１０は、クレードル５の内部構成の一例を示すブロック図である。なお、図１０において、本体装置２に関する内部構成の詳細については、図８で示しているので省略している。
【００９８】
図１０に示すように、クレードル５は、変換部１３１およびモニタ用端子１３２を備える。変換部１３１は、本体端子７３およびモニタ用端子１３２と接続される。変換部１３１は、本体装置２から受信した画像（映像とも言える）および音声に関する信号の形式を、据置型モニタ６へ出力する形式へと変換する。ここで、本実施形態においては、本体装置２は、ディスプレイポート信号（すなわち、ＤｉｓｐｌａｙＰｏｒｔの規格に従った信号）として画像および音声の信号をクレードル５へ出力する。また、本実施形態においては、クレードル５と据置型モニタ６との間の通信は、ＨＤＭＩ（登録商標）の規格に基づく通信が用いられる。すなわち、モニタ用端子１３２は、ＨＤＭＩ端子であり、クレードル５と据置型モニタ６とがＨＤＭＩケーブルによって接続される。そして、変換部１３１は、本体装置２から本体端子７３を介して受信されるディスプレイポート信号（具体的には、映像および音声を表す信号）を、ＨＤＭＩ信号へ変換する。変換されたＨＤＭＩ信号は、モニタ用端子１３２を介して据置型モニタ６へ出力される。
【００９９】
クレードル５は、電力制御部１３３および電源端子１３４を備える。電源端子１３４は、図示しない充電装置（例えば、ＡＣアダプタ等）を接続するための端子である。本実施形態においては、電源端子１３４にＡＣアダプタが接続されており、クレードル５には商用電源が供給されているものとする。電力制御部１３３は、クレードル５に対して本体装置２が装着された場合、本体端子７３を介して電源端子１３４からの電力を本体装置２へ供給する。これによって、本体装置２のバッテリ９８が充電される。
【０１００】
また、クレードル５は、接続処理部１３６および拡張用端子１３７を備える。拡張用端子１３７は、他の装置を接続するための端子である。本実施形態においては、クレードル５は、拡張用端子１３７として、複数（より具体的には３つ）のＵＳＢ端子を備える。接続処理部１３６は、本体端子７３および各拡張用端子１３７に接続される。接続処理部１３６は、ＵＳＢハブとしての機能を有し、例えば、拡張用端子１３７に接続された装置と、本体端子７３に接続された本体装置２との間の通信を管理する（すなわち、ある装置からの信号を他の装置へ適宜分配して送信する）。上記のように、本実施形態においては、情報処理システム１は、クレードル５を介して他の装置との通信を行うことが可能である。なお、接続処理部１３６は、通信速度を変換したり、拡張用端子１３７に接続された装置に対する電力供給を行ったりすることが可能であってもよい。
【０１０１】
以上に説明したように、本実施形態における情報処理システム１については左コントローラ３および右コントローラ４が本体装置２から着脱可能である。また、クレードル５に左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置や本体装置２単体を装着することによって据置型モニタ６に画像（および音声）を出力可能である。以下、左コントローラ３および右コントローラ４を本体装置２から取り外した状態で、クレードル５に本体装置２単体を装着することによって据置型モニタ６に画像（および音声）を出力する利用態様における情報処理システムを用いて説明する。
【０１０２】
上述のように、本実施形態においては、左コントローラ３および右コントローラ４を本体装置２から外した状態（「離脱状態」と呼ぶ）で情報処理システム１を利用することも可能である。離脱状態で情報処理システム１を利用して同じアプリケーション（例えば、ゲームアプリケーション）に対する操作を行う場合の態様としては、１人のユーザが左コントローラ３および右コントローラ４の両方を用いる態様が考えられる。なお、当該利用態様によって複数のユーザが同じアプリケーションを用いて操作する場合は、左コントローラ３および右コントローラ４の組を複数組用意して、それぞれのユーザが当該複数組のうちの１組を用いる態様が考えられる。
【０１０３】
図１１〜図１３は、離脱状態において、１人のユーザが左コントローラ３および右コントローラ４の組を把持して情報処理システム１を利用する様子の一例を示す図である。図１１〜図１３に示すように、離脱状態において、ユーザは、左コントローラ３を左手で把持し、右コントローラ４を右手で把持して操作を行いながら、据置型モニタ６に表示された画像を見ることができる。
【０１０４】
例えば、本実施形態では、ユーザは、縦長の略板状である左コントローラ３の長手方向の下方向（図１に示す下方向（ｙ軸負方向））が鉛直方向になるとともに、本体装置２に装着された際に当該本体装置２と接する側面（スライダ４０が設けられている側面）が前方に向き、かつ、左コントローラ３の主面（アナログスティック３２等が設けられる面）が右に向くように左コントローラ３を左手で把持する。また、ユーザは、縦長の略板状である右コントローラ４の長手方向の下方向（図１に示す上下方向（ｙ軸負方向））が鉛直方向になるとともに、本体装置２に装着された際に当該本体装置２と接する側面（スライダ６２が設けられている側面）が前方に向き、かつ、右コントローラ４の主面（アナログスティック５２等が設けられる面）が左に向くように右コントローラ４を右手で把持する。このように左手で左コントローラ３を把持し右手で右コントローラ４を把持した状態（以下、当該方向に把持された左コントローラ３および右コントローラ４の姿勢を基本姿勢と記載することがある）から、各コントローラを上下左右前後に動かしたり、各コントローラを回転させたり、各コントローラを振り動かしたりすることによって、各コントローラの動きや姿勢に応じてゲームプレイが行われる。
【０１０５】
なお、左コントローラ３に生じる加速度や角速度の方向をわかりやすくするために、上記把持状態における前方向（丸みを帯びた側面から本体装置２と接する側面に向かう方向であり、図１に示すｘ軸負方向）をＸ軸正方向とし、上記把持状態における右方向（背面から主面に向かう方向であり、図１に示すｚ軸負方向）をＹ軸正方向とし、上記把持状態における上方向（長手方向の上に向かう方向であり、図１に示すｙ軸正方向）をＺ軸正方向とする。そして、左コントローラ３の加速度センサ１０４は、上記ＸＹＺ軸方向の加速度をそれぞれ検出可能であり、角速度センサ１０５は、上記ＸＹＺ軸方向周りの角速度をそれぞれ検出可能であるとする。また、右コントローラ４に生じる加速度や角速度の方向をわかりやすくするために、上記把持状態における前方向（丸みを帯びた側面から本体装置２と接する側面に向かう方向であり、図１に示すｘ軸正方向）をＸ軸正方向とし、上記把持状態における右方向（主面から背面に向かう方向であり、図１に示すｚ軸正方向）をＹ軸正方向とし、上記把持状態における上方向（長手方向の上に向かう方向であり、図１に示すｙ軸正方向）をＺ軸正方向とする。そして、右コントローラ４の加速度センサ１１４は、上記ＸＹＺ軸方向の加速度をそれぞれ検出可能であり、角速度センサ１１５は、上記ＸＹＺ軸方向周りの角速度をそれぞれ検出可能であるとする。
【０１０６】
［２．ゲーム操作の概要］
次に、図１４〜図２０を参照して、本実施形態におけるゲーム操作の概要について説明する。ここで、本実施形態においては、プレイヤ（換言すれば、情報処理システムのユーザ）によって操作される第１〜第４プレイヤオブジェクトという４つのオブジェクトが３次元のゲーム空間に登場する。本実施形態においては、４人のユーザが、それぞれ１つずつプレイヤオブジェクトを操作する。具体的には、第１ユーザが第１プレイヤオブジェクトを操作し、第２ユーザが第２プレイヤオブジェクトを操作し、第３ユーザが第３プレイヤオブジェクトを操作し、第４ユーザが第４プレイヤオブジェクトを操作する。なお、詳細は後述するが、本実施形態におけるゲームは、対戦式のゲームであり、各プレイヤオブジェクトが２つのグループに分かれて対戦を行う。ここでは、第１プレイヤオブジェクトと第２プレイヤオブジェクトが第１グループ（第１プレイヤオブジェクトにとっては、味方のグループ）を構成し、第３プレイヤオブジェクトと第４プレイヤオブジェクトが第２グループ（第１プレイヤオブジェクトにとっては、敵のグループ）を構成し、第１グループと第２グループとで対戦を行う。以下においては、第１ユーザが上記左コントローラ３および右コントローラ４を用いて第１プレイヤオブジェクトを操作する場合を例として、ゲーム操作について説明する。
【０１０７】
図１４〜図１９は、左コントローラ３および右コントローラ４を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図である。図１４に示すように、本ゲーム例では、第１プレイヤオブジェクトＰ１および第２プレイヤオブジェクト（不図示）が、第３プレイヤオブジェクトＰ３および第４プレイヤオブジェクトＰ４と対戦するゲーム（例えば、ボクシングゲーム）の画像が据置型モニタ６に表示される。
【０１０８】
左コントローラ３および右コントローラ４を操作するユーザは、左コントローラ３本体および／または右コントローラ４本体を振り動かしたり、左コントローラ３本体および／または右コントローラ４本体の姿勢を変化させたりすることによって、第１プレイヤオブジェクトＰ１を操作することができる。例えば、左コントローラ３を振り動かすことによって第１プレイヤオブジェクトＰ１の左グラブ（左拳）を模した左拳オブジェクトＧ１の動作を制御することができ、右コントローラ４を振り動かすことによって第１プレイヤオブジェクトＰ１の右グラブ（右拳）を模した右拳オブジェクトＧ２の動作を制御することができる。具体的には、ユーザが左コントローラ３を把持している左手を用いて左パンチを繰り出すように振る操作を行った場合、敵オブジェクトである第３プレイヤオブジェクトＰ３または第４プレイヤオブジェクトＰ４が配置されている場所に向かって第１プレイヤオブジェクトＰ１の左グラブを模した左拳オブジェクトＧ１が移動する。また、ユーザが右コントローラ４を把持している右手を用いて右パンチを繰り出すように振る操作を行った場合、敵オブジェクトが配置されている場所に向かって第１プレイヤオブジェクトＰ１の右グラブを模した右拳オブジェクトＧ２が移動する（図１５、図１６参照）。
【０１０９】
例えば、左コントローラ３および右コントローラ４の何れも動かしていない状態（図１４に示す状態）から、右コントローラ４を前方（右コントローラ４のＸ軸正方向）に押し出すように振り動かした場合、図１５に示すように右コントローラ４の動きに応じて第１プレイヤオブジェクトＰ１の右拳オブジェクトＧ２が敵オブジェクトに向かってエフェクト画像Ｉｅ１が付与された状態で移動する。これによって、敵オブジェクトに対して第１プレイヤオブジェクトＰ１が右パンチを繰り出したようなゲーム画像が表示される。
【０１１０】
ここで、左拳オブジェクトＧ１が移動開始する際の移動方向は、左コントローラ３を押し出すように振り動かした際の左コントローラ３の姿勢によって設定される。また、右拳オブジェクトＧ２が移動開始する際の移動方向は、右コントローラ４を押し出すように動かした際の右コントローラ４の姿勢によって設定される。例えば、図１５に示したように、右コントローラ４がＸ軸正方向に移動した場合、当該移動における右コントローラ４のロール方向の姿勢に応じて右拳オブジェクトＧ２の移動方向Ｄ１が設定される。一例として、本実施例では、上記右コントローラ４が移動している期間において、実空間において重力加速度が作用している方向を基準とした右コントローラ４のＹ軸方向の傾きを算出し、当該Ｙ軸方向の傾きに基づいて右拳オブジェクトＧ２の移動方向Ｄ１を算出している。具体的には、右コントローラ４が上記基準姿勢に対して右方向にロール回転した姿勢であることを上記Ｙ軸方向の傾きが示す場合、仮想空間の右方向に向かって右拳オブジェクトＧ２が移動する。また、右コントローラ４が上記基準姿勢に対して左方向にロール回転した姿勢であることを上記Ｙ軸方向の傾きが示す場合、仮想空間の左方向に向かって右拳オブジェクトＧ２が移動する。そして、それぞれ右方向または左方向に移動方向がずれる角度については、上記Ｙ軸方向の傾き角度に応じてそれぞれ算出される。
【０１１１】
また、本ゲーム例では、仮想空間において第１プレイヤオブジェクトＰ１と敵オブジェクトとの距離が相対的に遠い場合であってもパンチを繰り出すことが可能であり、第１プレイヤオブジェクトＰ１の腕が伸びることによって、左拳オブジェクトＧ１および右拳オブジェクトＧ２が相対的に長い距離を移動することができる。そして、左拳オブジェクトＧ１または右拳オブジェクトＧ２は、他のオブジェクト（例えば、敵オブジェクト）と衝突するか所定の距離移動した後に移動を終了し、当該左拳オブジェクトＧ１および右拳オブジェクトＧ２がそれぞれ移動開始した移動開始位置（例えば、図１４に示す第１プレイヤオブジェクトＰ１の手元）まで戻る。左拳オブジェクトＧ１および右拳オブジェクトＧ２が移動開始位置まで戻ることによって、敵オブジェクトに向かう次の移動が可能となる。言い換えると、次のパンチを出すことができるようになる。したがって、上記移動開始位置から左拳オブジェクトＧ１または右拳オブジェクトＧ２が移動を開始してから再び当該移動開始位置まで戻るまでの時間が一般的なボクシングゲームより相対的に長くなる。
【０１１２】
また、本ゲーム例では、仮想空間において左拳オブジェクトＧ１および／または右拳オブジェクトＧ２が移動する際、当該オブジェクトを操作するコントローラが振動する。例えば、左コントローラ３を押し出すように振り動かすことに応じて左拳オブジェクトＧ１が移動する場合、左拳オブジェクトＧ１が仮想空間を移動することに応じて左コントローラ３が振動する。また、右コントローラ４を押し出すように振り動かすことに応じて右拳オブジェクトＧ２が移動する場合、右拳オブジェクトＧ２が仮想空間を移動することに応じて右コントローラ４が振動する（図１５の状態）。具体的には、本体装置２は、左コントローラ３および／または右コントローラ４が押し出すように振り動かされた場合、仮想空間を移動する左拳オブジェクトＧ１および／または右拳オブジェクトＧ２の種類、移動速度、移動方向等に応じて往路振動データを生成して、左コントローラ３および／または右コントローラ４に送信する。また、本体装置２は、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２が他のオブジェクトと衝突した場合は、当該衝突に応じた振動を示す振動データを生成して、左コントローラ３および／または右コントローラ４に送信する。さらに、本体装置２は、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２が上記移動開始位置へ戻る復路を移動する場合、復路を移動する左拳オブジェクトＧ１および／または右拳オブジェクトＧ２の種類、移動速度、移動方向等に応じて復路振動データを生成して、左コントローラ３および／または右コントローラ４に送信する。これによって、各種振動データを受信した左コントローラ３および／または右コントローラ４は、当該振動データに基づいて振動する。
【０１１３】
また、本ゲーム例では、左拳オブジェクトＧ１または右拳オブジェクトＧ２の移動時間を利用して、左拳オブジェクトＧ１または右拳オブジェクトＧ２が移動中（典型的には、敵オブジェクトの方向へ移動している期間）であっても、左コントローラ３または右コントローラ４の姿勢や動きに応じて移動する軌道を変化させることができる。例えば、上述した左拳オブジェクトＧ１または右拳オブジェクトＧ２の移動開始時の左コントローラ３または右コントローラ４の姿勢から左コントローラ３または右コントローラ４がロール方向に回転した場合やヨー方向に回転した場合、当該回転に応じて左拳オブジェクトＧ１または右拳オブジェクトＧ２の軌道を変化させる。例えば、図１６に示した一例では、右コントローラ４がＸ軸正方向に押し出すように振り動かされた後、右拳オブジェクトＧ２の移動中に右コントローラ４が左ロール方向に回転移動（図示θｘ）することに応じて、右拳オブジェクトＧ２の移動方向がＤ２に変化している。また、右拳オブジェクトＧ２の移動方向が変化する際、右拳オブジェクトＧ２にエフェクト画像Ｉｅ２が付与された状態となる。
【０１１４】
一例として、本実施例では、左拳オブジェクトＧ１または右拳オブジェクトＧ２の移動開始後の左コントローラ３または右コントローラ４のＸ軸周りの回転速度（角速度）を上記ロール方向の回転として、当該Ｘ軸周りの回転速度に基づいて移動中の左拳オブジェクトＧ１または右拳オブジェクトＧ２の軌道を変化させる。具体的には、左拳オブジェクトＧ１が移動中に左コントローラ３がＸ軸を中心として右方向にロール回転した回転速度が得られた場合、仮想空間の右方向に左拳オブジェクトＧ１の軌道を変化させ、左コントローラ３がＸ軸を中心として左方向にロール回転した回転速度が得られた場合、仮想空間の左方向に左拳オブジェクトＧ１の軌道を変化させる。また、右拳オブジェクトＧ２が移動中に右コントローラ４がＸ軸を中心として右方向にロール回転した回転速度が得られた場合、仮想空間の右方向に右拳オブジェクトＧ２の軌道を変化させ、右コントローラ４がＸ軸を中心として左方向にロール回転した回転速度が得られた場合、仮想空間の左方向に右拳オブジェクトＧ２の軌道を変化させる。
【０１１５】
他の例として、本実施例では、左拳オブジェクトＧ１または右拳オブジェクトＧ２の移動開始後の実空間の重力方向を基準とする左コントローラ３または右コントローラ４の回転速度（角速度）を上記ヨー方向の回転として、当該重力方向周りの回転速度に基づいて移動中の左拳オブジェクトＧ１または右拳オブジェクトＧ２の軌道を変化させる。具体的には、左拳オブジェクトＧ１が移動中に左コントローラ３が重力方向を中心として右方向にヨー回転した回転速度が得られた場合、仮想空間の右方向に左拳オブジェクトＧ１の軌道を変化させ、左コントローラ３が重力方向を中心として左方向にヨー回転した回転速度が得られた場合、仮想空間の左方向に左拳オブジェクトＧ１の軌道を変化させる。また、右拳オブジェクトＧ２が移動中に右コントローラ４が重力方向を中心として右方向にヨー回転した回転速度が得られた場合、仮想空間の右方向に右拳オブジェクトＧ２の軌道を変化させ、右コントローラ４が重力方向を中心として左方向にヨー回転した回転速度が得られた場合、仮想空間の左方向に右拳オブジェクトＧ２の軌道を変化させる。
【０１１６】
上述したように左拳オブジェクトＧ１および／または右拳オブジェクトＧ２の軌道が変化した場合、左コントローラ３および／または右コントローラ４の振動も変化する。例えば、本体装置２は、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２の往路軌道が変化した場合、左コントローラ３および／または右コントローラ４の動きや姿勢の変化（例えば、ロール方向やヨー方向の角速度）に応じて振動の振幅および／または周波数の変化パラメータを算出し、当該変化パラメータを用いて上記往路振動データを一時的に変化させた後、再度往路振動データに戻す。これによって、一時的に変化する往路振動データを受信した左コントローラ３および／または右コントローラ４は、当該往路振動データに基づいて振動の振幅および／または周波数を変化させる。
【０１１７】
また、本ゲーム例では、左コントローラ３または右コントローラ４が振り動かされたか否かの判定を、左コントローラ３または右コントローラ４に生じた加速度の大きさを用いて行う。そして、左拳オブジェクトＧ１が上記移動開始位置に配置されている状態（以下、第１移動開始可能状態と称する）において左コントローラ３が上記Ｘ軸正方向に振り動かされたと判定された場合、当該移動開始位置から敵オブジェクトに向かって左拳オブジェクトＧ１が移動を開始する。また、右拳オブジェクトＧ２が上記移動開始位置に配置されている状態（以下、第２移動開始可能状態と称する）において右コントローラ４が上記Ｘ軸正方向に振り動かされたと判定された場合、当該移動開始位置から敵オブジェクトに向かって右拳オブジェクトＧ２が移動を開始する。しかしながら、本実施例では、上記第１移動開始可能状態でない場合であっても、左コントローラ３が上記Ｘ軸正方向に振り動かされたと判定されてから所定時間以内に上記第１移動開始可能状態になった場合は、当該左コントローラ３の振り操作に応じて上記移動開始位置から敵オブジェクトに向かって左拳オブジェクトＧ１の移動を開始させることができる。また、上記第２移動開始可能状態でない場合であっても、右コントローラ４が上記Ｘ軸正方向に振り動かされたと判定されてから所定時間以内に上記第２移動開始可能状態になった場合は、当該右コントローラ４の振り操作に応じて上記移動開始位置から敵オブジェクトに向かって右拳オブジェクトＧ２の移動を開始させることができる。このように、本実施例では、上記第１移動開始可能状態および／または上記第２移動開始可能状態でない場合であっても、左コントローラ３および／または右コントローラ４を振り動かすことによって左拳オブジェクトＧ１および／または右拳オブジェクトＧ２を移動開始させる指示を行うことができるため、操作指示可能な状態が断続的に生じるゲームであっても操作を容易にすることが可能となる。つまり、上述したように、上記ゲーム例では、移動開始位置から左拳オブジェクトＧ１または右拳オブジェクトＧ２が移動を開始してから再び当該移動開始位置まで戻るまでの時間が一般的なボクシングゲームより相対的に長くなるため、上記第１移動開始可能状態や上記第２移動開始可能状態になるのを待ちきれずに左コントローラ３または右コントローラ４を振り動かす操作が先行してしまうことが考えられるが、このような先行操作が行われた場合であっても当該先行操作を無効にせずに救済してゲーム操作に生かすことが可能となる。
【０１１８】
また、本ゲーム例では、図１７に示すように、左拳オブジェクトＧ１および右拳オブジェクトＧ２を上記移動開始位置から同時に移動開始させることによって、所定のアクションが行われる。例えば、左拳オブジェクトＧ１および右拳オブジェクトＧ２の一方が移動開始した時点から所定期間以内に他方が移動開始する場合、左拳オブジェクトＧ１および右拳オブジェクトＧ２が組となった「両手パンチアクション」が開始される。ここで、「両手パンチアクション」は、仮想空間を移動する左拳オブジェクトＧ１および右拳オブジェクトＧ２の間に衝突領域Ａが形成された様子がゲーム画像で表現され、当該衝突領域Ａが形成された状態で左拳オブジェクトＧ１および右拳オブジェクトＧ２が敵オブジェクトに向かって移動する。そして、敵オブジェクトには移動中の左拳オブジェクトＧ１または右拳オブジェクトＧ２や衝突領域Ａが衝突した場合に、左拳オブジェクトＧ１または右拳オブジェクトＧ２が単独で衝突する場合より大きなダメージが敵オブジェクトに与えられる所定のアクションが行われる。本実施形態では、「両手パンチアクション」では、敵オブジェクトと衝突した場合に当該敵オブジェクトを投げ飛ばすアクションが行われる。なお、「両手パンチアクション」は、例えば、敵オブジェクトを動けなくするようなアクションであってもよい。なお、「両手パンチアクション」実行中であっても、上述した左コントローラ３および／または右コントローラ４の姿勢や動きに応じて左拳オブジェクトＧ１および／または右拳オブジェクトＧ２が移動する軌道を変化させることができる。したがって、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２が移動する軌道を変化させることによって、衝突領域Ａの範囲も変化させることができるため、敵オブジェクトに対してより戦略的な攻撃も可能となる。
【０１１９】
上記のように、本実施形態においては、左拳オブジェクトＧ１および右拳オブジェクトＧ２の両方による動作が行われる場合（図１７）における動作の表示態様は、左拳オブジェクトＧ１および右拳オブジェクトＧ２の一方によるパンチ動作が行われる場合（図１５）における動作の表示態様と異なる。つまり、前者の場合には、動作を行う拳オブジェクトにエフェクト画像Ｉｅ２が付されるのに対して、後者の場合には、それとは異なるエフェクト画像（すなわち、衝突領域Ａ）が拳オブジェクトに付される。これによって、いずれの動作が行われているかをユーザに対してわかりやすく提示することができる。
【０１２０】
このようなアクションが行われた状態で左拳オブジェクトＧ１および右拳オブジェクトＧ２が移動する場合であっても、当該オブジェクトの移動に応じて左コントローラ３および／または右コントローラ４が振動する。具体的には、本体装置２は、左拳オブジェクトＧ１および右拳オブジェクトＧ２が両手パンチアクションによって移動する場合、仮想空間を移動する左拳オブジェクトＧ１および右拳オブジェクトＧ２の種類、移動速度、移動方向等に応じてアクション往路振動データを生成して、左コントローラ３および右コントローラ４に送信する。また、本体装置２は、衝突領域Ａ、左拳オブジェクトＧ１、または右拳オブジェクトＧ２が他のオブジェクトと衝突した場合は、当該衝突に応じた振動を示す振動データを生成して、左コントローラ３および右コントローラ４に送信する。さらに、本体装置２は、左拳オブジェクトＧ１および右拳オブジェクトＧ２が上記移動開始位置へ戻る復路を移動する場合、復路を移動する左拳オブジェクトＧ１および右拳オブジェクトＧ２の種類、移動速度、移動方向等に応じて復路振動データを生成して、左コントローラ３および右コントローラ４に送信する。これによって、両手パンチアクションが行われる場合であっても、各種振動データを受信した左コントローラ３および右コントローラ４は、当該振動データに基づいて振動する。
【０１２１】
また、両手パンチアクション実行中に左拳オブジェクトＧ１および右拳オブジェクトＧ２の軌道が変化した場合、左コントローラ３および右コントローラ４の振動も変化する。例えば、本体装置２は、両手パンチアクション実行中に左拳オブジェクトＧ１および右拳オブジェクトＧ２の往路軌道が変化した場合、左コントローラ３および／または右コントローラ４の動きや姿勢の変化に応じて振動の振幅および／または周波数の変化パラメータを算出し、当該変化パラメータを用いて上記アクション往路振動データを一時的に変化させた後、再度アクション往路振動データに戻す。これによって、一時的に変化するアクション往路振動データを受信した左コントローラ３および右コントローラ４は、当該アクション往路振動データに基づいて振動の振幅および／または周波数を変化させる。
【０１２２】
また、本ゲーム例では、左コントローラ３および右コントローラ４の両方の動きおよび／または姿勢に応じて、仮想空間内で第１プレイヤオブジェクトＰ１を移動させることができる。例えば、左コントローラ３および右コントローラ４の両方が実空間のピッチ方向に回転した場合やロール方向に回転した場合、当該回転した傾き（例えば、図１８に示すθｘ）に応じて第１プレイヤオブジェクトＰ１を移動させる（図１８参照）。具体的には、実空間の重力方向を基準とする左コントローラ３のＸ軸方向およびＹ軸方向と右コントローラ４のＸ軸方向およびＹ軸方向の傾きをそれぞれ算出する。そして、上記傾きに基づいて、左コントローラ３および右コントローラ４の両方が前方に傾く姿勢になっていると判定された場合、左コントローラ３および右コントローラ４の両方が当該前方へ傾いている角度（例えば、左コントローラ３の傾き角度と右コントローラ４の傾き角度との平均値）に応じた移動量で第１プレイヤオブジェクトＰ１を仮想空間の前方へ移動させる。なお、本実施形態において、第１プレイヤオブジェクトＰ１は、第１プレイヤオブジェクトＰ１の正面方向を基準とした向きへ移動する。すなわち、上記の場合、第１プレイヤオブジェクトＰ１は、第１プレイヤオブジェクトＰ１の正面方向へ移動する。なお、他の実施形態においては、第１プレイヤオブジェクトＰ１は、仮想カメラの視線方向に応じた方向（すなわち、画面における奥行き方向）を基準とした向きへ移動してもよい。
【０１２３】
また、上記傾きに基づいて、左コントローラ３および右コントローラ４の両方が後方に傾く姿勢になっていると判定された場合、左コントローラ３および右コントローラ４の両方が当該後方へ傾いている角度（例えば、当該角度の平均値）に応じた移動量で第１プレイヤオブジェクトＰ１を仮想空間の後方（すなわち、第１プレイヤオブジェクトＰ１の正面方向を基準としたときの後方）へ移動させる。また、上記傾きに基づいて、左コントローラ３および右コントローラ４の両方が左に傾く姿勢になっていると判定された場合、左コントローラ３および右コントローラ４の両方が当該左へ傾いている角度（例えば、当該角度の平均値）に応じた移動量で第１プレイヤオブジェクトＰ１を仮想空間の左（すなわち、第１プレイヤオブジェクトＰ１の正面方向を基準としたときの左方）へ移動させる（図１８参照）。また、上記傾きに基づいて、左コントローラ３および右コントローラ４の両方が右に傾く姿勢になっていると判定された場合、左コントローラ３および右コントローラ４の両方が当該右へ傾いている角度（例えば、当該角度の平均値）に応じた移動量で第１プレイヤオブジェクトＰ１を仮想空間の右（すなわち、第１プレイヤオブジェクトＰ１の正面方向を基準としたときの右方）へ移動させる。
【０１２４】
また、本ゲーム例では、左コントローラ３および右コントローラ４の両方の動きおよび／または姿勢に応じて、第１プレイヤオブジェクトＰ１にガード動作を行わせることができる。ガード動作中においては、第１プレイヤオブジェクトＰ１は他のオブジェクトのパンチが当たってもダメージを受けない状態となる。ただし、第１プレイヤオブジェクトＰ１は、他のプレイヤオブジェクトの両手パンチアクションによる投げ動作を、ガード動作によって防ぐことはできない（つまり、ガード動作中であっても第１プレイヤオブジェクトＰ１は他のプレイヤオブジェクトによる両手パンチアクションによって投げられる。）。また、ガード動作中においては、第１プレイヤオブジェクトＰ１は、パンチを行うことができず、また、両手パンチアクションを行うことができない。
【０１２５】
本実施形態においては、上記傾きに基づいて、左コントローラ３および右コントローラ４の両方が内側へ傾く姿勢になっていると判定された場合、第１プレイヤオブジェクトＰ１はガード動作を行う（図１９）。具体的には、本体装置２は、実空間の重力方向を基準とする左コントローラ３のＸ軸方向の傾きと右コントローラ４のＸ軸方向の傾きとをそれぞれ算出する。そして、上記傾きに基づいて、左コントローラ３および右コントローラ４の両方が内側へ所定角度以上傾いた姿勢（例えば、図１９に示すθｘ）になっていると判定された場合、第１プレイヤオブジェクトＰ１にガード動作を行わせる。
【０１２６】
また、本ゲーム例では、コントローラを動かす操作に加えて、コントローラのアナログスティックおよび／または操作ボタンを用いた操作に応じて、第１プレイヤオブジェクトＰ１に動作を行わせることができる。例えば、本体装置２は、コントローラに対する所定の操作ボタンに対する押下入力に応じて、第１プレイヤオブジェクトＰ１にジャンプ動作を行わせる。
【０１２７】
以上においては、第１プレイヤオブジェクトＰ１に対する操作方法を説明したが、本実施形態においては、第２〜第４プレイヤオブジェクトに対する操作方法は、第１プレイヤオブジェクトＰ１に対する操作方法と同じである。つまり、本実施形態においては、各ユーザはそれぞれ、左コントローラおよび右コントローラからなる１組のコントローラを用いてプレイヤオブジェクトに対する操作を行う。なお、他の実施形態においては、第２〜第４プレイヤオブジェクトに対する操作方法は、第１プレイヤオブジェクトＰ１に対する操作方法と異なっていてもよい。例えば、第２〜第４プレイヤオブジェクトのいくつかは、１つの左コントローラまたは右コントローラに対する入力（例えば、アナログスティックおよびボタンに対する入力）に基づいて動作が制御されてもよい。
【０１２８】
また、本実施形態におけるゲームは、通信対戦が可能なゲームであってもよい。このとき、第２〜第４プレイヤオブジェクトのいくつか（例えば、敵オブジェクトである第３プレイヤオブジェクトＰ３および第４プレイヤオブジェクトＰ４）は、本体装置２とネットワークを介して通信可能な他の外部装置のユーザによって操作されてもよい。例えば、外部装置は、図１に示す本体装置２と同種の他の本体装置であって、当該他の本体装置と通信可能なコントローラに対する入力に基づいてプレイヤオブジェクトの動作が制御されてもよい。このとき、本体装置２は、２組のコントローラと通信を行って当該２組のコントローラから操作データを取得し、上記他の本体装置は、別の２組のコントローラと通信を行って当該別の２組のコントローラから操作データを取得する。なお、複数のユーザが１つの本体装置を用いる場合には、据置型モニタ６の表示領域を２つに分割して、それぞれの分割表示領域に各ユーザ用の画像（すなわち、ユーザが操作するプレイヤオブジェクトから他のユーザが操作するプレイヤオブジェクトへの視線方向でゲーム空間を見た画像）を表示してもよい。
【０１２９】
また、本実施形態においては、第２〜第４プレイヤオブジェクトのいくつかに代えて、ノンプレイヤキャラクタが用いられてもよい。すなわち、本体装置２は、ゲームプログラムにおいて定められるアルゴリズムに従って自動的に動作が制御されるオブジェクトを、第２〜第４プレイヤオブジェクトに代えて用いてもよい。つまり、本実施形態におけるゲームをプレイするユーザの人数は、４人に限らず、１〜３人であってもよい。
【０１３０】
また、本実施例では、左コントローラ３と右コントローラ４とを接合して１つの操作装置として機能させるアタッチメント（付属機器）を用いて上記ゲームをプレイすることも可能である。
【０１３１】
図２０は、左コントローラ３および右コントローラ４を装着可能な付属機器の一例を示す図である。図２０に示すように、付属機器の一例である拡張グリップ２１０は、ユーザがそれを用いて操作を行うための付属機器である。拡張グリップ２１０は、左コントローラ３を装着可能であり、また、右コントローラ４を装着可能である。したがって、拡張グリップ２１０によって、ユーザは、本体装置２から外した２つのコントローラ３および４を一体として把持して操作を行うことができる。
【０１３２】
拡張グリップ２１０は、左コントローラ３および右コントローラ４をそれぞれ装着するための機構として、本体装置２が有する機構（具体的には、左レール部材１５および右レール部材１９等）と同様の機構を有している。したがって、本体装置２に装着する場合と同様にして、左コントローラ３および右コントローラ４を拡張グリップ２１０に装着することができる。具体的には、拡張グリップ２１０は、所定幅の本体部を挟んで左右両側に左コントローラ３および右コントローラ４をそれぞれ装着するための機構が設けられており、左コントローラ３および右コントローラ４を装着するレール部材がそれぞれ平行に設けられている。これによって、左コントローラ３および右コントローラ４は、それぞれのｘｙｚ軸方向が平行となるように拡張グリップ２１０に取り付けられることになる。そして、ユーザは、拡張グリップ２１０に装着されて一体となった左コントローラ３および右コントローラ４を両手で把持する。これによって、ユーザは、本体装置２から外した２つの左コントローラ３および右コントローラ４を一体として把持することができる。
【０１３３】
このような拡張グリップ２１０によって一体となった左コントローラ３および右コントローラ４を用いて上記ゲームをプレイする場合、左コントローラ３および右コントローラ４に設けられた各操作ボタンやスティックが用いられて操作される。例えば、右コントローラ４のＢボタン５４が押下操作された場合、第１プレイヤオブジェクトＰ１が左パンチを繰り出して左拳オブジェクトＧ１が移動開始する。右コントローラ４のＡボタン５３が押下操作された場合、第１プレイヤオブジェクトＰ１が右パンチを繰り出して右拳オブジェクトＧ２が移動開始する。仮想ゲーム世界において左拳オブジェクトＧ１および／または右拳オブジェクトＧ２が移動中に左コントローラ３のアナログスティック３２が傾倒操作された場合、傾倒操作された方向および傾倒角度に応じて、移動中の左拳オブジェクトＧ１および／または右拳オブジェクトＧ２の移動方向が変化する。左拳オブジェクトＧ１および右拳オブジェクトＧ２が何れも移動開始位置に配置されている場合に左コントローラ３のアナログスティック３２が傾倒操作された場合、傾倒操作された方向および傾倒角度に応じて、仮想ゲーム世界において第１プレイヤオブジェクトＰ１が移動する。右コントローラ４のＡボタン５３とＢボタン５４とが実質的に同じタイミングで押下操作された場合、左拳オブジェクトＧ１および右拳オブジェクトＧ２が移動を開始する、すなわち、第１プレイヤオブジェクトＰ１が両手パンチアクションを行う。なお、他の実施形態においては、コントローラのいずれか１つのボタンに対する押下操作に応じて、第１プレイヤオブジェクトＰ１が両手パンチアクションを行うようにしてもよい。また、左拳オブジェクトＧ１および右拳オブジェクトＧ２が何れも移動開始位置に配置されている場合に左コントローラ３のアナログスティック３２が押し込まれる操作が行われた場合、仮想ゲーム世界において第１プレイヤオブジェクトＰ１が敵オブジェクトＥＯからの攻撃を防御する。右コントローラ４のＸボタン５５が押下操作された場合、仮想ゲーム世界において第１プレイヤオブジェクトＰ１がジャンプする動作を行う。そして、右コントローラ４のＹボタン５６が押下操作された場合、仮想ゲーム世界において第１プレイヤオブジェクトＰ１がダッシュ（高速移動）する。
【０１３４】
拡張グリップ２１０を用いてゲームプレイする場合であっても、仮想ゲーム世界における左拳オブジェクトＧ１および／または右拳オブジェクトＧ２の状況に応じて、拡張グリップ２１０に装着された左コントローラ３および／または右コントローラ４に振動が与えられる。一例として、本体装置２は、拡張グリップ２１０を用いてゲームプレイする場合も、左拳オブジェクトＧ１が仮想空間を移動することに応じて、左拳オブジェクトＧ１の種類、移動速度、移動方向等に応じて往路振動データを生成して、左コントローラ３に送信する。また、本体装置２は、右拳オブジェクトＧ２が仮想空間を移動することに応じて、右拳オブジェクトＧ２の種類、移動速度、移動方向等に応じて往路振動データを生成して、右コントローラ４に送信する。また、本体装置２は、拡張グリップ２１０を用いてゲームプレイする場合も、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２が他のオブジェクトと衝突した場合は、当該衝突に応じた振動を示す振動データを生成して、左コントローラ３および／または右コントローラ４に送信する。さらに、本体装置２は、拡張グリップ２１０を用いてゲームプレイする場合も、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２が上記移動開始位置へ戻る復路を移動する場合、復路を移動する左拳オブジェクトＧ１および／または右拳オブジェクトＧ２の種類、移動速度、移動方向等に応じて復路振動データを生成して、左コントローラ３および／または右コントローラ４に送信する。これによって、拡張グリップ２１０を用いてゲームプレイする場合も、各種振動データを受信した左コントローラ３および／または右コントローラ４は、当該振動データに基づいて振動する。
【０１３５】
また、拡張グリップ２１０を用いてゲームプレイする場合であっても、アナログスティック３２が傾倒操作されることによって左拳オブジェクトＧ１および／または右拳オブジェクトＧ２の軌道が変化した場合、左コントローラ３および／または右コントローラ４の振動も変化する。例えば、本体装置２は、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２の往路軌道が変化した場合、アナログスティック３２に対する傾倒操作角度（アナログ入力値）に応じて振動の振幅および／または周波数の変化パラメータを算出し、当該変化パラメータを用いて上記往路振動データを一時的に変化させた後、再度往路振動データに戻す。これによって、一時的に変化する往路振動データを受信した左コントローラ３および／または右コントローラ４は、当該往路振動データに基づいて振動の振幅および／または周波数を変化させる。
【０１３６】
なお、左コントローラ３および右コントローラ４を装着可能な付属機器を用いて操作する場合、左コントローラ３のアナログスティック３２だけでなく、右コントローラ４のアナログスティック５２を用いた操作を可能にしてもよい。この場合、一対のアナログスティックを用いた操作が可能となるため、アナログスティック３２によって左拳オブジェクトＧ１の軌道を変化させ、アナログスティック５２によって右拳オブジェクトＧ２の軌道を変化させるような、独立した方向指示を可能としてもよい。
【０１３７】
［３．連結オブジェクト］
［３−１．連結オブジェクトの概要］
次に、図１４、図２１〜図２６を参照して、連結オブジェクトについて説明する。上述のように、本実施形態においては、第１プレイヤオブジェクトＰ１と第２プレイヤオブジェクトＰ２（図２１参照）が第１グループを構成し、第３プレイヤオブジェクトＰ３と第４プレイヤオブジェクトＰ４が第２グループを構成する。本実施形態においては、連結オブジェクトは、同じグループに属するプレイヤオブジェクト同士を連結する。つまり、味方同士のプレイヤオブジェクトが互いに連結オブジェクトによって連結される。
【０１３８】
具体的には、図１４に示すように、敵オブジェクトである第３プレイヤオブジェクトＰ３と第４プレイヤオブジェクトＰ４とが、第２連結オブジェクトＣ２によって連結される。また、第１プレイヤオブジェクトＰ１は、味方である第２プレイヤオブジェクトＰ２（図１４では図示されていない）と第１連結オブジェクトＣ１によって連結される。連結オブジェクトによって、ユーザは、同じグループに含まれるプレイヤオブジェクト、換言すれば、どのプレイヤオブジェクトが味方でどのプレイヤオブジェクトが敵であるかを容易に把握することができる。
【０１３９】
なお、本実施形態においては、第１プレイヤオブジェクトＰ１の味方オブジェクトである第２プレイヤオブジェクトＰ２は、図１４に示すように、表示範囲に含まれない場合もある。ここで、本実施形態においては、第１プレイヤオブジェクトＰ１と第２プレイヤオブジェクトＰ２とを連結する第１連結オブジェクトＣ１が表示されるので、第２プレイヤオブジェクトＰ２が表示範囲に含まれない場合であっても、ユーザは、第２プレイヤオブジェクトＰ２の大まかな位置を把握することができる。例えば、図１４に示す例においては、ユーザは、第１連結オブジェクトＣ１の方向を確認することによって、第１プレイヤオブジェクトＰ１の左後方に第２プレイヤオブジェクトＰ２が位置することを把握することができる。これによって、ユーザは、例えば、味方である第２プレイヤオブジェクトＰ２のパンチが第１プレイヤオブジェクトＰ１に当たらないように注意してゲーム操作を行うことができる。
【０１４０】
ここで、詳細は後述するが、本実施形態においては、各プレイヤオブジェクトは、自身に連結される連結オブジェクトによって移動に制約が加えられる。具体的には、連結オブジェクトによって連結される２つのプレイヤオブジェクトは、他方のプレイヤオブジェクトに対して離れた位置に移動しにくいように動作が制御される。つまり、本実施形態においては、同じグループに属する各プレイヤオブジェクトは、連結オブジェクトによって、互いに近くに位置するように移動に制約が加えられる。
【０１４１】
一方、詳細は後述するが、本実施形態においては、第３プレイヤオブジェクトＰ３および第４プレイヤオブジェクトＰ４のうち一方を向くように仮想カメラが設定される（図１４参照）。したがって、上記のように第２連結オブジェクトＣ２によって第３プレイヤオブジェクトＰ３および第４プレイヤオブジェクトＰ４が近くに配置されると、仮想カメラが向いているプレイヤオブジェクト以外のプレイヤオブジェクトも表示範囲内に含まれやすくなる。例えば、図１４に示す例においては、第３プレイヤオブジェクトＰ３の方を向くように仮想カメラが設定されており、このとき、第４プレイヤオブジェクトＰ４が表示範囲に含まれやすくなる。このように、本実施形態においては、連結オブジェクトを設定することによって、同じグループに属する各プレイヤオブジェクト（ここでは、敵オブジェクト）が単一の表示範囲に収まりやすくなるので、ユーザにとって見やすいゲーム画像を提供することができる。
【０１４２】
（連結オブジェクトの表示態様）
図２１は、連結オブジェクトで連結される２つのプレイヤオブジェクトの一例を示す図である。なお、図２１（ａ）は、２つのプレイヤオブジェクト間の距離が相対的に短い場合（すなわち、距離ｄ＝ｄ１である場合）を示し、図２１（ｂ）は、２つのプレイヤオブジェクト間の距離が相対的に長い場合（すなわち、距離ｄ＝ｄ２（＞ｄ１）である場合）を示している。図２１に示すように、本実施形態においては、第１連結オブジェクトＣ１は、紐状の外観を有するオブジェクトである。なお、以下においては、第１連結オブジェクトＣ１を例として説明するが、本体装置２は、第２連結オブジェクトＣ２についても第１連結オブジェクトＣ１と同様の処理を実行する。
【０１４３】
本実施形態において、第１連結オブジェクトＣ１の表示態様は、自身によって連結される２つのプレイヤオブジェクト間の距離（換言すれば、第１連結オブジェクトＣ１の長さ）に応じて変化する。具体的には、上記距離ｄ＝ｄ１である場合、第１連結オブジェクトＣ１の太さは、第１の太さに設定され（図２１（ａ））、上記距離ｄ＝ｄ２である場合、第１連結オブジェクトＣ１の太さは、第１の太さよりも細い第２の太さに設定される（図２１（ｂ））。なお、本実施形態においては、本体装置２は、上記距離に比例した太さとなるように第１連結オブジェクトＣ１の太さを設定する。このように、本実施形態においては、連結オブジェクトの表示態様を上記距離に応じて変化させるので、連結オブジェクトによって上記距離をユーザに把握させることができる。例えば、図１４に示す例においては、ユーザは、第１プレイヤオブジェクトＰ１に対する第２プレイヤオブジェクトＰ２の方向だけでなく、第１プレイヤオブジェクトＰ１から第２プレイヤオブジェクトＰ２がどの程度離れているかを、第１連結オブジェクトＣ１によって把握することができる。
【０１４４】
なお、本体装置２は、第１連結オブジェクトＣ１の任意の表示態様を上記距離に応じて変化させてもよい。例えば、第１連結オブジェクトＣ１の色が上記距離に応じて変化してもよいし、点線で表現される第１連結オブジェクトＣ１の点線の間隔が上記距離に応じて変化してもよい。また、第１連結オブジェクトＣ１が螺旋状の形状（例えば、バネのような形状）である場合、螺旋のピッチ（換言すれば、螺旋が円柱の側面に沿って延びる場合において、螺旋が円柱を１周するときの、円柱の軸方向の長さ）が上記距離に応じて変化してもよい。
【０１４５】
また、他の実施形態においては、連結オブジェクトは、２つのプレイヤオブジェクトが連結されることを表す任意の形状を有するものであってよい。図２２は、連結オブジェクトの他の例を示す図である。図２２に示すように、連結オブジェクトＣ１１は、第１プレイヤオブジェクトＰ１と第２プレイヤオブジェクトＰ２とを含む領域を表す形状であってもよい。なお、図２２（ａ）および（ｂ）に示されるように、連結オブジェクトＣ１１のうちで２つのプレイヤオブジェクトの間の部分の幅Ｗが、上記距離ｄに応じて変化してもよい。
【０１４６】
（連結オブジェクトと他のオブジェクトとの関係）
本実施形態において、本体装置２は、連結オブジェクトについては当たり判定処理を実行しない。つまり、本体装置２は、第１連結オブジェクトＣ１がゲーム空間における他のオブジェクトと接触するか否かにかかわらず、第１プレイヤオブジェクトＰ１および第２プレイヤオブジェクトＰ２に基づいて第１連結オブジェクトＣ１の状態（具体的には、位置および／または方向）を決定する。なお、上記「他のオブジェクト」は、例えば、プレイヤオブジェクトや、ゲーム空間に配置される地形オブジェクトあるいは障害物のオブジェクト等である。本実施形態においては、例えば、第１プレイヤオブジェクトＰ１と第２プレイヤオブジェクトＰ２との間に障害物が存在する場合であっても、第１連結オブジェクトＣ１は障害物の有無に関係なく、第１プレイヤオブジェクトＰ１と第２プレイヤオブジェクトＰ２との間に配置される。なお、連結オブジェクトが他のオブジェクトと接触する場合における表示方法は任意である。例えば、上記の場合、第１連結オブジェクトＣ１は、障害物をすり抜ける（換言すれば、突き抜ける）ように表示されてもよい。
【０１４７】
上記のように、本実施形態においては、連結オブジェクトについては当たり判定処理が実行されないので、連結オブジェクトによってプレイヤオブジェクトの動作が必要以上に制限される可能性を低減することができる。例えば、連結オブジェクトが障害物と接触することが原因でプレイヤオブジェクトの移動が制限されることを防止することができる。また、連結オブジェクトが他のオブジェクトと接触する場合には、連結オブジェクトに関する計算処理（具体的には、連結オブジェクトの位置、向き、および／または、後述する張力等を計算する処理）が複雑になる可能性がある。これに関して、本実施形態においては、本体装置２は、連結オブジェクトが他のオブジェクトと接触する場合における計算処理を実行する必要がないので、ゲーム処理による処理負荷を軽減することができる。なお、他の実施形態においては、本体装置２は、連結オブジェクトと他のオブジェクトとの当たり判定を行ってもよい。
【０１４８】
（仮想カメラの設定）
本実施形態においては、ゲーム画像を生成するために用いられる仮想カメラは、第１プレイヤオブジェクトＰ１の側から２つの敵オブジェクト（すなわち、第３プレイヤオブジェクトＰ３および第４プレイヤオブジェクトＰ４）のいずれかの側を向くように設定される。より具体的には、仮想カメラは、２つの敵オブジェクトのいずれかと第１プレイヤオブジェクトＰ１とが表示範囲に含まれるように設定される（図１４参照）。以下において、２つの敵オブジェクトとのうちで、仮想カメラの設定の基準となるプレイヤオブジェクトを、「注目オブジェクト」と呼ぶ。本実施形態においては、図１４に示すように、注目オブジェクトである第３プレイヤオブジェクトＰ３は、左右方向に関して表示範囲の実質的に中央に配置される。したがって、第１ユーザは、第１プレイヤオブジェクトＰ１が正面にパンチを繰り出すように操作を行うことによって、注目オブジェクトに向けてパンチを繰り出すことができるので、注目オブジェクトに対してパンチを当てやすくなる。
【０１４９】
本実施形態においては、注目オブジェクトは、第１ユーザによる切替操作（例えば、コントローラの所定のボタンを押下する操作）に応じて、切り替えられる。すなわち、本体装置２は、注目オブジェクトが第３プレイヤオブジェクトＰ３である状態において切替操作が行われると、注目オブジェクトを第４プレイヤオブジェクトＰ４に変更する。また、本体装置２は、注目オブジェクトが第４プレイヤオブジェクトＰ４である状態において切替操作が行われると、注目オブジェクトを第３プレイヤオブジェクトＰ３に変更する。これによって、ユーザは、狙いとする敵オブジェクトを容易に変更することができる。
【０１５０】
なお、本実施形態においては、本体装置２は、所定の自動切替条件が満たされた場合には、切替操作が行われなくても、注目オブジェクトを自動的に切り替える。具体的には、注目オブジェクトがダウンした場合、注目オブジェクトは切り替えられる。なお、本実施形態においては、注目オブジェクトは、他のプレイヤオブジェクトによるパンチを受けて飛ばされたり、他のプレイヤオブジェクトによる上記両手パンチアクションによって投げられたりした後、ダウンする。本実施形態においては、ダウンした状態のプレイヤオブジェクトにはパンチを当てても無効となる（つまり、ダメージは与えられない）ので、ダウンした状態にあるプレイヤオブジェクトを狙いとする必要性が小さいからである。
【０１５１】
なお、他の実施形態においては、仮想カメラは、第１連結オブジェクトＣ１を視野範囲に含むように設定されてもよい。すなわち、第１連結オブジェクトＣ１が上記注目オブジェクトとして設定されてもよい。また、他の実施形態においては、第１プレイヤオブジェクトＰ１は視野範囲に含まれなくてもよく、いわゆる１人称視点のゲーム画像が生成されてもよい。また、他の実施形態においては、本体装置２は、仮想カメラの視線方向をユーザが自由に操作することができるようにしてもよい。仮想カメラの視線方向をユーザが自由に操作することが可能な実施形態であっても、同じグループに属する各プレイヤオブジェクトが上記連結オブジェクトによって近くに配置されるので、当該各プレイヤオブジェクトが単一の表示範囲に収まりやすくなる。そのため、上記実施形態では本実施形態と同様に、ユーザにとって見やすいゲーム画像を提供することができる。
【０１５２】
［３−２．連結オブジェクトによる張力］
本実施形態においては、本体装置２は、プレイヤオブジェクトに連結される連結オブジェクトによって当該プレイヤオブジェクトの移動に制約を加える。本実施形態においては、本体装置２は、プレイヤオブジェクトと連結オブジェクトとの間に働く仮想的な張力を計算する。そして、この張力を考慮してプレイヤオブジェクトの動作を制御することによって、プレイヤオブジェクトの移動に制約を加える。つまり、プレイヤオブジェクトは、（状況によっては）連結オブジェクトに引っ張られる力を受けるので、連結オブジェクトで連結された２つのオブジェクト間の距離を離れにくくすることができる。以下、図２３を参照して、張力の算出方法の具体例について説明する。
【０１５３】
図２３は、プレイヤオブジェクトに働く張力の一例を示す図である。なお、図２３においては、第１プレイヤオブジェクトＰ１に働く張力を例として説明を行うが、各プレイヤオブジェクトに働く張力を算出する方法は同じである。
【０１５４】
本実施形態においては、本体装置２はまず、第１連結オブジェクトＣ１の方向に働く張力（以下、「補正前の張力」と呼ぶ）Ｔ１を算出する。補正前の張力Ｔ１は、第１連結オブジェクトＣ１の向きに平行であって、第１プレイヤオブジェクトＰ１から第２プレイヤオブジェクトＰ２への方向を向く（図２３参照）。
【０１５５】
補正前の張力Ｔ１の大きさは、第１連結オブジェクトＣ１の長さＬ（換言すれば、第１プレイヤオブジェクトＰ１と第２プレイヤオブジェクトＰ２との距離ｄ）に基づいて算出される。具体的には、補正前の張力Ｔ１は、次の式（１）に従って算出される。
・長さＬが基準値Ｌ１より小さい場合：Ｔ１＝０
・長さＬが基準値Ｌ１以上である場合：Ｔ１＝ｋ×（Ｌ−Ｌ１）  …（１）
上式（１）において、係数ｋは予め定められた定数である。上式（１）に示すように、本実施形態においては、第１連結オブジェクトＣ１の長さＬが基準値Ｌ１より短い場合、補正前の張力Ｔ１は０となる（つまり、張力Ｔ１は生じない）。これによれば、第１プレイヤオブジェクトＰ１と第２プレイヤオブジェクトＰ２との距離が基準値Ｌ１より小さい場合には、各プレイヤオブジェクトの移動に制約が加えられないので、プレイヤオブジェクトに対する操作の操作性を向上することができる。また、第１連結オブジェクトＣ１の長さＬが基準値Ｌ１以上である場合、補正前の張力Ｔ１は、長さＬに応じた大きさとなる。このように、本実施形態では、第１連結オブジェクトＣ１が弾性体のような性質を有するものとして張力が計算される。
【０１５６】
ここで、上記補正前の張力Ｔ１をそのまま用いてプレイヤオブジェクトの移動に制約を加えるとすると、ゲーム空間における鉛直方向（具体的には、地面に対して垂直な方向。換言すれば、ゲーム空間において設定される重力方向に平行な方向。）に関しては制約が大きくなりすぎるおそれがある。例えば、プレイヤオブジェクトがジャンプ動作を行う場合において、張力によって十分な高さのジャンプを行うことができず、ユーザがジャンプ動作に違和感を抱くおそれがある。また、本実施形態におけるゲームでは、プレイヤオブジェクトが敵オブジェクトのパンチをジャンプ動作によってかわすことも考えられる。そのため、プレイヤオブジェクトが十分な高さのジャンプを行うことができないとすれば、プレイヤオブジェクトに対する操作の操作性が低下するおそれがある。
【０１５７】
そこで、本実施形態においては、本体装置２は、補正前の張力Ｔ１から、鉛直方向の成分を減少させる補正を行う。具体的には、図２３に示すように、本体装置２は、補正前の張力Ｔ１のうちの鉛直方向の成分Ｔ１ｙを減少させて、補正後の鉛直方向成分Ｔ２ｙを得る。補正後の鉛直方向成分Ｔ２ｙは、例えば、補正前の鉛直方向成分Ｔ１ｙに所定の係数ａ（ここで、０＜ａ＜１）を乗算することによって得られる。本体装置２は、補正前の張力Ｔ１のうちの水平方向の成分Ｔ１ｘｚと上記補正後の鉛直方向成分Ｔ２ｙとによって構成される張力を、補正後の張力Ｔ２とする。
【０１５８】
上記のように、本実施形態においては、本体装置２は、第１連結オブジェクトＣ１の方向を向く張力（すなわち、上記補正前の張力Ｔ１）のうち、ゲーム空間における所定の第１方向（すなわち、水平方向）に直交する第２方向（すなわち、鉛直方向）に関する成分を減少させることによって補正後の張力Ｔ２を算出する。これによって、鉛直方向に関する第１プレイヤオブジェクトＰ１の動作（例えば、ジャンプ動作）に対してユーザが違和感を抱く可能性を軽減することができる。
【０１５９】
なお、本実施形態においては、本体装置２は、鉛直方向についての張力を減少させる補正を行ったが、他の実施形態においては、ゲーム内容やゲーム設定に応じた任意の方向について張力を減少させる補正を行ってもよい。また、張力を補正する方法は任意であり、他の実施形態においては、例えば、補正前の鉛直方向成分Ｔ１ｙから所定値を減算することによって補正後の張力Ｔ２が算出されてもよい。
【０１６０】
また、本体装置２は、補正前の張力Ｔ１の向きに応じて張力Ｔ１の減少量を変化させてもよい。例えば、本体装置２は、補正前の張力Ｔ１の鉛直方向成分Ｔ１ｙが鉛直上向きである場合、鉛直方向成分Ｔ１ｙに係数ａ１を乗算することによって補正後の鉛直方向成分Ｔ２ｙを算出し、補正前の張力Ｔ１の鉛直方向成分Ｔ１ｙが鉛直下向きである場合、鉛直方向成分Ｔ１ｙに係数ａ２を乗算することによって補正後の鉛直方向成分Ｔ２ｙを算出してもよい。なお、係数ａ１および係数ａ２は、ゲーム内容やゲーム設定に応じて適宜設定されればよく、係数ａ１は係数ａ２よりも大きく設定されてもよいし、小さく設定されてもよい。
【０１６１】
本実施形態においては、上記のようにして算出された補正後の張力Ｔ２を用いて第１プレイヤオブジェクトＰ１の動作が制御される。本実施形態においては、第１プレイヤオブジェクトＰ１は、第１ユーザによる操作（例えば、図２０に示す移動操作）、他のオブジェクトから受ける影響（例えば、他のプレイヤオブジェクトによるパンチを受けることによる影響）、および、ゲーム空間に設定される力（例えば重力）等の要素に基づいて動作が制御される。本体装置２は、上記の要素に加えて、補正後の張力Ｔ２に基づいて動作を制御する。これによって、第１プレイヤオブジェクトＰ１は、第１連結オブジェクトＣ１の長さＬが基準値Ｌ１以上である場合には、第１連結オブジェクトＣ１によって引っ張られるので、移動に制約を受け、第２プレイヤオブジェクトＰ２から離れにくくなるように制御されることとなる。
【０１６２】
例えば、図２３に示す例においては、第１プレイヤオブジェクトＰ１から左方向に第１連結オブジェクトＣ１が延びているので、第１プレイヤオブジェクトＰ１は左方向を向く張力Ｔ１を受けており、右方向に移動しにくくなっている。具体的には、図１８に示す移動操作によって第１プレイヤオブジェクトＰ１を移動させる場合において、各コントローラを左へある角度だけ傾けた操作によって左方向へ移動する移動量は、各コントローラを右へ同じ角度だけ傾けた操作によって右方向へ移動する移動量よりも大きくなる。また例えば、図２３に示す状態から第１プレイヤオブジェクトＰ１が真上にジャンプ動作を行った場合には、ジャンプ動作中に受ける張力によって第１プレイヤオブジェクトＰ１はジャンプ動作中に左方向へ移動する。
【０１６３】
なお、本実施形態においては、各プレイヤオブジェクトの腰に連結オブジェクトが接続される。そのため、本体装置２は、プレイヤオブジェクトの腰に張力が作用するものとして、プレイヤオブジェクトの動作制御を行う。なお、連結オブジェクトがプレイヤオブジェクトに対して接続される位置は任意であり、腰以外の他の位置であってもよい。
【０１６４】
以上のように、本実施形態においては、本体装置２は、第１連結オブジェクトＣ１が第１プレイヤオブジェクトＰ１および第２プレイヤオブジェクトＰ２に及ぼす仮想的な張力を用いて、第１プレイヤオブジェクトＰ１および第２プレイヤオブジェクトＰ２の移動に制約を加える。また、本体装置２は、第２連結オブジェクトＣ２が第３プレイヤオブジェクトＰ３および第４プレイヤオブジェクトＰ４に及ぼす仮想的な張力を用いて、第３プレイヤオブジェクトＰ３および第４プレイヤオブジェクトＰ４の移動に制約を加える。これによれば、各プレイヤオブジェクトは、移動に制約が加えられるものの、張力が弱い状態ではある程度自由に移動することができる。したがって、例えばプレイヤオブジェクトの移動が連結オブジェクトによって急に停止されるといった、プレイヤオブジェクトの動作が不自然になる可能性を軽減することができる。
【０１６５】
以上より、本実施形態においては、プレイヤオブジェクトは、連結オブジェクトの長さＬが短い状態（すなわち、長さＬが基準値Ｌ１より小さい状態）では、自由に移動することができ、連結オブジェクトの長さＬがある程度の長さになった状態（すなわち、長さＬが基準値Ｌ１以上である状態）では、張力が作用することによって移動に制約が加えられる。ここで、本実施形態においては、連結オブジェクトの長さには上限が設定される。したがって、連結オブジェクトが長くなった結果、張力が非常に大きくなった場合、または、連結オブジェクトの長さが上限に達した場合、プレイヤオブジェクトは、連結オブジェクトが伸びる方向へ移動することができなくなる。
【０１６６】
また、他の実施形態においては、連結オブジェクトによってプレイヤオブジェクトに対して制約を加えるための具体的な方法は任意であり、張力以外の方法によって制約が加えられてもよい。例えば、他の実施形態においては、連結オブジェクトの長さが所定の範囲内となるように制限が加えられてもよい。このとき、連結オブジェクトによって連結される２つのプレイヤオブジェクトの距離は当該所定の範囲内に制限される。
【０１６７】
［３−３．連結オブジェクトの制約の解除］
本実施形態においては、連結オブジェクトによってプレイヤオブジェクトに加えられる制約（具体的には、張力）は、当該プレイヤオブジェクトに関する解除条件が満たされる場合には発生しない。すなわち、本体装置２は、プレイヤオブジェクトに関する解除条件が満たされる間、当該プレイヤオブジェクトの移動に関する制約を解除して当該プレイヤオブジェクトの動作を制御する。以下、連結オブジェクトによる制約が解除される場合について詳細を説明する。
【０１６８】
本実施形態においては、上記解除条件は、プレイヤオブジェクトが所定の張力無効動作を行っていることである。つまり、プレイヤオブジェクトが張力無効動作を行っている間は、当該プレイヤオブジェクトには張力が働かない。ここで、本実施形態においては、下記（Ａ）〜（Ｃ）の動作が張力無効動作として設定される。
（Ａ）他のプレイヤオブジェクトによるパンチを受けたことに応じて飛ばされる動作（以下、「飛ばされ動作」と呼ぶ）
（Ｂ）他のプレイヤオブジェクトによる両手パンチアクションによって投げられる動作（以下、「投げられ動作」と呼ぶ）
（Ｃ）両手パンチアクションによって他のプレイヤを投げる動作（以下、「投げ動作」と呼ぶ）
【０１６９】
図２４は、飛ばされ動作を行う第１プレイヤオブジェクトの一例を示す図である。図２４（ａ）に示すように、第１プレイヤオブジェクトＰ１が他のプレイヤオブジェクトからのパンチを受ける前（つまり、飛ばされ動作の前）においては、第１連結オブジェクトＣ１による張力が働いている。そして、図２４（ｂ）に示すように、第１プレイヤオブジェクトＰ１が他のプレイヤオブジェクトからのパンチを受けて飛ばされ動作を行うと、本体装置２は、張力を発生させずに飛ばされ動作の制御を行う。飛ばされ動作は、第１プレイヤオブジェクトＰ１が倒れた姿勢で地面に接触する（すなわち、ダウンした状態となる）まで行われる。図２４（ｃ）に示すように、飛ばされ動作が終了した後においては、第１連結オブジェクトＣ１による張力が再度働く。したがって、飛ばされ動作が終了した後の状態（図２４（ｃ））においては、張力の大きさによっては、ダウンした状態の第１プレイヤオブジェクトＰ１が第１連結オブジェクトＣ１によって引っ張られて移動する場合もある。
【０１７０】
なお、本体装置２は、投げられ動作が行われる場合も飛ばされ動作と同様の制御を行う。すなわち、投げられ動作が開始されたタイミング（すなわち、プレイヤオブジェクトが他のプレイヤオブジェクトに掴まれたタイミング）から、投げられ動作が終了するタイミング（すなわち、プレイヤオブジェクトが倒れた姿勢で地面に接触するタイミング）までの期間において、本体装置２は、張力を発生させずにプレイヤオブジェクトの動作の制御を行う。
【０１７１】
また、本体装置２は、プレイヤオブジェクトが投げ動作を行う期間において、張力を発生させずに当該プレイヤオブジェクトの動作の制御を行う。例えば、投げ動作は、プレイヤオブジェクトが他のプレイヤオブジェクトを掴んで振り回した後、当該他のプレイヤオブジェクトを投げるという一連の動作である。本体装置２は、この一連の動作をプレイヤオブジェクトに行わせる間、張力を発生させずに当該プレイヤオブジェクトの動作の制御を行う。
【０１７２】
以上のように、本実施形態においては、本体装置２は、プレイヤオブジェクトが張力無効動作を行っている間は、当該プレイヤオブジェクトには連結オブジェクトによる張力を発生させないようにして動作制御を行う。これによれば、プレイヤオブジェクトに張力無効動作を自然に行わせることができる。例えば、上記プレイヤオブジェクトが飛ばされ動作を行う際に、プレイヤオブジェクトが飛ばされる距離が張力の影響によって短くなったり長くなったりすると、飛ばされ動作についてユーザが違和感を抱く可能性がある。これに対して、本実施形態によれば、このような違和感をユーザが抱く可能性を軽減することができる。
【０１７３】
なお、張力無効動作として設定される動作の種類は任意であり、他の実施形態においては、上記（Ａ）〜（Ｃ）とは異なる動作が張力無効動作として設定されてもよい。なお、本実施形態においては、上記（Ａ）〜（Ｃ）の動作中は、ユーザによる操作がオブジェクトの動作に反映されない。したがって、上記（Ａ）〜（Ｃ）の動作は、当該プレイヤオブジェクトに対するユーザによる操作が反映されない動作（換言すれば、ユーザによる操作の影響を受けない動作）ということができる。つまり、本実施形態においては、上記解除条件は、「プレイヤオブジェクトが、当該プレイヤオブジェクトに対するユーザによる操作が反映されない動作を行っていること」であるとも言うことができる。
【０１７４】
なお、本実施形態においては、プレイヤオブジェクトが解除条件を満たすか否かは、プレイヤオブジェクト毎に判定される。例えば、第１プレイヤオブジェクトＰ１と第２プレイヤオブジェクトＰ２とについて、それぞれ独立して、解除条件を満たすか否かが判定される。したがって、第１プレイヤオブジェクトＰ１については解除条件が満たされることから、第１連結オブジェクトＣ１による張力が発生しない状態であっても、第２プレイヤオブジェクトＰ２については解除条件が満たされず、第１連結オブジェクトＣ１による張力が発生していることもある。このように、解除条件の判定は、連結オブジェクトにより連結される各プレイヤオブジェクトについて独立して行われるので、各プレイヤオブジェクトをより自然に動作させることができる。
【０１７５】
［３−４．連結オブジェクトによる他の影響］
本実施形態においては、連結オブジェクトは、上述の張力によってプレイヤオブジェクトに影響を与えることに加えて、以下に説明する処理によってプレイヤオブジェクトに影響を与える場合がある。以下、詳細を説明する。
【０１７６】
（連結オブジェクトによる連鎖動作）
本実施形態においては、プレイヤオブジェクトは、連結オブジェクトにより自身と連結されるプレイヤオブジェクトの動作に連動して、当該動作と同種の動作（連鎖動作と呼ぶ）を行うことがある。具体的には、本実施形態においては、連結オブジェクトにより連結される２つのプレイヤオブジェクトのうち一方が投げられ動作を行う場合（つまり、他のプレイヤオブジェクトによって投げられた場合）、一定条件下で、他方のプレイヤオブジェクトも投げられ動作を行う。以下、図２５を参照して連鎖動作の詳細を説明する。
【０１７７】
図２５は、投げられ動作を行うプレイヤオブジェクトの一例を示す図である。図２５においては、図２５（ａ）に示す状態において、第２プレイヤオブジェクトＰ２が敵オブジェクトによる投げ動作を受ける場合を考える。この場合、まず、第２プレイヤオブジェクトＰ２は、敵オブジェクトによる投げ動作に応じて投げられ動作を行う（図２５（ｂ））。このとき、連鎖条件が満たされる場合、第１プレイヤオブジェクトＰ１も投げられ動作を行う（図２５（ｃ））。
【０１７８】
本実施形態においては、連鎖条件は、第２プレイヤオブジェクトＰ２が投げられ動作によって移動する結果、第１連結オブジェクトＣ１の長さＬが所定の判別値Ｌ２よりも大きくなったことである。つまり、あるプレイヤオブジェクトに関する連鎖条件は、「当該プレイヤオブジェクトに連結されるプレイヤオブジェクトが投げられ動作中であり、かつ、第１連結オブジェクトの長さが所定の判別値Ｌ２よりも大きくなったこと」である。なお、上記判別値Ｌ２は、任意の値であってよく、上記基準値Ｌ１と同じ値であってもよいし、異なる値であってもよい。第１プレイヤオブジェクトＰ１は、第１連結オブジェクトＣ１の長さが所定の長さ（例えば、上記判別値Ｌ２）以下となる状態を維持するように投げられ動作を行う。
【０１７９】
なお、他の実施形態においては、連鎖条件の内容は任意である。例えば、他の実施形態においては、連鎖条件は、プレイヤオブジェクトに働く張力が所定値以上となったことであってもよい。また、他の実施形態においては、連結オブジェクトによって連結される２つのプレイヤオブジェクトのうち一方が投げられ動作を行う場合には、無条件で他方のプレイヤオブジェクトが連鎖動作（換言すれば、投げられ動作）を行ってもよい。
【０１８０】
上記のように、本実施形態においては、連結オブジェクトによって連結される２つのプレイヤオブジェクトのうち一方が投げられ動作によって移動する場合、連結オブジェクトの長さが一定長さ以下となる状態を維持するように、他方のプレイヤオブジェクトも投げられ動作によって移動する。これによれば、ユーザは、連結オブジェクトによって連結される２つの敵オブジェクトのうち一方に影響を与える（具体的には、投げ動作によってダメージを与える）ことによって、他方の敵オブジェクトにも影響を与えることができる。これによって、ゲームの戦略性を向上することができ、ゲームの興趣性を向上することができる。また、連結オブジェクトによって連結される２つのプレイヤオブジェクトのうち一方が投げられ動作を行う場合であっても、当該２つのプレイヤオブジェクトの距離を一定長さ以下に維持することができる。
【０１８１】
（動作方向の補正）
本実施形態においては、連結オブジェクトによって連結される２つのプレイヤオブジェクトが共に飛ばされ動作（または投げられ動作）を行う場合がある。ここで、上述のように、飛ばされ動作中においては張力が働かないので、上記２つのプレイヤオブジェクトが同時に飛ばされ動作を行う場合には、当該２つのプレイヤオブジェクトの両方が連結オブジェクトの影響を受けずに動作する。そのため、飛ばされ動作が終了した時点では、２つのプレイヤオブジェクトの間の距離が非常に離れてしまう場合がある。このような場合、大きな張力がプレイヤオブジェクトに急に加えられることになり、プレイヤオブジェクトの動作が不自然になるおそれがある。そこで、本実施形態においては、上記２つのプレイヤオブジェクトが同時に飛ばされ動作を行う場合には、本体装置２は、飛ばされ動作の方向（すなわち、飛ばされ動作によって移動する方向）を必要に応じて補正する。
【０１８２】
図２６は、２つのプレイヤオブジェクトが飛ばされ動作を行う様子の一例を示す図である。図２６（ａ）に示すように、２つのプレイヤオブジェクトＰ１およびＰ２が互いに反対側に向かって飛ばされ動作を行う場合には、飛ばされ動作後において第１連結オブジェクトＣ１が長くなりすぎるおそれがある。そのため、上記の場合、本体装置２は、プレイヤオブジェクトが飛ばされ動作を行う方向を補正する。具体的には、図２６（ｂ）に示すように、各プレイヤオブジェクトＰ１およびＰ２の動作方向は、平行な方向に近づくように補正される。なお、図２６においては、本体装置２は、２つのプレイヤオブジェクトＰ１およびＰ２のそれぞれの動作方向を補正するが、他の実施形態においては、２つのプレイヤオブジェクトＰ１およびＰ２のうちいずれか一方の動作方向を補正してもよい。
【０１８３】
なお、動作方向を補正する補正条件は任意である。例えば、上記条件は、２つのプレイヤオブジェクトの動作方向のなす角度が所定値以上であることであってもよい。また、上記条件は、連結オブジェクトの長さが所定値以上となったことであってもよい。このように、補正条件は、２つのプレイヤオブジェクトの一方または両方の張力無効動作が終了した時点における２つのプレイヤオブジェクトの距離が所定値よりも大きくなること（あるいは、大きくなると予測されること）であってもよい。
【０１８４】
また、動作方向を補正するタイミングは任意である。例えば、連結オブジェクトによって連結される２つのプレイヤオブジェクトの一方が飛ばされ動作中である状態において、他方のプレイヤオブジェクトが飛ばされ動作を開始したタイミングで、動作方向の補正が開始されてもよい。また例えば、上記補正条件が満たされたタイミングで、動作方向の補正が開始されてもよい。
【０１８５】
なお、図２６においては、各プレイヤオブジェクトが共に飛ばされ動作を行う場合を例として説明したが、本体装置２は、各プレイヤオブジェクトのうち一方または両方が投げられ動作を行う場合も、飛ばされ動作が行われる場合と同様に、動作方向の補正を行う。
【０１８６】
以上のように、本実施形態においては、連結オブジェクトによって連結される２つのプレイヤオブジェクトのうち一方が所定の第１動作（すなわち、飛ばされ動作または投げられ動作）を行い、他方が所定の第２動作（すなわち、飛ばされ動作または投げられ動作）を行う場合であって、第１動作の動作方向および第２動作の動作方向が所定の条件を満たす場合、第１動作の動作方向と第２動作の動作方向との少なくともいずれかを補正する。これによって、各プレイヤオブジェクトが上記第１動作または第２動作の後で不自然な挙動をとる可能性を低減することができる。なお、上記第１動作と第２動作は、同じ種類の動作であってもよいし、異なる種類の動作であってもよい。
【０１８７】
［４．ゲーム処理の具体例］
図１９〜図３７を参照して、上記において概要を説明したゲーム処理が情報処理システムにおいて実行される場合の具体例について説明する。図１９は、本実施形態において本体装置２のＤＲＡＭ８５に設定されるデータ領域の一例を示す図である。なお、ＤＲＡＭ８５には、図１９に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。
【０１８８】
ＤＲＡＭ８５のプログラム記憶領域には、情報処理システム１で実行される各種プログラムＰａが記憶される。本実施形態においては、各種プログラムＰａは、上述した左コントローラ３および右コントローラ４との間で無線通信するための通信プログラムや、左コントローラ３および／または右コントローラ４から取得したデータに基づいた情報処理を行うためのアプリケーションプログラム（本実施形態においては、ゲーム処理を行うためのゲームプログラム）、クレードル５に対する本体装置２の着脱に応じて画像を表示する表示装置を切り替えるプログラム等が記憶される。なお、各種プログラムＰａは、フラッシュメモリ８４に予め記憶されていてもよいし、情報処理システム１に着脱可能な記憶媒体（例えば、第１スロット２３に装着された第１の種類の記憶媒体、第２スロット２４に装着された第２の種類の記憶媒体）から取得されてＤＲＡＭ８５に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてＤＲＡＭ８５に記憶されてもよい。ＣＰＵ８１は、ＤＲＡＭ８５に記憶された各種プログラムＰａを実行する。
【０１８９】
また、ＤＲＡＭ８５のデータ記憶領域には、情報処理システム１において実行される通信処理や情報処理等の処理において用いられる各種のデータが記憶される。本実施形態においては、ＤＲＡＭ８５には、操作データＤａ、姿勢データＤｂ、角速度データＤｃ、加速度データＤｄ、閾値データＤｅ、カーブ値データＤｆ、回転速度データＤｇ、振りフラグデータＤｈ、移動フラグデータＤｉ、アクションフラグデータＤｊ、戻りフラグデータＤｋ、移動開始可能フラグデータＤｌ、プレイヤオブジェクトデータＤｍ、衝突領域データＤｎ、左コントローラ振動データＤｏ、右コントローラ振動データＤｐ、連結オブジェクトデータＤｑ、張力無効フラグデータＤｒ、注目オブジェクトデータＤｓ、および、画像データＤｔ等が記憶される。
【０１９０】
操作データＤａは、左コントローラ３および右コントローラ４からそれぞれ適宜取得した操作データである。上述したように、左コントローラ３および右コントローラ４からそれぞれ送信される操作データには、各入力部（具体的には、各ボタン、アナログスティック、各センサ）からの入力に関する情報（具体的には、操作に関する情報、または、センサによる検出結果）が含まれている。本実施形態では、無線通信によって左コントローラ３および右コントローラ４からそれぞれ所定周期で操作データが送信されており、当該受信した操作データを用いて操作データＤａが適宜更新される。なお、操作データＤａの更新周期は、後述する情報処理システム１で実行される処理の周期である１フレーム毎に更新されてもよいし、上記無線通信によって操作データが送信される周期毎に更新されてもよい。
【０１９１】
姿勢データＤｂは、実空間における重力加速度の方向を基準とした左コントローラ３および右コントローラ４それぞれの姿勢を示すデータである。例えば、姿勢データＤｂは、左コントローラ３および右コントローラ４それぞれに作用している重力加速度の方向を示すデータや、当該重力加速度方向に対するＸＹＺ軸方向を示すデータ等を含んでいる。
【０１９２】
角速度データＤｃは、左コントローラ３および右コントローラ４それぞれに生じている角速度を示すデータである。例えば、角速度データＤｃは、左コントローラ３および右コントローラ４それぞれに生じているＸＹＺ軸周りの角速度を示すデータ等を含んでいる。
【０１９３】
加速度データＤｄは、左コントローラ３および右コントローラ４それぞれに生じている加速度を示すデータである。例えば、加速度データＤｄは、左コントローラ３および右コントローラ４それぞれに生じている重力加速度を除いて、ＸＹＺ軸方向に生じている加速度を示すデータ等を含んでいる。
【０１９４】
閾値データＤｅは、左コントローラ３および右コントローラ４に対してそれぞれ行われた振り動作を判定するための閾値を示すデータである。カーブ値データＤｆは、左拳オブジェクトＧ１および右拳オブジェクトＧ２それぞれの移動方向や軌道を算出するためのカーブ値Ｃを示すデータである。回転速度データＤｇは、左拳オブジェクトＧ１または右拳オブジェクトＧ２が移動中における左コントローラ３および右コントローラ４の動き（回転速度Ｖ）を示すデータである。
【０１９５】
振りフラグデータＤｈは、左コントローラ３および右コントローラ４それぞれが振り動かされたと判定された際にオンに設定される振りフラグを示すデータである。移動フラグデータＤｉは、左拳オブジェクトＧ１および右拳オブジェクトＧ２それぞれが仮想空間内を移動中である場合にオンに設定される移動フラグを示すデータである。アクションフラグデータＤｊは、左拳オブジェクトＧ１および右拳オブジェクトＧ２が組となったアクションが行われている場合にオンに設定されるアクションフラグを示すデータである。戻りフラグデータＤｋは、左拳オブジェクトＧ１および右拳オブジェクトＧ２それぞれが移動開始位置に戻る仮想空間内の復路を移動している場合にオンに設定される戻りフラグを示すデータである。移動開始可能フラグデータＤｌは、左拳オブジェクトＧ１が第１移動開始可能状態となった場合および右拳オブジェクトＧ２が第２移動開始可能状態となった場合にそれぞれオンに設定される移動開始可能フラグを示すデータである。
【０１９６】
プレイヤオブジェクトデータＤｍは、第１プレイヤオブジェクトＰ１に関する状態を示すデータである。具体的には、プレイヤオブジェクトデータＤｍは、第１プレイヤオブジェクトＰ１のゲーム空間における位置を示すデータと、上記左拳オブジェクトＧ１および右拳オブジェクトＧ２のゲーム空間における位置を示すデータとを含む。また、プレイヤオブジェクトデータＤｍは、第１プレイヤオブジェクトＰ１が第１連結オブジェクトＣ１から受ける張力を示す張力データを含む。また、プレイヤオブジェクトデータＤｍは、第１プレイヤオブジェクトＰ１が上述の飛ばされ動作または投げられ動作を行う場合における動作方向を示すデータを含む。衝突領域データＤｎは、衝突領域Ａの仮想空間における位置、形状、および範囲を示すデータである。
【０１９７】
左コントローラ振動データＤｏは、左コントローラ３を振動させるための振動を示すデータである。右コントローラ振動データＤｐは、右コントローラ４を振動させるための振動を示すデータである。
【０１９８】
連結オブジェクトデータＤｑは、第１連結オブジェクトＣ１に関する状態を示すデータである。具体的には、連結オブジェクトデータＤｑは、第１連結オブジェクトＣ１の位置、向き、および長さを示すデータを含む。張力無効フラグデータＤｒは、第１プレイヤオブジェクトＰ１が上述の張力無効動作を行っている状態であるか否かを示す張力無効フラグを示すデータである。
【０１９９】
注目オブジェクトデータＤｓは、上述の注目オブジェクトを示すデータである。第１プレイヤオブジェクトＰ１を操作するユーザのためのゲーム画像を生成する場合には、注目オブジェクトデータＤｓは、第１プレイヤオブジェクトＰ１の敵である敵オブジェクトのいずれか（すなわち、第３プレイヤオブジェクトＰ３または第４プレイヤオブジェクトＰ４）を示す。
【０２００】
画像データＤｔは、ゲームの際に本体装置２のディスプレイ１２や据置型モニタ６の表示画面に画像（例えば、仮想オブジェクトの画像、フィールド画像、背景画像）を表示するためのデータである。
【０２０１】
なお、図２７において図示していないが、本実施形態においては、図２７に示す各種データのうち第１プレイヤオブジェクトＰ１に関して設定されるデータと同種のデータが、第２〜第４プレイヤオブジェクトＰ２〜Ｐ４についても設定される。また、第１連結オブジェクトＣ１について設定される上記連結オブジェクトデータＤｑと同種のデータが、第２連結オブジェクトＣ２についても設定される。
【０２０２】
次に、本実施形態における情報処理（ゲーム処理）の詳細な一例を説明する。図２８は、情報処理システム１で実行されるゲーム処理の一例を示すフローチャートである。図２９〜図３０は、図２８におけるステップＳ４およびステップＳ５において行われるコントローラ振り認識処理の詳細の一例を示すサブルーチンである。図３１〜図３３は、図２８におけるステップＳ６およびステップＳ７において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチンである。図３４は、図２８におけるステップＳ８において行われるプレイヤオブジェクト移動処理の詳細の一例を示すサブルーチンである。図３６〜図３７は、図２８におけるステップＳ９において行われる動作制御処理の詳細の一例を示すサブルーチンである。図３８は、図２８におけるステップＳ１０において行われる表示制御処理の詳細の一例を示すサブルーチンである。本実施形態においては、図２８〜図３８に示す一連の処理は、ＣＰＵ８１が各種プログラムＰａに含まれる通信プログラムや所定のアプリケーションプログラム（ゲームプログラム）を実行することによって行われる。また、図２８〜図３８に示すゲーム処理が開始されるタイミングは任意である。
【０２０３】
なお、図２８〜図３８に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて（または代えて）別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をＣＰＵ８１が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、ＣＰＵ８１以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置２において実行される処理の一部は、本体装置２と通信可能な他の情報処理装置（例えば、本体装置２とネットワークを介して通信可能なサーバ）によって実行されてもよい。すなわち、図２８〜図３８に示す各処理は、本体装置２を含む複数の情報処理装置が協働することによって実行されてもよい。
【０２０４】
図２８において、ＣＰＵ８１は、ゲーム処理における初期設定を行い（ステップＳ１）、次のステップに処理を進める。例えば、上記初期設定では、ＣＰＵ８１は、以下に説明する処理を行うためのパラメータを初期化する。また、上記初期設定では、ＣＰＵ８１は、ゲームプレイを行うためのゲームフィールドを設定し、当該ゲームフィールド上の各プレイヤオブジェクトの初期位置を設定し、左拳オブジェクトＧ１および右拳オブジェクトＧ２の移動方向をデフォルト値（例えば、正面方向）に初期設定して、プレイヤオブジェクトデータＤｍを更新する。また、ＣＰＵ８１は、移動開始可能フラグデータＤｌが示す移動開始可能フラグをオンに初期設定する。また、ＣＰＵ８１は、張力無効フラグデータＤｒが示す張力無効フラグをオフに初期設定する。また、ＣＰＵ８１は、注目オブジェクトデータＤｓが示す注目オブジェクトを、例えば敵オブジェクトのうちいずれか１つに初期設定する。
【０２０５】
また、本実施形態においては、プレイヤオブジェクトに対して設定される左拳オブジェクトおよび右拳オブジェクトとしてそれぞれ、複数種類のオブジェクトが予め用意されている。ユーザは、ゲームの開始前において、用意されている複数種類のオブジェクトのうちから、自身が操作するプレイヤオブジェクトに対して設定する左拳オブジェクトおよび右拳オブジェクトを選択することができる。上記初期設定において、ＣＰＵ８１は、ユーザによって選択された左拳オブジェクトおよび右拳オブジェクトの種類を示すデータを含むプレイヤオブジェクトデータＤｍをＤＲＡＭ８５に記憶する。
【０２０６】
次に、ＣＰＵ８１は、左コントローラ３および右コントローラ４から操作データを取得して操作データＤａを更新し（ステップＳ２）、次のステップに処理を進める。
【０２０７】
次に、ＣＰＵ８１は、左コントローラ３および右コントローラ４それぞれの姿勢、角速度、加速度を算出し（ステップＳ３）、次のステップに処理を進める。例えば、ＣＰＵ８１は、左コントローラ３および右コントローラ４それぞれに生じている加速度を示すデータを操作データＤａから取得し、左コントローラ３および右コントローラ４それぞれに作用している重力加速度の方向を算出して、当該方向を示すデータを用いて姿勢データＤｂを更新する。重力加速度を抽出する方法については任意の方法を用いればよく、例えば左コントローラ３および右コントローラ４それぞれに平均的に生じている加速度成分を算出して当該加速度成分を重力加速度として抽出してもよい。そして、ＣＰＵ８１は、左コントローラ３に対して算出された重力加速度の方向を基準とした左コントローラ３のＸＹＺ軸方向を左コントローラ３の姿勢として算出し、当該姿勢を示すデータを用いて姿勢データＤｂを更新する。また、ＣＰＵ８１は、右コントローラ４に対して算出された重力加速度の方向を基準とした右コントローラ４のＸＹＺ軸方向を右コントローラ４の姿勢として算出し、当該姿勢を示すデータを用いて姿勢データＤｂを更新する。また、ＣＰＵ８１は、左コントローラ３および右コントローラ４それぞれに生じている角速度を示すデータを操作データＤａから取得し、左コントローラ３および右コントローラ４それぞれのＸＹＺ軸周りの角速度を算出して、当該角速度を示すデータを用いて角速度データＤｃを更新する。さらに、ＣＰＵ８１は、左コントローラ３および右コントローラ４それぞれに生じている加速度を示すデータを操作データＤａから取得し、左コントローラ３および右コントローラ４それぞれに生じているＸＹＺ軸方向の加速度から上記重力加速度成分を除去して、当該除去後の加速度を示すデータを用いて加速度データＤｄを更新する。
【０２０８】
なお、左コントローラ３や右コントローラ４の姿勢については、重力加速度を基準としたＸＹＺ軸方向が算出された以降は、ＸＹＺ各軸周りの角速度のみに応じて更新してもよい。しかしながら、左コントローラ３や右コントローラ４の姿勢と重力加速度の方向との関係が誤差の累積によってずれていくことを防止するために、所定周期毎に重力加速度の方向に対するＸＹＺ軸方向を算出して左コントローラ３や右コントローラ４の姿勢を修正してもよい。
【０２０９】
次に、ＣＰＵ８１は、左コントローラ振り認識処理を行い（ステップＳ４）、次のステップに処理を進める。以下、図２９〜図３０を参照して、上記ステップＳ４において行う左コントローラ振り認識処理について説明する。
【０２１０】
図２９において、ＣＰＵ８１は、左コントローラ３の処理に対して設定されている振りフラグをオフに設定して振りフラグデータＤｈを更新し（ステップＳ１１）、次のステップに処理を進める。
【０２１１】
次に、ＣＰＵ８１は、左コントローラ３に対する振り判定を除外するか否かを判定する（ステップＳ１２）。例えば、ＣＰＵ８１は、左コントローラ３が振り戻されている状態である場合、振り判定を除外する。そして、ＣＰＵ８１は、左コントローラ３の振り判定を除外する場合、ステップＳ１３に処理を進める。一方、ＣＰＵ８１は、左コントローラ３が振り判定を行う場合、ステップＳ１４に処理を進める。
【０２１２】
左コントローラ３が振り戻されている状態であると判定する方法の第１の例として、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３のＹ軸周りの角速度を取得し、左コントローラ３が手前側への回転（例えば、Ｚ軸正方向が手前側に向く回転）をしている場合、上記ステップＳ１２において肯定判定する。左コントローラ３が振り戻されている状態であると判定する方法の第２の例として、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３の姿勢を取得し、当該左コントローラ３が重力加速度の方向に対して後傾している姿勢（例えば、左コントローラ３のＸ軸正方向が実空間に対して水平方向より上を向いている姿勢）となっている場合、ＣＰＵ８１は、上記ステップＳ１２において肯定判定する。左コントローラ３が振り戻されている状態であると判定する方法の第３の例として、ＣＰＵ８１は、加速度データＤｄを参照して左コントローラ３に生じている加速度を取得し、当該左コントローラ３がプレイヤへの方向に移動している（例えば、左コントローラ３に生じている加速度に左コントローラ３のＸ軸負方向成分が含まれている）場合、ＣＰＵ８１は、上記ステップＳ１２において肯定判定する。
【０２１３】
ステップＳ１３において、ＣＰＵ８１は、現時点において左コントローラ３に生じている加速度の大きさが左コントローラ３の振り判定をするための閾値より大きい場合、現時点において左コントローラ３に生じている加速度の大きさを当該閾値として設定して閾値データＤｅを更新し、ステップＳ１４に処理を進める。ここで、後述により明らかとなるが、本実施例では、左コントローラ３に生じている加速度のうち、Ｙ軸方向成分を除いた加速度（以下、ＸＺ加速度と記載する）の大きさが閾値を越えた場合に、左コントローラ３が振り動かされたと判定している。上記ステップＳ１３では、現時点において左コントローラ３に生じている加速度の大きさ（すなわち、現時点において左コントローラ３に生じている加速度からＹ軸方向成分の加速度を除いた大きさ）が後述する所定値より大きい場合に、当該加速度の大きさを上記振り判定で用いる閾値として設定することによって、上記振り判定において否定判定されることになる。つまり、上記ステップＳ１３は、左コントローラ３が振り戻されている状態となっている場合に実行される処理であり、左コントローラ３がパンチを繰り出す動作の前後で振り戻されているような場合に左コントローラ３がパンチを繰り出すように振られていると誤判定することを防止することができる。
【０２１４】
ステップＳ１４において、ＣＰＵ８１は、左コントローラ３に生じているＸＺ加速度の大きさが上記閾値より大きいか否かを判定する。そして、ＣＰＵ８１は、左コントローラ３に生じているＸＺ加速度の大きさが上記閾値より大きい場合、ステップＳ１５に処理を進める。一方、ＣＰＵ８１は、左コントローラ３に生じているＸＺ加速度の大きさが上記閾値以下である場合、ステップＳ１８に処理を進める。ここで、本実施例では、左コントローラ３がパンチを繰り出すように、すなわち左コントローラ３がＸ軸正方向へ移動するように振り動かされたか否かを判定するために、左コントローラ３に生じている加速度のうち、Ｙ軸方向成分を除いたＸＺ加速度の大きさと所定値（上記ステップＳ１３や後述するステップＳ１７またはステップＳ１８において設定される閾値）とが比較される。したがって、上記ステップＳ１４においては、ＣＰＵ８１は、加速度データＤｄを参照して左コントローラ３のＸ軸方向およびＺ軸方向それぞれに生じている加速度を取得し、当該加速度を用いて左コントローラ３に生じているＸＺ加速度の大きさを算出する。そして、左コントローラ３が振り戻されている状態ではない場合、ＸＺ加速度の大きさが所定値または当該所定値に近づいた閾値を越えていれば、左コントローラ３がパンチを繰り出すように振られたと判定する。
【０２１５】
ステップＳ１５において、ＣＰＵ８１は、一時変数Ｂが０であるか否かを判定する。そして、ＣＰＵ８１は、一時変数Ｂが０である場合、ステップＳ１６に処理を進める。一方、ＣＰＵ８１は、一時変数Ｂが０でない場合、ステップＳ１７に処理を進める。
【０２１６】
ステップＳ１６において、ＣＰＵ８１は、左コントローラ３の処理に対して設定されている振りフラグをオンに設定して振りフラグデータＤｈを更新し、一時変数Ｂとして所定フレーム数を設定して、ステップＳ１７に処理を進める。このように、左コントローラ３の処理に対して設定されている振りフラグは、左コントローラ３がパンチを繰り出すように振られたと判定され、かつ一時変数Ｂが０である場合にオンに設定される。
【０２１７】
ここで、上記ステップＳ１６において、一時変数Ｂとして設定する所定フレーム数は、左コントローラ３がパンチを繰り出すように振られたと判定された直後に次の振り判定を除外する期間（振りフラグをオンに設定できない期間）を一時的に設定するものであり、本実施例では一例として１２フレームに設定する。例えば、左コントローラ３が振り動かされていると判定された後であっても、左コントローラ３に生じている加速度の上昇が継続することがあり得る。このような場合、上記ステップＳ１４における振り判定では肯定判定が連続することになるが、このような肯定判定を全て左コントローラ３がパンチを繰り出すように振られたと見なすと意図しているパンチの判定ができなくなる。したがって、本実施例では、左コントローラ３がパンチを繰り出すように振られたと判定された後の所定期間（例えば、１２フレーム）は、当該判定されることを除外している。なお、他の例として、左コントローラ３がパンチを繰り出すように振られたと判定されて振りフラグがオンに設定されてから、左コントローラ３に生じている加速度の上昇（具体的には、ＸＺ加速度の上昇）が継続している期間を、振りフラグが再度オンに設定できない期間として設定してもよい。
【０２１８】
ステップＳ１７において、ＣＰＵ８１は、左コントローラ３の振り判定をするための閾値として、現時点において左コントローラ３に生じている加速度の大きさを設定して閾値データＤｅを更新し、ステップＳ１９に処理を進める。
【０２１９】
一方、上記ステップＳ１４において左コントローラ３に生じているＸＺ加速度の大きさが上記閾値以下であると判定された場合、ＣＰＵ８１は、左コントローラ３の振り判定をするための閾値を予め定められた所定値に近づけて閾値データＤｅを更新し、ステップＳ１９に処理を進める。一例として、ＣＰＵ８１は、閾値データＤｅが示す閾値を所定量だけ上記所定値に近づけて新たな閾値を設定し、当該閾値を用いて閾値データＤｅを更新する。他の例として、ＣＰＵ８１は、閾値データＤｅが示す閾値を所定割合だけ上記所定値に近づけて新たな閾値を設定し、当該閾値を用いて閾値データＤｅを更新する。このように左コントローラ３の振り判定をするための閾値を予め定められた所定値に近づけることによって、上記ステップＳ１３やステップＳ１７が実行されることによって上記閾値が上昇したとしても、所定時間経過後には意図している所定値を用いてコントローラの振り判定を行うことができる。
【０２２０】
ステップＳ１９において、ＣＰＵ８１は、一時変数Ｂが０より大きいか否かを判定する。そして、ＣＰＵ８１は、一時変数Ｂが０より大きい場合、ステップＳ２０に処理を進める。一方、ＣＰＵ８１は、一時変数Ｂが０である場合、ステップＳ２１（図３０参照）に処理を進める。
【０２２１】
ステップＳ２０において、ＣＰＵ８１は、一時変数Ｂから１減算して新たな一時変数Ｂを設定し、ステップＳ２１（図３０参照）に処理を進める。
【０２２２】
図３０に進み、ステップＳ２１において、ＣＰＵ８１は、振りフラグデータＤｈを参照して左コントローラ３の処理に対して設定されている振りフラグがオンに設定されているか否かを判定する。そして、ＣＰＵ８１は、左コントローラ３の処理に対して設定されている振りフラグがオンに設定されている場合、ステップＳ２２に処理を進める。一方、ＣＰＵ８１は、左コントローラ３の処理に対して設定されている振りフラグがオフに設定されている場合、ステップＳ２３に処理を進める。
【０２２３】
ステップＳ２２において、ＣＰＵ８１は、左コントローラ３がパンチを繰り出すように振られたと判定された後の処理フレーム数をカウントするための一時変数Ｓとして所定フレーム数を設定し、ステップＳ２５に処理を進める。ここで、一時変数Ｓとして設定する所定フレーム数は、左コントローラ３がパンチを繰り出すように振られたと判定されてから所定時間以内に第１移動開始可能状態になった場合に左拳オブジェクトＧ１の移動を開始するための処理を行うための当該所定時間に相当するパラメータであり、本実施例では一例として１５フレームに設定する。したがって、上記第１移動開始可能状態でない場合であっても、左コントローラ３がパンチを繰り出すように振られたと判定されてから１５フレーム以内に上記第１移動開始可能状態になった場合は、左拳オブジェクトＧ１の移動を開始するための処理が行われることになる。
【０２２４】
一方、上記ステップＳ２１において、振りフラグがオフに設定されていると判定された場合、ＣＰＵ８１は、一時変数Ｓが０より大きいか否かを判定する（ステップＳ２３）。そして、ＣＰＵ８１は、一時変数Ｓが０より大きい場合、ステップＳ２４に処理を進める。一方、ＣＰＵ８１は、一時変数Ｓが０である場合、ステップＳ２５に処理を進める。
【０２２５】
ステップＳ２４において、ＣＰＵ８１は、一時変数Ｓから１減算して新たな一時変数Ｓを設定し、ステップＳ２５に処理を進める。
【０２２６】
ステップＳ２５において、ＣＰＵ８１は、一時変数Ｓが０より大きいか否かを判定する。そして、ＣＰＵ８１は、一時変数Ｓが０より大きい場合、ステップＳ２６に処理を進める。一方、ＣＰＵ８１は、一時変数Ｓが０である場合、当該サブルーチンによる処理を終了する。
【０２２７】
ステップＳ２６において、ＣＰＵ８１は、移動開始可能フラグデータＤｌを参照して左拳オブジェクトＧ１の処理に対して設定されている移動開始可能フラグがオンに設定されているか否かを判定する。そして、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている移動開始可能フラグがオンに設定されている場合、ステップＳ２７に処理を進める。一方、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている移動開始可能フラグがオフに設定されている場合、当該サブルーチンを用いた処理を終了する。
【０２２８】
ステップＳ２７において、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている移動フラグをオンに設定して移動フラグデータＤｉを更新し、次のステップに処理を進める。このように、左コントローラ３がパンチを繰り出すように振られたと判定されたときだけではなく、当該判定後であっても所定フレーム数（例えば、１５フレーム）が経過する前に、移動開始可能フラグがオン（すなわち、第１移動開始可能状態）になれば、左拳オブジェクトＧ１の処理に対して設定されている移動フラグがオンに設定される。
【０２２９】
次に、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている移動開始可能フラグをオフに設定して移動開始可能フラグデータＤｌを更新して（ステップＳ２８）、次のステップに処理を進める。このように、左拳オブジェクトＧ１が仮想空間内を移動することを示す移動フラグがオンに設定された場合、第１移動開始可能状態ではなくなるため左拳オブジェクトＧ１の移動開始可能フラグがオフに設定される。なお、第１プレイヤオブジェクトＰ１が敵オブジェクトに対して攻撃できない状態（例えば、第１プレイヤオブジェクトＰ１がダメージを受けて一時的にダウンしている状態）である場合、移動開始可能フラグを適宜オフに設定して移動開始可能フラグデータＤｌを設定してもよい。この場合、第１プレイヤオブジェクトＰ１が上記攻撃できない状態から回復した場合に、移動開始可能フラグがオンに設定される。
【０２３０】
次に、ＣＰＵ８１は、現時点が右拳オブジェクトＧ２を移動開始してから所定フレーム数（例えば、４フレーム数）以内か否かを判定する（ステップＳ２９）。例えば、ＣＰＵ８１は、後述するステップＳ５において左コントローラ振り認識処理と同様の処理を右コントローラ４に対しても行っており、現時点が当該ステップＳ５において右コントローラ４の処理に対して設定されている移動フラグがオンされてから所定フレーム数以内であれば、上記ステップＳ２９において肯定判定する。そして、ＣＰＵ８１は、現時点が右拳オブジェクトＧ２を移動開始してから所定フレーム数以内である場合、ステップＳ３０に処理を進める。一方、ＣＰＵ８１は、現時点が右拳オブジェクトＧ２を移動開始してから所定フレーム数以内でない場合、当該サブルーチンを用いた処理を終了する。
【０２３１】
ステップＳ３０において、ＣＰＵ８１は、アクションフラグをオンに設定してアクションフラグデータＤｊを更新し、当該サブルーチンを用いた処理を終了する。このように、左拳オブジェクトＧ１および右拳オブジェクトＧ２の一方のオブジェクトが移動開始してから所定フレーム数以内に、他方のオブジェクトが移動開始した場合、アクションフラグがオンに設定される。
【０２３２】
図２８に戻り、上記ステップＳ４における左コントローラ振り認識処理の後、ＣＰＵ８１は、右コントローラ振り認識処理を行い（ステップＳ５）、次のステップに処理を進める。なお、図２９および図３０を用いて説明したコントローラ振り認識処理は、上記ステップＳ５の右コントローラ振り認識処理においても用いられるサブルーチンである。すなわち、上記左コントローラ振り認識処理において処理対象としていた左コントローラ３および左拳オブジェクトＧ１を右コントローラ４および右拳オブジェクトＧ２にすることによって、同じサブルーチンを用いて同様の処理が可能となる。したがって、上記ステップＳ５の右コントローラ振り認識処理の詳細な説明については省略する。
【０２３３】
次に、ＣＰＵ８１は、第１オブジェクト軌道変化処理を行い（ステップＳ６）、次のステップに処理を進める。以下、図３１〜図３３を参照して、上記ステップＳ６において行う第１オブジェクト軌道変化処理について説明する。
【０２３４】
図３１において、ＣＰＵ８１は、移動フラグデータＤｉを参照して左拳オブジェクトＧ１の処理に対して設定されている移動フラグがオンに設定されているか否かを判定する（ステップＳ４１）。そして、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている移動フラグがオンに設定されている場合、ステップＳ４２に処理を進める。一方、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている移動フラグがオフに設定されている場合、当該サブルーチンを用いた処理を終了する。
【０２３５】
ステップＳ４２において、ＣＰＵ８１は、一時変数Ｓが所定数以上か否かを判定する。そして、ＣＰＵ８１は、一時変数Ｓが所定数以上である場合、ステップＳ４３に処理を進める。一方、ＣＰＵ８１は、一時変数Ｓが所定数未満である場合、ステップＳ５１（図３２参照）に処理を進める。ここで、上記ステップＳ４２では、左コントローラ３がパンチを繰り出すように振られたと判定されてから当該パンチ操作が終わるまでの期間であるか否かを判定しており、パンチ操作中であると判定される場合とパンチ操作が終わったと判定される場合とによって異なる軌道設定を行っている。したがって、上記ステップＳ４２で用いる所定数は、上記期間を判別可能なフレーム数に設定すればよく、例えば所定数＝７に設定される。
【０２３６】
ステップＳ４３において、ＣＰＵ８１は、重力加速度の方向に対する左コントローラ３のＹ軸方向の傾きを算出し、次のステップに処理を進める。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３の姿勢を取得し、重力加速度の方向に対する当該左コントローラ３のＹ軸方向の傾きを算出する。
【０２３７】
次に、ＣＰＵ８１は、左コントローラ３のＹ軸方向の傾き角度に応じて、左拳オブジェクトＧ１のカーブ値Ｃを算出してカーブ値データＤｆを更新し（ステップＳ４４）、次のステップに処理を進める。ここで、左拳オブジェクトＧ１のカーブ値Ｃは、左拳オブジェクトＧ１の軌道を左右に変化させるための係数であり、例えば−１≦Ｃ≦１となるように設定される。そして、上記ステップＳ４４では、左コントローラ３のＹ軸方向がＸ軸正方向に向かって右に傾いている場合にカーブ値Ｃを正の値に設定し、当該Ｙ軸方向が水平方向に対して右に４０°傾いている場合にＣ＝１に設定され、当該Ｙ軸方向が水平方向に対して右に４０°以上傾いたとしてもＣが上限値である１に設定される。また、左コントローラ３のＹ軸方向がＸ軸正方向に向かって左に傾いている場合にカーブ値Ｃを負の値に設定し、当該Ｙ軸方向が水平方向に対して左に４０°傾いている場合にＣ＝−１に設定され、当該Ｙ軸方向が水平方向に対して左に４０°以上傾いたとしてもＣが下限値である−１に設定される。
【０２３８】
なお、本実施形態においては、上述のように、第１プレイヤオブジェクトＰ１に設定される左拳オブジェクトＧ１として、複数種類のオブジェクトがある。ＣＰＵ８１は、上記カーブ値Ｃを、左拳オブジェクトＧ１の種類に応じて異なる値となるように算出してもよい。つまり、ＣＰＵ８１は、左拳オブジェクトＧ１の種類に応じて異なる算出方法で（例えば、種類に応じて異なる計算式を用いて）カーブ値Ｃを算出してもよい。これによれば、左拳オブジェクトＧ１の種類に応じて曲がり具合が異なるので、ユーザの操作対象のバリエーションを増加させることができ、ゲームの興趣性を向上することができる。
【０２３９】
また、拳オブジェクトには、重さを示すパラメータが拳オブジェクトの種類毎に設定されてもよい。このとき、あるプレイヤオブジェクトと他のプレイヤオブジェクトとが共にパンチ動作を行った結果、当該あるプレイヤオブジェクトの拳オブジェクトと、当該他のプレイヤオブジェクトの拳オブジェクトとが接触した場合、接触後における拳オブジェクトの挙動は、拳オブジェクトの種類に基づいて判断されてもよい。具体的には、上記の場合、接触後における拳オブジェクトの挙動は、拳オブジェクトの重さに基づいて（より具体的には、衝突した２つの拳オブジェクトの各重さの関係に基づいて）決定されてもよい。例えば、上記の場合、２つの拳オブジェクトのうちで重い方の拳オブジェクトは、軽い方のオブジェクトを吹き飛ばして移動を継続するように制御されてもよい。また、２つの拳オブジェクトのうちで軽い方の拳オブジェクトは、地面に落とされる（つまり、パンチ操作に応じて行われる移動が中止される）ように制御されてもよい。また、２つの拳オブジェクトの重さが同じである場合、２つの拳オブジェクトの両方が、地面に落とされるように制御されてもよい。
【０２４０】
次に、ＣＰＵ８１は、左コントローラ３を振動させるための往路振動データを作成して（ステップＳ４５）、ステップＳ４６に処理を進める。例えば、ＣＰＵ８１は、左拳オブジェクトＧ１の種類に応じて左拳オブジェクトＧ１が往路を移動する際の往路振動波形を生成し、往路振動波形に基づいて左コントローラ３を振動させるための往路振動データを生成して、左コントローラ振動データＤｏを更新する。なお、ＣＰＵ８１は、左拳オブジェクトＧ１の移動速度や移動方向（カーブ値Ｃ）に応じて上記往路振動波形を調整してもよいし、当該移動速度や移動方向とは関わらずに上記往路移動波形を生成してもよい。また、ＣＰＵ８１は、左拳オブジェクトＧ１以外の仮想空間の状況に応じた振動を、上記振動波形に加えてもかまわない。例えば、第１プレイヤオブジェクトＰ１の動作や第１プレイヤオブジェクトＰ１に与えられた衝撃に応じた振動、ゲームフィールドの状況に応じた振動、ＢＧＭや効果音に応じた振動等を、上記往路振動波形に加えてもかまわない。また、ＣＰＵ８１は、アクションフラグデータＤｊが示すアクションフラグがオンに設定されている場合、「両手パンチアクション」用の往路振動データ（アクション往路振動データ）を生成して、左コントローラ振動データＤｏを更新してもよい。
【０２４１】
一方、図３２に示すように、一時変数Ｓが所定数未満である場合、ＣＰＵ８１は、重力加速度方向周りの左コントローラ３の回転速度Ｖを算出し（ステップＳ５１）、次のステップに処理を進める。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３に作用している重力加速度の方向を取得する。また、ＣＰＵ８１は、角速度データＤｃを参照して左コントローラ３に生じているＸＹＺ軸周りの角速度を取得する。そして、ＣＰＵ８１は、ＸＹＺ各軸周り角速度および重力加速度の方向を用いて重力加速度方向周りの左コントローラ３の角速度を算出し、当該角速度に応じた左コントローラ３の回転速度Ｖを算出して回転速度データＤｇを更新する。
【０２４２】
次に、ＣＰＵ８１は、左コントローラ３に生じている角速度から上記回転速度Ｖに相当する角速度を除いた成分の大きさより、回転速度Ｖの大きさの方が大きいか否かを判定する（ステップＳ５２）。そして、ＣＰＵ８１は、回転速度Ｖの大きさの方が大きい場合、ステップＳ５３に処理を進める。一方、ＣＰＵ８１は、回転速度Ｖの大きさの方が小さいまたは同じである場合、ステップＳ５６に処理を進める。ここで、上記ステップＳ５２の処理は、左コントローラ３に生じている角速度がどの方向周りを主体として生じているのか判定するためのものであり、実空間における左コントローラ３の動きが重力加速度周りに回転するヨー方向の動きが主体なのか、他の方向周りに回転する動きが主体なのかを判定している。
【０２４３】
ステップＳ５３において、ＣＰＵ８１は、重力加速度方向周りの左コントローラ３の角速度に基づいて、左コントローラ３が重力加速度の方向を中心に左ヨー方向に回転しているか否かを判定する。そして、ＣＰＵ８１は、左コントローラ３が重力加速度の方向を中心に左ヨー方向に回転している場合、左コントローラ３の回転速度Ｖを１．１５倍して回転速度データＤｇを更新し（ステップＳ５５）、ステップＳ５７に処理を進める。一方、ＣＰＵ８１は、左コントローラ３が重力加速度の方向を中心に左ヨー方向に回転していない場合、そのままステップＳ５７に処理を進める。一般的に、人間の手首が曲がる方向を考えた場合、ユーザが左手で把持する左コントローラ３を右ヨー方向に回転させる操作と比べて左ヨー方向に回転させる操作がやりにくくなる。上記ステップＳ５３およびステップＳ５５の処理は、このような操作の難易を考慮したものであり、やりにくい方向にコントローラを動かす操作であっても、他の操作と同様にオブジェクトを制御することができる。
【０２４４】
なお、当該サブルーチンを右拳オブジェクトＧ２の軌道変化処理を行うために用いる場合、上記ステップＳ５３では右コントローラ４が重力加速度の方向を中心に右ヨー方向に回転しているか否かを判定する。そして、右コントローラ４が重力加速度の方向を中心に右ヨー方向に回転している場合、右コントローラ４の回転速度Ｖを１．１５倍して回転速度データＤｇを更新することになる。
【０２４５】
一方、回転速度Ｖに相当する角速度の方が小さいまたは同じである場合、ＣＰＵ８１は、左コントローラ３のＸ軸方向周りの角速度に応じて回転速度Ｖを算出し（ステップＳ５６）、ステップＳ５７に処理を進める。例えば、ＣＰＵ８１は、角速度データＤｃを参照して左コントローラ３のＸ軸方向周りの角速度を取得し、当該角速度に応じた左コントローラ３の回転速度Ｖを算出して回転速度データＤｇを更新する。
【０２４６】
ステップＳ５７において、ＣＰＵ８１は、左拳オブジェクトＧ１のカーブ値Ｃに左コントローラ３の回転速度Ｖに関する値を加算して新たなカーブ値Ｃを算出して、次のステップに処理を進める。例えば、ＣＰＵ８１は、カーブ値データＤｆおよび回転速度データＤｇを参照して左拳オブジェクトＧ１のカーブ値Ｃおよび左コントローラ３の回転速度Ｖを取得し、カーブ値Ｃに回転速度Ｖに応じた値を加算することによって得られる左拳オブジェクトＧ１の新たなカーブ値Ｃを用いて、カーブ値データＤｆを更新する。
【０２４７】
次に、ＣＰＵ８１は、左拳オブジェクトＧ１のカーブ値Ｃが所定の上限値Ｃｍａｘ（例えば、Ｃｍａｘ＝１）を超えているか否かを判定する（ステップＳ５８）。そして、ＣＰＵ８１は、左拳オブジェクトＧ１のカーブ値Ｃが上限値Ｃｍａｘを超えている場合、左拳オブジェクトＧ１のカーブ値Ｃとして上限値Ｃｍａｘを設定してカーブ値データＤｆを更新し（ステップＳ５９）、ステップＳ６０に処理を進める。一方、ＣＰＵ８１は、左拳オブジェクトＧ１のカーブ値Ｃが上限値Ｃｍａｘを超えていない場合、そのままステップＳ６０に処理を進める。
【０２４８】
ステップＳ６０において、ＣＰＵ８１は、左拳オブジェクトＧ１のカーブ値Ｃが所定の下限値Ｃｍｉｎ（例えば、Ｃｍｉｎ＝−１）より小さいか否かを判定する。そして、ＣＰＵ８１は、左拳オブジェクトＧ１のカーブ値Ｃが下限値Ｃｍｉｎより小さい場合、左拳オブジェクトＧ１のカーブ値Ｃとして下限値Ｃｍｉｎを設定してカーブ値データＤｆを更新し（ステップＳ６１）、ステップＳ６２に処理を進める。一方、ＣＰＵ８１は、左拳オブジェクトＧ１のカーブ値Ｃが下限値Ｃｍｉｎ以上である場合、そのままステップＳ６２に処理を進める。
【０２４９】
ステップＳ６２において、ＣＰＵ８１は、回転速度Ｖに基づいて左コントローラ３を振動させるための往路振動データを変更して、ステップＳ４６（図３１参照）に処理を進める。例えば、ＣＰＵ８１は、左コントローラ３に生じている角速度に基づいて算出された回転速度Ｖに応じて、振動の振幅および／または周波数を変化させる変化パラメータを算出し、当該変化パラメータを用いて往路振動データを変化させて、左コントローラ振動データＤｏを更新する。
【０２５０】
例えば、図３５に示すように、回転速度Ｖに応じて往路振動波形の振幅を変化させる場合、様々な変化パターンが考えられる。例えば、変化パターン１は、回転速度Ｖの０からＶａへの変化に対して振幅変化率が１．０からＭＡＸ１（ＭＡＸ１＞１．０）まで線形変換され、回転速度Ｖａ以上では振幅変化率ＭＡＸ１で一定となる振幅の変化パターンである。変化パターン２は、回転速度Ｖの０からＶａへの変化に対して振幅変化率が１．０からＭＡＸ２（ＭＡＸ１＞ＭＡＸ２＞１．０）まで線形変換され、回転速度Ｖａ以上では振幅変化率ＭＡＸ２で一定となる振幅の変化パターンである。変化パターン３は、回転速度Ｖの０からＶａへの一定範囲ごとに振幅変化率が段階的に１．０からＭＡＸ３（ＭＡＸ３＞１．０）まで高くなるテーブルに基づいて変換され、回転速度Ｖａ以上では振幅変化率ＭＡＸ３で一定となる振幅の変化パターンである。
【０２５１】
上記変化パターンを用いて振幅変化率１．０が算出された場合、往路振動波形の振幅を変化させない、すなわち上記ステップＳ４５で作成された往路振動データがそのまま左コントローラ振動データＤｏに設定されることになる。また、上述から明らかなように、回転速度Ｖは、重力加速度方向周りの左コントローラ３の角速度（ヨー方向の角速度）または左コントローラ３のＸ軸方向周りの角速度（ロール方向の角速度）に応じて算出されており、左コントローラ３の動きや姿勢の変化に基づくパラメータである。つまり、ヨー方向またはロール方向への左コントローラ３の動きや姿勢の変化がない場合、回転速度Ｖも０となるため振幅変化率も１．０となる。すなわち、左コントローラ３の動きや姿勢の変化によって回転速度Ｖが生じたことによって往路振動波形の振幅が変化したとしても、当該動きや姿勢の変化が止まることによって振幅変化率が１．０となって元の往路振動波形に戻ることになる。したがって、上記ステップＳ６２における往路振動データの変更は、上記ステップＳ４５で生成された往路振動波形を一時的に変化させるものであって、左コントローラ３の動きや姿勢の変化が止まることにより元の往路振動波形に戻るものである。
【０２５２】
上記ステップＳ６２においては、回転速度Ｖに基づいて様々な変化パターンを用いて往路振動データを変化させてもよく、左拳オブジェクトＧ１の種類に応じて選択される変化パターンを設定してもよい。また、図３５では、回転速度Ｖに対応して変化させる振幅変化率を例示しているが、同じ変化パターンを用いて振動の周波数を変化させてもよいし、振幅とは異なる変化パターンで振動の周波数を変化させてもよい。
【０２５３】
また、上記ステップＳ６２においては、回転速度Ｖに基づいて往路振動データを変化させているが、他のパラメータに基づいて往路振動データを変化させてもよい。例えば、カーブ値Ｃの変化量に基づいて往路振動データを変化させてもよいし、カーブ値Ｃそのものの値に基づいて往路振動データを変化させてもよい。前者の場合、上記ステップＳ５８〜ステップＳ６１の処理を経たカーブ値Ｃの変化量、すなわち下限値Ｃｍｉｎおよび上限値Ｃｍａｘに制限されたカーブ値Ｃの変化量に基づいて、往路振動データを変化させることが考えられる。
【０２５４】
上記のように、本実施形態においては、ＣＰＵ８１は、パンチ操作中であると判定される場合（すなわち、ステップＳ４２の判定結果が肯定となる場合）には、左コントローラ３の傾きに基づいてカーブ値Ｃを算出し（ステップＳ４４）、パンチ操作が終わったと判定される場合（すなわち、ステップＳ４２の判定結果が否定となる場合）には、左コントローラ３の回転速度に基づいてカーブ値Ｃを算出する（ステップＳ５７）。ここで、上記２通りの場合においてカーブ値Ｃを算出する方法は任意である。例えば、他の実施形態においては、パンチ操作中であると判定される場合において、左コントローラ３の回転速度に基づいてカーブ値Ｃが算出されてもよい。また、パンチ操作が終わったと判定される場合において、左コントローラ３の傾きに基づいてカーブ値Ｃが算出されてもよい。
【０２５５】
図３１に戻り、ステップＳ４６において、ＣＰＵ８１は、左拳オブジェクトＧ１のカーブ値Ｃを用いて左拳オブジェクトＧ１の移動方向を算出し、次のステップに処理を進める。例えば、ＣＰＵ８１は、カーブ値データＤｆを参照して左拳オブジェクトＧ１のカーブ値Ｃを取得し、プレイヤオブジェクトデータＤｍを参照して左拳オブジェクトＧ１の移動方向を取得する。そして、ＣＰＵ８１は、取得した左拳オブジェクトＧ１のカーブ値Ｃが正の値の場合、取得した左拳オブジェクトＧ１の移動方向をカーブ値の大きさに応じて右に変更し、当該変更後の左拳オブジェクトＧ１の移動方向を用いてプレイヤオブジェクトデータＤｍを更新する。また、ＣＰＵ８１は、取得した左拳オブジェクトＧ１のカーブ値Ｃが負の値の場合、取得した左拳オブジェクトＧ１の移動方向をカーブ値の大きさに応じて左に変更し、当該変更後の左拳オブジェクトＧ１の移動方向を用いてプレイヤオブジェクトデータＤｍを更新する。
【０２５６】
なお、左拳オブジェクトＧ１が移動開始位置に戻る仮想空間内の復路を移動している場合、左拳オブジェクトＧ１のカーブ値Ｃによって移動方向を変更することなく、現在の左拳オブジェクトＧ１の位置から移動開始位置に戻る方向に移動方向を固定して設定してもよい。左拳オブジェクトＧ１が復路を移動しているか否かについては、後述する戻りフラグがオンに設定されているか否かによって判別することができる。
【０２５７】
次に、ＣＰＵ８１は、左拳オブジェクトＧ１の移動方向に基づいて、左拳オブジェクトＧ１を移動させ（ステップＳ４７）、次のステップに処理を進める。例えば、ＣＰＵ８１は、プレイヤオブジェクトデータＤｍを参照して左拳オブジェクトＧ１の位置および移動方向を取得し、当該左拳オブジェクトＧ１の位置から当該移動方向に基づいて左拳オブジェクトＧ１を移動させ、当該移動後の左拳オブジェクトＧ１の位置を用いてプレイヤオブジェクトデータＤｍを更新する。
【０２５８】
なお、上記ステップＳ４７において左拳オブジェクトＧ１を移動させる移動速度（移動量）は、一例として、左拳オブジェクトＧ１の移動速度については、左拳オブジェクトＧ１の種類に応じた速度に応じて設定されてもよい。他の例として、左拳オブジェクトＧ１の移動速度については、左コントローラ３がパンチを繰り出すように振られたと判定された際の加速度の大きさに応じて設定されてもよい。この場合、振りフラグがオンされた時点のＸＺ加速度の大きさに基づいて左拳オブジェクトＧ１が移動開始する初速度を設定し、その後の移動速度を仮想空間の状況、移動方向の変化、所定のアルゴリズム、左拳オブジェクトＧ１に設定された移動特性等に基づいて適宜変化させてもよい。
【０２５９】
次に、ＣＰＵ８１は、アクションフラグデータＤｊを参照して、アクションフラグがオンに設定されているか否かを判定する（ステップＳ４８）。そして、ＣＰＵ８１は、アクションフラグがオンに設定されている場合、ステップＳ４９に処理を進める。一方、ＣＰＵ８１は、アクションフラグがオフに設定されている場合、ステップＳ７０（図３３参照）に処理を進める。
【０２６０】
ステップＳ４９において、ＣＰＵ８１は、左拳オブジェクトＧ１と右拳オブジェクトＧ２との間に衝突領域Ａを設定し、ステップＳ７０（図３３参照）に処理を進める。例えば、ＣＰＵ８１は、プレイヤオブジェクトデータＤｍを参照して左拳オブジェクトＧ１の位置および右拳オブジェクトＧ２の位置を取得し、当該位置に基づいて衝突領域Ａの仮想空間における位置、形状、および範囲を設定して、衝突領域データＤｎを更新する。このようにアクションフラグがオンに設定された状態で左拳オブジェクトＧ１（および右拳オブジェクトＧ２）の移動方向および移動後の位置が設定される場合は、当該左拳オブジェクトＧ１と右拳オブジェクトＧ２との間に衝突領域Ａが設定される。
【０２６１】
図３３に進み、ＣＰＵ８１は、衝突判定処理を行い（ステップＳ７０）、次のステップに処理を進める。例えば、ＣＰＵ８１は、各プレイヤオブジェクトデータ、および、衝突領域データＤｎを参照して、左拳オブジェクトＧ１および衝突領域Ａと、仮想空間における他のオブジェクト（例えば、敵オブジェクト）とにおける、仮想空間における衝突を判定する。
【０２６２】
次に、ＣＰＵ８１は、左拳オブジェクトＧ１および衝突領域Ａの少なくとも１つと他のオブジェクトとが、仮想空間において衝突したか否かを判定する（ステップＳ７１）。そして、ＣＰＵ８１は、左拳オブジェクトＧ１および衝突領域Ａの少なくとも１つと他のオブジェクトとが衝突した場合、ステップＳ７２に処理を進める。一方、ＣＰＵ８１は、左拳オブジェクトＧ１および衝突領域Ａの何れも他のオブジェクトと衝突していない場合、ステップＳ７５に処理を進める。
【０２６３】
ステップＳ７２において、ＣＰＵ８１は、他のオブジェクトに対する衝突アクション処理を行い、次のステップに処理を進める。例えば、ＣＰＵ８１は、左拳オブジェクトＧ１と敵オブジェクトとが衝突した場合、当該衝突に応じたダメージを敵オブジェクトに与えるとともに、当該ダメージに応じた所定のアクション（すなわち、上記飛ばされ動作）を設定する。また、ＣＰＵ８１は、衝突領域Ａと敵オブジェクトとが衝突した場合、当該衝突に応じたダメージを敵オブジェクトに与えるとともに、左拳オブジェクトＧ１および右拳オブジェクトＧ２が組となった「両手パンチアクション」を設定する。
【０２６４】
なお、本実施例では、左拳オブジェクトＧ１が敵オブジェクトに向かって移動している期間だけでなく、左拳オブジェクトＧ１が第１プレイヤオブジェクトＰ１に向かって戻る期間においても、当該左拳オブジェクトＧ１が他のオブジェクトと衝突した場合に衝突アクション処理が行われる。しかしながら、左拳オブジェクトＧ１が敵オブジェクトに向かって移動している期間に限って他のオブジェクトに対する衝突アクション処理を行う場合は、左拳オブジェクトＧ１が第１プレイヤオブジェクトＰ１に向かって戻る期間（戻りフラグがオンとなった状態）においては、上記ステップＳ７１において左拳オブジェクトＧ１と他のオブジェクトとが衝突していないと常に判定して当該衝突アクション処理を行わなくてもかまわない。
【０２６５】
次に、ＣＰＵ８１は、衝突振動を追加して（ステップＳ７３）、次のステップに処理を進める。例えば、ＣＰＵ８１は、左拳オブジェクトＧ１と他のオブジェクトとが衝突した状況に応じた衝突振動波形を生成する。そして、ＣＰＵ８１は、左コントローラ振動データＤｏが示す振動波形に上記衝突振動波形を合成して新たな振動波形を生成し、当該振動波形を用いて左コントローラ振動データＤｏを更新する。
【０２６６】
次に、ＣＰＵ８１は、アクションフラグをオフに設定してアクションフラグデータＤｊを更新するとともに、衝突領域データＤｎを衝突領域なし（例えば、Ｎｕｌｌ）に設定して（ステップＳ７４）、ステップＳ７５に処理を進める。このように、左拳オブジェクトＧ１、右拳オブジェクトＧ２、または衝突領域Ａのいずれかが他のオブジェクトと衝突するアクションが設定された場合、アクションフラグがオフに設定されるとともに、衝突領域に関する設定データが消去される。
【０２６７】
ステップＳ７５において、ＣＰＵ８１は、戻りフラグデータＤｋを参照して左拳オブジェクトＧ１の処理に対して設定されている戻りフラグがオンに設定されているか否かを判定する。そして、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている戻りフラグがオフに設定されている場合、ステップＳ７６に処理を進める。一方、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている戻りフラグがオンに設定されている場合、ステップＳ８０に処理を進める。
【０２６８】
ステップＳ７６において、ＣＰＵ８１は、左拳オブジェクトＧ１が移動開始位置に戻る仮想空間内の復路を移動する動作を行うか否かを判定する。例えば、ＣＰＵ８１は、左拳オブジェクトＧ１が移動開始位置から所定距離離れた位置に到達した場合、左拳オブジェクトＧ１が敵オブジェクトの位置を通過した後に所定時間経過した場合、左拳オブジェクトＧ１または衝突領域Ａが他のオブジェクトに衝突した後に所定時間経過した場合等の条件を満たす場合、左拳オブジェクトＧ１が復路を移動する動作を行うと判定する。そして、ＣＰＵ８１は、左拳オブジェクトＧ１が復路を移動する動作を行う場合、ステップＳ７７に処理を進める。一方、ＣＰＵ８１は、左拳オブジェクトＧ１が復路を移動する動作を行わない場合、ステップＳ８４に処理を進める。
【０２６９】
ステップＳ７７において、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている戻りフラグをオンに設定して戻りフラグデータＤｋを更新し、次のステップに処理を進める。このように、左拳オブジェクトＧ１が復路を移動する動作が設定された場合、左拳オブジェクトＧ１の処理に対して設定されている戻りフラグがオンに設定される。
【０２７０】
次に、ＣＰＵ８１は、左拳オブジェクトＧ１の移動方向として、移動開始位置に向かう方向を設定して（ステップＳ７８）、次のステップに処理を進める。例えば、ＣＰＵ８１は、プレイヤオブジェクトデータＤｍを参照して左拳オブジェクトＧ１の現在位置から移動開始位置へ向かう方向を左拳オブジェクトＧ１の移動方向として算出し、当該移動方向を用いてプレイヤオブジェクトデータＤｍを更新する。なお、上記ステップＳ７８において設定する左拳オブジェクトＧ１の移動方向は、左拳オブジェクトＧ１が連結されているオブジェクト（例えば、第１プレイヤオブジェクトＰ１の伸びた腕オブジェクト）に沿った方向に設定してもよいし、左拳オブジェクトＧ１が移動開始位置から移動した際の軌道を逆に戻るように設定してもよい。
【０２７１】
次に、ＣＰＵ８１は、左コントローラ３を振動させるための復路振動データを作成して（ステップＳ７９）、ステップＳ８４に処理を進める。例えば、ＣＰＵ８１は、左拳オブジェクトＧ１の種類に応じて左拳オブジェクトＧ１が復路を移動する際の復路振動波形を生成し、復路振動波形に基づいて左コントローラ３を振動させるための復路振動データを生成して、左コントローラ振動データＤｏを更新する。なお、ＣＰＵ８１は、左拳オブジェクトＧ１の移動速度や移動方向に応じて上記復路振動波形を調整してもよいし、当該移動速度や移動方向とは関わらずに上記復路移動波形を生成してもよい。また、ＣＰＵ８１は、左拳オブジェクトＧ１以外の仮想空間の状況に応じた振動を、上記振動波形に加えてもかまわない。例えば、第１プレイヤオブジェクトＰ１の動作や第１プレイヤオブジェクトＰ１に与えられた衝撃に応じた振動、ゲームフィールドの状況に応じた振動、ＢＧＭや効果音に応じた振動等を、上記復路振動波形に加えてもかまわない。また、ＣＰＵ８１は、左拳オブジェクトＧ１が復路を移動する際に左コントローラ３に振動を与えない場合は、振幅０を示す振動データまたは振動させないことを示す振動データを左コントローラ振動データＤｏに設定してもよい。
【０２７２】
一方、戻りフラグがオンに設定されている場合、ＣＰＵ８１は、左拳オブジェクトＧ１が移動開始位置まで戻ったか否かを判定する（ステップＳ８０）。例えば、ＣＰＵ８１は、プレイヤオブジェクトデータＤｍを参照して、左拳オブジェクトＧ１の位置が移動開始位置に設定されている場合、上記ステップＳ８０において肯定判定する。そして、ＣＰＵ８１は、左拳オブジェクトＧ１が移動開始位置まで戻った場合、ステップＳ８１に処理を進める。一方、ＣＰＵ８１は、左拳オブジェクトＧ１が移動開始位置まで戻っていない場合、ステップＳ８４に処理を進める。
【０２７３】
ステップＳ８１において、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている移動開始可能フラグをオンに設定して移動開始可能フラグデータＤｌを更新し、次のステップに処理を進める。このように、左拳オブジェクトＧ１が仮想空間内を再度移動可能な状態となった場合、第１移動開始可能状態となるため左拳オブジェクトＧ１の移動開始可能フラグがオンに設定される。なお、上記ステップＳ８１では、左拳オブジェクトＧ１が移動開始位置まで戻った場合に即時に左拳オブジェクトＧ１の移動開始可能フラグをオンに設定して第１移動開始可能状態としているが、他のタイミングで第１移動開始可能状態を開始してもよい。例えば、左拳オブジェクトＧ１が移動開始位置まで戻ってから所定時間（例えば、８フレーム数）経過したタイミングで第１移動開始可能状態が開始されてもよい。
【０２７４】
次に、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている移動フラグおよび戻りフラグをオフに設定し、アクションフラグをオフに設定し、衝突領域や左拳オブジェクトＧ１の移動方向に関するデータをデフォルト値に設定して（ステップＳ８２）、次のステップに処理を進める。例えば、ＣＰＵ８１は、左拳オブジェクトＧ１の処理に対して設定されている移動フラグおよび戻りフラグをそれぞれオフに設定して、移動フラグデータＤｉおよび戻りフラグデータＤｋをそれぞれ更新する。また、ＣＰＵ８１は、アクションフラグをオフに設定して、アクションフラグデータＤｊを更新する。また、ＣＰＵ８１は、衝突領域に関する設定データを衝突領域なし（例えば、Ｎｕｌｌ）に設定して、衝突領域データＤｎを更新する。また、ＣＰＵ８１は、左拳オブジェクトＧ１の移動方向をデフォルト値（例えば、正面方向）に設定して、プレイヤオブジェクトデータＤｍを更新する。
【０２７５】
次に、ＣＰＵ８１は、左コントローラ３の振動を停止させる処理を行い（ステップＳ８３）、ステップＳ８４に処理を進める。例えば、ＣＰＵ８１は、左拳オブジェクトＧ１の種類に応じて左拳オブジェクトＧ１が移動開始位置に戻った際に生じる振動および当該振動の後に振動を停止させる振動波形を生成し、当該振動波形に基づいて左コントローラ３を振動させるための振動データを生成して、左コントローラ振動データＤｏを更新する。なお、ＣＰＵ８１は、左拳オブジェクトＧ１の移動が停止した後も、左拳オブジェクトＧ１の移動以外の仮想空間の状況に応じた振動を与える場合は、当該振動（第１プレイヤオブジェクトＰ１の動作や第１プレイヤオブジェクトＰ１に与えられた衝撃に応じた振動、ゲームフィールドの状況に応じた振動、ＢＧＭや効果音に応じた振動等）を加えて、引き続き振動させてもかまわない。
【０２７６】
ステップＳ８４において、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１が他のプレイヤオブジェクトによって投げられたか否かを判定する。詳細は後述するが（ステップＳ１１７）、本ゲーム処理においては、他のプレイヤオブジェクトについても上記ステップＳ２〜Ｓ９の一連の処理が実行される。そのため、他のプレイヤオブジェクトによる衝突領域Ａが第１プレイヤオブジェクトＰ１に接触した場合、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１が他のプレイヤオブジェクトによって投げられたと判定する。ステップＳ８４の判定結果が肯定である場合、ステップＳ８５の処理が実行される。一方、ステップＳ８５の判定結果が否定である場合、ＣＰＵ８１は、当該サブルーチンによる処理を終了する。
【０２７７】
ステップＳ８５において、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１による動作中のパンチ動作（ここでは、左拳オブジェクトＧ１を移動させる動作）の中止を設定する。このように、本実施形態においては、第１プレイヤオブジェクトＰ１がパンチ動作中に他のプレイヤオブジェクトによって投げられる場合、当該パンチ動作は動作中であってもキャンセルされる。上記ステップＳ８５においてパンチ動作の中止が設定された場合、後述するステップＳ１１３またはＳ１１４において、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１の左拳オブジェクトＧ１が元の位置（換言すれば、移動開始前の位置）に戻る動作を行わせる。上記ステップＳ８５の後、ＣＰＵ８１は、当該サブルーチンによる処理を終了する。
【０２７８】
なお、他の実施形態においては、プレイヤオブジェクトがパンチ動作中に他のプレイヤオブジェクト（例えば、敵オブジェクト）のパンチを受けた場合についても上記ステップＳ８４およびＳ８５の場合と同様、プレイヤオブジェクトによるパンチ動作がキャンセルされてもよい。すなわち、ステップＳ８４において、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１が他のプレイヤオブジェクトによって投げられた、または、パンチを受けたか否かを判定するようにしてもよい。
【０２７９】
また、プレイヤオブジェクトによるパンチ動作は、パンチ動作の実行に関する条件が満たされた場合には、禁止されてもよい。例えば、拳オブジェクトには、耐久値を示すパラメータが設定され、ＣＰＵ８１は、拳オブジェクトが他のオブジェクトに当たったことに応じて耐久値を減少させてもよい。このとき、ＣＰＵ８１は、耐久値が０になったことを上記条件として、プレイヤオブジェクトによるパンチ動作を、所定時間の間、禁止する（すなわち、プレイヤによってパンチ操作が行われても、プレイヤオブジェクトにパンチ動作を行わせない）ようにしてもよい。これによれば、ゲームの戦略性を増すことができ、ゲームの興趣性を向上することができる。
【０２８０】
図２８に戻り、上記ステップＳ６における第１オブジェクト軌道変化処理の後、ＣＰＵ８１は、第２オブジェクト軌道変化処理を行い（ステップＳ７）、次のステップに処理を進める。なお、図３１〜図３３を用いて説明したオブジェクト軌道変化処理は、上記ステップＳ７の第２オブジェクト軌道変化処理においても用いられるサブルーチンである。すなわち、上記第１オブジェクト軌道変化処理において処理対象としていた左コントローラ３および左拳オブジェクトＧ１を右コントローラ４および右拳オブジェクトＧ２にすることによって、同じサブルーチンを用いることによって同様の処理が可能となる。したがって、上記ステップＳ７の第２オブジェクト軌道変化処理の詳細な説明については省略する。
【０２８１】
次に、ＣＰＵ８１は、プレイヤオブジェクト移動処理を行い（ステップＳ８）、次のステップに処理を進める。以下、図３４を参照して、上記ステップＳ８において行うプレイヤオブジェクト移動処理について説明する。
【０２８２】
図３４において、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるピッチ方向に対する傾きが同じ方向であるか否かを判定する（ステップＳ９１）。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３のＸ軸正方向と右コントローラ４のＸ軸正方向とが実空間の水平方向に対してともに仰角方向にある、またはともに俯角方向にある場合、上記ステップＳ９１において肯定判定する。そして、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるピッチ方向に対する傾きが同じ方向である場合、ステップＳ９２に処理を進める。一方、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるピッチ方向に対する傾きが同じ方向にない場合、ステップＳ９３に処理を進める。
【０２８３】
ステップＳ９２において、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるピッチ方向に対する傾き角度の平均値Ｐを算出し、ステップＳ９４に処理を進める。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して、左コントローラ３のＸ軸正方向と実空間の水平方向との差角と右コントローラ４のＸ軸正方向と実空間の水平方向との差角とを算出し、当該差角の平均値Ｐを算出する。例えば、上記差角は、Ｘ軸正方向が俯角方向である場合に正の値となり、Ｘ軸正方向が仰角方向である場合に負の値となるように算出する。
【０２８４】
一方、上記ステップＳ９１において左コントローラ３および右コントローラ４の実空間におけるピッチ方向に対する傾きが同じ方向にないと判定された場合、ＣＰＵ８１は、平均値Ｐを０に設定し（ステップＳ９３）、ステップＳ９４に処理を進める。
【０２８５】
ステップＳ９４において、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるロール方向に対する傾きが同じ方向であるか否かを判定する。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して左コントローラ３のＹ軸正方向と右コントローラ４のＹ軸正方向とが実空間の水平方向に対してともに仰角方向にある、またはともに俯角方向にある場合、上記ステップＳ９４において肯定判定する。そして、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるロール方向に対する傾きが同じ方向である場合、ステップＳ９５に処理を進める。一方、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるロール方向に対する傾きが同じ方向にない場合、ステップＳ９６に処理を進める。
【０２８６】
ステップＳ９５において、ＣＰＵ８１は、左コントローラ３および右コントローラ４の実空間におけるロール方向に対する傾き角度の平均値Ｒを算出し、ステップＳ９７に処理を進める。例えば、ＣＰＵ８１は、姿勢データＤｂを参照して、左コントローラ３のＹ軸正方向と実空間の水平方向との差角と右コントローラ４のＹ軸正方向と実空間の水平方向との差角とを算出し、当該差角の平均値Ｒを算出する。例えば、上記差角は、Ｙ軸正方向が俯角方向である場合に正の値となり、Ｙ軸正方向が仰角方向である場合に負の値となるように算出する。
【０２８７】
一方、上記ステップＳ９４において左コントローラ３および右コントローラ４の実空間におけるロール方向に対する傾きが同じ方向にないと判定された場合、ＣＰＵ８１は、平均値Ｒを０に設定し（ステップＳ９６）、ステップＳ９７に処理を進める。
【０２８８】
ステップＳ９７において、ＣＰＵ８１は、平均値Ｐに応じた前後移動量と平均値Ｒに応じた左右移動量とを合成して移動量Ｍを算出し、次のステップに処理を進める。例えば、ＣＰＵ８１は、平均値Ｐが正の値である場合に仮想空間における前方へ移動し、平均値Ｐが負の値である場合に仮想空間における後方へ移動する前後移動量を、当該平均値Ｐの値に応じて算出する。また、ＣＰＵ８１は、平均値Ｒが正の値である場合に仮想空間における右へ移動し、平均値Ｒが負の値である場合に仮想空間における左へ移動する左右移動量を、当該平均値Ｒの値に応じて算出する。そして、上記前後移動量および上記左右移動量を合成することによって、仮想空間に対する移動量Ｍを算出する。
【０２８９】
次に、ＣＰＵ８１は、移動フラグの設定状況に応じて移動量Ｍをスケーリングし（ステップＳ９８）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ８１は、移動フラグデータＤｉを参照して左拳オブジェクトＧ１および右拳オブジェクトＧ２の処理に対してそれぞれ設定されている移動フラグが両方オフに設定されている場合、移動量Ｍはそのままの値とする。また、ＣＰＵ８１は左拳オブジェクトＧ１および右拳オブジェクトＧ２の処理に対してそれぞれ設定されている移動フラグの一方のみオンに設定されている場合、移動量Ｍを所定倍率によって縮小（例えば、０．９倍して縮小）する。また、ＣＰＵ８１は左拳オブジェクトＧ１および右拳オブジェクトＧ２の処理に対してそれぞれ設定されている移動フラグの両方がオンに設定されている場合、移動量Ｍを０に設定する。後述するステップＳ１１３においては、上記ステップＳ９８の処理によって設定された移動量に基づいて、第１プレイヤオブジェクトＰ１の動作が制御される。
【０２９０】
図２８に戻り、上記ステップＳ８におけるプレイヤオブジェクト移動処理の後、ＣＰＵ８１は、動作制御処理を行う（ステップＳ９）。動作制御処理は、各プレイヤオブジェクトＰ１〜Ｐ４の動作を制御するための処理である。以下、図３６および図３７を参照して、動作制御処理について説明する。
【０２９１】
図３６に示すステップＳ１０１において、ＣＰＵ８１は、連結オブジェクトを設定する。すなわち、ＣＰＵ８１は、第１連結オブジェクトＣ１の位置、方向、および、長さを算出する。第１連結オブジェクトＣ１は、上記“［３−１．連結オブジェクトの概要］”で説明した方法に従って設定される。具体的には、第１連結オブジェクトＣ１は、ＤＲＡＭ８５に記憶されるプレイヤオブジェクトデータが示す、第１プレイヤオブジェクトＰ１および第２プレイヤオブジェクトＰ２の位置に基づいて設定される。上述したように、連結オブジェクトについては他のオブジェクトとの当たり判定が行われないので、ＣＰＵ８１は、連結オブジェクトが他のオブジェクトと接触するか否かにかかわらず、当該連結オブジェクトによって連結されるプレイヤオブジェクトのみに基づいて連結オブジェクトを設定する。ＣＰＵ８１は、算出した第１連結オブジェクトＣ１の位置、方向、および、長さを示すデータを含むプレイヤオブジェクトデータＤｍをＤＲＡＭ８５に記憶する。なお、第２連結オブジェクトＣ２については、プレイヤオブジェクトデータが示す第３プレイヤオブジェクトＰ３および第４プレイヤオブジェクトＰ４の位置に基づいて、第１連結オブジェクトＣ１と同様に位置、方向、および、長さが算出される。ステップＳ１０１の次に、ステップＳ１０２の処理が実行される。
【０２９２】
ステップＳ１０２において、ＣＰＵ８１は、連結オブジェクトの表示態様を決定する。すなわち、ＣＰＵ８１は、上記“（連結オブジェクトの表示態様）”で述べた方法に従って、ステップＳ１０１において算出された連結オブジェクトの長さに基づいて、連結オブジェクトの太さを決定する。ステップＳ１０２の次に、ステップＳ１０３の処理が実行される。
【０２９３】
ステップＳ１０３において、ＣＰＵ８１は、第１連結オブジェクトＣ１によって第１プレイヤオブジェクトＰ１に加えられる張力を算出する。張力は、上記“［３−２．連結オブジェクトによる張力］”で述べた方法に従って算出される。具体的には、ＣＰＵ８１は、ＤＲＡＭ８５に記憶される連結オブジェクトデータＤｑが示す第１連結オブジェクトＣ１の方向および長さに基づいて、張力の向きおよび大きさを算出する。また、ＣＰＵ８１は、プレイヤオブジェクトデータＤｍに含まれる上記張力データを、算出された張力を示すように更新する。ステップＳ１０３の次に、ステップＳ１０４の処理が実行される。
【０２９４】
ステップＳ１０４において、ＣＰＵ８１は、上述の解除条件が満たされるか否かを判定する。ステップＳ１０４における判定は、上記“［３−３．連結オブジェクトの制約の解除］”で述べた方法に従って行われる。なお、上記飛ばされ動作および投げられ動作が行われたか否かは、後述するステップＳ１１７（具体的には、最後に実行されたステップＳ１１７の処理）の処理結果に基づいて判定することができる。また、上記投げ動作が行われたか否かは、上記ステップＳ７２の処理結果に基づいて判定することができる。ステップＳ１０４の判定結果が肯定である場合、ステップＳ１０５の処理が実行される。一方、ステップＳ１０４の判定結果が否定である場合、ステップＳ１０５の処理がスキップされて、ステップＳ１０６の処理が実行される。
【０２９５】
ステップＳ１０５において、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１に張力無効動作を開始させるように設定する。なお、本実施形態においては、プレイヤオブジェクトデータは、プレイヤオブジェクトが行っている動作（張力無効動作を含む）の内容を示す動作データを含む。ＣＰＵ８１は、第１プレイヤオブジェクトＰ１に動作を行わせることを設定した場合、当該動作に関する動作データを含むようにプレイヤオブジェクトデータＤｍを更新する。また、ステップＳ１０５において、ＣＰＵ８１は、張力無効フラグをオンに設定する。すなわち、ＣＰＵ８１は、張力無効フラグデータＤｒを、オンを示す内容に更新する。ステップＳ１０５の次に、ステップＳ１０６の処理が実行される。
【０２９６】
ステップＳ１０６において、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１の動作方向を補正する補正条件が満たされたか否かを判定する。すなわち、ＣＰＵ８１は、上記“（動作方向の補正）”で述べた方法に従って、補正条件が満たされたか否かを判定する。なお、ステップＳ１０６の判定処理に用いられる、第１および第２プレイヤオブジェクトＰ１およびＰ２の動作内容および動作方向の情報は、プレイヤオブジェクトデータを参照することによって得ることができる。ステップＳ１０６の判定結果が肯定である場合、ステップＳ１０７の処理が実行される。一方、ステップＳ１０６の判定結果が否定である場合、ステップＳ１０７の処理がスキップされて、ステップＳ１０８の処理が実行される。
【０２９７】
ステップＳ１０７において、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１の動作方向を補正する。すなわち、ＣＰＵ８１は、上記“（動作方向の補正）”で述べた方法に従って動作方向を補正し、補正後の動作方向を示すように、プレイヤオブジェクトデータＤｍを更新する。ステップＳ１０７の次に、ステップＳ１０８の処理が実行される。
【０２９８】
ステップＳ１０８において、ＣＰＵ８１は、上述の連鎖条件が満たされたか否かを判定する。ステップＳ１０８における判定は、上記“（連結オブジェクトによる連鎖動作）”で述べた方法に従って行われる。ステップＳ１０８の判定処理に用いられる、第２プレイヤオブジェクトＰ２が行っている動作の内容、および、第１連結オブジェクトＣ１の長さを示す情報は、プレイヤオブジェクトデータおよび連結オブジェクトデータＤｑを参照することによって得ることができる。ステップＳ１０８の判定結果が肯定である場合、ステップＳ１０９の処理が実行される。一方、ステップＳ１０８の判定結果が否定である場合、ステップＳ１０９の処理がスキップされて、図３７に示すステップＳ１１０の処理が実行される。
【０２９９】
ステップＳ１０９において、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１に連鎖動作（具体的には、投げられ動作）を開始させるように設定する。すなわち、ＣＰＵ８１は、投げられ動作を示す動作データを含むようにプレイヤオブジェクトデータＤｍを更新する。また、ステップＳ１０９においてもステップＳ１０５と同様、ＣＰＵ８１は、張力無効フラグをオンに設定する。ステップＳ１０９の次に、図３７に示すステップＳ１１０の処理が実行される。
【０３００】
図３７に示すステップＳ１１０において、ＣＰＵ８１は、上述のガード操作が行われているか否かを判定する。具体的には、ＣＰＵ８１は、姿勢データＤｂを参照して、左コントローラ３および右コントローラ４の両方が内側へ所定角度以上傾く姿勢になっているか否かを判定する。ステップＳ１１０の判定結果が肯定である場合、ステップＳ１１１の処理が実行される。一方、ステップＳ１１０の判定結果が否定である場合、ステップＳ１１１の処理がスキップされて、ステップＳ１１２の処理が実行される。
【０３０１】
ステップＳ１１１において、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１がガード動作を行うように設定する。すなわち、ＣＰＵ８１は、ガード動作を示す動作データを含むようにプレイヤオブジェクトデータＤｍを更新する。ステップＳ１１１の次に、ステップＳ１１２の処理が実行される。
【０３０２】
ステップＳ１１２において、ＣＰＵ８１は、第１プレイヤオブジェクトＰ１が張力無効動作中であるか否かを判定する。ステップＳ１１２の判定は、張力無効フラグデータを参照して、張力無効フラグがオンに設定されているか否かを判定することによって行うことができる。ステップＳ１１２の判定結果が否定である場合、ステップＳ１１３の処理が実行される。一方、ステップＳ１１２の判定結果が肯定である場合、ステップＳ１１４の処理が実行される。
【０３０３】
ステップＳ１１３において、ＣＰＵ８１は、第１連結オブジェクトＣ１による張力の制約を加えて第１プレイヤオブジェクトＰ１の動作を制御する。ここで、ステップＳ１１３において、ＣＰＵ８１は、上記ステップＳ４〜Ｓ８の処理結果に基づいて第１プレイヤオブジェクトＰ１にパンチ動作および移動動作を行わせたり、所定の動作（例えば、ジャンプ動作やガード動作）を行わせるためのユーザ操作に応じて、第１プレイヤオブジェクトＰ１に当該所定の動作を行わせたりする。具体的には、ＣＰＵ８１は、今回のフレームにおける第１プレイヤオブジェクトＰ１の外観状態（具体的には、位置、向き、および、体勢）を決定する。このとき、ＣＰＵ８１は、上記張力を考慮して上記外観状態を決定する。なお、ＣＰＵ８１は、決定された第１プレイヤオブジェクトＰ１の外観状態を示すようにプレイヤオブジェクトデータＤｍを更新する。ステップＳ１１３の次に、ステップＳ１１５の処理が実行される。
【０３０４】
ステップＳ１１４において、ＣＰＵ８１は、張力を考慮せずに第１プレイヤオブジェクトＰ１の動作を制御する。ここで、ステップＳ１１４において、ＣＰＵ８１は、上記張力無効動作を第１プレイヤオブジェクトＰ１に行わせ、今回のフレームにおける第１プレイヤオブジェクトＰ１の上記外観状態を決定する。このとき、ＣＰＵ８１は、上記張力を考慮せずに（換言すれば、張力を無視して）上記外観状態を決定する。ＣＰＵ８１は、決定された第１プレイヤオブジェクトＰ１の外観状態を示すようにプレイヤオブジェクトデータＤｍを更新する。ステップＳ１１４の次に、ステップＳ１１５の処理が実行される。
【０３０５】
ステップＳ１１５において、ＣＰＵ８１は、張力無効動作が終了したか否かを判定する。すなわち、ＣＰＵ８１は、ステップＳ１１４による動作制御の結果、第１プレイヤオブジェクトＰ１が地面に倒れた状態となったり、あるいは、第１プレイヤオブジェクトＰ１による投げ動作が終了したりした場合、張力無効動作が終了したと判定する。ステップＳ１１５の判定結果が肯定である場合、ステップＳ１１６の処理が実行される。一方、ステップＳ１１５の判定結果が否定である場合、ステップＳ１１６の処理がスキップされて、ステップＳ１１７の処理が実行される。
【０３０６】
ステップＳ１１６において、ＣＰＵ８１は、張力無効フラグをオフに設定する。すなわち、ＣＰＵ８１は、張力無効フラグデータＤｒを、オフを示す内容に更新する。ステップＳ１１６の次に、ステップＳ１１７の処理が実行される。
【０３０７】
ステップＳ１１７において、ＣＰＵ８１は、他のプレイヤオブジェクトに関する動作制御を行う。具体的には、ＣＰＵ８１は、第２〜第４プレイヤオブジェクトＰ２〜Ｐ４についてもそれぞれ、動作を制御するための処理（具体的には、ステップＳ２〜Ｓ８の一連の処理、および、ステップＳ１０３〜Ｓ１１６の一連の処理）を実行する。ステップＳ１１７の後、ＣＰＵ８１は、図３６および図３７に示す動作制御処理を終了する。
【０３０８】
図２８に戻り、上記ステップＳ９における動作制御処理の後、ＣＰＵ８１は、表示制御処理を行う（ステップＳ１０）。表示制御処理は、ゲーム空間を表すゲーム画像を生成して、表示装置（据置型モニタ６）にゲーム画像を表示するための処理である。以下、図３８を参照して、表示制御処理について説明する。
【０３０９】
図３８に示すステップＳ１２１において、ＣＰＵ８１は、注目オブジェクトを切り替える条件が満たされたか否かを判定する。すなわち、ＣＰＵ８１は、ユーザによる切替操作が行われた、あるいは、上述の自動切り替え条件が満たされた場合、注目オブジェクトを切り替える条件が満たされたと判定する。一方、ＣＰＵ８１は、ユーザによる切替操作が行われておらず、かつ、上述の自動切り替え条件が満たされていない場合、注目オブジェクトを切り替える条件が満たされていないと判定する。ステップＳ１２１の判定結果が肯定である場合、ステップＳ１２２の処理が実行される。一方、ステップＳ１２１の判定結果が否定である場合、ステップＳ１２２の処理がスキップされて、ステップＳ１２３の処理が実行される。
【０３１０】
ステップＳ１２２において、ＣＰＵ８１は、注目オブジェクトを切り替える。すなわち、ＣＰＵ８１は、切り替え後の注目オブジェクトを示すように、注目オブジェクトデータＤｓを更新する。ステップＳ１２２の次に、ステップＳ１２３の処理が実行される。
【０３１１】
ステップＳ１２３において、ＣＰＵ８１は、仮想カメラを設定する。具体的には、ＣＰＵ８１は、プレイヤオブジェクトデータおよび注目オブジェクトデータＤｓに基づいて、仮想カメラの位置、向き、および画角を設定する。ステップＳ１２３においては、仮想カメラの向きは、第１プレイヤオブジェクトＰ１の側から注目オブジェクトの側を向くように設定される。なお、仮想カメラは、第１プレイヤオブジェクトＰ１から注目オブジェクトへの方向を厳密に向くように設定される必要は無い。また、仮想カメラの位置および画角は、仮想カメラの視野範囲に第１プレイヤオブジェクトＰ１と注目オブジェクトが含まれるように、設定される。ステップＳ１２３の次に、ステップＳ１２４の処理が実行される。
【０３１２】
ステップＳ１２４において、ＣＰＵ８１は、ステップＳ１２３の処理によって設定された仮想カメラに基づいてゲーム画像を生成する。例えば、ＣＰＵ８１は、プレイヤオブジェクトデータを用いて、ゲームフィールド上に各プレイヤオブジェクト（左拳オブジェクトおよび右拳オブジェクトを含む）を配置する。また、ＣＰＵ８１は、アクションフラグデータＤｊが示すアクションフラグがオンに設定されており、衝突領域データＤｎに衝突領域Ａに関する設定データが設定されている場合は、左拳オブジェクトＧ１および右拳オブジェクトＧ２の間に衝突領域Ａに対応するオブジェクトを配置する。ＣＰＵ８１は、上記のようにして各種のオブジェクトが配置されたゲーム空間を仮想カメラから見たゲーム画像を生成する。なお、このとき、ＣＰＵ８１は、連結オブジェクトについては上記ステップＳ１０２で決定された表示態様に従って描画を行う。ステップＳ１２４の次に、ステップＳ１２５の処理が実行される。
【０３１３】
ステップＳ１２５において、ＣＰＵ８１は、ステップＳ１２４の処理によって生成されたゲーム画像を表示装置（ここでは、据置型モニタ６）に表示させる。ステップＳ１２５の後、ＣＰＵ８１は、表示制御処理を終了する。なお、図２８に示すステップＳ２〜ステップＳ１２の一連の処理ループは、ステップＳ１２５の処理が所定時間（すなわち、１フレーム時間）に１回の割合で実行されるように、繰り返し実行される。
【０３１４】
図２８に戻り、上記ステップＳ１０における表示制御処理の後、ＣＰＵ８１は、振動データの送信処理実行する（ステップＳ１１）。具体的には、ＣＰＵ８１は、振動データを送信する周期毎に当該周期に対応する振動データを、左コントローラ３および右コントローラ４へ送信する処理を行い、次のステップに処理を進める。例えば、ＣＰＵ８１は、左コントローラ振動データＤｏを参照して、上記送信周期に対応する振動長さ分の振動データを左コントローラ３へ送信する。また、ＣＰＵ８１は、右コントローラ振動データＤｐを参照して、上記送信周期に対応する振動長さ分の振動データを右コントローラ４へ送信する。このように２つのコントローラを振動させるための振動データがそれぞれ左コントローラ３および右コントローラ４へ送信されることによって、当該振動データを受信した左コントローラ３および右コントローラ４は、それぞれ振動データに応じた振動波形で振動する。
【０３１５】
次に、ＣＰＵ８１は、ゲームを終了するか否かを判定する（ステップＳ１２）。上記ステップＳ１２においてゲームを終了する条件としては、例えば、上記ゲームの結果が確定したことや、ユーザがゲームを終了する操作を行ったこと等がある。ＣＰＵ８１は、ゲームを終了しない場合に上記ステップＳ２に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。以降、ステップＳ２〜ステップＳ１２の一連の処理は、ステップＳ１２でゲームを終了すると判定されるまで繰り返し実行される。
【０３１６】
［５．本実施形態の作用効果および変形例］
以上に説明した実施形態によれば、ゲームプログラムは、ユーザが操作する第１プレイヤオブジェクトおよび第２プレイヤオブジェクトを含む第１グループと、第３プレイヤオブジェクトおよび第４プレイヤオブジェクトを含む第２グループとが対戦するゲーム処理を行う情報処理装置のコンピュータ（具体的には、本体装置２のＣＰＵ８１）を次の手段として機能させる。
・仮想３次元空間内に、第１〜第４プレイヤオブジェクト、当該第１プレイヤオブジェクトと当該第２プレイヤオブジェクトを連結する第１連結オブジェクト、および、当該第３プレイヤオブジェクトと当該第４プレイヤオブジェクトを連結する第２連結オブジェクトを配置するオブジェクト配置手段（ステップＳ１，Ｓ１２４）
・第１連結オブジェクトに基づいて第１プレイヤオブジェクトおよび第２プレイヤオブジェクトの移動に制約を加えて、第１プレイヤオブジェクトおよび第２プレイヤオブジェクトの動作を制御し、第２連結オブジェクトに基づいて第３プレイヤオブジェクトおよび第４プレイヤオブジェクトの移動に制約を加えて、第３プレイヤオブジェクトおよび第４プレイヤオブジェクトの動作を制御する動作制御手段（ステップＳ１１３，Ｓ１１７）
・第３プレイヤオブジェクトおよび第４プレイヤオブジェクトの少なくともいずれかが視野範囲に含まれるように、仮想３次元空間内に配置される仮想カメラを制御する仮想カメラ制御手段（ステップＳ１２３）
・仮想カメラに基づいて得られる仮想空間画像を生成する仮想空間画像生成手段（ステップＳ１２４）
・仮想空間画像を表示装置に表示させる表示制御手段（ステップＳ１２５）
【０３１７】
上述のように、上記実施形態においては、各プレイヤオブジェクトは、連結オブジェクトにより移動に制約を受ける。ここで、上記実施形態においては、プレイヤオブジェクトが手を伸ばして拳オブジェクトを移動させるというパンチ動作によって敵オブジェクトと戦うゲームであるので、プレイヤオブジェクトは、敵オブジェクトに対してある程度距離を置いて動作を行う。そのため、連結オブジェクトによりプレイヤオブジェクトの移動に制約があっても、ゲームバランスが大きく崩れることはなく、移動の制約はユーザにとって十分許容できるものとなる。
【０３１８】
なお、本実施形態においては、ユーザが操作する移動オブジェクトが、プレイヤオブジェクトの拳オブジェクトであるゲームを例として説明したが、移動オブジェクトは任意の種類のものであってもよい。また、移動オブジェクトは、本実施形態のように、移動中にユーザが移動方向を操作可能であるものであってもよいし、移動開始後はユーザが移動方向を操作できないものであってもよい。また、移動オブジェクトは、本実施形態のように、プレイヤオブジェクトの位置に戻ってくるものであってもよいし、プレイヤオブジェクトの位置には戻ってこずに前進し続けるものであってもよいし、他のオブジェクトに接触したことに応じて消滅（例えば、爆発）するものであってもよい。
【０３１９】
また、本実施形態においては、１つのグループに含まれるプレイヤオブジェクトの数が２つである場合と例として説明したが、１つのグループに含まれるプレイヤオブジェクトの数は２以上の任意の数であってもよい。例えば、他の実施形態においては、１つのグループに３つのプレイヤオブジェクトが含まれていてもよい。このとき、本体装置２は、本実施形態と同様の連結オブジェクトであって、１つのグループに含まれる３つのプレイヤオブジェクトのうち任意の２つを連結する３つの連結オブジェクトを用いてもよい。また、連結オブジェクトは、上記３つのプレイヤオブジェクトを囲む領域を表すオブジェクトであってもよい。この領域は、球体形状であってもよいし、図２２に示すような形状であってもよい。
【０３２０】
以上に説明した実施形態によれば、ゲームプログラムは以下のように特定される。以下のゲームプログラムにより、新規なゲームを提供することができる。
【０３２１】
（１−１）
情報処理装置のコンピュータに実行させるためのゲームプログラムであって、
前記情報処理装置のユーザの第１操作に応じて、仮想空間内に配置されたプレイヤオブジェクトの本体部分とは異なる第１部分を当該本体部分から離れる方向へ移動させる処理を開始する第１移動開始手段と、
前記ユーザの第２操作に応じて、前記プレイヤオブジェクトの本体部分および前記第１部分とは異なる第２部分を当該本体部分から離れる方向へ移動させる処理を開始する第２移動開始手段と、
前記ユーザの第３操作に応じて、前記第１部分および前記第２部分を一体として前記本体部分から離れる方向へ移動させる処理を開始する第３移動開始手段と、
前記第１部分の移動が開始された後の前記ユーザの第４操作に応じて、前記第１部分の移動方向を変更する第１移動変更手段と、
前記第２部分の移動が開始された後の前記ユーザの第５操作に応じて、前記第２部分の移動方向を変更する第２移動変更手段と、
前記第１部分および前記第２部分を一体とした移動が開始された後の前記ユーザの第６操作に応じて、前記第１部分および前記第２部分の移動方向を変更する第３移動変更手段と、
前記第１操作に応じて前記第１部分の移動が開始された後において所定の第１復帰条件が満たされた場合、前記第１部分を前記本体部分の方へ段階的に復帰させるように移動する処理を実行する第１復帰手段と、
前記第２操作に応じて前記第２部分の移動が開始された後において所定の第２復帰条件が満たされた場合、前記第２部分を前記本体部分の方へ段階的に復帰させるように移動する処理を実行する第２復帰手段と、
前記第３操作に応じて前記第１部分および前記第２部分の移動が開始された後において所定の第３復帰条件が満たされた場合、前記第１部分および前記第２部分を前記本体部分の方へ段階的に復帰させるように移動する処理を実行する第３復帰手段として機能させるためのゲームプログラム。
なお、上記において、「前記第１部分および前記第２部分を一体として移動させる」とは、第１部分および第２部分を、実質的に同じ方向に、実質的に同じ速度で移動させることを意味し、第１部分と第２部分とが接触した状態で移動することに限らない。
【０３２２】
（１−２）
互いに独立して移動する前記第１部分および前記第２部分のうちのいずれかが所定のオブジェクトに衝突した場合、当該所定のオブジェクトに対する第１処理を実行する第１処理手段と、
一体となって移動する前記第１部分および前記第２部分が前記所定のオブジェクトに衝突した場合、前記第１処理とは異なる処理であって当該所定のオブジェクトに対する第２処理を実行する第２処理手段として前記コンピュータをさらに機能させる、上記（１−１）に記載のゲームプログラム。
【０３２３】
（１−３）
前記第１処理手段は、前記所定のオブジェクトの状態が第１状態から第２状態となった場合、前記第１部分および前記第２部分のうちのいずれかが前記所定のオブジェクトに衝突したときには、前記第１処理を無効とし、
前記第２処理手段は、前記所定のオブジェクトの状態が第１状態から第２状態となった場合であっても、前記第１部分および前記第２部分が前記所定のオブジェクトに衝突したときには、前記第２処理を実行する、上記（１−２）に記載のゲームプログラム。
【０３２４】
（１−４）
前記ユーザの第７操作に応じて、前記プレイヤオブジェクトの状態を変化させる処理を実行する状態変化手段として前記コンピュータをさらに機能させる、上記（１−１）または（１−２）に記載のゲームプログラム。
【０３２５】
（１−５）
前記ユーザの第８操作に応じて、前記プレイヤオブジェクトを前記仮想空間内で移動させる移動制御手段として前記コンピュータをさらに機能させる、上記（１−１）から（１−４）のいずれか１つに記載のゲームプログラム。
【０３２６】
（１−６）
前記第３移動開始手段によって前記第１部分および前記第２部分を一体として移動させる処理が開始された場合に、前記第１部分および前記第２部分に関連してエフェクト画像を表示させる表示制御手段として前記コンピュータを機能させる、上記（１−１）から（１−５）のいずれか１つに記載のゲームプログラム。
【０３２７】
（１−７）
前記第３操作は、前記第１操作と前記第２操作とが実質的に同じタイミングで行われる操作である、上記（１−１）から（１−６）のいずれか１つに記載のゲームプログラム。
【０３２８】
（１−８）
前記プレイヤオブジェクトに対して設定される前記第１部分の種類をユーザの選択指示に基づいて決定する種類決定手段として前記コンピュータをさらに機能させ、
前記第１移動変更手段は、前記第１部分の種類に応じて移動制御方法を変化させて当該第１部分の移動を制御する、上記（１−１）から（１−７）のいずれか１つに記載のゲームプログラム。
【０３２９】
（１−９）
移動している前記第１部分と前記所定のオブジェクトの本体部分とは異なる第３部分とが衝突した場合、前記種類決定手段により決定された前記第１部分の種類と前記第３部分の種類とに基づいて、当該第１部分の移動を中止するか否かを判断する判断手段として前記コンピュータをさらに機能させる、上記（１−８）に記載のゲームプログラム。
【０３３０】
（２−１）
操作装置を用いた操作に基づいた情報処理を行う情報処理装置に含まれるコンピュータで実行される情報処理プログラムであって、
前記コンピュータを、
前記操作装置の位置移動を示すデータを含む第１の操作データに基づいて、仮想空間においてオブジェクトの第１の移動方向への移動を開始させる移動開始判定部と、
前記操作装置の前記位置移動後に行われた前記操作装置の回転または姿勢を示すデータを含む第２の操作データに基づいて、前記オブジェクトを前記第１の移動方向から曲げて移動するように制御する軌道制御部として機能させる、情報処理プログラム。
【０３３１】
（２−２）
前記軌道制御部は、前記第２の操作データに基づいて、前記操作装置の前記位置移動後に行われた前記操作装置の回転の方向に、前記オブジェクトを前記第１の移動方向から曲げて移動するように制御する、（２−１）に記載の情報処理プログラム。
【０３３２】
（２−３）
前記軌道制御部は、前記操作装置の回転を示すデータとして、実空間における重力方向周りの回転を示すデータを用いて前記オブジェクトの移動方向を制御する、（２−１）または（２−２）に記載の情報処理プログラム。
【０３３３】
（２−４）
前記軌道制御部は、前記操作装置の回転を示すデータとして、実空間において前記操作装置が前記位置移動した方向周りの当該操作装置の回転を示すデータを用いて前記オブジェクトの移動方向を制御する、（２−１）または（２−２）に記載の情報処理プログラム。
【０３３４】
（２−５）
前記軌道制御部は、前記操作装置の姿勢を示すデータとして、実空間における重力方向を基準とした傾きを示すデータを用いて前記オブジェクトの移動方向を制御する、（２−１）から（２−４）の何れか１つに記載の情報処理プログラム。
【０３３５】
（２−６）
前記第１の操作データは、前記操作装置に設けられた加速度センサにおける検出結果に基づくものであり、
前記第２の操作データは、前記操作装置に設けられたジャイロセンサまたは加速度センサにおける検出結果に基づくものである、（２−１）から（２−５）の何れか１つに記載の情報処理プログラム。
【０３３６】
（２−７）
前記第１の操作データは、前記操作装置を振る操作に応じて生成され、
前記第２の操作データは、前記操作装置の曲げ操作に応じて生成される、（２−１）から（２−５）の何れか１つに記載の情報処理プログラム。
【０３３７】
（２−８）
前記第１の操作データは、前記操作装置の回転または姿勢を示すデータを含み、
前記移動開始判定部は、前記第１の操作データに含まれる前記操作装置の回転または姿勢を示すデータに基づいて、前記第１の移動方向を決定する、（２−１）から（２−５）の何れか１つに記載の情報処理プログラム。
【０３３８】
（２−９）
前記第１の操作データに含まれる前記操作装置の回転を示すデータは、前記操作装置に生じている角速度を示すデータであり、
前記移動開始判定部は、
実空間における前記角速度の重力方向周りの成分の大きさが、前記角速度から重力方向周りの成分を除いた大きさよりも大きい場合、前記角速度の重力方向周りの成分を用いて前記第１の移動方向を決定し、
実空間における前記角速度の重力方向周りの成分の大きさが、前記角速度から重力方向周りの成分を除いた大きさ以下の場合は、実空間において前記操作装置が前記位置移動した方向周りの前記角速度の成分を用いて前記第１の移動方向を決定する、（２−８）に記載の情報処理プログラム。
【０３３９】
（２−１０）
前記移動開始判定部は、前記位置移動した方向周りの前記角速度の成分を用いて前記第１の移動方向を決定する場合、当該方向周りの角速度成分が正であるときと負であるときで、前記操作装置の回転を示すデータの大きさに対する曲がりの程度を変えて前記第１の移動方向を決定する、（２−９）に記載の情報処理プログラム。
【０３４０】
（２−１１）
前記第１の移動方向は、前記オブジェクトを含む仮想画像を生成する仮想カメラから見て前後方向であり、
前記軌道制御部は、前記第２の操作データに基づいて、前記仮想カメラから見て上下左右方向に前記第１の移動方向から曲げて前記オブジェクトの移動方向を制御する、（２−１）から（２−１０）の何れか１つに記載の情報処理プログラム。
【０３４１】
（２−１２）
前記軌道制御部は、仮想空間において前記オブジェクトが移動開始位置に戻る方向に移動している場合、前記第２の操作データに基づいて前記オブジェクトの移動方向の変更をしない、（２−１）から（２−１１）の何れか１つに記載の情報処理プログラム。
【０３４２】
（２−１３）
前記オブジェクトは、仮想空間におけるプレイヤキャラクタの拳である、（２−１）から（２−１２）の何れか１つに記載の情報処理プログラム。
【０３４３】
（２−１４）
前記情報処理装置は、２つの前記操作装置を用いた操作に基づいた情報処理を行い、
前記移動開始判定部および前記軌道制御部は、前記２つの操作装置それぞれの操作に基づいて、２つの前記オブジェクトそれぞれの移動を開始する処理およびそれぞれの移動方向を曲げる処理を行う、（２−１）から（２−１３）の何れか１つに記載の情報処理プログラム。
【０３４４】
（２−１５）
前記２つの操作装置両方の操作に基づいて、仮想空間において前記オブジェクトを有するプレイヤキャラクタを移動させるプレイヤキャラクタ移動制御部として、さらに前記コンピュータを機能させる、（２−１４）に記載の情報処理プログラム。
【０３４５】
上記実施形態においては、上記（１−１）〜（１−８）および（２−１）〜（２−１５）に記載のゲームプログラムの他、上記（１−１）〜（１−８）および（２−１）〜（２−１５）における各手段を備える情報処理装置および情報処理システムが開示される。また、上記実施形態には、上記（１−１）〜（１−８）および（２−１）〜（２−１５）における情報処理装置において実行されるゲーム処理方法が開示される。
【０３４６】
上記実施形態においては、左コントローラ３および右コントローラ４を振動させるために、一時変数Ｓが７以上である場合にステップＳ１９５において往路振動データが生成され、一時変数Ｓが７未満である場合にステップＳ２２２において回転速度Ｖに基づいて往路振動データが変更される。ここで、一時変数Ｓは、左コントローラ３または右コントローラ４がパンチを繰り出すように振られたと判定された際に所定数に設定（ステップＳ２２）された後、処理が進行されることに応じて１減算される変数である。つまり、左コントローラ３および右コントローラ４は、パンチを繰り出すように振られたと加速度に基づいて判定された直後は往路振動データに基づいて振動し、その後は回転速度Ｖに基づいて変化する振動データに基づいて振動することになる。したがって、本実施例においては、左コントローラ３および／または右コントローラ４を多様に振動させることが可能となり、リアリティがあるゲームプレイも可能となる。また、左コントローラ３および右コントローラ４を振動させるための振動データは、左コントローラ３および／または右コントローラ４の動作や姿勢に応じて変化させることができるとともに、アナログスティックの傾倒操作等におけるアナログ出力に応じて変化させることもできるため、操作態様に応じたフレキシブルな制御が可能となる。
【０３４７】
なお、上述した実施例では、コントローラに生じた加速度が所定の条件を満たした場合に所定の往路振動データが生成され、当該往路振動データが出力されている期間においてコントローラに生じた角速度が所定の条件を満たした場合に、振動の振幅および／または周波数を一時的に変化させる振動データが生成されて出力する例を用いたが、他の態様によって振動データが生成されてもよい。例えば、コントローラを用いてパンチを繰り出すような操作がされたか否かを判定するパラメータは、当該コントローラに生じる加速度でなくてもよく、当該コントローラに生じる角速度や当該コントローラに生じる加速度と角速度の両方を用いて判定されてもよい。また、振動データを一時的に変化させるか否かを判定するための条件は、当該コントローラに生じる角速度に基づく条件でなくてもよく、当該コントローラに生じる加速度に基づく条件や当該コントローラに生じる加速度と角速度の両方に基づく条件でもよい。また、上記判定は、コントローラに設けられた操作ボタンや方向指示部に対する操作によって判定されてもよい。
【０３４８】
また、回転速度Ｖに応じた振動データの一時的変化は、複数回生じてもよい。例えば、上述したフローチャートからも明らかであるが、左拳オブジェクトＧ１や右拳オブジェクトＧ２の往路移動中に回転速度Ｖが複数回生じた場合、回転速度Ｖが生じる毎に往路振動データが一時的に変化することになり、上記フローチャートによる処理を行えば、往路振動データを一時的に複数回変化させることが可能となる。
【０３４９】
また、上述した実施例では、所定の往路振動データが出力されている期間においてコントローラの動きまたは姿勢の変化が所定の条件を満たした場合に、振動の振幅および／または周波数を一時的に変化させる振動データを出力する例を用いたが、他の態様によって一時的に変化させる振動パラメータを設定してもよい。第１の例として、コントローラが所定の周期で断続的に振動している場合に、コントローラの動きまたは姿勢の変化が所定の条件を満たしたことに応じて、当該周期や振動が途切れる期間および／または振動が加わる時間が変化する振動データを出力してもよい。第２の例として、所定の往路振動データが出力されている期間においてコントローラの動きまたは姿勢の変化が所定の条件を満たした場合に、当該往路振動データによる振動波形より振幅が大きい単発的な振動を所定回数加えることによって、一時的に変化させる振動データを出力してもよい。第３の例として、所定の往路振動データの出力対象となっているオブジェクトが特定種類のオブジェクトの場合、コントローラの動きまたは姿勢の変化が所定の条件を満たした場合であっても、振動を変化させずに当該往路振動データの出力を継続してもよい。
【０３５０】
また、上述した実施例では、左コントローラ３や右コントローラ４の動きに応じて移動開始する左拳オブジェクトＧ１や右拳オブジェクトＧ２の移動に伴って往路振動データが生成される例を用いたが、他の操作に応じて左拳オブジェクトＧ１や右拳オブジェクトＧ２が移動開始してもよい。例えば、左コントローラ３や右コントローラ４に設けられた所定の操作部（例えば、操作ボタンや方向指示部）に対するユーザ操作に応じて、左拳オブジェクトＧ１や右拳オブジェクトＧ２が移動開始し、当該左拳オブジェクトＧ１や右拳オブジェクトＧ２の移動に伴って往路振動データが生成されてもよい。
【０３５１】
また、上述した実施例では、左拳オブジェクトＧ１および右拳オブジェクトＧ２は、それぞれ移動中であっても左コントローラ３や右コントローラ４を用いた操作によって軌道が変化するため、結果的に第１移動開始可能状態が終了してから次の第１移動開始可能状態となるまでの時間や第２移動開始可能状態が終了してから次の第２移動開始可能状態となるまでの時間が長いものであることが前提となっている。このように、次の移動が開始可能となるまでの時間が長くなるゲームにおいては、先行して移動開始する操作（振り操作）を受け付けるゲーム仕様が効果的となるが、他の仕様によって次の移動が開始可能となるまでの時間が長くなるゲームであってもよいことは言うまでない。例えば、上述したゲーム例では、第１プレイヤオブジェクトＰ１の腕が伸びることによって移動中の動きを制御可能にしているが、プレイヤオブジェクトの他の五体（例えば、脚）が伸びるゲームやプレイヤオブジェクトが所持している物体（鞭オブジェクト、蛇腹オブジェクト等）が伸びるゲームに本発明を適用してもよい。また、プレイヤオブジェクトが遠隔操作可能なオブジェクト（例えば、ラジコン、ロボット、ロケットパンチ等）を移動中に操作し、再びプレイヤオブジェクトの手元に帰った場合に次の移動が可能となるゲームに本発明を適用してもよい。また、一旦放ったオブジェクト（鳥、ブーメラン、ボーリングの球等）が戻ってくるゲームに本発明を適用してもよい。
【０３５２】
また、上述した「両手パンチアクション」は、左拳オブジェクトＧ１および右拳オブジェクトＧ２が組となって所定のアクションを行う例として記載したが、単に左拳オブジェクトＧ１および右拳オブジェクトＧ２が組となって移動するものであってもよい。この場合、ゲーム画像として表現される左拳オブジェクトＧ１および右拳オブジェクトＧ２の移動形態は、単に左拳オブジェクトＧ１および右拳オブジェクトＧ２が組となって移動するものとなるが、左拳オブジェクトＧ１および右拳オブジェクトＧ２の少なくとも一方が敵オブジェクトと衝突した場合に、単独で衝突する場合と比べて与えるダメージが大きくてもよい。
【０３５３】
また、上述した実施例では、左コントローラ３や右コントローラ４を用いた操作に応じて、左拳オブジェクトＧ１および右拳オブジェクトＧ２における仮想空間の左右方向の位置が制御され、当該操作に応じて振動が一時的に変化する例を用いたが、左拳オブジェクトＧ１および右拳オブジェクトＧ２における仮想空間の上下方向の位置および／または前後方向の位置が制御可能に構成されてもよい。この場合、左コントローラ３および／または右コントローラ４の実空間における上下方向の動作および／またはピッチ方向の姿勢に応じて、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２における仮想空間の上下方向の位置が制御可能に構成され、当該操作に応じて振動が一時的に変化してもよい。また、左コントローラ３および／または右コントローラ４の実空間における前後方向の動作および／またはピッチ方向の姿勢に応じて、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２における仮想空間の前後方向の位置が制御可能に構成され、当該操作に応じて振動が一時的に変化してもよい。また、左コントローラ３や右コントローラ４を用いた操作に応じて、左拳オブジェクトＧ１および右拳オブジェクトＧ２における仮想空間における姿勢が制御可能に構成されてもよい。この場合、左コントローラ３および／または右コントローラ４の実空間におけるロール方向の姿勢に応じて、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２における仮想空間のロール方向に対する姿勢が制御可能に構成され、当該操作に応じて振動が一時的に変化してもよい。また、左コントローラ３および／または右コントローラ４の実空間におけるピッチ方向の姿勢に応じて、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２における仮想空間のピッチ方向に対する姿勢が制御可能に構成され、当該操作に応じて振動が一時的に変化してもよい。また、左コントローラ３および／または右コントローラ４の実空間におけるヨー方向の姿勢に応じて、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２における仮想空間のヨー方向に対する姿勢が制御可能に構成され、当該操作に応じて振動が一時的に変化してもよい。
【０３５４】
また、上述した実施例において、左コントローラ３や右コントローラ４の動きや姿勢を検出する方法については、単なる一例であって、他の方法や他のデータを用いて左コントローラ３や右コントローラ４の動きや姿勢を検出してもよい。例えば、上述した実施例における加速度センサ１０４および１１４や角速度センサ１０５および１１５は、左コントローラ３や右コントローラ４の動きや姿勢を算出するための姿勢センサの一例である。例えば他の実施形態においては、左コントローラ３や右コントローラ４は、加速度センサや角速度センサに加えて（または代えて）磁気センサを備えていてもよく、磁気によって左コントローラ３や右コントローラ４の動きや姿勢を算出してもよい。また、例えば他の実施形態においては、本体装置２は、左コントローラ３や右コントローラ４を撮像装置によって撮像し、撮影された画像を用いて左コントローラ３や右コントローラ４の動きや姿勢を算出してもよい。また、上述した実施例では、左コントローラ３や右コントローラ４を用いた操作に応じたゲーム画像を据置型モニタ６に表示しているが、本体装置２のディスプレイ１２に表示してもよい。また、左拳オブジェクトＧ１および／または右拳オブジェクトＧ２の動作を制御するためのコントローラは、左コントローラ３および右コントローラ４のセットだけでなく、他のコントローラが組み合わせられたり、他のコントローラ同士が組み合わせられたりしてもよい。
【０３５５】
また、上述した実施例では、一対の左コントローラ３および右コントローラ４を用いて複数のオブジェクトを操作するゲームを用いたが、１つのコントローラを用いて単一のオブジェクトを操作するゲームでもよい。この場合、上記単一のオブジェクトの移動に応じて１つのコントローラを振動させるための往路振動データが出力されている期間において、当該コントローラの動きまたは姿勢の変化が所定の条件を満たした場合に、振動の振幅および／または周波数を一時的に変化させる振動データが出力される。これによって、１つのコントローラによって単一のオブジェクトを操作するゲームであっても、当該１つのコントローラの振動を一時的に変化させることが可能となる。
【０３５６】
また、他の実施形態においては、本体装置２は、据置型モニタ６と直接通信可能であってもよい。例えば、本体装置２と据置型モニタ６とが直接有線通信または直接無線通信を行うことが可能であってもよい。この場合、本体装置２は、本体装置２と据置型モニタ６とが直接通信可能か否かに基づいて画像の表示先を決定してもよい。
【０３５７】
また、アナログスティック３２および５２は、操作検出結果をアナログ値で取得し、当該アナログ値を示すアナログ操作データを出力できる操作装置の一例であるが、アナログ値を取得できる他の操作装置が左コントローラ３や右コントローラ４に設けられてもよい。例えば、ユーザがボタンを押下する押下量に応じたアナログ値を取得可能な押下ボタンやユーザがタッチする位置に応じたアナログ値を取得可能なタッチパネルやタッチパッドが左コントローラ３や右コントローラ４に設けられてもよい。
【０３５８】
また、付加装置（例えば、クレードル）は、本体装置２を着脱可能な任意の付加装置であってよい。付加装置は、本実施形態のように、本体装置２に対する充電を行う機能を有していてもよいし、有していなくてもよい。
【０３５９】
また、情報処理システム１は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器（ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話、パーソナルコンピュータ、カメラ、タブレット等）等であってもよい。また、左コントローラ３および／または右コントローラ４も、どのような装置であってもよく、任意の携帯型電子機器（ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話、パーソナルコンピュータ、カメラ、タブレット、携帯ゲーム装置等）等であってもよい。
【０３６０】
また、上述した説明では情報処理（ゲーム処理）を情報処理システム１でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、情報処理システム１がさらに他の装置（例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末）と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理（ゲーム処理）は、少なくとも１つの情報処理装置により構成される情報処理システムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、情報処理システム１のＣＰＵ８１が所定のプログラムを実行することによって情報処理を行うことが可能であるが、情報処理システム１が備える専用回路によって上記処理の一部または全部が行われてもよい。
【０３６１】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置（据置型のゲーム装置）と携帯型の情報処理装置（携帯型のゲーム装置）との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
【０３６２】
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
【０３６３】
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じて情報処理システム１に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【０３６４】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０３６５】
以上のように、本発明は、ゲーム状況をユーザにとってわかりやすく提示することを目的として、例えばゲームシステム、ゲーム装置、ゲームプログラム等に利用することができる。
【符号の説明】
【０３６６】
１  情報処理システム
２  本体装置
３  左コントローラ
４  右コントローラ
５  クレードル
６  据置型モニタ
１１  ハウジング
１２  ディスプレイ
２７  下側端子
８１  ＣＰＵ
８５  ＤＲＡＭ
【図１】
2019000221.tif 000003
【図２】
2019000221.tif 000004
【図３】
2019000221.tif 000005
【図４】
2019000221.tif 000006
【図５】
2019000221.tif 000007
【図６】
2019000221.tif 000008
【図７】
2019000221.tif 000009
【図８】
2019000221.tif 000010
【図９】
2019000221.tif 000011
【図１０】
2019000221.tif 000012
【図１１】
2019000221.tif 000013
【図１２】
2019000221.tif 000014
【図１３】
2019000221.tif 000015
【図１４】
2019000221.tif 000016
【図１５】
2019000221.tif 000017
【図１６】
2019000221.tif 000018
【図１７】
2019000221.tif 000019
【図１８】
2019000221.tif 000020
【図１９】
2019000221.tif 000021
【図２０】
2019000221.tif 000022
【図２１】
2019000221.tif 000023
【図２２】
2019000221.tif 000024
【図２３】
2019000221.tif 000025
【図２４】
2019000221.tif 000026
【図２５】
2019000221.tif 000027
【図２６】
2019000221.tif 000028
【図２７】
2019000221.tif 000029
【図２８】
2019000221.tif 000030
【図２９】
2019000221.tif 000031
【図３０】
2019000221.tif 000032
【図３１】
2019000221.tif 000033
【図３２】
2019000221.tif 000034
【図３３】
2019000221.tif 000035
【図３４】
2019000221.tif 000036
【図３５】
2019000221.tif 000037
【図３６】
2019000221.tif 000038
【図３７】
2019000221.tif 000039
【図３８】
2019000221.tif 000040