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