(57)【要約】    【課題】  新規なゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することができる。    【構成】  ゲームシステム１は、本体装置２を含み、この本体装置には左コントローラ３および右コントローラ４が着脱可能に設けられる。左コントローラおよび右コントローラは、それぞれ、複数の操ボタン、アナログスティックおよび振動子を備える。プレイヤキャラクタ（２０２）は、レーダーオブジェクト（２０４）を備え、プレイヤキャラクタの中心に一方端が位置された棒状の判定オブジェクト（２２０）が仮想空間の水平面に平行な面内を回転される。判定オブジェクトが敵キャラクタ（２０６）に触れているときに、左コントローラまたは／および右コントローラの振動子が振動される。【選択図】  図１
2020174938.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置のコンピュータに、
操作装置に対する操作入力に基づいて、仮想空間内において操作オブジェクトを制御させ、
前記仮想空間内に、探索対象となるターゲットオブジェクトを配置させ、
前記仮想空間内において前記ターゲットオブジェクトを探索するための判定領域を設定させ、
前記判定領域を、前記操作オブジェクトの位置を中心に所定速度で回転させ、
前記判定領域に前記ターゲットオブジェクトが触れているときに、前記操作装置に備えられた振動デバイスを振動させるための振動信号を生成させる、ゲームプログラム。
【請求項２】
前記判定領域に前記ターゲットオブジェクトが触れているときに、前記操作オブジェクトと前記ターゲットオブジェクトとの前記仮想空間内での距離が近い場合により強い振動をするように、前記振動信号を生成させる、請求項１記載のゲームプログラム。
【請求項３】
前記操作オブジェクトと前記ターゲットオブジェクトとの前記仮想空間内での距離に応じて前記判定領域を回転させる前記所定速度を変化させる、請求項１または２記載のゲームプログラム。
【請求項４】
前記操作装置は複数の前記振動デバイスを備え、
前記判定領域に前記ターゲットオブジェクトが触れているときに、前記ターゲットオブジェクトの位置の前記操作オブジェクトに対する方向に応じて、前記複数の振動デバイスのいずれかが振動する強さが強くなるよう、前記振動信号を生成させる、請求項１から３までのいずれかに記載のゲームプログラム。
【請求項５】
前記コンピュータに、
前記操作オブジェクトの位置に、探索を行っていることを示す演出オブジェクトをさらに配置させ、
前記判定領域の回転速度と同じ速度で前記演出オブジェクトを回転させる、請求項１から４までのいずれか記載のゲームプログラム。
【請求項６】
前記コンピュータにさらに、
前記操作入力に基づいて、前記操作オブジェクトに、前記ターゲットオブジェクトに対して所定のアクションを行わせる、請求項１から５までのいずれか記載のゲームプログラム。
【請求項７】
プロセッサと、
操作装置を備え、
前記プロセッサは、
前記操作装置に対する操作入力に基づいて、仮想空間内において操作オブジェクトを制御し、
前記仮想空間内に、探索対象となるターゲットオブジェクトを配置し、
前記仮想空間内において前記ターゲットオブジェクトを探索するための判定領域を設定し、
前記判定領域を、前記操作オブジェクトの位置を中心に所定速度で回転し、
前記判定領域に前記ターゲットオブジェクトが触れているときに、前記操作装置に備えられた振動デバイスを振動させるための振動信号を生成する、ゲームシステム。
【請求項８】
前記判定領域の範囲内に前記ターゲットオブジェクトが含まれ触れているときに、前記操作オブジェクトと前記ターゲットオブジェクトとの前記仮想空間内での距離が近い場合により強い振動をするように、前記振動信号を生成する、請求項７記載のゲームシステム。
【請求項９】
前記操作オブジェクトと前記ターゲットオブジェクトとの前記仮想空間内での距離に応じて前記判定領域を回転させる前記所定速度を変化させる、請求項７または８記載のゲームシステム。
【請求項１０】
前記操作装置は複数の前記振動デバイスを備え、
前記判定領域の範囲内に前記ターゲットオブジェクトが含まれ触れているときに、前記ターゲットオブジェクトの位置の前記操作オブジェクトに対する方向に応じて、前記複数の振動デバイスのいずれかが振動する強さが強くなるよう、前記振動信号を生成する、請求項７から９までのいずれかに記載のゲームシステム。
【請求項１１】
前記操作オブジェクトの位置に、探索を行っていることを示す演出オブジェクトをさらに配置し、
前記判定領域の回転速度と同じ速度で前記演出オブジェクトを回転させる、請求項７から１０までのいずれか記載のゲームシステム。
【請求項１２】
前記操作入力に基づいて、前記操作オブジェクトに、前記ターゲットオブジェクトに対して所定のアクションを行わせる、請求項７から１１までのいずれか記載のゲームシステム。
【請求項１３】
プロセッサと、
操作部を備え、
前記プロセッサは、
前記操作部に対する操作入力に基づいて、仮想空間内において操作オブジェクトを制御し、
前記仮想空間内に、探索対象となるターゲットオブジェクトを配置し、
前記仮想空間内において前記ターゲットオブジェクトを探索するための判定領域を設定し、
前記判定領域を、前記操作オブジェクトの位置を中心に所定速度で回転し、
前記判定領域に前記ターゲットオブジェクトが触れているときに、前記操作部に備えられた振動デバイスを振動させるための振動信号を生成する、ゲーム装置。
【請求項１４】
前記判定領域の範囲内に前記ターゲットオブジェクトが触れているときに、前記操作オブジェクトと前記ターゲットオブジェクトとの前記仮想空間内での距離が近い場合により強い振動をするように、前記振動信号を生成する、請求項１３記載のゲーム装置。
【請求項１５】
前記操作オブジェクトと前記ターゲットオブジェクトとの前記仮想空間内での距離に応じて前記判定領域を回転させる前記所定速度を変化させる、請求項１３または１４記載のゲーム装置。
【請求項１６】
前記操作部は複数の前記振動デバイスを備え、
前記判定領域の範囲内に前記ターゲットオブジェクトが触れているときに、前記ターゲットオブジェクトの位置の前記操作オブジェクトに対する方向に応じて、前記複数の振動デバイスのいずれかが振動する強さが強くなるよう、前記振動信号を生成する、請求項１３から１５までのいずれかに記載のゲーム装置。
【請求項１７】
前記操作オブジェクトの位置に、探索を行っていることを示す演出オブジェクトをさらに配置し、
前記判定領域の回転速度と同じ速度で前記演出オブジェクトを回転させる、請求項１３から１６までのいずれか記載のゲーム装置。
【請求項１８】
前記操作入力に基づいて、前記操作オブジェクトに、前記ターゲットオブジェクトに対して所定のアクションを行わせる、請求項１３から１７までのいずれか記載のゲーム装置。
【請求項１９】
操作装置に対する操作入力に基づいて、仮想空間内において操作オブジェクトを制御させ、
前記仮想空間内に、探索対象となるターゲットオブジェクトを配置させ、
前記仮想空間内において前記ターゲットオブジェクトを探索するための判定領域を設定させ、
前記判定領域を、前記操作オブジェクトの位置を中心に所定速度で回転させ、
前記判定領域に前記ターゲットオブジェクトが触れているときに、前記操作装置に備えられた振動デバイスを振動させるための振動信号を生成させる、ゲーム制御方法。
【請求項２０】
前記判定領域に前記ターゲットオブジェクトが触れているときに、前記操作オブジェクトと前記ターゲットオブジェクトとの前記仮想空間内での距離が近い場合により強い振動をするように、前記振動信号を生成させる、請求項１９記載のゲーム制御方法。
【請求項２１】
前記操作オブジェクトと前記ターゲットオブジェクトとの前記仮想空間内での距離に応じて前記判定領域を回転させる前記所定速度を変化させる、請求項１９または２０記載のゲーム制御方法。
【請求項２２】
前記操作装置は複数の前記振動デバイスを備え、
前記判定領域に前記ターゲットオブジェクトが触れているときに、前記ターゲットオブジェクトの位置の前記操作オブジェクトに対する方向に応じて、前記複数の振動デバイスのいずれかが振動する強さが強くなるよう、前記振動信号を生成させる、請求項１９から２１までのいずれかに記載のゲーム制御方法。
【請求項２３】
前記操作オブジェクトの位置に、探索を行っていることを示す演出オブジェクトをさらに配置させ、
前記判定領域の回転速度と同じ速度で前記演出オブジェクトを回転させる、請求項１９から２２までのいずれか記載のゲーム制御方法。
【請求項２４】
前記操作入力に基づいて、前記操作オブジェクトに、前記ターゲットオブジェクトに対して所定のアクションを行わせる、請求項１９から２３までのいずれか記載のゲーム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法に関し、特にたとえば、振動で仮想空間内のオブジェクトの位置を示す、ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法に関する。
【背景技術】
【０００２】
背景技術の一例が特許文献１に開示される。この特許文献１のゲーム装置は、振動制御装置として機能する本体装置並びに着脱可能な第１コントローラおよび第２コントローラを含む。ゲーム装置は、２つのコントローラを本体装置に装着した第１態様、２つのコントローラを本体装置から分離した状態で個別に使用する第２態様、２つのコントローラを本体装置から離脱した状態で一体的に連結して使用する第３態様または２つのコントローラとは異なる第３コントローラを使用する第４態様で使用される。仮想空間において、振動源および振動の受容部が設定され、振動源から発生される振動は仮想空間における状況に応じて減衰されて受容部に伝達される。減衰された振動が第１または第３コントローラの振動部で発生されるとともに、減衰された振動が第２または第３コントローラの振動部で発生される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−１１２９５３号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この特許文献１に開示された手法とは異なる新しい手法を提供することにより、振動で仮想空間内のオブジェクトの位置を示す。
【０００５】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することである。
【０００６】
また、この発明の他の目的は、振動で仮想空間内のオブジェクトの位置を示すことができる、ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することである。
【課題を解決するための手段】
【０００７】
第１の発明は、情報処理装置のコンピュータに、操作装置に対する操作入力に基づいて、仮想空間内において操作オブジェクトを制御させ、仮想空間内に、探索対象となるターゲットオブジェクトを配置させ、仮想空間内においてターゲットオブジェクトを探索するための判定領域を設定させ、判定領域を、操作オブジェクトの位置を中心に所定速度で回転させ、判定領域にターゲットオブジェクトが触れているときに、操作装置に備えられた振動デバイスを振動させるための振動信号を生成させる、ゲームプログラムである。
【０００８】
第１の発明によれば、新規なゲームプログラムを提供することができる。また、判定領域を回転させてターゲットオブジェクトを探索するので、操作オブジェクトの位置を中心にして３６０°の方向におけるターゲットオブジェクトの位置を振動により示すことができる。したがって、プレイヤは、操作オブジェクトの位置を中心にして３６０°の方向におけるターゲットオブジェクトの位置を振動により特定することができる。
【０００９】
第２の発明は、第１の発明に従属し、判定領域にターゲットオブジェクトが触れているときに、操作オブジェクトとターゲットオブジェクトとの仮想空間内での距離が近い場合により強い振動をするように、振動信号を生成させる。
【００１０】
第２の発明によれば、振動の強さによって、操作オブジェクトとターゲットオブジェクトの距離が分かるため、操作オブジェクトに対するターゲットオブジェクトの位置をより特定し易くすることができる。
【００１１】
第３の発明は、第１または第２の発明に従属し、操作オブジェクトとターゲットオブジェクトとの仮想空間内での距離に応じて判定領域を回転させる所定速度を変化させる。
【００１２】
第３の発明によれば、判定領域を回転させる所定速度を変化させるので、操作オブジェクトがターゲットオブジェクトの近づいているのか遠ざかっているのかを振動の間隔で知ることができる。つまり、操作オブジェクトに対するターゲットオブジェクトの位置をより特定し易くすることができる。
【００１３】
第４の発明は、第１の発明から第３の発明までのいずれかに従属し、操作装置は複数の振動デバイスを備え、判定領域にターゲットオブジェクトが触れているときに、ターゲットオブジェクトの位置の操作オブジェクトに対する方向に応じて、複数の振動デバイスのいずれかが振動する強さが強くなるよう、振動信号を生成させる。
【００１４】
第４の発明によれば、複数の振動デバイスを備える場合には、操作オブジェクトに対するターゲットオブジェクトの位置に応じて、複数の振動デバイスのうちのいずれかが振動を強くされるので、振動の強さによって、操作オブジェクトに対するターゲットオブジェクトの位置をより容易に特定または把握することができる。
【００１５】
第５の発明は、第１の発明から第４の発明までのいずれかに従属し、コンピュータに、操作オブジェクトの位置に、探索を行っていることを示す演出オブジェクトをさらに配置させ、判定領域の回転速度と同じ速度で演出オブジェクトを回転させる。
【００１６】
第５の発明によれば、判定領域の動きを演出オブジェクトの動きで知ることができるので、判定領域の回転がより分かり易くなり、したがって、操作オブジェクトに対するターゲットオブジェクトの位置をより容易に特定または把握することができる。
【００１７】
第６の発明は、第１の発明から第５の発明までのいずれかに従属し、コンピュータにさらに、操作入力に基づいて、操作オブジェクトに、ターゲットオブジェクトに対して所定のアクションを行わせる。
【００１８】
第６の発明によれば、操作オブジェクトがターゲットオブジェクトに触れているまたはターゲットオブジェクトを取得することにより、たとえば隠れているものを探すゲームに使うことができる。
【００１９】
第７の発明は、プロセッサと、操作装置を備え、プロセッサは、操作装置に対する操作入力に基づいて、仮想空間内において操作オブジェクトを制御し、仮想空間内に、探索対象となるターゲットオブジェクトを配置し、仮想空間内においてターゲットオブジェクトを探索するための判定領域を設定し、判定領域を、操作オブジェクトの位置を中心に所定速度で回転し、判定領域にターゲットオブジェクトが触れているときに、操作装置に備えられた振動デバイスを振動させるための振動信号を生成する、ゲームシステムである。
【００２０】
第８の発明は、プロセッサと、操作部を備え、プロセッサは、操作部に対する操作入力に基づいて、仮想空間内において操作オブジェクトを制御し、仮想空間内に、探索対象となるターゲットオブジェクトを配置し、仮想空間内においてターゲットオブジェクトを探索するための判定領域を設定し、判定領域を、操作オブジェクトの位置を中心に所定速度で回転し、判定領域にターゲットオブジェクトが触れているときに、操作部に備えられた振動デバイスを振動させるための振動信号を生成する、ゲーム装置である。
【００２１】
第９の発明は、操作装置に対する操作入力に基づいて、仮想空間内において操作オブジェクトを制御させ、仮想空間内に、探索対象となるターゲットオブジェクトを配置させ、仮想空間内においてターゲットオブジェクトを探索するための判定領域を設定させ、判定領域を、操作オブジェクトの位置を中心に所定速度で回転させ、判定領域にターゲットオブジェクトが触れているときに、操作装置に備えられた振動デバイスを振動させるための振動信号を生成させる、ゲーム制御方法である。
【発明の効果】
【００２２】
この発明によれば、新規なゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することができる。また、振動で仮想空間内のオブジェクトの位置を示すことができる。
【００２３】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００２４】
【図１】図１はこの実施例の本体装置に左コントローラおよび右コントローラを装着した状態の限定しない一例を示す図である。
【図２】図２は本体装置から左コントローラおよび右コントローラをそれぞれ外した状態の限定しない一例を示す図である。
【図３】図３は図１および図２に示した本体装置の限定しない一例を示す六面図である。
【図４】図４は図１および図２に示した左コントローラの限定しない一例を示す六面図である。
【図５】図５は図１および図２に示した右コントローラの限定しない一例を示す六面図である。
【図６】図６は図１および図２に示した本体装置の内部構成の限定しない一例を示すブロック図である。
【図７】図７は図１および図２に示した本体装置と左コントローラおよび右コントローラとの内部構成の限定しない一例を示すブロック図である。
【図８】図８はゲーム画像の限定しない一例を示す図である。
【図９】図９は仮想空間において判定オブジェクトを用いた敵キャラクタの探索方法を説明するための図である。
【図１０】図１０は図９に示す仮想空間を上方から見た模式的な図である。
【図１１】図１１はプレイヤキャラクタに設定される判定オブジェクトの他の例を説明するための図である。
【図１２】図１２はプレイヤキャラクタに設定される判定オブジェクトのその他の例を説明するための図である。
【図１３】図１３は図６に示す本体装置のＤＲＡＭのメモリマップの限定しない一例を示す図である。
【図１４】図１４は図６に示す本体装置のプロセッサのゲーム全体処理の限定しない一例を示すフロー図である。
【図１５】図１５は図６に示す本体装置のプロセッサの探索および振動信号生成処理の限定しない一例の一部を示すフロー図である。
【図１６】図１６は図６に示す本体装置のプロセッサの探索および振動信号生成処理の他の一部であって、図１５に後続するフロー図である。
【図１７】図１７は図６に示す本体装置のプロセッサの振動制御処理を示すフロー図である。
【発明を実施するための形態】
【００２５】
以下、この実施例の限定しない一例に係るゲームシステムについて説明する。この実施例におけるゲームシステム１の一例は、本体装置（情報処理装置；この実施例ではゲーム装置本体として機能する）２と左コントローラ３および右コントローラ４とを含む。本体装置２は、左コントローラ３および右コントローラ４がそれぞれ着脱可能である。つまり、ゲームシステム１は、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として利用できる。また、ゲームシステム１は、本体装置２と左コントローラ３および右コントローラ４とを別体として利用することもできる（図２参照）。以下では、この実施例のゲームシステム１のハードウェア構成について説明し、その後に、この実施例のゲームシステム１の制御について説明する。
【００２６】
図１は、本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図である。図１に示すように、左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、ゲームシステム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００２７】
図２は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図１および図２に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。
【００２８】
図３は、本体装置２の一例を示す六面図である。図３に示すように、本体装置２は、略板状のハウジング１１を備える。この実施例において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。
【００２９】
なお、ハウジング１１の形状および大きさは、任意である。一例として、ハウジング１１は、携帯可能な大きさであってよい。また、本体装置２単体または本体装置２に左コントローラ３および右コントローラ４が装着された一体型装置は、携帯型装置となってもよい。また、本体装置２または一体型装置が手持ち型の装置となってもよい。また、本体装置２または一体型装置が可搬型装置となってもよい。
【００３０】
図３に示すように、本体装置２は、ハウジング１１の主面に設けられるディスプレイ１２を備える。ディスプレイ１２は、本体装置２が生成した画像を表示する。この実施例においては、ディスプレイ１２は、液晶表示装置（ＬＣＤ）とする。ただし、ディスプレイ１２は任意の種類の表示装置であってよい。
【００３１】
また、本体装置２は、ディスプレイ１２の画面上にタッチパネル１３を備える。この実施例においては、タッチパネル１３は、マルチタッチ入力が可能な方式（例えば、静電容量方式）のものである。ただし、タッチパネル１３は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式（例えば、抵抗膜方式）のものであってもよい。
【００３２】
本体装置２は、ハウジング１１の内部においてスピーカ（すなわち、図６に示すスピーカ８８）を備えている。図３に示すように、ハウジング１１の主面には、スピーカ孔１１ａおよび１１ｂが形成される。そして、スピーカ８８の出力音は、これらのスピーカ孔１１ａおよび１１ｂからそれぞれ出力される。
【００３３】
また、本体装置２は、本体装置２が左コントローラ３と有線通信を行うための端子である左側端子１７と、本体装置２が右コントローラ４と有線通信を行うための右側端子２１を備える。
【００３４】
図３に示すように、本体装置２は、スロット２３を備える。スロット２３は、ハウジング１１の上側面に設けられる。スロット２３は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム１およびそれと同種の情報処理装置に専用の記憶媒体（例えば、専用メモリカード）である。所定の種類の記憶媒体は、例えば、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。また、本体装置２は、電源ボタン２８を備える。
【００３５】
本体装置２は、下側端子２７を備える。下側端子２７は、本体装置２がクレードルと通信を行うための端子である。この実施例において、下側端子２７は、ＵＳＢコネクタ（より具体的には、メス側コネクタ）である。上記一体型装置または本体装置２単体をクレードルに載置した場合、ゲームシステム１は、本体装置２が生成して出力する画像を据置型モニタに表示することができる。また、この実施例においては、クレードルは、載置された上記一体型装置または本体装置２単体を充電する機能を有する。また、クレードルは、ハブ装置（具体的には、ＵＳＢハブ）の機能を有する。
【００３６】
図４は、左コントローラ３の一例を示す六面図である。図４に示すように、左コントローラ３は、ハウジング３１を備える。この実施例においては、ハウジング３１は、縦長の形状、すなわち、上下方向（すなわち、図１および図４に示すｙ軸方向）に長い形状である。左コントローラ３は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング３１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ３は、横長となる向きで把持されることも可能である。左コントローラ３が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００３７】
左コントローラ３は、アナログスティック３２を備える。図４に示すように、アナログスティック３２は、ハウジング３１の主面に設けられる。アナログスティック３２は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック３２を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。なお、左コントローラ３は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、この実施例においては、アナログスティック３２を押下する入力が可能である。
【００３８】
左コントローラ３は、各種操作ボタンを備える。左コントローラ３は、ハウジング３１の主面上に４つの操作ボタン３３〜３６（具体的には、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および左方向ボタン３６）を備える。さらに、左コントローラ３は、録画ボタン３７および−（マイナス）ボタン４７を備える。左コントローラ３は、ハウジング３１の側面の左上にＬボタン３８およびＺＬボタン３９を備える。また、左コントローラ３は、ハウジング３１の側面のうち、本体装置２に装着される際に装着される側の面に、ＳＬボタン４３およびＳＲボタン４４を備える。これらの操作ボタンは、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションのプログラム）に応じた指示を行うために用いられる。
【００３９】
また、左コントローラ３は、左コントローラ３が本体装置２と有線通信を行うための端子４２を備える。
【００４０】
図５は、右コントローラ４の一例を示す六面図である。図５に示すように、右コントローラ４は、ハウジング５１を備える。この実施例においては、ハウジング５１は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００４１】
右コントローラ４は、左コントローラ３と同様、方向入力部としてアナログスティック５２を備える。この実施例においては、アナログスティック５２は、左コントローラ３のアナログスティック３２と同じ構成である。また、右コントローラ４は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ４は、左コントローラ３と同様、ハウジング５１の主面上に４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、およびＹボタン５６）を備える。さらに、右コントローラ４は、＋（プラス）ボタン５７およびホームボタン５８を備える。また、右コントローラ４は、ハウジング５１の側面の右上にＲボタン６０およびＺＲボタン６１を備える。また、右コントローラ４は、左コントローラ３と同様、ＳＬボタン６５およびＳＲボタン６６を備える。
【００４２】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。
【００４３】
図６は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図３に示す構成の他、図６に示す各構成要素８１〜９１、９７、および９８を備える。これらの構成要素８１〜９１、９７、および９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００４４】
本体装置２は、プロセッサ８１を備える。プロセッサ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部であって、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のみから構成されてもよいし、ＣＰＵ機能、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）機能等の複数の機能を含むＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）から構成されてもよい。プロセッサ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、スロット２３に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００４５】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、プロセッサ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００４６】
本体装置２は、スロットインターフェース（以下、「Ｉ／Ｆ」と略記する）９１を備える。スロットＩ／Ｆ９１は、プロセッサ８１に接続される。スロットＩ／Ｆ９１は、スロット２３に接続され、スロット２３に装着された所定の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書き込みを、プロセッサ８１の指示に応じて行う。
【００４７】
プロセッサ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００４８】
本体装置２は、ネットワーク通信部８２を備える。ネットワーク通信部８２は、プロセッサ８１に接続される。ネットワーク通信部８２は、ネットワークを介して外部の装置と通信（具体的には、無線通信）を行う。この実施例においては、ネットワーク通信部８２は、第１の通信態様としてＷｉ−Ｆｉの規格に準拠した方式により、無線ＬＡＮに接続して外部装置と通信を行う。また、ネットワーク通信部８２は、第２の通信態様として所定の通信方式（例えば、独自プロトコルによる通信や、赤外線通信）により、同種の他の本体装置２との間で無線通信を行う。なお、上記第２の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置２との間で無線通信可能であり、複数の本体装置２の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【００４９】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、プロセッサ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、この実施例においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。
【００５０】
プロセッサ８１は、上述の左側端子１７、右側端子２１、および下側端子２７に接続される。プロセッサ８１は、左コントローラ３と有線通信を行う場合、左側端子１７を介して左コントローラ３へデータを送信するとともに、左側端子１７を介して左コントローラ３から操作データを受信（または、取得）する。また、プロセッサ８１は、右コントローラ４と有線通信を行う場合、右側端子２１を介して右コントローラ４へデータを送信するとともに、右側端子２１を介して右コントローラ４から操作データを受信（または、取得）する。また、プロセッサ８１は、クレードルと通信を行う場合、下側端子２７を介してクレードルへデータを送信する。このように、この実施例においては、本体装置２は、左コントローラ３および右コントローラ４との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置または本体装置２単体がクレードルに装着された場合、本体装置２は、クレードルを介してデータ（例えば、表示画像データや音声データ）を据置型モニタ等に出力することができる。
【００５１】
ここで、本体装置２は、複数の左コントローラ３と同時に（換言すれば、並行して）通信を行うことができる。また、本体装置２は、複数の右コントローラ４と同時に（換言すれば、並行して）通信を行うことができる。したがって、複数のユーザは、左コントローラ３および右コントローラ４のセットをそれぞれ用いて、本体装置２に対する入力を同時に行うことができる。一例として、第１ユーザが左コントローラ３および右コントローラ４の第１セットを用いて本体装置２に対して入力を行うと同時に、第２ユーザが左コントローラ３および右コントローラ４の第２セットを用いて本体装置２に対して入力を行うことが可能となる。
【００５２】
本体装置２は、タッチパネル１３の制御を行う回路であるタッチパネルコントローラ８６を備える。タッチパネルコントローラ８６は、タッチパネル１３とプロセッサ８１との間に接続される。タッチパネルコントローラ８６は、タッチパネル１３からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ８１へ出力する。
【００５３】
また、ディスプレイ１２は、プロセッサ８１に接続される。プロセッサ８１は、（例えば、上記の情報処理の実行によって）生成した画像および／または外部から取得した画像をディスプレイ１２に表示する。
【００５４】
本体装置２は、コーデック回路８７およびスピーカ（具体的には、左スピーカおよび右スピーカ）８８を備える。コーデック回路８７は、スピーカ８８および音声入出力端子２５に接続されるとともに、プロセッサ８１に接続される。コーデック回路８７は、スピーカ８８および音声入出力端子２５に対する音声データの入出力を制御する回路である。
【００５５】
本体装置２は、電力制御部９７およびバッテリ９８を備える。電力制御部９７は、バッテリ９８およびプロセッサ８１に接続される。また、図示しないが、電力制御部９７は、本体装置２の各部（具体的には、バッテリ９８の電力の給電を受ける各部、左側端子１７、および右側端子２１）に接続される。電力制御部９７は、プロセッサ８１からの指令に基づいて、バッテリ９８から上記各部への電力供給を制御する。
【００５６】
また、バッテリ９８は、下側端子２７に接続される。外部の充電装置（例えば、クレードル）が下側端子２７に接続され、下側端子２７を介して本体装置２に電力が供給される場合、供給された電力がバッテリ９８に充電される。
【００５７】
図７は、本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図である。なお、本体装置２に関する内部構成の詳細については、図６で示しているため図７では省略している。
【００５８】
左コントローラ３は、本体装置２との間で通信を行う通信制御部１０１を備える。図７に示すように、通信制御部１０１は、端子４２を含む各構成要素に接続される。この実施例においては、通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１０１は、左コントローラ３が本体装置２に対して行う通信方法を制御する。すなわち、左コントローラ３が本体装置２に装着されている場合、通信制御部１０１は、端子４２を介して本体装置２と通信を行う。また、左コントローラ３が本体装置２から外されている場合、通信制御部１０１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１０１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００５９】
また、左コントローラ３は、例えばフラッシュメモリ等のメモリ１０２を備える。通信制御部１０１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１０２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００６０】
左コントローラ３は、各ボタン１０３（具体的には、ボタン３３〜３９、４３、４４、および４７）を備える。また、左コントローラ３は、アナログスティック（図７では「スティック」と記載する）３２を備える。各ボタン１０３およびアナログスティック３２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１０１へ出力する。
【００６１】
通信制御部１０１は、各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から、入力に関する情報（具体的には、操作に関する情報、またはセンサによる検出結果）を取得する。通信制御部１０１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００６２】
上記操作データが本体装置２へ送信されることによって、本体装置２は、左コントローラ３に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１０３およびアナログスティック３２に対する操作を、操作データに基づいて判断することができる。
【００６３】
左コントローラ３は、振動によってユーザに通知を行うための振動子（または、振動デバイス）１０７を備える。この実施例においては、振動子１０７は、本体装置２からの指令によって制御される。すなわち、通信制御部１０１は、本体装置２からの上記指令を受け取ると、当該指令に従って振動子１０７を駆動させる。ここで、左コントローラ３は、コーデック部１０６を備える。通信制御部１０１は、上記指令を受け取ると、指令に応じた振動信号をコーデック部１０６へ出力する。コーデック部１０６は、通信制御部１０１からの振動信号から振動子１０７を駆動させるための駆動信号を生成して振動子１０７へ与える。これによって振動子１０７が動作する。
【００６４】
振動子１０７は、より具体的にはリニア振動子である。リニア振動子は、回転運動をする通常のモータと異なり、入力される電圧に応じて所定方向に駆動されるため、入力される電圧の波形に応じた振幅および周波数で振動をさせることができる。この実施例において、本体装置２から左コントローラ３に送信される振動信号は、単位時間ごとに周波数と振幅とを表すデジタル信号であってよい。別の実施例においては、本体装置２から波形そのものを示す情報を送信するようにしてもよいが、振幅および周波数だけを送信することで通信データ量を削減することができる。また、さらにデータ量を削減するため、そのときの振幅および周波数の数値に替えて、前回の値からの差分だけを送信するようにしてもよい。この場合、コーデック部１０６は、通信制御部１０１から取得される振幅および周波数の値を示すデジタル信号をアナログの電圧の波形に変換し、当該波形に合わせて電圧を入力することで振動子１０７を駆動させる。したがって、本体装置２は、単位時間ごとに送信する振幅および周波数を変えることによって、そのときに振動子１０７を振動させる振幅および周波数を制御することができる。なお、本体装置２から左コントローラ３に送信される振幅および周波数は、１つに限らず、２つ以上送信するようにしてもよい。その場合、コーデック部１０６は、受信された複数の振幅および周波数それぞれが示す波形を合成することで、振動子１０７を制御する電圧の波形を生成することができる。
【００６５】
左コントローラ３は、電力供給部１０８を備える。この実施例において、電力供給部１０８は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ３の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。
【００６６】
図７に示すように、右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。また、右コントローラ４は、通信制御部１１１に接続されるメモリ１１２を備える。通信制御部１１１は、端子６４を含む各構成要素に接続される。通信制御部１１１およびメモリ１１２は、左コントローラ３の通信制御部１０１およびメモリ１０２と同様の機能を有する。したがって、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信（具体的には、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信）との両方で本体装置２と通信を行うことが可能であり、右コントローラ４が本体装置２に対して行う通信方法を制御する。
【００６７】
右コントローラ４は、左コントローラ３の各入力部と同様の各入力部を備える。具体的には、各ボタン１１３、アナログスティック５２を備える。これらの各入力部については、左コントローラ３の各入力部と同様の機能を有し、同様に動作する。
【００６８】
また、右コントローラ４は、振動子１１７およびコーデック部１１６を備える。振動子１１７およびコーデック部１１６は、左コントローラ３の振動子１０７およびコーデック部１０６と同様に動作する。すなわち、通信制御部１１１は、本体装置２からの指令に従って、コーデック部１１６を用いて振動子１１７を動作させる。
右コントローラ４は、電力供給部１１８を備える。電力供給部１１８は、左コントローラ３の電力供給部１０８と同様の機能を有し、同様に動作する。
【００６９】
次に、図８を参照して、この実施例のゲームシステム１において実行される仮想のゲームのゲーム処理についての概要を説明する。図８は、この実施例の仮想のゲームのアプリケーションを実行した場合に、表示装置（たとえば、ディスプレイ１２）に表示されるゲーム画像の限定しない一例を示す図である。
【００７０】
図８に示すように、限定しない一例のゲーム画像としてのゲーム画面２００は、プレイヤキャラクタ２０２を含み、プレイヤキャラクタ２０２には、敵キャラクタ２０６を探索するためのアイテムとしてレーダーオブジェクト２０４が装着される。また、ゲーム画面２００は、敵キャラクタ２０６および背景オブジェクト２０８を含み、敵キャラクタ２０６は背景オブジェクト２０８によって隠れるように配置される。
【００７１】
なお、図８に示す例では、敵キャラクタ２０６が背景オブジェクト２０８に隠れている様子を示すが、敵キャラクタ２０６は隠れていなくてもよい。たとえば、プレイヤキャラクタ２０２、敵キャラクタ２０６および敵キャラクタ２０６とは異なる他のノンプレイヤキャラクタが存在するようなシーンにおいて、敵キャラクタ２０６を探索する場合もある。すなわち、本実施例のゲーム処理は、隠れている探索対象を探す目的に有効であるが、隠れていない対象を探す場面でも使うことができる。
【００７２】
プレイヤキャラクタ２０２は、プレイヤの操作に従って所定の動作の実行を制御されるキャラクタまたはオブジェクトである。プレイヤキャラクタ２０２の所定の動作としては、仮想の或る場所すなわち仮想空間内において、移動したり、アイテムを取得したり、敵キャラクタ２０６を探索したり、敵キャラクタ２０６を攻撃したり、敵キャラクタ２０６の攻撃を防御したりすることなどが該当する。この実施例では、レーダーオブジェクト２０４は、プレイヤキャラクタ２０２に装着されるため、プレイヤキャラクタ２０２の移動に従ってレーダーオブジェクト２０４も移動される。
【００７３】
レーダーオブジェクト２０４は、敵キャラクタ２０６を探索するレーダーを模したオブジェクトであり、プレイヤキャラクタ２０２の頭上で軸２０４ａ回りに回転される。レーダーオブジェクト２０４が回転表示されることにより、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４によって敵キャラクタ２０６を探索していることが示される（演出される）。
【００７４】
敵キャラクタ２０６を含む複数のノンプレイヤキャラクタは、それぞれ、プレイヤによる操作ではなくコンピュータ（図６のプロセッサ８１）によって所定の動作を制御されるキャラクタまたはオブジェクトである。ノンプレイヤキャラクタの所定の動作としては、移動したり、プレイヤキャラクタ２０２を攻撃したり、プレイヤキャラクタ２０２からの攻撃を防御したりすることが該当する。ただし、レーダーオブジェクト２０４の回転は、コンピュータによって制御される。
【００７５】
背景オブジェクト２０８は、主として、仮想空間に配置される地形のオブジェクトを意味する。また、この実施例においては、地形とは、地面（道路、広場などを含む）、床、木、草、花、建物、階段、洞窟、崖、壁などを意味する。図８に示す例では、背景オブジェクト２０８として、草木（花を含む）オブジェクトが表示される。
【００７６】
本体装置２は、画像処理装置としても機能し、ゲーム画面２００を含む各種画面に対応する表示画像データを生成および出力（表示）する。プロセッサ８１は、３次元の仮想空間に各種のオブジェクトおよびキャラクタを配置し、或る情景または場面（シーン）が生成される。このシーンを仮想のカメラで撮影した（視点から見た）画像がゲーム画像としてディスプレイ１２に表示される。
【００７７】
図８に示すゲーム画面２００は、仮想空間に生成した或るシーンを仮想のカメラで撮影した画像である。図９に示すように、仮想空間において、ＸＹ平面に相当する平面またはこのＸＹ平面に平行な平面上に、プレイヤキャラクタ２０２および複数の敵キャラクタ２０６に配置される。ただし、図９では、背景オブジェクト２０８を省略してある。
【００７８】
この実施例では、プレイヤは、アナログスティック３２を操作することにより、プレイヤキャラクタ２０２を仮想空間内で移動させ、レーダーオブジェクト２０４の探索結果に基づいて敵キャラクタ２０６を探索し、Ａボタン５３を操作することにより、探索した敵キャラクタ２０６を攻撃する。
【００７９】
レーダーオブジェクト２０４は、Ｚ軸方向と平行な方向に延びる軸２０４ａを中心に回転され、その検出面（この実施例では、円形状の面）が向いている方向に存在する敵キャラクタ２０６を検出する。レーダーオブジェクト２０４は回転するため、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４は、仮想空間（または、ワールド座標系）のＸＹ平面またはこれに平行な面において、３６０度の向きについて敵キャラクタ２０６が存在するかどうかを探索することができる。
【００８０】
ただし、後述するように、敵キャラクタ２０６を探索可能な範囲（探索領域ＳＲ）はプレイヤキャラクタ２０２またはレーダーオブジェクト２０４の位置を基準に設定されている（図１０参照）。
【００８１】
また、レーダーオブジェクト２０４が回転する速度（以下、「回転速度」という）ｖは、プレイヤキャラクタ２０２と敵キャラクタ２０６の距離に応じて変化される。ただし、複数の敵キャラクタ２０６が探索領域ＳＲ内に存在する場合には、回転速度ｖは、プレイヤキャラクタ２０２の最も近くに存在する敵キャラクタ２０６との距離に応じて変化される。
【００８２】
この実施例では、プレイヤキャラクタ２０２が敵キャラクタ２０６に所定距離未満まで近づいたとき（または、接触したとき）の回転速度ｖが最大値ｖｍに設定され、所定距離以上離れると、距離に応じて回転速度ｖが遅くされる。たとえば、距離または距離の二乗に反比例して回転速度ｖが変化される。または、距離に応じて段階的（ステップ状）に回転速度ｖが変化される。つまり、敵キャラクタ２０６との距離が近いほど、レーダーオブジェクト２０４は速く回転される。後述するように、レーダーオブジェクト２０４によって敵キャラクタ２０６が検出されると振動を発生するため、敵キャラクタ２０６がプレイヤキャラクタ２０２の近くに存在する場合には、振動が発生される時間間隔が短くされる。つまり、振動が発生する時間間隔の長さによって、プレイヤキャラクタ２０２と敵キャラクタの２０６の距離の大きさを認識することができる。
【００８３】
図１０は、図９に示す仮想空間を上方から見た場合において、プレイヤキャラクタ２０２、レーダーオブジェクト２０４および複数の敵キャラクタ２０６（または、後述する「簡易形状２３０」）を模式的に示した図である。以下、図９および図１０を参照しながら、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４による探索領域ＳＲおよび敵キャラクタ２０６を検出した場合の振動制御について説明する。
【００８４】
図９および図１０に示すように、仮想空間においてワールド座標系が設定される。この実施例では、仮想空間における水平面はワールド座標系のＸＹ平面に平行に設定され、水平面に垂直な方向すなわち高さ方向がＺ軸の方向に設定される。ただし、図９に示す例では、横方向がＸ軸の方向であり、奥行き方向がＹ軸の方向である。
【００８５】
また、プレイヤキャラクタ２０２（「操作オブジェクト」に相当する）には、敵キャラクタ２０６を探索するための仮想の判定オブジェクト（「判定領域」に相当する）２２０が設けられる。判定オブジェクト２２０は、棒状（線状）のオブジェクトであり、一方端がプレイヤキャラクタ２０２の中心に位置し、ＸＹ平面に対して平行に伸びている。また、判定オブジェクト２２０は、所定の長さｈを有し、ＸＹ平面に平行な面内において、上記の一方端を中心に一方向（この実施例では、時計回り）に回転される。この判定オブジェクト２２０の回転に従って、上記のレーダーオブジェクト２０４は回転される。したがって、判定オブジェクト２２０も回転速度ｖで回転される。この実施例では、判定オブジェクト２２０は、ＸＹ平面を上方から見た場合に、時計回りに回転される。ただし、反時計回りに回転されてもよい。また、一回転する毎に、回転する方向が反転されてもよい。ただし、判定オブジェクト２２０は、仮想の形状であるため、描画されることはない。実際の判定のためには、プレイヤキャラクタ２０２の中心と所定の長さｈが定義されていればよい。
【００８６】
したがって、判定オブジェクト２２０は、図１０に示すような円内を走査するように回転される。つまり、この円内の範囲または領域が探索領域ＳＲである。この探索領域ＳＲ内に存在する敵キャラクタ２０６が探索または検出される。つまり、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４を中心として、３６０度の向きについて敵キャラクタ２０６が存在するかどうかが探索される。
【００８７】
なお、判定オブジェクト２２０をレーダーオブジェクト２０４の位置に設定しないのは、この実施例では、レーダーオブジェクト２０４はプレイヤキャラクタ２０２の頭部に装着されるため、プレイヤキャラクタ２０２よりも高さが低い敵キャラクタ２０６についても検出可能にするためである。
【００８８】
ただし、宙に浮いている敵キャラクタ２０６も検出可能にするためには、図１１に示すように、判定オブジェクト２２０を縦方向（Ｚ軸に平行な方向）にも伸ばした（または、広げた）平面形状にしてもよい。このようにすれば、プレイヤキャラクタ２０２よりも高さの低い敵キャラクタ２０６および宙に浮いている敵キャラクタ２０６を検出することができる。図１１に示す例では、判定オブジェクト２２０は、プレイヤキャラクタ２０２の足元から頭上の位置まで伸びている。また、判定オブジェクト２２０の縦方向の長さをプレイヤキャラクタ２０２の足元よりも下側の位置まで延ばした場合には、地中に埋もれている敵キャラクタ２０６を検出することもできる。
【００８９】
また、判定オブジェクト２２０を平面形状にせずに、複数（たとえば、３つ）の判定オブジェクト２２０をそれぞれ間隔を隔ててＺ軸方向に並べて配置するようにしてもよい。
【００９０】
一方、探索される対象のオブジェクトまたはキャラクタ（「ターゲットオブジェクト」に相当する）である敵キャラクタ２０６には、衝突判定（当り判定）に用いられる簡易の形状（簡易形状）２３０が設定される。簡易形状２３０は、所定の形状であり、この実施例では、図９に示すように、球形状である。この簡易形状２３０は仮想の形状であるため、描画されることは無い。すなわち、仮想ゲーム空間において、敵キャラクタ２０６の中心から、所定の距離（つまり、半径ｒで決まる長さ）となる部分が簡易形状２３０とされる。なお、実際の判定のためには、球形状のモデルを保持する必要があるわけではなく、敵キャラクタ２０６の中心と所定の距離（半径ｒ）が定義されていればよい。
【００９１】
また、この実施例では、判定オブジェクト２２０によって敵キャラクタ２０６が探知（または検出）されると、そのことが振動でプレイヤに報知される。この実施例では、判定オブジェクト２２０が敵キャラクタ２０６に設定された簡易形状２３０に触れている（または、当たっている）場合に、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４によって当該敵キャラクタ２０６が検出されたことが判断され、振動が発生される。以下、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４によって検出された敵キャラクタ２０６を、単に「検出された敵キャラクタ２０６」と記載することにする。
【００９２】
上述したように、判定オブジェクト２２０は、仮想空間のＸＹ平面に平行な面において回転され、３６０度の向きについて敵キャラクタ２０６が存在するかどうかを探索するので、振動により、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４から見た、検出された敵キャラクタ２０６の位置をプレイヤに示すことができ、プレイヤはその位置を特定することができる。
【００９３】
さらに、この実施例では、レーダーオブジェクト２０４を判定オブジェクト２２０とともに回転させるので、振動とレーダーオブジェクト２０４の向きにより、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４から見た、検出された敵キャラクタ２０６の位置を特定し易くすることができる。
【００９４】
また、この実施例では、振動の大きさ（または、振動の強さ）δは、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６の距離ｄに応じて算出（または、変化）される。ただし、この実施例では、プレイヤキャラクタ２０２の頭部にレーダーオブジェクト２０４が設けられるため、振動の大きさδは、レーダーオブジェクト２０４と敵キャラクタ２０６の距離ｄに応じて変化されるということもできる。以下、振動の大きさδを算出する場合について同様である。また、この実施例では、距離ｄは、ＸＹ平面に平行な面内における直線距離（２次元距離）である。ただし、３次元距離でもよい。
【００９５】
この実施例では、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６の距離ｄが所定距離未満である（または、接触している）場合の振動の大きさδが最大値δｍに設定され、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６の距離ｄまたは距離ｄの二乗に反比例して振動の大きさδが変化される、または、距離ｄに応じて段階的（ステップ状）に振動の大きさδが変化される。
【００９６】
さらに、この実施例では、振動の大きさδは、プレイヤキャラクタ２０２に対する、検出された敵キャラクタ２０６の位置に応じて、左コントローラ３に設けられる振動子１０７による振動の大きさδＬと、右コントローラ４に設けられる振動子１１７による振動の大きさδＲが調整される。つまり、左右の振動の大きさのバランスが調整される。ただし、この実施例では、プレイヤキャラクタ２０２の頭部にレーダーオブジェクト２０４が設けられるため、レーダーオブジェクト２０４と検出された敵キャラクタ２０６の位置関係に応じて、振動子１０７による振動の大きさδＬと振動子１１７による振動の大きさδＲが調整されるということもできる。以下、左右の振動の大きさのバランスが調整される場合について同様である。
【００９７】
一例として、ゲーム画面２００において、検出された敵キャラクタ２０６が、プレイヤキャラクタ２０２の左側に位置している場合には、振動子１０７による振動の大きさ（または、振動の強さ）δＬは、振動子１１７による振動の大きさδＲよりも大きく（または、強く）される。一方、ゲーム画面２００において、検出された敵キャラクタ２０６が、プレイヤキャラクタ２０２の右側に位置している場合には、振動子１１７による振動の大きさδＲは、振動子１０７による振動の大きさδＬよりも大きくされる。また、ゲーム画面２００において、検出された敵キャラクタ２０６が、プレイヤキャラクタ２０２の手前または後ろである場合には、つまり、プレイヤキャラクタ２０２と検出された敵キャラクタ２０６とが縦の直線上に並んでいる場合には、振動子１０７による振動の大きさδＬと振動子１１７による振動の大きさδＲは同じにされる。
【００９８】
ゲーム画面２００において、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２の左側に位置するか、右側に位置するか、手前または後ろに位置するかは、仮想のカメラの位置とプレイヤキャラクタ２０２の位置を通る仮想の直線よりも右側に位置するか、左側に位置するか、当該直線上に位置するかで判断することができる。
【００９９】
ただし、仮想の直線が検出された敵キャラクタ２０６に触れている場合には、この検出された敵キャラクタ２０６は、プレイヤキャラクタ２０２の手前または後ろに位置すると判断するようにしてある。つまり、検出された敵キャラクタ２０６が仮想の直線に触れない（または、当たらない）位置にずれている場合に、プレイヤキャラクタ２０２の左側または右側に位置することが判断される。
【０１００】
この実施例では、振動の大きさδは、プレイヤキャラクタ２０２に対する、検出された敵キャラクタ２０６の位置に応じて、数１に従って算出される。
【０１０１】
［数１］
δＬ＝α×δ，δＲ＝β×δ
ただし、係数αおよびβは、プレイヤキャラクタ２０２に対して、検出された敵キャラクタ２０６が左側に位置するか、右側に位置するか、奥または手前に位置するかで設定される。この実施例では、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２の左側に位置する場合には、係数αが１．０に設定され、係数βが０．２に設定される。一方、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２の右側に位置する場合には、係数αが０．２に設定され、係数βが１．０に設定される。ただし、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２の手前または後ろに位置する場合には、係数αおよび係数βは初期値（α＝β＝１．０）に設定される。つまり、プレイヤキャラクタ２０２に対して、検出された敵キャラクタ２０６が左側に位置する場合には、左右の振動の大きさの比率が５対１に設定され、右側に位置する場合には、左右の振動の大きさの比率が１対５に設定され、奥または手前に位置する場合には、左右の振動の大きさの比率が１対１に設定される。
【０１０２】
これは一例であり、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６の位置関係を振動の大きさで表現すれば良いため、振動の大きさを小さくする場合には、振動させない（すなわち、振動の大きさを０にする）ために係数αまたはβを０に設定してもよい。たとえば、敵キャラクタ２０６がプレイヤキャラクタ２０２に対して真横に位置する場合に、そのことをプレイヤが認識できるように、反対側（つまり、敵キャラクタ２０６が存在しない側）の振動を０にしてもよい。また、振動の大きさを大きくする場合に、係数αまたはβを１．０よりも大きい値に設定するようにしてもよい。
【０１０３】
上述したように、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４は、仮想空間のＸＹ平面またはこれに平行な面において、３６０度の向きについて敵キャラクタ２０６が存在するかどうかを探索するため、プレイヤキャラクタ２０２に対する、検出された敵キャラクタ２０６の方向に応じて、左右の振動の大きさのバランスが調整される。また、左右の振動の大きさのバランスを調整する場合に、一方の振動の大きさを０にすることもあるため、プレイヤキャラクタ２０２に対する、検出された敵キャラクタ２０６の方向に応じて、左右のいずれかの振動の大きさを大きくするということもできる。
【０１０４】
また、判定オブジェクト２２０をＸＹ平面に平行な面内で回転させるとともに、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６の位置関係に応じて、左コントローラ３および右コントローラ４における振動の大きさのバランスを調整するので、敵キャラクタ２０６が背景オブジェクト２０８に隠れていても、左右の振動の大きさに基づいて、検出された敵キャラクタ２０６の位置をより特定し易くすることができる。
【０１０５】
なお、この実施例では、判定オブジェクト２２０が敵キャラクタ２０６に設定された簡易形状２３０に触れている場合に、振動が発生されるため、振動が発生している期間を長くする場合には、図１２に示すように、判定オブジェクト２２０のＸＹ平面に平行な方向の幅を大きくすればよい。このようにすれば、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４から見た、検出された敵キャラクタ２０６の位置をより分かり易く示すことができる。ただし、敵キャラクタ２０６の数が多く、互いに近い位置に存在する場合には、判定オブジェクト２２０のＸＹ平面に平行な方向の幅を大きくすると、一度に複数の敵キャラクタ２０６に判定オブジェクト２２０が触れてしまう可能性がある。このため、敵キャラクタ２０６の数およびそれらの位置関係に応じて、判定オブジェクト２２０のＸＹ平面に平行な方向の幅を設定する必要がある。
【０１０６】
また、判定オブジェクト２２０のＸＹ平面に平行な方向の幅を固定せずに、ゲームの難易度またはレベルに応じて、または、敵キャラクタ２０６の数に応じて、可変的に設定するようにしてもよい。
【０１０７】
以上のように、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４によって敵キャラクタ２０６が検出されたことに応じて、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６の距離ｄが算出され、この距離ｄによって振動の大きさδが決定される。さらに、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６の位置関係によって、振動子１０７の振動の大きさδＬと振動子１１７の振動の大きさδＲのバランスが調整される。バランスの調整された振動の大きさδＬおよびδＲで振動させるための左側振動信号８５４ｈおよび右側振動信号８５４ｉ（図１３参照）が算出される。この実施例では、振動信号は、単位時間ごとに周波数と振幅とを表すデジタル信号である。したがって、所定の周波数であり、振動の大きさδＬおよびδＲに応じて決定された振幅の振動信号（すなわち、左側振動信号８５４ｈおよび右側振動信号８５４ｉ）が算出される。
【０１０８】
図１３は図６に示したＤＲＡＭ８５のメモリマップ８５０の限定しない一例を示す図である。図１３に示すように、ＤＲＡＭ８５は、プログラム記憶領域８５２およびデータ記憶領域８５４を含む。プログラム記憶領域８５２には、ゲームアプリケーションのプログラム（つまり、ゲームプログラム）が記憶される。図１３に示すように、ゲームプログラムは、メイン処理プログラム８５２ａ、画像生成プログラム８５２ｂ、操作検出プログラム８５２ｃ、キャラクタ制御プログラム８５２ｄ、探索プログラム８５２ｅおよび振動信号生成プログラム８５２ｆなどを含む。
【０１０９】
ただし、生成されたゲーム画像などの画像を表示する機能および生成された振動信号に従って振動を発生する機能は本体装置２が備える機能である。したがって、画像表示プログラム８５２ｇおよび振動制御プログラム８５２ｈは、ゲームプログラムに含まれない。
【０１１０】
詳細な説明は省略するが、各プログラム８５２ａ−８５２ｈは、本体装置２に電源が投入された後の適宜のタイミングで、フラッシュメモリ８４および／またはスロット２３に装着された記憶媒体からその一部または全部が読み込まれてＤＲＡＭ８５に記憶される。ただし、各プログラム８５２ａ−８５２ｈの一部または全部は、本体装置２と通信可能な他のコンピュータから取得するようにしてもよい。
【０１１１】
メイン処理プログラム８５２ａは、この実施例の仮想のゲームの全体的なゲーム処理を実行するためのプログラムである。画像生成プログラム８５２ｂは、画像生成データ８５４ｂを用いて、ゲーム画像などの各種の画像に対応する表示画像データを生成するためのプログラムである。
【０１１２】
操作検出プログラム８５２ｃは、左コントローラ３または／および右コントローラ４からの操作データ８５４ａを取得するためのプログラムである。キャラクタ制御プログラム８５２ｄは、プレイヤの操作に基づいて、プレイヤキャラクタ２０２の動作を制御したり、プレイヤの操作に関わらず、レーダーオブジェクト２０４および敵キャラクタ２０６を含むノンプレイヤオブジェクトまたはノンプレイヤキャラクタの動作を制御したりするためのプログラムである。
【０１１３】
探索プログラム８５２ｅは、レーダーオブジェクト２０４によってプレイヤキャラクタ２０２を中心とする探索領域ＳＲ内に存在する対象のキャラクタ（この実施例では、敵キャラクタ２０６）を探索（または、検出）するためのプログラムである。具体的には、探索プログラム８５２ｅは、判定オブジェクト２２０をプレイヤキャラクタ２０２を中心に回転移動させ、この判定オブジェクト２２０が敵キャラクタ２０６に触れているかどうかを判断するためのプログラムである。ただし、探索プログラム８５２ｅは、判定オブジェクト２２０が敵キャラクタ２０６に触れているとき、当該敵キャラクタ２０６を検出したと判断する。
【０１１４】
振動信号生成プログラム８５２ｆは、所定のイベントが発生しことに応じて、左コントローラ３に内蔵される振動子１０７を駆動させるための左側振動信号８５４ｈおよび右コントローラ４に内蔵される振動子１１７を駆動させるための右側振動信号８５４ｉを生成するためのプログラムである。この実施例では、上述したように、プレイヤキャラクタ２０２またはレーダーオブジェクト２０４によって敵キャラクタ２０６が検出されたことに応じて、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６の距離ｄが算出され、この距離ｄによって振動の大きさδが決定される。さらに、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６の位置関係によって、振動子１０７の振動の大きさδＬと振動子１１７の振動の大きさδＲのバランスが調整される。バランスの調整された振動の大きさδＬおよびδＲで振動させるための左側振動信号８５４ｈおよび右側振動信号８５４ｉが算出される。
【０１１５】
画像表示プログラム８５２ｇは、画像生成プログラム８５２ｂに従って生成した表示画像データを表示装置に出力するためのプログラムである。したがって、表示画像データに対応する画像（つまり、ゲーム画面２００など）がディスプレイ１２などの表示装置に表示される。
【０１１６】
振動制御プログラム８５２ｈは、振動信号生成プログラム８５２ｆに従って算出された左側振動信号８５４ｈを用いて左コントローラ３の振動子１０７を駆動制御するとともに、探索プログラム８５２ｅに従って算出された右側振動信号８５４ｉを用いて右コントローラ４の振動子１１７を駆動制御するためのプログラムである。
【０１１７】
なお、プログラム記憶領域８５２には、ＢＧＭ等の音を出力するための音出力プログラム、他の機器と通信するための通信プログラム、データをフラッシュメモリ８４などの不揮発性の記憶媒体に記憶するためのバックアッププログラムなども記憶される。
【０１１８】
また、データ記憶領域８５４には、操作データ８５４ａ、画像生成データ８５４ｂ、現在位置データ８５４ｃ、判定オブジェクトデータ８５４ｄ、距離データ８５４ｅ、振動データ８５４ｆ、係数データ８５４ｇ、左側振動信号８５４ｈおよび右側振動信号８５４ｉなどが記憶される。
【０１１９】
操作データ８５４ａは、左コントローラ３または／および右コントローラ４から受信される操作データである。この実施例においては、本体装置２が左コントローラ３および右コントローラ４の両方から操作データを受信する場合には、本体装置２は、左コントローラ３および右コントローラ４のそれぞれに分類して操作データ８５４ａを記憶する。
【０１２０】
画像生成データ８５４ｂは、ポリゴンデータおよびテクスチャデータなど、表示画像データを生成するために必要なデータである。
【０１２１】
現在位置データ８５４ｃは、プレイヤキャラクタ２０２、レーダーオブジェクト２０４および敵キャラクタ２０６のような仮想空間内において移動可能なキャラクタおよびオブジェクトについての現在フレームの位置に対応する位置座標のデータである。また、現在位置データ８５４ｃは、プレイヤキャラクタ２０２および敵キャラクタ２０６についての衝突（または、当たり）判定のための判定オブジェクト２２０および簡易形状２３０についてのデータも含む。ただし、判定オブジェクト２２０のデータは、プレイヤキャラクタ２０２の中心の位置および所定の長さｈのデータであり、簡易形状２３０のデータは、敵キャラクタ２０６毎の中心の位置および半径ｒのデータである。
【０１２２】
判定オブジェクトデータ８５４ｄは、判定オブジェクト２２０の現在フレームにおける位置および向きについてのデータである。距離データ８５４ｅは、仮想空間における、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６との距離ｄについてデータである。
【０１２３】
振動データ８５４ｆは、距離データ８５４ｅが示す、仮想空間における、プレイヤキャラクタ２０２と、検出された敵キャラクタ２０６との距離ｄに応じて算出される振動の大きさδについてのデータである。振動の大きさδの算出方法は上述したとおりである。係数データ８５４ｇは、振動の大きさδＬと振動の大きさδＲのバランスを調整するための係数αおよび係数βについてのデータである。
【０１２４】
左側振動信号８５４ｈは、振動子１０７を駆動するための振動信号である。右側振動信号８５４ｉは、振動子１１７を駆動するための振動信号である。
【０１２５】
また、ＤＲＡＭ８５のデータ記憶領域８５４には、振動フラグ８５４ｊが設けられる。振動フラグ８５４ｊは、振動を発生させるかどうかを判断するためのフラグである。振動フラグ８５４ｊは、振動を発生させる場合にオンされ、振動を発生させない場合にＯＦＦされる。
【０１２６】
図示は省略するが、データ記憶領域８５４には、ゲームプログラムの実行に必要な、他のデータが記憶されたり、他のフラグおよびタイマ（またはカウンタ）が設けられたりする。
【０１２７】
図１４は、本体装置２のプロセッサ８１（またはコンピュータ）のゲームプログラム７処理（ゲーム全体処理）の限定しない一例を示すフロー図である。以下、図１８を用いて、ゲーム全体処理について説明するが、同じ処理を実行するステップについては重複する説明は省略することにする。
【０１２８】
ただし、図１４に示すフロー図（図１５−図１８も同じ）の各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、この実施例では、基本的には、図１４−図１８に示すフロー図の各ステップの処理をプロセッサ８１が実行するものとして説明するが、プロセッサ８１以外のプロセッサや専用回路が一部のステップを実行するようにしてもよい。
【０１２９】
本体装置２の電源が投入されると、ゲーム全体処理の実行に先だって、プロセッサ８１は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってＤＲＡＭ８５等の各ユニットが初期化される。本体装置２は、ユーザによって、この実施例のゲームプログラムの実行が指示されると、ゲーム全体処理を開始する。
【０１３０】
図１４に示すように、プロセッサ８１は、ゲーム全体処理を開始すると、ステップＳ１で、初期処理を実行する。初期処理では、たとえば、プロセッサ８１は、ゲーム画面２００を生成および表示するための仮想空間を構築し、この仮想空間に登場するプレイヤキャラクタ２０２、レーダーオブジェクト２０４、敵キャラクタ２０６および背景オブジェクト２０８等の各キャラクタないし各オブジェクトを初期位置に配置する。また、プロセッサ８１は、ゲーム制御処理（Ｓ５）で用いる各種パラメータの初期値を設定する。
【０１３１】
なお、詳細な説明は省略するが、ゲーム全体処理の開始に先立って、左コントローラ３および右コントローラ４が本体装置２に装着されているかどうかが判断され、左コントローラ３および右コントローラ４が本体装置２から分離されている場合には、本体装置２と、左コントローラ３および右コントローラ４との間でペアリング処理が実行される。
【０１３２】
続いて、プロセッサ８１は、ステップＳ３で、コントローラ（３，４）から送信されてくる操作データを取得し、ステップＳ５で、ゲーム制御処理を実行する。たとえば、ゲーム制御処理では、操作データに従ってプレイヤキャラクタ２０２を移動させるなどの任意のアクションを実行する。また、ゲームプログラムに従ってレーダーオブジェクト２０４および敵キャラクタ２０６を移動させるなどの任意のアクションを実行する。さらに、必要に応じて、アイテムを仮想空間に出現させる（配置する）。
【０１３３】
次のステップＳ７では、プロセッサ８１およびＧＰＵは、ディスプレイ１２に表示するためのゲーム画像を生成および表示する。簡単に説明すると、プロセッサ８１およびＧＰＵは、ステップＳ５のゲーム制御処理の結果を表すデータおよび画像生成用データ３０４ｂをＲＡＭ２２から読み出し、ＶＲＡＭにゲーム画像データを生成し、ディスプレイ１２に出力する。
【０１３４】
続いて、ステップＳ９では、振動を発生させるかどうかを判断する。ここでは、振動フラグ８５４ｊがオンであるかどうかを判断する。
【０１３５】
ステップＳ９で“ＮＯ”であれば、つまり、振動を発生させない場合には、ステップＳ１３に進む。一方、ステップＳ９で“ＹＥＳ”であれば、つまり、振動を発生させる場合には、ステップＳ１１で、左側振動信号３０４ｊおよび右側振動信号３０４ｋを振動制御部に送信する。振動制御部は、本体装置２のオペレーティングシステムであり、このオペレーティングシステムもプロセッサ８１によって実行される。つまり、コントローラ（１４，１６）を振動させることの指令がアプケーションのプログラムからオペレーティングシステム（すなわち、振動制御部）に送信される。そして、ステップＳ１３では、ゲームを終了するかどうかを判断する。ステップＳ１３の判断は、たとえば、ゲームオーバーになったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ１３で“ＮＯ”であれば、つまりゲームを終了しない場合には、ステップＳ３に戻る。一方、ステップＳ１３で“ＹＥＳ”であれば、つまりゲームを終了する場合には、ゲーム全体処理を終了する。
【０１３６】
図１５および図１６は、本体装置２のプロセッサ８１（またはコンピュータ）の探索処理の限定しない一例を示すフロー図である。この探索処理は、プロセッサ８１によって、図１４に示したゲーム全体処理と並行して実行される。ただし、レーダーオブジェクト２０４によって敵キャラクタ２０６を探索しないシーンまたはプレイヤキャラクタ２０２がレーダーオブジェクト２０４を装着していない場合には、探索処理は実行されない。
【０１３７】
図１５に示すように、プロセッサ８１は、探索処理を開始すると、ステップＳ３１で、判定オブジェクト２２０を所定速度で回転開始する。ただし、実際に判定オブジェクト２２０（または、判定オブジェクト）を描画して回転させる必要はなく、判定オブジェクト２２０に含まれる複数の点のそれぞれのフレーム毎の位置が算出される。この判定オブジェクト２２０に含まれる複数の点のそれぞれの位置に対応する位置座標データが判定オブジェクトデータ８５４ｄとしてデータ記憶領域８５４に記憶または更新される。
【０１３８】
続くステップＳ３３では、係数αおよびβを初期値（α＝β＝１．０）に設定する。次のステップＳ３５では、判定オブジェクト２２０が敵キャラクタ２０６に触れているかどうかを判断する。つまり、プロセッサ８１は、判定オブジェクト２２０が敵キャラクタ２０６に設定された簡易形状２３０に触れいているかどうかを判断する。
【０１３９】
ステップＳ３５で“ＮＯ”であれば、つまり、判定オブジェクト２２０が敵キャラクタ２０６に触れていなければ、図１６に示すステップＳ５５に進む。一方、ステップＳ３５で“ＹＥＳ”であれば、つまり、判定オブジェクト２２０が敵キャラクタ２０６に触れていれば、ステップＳ３７で、振動フラグ８５４ｊをオンし、ステップＳ３９で、プレイヤキャラクタ２０２と、当該敵キャラクタ２０６すなわち検出された敵キャラクタ２０６の距離ｄを算出する。このとき、算出した距離ｄについての距離データ８５４ｅがデータ記憶領域８５４に記憶または更新される。
【０１４０】
次のステップＳ４１では、ステップＳ３９で算出した距離ｄに応じて振動の大きさδを算出する。振動の大きさδの算出方法は上述したとおりである。このとき、算出された振動の大きさδについての振動データ８５４ｆがデータ記憶領域８５４に記憶または更新される。続くステップＳ４３では、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２に最も近い位置の敵キャラクタ２０６であるかどうかを判断する。
【０１４１】
ステップＳ４３で“ＮＯ”であれば、つまり、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２に最も近い位置の敵キャラクタ２０６でなければ、図１６に示すステップＳ４７に進む。一方、ステップＳ４３で“ＹＥＳ”であれば、つまり、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２に最も近い位置の敵キャラクタ２０６であれば、ステップＳ４５で、ステップＳ３９で算出した距離ｄに応じて所定速度を変化させて、ステップＳ４７に進む。
【０１４２】
図１６に示すステップＳ４７では、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２よりも右側であるかどうかを判断する。ステップＳ４７で“ＹＥＳ”であれば、つまり、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２よりも右側であれば、ステップＳ４９で、左よりも右の振動を大きくするように、係数αおよびβを設定して、ステップＳ５５に進む。つまり、ステップＳ４９では、プロセッサ８１は、α＝０．２、β＝１．０に設定する。このとき、係数データ８５４ｇが更新される。
【０１４３】
また、ステップＳ４７で“ＮＯ”であれば、つまり、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２よりも右側でなければ、ステップＳ５１で、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２よりも左側であるかどうかを判断する。
【０１４４】
ステップＳ５１で“ＮＯ”であれば、つまり、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２よりも左側でなければ、ステップＳ５５に進む。一方、ステップＳ５１で“ＹＥＳ”であれば、つまり、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２よりも左側であれば、ステップＳ５３で、右よりも左の振動を大きくするように、係数αおよびβを設定して、ステップＳ５５に進む。つまり、ステップＳ５２では、プロセッサ８１は、α＝１．０、β＝０．２に設定する。このとき、係数データ８５４ｇが更新される。
【０１４５】
ステップＳ５５では、数１に従って、左側振動信号８５４ｈおよび右側振動信号８５４ｉを生成する。このとき、ステップＳ４１で算出された振動の大きさδと、ステップＳ３３、Ｓ４９またはＳ５３で設定された係数α、βすなわち係数データ８５４ｇが用いられる。
【０１４６】
そして、ステップＳ５７では、終了かどうかを判断する。ここでは、プロセッサ８１は、現在のシーンが敵キャラクタ２０６を探索しないシーンであるかどうか、または、プレイヤキャラクタ２０２がレーダーオブジェクト２０４を外したかどうかを判断する。
【０１４７】
ステップＳ５７で“ＮＯ”であれば、つまり、終了でなければ、図１５に示したステップＳ３３に戻る。一方、ステップＳ５７で“ＹＥＳ”であれば、つまり、終了であれば、探索および振動信号生成処理を終了する。
【０１４８】
図１７は図６に示したプロセッサ８１の振動制御処理の限定しない一例を示すフロー図である。たとえば、プロセッサ８１は、アプリケーションのプログラムから振動を発生させることを要求（指示）されると、振動制御処理を開始する。ただし、左側振動信号８５４ｈおよび右側振動信号８５４ｉのそれぞれについて、振動制御処理が並行して実行される。
【０１４９】
図１７に示すように、プロセッサ８１は、振動制御処理を開始すると、ステップＳ７１で、アプリケーションのプログラムつまりゲームプログラムから振動信号が入力されたかどうかを判断する。ステップＳ７１で“ＮＯ”であれば、つまり、アプリケーションのプログラムから振動信号が入力されていなければ、ステップＳ７１に戻る。
【０１５０】
一方、ステップＳ７１で“ＹＥＳ”であれば、つまり、アプリケーションのプログラムから振動信号が入力されれば、ステップＳ７３で、振動信号（左側振動信号８５４ｈまたは右側振動信号８５４ｉ）を該当するコントローラ（３、４）に送信する。したがって、振動信号を受信したコントローラ（３、４）では、振動信号に従って、振動子（１０７、１１７）が駆動される。
【０１５１】
そして、ステップＳ７５では、終了かどうかを判断する。ここでは、プロセッサ８１は、振動を提示する処理を有するアプリケーションが終了されたかどうか、または、当該アプリケーションにおいて振動を提示するシーンが終了されたかどうかを判断する。ステップＳ７５で“ＮＯ”であれば、つまり、終了でなければ、ステップＳ７１に戻る。一方、ステップＳ７５で“ＹＥＳ”であれば、つまり、終了であれば、振動制御処理を終了する。
【０１５２】
この実施例によれば、判定オブジェクトをプレイヤキャラクタを中心に回転させ、判定オブジェクトが敵キャラクタに触れると、コントローラに振動を発生させるので、新しいゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することができる。また、プレイヤキャラクタの位置を中心に３６０°の方向の敵キャラクタの位置を振動により示し易くすることができる。したがって、プレイヤは、プレイヤキャラクタの位置を中心に３６０°の方向の敵キャラクタの位置を振動により知ることができる。
【０１５３】
また、この実施例によれば、判定オブジェクトの回転に合わせてレーダーオブジェクトを回転表示させるので、振動の情報とともに知覚することにより、複数の敵キャラクタが探索領域内に存在する場合には、それぞれの位置を容易に知ることができる。
【０１５４】
さらに、この実施例によれば、左右のコントローラの振動のバランスを維持したり調整したりすることにより、検出された敵キャラクタの位置がプレイヤキャラクタに対して、左側または右側を報知し、さらに判定オブジェクトの回転に合わせて振動させることにより左右だけでなく前方であるか後方であるかも識別できるので、プレイヤキャラクタに対する、検出された敵キャラクタの位置または／および方向を容易に知ることができる。
【０１５５】
なお、この実施例では、プレイヤキャラクタの頭上にレーダーオブジェクトを装着し、敵キャラクタを探索するようにしたが、操作オブジェクトおよびターゲットオブジェクトはこれらに限定される必要はない。
【０１５６】
プレイヤキャラクタが所有するレーダーオブジェクトまたはセンサのような他の操作オブジェクトをプレイヤキャラクタから離れた位置に置いて、敵キャラクタを探索するようにしてもよい。かかる場合には、他の操作オブジェクトは、プレイヤによって直接移動を操作されてもよいし、プレイヤが操作するプレイヤキャラクタの移動に追従して仮想空間内を移動されてもよい。
【０１５７】
また、敵キャラクタに代えて、アイテム、お宝、味方のキャラクタのような他のターゲットオブジェクトを探索するようにしてもい。
【０１５８】
さらに、この実施例では、プレイヤキャラクタに対する、検出された敵キャラクタが左側または右側に位置する場合には、左右の振動の大きさの比率が所定の比率となるように、係数αおよびβを所定の値に設定するようにしたが、これに限定される必要はない。係数αおよびβには、プレイヤキャラクタと、検出された敵キャラクタの距離ｄに応じて変化される値が設定されてもよい。この場合、プレイヤキャラクタに対する、検出された敵キャラクタの位置が左または右に離れるに従って比率が偏るように、係数αおよびβが設定される。
【０１５９】
たとえば、プレイヤキャラクタに対する、検出された敵キャラクタの位置が左である場合には、プレキャラクタと、検出された敵キャラクタの距離ｄが離れるに従って、係数βの値が０．８，０．６，０．４，０．２に変化される。つまり、係数βが段階的に変化される。この場合、係数αの値を１．０で固定しておけば、係数αとβの比率が５対４、５対３、５対２、５対１と次第に変化する。一方、プレイヤキャラクタに対する、検出された敵キャラクタの位置が右である場合には、プレキャラクタと、検出された敵キャラクタの距離ｄが離れるに従って、係数αの値が０．８，０．６，０．４，０．２に変化される。つまり、係数αが段階的に変化される。この場合、係数βの値を１．０で固定しておけば、係数αとβの比率が４対５、３対５、２対５、１対５と次第に変化する。ただし、これは一例であり、係数αおよびβの両方の値を変化させてるようにしてもよい。
【０１６０】
さらにまた、この実施例では、複数の敵キャラクタが探索領域に存在する場合には、検出された複数の敵キャラクタのうち、プレイヤキャラクタの最も近くに存在する敵キャラクタとの距離に基づいて判定オブジェクトの回転速度を決定するようにしたが、これに限定される必要はない。検出するべき順番または優先度が複数の敵キャラクタのそれぞれに設定されている場合には、探索された複数の敵キャラクタのうち、検出するべき順番が最も早いまたは優先度が最も高い敵キャラクタとプレイヤキャラクタの距離に基づいて判定オブジェクトの回転速度を決定するようにしてもよい。
【０１６１】
また、この実施例では、様々なターゲットオブジェクトを探索するための例として、判定オブジェクトを変化させるようにしたが、判定オブジェクトは変化させずに、または、判定オブジェクトとともに、ターゲットオブジェクトに設定される当たり判定用の所定の形状を変化させるようにしてもよい。たとえば、球形状または楕円球形状を、縦方向に延びるカプセル形状または円筒形状に変化させてもよい。
【０１６２】
さらに、この実施例では、情報処理システムの一例としてゲームシステム１を示したが、その構成は限定される必要は無く、他の構成を採用することが可能である。たとえば、上記「コンピュータ」は、上述の実施例においては、１つのコンピュータ（具体的には、プロセッサ８１）であるが、他の実施例においては、複数のコンピュータであってもよい。上記「コンピュータ」は、例えば、複数の装置に設けられる（複数の）コンピュータであってもよく、より具体的には、上記「コンピュータ」は、本体装置２のプロセッサ８１と、コントローラが備える通信制御部（マイクロプロセッサ）１０１、１１１とによって構成されてもよい。
【０１６３】
さらにまた、他の実施例では、インターネットのようなネットワーク上のサーバで、図１４に示したゲーム制御処理を実行するようにしてもよい。かかる場合には、本体装置２のプロセッサ８１は、左コントローラ３および右コントローラ４から受信した操作データを、ネットワーク通信部８２およびネットワークを介して上記のサーバに送信し、サーバでゲーム制御処理を実行された結果（つまり、ゲーム画像のデータおよびゲーム音声のデータ）を受信して、ゲーム画像をディスプレイ１２に表示するとともに、ゲーム音声をスピーカ８８から出力する。つまり、上記の実施例で示したゲームシステム１とネットワーク上のサーバを含む情報処理システムを構成することもできる。
【０１６４】
また、上述の実施例では、ディスプレイ１２にゲーム画像を表示する場合について説明したが、これに限定される必要はない。本体装置２を、クレードルを介して据置型モニタ（たとえば、テレビモニタ）に接続することにより、ゲーム画像を据置型モニタに表示することもできる。かかる場合には、ゲームシステム１と据置型モニタを含む情報処理システムを構成することもできる。
【０１６５】
さらに、上述の実施例では、本体装置２に左コントローラ３および右コントローラ４を着脱可能な構成のゲームシステム１を用いた場合について説明したが、これに限定される必要はない。たとえば、左コントローラ３および右コントローラ４と同様の操作ボタンおよびアナログスティックを有する操作部を本体装置２に一体的に設けたゲーム装置またはゲームプログラムを実行可能な他の電子機器のような情報処理装置を用いることもできる。他の電子機器としては、スマートフォンまたはタブレットＰＣなどが該当する。かかる場合には、操作部はソフトウェアキーで構成することもできる。
【０１６６】
さらにまた、他の実施例では、左コントローラ３および右コントローラ４に代えて、他のコントローラを用いるようにしてもよい。たとえば、左コントローラ３および右コントローラ４と同様の操作ボタン、アナログスティックおよび振動子を左右に有する他のコントローラを本体装置２に通信可能に接続してもよい。
【０１６７】
また、その他の実施例では、連結部材を用いて、左コントローラ３および右コントローラ４を一体的に構成して１つのコントローラとして使用するようにしてもよい。
【０１６８】
さらに、上述の実施例で示した具体的な数値、画像、付加操作装置の構成は一例であり、実際の製品に応じて適宜変更可能である。
【符号の説明】
【０１６９】
１  …ゲームシステム
２  …本体装置
３  …左コントローラ
４  …右コントローラ
３２、５２  …アナログスティック
３９  …ＺＬボタン
６０  …Ｒボタン
６１  …ＺＲボタン
８１  …プロセッサ
【図１】
2020174938.tif 000003
【図２】
2020174938.tif 000004
【図３】
2020174938.tif 000005
【図４】
2020174938.tif 000006
【図５】
2020174938.tif 000007
【図６】
2020174938.tif 000008
【図７】
2020174938.tif 000009
【図８】
2020174938.tif 000010
【図９】
2020174938.tif 000011
【図１０】
2020174938.tif 000012
【図１１】
2020174938.tif 000013
【図１２】
2020174938.tif 000014
【図１３】
2020174938.tif 000015
【図１４】
2020174938.tif 000016
【図１５】
2020174938.tif 000017
【図１６】
2020174938.tif 000018
【図１７】
2020174938.tif 000019
【手続補正書】
【提出日】令和2年1月30日(2020.1.30)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０１２５
【補正方法】変更
【補正の内容】
【０１２５】
また、ＤＲＡＭ８５のデータ記憶領域８５４には、振動フラグ８５４ｊが設けられる。振動フラグ８５４ｊは、振動を発生させるかどうかを判断するためのフラグである。振動フラグ８５４ｊは、振動を発生させる場合にオンされ、振動を発生させない場合にオフされる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１２７
【補正方法】変更
【補正の内容】
【０１２７】
図１４は、本体装置２のプロセッサ８１（またはコンピュータ）のゲームプログラムの処理（ゲーム全体処理）の限定しない一例を示すフロー図である。以下、図１４を用いて、ゲーム全体処理について説明するが、同じ処理を実行するステップについては重複する説明は省略することにする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１２８
【補正方法】変更
【補正の内容】
【０１２８】
ただし、図１４に示すフロー図（図１５−図１７も同じ）の各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、この実施例では、基本的には、図１４−図１７に示すフロー図の各ステップの処理をプロセッサ８１が実行するものとして説明するが、プロセッサ８１以外のプロセッサや専用回路が一部のステップを実行するようにしてもよい。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１３３
【補正方法】変更
【補正の内容】
【０１３３】
次のステップＳ７では、プロセッサ８１は、ディスプレイ１２に表示するためのゲーム画像を生成および表示する。簡単に説明すると、プロセッサ８１は、ステップＳ５のゲーム制御処理の結果を表すデータおよび画像生成データ８５４ｂをＤＲＡＭ８５から読み出し、ゲーム画像データを生成し、ディスプレイ１２に出力する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１３５
【補正方法】変更
【補正の内容】
【０１３５】
ステップＳ９で“ＮＯ”であれば、つまり、振動を発生させない場合には、ステップＳ１３に進む。一方、ステップＳ９で“ＹＥＳ”であれば、つまり、振動を発生させる場合には、ステップＳ１１で、左側振動信号８５４ｈおよび右側振動信号８５４ｉを振動制御部に送信する。振動制御部は、本体装置２のオペレーティングシステムであり、このオペレーティングシステムもプロセッサ８１によって実行される。つまり、コントローラ（１４，１６）を振動させることの指令がアプケーションのプログラムからオペレーティングシステム（すなわち、振動制御部）に送信される。そして、ステップＳ１３では、ゲームを終了するかどうかを判断する。ステップＳ１３の判断は、たとえば、ゲームオーバーになったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ１３で“ＮＯ”であれば、つまりゲームを終了しない場合には、ステップＳ３に戻る。一方、ステップＳ１３で“ＹＥＳ”であれば、つまりゲームを終了する場合には、ゲーム全体処理を終了する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１３６
【補正方法】変更
【補正の内容】
【０１３６】
図１５および図１６は、本体装置２のプロセッサ８１（またはコンピュータ）の探索および振動信号生成処理の限定しない一例を示すフロー図である。この探索および振動信号生成処理は、プロセッサ８１によって、図１４に示したゲーム全体処理と並行して実行される。ただし、レーダーオブジェクト２０４によって敵キャラクタ２０６を探索しないシーンまたはプレイヤキャラクタ２０２がレーダーオブジェクト２０４を装着していない場合には、探索および振動信号生成処理は実行されない。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１３７
【補正方法】変更
【補正の内容】
【０１３７】
図１５に示すように、プロセッサ８１は、探索および振動信号生成処理を開始すると、ステップＳ３１で、判定オブジェクト２２０を所定速度で回転開始する。ただし、実際に判定オブジェクト２２０（または、判定領域）を描画して回転させる必要はなく、判定オブジェクト２２０に含まれる複数の点のそれぞれのフレーム毎の位置が算出される。この判定オブジェクト２２０に含まれる複数の点のそれぞれの位置に対応する位置座標データが判定オブジェクトデータ８５４ｄとしてデータ記憶領域８５４に記憶または更新される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１４４
【補正方法】変更
【補正の内容】
【０１４４】
ステップＳ５１で“ＮＯ”であれば、つまり、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２よりも左側でなければ、ステップＳ５５に進む。一方、ステップＳ５１で“ＹＥＳ”であれば、つまり、検出された敵キャラクタ２０６がプレイヤキャラクタ２０２よりも左側であれば、ステップＳ５３で、右よりも左の振動を大きくするように、係数αおよびβを設定して、ステップＳ５５に進む。つまり、ステップＳ５３では、プロセッサ８１は、α＝１．０、β＝０．２に設定する。このとき、係数データ８５４ｇが更新される。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１６８
【補正方法】変更
【補正の内容】
【０１６８】
さらに、上述の実施例で示した具体的な数値および画像は一例であり、実際の製品に応じて適宜変更可能である。
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図１３
【補正方法】変更
【補正の内容】
【図１３】
2020174938.tif 000020
【手続補正１１】
【補正対象書類名】図面
【補正対象項目名】図１５
【補正方法】変更
【補正の内容】
【図１５】
2020174938.tif 000021