JP6643191B2 - ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法 - Google Patents

ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法 Download PDF

Info

Publication number
JP6643191B2
JP6643191B2 JP2016113214A JP2016113214A JP6643191B2 JP 6643191 B2 JP6643191 B2 JP 6643191B2 JP 2016113214 A JP2016113214 A JP 2016113214A JP 2016113214 A JP2016113214 A JP 2016113214A JP 6643191 B2 JP6643191 B2 JP 6643191B2
Authority
JP
Japan
Prior art keywords
movement
data
posture
game
virtual space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016113214A
Other languages
English (en)
Other versions
JP2017217176A (ja
Inventor
惇 伊藤
惇 伊藤
慎太郎 軸丸
慎太郎 軸丸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2016113214A priority Critical patent/JP6643191B2/ja
Priority to US15/587,671 priority patent/US10058779B2/en
Priority to US15/677,144 priority patent/US10080962B2/en
Publication of JP2017217176A publication Critical patent/JP2017217176A/ja
Application granted granted Critical
Publication of JP6643191B2 publication Critical patent/JP6643191B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/25Output arrangements for video game devices
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/90Constructional details or arrangements of video game devices not provided for in groups A63F13/20 or A63F13/25, e.g. housing, wiring, connections or cabinets
    • A63F13/92Video game devices specially adapted to be hand-held while playing
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/214Input arrangements for video game devices characterised by their sensors, purposes or types for locating contacts on a surface, e.g. floor mats or touch pads
    • A63F13/2145Input arrangements for video game devices characterised by their sensors, purposes or types for locating contacts on a surface, e.g. floor mats or touch pads the surface being also a display device, e.g. touch screens
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/10Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
    • A63F2300/105Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals using inertial sensors, e.g. accelerometers, gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6607Methods for processing data by generating or executing the game program for rendering three dimensional images for animating game characters, e.g. skeleton kinematics

Description

本発明は、複数の操作装置を用いて操作可能なゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法に関する。
従来、少なくとも2軸方向の加速度を検出する入力装置を用いたゲーム処理を行うゲーム装置がある(例えば、特許文献1参照)。例えば、上記特許文献1に開示されたゲーム装置は、入力装置に生じる加速度の種類に応じて、仮想空間において仮想オブジェクトを動作させてボクシングを行うゲームを開示している。
特開2008−67865号公報
しかしながら、仮想的なボクシングゲームにおいてパンチを繰り出した場合、当該パンチが打ち終わるまで次のパンチを繰り出すための操作判定が行われないことが一般的である。したがって、パンチを繰り出してから打ち終わるまでに所定の時間を要する場合、プレイヤが当該パンチを打ち終わるまで待ちきれないことがあり、結果として次のパンチを繰り出すタイミングを逸することがあり得る。
それ故、本発明の目的は、操作指示可能な状態が断続的に生じるゲームにおいて、操作を容易にすることが可能なゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法を提供することである。
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
本発明のゲーム装置の一構成例は、加速度センサおよびジャイロセンサをそれぞれ備えた第1操作装置および第2操作装置を用いた操作に基づいたゲーム処理を行う。ゲーム装置は、操作データ取得部、振り判定部、オブジェクト移動制御部、およびゲーム処理部を備える。操作データ取得部は、第1操作装置から加速度センサの検出結果に基づいた第1加速度データおよびジャイロセンサの検出結果に基づいた第1角速度データを含む第1操作データを取得し、第2操作装置から加速度センサの検出結果に基づいた第2加速度データおよびジャイロセンサの検出結果に基づいた第2角速度データを含む第2操作データを取得する。振り判定部は、少なくとも第1加速度データに基づいて第1操作装置に対する第1振り入力を判定し、少なくとも第2加速度データに基づいて第2操作装置に対する第2振り入力を判定する。オブジェクト移動制御部は、仮想空間において、第1操作データに基づいて第1オブジェクトの移動を制御し、第2操作データに基づいて第2オブジェクトの移動を制御する。ゲーム処理部は、仮想空間における第1オブジェクトおよび第2オブジェクトに基づいたゲーム処理を行う。オブジェクト移動制御部は、移動開始判定部、移動方向設定部、移動開始部、軌道制御部、および移動終了設定部を含む。移動開始判定部は、第1オブジェクトが移動開始可能な第1移動開始可能状態において第1振り入力があったと判定された場合と、第1振り入力があったと判定された後の所定期間以内に当該第1移動開始可能状態になった場合とに、少なくとも当該第1振り入力に基づいて第1オブジェクトを仮想空間において移動開始させる判定を行い、第2オブジェクトが移動開始可能な第2移動開始可能状態において第2振り入力があったと判定された場合と、第2振り入力があったと判定された後の所定期間以内に当該第2移動開始可能状態になった場合とに、少なくとも当該第2振り入力に基づいて第2オブジェクトを仮想空間において移動開始させる判定を行う。移動方向設定部は、少なくとも第1角速度データに基づいて第1操作装置の姿勢を算出して、当該第1操作装置の姿勢に基づいて仮想空間における第1オブジェクトの移動方向を設定し、少なくとも第2角速度データに基づいて第2操作装置の姿勢を算出して、当該第2操作装置の姿勢に基づいて仮想空間における第2オブジェクトの移動方向を設定する。移動開始部は、移動開始判定部において第1オブジェクトを移動開始させると判定された場合に第1オブジェクトを移動開始させ、移動方向設定部において設定された第1オブジェクトの移動方向へ移動させ、移動開始判定部において第2オブジェクトを移動開始させると判定された場合に第2オブジェクトを移動開始させ、移動方向設定部において設定された第2オブジェクトの移動方向へ移動させる。軌道制御部は、第1オブジェクトの移動開始後における第1操作装置の姿勢変化に応じて、仮想空間における第1オブジェクトの軌道を変化させ、第2オブジェクトの移動開始後における第2操作装置の姿勢変化に応じて、仮想空間における第2オブジェクトの軌道を変化させる。移動終了設定部は、所定条件に基づいて第1オブジェクトの移動を終了した後に当該第1オブジェクトを第1所定位置に配置させて第1移動開始可能状態に設定し、第2オブジェクトの移動を終了した後に当該第2オブジェクトを第2所定位置に配置させて第2移動開始可能状態に設定する。
上記によれば、第1オブジェクトおよび第2オブジェクトは、それぞれ移動中であっても第1操作装置や第2操作装置を用いた操作によって軌道が変化するため、第1移動開始可能状態となるまでの時間や第2移動開始可能状態となるまでに時間を要することが考えられる。しかしながら、第1移動開始可能状態でない場合であっても、第1操作装置の振り入力があってから所定期間以内に第1移動開始可能状態になれば当該振り入力に基づいて第1オブジェクトの動作制御が可能となる。また、第2移動開始可能状態でない場合であっても、第2操作装置の振り入力があってから所定期間以内に第2移動開始可能状態になれば当該振り入力に基づいて第2オブジェクトの動作制御が可能となる。したがって、第1移動開始可能状態および/または第2移動開始可能状態になるまでに時間を要する場合であっても、操作を容易にすることが可能となる。
また、上記移動開始判定部は、第1オブジェクトおよび第2オブジェクトの一方が移動開始した時点から所定期間以内に他方を移動開始させる判定がされた場合、第1オブジェクトおよび第2オブジェクトが組となった所定のアクションを開始させる判定を、さらに行ってもよい。
上記によれば、第1オブジェクトの移動開始タイミングと第2オブジェクトの移動開始タイミングとの関係に基づいて、所定のアクションが行われるため、今までにない操作環境に基づいたゲームが可能となる。
また、上記ゲーム処理部は、衝突処理部を含んでもよい。衝突処理部は、仮想空間において第1オブジェクトおよび/または第2オブジェクトと他のオブジェクトとの衝突判定を行い、当該判定において肯定判定された場合に当該他のオブジェクトに対して所定の処理を行う。衝突処理部は、移動開始判定部において所定のアクションが開始されると判定された場合、仮想空間において第1オブジェクトおよび第2オブジェクトの間に設定される所定領域と他のオブジェクトとの衝突判定を、さらに行ってもよい。
上記によれば、第1オブジェクトおよび第2オブジェクトだけでなく、第1オブジェクトおよび第2オブジェクトの間にも衝突判定領域が設定されるため、戦略性に富んだゲームが可能となる。
また、上記軌道制御部は、所定のアクションが行われている期間においても、第1操作装置の姿勢変化に応じて第1オブジェクトの軌道を変化させ、第2操作装置の姿勢変化に応じて第2オブジェクトの軌道を変化させてもよい。
上記によれば、移動中の第1オブジェクトおよび/または第2オブジェクトの軌道を変化させることによって、第1オブジェクトおよび第2オブジェクトの組の関係も変化するため、さらに戦略性に富んだゲームが可能となる。
また、上記振り判定部は、第1加速度データが示す加速度の大きさが第1閾値を超えたか否かに基づいて第1振り入力を判定し、第2加速度データが示す加速度の大きさが第2閾値を越えたか否かに基づいて第2振り入力を判定してもよい。
上記によれば、第1操作装置および第2操作装置をそれぞれ所定の加速度以上の動きで振り動かすことによって、ゲーム操作が可能となる。
また、上記移動方向設定部は、実空間における重力方向に対する第1操作装置の左右方向の軸の傾きに基づいて、第1操作装置の姿勢を算出し、当該重力方向に対する第2操作装置の左右方向の軸の傾きに基づいて、第2操作装置の姿勢を算出してもよい。
上記によれば、第1操作装置および/または第2操作装置を実空間におけるロール方向に傾けることによって、第1オブジェクトおよび/または第2オブジェクトの移動方向を制御することができる。
また、上記軌道制御部は、第1操作装置の左右方向の軸の前後方向周りの回転角度の変化に基づいて、第1操作装置の姿勢変化を算出し、第2操作装置の左右方向の軸の前後方向周りの回転角度の変化に基づいて、第2操作装置の姿勢変化を算出してもよい。
上記によれば、第1操作装置および/または第2操作装置をロール方向に回転させることによって、移動中の第1オブジェクトおよび/または第2オブジェクトの軌道を制御することができる。
また、上記軌道制御部は、実空間における重力方向に対する第1操作装置の前後方向の軸の回転角度の変化に基づいて、第1操作装置の姿勢変化を算出し、当該重力方向に対する第2操作装置の前後方向の軸の回転角度の変化に基づいて、第2操作装置の姿勢変化を算出してもよい。
上記によれば、第1操作装置および/または第2操作装置を実空間におけるヨー方向に回転させることによって、移動中の第1オブジェクトおよび/または第2オブジェクトの軌道を制御することができる。
また、上記オブジェクト移動制御部は、移動開始位置設定部を、さらに含んでもよい。移動開始位置設定部は、少なくとも第1角速度データに基づいた第1操作装置の姿勢と少なくとも第2角速度データに基づいた第2操作装置の姿勢との両方に基づいてプレイヤオブジェクトを移動させることによって、当該プレイヤキャラクタの位置を基準とした相対的な位置に設定される第1所定位置および第2所定位置を移動させる。
上記によれば、第1操作装置の姿勢および第2操作装置の姿勢の両方に基づいて、第1オブジェクトおよび第2オブジェトの移動開始位置を変化させることができるため、さらにゲーム操作のバリエーションを増やすことができる。
また、本発明は、ゲームプログラム、ゲームシステム、およびゲーム処理方法の形態で実施されてもよい。
本発明によれば、オブジェクトの移動開始可能状態になるまでに時間を要する場合であっても、操作を容易にすることが可能となる。
本実施形態における情報処理システム1の一例において、本体装置2に左コントローラ3および右コントローラ4を装着した状態を示す図 本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図 本体装置2の一例を示す六面図 左コントローラ3の一例を示す六面図 右コントローラ4の一例を示す六面図 本実施形態における情報処理システムの他の例の全体構成を示す図 クレードル5の一例の外観構成を示す図 本体装置2の内部構成の一例を示すブロック図 情報処理システム1の内部構成の一例を示すブロック図 クレードル5の内部構成の一例を示すブロック図 離脱状態において、1人のユーザが左コントローラ3および右コントローラ4の組を把持して情報処理システム1を利用する様子の一例を示す図 離脱状態において、1人のユーザが左コントローラ3および右コントローラ4の組を把持して情報処理システム1を利用する様子の一例を示す図 左コントローラ3および右コントローラ4を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図 左コントローラ3および右コントローラ4を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図 左コントローラ3および右コントローラ4を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図 本実施形態において本体装置2のDRAM85に設定されるデータ領域の一例を示す図 情報処理システム1で実行されるゲーム処理の一例を示すフローチャート 図17におけるステップS144およびステップS145において行われるコントローラ振り認識処理の詳細の一例を示すサブルーチン 図17におけるステップS144およびステップS145において行われるコントローラ振り認識処理の詳細の一例を示すサブルーチン 図17におけるステップS146およびステップS147において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチン 図17におけるステップS146およびステップS147において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチン 図17におけるステップS146およびステップS147において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチン 図17におけるステップS148において行われるプレイヤオブジェクト移動処理の詳細の一例を示すサブルーチン
以下、本実施形態の一例に係るゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法について説明する。本実施形態におけるゲームシステムの一例となる情報処理システム1は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とによって構成される。また、上記情報処理システムの他の態様は、上記構成にクレードル5(図5、図7等参照)を加えて構成されることもある。本実施形態における情報処理システム1は、本体装置2に対して左コントローラ3および右コントローラ4が着脱可能であり、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用でき、また、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(図2参照)。また、情報処理システム1は、本体装置2に画像を表示する態様での利用と、テレビ等の他の表示装置に画像を表示させる態様での利用が可能である。前者の態様において、情報処理システム1は、携帯型装置(例えば、携帯ゲーム機)として利用することができる。また、後者の態様において、情報処理システム1は、据置型装置(例えば、据置型ゲーム機)として利用することができる。
図1は、本実施形態における情報処理システム1の一例において、本体装置2に左コントローラ3および右コントローラ4を装着した状態を示す図である。図1に示すように、情報処理システム1は、本体装置2と、左コントローラ3と、右コントローラ4とを含む。左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、情報処理システム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。図1および図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。左コントローラ3は、本体装置2の左側面(図1に示すx軸正方向側の側面)に装着することができ、本体装置2の左側面に沿って図1に示すy軸方向にスライドさせることによって本体装置2に着脱可能となっている。また、右コントローラ4は、本体装置2の右側面(図1に示すx軸負方向側の側面)に装着することができ、本体装置2の右側面に沿って図1に示すy軸方向にスライドさせることによって本体装置2に着脱可能となっている。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。なお、本実施形態において、1人のユーザが操作する「操作装置」は、1つのコントローラ(例えば、左コントローラ3および右コントローラ4の一方)でも複数のコントローラ(例えば、左コントローラ3および右コントローラ4の両方、またはさらに他のコントローラを含んでもよい)でもよく、当該「操作装置」は、1以上のコントローラによって構成可能となる。以下、本体装置2と左コントローラ3および右コントローラ4との具体的な構成の一例について説明する。
図3は、本体装置2の一例を示す六面図である。図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。本実施形態においては、ハウジング11は、横長の形状であるものとする。つまり、本実施形態においては、ハウジング11の主面の長手方向(すなわち、図1に示すx軸方向)を横方向(左右方向とも言う)と呼び、当該主面の短手方向(すなわち、図1に示すy軸方向)を縦方向(上下方向とも言う)と呼び、主面に垂直な方向(すなわち、図1に示すz軸方向)を奥行方向(前後方向とも言う)と呼ぶこととする。本体装置2は、本体装置2が横長となる向きで利用されることが可能である。また、本体装置2が縦長となる向きで利用されることも可能である。その場合には、ハウジング11を縦長の形状であるものと見なしてもよい。
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が取得または生成した画像(静止画であってもよいし、動画であってもよい)を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、図8に示すスピーカ88)を備えている。図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
図3に示すように、本体装置2は、ハウジング11の左側面において左レール部材15を備える。左レール部材15は、左コントローラ3を本体装置2に着脱可能に装着するための部材である。左レール部材15は、ハウジング11の左側面において、上下方向に沿って延びるように設けられる。左レール部材15は、左コントローラ3のスライダ(すなわち、図4に示すスライダ40)と係合可能な形状を有しており、左レール部材15とスライダ40とによってスライド機構が形成される。このスライド機構によって、左コントローラ3を本体装置2に対してスライド可能かつ着脱可能に装着することができる。
また、本体装置2は左側端子17を備える。左側端子17は、本体装置2が左コントローラ3と有線通信を行うための端子である。左側端子17は、左コントローラ3が本体装置2に装着された場合に、左コントローラ3の端子(図5に示す端子42)と接触する位置に設けられる。左側端子17の具体的な位置は任意である。本実施形態においては、図3に示すように、左側端子17は、左レール部材15の底面に設けられる。また、本実施形態においては、左側端子17は、左レール部材15の底面における下側の端部付近に設けられる。
図3に示すように、ハウジング11の右側面には、左側面に設けられる構成と同様の構成が設けられる。すなわち、本体装置2は、ハウジング11の右側面において右レール部材19を備える。右レール部材19は、ハウジング11の右側面において、上下方向に沿って延びるように設けられる。右レール部材19は、右コントローラ4のスライダ(すなわち、図5に示すスライダ62)と係合可能な形状を有しており、右レール部材19とスライダ62とによってスライド機構が形成される。このスライド機構によって、右コントローラ4を本体装置2に対してスライド可能かつ着脱可能に装着することができる。
また、本体装置2は右側端子21を備える。右側端子21は、本体装置2が右コントローラ4と有線通信を行うための端子である。右側端子21は、右コントローラ4が本体装置2に装着された場合に、右コントローラ4の端子(図5に示す端子64)と接触する位置に設けられる。右側端子21の具体的な位置は任意である。本実施形態においては、図3に示すように、右側端子21は、右レール部材19の底面に設けられる。また、本実施形態においては、右側端子21は、右レール部材19の底面における下側の端部付近に設けられる。
図3に示すように、本体装置2は、第1スロット23を備える。第1スロット23は、ハウジング11の上側面に設けられる。第1スロット23は、第1の種類の記憶媒体を装着可能な形状を有する。第1の種類の記憶媒体は、例えば、情報処理システム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。第1の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。図3に示すように、電源ボタン28は、ハウジング11の上側面に設けられる。電源ボタン28は、本体装置2の電源のオン/オフを切り替えるためのボタンである。
本体装置2は、音声入出力端子(具体的には、イヤホンジャック)25を備える。すなわち、本体装置2は、音声入出力端子25にマイクやイヤホンを装着することができる。図3に示すように、音声入出力端子25は、ハウジング11の上側面に設けられる。
本体装置2は、音量ボタン26aおよび26bを備える。図3に示すように、音量ボタン26aおよび26bは、ハウジング11の上側面に設けられる。音量ボタン26aおよび26bは、本体装置2によって出力される音量を調整する指示を行うためのボタンである。すなわち、音量ボタン26aは、音量を下げる指示を行うためのボタンであり、音量ボタン26bは、音量を上げる指示を行うためのボタンである。
また、ハウジング11には、排気孔11cが形成される。図3に示すように、排気孔11cは、ハウジング11の上側面に形成される。排気孔11cは、ハウジング11の内部で発生した熱をハウジング11の外部へ排気する(換言すれば、放出する)ために形成される。すなわち、排気孔11cは、排熱孔であるとも言える。
本体装置2は、下側端子27を備える。下側端子27は、本体装置2が、後述するクレードル5と通信を行うための端子である。図3に示すように、下側端子27は、ハウジング11の下側面に設けられる。本体装置2がクレードル5に装着された場合、下側端子27は、クレードル5の端子(図7に示す本体端子73)に接続される。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。
また、本体装置2は第2スロット24を備える。本実施形態においては、第2スロット24は、ハウジング11の下側面に設けられる。ただし、他の実施形態においては、第2スロット24は、第1スロット23とは同じ面に設けられてもよい。第2スロット24は、第1の種類とは異なる第2の種類の記憶媒体を装着可能な形状を有する。第2の種類の記憶媒体は、例えば、汎用の記憶媒体であってもよい。例えば、第2の種類の記憶媒体は、SDカードであってもよい。第2の種類の記憶媒体は、例えば、第1の種類の記憶媒体と同様、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。
また、ハウジング11には、吸気孔11dが形成される。図3に示すように、吸気孔11dは、ハウジング11の下側面に形成される。吸気孔11dは、ハウジング11の外部の空気をハウジング11の内部へ吸気する(換言すれば、導入する)ために形成される。本実施形態においては、排気孔11cが形成される面の反対側の面に吸気孔11dが形成されるので、ハウジング11内部の放熱を効率良く行うことができる。
以上に説明した、ハウジング11に設けられる各構成要素(具体的には、ボタン、スロット、端子等)の形状、数、および設置位置は、任意である。例えば、他の実施形態においては、電源ボタン28および各スロット23および24のうちのいくつかは、ハウジング11の他の側面あるいは背面に設けられてもよい。また、他の実施形態においては、本体装置2は、上記各構成要素のうちいくつかを備えていない構成であってもよい。
図4は、左コントローラ3の一例を示す六面図である。図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態において、ハウジング31は、略板状である。また、ハウジング31の主面(換言すれば、表側の面、すなわち、図1に示すz軸負方向側の面)は、大略的には矩形形状である。また、本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、図1に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。なお、ハウジング31の形状は任意であり、他の実施形態においては、ハウジング31は略板状でなくてもよい。また、ハウジング31は、矩形形状でなくてもよく、例えば半円状の形状等であってもよい。また、ハウジング31は、縦長の形状でなくてもよい。
ハウジング31の上下方向の長さは、本体装置2のハウジング11の上下方向の長さとほぼ同じである。また、ハウジング31の厚さ(すなわち、前後方向の長さ、換言すれば、図1に示すz軸方向の長さ)は、本体装置2のハウジング11の厚さとほぼ同じである。したがって、左コントローラ3が本体装置2に装着された場合(図1参照)には、ユーザは、本体装置2と左コントローラ3とを一体の装置のような感覚で把持することができる。
また、図4に示すように、ハウジング31の主面は、左側の角部分が、右側の角部分よりも丸みを帯びた形状になっている。すなわち、ハウジング31の上側面と左側面との接続部分、および、ハウジング31の下側面と左側面との接続部分は、その上側面と右側面との接続部分、および、その下側面と右側面との接続部分に比べて、丸くなっている(換言すれば、面取りにおけるRが大きい)。したがって、左コントローラ3が本体装置2に装着された場合(図1参照)には、一体型装置となった情報処理システム1の左側が丸みを帯びた形状となるので、ユーザにとって持ちやすい形状となる。
左コントローラ3は、アナログスティック32を備える。図4に示すように、アナログスティック32が、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部の一例である。アナログスティック32は、ハウジング31の主面に平行な全方向(すなわち、上下左右および斜め方向を含む、360°の方向)に傾倒可能なスティック部材を有する。ユーザは、スティック部材を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、方向入力部は、十字キーまたはスライドスティック等であってもよい。また、本実施形態においては、スティック部材を(ハウジング31に垂直な方向に)押下する入力が可能である。すなわち、アナログスティック32は、スティック部材の傾倒方向および傾倒量に応じた方向および大きさの入力と、スティック部材に対する押下入力とを行うことが可能な入力部である。
左コントローラ3は、4つの操作ボタン33〜36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および、左方向ボタン36)を備える。図4に示すように、これら4つの操作ボタン33〜36は、ハウジング31の主面においてアナログスティック32の下側に設けられる。なお、本実施形態においては、左コントローラ3の主面に設けられる操作ボタンを4つとするが、操作ボタンの数は任意である。これらの操作ボタン33〜36は、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。なお、本実施形態においては、各操作ボタン33〜36は方向入力を行うために用いられてもよいことから、各操作ボタン33〜36を、右方向ボタン33、下方向ボタン34、上方向ボタン35、および、左方向ボタン36と呼んでいる。ただし、各操作ボタン33〜36は、方向入力以外の指示を行うために用いられてもよい。
また、左コントローラ3は−(マイナス)ボタン47を備える。図4に示すように、−ボタン47は、ハウジング31の主面に設けられ、より具体的には、主面における右上領域に設けられる。−ボタン47は、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。−ボタン47は、例えば、ゲームアプリケーションにおいてセレクトボタン(例えば、選択項目の切り替えに用いられるボタン)として用いられる。
左コントローラ3の主面に設けられる各操作部(具体的には、アナログスティック32および上記各ボタン33〜36、47)は、左コントローラ3が本体装置2に装着される場合、一体型装置となった情報処理システム1を把持するユーザの例えば左手の親指によって操作される。また、左コントローラ3が本体装置2から外された状態において両手で横向きに把持されて使用される場合、上記各操作部は、左コントローラ3を把持するユーザの例えば左右の手の親指で操作される。具体的には、この場合、アナログスティック32はユーザの左手の親指で操作され、各操作ボタン33〜36はユーザの右手の親指で操作される。
左コントローラ3は、第1Lボタン38を備える。また、左コントローラ3は、ZLボタン39を備える。これらの操作ボタン38および39は、上記操作ボタン33〜36と同様、本体装置2で実行される各種プログラムに応じた指示を行うために用いられる。図4に示すように、第1Lボタン38は、ハウジング31の側面のうちの左上部分に設けられる。また、ZLボタン39は、ハウジング31の側面から裏面にかけての左上部分(厳密には、ハウジング31を表側から見たときの左上部分)に設けられる。つまり、ZLボタン39は、第1Lボタン38の後側(図1に示すz軸正方向側)に設けられる。本実施形態においては、ハウジング31の左上部分が丸みを帯びた形状であるので、第1Lボタン38およびZLボタン39は、ハウジング31の当該左上部分の丸みに応じた丸みを帯びた形状を有する。左コントローラ3が本体装置2に装着される場合、第1Lボタン38およびZLボタン39は、一体型装置となった情報処理システム1における左上部分に配置されることになる。
左コントローラ3は、上述のスライダ40を備えている。図4に示すように、スライダ40は、ハウジング31の右側面において、上下方向に延びるように設けられる。スライダ40は、本体装置2の左レール部材15(より具体的には、左レール部材15の溝)と係合可能な形状を有している。したがって、左レール部材15に係合したスライダ40は、スライド方向(換言すれば左レール部材15が延びる方向)に垂直な向きに関しては固定されて外れないようになっている。
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。端子42は、左コントローラ3が本体装置2に装着された場合に、本体装置2の左側端子17(図3)と接触する位置に設けられる。端子42の具体的な位置は任意である。本実施形態においては、図4に示すように、端子42は、スライダ40の装着面に設けられる。また、本実施形態においては、端子42は、スライダ40の装着面における下側の端部付近に設けられる。
図5は、右コントローラ4の一例を示す六面図である。図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態において、ハウジング51は、略板状である。また、ハウジング51の主面(換言すれば、表側の面、すなわち、図1に示すz軸負方向側の面)は、大略的には矩形形状である。また、本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
右コントローラ4のハウジング51は、左コントローラ3のハウジング31と同様、その上下方向の長さは、本体装置2のハウジング11の上下方向の長さとほぼ同じであり、その厚さは、本体装置2のハウジング11の厚さとほぼ同じである。したがって、右コントローラ4が本体装置2に装着された場合(図1参照)には、ユーザは、本体装置2と右コントローラ4とを一体の装置のような感覚で把持することができる。
また、図5に示すように、ハウジング51の主面は、右側の角部分が、左側の角部分よりも丸みを帯びた形状になっている。すなわち、ハウジング51の上側面と右側面との接続部分、および、ハウジング51の下側面と右側面との接続部分は、その上側面と左側面との接続部分、および、その下側面と左側面との接続部分に比べて、丸くなっている(換言すれば、面取りにおけるRが大きい)。したがって、右コントローラ4が本体装置2に装着された場合(図1参照)には、一体型装置となった情報処理システム1の右側が丸みを帯びた形状となるので、ユーザにとって持ちやすい形状となる。
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。本実施形態においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、左コントローラ3と同様、4つの操作ボタン53〜56(具体的には、Aボタン53、Bボタン54、Xボタン55、および、Yボタン56)を備える。本実施形態においては、これら4つの操作ボタン53〜56は、左コントローラ3の4つの操作ボタン33〜36と同じ機構である。図5に示すように、これらアナログスティック52および各操作ボタン53〜56は、ハウジング51の主面に設けられる。なお、本実施形態においては、右コントローラ4の主面に設けられる操作ボタンを4つとするが、操作ボタンの数は任意である。
ここで、本実施形態においては、右コントローラ4における2種類の操作部(アナログスティックおよび操作ボタン)の位置関係は、左コントローラ3におけるこれら2種類の操作部の位置関係とは反対になっている。すなわち、右コントローラ4においては、アナログスティック52は各操作ボタン53〜56の上方に配置されるのに対して、左コントローラ3においては、アナログスティック32は各操作ボタン33〜36の下方に配置される。このような配置によって、左コントローラ3および右コントローラ4を本体装置2から外して使用する場合に似たような操作感覚で使用することができる。
また、右コントローラ4は、+(プラス)ボタン57を備える。図5に示すように、+ボタン57は、ハウジング51の主面に設けられ、より具体的には、主面の左上領域に設けられる。+ボタン57は、他の操作ボタン53〜56と同様、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。+ボタン57は、例えば、ゲームアプリケーションにおいてスタートボタン(例えば、ゲーム開始の指示に用いられるボタン)として用いられる。
右コントローラ4は、ホームボタン58を備える。図5に示すように、ホームボタン58は、ハウジング51の主面に設けられ、より具体的には、主面の左下領域に設けられる。ホームボタン58は、本体装置2のディスプレイ12に所定のメニュー画面を表示させるためのボタンである。メニュー画面は、例えば、本体装置2において実行可能な1以上のアプリケーションのうちからユーザが指定したアプリケーションを起動することが可能な画面である。メニュー画面は、例えば、本体装置2の起動時に表示されてもよい。本実施形態においては、本体装置2においてアプリケーションが実行されている状態(すなわち、当該アプリケーションの画像がディスプレイ12に表示されている状態)において、ホームボタン58が押下されると、所定の操作画面がディスプレイ12に表示されてもよい(このとき、操作画面に代えてメニュー画面が表示されてもよい)。なお、操作画面は、例えば、アプリケーションを終了してメニュー画面をディスプレイ12に表示させる指示、および、アプリケーションを再開する指示等を行うことが可能な画面である。
右コントローラ4の主面に設けられる各操作部(具体的には、アナログスティック52および上記各ボタン53〜58)は、右コントローラ4が本体装置2に装着される場合、情報処理システム1を把持するユーザの例えば右手の親指によって操作される。また、右コントローラ4が本体装置2から外された状態において両手で横向きに把持されて使用される場合、上記各操作部は、右コントローラ4を把持するユーザの例えば左右の手の親指で操作される。具体的には、この場合、アナログスティック52はユーザの左手の親指で操作され、各操作ボタン53〜56はユーザの右手の親指で操作される。
右コントローラ4は、第1Rボタン60を備える。また、右コントローラ4は、ZRボタン61を備える。図5に示すように、第1Rボタン60は、ハウジング51の側面のうちの右上部分に設けられる。また、ZRボタン61は、ハウジング51の側面から裏面にかけての右上部分(厳密には、ハウジング51を表側から見たときの右上部分)に設けられる。つまり、ZRボタン61は、第1Rボタン60の後側(図1に示すz軸正方向側)に設けられる。本実施形態においては、ハウジング51の右上部分が丸みを帯びた形状であるので、第1Rボタン60およびZRボタン61は、ハウジング51の当該右上部分の丸みに応じた丸みを帯びた形状を有する。右コントローラ4が本体装置2に装着される場合、第1Rボタン60およびZRボタン61は、情報処理システム1における右上部分に配置されることになる。
右コントローラ4は、左コントローラ3と同様のスライダ機構を備えている。すなわち、右コントローラ4は、上述のスライダ62を備えている。図5に示すように、スライダ62は、ハウジング51の左側面において、上下方向に延びるように設けられる。スライダ62は、本体装置2の右レール部材19(より具体的には、右レール部材19の溝)と係合可能な形状を有している。したがって、右レール部材19に係合したスライダ62は、スライド方向(換言すれば右レール部材19が延びる方向)に垂直な向きに関しては固定されて外れないようになっている。
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。端子64は、右コントローラ4が本体装置2に装着された場合に、本体装置2の右側端子21(図3)と接触する位置に設けられる。端子64の具体的な位置は任意である。本実施形態においては、図5に示すように、端子64は、スライダ62の装着面に設けられる。本実施形態においては、端子64は、スライダ62の装着面における下側の端部付近に設けられる。
なお、上記左コントローラ3および右コントローラ4において、ハウジング31または51に設けられる各構成要素(具体的には、スライダ、スティック、およびボタン等)の形状、数、および、設置位置は任意である。例えば、他の実施形態においては、左コントローラ3および右コントローラ4は、アナログスティックとは別の種類の方向入力部を備えていてもよい。また、スライダ40または62は、本体装置2に設けられるレール部材15または19の位置に応じた位置に配置されてよく、例えば、ハウジング31または51の主面または裏面に配置されてもよい。また、他の実施形態においては、左コントローラ3および右コントローラ4は、上記各構成要素のうちいくつかを備えていない構成であってもよい。
図6は、本実施形態における情報処理システムの他の例の全体構成を示す図である。図6に示すように、一例として、クレードル5は、左コントローラ3および右コントローラ4を本体装置2から取り外した状態で本体装置2のみを載置することが可能である。また、さらに他の例として、クレードル5は、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置を載置することも可能である。また、クレードル5は、ディスプレイ12とは別体の外部表示装置の一例である据置型モニタ6(例えば、据置型テレビ)と通信可能である(有線通信であってもよいし、無線通信であってもよい)。詳細は後述するが、上記一体型装置または本体装置2単体をクレードル5に載置した場合、情報処理システムは、本体装置2が取得または生成した画像を据置型モニタ6に表示することができる。また、本実施形態においては、クレードル5は、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードル5は、ハブ装置(具体的には、USBハブ)の機能を有する。
図7は、クレードル5の一例の外観構成を示す図である。クレードル5は、上記一体型装置または本体装置2のみを着脱可能に載置する(装着するとも言える)ことが可能なハウジングを有する。本実施形態においては、図7に示すように、ハウジングは、溝71aが形成される第1支持部71と、略平面状の第2支持部72とを有する。
図7に示すように、第1支持部71に形成される溝71aは、上記一体型装置の下側部分の形状に応じた形状を有する。具体的には、溝71aは、上記一体型装置の下側部分を挿入可能な形状であり、より具体的には、上記本体装置2の下側部分と略一致する形状である。したがって、上記一体型装置の下側部分を溝71aに挿入することによって、上記一体型装置をクレードル5に載置することができる。また、第2支持部72は、その下側部分が溝71aに挿入された上記一体型装置の表面(すなわち、ディスプレイ12が設けられる面)を支持する。この第2支持部72によって、クレードル5は、上記一体型装置をより安定的に支持することができる。なお、図7に示すハウジングの形状は一例であり、他の実施形態においては、クレードル5のハウジングは、上記本体装置2を載置することが可能な任意の形状であってよい。
図7に示すように、また、クレードル5は、クレードル5が上記一体型装置と通信を行うための本体端子73を備える。図7に示すように、本体端子73は、第1支持部71に形成される溝71aの底面に設けられる。より具体的には、本体端子73は、上記一体型装置がクレードル5に装着される場合に、本体装置2の下側端子27が接触する位置に設けられる。本実施形態においては、本体端子73は、USBコネクタ(より具体的には、オス側コネクタ)である。なお、本実施形態においては、上記一体型装置を表向きにしても裏向きにしてもクレードル5に装着することができる。したがって、本体装置2の下側端子27およびクレードル5の本体端子73は、奥行方向(すなわち、図1に示すz軸方向)に関して対称な形状を有し、当該奥行方向に関して2種類の向きのうちどちらの向きで接続されても通信可能である。
図7では図示しないが、クレードル5は、ハウジングの背面に端子(本実施形態においては、複数の端子を有する。具体的には、クレードル5は、図10に示すモニタ用端子132、電源端子134、および拡張用端子137)を有する。これらの端子の詳細については後述する。
以上に説明した、クレードル5に設けられる各構成要素(具体的には、ハウジング、端子、ボタン等)の形状、数、および、設置位置は任意である。例えば、他の実施形態においては、ハウジングは、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置や本体装置2単体を支持可能な他の形状を有していてもよい。また、ハウジングに設けられる端子のいくつかは、ハウジングの前側の面に設けられてもよい。また、他の実施形態においては、クレードル5は、上記各構成要素のうちいくつかを備えていない構成であってもよい。
図8は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、図3に示す構成の他、図8に示す各構成要素81〜98を備える。これらの構成要素81〜98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
本体装置2は、CPU(Central Processing Unit)81を備える。CPU81は、本体装置2において実行される各種の情報処理を実行する情報処理部である。CPU81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、各スロット23および24に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、CPU81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
本体装置2は、第1スロットインターフェース(以下、「I/F」と略記する。)91を備える。また、本体装置2は、第2スロットI/F92を備える。第1スロットI/F91および第2スロットI/F92は、CPU81に接続される。第1スロットI/F91は、第1スロット23に接続され、第1スロット23に装着された第1の種類の記憶媒体(例えば、SDカード)に対するデータの読み出しおよび書き込みを、CPU81の指示に応じて行う。第2スロットI/F92は、第2スロット24に接続され、第2スロット24に装着された第2の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、CPU81の指示に応じて行う。
CPU81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、CPU81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi−Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、CPU81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
CPU81は、上述の左側端子17、右側端子21、および、下側端子27に接続される。CPU81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、CPU81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、CPU81は、クレードル5と通信を行う場合、下側端子27を介してクレードル5へデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードル5に装着された場合、本体装置2は、クレードル5を介してデータ(例えば、画像データや音声データ)を据置型モニタ6に出力することができる。
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、ユーザは、複数の左コントローラ3および複数の右コントローラ4を用いて本体装置2に対する入力を行うことができる。
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とCPU81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、CPU81へ出力する。
また、ディスプレイ12は、CPU81に接続される。CPU81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、CPU81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。すなわち、コーデック回路87は、CPU81から音声データを受け取った場合、当該音声データに対してD/A変換を行って得られる音声信号をスピーカ88または音声入出力端子25へ出力する。これによって、スピーカ88あるいは音声入出力端子25に接続された音声出力部(例えば、イヤホン)から音が出力される。また、コーデック回路87は、音声入出力端子25から音声信号を受け取った場合、音声信号に対してA/D変換を行い、所定の形式の音声データをCPU81へ出力する。また、音量ボタン26は、CPU81に接続される。CPU81は、音量ボタン26に対する入力に基づいて、スピーカ88または上記音声出力部から出力される音量を制御する。
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびCPU81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、CPU81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。また、電力制御部97は、電源ボタン28に接続される。電力制御部97は、電源ボタン28に対する入力に基づいて、上記各部への電力供給を制御する。すなわち、電力制御部97は、電源ボタン28に対して電源をオフする操作が行われた場合、上記各部の全部または一部への電力供給を停止し、電源ボタン28に対して電源をオンする操作が行われた場合、電力制御部97は、上記各部の全部または一部への電力供給を開始する。また、電力制御部97は、電源ボタン28に対する入力を示す情報(具体的には、電源ボタン28が押下されているか否かを示す情報)をCPU81へ出力する。
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル5)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
また、本体装置2は、本体装置2内部の熱を放熱するための冷却ファン96を備える。冷却ファン96が動作することによって、ハウジング11の外部の空気が吸気孔11dから導入されるとともに、ハウジング11内部の空気が排気孔11cから放出されることで、ハウジング11内部の熱が放出される。冷却ファン96は、CPU81に接続され、冷却ファン96の動作はCPU81によって制御される。また、本体装置2は、本体装置2内の温度を検出する温度センサ95を備える。温度センサ95は、CPU81に接続され、温度センサ95の検出結果がCPU81へ出力される。CPU81は、温度センサ95の検出結果に基づいて、冷却ファン96の動作を制御する。
図9は、情報処理システム1の内部構成の一例を示すブロック図である。なお、情報処理システム1のうちの本体装置2に関する内部構成の詳細については、図8で示しているため図9では省略している。
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。図9に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
左コントローラ3は、各ボタン103(具体的には、ボタン33〜39,43,および44)を備える。また、左コントローラ3は、アナログスティック(図9では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
左コントローラ3は、加速度センサ104を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、図11に示すXYZ軸)方向に沿った直線加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、角速度センサ105は、所定の3軸(例えば、図11に示すXYZ軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、または、センサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
左コントローラ3は、振動によってユーザに通知を行うための振動子107を備える。本実施形態においては、振動子107は、本体装置2からの指令によって制御される。すなわち、通信制御部101は、本体装置2からの上記指令を受け取ると、当該指令に従って振動子107を駆動させる。ここで、左コントローラ3は、増幅器106を備える。通信制御部101は、上記指令を受け取ると、指令に応じた制御信号を増幅器106へ出力する。増幅器106は、通信制御部101からの制御信号を増幅して、振動子107を駆動させるための駆動信号を生成して振動子107へ与える。これによって振動子107が動作する。
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。電力制御回路は、バッテリから上記各部への電力供給を制御する。また、バッテリは、端子42に接続される。本実施形態においては、左コントローラ3が本体装置2に装着される場合、所定の条件下で、バッテリは、端子42を介して本体装置2からの給電によって充電される。
図9に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部(具体的には、各ボタン113、アナログスティック52、加速度センサ114、および、角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
また、右コントローラ4は、振動子117および増幅器116を備える。振動子117および増幅器116は、左コントローラ3の振動子107および増幅器106と同様に動作する。すなわち、通信制御部111は、本体装置2からの指令に従って、増幅器116を用いて振動子117を動作させる。
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。すなわち、電力供給部118は、バッテリから給電を受ける各部への電力供給を制御する。また、右コントローラ4が本体装置2に装着される場合、所定の条件下で、バッテリは、端子64を介して本体装置2からの給電によって充電される。
右コントローラ4は、処理部121を備える。処理部121は、通信制御部111に接続されるとともに、NFC通信部122に接続される。処理部121は、本体装置2からの指令に応じて、NFC通信部122に対する管理処理を実行する。例えば、処理部121は、本体装置2からの指令に応じてNFC通信部122の動作を制御する。また、処理部121は、NFC通信部122の起動を制御したり、通信相手(例えば、NFCタグ)に対するNFC通信部122の動作(具体的には、読み出しおよび書き込み等)を制御したりする。また、処理部121は、通信制御部111を介して上記通信相手に送信されるべき情報を本体装置2から受信してNFC通信部122へ渡したり、上記通信相手から受信された情報をNFC通信部122から取得して通信制御部111を介して本体装置2へ送信したりする。また、処理部121は、本体装置2からの指令に応じて、赤外撮像部123に対する管理処理を実行する。例えば、処理部121は、赤外撮像部123に撮像動作を行わせたり、撮像結果に基づく情報(撮像画像の情報、あるいは、当該情報から算出される情報等)を取得して、通信制御部111を介して本体装置2へ送信したりする。
図10は、クレードル5の内部構成の一例を示すブロック図である。なお、図10において、本体装置2に関する内部構成の詳細については、図8で示しているので省略している。
図10に示すように、クレードル5は、変換部131およびモニタ用端子132を備える。変換部131は、本体端子73およびモニタ用端子132と接続される。変換部131は、本体装置2から受信した画像(映像とも言える)および音声に関する信号の形式を、据置型モニタ6へ出力する形式へと変換する。ここで、本実施形態においては、本体装置2は、ディスプレイポート信号(すなわち、DisplayPortの規格に従った信号)として画像および音声の信号をクレードル5へ出力する。また、本実施形態においては、クレードル5と据置型モニタ6との間の通信は、HDMI(登録商標)の規格に基づく通信が用いられる。すなわち、モニタ用端子132は、HDMI端子であり、クレードル5と据置型モニタ6とがHDMIケーブルによって接続される。そして、変換部131は、本体装置2から本体端子73を介して受信されるディスプレイポート信号(具体的には、映像および音声を表す信号)を、HDMI信号へ変換する。変換されたHDMI信号は、モニタ用端子132を介して据置型モニタ6へ出力される。
クレードル5は、電力制御部133および電源端子134を備える。電源端子134は、図示しない充電装置(例えば、ACアダプタ等)を接続するための端子である。本実施形態においては、電源端子134にACアダプタが接続されており、クレードル5には商用電源が供給されているものとする。電力制御部133は、クレードル5に対して本体装置2が装着された場合、本体端子73を介して電源端子134からの電力を本体装置2へ供給する。これによって、本体装置2のバッテリ98が充電される。
また、クレードル5は、接続処理部136および拡張用端子137を備える。拡張用端子137は、他の装置を接続するための端子である。本実施形態においては、クレードル5は、拡張用端子137として、複数(より具体的には3つ)のUSB端子を備える。接続処理部136は、本体端子73および各拡張用端子137に接続される。接続処理部136は、USBハブとしての機能を有し、例えば、拡張用端子137に接続された装置と、本体端子73に接続された本体装置2との間の通信を管理する(すなわち、ある装置からの信号を他の装置へ適宜分配して送信する)。上記のように、本実施形態においては、情報処理システム1は、クレードル5を介して他の装置との通信を行うことが可能である。なお、接続処理部136は、通信速度を変換したり、拡張用端子137に接続された装置に対する電力供給を行ったりすることが可能であってもよい。
以上に説明したように、本実施形態における情報処理システム1については左コントローラ3および右コントローラ4が本体装置2から着脱可能である。また、クレードル5に左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置や本体装置2単体を装着することによって据置型モニタ6に画像(および音声)を出力可能である。以下、左コントローラ3および右コントローラ4を本体装置2から取り外した状態で、クレードル5に本体装置2単体を装着することによって据置型モニタ6に画像(および音声)を出力する利用態様における情報処理システムを用いて説明する。
上述のように、本実施形態においては、左コントローラ3および右コントローラ4を本体装置2から外した状態(「離脱状態」と呼ぶ)で情報処理システム1を利用することも可能である。離脱状態で情報処理システム1を利用して同じアプリケーション(例えば、ゲームアプリケーション)に対する操作を行う場合の態様としては、1人のユーザが左コントローラ3および右コントローラ4の両方を用いる態様が考えられる。なお、当該利用態様によって複数のユーザが同じアプリケーションを用いて操作する場合は、左コントローラ3および右コントローラ4の組を複数組用意して、それぞれのユーザが当該複数組のうちの1組を用いる態様が考えられる。
図11および図12は、離脱状態において、1人のユーザが左コントローラ3および右コントローラ4の組を把持して情報処理システム1を利用する様子の一例を示す図である。図11および図12に示すように、離脱状態において、ユーザは、左コントローラ3を左手で把持し、右コントローラ4を右手で把持して操作を行いながら、据置型モニタ6に表示された画像を見ることができる。
例えば、本実施例では、ユーザは、縦長の略板状である左コントローラ3の長手方向の下方向(図1に示す下方向(y軸負方向))が鉛直方向になるとともに、本体装置2に装着された際に当該本体装置2と接する側面(スライダ40が設けられている側面)が前方に向き、かつ、左コントローラ3の主面(アナログスティック32等が設けられる面)が右に向くように左コントローラ3を左手で把持する。また、ユーザは、縦長の略板状である右コントローラ4の長手方向の下方向(図1に示す上下方向(y軸負方向))が鉛直方向になるとともに、本体装置2に装着された際に当該本体装置2と接する側面(スライダ62が設けられている側面)が前方に向き、かつ、右コントローラ4の主面(アナログスティック52等が設けられる面)が左に向くように右コントローラ4を右手で把持する。このように左手で左コントローラ3を把持し右手で右コントローラ4を把持した状態(以下、当該方向に把持された左コントローラ3および右コントローラ4の姿勢を基本姿勢と記載することがある)から、各コントローラを上下左右前後に動かしたり、各コントローラを回転させたり、各コントローラを振り動かしたりすることによって、各コントローラの動きや姿勢に応じてゲームプレイが行われる。
なお、左コントローラ3に生じる加速度や角速度の方向をわかりやすくするために、上記把持状態における前方向(丸みを帯びた側面から本体装置2と接する側面に向かう方向であり、図1に示すx軸負方向)をX軸正方向とし、上記把持状態における右方向(背面から主面に向かう方向であり、図1に示すz軸負方向)をY軸正方向とし、上記把持状態における上方向(長手方向の上に向かう方向であり、図1に示すy軸正方向)をZ軸正方向とする。そして、左コントローラ3の加速度センサ104は、上記XYZ軸方向の加速度をそれぞれ検出可能であり、角速度センサ105は、上記XYZ軸方向周りの角速度をそれぞれ検出可能であるとする。また、右コントローラ4に生じる加速度や角速度の方向をわかりやすくするために、上記把持状態における前方向(丸みを帯びた側面から本体装置2と接する側面に向かう方向であり、図1に示すx軸正方向)をX軸正方向とし、上記把持状態における右方向(主面から背面に向かう方向であり、図1に示すz軸正方向)をY軸正方向とし、上記把持状態における上方向(長手方向の上に向かう方向であり、図1に示すy軸正方向)をZ軸正方向とする。そして、右コントローラ4の加速度センサ114は、上記XYZ軸方向の加速度をそれぞれ検出可能であり、角速度センサ115は、上記XYZ軸方向周りの角速度をそれぞれ検出可能であるとする。
次に、図13〜図15は、左コントローラ3および右コントローラ4を動かすことによってプレイするゲームにおいて表示されるゲーム画像例を示す図である。図13に示すように、本ゲーム例では、プレイヤオブジェクトPOと敵オブジェクトEOとが対戦するゲーム(例えば、ボクシングゲーム)の画像が据置型モニタ6に表示される。そして、左コントローラ3および右コントローラ4を操作するユーザは、左コントローラ3本体および/または右コントローラ4本体を振り動かしたり、左コントローラ3本体および/または右コントローラ4本体の姿勢を変化させたりすることによって、プレイヤオブジェクトPOを操作することができる。例えば、左コントローラ3を振り動かすことによってプレイヤオブジェクトPOの左グラブ(左拳)を模した第1オブジェクトG1の動作を制御することができ、右コントローラ4を振り動かすことによってプレイヤオブジェクトPOの右グラブ(右拳)を模した第2オブジェクトG2の動作を制御することができる。具体的には、ユーザが左コントローラ3を把持している左手を用いて左パンチを繰り出すように振る操作を行った場合、敵オブジェクトEOが配置されている場所に向かってプレイヤオブジェクトPOの左グラブを模した第1オブジェクトG1が移動する。また、ユーザが右コントローラ4を把持している右手を用いて右パンチを繰り出すように振る操作を行った場合、敵オブジェクトEOが配置されている場所に向かってプレイヤオブジェクトPOの右グラブを模した第2オブジェクトG2が移動する。
例えば、左コントローラ3および右コントローラ4の何れも動かしていない状態(図13に示す状態)から、右コントローラ4を前方(右コントローラ4のX軸正方向)に押し出すように振り動かした場合、図14に示すように右コントローラ4の動きに応じてプレイヤオブジェクトPOの第2オブジェクトG2が敵オブジェクトEOに向かって移動する。これによって、敵オブジェクトEOに対してプレイヤオブジェクトPOが右パンチを繰り出したようなゲーム画像が表示される。
ここで、第1オブジェクトG1が移動開始する際の移動方向は、左コントローラ3を押し出すように振り動かした際の左コントローラ3の姿勢によって設定される。また、第2オブジェクトG2が移動開始する際の移動方向は、右コントローラ4を押し出すように動かした際の右コントローラ4の姿勢によって設定される。例えば、図14に示したように、右コントローラ4がX軸正方向に移動した場合、当該移動における右コントローラ4のロール方向の姿勢に応じて第2オブジェクトG2の移動方向が設定される。一例として、本実施例では、上記右コントローラ4が移動している期間において、実空間において重力加速度が作用している方向を基準とした右コントローラ4のY軸方向の傾きを算出し、当該Y軸方向の傾きに基づいて第2オブジェクトG2の移動方向を算出している。具体的には、右コントローラ4が上記基準姿勢に対して右方向にロール回転した姿勢であることを上記Y軸方向の傾きが示す場合、仮想空間の右方向に向かって第2オブジェクトG2が移動する。また、右コントローラ4が上記基準姿勢に対して左方向にロール回転した姿勢であることを上記Y軸方向の傾きが示す場合、仮想空間の左方向に向かって第2オブジェクトG2が移動する。そして、それぞれ右方向または左方向に移動方向がずれる角度については、上記Y軸方向の傾き角度に応じてそれぞれ算出される。
また、本ゲーム例では、仮想空間においてプレイヤオブジェクトPOと敵オブジェクトEOとの距離が相対的に遠い場合であってもパンチを繰り出すことが可能であり、プレイヤオブジェクトPOの腕が伸びることによって、第1オブジェクトG1および第2オブジェクトG2が相対的に長い距離を移動することができる。そして、第1オブジェクトG1または第2オブジェクトG2は、他のオブジェクト(例えば、敵オブジェクトEO)と衝突するか所定の距離移動した後に移動を終了し、当該第1オブジェクトG1および第2オブジェクトG2がそれぞれ移動開始した移動開始位置(例えば、図13に示すプレイヤオブジェクトPOの手元)まで戻る。第1オブジェクトG1および第2オブジェクトG2が移動開始位置まで戻ることによって、敵オブジェクトEOに向かう次の移動が可能となる。言い換えると、次のパンチを出すことができるようになる。したがって、上記移動開始位置から第1オブジェクトG1または第2オブジェクトG2が移動を開始してから再び当該移動開始位置まで戻るまでの時間が一般的なボクシングゲームより相対的に長くなる。
本ゲーム例では、このような移動時間を利用して、第1オブジェクトG1または第2オブジェクトG2が移動中(典型的には、敵オブジェクトEOの方向へ移動している期間)であっても、左コントローラ3または右コントローラ4の姿勢や動きに応じて移動する軌道を変化させることができる。例えば、上述した第1オブジェクトG1または第2オブジェクトG2の移動開始時の左コントローラ3または右コントローラ4の姿勢から左コントローラ3または右コントローラ4がロール方向に回転した場合やヨー方向に回転した場合、当該回転に応じて第1オブジェクトG1または第2オブジェクトG2の軌道を変化させる。
一例として、本実施例では、第1オブジェクトG1または第2オブジェクトG2の移動開始後の左コントローラ3または右コントローラ4のX軸周りの回転速度(角速度)を上記ロール方向の回転として、当該X軸周りの回転速度に基づいて移動中の第1オブジェクトG1または第2オブジェクトG2の軌道を変化させる。具体的には、第1オブジェクトG1が移動中に左コントローラ3がX軸を中心として右方向にロール回転した回転速度が得られた場合、仮想空間の右方向に第1オブジェクトG1の軌道を変化させ、左コントローラ3がX軸を中心として左方向にロール回転した回転速度が得られた場合、仮想空間の左方向に第1オブジェクトG1の軌道を変化させる。また、第2オブジェクトG2が移動中に右コントローラ4がX軸を中心として右方向にロール回転した回転速度が得られた場合、仮想空間の右方向に第2オブジェクトG2の軌道を変化させ、右コントローラ4がX軸を中心として左方向にロール回転した回転速度が得られた場合、仮想空間の左方向に第2オブジェクトG2の軌道を変化させる。
他の例として、本実施例では、第1オブジェクトG1または第2オブジェクトG2の移動開始後の実空間の重力方向を基準とする左コントローラ3または右コントローラ4の回転速度(角速度)を上記ヨー方向の回転として、当該重力方向周りの回転速度に基づいて移動中の第1オブジェクトG1または第2オブジェクトG2の軌道を変化させる。具体的には、第1オブジェクトG1が移動中に左コントローラ3が重力方向を中心として右方向にヨー回転した回転速度が得られた場合、仮想空間の右方向に第1オブジェクトG1の軌道を変化させ、左コントローラ3が重力方向を中心として左方向にヨー回転した回転速度が得られた場合、仮想空間の左方向に第1オブジェクトG1の軌道を変化させる。また、第2オブジェクトG2が移動中に右コントローラ4が重力方向を中心として右方向にヨー回転した回転速度が得られた場合、仮想空間の右方向に第2オブジェクトG2の軌道を変化させ、右コントローラ4が重力方向を中心として左方向にヨー回転した回転速度が得られた場合、仮想空間の左方向に第2オブジェクトG2の軌道を変化させる。
また、本ゲーム例では、左コントローラ3または右コントローラ4が振り動かされたか否かの判定を、左コントローラ3または右コントローラ4に生じた加速度の大きさを用いて行う。そして、第1オブジェクトG1が上記移動開始位置に配置されている状態(以下、第1移動開始可能状態と称する)において左コントローラ3が上記X軸正方向に振り動かされたと判定された場合、当該移動開始位置から敵オブジェクトEOに向かって第1オブジェクトG1が移動を開始する。また、第2オブジェクトG2が上記移動開始位置に配置されている状態(以下、第2移動開始可能状態と称する)において右コントローラ4が上記X軸正方向に振り動かされたと判定された場合、当該移動開始位置から敵オブジェクトEOに向かって第2オブジェクトG2が移動を開始する。しかしながら、本実施例では、上記第1移動開始可能状態でない場合であっても、左コントローラ3が上記X軸正方向に振り動かされたと判定されてから所定時間以内に上記第1移動開始可能状態になった場合は、当該左コントローラ3の振り操作に応じて上記移動開始位置から敵オブジェクトEOに向かって第1オブジェクトG1の移動を開始させることができる。また、上記第2移動開始可能状態でない場合であっても、右コントローラ4が上記X軸正方向に振り動かされたと判定されてから所定時間以内に上記第2移動開始可能状態になった場合は、当該右コントローラ4の振り操作に応じて上記移動開始位置から敵オブジェクトEOに向かって第2オブジェクトG2の移動を開始させることができる。このように、本実施例では、上記第1移動開始可能状態および/または上記第2移動開始可能状態でない場合であっても、左コントローラ3および/または右コントローラ4を振り動かすことによって第1オブジェクトG1および/または第2オブジェクトG2を移動開始させる指示を行うことができるため、操作指示可能な状態が断続的に生じるゲームであっても操作を容易にすることが可能となる。つまり、上述したように、上記ゲーム例では、移動開始位置から第1オブジェクトG1または第2オブジェクトG2が移動を開始してから再び当該移動開始位置まで戻るまでの時間が一般的なボクシングゲームより相対的に長くなるため、上記第1移動開始可能状態や上記第2移動開始可能状態になるのを待ちきれずに左コントローラ3または右コントローラ4を振り動かす操作が先行してしまうことが考えられるが、このような先行操作が行われた場合であっても当該先行操作を無効にせずに救済してゲーム操作に生かすことが可能となる。
また、本ゲーム例では、図15に示すように、第1オブジェクトG1および第2オブジェクトG2を上記移動開始位置から同時に移動開始させることによって、所定のアクションが行われる。例えば、第1オブジェクトG1および第2オブジェクトG2の一方が移動開始した時点から所定期間以内に他方が移動開始する場合、第1オブジェクトG1および第2オブジェクトG2が組となった「両手パンチアクション」が開始される。ここで、「両手パンチアクション」は、仮想空間を移動する第1オブジェクトG1および第2オブジェクトG2の間に衝突領域Aが形成された様子がゲーム画像で表現され、当該衝突領域Aが形成された状態で第1オブジェクトG1および第2オブジェクトG2が敵オブジェクトEOに向かって移動する。そして、敵オブジェクトEOには移動中の第1オブジェクトG1または第2オブジェクトG2や衝突領域Aが衝突した場合に、第1オブジェクトG1または第2オブジェクトG2が単独で衝突する場合より大きなダメージが敵オブジェクトEOに与えられる所定のアクションが行われる。一例として、「両手パンチアクション」では、敵オブジェクトEOと衝突した場合に当該敵オブジェクトEOを投げ飛ばすアクションが行われたり、当該敵オブジェクトEOを動けなくするようなアクションが行われたりしてもよい。なお、「両手パンチアクション」実行中であっても、上述した左コントローラ3および/または右コントローラ4の姿勢や動きに応じて第1オブジェクトG1および/または第2オブジェクトG2が移動する軌道を変化させることができる。したがって、第1オブジェクトG1および/または第2オブジェクトG2が移動する軌道を変化させることによって、衝突領域Aの範囲も変化させることができるため、敵オブジェクトEOに対してより戦略的な攻撃も可能となる。
また、本ゲーム例では、左コントローラ3および右コントローラ4の両方の動きや姿勢に応じて、仮想空間内でプレイヤオブジェクトPOを移動させることができる。例えば、左コントローラ3および右コントローラ4の両方が実空間のピッチ方向に回転した場合やロール方向に回転した場合、当該回転した傾きに応じてプレイヤオブジェクトPOを移動させる。具体的には、実空間の重力方向を基準とする左コントローラ3のX軸方向およびY軸方向と右コントローラ4のX軸方向およびY軸方向の傾きをそれぞれ算出する。そして、上記傾きに基づいて、左コントローラ3および右コントローラ4の両方が前方に傾く姿勢になっていると判定された場合、左コントローラ3および右コントローラ4の両方が当該前方へ傾いている角度(例えば、当該角度の平均値)に応じた移動量でプレイヤオブジェクトPOを仮想空間の前方へ移動させる。また、上記傾きに基づいて、左コントローラ3および右コントローラ4の両方が後方に傾く姿勢になっていると判定された場合、左コントローラ3および右コントローラ4の両方が当該後方へ傾いている角度(例えば、当該角度の平均値)に応じた移動量でプレイヤオブジェクトPOを仮想空間の後方へ移動させる。また、上記傾きに基づいて、左コントローラ3および右コントローラ4の両方が左に傾く姿勢になっていると判定された場合、左コントローラ3および右コントローラ4の両方が当該左へ傾いている角度(例えば、当該角度の平均値)に応じた移動量でプレイヤオブジェクトPOを仮想空間の左へ移動させる。また、上記傾きに基づいて、左コントローラ3および右コントローラ4の両方が右に傾く姿勢になっていると判定された場合、左コントローラ3および右コントローラ4の両方が当該右へ傾いている角度(例えば、当該角度の平均値)に応じた移動量でプレイヤオブジェクトPOを仮想空間の右へ移動させる。
なお、図13〜図15では、据置型モニタ6を用いて1人プレイ(例えば、敵オブジェクトEOがCPU81によって自動制御される)するゲーム例を用いたが、複数のユーザによってプレイしてもよい。例えば、2人のユーザによってゲームプレイされる場合、ユーザがそれぞれ左コントローラ3および右コントローラ4の組を把持して、別のプレイヤオブジェクトを操作する。そして、据置型モニタ6の表示領域を2つに分割して、それぞれの分割表示領域に各ユーザ用の画像(ユーザが操作するプレイヤオブジェクトから他のユーザが操作するプレイヤオブジェクトを見た画像)を表示する。このような操作環境において、ユーザがそれぞれ相手プレイヤオブジェクトにパンチを繰り出すような操作を行うことによって、それぞれのユーザが相手プレイヤオブジェクトと対戦するゲームが可能となる。
なお、複数のユーザによってゲームプレイされる場合、他の装置(例えば、他の情報処理システム1)との間で通信することによって、当該ゲームプレイに必要なゲームデータを送受信してもよい。例えば、他の装置との間で通信する場合、上述したネットワーク通信部82を介して、インターネット(広域ネットワーク)に接続された他の装置との間でデータを送受信してもよいし、閉ざされたローカルネットワークエリア内に配置された他の装置との間で直接通信する、いわゆる「ローカル通信」を用いてデータを送受信してもよい。
次に、図16〜図23を参照して、本実施形態において情報処理システム1で実行される具体的な処理の一例について説明する。図16は、本実施形態において本体装置2のDRAM85に設定されるデータ領域の一例を示す図である。なお、DRAM85には、図16に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。
DRAM85のプログラム記憶領域には、情報処理システム1で実行される各種プログラムPaが記憶される。本実施形態においては、各種プログラムPaは、上述した左コントローラ3および右コントローラ4との間で無線通信するための通信プログラムや、左コントローラ3および/または右コントローラ4から取得したデータに基づいた情報処理(例えば、ゲーム処理)を行うためのアプリケーションプログラム、クレードル5に対する本体装置2の着脱に応じて画像を表示する表示装置を切り替えるプログラム等が記憶される。なお、各種プログラムPaは、フラッシュメモリ84に予め記憶されていてもよいし、情報処理システム1に着脱可能な記憶媒体(例えば、第1スロット23に装着された第1の種類の記憶媒体、第2スロット24に装着された第2の種類の記憶媒体)から取得されてDRAM85に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてDRAM85に記憶されてもよい。CPU81は、DRAM85に記憶された各種プログラムPaを実行する。
また、DRAM85のデータ記憶領域には、情報処理システム1において実行される通信処理や情報処理等の処理において用いられる各種のデータが記憶される。本実施形態においては、DRAM85には、操作データDa、姿勢データDb、角速度データDc、加速度データDd、閾値データDe、カーブ値データDf、回転速度データDg、振りフラグデータDh、移動フラグデータDi、アクションフラグデータDj、戻りフラグデータDk、移動開始可能フラグデータDl、プレイヤオブジェクト位置データDm、衝突領域データDn、敵オブジェクト位置データDo、および画像データDp等が記憶される。
操作データDaは、左コントローラ3および右コントローラ4からそれぞれ適宜取得した操作データである。上述したように、左コントローラ3および右コントローラ4からそれぞれ送信される操作データには、各入力部(具体的には、各ボタン、アナログスティック、各センサ)からの入力に関する情報(具体的には、操作に関する情報、または、センサによる検出結果)が含まれている。本実施形態では、無線通信によって左コントローラ3および右コントローラ4からそれぞれ所定周期で操作データが送信されており、当該受信した操作データを用いて操作データDaが適宜更新される。なお、操作データDaの更新周期は、後述する情報処理システム1で実行される処理の周期である1フレーム毎に更新されてもよいし、上記無線通信によって操作データが送信される周期毎に更新されてもよい。
姿勢データDbは、実空間における重力加速度の方向を基準とした左コントローラ3および右コントローラ4それぞれの姿勢を示すデータである。例えば、姿勢データDbは、左コントローラ3および右コントローラ4それぞれに作用している重力加速度の方向を示すデータや、当該重力加速度方向に対するXYZ軸方向を示すデータ等を含んでいる。
角速度データDcは、左コントローラ3および右コントローラ4それぞれに生じている角速度を示すデータである。例えば、角速度データDcは、左コントローラ3および右コントローラ4それぞれに生じているXYZ軸周りの角速度を示すデータ等を含んでいる。
加速度データDdは、左コントローラ3および右コントローラ4それぞれに生じている加速度を示すデータである。例えば、加速度データDdは、左コントローラ3および右コントローラ4それぞれに生じている重力加速度を除いて、XYZ軸方向に生じている加速度を示すデータ等を含んでいる。
閾値データDeは、左コントローラ3および右コントローラ4に対してそれぞれ行われた振り動作を判定するための閾値を示すデータである。カーブ値データDfは、第1オブジェクトG1および第2オブジェクトG2それぞれの移動方向や軌道を算出するためのカーブ値Cを示すデータである。回転速度データDgは、第1オブジェクトG1または第2オブジェクトG2が移動中における左コントローラ3および右コントローラ4の動き(回転速度V)を示すデータである。
振りフラグデータDhは、左コントローラ3および右コントローラ4それぞれが振り動かされたと判定された際にオンに設定される振りフラグを示すデータである。移動フラグデータDiは、第1オブジェクトG1および第2オブジェクトG2それぞれが仮想空間内を移動中である場合にオンに設定される移動フラグを示すデータである。アクションフラグデータDjは、第1オブジェクトG1および第2オブジェクトG2が組となったアクションが行われている場合にオンに設定されるアクションフラグを示すデータである。戻りフラグデータDkは、第1オブジェクトG1および第2オブジェクトG2それぞれが移動開始位置に戻る仮想空間内の復路を移動している場合にオンに設定される戻りフラグを示すデータである。移動開始可能フラグデータDlは、第1オブジェクトG1が第1移動開始可能状態となった場合および第2オブジェクトG2が第2移動開始可能状態となった場合にそれぞれオンに設定される移動開始可能フラグを示すデータである。
プレイヤオブジェクト位置データDmは、第1オブジェクトG1、第2オブジェクトG2、およびプレイヤオブジェクトPOの仮想空間における位置および方向(移動方向)をそれぞれ示すデータである。衝突領域データDnは、衝突領域Aの仮想空間における位置、形状、および範囲を示すデータである。敵オブジェクト位置データDoは、敵オブジェクトEOの仮想空間における位置および方向を示すデータや当該敵オブジェクトEOから放たれるオブジェクト(例えば、左グラブ(左拳)および右グラブ(右拳)を模したオブジェクト)の仮想空間における位置および方向を示すデータである。
画像データDpは、ゲームの際に本体装置2のディスプレイ12や据置型モニタ6の表示画面に画像(例えば、仮想オブジェクトの画像、フィールド画像、背景画像)を表示するためのデータである。
次に、本実施形態における情報処理(ゲーム処理)の詳細な一例を説明する。図17は、情報処理システム1で実行されるゲーム処理の一例を示すフローチャートである。図18〜図19は、図17におけるステップS144およびステップS145において行われるコントローラ振り認識処理の詳細の一例を示すサブルーチンである。図20〜図22は、図17におけるステップS146およびステップS147において行われるオブジェクト軌道変化処理の詳細の一例を示すサブルーチンである。図23は、図17におけるステップS148において行われるプレイヤオブジェクト移動処理の詳細の一例を示すサブルーチンである。本実施形態においては、図17〜図23に示す一連の処理は、CPU81が各種プログラムPaに含まれる通信プログラムや所定のアプリケーションプログラム(ゲームプログラム)を実行することによって行われる。また、図17〜図23に示すゲーム処理が開始されるタイミングは任意である。
なお、図17〜図23に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU81が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU81以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置2において実行される処理の一部は、本体装置2と通信可能な他の情報処理装置(例えば、本体装置2とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、図17〜図23に示す各処理は、本体装置2を含む複数の情報処理装置が協働することによって実行されてもよい。
図17において、CPU81は、ゲーム処理における初期設定を行い(ステップS141)、次のステップに処理を進める。例えば、上記初期設定では、CPU81は、以下に説明する処理を行うためのパラメータを初期化する。また、上記初期設定では、CPU81は、ゲームプレイを行うためのゲームフィールドを設定し、当該ゲームフィールド上のプレイヤオブジェクトPOや敵オブジェクトEOの初期位置を設定してプレイヤオブジェクト位置データDmおよび敵オブジェクト位置データDoを更新する。また、CPU81は、第1オブジェクトG1および第2オブジェクトG2の移動方向をデフォルト値(例えば、正面方向)に初期設定してプレイヤオブジェクト位置データDmを更新する。また、CPU81は、移動開始可能フラグデータDlが示す移動開始可能フラグをオンに初期設定する。
次に、CPU81は、左コントローラ3および右コントローラ4から操作データを取得して操作データDaを更新し(ステップS142)、次のステップに処理を進める。
次に、CPU81は、左コントローラ3および右コントローラ4それぞれの姿勢、角速度、加速度を算出し(ステップS143)、次のステップに処理を進める。例えば、CPU81は、左コントローラ3および右コントローラ4それぞれに生じている加速度を示すデータを操作データDaから取得し、左コントローラ3および右コントローラ4それぞれに作用している重力加速度の方向を算出して、当該方向を示すデータを用いて姿勢データDbを更新する。重力加速度を抽出する方法については任意の方法を用いればよく、例えば左コントローラ3および右コントローラ4それぞれに平均的に生じている加速度成分を算出して当該加速度成分を重力加速度として抽出してもよい。そして、CPU81は、左コントローラ3に対して算出された重力加速度の方向を基準とした左コントローラ3のXYZ軸方向を左コントローラ3の姿勢として算出し、当該姿勢を示すデータを用いて姿勢データDbを更新する。また、CPU81は、右コントローラ4に対して算出された重力加速度の方向を基準とした右コントローラ4のXYZ軸方向を右コントローラ4の姿勢として算出し、当該姿勢を示すデータを用いて姿勢データDbを更新する。また、CPU81は、左コントローラ3および右コントローラ4それぞれに生じている角速度を示すデータを操作データDaから取得し、左コントローラ3および右コントローラ4それぞれのXYZ軸周りの角速度を算出して、当該角速度を示すデータを用いて角速度データDcを更新する。さらに、CPU81は、左コントローラ3および右コントローラ4それぞれに生じている加速度を示すデータを操作データDaから取得し、左コントローラ3および右コントローラ4それぞれに生じているXYZ軸方向の加速度から上記重力加速度成分を除去して、当該除去後の加速度を示すデータを用いて加速度データDdを更新する。
なお、左コントローラ3や右コントローラ4の姿勢については、重力加速度を基準としたXYZ軸方向が算出された以降は、XYZ各軸周りの角速度のみに応じて更新してもよい。しかしながら、左コントローラ3や右コントローラ4の姿勢と重力加速度の方向との関係が誤差の累積によってずれていくことを防止するために、所定周期毎に重力加速度の方向に対するXYZ軸方向を算出して左コントローラ3や右コントローラ4の姿勢を修正してもよい。
次に、CPU81は、左コントローラ振り認識処理を行い(ステップS144)、次のステップに処理を進める。以下、図18〜図19を参照して、上記ステップS144において行う左コントローラ振り認識処理について説明する。
図18において、CPU81は、左コントローラ3の処理に対して設定されている振りフラグをオフに設定して振りフラグデータDhを更新し、次のステップに処理を進める。
次に、CPU81は、左コントローラ3に対する振り判定を除外するか否かを判定する(ステップS162)。例えば、CPU81は、左コントローラ3が振り戻されている状態である場合、振り判定を除外する。そして、CPU81は、左コントローラ3の振り判定を除外する場合、ステップS163に処理を進める。一方、CPU81は、左コントローラ3が振り判定を行う場合、ステップS164に処理を進める。
左コントローラ3が振り戻されている状態であると判定する方法の第1の例として、CPU81は、姿勢データDbを参照して左コントローラ3のY軸周りの角速度を取得し、左コントローラ3が手前側への回転(例えば、Z軸正方向が手前側に向く回転)をしている場合、上記ステップS162において肯定判定する。左コントローラ3が振り戻されている状態であると判定する方法の第2の例として、CPU81は、姿勢データDbを参照して左コントローラ3の姿勢を取得し、当該左コントローラ3が重力加速度の方向に対して後傾している姿勢(例えば、左コントローラ3のX軸正方向が実空間に対して水平方向より上を向いている姿勢)でとなっている場合、CPU81は、上記ステップS162において肯定判定する。左コントローラ3が振り戻されている状態であると判定する方法の第3の例として、CPU81は、加速度データDdを参照して左コントローラ3に生じている加速度を取得し、当該左コントローラ3がプレイヤへの方向に移動している(例えば、左コントローラ3に生じている加速度に左コントローラ3のX軸負方向成分が含まれている)場合、CPU81は、上記ステップS162において肯定判定する。
ステップS163において、CPU81は、現時点において左コントローラ3に生じている加速度の大きさが左コントローラ3の振り判定をするための閾値より大きい場合、現時点において左コントローラ3に生じている加速度の大きさを当該閾値として設定して閾値データDeを更新し、ステップS164に処理を進める。ここで、後述により明らかとなるが、本実施例では、左コントローラ3に生じている加速度のうち、Y軸方向成分を除いた加速度(以下、XZ加速度と記載する)の大きさが閾値を越えた場合に、左コントローラ3が振り動かされたと判定している。上記ステップS163では、現時点において左コントローラ3に生じている加速度の大きさ(すなわち、現時点において左コントローラ3に生じている加速度からY軸方向成分の加速度を除いた大きさ)が上記閾値より大きい場合に、当該加速度の大きさを上記振り判定で用いる閾値として設定することによって、上記振り判定において否定判定されることになる。つまり、上記ステップS163は、左コントローラ3が振り戻されている状態となっている場合に実行される処理であり、左コントローラ3がパンチを繰り出す動作の前後で振り戻されているような場合に左コントローラ3がパンチを繰り出すように振られていると誤判定することを防止することができる。
ステップS164において、CPU81は、左コントローラ3に生じているXZ加速度の大きさが上記閾値より大きいか否かを判定する。そして、CPU81は、左コントローラ3に生じているXZ加速度の大きさが上記閾値より大きい場合、ステップS165に処理を進める。一方、CPU81は、左コントローラ3に生じているXZ加速度の大きさが上記閾値以下である場合、ステップS168に処理を進める。ここで、本実施例では、左コントローラ3がパンチを繰り出すように、すなわち左コントローラ3がX軸正方向へ移動するように振り動かされたか否かを判定するために、左コントローラ3に生じている加速度のうち、Y軸方向成分を除いたXZ加速度の大きさと所定値(上記ステップS163や後述するステップS167またはステップS168において設定される閾値)とが比較される。したがって、上記ステップS164においては、CPU81は、加速度データDdを参照して左コントローラ3のX軸方向およびZ軸方向それぞれに生じている加速度を取得し、当該加速度を用いて左コントローラ3に生じているXZ加速度の大きさを算出する。そして、左コントローラ3が振り戻されている状態ではない場合、XZ加速度の大きさが所定値または当該所定値に近づいた閾値を越えていれば、左コントローラ3がパンチを繰り出すように振られたと判定する。
ステップS165において、CPU81は、一時変数Bが0であるか否かを判定する。そして、CPU81は、一時変数Bが0である場合、ステップS166に処理を進める。一方、CPU81は、一時変数Bが0でない場合、ステップS167に処理を進める。
ステップS166において、CPU81は、左コントローラ3の処理に対して設定されている振りフラグをオンに設定して振りフラグデータDhを更新し、一時変数Bとして所定フレーム数を設定して、ステップS167に処理を進める。このように、左コントローラ3の処理に対して設定されている振りフラグは、左コントローラ3がパンチを繰り出すように振られたと判定され、かつ一時変数Bが0である場合にオンに設定される。
ここで、上記ステップS166において、一時変数Bとして設定する所定フレーム数は、左コントローラ3がパンチを繰り出すように振られたと判定された直後に次の振り判定を除外する期間(振りフラグをオンに設定できない期間)を一時的に設定するものであり、本実施例では一例として12フレームに設定する。例えば、左コントローラ3が振り動かされていると判定された後であっても、左コントローラ3に生じている加速度の上昇が継続することがあり得る。このような場合、上記ステップS164における振り判定では肯定判定が連続することになるが、このような肯定判定を全て左コントローラ3がパンチを繰り出すように振られたと見なすと意図しているパンチの判定ができなくなる。したがって、本実施例では、左コントローラ3がパンチを繰り出すように振られたと判定された後の所定期間(例えば、12フレーム)は、当該判定されることを除外している。なお、他の例として、左コントローラ3がパンチを繰り出すように振られたと判定されて振りフラグがオンに設定されてから、左コントローラ3に生じている加速度の上昇(具体的には、XZ加速度の上昇)が継続している期間を、振りフラグが再度オンに設定できない期間として設定してもよい。
ステップS167において、CPU81は、左コントローラ3の振り判定をするための閾値として、現時点において左コントローラ3に生じている加速度の大きさを設定して閾値データDeを更新し、ステップS169に処理を進める。
一方、上記ステップS164において左コントローラ3に生じているXZ加速度の大きさが上記閾値以下であると判定された場合、CPU81は、左コントローラ3の振り判定をするための閾値を予め定められた所定値に近づけて閾値データDeを更新し、ステップS169に処理を進める。一例として、CPU81は、閾値データDeが示す閾値を所定量だけ上記所定値に近づけて新たな閾値を設定し、当該閾値を用いて閾値データDeを更新する。他の例として、CPU81は、閾値データDeが示す閾値を所定割合だけ上記所定値に近づけて新たな閾値を設定し、当該閾値を用いて閾値データDeを更新する。このように左コントローラ3の振り判定をするための閾値を予め定められた所定値に近づけることによって、上記ステップS163やステップS167が実行されることによって上記閾値が上昇したとしても、所定時間経過後には意図している所定値を用いてコントローラの振り判定を行うことができる。
ステップS169において、CPU81は、一時変数Bが0より大きいか否かを判定する。そして、CPU81は、一時変数Bが0より大きい場合、ステップS170に処理を進める。一方、CPU81は、一時変数Bが0である場合、ステップS171(図19参照)に処理を進める。
ステップS170において、CPU81は、一時変数Bから1減算して新たな一時変数Bを設定し、ステップS171(図19参照)に処理を進める。
図19に進み、ステップS171において、CPU81は、振りフラグデータDhを参照して左コントローラ3の処理に対して設定されている振りフラグがオンに設定されているか否かを判定する。そして、CPU81は、左コントローラ3の処理に対して設定されている振りフラグがオンに設定されている場合、ステップS172に処理を進める。一方、CPU81は、左コントローラ3の処理に対して設定されている振りフラグがオフに設定されている場合、ステップS173に処理を進める。
ステップS172において、CPU81は、左コントローラ3がパンチを繰り出すように振られたと判定された後の処理フレーム数をカウントするための一時変数Sとして所定フレーム数を設定し、ステップS175に処理を進める。ここで、一時変数Sとして設定する所定フレーム数は、左コントローラ3がパンチを繰り出すように振られたと判定されてから所定時間以内に第1移動開始可能状態になった場合に第1オブジェクトG1の移動を開始するための処理を行うための当該所定時間に相当するパラメータであり、本実施例では一例として15フレームに設定する。したがって、上記第1移動開始可能状態でない場合であっても、左コントローラ3がパンチを繰り出すように振られたと判定されてから15フレーム以内に上記第1移動開始可能状態になった場合は、第1オブジェクトG1の移動を開始するための処理が行われることになる。
一方、上記ステップS171において、振りフラグがオフに設定されていると判定された場合、CPU81は、一時変数Sが0より大きいか否かを判定する。そして、CPU81は、一時変数Sが0より大きい場合、ステップS174に処理を進める。一方、CPU81は、一時変数Sが0である場合、ステップS175に処理を進める。
ステップS174において、CPU81は、一時変数Sから1減算して新たな一時変数Sを設定し、ステップS175に処理を進める。
ステップS175において、CPU81は、一時変数Sが0より大きいか否かを判定する。そして、CPU81は、一時変数Sが0より大きい場合、ステップS176に処理を進める。一方、CPU81は、一時変数Sが0である場合、当該サブルーチンによる処理を終了する。
ステップS176において、CPU81は、移動開始可能フラグデータDlを参照して第1オブジェクトG1の処理に対して設定されている移動開始可能フラグがオンに設定されているか否かを判定する。そして、CPU81は、第1オブジェクトG1の処理に対して設定されている移動開始可能フラグがオンに設定されている場合、ステップS177に処理を進める。一方、CPU81は、第1オブジェクトG1の処理に対して設定されている移動開始可能フラグがオフに設定されている場合、当該サブルーチンを用いた処理を終了する。
ステップS177において、CPU81は、第1オブジェクトG1の処理に対して設定されている移動フラグをオンに設定して移動フラグデータDiを更新し、次のステップに処理を進める。このように、左コントローラ3がパンチを繰り出すように振られたと判定されたときだけではなく、当該判定後であっても所定フレーム数(例えば、15フレーム)が経過する前に、移動開始可能フラグがオン(すなわち、第1移動開始可能状態)になれば、第1オブジェクトG1の処理に対して設定されている移動フラグがオンに設定される。
次に、CPU81は、第1オブジェクトG1の処理に対して設定されている移動開始可能フラグをオフに設定して移動開始可能フラグデータDlを更新し、一時変数Sを0に設定して(ステップS178)、次のステップに処理を進める。このように、第1オブジェクトG1が仮想空間内を移動することを示す移動フラグがオンに設定された場合、第1移動開始可能状態ではなくなるため第1オブジェクトG1の移動開始可能フラグがオフに設定されるとともに、上記所定フレーム数も0に設定される。なお、プレイヤオブジェクトPOが敵オブジェクトEOに対して攻撃できない状態(例えば、プレイヤオブジェクトPOがダメージを受けて一時的にダウンしている状態)である場合、移動開始可能フラグを適宜オフに設定して移動開始可能フラグデータDlを設定してもよい。この場合、プレイヤオブジェクトPOが上記攻撃できない状態から回復した場合に、移動開始可能フラグがオンに設定される。
次に、CPU81は、現時点が第2オブジェクトG2を移動開始してから所定フレーム数(例えば、4フレーム数)以内か否かを判定する(ステップS179)。例えば、CPU81は、後述するステップS145において左コントローラ振り認識処理と同様の処理を右コントローラ4に対しても行っており、現時点が当該ステップS145において右コントローラ4の処理に対して設定されている移動フラグがオンされてから所定フレーム数以内であれば、上記ステップS179において肯定判定する。そして、CPU81は、現時点が第2オブジェクトG2を移動開始してから所定フレーム数以内である場合、ステップS180に処理を進める。一方、CPU81は、現時点が第2オブジェクトG2を移動開始してから所定フレーム数以内でない場合、当該サブルーチンを用いた処理を終了する。
ステップS180において、CPU81は、アクションフラグをオンに設定してアクションフラグデータDjを更新し、当該サブルーチンを用いた処理を終了する。このように、第1オブジェクトG1および第2オブジェクトG2の一方のオブジェクトが移動開始してから所定フレーム数以内に、他方のオブジェクトが移動開始した場合、アクションフラグがオンに設定される。
図17に戻り、上記ステップS144における左コントローラ振り認識処理の後、CPU81は、右コントローラ振り認識処理を行い(ステップS145)、次のステップに処理を進める。なお、図18および図19を用いて説明したコントローラ振り認識処理は、上記ステップS145の右コントローラ振り認識処理においても用いられるサブルーチンである。すなわち、上記左コントローラ振り認識処理において処理対象としていた左コントローラ3および第1オブジェクトG1を右コントローラ4および第2オブジェクトG2にすることによって、同じサブルーチンを用いることによって同様の処理が可能となる。したがって、上記ステップS145の右コントローラ振り認識処理の詳細な説明については省略する。
次に、CPU81は、第1オブジェクト軌道変化処理を行い(ステップS146)、次のステップに処理を進める。以下、図20〜図22を参照して、上記ステップS146において行う第1オブジェクト軌道変化処理について説明する。
図20において、CPU81は、移動フラグデータDiを参照して第1オブジェクトG1の処理に対して設定されている移動フラグがオンに設定されているか否かを判定する(ステップS191)。そして、CPU81は、第1オブジェクトG1の処理に対して設定されている移動フラグがオンに設定されている場合、ステップS192に処理を進める。一方、CPU81は、第1オブジェクトG1の処理に対して設定されている移動フラグがオフに設定されている場合、当該サブルーチンを用いた処理を終了する。
ステップS192において、CPU81は、一時変数Sが所定数以上か否かを判定する。そして、CPU81は、一時変数Sが所定数以上である場合、ステップS193に処理を進める。一方、CPU81は、一時変数Sが所定数未満である場合、ステップS211(図21参照)に処理を進める。ここで、上記ステップS192では、左コントローラ3がパンチを繰り出すように振られたと判定されてから当該パンチ操作が終わるまでの期間であるか否かを判定しており、パンチ操作中であると判定される場合とパンチ操作が終わったと判定される場合とによって異なる軌道設定を行っている。したがって、上記ステップS192で用いる所定数は、上記期間を判別可能なフレーム数に設定すればよく、例えば所定数=7に設定される。
ステップS193において、CPU81は、重力加速度の方向に対する左コントローラ3のY軸方向の傾きを算出し、次のステップに処理を進める。例えば、CPU81は、姿勢データDbを参照して左コントローラ3の姿勢を取得し、重力加速度の方向に対する当該左コントローラ3のY軸方向の傾きを算出する。
次に、CPU81は、左コントローラ3のY軸方向の傾き角度に応じて、第1オブジェクトG1のカーブ値Cを算出してカーブ値データDfを更新し(ステップS194)、ステップS195に処理を進める。ここで、第1オブジェクトG1のカーブ値Cは、第1オブジェクトG1の軌道を左右に変化させるための係数であり、例えば−1≦C≦1となるように設定される。そして、上記ステップS194では、左コントローラ3のY軸方向がX軸正方向に向かって右に傾いている場合にカーブ値Cを正の値に設定し、当該Y軸方向が水平方向に対して右に40°傾いている場合にC=1に設定され、当該Y軸方向が水平方向に対して右に40°以上傾いたとしてもCが上限値である1に設定される。また、左コントローラ3のY軸方向がX軸正方向に向かって左に傾いている場合にカーブ値Cを負の値に設定し、当該Y軸方向が水平方向に対して左に40°傾いている場合にC=−1に設定され、当該Y軸方向が水平方向に対して左に40°以上傾いたとしてもCが下限値である−1に設定される。
一方、図21に示すように、一時変数Sが所定数未満である場合、CPU81は、重力加速度方向周りの左コントローラ3の回転速度Vを算出し(ステップS211)、次のステップに処理を進める。例えば、CPU81は、姿勢データDbを参照して左コントローラ3に作用している重力加速度の方向を取得する。また、CPU81は、角速度データDcを参照して左コントローラ3に生じているXYZ軸周りの角速度を取得する。そして、CPU81は、XYZ各軸周り角速度および重力加速度の方向を用いて重力加速度方向周りの左コントローラ3の角速度を算出し、当該角速度に応じた左コントローラ3の回転速度Vを算出して回転速度データDgを更新する。
次に、CPU81は、左コントローラ3に生じている角速度から上記回転速度Vに相当する角速度を除いた成分の大きさより、回転速度Vの大きさの方が大きいか否かを判定する(ステップS212)。そして、CPU81は、回転速度Vの大きさの方が大きい場合、ステップS213に処理を進める。一方、CPU81は、回転速度Vの大きさの方が小さいまたは同じである場合、ステップS216に処理を進める。ここで、上記ステップS212の処理は、左コントローラ3に生じている角速度がどの方向周りを主体として生じているのか判定するためのものであり、実空間における左コントローラ3の動きが重力加速度周りに回転するヨー方向の動きが主体なのか、他の方向周りに回転する動きが主体なのかを判定している。
ステップS213において、CPU81は、重力加速度方向周りの左コントローラ3の角速度に基づいて、左コントローラ3が重力加速度の方向を中心に左ヨー方向に回転しているか否かを判定する。そして、CPU81は、左コントローラ3が重力加速度の方向を中心に左ヨー方向に回転している場合、左コントローラ3の回転速度Vを1.15倍して回転速度データDgを更新し(ステップS215)、ステップS217に処理を進める。一方、CPU81は、左コントローラ3が重力加速度の方向を中心に左ヨー方向に回転していない場合、そのままステップS217に処理を進める。一般的に、人間の手首が曲がる方向を考えた場合、ユーザが左手で把持する左コントローラ3を右ヨー方向に回転させる操作と比べて左ヨー方向に回転させる操作がやりにくくなる。上記ステップS213およびステップS215の処理は、このような操作の難易を考慮したものであり、やりにくい方向にコントローラを動かす操作であっても、他の操作と同様にオブジェクトを制御することができる。
なお、当該サブルーチンを第2オブジェクトG2の軌道変化処理を行うために用いる場合、上記ステップS213では右コントローラ4が重力加速度の方向を中心に右ヨー方向に回転しているか否かを判定する。そして、右コントローラ4が重力加速度の方向を中心に右ヨー方向に回転している場合、右コントローラ4の回転速度Vを1.15倍して回転速度データDgを更新することになる。
一方、回転速度Vに相当する角速度の方が小さいまたは同じである場合、CPU81は、左コントローラ3のX軸方向周りの角速度に応じて回転速度Vを算出し(ステップS216)、ステップS217に処理を進める。例えば、CPU81は、角速度データDcを参照して左コントローラ3のX軸方向周りの角速度を取得し、当該角速度に応じた左コントローラ3の回転速度Vを算出して回転速度データDgを更新する。
ステップS217において、CPU81は、第1オブジェクトG1のカーブ値Cに左コントローラ3の回転速度Vを加算して新たなカーブ値Cを算出して、次のステップに処理を進める。例えば、CPU81は、カーブ値データDfおよび回転速度データDgを参照して第1オブジェクトG1のカーブ値Cおよび左コントローラ3の回転速度Vを取得し、カーブ値Cに回転速度Vを加算することによって得られる第1オブジェクトG1の新たなカーブ値Cを用いて、カーブ値データDfを更新する。
次に、CPU81は、第1オブジェクトG1のカーブ値Cが所定の上限値Cmax(例えば、Cmax=1)を超えているか否かを判定する(ステップS218)。そして、CPU81は、第1オブジェクトG1のカーブ値Cが上限値Cmaxを超えている場合、第1オブジェクトG1のカーブ値Cとして上限値Cmaxを設定してカーブ値データDfを更新し(ステップS219)、ステップS220に処理を進める。一方、CPU81は、第1オブジェクトG1のカーブ値Cが上限値Cmaxを超えていない場合、そのままステップS220に処理を進める。
ステップS220において、CPU81は、第1オブジェクトG1のカーブ値Cが所定の下限値Cmin(例えば、Cmin=−1)より小さいか否かを判定する。そして、CPU81は、第1オブジェクトG1のカーブ値Cが下限値Cminより小さい場合、第1オブジェクトG1のカーブ値Cとして下限値Cminを設定してカーブ値データDfを更新し(ステップS221)、ステップS195(図20参照)に処理を進める。一方、CPU81は、第1オブジェクトG1のカーブ値Cが下限値Cmin以上である場合、そのままステップS195に処理を進める。
図20に戻り、ステップS195において、CPU81は、第1オブジェクトG1のカーブ値Cを用いて第1オブジェクトG1の移動方向を算出し、次のステップに処理を進める。例えば、CPU81は、カーブ値データDfを参照して第1オブジェクトG1のカーブ値Cを取得し、プレイヤオブジェクト位置データDmを参照して第1オブジェクトG1の移動方向を取得する。そして、CPU81は、取得した第1オブジェクトG1のカーブ値Cが正の値の場合、取得した第1オブジェクトG1の移動方向をカーブ値の大きさに応じて右に変更し、当該変更後の第1オブジェクトG1の移動方向を用いてプレイヤオブジェクト位置データDmを更新する。また、CPU81は、取得した第1オブジェクトG1のカーブ値Cが負の値の場合、取得した第1オブジェクトG1の移動方向をカーブ値の大きさに応じて左に変更し、当該変更後の第1オブジェクトG1の移動方向を用いてプレイヤオブジェクト位置データDmを更新する。
なお、第1オブジェクトG1が移動開始位置に戻る仮想空間内の復路を移動している場合、第1オブジェクトG1のカーブ値Cによって移動方向を変更することなく、現在の第1オブジェクトG1の位置から移動開始位置に戻る方向に移動方向を固定して設定してもよい。第1オブジェクトG1が復路を移動しているか否かについては、後述する戻りフラグがオンに設定されているか否かによって判別することができる。
次に、CPU81は、第1オブジェクトG1の移動方向に基づいて、第1オブジェクトG1を移動させ(ステップS196)、次のステップに処理を進める。例えば、CPU81は、プレイヤオブジェクト位置データDmを参照して第1オブジェクトG1の位置および移動方向を取得し、当該第1オブジェクトG1の位置から当該移動方向に基づいて第1オブジェクトG1を移動させ、当該移動後の第1オブジェクトG1の位置を用いてプレイヤオブジェクト位置データDmを更新する。
次に、CPU81は、アクションフラグデータDjを参照して、アクションフラグがオンに設定されているか否かを判定する(ステップS197)。そして、CPU81は、アクションフラグがオンに設定されている場合、ステップS198に処理を進める。一方、CPU81は、アクションフラグがオフに設定されている場合、ステップS231(図22参照)に処理を進める。
ステップS198において、CPU81は、第1オブジェクトG1と第2オブジェクトG2との間に衝突領域Aを設定し、ステップS231(図22参照)に処理を進める。例えば、CPU81は、プレイヤオブジェクト位置データDmを参照して第1オブジェクトG1の位置および第2オブジェクトG2の位置を取得し、当該位置に基づいて衝突領域Aの仮想空間における位置、形状、および範囲を設定して、衝突領域データDnを更新する。このようにアクションフラグがオンに設定された状態で第1オブジェクトG1(および第2オブジェクトG2)の移動方向および移動後の位置が設定される場合は、当該第1オブジェクトG1と第2オブジェクトG2との間に衝突領域Aを設定される。
図22に進み、CPU81は、衝突判定処理を行い(ステップS231)、次のステップに処理を進める。例えば、CPU81は、プレイヤオブジェクト位置データDm、衝突領域データDn、および敵オブジェクト位置データDoを参照して、第1オブジェクトG1および衝突領域Aと、仮想空間における他のオブジェクト(例えば、敵オブジェクトEO)とにおける、仮想空間における衝突を判定する。
次に、CPU81は、第1オブジェクトG1および衝突領域Aの少なくとも1つと他のオブジェクトとが、仮想空間において衝突したか否かを判定する(ステップS232)。そして、CPU81は、第1オブジェクトG1および衝突領域Aの少なくとも1つと他のオブジェクトとが衝突した場合、ステップS233に処理を進める。一方、CPU81は、第1オブジェクトG1および衝突領域Aの何れも他のオブジェクトと衝突していない場合、ステップS235に処理を進める。
ステップS233において、CPU81は、他のオブジェクトに対する衝突アクション処理を行い、次のステップに処理を進める。例えば、CPU81は、第1オブジェクトG1と敵オブジェクトEOとが衝突した場合、当該衝突に応じたダメージを敵オブジェクトEOに与えるとともに、当該ダメージに応じた所定のアクションを設定する。また、CPU81は、衝突領域Aと敵オブジェクトEOとが衝突した場合、当該衝突に応じたダメージを敵オブジェクトEOに与えるとともに、第1オブジェクトG1および第2オブジェクトG2が組となった「両手パンチアクション」を設定する。
なお、本実施例では、第1オブジェクトG1が敵オブジェクトEOに向かって移動している期間だけでなく、第1オブジェクトG1がプレイヤオブジェクトPOに向かって戻る期間においても、当該第1オブジェクトG1が他のオブジェクトと衝突した場合に衝突アクション処理が行われる。しかしながら、第1オブジェクトG1が敵オブジェクトEOに向かって移動している期間に限って他のオブジェクトに対する衝突アクション処理を行う場合は、第1オブジェクトG1がプレイヤオブジェクトPOに向かって戻る期間(戻りフラグがオンとなった状態)においては、上記ステップS232において第1オブジェクトG1と他のオブジェクトとが衝突していないと常に判定して当該衝突アクション処理を行わなくてもかまわない。
次に、CPU81は、アクションフラグをオフに設定してアクションフラグデータDjを更新するとともに、衝突領域データDnを衝突領域なし(例えば、Null)に設定して、ステップS235に処理を進める。このように、第1オブジェクトG1、第2オブジェクトG2、または衝突領域Aのいずれかが他のオブジェクトと衝突するアクションが設定された場合、アクションフラグがオフに設定されるとともに、衝突領域に関する設定データが消去される。
ステップS235において、CPU81は、戻りフラグデータDkを参照して第1オブジェクトG1の処理に対して設定されている戻りフラグがオンに設定されているか否かを判定する。そして、CPU81は、第1オブジェクトG1の処理に対して設定されている戻りフラグがオフに設定されている場合、ステップS236に処理を進める。一方、CPU81は、第1オブジェクトG1の処理に対して設定されている戻りフラグがオンに設定されている場合、ステップS239に処理を進める。
ステップS236において、CPU81は、第1オブジェクトG1が移動開始位置に戻る仮想空間内の復路を移動する動作を行うか否かを判定する。例えば、CPU81は、第1オブジェクトG1が移動開始位置から所定距離離れた位置に到達した場合、第1オブジェクトG1が敵オブジェクトEOの位置を通過した後に所定時間経過した場合、第1オブジェクトG1または衝突領域Aが他のオブジェクトに衝突した後に所定時間経過した場合等の条件を満たす場合、第1オブジェクトG1が復路を移動する動作を行うと判定する。そして、CPU81は、第1オブジェクトG1が復路を移動する動作を行う場合、ステップS237に処理を進める。一方、CPU81は、第1オブジェクトG1が復路を移動する動作を行なわない場合、当該サブルーチンによる処理を終了する。
ステップS237において、CPU81は、第1オブジェクトG1の処理に対して設定されている戻りフラグをオンに設定して戻りフラグデータDkを更新し、次のステップに処理を進める。このように、第1オブジェクトG1が復路を移動する動作が設定された場合、第1オブジェクトG1の処理に対して設定されている戻りフラグがオンに設定される。
次に、CPU81は、第1オブジェクトG1の移動方向として、移動開始位置に向かう方向を設定して(ステップS238)、当該サブルーチンによる処理を終了する。例えば、CPU81は、プレイヤオブジェクト位置データDmを参照して第1オブジェクトG1の現在位置から移動開始位置へ向かう方向を第1オブジェクトG1の移動方向として算出し、当該移動方向を用いてプレイヤオブジェクト位置データDmを更新する。なお、上記ステップS238において設定する第1オブジェクトG1の移動方向は、第1オブジェクトG1が連結されているオブジェクト(例えば、プレイヤオブジェクトPOの伸びた腕オブジェクト)に沿った方向に設定してもよいし、第1オブジェクトG1が移動開始位置から移動した際の軌道を逆に戻るように設定してもよい。
一方、戻りフラグがオンに設定されている場合、CPU81は、第1オブジェクトG1が移動開始位置まで戻ったか否かを判定する(ステップS239)。例えば、CPU81は、プレイヤオブジェクト位置データDmを参照して、第1オブジェクトG1の位置が移動開始位置に設定されている場合、上記ステップS239において肯定判定する。そして、CPU81は、第1オブジェクトG1が移動開始位置まで戻った場合、ステップS240に処理を進める。一方、CPU81は、第1オブジェクトG1が移動開始位置まで戻っていない場合、当該サブルーチンによる処理を終了する。
ステップS240において、CPU81は、第1オブジェクトG1の処理に対して設定されている移動開始可能フラグをオンに設定して移動開始可能フラグデータDlを更新し、次のステップに処理を進める。このように、第1オブジェクトG1が仮想空間内を再度移動可能な状態となった場合、第1移動開始可能状態となるため第1オブジェクトG1の移動開始可能フラグがオンに設定される。なお、上記ステップS240では、第1オブジェクトG1が移動開始位置まで戻った場合に即時に第1オブジェクトG1の移動開始可能フラグをオンに設定して第1移動開始可能状態としているが、他のタイミングで第1移動開始可能状態を開始してもよい。例えば、第1オブジェクトG1が移動開始位置まで戻ってから所定時間(例えば、8フレーム数)経過したタイミングで第1移動開始可能状態が開始されてもよい。
次に、CPU81は、第1オブジェクトG1の処理に対して設定されている移動フラグおよび戻りフラグをオフに設定し、アクションフラグをオフに設定し、衝突領域や第1オブジェクトG1の移動方向に関するデータをデフォルト値に設定して(ステップS241)、当該サブルーチンによる処理を終了する。例えば、CPU81は、第1オブジェクトG1の処理に対して設定されている移動フラグおよび戻りフラグをそれぞれオフに設定して、移動フラグデータDiおよび戻りフラグデータDkをそれぞれ更新する。また、CPU81は、アクションフラグをオフに設定して、アクションフラグデータDjを更新する。また、CPU81は、衝突領域に関する設定データを衝突領域なし(例えば、Null)に設定して、衝突領域データDnを更新する。また、CPU81は、第1オブジェクトG1の移動方向をデフォルト値(例えば、正面方向)に設定して、プレイヤオブジェクト位置データDmを更新する。
図17に戻り、上記ステップS146における第1オブジェクト軌道変化処理の後、CPU81は、第2オブジェクト軌道変化処理を行い(ステップS147)、次のステップに処理を進める。なお、図20〜図22を用いて説明したオブジェクト軌道変化処理は、上記ステップS147の第2オブジェクト軌道変化処理においても用いられるサブルーチンである。すなわち、上記第1オブジェクト軌道変化処理において処理対象としていた左コントローラ3および第1オブジェクトG1を右コントローラ4および第2オブジェクトG2にすることによって、同じサブルーチンを用いることによって同様の処理が可能となる。したがって、上記ステップS147の第2オブジェクト軌道変化処理の詳細な説明については省略する。
次に、CPU81は、プレイヤオブジェクト移動処理を行い(ステップS148)、次のステップに処理を進める。以下、図23を参照して、上記ステップS148において行うプレイヤオブジェクト移動処理について説明する。
図23において、CPU81は、左コントローラ3および右コントローラ4の実空間におけるピッチ方向に対する傾きが同じ方向であるか否かを判定する(ステップS251)。例えば、CPU81は、姿勢データDbを参照して左コントローラ3のX軸正方向と右コントローラ4のX軸正方向とが実空間の水平方向に対してともに仰角方向にある、またはともに俯角方向にある場合、上記ステップS251において肯定判定する。そして、CPU81は、左コントローラ3および右コントローラ4の実空間におけるピッチ方向に対する傾きが同じ方向である場合、ステップS252に処理を進める。一方、CPU81は、左コントローラ3および右コントローラ4の実空間におけるピッチ方向に対する傾きが同じ方向にない場合、ステップS253に処理を進める。
ステップS252において、CPU81は、左コントローラ3および右コントローラ4の実空間におけるピッチ方向に対する傾き角度の平均値Pを算出し、ステップS254に処理を進める。例えば、CPU81は、姿勢データDbを参照して、左コントローラ3のX軸正方向と実空間の水平方向との差角と右コントローラ4のX軸正方向と実空間の水平方向との差角とを算出し、当該差角の平均値Pを算出する。例えば、上記差角は、X軸正方向が俯角方向である場合に正の値となり、X軸正方向が仰角方向である場合に負の値となるように算出する。
一方、上記ステップ251において左コントローラ3および右コントローラ4の実空間におけるピッチ方向に対する傾きが同じ方向にないと判定された場合、CPU81は、平均値Pを0に設定し(ステップS253)、ステップS254に処理を進める。
ステップS254において、CPU81は、左コントローラ3および右コントローラ4の実空間におけるロール方向に対する傾きが同じ方向であるか否かを判定する。例えば、CPU81は、姿勢データDbを参照して左コントローラ3のY軸正方向と右コントローラ4のY軸正方向とが実空間の水平方向に対してともに仰角方向にある、またはともに俯角方向にある場合、上記ステップS254において肯定判定する。そして、CPU81は、左コントローラ3および右コントローラ4の実空間におけるロール方向に対する傾きが同じ方向である場合、ステップS255に処理を進める。一方、CPU81は、左コントローラ3および右コントローラ4の実空間におけるロール方向に対する傾きが同じ方向にない場合、ステップS256に処理を進める。
ステップS255において、CPU81は、左コントローラ3および右コントローラ4の実空間におけるロール方向に対する傾き角度の平均値Rを算出し、ステップS257に処理を進める。例えば、CPU81は、姿勢データDbを参照して、左コントローラ3のY軸正方向と実空間の水平方向との差角と右コントローラ4のY軸正方向と実空間の水平方向との差角とを算出し、当該差角の平均値Rを算出する。例えば、上記差角は、Y軸正方向が俯角方向である場合に正の値となり、Y軸正方向が仰角方向である場合に負の値となるように算出する。
一方、上記ステップ254において左コントローラ3および右コントローラ4の実空間におけるロール方向に対する傾きが同じ方向にないと判定された場合、CPU81は、平均値Rを0に設定し(ステップS256)、ステップS257に処理を進める。
ステップS257において、CPU81は、平均値Pに応じた前後移動量と平均値Rに応じた左右移動量とを合成して移動量Mを算出し、次のステップに処理を進める。例えば、CPU81は、平均値Pが正の値である場合に仮想空間における前方へ移動し、平均値Pが負の値である場合に仮想空間における後方へ移動する前後移動量を、当該平均値Pの値に応じて算出する。また、CPU81は、平均値Rが正の値である場合に仮想空間における右へ移動し、平均値Rが負の値である場合に仮想空間における左へ移動する左右移動量を、当該平均値Rの値に応じて算出する。そして、上記前後移動量および上記左右移動量を合成することによって、仮想空間に対する移動量Mを算出する。
次に、CPU81は、移動フラグの設定状況に応じて移動量Mをスケーリングし(ステップS258)、次のステップに処理を進める。例えば、CPU81は、移動フラグデータDiを参照して第1オブジェクトG1および第2オブジェクトG2の処理に対してそれぞれ設定されている移動フラグが両方オフに設定されている場合、移動量Mはそのままの値とする。また、CPU81は第1オブジェクトG1および第2オブジェクトG2の処理に対してそれぞれ設定されている移動フラグの一方のみオンに設定されている場合、移動量Mを所定倍率によって縮小(例えば、0.9倍して縮小)する。また、CPU81は第1オブジェクトG1および第2オブジェクトG2の処理に対してそれぞれ設定されている移動フラグの両方がオンに設定されている場合、移動量Mを0に設定する。
次に、CPU81は、上記ステップS258においてスケーリングされた移動量Mに応じて、プレイヤオブジェクトPOを仮想空間において移動させ(ステップS259)、当該サブルーチンによる処理を終了する。例えば、CPU81は、プレイヤオブジェクト位置データDmが示す仮想空間におけるプレイヤオブジェクトPOの位置を移動量Mに応じて移動させ、移動後のプレイヤオブジェクトPOの位置を用いてプレイヤオブジェクト位置データDmを更新する。
図17に戻り、上記ステップS148におけるプレイヤオブジェクト移動処理の後、CPU81は、表示制御処理を行い(ステップS149)、次のステップに処理を進める。例えば、CPU81は、プレイヤオブジェクト位置データDm、および敵オブジェクト位置データDoを用いて、ゲームフィールド上にプレイヤオブジェクトPO、第1オブジェクトG1、第2オブジェクトG2、敵オブジェクトEOを配置する。また、CPU81は、アクションフラグデータDjが示すアクションフラグがオンに設定されており、衝突領域データDnに衝突領域Aに関する設定データが設定されている場合は、第1オブジェクトG1および第2オブジェクトG2の間に衝突領域Aに対応するオブジェクトを配置する。さらに、CPU81は、上記ステップS233において衝突アクションが設定されている場合は、当該設定内容に応じて各仮想オブジェクトを動作させる。そして、CPU81は、所定の位置(例えば、プレイヤオブジェクトPOの背後)に配置された仮想カメラからゲームフィールドを見た仮想空間画像を生成し、当該仮想空間画像を表示装置(例えば、据置型モニタ6)の表示画面に表示する処理を行う。
次に、CPU81は、ゲームを終了するか否かを判定する(ステップS150)。上記ステップS150においてゲームを終了する条件としては、例えば、上記ゲームの結果が確定したことや、ユーザがゲームを終了する操作を行ったこと等がある。CPU81は、ゲームを終了しない場合に上記ステップS142に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。以降、ステップS142〜ステップS150の一連の処理は、ステップS150でゲームを終了すると判定されるまで繰り返し実行される。
このように、本実施例においては、第1オブジェクトG1が移動開始可能となる第1移動開始可能状態や第2オブジェクトG2が移動開始可能となる第2移動開始可能状態が断続的に到来し、第1移動開始可能状態となった場合に左コントローラ3を振ることによって第1オブジェクトG1の動作制御が可能となり、第2移動開始可能状態となった場合に右コントローラ4を振ることによって第2オブジェクトG2の動作制御が可能となる。しかしながら、本実施例では、第1移動開始可能状態でない場合であっても、左コントローラ3が振り動かされてから所定期間以内に第1移動開始可能状態になれば当該左コントローラ3の振り判定結果に基づいて第1オブジェクトG1の動作制御が可能となる。また、第2移動開始可能状態でない場合であっても、右コントローラ4が振り動かされてから所定期間以内に第2移動開始可能状態になれば当該右コントローラ4の振り判定結果に基づいて第2オブジェクトG2の動作制御が可能となる。したがって、上述したように第1移動開始可能状態および/または第2移動開始可能状態が断続的に到来するゲームであっても、操作を容易にすることが可能となる。
なお、上述したゲーム例では、第1オブジェクトG1および第2オブジェクトG2は、それぞれ移動中であっても左コントローラ3や右コントローラ4を用いた操作によって軌道が変化するため、結果的に第1移動開始可能状態が終了してから次の第1移動開始可能状態となるまでの時間や第2移動開始可能状態が終了してから次の第2移動開始可能状態となるまでの時間が長いものであることが前提となっている。このように、次の移動が開始可能となるまでの時間が長くなるゲームにおいては、先行して移動開始する操作(振り操作)を受け付けるゲーム仕様が効果的となるが、他の仕様によって次の移動が開始可能となるまでの時間が長くなるゲームであってもよいことは言うまでない。例えば、上述したゲーム例では、プレイヤオブジェクトPOの腕が伸びることによって移動中の動きを制御可能にしているが、プレイヤオブジェクトの他の五体(例えば、脚)が伸びるゲームやプレイヤオブジェクトが所持している物体(鞭オブジェクト、蛇腹オブジェクト等)が伸びるゲームに本発明を適用してもよい。また、プレイヤオブジェクトが遠隔操作可能なオブジェクト(例えば、ラジコン、ロボット、ロケットパンチ等)を移動中に操作し、再びプレイヤオブジェクトの手元に帰った場合に次の移動が可能となるゲームに本発明を適用してもよい。
また、移動中にさらなる軌道変化が制御できないゲームであっても、本発明を適用することができる。一例として、敵を射撃したり砲撃したりするゲームにおいて、次の弾を充填するための時間が長いために次の射撃や砲撃が可能となるまでの時間が長くなるゲームであってもよい。この場合、射撃や砲撃が可能となる所定時間前に射撃操作や砲撃操作が先行した場合に当該射撃操作や砲撃操作によって次の弾が発射されることになる。他の例として、一旦放ったオブジェクト(鳥、ブーメラン、ボーリングの球等)が戻ってくるゲームに本発明を適用してもよい。
また、上述した「両手パンチアクション」は、第1オブジェクトG1および第2オブジェクトG2が組となって所定のアクションを行う例として記載したが、単に第1オブジェクトG1および第2オブジェクトG2が組となって移動するものであってもよい。この場合、ゲーム画像として表現される第1オブジェクトG1および第2オブジェクトG2の移動形態は、単に第1オブジェクトG1および第2オブジェクトG2が組となって移動するものとなるが、第1オブジェクトG1および第2オブジェクトG2の少なくとも一方が敵オブジェクトEOと衝突した場合に、単独で衝突する場合と比べて与えるダメージが大きくてもよい。
また、上述したゲーム例では、左コントローラ3や右コントローラ4を用いた操作に応じて、第1オブジェクトG1および第2オブジェクトG2における仮想空間の左右方向の位置が制御可能な例を用いたが、第1オブジェクトG1および第2オブジェクトG2における仮想空間の上下方向の位置および/または前後方向の位置が制御可能に構成されてもよい。この場合、左コントローラ3および/または右コントローラ4の実空間における上下方向の動作および/またはピッチ方向の姿勢に応じて、第1オブジェクトG1および/または第2オブジェクトG2における仮想空間の上下方向の位置が制御可能に構成されてもよい。また、左コントローラ3および/または右コントローラ4の実空間における前後方向の動作および/またはピッチ方向の姿勢に応じて、第1オブジェクトG1および/または第2オブジェクトG2における仮想空間の前後方向の位置が制御可能に構成されてもよい。また、左コントローラ3や右コントローラ4を用いた操作に応じて、第1オブジェクトG1および第2オブジェクトG2における仮想空間における姿勢が制御可能に構成されてもよい。この場合、左コントローラ3および/または右コントローラ4の実空間におけるロール方向の姿勢に応じて、第1オブジェクトG1および/または第2オブジェクトG2における仮想空間のロール方向に対する姿勢が制御可能に構成されてもよい。また、左コントローラ3および/または右コントローラ4の実空間におけるピッチ方向の姿勢に応じて、第1オブジェクトG1および/または第2オブジェクトG2における仮想空間のピッチ方向に対する姿勢が制御可能に構成されてもよい。また、左コントローラ3および/または右コントローラ4の実空間におけるヨー方向の姿勢に応じて、第1オブジェクトG1および/または第2オブジェクトG2における仮想空間のヨー方向に対する姿勢が制御可能に構成されてもよい。
また、上述した実施例において、左コントローラ3や右コントローラ4の動きや姿勢を検出する方法については、単なる一例であって、他の方法や他のデータを用いて左コントローラ3や右コントローラ4の動きや姿勢を検出してもよい。また、上述した実施例では、左コントローラ3や右コントローラ4を用いた操作に応じたゲーム画像を据置型モニタ6に表示しているが、本体装置2のディスプレイ12に表示してもよい。また、第1オブジェクトG1および/または第2オブジェクトG2の動作を制御するためのコントローラは、左コントローラ3および右コントローラ4のセットだけでなく、他のコントローラが組み合わせられたり、他のコントローラ同士が組み合わせられたりしてもよい。
また、他の実施形態においては、本体装置2は、据置型モニタ6と直接通信可能であってもよい。例えば、本体装置2と据置型モニタ6とが直接有線通信または直接無線通信を行うことが可能であってもよい。この場合、本体装置2は、本体装置2と据置型モニタ6とが直接通信可能か否かに基づいて画像の表示先を決定してもよい。
また、付加装置(例えば、クレードル)は、本体装置2を着脱可能な任意の付加装置であってよい。付加装置は、本実施形態のように、本体装置2に対する充電を行う機能を有していてもよいし、有していなくてもよい。
また、情報処理システム1は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器(PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ、タブレット等)等であってもよい。
また、上述した説明では情報処理(ゲーム処理)を情報処理システム1でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、情報処理システム1がさらに他の装置(例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末)と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理(ゲーム処理)は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、情報処理システム1のCPU81が所定のプログラムを実行することによって情報処理を行うことが可能であるが、情報処理システム1が備える専用回路によって上記処理の一部または全部が行われてもよい。
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置(据置型のゲーム装置)と携帯型の情報処理装置(携帯型のゲーム装置)との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じて情報処理システム1に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
以上のように、本発明は、操作指示可能な状態が断続的に生じるゲーム等において、操作を容易にすることが可能なゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法等として利用することができる。
1…情報処理システム
2…本体装置
3…左コントローラ
4…右コントローラ
5…クレードル
6…据置型モニタ
11…ハウジング
12…ディスプレイ
27…下側端子
42,64…端子
73…本体端子
81…CPU
82…ネットワーク通信部
83…コントローラ通信部
85…DRAM

Claims (20)

  1. 加速度センサおよびジャイロセンサをそれぞれ備えた第1操作装置および第2操作装置を用いた操作に基づいたゲーム処理を行うゲーム装置であって、
    前記第1操作装置から前記加速度センサの検出結果に基づいた第1加速度データおよび前記ジャイロセンサの検出結果に基づいた第1角速度データを含む第1操作データを取得し、前記第2操作装置から前記加速度センサの検出結果に基づいた第2加速度データおよび前記ジャイロセンサの検出結果に基づいた第2角速度データを含む第2操作データを取得する操作データ取得部と、
    少なくとも前記第1加速度データに基づいて前記第1操作装置に対する第1振り入力を判定し、少なくとも前記第2加速度データに基づいて前記第2操作装置に対する第2振り入力を判定する振り判定部と、
    仮想空間において、前記第1操作データに基づいて第1オブジェクトの移動を制御し、前記第2操作データに基づいて第2オブジェクトの移動を制御するオブジェクト移動制御部と、
    前記仮想空間における前記第1オブジェクトおよび前記第2オブジェクトに基づいたゲーム処理を行うゲーム処理部とを備え、
    前記オブジェクト移動制御部は、
    前記第1オブジェクトが移動開始可能な第1移動開始可能状態において前記第1振り入力があったと判定された場合と、前記第1振り入力があったと判定された後からカウントされる予め定められた時間以内に当該第1移動開始可能状態になった場合とに、少なくとも当該第1振り入力に基づいて前記第1オブジェクトを前記仮想空間において移動開始させる判定を行い、前記第2オブジェクトが移動開始可能な第2移動開始可能状態において前記第2振り入力があったと判定された場合と、前記第2振り入力があったと判定された後からカウントされる予め定められた時間以内に当該第2移動開始可能状態になった場合とに、少なくとも当該第2振り入力に基づいて前記第2オブジェクトを前記仮想空間において移動開始させる判定を行う移動開始判定部と、
    少なくとも前記第1角速度データに基づいて前記第1操作装置の姿勢を算出し、当該第1操作装置の姿勢に基づいて前記仮想空間における前記第1オブジェクトの移動方向を設定し、少なくとも前記第2角速度データに基づいて前記第2操作装置の姿勢を算出して、当該第2操作装置の姿勢に基づいて前記仮想空間における前記第2オブジェクトの移動方向を設定する移動方向設定部と、
    前記移動開始判定部において前記第1オブジェクトを移動開始させると判定された場合に前記第1オブジェクトを移動開始させ、前記移動方向設定部において設定された前記第1オブジェクトの移動方向へ移動させ、前記移動開始判定部において前記第2オブジェクトを移動開始させると判定された場合に前記第2オブジェクトを移動開始させ、前記移動方向設定部において設定された前記第2オブジェクトの移動方向へ移動させる移動開始部と、
    前記第1オブジェクトの移動開始後における前記第1操作装置の姿勢変化に応じて、前記仮想空間における前記第1オブジェクトの軌道を変化させ、前記第2オブジェクトの移動開始後における前記第2操作装置の姿勢変化に応じて、前記仮想空間における前記第2オブジェクトの軌道を変化させる軌道制御部と、
    所定条件に基づいて前記第1オブジェクトの移動を終了した後に当該第1オブジェクトを第1所定位置に配置させて前記第1移動開始可能状態に設定し、前記第2オブジェクトの移動を終了した後に当該第2オブジェクトを第2所定位置に配置させて前記第2移動開始可能状態に設定する移動終了設定部とを含む、ゲーム装置。
  2. 前記移動開始判定部は、前記第1オブジェクトおよび前記第2オブジェクトの一方が移動開始した時点から所定期間以内に他方を移動開始させる判定がされた場合、前記第1オブジェクトおよび前記第2オブジェクトが組となった所定のアクションを開始させる判定を、さらに行う、請求項1に記載のゲーム装置。
  3. 前記ゲーム処理部は、前記仮想空間において前記第1オブジェクトおよび/または前記第2オブジェクトと他のオブジェクトとの衝突判定を行い、当該判定において肯定判定された場合に当該他のオブジェクトに対して所定の処理を行う衝突処理部を含み、
    前記衝突処理部は、前記移動開始判定部において前記所定のアクションが開始されると判定された場合、前記仮想空間において前記第1オブジェクトおよび前記第2オブジェクトの間に設定される所定領域と前記他のオブジェクトとの衝突判定を、さらに行う、請求項2に記載のゲーム装置。
  4. 前記軌道制御部は、前記所定のアクションが行われている期間においても、前記第1操作装置の姿勢変化に応じて前記第1オブジェクトの軌道を変化させ、前記第2操作装置の姿勢変化に応じて前記第2オブジェクトの軌道を変化させる、請求項2または3に記載のゲーム装置。
  5. 前記振り判定部は、前記第1加速度データが示す加速度の大きさが第1閾値を超えたか否かに基づいて前記第1振り入力を判定し、前記第2加速度データが示す加速度の大きさが第2閾値を越えたか否かに基づいて前記第2振り入力を判定する、請求項1乃至4の何れか1つに記載のゲーム装置。
  6. 前記移動方向設定部は、実空間における重力方向に対する前記第1操作装置の左右方向の軸の傾きに基づいて、前記第1操作装置の姿勢を算出し、当該重力方向に対する前記第2操作装置の左右方向の軸の傾きに基づいて、前記第2操作装置の姿勢を算出する、請求項1乃至5の何れか1つに記載のゲーム装置。
  7. 前記軌道制御部は、前記第1操作装置の左右方向の軸の前後方向周りの回転角度の変化に基づいて、前記第1操作装置の姿勢変化を算出し、前記第2操作装置の左右方向の軸の前後方向周りの回転角度の変化に基づいて、前記第2操作装置の姿勢変化を算出する、請求項1乃至6の何れか1つに記載のゲーム装置。
  8. 前記軌道制御部は、実空間における重力方向に対する前記第1操作装置の前後方向の軸の回転角度の変化に基づいて、前記第1操作装置の姿勢変化を算出し、当該重力方向に対する前記第2操作装置の前後方向の軸の回転角度の変化に基づいて、前記第2操作装置の姿勢変化を算出する、請求項1乃至7の何れか1つに記載のゲーム装置。
  9. 前記オブジェクト移動制御部は、少なくとも前記第1角速度データに基づいた前記第1操作装置の姿勢と少なくとも前記第2角速度データに基づいた前記第2操作装置の姿勢との両方に基づいてプレイヤオブジェクトを移動させることによって、当該プレイヤキャラクタの位置を基準とした相対的な位置に設定される前記第1所定位置および前記第2所定位置を移動させる移動開始位置設定部を、さらに含む、請求項1乃至8の何れか1つに記載のゲーム装置。
  10. 加速度センサおよびジャイロセンサをそれぞれ備えた第1操作装置および第2操作装置を用いた操作に基づいたゲーム処理を行うゲーム装置に含まれるコンピュータで実行されるゲームプログラムであって、
    前記コンピュータを、
    前記第1操作装置から前記加速度センサの検出結果に基づいた第1加速度データおよび前記ジャイロセンサの検出結果に基づいた第1角速度データを含む第1操作データを取得し、前記第2操作装置から前記加速度センサの検出結果に基づいた第2加速度データおよび前記ジャイロセンサの検出結果に基づいた第2角速度データを含む第2操作データを取得する操作データ取得手段と、
    少なくとも前記第1加速度データに基づいて前記第1操作装置に対する第1振り入力を判定し、少なくとも前記第2加速度データに基づいて前記第2操作装置に対する第2振り入力を判定する振り判定手段と、
    仮想空間において、前記第1操作データに基づいて第1オブジェクトの移動を制御し、前記第2操作データに基づいて第2オブジェクトの移動を制御するオブジェクト移動制御手段と、
    前記仮想空間における前記第1オブジェクトおよび前記第2オブジェクトに基づいたゲーム処理を行うゲーム処理手段として機能させ、
    前記オブジェクト移動制御手段は、
    前記第1オブジェクトが移動開始可能な第1移動開始可能状態において前記第1振り入力があったと判定された場合と、前記第1振り入力があったと判定された後からカウントされる予め定められた時間以内に当該第1移動開始可能状態になった場合とに、少なくとも当該第1振り入力に基づいて前記第1オブジェクトを前記仮想空間において移動開始させる判定を行い、前記第2オブジェクトが移動開始可能な第2移動開始可能状態において前記第2振り入力があったと判定された場合と、前記第2振り入力があったと判定された後からカウントされる予め定められた時間以内に当該第2移動開始可能状態になった場合とに、少なくとも当該第2振り入力に基づいて前記第2オブジェクトを前記仮想空間において移動開始させる判定を行う移動開始判定手段と、
    少なくとも前記第1角速度データに基づいて前記第1操作装置の姿勢を算出し、当該第1操作装置の姿勢に基づいて前記仮想空間における前記第1オブジェクトの移動方向を設定し、少なくとも前記第2角速度データに基づいて前記第2操作装置の姿勢を算出して、当該第2操作装置の姿勢に基づいて前記仮想空間における前記第2オブジェクトの移動方向を設定する移動方向設定手段と、
    前記移動開始判定手段において前記第1オブジェクトを移動開始させると判定された場合に前記第1オブジェクトを移動開始させ、前記移動方向設定手段において設定された前記第1オブジェクトの移動方向へ移動させ、前記移動開始判定手段において前記第2オブジェクトを移動開始させると判定された場合に前記第2オブジェクトを移動開始させ、前記移動方向設定手段において設定された前記第2オブジェクトの移動方向へ移動させる移動開始手段と、
    前記第1オブジェクトの移動開始後における前記第1操作装置の姿勢変化に応じて、前記仮想空間における前記第1オブジェクトの軌道を変化させ、前記第2オブジェクトの移動開始後における前記第2操作装置の姿勢変化に応じて、前記仮想空間における前記第2オブジェクトの軌道を変化させる軌道制御手段と、
    所定条件に基づいて前記第1オブジェクトの移動を終了した後に当該第1オブジェクトを第1所定位置に配置させて前記第1移動開始可能状態に設定し、前記第2オブジェクトの移動を終了した後に当該第2オブジェクトを第2所定位置に配置させて前記第2移動開始可能状態に設定する移動終了設定手段とを含む、ゲームプログラム。
  11. 前記移動開始判定手段は、前記第1オブジェクトおよび前記第2オブジェクトの一方が移動開始した時点から所定期間以内に他方を移動開始させる判定がされた場合、前記第1オブジェクトおよび前記第2オブジェクトが組となった所定のアクションを開始させる判定を、さらに行う、請求項10に記載のゲームプログラム。
  12. 前記ゲーム処理手段は、前記仮想空間において前記第1オブジェクトおよび/または前記第2オブジェクトと他のオブジェクトとの衝突判定を行い、当該判定において肯定判定された場合に当該他のオブジェクトに対して所定の処理を行う衝突処理手段を含み、
    前記衝突処理手段は、前記移動開始判定手段において前記所定のアクションが開始されると判定された場合、前記仮想空間において前記第1オブジェクトおよび前記第2オブジェクトの間に設定される所定領域と前記他のオブジェクトとの衝突判定を、さらに行う、請求項11に記載のゲームプログラム。
  13. 前記軌道制御手段は、前記所定のアクションが行われている期間においても、前記第1操作装置の姿勢変化に応じて前記第1オブジェクトの軌道を変化させ、前記第2操作装置の姿勢変化に応じて前記第2オブジェクトの軌道を変化させる、請求項11または12に記載のゲームプログラム。
  14. 前記振り判定手段は、前記第1加速度データが示す加速度の大きさが第1閾値を超えたか否かに基づいて前記第1振り入力を判定し、前記第2加速度データが示す加速度の大きさが第2閾値を越えたか否かに基づいて前記第2振り入力を判定する、請求項10乃至13の何れか1つに記載のゲームプログラム。
  15. 前記移動方向設定手段は、実空間における重力方向に対する前記第1操作装置の左右方向の軸の傾きに基づいて、前記第1操作装置の姿勢を算出し、当該重力方向に対する前記第2操作装置の左右方向の軸の傾きに基づいて、前記第2操作装置の姿勢を算出する、請求項10乃至14の何れか1つに記載のゲームプログラム。
  16. 前記軌道制御手段は、前記第1操作装置の左右方向の軸の前後方向周りの回転角度の変化に基づいて、前記第1操作装置の姿勢変化を算出し、前記第2操作装置の左右方向の軸の前後方向周りの回転角度の変化に基づいて、前記第2操作装置の姿勢変化を算出する、請求項10乃至15の何れか1つに記載のゲームプログラム。
  17. 前記軌道制御手段は、実空間における重力方向に対する前記第1操作装置の前後方向の軸の回転角度の変化に基づいて、前記第1操作装置の姿勢変化を算出し、当該重力方向に対する前記第2操作装置の前後方向の軸の回転角度の変化に基づいて、前記第2操作装置の姿勢変化を算出する、請求項10乃至16の何れか1つに記載のゲームプログラム。
  18. 前記オブジェクト移動制御手段は、少なくとも前記第1角速度データに基づいた前記第1操作装置の姿勢と少なくとも前記第2角速度データに基づいた前記第2操作装置の姿勢との両方に基づいてプレイヤオブジェクトを移動させることによって、当該プレイヤキャラクタの位置を基準とした相対的な位置に設定される前記第1所定位置および前記第2所定位置を移動させる移動開始位置設定手段を、さらに含む、請求項10乃至17の何れか1つに記載のゲームプログラム。
  19. 加速度センサおよびジャイロセンサをそれぞれ備えた第1操作装置および第2操作装置と当該第1操作装置および当該第2操作装置を用いた操作に基づいたゲーム処理を行うゲーム装置とを含むゲームシステムであって、
    前記ゲーム装置は、
    前記第1操作装置から前記加速度センサの検出結果に基づいた第1加速度データおよび前記ジャイロセンサの検出結果に基づいた第1角速度データを含む第1操作データを取得し、前記第2操作装置から前記加速度センサの検出結果に基づいた第2加速度データおよび前記ジャイロセンサの検出結果に基づいた第2角速度データを含む第2操作データを取得する操作データ取得部と、
    少なくとも前記第1加速度データに基づいて前記第1操作装置に対する第1振り入力を判定し、少なくとも前記第2加速度データに基づいて前記第2操作装置に対する第2振り入力を判定する振り判定部と、
    仮想空間において、前記第1操作データに基づいて第1オブジェクトの移動を制御し、前記第2操作データに基づいて第2オブジェクトの移動を制御するオブジェクト移動制御部と、
    前記仮想空間における前記第1オブジェクトおよび前記第2オブジェクトに基づいたゲーム処理を行うゲーム処理部とを備え、
    前記オブジェクト移動制御部は、
    前記第1オブジェクトが移動開始可能な第1移動開始可能状態において前記第1振り入力があったと判定された場合と、前記第1振り入力があったと判定された後からカウントされる予め定められた時間以内に当該第1移動開始可能状態になった場合とに、少なくとも当該第1振り入力に基づいて前記第1オブジェクトを前記仮想空間において移動開始させる判定を行い、前記第2オブジェクトが移動開始可能な第2移動開始可能状態において前記第2振り入力があったと判定された場合と、前記第2振り入力があったと判定された後からカウントされる予め定められた時間以内に当該第2移動開始可能状態になった場合とに、少なくとも当該第2振り入力に基づいて前記第2オブジェクトを前記仮想空間において移動開始させる判定を行う移動開始判定部と、
    少なくとも前記第1角速度データに基づいて前記第1操作装置の姿勢を算出し、当該第1操作装置の姿勢に基づいて前記仮想空間における前記第1オブジェクトの移動方向を設定し、少なくとも前記第2角速度データに基づいて前記第2操作装置の姿勢を算出して、当該第2操作装置の姿勢に基づいて前記仮想空間における前記第2オブジェクトの移動方向を設定する移動方向設定部と、
    前記移動開始判定部において前記第1オブジェクトを移動開始させると判定された場合に前記第1オブジェクトを移動開始させ、前記移動方向設定部において設定された前記第1オブジェクトの移動方向へ移動させ、前記移動開始判定部において前記第2オブジェクトを移動開始させると判定された場合に前記第2オブジェクトを移動開始させ、前記移動方向設定部において設定された前記第2オブジェクトの移動方向へ移動させる移動開始部と、
    前記第1オブジェクトの移動開始後における前記第1操作装置の姿勢変化に応じて、前記仮想空間における前記第1オブジェクトの軌道を変化させ、前記第2オブジェクトの移動開始後における前記第2操作装置の姿勢変化に応じて、前記仮想空間における前記第2オブジェクトの軌道を変化させる軌道制御部と、
    所定条件に基づいて前記第1オブジェクトの移動を終了した後に当該第1オブジェクトを第1所定位置に配置させて前記第1移動開始可能状態に設定し、前記第2オブジェクトの移動を終了した後に当該第2オブジェクトを第2所定位置に配置させて前記第2移動開始可能状態に設定する移動終了設定部とを含む、ゲームシステム。
  20. 加速度センサおよびジャイロセンサをそれぞれ備えた第1操作装置および第2操作装置を用いた操作に基づいたゲーム処理を行うゲーム処理方法であって、
    前記第1操作装置から前記加速度センサの検出結果に基づいた第1加速度データおよび前記ジャイロセンサの検出結果に基づいた第1角速度データを含む第1操作データを取得し、前記第2操作装置から前記加速度センサの検出結果に基づいた第2加速度データおよび前記ジャイロセンサの検出結果に基づいた第2角速度データを含む第2操作データを取得する操作データ取得ステップと、
    少なくとも前記第1加速度データに基づいて前記第1操作装置に対する第1振り入力を判定し、少なくとも前記第2加速度データに基づいて前記第2操作装置に対する第2振り入力を判定する振り判定ステップと、
    仮想空間において、前記第1操作データに基づいて第1オブジェクトの移動を制御し、前記第2操作データに基づいて第2オブジェクトの移動を制御するオブジェクト移動制御ステップと、
    前記仮想空間における前記第1オブジェクトおよび前記第2オブジェクトに基づいたゲーム処理を行うゲーム処理ステップとを含み、
    前記オブジェクト移動制御ステップは、
    前記第1オブジェクトが移動開始可能な第1移動開始可能状態において前記第1振り入力があったと判定された場合と、前記第1振り入力があったと判定された後からカウントされる予め定められた時間以内に当該第1移動開始可能状態になった場合とに、少なくとも当該第1振り入力に基づいて前記第1オブジェクトを前記仮想空間において移動開始させる判定を行い、前記第2オブジェクトが移動開始可能な第2移動開始可能状態において前記第2振り入力があったと判定された場合と、前記第2振り入力があったと判定された後からカウントされる予め定められた時間以内に当該第2移動開始可能状態になった場合とに、少なくとも当該第2振り入力に基づいて前記第2オブジェクトを前記仮想空間において移動開始させる判定を行う移動開始判定ステップと、
    少なくとも前記第1角速度データに基づいて前記第1操作装置の姿勢を算出し、当該第1操作装置の姿勢に基づいて前記仮想空間における前記第1オブジェクトの移動方向を設定し、少なくとも前記第2角速度データに基づいて前記第2操作装置の姿勢を算出して、当該第2操作装置の姿勢に基づいて前記仮想空間における前記第2オブジェクトの移動方向を設定する移動方向設定ステップと、
    前記移動開始判定ステップにおいて前記第1オブジェクトを移動開始させると判定された場合に前記第1オブジェクトを移動開始させ、前記移動方向設定ステップにおいて設定された前記第1オブジェクトの移動方向へ移動させ、前記移動開始判定ステップにおいて前記第2オブジェクトを移動開始させると判定された場合に前記第2オブジェクトを移動開始させ、前記移動方向設定ステップにおいて設定された前記第2オブジェクトの移動方向へ移動させる移動開始ステップと、
    前記第1オブジェクトの移動開始後における前記第1操作装置の姿勢変化に応じて、前記仮想空間における前記第1オブジェクトの軌道を変化させ、前記第2オブジェクトの移動開始後における前記第2操作装置の姿勢変化に応じて、前記仮想空間における前記第2オブジェクトの軌道を変化させる軌道制御ステップと、
    所定条件に基づいて前記第1オブジェクトの移動を終了した後に当該第1オブジェクトを第1所定位置に配置させて前記第1移動開始可能状態に設定し、前記第2オブジェクトの移動を終了した後に当該第2オブジェクトを第2所定位置に配置させて前記第2移動開始可能状態に設定する移動終了設定ステップとを含む、ゲーム処理方法。
JP2016113214A 2016-06-07 2016-06-07 ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法 Active JP6643191B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016113214A JP6643191B2 (ja) 2016-06-07 2016-06-07 ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法
US15/587,671 US10058779B2 (en) 2016-06-07 2017-05-05 Game apparatus, storage medium having game program stored thereon, game system, and game processing method
US15/677,144 US10080962B2 (en) 2016-06-07 2017-08-15 Game apparatus, storage medium having game program stored thereon, game system, and game processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016113214A JP6643191B2 (ja) 2016-06-07 2016-06-07 ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017118622A Division JP6693911B2 (ja) 2017-06-16 2017-06-16 ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法

Publications (2)

Publication Number Publication Date
JP2017217176A JP2017217176A (ja) 2017-12-14
JP6643191B2 true JP6643191B2 (ja) 2020-02-12

Family

ID=60482617

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016113214A Active JP6643191B2 (ja) 2016-06-07 2016-06-07 ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法

Country Status (2)

Country Link
US (2) US10058779B2 (ja)
JP (1) JP6643191B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106993200B (zh) * 2017-04-18 2019-05-31 腾讯科技(深圳)有限公司 一种数据的直播方法、相关设备及系统
JP7165604B2 (ja) * 2019-03-06 2022-11-04 日産自動車株式会社 仮想オブジェクト出力装置及び仮想オブジェクト出力方法
US11771991B2 (en) * 2021-02-15 2023-10-03 Nintendo Co., Ltd. Non-transitory computer-readable storage medium having stored therein information processing program, information processing apparatus, information processing system, and information processing method

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2524475B2 (ja) * 1993-10-15 1996-08-14 コナミ株式会社 テレビゲ―ム機
US6072467A (en) 1996-05-03 2000-06-06 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Continuously variable control of animated on-screen characters
JP2000116953A (ja) * 1998-10-15 2000-04-25 Square Co Ltd ゲーム装置、ゲームキャラクタの動作補正方法および情報記録媒体
US6375572B1 (en) * 1999-10-04 2002-04-23 Nintendo Co., Ltd. Portable game apparatus with acceleration sensor and information storage medium storing a game progam
JP4027031B2 (ja) * 2000-11-16 2007-12-26 株式会社コナミデジタルエンタテインメント 対戦式3dビデオゲーム装置
AU2003303787A1 (en) 2003-01-22 2004-08-13 Nokia Corporation Image control
JP4151982B2 (ja) * 2006-03-10 2008-09-17 任天堂株式会社 動き判別装置および動き判別プログラム
US9405372B2 (en) * 2006-07-14 2016-08-02 Ailive, Inc. Self-contained inertial navigation system for interactive control using movable controllers
JP4979313B2 (ja) * 2006-09-13 2012-07-18 任天堂株式会社 ゲームプログラムおよびゲーム装置
US10697996B2 (en) 2006-09-26 2020-06-30 Nintendo Co., Ltd. Accelerometer sensing and object control
US20080125224A1 (en) * 2006-09-26 2008-05-29 Pollatsek David Method and apparatus for controlling simulated in flight realistic and non realistic object effects by sensing rotation of a hand-held controller
US9901814B2 (en) 2006-11-17 2018-02-27 Nintendo Co., Ltd. Game system and storage medium storing game program
US20090093307A1 (en) * 2007-10-08 2009-04-09 Sony Computer Entertainment America Inc. Enhanced game controller
JP5730463B2 (ja) * 2008-07-11 2015-06-10 任天堂株式会社 ゲームプログラムおよびゲーム装置
US8403753B2 (en) * 2008-09-30 2013-03-26 Nintendo Co., Ltd. Computer-readable storage medium storing game program, game apparatus, and processing method
JP5602398B2 (ja) * 2009-08-20 2014-10-08 任天堂株式会社 ゲームプログラム、ゲーム装置およびゲーム制御方法
JP6243586B2 (ja) * 2010-08-06 2017-12-06 任天堂株式会社 ゲームシステム、ゲーム装置、ゲームプログラム、および、ゲーム処理方法
JP6184658B2 (ja) 2010-08-20 2017-08-23 任天堂株式会社 ゲームシステム、ゲーム装置、ゲームプログラム、および、ゲーム処理方法
US8854298B2 (en) * 2010-10-12 2014-10-07 Sony Computer Entertainment Inc. System for enabling a handheld device to capture video of an interactive application
JP5943554B2 (ja) * 2011-05-23 2016-07-05 任天堂株式会社 ゲームシステム、ゲーム装置、ゲームプログラム、およびゲーム処理方法
US10532277B2 (en) 2015-06-11 2020-01-14 Facebook Technologies, Llc Hand-held controllers with light-emitting diodes synchronized to an external camera
JP6018271B2 (ja) * 2015-07-28 2016-11-02 株式会社カプコン ゲームプログラムおよび携帯用ゲーム機

Also Published As

Publication number Publication date
US20170348598A1 (en) 2017-12-07
US10080962B2 (en) 2018-09-25
US10058779B2 (en) 2018-08-28
JP2017217176A (ja) 2017-12-14
US20180015366A1 (en) 2018-01-18

Similar Documents

Publication Publication Date Title
EP3434342B1 (en) Game system, accessory, game program, and game processing method
EP3343323B1 (en) Information processing program, information processing apparatus, information processing system, and information processing method
JP6877893B2 (ja) ゲーム装置、ゲームシステム、ゲームプログラム、および振り入力判定方法
JP6563365B2 (ja) ゲームシステム、ゲーム装置、ゲームプログラム、操作判定方法、および情報処理装置
EP3369466B1 (en) Game system, game apparatus, game program, and game processing method
JP6643191B2 (ja) ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法
JP7232223B2 (ja) ゲームプログラム、ゲームシステム、情報処理装置、および、情報処理方法
JP2021194259A (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
JP6693911B2 (ja) ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法
JP6955339B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
US11285394B1 (en) Computer-readable non-transitory storage medium having instructions stored therein, game apparatus, game system, and game processing method
JP6688423B1 (ja) 情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法
JP6829608B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
JP6973967B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
JP7449347B2 (ja) ゲームプログラム、情報処理システム、情報処理装置、および情報処理方法
JP2019146975A (ja) ゲームシステム、アクセサリ、ゲームプログラム、ゲーム装置、ゲーム処理方法、および厚紙部材

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190725

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200106

R150 Certificate of patent or registration of utility model

Ref document number: 6643191

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250