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