(57)【要約】【課題】操作対象の動作の状態を振動によってユーザに感じさせることが可能な情報処理システムを提供する。【解決手段】ユーザが、左右のコントローラを操作することにより、仮想空間に配置されたプレイヤキャラクタが第１の状態と第２の状態とになる動作が行われる。プレイヤキャラクタが第１の状態のときには、左コントローラが右コントローラよりも強く振動し、プレイヤキャラクタが第２の状態のときには、右コントローラが左コントローラよりも強く振動する。【選択図】図１６
2018206012.tif 000002
【特許請求の範囲】
【請求項１】
第１の振動信号に基づいた強さで振動する第１の振動部と、
第２の振動信号に基づいた強さで振動する第２の振動部と、
前記第１の振動部を振動させるための前記第１の振動信号と、前記第２の振動部を振動させるための前記第２の振動信号とを生成する振動信号生成部と、
ユーザによる操作に基づいて、仮想空間内において所定の操作対象に第１の状態と第２の状態とを含む所定の動作を行わせる操作対象制御部と、を備え、
前記振動信号生成部は、
前記所定の動作において前記操作対象が前記第１の状態のときに、前記第１の振動部が前記第２の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成し、
前記所定の動作において前記操作対象が前記第２の状態のときに、前記第２の振動部が前記第１の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成する、情報処理システム。
【請求項２】
前記所定の動作は、前記操作対象が、交互に前記第１の状態と前記第２の状態とになる動作である、請求項１に記載の情報処理システム。
【請求項３】
前記操作対象制御部は、前記仮想空間の状況、前記操作対象の状況、および、ユーザによる操作のうちの少なくとも何れかに応じて、前記操作対象を前記第１の状態または前記第２の状態のいずれかの状態にする、請求項１に記載の情報処理システム。
【請求項４】
前記振動信号生成部は、前記第１振動部および前記第２振動部がそれぞれ、前記仮想空間内に配置される仮想的な振動源と前記操作対象または仮想カメラとの位置関係に応じた強さで振動するように、前記第１の振動信号および前記第２の振動信号をさらに生成する、請求項１から３のいずれかに記載の情報処理システム。
【請求項５】
前記振動信号生成部は、前記操作対象の前記所定の動作に基づいて生成される前記第１の振動信号と、前記仮想的な振動源に基づいて生成される前記第１の振動信号とが同時に生成されるとき、それぞれの前記第１の振動信号を合成し、前記操作対象の前記所定の動作に基づいて生成される前記第２の振動信号と、前記仮想的な振動源に基づいて生成される前記第２の振動信号とが同時に生成されるとき、それぞれの前記第２の振動信号を合成する、請求項４に記載の情報処理システム。
【請求項６】
前記振動信号生成部は、前記操作対象の前記仮想空間における位置に応じて異なる前記第１の振動信号および前記第２の振動信号を生成する、請求項１から５のいずれかに記載の情報処理システム。
【請求項７】
第１の操作部と、第２の操作部と、をさらに備え、
前記第１の振動部は前記第１の操作部に含まれ、
前記第２の振動部は前記第２の操作部に含まれ、
前記操作対象制御部は、前記第１の操作部および／または前記第２の操作部に対する操作に基づいて前記操作対象を制御する、請求項１から６のいずれかに記載の情報処理システム。
【請求項８】
前記第１の操作部は、ユーザの左手で操作され、
前記第２の操作部は、ユーザの右手で操作され、
前記操作対象は、前記ユーザによって操作されるプレイヤキャラクタオブジェクトであり、
前記振動信号生成部は、
前記仮想空間内において、前記プレイヤキャラクタオブジェクトの左側の部分に関して所定のイベントが発生しているときに、前記第１の振動部が前記第２の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成し、
前記仮想空間内において、前記プレイヤキャラクタオブジェクトの右側の部分に関して所定のイベントが発生しているときに、前記第２の振動部が前記第１の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成する、請求項７に記載の情報処理システム。
【請求項９】
振動信号に基づいた強さで振動する第１の振動部および第２の振動部の振動を制御する情報処理装置のコンピュータによって実行される情報処理プログラムであって、前記コンピュータに、
前記第１の振動部を振動させるための第１の振動信号と、前記第２の振動部を振動させるための第２の振動信号とを生成する振動信号生成ステップと、
ユーザによる操作に基づいて、仮想空間内において所定の操作対象に第１の状態と第２の状態とを含む所定の動作を行わせる操作対象制御ステップと、を実行させ、
前記コンピュータに、前記振動信号生成ステップにおいて、
前記所定の動作において前記操作対象が前記第１の状態のときに、前記第１の振動部が前記第２の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成させ、
前記所定の動作において前記操作対象が前記第２の状態のときに、前記第２の振動部が前記第１の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成させる、情報処理プログラム。
【請求項１０】
前記所定の動作は、前記操作対象が、交互に前記第１の状態と前記第２の状態とになる動作である、請求項９に記載の情報処理プログラム。
【請求項１１】
前記コンピュータに、前記操作対象制御ステップにおいて、前記仮想空間の状況、前記操作対象の状況、および、ユーザによる操作のうちの少なくとも何れかに応じて、前記操作対象を前記第１の状態または前記第２の状態のいずれかの状態にさせる、請求項９に記載の情報処理プログラム。
【請求項１２】
前記コンピュータに、前記振動信号生成ステップにおいて、
前記第１振動部および前記第２振動部がそれぞれ、前記仮想空間内に配置される仮想的な振動源と前記操作対象または仮想カメラとの位置関係に応じた強さで振動するように、前記第１の振動信号および前記第２の振動信号をさらに生成させる、請求項９から１１のいずれかに記載の情報処理プログラム。
【請求項１３】
前記コンピュータに、前記振動信号生成ステップにおいて、
前記操作対象の前記所定の動作に基づいて生成される前記第１の振動信号と、前記仮想的な振動源に基づいて生成される前記第１の振動信号とが同時に生成されるとき、それぞれの前記第１の振動信号を合成し、前記操作対象の前記所定の動作に基づいて生成される前記第２の振動信号と、前記仮想的な振動源に基づいて生成される前記第２の振動信号とが同時に生成されるとき、それぞれの前記第２の振動信号を合成させる、請求項１２に記載の情報処理プログラム。
【請求項１４】
前記コンピュータに、前記振動信号生成ステップにおいて、前記操作対象の前記仮想空間における位置に応じて異なる前記第１の振動信号および前記第２の振動信号を生成させる、請求項９から１３のいずれかに記載の情報処理プログラム。
【請求項１５】
前記第１の振動部は第１の操作部に含まれ、
前記第２の振動部は第２の操作部に含まれ、
前記コンピュータに、前記操作対象制御ステップにおいて、前記第１の操作部および／または前記第２の操作部に対する操作に基づいて前記操作対象を制御させる、請求項９から１５のいずれかに記載の情報処理プログラム。
【請求項１６】
前記第１の操作部は、ユーザの左手で操作され、
前記第２の操作部は、ユーザの右手で操作され、
前記操作対象は、前記ユーザによって操作されるプレイヤキャラクタオブジェクトであり、  前記コンピュータに、前記振動信号生成ステップにおいて、
前記仮想空間内において、前記プレイヤキャラクタオブジェクトの左側の部分に関して所定のイベントが発生しているときに、前記第１の振動部が前記第２の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成させ、
前記仮想空間内において、前記プレイヤキャラクタオブジェクトの右側の部分に関して所定のイベントが発生しているときに、前記第２の振動部が前記第１の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成させる、請求項９から１４のいずれかに記載の情報処理プログラム。
【請求項１７】
振動信号に基づいた強さで振動する第１の振動部および第２の振動部の振動を制御する情報処理装置であって、
前記第１の振動部を振動させるための第１の振動信号と、前記第２の振動部を振動させるための第２の振動信号とを生成する振動信号生成部と、
ユーザによる操作に基づいて、仮想空間内において所定の操作対象に第１の状態と第２の状態とを含む所定の動作を行わせる操作対象制御部と、を備え、
前記振動信号生成部は、
前記所定の動作において前記操作対象が前記第１の状態のときに、前記第１の振動部が前記第２の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成し、
前記所定の動作において前記操作対象が前記第２の状態のときに、前記第２の振動部が前記第１の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成する、情報処理装置。
【請求項１８】
前記所定の動作は、前記操作対象が、交互に前記第１の状態と前記第２の状態とになる動作である、請求項１７に記載の情報処理装置。
【請求項１９】
前記操作対象制御部は、前記仮想空間の状況、前記操作対象の状況、および、ユーザによる操作のうちの少なくとも何れかに応じて、前記操作対象を前記第１の状態または前記第２の状態のいずれかの状態にする、請求項１７に記載の情報処理装置。
【請求項２０】
前記振動信号生成部は、
前記第１振動部および前記第２振動部がそれぞれ、前記仮想空間内に配置される仮想的な振動源と前記操作対象または仮想カメラとの位置関係に応じた強さで振動するように、前記第１の振動信号および前記第２の振動信号をさらに生成する、請求項１７から１９のいずれかに記載の情報処理装置。
【請求項２１】
前記振動信号生成部は、
前記操作対象の前記所定の動作に基づいて生成される前記第１の振動信号と、前記仮想的な振動源に基づいて生成される前記第１の振動信号とが同時に生成されるとき、それぞれの前記第１の振動信号を合成し、前記操作対象の前記所定の動作に基づいて生成される前記第２の振動信号と、前記仮想的な振動源に基づいて生成される前記第２の振動信号とが同時に生成されるとき、それぞれの前記第２の振動信号を合成する、請求項２０に記載の情報処理装置。
【請求項２２】
第１の振動信号に基づいた強さで振動する第１の振動部と、第２の振動信号に基づいた強さで振動する第２の振動部とを有する情報処理システムにおいて行われる情報処理方法であって、
前記第１の振動部を振動させるための前記第１の振動信号と、前記第２の振動部を振動させるための前記第２の振動信号とを生成する振動信号生成ステップと、
ユーザによる操作に基づいて、仮想空間内において所定の操作対象に第１の状態と第２の状態とを含む所定の動作を行わせる操作対象制御ステップと、を含み、
前記振動信号生成ステップでは、
前記所定の動作において前記操作対象が前記第１の状態のときに、前記第１の振動部が前記第２の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成し、
前記所定の動作において前記操作対象が前記第２の状態のときに、前記第２の振動部が前記第１の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成する、情報処理方法。
【請求項２３】
前記所定の動作は、前記操作対象が、交互に前記第１の状態と前記第２の状態とになる動作である、請求項２２に記載の情報処理方法。
【請求項２４】
前記操作対象制御ステップでは、前記仮想空間の状況、前記操作対象の状況、および、ユーザによる操作のうちの少なくとも何れかに応じて、前記操作対象を前記第１の状態または前記第２の状態のいずれかの状態にする、請求項２２に記載の情報処理方法。
【請求項２５】
前記振動信号生成ステップでは、
前記第１振動部および前記第２振動部がそれぞれ、前記仮想空間内に配置される仮想的な振動源と前記操作対象または仮想カメラとの位置関係に応じた強さで振動するように、前記第１の振動信号および前記第２の振動信号をさらに生成する、請求項２２から２４のいずれかに記載の情報処理方法。
【請求項２６】
前記振動信号生成ステップでは、
前記操作対象の前記所定の動作に基づいて生成される前記第１の振動信号と、前記仮想的な振動源に基づいて生成される前記第１の振動信号とが同時に生成されるとき、それぞれの前記第１の振動信号を合成し、前記操作対象の前記所定の動作に基づいて生成される前記第２の振動信号と、前記仮想的な振動源に基づいて生成される前記第２の振動信号とが同時に生成されるとき、それぞれの前記第２の振動信号を合成する、請求項２５に記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、振動部を振動させる情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法に関する。
【背景技術】
【０００２】
従来より、第１の振動部と第２の振動部とを含むシステムが提案されている（例えば、特許文献１参照）。当該システムは、第１の振動部および第２の振動部の振動の強度の割合を変化させることによって振動源を知覚させる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−２３２７８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来技術は第１の振動部および第２の振動部を振動させることによって仮想的なオブジェクトの位置を知覚させるものであり、仮想的なオブジェクトの動きを振動によって感じさせるものではなかった。
【０００５】
それ故、本発明の目的は、操作対象の動作の状態を振動によりユーザに感じさせることが可能な情報処理システムを提供することである。
【課題を解決するための手段】
【０００６】
上記の課題を解決すべく、本発明は、以下の構成を採用した。
【０００７】
本発明に係る情報処理システムは、第１の振動信号に基づいた強さで振動する第１の振動部と、第２の振動信号に基づいた強さで振動する第２の振動部と、振動信号生成部と、操作対象制御部と、を備える。振動信号生成部は、前記第１の振動部を振動させるための前記第１の振動信号と、前記第２の振動部を振動させるための前記第２の振動信号とを生成する。操作対象制御部は、ユーザによる操作に基づいて、仮想空間内において所定の操作対象に第１の状態と第２の状態とを含む所定の動作を行わせる。前記振動信号生成部は、前記所定の動作において前記操作対象が前記第１の状態のときに、前記第１の振動部が前記第２の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成する。また、前記振動信号生成部は、前記所定の動作において前記操作対象が前記第２の状態のときに、前記第２の振動部が前記第１の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成する。
【０００８】
上記によれば、所定の操作対象が第１の状態のときには第１の振動部を第２の振動部よりも強く振動させ、所定の操作対象が第２の状態のときには第２の振動部を第１の振動部よりも強く振動させることができる。これにより、ユーザに、第１の振動部および第２の振動部の振動によって所定の操作対象の動作の状態を認識させることができる。
【０００９】
また、他の構成では、前記所定の動作は、前記操作対象が、交互に前記第１の状態と前記第２の状態とになる動作であってもよい。
【００１０】
上記によれば、前記操作対象が交互に第１の状態と第２の状態とになる動作に合わせて、第１の振動部と第２の振動部とを交互に強く振動させることができる。
【００１１】
また、他の構成では、前記操作対象制御部は、前記仮想空間の状況、前記操作対象の状況、および、ユーザによる操作のうちの少なくとも何れかに応じて、前記操作対象を前記第１の状態または前記第２の状態のいずれかの状態にしてもよい。
【００１２】
上記によれば、仮想空間や操作対象の状況、ユーザによる操作によって、第１の状態または第２の状態を選択することができる。例えば、仮想カメラが第１の位置に配置される場合は、操作対象に第１の状態となる動作を行わせることができ、仮想カメラが第２の位置に配置される場合は、操作対象に第２の状態となる動作を行わせることができる。
【００１３】
また、他の構成では、前記振動信号生成部は、前記第１振動部および前記第２振動部がそれぞれ、前記仮想空間内に配置される仮想的な振動源と前記操作対象または仮想カメラとの位置関係に応じた強さで振動するように、前記第１の振動信号および前記第２の振動信号をさらに生成してもよい。
【００１４】
上記によれば、操作対象の第１の状態又は第２の状態に応じた振動に加えて、上記位置関係に応じた振動を発生させることができる。仮想的な振動源と、操作対象または仮想カメラとの位置関係に応じて第１振動部および第２振動部が振動するため、仮想的な振動源の表示上の位置に応じた振動を発生させることができると共に、操作対象から見た仮想的な振動源の位置に応じた振動を発生させることができる。これにより、ユーザは、第１振動部および第２振動部の振動により、仮想空間の状況を認識することができると共に、操作対象の状況を認識することができる。例えば、ユーザは、画面の左右方向のうちのどの方向に振動源が存在するかや、操作対象から見て左右のどちらに振動源が存在するかを認識することができる。
【００１５】
また、他の構成では、前記振動信号生成部は、前記操作対象の前記所定の動作に基づいて生成される前記第１の振動信号と、前記仮想的な振動源に基づいて生成される前記第１の振動信号とが同時に生成されるとき、それぞれの前記第１の振動信号を合成し、前記操作対象の前記所定の動作に基づいて生成される前記第２の振動信号と、前記仮想的な振動源に基づいて生成される前記第２の振動信号とが同時に生成されるとき、それぞれの前記第２の振動信号を合成してもよい。
【００１６】
上記によれば、操作対象の所定の動作に基づく振動と、仮想的な振動源に基づく振動とを合成することができる。
【００１７】
また、他の構成では、前記振動信号生成部は、前記操作対象の前記仮想空間における位置に応じて異なる前記第１の振動信号および前記第２の振動信号を生成してもよい。
【００１８】
上記によれば、操作対象の仮想空間における位置に応じて、異なる振動を発生させることができる。例えば、仮想空間に複数種類の地面オブジェクトが配置される場合に、操作対象が動作を行っている地面オブジェクトの種類によって異なる振動を発生させることができる。
【００１９】
また、他の構成では、上記情報処理システムは、第１の操作部と、第２の操作部とをさらに備えてもよい。前記第１の振動部は前記第１の操作部に含まれてもよい。前記第２の振動部は前記第２の操作部に含まれてもよい。前記操作対象制御部は、前記第１の操作部および／または前記第２の操作部に対する操作に基づいて前記操作対象を制御してもよい。
【００２０】
上記によれば、第１の操作部および／または第２の操作部に対する操作に基づいて操作対象が制御され、当該操作対象の動作の状態によって第１の振動部および第２の振動部を振動させることができる。これにより、ユーザは、第１の操作部および／または第２の操作部に対して行った操作に応じた振動を感じることができる。
【００２１】
また、他の構成では、前記第１の操作部は、ユーザの左手で操作され、前記第２の操作部は、ユーザの右手で操作されてもよい。前記操作対象は、前記ユーザによって操作されるプレイヤキャラクタオブジェクトであってもよい。前記振動信号生成部は、前記仮想空間内において、前記プレイヤキャラクタオブジェクトの左側の部分に関して所定のイベントが発生しているときに、前記第１の振動部が前記第２の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成し、前記仮想空間内において、前記プレイヤキャラクタオブジェクトの右側の部分に関して所定のイベントが発生しているときに、前記第２の振動部が前記第１の振動部よりも強く振動するように、前記第１の振動信号および前記第２の振動信号を生成してもよい。
【００２２】
上記によれば、プレイヤキャラクタオブジェクトの左右の状態に合わせて、左右の振動部を振動させることができる。例えば、プレイヤキャラクタオブジェクトの左側の手に所定のイベントが発生しているとき（例えば、左手が壁の上端部についているとき。動物オブジェクトの左足が地面についているとき）、ユーザの左手で操作される第１の操作部をより強く振動させることができる。
【００２３】
また、他の発明は、上記情報処理システムにおいて実行される情報処理プログラムであってもよいし、当該情報処理プログラムを実行する情報処理装置であってもよい。また、他の発明は、上記情報処理システムにおいて行われる情報処理方法であってもよい。
【発明の効果】
【００２４】
本発明によれば、第１の振動部および第２の振動部の振動によって、ユーザに、所定の操作対象の動作の状態を認識させることができる。
【図面の簡単な説明】
【００２５】
【図１】本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図
【図２】本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図
【図３】本体装置２の一例を示す六面図
【図４】左コントローラ３の一例を示す六面図
【図５】右コントローラ４の一例を示す六面図
【図６】本体装置２の内部構成の一例を示すブロック図
【図７】本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図
【図８】本実施形態のゲームシステム１の機能構成の一例を示す図
【図９】第１実施例に係るゲームのシーンの一例を示す図
【図１０】プレイヤキャラクタ１３０が壁オブジェクト１３６に向かってジャンプしたときに表示される画像の一例を示す図
【図１１】プレイヤキャラクタ１３０の右後方に仮想カメラが配置されている場合において、プレイヤキャラクタ１３０が壁オブジェクト１３６に向かってジャンプしたときに表示される画像の一例を示す図
【図１２】画面に表示されるアニメーションと左右のコントローラ３，４に出力される振動制御信号とのタイミングの一例を示す図
【図１３】振動パターンデータＰ１に基づく振動の波形を示す図であり、アニメーションＡ１（右）が表示されているときの振動子１０７，１１７の振動波形の一例を示す図
【図１４】第２実施例に係るゲームのシーンの一例を示す図であり、プレイヤキャラクタ１３０が壁オブジェクト１３６にぶら下がった状態の一例を示す図
【図１５】プレイヤキャラクタ１３０が壁オブジェクト１３６の上端部を掴んでぶら下がったまま、右方向に移動する様子の一例を示す図
【図１６】アニメーションＡ２（右）と左右のコントローラ３，４に出力される振動制御信号とのタイミングの一例を示す図
【図１７】第３実施例に係るゲームのシーンの一例を示す図であり、プレイヤキャラクタ１３０が動物オブジェクト１４０の上に乗って移動するシーンの一例を示す図
【図１８】画面に表示されるアニメーションＡ３と左右のコントローラ３，４に出力される振動制御信号とのタイミングの一例を示す図
【図１９】地面オブジェクト１３５の種類と振動パターンデータとの対応関係の一例を示す図
【図２０】振動オブジェクト１５０と、プレイヤキャラクタ１３０と、仮想カメラ１５１とが配置された仮想空間を上方から見たときの一例を示す図
【図２１】仮想カメラ１５１がプレイヤキャラクタ１３０の周りに回転したときの振動オブジェクト１５０と、プレイヤキャラクタ１３０と、仮想カメラ１５１とが配置された仮想空間を上方から見たときの一例を示す図
【図２２】本体装置２に記憶されるデータの一例を示す図
【図２３】第１実施例に係るゲームのシーンが実行されるときの本体装置２において行われる情報処理の詳細を示すフローチャート
【図２４】第２実施例に係るゲームのシーンが実行されるときの本体装置２において行われる情報処理の詳細を示すフローチャート
【図２５】第３実施例に係るゲームのシーンが実行されるときの本体装置２において行われる情報処理の詳細を示すフローチャート
【図２６】第４実施例に係るゲームのシーンが実行されるときの本体装置２において行われる情報処理の詳細を示すフローチャート
【発明を実施するための形態】
【００２６】
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム１の一例は、本体装置（情報処理装置；本実施形態ではゲーム装置本体として機能する）２と左コントローラ３および右コントローラ４とを含む。本体装置２は、左コントローラ３および右コントローラ４がそれぞれ着脱可能である。つまり、ゲームシステム１は、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として利用できる。また、ゲームシステム１は、本体装置２と左コントローラ３および右コントローラ４とを別体として利用することもできる（図２参照）。以下では、本実施形態のゲームシステム１のハードウェア構成について説明し、その後に本実施形態のゲームシステム１の制御について説明する。
【００２７】
図１は、本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図である。図１に示すように、左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、ゲームシステム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００２８】
図２は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図１および図２に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。
【００２９】
図３は、本体装置２の一例を示す六面図である。図３に示すように、本体装置２は、略板状のハウジング１１を備える。本実施形態において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。
【００３０】
なお、ハウジング１１の形状および大きさは、任意である。一例として、ハウジング１１は、携帯可能な大きさであってよい。また、本体装置２単体または本体装置２に左コントローラ３および右コントローラ４が装着された一体型装置は、携帯型装置となってもよい。また、本体装置２または一体型装置が手持ち型の装置となってもよい。また、本体装置２または一体型装置が可搬型装置となってもよい。
【００３１】
図３に示すように、本体装置２は、ハウジング１１の主面に設けられるディスプレイ１２を備える。ディスプレイ１２は、本体装置２が生成した画像を表示する。本実施形態においては、ディスプレイ１２は、液晶表示装置（ＬＣＤ）とする。ただし、ディスプレイ１２は任意の種類の表示装置であってよい。
【００３２】
また、本体装置２は、ディスプレイ１２の画面上にタッチパネル１３を備える。本実施形態においては、タッチパネル１３は、マルチタッチ入力が可能な方式（例えば、静電容量方式）のものである。ただし、タッチパネル１３は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式（例えば、抵抗膜方式）のものであってもよい。
【００３３】
本体装置２は、ハウジング１１の内部においてスピーカ（すなわち、図６に示すスピーカ８８）を備えている。図３に示すように、ハウジング１１の主面には、スピーカ孔１１ａおよび１１ｂが形成される。そして、スピーカ８８の出力音は、これらのスピーカ孔１１ａおよび１１ｂからそれぞれ出力される。
【００３４】
また、本体装置２は、本体装置２が左コントローラ３と有線通信を行うための端子である左側端子１７と、本体装置２が右コントローラ４と有線通信を行うための右側端子２１を備える。
【００３５】
図３に示すように、本体装置２は、スロット２３を備える。スロット２３は、ハウジング１１の上側面に設けられる。スロット２３は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム１およびそれと同種の情報処理装置に専用の記憶媒体（例えば、専用メモリカード）である。所定の種類の記憶媒体は、例えば、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。また、本体装置２は、電源ボタン２８を備える。
【００３６】
本体装置２は、下側端子２７を備える。下側端子２７は、本体装置２がクレードルと通信を行うための端子である。本実施形態において、下側端子２７は、ＵＳＢコネクタ（より具体的には、メス側コネクタ）である。上記一体型装置または本体装置２単体をクレードルに載置した場合、ゲームシステム１は、本体装置２が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置２単体を充電する機能を有する。また、クレードルは、ハブ装置（具体的には、ＵＳＢハブ）の機能を有する。
【００３７】
図４は、左コントローラ３の一例を示す六面図である。図４に示すように、左コントローラ３は、ハウジング３１を備える。本実施形態においては、ハウジング３１は、縦長の形状、すなわち、上下方向（すなわち、図１および図４に示すｙ軸方向）に長い形状である。左コントローラ３は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング３１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ３は、横長となる向きで把持されることも可能である。左コントローラ３が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００３８】
左コントローラ３は、アナログスティック３２を備える。図４に示すように、アナログスティック３２は、ハウジング３１の主面に設けられる。アナログスティック３２は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック３２を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。なお、左コントローラ３は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック３２を押下する入力が可能である。
【００３９】
左コントローラ３は、各種操作ボタンを備える。左コントローラ３は、ハウジング３１の主面上に４つの操作ボタン３３〜３６（具体的には、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および左方向ボタン３６）を備える。さらに、左コントローラ３は、録画ボタン３７および−（マイナス）ボタン４７を備える。左コントローラ３は、ハウジング３１の側面の左上に第１Ｌボタン３８およびＺＬボタン３９を備える。また、左コントローラ３は、ハウジング３１の側面の、本体装置２に装着される際に装着される側の面に第２Ｌボタン４３および第２Ｒボタン４４を備える。これらの操作ボタンは、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。
【００４０】
また、左コントローラ３は、左コントローラ３が本体装置２と有線通信を行うための端子４２を備える。
【００４１】
図５は、右コントローラ４の一例を示す六面図である。図５に示すように、右コントローラ４は、ハウジング５１を備える。本実施形態においては、ハウジング５１は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００４２】
右コントローラ４は、左コントローラ３と同様、方向入力部としてアナログスティック５２を備える。本実施形態においては、アナログスティック５２は、左コントローラ３のアナログスティック３２と同じ構成である。また、右コントローラ４は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ４は、左コントローラ３と同様、ハウジング５１の主面上に４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、およびＹボタン５６）を備える。さらに、右コントローラ４は、＋（プラス）ボタン５７およびホームボタン５８を備える。また、右コントローラ４は、ハウジング５１の側面の右上に第１Ｒボタン６０およびＺＲボタン６１を備える。また、右コントローラ４は、左コントローラ３と同様、第２Ｌボタン６５および第２Ｒボタン６６を備える。
【００４３】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。
【００４４】
図６は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図３に示す構成の他、図６に示す各構成要素８１〜９１、９７、および９８を備える。これらの構成要素８１〜９１、９７、および９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００４５】
本体装置２は、プロセッサ８１を備える。プロセッサ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部であって、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のみから構成されてもよいし、ＣＰＵ機能、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）機能等の複数の機能を含むＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）から構成されてもよい。プロセッサ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、スロット２３に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００４６】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、プロセッサ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００４７】
本体装置２は、スロットインターフェース（以下、「Ｉ／Ｆ」と略記する。）９１を備える。スロットＩ／Ｆ９１は、プロセッサ８１に接続される。スロットＩ／Ｆ９１は、スロット２３に接続され、スロット２３に装着された所定の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書き込みを、プロセッサ８１の指示に応じて行う。
【００４８】
プロセッサ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００４９】
本体装置２は、ネットワーク通信部８２を備える。ネットワーク通信部８２は、プロセッサ８１に接続される。ネットワーク通信部８２は、ネットワークを介して外部の装置と通信（具体的には、無線通信）を行う。本実施形態においては、ネットワーク通信部８２は、第１の通信態様としてＷｉ−Ｆｉの規格に準拠した方式により、無線ＬＡＮに接続して外部装置と通信を行う。また、ネットワーク通信部８２は、第２の通信態様として所定の通信方式（例えば、独自プロトコルによる通信や、赤外線通信）により、同種の他の本体装置２との間で無線通信を行う。なお、上記第２の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置２との間で無線通信可能であり、複数の本体装置２の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【００５０】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、プロセッサ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、本実施形態においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。
【００５１】
プロセッサ８１は、上述の左側端子１７、右側端子２１、および下側端子２７に接続される。プロセッサ８１は、左コントローラ３と有線通信を行う場合、左側端子１７を介して左コントローラ３へデータを送信するとともに、左側端子１７を介して左コントローラ３から操作データを受信する。また、プロセッサ８１は、右コントローラ４と有線通信を行う場合、右側端子２１を介して右コントローラ４へデータを送信するとともに、右側端子２１を介して右コントローラ４から操作データを受信する。また、プロセッサ８１は、クレードルと通信を行う場合、下側端子２７を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置２は、左コントローラ３および右コントローラ４との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置または本体装置２単体がクレードルに装着された場合、本体装置２は、クレードルを介してデータ（例えば、画像データや音声データ）を据置型モニタ等に出力することができる。
【００５２】
ここで、本体装置２は、複数の左コントローラ３と同時に（換言すれば、並行して）通信を行うことができる。また、本体装置２は、複数の右コントローラ４と同時に（換言すれば、並行して）通信を行うことができる。したがって、複数のユーザは、左コントローラ３および右コントローラ４のセットをそれぞれ用いて、本体装置２に対する入力を同時に行うことができる。一例として、第１ユーザが左コントローラ３および右コントローラ４の第１セットを用いて本体装置２に対して入力を行うと同時に、第２ユーザが左コントローラ３および右コントローラ４の第２セットを用いて本体装置２に対して入力を行うことが可能となる。
【００５３】
本体装置２は、タッチパネル１３の制御を行う回路であるタッチパネルコントローラ８６を備える。タッチパネルコントローラ８６は、タッチパネル１３とプロセッサ８１との間に接続される。タッチパネルコントローラ８６は、タッチパネル１３からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ８１へ出力する。
【００５４】
また、ディスプレイ１２は、プロセッサ８１に接続される。プロセッサ８１は、（例えば、上記の情報処理の実行によって）生成した画像および／または外部から取得した画像をディスプレイ１２に表示する。
【００５５】
本体装置２は、コーデック回路８７およびスピーカ（具体的には、左スピーカおよび右スピーカ）８８を備える。コーデック回路８７は、スピーカ８８および音声入出力端子２５に接続されるとともに、プロセッサ８１に接続される。コーデック回路８７は、スピーカ８８および音声入出力端子２５に対する音声データの入出力を制御する回路である。
【００５６】
また、本体装置２は、加速度センサ８９を備える。本実施形態においては、加速度センサ８９は、所定の３軸（例えば、図１に示すｘｙｚ軸）方向に沿った加速度の大きさを検出する。なお、加速度センサ８９は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。
【００５７】
また、本体装置２は、角速度センサ９０を備える。本実施形態においては、角速度センサ９０は、所定の３軸（例えば、図１に示すｘｙｚ軸）回りの角速度を検出する。なお、角速度センサ９０は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。
【００５８】
加速度センサ８９および角速度センサ９０は、プロセッサ８１に接続され、加速度センサ８９および角速度センサ９０の検出結果は、プロセッサ８１へ出力される。プロセッサ８１は、上記の加速度センサ８９および角速度センサ９０の検出結果に基づいて、本体装置２の動きおよび／または姿勢に関する情報を算出することが可能である。
【００５９】
本体装置２は、電力制御部９７およびバッテリ９８を備える。電力制御部９７は、バッテリ９８およびプロセッサ８１に接続される。また、図示しないが、電力制御部９７は、本体装置２の各部（具体的には、バッテリ９８の電力の給電を受ける各部、左側端子１７、および右側端子２１）に接続される。電力制御部９７は、プロセッサ８１からの指令に基づいて、バッテリ９８から上記各部への電力供給を制御する。
【００６０】
また、バッテリ９８は、下側端子２７に接続される。外部の充電装置（例えば、クレードル）が下側端子２７に接続され、下側端子２７を介して本体装置２に電力が供給される場合、供給された電力がバッテリ９８に充電される。
【００６１】
図７は、本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図である。なお、本体装置２に関する内部構成の詳細については、図６で示しているため図７では省略している。
【００６２】
左コントローラ３は、本体装置２との間で通信を行う通信制御部１０１を備える。図７に示すように、通信制御部１０１は、端子４２を含む各構成要素に接続される。本実施形態においては、通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１０１は、左コントローラ３が本体装置２に対して行う通信方法を制御する。すなわち、左コントローラ３が本体装置２に装着されている場合、通信制御部１０１は、端子４２を介して本体装置２と通信を行う。また、左コントローラ３が本体装置２から外されている場合、通信制御部１０１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１０１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００６３】
また、左コントローラ３は、例えばフラッシュメモリ等のメモリ１０２を備える。通信制御部１０１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１０２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００６４】
左コントローラ３は、各ボタン１０３（具体的には、ボタン３３〜３９、４３、４４、および４７）を備える。また、左コントローラ３は、アナログスティック（図７では「スティック」と記載する）３２を備える。各ボタン１０３およびアナログスティック３２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１０１へ出力する。
【００６５】
左コントローラ３は、慣性センサを備える。具体的には、左コントローラ３は、加速度センサ１０４を備える。また、左コントローラ３は、角速度センサ１０５を備える。本実施形態においては、加速度センサ１０４は、所定の３軸（例えば、図４に示すｘｙｚ軸）方向に沿った加速度の大きさを検出する。なお、加速度センサ１０４は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ１０５は、所定の３軸（例えば、図４に示すｘｙｚ軸）回りの角速度を検出する。なお、角速度センサ１０５は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。加速度センサ１０４および角速度センサ１０５は、それぞれ通信制御部１０１に接続される。そして、加速度センサ１０４および角速度センサ１０５の検出結果は、適宜のタイミングで繰り返し通信制御部１０１へ出力される。
【００６６】
通信制御部１０１は、各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から、入力に関する情報（具体的には、操作に関する情報、またはセンサによる検出結果）を取得する。通信制御部１０１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００６７】
上記操作データが本体装置２へ送信されることによって、本体装置２は、左コントローラ３に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１０３およびアナログスティック３２に対する操作を、操作データに基づいて判別することができる。また、本体装置２は、左コントローラ３の動きおよび／または姿勢に関する情報を、操作データ（具体的には、加速度センサ１０４および角速度センサ１０５の検出結果）に基づいて算出することができる。
【００６８】
左コントローラ３は、振動によってユーザに通知を行うための振動子１０７を備える。本実施形態においては、振動子１０７は、本体装置２からの指令によって制御される。すなわち、通信制御部１０１は、本体装置２からの上記指令を受け取ると、当該指令に従って振動子１０７を駆動させる。ここで、左コントローラ３は、コーデック部１０６を備える。通信制御部１０１は、上記指令を受け取ると、指令に応じた制御信号をコーデック部１０６へ出力する。コーデック部１０６は、通信制御部１０１からの制御信号から振動子１０７を駆動させるための駆動信号を生成して振動子１０７へ与える。これによって振動子１０７が動作する。
【００６９】
振動子１０７は、より具体的にはリニア振動モータである。リニア振動モータは、回転運動をする通常のモータと異なり、入力される電圧に応じて所定方向に駆動されるため、入力される電圧の波形に応じた振幅および周波数で振動をさせることができる。本実施形態において、本体装置２から左コントローラ３に送信される振動制御信号は、単位時間ごとに周波数と振幅とを表すデジタル信号であってよい。別の実施形態においては、本体装置２から波形そのものを示す情報を送信するようにしてもよいが、振幅および周波数だけを送信することで通信データ量を削減することができる。また、さらにデータ量を削減するため、そのときの振幅および周波数の数値に替えて、前回の値からの差分だけを送信するようにしてもよい。この場合、コーデック部１０６は、通信制御部１０１から取得される振幅および周波数の値を示すデジタル信号をアナログの電圧の波形に変換し、当該波形に合わせて電圧を入力することで振動子１０７を駆動させる。したがって、本体装置２は、単位時間ごとに送信する振幅および周波数を変えることによって、そのときに振動子１０７を振動させる振幅および周波数を制御することができる。なお、本体装置２から左コントローラ３に送信される振幅および周波数は、１つに限らず、２つ以上送信するようにしてもよい。その場合、コーデック部１０６は、受信された複数の振幅および周波数それぞれが示す波形を合成することで、振動子１０７を制御する電圧の波形を生成することができる。
【００７０】
左コントローラ３は、電力供給部１０８を備える。本実施形態において、電力供給部１０８は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ３の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。
【００７１】
図７に示すように、右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。また、右コントローラ４は、通信制御部１１１に接続されるメモリ１１２を備える。通信制御部１１１は、端子６４を含む各構成要素に接続される。通信制御部１１１およびメモリ１１２は、左コントローラ３の通信制御部１０１およびメモリ１０２と同様の機能を有する。したがって、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信（具体的には、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信）との両方で本体装置２と通信を行うことが可能であり、右コントローラ４が本体装置２に対して行う通信方法を制御する。
【００７２】
右コントローラ４は、左コントローラ３の各入力部と同様の各入力部を備える。具体的には、各ボタン１１３、アナログスティック５２、慣性センサ（加速度センサ１１４および角速度センサ１１５）を備える。これらの各入力部については、左コントローラ３の各入力部と同様の機能を有し、同様に動作する。
【００７３】
また、右コントローラ４は、振動子１１７およびコーデック部１１６を備える。振動子１１７およびコーデック部１１６は、左コントローラ３の振動子１０７およびコーデック部１０６と同様に動作する。すなわち、通信制御部１１１は、本体装置２からの指令に従って、コーデック部１１６を用いて振動子１１７を動作させる。
【００７４】
右コントローラ４は、処理部１２１を備える。処理部１２１は、通信制御部１１１に接続される。
【００７５】
右コントローラ４は、電力供給部１１８を備える。電力供給部１１８は、左コントローラ３の電力供給部１０８と同様の機能を有し、同様に動作する。
【００７６】
次に、ゲームシステム１において行われるゲームについて説明する。本実施形態では、プレイヤは、左手に左コントローラ３を把持し、右手に右コントローラ４を把持してゲームを行う。本実施形態では、プレイヤによって操作されるキャラクタの動作の状態に応じて左コントローラ３の振動子１０７および右コントローラ４の振動子１１７を振動させる。なお、左コントローラ３および右コントローラ４が本体装置２から分離された状態でゲームが行われてもよいし、図１に示されるように、左コントローラ３および右コントローラ４が本体装置２に装着された状態でゲームが行われてもよい。
【００７７】
図８は、本実施形態のゲームシステム１の機能構成の一例を示す図である。図８に示されるように、本体装置２は、キャラクタ制御部２００と、画像生成部２０１と、振動信号生成部２０２と、振動信号送信部２０３とを含む。本体装置２のプロセッサ８１は、所定のゲームプログラムを実行することにより、キャラクタ制御部２００、画像生成部２０１、振動信号生成部２０２、振動信号送信部２０３として機能する。所定のゲームプログラムは、例えば、スロット２３に装着される外部記憶媒体に記憶されてもよいし、フラッシュメモリ８４に記憶されてもよいし、外部からネットワークを介して取得されてもよい。
【００７８】
キャラクタ制御部２００は、左コントローラ３および右コントローラ４の各ボタン１０３，１１３、アナログスティック（以下、単に「スティック」と表記する）３２，５２に対して行われたプレイヤの操作に応じた操作データを取得する。そして、キャラクタ制御部２００は、取得した操作データに基づいて、操作対象（プレイヤキャラクタや動物キャラクタ）を制御する。例えば、キャラクタ制御部２００は、左コントローラ３のスティック３２に対する操作に応じた操作データに基づいて、プレイヤキャラクタを仮想空間内で移動させる。また、例えば、プレイヤキャラクタが後述する動物キャラクタの上に乗っている場合、キャラクタ制御部２００は、スティック３２に対する操作に応じた操作データに基づいて、動物キャラクタを仮想空間内で移動させる。また、キャラクタ制御部２００は、例えば、右コントローラ４の各ボタン１１３（例えば、Ａボタン５３）に対する操作に応じた操作データに基づいて、プレイヤキャラクタを仮想空間内でジャンプさせる。
【００７９】
画像生成部２０１は、仮想空間に配置された仮想カメラを用いて、プレイヤによって操作される操作対象を含む仮想空間の画像を生成する。画像生成部２０１は、所定の時間間隔（例えば、１／６０秒間隔）で仮想空間の画像を生成する。画像生成部２０１によって生成された画像は、ディスプレイ１２に出力されて表示される。画像生成部２０１によって所定の時間間隔で画像が生成されることにより、ディスプレイ１２には、プレイヤキャラクタが移動したりジャンプしたりする動作を行うアニメーションが表示される。なお、画像生成部２０１によって生成された画像は、ディスプレイ１２とは異なる外部の表示装置（例えば、テレビジョン受像機）に表示されてもよい。
【００８０】
振動信号生成部２０２は、キャラクタ制御部２００によって制御される操作対象の動作に応じた第１の振動制御信号および第２の振動制御信号を生成する。生成された第１の振動制御信号および第２の振動制御信号は、振動信号送信部２０３によって左コントローラ３および右コントローラ４にそれぞれ送信される。左コントローラ３の振動子１０７および右コントローラ４の振動子１１７は、振動制御信号に基づく強さで振動する。
【００８１】
具体的には、振動信号生成部２０２は、予め記憶された振動パターンデータに基づいて、振動の周波数および振幅を含む第１の振動制御信号および第２の振動制御信号を生成する。振動子１０７は、第１の振動制御信号に応じた周波数および振幅で振動する。また、振動子１１７は、第２の振動制御信号に応じた周波数および振幅で振動する。第１の振動制御信号および第２の振動制御信号は、所定の時間間隔（例えば、５ｍ秒間隔）で生成され、振動子１０７，１１７にそれぞれ送信される。これにより、振動子１０７および振動子１１７は振動パターンデータに応じた波形で振動する。なお、振動信号生成部２０２は、振動パターンデータに応じた振動の強さ（振幅）を調整することができる。振動の強さの調整については後述する。
【００８２】
本実施形態におけるゲームでは、以下に示す第１実施例〜第４実施例に係るゲームのシーンが実行される。以下、各実施例について説明する。
【００８３】
（第１実施例）
図９は、第１実施例に係るゲームのシーンの一例を示す図である。図１０は、プレイヤキャラクタ１３０が壁オブジェクト１３６に向かってジャンプしたときに表示される画像の一例を示す図である。
【００８４】
図９に示されるように、仮想空間には、プレイヤキャラクタ１３０と、地面オブジェクト１３５と、壁オブジェクト１３６とが配置される。また、仮想空間には仮想カメラ（図示せず）が配置される。仮想カメラは、プレイヤキャラクタ１３０から所定範囲に配置される。仮想カメラに基づいて、プレイヤキャラクタ１３０を含む仮想空間の画像が生成され、当該生成された画像がディスプレイ１２又は外部の表示装置に表示される。なお、仮想空間には、上記の他にも、様々なオブジェクト（敵オブジェクト等）が配置される。
【００８５】
プレイヤキャラクタ１３０は、プレイヤ（ユーザ）によって操作される操作対象である。プレイヤは、左コントローラ３および右コントローラ４を用いてプレイヤキャラクタ１３０を動作させる。地面オブジェクト１３５は、仮想空間の地面を形成するオブジェクトである。壁オブジェクト１３６は、地面オブジェクト１３５に対して略垂直に配置されるオブジェクトであり、地面オブジェクト１３５から仮想空間の高さ方向に伸びるオブジェクトである。
【００８６】
プレイヤキャラクタ１３０は、プレイヤの操作に応じて、地面オブジェクト１３５上を移動したり、地面オブジェクト１３５上でジャンプしたりする。図９に示されるように、プレイヤキャラクタ１３０が壁オブジェクト１３６の近傍において壁オブジェクト１３６に向かってジャンプすると、図１０に示されるような画像が表示される。具体的には、プレイヤキャラクタ１３０が壁オブジェクト１３６に片手を接触させながら、仮想空間の下方に落下する様子が表示される。このとき、プレイヤキャラクタ１３０は、仮想カメラを向いて、右手または左手を壁オブジェクト１３６につけながら（右手または左手を滑らせながら）下方に落下する。
【００８７】
例えば、図１０に示されるように、プレイヤキャラクタ１３０を左後方から見るように仮想カメラが配置されている場合には、プレイヤキャラクタ１３０は、仮想カメラを向くと共に、右手１３１を壁オブジェクト１３６につけながら下方に落下する。この場合、プレイヤキャラクタ１３０の右手１３１は、プレイヤから見ると左側にある。プレイヤキャラクタ１３０が右手１３１を壁オブジェクト１３６につけながら下方に落下している間、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７が振動する。
【００８８】
具体的には、プレイヤキャラクタ１３０が右手１３１を壁オブジェクト１３６につけながら下方に落下している間（プレイヤから見てプレイヤキャラクタ１３０の左側の手が壁オブジェクト１３６についている間）、右コントローラ４よりも左コントローラ３が強く振動するように、第１の振動制御信号および第２の振動制御信号が生成される。生成された第１の振動制御信号および第２の振動制御信号は、左コントローラ３および右コントローラ４にそれぞれ送信され、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７がそれぞれ振動される。
【００８９】
図１１は、プレイヤキャラクタ１３０の右後方に仮想カメラが配置されている場合において、プレイヤキャラクタ１３０が壁オブジェクト１３６に向かってジャンプしたときに表示される画像の一例を示す図である。図１１に示されるように、プレイヤキャラクタ１３０を右後方から見るように仮想カメラが配置されている場合には、プレイヤキャラクタ１３０は、仮想カメラを向くと共に、左手１３２を壁オブジェクト１３６につけながら下方に落下する。この場合、プレイヤキャラクタ１３０の左手１３２は、プレイヤから見ると右側にある。プレイヤキャラクタ１３０が左手１３２を壁オブジェクト１３６につけながら下方に落下している間、左コントローラ３よりも右コントローラ４が強く振動するように、第１の振動制御信号および第２の振動制御信号が生成される。
【００９０】
このように、本実施形態では、プレイヤキャラクタ１３０の手（例えば右手１３１）が壁オブジェクト１３６についた状態でプレイヤキャラクタ１３０が落下する場合、プレイヤから見た側の手（左手）に対応するコントローラ（左コントローラ３）が、反対側のコントローラ（右コントローラ４）よりも強く振動する。
【００９１】
なお、図１０および図１１に示す画像が表示される場合において、左右のコントローラの振動の強さが上記とは逆であってもよい。すなわち、プレイヤキャラクタ１３０の右手１３１が壁オブジェクト１３６についている場合には、右コントローラ４を左コントローラ３よりも強く振動させてもよい。また、プレイヤキャラクタ１３０の左手１３２が壁オブジェクト１３６についている場合には、左コントローラ３を右コントローラ４よりも強く振動させてもよい。
【００９２】
図１２は、画面に表示されるアニメーションと左右のコントローラ３，４に出力される振動制御信号とのタイミングの一例を示す図である。プレイヤの操作によってプレイヤキャラクタ１３０が壁オブジェクト１３６に向かってジャンプした場合、例えば、プレイヤキャラクタ１３０が左手（プレイヤから見て右側の手）を壁オブジェクト１３６につきながら下方に落下するアニメーションＡ１（以下では、「アニメーションＡ１（右）」と表記する）が表示される。
【００９３】
図１２に示されるように、例えば、時点Ｔｓ１においてアニメーションＡ１（右）の表示が開始される。このアニメーションＡ１（右）の表示に伴って、第１の振動制御信号および第２の振動制御信号が、本体装置２から左コントローラ３および右コントローラ４にそれぞれ出力される。第１の振動制御信号および第２の振動制御信号は、アニメーションＡ１（右）が表示されている間、所定の時間間隔（例えば、５ｍ秒間隔）で出力される。アニメーションＡ１（右）の表示は、時点Ｔｅ１において終了する。アニメーションＡ１（右）の表示が終了すると、振動制御信号の出力も終了する。
【００９４】
アニメーションＡ１（右）が表示されている間、右コントローラ４の振動子１１７が左コントローラ３の振動子１０７よりも強く振動する。例えば、アニメーションＡ１（右）が表示されている間、右コントローラ４の振動子１１７は強さ「１」で振動し、左コントローラ３の振動子１０７は強さ「０．４」で振動する。
【００９５】
具体的には、アニメーションＡ１に応じた振動波形を示す振動パターンデータＰ１が記憶されており、当該振動パターンデータＰ１に基づく振動制御信号が、本体装置２から各コントローラ３，４に出力される。これにより、各コントローラの振動子１０７，１１７は、振動パターンデータＰ１に応じた波形で振動する。振動パターンデータに応じた振動の強さは、「０」〜「１」の間で調整される。
【００９６】
図１３は、振動パターンデータＰ１に基づく振動の波形を示す図であり、アニメーションＡ１（右）が表示されているときの振動子１０７，１１７の振動波形の一例を示す図である。
【００９７】
図１３に示されるように、振動パターンデータＰ１に基づいて、各時点における振動の周波数および振幅が制御され、振動子１１７が振動する。アニメーションＡ１（右）が表示される場合、右コントローラ４の振動子１１７は、図に示すような波形で振動する。このときの振動子１１７の振動の強さを「１」とする。すなわち、振動パターンデータＰ１に基づく振動波形の振動の強さ（調整前の強さ）を「１」とする。この場合、左コントローラ３の振動子１０７は、右コントローラ４の振動子１１７と同じ振動パターンデータＰ１に基づいて振動するが、振動の強さは振動子１１７よりも小さい。例えば、右コントローラ４の振動子１１７は、強さ「１」で振動するのに対して、左コントローラ３の振動子１０７は、強さ「０．４」で振動する。
【００９８】
振動の強さの調整は、振動パターンデータに基づく振幅を低減することによって行われる。具体的には、振動信号生成部２０２は、振動パターンデータに基づいて、その時点における振動の周波数Ｆと、基準となる振幅Ａを読み取る。そして、例えば、強さ「１」で振動子を振動させる場合、振動信号生成部２０２は、読み取った周波数Ｆと振幅Ａとを含む振動制御信号を振動信号送信部２０３に出力する。
【００９９】
一方、例えば、強さ「０．４」で振動子を振動させる場合、振動信号生成部２０２は、振動パターンデータに基づいて読み取った基準となる振幅Ａに「０．４」をかけることで、低減した振幅Ａ’を算出する。そして、振動信号生成部２０２は、読み取った周波数Ｆと、算出した振幅Ａ’とを含む振動制御信号を振動信号送信部２０３に出力する。振動信号送信部２０３は、振動信号生成部２０２から出力された周波数および振幅を含む振動制御信号を、各コントローラに出力する。
【０１００】
なお、左右の振動子の振動の強さは上記に限らず、適宜変更されてもよい。例えば、アニメーションＡ１（右）が表示されている間、右コントローラ４の振動子１１７を強さ「１」で振動させる一方、左コントローラ３の振動子１０７を振動させなくてもよい（強さ「０」であってもよい）。また、アニメーションＡ１（右）が表示されている間、右コントローラ４の振動子１１７を強さ「１」で振動させ、左コントローラ３の振動子１０７を強さ「０．１」で振動させてもよい。
【０１０１】
また、振動の強さは固定されず、ゲームの状況に応じて、振動の強さが「０」〜「１」の範囲で調整されてもよい。例えば、アニメーションＡ１（右）が表示される場合において、壁オブジェクト１３６の種類に応じて、右コントローラ４の振動子１１７および左コントローラ３の振動子１０７の振動の強さを「０」〜「１」の範囲で調整してもよい。この場合、右コントローラ４の振動子１１７を左コントローラ３の振動子１０７よりも強く振動させる。
【０１０２】
また、アニメーションＡ１（右）が表示されるときに用いられる振動パターンデータと、アニメーションＡ１（左）が表示されるときに用いられる振動パターンデータとは同じであってもよいし、異なってもよい。すなわち、アニメーションＡ１（右）が表示されるときには、第１の振動パターンデータＰ１に基づいて振動子１０７および１１７の振動が制御され、アニメーションＡ１（左）が表示されるときには、第１の振動パターンデータＰ１とは異なる第２の振動パターンデータＰ１に基づいて振動子１０７および１１７の振動が制御されてもよい。
【０１０３】
また、仮想空間内の異なる位置に複数種類の壁オブジェクト１３６が配置され、壁オブジェクト１３６の種類によって（仮想空間内の位置によって）、異なる振動パターンデータが用いられてもよい。また、同じ壁オブジェクト１３６のうちプレイヤキャラクタ１３０が手をつく領域（位置）によって異なる振動パターンデータが用いられてもよい。
【０１０４】
図１２に戻り、アニメーションＡ１（右）の表示が終了した後、さらにプレイヤの操作によって、プレイヤキャラクタ１３０が壁オブジェクト１３６に向かってジャンプしたとする。この場合、プレイヤキャラクタ１３０が右手（プレイヤから見て左側の手）を壁オブジェクト１３６につきながら下方に落下するアニメーションＡ１（以下では、「アニメーションＡ１（左）」と表記する）が表示される。
【０１０５】
アニメーションＡ１（左）が表示されている間、左コントローラ３の振動子１０７が右コントローラ４の振動子１１７よりも強く振動する。例えば、アニメーションＡ１（左）が表示されている間、右コントローラ４の振動子１１７は強さ「０．４」で振動し、左コントローラ３の振動子１０７は強さ「１」で振動する。なお、アニメーションＡ１（左）が表示されている間、振動子１０７および振動子１１７は、アニメーションＡ１（右）が表示される場合と同じ振動パターンデータＰ１に基づいて振動する。
【０１０６】
このように、表示されるアニメーションに応じて左右のコントローラ３，４を振動させることにより、プレイヤに、プレイヤキャラクタ１３０の状態（左手を壁オブジェクト１３６につけている状態、又は右手を壁オブジェクト１３６につけている状態）に応じた振動を感じさせることができる。これにより、プレイヤは、自身の左右の手に伝わる振動によってゲーム内のプレイヤキャラクタ１３０の状態を知ることができる。特に、左右のコントローラ３，４で振動の強さが異なるため、プレイヤは、プレイヤキャラクタ１３０の左右の状態（左右何れの手を壁オブジェクト１３６につけているか）を認識することができる。また、プレイヤキャラクタ１３０の動作の状態に応じてプレイヤに振動を感じさせることで、ゲームの興趣性が向上するとともに、ゲームの臨場感を高めることができる。
【０１０７】
（第２実施例）
次に、第２実施例に係るゲームのシーンについて説明する。図１４は、第２実施例に係るゲームのシーンの一例を示す図であり、プレイヤキャラクタ１３０が壁オブジェクト１３６にぶら下がった状態の一例を示す図である。図１５は、プレイヤキャラクタ１３０が壁オブジェクト１３６の上端部を掴んでぶら下がったまま、右方向に移動する様子の一例を示す図である。
【０１０８】
例えば、プレイヤキャラクタ１３０が下側の地面オブジェクト１３５からジャンプすることによって壁オブジェクト１３６と上側の地面オブジェクト１３７との境界付近に達した場合、プレイヤキャラクタ１３０は、壁オブジェクト１３６の上端部を掴んでぶら下がった状態となる（図１４）。この状態でプレイヤが左コントローラ３のスティック３２を用いて左右方向を入力すると、プレイヤキャラクタ１３０は、壁オブジェクト１３６の上端部を掴んだまま、スティック３２の入力方向に移動する（図１５）。このとき、プレイヤキャラクタ１３０は、左右の手を交互に壁オブジェクト１３６の上端部につけながら右方向に移動する。
【０１０９】
具体的には、図１５に示されるように、ある瞬間ではプレイヤキャラクタ１３０の右手が壁オブジェクト１３６の上端部についた状態であり、その瞬間においてはプレイヤキャラクタ１３０の左手は浮いた状態となる。次の瞬間では、プレイヤキャラクタ１３０の左手が壁オブジェクト１３６の上端部についた状態となり、かつ、プレイヤキャラクタ１３０の右手が浮いた状態となる。このように、プレイヤキャラクタ１３０は、左右の手を交互に壁オブジェクト１３６の上端部につけながら、右方向に移動する。
【０１１０】
本実施形態のゲームでは、スティック３２の右方向が入力された場合、プレイヤキャラクタ１３０が右手をついた後、左手をつくアニメーションＡ２（右）が表示される。プレイヤがスティック３２の右方向を入力し続けている場合、アニメーションＡ２（右）が繰り返し表示される。これにより、プレイヤキャラクタ１３０が右方向に移動する様子が表示される。また、スティック３２の左方向が入力された場合、プレイヤキャラクタ１３０が左手をついた後、右手をつくアニメーションＡ２（左）が表示される。プレイヤがスティック３２の左方向を入力し続けている場合、アニメーションＡ２（左）が繰り返し表示される。これにより、プレイヤキャラクタ１３０が左方向に移動する様子が表示される。
【０１１１】
図１６は、アニメーションＡ２（右）と左右のコントローラ３，４に出力される振動制御信号とのタイミングの一例を示す図である。プレイヤキャラクタ１３０が壁オブジェクト１３６の上端部を掴んだ状態で右方向に移動する場合、アニメーションＡ２（右）が表示される。図１６では、時点Ｔｓから時点Ｔｅまでの期間でプレイヤキャラクタ１３０が右手をついた後、左手をつくアニメーションＡ２（右）が表示される場合について示されている。
【０１１２】
図１６に示されるように、時点ＴｓにおいてアニメーションＡ２の表示が開始されると、まず、プレイヤキャラクタ１３０の右手が浮いた状態となり、時点Ｔ１において、プレイヤキャラクタ１３０の右手が壁オブジェクト１３６の上端部につく。この右手が壁オブジェクト１３６の上端部につく際に、振動制御信号が本体装置２から各コントローラ３，４に出力され、左コントローラの振動子１０７および右コントローラの振動子１１７が振動する。時点Ｔ１から時点Ｔ２までの間、プレイヤキャラクタ１３０の右手が壁オブジェクト１３６の上端部についた状態となり、この間、例えば５ｍ秒間隔で振動制御信号が本体装置２から各コントローラ３，４に繰り返し出力される。
【０１１３】
具体的には、アニメーションＡ２が表示される際に用いられる振動パターンデータＰ２が予め記憶されている。アニメーションＡ２が表示される場合、時点Ｔ１において、振動パターンデータＰ２に基づく第１の振動制御信号および第２の振動制御信号が、本体装置２から各コントローラ３，４にそれぞれ出力される。これにより、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７が振動する。このとき、左コントローラの振動子１０７よりも右コントローラの振動子１１７が強く振動するように、振動の強さが調整される。例えば、右コントローラ４の振動子１１７は強さ「１」で振動し、左コントローラの振動子１０７は強さ「０．３」で振動する。振動の強さの調整は、第１実施例で説明した通りである。
【０１１４】
次に、時点Ｔ２において、プレイヤキャラクタ１３０の左手が壁オブジェクト１３６の上端部につく。時点Ｔ２より前にプレイヤキャラクタ１３０の左手が浮いた状態となり、時点Ｔ２において、プレイヤキャラクタ１３０の左手が壁オブジェクト１３６の上端部につく。この左手が壁オブジェクト１３６の上端部につく際に、第１の振動制御信号および第２の振動制御信号が本体装置２から各コントローラ３，４にそれぞれ出力される。時点Ｔ２から時点Ｔｅまでの間、プレイヤキャラクタ１３０の左手が壁オブジェクト１３６の上端部についた状態となり、この間、例えば５ｍ秒間隔で振動制御信号が本体装置２から各コントローラ３，４に繰り返し出力される。このとき、右コントローラの振動子１１７よりも左コントローラの振動子１０７が強く振動するように、振動の強さが調整される。例えば、右コントローラ４の振動子１１７は強さ「０．３」で振動し、左コントローラ３の振動子１０７は強さ「１」で振動する。
【０１１５】
プレイヤがスティック３２の右方向を入力し続けている場合は、アニメーションＡ２が繰り返し表示され、右手をついた状態と左手をついた状態とが交互に表示される。アニメーションＡ２の表示に伴って、上記のように振動制御信号が繰り返し出力される。これにより、プレイヤキャラクタ１３０の左右の手が交互に壁オブジェクト１３６の上端部につく動作に合わせて、左右のコントローラが交互に強く振動する。
【０１１６】
なお、図１６は単なる一例であり、プレイヤキャラクタ１３０の手の状態が変化するタイミング、振動が終了するタイミング、振動の強さ等は適宜変更されてもよい。例えば、プレイヤキャラクタ１３０の右手がついた状態（時点Ｔ１から時点Ｔ２までの状態）と、プレイヤキャラクタ１３０の左手がついた状態（時点Ｔ２から時点Ｔｅまでの状態）との間に、異なる状態（例えば、両手をついた状態）があってもよい。
【０１１７】
また、上記では、プレイヤキャラクタ１３０の右手がついた状態では、右コントローラ４を強く振動させる振動制御信号（左コントローラ３を強さ「０．３」で振動させる第１の振動制御信号、および、右コントローラ４を強さ「１」で振動させる第２の振動制御信号）が繰り返し出力された。右コントローラ４を強く振動させる振動制御信号の出力は、プレイヤキャラクタ１３０の右手がついた時点Ｔ１から時点Ｔ３（＜Ｔ２）までの期間だけ、行われてもよい。この場合、時点Ｔ３から時点Ｔ２までは振動制御信号は出力されず、左右のコントローラ３，４の振動は停止する。そして、時点Ｔ２において、プレイヤキャラクタ１３０の左手がつくとともに、左コントローラ３を強く振動させる振動制御信号（左コントローラ３を強さ「１」で振動させる第１の振動制御信号、および、右コントローラ４を強さ「０．３」で振動させる第２の振動制御信号）の出力が開始される。また、右コントローラ４の強い振動が行われているときに、左コントローラ３の強い振動が開始してもよい（すなわち、右コントローラ４の強い振動が時点Ｔ２まで行われ、かつ、左コントローラ３の強い振動が時点Ｔ２よりも前に開始されてもよい）。
【０１１８】
また、例えば、プレイヤキャラクタ１３０の左手が壁オブジェクト１３６の上端部につくときに、左コントローラの振動子１０７は強さ「１」で振動する一方で、右コントローラ４の振動子１１７は振動しなくてもよい。また、プレイヤキャラクタ１３０の左手が壁オブジェクト１３６の上端部につくときに、左コントローラの振動子１０７は強さ「１」で振動し、右コントローラ４の振動子１１７は強さ「０．１」で振動してもよい。
【０１１９】
このように、プレイヤキャラクタ１３０が両手を交互につくタイミングに合わせて左右のコントローラを振動させることにより、プレイヤは、振動によってプレイヤキャラクタ１３０の動作の状態を認識することができる。また、左右のコントローラの振動の強さを異ならせることにより、プレイヤは、特にプレイヤキャラクタ１３０の左右の状態を認識することができる。また、プレイヤ自身があたかもプレイヤキャラクタ１３０となって仮想空間内でプレイヤキャラクタ１３０の動作と同じ動作をしているような印象を与えることができ、ゲームの臨場感を高めることができる。
【０１２０】
（第３実施例）
次に、第３実施例に係るゲームのシーンについて説明する。図１７は、第３実施例に係るゲームのシーンの一例を示す図であり、プレイヤキャラクタ１３０が動物オブジェクト１４０の上に乗って移動するシーンの一例を示す図である。
【０１２１】
本実施形態のゲームでは、プレイヤキャラクタ１３０が仮想空間に配置された動物オブジェクト１４０の上に乗った場合、プレイヤキャラクタ１３０を乗せた動物オブジェクト１４０が仮想空間内を移動する。動物オブジェクト１４０は、プレイヤの操作に応じて制御される操作対象である。
【０１２２】
動物オブジェクト１４０は、左前足１４１と、右前足１４２と、右後足１４３と、左後足１４４とを有する。プレイヤキャラクタ１３０が動物オブジェクト１４０の上に乗っている間、動物オブジェクト１４０が仮想空間の地面オブジェクト１３５上を走るアニメーション（以下、「アニメーションＡ３」と表記する）が表示される。プレイヤキャラクタ１３０が動物オブジェクト１４０の上に乗っている間、プレイヤによって例えば左コントローラ３のスティック３２が操作されると、動物オブジェクト１４０およびプレイヤキャラクタ１３０が、スティック３２の入力方向に応じた方向に移動する。
【０１２３】
動物オブジェクト１４０の各足が地面オブジェクト１３５につく際に、各コントローラ３，４の振動子１０７，１１７が振動する。例えば、動物オブジェクト１４０の左前足１４１が地面オブジェクト１３５につくときに、右コントローラ４の振動子１１７よりも左コントローラ３の振動子１０７が強く振動するように、振動子１０７および振動子１１７が振動する。また、動物オブジェクト１４０の右前足１４２が地面オブジェクト１３５につくときに、左コントローラ３の振動子１０７よりも右コントローラ４の振動子１１７が強く振動するように、振動子１０７および振動子１１７が振動する。同様に、動物オブジェクト１４０の左後足１４４が地面オブジェクト１３５につくときに、右コントローラ４の振動子１１７よりも左コントローラ３の振動子１０７が強く振動するように、振動子１０７および振動子１１７が振動する。また、動物オブジェクト１４０の右後足１４３が地面オブジェクト１３５につくときに、左コントローラ３の振動子１０７よりも右コントローラ４の振動子１１７が強く振動するように、振動子１０７および振動子１１７が振動する。
【０１２４】
図１８は、画面に表示されるアニメーションＡ３と左右のコントローラ３，４に出力される振動制御信号とのタイミングの一例を示す図である。図１８では、時点Ｔｓにおいてプレイヤキャラクタ１３０が動物オブジェクト１４０の上に乗り、動物オブジェクト１４０が移動を開始する場合について示されている。
【０１２５】
図１８に示されるように、時点ＴｓにおいてアニメーションＡ３の表示が開始されると、まず、動物オブジェクト１４０の左前足１４１が浮いた状態となり、時点Ｔ１において、動物オブジェクト１４０の左前足１４１が地面オブジェクト１３５につく。時点Ｔ１から時点Ｔ２までの間、左前足１４１が地面オブジェクト１３５についた状態となる。この左前足１４１が地面オブジェクト１３５についている状態では、第１の振動制御信号および第２の振動制御信号が、本体装置２から各コントローラ３，４にそれぞれ出力され、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７が振動する。このとき、振動子１１７よりも振動子１０７が強く振動する。例えば、左コントローラ３の振動子１０７は強さ「１」で振動し、右コントローラ４の振動子１１７は強さ「０．１」で振動する。時点Ｔ２において、左前足１４１が地面オブジェクト１３５についたことによる振動制御信号の出力が終了する。
【０１２６】
次に、時点Ｔ３において、動物オブジェクト１４０の右前足１４２が地面オブジェクト１３５につく。例えば、時点Ｔ３より前において動物オブジェクト１４０の右前足１４２が浮いた状態となり、時点Ｔ３において、動物オブジェクト１４０の右前足１４２が地面オブジェクト１３５につく。時点Ｔ３から時点Ｔ４までの間、右前足１４２が地面オブジェクト１３５についた状態となり、この間、第１の振動制御信号および第２の振動制御信号が、本体装置２から各コントローラ３，４にそれぞれ出力される。このとき、左コントローラ３の振動子１０７よりも右コントローラ４の振動子１１７が強く振動するように、第１の振動制御信号および第２の振動制御信号が生成される。例えば、振動子１０７は強さ「０．１」で振動し、振動子１１７は強さ「１」で振動する。時点Ｔ４において、右前足１４２が地面オブジェクト１３５についたことによる振動制御信号の出力が終了する。
【０１２７】
次に、時点Ｔ５において、動物オブジェクト１４０の左後足１４４が地面オブジェクト１３５につく。例えば、時点Ｔ５より前に動物オブジェクト１４０の左後足１４４が浮いた状態となり、時点Ｔ５において、動物オブジェクト１４０の左後足１４４が地面オブジェクト１３５につく。時点Ｔ５から時点Ｔ６までの間、左後足１４４が地面オブジェクト１３５についた状態となり、この間、第１の振動制御信号および第２の振動制御信号が、本体装置２から各コントローラ３，４にそれぞれ出力される。このとき、右コントローラ４の振動子１１７よりも左コントローラ３の振動子１０７が強く振動するように、第１の振動制御信号および第２の振動制御信号が生成される。例えば、左コントローラ３の振動子１０７は強さ「１」で振動し、右コントローラ４の振動子１１７は強さ「０．１」で振動する。時点Ｔ６において、左後足１４４が地面オブジェクト１３５についたことによる振動制御信号の出力が終了する。
【０１２８】
次に、時点Ｔ７において、動物オブジェクト１４０の右後足１４３が地面オブジェクト１３５につく。例えば、時点Ｔ７より前に動物オブジェクト１４０の右後足１４３が浮いた状態となり、時点Ｔ７において、動物オブジェクト１４０の右後足１４３が地面オブジェクト１３５につく。時点Ｔ７から時点Ｔｅまでの間、右後足１４３が地面オブジェクト１３５についた状態となり、この間、第１の振動制御信号および第２の振動制御信号が、本体装置２から各コントローラ３，４にそれぞれ出力される。このとき、左コントローラ３の振動子１０７よりも右コントローラ４の振動子１１７が強く振動するように、第１の振動制御信号および第２の振動制御信号が生成される。例えば、左コントローラ３の振動子１０７は強さ「０．１」で振動し、右コントローラ４の振動子１１７は強さ「１」で振動する。時点Ｔｅにおいて、右後足１４３が地面オブジェクト１３５についたことによる振動制御信号の出力が終了する。
【０１２９】
なお、図１８は単なる一例であり、動物オブジェクト１４０の各足が地面オブジェクト１３５につくタイミングや振動が終了するタイミング、振動の強さは適宜変更されてもよい。例えば、２本以上の足が同時に地面オブジェクト１３５につき、それぞれの足がついたことによる振動が発生してもよい。また、例えば、左前足１４１が地面オブジェクト１３５についたことによって左コントローラ３および右コントローラ４が振動している間に、他の足が地面オブジェクト１３５につくことによって別の振動が発生してもよい。すなわち、１本の足が地面オブジェクト１３５につくことによって発生する振動が、同時に２つ以上発生してもよい。
【０１３０】
複数の振動が同時に発生する場合において、複数の振動が合成されてもよい。例えば、左前足１４１が地面オブジェクト１３５につき、それと同時またはその直後に右前足１４２が地面オブジェクト１３５につく場合、左前足１４１が地面オブジェクト１３５についたことによって発生する振動と、右前足１４２が地面オブジェクト１３５についたことによって発生する振動とが合成されてもよい。具体的には、左前足１４１が地面オブジェクト１３５についたことによって、左コントローラ３の振動子１０７は、強さ「１」で振動する（この振動を「振動ＶＬ１」と表記する）。一方、右前足１４２が地面オブジェクト１３５についたことによって、左コントローラ３の振動子１０７は、強さ「０．１」で振動する（この振動を「振動ＶＬ２」と表記する）。この場合、強さ「１」の振動ＶＬ１と強さ「０．１」の振動ＶＬ２とが合成されて、左コントローラ３の振動子１０７が振動されてもよい。
【０１３１】
右コントローラ４の振動子１１７についても同様である。すなわち、左前足１４１が地面オブジェクト１３５についたことによって、右コントローラ４の振動子１１７は、強さ「０．１」で振動する（この振動を「振動ＶＲ１」と表記する）。一方、右前足１４２が地面オブジェクト１３５についたことによって、右コントローラ４の振動子１１７は、強さ「１」で振動する（この振動を「振動ＶＲ２」と表記する）。この場合、強さ「０．１」の振動ＶＲ１と強さ「１」の振動ＶＲ２とが合成されて、右コントローラ４の振動子１１７が振動されてもよい。
【０１３２】
複数の振動の合成は、波の重ね合わせの原理にしたがって、行われてもよい。また、複数の振動の合成は、他の方法により行われてもよい。例えば、２つの振動波形Ｖ１およびＶ２を合成する場合において、その瞬間における振動波形Ｖ１の振幅値と、振動波形Ｖ２の振幅値とを合計することで合成波形の振幅値を求めてもよい。また、その瞬間における振動波形Ｖ１の周波数と振動波形Ｖ２の周波数とを平均することで合成波形の周波数が求められてもよい。
【０１３３】
また、複数の振動の合成は、複数の波形のうち、その瞬間における振幅が大きい方の波形を用いることで、複数の波形が合成されてもよい。例えば、２つの振動波形Ｖ１およびＶ２を合成する場合において、その瞬間における振動波形Ｖ１の振幅値が振動波形Ｖ２の振幅値よりも大きい場合、合成波形は振動波形Ｖ１としてもよい。また、別の瞬間における振動波形Ｖ２の振幅値が振動波形Ｖ１の振幅値よりも大きい場合、合成波形は振動波形Ｖ２としてもよい。
【０１３４】
なお、図１８では、動物オブジェクト１４０が４本の足をそれぞれ１回ずつ用いて走るアニメーションが示されている。プレイヤキャラクタ１３０が動物オブジェクト１４０の上に乗っている間、図１８に示すアニメーションＡ３が繰り返し表示される。このアニメーションＡ３が繰り返し表示されることに伴って、上述した各足が地面オブジェクト１３５につくことによる振動が繰り返し発生する。
【０１３５】
また、図１８では、動物オブジェクト１４０の４本の足がそれぞれ地面オブジェクト１３５につくタイミングで振動が発生することとした。他の実施形態では、４本の足のうちの２本の足（例えば２本の前足）にのみ着目して、当該２本の足がそれぞれ地面オブジェクト１３５につくタイミングで振動が発生し、他の２本の足（２本の後足）については振動が発生しないようにしてもよい。
【０１３６】
なお、本実施形態では、地面オブジェクト１３５として複数種類の地面オブジェクトが仮想空間に配置されている。動物オブジェクト１４０が走る地面オブジェクトの種類によって、用いられる振動パターンデータが異なり、振動の波形が異なる。また、地面オブジェクトの種類によって、左右のコントローラの振動の強弱の差が異なる。
【０１３７】
図１９は、地面オブジェクト１３５の種類と振動パターンデータとの対応関係の一例を示す図である。図１９に示されるように、地面オブジェクト１３５は、石の地面オブジェクトと、砂の地面オブジェクトと、沼の地面オブジェクトとを含む。
【０１３８】
例えば、動物オブジェクト１４０が石の地面オブジェクト上を走っているときは、振動パターンデータＰ３１を用いて、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７の振動が制御される。具体的には、動物オブジェクト１４０が石の地面オブジェクト上を走っている場合において、動物オブジェクト１４０の左前足１４１が石の地面オブジェクトについたとき、右コントローラ４よりも左コントローラ３が強く振動するように、振動子１０７および振動子１１７が制御される。例えば、動物オブジェクト１４０の左前足１４１が石の地面オブジェクトについたとき、左コントローラ３の振動子１０７は強さ「１」で振動し、右コントローラ４の振動子１１７は強さ「０．１」で振動する。
【０１３９】
また、動物オブジェクト１４０が砂の地面オブジェクト上を走っているときは、振動パターンデータＰ３２を用いて左右の振動子１０７および振動子１１７が制御されるとともに、左右の何れの足が地面オブジェクトについたかによって左右の振動子の振動の強さが調整される。例えば、動物オブジェクト１４０の左前足１４１が砂の地面オブジェクトについたとき、左コントローラ３の振動子１０７は強さ「１」で振動し、右コントローラ４の振動子１１７は強さ「０．５」で振動してもよい。
【０１４０】
また、動物オブジェクト１４０が沼の地面オブジェクト上を走っているときは、振動パターンデータＰ３３を用いて左右の振動子１０７および振動子１１７が制御されるとともに、左右の何れの足が地面オブジェクトについたかによって左右の振動子の振動の強さが調整される。例えば、動物オブジェクト１４０の左前足１４１が沼の地面オブジェクトについたとき、左コントローラ３の振動子１０７は強さ「１」で振動し、右コントローラ４の振動子１１７は強さ「０．６５」で振動してもよい。
【０１４１】
このように地面オブジェクト１３５の種類によって振動パターンデータを異ならせると共に、左右の振動の強さの差を異ならせることにより、地面の種類に応じた振動を発生させることができる。例えば、動物オブジェクト１４０が石の地面オブジェクト上を走っているときは、比較的強く、周波数が高い振動が発生する。また、例えば、動物オブジェクト１４０が砂の地面オブジェクト上を走っているときは、石の地面オブジェクトのときよりも弱く、周波数が比較的低い振動となる。また、動物オブジェクト１４０が沼の地面オブジェクト上を走っているときは、砂の地面オブジェクトのときよりも弱く、周波数の低い振動となり、滑らかな振動となる。
【０１４２】
このような制御が行われることで、プレイヤは、左右の手で感じる振動によって、プレイヤキャラクタ１３０（動物オブジェクト１４０）がどの地面オブジェクト上を走っているかを認識することができると共に、どの足が地面オブジェクトについたかを認識することができる。
【０１４３】
（第４実施例）
次に、第４実施例に係るゲームのシーンについて説明する。第４実施例では、仮想空間に振動源となる振動オブジェクトが配置される。例えば、振動オブジェクトは、仮想空間内を転がる岩オブジェクトであってもよい。振動オブジェクトが仮想空間内を転がる（移動する）ことによって、振動が発生する。第４実施例では、仮想空間を移動する振動オブジェクトと、プレイヤキャラクタまたは仮想カメラとの位置関係に応じて、左右のコントローラ３，４が振動する。
【０１４４】
図２０は、振動オブジェクト１５０と、プレイヤキャラクタ１３０と、仮想カメラ１５１とが配置された仮想空間を上方から見たときの一例を示す図である。
【０１４５】
図２０において、破線１５５は仮想カメラ１５１の画角の左端を示し、破線１５６は仮想カメラ１５１の画角の右端を示す。仮想カメラ１５１を用いて破線１５５および破線１５６によって囲まれる仮想空間の画像が生成されて、ディスプレイ１２に表示される。また、ＸｃＹｃＺｃ座標系は、仮想カメラ１５１に固定の座標系である。Ｚｃ軸は、仮想カメラ１５１の撮像方向（視線方向）の軸であり、Ｘｃ軸は、仮想カメラ１５１の右方向の軸であり、Ｙｃ軸は、仮想カメラ１５１の上方向の軸である。
【０１４６】
図２０に示されるように、仮想空間には振動オブジェクト１５０と、プレイヤキャラクタ１３０とが配置される。振動オブジェクト１５０は、例えば、図２０の矢印１５７で示される軌道に沿って移動する。この場合、振動オブジェクト１５０は、仮想カメラ１５１から見て仮想空間の奥方向から手前方向に向かって移動する。振動オブジェクト１５０が仮想空間内を移動する場合、振動パターンデータＰ４に基づいて、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７が振動される。振動子１０７および振動子１１７の振動の強さは、振動オブジェクト１５０と、プレイヤキャラクタ１３０および／または仮想カメラ１５１との位置関係に応じて、設定される。
【０１４７】
具体的には、振動オブジェクト１５０とプレイヤキャラクタ１３０との距離に応じて、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７を振動させる際の「基準となる振動の強さ」が決定される。振動オブジェクト１５０とプレイヤキャラクタ１３０との距離が短いほど、基準となる振動の強さは大きくなる。また、仮想カメラ１５１又はプレイヤキャラクタ１３０から見た振動オブジェクト１５０の方向に応じて、振動子１０７および振動子１１７の振動の強さのバランスが決定される。
【０１４８】
具体的には、図２０に示されるように、プレイヤキャラクタ１３０の中心ＣＰを通り、かつ、仮想カメラ１５１の左右方向（Ｘｃ軸方向）に平行な直線１５２が設定される。当該直線１５２上には、プレイヤキャラクタ１３０の左側に参照点Ｌが設定され、プレイヤキャラクタ１３０の右側に参照点Ｒが設定される。左コントローラ３の振動子１０７の振動の強さは、プレイヤキャラクタ１３０の中心ＣＰから参照点Ｌに向かうベクトルと、中心ＣＰから振動オブジェクト１５０に向かうベクトルとがなす角θＬに基づいて決定される。
【０１４９】
例えば、角θＬに基づいて減衰係数ＣＬ（例えば、０〜１の範囲）が算出される。例えば、減衰係数ＣＬは、角θＬが０°〜９０°の範囲では「１」に設定され、角θＬが９０°を超えると「１」より小さくなり、角θＬが１８０°のときには「０」に設定されてもよい。また、例えば、角θＬが０°〜１８０°まで変化するにしたがって、減衰係数ＣＬが１〜０まで線形的に変化してもよい。そして、振動オブジェクト１５０とプレイヤキャラクタ１３０との距離に応じて決定された「基準となる振動の強さ」に、角θＬに基づいて算出された減衰係数ＣＬを乗じることにより、振動子１０７の振動の強さが決定される。
【０１５０】
右コントローラ４の振動子１１７についても同様である。右コントローラ４の振動子１１７の振動の強さは、プレイヤキャラクタ１３０の中心ＣＰから参照点Ｒに向かうベクトルと、中心ＣＰから振動オブジェクト１５０に向かうベクトルとがなす角θＲに基づいて決定される。角θＲに基づいて減衰係数ＣＲ（例えば、０〜１の範囲）が算出され、振動オブジェクト１５０とプレイヤキャラクタ１３０との距離に応じて決定された「基準となる振動の強さ」に、角θＲに基づいて算出された減衰係数ＣＲを乗じることにより、振動子１１７の振動の強さが決定される。
【０１５１】
例えば、角θＬと角θＲとが等しい場合（すなわち、９０°の場合）、振動子１０７および振動子１１７の振動の強さは同じになる。また、角θＬが９０°より小さく、角θＲが９０°よりも大きい場合、振動子１０７の方が振動子１１７よりも強く振動する。
【０１５２】
図２０に示される例では、振動オブジェクト１５０は、仮想カメラ１５１（プレイヤキャラクタ１３０も同様）の左側から右側に向かって、仮想カメラ１５１に近づくように移動する。例えば、振動オブジェクト１５０が位置ＶＰ１に存在するときには、振動オブジェクト１５０とプレイヤキャラクタ１３０との距離が比較的長いため、「基準となる振動の強さ」は比較的弱くなる。また、振動オブジェクト１５０が位置ＶＰ１に存在するときには、振動オブジェクト１５０が仮想カメラ１５１から見て左側に存在するため、左コントローラ３の振動子１０７の方が右コントローラ４の振動子１１７よりも強く振動する。
【０１５３】
振動オブジェクト１５０が位置ＶＰ２まで移動した場合、振動オブジェクト１５０は仮想カメラ１５１から見て正面に位置するため、振動子１０７および振動子１１７の振動の強さは等しくなる。また、振動オブジェクト１５０とプレイヤキャラクタ１３０との距離は比較的短いため、「基準となる振動の強さ」は比較的強くなる。
【０１５４】
そして、振動オブジェクト１５０が位置ＶＰ３まで移動した場合、振動オブジェクト１５０は仮想カメラ１５１から見て右側に位置するため、振動子１０７よりも振動子１１７の方が強く振動する。このとき、振動オブジェクト１５０とプレイヤキャラクタ１３０との距離は比較的短いため、「基準となる振動の強さ」は比較的強くなる。
【０１５５】
このように左右の振動子が制御されることにより、プレイヤは、振動オブジェクト１５０が仮想カメラ１５１に近づくにつれて強い振動を感じるようになる。また、振動オブジェクト１５０が画面の左から右に移動するに伴って（振動オブジェクト１５０がプレイヤキャラクタ１３０の左側から右側に向かって移動するに伴って）、強い振動が左手から右手に移動するように感じる。
【０１５６】
図２１は、仮想カメラ１５１がプレイヤキャラクタ１３０の周りに回転したときの振動オブジェクト１５０と、プレイヤキャラクタ１３０と、仮想カメラ１５１とが配置された仮想空間を上方から見たときの一例を示す図である。
【０１５７】
本実施形態では、プレイヤの操作に応じて、仮想カメラ１５１がプレイヤキャラクタ１３０の周りに回転する。図２１では、仮想カメラ１５１がプレイヤキャラクタ１３０の周りに回転していることを除いて、図２０と同じ状態である。
【０１５８】
図２１に示されるように、仮想カメラ１５１がプレイヤキャラクタ１３０の周りに回転すると、仮想カメラ１５１の向き（Ｚｃ軸）が変化するとともに、Ｘｃ軸に平行な直線１５２も回転する。図２１では、振動オブジェクト１５０が位置ＶＰ１に存在するとき、仮想カメラ１５１の視線上に振動オブジェクト１５０が存在する。このとき、角θＬおよび角θＲは９０°となり、振動子１０７および振動子１１７は同じ強さで振動する。
【０１５９】
振動オブジェクト１５０が位置ＶＰ２まで移動した場合、振動子１０７よりも振動子１１７の方が若干強く振動し、かつ、「基準となる振動の強さ」は、振動オブジェクト１５０が位置ＶＰ１に存在するときよりも強くなる。そして、振動オブジェクト１５０が位置ＶＰ３まで移動した場合、振動子１０７よりも振動子１１７の方が強く振動し、その強さの差は、振動オブジェクト１５０が位置ＶＰ２に存在するときよりも大きくなる。
【０１６０】
したがって、図２１に示す位置関係の場合、プレイヤは、振動オブジェクト１５０が仮想カメラ１５１に近づくにつれて強い振動を感じるようになり、振動オブジェクト１５０がディスプレイ１２の画面の中央から右に移動するに伴って（振動オブジェクト１５０がプレイヤキャラクタ１３０の正面から右側に向かって移動するに伴って）、強い振動が両手から右手に移動するように感じる。
【０１６１】
なお、振動オブジェクト１５０と、仮想カメラ１５１又はプレイヤキャラクタ１３０との位置関係に応じて、左右の振動子１０７および１１７の振動の強さが変化されるのであれば、上述した方法とは異なる他の方法により振動子１０７および１１７の振動の強さが決定されてもよい。例えば、上記参照点Ｒおよび参照点Ｌは図２０および図２１に示した位置とは異なる位置に配置されてもよい。
【０１６２】
以上のように、第４実施例では、振動オブジェクト１５０と、仮想カメラ１５１又はプレイヤキャラクタ１３０との位置関係に基づいて左右の振動子１０７および１１７が制御される。
【０１６３】
具体的には、振動オブジェクト１５０とプレイヤキャラクタ１３０との距離に基づいて、「基準となる振動の強さ」が設定される。また、プレイヤキャラクタ１３０から振動オブジェクト１５０への方向と、仮想カメラ１５１の向きとに応じて、左右のコントローラ３，４の振動の強さが設定される。
【０１６４】
このため、振動オブジェクト１５０がプレイヤキャラクタ１３０に近いほど、左右のコントローラ３，４を強く振動する。例えば、振動オブジェクト１５０が画面の奥方向から手前方向に移動するにしたがって振動の強さが強くなるため、プレイヤは、振動源が近づいていることを認識することができる。
【０１６５】
また、振動オブジェクト１５０が画面上の左側に表示される場合には、左コントローラ３がより強く振動し、振動オブジェクト１５０が画面上の右側に表示される場合には、右コントローラ４がより強く振動する。また、振動オブジェクト１５０がプレイヤキャラクタ１３０に対して左側に表示される場合には、左コントローラ３がより強く振動し、振動オブジェクト１５０がプレイヤキャラクタ１３０に対して右側に表示される場合には、右コントローラ４がより強く振動する。これにより、プレイヤは、左右のコントローラの振動により、振動オブジェクト１５０が仮想カメラから見て左右どちらにあるのかを認識することができると共に、プレイヤキャラクタ１３０から見て振動オブジェクト１５０が左右どちらにあるのかを認識することができる。
【０１６６】
例えば、振動オブジェクト１５０が画面の左から右に移動することに応じて、左コントローラ３が強く振動する状態から右コントローラ４が強く振動する状態に変化するため、プレイヤは、振動源が画面の左から右に移動していることを認識することができる。また、例えば、振動オブジェクト１５０がプレイヤキャラクタ１３０よりも左側から右側に移動することに応じて、左コントローラ３が強く振動する状態から右コントローラ４が強く振動する状態に変化するため、プレイヤは、振動源がプレイヤキャラクタ１３０の左側から右側に移動していることを認識することができる。
【０１６７】
以上のように、第４実施例では、振動オブジェクト１５０と、仮想カメラ１５１又はプレイヤキャラクタ１３０との位置関係に基づいて左右の振動子１０７および１１７が制御されるため、振動オブジェクト１５０の表示上の位置に応じた振動と、プレイヤキャラクタ１３０から見た振動オブジェクト１５０の位置に応じた振動とをプレイヤに感じさせることができる。
【０１６８】
また、本実施形態では、振動オブジェクト１５０が仮想カメラ１５１の撮像範囲にない場合でも、仮想カメラ１５１またはプレイヤキャラクタ１３０から見た振動オブジェクト１５０の方向に基づいて、振動子１０７および１１７を振動させる。これにより、プレイヤは、振動オブジェクト１５０を見なくても、振動を感じることで振動オブジェクト１５０が仮想カメラ１５１またはプレイヤキャラクタ１３０から見てどの方向にあるのかを知ることができる。
【０１６９】
なお、上記第１実施例〜第４実施例で示した振動は、同時に発生する場合がある。例えば、第４実施例で示した振動オブジェクト１５０に基づく振動は、上記第２実施例で示した振動と同時に発生する場合がある。例えば、図１５に示されるように、プレイヤキャラクタ１３０が壁オブジェクト１３６にぶら下がりながら左右方向に移動しているときに、第４実施例で示した振動オブジェクト１５０がプレイヤキャラクタ１３０に向かって移動する場合がある。この場合、第２実施例で示したプレイヤキャラクタ１３０の右手をつくときに発生する振動と、振動オブジェクト１５０がプレイヤキャラクタ１３０に向かって移動するときに発生する振動とが合成される。
【０１７０】
また、例えば、図１０に示されるようにプレイヤキャラクタ１３０が右手を壁オブジェクト１３６につきながら下方に落下しているときに、第４実施例で示した振動オブジェクト１５０がプレイヤキャラクタ１３０に向かって移動する場合があってもよい。この場合、第１実施例で示した振動と、第４実施例で示した振動とが合成されてもよい。また、図１６に示されるようにプレイヤキャラクタ１３０が動物オブジェクト１４０に乗っているときに、第４実施例で示した振動オブジェクト１５０がプレイヤキャラクタ１３０に向かって移動する場合があってもよい。この場合、第３実施例で示した振動と、第４実施例で示した振動とが合成されてもよい。
【０１７１】
複数の振動波形の合成は、上述したように、波の重ね合わせの原理にしたがって行われてもよい。また、各振動波形の振幅を合計するとともに、各振動波形の周波数の平均を算出することにより、合成波形の振幅および周波数が算出されてもよい。また、複数の振動波形の合成は、その瞬間における振幅が大きい方の波形を用いることで、行われてもよい。
【０１７２】
なお、複数の振動波形の合成は、本体装置２において行われてもよいし、各コントローラ３，４において行われてもよい。例えば、本体装置２が複数の振動波形を合成した合成波形を示す振動制御信号を生成し、生成した振動制御信号を各コントローラ３，４に送信してもよい。また、本体装置２が複数の振動波形に応じた振動制御信号をそれぞれ生成・出力し、各コントローラ３，４が受信した振動制御信号を合成してもよい。
【０１７３】
（処理の詳細）
次に、ゲームシステム１の本体装置２において行われる処理の詳細について説明する。まず、本体装置２に記憶されるデータについて説明した後、本体装置２において行われる情報処理について説明する。図２２は、本体装置２に記憶されるデータの一例を示す図である。
【０１７４】
図２２に示されるように、本体装置２には、ゲームプログラムＤ１０１と、操作データＤ１０２と、キャラクタデータＤ１０３と、仮想カメラデータＤ１０４と、オブジェクトデータＤ１０５と、振動パターンデータＤ１０６と、アニメーションデータＤ１０７と、左振動制御信号Ｄ１０８と、右振動制御信号Ｄ１０９とが記憶される。なお、本体装置２には、図２２に示す他にも様々なデータやプログラムが記憶される。
【０１７５】
ゲームプログラムＤ１０１は、上述した第１実施例〜第４実施例を含むゲームを実行するためのプログラムである。
【０１７６】
操作データＤ１０２は、左コントローラ３および右コントローラ４に対して行われた操作に応じたデータであり、左コントローラ３および右コントローラ４から送信される。本実施形態では、本体装置２と、左コントローラ３および右コントローラ４とは、所定の時間間隔（例えば、１／２００秒間隔）で通信を行う。当該通信において、左コントローラ３および右コントローラ４から本体装置２に操作データが送信される。また、当該通信において、左振動制御信号Ｄ１０８および右振動制御信号Ｄ１０９が、本体装置２から左コントローラ３および右コントローラ４にそれぞれ送信される。
【０１７７】
キャラクタデータＤ１０３は、プレイヤキャラクタ１３０の位置、向き、移動速度、移動方向等に関する情報を含むデータである。
【０１７８】
仮想カメラデータＤ１０４は、仮想空間に配置される仮想カメラの位置および向きに関する情報を含むデータである。
【０１７９】
オブジェクトデータＤ１０５は、仮想空間に配置される各オブジェクト（例えば、地面オブジェクト１３５、壁オブジェクト１３６、振動オブジェクト１５０）に関する情報を含む。第１実施例〜第４実施例で示したゲームのシーンに応じて、仮想空間に配置されるオブジェクトの種類および数が異なる。例えば、第１実施例又は第２実施例に示すゲームのシーンが実行される場合、地面オブジェクト１３５および壁オブジェクト１３６が仮想空間に配置され、これらのオブジェクトに関する情報（位置、形状、大きさ、種類等に関する情報）がオブジェクトデータＤ１０５として記憶される。また、第３実施例に示すゲームのシーンが実行される場合、種類の異なる複数の地面オブジェクト１３５が仮想空間に配置される。また、第４実施例に示すゲームのシーンが実行される場合、仮想空間には振動オブジェクト１５０が配置される。この場合、オブジェクトデータＤ１０５として、振動オブジェクト１５０の位置、形状、大きさ、種類、移動速度、移動方向等に関する情報が記憶される。
【０１８０】
振動パターンデータＤ１０６は、第１実施例〜第４実施例で示したアニメーションの表示と共に発生する振動の波形を示すデータである。例えば、第１実施例で示したゲームのシーンが実行される場合には、振動パターンデータＤ１０６として、振動パターンデータＰ１が記憶される。また、第２実施例で示したゲームのシーンが実行される場合には、振動パターンデータＤ１０６として、振動パターンデータＰ２が記憶される。また、第３実施例で示したゲームのシーンが実行される場合には、振動パターンデータＤ１０６として、振動パターンデータＰ３１〜Ｐ３３が記憶される。また、第４実施例で示したゲームのシーンが実行される場合には、振動パターンデータＤ１０６として、振動パターンデータＰ４が記憶される。
【０１８１】
アニメーションデータＤ１０７は、第１実施例〜第３実施例で示したアニメーションを表示するためのデータである。例えば、第１実施例で示したゲームのシーンが実行される場合には、アニメーションＡ１が、アニメーションデータＤ１０７として記憶される。また、第２実施例で示したゲームのシーンが実行される場合には、アニメーションＡ２が、アニメーションデータＤ１０７として記憶される。第３実施例で示したゲームのシーンが実行される場合には、アニメーションＡ３が、アニメーションデータＤ１０７として記憶される。
【０１８２】
左振動制御信号Ｄ１０８は、左コントローラ３の振動子１０７を振動させるための第１の振動制御信号を示すデータであり、振動の周波数および振幅を含む。右振動制御信号Ｄ１０９は、右コントローラ４の振動子１１７を振動させるための第２の振動制御信号を示すデータであり、振動の周波数および振幅を含む。
【０１８３】
次に、本体装置２において行われる処理の詳細について説明する。まず、第１実施例に係るゲームのシーンが実行されるときの処理について説明する。
【０１８４】
（第１実施例の処理の詳細）
図２３は、第１実施例に係るゲームのシーンが実行されるときの本体装置２において行われる情報処理の詳細を示すフローチャートである。図２３に示す処理は、本体装置２のプロセッサ８１がゲームプログラムＤ１０１（情報処理プログラム）を実行することにより行われる。本体装置２のプロセッサ８１は、図２３に示す処理を、例えば１／６０秒（１フレーム時間という）間隔で繰り返し実行する。
【０１８５】
図２３に示されるように、本体装置２のプロセッサ８１（以下、単に「本体装置２」）は、左コントローラ３および右コントローラ４から送信された操作データを取得する（ステップＳ１）。具体的には、左コントローラ３および右コントローラ４は、所定の時間間隔（例えば、１／２００秒間隔）で操作に応じた操作データを本体装置２に送信する。本体装置２は、左コントローラ３および右コントローラ４から送信された操作データをＤＲＡＭ８５に一時的に記憶する。本体装置２は、ステップＳ１において、ＤＲＡＭ８５に記憶された操作データを取得する。
【０１８６】
次に、本体装置２は、取得した操作データに基づいて、プレイヤキャラクタ１３０を仮想空間内で動作させる（ステップＳ２）。例えば、左コントローラ３のスティック３２が操作された場合、本体装置２は、仮想空間においてプレイヤキャラクタ１３０をスティック３２の操作方向に応じた方向に移動させ、プレイヤキャラクタ１３０の位置および向きを更新する。また、例えば、右コントローラ４の操作ボタン（例えば、Ａボタン５３）が押下された場合、本体装置２は、仮想空間においてプレイヤキャラクタ１３０をジャンプさせ、プレイヤキャラクタ１３０の位置および向きを更新する。本体装置２は、更新したプレイヤキャラクタ１３０の位置および向きを、キャラクタデータＤ１０３として記憶する。
【０１８７】
ステップＳ２に続いて、本体装置２は、取得した操作データに基づいて、仮想カメラを制御する（ステップＳ３）。例えば、右コントローラ４のスティック５２が操作された場合、本体装置２は、スティック５２の操作方向に応じて、プレイヤキャラクタ１３０の回りに仮想カメラを移動させ、仮想カメラの位置および向きを更新する。本体装置２は、仮想カメラの位置および向きを、仮想カメラデータＤ１０４として記憶する。例えば、仮想カメラは、初期状態では、プレイヤキャラクタ１３０の後方に位置し、スティック５２の操作に応じて、プレイヤキャラクタ１３０の右後方に移動したり、プレイヤキャラクタ１３０の左後方に移動したりする。
【０１８８】
ステップＳ３に続いて、本体装置２は、プレイヤキャラクタ１３０が壁オブジェクト１３６に手をついて仮想空間を落下する動作が行われているか否かを判定する（ステップＳ４）。例えば、プレイヤキャラクタ１３０が壁オブジェクト１３６の所定範囲にいるときに、ステップＳ２の処理において、プレイヤキャラクタ１３０が壁オブジェクト１３６に向かってジャンプする動作が行われた場合、ステップＳ４において「Ｙｅｓ」と判定される。また、今回の処理ループが行われる前に、プレイヤキャラクタ１３０が壁オブジェクト１３６に手をついて仮想空間を落下する動作が行われており、未だプレイヤキャラクタ１３０が地面オブジェクト１３５に到達していない場合も、ステップＳ４において「Ｙｅｓ」と判定される。
【０１８９】
プレイヤキャラクタ１３０が壁オブジェクト１３６に手をついて仮想空間を落下する動作が行われていると判定した場合（ステップＳ４：ＹＥＳ）、本体装置２は、仮想カメラがプレイヤキャラクタ１３０の右後方に位置するか否かを判定する（ステップＳ５）。
【０１９０】
仮想カメラがプレイヤキャラクタ１３０の右後方に位置すると判定した場合（ステップＳ５：ＹＥＳ）、本体装置２は、アニメーションＡ１（右）を再生する（ステップＳ６）。第１実施例では、プレイヤキャラクタ１３０が壁オブジェクト１３６に右手をついて仮想空間を落下する動作をするアニメーションＡ１（右）と、プレイヤキャラクタ１３０が壁オブジェクト１３６に左手をついて仮想空間を落下する動作をするアニメーションＡ１（左）とが予め記憶される。ステップＳ６においては、本体装置２は、予め記憶されたアニメーションＡ１（右）を再生する。なお、本実施形態では、アニメーションＡ１が再生されている間（すなわち、プレイヤキャラクタ１３０が壁オブジェクト１３６に手をついて落下している間）、ステップＳ３の仮想カメラの制御が停止される。すなわち、プレイヤキャラクタ１３０が壁オブジェクト１３６に手をついて落下している間は、仮想カメラは回転せず、プレイヤキャラクタ１３０が地面オブジェクト１３５に到達するまで、同じアニメーションＡ１が再生される。つまり、アニメーションＡ１（右）の再生が開始されると、プレイヤキャラクタ１３０が地面オブジェクト１３５に到達するまで、ステップＳ４およびステップＳ５において「ＹＥＳ」と判定され、アニメーションＡ１（右）が再生される。これにより、図１１に示されるように、プレイヤキャラクタ１３０が壁オブジェクト１３６に左手（プレイヤから見て右側の手）をついて落下している様子が表示される。
【０１９１】
ステップＳ６に続いて、本体装置２は、右コントローラ４が左コントローラ３よりも強く振動するように、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７を振動させる（ステップＳ７）。具体的には、本体装置２は、振動パターンデータＰ１に基づいて、振動子１０７の振動の周波数および振幅を算出すると共に、振動子１１７の振動の周波数および振幅を算出する。例えば、本体装置２は、振動パターンデータＰ１に基づいて周波数および振幅を読み取り、読み取った振幅に「０．４」をかけることで振動子１０７の振動の振幅を算出する。また、本体装置２は、振動パターンデータＰ１に基づいて周波数および振幅を読み取り、読み取った振幅に「１」をかけることで振動子１１７の振動の振幅を算出する。
【０１９２】
一方、仮想カメラがプレイヤキャラクタ１３０の右後方に位置すると判定なかった場合（ステップＳ５：ＮＯ）、本体装置２は、アニメーションＡ１（左）を再生する（ステップＳ８）。アニメーションＡ１（左）の再生が開始されると、プレイヤキャラクタ１３０が地面オブジェクト１３５に到達するまで、ステップＳ４において「ＹＥＳ」と判定され、かつ、ステップＳ５において「ＮＯ」と判定される。これにより、図１０に示されるように、プレイヤキャラクタ１３０が壁オブジェクト１３６に右手（プレイヤから見て左側の手）をついて落下している様子が表示される。
【０１９３】
ステップＳ８に続いて、本体装置２は、左コントローラ３が右コントローラ４よりも強く振動するように、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７を振動させる（ステップＳ７）。具体的には、本体装置２は、振動パターンデータＰ１に基づいて、振動子１０７の振動の周波数および振幅を算出すると共に、振動子１１７の振動の周波数および振幅を算出する。例えば、本体装置２は、振動パターンデータＰ１に基づいて周波数および振幅を読み取り、読み取った振幅に「０．４」をかけることで振動子１１７の振動の振幅を算出する。また、本体装置２は、振動パターンデータＰ１に基づいて周波数および振幅を読み取り、読み取った振幅に「１」をかけることで振動子１０７の振動の振幅を算出する。
【０１９４】
ステップＳ７の処理を実行した場合、又は、ステップＳ９の処理を実行した場合、本体装置２は、ステップＳ７又はステップＳ９で算出した振動子１０７の周波数および振幅を含む左振動制御信号Ｄ１０８を生成すると共に、ステップＳ７又はステップＳ９で算出した振動子１１７の周波数および振幅を含む右振動制御信号Ｄ１０９を生成する（ステップＳ１０）。ステップＳ１１で生成された左振動制御信号Ｄ１０８および右振動制御信号Ｄ１０９は、本体装置２から左コントローラ３および右コントローラ４にそれぞれ送信される。
【０１９５】
ステップＳ１０の処理を実行した場合、又は、ステップＳ４でＮＯと判定した場合、本体装置２は、仮想カメラを用いて仮想空間の画像を生成し、生成した画像をディスプレイ１２に出力する（ステップＳ１１）。以上で、図２３の説明を終了する。
【０１９６】
（第２実施例の処理の詳細）
次に、第２実施例に係るゲームのシーンが実行されるときの処理の詳細について説明する。図２４は、第２実施例に係るゲームのシーンが実行されるときの本体装置２において行われる情報処理の詳細を示すフローチャートである。なお、図２４に示す処理は、例えば１／６０秒（１フレーム時間という）間隔で繰り返し実行される。また、図２４において、図２３と同様の処理については同じ符号を付して説明を省略する。
【０１９７】
図２４に示されるように、本体装置２は、ステップＳ１〜ステップＳ３の処理の後、プレイヤキャラクタ１３０が壁オブジェクト１３６にぶら下がって移動中か否かを判定する（ステップＳ２１）。具体的には、ステップＳ２の処理の結果、プレイヤキャラクタ１３０が壁オブジェクト１３６の上端部にぶら下がった状態となった場合において、左コントローラ３のスティック３２を用いて左右方向が入力された場合、ステップＳ４において「Ｙｅｓ」と判定される。
【０１９８】
プレイヤキャラクタ１３０が壁オブジェクト１３６にぶら下がって移動中と判定した場合（ステップＳ２１：ＹＥＳ）、本体装置２は、アニメーションＡ２を再生する（ステップＳ２２）。ここで、スティック３２の右方向が入力された場合は、アニメーションＡ２（右）が再生され、スティック３２の左方向が入力された場合は、アニメーションＡ２（左）が再生される。
【０１９９】
ステップＳ２２に続いて、本体装置２は、プレイヤキャラクタ１３０の右手が壁オブジェクト１３６の上端部についている状態か否かを判定する（ステップＳ２３）。具体的には、本体装置２は、ステップＳ２２においてアニメーションＡ２の再生が開始されてからのフレーム数に基づいて、プレイヤキャラクタ１３０の右手がついている状態か否かを判定する。例えば、本体装置２は、所定のフレーム期間（ステップＳ２２においてアニメーションＡ２の再生が開始されてから、例えば５フレーム目〜１０フレーム目の期間）か否かを判定する。
【０２００】
ステップＳ２３で「ＹＥＳ」と判定した場合、本体装置２は、右コントローラ４が左コントローラ３よりも強く振動するように、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７を振動させる（ステップＳ２４）。具体的には、本体装置２は、振動パターンデータＰ２に基づいて、振動子１０７の振動の周波数および振幅を算出すると共に、振動子１１７の振動の周波数および振幅を算出する。例えば、本体装置２は、振動パターンデータＰ２に基づいて周波数および振幅を読み取り、読み取った振幅に「０．３」をかけることで振動子１０７の振動の振幅を算出する。また、本体装置２は、振動パターンデータＰ２に基づいて周波数および振幅を読み取り、読み取った振幅に「１」をかけることで振動子１１７の振動の振幅を算出する。
【０２０１】
ステップＳ２３で「ＮＯ」と判定した場合、本体装置２は、プレイヤキャラクタ１３０の左手が壁オブジェクト１３６の上端部についている状態か否かを判定する（ステップＳ２５）。具体的には、本体装置２は、ステップＳ２２においてアニメーションＡ２の再生が開始されてからのフレーム数に基づいて、プレイヤキャラクタ１３０の左手がついている状態か否かを判定する。
【０２０２】
ステップＳ２５で「ＹＥＳ」と判定した場合、本体装置２は、左コントローラ３が右コントローラ４よりも強く振動するように、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７を振動させる（ステップＳ２６）。本体装置２は、振動パターンデータＰ２に基づいて、振動子１０７の振動の周波数および振幅を算出すると共に、振動子１１７の振動の周波数および振幅を算出する。例えば、本体装置２は、振動パターンデータＰ２に基づいて周波数および振幅を読み取り、読み取った振幅に「０．３」をかけることで振動子１１７の振動の振幅を算出する。また、本体装置２は、振動パターンデータＰ２に基づいて周波数および振幅を読み取り、読み取った振幅に「１」をかけることで振動子１０７の振動の振幅を算出する。
【０２０３】
ステップＳ２４の処理を実行した場合、又は、ステップＳ２６の処理を実行した場合、本体装置２は、ステップＳ７又はステップＳ９の算出結果に基づいて、左振動制御信号Ｄ１０８および右振動制御信号Ｄ１０９を生成する（ステップＳ１０）。生成された左振動制御信号Ｄ１０８および右振動制御信号Ｄ１０９は、本体装置２から左コントローラ３および右コントローラ４にそれぞれ送信される。
【０２０４】
ステップＳ１０の処理を実行した場合、ステップＳ２１でＮＯと判定した場合、又は、ステップＳ２５でＮＯと判定した場合、本体装置２は、仮想カメラを用いて仮想空間の画像を生成し、生成した画像を出力する（ステップＳ１１）。以上で、図２４の説明を終了する。
【０２０５】
（第３実施例の処理の詳細）
次に、第３実施例に係るゲームのシーンが実行されるときの処理の詳細について説明する。図２５は、第３実施例に係るゲームのシーンが実行されるときの本体装置２において行われる情報処理の詳細を示すフローチャートである。なお、図２５に示す処理は、例えば１／６０秒（１フレーム時間という）間隔で繰り返し実行される。また、図２５において、図２３と同様の処理については同じ符号を付して説明を省略する。
【０２０６】
図２５に示されるように、本体装置２は、ステップＳ１〜ステップＳ３の処理の後、プレイヤキャラクタ１３０が動物オブジェクト１４０に乗って移動中か否かを判定する（ステップＳ３１）。具体的には、ステップＳ２の処理の結果、プレイヤキャラクタ１３０が動物オブジェクト１４０の上に乗った場合、ステップＳ３１において「Ｙｅｓ」と判定される。なお、プレイヤキャラクタ１３０が動物オブジェクト１４０に乗った場合、所定の条件が満たされるまで（例えば、プレイヤによって動物オブジェクト１４０から降りる操作が行われるまで）、プレイヤキャラクタ１３０は動物オブジェクト１４０に乗ったままとなる。この状態では、ステップＳ２において、操作データに基づいて、動物オブジェクト１４０の移動方向が変化されたり、動物オブジェクト１４０の速度が変化されたりする。
【０２０７】
プレイヤキャラクタ１３０が動物オブジェクト１４０に乗って移動中と判定した場合（ステップＳ３１：ＹＥＳ）、本体装置２は、アニメーションＡ３を再生する（ステップＳ３２）。ここで、プレイヤキャラクタ１３０が動物オブジェクト１４０に乗った状態が維持されている間、ステップＳ３１において「ＹＥＳ」と判定される。
【０２０８】
ステップＳ３２に続いて、本体装置２は、振動パターンデータを選択する（ステップＳ３３）。具体的には、本体装置２は、動物オブジェクト１４０の位置に基づいて、動物オブジェクト１４０が、仮想空間に配置された複数の地面オブジェクト１３５（石の地面オブジェクト、砂の地面オブジェクト、沼の地面オブジェクト）のうちの何れの上に位置するかを判定する。そして、本体装置２は、判定した地面オブジェクト１３５に対応する振動パターンデータ（振動パターンデータＰ３１〜Ｐ３３のうちの何れか）を選択する。
【０２０９】
次に、本体装置２は、動物オブジェクト１４０の右足（右前足または右後足）が地面オブジェクト１３５についた状態か否かを判定する（ステップＳ３４）。具体的には、本体装置２は、ステップＳ３２においてアニメーションＡ３の再生が開始されてからのフレーム数に基づいて、動物オブジェクト１４０の右足が地面オブジェクト１３５についたか否かを判定する。例えば、本体装置２は、所定のフレーム期間（ステップＳ３２においてアニメーションＡ３の再生が開始されてから、例えば５フレーム目〜１０フレーム目の期間）か否かを判定する。
【０２１０】
ステップＳ３４で「ＹＥＳ」と判定した場合、本体装置２は、右コントローラ４が左コントローラ３よりも強く振動するように、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７を振動させる（ステップＳ３５）。具体的には、本体装置２は、ステップＳ３３で選択した振動パターンデータに基づいて、振動子１０７の振動の周波数および振幅を算出すると共に、振動子１１７の振動の周波数および振幅を算出する。例えば、本体装置２は、ステップＳ３３で振動パターンデータＰ３１を選択した場合、振動パターンデータＰ３１に基づいて周波数および振幅を読み取り、読み取った振幅に「０．１」をかけることで振動子１０７の振動の振幅を算出する。また、本体装置２は、ステップＳ３３で選択した振動パターンデータＰ３１に基づいて周波数および振幅を読み取り、読み取った振幅に「１」をかけることで振動子１１７の振動の振幅を算出する。
【０２１１】
また、例えば、本体装置２は、ステップＳ３３で振動パターンデータＰ３２を選択した場合、振動パターンデータＰ３２に基づいて周波数および振幅を読み取り、読み取った振幅に「０．５」をかけることで振動子１０７の振動の振幅を算出する。また、本体装置２は、ステップＳ３３で選択した振動パターンデータＰ３２に基づいて周波数および振幅を読み取り、読み取った振幅に「１」をかけることで振動子１１７の振動の振幅を算出する。
【０２１２】
ステップＳ３４で「ＮＯ」と判定した場合、本体装置２は、動物オブジェクト１４０の左足（左前足または左後足）が地面オブジェクト１３５についた状態か否かを判定する（ステップＳ３６）。ステップＳ３４と同様に、本体装置２は、ステップＳ３２においてアニメーションＡ３の再生が開始されてからのフレーム数に基づいて、ステップＳ３６の判定を行う。
【０２１３】
ステップＳ３６で「ＹＥＳ」と判定した場合、本体装置２は、左コントローラ３が右コントローラ４よりも強く振動するように、左コントローラ３の振動子１０７および右コントローラ４の振動子１１７を振動させる（ステップＳ３７）。具体的には、本体装置２は、ステップＳ３３で選択した振動パターンデータに基づいて、振動子１０７の振動の周波数および振幅を算出すると共に、振動子１１７の振動の周波数および振幅を算出する。例えば、本体装置２は、ステップＳ３３で振動パターンデータＰ３１選択した場合、振動パターンデータＰ３１に基づいて周波数および振幅を読み取り、読み取った振幅に「０．１」をかけることで振動子１１７の振動の振幅を算出する。また、本体装置２は、ステップＳ３３で選択した振動パターンデータＰ３１に基づいて周波数および振幅を読み取り、読み取った振幅に「１」をかけることで振動子１０７の振動の振幅を算出する。
【０２１４】
また、例えば、本体装置２は、ステップＳ３３で振動パターンデータＰ３２選択した場合、振動パターンデータＰ３２に基づいて周波数および振幅を読み取り、読み取った振幅に「０．５」をかけることで振動子１１７の振動の振幅を算出する。また、本体装置２は、ステップＳ３３で選択した振動パターンデータＰ３２に基づいて周波数および振幅を読み取り、読み取った振幅に「１」をかけることで振動子１０７の振動の振幅を算出する。
【０２１５】
ステップＳ３５の処理を実行した場合、又は、ステップＳ３７の処理を実行した場合、本体装置２は、ステップＳ３５の処理又はステップＳ３７の処理の結果に基づいて、左振動制御信号Ｄ１０８および右振動制御信号Ｄ１０９を生成する（ステップＳ１０）。生成された左振動制御信号Ｄ１０８および右振動制御信号Ｄ１０９は、本体装置２から左コントローラ３および右コントローラ４にそれぞれ送信される。
【０２１６】
ステップＳ１０の処理を実行した場合、ステップＳ３１でＮＯと判定した場合、又は、ステップＳ３６でＮＯと判定した場合、本体装置２は、仮想カメラを用いて仮想空間の画像を生成し、生成した画像を出力する（ステップＳ１１）。以上で、図２５の説明を終了する。
【０２１７】
（第４実施例の処理の詳細）
次に、第４実施例に係るゲームのシーンが実行されるときの処理の詳細について説明する。図２６は、第４実施例に係るゲームのシーンが実行されるときの本体装置２において行われる情報処理の詳細を示すフローチャートである。なお、図２６に示す処理は、例えば１／６０秒（１フレーム時間という）間隔で繰り返し実行される。また、図２６において、図２３と同様の処理については同じ符号を付して説明を省略する。
【０２１８】
図２６に示されるように、本体装置２は、ステップＳ１〜ステップＳ３の処理の後、振動オブジェクト１５０を仮想空間内で移動させる（ステップＳ４１）。次に、本体装置２は、振動オブジェクト１５０とプレイヤキャラクタ１３０との距離を算出する（ステップＳ４２）。
【０２１９】
続いて、本体装置２は、角θＬおよび角θＲ（図２０および図２１参照）を算出する（ステップＳ４３）。具体的には、本体装置２は、プレイヤキャラクタ１３０および参照点Ｌを結ぶ直線１５２を算出すると共に、プレイヤキャラクタ１３０および振動オブジェクト１５０を結ぶ直線１５３を算出する。そして、本体装置２は、直線１５２と直線１５３とがなす角θＬおよびθＲを算出する。
【０２２０】
続いて、本体装置２は、ステップＳ４２で算出した距離に基づいて、基準となる振動の強さを算出する（ステップＳ４４）。具体的には、本体装置２は、振動パターンデータＰ４に基づいて、振動の振幅を算出する。そして、本体装置２は、振動パターンデータＰ４に基づいて算出した振幅に、ステップＳ４２で算出した距離に応じて定まる係数を乗じることにより、基準となる振動の強さを算出する。また、本体装置２は、振動パターンデータＰ４に基づいて、振動の周波数を算出する。
【０２２１】
次に、本体装置２は、左コントローラ３の振動子１０７の振動の強さを算出する（ステップＳ４５）。例えば、本体装置２は、ステップＳ４４で算出した基準となる振動の強さに、角θＬに応じた係数（０〜１の範囲）を乗じることにより、左コントローラ３の振動子１０７の振動の強さを算出する。
【０２２２】
続いて、本体装置２は、右コントローラ４の振動子１１７の振動の強さを算出する（ステップＳ４６）。例えば、本体装置２は、ステップＳ４４で算出した基準となる振動の強さに、角θＲに応じた係数（０〜１の範囲）を乗じることにより、右コントローラ４の振動子１１７の振動の強さを算出する。
【０２２３】
次に、本体装置２は、ステップＳ４４で算出した周波数とステップＳ４５で算出した左コントローラ３の振動の強さとに基づいて、左振動制御信号Ｄ１０８を生成する（ステップＳ１０）。また、本体装置２は、ステップＳ４４で算出した周波数とステップＳ４６で算出した右コントローラ４の振動の強さとに基づいて、右振動制御信号Ｄ１０９を生成する。そして、本体装置２は、仮想カメラから仮想空間を見た画像を生成して出力する（ステップＳ１１）。以上で、図２６の説明を終了する。
【０２２４】
なお、図２３〜図２６に示す処理は単なる一例であり、例えば各ステップの順番を入れ替えたり、他のステップが加えられたり、上記ステップの一部が省略されたりしてもよい。また、各処理で用いた数値は単なる一例であり、他の値が用いられてもよい。
【０２２５】
以上のように、本実施形態では、操作対象の状態（例えば、プレイヤキャラクタが左手を壁について落下している状態、プレイヤキャラクタが移動中に左又は右手をついた状態、動物オブジェクトの移動中に左右の足が地面についた状態等）に応じて、左右のコントローラ３，４を振動させる。このため、プレイヤは、振動により操作対象の状態を認識することができる。操作対象が動作しているときの状態によって左右のコントローラ３，４が振動するため、プレイヤは、操作対象の動作の状態を把握することができる。また、プレイヤ自身が操作している操作対象の動作の状態によって振動が発生するため、プレイヤにあたかも自身が仮想空間に存在しているような印象を与え、ゲームの臨場感を高めることができる。
【０２２６】
また、操作対象の左右の状態（左右何れの手をついたか、左右何れの足をついたか）によって左右のコントローラ３，４の振動の強さが異なるため、プレイヤは、操作対象に関する左右の状態を認識することができる。具体的には、プレイヤキャラクタの左側の部分に関して所定のイベントが発生しているときは（例えば、第１実施例ではプレイヤから見てプレイヤキャラクタの左側の手が壁についているとき。第２実施例ではプレイヤキャラクタの左手が壁の上端部についているとき。第３実施例では動物オブジェクトの左側の足が地面についているとき）、プレイヤの左手で把持される左コントローラ３が右コントローラ４よりも強く振動する。また、プレイヤキャラクタの右側の部分に関して所定のイベントが発生しているときは、プレイヤの右手で把持される右コントローラ４が強く振動する。このため、プレイヤは、プレイヤキャラクタの左側の部分または右側の部分に所定のイベントが発生していることを認識することができる。
【０２２７】
また、第４実施例では、振動オブジェクト１５０と、仮想カメラ１５１又はプレイヤキャラクタ１３０との位置関係に基づいて左右のコントローラ３，４の振動が制御される。振動オブジェクト１５０の画面上の位置に応じて左右のコントローラ３，４の振動の強さが異なるため、プレイヤは、仮想空間におけるどの位置に振動オブジェクト１５０があるのかを振動により認識することができる。また、プレイヤキャラクタ１３０から見た振動オブジェクト１５０の方向に応じて左右のコントローラ３，４の振動の強さが異なるため、プレイヤは、振動オブジェクト１５０がプレイヤキャラクタ１３０の左右方向のうちどちらにあるのかを振動により認識することができる。
【０２２８】
（変形例）
以上、本実施形態について説明したが、他の実施形態では、以下のように構成されてもよい。
【０２２９】
例えば、第１実施例では、プレイヤキャラクタ１３０の左手が壁オブジェクト１３６についている状態（第１の状態）では、画面上では右側の手が壁オブジェクト１３６についている様子が表示されるため、右コントローラ４を強く振動させた。また、プレイヤキャラクタ１３０の右手が壁オブジェクト１３６についている状態（第２の状態）では、画面上では左側の手が壁オブジェクト１３６についている様子が表示されるため、左コントローラ３を強く振動させた。他の実施形態では、プレイヤキャラクタ１３０の手が見た目上左側にあるか、右側にあるかにかかわらず、プレイヤキャラクタ１３０の左手が壁オブジェクト１３６についている状態（第１の状態）では、左コントローラ３を強く振動させ、プレイヤキャラクタ１３０の右手が壁オブジェクト１３６についている状態（第２の状態）では、右コントローラ４を強く振動させてもよい。
【０２３０】
また、第１実施例では、仮想カメラの位置に基づいて、プレイヤキャラクタ１３０の左手および右手のうち何れの手を壁オブジェクト１３６につけるかを選択した。すなわち、仮想カメラがプレイヤキャラクタ１３０の右後方にあるか、左後方にあるかによって、アニメーションＡ１（右）およびアニメーションＡ１（左）のうち何れを表示するかを選択した。他の実施形態では、仮想カメラの位置に限らず、仮想空間の状況、プレイヤキャラクタ１３０の状況、および、ユーザによって行われた操作のうちの少なくとも何れか１つに基づいて、プレイヤキャラクタ１３０を第１の状態（プレイヤキャラクタ１３０が左手をついた状態）又は第２の状態（プレイヤキャラクタ１３０が右手をついた状態）のいずれかの状態にしてもよい。例えば、壁オブジェクト１３６の種類や配置、壁オブジェクト１３６とプレイヤキャラクタ１３０との位置関係、仮想空間内の他のオブジェクトの種類や配置、当該他のオブジェクトとプレイヤキャラクタ１３０との位置関係、プレイヤキャラクタ１３０の状態（位置や姿勢、残機数等のライフの状態、装備等）、ゲームのシーン、コントローラに対して所定の操作が行われたかどうか等によって、第１の状態又は第２の状態が選択されてもよい。
【０２３１】
また、第２実施例では、プレイヤキャラクタ１３０は、左手をついた状態（第１の状態）と右手をついた状態（第２の状態）とを交互に繰り返しながら左右方向に移動した。他の実施形態では、左手をついた状態と右手をついた状態との間に他の状態（例えば、両手をついた状態、両手が浮いた状態）があってもよい。この場合、左手をついた状態では左コントローラ３を強く振動させ、右手をついた状態では右コントローラ４を強く振動させ、他の状態では左右のコントローラ３，４を振動させなくてもよい。また、左手をついた状態で左コントローラ３を強く振動させ、次に他の状態に移行した場合にも左コントローラ３を強く振動させ続け、次に右手をついた状態になったときに右コントローラ４を強く振動させてもよい。
【０２３２】
また、上記実施形態では、表示されるアニメーションのフレームに合わせて振動制御信号を出力することとした。すなわち、左右のコントローラ３，４を振動させるか否かを、アニメーションの再生が開始されてからのフレーム数に基づいて判定した。他の実施形態では、操作対象が第１の状態か第２の状態かをプロセッサが判定し、その判定結果に基づいて振動制御信号を生成・出力してもよい。例えば、第１実施例において、プレイヤキャラクタ１３０の右手または左手が壁オブジェクト１３６についている状態か否かを接触判定により判定し、当該判定結果に基づいて振動制御信号を生成してもよい。また、第２実施例において、プレイヤキャラクタ１３０の右手又は左手が壁オブジェクト１３６の上端部についている状態か否かを接触判定により判定し、当該判定結果に基づいて振動制御信号を生成してもよい。また、第３実施例において、動物オブジェクト１４０の足が地面オブジェクト１３５についたか否かを、各足と地面オブジェクト１３５との接触判定により判定してもよい。
【０２３３】
また、上記実施形態では、操作対象の左右の状態（例えば、プレイヤキャラクタ１３０が左手をついている状態又は右手をついている状態。動物オブジェクト１４０が左足をついている状態又は右足をついている状態）に応じて、左右のコントローラ３，４を振動させた。他の実施形態では、操作対象の左右の状態に限らず、例えば、操作対象の上下の状態に応じて２つのコントローラの振動を制御してもよい。例えば、操作対象の上半身が他のオブジェクトと接触した状態と、下半身が他のオブジェクトと接触した状態とがある場合に、上半身が他のオブジェクトと接触した状態では、第１のコントローラをより強く振動させ、下半身が他のオブジェクトと接触した状態では、第２のコントローラをより強く振動させてもよい。
【０２３４】
また、上記実施形態では、左コントローラ３および右コントローラ４は本体装置２に着脱可能であるとした。他の実施形態では、左コントローラ３および右コントローラ４は本体装置２と一体として構成され、本体装置２から分離不可能に構成されてもよい。
【０２３５】
また、上記実施形態では、本体装置２に着脱可能な左コントローラ３および右コントローラ４を用いて操作対象を操作するとともに、左コントローラ３および右コントローラ４を振動させることとした。操作対象を操作するための操作装置は、上述した左コントローラ３および右コントローラ４に限らない。例えば、上記左コントローラ３に対応する左側部分と上記右コントローラ４に対応する右側部分とを有する操作装置が用いられてもよい。当該操作装置と本体装置２とは有線または無線で接続されてもよい。操作装置から操作に応じた操作データが本体装置２に送信されると共に、本体装置２から操作装置に上記第１の振動制御信号および第２の振動制御信号が送信される。操作装置の左側部分には、左コントローラ３が有するスティックやボタン、振動子１０７が設けられ、操作装置の右側部分には、右コントローラ４が有するスティックやボタン、振動子１１７が設けられる。この場合、操作装置の左側部分は上記左コントローラ３（第１の操作部）として機能し、操作装置の右側部分は上記右コントローラ４（第２の操作部）として機能して、操作装置の左側部分および右側部分は、上述した左コントローラ３および右コントローラ４と同様の振動をする。
【０２３６】
また、上記実施形態では、本体装置２がキャラクタ制御部２００、画像生成部２０１、振動信号生成部２０２、振動信号送信部２０３として機能することとした。他の実施形態では、本体装置２および左右のコントローラ３，４がキャラクタ制御部２００、画像生成部２０１、振動信号生成部２０２、振動信号送信部２０３として機能してもよい。例えば、本体装置２および左右のコントローラ３，４が、振動信号生成部２０２および振動信号送信部２０３として機能してもよい。例えば、本体装置２が操作対象の状態を示す信号を左右のコントローラ３，４に送信し、左右のコントローラ３，４が、当該信号に基づいて、振動子１０７および振動子１１７を振動させるための振動制御信号を生成し、振動子１０７および振動子１１７に出力してもよい。
【０２３７】
また、複数の装置がネットワーク（例えばインターネットやＬＡＮ）で接続され、ネットワークで接続された複数の装置を有するゲームシステムにおいて、上述したゲームが行われてもよい。例えば、端末とサーバとがインターネットを介して接続され、当該端末とサーバとによって上記ゲームシステムが構成されてもよい。この場合、例えば、端末側に上記左コントローラ３および右コントローラ４に対応する操作装置と表示装置とが配置され、サーバ側にキャラクタ制御部２００と、画像生成部２０１と、振動信号生成部２０２と、振動信号送信部２０３とが配置されてもよい。端末は、プレイヤによる操作装置に対する操作に応じた操作データをサーバに送信する。サーバは、当該操作データに基づいてプレイヤキャラクタ等を制御して画像を生成すると共に、プレイヤキャラクタの状態に応じて、振動制御信号を生成する。そして、端末は、サーバから画像および振動制御信号を受信して、画像を表示装置に表示させると共に操作装置を振動させる。
【０２３８】
また、上記実施形態では、ゲームシステム１において上述したゲームを行うものとしたが、他のシステム（又は装置）において上述したゲームが行われてもよい。例えば、他のシステム（又は装置）は、パーソナルコンピュータ、スマートフォン、タブレット端末等であってもよい。また、ゲームシステム１又は他のシステムにおいて、上記ゲーム以外の他のアプリケーションが実行されてもよい。
【０２３９】
以上、本発明について説明したが、上記説明は本発明の例示に過ぎず、種々の改良や変形が加えられてもよい。
【符号の説明】
【０２４０】
１  ゲームシステム
２  本体装置
３  左コントローラ
４  右コントローラ
３２  スティック
５２  スティック
１０７  振動子
１１７  振動子
２００  キャラクタ制御部
２０１  画像生成部
２０２  振動信号生成部
２０３  振動信号送信部
１３０  プレイヤキャラクタ
１３１  右手
１３２  左手
１３５  地面オブジェクト
１３６  壁オブジェクト
１３７  地面オブジェクト
１４０  動物オブジェクト
１４１  左前足
１４２  右前足
１４３  右後足
１４４  左後足
１５０  振動オブジェクト
１５１  仮想カメラ
【図１】
2018206012.tif 000003
【図２】
2018206012.tif 000004
【図３】
2018206012.tif 000005
【図４】
2018206012.tif 000006
【図５】
2018206012.tif 000007
【図６】
2018206012.tif 000008
【図７】
2018206012.tif 000009
【図８】
2018206012.tif 000010
【図９】
2018206012.tif 000011
【図１０】
2018206012.tif 000012
【図１１】
2018206012.tif 000013
【図１２】
2018206012.tif 000014
【図１３】
2018206012.tif 000015
【図１４】
2018206012.tif 000016
【図１５】
2018206012.tif 000017
【図１６】
2018206012.tif 000018
【図１７】
2018206012.tif 000019
【図１８】
2018206012.tif 000020
【図１９】
2018206012.tif 000021
【図２０】
2018206012.tif 000022
【図２１】
2018206012.tif 000023
【図２２】
2018206012.tif 000024
【図２３】
2018206012.tif 000025
【図２４】
2018206012.tif 000026
【図２５】
2018206012.tif 000027
【図２６】
2018206012.tif 000028