JP2014000444A - ゲームプログラム及びゲーム装置 - Google Patents

ゲームプログラム及びゲーム装置 Download PDF

Info

Publication number
JP2014000444A
JP2014000444A JP2013174604A JP2013174604A JP2014000444A JP 2014000444 A JP2014000444 A JP 2014000444A JP 2013174604 A JP2013174604 A JP 2013174604A JP 2013174604 A JP2013174604 A JP 2013174604A JP 2014000444 A JP2014000444 A JP 2014000444A
Authority
JP
Japan
Prior art keywords
movement
housing
game
sensor
output
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.)
Granted
Application number
JP2013174604A
Other languages
English (en)
Other versions
JP5679484B2 (ja
Inventor
Yoshiaki Koizumi
歓晃 小泉
Takeshi Hayakawa
毅 早川
Norihiro Aoyagi
範宏 青柳
Morichika Ishihara
盛規 石原
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 JP2013174604A priority Critical patent/JP5679484B2/ja
Publication of JP2014000444A publication Critical patent/JP2014000444A/ja
Application granted granted Critical
Publication of JP5679484B2 publication Critical patent/JP5679484B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】複数の加速度センサ、または、動きまたは姿勢を検出可能な複数のセンサを利用
するゲーム装置において、プレイ中の動きの自由度が高くダイナミックなプレイを可能と
し、さらに直感的な動作入力を可能とすること。
【解決手段】コントローラの第1ユニットに設けられた第1加速度センサの出力に基づい
て第1ユニットの傾きを検出し、第1ユニットとは独立した第2ユニットに設けられた第
2加速度センサの出力に基づいて第2ユニットの傾きを検出する。そして、検出された第
1ユニットの傾きと第2ユニットの傾きの差分を検出し、検出された差分を用いてゲーム
制御を行う。
【選択図】図9

Description

本発明は複数の加速度センサ、または、動きまたは姿勢を検出可能な複数のセンサによ
ってゲーム制御を行うゲームプログラム及びゲーム装置に関する。
特許文献1には、1つのハウジング内に2つの加速度センサ(異なる軸の加速度を計測
したり、直線と回転を計測する)を設けることが開示されている。
特許文献2には、2つの加速度センサでそれぞれ異なるゲーム入力を行う技術が開示さ
れている。
特許文献3には、コントローラとして2つのレバーを用いる技術が開示されている。
特許文献4には、ニュートラルポジションの設定に関する技術が開示されている。
特開平10−21000号公報 特開2002−153673号公報 特開平6−277363号公報 特開2001−170358号公報
しかしながら、特許文献1の技術だと、両手の動きが固定され、ゲームプレイ中のプレ
イヤの動きの自由度が少ない(ダイナミックなプレイができない)という問題がある。
また、特許文献2の技術だと、2つの加速度センサによる入力が独立した入力としてゲ
ームで利用されるだけであり、興趣性のある操作感は得られない。
また、特許文献3の技術だと、ゲームプレイ中のプレイヤの動きの自由度が少ないとい
う問題がある。
また、特許文献4の技術だと、1つのセンサに関するものであり、複数のセンサを備え
たシステムにおけるニュートラルポジションの設定について開示するものではない。
また、これらの技術はいずれも、センサによる複数の方向の動きの検出を有効に利用し
たものではない。
本発明は、上記のうちの少なくともいずれか1つを課題とする。
本発明は、下記のうち少なくとも1つを目的とする。
(1)複数の加速度センサ、または動きまたは姿勢を検出可能な複数のセンサによってゲ
ーム制御を行う際に、ゲームプレイ中のプレイヤの動きの自由度が高く、ダイナミックな
入力操作を可能とするゲームプログラム及びゲーム装置を提供すること
(2)複数のセンサによってゲーム制御を行なう場合のニュートラルポジションを適切に
設定することを可能にするゲームプログラム及びゲーム装置を提供すること
(3)動きを検出可能なセンサによる複数の方向の動きの検出を有効に利用したゲームプ
ログラム及びゲーム装置を提供すること
上記目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号
は本発明の理解を助けるために図面との対応関係の一例を示したものであって、本発明の
範囲を何ら限定するものではない。
本発明の一実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた加速度センサまたはジャイロセンサである第1セ
ンサ(701)と、前記第1ハウジングとは独立した第2ハウジング(77)に設けられ
た加速度センサまたはジャイロセンサである第2センサ(761)の出力を利用してゲー
ム制御を行うためのゲームプログラムであって、ゲーム装置(3)のコンピュータ(30
)を、
前記第1センサの出力に基づいて前記第1ハウジングの姿勢を検出する第1姿勢検出手
段(S104)、
前記第2センサの出力に基づいて前記第2ハウジングの姿勢を検出する第2姿勢検出手
段(S108)、
前記第1姿勢検出手段によって検出された前記第1ハウジングの姿勢と、前記第2姿勢
検出手段によって検出された前記第2ハウジングの姿勢の差分を検出する姿勢差分検出手
段(S116)、および
前記姿勢差分検出手段によって検出された差分を用いてゲーム制御を行うゲーム制御手
段(S118)として機能させるためのゲームプログラムである。
上記構成により、プレイヤはプレイ中にそれぞれの手を自由に動かすことができるので
、プレイ中の動きの自由度が高くダイナミックなプレイを許容する。また、姿勢の差分に
より制御するので、直感的な動作入力を許容する。
なお、前記ゲームプログラムは、前記第1姿勢検出手段によって検出された前記第1ハ
ウジングの姿勢と、前記第2姿勢検出手段によって検出された前記第2ハウジングの姿勢
の平均を検出する姿勢平均検出手段(S124)として前記コンピュータをさらに機能さ
せ、
前記ゲーム制御手段は、前記姿勢差分検出手段によって検出された差分および前記姿勢
平均検出手段によって検出された前記平均の両方を用いてゲーム制御を行ってもよい(S
126)。
上記構成により、両手の動きによって自在にゲーム制御可能である。
なお、例えば、差分に基いてゲームオブジェクトの第1動作を制御し、平均に基いて、
当該ゲームオブジェクトの第2動作を制御してもよい。「姿勢の差分」とは、例えば、所
定の軸についての回転角度の差分であってもよいし、各軸についての回転角度の差分であ
ってもよい。
なお、前記ゲーム制御手段は、前記差分検出手段によって検出された前記差分を用いて
ゲームオブジェクトの第1動作を制御する第1動作制御手段(S118)を含み、
前記ゲームプログラムは、前記第1ハウジングまたは前記第2ハウジングに設けられた
スイッチの出力に基づいて前記ゲームオブジェクトの第2動作を制御する第2動作制御手
段(S164)として前記コンピュータをさらに機能させてもよい。
上記構成により、プレイ中の姿勢の自由度が高まる。
なお、前記姿勢を検出するための第1センサ及び第2センサは、加速度センサであり、
前記第1姿勢検出手段および第2姿勢検出手段は、前記第1ハウジングおよび第2ハウ
ジングの傾きを検出するものであり、
前記第1姿勢検出手段は、前記第1センサの出力に基づいて、前記第1ハウジングが静
止しているかどうかを判断する第1ハウジング状態判断手段(S156)を含み、
前記第1姿勢検出手段は、前記第1ハウジング状態判断手段によって前記第1ハウジン
グが静止していると判断された場合に、前記第1センサの出力に基づいて検出される前記
第1ハウジングの傾きを、有効な検出結果として出力し(S158)、
前記第2姿勢検出手段は、前記第2センサの出力に基づいて、前記第2ハウジングが静
止しているかどうかを判断する第2ハウジング状態判断手段(S156)を含み、
前記第2姿勢検出手段は、前記第2ハウジング状態判断手段によって前記第2ハウジン
グが静止していると判断された場合に、前記第2センサの出力に基づいて検出される前記
第2ハウジングの傾きを、有効な検出結果として出力してもよい(S158)。
上記構成により、プレイ中の不意の動きによるセンサ出力を確実に排除できる。
なお、ハウジング状態判断手段は、例えば、加速度センサの出力ベクトルの大きさが、
当該加速度センサが重力のみを検出する場合の出力ベクトルの大きさとほぼ一致する(あ
る程度余裕をみてもよい)場合に、静止していると判断する。
なお、前記ゲーム制御手段は、前記第1ハウジング状態判断手段によって前記第1ハウ
ジングが静止していると判断され、かつ、前記第2ハウジング状態判断手段によって前記
第2ハウジングが静止していると判断されたときのみ、前記姿勢差分検出手段によって検
出された差分を用いてゲーム制御を行ってもよい。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた加速度センサまたはジャイロセンサである第1セ
ンサ(701)と、前記第1ハウジングとは独立した第2ハウジング(77)に設けられ
た加速度センサまたはジャイロセンサである第2センサ(761)の出力を利用してゲー
ム処理を行うためのゲームプログラムであって、ゲーム装置(3)のコンピュータ(30
)を、
前記第1センサの出力に基づいて、ゲーム制御用ベクトルの方向を決定する方向決定手
段(S410)、
前記第2センサの出力に基づいて、前記ゲーム制御用ベクトルの大きさを決定する大き
さ決定手段(S414)、および
前記ベクトル方向決定手段および前記ベクトル大きさ決定手段によって決定された前記
ゲーム制御用ベクトルを用いてゲーム制御を行うゲーム制御手段(S418)として機能
させるためのゲームプログラムである。
上記構成により、プレイ中にそれぞれの手を自由に動かすことができるので、プレイ中
の動きの自由度が高くダイナミックなプレイを許容する。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた動きを検出可能な第1センサ(701)と、前記
第1ハウジングとは独立した第2ハウジング(77)に設けられた動きを検出可能な第2
センサ(761)の出力を利用してゲーム処理を行うためのゲームプログラムであって、
ゲーム装置(3)のコンピュータ(30)を、
前記第1センサの出力に基づいて前記第1ハウジングの動きを検出する第1動き操作検
出手段(S236)、
前記第2センサの出力に基づいて前記第2ハウジングの動きを検出する第2動き操作検
出手段(S250)、
前記第1動き操作検出手段および前記第2動き操作検出手段の検出結果に基づいて、前
記第1ハウジングの動き検出に関連して決定されるタイミングから同時入力受付時間以内
に前記第2ハウジングの動き検出があったかどうかを検出する同時入力検出手段(S25
4)、および
前記第1ハウジングの動き検出があってから同時入力受付時間以内に前記第2ハウジン
グの動き検出があったことを前記同時入力検出手段が検出したときに第1ゲーム処理を実
行するゲーム制御手段(S256)として機能させるためのゲームプログラムである。
上記構成により、同時の動き操作をゲーム入力に利用することができる(同時の動き操
作のタイミング差を許容する)。
なお、同時入力受付時間は、第1ハウジングの動き検出に関連して決定されるタイミン
グからの所定時間であって、一定時間であってもよいし、ゲーム状況やレベルなどに応じ
て変化してもよい。「動き検出に関連して決定されるタイミング」とは、動き検出の対象
となった動き入力における所定のタイミングであり、例えば、当該動き検出があった時点
や、当該動き検出に係る動きにおける所定時点(例えば、当該動きの開始点や終了点や所
定の中間点など)が挙げられる。
さらに、同時入力検出手段が、第1動き操作検出手段および第2動き操作検出手段の検
出結果に基づいて、第2ハウジングの動き検出があってから同時入力受付時間以内に第1
ハウジングの動き検出があったかどうかを検出し、第2ハウジングの動き検出があってか
ら同時入力受付時間以内に第1ハウジングの動き検出があったことを同時入力検出手段が
検出したときに第1ゲーム処理を実行するようにしてもよい。
なお、前記ゲーム制御手段は、前記第1動き操作検出手段によって前記第1ハウジング
の動き検出があってから、同時入力受付時間以内に前記第2ハウジングの動き検出があっ
たことが前記同時入力検出手段によって検出されなかった場合には、前記第1ゲーム処理
とは異なる第2ゲーム処理を実行してもよい(S216)。
上記構成により、同時の動き操作とともに片方の動き操作をゲーム入力に利用すること
ができる。
なお、ゲーム制御手段は、さらに、第2動き操作検出手段によって第2ハウジングの動
き検出があってから、同時入力受付時間以内に第1ハウジングの動き検出があったことが
同時入力検出手段によって検出されなかった場合には、第1ゲーム処理および第2ゲーム
処理とは異なる第3ゲーム処理を実行してもよい。
なお、前記ゲーム制御手段は、前記同時入力受付時間内に前記第2ハウジングの動き検
出があったことが前記同時入力検出手段によって検出されたときには、前記第1ゲーム処
理を実行し、前記同時入力受付時間内に前記第2ハウジングの動き検出があったことが前
記同時入力検出手段によって検出されることなく前記同時入力受付時間が経過した時点で
、前記第2ゲーム処理を実行してもよい。
なお、前記第1動き操作検出手段は、前記第1ハウジングの動き検出に関連して決定さ
れるタイミングから受付禁止時間が経過するまでは、当該第1ハウジングの動き検出を新
たに検出せず、
前記第2動き操作検出手段は、前記第2ハウジングの動き検出があったことを検出して
から受付禁止時間が経過するまでは、当該第2ハウジングの動き検出を新たに検出しない
ようにしてもよい。
上記構成により、一度の動き操作によりしばらくの間は入力が続いてしまう問題を解決
できる。
なお、受付禁止時間は、ハウジングの動き検出に関連して決定されるタイミングからの
所定時間であり、一定時間であってもよいし、ゲーム状況やレベルなどに応じて変化して
もよい。
なお、前記第1ハウジングおよび前記第2ハウジングのいずれか一方の動き検出があっ
てから所定時間以内に他方の動き検出があったことを前記同時入力検出手段による同時入
力検出に関連して決定されるタイミングから同時入力後受付禁止時間が経過するまでは、
前記第1動き操作検出手段および前記第2動き操作検出手段は、前記第1ハウジングおよ
び前記第2ハウジングの動き検出を新たに検出しないようにしてもよい。
上記構成により、両方が入力できない状態になったときに、再度入力を許容するタイミ
ングをあわせる
なお、同時入力後受付禁止時間は、同時入力検出手段による同時入力検出に関連して決
定されるタイミングからの所定時間であり、一定時間であってもよいし、ゲーム状況やレ
ベルなどに応じて変化してもよい。また、受付禁止時間と同一時間であってもよいし、そ
れより長い時間であってもよい。「同時入力検出に関連して決定されるタイミング」とは
、同時入力検出の対象となった入力における所定タイミングであり、例えば、当該同時入
力検出があった時点や、当該同時入力検出に係る入力における所定時点(例えば、当該同
時入力の開始点や終了点や所定の中間点など)が挙げられる。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた動きを検出可能な第1センサ(701)と、前記
第1ハウジングとは独立した第2ハウジング(77)に設けられた動きを検出可能な第2
センサ(761)の出力を利用してゲーム処理を行うためのゲームプログラムであって、
ゲーム装置(3)のコンピュータ(30)を、
前記第1センサの出力に基づいて前記第1ハウジングの動きおよびその強さを検出する
第1動き検出手段(S236)、
前記第2センサの出力に基づいて前記第2ハウジングの動きおよびその強さを検出する
第2動き検出手段(S250)、
前記第1動き検出手段および前記第2動き検出手段の検出結果に基づいて、前記第1ハ
ウジングの動き検出に関連して決定されるタイミングから同時入力受付時間以内に前記第
2ハウジングの動き検出があったかどうかを検出する同時入力検出手段(S254)、お
よび
前記第1ハウジングの動き検出に関連して決定されるタイミングから同時入力受付時間
以内に前記第2ハウジングの動き検出があったことを前記同時入力検出手段が検出したと
きに、前記第1動き検出手段によって検出された前記第1ハウジングの動きの強さと、前
記第2動き検出手段によって検出された前記第2ハウジングの動きの強さを利用して第1
ゲーム処理を実行するゲーム制御手段(S256)として機能させるためのゲームプログ
ラムである。
上記構成により、同時の動き操作かつ動きの大きさを利用したゲーム入力に利用するこ
とができる(同時の動き操作のタイミング差を許容する)。
なお、さらに、同時入力検出手段が、第1動き検出手段および第2動き検出手段の検出
結果に基づいて、第2ハウジングの動き検出に関連して決定されるタイミングから同時入
力受付時間以内に第1ハウジングの動き検出があったかどうかを検出し、第2ハウジング
の動き検出に関連して決定されるタイミングから同時入力受付時間以内に第1ハウジング
の動き検出があったことを同時入力検出手段が検出したときに、第1動き検出手段によっ
て検出された第1ハウジングの動きの強さと、第2動き検出手段によって検出された第2
ハウジングの動きの強さを利用して第1ゲーム処理を実行するようにしてもよい。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた動きを検出可能な第1センサ(701)と、前記
第1ハウジングとは独立した第2ハウジング(77)に設けられた動きを検出可能な第2
センサ(761)の出力を利用してゲーム処理を行うためのゲームプログラムであって、
ゲーム装置(3)のコンピュータ(30)を、
前記第1センサの出力に基づいて前記第1ハウジングの動きを検出する第1動き操作検
出手段(S302)、
前記第2センサの出力に基づいて前記第2ハウジングの動きを検出する第2動き操作検
出手段(S318)、
前記第1動き操作検出手段および前記第2動き操作検出手段の検出結果に基づいて、前
記第1ハウジングの動き操作が行われたときに、当該動き操作から過去一定時間以内に前
記第2ハウジングの動き操作が行われていたかどうかを検出する同時入力検出手段(S3
12)、および
(a)前記第1ハウジングの動き操作が行われたときに、当該動き操作から過去一定時
間以内に前記第2ハウジングの動き操作が行われていたことが前記同時入力検出手段によ
って検出された場合にはゲームオブジェクトに第1動作を行わせ、(b)前記第1ハウジ
ングの動き操作が行われたときに、当該動き操作から過去一定時間以内に前記第2ハウジ
ングの動き操作が行われていたことが前記同時入力検出手段によって検出されなかった場
合には前記ゲームオブジェクトに前記第1動作とは異なる第2動作を行わせるゲーム制御
手段(S314、S316)として機能させるためのゲームプログラムである。
上記構成により、同時の動き操作を利用したゲーム入力に利用することができる(同時
の動き操作のタイミング差を許容する)。
なお、同時入力検出手段は、第1動き操作検出手段および第2動き操作検出手段の検出
結果に基づいて、第2ハウジングの動き操作が行われたときに、当該動き操作から過去一
定時間以内に第1ハウジングの動き操作が行われていたかどうかを検出し、検出された場
合に第1動作を行なわせ、検出されなかった場合に第3動作を行わせるようにしてもよい
。また、第1動き操作検出手段または第2動き操作検出手段によって第1ハウジングまた
は第2ハウジングの動きが検出されるごとに、同時入力検出手段による検出をおこなって
、第1動作または第2動作もしくは第3動作をおこなわせるようにしてもよい。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた傾きを検出可能な第1センサ(701)と、前記
第1ハウジングとは独立した第2ハウジング(77)に設けられた傾きを検出可能な第2
センサ(761)の出力を利用してゲーム制御を行うためのゲームプログラムであって、
ゲーム装置(3)のコンピュータ(30)を、
プレイヤからの基準値設定指示を検出する基準値設定指示検出手段(S134)、
前記基準値設定指示検出手段によって基準値設定指示が検出されたときに、前記第1戦
差の出力値および/または前記第2センサの出力値に基づいて、第1基準値および第2基
準値を設定する基準値設定手段(S146)、
前記第1センサの出力および前記第1基準値に基いて前記第1ハウジングの姿勢を検出
する第1姿勢検出手段(S104、S112)、
前記第2センサの出力および前記第2基準値に基いて前記第2ハウジングの姿勢を検出
する第2姿勢検出手段(S108、S114)、
前記第1姿勢検出手段による第1ハウジングの姿勢と、前記第2姿勢検出手段による第
2ハウジングの姿勢の差分を検出する姿勢差分検出手段(S116)、および
前記姿勢差分検出手段によって検出された差分を用いてゲーム制御を行うゲーム制御手
段(S118)として機能させるためのゲームプログラムである。
上記構成により、2つの傾きセンサを利用したゲームでプレイヤが好きな姿勢でプレイ
できる。
なお、基準値設定手段は、センサの出力値自体を基準値として設定してもよいし、当該
出力地から傾き値を演算した結果を基準値として設定してもよい。第1基準値と第2基準
値が同一値の場合には、1つのデータを記憶するのみでもよい。
なお、前記基準値設定手段は、前記基準値設定指示検出手段によって単一の前記基準値
設定指示が検出されたことに応じて、同一タイミングで、前記第1基準値および前記第2
基準値を一度に設定してもよい。
上記構成により、差分がないのにゲーム入力されることを防ぐができる。
なお、前記基準値設定手段は、前記基準値設定指示検出手段によって基準値設定指示が
検出されたときに、前記第1センサの出力値と、前記第2センサの出力値とに基く所定の
演算をした値を、前記第1基準値および前記第2基準値として共通に設定してもよい。
上記構成により、差分がないのにゲーム入力されることを防ぐ
なお、所定の演算は例えば平均である。第1ハウジングと第2ハウジングの大きさや形
状、操作部の有無、左手用か右手用かなどに応じて重み付けをしてもよい。
なお、前記基準値設定手段は、前記基準値設定指示検出手段によって基準値設定指示が
検出されたときに、前記第1センサまたは前記第2センサのいずれか一方の出力値に基く
値を、前記第1基準値および前記第2基準値として共通に設定してもよい。
上記構成により、差分がないのにゲーム入力されることを防ぐ
なお、前記第1ハウジングおよび/または前記第2ハウジングには、プレイヤが前記基
準値設定指示を入力するためのスイッチが設けられており、
前記基準値設定手段は、前記基準値設定指示検出手段によって基準値設定指示が検出さ
れたときに、前記第1ハウジングおよび前記第2ハウジングのうち、当該基準値設定指示
の入力に用いられたスイッチが設けられてない方のハウジングに設けられたセンサの検出
値に基いて、前記第1基準値および前記第2基準値を共通に設定してもよい。
上記構成により、ボタンによるぶれの影響をなくす
なお、前記基準値設定手段は、前記基準値設定指示検出手段によって基準値設定指示が
検出されたときに、前記第1センサの出力値と前記第2センサの出力値に基づいて前記第
1ハウジングと前記第2ハウジングの傾きの差分が一定範囲内か否かを判断する基準値設
定時差分検出手段(S148)を含み、
前記基準値設定手段は、(a)前記基準値設定時差分検出手段によって一定範囲内であ
ると判断された場合には、前記第1センサの出力値および前記第2センサの出力値に基い
て、第1基準値および第2基準値をそれぞれ設定し、(b)前記基準値設定時差分検出手
段によって一定範囲内でないと判断された場合にはエラー処理を行ってもよい。
上記構成により、差分がないのにゲーム入力されることを防ぐ
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた加速度センサまたはジャイロセンサである第1セ
ンサ(701)と、前記第1ハウジングとは独立した第2ハウジング(77)に設けられ
た加速度センサまたはジャイロセンサである第2センサ(761)の出力を利用してゲー
ム制御を行うためのゲームプログラムであって、ゲーム装置(3)のコンピュータ(30
)を、
前記第1センサの出力に基づいてゲームオブジェクトの姿勢を制御する姿勢制御手段(
S410)、および
前記第2センサの出力に基づいて前記ゲームオブジェクトの移動を制御する移動制御手
段(S416)として機能させるためのゲームプログラムである。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた少なくとも2軸方向の動きを検出可能な第1セン
サ(701)と、前記第1ハウジングとは独立した第2ハウジング(77)に設けられた
少なくとも2軸方向の動きを検出可能な第2センサ(761)の出力を利用してゲーム制
御を行うためのゲームプログラムであって、ゲーム装置(3)のコンピュータ(30)を

前記第1センサの出力に基づいて前記第1ハウジングが動いた方向を示す第1動き方向
を検出する第1動き方向検出手段(S542)、
前記第2センサの出力に基づいて前記第2ハウジングが動いた方向を示す第2動き方向
を検出する第2動き方向検出手段(S570)、
前記第1動き方向検出手段によって検出された前記第1動き方向と、前記第2動き方向
検出手段によって検出された前記第2動き方向とを合成することによって合成方向を決定
する合成方向決定手段(S552)、および
前記合成方向決定手段によって決定された前記合成方向を用いてゲーム制御を行うゲー
ム制御手段(S554)として機能させるためのゲームプログラムである。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた動きを検出するための第1センサ(701)と、
前記第1ハウジングとは独立した動きを検出するための第2ハウジング(77)に設けら
れた第2センサ(761)の出力を利用してゲーム処理を行うためのゲームプログラムで
あって、ゲーム装置(3)のコンピュータ(30)を、
前記第1センサの出力に基づいて前記第1ハウジングの動きの強さを検出する第1強さ
検出手段(S542)、
前記第2センサの出力に基づいて前記第2ハウジングの動きの強さを検出する第2強さ
検出手段(S570)、
前記第1強さ検出手段によって検出された前記第1ハウジングの動きの強さと、前記第
2強さ検出手段によって検出された前記第2ハウジングの動きの強さとを合成することに
よって合成強さを決定する合成強さ決定手段(S552)、および
前記合成強さ決定手段によって決定された前記合成強さを用いてゲーム制御を行うゲー
ム制御手段(S554)として機能させるためのゲームプログラムである。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた少なくとも2軸方向の動きを検出可能な第1セン
サ(701)と、前記第1ハウジングとは独立した第2ハウジング(77)に設けられた
少なくとも2軸方向の動きを検出可能な第2センサ(761)の出力を利用してゲーム制
御を行うためのゲームプログラムであって、ゲーム装置(3)のコンピュータ(30)を

前記第1センサの出力に基づいて前記第1ハウジングが動いた方向を示す第1動き方向
を検出する第1動き方向検出手段(S542)、
前記第2加速度センサの出力に基づいて前記第2ハウジングが動いた方向を示す第2動
き方向を検出する第2動き方向検出手段(S570)、
前記第1動き方向検出手段によって検出された前記第1動き方向と、前記第2動き方向
検出手段によって検出された前記第2動き方向とが所定の関係を満たすかどうかを判定す
る動き方向関係判定手段(S550)、および
前記動き方向関係判定手段によって前記第1動き方向と前記第2動き方向が前記所定の
関係を満たすと判定されたときに、前記第1ハウジングおよび前記第2ハウジングの少な
くとも一方のハウジングの動き方向および/または動き強さに基づいてゲーム制御を行う
ゲーム制御手段(S552)として機能させるためのゲームプログラムである。
なお、動き方向関係判定手段は、例えば、第1動き方向と第2動き方向が略一致するこ
とを判定してもよいし、略反対方向であることを判定してもよいし、所定の角度をなすこ
となどを判定してもよい。また、2次元の方向(所定の2つの方向成分)を比較してもよ
いし、3次元の方向を比較しても良い。
また、ゲーム制御手段は、動き方向関係判定手段により所定の関係を満たすと判定され
たときに、第1ハウジングまたは第2ハウジングのいずれか一方の動き方向に基いてゲー
ム制御をおこなってもよいし、両方の動き方向に基いて(例えば、加算や平均などの所定
演算をして)、ゲーム制御をおこなっても良い。また、動き方向ではなく動き強さに基い
てもよいし、動き方向と動き強さの両方に基いてゲーム制御をおこなってもよい。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた少なくとも2軸方向の動きを検出可能な第1セン
サ(701)と、前記第1ハウジングとは独立した第2ハウジング(77)に設けられた
少なくとも2軸方向の動きを検出可能な第2センサ(761)の出力を利用してゲーム制
御を行うためのゲームプログラムであって、ゲーム装置(3)のコンピュータ(30)を

前記第1センサの出力に基づいて前記第1ハウジングの動きを検出する第1動き操作検
出手段(S542)、
前記第2センサの出力に基づいて前記第2ハウジングの動きを検出する第2動き操作検
出手段(S570)、
前記第1動き操作検出手段および前記第2動き操作検出手段の検出結果に基づいて、前
記第1ハウジングの動き検出のタイミングと、前記第2ハウジングの動き検出のタイミン
グとが所定の関係を満たすかどうかを判定する動きタイミング関係判定手段(S548)
、および
前記動きタイミング関係判定手段によって前記第1ハウジングの動き検出のタイミング
と前記第2ハウジングの動き検出のタイミングが前記所定の関係を満たすと判定されたと
きに、前記第1ハウジングおよび前記第2ハウジングの少なくとも一方のハウジングの動
き方向および/または動き強さに基づいてゲーム制御を行うゲーム制御手段(S552)
として機能させるためのゲームプログラムである。
なお、動きタイミング関係判定手段は、例えば、第1動きタイミングと第2動きタイミ
ングが略一致することを判定してもよいし、所定間隔であることなどを判定してもよい。
また、ゲーム制御手段は、動きタイミング関係判定手段により所定の関係を満たすと判定
されたときに、第1ハウジングまたは第2ハウジングのいずれか一方の動き方向に基いて
ゲーム制御をおこなってもよいし、両方の動き方向に基いて(例えば、加算や平均などの
所定演算をして)、ゲーム制御をおこなっても良い。また、動き方向ではなく動き強さに
基いてもよいし、動き方向と動き強さの両方に基いてゲーム制御をおこなってもよい。
なお、前記ゲーム制御手段は、前記第1ハウジングおよび前記第2ハウジングの両方の
ハウジングの動き方向および/または動き強さに基づいてゲーム制御を行ってもよい。
なお、前記ゲーム制御手段は、前記第1ハウジングおよび前記第2ハウジングの両方の
ハウジングの動き方向および動き強さに基づいてゲーム制御を行ってもよい。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた少なくとも2軸方向の動き検出可能な第1センサ
(701)と、前記第1ハウジングとは独立した第2ハウジング(77)に設けられた少
なくとも2軸方向の動きを検出可能な第2センサ(761)の出力を利用してゲーム制御
を行うためのゲームプログラムであって、ゲーム装置(3)のコンピュータ(30)を、
前記第1センサの出力に基づいて前記第1ハウジングが動いた方向を示す第1動き方向
を検出する第1動き方向検出手段(S542)、
前記第2センサの出力に基づいて前記第2ハウジングが動いた方向を示す第2動き方向
を検出する第2動き方向検出手段(S570)、
前記第1動き方向検出手段によって検出された前記第1動き方向と、前記第2動き方向
検出手段によって検出された前記第2動き方向とが所定の関係を満たすかどうかを判定す
る動き向関係判定手段(S550)、および
前記動き方向関係判定手段によって前記第1動き方向と前記第2動き方向が前記所定の
関係を満たすと判定されたときに、ゲームオブジェクトに特定の動作を行わせるゲーム制
御手段(554)として機能させるためのゲームプログラムである。
なお、動き方向関係判定手段は、例えば、第1動き方向と第2動き方向が略一致するこ
とを判定してもよいし、略反対方向であることを判定してもよいし、所定の角度をなすこ
となどを判定してもよい。また、動き方向関係判定手段によって第1動き方向と第2動き
方向との関係が複数の候補のうちのどの関係かを判定し、当該判定に応じて複数の特定の
動作のうちから1つの特定の動作を決定してもよい。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた動きを検出するための第1センサ(701)と、
前記第1ハウジングとは独立した第2ハウジング(77)に設けられた動きを検出するた
めの第2センサ(761)の出力を利用してゲーム制御を行うためのゲームプログラムで
あって、ゲーム装置(3)のコンピュータ(30)を、
前記第1センサの出力に基づいて前記第1ハウジングの動きおよびその強さを検出する
第1動き操作検出手段(S236)、
前記第2センサの出力に基づいて前記第2ハウジングの動きおよびその強さを検出する
第2動き操作検出手段(S250)、
前記第1動き操作検出手段および前記第2動き操作検出手段の検出結果に基づいて、前
記第1ハウジングの動き検出のタイミングと、前記第2ハウジングの動き検出のタイミン
グとが所定の関係を満たすかどうかを判定する動きタイミング関係判定手段(S240)
、および
前記動きタイミング関係判定手段によって前記第1ハウジングの動き検出のタイミング
と前記第2ハウジングの動き検出のタイミングが前記所定の関係を満たすと判定されたと
きに、ゲームオブジェクトに特定の動作を行わせるゲーム制御手段(S242)として機
能させるためのゲームプログラムである。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた少なくとも2軸方向の動きを検出可能な第1セン
サ(701)と、前記第1ハウジングとは独立した第2ハウジング(77)に設けられた
少なくとも2軸方向の動きを検出可能な第2センサ(761)の出力を利用してゲーム制
御を行うためのゲームプログラムであって、ゲーム装置(3)のコンピュータ(30)を

前記第1センサの出力に基づいて前記第1ハウジングが動いた方向を示す第1動き方向
を検出する第1動き方向検出手段(S748)、
前記第2センサの出力に基づいて前記第2ハウジングが動いた方向を示す第2動き方向
を検出する第2動き方向検出手段(S782)、
前記第1動き方向検出手段によって検出された前記第1動き方向が第1範囲内であり、
かつ前記第2動き方向検出手段によって検出された前記第2動き方向が第2範囲内である
ときに、前記第1動き方向と前記第2動き方向に基づいてゲーム制御を行うゲーム制御手
段(S752、S786、S758)として機能させるためのゲームプログラムである。
なお、第1範囲と第2範囲は重複しない範囲としてもよいし、一部重複する範囲として
もよいが、完全には一致しない範囲である。
本発明の他の実施例に係るゲームプログラムは、
第1ハウジング(71)に設けられた動きまたは姿勢を検出可能な第1センサ(701
)と、前記第1ハウジングとは独立した第2ハウジング(77)に設けられた動きまたは
姿勢を検出可能な第2センサ(761)の出力を利用してゲーム制御を行うためのゲーム
プログラムであって、ゲーム装置(3)のコンピュータ(30)を、
前記第1センサの出力に基づいて第1ゲーム処理を実行する第1ゲーム制御手段(S4
10)、
前記第2センサの出力に基づいて第2ゲーム処理を実行する第2ゲーム制御手段(S4
16)、および
プレイヤの指示に応じて、前記第1ゲーム制御手段が前記第1ゲーム処理のために参照
するセンサを前記第1センサから前記第2センサに変更し、かつ前記第2ゲーム制御手段
が前記第2ゲーム処理のために参照するセンサを前記第2センサから前記第1センサに変
更する参照センサ交換手段(S404)として機能させるためのゲームプログラムである
本発明の他の実施例に係るゲームプログラムは、
少なくとも、第1軸、第2軸の2軸方向の動きを検出可能なセンサ(701)の出力を
利用してゲーム制御を行うためのゲームプログラムであって、ゲーム装置(3)のコンピ
ュータ(30)を、
前記センサの前記第1軸方向の動きを検出する動き検出手段(S742)、および
前記動き検出手段によって前記第1軸方向の動きが検出されたときに、当該検出に関連
して決定される時点または期間において出力された前記センサの前記第2軸方向の出力に
基いてゲーム制御を行うゲーム制御手段(S718)として機能させるためのゲームプロ
グラムである。
なお、「検出に関連して決定される時点または期間」とは、以下が考えられる。なお、
第1軸方向の動き入力と第2軸方向の動き入力との連続性を保つために、第1軸方向の動
き入力における所定時点から所定時間以上離れない時点または期間とするのが好ましい。
(1)検出の対象となった第1軸方向の動き入力における所定時点を基準として決定され
る時点または期間(「検出の対象となった第1軸方向の動き入力における所定時点」は、
当該第1軸方向の動きが検出された時点や、当該動き入力の開始点や終了点や所定の中間
点など))
(2)検出の対象となった第1軸方向の動き入力における所定時点を基準として決定され
る期間内に第2軸方向の動きが検出されたときに当該第2軸方向の動きにおける所定時点
または所定期間
上記(1)には以下が考えられる
(a)第1軸方向の動き入力における所定時点(以下第1時点)と同一の時点
(b)第1時点より所定時間だけ前の時点
(c)第1時点より所定時間だけ後の時点
(d)[第1時点より所定時間だけ前〜第1時点]の期間
(e)[第1時点〜第1時点より所定時間だけ後の時点]の期間
(f)[第1時点より第1時間だけ前の時点〜第1時点より第2時間だけ前の時点]の期
間(第1時間>第2時間)
(g)[第1時点より第1時間だけ後の時点〜第1時点より第2時間だけ後の時点]の期
間(第1時間<第2時間)
(h)[第1時点より第1時間だけ前の時点〜第1時点より第2時間だけ後の時点]の期
上記(2)について、動き検出手段が「振り動作」を検出する場合、上記(a)〜(h
)のような時点または期間において、第2軸における振りが検出されるか否かを検出して
、当該検出があったときには、当該第2軸における振りの期間(振り開始から終了まで[
加速度の立ち上がり→最大→0→反対方向の加速度検出→反対方向最大→0]、または、
その一部[例えば、加速度の立ち上がり→最大→0の期間、または、反対方向の加速度検
出→反対方向最大→0までの期間)としてもよい。
なお、第1時点より前の時点または期間とする場合は、第2軸方向への入力をした後、
第1軸方向への入力をすることにより、当該第2軸方向への入力を有効にするという入力
方法となり(第2軸方向への入力をした場合であってもその後第1軸方向への入力をしな
い場合には、当該第2軸方向への入力は有効な入力とならない)、第1時点より後の時点
または期間とする場合は、第1軸方向への入力をした後、第2軸方向への入力を受け付け
るという入力方法となる(第2軸方向への入力をした場合であってもその前に第1軸方向
への入力をしていない場合には、当該第2軸方向への入力は有効な入力とならない)。ま
た、第1時点をまたぐ期間とする場合には、第1軸方向への入力により有効入力であるこ
とを示しつつ第2軸方向の入力をおこなうという入力方法となる(第1軸方向への入力を
しながら第2軸方向への入力をしない場合は、当該第2軸方向への入力は有効とならない
)。
「出力された前記加速度センサの前記第2軸方向の出力に基いてゲーム制御を行う」に
ついて、期間による場合は、その期間内の、第2軸方向の出力の合計/平均(加重平均も
可)/最大値/積分などを利用する、あるいは、その期間内の連続する出力の差分を利用
するなどが考えられる。
本発明の他の実施例に係るゲームプログラムは、
第1軸、第2軸、第3軸の3軸方向の動きを検出可能なセンサ(701)の出力を利用
してゲーム制御を行うためのゲームプログラムであって、ゲーム装置(3)のコンピュー
タ(30)を、
前記センサの前記第1軸方向の動きを検出する動き検出手段(S742)、および
前記動き検出手段によって前記第1軸方向の動きが検出されたときに、当該検出された
時点を基準として決定される時点または期間において出力された前記センサの前記第2軸
方向の出力と前記第3軸方向の出力により示される方向を用いてゲーム制御を行うゲーム
制御手段(S718)として機能させるためのゲームプログラムである。
なお、前記ゲーム制御手段は、前記動き検出手段によって前記第1軸方向の動きが検出
されたときに、当該検出された時点を基準として決定される時点または期間において出力
された前記センサの前記第2軸方向の出力に加えて、当該第1軸方向の動きに係る前記セ
ンサの前記第1軸方向の出力の大きさを用いてゲーム制御を行ってもよい。
なお、前記ゲーム制御手段は、前記動き検出手段によって前記第1軸方向の動きが検出
されたときに、当該検出された時点を基準として決定される時点または期間における、第
2軸方向の動きの有無を検出し(S750)、第2軸方向の動きが検出されたときに、当
該第2軸方向の出力を用いてゲーム制御を行ってもよい。
なお、「姿勢を検出可能なセンサ」とは、加速度センサ、ジャイロセンサなど、姿勢を
検出可能なセンサであり、さらに言えば、自ら(自らが設けられるハウジング)の姿勢を
検出可能なセンサである。また、「姿勢」とは、代表的には、傾き(重力方向に対する傾
き;言い換えると、水平軸を中心とする回転角度)であるが、水平軸以外の軸を中心とす
る回転角度などであってもよい。
また、「傾きを検出可能なセンサ」とは、加速度センサなど、傾きを検出可能なセンサ
であり、さらに言えば、自ら(自らが設けられるハウジング)の傾きを検出可能なセンサ
である。
また、「動きを検出可能なセンサ」とは、加速度センサ、ジャイロセンサなど、動きを
検出可能なセンサであり、さらに言えば、自ら(自らが設けられるハウジング)の動きを
検出可能なセンサである。
また、「動き操作検出手段」は、ハウジングが単に動いたことを検出してもよいし、ハ
ウジングが所定の動き(例えば振りなど)をしたことを検出してもよい。
ここで、加速度センサは、加速運動や重力加速度の影響を受けて、各センシング軸方向
の直線成分の加速度を軸毎に検出する。一方、ジャイロスコープは、回転にともなう角速
度を検出する。加速度センサは、当該加速度センサの軸心周りに回転させても、重力加速
度以外の各軸ごとの加速度は検出することができない。一方、ジャイロスコープは、回転
を伴わない直線的な加速を検出することができない。従って、加速度センサをジャイロス
コープに、ジャイロスコープを加速度センサに単に置換しただけでは、同一の機能を実現
することができない。一方、加速度センサとジャイロスコープの違いを吸収するための複
雑な処理を付加することで、加速度センサをジャイロスコープ、ジャイロスコープを加速
度センサに置き換えて利用することもできる。
加速度センサは、各軸に沿った直線成分の加速度を検出しており、回転や傾きを直接検
出することはできない。このため、加速度センサを搭載したデバイスの姿勢の回転や傾き
は、加速度センサの各軸ごとに検出される加速度に所定の演算処理を施すことによって算
出している。例えば、加速度センサが静止した状態においては、常に重力加速度が加わっ
ているので、その重力加速度に対する各軸の傾き応じた加速度が各軸ごとに検出される。
具体的には、加速度センサが水平状態で静止しているとき、加速度センサのy軸に1Gの
重力加速度が加わり、他の軸の重力加速度はほぼ0となる。次に、加速度センサの姿勢が
水平状態より傾くと、加速度センサの各軸方向と重力方向と角度に応じて、重力加速度が
加速度センサの各軸に分散される。このとき、加速度センサの各軸の加速度値が検出され
る。このような各軸ごとの加速度値に演算を加えることにより、重力方向に対する加速度
センサの姿勢を算出することができる。また、回転の場合には、姿勢変化の連続的なもの
と考えられるので、ある時点の姿勢の傾きからある時点の姿勢の傾きのまでを算出するこ
とにより回転角度をソフトウェア処理によって算出することもできる。
一方、例えばジャイロスコープによって有る状態からの姿勢の傾きを算出する場合には
、まずジャイロスコープの検出開始の状態において傾きの値を初期化する。そして、この
時点からの当該ジャイロスコープから出力される角速度データを積分する。さらに、前記
初期化された傾きの値からの傾きの変化量を算出することにより、初期化時点の姿勢に対
する角度を求めることができる。つまり、有る時点を基準とする相対的な角度を求めるこ
とができる。なお、ジャイロスコープを搭載したデバイスの重力方向を基準とする姿勢が
必要な場合には、当該デバイスを重力方向を基準とした状態(例えば水平に保った状態)
で初期化する必要がある。一方、加速度センサを搭載したデバイスの場合には、加速度セ
ンサが重力方向を基準とするため初期化の必要がないというメリットを有する。
本発明によれば、プレイヤはプレイ中にそれぞれの手を自由に動かすことができるので
、プレイ中の動きの自由度が高くダイナミックなプレイを許容する。また、姿勢の差分に
よりゲーム制御するので、直感的な動作入力を許容する。
本発明の一実施形態に係るゲームシステム1を説明するための外観図 ゲーム装置3の機能ブロック図 コントローラ7の外観構成を示す斜視図 コアユニット70の上筐体を外した状態を示す斜視図 サブユニット76の上筐体を外した状態を示す斜視図 コントローラ7の構成を示すブロック図 コントローラ7を用いてゲーム操作するときの状態を概説する図解図 第1の実施形態におけるゲーム画像例 第1の実施形態におけるプレイヤの操作とキャラクタの動作との対応関係の一例を示す図 第1の実施形態におけるメインメモリのメモリマップ 第1の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第1の実施形態におけるニュートラルポジション設定処理の詳細を示すフローチャート 第1の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第1の実施形態における傾き検出の詳細を示すフローチャート 第1の実施形態における向きベクトルの変更方法の一例を示す図 第1の実施形態における操作ユニットの傾きと傾き検出の検出結果との対応関係を示す図 第1の実施形態の変形例におけるプレイヤの操作とキャラクタの動作との対応関係の一例を示す図 第1の実施形態の変形例におけるCPUの処理の流れを示すフローチャート 第2の実施形態におけるゲーム画像例 第2の実施形態におけるプレイヤの操作とキャラクタの動作との対応関係の一例を示す図 第2の実施形態におけるメインメモリのメモリマップ 第2の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第2の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第2の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第2の実施形態における振り強さ検出の詳細を示すフローチャート 第3の実施形態におけるプレイヤの操作とキャラクタの動作との対応関係の一例を示す図 第3の実施形態におけるメインメモリのメモリマップ 第3の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第3の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第3の実施形態における振り操作検出の詳細を示すフローチャート 第4の実施形態におけるプレイヤの操作とキャラクタの動作との対応関係の一例を示す図 第4の実施形態におけるメインメモリのメモリマップ 第4の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第4の実施形態における傾き検出の詳細を示すフローチャート 第4の実施形態における振り操作検出の詳細を示すフローチャート 第4の実施形態における操作ユニットの傾きと傾き検出の検出結果との対応関係を示す図 第4の実施形態における向きベクトルの変更方法の一例を示す図 第5の実施形態におけるプレイヤの操作とキャラクタの動作との対応関係の一例を示す図 第5の実施形態におけるメインメモリのメモリマップ 第5の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第5の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第5の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第5の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第5の実施形態における振り方向検出の詳細を示すフローチャート 第5の実施形態における速度ベクトルの変更方法の一例を示す図 第5の実施形態における速度ベクトルの変更方法の一例を示す図 第6の実施形態におけるプレイヤの操作の一例を示す図 第6の実施形態におけるメインメモリのメモリマップ 第6の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第6の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第6の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第6の実施形態におけるCPUの処理の流れを示すフローチャートの一部 第6の実施形態における振り強さ検出の詳細を示すフローチャート 第6の実施形態における速度ベクトルの変更方法の一例を示す図 第6の実施形態における速度ベクトルの変更方法の一例を示す図 第6の実施形態におけるプレイヤの操作と加速度センサの出力との対応関係を示す図 第6の実施形態におけるプレイヤの操作と加速度センサの出力との対応関係を示す図
図1を参照して、本発明の一実施形態に係るゲームシステム1について説明する。なお
、図1は、当該ゲームシステム1を説明するための外観図である。以下、据置型ゲーム装
置を一例にして、本発明のゲームシステム1について説明する。
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2a
を備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される
据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作
情報を与えるコントローラ7によって構成される。ゲーム装置3は、接続端子を介して受
信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される送信
データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また
、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一
例の光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源
ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を
開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下す
ることによって上記蓋が開き、光ディスク4の脱着が可能となる。
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を
搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光
ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲー
ム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶
されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモ
ニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示さ
れたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽し
むことができる。
コントローラ7は、その内部に備える通信部75(図6参照)から受信ユニット6が接
続されたゲーム装置3へ、例えばBluetooth(ブルートゥース;登録商標)の技
術を用いて送信データを無線送信する。コントローラ7は、2つのコントロールユニット
(コアユニット70およびサブユニット76)が屈曲自在な接続ケーブル79を介して互
いに接続されて構成されており、主にモニタ2に表示されるゲーム空間に登場するプレイ
ヤオブジェクトを操作するための操作手段である。コアユニット70およびサブユニット
76は、それぞれ複数の操作ボタン、キー、およびスティック等の操作部が設けられてい
る。また、後述により明らかとなるが、コアユニット70は、当該コアユニット70から
見た画像を撮像するための撮像情報演算部74(図6参照)を備えている。また、撮像情
報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュー
ル8Lおよび8Rが設置される。これらLEDモジュール8Lおよび8Rは、それぞれモ
ニタ2の前方に向かって赤外光を出力する。なお、本実施例では、コアユニット70とサ
ブユニット76を屈曲自在なケーブルで接続したが、サブユニット76に無線ユニットを
搭載することで、接続ケーブル79をなくすこともできる。例えば、無線ユニットとして
Bluetooth(登録商標)ユニットをサブユニット76に搭載することで、サブユ
ニット76からコアユニット70へ操作データを送信することが可能になる。
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム
装置3の機能ブロック図である。
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)
CPU(セントラルプロセッシングユニット)30を備える。CPU30は、図示しない
ブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期
化等を行った後、光ディスク4に記憶されているゲームプログラムの実行し、そのゲーム
プログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントロー
ラ31を介して、GPU(Graphics Processing Unit)32、
メインメモリ33、DSP(Digital Signal Processor)34
、およびARAM(Audio RAM)35が接続される。また、メモリコントローラ
31には、所定のバスを介して、コントローラI/F(インターフェース)36、ビデオ
I/F37、外部メモリI/F38、オーディオI/F39、およびディスクI/F41
が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ2a、
およびディスクドライブ40が接続されている。
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグ
ラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、
図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理
を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ
映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に
出力する。
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に
必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30に
よって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。この
メインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実
行される。
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデー
タ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続
される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプ
ログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35
に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/
F39を介してモニタ2に備えるスピーカ2aに出力させる。
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種
I/Fが接続される。コントローラI/F36は、例えば4つのコントローラI/Fで構
成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可
能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F
36を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントロー
ラ7からの送信データを受信し、コントローラI/F36を介して当該送信データをCP
U30へ出力する。ビデオI/F37には、モニタ2が接続される。外部メモリI/F3
8には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックア
ップメモリ等とアクセス可能となる。オーディオI/F39にはモニタ2に内蔵されるス
ピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディ
スクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続
される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライ
ブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し
、ゲーム装置3のバスやオーディオI/F39に出力する。
次に、図3を参照して、コントローラ7について説明する。なお、図3は、コントロー
ラ7の外観構成を示す斜視図である。
図3において、コントローラ7は、コアユニット70とサブユニット76とが接続ケー
ブル79で接続されて構成されている。コアユニット70は、ハウジング71を有してお
り、当該ハウジング71に複数の操作部72が設けられている。一方、サブユニット76
は、ハウジング77を有しており、当該ハウジング77に複数の操作部78が設けられて
いる。そして、コアユニット70とサブユニット76とは、接続ケーブル79によって接
続されている。
接続ケーブル79の一方端にはコアユニット70のコネクタ73(図4参照)に着脱自
在なコネクタ791が設けられており、接続ケーブル79の他方端は固定的にサブユニッ
ト76と接続されている。そして、接続ケーブル79のコネクタ791は、コアユニット
70の底面に設けられたコネクタ73と嵌合し、コアユニット70とサブユニット76と
が当該接続ケーブル79を介して接続される。
コアユニット70は、例えばプラスチック成型によって形成されたハウジング71を有
している。ハウジング71は、略直方体形状を有しており、全体として大人や子供の片手
で把持可能な大きさである。
ハウジング71の表面の中央に、方向指示手段である十字キー72aが設けられる。こ
の十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(上下左右)
に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字
キー72aのいずれかの操作部分を押下することによって上下左右いずれかの方向が選択
される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登
場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したり
することができる。なお、十字キー72aの代わりに360°指示可能なジョイスティッ
クを設けても良い。
ハウジング71の表面の十字キー72aより底面側に、複数の操作ボタン72b〜72
gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することに
よって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作
部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびA
ボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナ
スボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら
操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞ
れの機能が割り当てられる。
また、ハウジング71の表面の十字キー72aより上面側に、操作ボタン72hが設け
られる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源ス
イッチである。
また、ハウジング71の表面の操作ボタン72cより底面側に、複数のLED702が
設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントロ
ーラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設
定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には
、コアユニット70から受信ユニット6へ送信データを送信する際、上記コントローラ種
別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
また、ハウジング71の表面には、操作ボタン72bおよび操作ボタン72e〜72g
の間に後述するスピーカ706(図4参照)からの音を外部に放出するための音抜き孔が
形成されている。
一方、ハウジング71の裏面には、プレイヤがコアユニット70を把持したときに当該
プレイヤの人差し指または中指が位置するような位置に、操作ボタン(図示せず)が設け
られる。この操作ボタンは、例えばBボタンとして機能する操作部であり、例えばシュー
ティングゲームにおけるトリガスイッチとして用いられる。
また、ハウジング71の上面には、撮像情報演算部74(図6参照)の一部を構成する
撮像素子743(図6参照)が設けられる。ここで、撮像情報演算部74は、コアユニッ
ト70が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重
心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒
程度のサンプリング周期であるため比較的高速なコアユニット70の動きでも追跡して解
析することができる。この撮像情報演算部74の詳細な構成については、後述する。また
、ハウジング71の底面には、コネクタ73(図4参照)が設けられている。コネクタ7
3は、例えば32ピンのエッジコネクタであり、接続ケーブル79のコネクタ791と嵌
合して接続するために利用される。
次に、図4を参照して、コアユニット70の内部構造について説明する。なお、図4は
、コアユニット70の上筐体(ハウジング71の一部)を外した状態を示す斜視図である
図4において、ハウジング71の内部には基板700が固設されており、当該基板70
0の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、スピー
カ706、およびアンテナ754等が設けられる。そして、これらは、基板700等に形
成された配線(図示せず)によってマイクロコンピュータ(Micro Compute
r:マイコン)751等(図6参照)に接続される。なお、加速度センサ701が基盤7
00の中央部ではなく周辺部に設けられていることにより、コアユニット70の長手方向
を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加
速度を検出することができるので、所定の演算により、検出される加速度データからコア
ユニット70の回転を良好な感度で判定することができる。
一方、基板700の下主面上には、撮像情報演算部74やコネクタ73が取り付けられ
る。
図3および図5を参照して、サブユニット76について説明する。なお、図5は、サブ
ユニット76の上筐体(ハウジング77の一部)を外した状態を示す斜視図である。
図3において、サブユニット76は、例えばプラスチック成型によって形成されたハウ
ジング77を有している。ハウジング77は、全体として大人や子供の片手で把持可能な
大きさである。
ハウジング77の表面に、方向指示手段であるスティック78aが設けられる。スティ
ック78aは、ハウジング77の表面から突出した傾倒可能なスティックを倒すことによ
って、傾倒方向に応じて操作信号を出力する操作部である。例えば、プレイヤがスティッ
ク先端を360°任意の方向に傾倒することによって任意の方向や位置を指定することが
でき、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソ
ルの移動方向を指示したりすることができる。なお、スティック78aの代わりに十字キ
ーを設けても良い。
サブユニット76のハウジング77の上面に、複数の操作ボタン78dおよび78eが
設けられる(図5参照)。操作ボタン78dおよび78eは、プレイヤがボタン頭部を押
下することによって、それぞれの操作ボタン78dおよび78eに割り当てられた操作信
号を出力する操作部である。例えば、操作ボタン78dおよび78eには、Xボタンおよ
びYボタン等としての機能が割り当てられる。これら操作ボタン78dおよび78eは、
ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられる。
図5において、ハウジング77の内部には基板が固設されており、当該基板の上主面上
にスティック78aおよび加速度センサ761等が設けられる。そして、これらは、基板
等に形成された配線(図示せず)を介して接続ケーブル79と接続されている。
次に、図6を参照して、コントローラ7の内部構成について説明する。なお、図6は、
コントローラ7の構成を示すブロック図である。
図6において、コアユニット70は、上述した操作部72、撮像情報演算部74、加速
度センサ701、スピーカ706、サウンドIC707、およびアンプ708の他に、そ
の内部に通信部75を備えている。また、サブユニット76は、上述した操作部78およ
び加速度センサ761を備えており、接続ケーブル79とコネクタ791およびコネクタ
73とを介して、マイコン751と接続されている。
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、およ
び画像処理回路744を含んでいる。赤外線フィルタ741は、コアユニット70の上面
から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を
透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMO
SセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線
を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だ
けを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処
理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得
られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結
果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は
、コアユニット70のハウジング71に固設されており、ハウジング71自体の方向を変
えることによってその撮像方向を変更することができる。しかしながら、ハウジング71
は、サブユニット76とは屈曲自在な接続ケーブル79によって接続されているため、サ
ブユニット76の方向や位置を変更しても撮像情報演算部74の撮像方向が変化すること
はない。この撮像情報演算部74から出力される処理結果データに基づいて、コアユニッ
ト70の位置や動きに応じた信号を得ることができる。
コアユニット70は、本実施例では、加速度センサを備える。ここで、コアユニット7
0は、3軸(図4のX軸、Y軸、Z軸)の加速度センサ701を備えていることが好まし
い。また、サブユニット76は、3軸(図5のX軸、Y軸、Z軸)の加速度センサ761
を備えていることが好ましい。この3軸の加速度センサ701および761は、それぞれ
3方向、すなわち、X軸方向(左側面→右側面方向)、Y軸方向(上面→底面方向)、Z
軸方向(表面→裏面方向)で直線加速度を検知する。また、他の実施形態においては、ゲ
ーム処理に用いる制御信号の種類によっては、X軸方向およびY軸方向(または他の対に
なった方向)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用
してもよい。さらにはX軸方向(または他の方向)に沿った直線加速度のみを検知する1
軸の加速度検出手段を使用してもよい。例えば、この3軸または2軸または1軸の加速度
センサ701および761は、アナログ・デバイセズ株式会社(Analog Devi
ces, Inc.)またはSTマイクロエレクトロニクス社(STMicroelec
tronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ7
01および761は、シリコン微細加工されたMEMS(Micro Electro
Mechanical Systems:微小電子機械システム)の技術に基づいた静電
容量式(静電容量結合式)であってもよい。また、既存の加速度検出手段の技術(例えば
、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または
2軸または1軸の加速度センサ701および761が提供されてもよい。
当業者には公知であるように、加速度センサ701および761に用いられるような加
速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度(直線加速度)
のみを検知することができる。つまり、加速度センサ701および761からの直接の出
力は、その各軸に沿った直線加速度(静的または動的)を示す信号である。このため、加
速度センサ701および761は、非直線状(例えば、円弧状)の経路に沿った動き、回
転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはでき
ない。
しかしながら、加速度センサ701および761からそれぞれ出力される加速度の信号
に対して追加の処理を行うことによって、コアユニット70およびサブユニット76に関
するさらなる情報をそれぞれ推測または算出することができることは、当業者であれば本
明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検
知されると、加速度センサ701および761からの出力を用いて、傾斜角度と検知され
た加速度とを用いた演算によって重力ベクトルに対する対象(コアユニット70またはサ
ブユニット76)の傾きをそれぞれ推測することができる。このように、加速度センサ7
01および761をマイコン751(または他のプロセッサ)と組み合わせて用いること
によって、コアユニット70およびサブユニット76の傾き、姿勢または位置を決定する
ことができる。同様に、加速度センサ701を備えるコアユニット70または加速度セン
サ761を備えるサブユニット76が、ここで説明されているように、例えばユーザの手
で動的に加速されてそれぞれ動かされる場合に、加速度センサ701および761によっ
て生成される加速度信号をそれぞれ処理することによって、コアユニット70およびサブ
ユニット76のさまざまな動きおよび/または位置をそれぞれ算出または推測することが
できる。他の実施例では、加速度センサ701および761は、信号をマイコン751に
出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行う
ための、組込み式の信号処理装置または他の種類の専用の処理装置をそれぞれ備えていて
もよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度(例え
ば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当
する傾斜角に変換するものであってもよい。加速度センサ701および761でそれぞれ
検知された加速度を示すデータは通信部75に出力される。
通信部75は、マイコン751、メモリ752、無線モジュール753、およびアンテ
ナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用
いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン
751は、アンテナ754を介して無線モジュール753が受信したゲーム装置3からの
データに応じて、サウンドIC707の動作を制御する。サウンドIC707は、通信部
75を介してゲーム装置3から送信されたサウンドデータ等を処理する。
コアユニット70に設けられた操作部72からの操作信号(コアキーデータ)、加速度
センサ701からの加速度信号(コア加速度データ)、および撮像情報演算部74からの
処理結果データは、マイコン751に出力される。また、接続ケーブル79を介して、サ
ブユニット76に設けられた操作部78からの操作信号(サブキーデータ)および加速度
センサ761からの加速度信号(サブ加速度データ)は、マイコン751に出力される。
マイコン751は、入力した各データ(コアキーデータ、サブキーデータ、コア加速度デ
ータ、サブ加速度データ、処理結果データ)を受信ユニット6へ送信する送信データとし
て一時的にメモリ752に格納する。ここで、通信部75から受信ユニット6への無線送
信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われること
が一般的であるので、それよりも短い周期でデータを収集して送信を行うことが必要とな
る。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥー
ス(Bluetooth;登録商標)で構成される通信部75の送信間隔は5msである
。マイコン751は、受信ユニット6への送信タイミングが到来すると、メモリ752に
格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力
する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術に基
づいて、所定周波数の搬送波を用いて操作情報で変調し、その微弱電波信号をアンテナ7
54から放射する。つまり、コアユニット70に設けられた操作部72からのコアキーデ
ータ、サブユニット76に設けられた操作部78からのサブキーデータ、コアユニット7
0に設けられた加速度センサ701からのコア加速度データ、サブユニット76に設けら
れた加速度センサ761からのサブ加速度データ、および撮像情報演算部74からの処理
結果データは、無線モジュール753で微弱電波信号に変調されてコアユニット70から
放射される。そして、ゲーム装置3の受信ユニット6でその微弱電波信号を受信し、ゲー
ム装置3で当該微弱電波信号を復調や復号することによって、一連の操作情報(コアキー
データ、サブキーデータ、コア加速度データ、サブ加速度データ、および処理結果データ
)を取得することができる。そして、ゲーム装置3のCPU30は、取得した操作情報と
ゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商
標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送
信された送信データを受信する機能も備えることができる。
図7に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイするた
めには、プレイヤは、一方の手(例えば右手)でコアユニット70を把持し、他方の手(
例えば左手)でサブユニット76を把持する。
上述したように、コアユニット70に設けられた加速度センサ701からの出力(コア
加速度データ)を用いることによって、コアユニット70の傾き、姿勢、位置、または、
動き(移動や振りなど)を決定することができる。つまり、プレイヤがコアユニット70
を把持した手を上下左右等に動かすことによって、コアユニット70は、プレイヤの手の
運動や向きに応じた操作入力手段として機能する。また、上述したようにサブユニット7
6に設けられた加速度センサ761からの出力(サブ加速度データ)を用いることによっ
て、サブユニット76の傾き、姿勢、位置、または、動き(移動や振りなど)を決定する
ことができる。つまり、プレイヤがサブユニット76を把持した手を上下左右等に動かす
ことによって、サブユニット76は、プレイヤの手の運動や向きに応じた操作入力手段と
して機能する。これによって、プレイヤが両方の手に別々のユニットを把持してそれぞれ
の手自体を動かして操作するような入力を行うことができる。したがって、コアユニット
70およびサブユニット76は、従来のゲーム機用コントローラを単に左右に分離できる
ように構成しただけでなく、プレイヤの左右の手が自由になると同時に、従来のゲーム機
用コントローラでは不可能であった新たな操作が可能となっている。また、コントローラ
自体の操作の自由度が著しく向上しているため、臨場感のあるゲーム操作を実現できる。
なお、上述した説明では、コントローラ7とゲーム装置3とが無線通信によって接続さ
れた態様を用いたが、コントローラ7とゲーム装置3とがケーブルを介して電気的に接続
されてもかまわない。この場合、コアユニット70に接続されたケーブルをゲーム装置3
の接続端子に接続する。
また、コントローラ7を構成するコアユニット70およびサブユニット76のうち、コ
アユニット70のみに通信部75を設けたが、サブユニット76に受信ユニット6へ送信
データを無線送信(または有線通信)する通信部を設けてもかまわない。また、コアユニ
ット70およびサブユニット76それぞれに上記通信部を設けてもかまわない。例えば、
コアユニット70およびサブユニット76に設けられた通信部がそれぞれ受信ユニット6
へ送信データを無線送信してもいいし、サブユニット76の通信部からコアユニット70
へ送信データを無線送信してコアユニット70の通信部75で受信した後、コアユニット
70の通信部75がサブユニット76の送信データと共にコアユニット70の送信データ
を受信ユニット6へ無線送信してもいい。これらの場合、コアユニット70とサブユニッ
ト76とを電気的に接続する接続ケーブル79が不要となる。
また、コントローラ7から無線送信される送信データを受信する受信手段として、ゲー
ム装置3の接続端子に接続された受信ユニット6を用いて説明したが、ゲーム装置3の本
体内部に設けられた受信モジュールによって当該受信手段を構成してもかまわない。この
場合、受信モジュールが受信した送信データは、所定のバスを介してCPU30に出力さ
れる。
以下、上記のようなゲームシステム1を用いて実現される本発明の種々の実施形態につ
いて説明する。なお、以下では説明を分かり易くするために、コアユニット70およびサ
ブユニット76を、それぞれ第1ユニット、第2ユニットと称し、コアユニット70に設
けられた加速度センサ701およびサブユニット76に設けられた加速度センサ761を
、それぞれ第1加速度センサ、第2加速度センサと称す。
(第1の実施形態)
図8は、第1の実施形態における表示画像の一例である。モニタ2の画面には、プレイ
ヤによって操作されるキャラクタ(ゲームオブジェクト)を含む3次元の仮想ゲーム世界
の様子が表示される。本実施形態ではキャラクタは戦車に乗っている。プレイヤは、第1
ユニットまたは第2ユニットを傾ける(すなわち、水平軸を中心として回転させる)こと
によって、キャラクタの動作を制御することができる。なお、以下の説明では、加速度セ
ンサのX軸正方向が水平方向かつプレイヤの右方向であり、Y軸正方向が鉛直下方向であ
り、Z軸正方向が水平方向かつプレイヤの前方向であるという前提で説明するが、加速度
センサの軸方向と現実世界の方向との関係はこの前提に限られるものではない。
図9に、第1の実施形態におけるプレイヤの操作とキャラクタの動作の対応関係の一例
を示す。第1ユニットが第2ユニットよりも相対的に向こう側(図16参照)に傾けられ
た場合にはキャラクタは左旋回し、第2ユニットが第1ユニットよりも相対的に向こう側
に傾けられた場合にはキャラクタは右旋回する。また、第1ユニットと第2ユニットが平
均的に向こう側に傾けられた場合にはキャラクタは前進し、平均的に手前側(図16参照
)に傾けられた場合にはキャラクタは後退する。なお、図9において、紙面の奥側がキャ
ラクタの進行方向(前方)であり、紙面の手前側がキャラクタの後方である。
図10は、第1の実施形態におけるメインメモリ33のメモリマップの一例である。メ
インメモリ33には、ゲームプログラム100、ゲーム画像データ102、キャラクタ制
御データ104、第1傾き値106、第2傾き値108、第1基準値110、および第2
基準値112が格納される。なお、ゲームプログラム100、ゲーム画像データ102は
光ディスク4に記憶されており、適宜メインメモリ33にコピーされて使用される。また
、必要に応じて第1基準値110や第2基準値112も同様に光ディスク4に記憶してメ
インメモリにコピーして使用しても良い。
ゲーム画像データ102は、ゲーム画像を生成するためのデータ(ポリゴンデータやテ
クスチャデータなど)であり、キャラクタ画像を生成するためのデータおよび背景画像を
生成するためのデータを含んでいる。
キャラクタ制御データ104は、キャラクタを制御するためのデータであって、ゲーム
世界(仮想的な3次元空間)におけるキャラクタの現在位置を示す現在位置データと、キ
ャラクタの移動速度の大きさを示す速度データと、キャラクタの進行方向を示す向きベク
トルとを含んでいる。現在位置データは3次元座標値で表されるデータであり、速度デー
タはスカラー値で表されるデータであり、向きベクトルは3次元の単位ベクトルで表され
るデータである。なお、速度データの代わりに速度ベクトルを用いても良い。
第1傾き値106は、第1加速度センサの出力値に基づいて検出される第1ユニットの
傾きを表す値である。第2傾き値108は、第2加速度センサの出力値に基づいて検出さ
れる第2ユニットの傾きを表す値である。第1基準値110は、第1ユニットの傾きの基
準値である。第2基準値112は、第2ユニットの傾きの基準値である。
次に、図11〜図14のフローチャートを参照して、ゲームプログラム100に基づく
CPU30の処理の流れを説明する。
図11において、ゲームプログラム100の実行が開始されると、CPU30は、まず
ステップS100でニュートラルポジション設定処理を実行する。ニュートラルポジショ
ン設定処理とは、第1ユニットの傾きの基準値(第1基準値110)と第2ユニットの傾
きの基準値(第2基準値112)を決定するための処理である。以下、図12を参照して
、ニュートラルポジション設定処理の詳細を説明する。
図12のステップS134で、CPU30は、コントローラ7から送信される操作情報
に基づいて、プレイヤによって設定ボタン(ニュートラルポジションの設定をプレイヤが
指示するためのボタン)が押されたかどうかを判断する。この設定ボタンは、第1ユニッ
トのみに設けられていてもよいし、第2ユニットのみに設けられていてもよいし、第1ユ
ニットと第2ユニットの両方に設けられていてもよい。さらには、設定ボタンを押す替わ
りに、プレイヤがマイクロフォンに向かって音声を発することによってニュートラルポジ
ションの設定を指示できるようにしてもよい。なお、ここでは設定ボタンが第1ユニット
のみに設けられているものとして説明する。プレイヤによって設定ボタンが押されたこと
が検出された場合には処理はステップS136に進み、プレイヤによって設定ボタンが押
されたことが検出されない場合にはステップS134の処理を繰り返す(すなわちプレイ
ヤによって設定ボタンが押されるまで待機する)。
ステップS136では、一定時間(例えば10フレーム期間)だけ待機する。これは、
プレイヤが設定ボタンから指を離した直後は設定ボタンが設けられているユニット(ここ
では第1ユニット)が揺れている可能性があり、そのために第1基準値が正しく設定され
ない可能性があるからである。
ステップS138では、第1加速度センサの出力値(出力ベクトル)を取得する。ここ
では、第1加速度センサのX軸方向の出力値をAx1とし、Y軸方向の出力値をAy1と
し、Z軸方向の出力値をAz1とする。なお、所定期間分(例えば3秒程度)の加速度セ
ンサの出力値を常に記憶しておき、プレイヤが設定ボタンを押したときにそれより所定時
間だけ前に出力された出力値を利用してもよいし、設定ボタンを押す前または後のある期
間の出力値の平均を採用しても良い。(第2加速度センサについても同様)
ステップS140では、ステップS138で取得した第1加速度センサの出力ベクトル
(Ax1,Ay1,Az1)の大きさ(すなわち、√(Ax12+Ay12+Az12))
が0.8〜1.2の範囲内かどうか、すなわち第1ユニットが静止しているかどうかを判
断する。第1加速度センサおよび第2加速度センサの出力ベクトルは、静止状態(すなわ
ち重力加速度の影響のみを受けている状態)において1.0の大きさとなるように設定さ
れている。したがって、第1加速度センサの出力ベクトルの大きさが1.0または1.0
に近い値である場合には、第1ユニットがほぼ静止していると判断することができる。逆
に、第1加速度センサの出力ベクトルの大きさが1.0から大きく離れた値である場合に
は、第1ユニットが移動していると判断することができる。第1加速度センサの出力ベク
トルの大きさが0.8〜1.2の範囲内であった場合には、処理はステップS142に進
む。第1加速度センサの出力ベクトルの大きさが0.8〜1.2の範囲内でなかった場合
には、第1ユニットが移動していると第1基準値が正しく設定できないので、処理はステ
ップS134に戻る。なお、0.8〜1.2という値は例であり、本質的には、1.0の
近傍の値であることが判断される。なお、本実施例では、加速度センサのX方向成分(A
x)は使用しないので、プレイヤは基本的にコントローラ7をX方向に傾けずにプレイす
るものであり、ステップS138で取得した第1加速度センサの出力のX方向成分が一定
値より大きいときには、適切なニュートラルポジションが設定されていないとして、ステ
ップS134に戻るようにしても良い。(第2加速度センサについても同様)
ステップS142では、第2加速度センサの出力値(出力ベクトル)を取得する。ここ
では、第2加速度センサのX軸方向の出力値をAx2とし、Y軸方向の出力値をAy2と
し、Z軸方向の出力値をAz2とする。
ステップS144では、ステップS142で取得した第2加速度センサの出力ベクトル
(Ax2,Ay2,Az2)の大きさ(すなわち、√(Ax22+Ay22+Az22))
が0.8〜1.2の範囲内かどうか、すなわち第2ユニットが静止しているかどうかを判
断する。第2加速度センサの出力ベクトルの大きさが0.8〜1.2の範囲内であった場
合には、処理はステップS146に進む。第2加速度センサの出力ベクトルの大きさが0
.8〜1.2の範囲内でなかった場合には、第2ユニットが移動していると第2基準値が
正しく設定できないので、処理はステップS134に戻る。
ステップS146では、arctan(Az1/Ay1)(これは第1ユニットのX軸
(水平軸)周りの傾きを表している;図16における角度Θ)を算出し、算出された値を
第1基準値110として設定する。同様に、arctan(Az2/Ay2)(これは第
2ユニットのX軸周りの傾きを表している;図16における角度Θ)を算出し、算出され
た値を第2基準値112として設定する。なお、(Ay1,Az1)を基準値として設定
してもよい。
なお、ここではステップS138で取得した第1加速度センサの値のみに基づいて第1
基準値110を設定しているが、第1加速度センサの値を時間をずらして複数回取得し、
それらの平均に基づいて第1基準値110を設定してもよい。これにより、ニュートラル
ポジション設定時の第1ユニットの揺れの影響を抑えることができる。第2基準値112
についても同様である。
ステップS148では、第1基準値110と第2基準値112の差が所定値以内かどう
かを判断する。第1基準値110と第2基準値112の差が所定値以内であった場合には
、ニュートラルポジション設定処理を終了し、処理は図11のステップS102に進む。
第1基準値110と第2基準値112の差が所定値を超えていた場合には、処理はステッ
プS134に戻り、第1基準値110および第2基準値112の再設定を行う。
なお、ステップS148において、第1基準値110と第2基準値112の差が所定値
を超えていた場合に第1基準値110および第2基準値112の再設定を行うようにして
いる理由は、そのような第1基準値110および第2基準値112をそのまま利用してゲ
ームをプレイすると良好な操作性が得られないことが予想されるためである。すなわち、
本実施形態では図9で示したように、第1ユニットが第2ユニットよりも相対的に向こう
側に傾けられたときにキャラクタが左旋回し、第2ユニットが第1ユニットよりも相対的
に向こう側に傾けられたときにキャラクタが右旋回するが、第1基準値110と第2基準
値112がずれている場合には、プレイヤが第1ユニットと第2ユニットを平行に揃えて
構えた場合でもキャラクタが右旋回または左旋回してしまうことになり、プレイヤに違和
感を与えてしまうからである。
なお、ゲームの種類によっては、第1基準値110と第2基準値112のずれが特に問
題にならないので、その場合にはステップS148の判断を省略しても構わない。
また、本実施形態では、プレイヤが第1ユニットに設けられた設定ボタンを押すと、第
1基準値110の設定と第2基準値112の設定が一度に行われる例について説明したが
、本発明はこれに限定されない。例えば、第1ユニットと第2ユニットのそれぞれに設定
ボタンが設けられており、プレイヤが第1ユニットに設けられた設定ボタンを押したとき
には第1基準値110が設定され、その後、プレイヤが第2ユニットに設けられた設定ボ
タンを押したときには第2基準値112が設定されるようにしてもよい。ただし、この場
合には第1基準値110と第2基準値112がずれやすくなるため、本実施形態のように
第1基準値110の設定と第2基準値112の設定がほぼ同じタイミングで行われるのが
好ましい。
なお、本実施形態では第1基準値110と第2基準値112をそれぞれ個別に設定する
例を説明したが、上述した違和感を完全になくすために、第1基準値110と第2基準値
112に共通の値を設定するようにしてもよい。例えば、ステップS146におけるar
ctan(Az1/Ay1)とarctan(Az2/Ay2)の平均値を、第1基準値
110と第2基準値112に共通に設定してもよい。また、arctan(Az1/Ay
1)またはarctan(Az2/Ay2)のいずれか一方のみを算出し、この算出結果
を第1基準値110と第2基準値112に共通に設定してもよい。この場合、プレイヤが
設定ボタンを押したときの操作ユニットのぶれの影響を避けるために、第1ユニットおよ
び第2ユニットのうち、プレイヤが押した設定ボタンが設けられていない方の操作ユニッ
トの加速度センサの出力値に基づいて、第1基準値110と第2基準値112を共通に設
定するのが好ましい。
図11において、ニュートラルポジション設定処理が終わると、CPU30はステップ
S102で、ゲーム処理に利用する各種データ(キャラクタ制御データ104や第1傾き
値106など)の初期化を行い、キャラクタを含むゲーム画像を生成してモニタ2の画面
に表示する。
ステップS104では、第1ユニットに関する傾き検出を行う。以下、この傾き検出の
詳細を図14を参照して説明する。
図14のステップS154では、加速度センサ(ここでは第1加速度センサ)の出力値
(出力ベクトル)を取得する。ここでは、加速度センサのX軸方向の出力値をAx1とし
、Y軸方向の出力値をAy1とし、Z軸方向の出力値をAz1とする。
ステップS156では、ステップS154で取得した第1加速度センサの出力ベクトル
(Ax1,Ay1,Az1)の大きさ(すなわち、√(Ax12+Ay12+Az12))
が0.8〜1.2の範囲内かどうか、すなわち第1ユニットが静止しているかどうかを判
断する。第1加速度センサの出力ベクトルの大きさが0.8〜1.2の範囲内であった場
合には、処理はステップS158に進む。第1加速度センサの出力ベクトルの大きさが0
.8〜1.2の範囲内でなかった場合には、処理はステップS160に進む。
ステップS158では、arctan(Az1/Ay1)(これは第1ユニットのX軸
周りの傾きを表している;図16における角度Θ)を算出し、算出された値を傾き検出の
戻り値として返す。この戻り値は、メインメモリ33に第1傾き値106として格納され
る。その後、処理は図11のステップS106に進む。
ステップS160では、第1ユニットが移動していると第1ユニットの傾きが正しく検
出できないので、傾き検出結果としてエラーを返し、傾き検出を終了し、処理は図11の
ステップS106に進む。
ステップS106では、ステップS106の傾き検出結果がエラーかどうかを判断し、
エラーであった場合には処理は図13のステップS150に進み、エラーでなかった場合
には処理はステップS108に進む。
ステップS108では、第2ユニットに関して、ステップS104と同様に傾き検出を
行う。すなわち、第2加速度センサの出力ベクトル(Ax2,Ay2,Az2)の大きさ
が0.8〜1.2の範囲内であった場合には、arctan(Az2/Ay2)(これは
第2ユニットのX軸周りの傾きを表している;図16における角度Θ)の値が、メインメ
モリ33に第2傾き値108として格納される。
ステップS110では、ステップS108の傾き検出結果がエラーかどうかを判断し、
エラーであった場合には処理は図13のステップS150に進み、エラーでなかった場合
には処理はステップS112に進む。
ステップS112では、第1傾き値106を第1基準値110に基づいて補正する。具
体的には、第1傾き値106と第1基準値110との差分を算出し、この算出結果を新た
な第1傾き値106としてメインメモリ33に上書きする。
ステップS114では、第2傾き値108を第2基準値112に基づいて補正する。具
体的には、第2傾き値108と第2基準値112との差分を算出し、この算出結果を新た
な第2傾き値108としてメインメモリ33に上書きする。
ステップS116では、第1傾き値106から第2傾き値108を引いた結果の値がS
1(正の閾値)よりも大きいかどうかを判断する。第1傾き値106から第2傾き値10
8を引いた結果の値がS1よりも大きい場合(すなわち第1ユニットが第2ユニットより
も相対的に向こう側に傾けられた場合)には、処理はステップS118に進み、S1より
も大きくない場合には処理はステップS120に進む。
ステップS118では、キャラクタが左旋回するように向きベクトルを変更する。向き
ベクトルの変更方法としては種々の方法が考えられる。本実施形態では、一例として、図
15に示すように、キャラクタの現在位置における地面の法線ベクトルおよび現在の向き
ベクトルの両方に対して垂直かつ所定の大きさを有する左旋回ベクトルと、現在の向きベ
クトルとを合成することによって合成ベクトルを求め、この合成ベクトルと同じ方向を有
する単位ベクトルを新しい向きベクトルとして決定する。
ステップS120では、第1傾き値106から第2傾き値108を引いた結果の値が−
S1よりも小さいかどうかを判断する。第1傾き値106から第2傾き値108を引いた
結果の値が−S1よりも小さい場合(すなわち第2ユニットが第1ユニットよりも相対的
に向こう側に傾けられた場合)には、処理はステップS122に進み、−S1よりも小さ
くない場合には処理はステップS124に進む。
ステップS122では、キャラクタが右旋回するように向きベクトルを変更する。
ステップS124では、第1傾き値106と第2傾き値108の平均値がS2(正の閾
値)よりも大きいかどうかを判断する。第1傾き値106と第2傾き値108の平均値が
S2よりも大きい場合(すなわち第1ユニットと第2ユニットが平均的に向こう側に傾け
られた場合)には、処理はステップS126に進み、S2よりも大きくない場合には処理
はステップS128に進む。
ステップS126では、第1傾き値106と第2傾き値108の平均値に応じて正の速
度データを設定する。例えば、平均値に比例した絶対値を有する正の速度データを設定す
る。その後、処理は図13のステップS150に進む。
ステップS128では、第1傾き値106と第2傾き値108の平均値が−S2よりも
小さいかどうかを判断する。第1傾き値106と第2傾き値108の平均値が−S2より
も小さい場合(すなわち第1ユニットと第2ユニットが平均的に手前側に傾けられた場合
)には、処理はステップS130に進み、−S2よりも小さくない場合には処理はステッ
プS132に進む。
ステップS130では、第1傾き値106と第2傾き値108の平均値に応じて負の速
度データを設定する。例えば、平均値に比例した絶対値を有する負の速度データを設定す
る。その後、処理は図13のステップS150に進む。
ステップS132では、速度データを0に設定し、処理は図13のステップS150に
進む。
図13のステップS150では、速度データと向きベクトルに基づいて、現在位置デー
タを更新する。これにより、ゲーム世界のキャラクタは、向きベクトルが示す方向に向か
って速度データが示す距離だけ移動する。
ステップS152では、モニタ2に表示されているゲーム画像を、現在位置データに基
づいて更新し、処理は図11のステップS104に戻る。その後、以上のような処理が繰
り返されることにより、プレイヤの操作に応じてゲーム画像が随時変化する。
以上のように、本実施形態によれば、プレイヤはプレイ中にそれぞれの手を自由に動か
すことができるので、プレイ中の動きの自由度が高くダイナミックなプレイが可能となる
。また、2つの操作ユニットの傾きの差分によりキャラクタを制御することができるので
、直感的な操作が可能となり、良好な操作性が得られる。
なお、本実施形態では3軸の加速度センサを用いる例を説明したが、1軸の加速度セン
サを用いても操作ユニットの傾きを検出することができる(例えば、図16におけるZ軸
の出力値だけを参照しても、操作ユニットの傾きを検出することができる)ため、本実施
形態と同様の効果を得ることができる。
なお、本実施形態では、第1ユニットの傾きと第2ユニットの傾きの差分と、第1ユニ
ットの傾きと第2ユニットの傾きの平均値とを利用してキャラクタの動作を制御する例を
説明したが、例えば、第1ユニットの傾きと第2ユニットの傾きの平均値を用いずに差分
だけを利用するようなゲームを実現することも可能である。以下、このような第1ユニッ
トの傾きと第2ユニットの傾きの差分だけを利用する例を、本実施形態の変形例として説
明する。
図17に、第1の実施形態の変形例におけるプレイヤの操作とキャラクタの動作の対応
関係の一例を示す。第1ユニットが第2ユニットよりも相対的に向こう側に傾けられた場
合にはキャラクタは左旋回し、第2ユニットが第1ユニットよりも相対的に向こう側に傾
けられた場合にはキャラクタは右旋回する。また、加速ボタンが押された場合にはその時
点での進行方向にキャラクタが加速する。
図18を参照して、第1の実施形態の変形例におけるCPU30の処理の流れを説明す
る。ただし、図18において、図11と同じ処理については同じ参照符号を付し、説明を
省略する。
ステップS162よりも前の処理においては、第1ユニットの傾きと第2ユニットの傾
きの差分に応じてキャラクタを左旋回または右旋回させる処理が行われる。
ステップS162で、CPU30は、プレイヤによって加速ボタンが押されたかどうか
を判断する。加速ボタンは第1ユニットにのみ設けられていてもよいし、第2ユニットの
みに設けられていてもよいし、第1ユニットと第2ユニットの両方にそれぞれ設けられて
いてもよい。加速ボタンが押された場合には、処理はステップS164に進み、加速ボタ
ンが押されていない場合には、処理はステップS166に進む。
ステップS164では、速度データを所定量だけ増加させる。
ステップS166では、速度データを所定量だけ減少させる。
ステップS164またはステップS166よりも後の処理については図13の処理と同
じである。
以上のように、この変形例においては、第1ユニットの傾きと第2ユニットの傾きの絶
対値を用いずに差分だけを利用してゲームをプレイすることができるため、例えば床に仰
向けで寝転がってもゲームを問題無くプレイすることが可能となり、ゲームプレイ中のプ
レイヤの姿勢の自由度が増す。
(第2の実施形態)
図19は、第2の実施形態における表示画像の一例である。モニタ2の画面には、プレ
イヤによって操作されるキャラクタ(ゲームオブジェクト)を含む3次元の仮想ゲーム世
界の様子が表示される。本実施形態ではキャラクタはそりに乗っており、そりは5匹の恐
竜(恐竜A〜恐竜E)によって引っ張られている。プレイヤは、第1ユニットまたは第2
ユニットを振ることによって、キャラクタの動作を制御することができる。なお、本実施
形態では、プレイヤが、第1ユニットを左手で把持し、第2ユニットを右手で把持すると
して説明する(ただし、逆の対応関係でもかまわない)。
図20に、第2の実施形態におけるプレイヤの操作とキャラクタの動作の対応関係の一
例を示す。第1ユニットのみが振られた場合にはキャラクタは右旋回(進行方向を右に変
更)し、第2ユニットのみが振られた場合にはキャラクタは左旋回(進行方向を左に変更
)する。また、第1ユニットと第2ユニットが同時に振られた場合にはキャラクタはその
時点での進行方向に加速する。
なお、第1ユニットのみが振られた場合にキャラクタが左方向に進み、第2ユニットの
みが振られた場合に右方向に進み、同時に振られた場合に前方に進むようにしてもよい。
図21は、第2の実施形態におけるメインメモリ33のメモリマップの一例である。メ
インメモリ33には、ゲームプログラム200、ゲーム画像データ202、キャラクタ制
御データ204、第1振り強さ値206、第2振り強さ値208、第1入力フラグ210
、第2入力フラグ212、同時入力フラグ214、第1タイマ216、第2タイマ218
、および同時入力タイマ220が格納される。
ゲーム画像データ202およびキャラクタ制御データ104については、第1の実施形
態と同様のため、説明を省略する。
第1振り強さ値206は、第1加速度センサの出力値に基づいて検出される第1ユニッ
トの振りの強さを表す値である。第2振り強さ値208は、第2加速度センサの出力値に
基づいて検出される第2ユニットの振りの強さを表す値である。
第1入力フラグ210は、第1ユニットが振られたことを示すフラグであり、第1ユニ
ットが振られたことが検出されたときにオンされる。第2入力フラグ212は、第2ユニ
ットが振られたことを示すフラグであり、第2ユニットが振られたことが検出されたとき
にオンされる。同時入力フラグ214は、第1ユニットと第2ユニットが同時に振られた
ことを示すフラグであり、第1ユニットと第2ユニットが同時に振られたことが検出され
たときにオンされる。
第1タイマ216は、第1ユニットが振られたことが検出されてからの経過時間(経過
フレーム数)を示す値である。第2タイマ218は、第2ユニットが振られたことが検出
されてからの経過時間(経過フレーム数)を示す値である。同時入力タイマ220は、第
1ユニットと第2ユニットが同時に振られたことが検出されてからの経過時間(経過フレ
ーム数)を示す値である。
次に、図22〜図25のフローチャートを参照して、ゲームプログラム200に基づく
CPU30の処理の流れを説明する。なお、ステップS202からS266までの処理が
1フレームごとに繰り返される。
図22において、ゲームプログラム200の実行が開始されると、CPU30は、まず
ステップS200で、ゲーム処理に利用する各種データ(キャラクタ制御データ204や
第1振り強さ値206や第1入力フラグ210や第1タイマ216など)の初期化を行い
、キャラクタを含むゲーム画像を生成してモニタ2の画面に表示する。
ステップS202では、同時入力フラグ214がオンであるかどうかを判断し、同時入
力フラグ214がオンである場合には処理はステップS204に進み、オンでない場合に
は処理はステップS210に進む。
ステップS204では、同時入力タイマ220に1を加算する。
ステップS206では、同時入力タイマ220が20以上であるかどうかを判断し、同
時入力タイマ220が20以上である場合には処理はステップS208に進み、20以上
でない場合には処理は図24のステップS262に進む。
ステップS208では、同時入力フラグ214をオフにし、処理は図24のステップS
262に進む。
以上のように、同時入力フラグ214がオンになってから(すなわち、第1ユニットと
第2ユニットが同時に振られたことが検出されてから)20フレーム期間が経過するまで
の間は、第1ユニットの振り強さ検出(後述のステップS236)も第2ユニットの振り
強さ検出(後述のステップS250)も行われず、すなわちプレイヤによる第1ユニット
の振り操作も第2ユニットの振り操作も受け付けられない状態となる。これにより、プレ
イヤが行った一回の同時振り操作が、複数フレームにわたって連続して検出されてしまう
ことを防止することができる。
ステップS210では、第1入力フラグ210がオンであるかどうかを判断し、第1入
力フラグ210がオンである場合には処理はステップS212に進み、オンでない場合に
は処理はステップS222に進む。
ステップS212では、第1タイマ216に1を加算する。
ステップS214では、第1タイマ216が5であるかどうかを判断し、第1タイマ2
16が5である場合(すなわち、第1ユニットの振りが検出された後、第2ユニットの振
りが検出されないまま5フレーム経過したとき=第1ユニットのみが振られた場合)には
処理はステップS216に進み、5でない場合には処理はステップS218に進む。
ステップS216では、キャラクタが右旋回するように向きベクトルを変更する。向き
ベクトルの変更方法については第1の実施形態と同様である。
ステップS218では、第1タイマ216が10より大きいかどうかを判断し、第1タ
イマ216が10より大きい場合には処理はステップS220に進み、10より大きくな
い場合には処理はステップS222に進む。
ステップS220では、第1入力フラグ210をオフにする。
以上のように、第1入力フラグ210がオンになってから(すなわち、第1ユニットが
振られたことが検出されてから)10フレーム期間が経過するまでの間は、第1ユニット
の振り強さ検出(後述のステップS236)が行われず、すなわちプレイヤによる第1ユ
ニットの振り操作が受け付けられない状態となる。これにより、プレイヤが行った一回の
振り操作が、複数フレームにわたって連続して検出されてしまうことを防止することがで
きる。
なお、後述の説明により明らかとなるが、第1入力フラグ210がオンになってから5
フレーム期間が経過するまでの間に第2ユニットが振られたことが検出された場合には、
その時点で同時入力フラグ214がオンになるので、その時点からさらに20フレーム期
間が経過するまでの間は、プレイヤによる第1ユニットの振り操作が受け付けられない状
態となる。なお、同時入力フラグ214がオフになると、第1ユニットの振り強さ検出(
後述のステップS236)と第2ユニットの振り強さ検出(後述のステップS250)が
同時に再開されるので、第1ユニットの振り操作の受け付け再開タイミングと第2ユニッ
トの振り操作の受け付け再開タイミングが一致することになる。
ステップS222では、第2入力フラグ212がオンであるかどうかを判断し、第2入
力フラグ212がオンである場合には処理はステップS224に進み、オンでない場合に
は処理は図23のステップS234に進む。
ステップS224では、第2タイマ218に1を加算する。
ステップS226では、第2タイマ218が5であるかどうかを判断し、第2タイマ2
18が5である場合(すなわち、第2ユニットのみが振られた場合)には処理はステップ
S228に進み、5でない場合には処理はステップS230に進む。
ステップS228では、キャラクタが左旋回するように向きベクトルを変更する。
ステップS230では、第2タイマ218が10より大きいかどうかを判断し、第2タ
イマ218が10より大きい場合には処理はステップS232に進み、10より大きくな
い場合には処理は図23のステップS234に進む。
ステップS232では、第2入力フラグ212をオフにする。
以上のように、第2入力フラグ212がオンになってから(すなわち、第2ユニットが
振られたことが検出されてから)10フレーム期間が経過するまでの間は、第2ユニット
の振り強さ検出(後述のステップS250)が行われず、すなわちプレイヤによる第2ユ
ニットの振り操作が受け付けられない状態となる。これにより、プレイヤが行った一回の
振り操作が、複数フレームにわたって連続して検出されてしまうことを防止することがで
きる。
なお、後述の説明により明らかとなるが、第2入力フラグ212がオンになってから5
フレーム期間が経過するまでの間に第1ユニットが振られたことが検出された場合には、
その時点で同時入力フラグ214がオンになるので、その時点からさらに20フレーム期
間が経過するまでの間は、プレイヤによる第2ユニットの振り操作が受け付けられない状
態となる。なお、同時入力フラグ214がオフになると、第1ユニットの振り強さ検出(
後述のステップS236)と第2ユニットの振り強さ検出(後述のステップS250)が
同時に再開されるので、第1ユニットの振り操作の受け付け再開タイミングと第2ユニッ
トの振り操作の受け付け再開タイミングが一致することになる。すなわち、後述の通り、
本実施例では、第1ユニットの振り検出のタイミングと第2ユニットの振り検出のタイミ
ングが多少ずれていても同時振りと認識するが、この場合でも、第1ユニットの受付再開
タイミングと第2ユニットの受付再開タイミングが同時となるので、同時振り操作後に再
度同時振り操作をした場合に、後の同時振り操作において片方の振り検出だけがされるよ
うな問題を解決できる。なお、同時入力フラグがオンになった後の受け付け禁止期間を、
10フレーム(すなわち、第1ユニットや第2ユニットのみが振られた後の受け付け禁止
期間と同じ期間)としてもよい。また、同時入力フラグがオンになった場合の受け付け禁
止期間は、本実施例では、2つの振り検出タイミングのうち、後の振りタイミングを始期
としたが、先の振りタイミングを始期としてそこから20フレームなどとしてもよく、ま
た、中間のタイミング(先の振りタイミングと後の振りタイミングの間のタイミング(例
えば、ちょうど真ん中Nタイミングなど)としてもよい。
図23のステップS234では、第1入力フラグ210がオンであるかどうかを判断し
、第1入力フラグ210がオンである場合には処理はステップS248に進み、オンでな
い場合には処理はステップS236に進む。
ステップS236では、第1ユニットに関する振り強さ検出を行う。以下、この振り強
さ検出の詳細を図25を参照して説明する。
図25のステップS268では、加速度センサ(ここでは第1加速度センサ)の出力値
(出力ベクトル)を取得する。ここでは、加速度センサのX軸方向の出力値をAxとし、
Y軸方向の出力値をAyとし、Z軸方向の出力値をAzとする。
ステップS270では、ステップS268で取得した第1加速度センサの出力ベクトル
(Ax,Ay,Az)の大きさ(すなわち、√(Ax2+Ay2+Az2))がK(Kは所
定値)よりも大きいかどうかを判断する。第1加速度センサの出力ベクトルの大きさがK
よりも大きい場合(振り操作があったと判断される)には、処理はステップS272に進
み、第1加速度センサの出力ベクトルの大きさがKよりも大きくない場合(振り操作がな
かったと判断される)には、処理はステップS274に進む。
ステップS272では、第1加速度センサの出力ベクトルの大きさを、振り強さ検出の
戻り値Xとして返す。通常、第1ユニットを勢いよく振るほど第1加速度センサの出力ベ
クトルの大きさはより大きくなるので、この戻り値Xは、第1ユニットの振りの強さを反
映する値となる。その後、処理は図23のステップS238に進む。なお、このフローチ
ャートでは、出力ベクトルの大きさがKより大きくなったときに、すぐにそのときの出力
ベクトルの大きさを戻り値Xとして返すようになっているが、変形例として、出力ベクト
ルの大きさがKより大きくなった後、そのことを示す状態フラグを保持しておいて、その
後出力ベクトルが最大となったとき(出力ベクトルの大きさが増加した後減少する地点)
の出力ベクトル値を返すようにしてもよい。
なお、本実施例では、単に、出力ベクトルの大きさが所定以上であることを振り操作の
判定条件としたが、より正確に振りの判定をしてもよい。すなわち、振り操作があったと
き、一般的には、加速度センサの出力は以下のように変化する。
(a)0→(b)出力増加→(c)最大→(d)出力減少→(e)0→(f)反対方向へ
の出力増加→(g)反対方向への出力最大→(h)反対方向への出力減少→(i)0
そこで、現在から所定期間前までにおける加速度センサの出力値の履歴を常に保存して
おいて、当該履歴が上記のような出力遷移になっているかを検出するようにしてもよい。
また、処理を簡略化して、当該履歴が上記のような出力遷移の一部と一致しているかを検
出するようにしてもよい。また、この場合、(a)から(i)のうちどの時点の出力値を
利用するかは任意に決めて良い((a)から(j)以外の点、例えば、出力増加中の所定
閾値になった時点などでも良い)。
また、振り操作の検出に代えて、所定動作(所定パターンの動き操作)を検出するよう
にしてもよい。例えば、所定方向に動かす動作などが考えられる。この場合も、加速度セ
ンサの出力値の履歴を保存しておいて、当該履歴が所定パターンと一致するかどうかを検
出するようにしてもよい。
上述の変形例は、本実施形態以外の実施形態についても同様に当てはまる。
ステップS274では、振り強さ検出の検出結果として、「振り操作なし」を示す値を
返す。その後、処理は図23のステップS238に進む。
ステップS238では、ステップS236の振り強さ検出の検出結果に基づいて、第1
ユニットの振り操作があったかどうかを判断し、第1ユニットの振り操作があった場合に
は処理はステップS240に進み、第1ユニットの振り操作がなかった場合には処理はス
テップS248に進む。
ステップS240では、第2入力フラグ212がオンでありかつ第2タイマ218が4
以下であるかどうかを判断する。第2入力フラグ212がオンであり、なおかつ第2タイ
マ218が4以下である場合(すなわち第1ユニットと第2ユニットがほぼ同時に振られ
た場合)には、処理はステップS242に進み、第2入力フラグ212がオンでない、も
しくは第2タイマ218が4以下でない場合には、処理はステップS246に進む。なお
、第2ユニットが振られてから4フレーム期間の間に第1ユニットが振られた場合に「第
1ユニットと第2ユニットが同時に振られた」と判断しているのは、プレイヤが第1ユニ
ットと第2ユニットを同時に振ったつもりでも、それらの振り操作が必ずしも厳密に同時
とは限らないからである。つまり、第1ユニットが振られたことが検出されたタイミング
と第2ユニットが振られたことが検出されたタイミングとの間に数フレーム期間の間隔が
あった場合でも「第1ユニットと第2ユニットが同時に振られた」と判断することで、よ
り良好な操作性が得られる。
ステップS242では、ステップS236の第1ユニットに関する振り強さ検出の戻り
値X(第1ユニットの振りの強さを反映する値)と、後述するステップS260で設定さ
れた第2振り強さ値208(第2ユニットの振りの強さを反映する値)とに応じて、キャ
ラクタの速度データを増加させる。例えば、現在の速度データに戻り値Xに比例した数値
と第2振り強さ値208に比例した数値を乗算することによって、新たな速度データを決
定してもよい。または、戻り値Xに第1係数を掛けた数値と、第2振り強さ値に第2係数
を掛けた数値を現在の速度データに加算してもよい(第1係数と第2係数は同じであって
もよいし、異なっても良い)。または、戻り値Xと第2振り強さ値の平均値に所定係数を
掛けた数値を現在の速度データに加算してもよい。
なお、振りの強さ検出の戻り値として、加速度センサの出力値のうち所定方向の成分の
大きさのみを利用しても良い。
ステップS244では、同時入力フラグ214をオンにし、同時入力タイマ220を0
にリセットしてスタートさせ、第2入力フラグ212をオフにする。
ステップS246では、第1入力フラグ210をオンにし、第1タイマ216を0にリ
セットしてスタートさせ、第1振り強さ値206にステップS236の第1ユニットの振
り強さ検出の戻り値Xを設定する。
ステップS248では、第2入力フラグ212がオンであるかどうかを判断し、第2入
力フラグ212がオンである場合には処理はステップS250に進み、オンでない場合に
は処理は図24のステップS262に進む。
ステップS250では、第2ユニットに関して、ステップS236と同様に振り強さ検
出を行う。すなわち、第2加速度センサの出力ベクトルの大きさがKより大きい場合には
、振り強さ検出の戻り値Xとして、第2加速度センサの出力ベクトルの大きさ(第2ユニ
ットの振りの強さを反映する値)が返される。
ステップS252では、ステップS250の振り強さ検出の検出結果に基づいて、第2
ユニットの振り操作があったかどうかを判断し、第2ユニットの振り操作があった場合に
は処理はステップS254に進み、第2ユニットの振り操作がなかった場合には処理は図
24のステップS262に進む。
ステップS254では、第1入力フラグ210がオンでありかつ第1タイマ216が4
以下であるかどうかを判断する。第1入力フラグ210がオンであり、なおかつ第1タイ
マ216が4以下である場合(すなわち第1ユニットと第2ユニットがほぼ同時に振られ
た場合)には、処理はステップS256に進み、第1入力フラグ210がオンでない、も
しくは第1タイマ216が4以下でない場合には、処理はステップS260に進む。
ステップS256では、ステップS250の第2ユニットに関する振り強さ検出の戻り
値X(第2ユニットの振りの強さを反映する値)と、ステップS246で設定された第1
振り強さ値206(第1ユニットの振りの強さを反映する値)とに応じて、速度データを
増加させる。例えば、現在の速度データに戻り値Xに比例した数値と第1振り強さ値20
6に比例した数値を乗算することによって、新たな速度データを決定してもよい。
ステップS258では、同時入力フラグ214をオンにし、同時入力タイマ220を0
にリセットし、第1入力フラグ210をオフにする。
ステップS260では、第2入力フラグ212をオンにし、第2タイマ218を0にリ
セットし、第2振り強さ値208にステップS250の第2ユニットの振り強さ検出の戻
り値Xを設定する。
図24のステップS262では、速度データと向きベクトルに基づいて、現在位置デー
タを更新する。これにより、ゲーム世界のキャラクタは、向きベクトルが示す方向に向か
って速度データが示す距離だけ移動する。
ステップS264では、モニタ2に表示されているゲーム画像を、現在位置データに基
づいて更新する。
ステップS266では、速度データを所定量だけ減少する。これは、ソリと地面の摩擦
の影響をキャラクタの速度に反映させるための処理である。
その後、以上のような処理が繰り返されることにより、プレイヤの操作に応じてゲーム
画像が随時変化する。
以上のように、本実施形態によれば、プレイヤはプレイ中にそれぞれの手を自由に動か
すことができるので、プレイ中の動きの自由度が高くダイナミックなプレイが可能となる
。また、操作ユニットを振ることによってキャラクタを制御することができるので、直感
的な操作が可能となり、良好な操作性が得られる。また、操作ユニットを強く振るほどキ
ャラクタの加速度が大きくなるので、より直感的な操作が可能となる。
なお、本実施形態では3軸の加速度センサを用いる例を説明したが、1軸の加速度セン
サを用いても操作ユニットの振り操作および振り強さを検出することができる(例えば、
図16におけるZ軸の出力値だけを参照しても、操作ユニットが振られたことと、その強
さを検出することができる)ため、本実施形態と同様の効果を得ることができる。
(第3の実施形態)
第3の実施形態における表示画像は、例えば図19と同様である。本実施形態では、プ
レイヤは、第1ユニットまたは第2ユニットを振ることによって、キャラクタの動作を制
御することができる。
図26に、第3の実施形態におけるプレイヤの操作とキャラクタの動作の対応関係の一
例を示す。第1ユニットが連続して振られた場合にはキャラクタは右旋回し、第2ユニッ
トが連続して振られた場合にはキャラクタは左旋回する。また、第1ユニットと第2ユニ
ットが交互に振られた場合にはキャラクタはその時点での進行方向に加速する。
図27は、第3の実施形態におけるメインメモリ33のメモリマップの一例である。メ
インメモリ33には、ゲームプログラム300、ゲーム画像データ302、キャラクタ制
御データ304、操作履歴情報306、および振り間隔タイマ308が格納される。
ゲーム画像データ302およびキャラクタ制御データ304については、第1の実施形
態と同様のため、説明を省略する。
操作履歴情報306は、プレイヤによって振られた操作ユニットの種類(第1ユニット
または第2ユニット)を過去2回分について示す情報である。
振り間隔タイマ308は、プレイヤが第1ユニットまたは第2ユニットを直前に振って
からの経過時間(経過フレーム数)を示す値である。
次に、図28〜図30のフローチャートを参照して、ゲームプログラム300に基づく
CPU30の処理の流れを説明する。
図28において、ゲームプログラム300の実行が開始されると、CPU30は、まず
ステップS300で、ゲーム処理に利用する各種データ(キャラクタ制御データ204や
操作履歴情報306や振り間隔タイマ308など)の初期化を行い、キャラクタを含むゲ
ーム画像を生成してモニタ2の画面に表示する。
ステップS302では、第1ユニットに関する振り操作検出を行う。以下、この振り操
作検出の詳細を図30を参照して説明する。
図30のステップS346では、加速度センサ(ここでは第1加速度センサ)の出力値
(出力ベクトル)を取得する。ここでは、加速度センサのX軸方向の出力値をAxとし、
Y軸方向の出力値をAyとし、Z軸方向の出力値をAzとする。
ステップS348では、ステップS346で取得した第1加速度センサの出力ベクトル
(Ax,Ay,Az)の大きさがK(Kは所定値)よりも大きいかどうかを判断する。第
1加速度センサの出力ベクトルの大きさがKよりも大きい場合には、処理はステップS3
50に進み、第1加速度センサの出力ベクトルの大きさがKよりも大きくない場合には、
処理はステップS352に進む。
ステップS350では、振り操作検出の検出結果として、「振り操作あり」を示す値を
返す。その後、処理は図28のステップS304に進む。
ステップS352では、振り操作検出の検出結果として、「振り操作なし」を示す値を
返す。その後、処理は図28のステップS304に進む。
ステップS304では、ステップS302の振り操作検出の検出結果に基づいて、第1
ユニットの振り操作があったかどうかを判断し、第1ユニットの振り操作があった場合に
は処理はステップS306に進み、第1ユニットの振り操作がなかった場合には処理は図
29のステップS318に進む。
ステップS306では、操作履歴情報306を更新する。具体的には、「前回振られた
操作ユニット」に更新前の「今回振られた操作ユニット」の値を設定した後、「今回振ら
れた操作ユニット」に第1ユニットを示す値を設定する。
ステップS308では、振り間隔タイマ308を0にリセットする。
ステップS310では、今回検出された振り操作が「連続振りの一振り目」かどうかを
判断する。より具体的には、操作履歴情報306を参照し、「前回振られた操作ユニット
」に第1ユニットおよび第2ユニットのいずれの操作ユニットを示す値も格納されていな
い場合に、今回検出された振り操作が「連続振りの一振り目」であると判断する。なお、
本実施形態では、前回の振り操作と今回の振り操作の時間間隔が60フレーム期間を超え
ている場合に、今回の振り操作を「連続振りの一振り目」とみなしている。今回検出され
た振り操作が「連続振りの一振り目」である場合には処理は図29のステップS318に
進み、今回検出された振り操作が「連続振りの一振り目」でない場合には処理はステップ
S312に進む。
ステップS312では、操作履歴情報306を参照して、前回振られた操作ユニットが
第1ユニットかどうかを判断する。前回振られた操作ユニットが第1ユニットである場合
(すなわち第1ユニットが連続して振られた場合)には処理はステップS316に進み、
前回振られた操作ユニットが第1ユニットでない場合(すなわち、前回振られた操作ユニ
ットが第2ユニットの場合=第1ユニットと第2ユニットが交互に振られた場合)には処
理はステップS314に進む。
ステップS314では、速度データを所定量だけ増加させる。なお、変形例として、ス
テップS302で第1ユニットの振り操作を検出するときに、第2の実施形態と同様に振
り強さを検出し、第1ユニットの振り強さが大きいほど速度データをより大きく増加させ
てもよい。また、前回ユニットが振られたときの振り強さを記憶しておいて、当該振り強
さと、今回の第1ユニットの振り強さの両方に基いて速度データを増加させてもよい(例
えば、2つの振り強さの合計や平均(加重平均も可、過去の振り強さほど小さい係数にす
るなど)などに基いて速度データの増加量を決定するなど)。また、第1ユニットと第2
ユニットの交互振り操作が続く限り、各回の振りの強さを合計したり平均したりして、当
該合計値や平均値などに基いて速度データを増加する量を決定してもよい。
ステップS316では、キャラクタが右旋回するように向きベクトルを変更する。ここ
でも、第1ユニットの振り強さが大きいほどキャラクタをより大きく旋回させてもよい。
また、前回ユニットが振られたときの振り強さを記憶しておいて、当該振り強さと、今回
の第1ユニットの振り強さの両方に基いて旋回の大きさを決定してもよい。また、第1ユ
ニットの連続入力が続く限り、各回の振りの強さを合計したり平均したりして、当該合計
値や平均値などに基いて旋回の大きさを決定してもよい。
図29のステップS318では、第2ユニットに関して、ステップS302と同様に振
り操作検出を行う。
ステップS320では、ステップS318の振り操作検出の検出結果に基づいて、第2
ユニットの振り操作があったかどうかを判断し、第2ユニットの振り操作があった場合に
は処理はステップS322に進み、第2ユニットの振り操作がなかった場合には処理はス
テップS334に進む。
ステップS322では、操作履歴情報306を更新する。具体的には、「前回振られた
操作ユニット」に更新前の「今回振られた操作ユニット」の値を設定した後、「今回振ら
れた操作ユニット」に第2ユニットを示す値を設定する。
ステップS324では、振り間隔タイマ308を0にリセットする。
ステップS326では、今回検出された振り操作が「連続振りの一振り目」かどうかを
判断する。今回検出された振り操作が「連続振りの一振り目」である場合には処理はステ
ップS334に進み、今回検出された振り操作が「連続振りの一振り目」でない場合には
処理はステップS328に進む。
ステップS328では、操作履歴情報306を参照して、前回振られた操作ユニットが
第2ユニットかどうかを判断する。前回振られた操作ユニットが第2ユニットである場合
(すなわち第2ユニットが連続して振られた場合)には処理はステップS332に進み、
前回振られた操作ユニットが第2ユニットでない場合(すなわち、前回振られた操作ユニ
ットが第1ユニットである場合=第1ユニットと第2ユニットが交互に振られた場合)に
は処理はステップS330に進む。
ステップS330では、速度データを所定量だけ増加させる。なお、変形例として、ス
テップS318で第2ユニットの振り操作を検出するときに、第2の実施形態と同様に振
り強さも検出し、第2ユニットの振り強さが大きいほど速度データをより大きく増加させ
てもよい。
ステップS332では、キャラクタが左旋回するように向きベクトルを変更する。ここ
でも、第2ユニットの振り強さが大きいほどキャラクタをより大きく旋回させてもよい。
ステップS334では、振り間隔タイマ308に1を加算する。
ステップS336では、振り間隔タイマ308が60を超えたかどうかを判断する。振
り間隔タイマ308が60を超えた場合には処理はステップS338に進み、振り間隔タ
イマ308が60を超えていない場合には処理はステップS340に進む。
ステップS338では、操作履歴情報306をクリアする。
ステップS340では、速度データと向きベクトルに基づいて、現在位置データを更新
する。これにより、ゲーム世界のキャラクタは、向きベクトルが示す方向に向かって速度
データが示す距離だけ移動する。
ステップS342では、モニタ2に表示されているゲーム画像を、現在位置データに基
づいて更新する。
ステップS344では、速度データを所定量だけ減少する。その後、処理は図28のス
テップS302に戻る。
以上のように、本実施形態によれば、プレイヤはプレイ中にそれぞれの手を自由に動か
すことができるので、プレイ中の動きの自由度が高くダイナミックなプレイが可能となる
。また、操作ユニットを振ることによってキャラクタを制御することができるので、直感
的な操作が可能となり、良好な操作性が得られる。
なお、本実施形態では3軸の加速度センサを用いる例を説明したが、第2の実施形態と
同様に、1軸の加速度センサを用いても本実施形態と同様の効果を得ることができる。
なお、本実施形態では、第1ユニットの連続振り、第2ユニットの連続振り、第1ユニ
ットと第2ユニットの交互振りを検出して、それぞれの検出に応じたゲーム制御をおこな
ったが、変形例として、連続する振りパターンが所定パターンであることを検出するよう
にしてもよい。例えば、第1ユニット振り→第2ユニット振り→第2ユニット振り→第1
ユニット振りというパターン(このパターンに限らず、適宜パターンが設定されてよい)
になったことを検出して、所定のゲーム処理(例えば、キャラクタに攻撃動作をさせるな
ど)をしてもよい。
また、本実施例では、各回の振りの間隔が所定時間以内(60フレーム以内)であると
きに連続した振りまたは交互の振りであると判断したが、これに限らず、一回目の振りか
ら所定時間以内の振りを連続した振りまたは交互の振りであると判断してもよいし、振り
が連続するほど、許容する間隔を長くする(または短くする)ようにしてもよい。
(第4の実施形態)
第4の実施形態における表示画像は、例えば図19と同様である。本実施形態では、第
1ユニットおよび第2ユニットのうちの一方を傾け操作用ユニットとして利用し、他方を
振り操作用ユニットとして利用する。プレイヤは、傾け操作用ユニットを傾けたり、振り
操作用ユニットを振ったりすることによって、キャラクタの動作を制御することができる
図31に、第4の実施形態におけるプレイヤの操作とキャラクタの動作の対応関係の一
例を示す。傾け操作用ユニットが右側に傾けられた場合にはキャラクタは右旋回し、傾け
操作用ユニットが左側に傾けられた場合にはキャラクタは左旋回する。また、振り操作用
ユニットが振られた場合にはキャラクタはその時点での進行方向に加速する。
図32は、第4の実施形態におけるメインメモリ33のメモリマップの一例である。メ
インメモリ33には、ゲームプログラム400、ゲーム画像データ402、キャラクタ制
御データ404、傾け操作用ユニット指定データ406、および振り操作用ユニット指定
データ408が格納される。
ゲーム画像データ402およびキャラクタ制御データ404については、第1の実施形
態と同様のため、説明を省略する。
傾け操作用ユニット指定データ406は、第1ユニットおよび第2ユニットのいずれの
操作ユニットを傾け操作用ユニットとして利用するかを示すデータである。また、振り操
作用ユニット指定データ408は、第1ユニットおよび第2ユニットのいずれの操作ユニ
ットを振り操作用ユニットとして利用するかを示すデータである。
次に、図33〜図35のフローチャートを参照して、ゲームプログラム400に基づく
CPU30の処理の流れを説明する。
図33において、ゲームプログラム400の実行が開始されると、CPU30は、まず
ステップS400で、ゲーム処理に利用する各種データ(キャラクタ制御データ204な
ど)の初期化を行い、傾け操作用ユニット指定データ406に第1ユニットを示す1を初
期値として格納し、振り操作用ユニット指定データ408に第2ユニットを示す2を初期
値として格納する。さらに、キャラクタを含むゲーム画像を生成してモニタ2の画面に表
示する。
ステップS402では、プレイヤによって操作ボタン等を用いてユニット役割交換指示
が入力されたかどうかを判断し、ユニット役割交換指示があった場合には処理はステップ
S404に進み、ユニット役割交換指示がなかった場合には処理はステップS406に進
む。
ステップS404では、傾け操作用ユニット指定データ406の値と、振り操作用ユニ
ット指定データ408の値を入れ替える。
上記のような処理により、プレイヤは、好みまたは状況に応じて、第1ユニットの役割
と第2ユニットの役割を適宜に変更することができる。なお、このような第1ユニットの
役割と第2ユニットの役割の変更は、他の実施形態においても同様の方法で実現可能であ
る。
ステップS406では、傾け操作用ユニットに関する傾き検出を行う。以下、この傾き
検出の詳細を図34を参照して説明する。
図34のステップS424では、傾け操作用ユニットに設けられている加速度センサの
出力値(出力ベクトル)を取得する。ここでは、加速度センサのX軸方向の出力値をAx
とし、Y軸方向の出力値をAyとし、Z軸方向の出力値をAzとする。
ステップS426では、ステップS424で取得した加速度センサの出力ベクトル(A
x,Ay,Az)の大きさが0.8〜1.2の範囲内かどうかを判断する。加速度センサ
の出力ベクトルの大きさが0.8〜1.2の範囲内であった場合には、処理はステップS
428に進む。加速度センサの出力ベクトルの大きさが0.8〜1.2の範囲内でなかっ
た場合には、処理はステップS430に進む。
ステップS428では、arctan(Ax/Ay)(これは傾け操作用ユニットのZ
軸周りの傾きを表している;図36における角度Θ)を算出し、算出された値を傾き検出
の戻り値Θとして返す。その後、処理は図33のステップS408に進む。
ステップS430では、傾き検出結果としてエラーを返し、傾き検出を終了し、処理は
図33のステップS408に進む。
ステップS408では、ステップS406の傾き検出結果がエラーかどうかを判断し、
エラーであった場合には処理はステップS412に進み、エラーでなかった場合には処理
はステップS410に進む。
ステップS410では、ステップS406の傾き検出結果の戻り値Θに応じて向きベク
トルを回転させる。向きベクトルの変更方法としては種々の方法が考えられる。本実施形
態では、一例として、図37に示すように、キャラクタの現在位置における地面の法線ベ
クトルを回転軸として現在の向きベクトルを戻り値Θだけ回転させることによって得られ
るベクトルを、新しい向きベクトルとして決定する。
ステップS412では、振り操作用ユニットに関する振り操作検出を行う。以下、この
振り操作検出の詳細を図35を参照して説明する。
図35のステップS432では、振り操作用ユニットに設けられた加速度センサの出力
値(出力ベクトル)を取得する。ここでは、加速度センサのX軸方向の出力値をAxとし
、Y軸方向の出力値をAyとし、Z軸方向の出力値をAzとする。
ステップS434では、ステップS432で取得した加速度センサの出力ベクトル(A
x,Ay,Az)の大きさがK(Kは所定値)よりも大きいかどうかを判断する。加速度
センサの出力ベクトルの大きさがKよりも大きい場合には、処理はステップS436に進
み、加速度センサの出力ベクトルの大きさがKよりも大きくない場合には、処理はステッ
プS438に進む。
ステップS436では、振り操作検出の検出結果として、「振り操作あり」を示す値を
返す。その後、処理は図33のステップS414に進む。
ステップS438では、振り操作検出の検出結果として、「振り操作なし」を示す値を
返す。その後、処理は図33のステップS414に進む。
ステップS414では、ステップS412の振り操作検出の検出結果に基づいて、振り
操作用ユニットの振り操作があったかどうかを判断し、振り操作用の振り操作があった場
合には処理はステップS416に進み、振り操作用ユニットの振り操作がなかった場合に
は処理はステップS418に進む。
ステップS416では、速度データを所定量だけ増加させる。なお、変形例として、ス
テップS412で振り操作用ユニットの振り操作を検出するときに、第2の実施形態と同
様に振り強さも検出し、振り操作用ユニットの振り強さが大きいほど速度データをより大
きく増加させてもよい。
ステップS418では、速度データと向きベクトルに基づいて、現在位置データを更新
する。これにより、ゲーム世界のキャラクタは、向きベクトルが示す方向に向かって速度
データが示す距離だけ移動する。
ステップS420では、モニタ2に表示されているゲーム画像を、現在位置データに基
づいて更新する。
ステップS422では、速度データを所定量だけ減少する。その後、処理はステップS
402に戻る。
以上のように、本実施形態によれば、プレイヤはプレイ中にそれぞれの手を自由に動か
すことができるので、プレイ中の動きの自由度が高くダイナミックなプレイが可能となる
。また、傾け操作用ユニットを傾けることによってキャラクタを旋回させ、振り操作用ユ
ニットを振ることによってキャラクタを加速させることができるので、直感的な操作が可
能となり、良好な操作性が得られる。
なお、本実施形態では3軸の加速度センサを用いる例を説明したが、第1の実施形態お
よび第2の実施形態と同様に、1軸の加速度センサを用いても本実施形態と同様の効果を
得ることができる。
また、後述する実施形態のように、振り操作用ユニットが振られたときの振り操作の方
向を検出し、検出された方向に応じてキャラクタの加速方向やその大きさを変化させても
よい。
(第5の実施形態)
第5の実施形態における表示画像は、例えば図19と同様である。本実施形態では、第
1ユニットおよび第2ユニットが振られた方向(動いた方向)に基づいてキャラクタの動
作が制御される。
図38に、第5の実施形態におけるプレイヤの操作とキャラクタの動作の対応関係の一
例を示す。第1ユニットまたは第2ユニットのいずれか一方の操作ユニットのみが斜め右
向こう側(右斜め前方;なお、前方とはプレイヤが向いている方向)に振られた場合には
、キャラクタは右前方に向かって少しだけ加速する。第1ユニットまたは第2ユニットの
いずれか一方の操作ユニットのみが斜め左手前側(左斜め後方:なお、後方とはプレイヤ
が向いている方向と逆方向)に振られた場合には、キャラクタは左後方に向かって少しだ
け加速する。このように本実施形態では、基本的には操作ユニットが振られた方向(現実
世界におけるプレイヤ前方を基準とする方向)に対応する方向(仮想空間におけるキャラ
クタ前方を基準とする方向)にキャラクタが加速する。
また、第1ユニットと第2ユニットが同時に斜め右向こう側に振られた場合には、キャ
ラクタは右前方に向かって大きく加速する。このように本実施形態では、第1ユニットと
第2ユニットが同時に振られ、かつそれらの振られた方向が一致している場合には、キャ
ラクタが大きく加速する。
また、第1ユニットまたは第2ユニットのいずれか一方の操作ユニットが右側に振られ
、他方のユニットが向こう側に振られた場合には、キャラクタは右前方に少しだけ加速す
る。このように本実施形態では、第1ユニットと第2ユニットが同時に振られ、かつそれ
らの方向が一致していない場合には、第1ユニットが振られた方向と第2ユニットが振ら
れた方向とを合成した方向に基づいて、キャラクタの加速方向が決定される。
また、第1ユニットと第2ユニットが同時にかつ互いに逆側に振られた場合には、キャ
ラクタは停止する。
図39は、第5の実施形態におけるメインメモリ33のメモリマップの一例である。メ
インメモリ33には、ゲームプログラム500、ゲーム画像データ502、キャラクタ制
御データ504、第1振り方向ベクトル506、第2振り方向ベクトル508、第1入力
フラグ510、第2入力フラグ512、同時入力フラグ514、第1タイマ516、第2
タイマ518、同時入力タイマ520、第1サンプリングデータ522、および第2サン
プリングデータ524が格納される。
ゲーム画像データ502については、第1の実施形態と同様のため、説明を省略する。
キャラクタ制御データ504は、現在位置データと、キャラクタの移動速度の大きさと
方向を示す速度ベクトルと、キャラクタの姿勢を示す姿勢マトリクスとを含んでいる。現
在位置データは3次元座標値で表されるデータであり、速度ベクトルは3次元のベクトル
で表されるデータである。姿勢マトリクスは、キャラクタの前方を示す3次元の単位ベク
トルである前方ベクトルと、キャラクタの右手方向を示す3次元の単位ベクトルである右
方ベクトルと、キャラクタの上方を示す3次元の単位ベクトルである上方ベクトルの3つ
の単位ベクトルの集合である。
第1振り方向ベクトル506は、ユーザによって第1ユニットが振られた方向を示すベ
クトルである。第2振り方向ベクトル508は、ユーザによって第2ユニットが振られた
方向を示すベクトルである。
第1入力フラグ510、第2入力フラグ512、同時入力フラグ514、第1タイマ5
16、第2タイマ518、および同時入力タイマ520については、第2の実施形態と同
様であるので説明を省略する。
第1サンプリングデータ522は、第1ユニットに設けられた第1加速度センサの出力
値の直近の60フレーム分のサンプリングデータである。第2サンプリングデータ524
は、第2ユニットに設けられた第2加速度センサの出力値の直近の60フレーム分のサン
プリングデータである。
次に、図40〜図44のフローチャートを参照して、ゲームプログラム500に基づく
CPU30の処理の流れを説明する。
図40において、ゲームプログラム500の実行が開始されると、CPU30は、まず
ステップS500で、ゲーム処理に利用する各種データ(キャラクタ制御データ204や
第1振り方向ベクトル506や第1入力フラグ510や第1タイマ516や第1サンプリ
ングデータ522など)の初期化を行い、キャラクタを含むゲーム画像を生成してモニタ
2の画面に表示する。
ステップS502では、第1加速度センサの出力値と第2加速度センサの出力値を取得
し、第1サンプリングデータ522および第2サンプリングデータ524を更新する。
ステップS504では、同時入力フラグ514がオンであるかどうかを判断し、同時入
力フラグ514がオンである場合には処理はステップS506に進み、オンでない場合に
は処理はステップS512に進む。
ステップS506では、同時入力タイマ520に1を加算する。
ステップS508では、同時入力タイマ520が20以上であるかどうかを判断し、同
時入力タイマ520が20以上である場合には処理はステップS510に進み、20以上
でない場合には処理は図43のステップS596に進む。
ステップS510では、同時入力フラグ514をオフにし、処理は図43のステップS
596に進む。
ステップS512では、第1入力フラグ510がオンであるかどうかを判断し、第1入
力フラグ510がオンである場合には処理はステップS514に進み、オンでない場合に
は処理はステップS526に進む。
ステップS514では、第1タイマ516に1を加算する。
ステップS516では、第1タイマ516が5であるかどうかを判断し、第1タイマ5
16が5である場合(すなわち、第1ユニットのみが振られた場合)には処理はステップ
S518に進み、5でない場合には処理はステップS522に進む。
ステップS518では、第1ユニットの振り方向検出(後述のステップS542)によ
って検出された第1振り方向ベクトル506に基づいて速度ベクトルを変更する。速度ベ
クトルの変更方法としては種々の方法が考えられる。本実施形態では、一例として、図4
5に示すように、第1振り方向ベクトル506のX軸値をa1、Z軸値をb1とすると、
現在のベクトルと、(右方ベクトル×a1+前方ベクトル×b1)で表されるベクトルと
を合成することによって、新しい速度ベクトルを決定する。したがって、第1振り方向ベ
クトル506のX軸値が大きいほど、キャラクタは右方ベクトルの方向に大きく加速し、
第1振り方向ベクトル506のZ軸値が大きいほど、キャラクタは前方ベクトルの方向に
大きく加速する。
ステップS520では、前方ベクトルの方向が、ステップS518で更新された速度ベ
クトルの方向に一致するように、姿勢マトリクスを更新する。
ステップS522では、第1タイマ516が10より大きいかどうかを判断し、第1タ
イマ516が10より大きい場合には処理はステップS524に進み、10より大きくな
い場合には処理はステップS526に進む。
ステップS524では、第1入力フラグ510をオフにする。
ステップS526では、第2入力フラグ512がオンであるかどうかを判断し、第2入
力フラグ512がオンである場合には処理はステップS528に進み、オンでない場合に
は処理は図41のステップS540に進む。
ステップS528では、第2タイマ518に1を加算する。
ステップS530では、第2タイマ518が5であるかどうかを判断し、第2タイマ5
18が5である場合(すなわち、第2ユニットのみが振られた場合)には処理はステップ
S532に進み、5でない場合には処理はステップS536に進む。
ステップS532では、第2ユニットの振り方向検出(後述のステップS570)によ
って検出された第2振り方向ベクトル508に基づいて速度ベクトルを変更する。速度ベ
クトルの変更方法は、前述のステップS518と同様である。
ステップS534では、前方ベクトルの方向が、ステップS532で更新された速度ベ
クトルの方向に一致するように、姿勢マトリクスを更新する。
ステップS536では、第2タイマ518が10より大きいかどうかを判断し、第2タ
イマ518が10より大きい場合には処理はステップS538に進み、10より大きくな
い場合には処理は図41のステップS540に進む。
ステップS538では、第2入力フラグ512をオフにする。
図41のステップS540では、第1入力フラグ510がオンであるかどうかを判断し
、第1入力フラグ510がオンである場合には処理は図42のステップS568に進み、
オンでない場合には処理はステップS542に進む。
ステップS542では、第1ユニットに関する振り方向検出を行う。以下、この振り方
向検出の詳細を図44を参照して説明する。
図44のステップS604では、第1サンプリングデータ522を参照し、2番目に新
しい第1加速度センサの検出値(Ax,Ay,Az)のX軸値とZ軸値で示されるベクト
ル(以下、XZベクトルと称す)の大きさ(すなわち、√(Ax2+Az2))がL(Lは
所定値)よりも大きいかどうかを判断する。2番目に新しい第1加速度センサの検出値の
XZベクトルの大きさがLよりも大きい場合(振り操作があったと判断される)には、処
理はステップS606に進み、Lよりも大きくない場合(振り操作がなかったと判断され
る)には、処理はステップS610に進む。
ステップS606では、第1サンプリングデータ522を参照し、2番目に新しい第1
加速度センサの検出値のXZベクトルの大きさが、最新の第1加速度センサの検出値のX
Zベクトルの大きさよりも大きいかどうかを判断する。これは、第1加速度センサに対し
て、XZ平面と平行な方向に最も大きい力が加わったタイミングを検出するための処理で
ある。プレイヤが第1ユニットをXZ平面と平行な方向に振ると、振り始め直後と振り終
わり間際において第1ユニット(第1加速度センサ)にプレイヤによって大きな力が加え
られるので、第1加速度センサの検出値のXZベクトルの大きさは、振り始め直後と振り
終わり間際において極大となる。2番目に新しい第1加速度センサの検出値のXZベクト
ルの大きさが、最新の第1加速度センサの検出値のXZベクトルの大きさよりも大きい場
合(すなわち第1加速度センサの検出値のXZベクトルの大きさが極大値となった直後)
には、処理はステップS608に進み、2番目に新しい第1加速度センサの検出値のXZ
ベクトルの大きさが、最新の第1加速度センサの検出値のXZベクトルの大きさよりも大
きくない場合には、処理はステップS610に進む。
ステップS608では、振り方向検出の戻り値として、2番目に新しい第1加速度セン
サの検出値のXZベクトル(Ax,Az)を返す。このXZベクトル(Ax,Az)は、
プレイヤが第1ユニットを振ったときに、第1ユニットに加えられた力の方向(すなわち
第1ユニットが振られた方向)を示している。その後、処理は図41のステップS544
に進む。
なお、XZベクトルがL以上である期間のXZベクトルを平均することなどにより振り
方向を求めても良い。
なお、振り方向検出によって検出されるXZベクトルは、振り方向の検出方法によって
は実際に操作ユニットが振られたときの移動方向とは逆方向を示す場合がある。このよう
な場合には、振り方向検出の戻り値として、検出されたXZベクトルに−1を乗算した結
果の値を返せばよい。
ステップS610では、振り方向検出の戻り値として、「振り操作なし」を示す値を返
す。その後、処理は図41のステップS544に進む。
ステップS544では、ステップS542の振り方向検出の検出結果に基づいて、第1
ユニットの振り操作があったかどうかを判断し、第1ユニットの振り操作があった場合に
は処理はステップS546に進み、第1ユニットの振り操作がなかった場合には処理は図
42のステップS568に進む。
ステップS546では、第1振り方向ベクトル506に、ステップS542の振り方向
検出の戻り値(すなわち第1ユニットが振られた方向を示すベクトル)を設定する。
ステップS548では、第2入力フラグ512がオンでありかつ第2タイマ518が4
以下であるかどうかを判断する。第2入力フラグ512がオンであり、なおかつ第2タイ
マ518が4以下である場合(すなわち第1ユニットと第2ユニットがほぼ同時に振られ
た場合)には、処理はステップS550に進み、第2入力フラグ512がオンでない、も
しくは第2タイマ518が4以下でない場合には、処理はステップS566に進む。
ステップS550では、第1振り方向ベクトル506と、後述のステップS574で設
定された第2振り方向ベクトル508(第2ユニットが振られた方向を示すベクトル)の
なす角度が−30°〜30°の範囲内であるかどうかを判断する。第1振り方向ベクトル
506と第2振り方向ベクトル508のなす角度が−30°〜30°の範囲内であった場
合(すなわち第1ユニットと第2ユニットがほぼ同じ方向に振られた場合)には、処理は
ステップS552に進み、第1振り方向ベクトル506と第2振り方向ベクトル508の
なす角度が−30°〜30°の範囲内でなかった場合には、処理はステップS558に進
む。なお、−30°〜30°という値は一例であり、これより狭い範囲であってもよいし
、広い範囲であってもよく、ほぼ同じ方向であるとみなされる範囲であれば良い。
ステップS552では、第1振り方向ベクトル506と第2振り方向ベクトル508に
基づいて速度ベクトルを変更する。速度ベクトルの変更方法としては種々の方法が考えら
れる。本実施形態では、一例として、図46に示すように、第1振り方向ベクトル506
と第2振り方向ベクトル508を合成して合成振り方向ベクトルを求める。そして、この
合成振り方向ベクトルのX軸値をa3、Z軸値をb3とすると、現在のベクトルと、(右
方ベクトル×a3+前方ベクトル×b3)×α(所定の定数)で表されるベクトルとを合
成することによって、新しい速度ベクトルを決定する。αは定数であって、ステップS5
52ではα=2となる。つまり、ステップS552では、現在のベクトルと大きさを2倍
にした合成ベクトルとを合成することによって、新しい速度ベクトルが決定される。なお
、ステップS552において、第1振り方向ベクトルまたは第2振り方向ベクトルを2倍
したベクトルを合成ベクトルとみなしてもよい。
ステップS554では、前方ベクトルの方向が、ステップS552で更新された速度ベ
クトルの方向に一致するように、姿勢マトリクスを更新する。
ステップS556では、同時入力フラグ514をオンにし、同時入力タイマ520を0
にリセットし、第2入力フラグ512をオフにする。
ステップS558では、第1振り方向ベクトル506と第2振り方向ベクトル508の
なす角度が150°〜180°の範囲内または−150°〜−180°の範囲内であるか
どうかを判断する。第1振り方向ベクトル506と第2振り方向ベクトル508のなす角
度が150°〜180°の範囲内または−150°〜−180°の範囲内であった場合(
すなわち第1ユニットと第2ユニットがほぼ逆方向に振られた場合)には、処理はステッ
プS560に進む。第1振り方向ベクトル506と第2振り方向ベクトル508のなす角
度が150°〜180°の範囲内でなく、かつ−150°〜−180°の範囲内でもなか
った場合には、処理はステップS562に進む。なお、150°〜180°、−150°
〜−180°という値は一例であり、これより狭い範囲であってもよいし、広い範囲であ
ってもよく、ほぼ逆方向であるとみなされる範囲であれば良い。
ステップS560では、速度ベクトルを0に変更し、処理はステップS556に進む。
ステップS562では、ステップS552と同様に、第1振り方向ベクトル506と第
2振り方向ベクトル508を合成して合成振り方向ベクトルを求め、そして、この合成振
り方向ベクトルのX軸値をa3、Z軸値をb3とすると、現在のベクトルと、(右方ベク
トル×a3+前方ベクトル×b3)×α(所定の定数)で表されるベクトルとを合成する
ことによって、新しい速度ベクトルを決定する。ステップS562ではα=1.5となる
。つまり、ステップS562では、現在のベクトルと大きさを1.5倍にした合成ベクト
ルとを合成することによって、新しい速度ベクトルが決定される。
ステップS564では、前方ベクトルの方向が、ステップS562で更新された速度ベ
クトルの方向に一致するように、姿勢マトリクスを更新する。
ステップS566では、第1入力フラグ510をオンにし、第1タイマ516を0にリ
セットする。
図42のステップS568では、第2入力フラグ512がオンであるかどうかを判断し
、第2入力フラグ512がオンである場合には処理は図43のステップS596に進み、
オンでない場合には処理はステップS570に進む。
ステップS570では、第2ユニットに関する振り方向検出を行う。以下、この振り方
向検出の詳細を図44を参照して説明する。
図44のステップS604では、第2サンプリングデータ524を参照し、2番目に新
しい第2加速度センサの検出値のXZベクトルの大きさがLよりも大きいかどうかを判断
する。2番目に新しい第2加速度センサの検出値のXZベクトルの大きさがLよりも大き
い場合(振り操作があったと判断される)には、処理はステップS606に進み、Lより
も大きくない場合(振り操作がなかったと判断される)には、処理はステップS610に
進む。
ステップS606では、第2サンプリングデータ524を参照し、2番目に新しい第2
加速度センサの検出値のXZベクトルの大きさが、最新の第2加速度センサの検出値のX
Zベクトルの大きさよりも大きいかどうかを判断する。2番目に新しい第2加速度センサ
の検出値のXZベクトルの大きさが、最新の第2加速度センサの検出値のXZベクトルの
大きさよりも大きい場合(すなわち第2加速度センサの検出値のXZベクトルの大きさが
極大値となった直後)には、処理はステップS608に進み、2番目に新しい第2加速度
センサの検出値のXZベクトルの大きさが、最新の第2加速度センサの検出値のXZベク
トルの大きさよりも大きくない場合には、処理はステップS610に進む。
ステップS608では、振り方向検出の戻り値として、2番目に新しい第2加速度セン
サの検出値のXZベクトル(Ax,Az)を返す。このXZベクトル(Ax,Az)は、
プレイヤが第2ユニットを振ったときに、第2ユニットに加えられた力の方向(すなわち
第2ユニットが振られた方向)を示している。その後、処理は図42のステップS572
に進む。
ステップS610では、振り方向検出の戻り値として、「振り操作なし」を示す値を返
す。その後、処理は図42のステップS572に進む。
ステップS572では、ステップS570の振り方向検出の検出結果に基づいて、第2
ユニットの振り操作があったかどうかを判断し、第2ユニットの振り操作があった場合に
は処理はステップS574に進み、第2ユニットの振り操作がなかった場合には処理は図
43のステップS596に進む。
ステップS574では、第2振り方向ベクトル508に、ステップS570の振り方向
検出の戻り値(すなわち第2ユニットが振られた方向を示すベクトル)を設定する。
ステップS576では、第1入力フラグ510がオンでありかつ第1タイマ516が4
以下であるかどうかを判断する。第1入力フラグ510がオンであり、なおかつ第1タイ
マ516が4以下である場合(すなわち第1ユニットと第2ユニットがほぼ同時に振られ
た場合)には、処理はステップS578に進み、第2入力フラグ512がオンでない、も
しくは第2タイマ518が4以下でない場合には、処理はステップS594に進む。
ステップS578では、第1振り方向ベクトル506と第2振り方向ベクトル508の
なす角度が−30°〜30°の範囲内であるかどうかを判断する。第1振り方向ベクトル
506と第2振り方向ベクトル508のなす角度が−30°〜30°の範囲内であった場
合(すなわち第1ユニットと第2ユニットがほぼ同じ方向に振られた場合)には、処理は
ステップS580に進み、第1振り方向ベクトル506と第2振り方向ベクトル508の
なす角度が−30°〜30°の範囲内でなかった場合には、処理はステップS586に進
む。
ステップS580では、前述のステップS552と同様に、現在のベクトルと大きさを
2倍にした合成ベクトルとを合成することによって、新しい速度ベクトルを決定する。
ステップS582では、前方ベクトルの方向が、ステップS580で更新された速度ベ
クトルの方向に一致するように、姿勢マトリクスを更新する。
ステップS584では、同時入力フラグ514をオンにし、同時入力タイマ520を0
にリセットし、第1入力フラグ510をオフにする。
ステップS586では、第1振り方向ベクトル506と第2振り方向ベクトル508の
なす角度が150°〜180°の範囲内または−150°〜−180°の範囲内であるか
どうかを判断する。第1振り方向ベクトル506と第2振り方向ベクトル508のなす角
度が150°〜180°の範囲内または−150°〜−180°の範囲内であった場合(
すなわち第1ユニットと第2ユニットがほぼ逆方向に振られた場合)には、処理はステッ
プS588に進む。第1振り方向ベクトル506と第2振り方向ベクトル508のなす角
度が150°〜180°の範囲内でなく、かつ−150°〜−180°の範囲内でもなか
った場合には、処理はステップS590に進む。
ステップS588では、速度ベクトルを0に変更し、処理はステップS584に進む。
ステップS590では、ステップS562と同様に、現在のベクトルと大きさを1.5
倍にした合成ベクトルとを合成することによって、新しい速度ベクトルを決定する。
ステップS592では、前方ベクトルの方向が、ステップS590で更新された速度ベ
クトルの方向に一致するように、姿勢マトリクスを更新する。
ステップS594では、第2入力フラグ512をオンにし、第2タイマ518を0にリ
セットする。
図43のステップS596では、速度ベクトルに基づいて、現在位置データを更新する
ステップS598では、モニタ2に表示されているゲーム画像を、現在位置データと姿
勢マトリクスに基づいて更新する。
ステップS600では、地形の影響を反映して姿勢マトリクスおよび速度ベクトルを更
新する。これは、例えばキャラクタが急な坂を上るときにキャラクタの姿勢をやや仰向け
に傾けるとともに、キャラクタの進行方向を坂に沿わせるための処理である。
ステップS602では、速度データを所定量だけ減少する。その後、処理は図40のス
テップS502に戻る。
その後、以上のような処理が繰り返されることにより、プレイヤの操作に応じてゲーム
画像が随時変化する。
本実施形態の処理をまとめると、以下の通りとなる。
(1)第1ユニットと第2ユニットが異なるタイミングで振られたとき→それぞれの振り
方向ベクトルに基いて速度ベクトルが更新される。
(2)第1ユニットと第2ユニットがほぼ同時にほぼ同じ方向に振られたとき→合成ベク
トルを2倍したベクトルに基いて速度ベクトルが更新される。
(3)第1ユニットと第2ユニットがほぼ同時に異なる方向(ほぼ逆方向を除く)に振ら
れたとき→合成ベクトルを1.5倍したベクトルに基いて速度ベクトルが更新される。
(4)第1ユニットと第2ユニットがほぼ同時にほぼ逆方向に振られたとき→速度ベクト
ルが0になる(停止する)。
このように、第1ユニットの振りと第2ユニットの振りのタイミングや相対的方向に基
いて、異なるゲーム処理をおこなうため、プレイヤに多様な入力を可能にする。
以上のように、本実施形態によれば、プレイヤはプレイ中にそれぞれの手を自由に動か
すことができるので、プレイ中の動きの自由度が高くダイナミックなプレイが可能となる
。また、操作ユニットを振ることによってキャラクタを制御することができるので、直感
的な操作が可能となり、良好な操作性が得られる。また、2つの操作ユニットを同時に振
る際の振る方向が近いほどキャラクタの加速度が大きくなるので、より直感的な操作が可
能となる。
なお、本実施形態では3軸の加速度センサを用いる例を説明したが、2軸の加速度セン
サを用いても操作ユニットの振り方向を検出することができる(例えば、図44ではX軸
とZ軸の2軸の出力値を参照して、操作ユニットが振られたことと、その方向を検出して
いる)ため、本実施形態と同様の効果を得ることができる。
また、本実施形態では、第1ユニットと第2ユニットのいずれか一方だけが振られたと
きに、その振られた方向に応じてキャラクタを加速させる例を説明したが、これに替えて
、第1ユニットと第2ユニットのいずれか一方だけが振られたときにはキャラクタを加速
させず、第1ユニットと第2ユニットの両方がほぼ同時に振られたときにだけキャラクタ
を加速させるようにしてもよい。
なお、本実施形態では、振り方向検出において、加速度センサの出力(本実施形態では
特にXZベクトル)の大きさが極大値となったことが検出されたときに、その時点近傍の
加速度センサの出力に基づいて操作ユニットの振り方向を検出したが、本発明はこれに限
らず、他の任意の方法で操作ユニットの振り方向を検出してもよい。例えば、加速度セン
サのXZベクトルの大きさが一旦所定値を超えてから0に戻ったときに、その期間内のサ
ンプリングデータを参照して、その期間内の加速度センサのXYベクトルのうちで大きさ
が最大のものを振り方向ベクトルとして設定してもよいし、その期間内の加速度センサの
XYベクトルを平均したものを振り方向ベクトルとして設定してもよいし、その期間内の
加速度センサのXYベクトルを合成したものを振り方向ベクトルとして設定してもよい。
また、加速度センサの出力を積分することによって操作ユニットの移動速度を算出し、こ
うして算出された移動速度が一定以上である期間の加速度センサの出力に基づいて操作ユ
ニットの振り方向を検出してもよい。
また、本実施形態では振りを検出したが、これに限らず、操作ユニットの動きを検出し
、その動きの方向とタイミングに基いておこなってもよい。
(第6の実施形態)
第6の実施形態における表示画像は、例えば図19と同様である。本実施形態では、第
1ユニットおよび第2ユニットが振られた方向に基づいてキャラクタの動作が制御される
図47に、第6の実施形態におけるプレイヤの操作方法の一例を示す。本実施形態では
、プレイヤは、方向指示操作(操作ユニットを水平方向に動かす操作)によって方向を指
示し、その後、トリガ操作(操作ユニットを鉛直下方に動かす操作)を行うことによって
、方向指示操作によって指示した方向の入力を確定させることができる。方向指示操作に
おける第1ユニットおよび第2ユニットの操作方向と、キャラクタの動作との対応関係は
、いくつかの点を除けば図38と同じである。なお、以下では、操作ユニットを動かす操
作の一例として振る操作を採用する場合について説明するが、本発明は振り操作に限られ
ず、操作ユニットの動きを検出し、その動きの方向と大きさによっておこなえば十分であ
る。
図48は、第6の実施形態におけるメインメモリ33のメモリマップの一例である。メ
インメモリ33には、ゲームプログラム703、ゲーム画像データ704、キャラクタ制
御データ705、第1振り方向ベクトル709、第2振り方向ベクトル710、第1入力
フラグ711、第2入力フラグ712、同時入力フラグ714、第1タイマ716、第2
タイマ718、同時入力タイマ720、第1サンプリングデータ722、第2サンプリン
グデータ724、第1トリガ操作強さ値726、および第2トリガ操作強さ値728が格
納される。
ゲーム画像データ704、キャラクタ制御データ705、第1振り方向ベクトル709
、第2振り方向ベクトル710、第1入力フラグ711、第2入力フラグ712、同時入
力フラグ714、第1タイマ716、第2タイマ718、同時入力タイマ720、第1サ
ンプリングデータ722、および第2サンプリングデータ724については、第5の実施
形態と同様のため、説明を省略する。
第1トリガ操作強さ値726は、第1ユニットによるトリガ操作時の振りの強さを示す
値である。第2トリガ操作強さ値728は、第2ユニットによるトリガ操作時の振りの強
さを示す値である。
次に、図49〜図53のフローチャートを参照して、ゲームプログラム703に基づく
CPU30の処理の流れを説明する。
図49において、ステップS700、S702、S704、S706、S708、S7
10、S712、S714、S716については前述した第5の実施形態と同様なので説
明を省略する。
ステップS718では、CPU30は、後述するステップS748で第1サンプリング
データ722に基づいて算出される第1振り方向ベクトル709(すなわち、第1ユニッ
トによる方向指示操作時に、第1ユニットがプレイヤによって振られた方向を示すベクト
ル)と、後述するステップS742の第1ユニットに関する振り強さ検出の検出結果に応
じて設定される第1トリガ操作強さ値726(すなわち、第1ユニットによるトリガ操作
時に、第1ユニットがプレイヤによって振られた強さを示すベクトル)とに基づいて、速
度ベクトルを変更する。速度ベクトルの変更方法としては種々の方法が考えられる。本実
施形態では、一例として、図54に示すように、第1振り方向ベクトル709のX軸値を
a1、Z軸値をb1とし、第1トリガ操作強さ値726をβ1とすると、現在のベクトル
と、(右方ベクトル×a1+前方ベクトル×b1)×βで表されるベクトルとを合成する
ことによって、新しい速度ベクトルを決定する。したがって、第1トリガ操作強さ値72
6が大きいほどキャラクタの加速度が大きくなる。
ステップS720、S722、S724、S726、S728、S730については前
述した第5の実施形態と同様なので説明を省略する。
ステップS732では、後述するステップS782で第2サンプリングデータ724に
基づいて算出される第2振り方向ベクトル710(すなわち、第2ユニットによる方向指
示操作時に、第2ユニットがプレイヤによって振られた方向を示すベクトル)と、後述す
るステップS776の第2ユニットに関する振り強さ検出の検出結果に応じて設定される
第2トリガ操作強さ値728(すなわち、第2ユニットによるトリガ操作時に、第2ユニ
ットがプレイヤによって振られた強さを示すベクトル)とに基づいて、速度ベクトルを変
更する。例えば、第2振り方向ベクトル710のX軸値をa2、Z軸値をb2とし、第2
トリガ操作強さ値728をβとすると、現在のベクトルと、(右方ベクトル×a2+前方
ベクトル×b2)×βで表されるベクトルとを合成することによって、新しい速度ベクト
ルを決定する。したがって、第2トリガ操作強さ値728が大きいほどキャラクタの加速
度が大きくなる。
ステップS734、S736、S738、および図50のステップS740については
前述した第5の実施形態と同様なので説明を省略する。
図50のステップS742では、第1ユニットに関する振り強さ検出を行う。以下、こ
の振り強さ検出の詳細を図53を参照して説明する。
図53のステップS816では、第1サンプリングデータ722を参照し、2番目に新
しい第1加速度センサの検出値(Ax,Ay,Az)のY軸値AyがM(Mは所定値であ
り、1より大きな値)よりも大きいかどうかを判断する。2番目に新しい第1加速度セン
サの検出値のY軸値がMよりも大きい場合(振り操作があったと判断される)には、処理
はステップS818に進み、Mよりも大きくない場合(振り操作がなかったと判断される
)には、処理はステップS822に進む。
ステップS818では、第1サンプリングデータ722を参照し、2番目に新しい第1
加速度センサの検出値のY軸値が、最新の第1加速度センサの検出値のY軸値よりも大き
いかどうかを判断する。これは、第1加速度センサに対して、Y軸方向に最も大きい力が
加わったタイミングを検出するための処理である。プレイヤが第1ユニットをY軸方向に
振ると、図54に示すように、第1加速度センサの検出値のY軸値は、振り始め直後に極
小となり、振り終わり間際において極大となる。したがって、ステップS818の判断結
果が肯定となるのは、図56のT1のタイミングである。2番目に新しい第1加速度セン
サの検出値のY軸値が、最新の第1加速度センサの検出値のY軸値よりも大きい場合(す
なわち第1加速度センサの検出値のY軸値の大きさが極大値となった直後)には、処理は
ステップS820に進み、2番目に新しい第1加速度センサの検出値のY軸値が、最新の
第1加速度センサの検出値のY軸値よりも大きくない場合には、処理はステップS822
に進む。
ステップS820では、振り強さ検出の戻り値として、2番目に新しい第1加速度セン
サの検出値のY軸値Ayを返す。このY軸値Ayは、プレイヤが第1ユニットによるトリ
ガ操作を行ったときに、第1ユニットに加えられた力の大きさ(すなわち第1ユニットが
振られた強さ)を示している。その後、処理は図50のステップS744に進む。
ステップS822では、振り強さ検出の戻り値として、「トリガ操作なし」を示す値を
返す。その後、処理は図50のステップS744に進む。
ステップS744では、ステップS742の振り強さ検出の検出結果に基づいて、第1
ユニットによるトリガ操作があったかどうかを判断し、第1ユニットによるトリガ操作が
あった場合には処理はステップS746に進み、第1ユニットによるトリガ操作がなかっ
た場合には処理は図51のステップS774に進む。
ステップS746では、第1トリガ操作強さ値の戻り値(すなわち第1ユニットによる
トリガ操作時に第1ユニットが振られた強さを示す値)を設定する。
ステップS748では、第1サンプリングデータ722に基づいて、第1ユニットによ
る方向指示操作時に第1ユニットが振られた方向を検出し、その算出結果を第1振り方向
ベクトル709に設定する。方向指示操作時に第1ユニットが振られた方向を検出する方
法としては種々の方法が考えられる。図56は、方向指示操作時において、プレイヤが操
作ユニットを斜め左前方に振ったときの加速度センサのX軸方向およびZ軸方向の出力値
の遷移を示している。
本実施形態では、一例として、トリガ操作が検出された時点(図中のT1)で、直近の
60フレーム期間のサンプリングデータを参照して操作ユニットが振られた方向を検出す
る。具体的には、サンプリングデータを参照して、X軸値およびZ軸値の符号が反転した
時点(図中のT2)を検出し、T2以降の各フレームで検出されたX軸値およびZ軸値で
示されるXZベクトルを平均することで、操作ユニットが振られた方向を検出する。図5
6の例では、T2以降のX軸値の平均値が負であり(これは操作ユニットがX軸の負方向
に振られたことを意味する)、T2以降のZ軸値の平均値が正であり(これは操作ユニッ
トがZ軸の正方向に振られたことを意味する)、さらにこれらの平均値の絶対値がほぼ等
しいことから、プレイヤの前方から左に45°ずれた方向に向かって操作ユニットが振ら
れたことが分かる。なお、T2を検出するために、サンプリングデータが直近の60フレ
ームでは不十分な場合には、より長い期間のサンプリングデータを記憶するようにしても
よい。しかしながら、サンプリングデータを十分長い期間とった場合であっても、トリガ
操作が検出された時点(T1)より前の所定期間内(許容期間)に、方向指示操作を示す
Ax、Azの出力が無い場合(例えば、図6示すような遷移の出力が無い場合、または、
単にAx、Azの出力が0である場合など)には、方向指示操作とトリガ操作が連続して
おこなわれていないとして、その操作を無効とするのが好ましい。なお、トリガ操作が検
出された時点の代わりに、振り動作開始時点や振り動作終了時点やその中間の時点などを
上記許容期間の基点としてもよい。
なお、方向指示操作時に操作ユニットが振られた方向を検出する他の方法として、図5
6における振り動作の開始から符号が反転するタイミングT2までの期間のX軸、Z軸の
各軸の平均値を求めてもよい。この場合、最終的に得られるXZベクトルが示す方向は、
操作ユニットが振られたときの移動方向とは逆の方向となる。
また、方向指示操作時に操作ユニットが振られた方向を検出するさらに他の方法として
、加速度センサのX軸およびZ軸の値をそのまま利用するのではなく、各フレーム間での
加速度センサのXZベクトルの差分ベクトル(この差分ベクトルの方向は操作ユニットの
移動方向を反映している)をそれぞれ算出し、大きさが最も大きい差分ベクトルを、方向
指示操作時に操作ユニットが振られた方向として検出してもよい。
なお、操作ユニットが振られたときには、図56に示すように、各軸の値は0→正→0
→負→0、もしくは0→負→0→正→0というように遷移する。したがって、サンプリン
グデータを参照して、過去60フレームの間にこのようなパターンが見られたときに、ト
リガ操作の前に方向指示操作が行われていたと判定し、それからその方向指示操作時の操
作ユニットの振り方向を検出するようにすれば、より正確な検出が可能となる。
なお、ステップS748の変形例として、第1ユニットによる方向指示操作時に第1ユ
ニットが振られた方向を検出するときに、第1ユニットによる方向指示操作時に第2ユニ
ットも同時に振られていたかどうかを第2サンプリングデータ724に基づいて判断し、
第1ユニットによる方向指示操作時に第2ユニットも同時に振られていた場合には第1振
り方向ベクトル709の設定をキャンセルするようにしてもよい。これにより、「方向指
示操作時に第1ユニットと第2ユニットの両方を一緒に振ってはいけない」という新たな
操作要件をプレイヤに課すことができる。
ステップS750では、ステップS748で設定された第1振り方向ベクトル709の
大きさが所定値よりも大きいかどうかを判断し、所定値よりも大きい場合は、処理はステ
ップS752に進み、所定値よりも大きくない場合は、処理は図51のステップS774
に進む。
ステップS752では、第1振り方向ベクトル709の方向が0°〜90°の範囲内ま
たは−90°〜0°の範囲内かどうかを判断する。なお、第1振り方向ベクトル709の
X軸値をAx、Z軸値をAzとすると、第1振り方向ベクトル709の方向はarcta
n(Ax/Az)で表される。第1振り方向ベクトル709の方向が0°〜90°の範囲
内または−90°〜0°の範囲内である場合には、処理はステップS754に進み、第1
振り方向ベクトル709の方向が0°〜90°の範囲内でなく、かつ−90°〜0°の範
囲内でもない場合には、処理は図51のステップS774に進む。これにより、第1ユニ
ットによる方向指示操作でプレイヤが指示可能な方向の範囲を、0°〜90°の範囲内(
すなわちX軸の正の方向とZ軸の正の方向の間の範囲内)または−90°〜0°の範囲内
(すなわちX軸の正の方向とZ軸の負の方向の間の範囲内)に制限することができる。す
なわち、第1ユニットを右手で把持し、第2ユニットを左手で把持するとして、第1ユニ
ットの振りの範囲を右領域に限定することができる。一方、後述の通り、第2ユニットは
振りの範囲を左領域に限定するので、第1ユニットと第2ユニットの役割を分担し、また
、第1ユニットと第2ユニットが衝突することを回避することができる。
ステップS754、S756については前述した第5の実施形態と同様なので説明を省
略する。
ステップS758では、第1振り方向ベクトル709、第2振り方向ベクトル710、
第1トリガ操作強さ値726、および第2トリガ操作強さ値728に基づいて、速度ベク
トルを変更する。具体的には、図57に示すように、第1振り方向ベクトル709と第2
振り方向ベクトル710を合成して合成振り方向ベクトルを求め、そして、この合成振り
方向ベクトルのX軸値をa3、Z軸値をb3とすると、現在のベクトルと、(右方ベクト
ル×a3+前方ベクトル×b3)×α(所定の定数)×β(所定の定数)で表されるベク
トルとを合成することによって、新しい速度ベクトルを決定する。αは定数であって、ス
テップS758ではα=2となる。βは、第1トリガ操作強さ値726と第2トリガ操作
強さ値728の和に比例した値である。したがって、第1トリガ操作強さ値726と第2
トリガ操作強さ値728の和が大きいほどキャラクタの加速度が大きくなる。
なお、ステップS758において、第1振り方向ベクトルまたは第2振り方向ベクトル
を2倍したベクトルを合成ベクトルとみなしてもよい。また、第1トリガ操作強さ値と第
2トリガ操作強さ値のいずれか一方のみを利用するようにしてもよい。
ステップS760、S762、S764については前述した第5の実施形態と同様なの
で説明を省略する。
ステップS766では、ステップS758と同様にして速度ベクトルを変更する。ただ
し、ステップS760ではα=1.5となる。
ステップS768、S770、S772については前述した第5の実施形態と同様なの
で説明を省略する。
図51および図52の処理については、図50のフローチャートの説明や、第5の実施
形態の説明から、当業者には明らかだと思われるので、説明を省略する。
以上のように、本実施形態によれば、プレイヤはプレイ中にそれぞれの手を自由に動か
すことができるので、プレイ中の動きの自由度が高くダイナミックなプレイが可能となる
。また、操作ユニットを振ることによってキャラクタを制御することができるので、直感
的な操作が可能となり、良好な操作性が得られる。また、2つの操作ユニットを同時に振
る際の振る方向が近いほどキャラクタの加速度が大きくなるので、より直感的な操作が可
能となる。
なお、本実施形態では3軸の加速度センサを用いる例を説明したが、2軸の加速度セン
サを用いても、そのうちの1軸の加速度センサによって方向指示操作を検出し、残りの1
軸の加速度センサによってトリガ操作を検出することができるため、本実施形態と同様の
効果を得ることができる。
また、本実施形態では、第1ユニットと第2ユニットの2つの操作ユニットを使ってキ
ャラクタの動作を制御する例を説明したが、これに替えて、1つの操作ユニットだけを利
用して方向指示操作およびトリガ操作を行ってキャラクタの動作を制御するようにしても
よい。
さらに、本実施形態では、方向指示操作の後トリガ操作をおこなうものとしたが、トリ
ガ操作の後方向指示操作をおこなうようにしてもよい。この場合、方向指示操作が検出さ
れたときに(すなわち、Ax、Azの出力が方向指示操作を示すものであるときに)、サ
ンプリングデータを参照して、その時点より過去の所定期間内にトリガ操作を示すAyが
あるか否かを判断し、肯定判断の場合に、当該方向指示操作に係る振り方向ベクトルを利
用してゲーム処理をおこなってもよい。また、方向指示操作とトリガ操作を同時におこな
うようにしてもよい。この場合、トリガ操作または方向指示操作のいずれか一方が検出さ
れたときに、サンプリングデータを参照して、その時点の前後所定期間内に他方を示す出
力があるか否かを判断して、肯定判断の場合に、方向指示操作に係る振り方向ベクトルを
利用してゲーム処理をおこなってもよい。
さらに、本実施形態では、トリガ操作が検出されたときに、サンプリングデータを参照
することにより、過去の所定期間内に方向指示操作があったか否かを判断するようにした
が、方向指示操作があったときに、その後所定期間内にトリガ操作があるか否かを監視す
るようにしてもよい。
なお、以上の実施形態では、プレイヤがゲームオブジェクトを制御する例を説明したが
、本発明はこれに限定されない。例えば、第1加速度センサの出力(傾きなど)に応じて
仮想ゲーム世界に設定された仮想カメラの傾きを変化させると同時に、第2加速度センサ
の出力(振り強さ、振り方向など)に応じてゲームオブジェクトの動作を変化させるよう
にしてもよい。
1 ゲームシステム
2 モニタ
2a スピーカ
3 ゲーム装置
30 CPU
31 メモリコントローラ
32 GPU
33 メインメモリ
34 DSP
35 ARAM
36 コントローラI/F
37 ビデオI/F
38 外部メモリI/F
39 オーディオI/F
4 光ディスク
40 ディスクドライブ
41 ディスクI/F
5 外部メモリカード
6 受信ユニット
7 コントローラ
70 コアユニット
700 基板
701 加速度センサ
702 LED
706 スピーカ
707 サウンドIC
708 アンプ
71 ハウジング
72 操作部
73 コネクタ
74 撮像情報演算部
741 赤外線フィルタ
742 レンズ
743 撮像素子
744 画像処理回路
75 通信部
751 マイコン
752 メモリ
753 無線モジュール
754 アンテナ
76 サブユニット
761 加速度センサ
77 ハウジング
78 操作部
79 接続ケーブル
791 コネクタ
8 LEDモジュール

Claims (29)

  1. 第1ハウジングに設けられた加速度センサまたはジャイロセンサである第1センサと、
    前記第1ハウジングとは独立した第2ハウジングに設けられた加速度センサまたはジャイ
    ロセンサである第2センサの出力を利用してゲーム処理を行うためのゲームプログラムで
    あって、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて、ゲーム制御用ベクトルの方向を決定する方向決定手
    段、
    前記第2センサの出力に基づいて、前記ゲーム制御用ベクトルの大きさを決定する大き
    さ決定手段、および
    前記ベクトル方向決定手段および前記ベクトル大きさ決定手段によって決定された前記
    ゲーム制御用ベクトルを用いてゲーム制御を行うゲーム制御手段として機能させるための
    ゲームプログラム。
  2. 第1ハウジングに設けられた動きを検出可能な第1センサと、前記第1ハウジングとは
    独立した第2ハウジングに設けられた動きを検出可能な第2センサの出力を利用してゲー
    ム処理を行うためのゲームプログラムであって、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて前記第1ハウジングの動きを検出する第1動き操作検
    出手段、
    前記第2センサの出力に基づいて前記第2ハウジングの動きを検出する第2動き操作検
    出手段、
    前記第1動き操作検出手段および前記第2動き操作検出手段の検出結果に基づいて、前
    記第1ハウジングの動き検出に関連して決定されるタイミングから同時入力受付時間以内
    に前記第2ハウジングの動き検出があったかどうかを検出する同時入力検出手段、および
    前記第1ハウジングの動き検出があってから同時入力受付時間以内に前記第2ハウジン
    グの動き検出があったことを前記同時入力検出手段が検出したときに第1ゲーム処理を実
    行するゲーム制御手段として機能させるためのゲームプログラム。
  3. 前記ゲーム制御手段は、前記第1動き操作検出手段によって前記第1ハウジングの動き
    検出があってから、同時入力受付時間以内に前記第2ハウジングの動き検出があったこと
    が前記同時入力検出手段によって検出されなかった場合には、前記第1ゲーム処理とは異
    なる第2ゲーム処理を実行する、請求項2に記載のゲームプログラム。
  4. 前記ゲーム制御手段は、前記同時入力受付時間内に前記第2ハウジングの動き検出があ
    ったことが前記同時入力検出手段によって検出されたときには、前記第1ゲーム処理を実
    行し、前記同時入力受付時間内に前記第2ハウジングの動き検出があったことが前記同時
    入力検出手段によって検出されることなく前記同時入力受付時間が経過した時点で、前記
    第2ゲーム処理を実行する、請求項3に記載のゲームプログラム。
  5. 前記第1動き操作検出手段は、前記第1ハウジングの動き検出に関連して決定されるタ
    イミングから受付禁止時間が経過するまでは、当該第1ハウジングの動き検出を新たに検
    出せず、
    前記第2動き操作検出手段は、前記第2ハウジングの動き検出があったことを検出して
    から受付禁止時間が経過するまでは、当該第2ハウジングの動き検出を新たに検出しない
    、請求項2に記載のゲームプログラム。
  6. 前記第1ハウジングおよび前記第2ハウジングのいずれか一方の動き検出があってから
    所定時間以内に他方の動き検出があったことを前記同時入力検出手段による同時入力検出
    に関連して決定されるタイミングから同時入力後受付禁止時間が経過するまでは、前記第
    1動き操作検出手段および前記第2動き操作検出手段は、前記第1ハウジングおよび前記
    第2ハウジングの動き検出を新たに検出しない、請求項5に記載のゲームプログラム。
  7. 第1ハウジングに設けられた動きを検出可能な第1センサと、前記第1ハウジングとは
    独立した第2ハウジングに設けられた動きを検出可能な第2センサの出力を利用してゲー
    ム処理を行うためのゲームプログラムであって、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて前記第1ハウジングの動きおよびその強さを検出する
    第1動き検出手段、
    前記第2センサの出力に基づいて前記第2ハウジングの動きおよびその強さを検出する
    第2動き検出手段、
    前記第1動き検出手段および前記第2動き検出手段の検出結果に基づいて、前記第1ハ
    ウジングの動き検出に関連して決定されるタイミングから同時入力受付時間以内に前記第
    2ハウジングの動き検出があったかどうかを検出する同時入力検出手段、および
    前記第1ハウジングの動き検出に関連して決定されるタイミングから同時入力受付時間
    以内に前記第2ハウジングの動き検出があったことを前記同時入力検出手段が検出したと
    きに、前記第1動き検出手段によって検出された前記第1ハウジングの動きの強さと、前
    記第2動き検出手段によって検出された前記第2ハウジングの動きの強さを利用して第1
    ゲーム処理を実行するゲーム制御手段として機能させるためのゲームプログラム。
  8. 第1ハウジングに設けられた動きを検出可能な第1センサと、前記第1ハウジングとは
    独立した第2ハウジングに設けられた動きを検出可能な第2センサの出力を利用してゲー
    ム処理を行うためのゲームプログラムであって、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて前記第1ハウジングの動きを検出する第1動き操作検
    出手段、
    前記第2センサの出力に基づいて前記第2ハウジングの動きを検出する第2動き操作検
    出手段、
    前記第1動き操作検出手段および前記第2動き操作検出手段の検出結果に基づいて、前
    記第1ハウジングの動き操作が行われたときに、当該動き操作から過去一定時間以内に前
    記第2ハウジングの動き操作が行われていたかどうかを検出する同時入力検出手段、およ

    (a)前記第1ハウジングの動き操作が行われたときに、当該動き操作から過去一定時
    間以内に前記第2ハウジングの動き操作が行われていたことが前記同時入力検出手段によ
    って検出された場合にはゲームオブジェクトに第1動作を行わせ、(b)前記第1ハウジ
    ングの動き操作が行われたときに、当該動き操作から過去一定時間以内に前記第2ハウジ
    ングの動き操作が行われていたことが前記同時入力検出手段によって検出されなかった場
    合には前記ゲームオブジェクトに前記第1動作とは異なる第2動作を行わせるゲーム制御
    手段として機能させるためのゲームプログラム。
  9. 第1ハウジングに設けられた傾きを検出可能な第1センサと、前記第1ハウジングとは
    独立した第2ハウジングに設けられた傾きを検出可能な第2センサの出力を利用してゲー
    ム制御を行うためのゲームプログラムであって、ゲーム装置のコンピュータを、
    プレイヤからの基準値設定指示を検出する基準値設定指示検出手段、
    前記基準値設定指示検出手段によって基準値設定指示が検出されたときに、前記第1戦
    差の出力値および/または前記第2センサの出力値に基づいて、第1基準値および第2基
    準値を設定する基準値設定手段、
    前記第1センサの出力および前記第1基準値に基いて前記第1ハウジングの姿勢を検出
    する第1姿勢検出手段、
    前記第2センサの出力および前記第2基準値に基いて前記第2ハウジングの姿勢を検出
    する第2姿勢検出手段、
    前記第1姿勢検出手段による第1ハウジングの姿勢と、前記第2姿勢検出手段による第
    2ハウジングの姿勢の差分を検出する姿勢差分検出手段、および
    前記姿勢差分検出手段によって検出された差分を用いてゲーム制御を行うゲーム制御手
    段として機能させるためのゲームプログラム。
  10. 前記基準値設定手段は、前記基準値設定指示検出手段によって単一の前記基準値設定指
    示が検出されたことに応じて、同一タイミングで、前記第1基準値および前記第2基準値
    を一度に設定する、請求項9に記載のゲームプログラム。
  11. 前記基準値設定手段は、前記基準値設定指示検出手段によって基準値設定指示が検出さ
    れたときに、前記第1センサの出力値と、前記第2センサの出力値とに基く所定の演算を
    した値を、前記第1基準値および前記第2基準値として共通に設定する、請求項9に記載
    のゲームプログラム。
  12. 前記基準値設定手段は、前記基準値設定指示検出手段によって基準値設定指示が検出さ
    れたときに、前記第1センサまたは前記第2センサのいずれか一方の出力値に基く値を、
    前記第1基準値および前記第2基準値として共通に設定する、請求項9に記載のゲームプ
    ログラム。
  13. 前記第1ハウジングおよび/または前記第2ハウジングには、プレイヤが前記基準値設
    定指示を入力するためのスイッチが設けられており、
    前記基準値設定手段は、前記基準値設定指示検出手段によって基準値設定指示が検出さ
    れたときに、前記第1ハウジングおよび前記第2ハウジングのうち、当該基準値設定指示
    の入力に用いられたスイッチが設けられてない方のハウジングに設けられたセンサの検出
    値に基いて、前記第1基準値および前記第2基準値を共通に設定する、請求項12に記載
    のゲームプログラム。
  14. 前記基準値設定手段は、前記基準値設定指示検出手段によって基準値設定指示が検出さ
    れたときに、前記第1センサの出力値と前記第2センサの出力値に基づいて前記第1ハウ
    ジングと前記第2ハウジングの傾きの差分が一定範囲内か否かを判断する基準値設定時差
    分検出手段を含み、
    前記基準値設定手段は、(a)前記基準値設定時差分検出手段によって一定範囲内であ
    ると判断された場合には、前記第1センサの出力値および前記第2センサの出力値に基い
    て、第1基準値および第2基準値をそれぞれ設定し、(b)前記基準値設定時差分検出手
    段によって一定範囲内でないと判断された場合にはエラー処理を行う、請求項9に記載の
    ゲームプログラム。
  15. 第1ハウジングに設けられた加速度センサまたはジャイロセンサである第1センサと、
    前記第1ハウジングとは独立した第2ハウジングに設けられた加速度センサまたはジャイ
    ロセンサである第2センサの出力を利用してゲーム制御を行うためのゲームプログラムで
    あって、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいてゲームオブジェクトの姿勢を制御する姿勢制御手段、
    および
    前記第2センサの出力に基づいて前記ゲームオブジェクトの移動を制御する移動制御手
    段として機能させるためのゲームプログラム。
  16. 第1ハウジングに設けられた少なくとも2軸方向の動きを検出可能な第1センサと、前
    記第1ハウジングとは独立した第2ハウジングに設けられた少なくとも2軸方向の動きを
    検出可能な第2センサの出力を利用してゲーム制御を行うためのゲームプログラムであっ
    て、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて前記第1ハウジングが動いた方向を示す第1動き方向
    を検出する第1動き方向検出手段、
    前記第2センサの出力に基づいて前記第2ハウジングが動いた方向を示す第2動き方向
    を検出する第2動き方向検出手段、
    前記第1動き方向検出手段によって検出された前記第1動き方向と、前記第2動き方向
    検出手段によって検出された前記第2動き方向とを合成することによって合成方向を決定
    する合成方向決定手段、および
    前記合成方向決定手段によって決定された前記合成方向を用いてゲーム制御を行うゲー
    ム制御手段として機能させるためのゲームプログラム。
  17. 第1ハウジングに設けられた動きを検出するための第1センサと、前記第1ハウジング
    とは独立した動きを検出するための第2ハウジングに設けられた第2センサの出力を利用
    してゲーム処理を行うためのゲームプログラムであって、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて前記第1ハウジングの動きの強さを検出する第1強さ
    検出手段、
    前記第2センサの出力に基づいて前記第2ハウジングの動きの強さを検出する第2強さ
    検出手段、
    前記第1強さ検出手段によって検出された前記第1ハウジングの動きの強さと、前記第
    2強さ検出手段によって検出された前記第2ハウジングの動きの強さとを合成することに
    よって合成強さを決定する合成強さ決定手段、および
    前記合成強さ決定手段によって決定された前記合成強さを用いてゲーム制御を行うゲー
    ム制御手段として機能させるためのゲームプログラム。
  18. 第1ハウジングに設けられた少なくとも2軸方向の動きを検出可能な第1センサと、前
    記第1ハウジングとは独立した第2ハウジングに設けられた少なくとも2軸方向の動きを
    検出可能な第2センサの出力を利用してゲーム制御を行うためのゲームプログラムであっ
    て、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて前記第1ハウジングが動いた方向を示す第1動き方向
    を検出する第1動き方向検出手段、
    前記第2加速度センサの出力に基づいて前記第2ハウジングが動いた方向を示す第2動
    き方向を検出する第2動き方向検出手段、
    前記第1動き方向検出手段によって検出された前記第1動き方向と、前記第2動き方向
    検出手段によって検出された前記第2動き方向とが所定の関係を満たすかどうかを判定す
    る動き方向関係判定手段、および
    前記動き方向関係判定手段によって前記第1動き方向と前記第2動き方向が前記所定の
    関係を満たすと判定されたときに、前記第1ハウジングおよび前記第2ハウジングの少な
    くとも一方のハウジングの動き方向および/または動き強さに基づいてゲーム制御を行う
    ゲーム制御手段として機能させるためのゲームプログラム。
  19. 第1ハウジングに設けられた少なくとも2軸方向の動きを検出可能な第1センサと、前
    記第1ハウジングとは独立した第2ハウジングに設けられた少なくとも2軸方向の動きを
    検出可能な第2センサの出力を利用してゲーム制御を行うためのゲームプログラムであっ
    て、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて前記第1ハウジングの動きを検出する第1動き操作検
    出手段、
    前記第2センサの出力に基づいて前記第2ハウジングの動きを検出する第2動き操作検
    出手段、
    前記第1動き操作検出手段および前記第2動き操作検出手段の検出結果に基づいて、前
    記第1ハウジングの動き検出のタイミングと、前記第2ハウジングの動き検出のタイミン
    グとが所定の関係を満たすかどうかを判定する動きタイミング関係判定手段、および
    前記動きタイミング関係判定手段によって前記第1ハウジングの動き検出のタイミング
    と前記第2ハウジングの動き検出のタイミングが前記所定の関係を満たすと判定されたと
    きに、前記第1ハウジングおよび前記第2ハウジングの少なくとも一方のハウジングの動
    き方向および/または動き強さに基づいてゲーム制御を行うゲーム制御手段として機能さ
    せるためのゲームプログラム。
  20. 前記ゲーム制御手段は、前記第1ハウジングおよび前記第2ハウジングの両方のハウジ
    ングの動き方向および/または動き強さに基づいてゲーム制御を行う、請求項18または
    請求項19に記載のゲームプログラム。
  21. 前記ゲーム制御手段は、前記第1ハウジングおよび前記第2ハウジングの両方のハウジ
    ングの動き方向および動き強さに基づいてゲーム制御を行う、請求項18または請求項1
    9に記載のゲームプログラム。
  22. 第1ハウジングに設けられた少なくとも2軸方向の動き検出可能な第1センサと、前記
    第1ハウジングとは独立した第2ハウジングに設けられた少なくとも2軸方向の動きを検
    出可能な第2センサの出力を利用してゲーム制御を行うためのゲームプログラムであって
    、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて前記第1ハウジングが動いた方向を示す第1動き方向
    を検出する第1動き方向検出手段、
    前記第2センサの出力に基づいて前記第2ハウジングが動いた方向を示す第2動き方向
    を検出する第2動き方向検出手段、
    前記第1動き方向検出手段によって検出された前記第1動き方向と、前記第2動き方向
    検出手段によって検出された前記第2動き方向とが所定の関係を満たすかどうかを判定す
    る動き向関係判定手段、および
    前記動き方向関係判定手段によって前記第1動き方向と前記第2動き方向が前記所定の
    関係を満たすと判定されたときに、ゲームオブジェクトに特定の動作を行わせるゲーム制
    御手段として機能させるためのゲームプログラム。
  23. 第1ハウジングに設けられた動きを検出するための第1センサと、前記第1ハウジング
    とは独立した第2ハウジングに設けられた動きを検出するための第2センサの出力を利用
    してゲーム制御を行うためのゲームプログラムであって、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて前記第1ハウジングの動きおよびその強さを検出する
    第1動き操作検出手段、
    前記第2センサの出力に基づいて前記第2ハウジングの動きおよびその強さを検出する
    第2動き操作検出手段、
    前記第1動き操作検出手段および前記第2動き操作検出手段の検出結果に基づいて、前
    記第1ハウジングの動き検出のタイミングと、前記第2ハウジングの動き検出のタイミン
    グとが所定の関係を満たすかどうかを判定する動きタイミング関係判定手段、および
    前記動きタイミング関係判定手段によって前記第1ハウジングの動き検出のタイミング
    と前記第2ハウジングの動き検出のタイミングが前記所定の関係を満たすと判定されたと
    きに、ゲームオブジェクトに特定の動作を行わせるゲーム制御手段として機能させるため
    のゲームプログラム。
  24. 第1ハウジングに設けられた少なくとも2軸方向の動きを検出可能な第1センサと、前
    記第1ハウジングとは独立した第2ハウジングに設けられた少なくとも2軸方向の動きを
    検出可能な第2センサの出力を利用してゲーム制御を行うためのゲームプログラムであっ
    て、ゲーム装置のコンピュータを、
    前記第1センサの出力に基づいて前記第1ハウジングが動いた方向を示す第1動き方向
    を検出する第1動き方向検出手段、
    前記第2センサの出力に基づいて前記第2ハウジングが動いた方向を示す第2動き方向
    を検出する第2動き方向検出手段、
    前記第1動き方向検出手段によって検出された前記第1動き方向が第1範囲内であり、
    かつ前記第2動き方向検出手段によって検出された前記第2動き方向が第2範囲内である
    ときに、前記第1動き方向と前記第2動き方向に基づいてゲーム制御を行うゲーム制御手
    段として機能させるためのゲームプログラム。
  25. 第1ハウジングに設けられた動きまたは姿勢を検出可能な第1センサと、前記第1ハウ
    ジングとは独立した第2ハウジングに設けられた動きまたは姿勢を検出可能な第2センサ
    の出力を利用してゲーム制御を行うためのゲームプログラムであって、ゲーム装置のコン
    ピュータを、
    前記第1センサの出力に基づいて第1ゲーム処理を実行する第1ゲーム制御手段、
    前記第2センサの出力に基づいて第2ゲーム処理を実行する第2ゲーム制御手段、およ

    プレイヤの指示に応じて、前記第1ゲーム制御手段が前記第1ゲーム処理のために参照
    するセンサを前記第1センサから前記第2センサに変更し、かつ前記第2ゲーム制御手段
    が前記第2ゲーム処理のために参照するセンサを前記第2センサから前記第1センサに変
    更する参照センサ交換手段として機能させるためのゲームプログラム。
  26. 少なくとも、第1軸、第2軸の2軸方向の動きを検出可能なセンサの出力を利用してゲ
    ーム制御を行うためのゲームプログラムであって、ゲーム装置のコンピュータを、
    前記センサの前記第1軸方向の動きを検出する動き検出手段、および
    前記動き検出手段によって前記第1軸方向の動きが検出されたときに、当該検出に関連
    して決定される時点または期間において出力された前記センサの前記第2軸方向の出力に
    基いてゲーム制御を行うゲーム制御手段として機能させるためのゲームプログラム。
  27. 第1軸、第2軸、第3軸の3軸方向の動きを検出可能なセンサの出力を利用してゲーム
    制御を行うためのゲームプログラムであって、ゲーム装置のコンピュータを、
    前記センサの前記第1軸方向の動きを検出する動き検出手段、および
    前記動き検出手段によって前記第1軸方向の動きが検出されたときに、当該検出された
    時点を基準として決定される時点または期間において出力された前記センサの前記第2軸
    方向の出力と前記第3軸方向の出力により示される方向を用いてゲーム制御を行うゲーム
    制御手段として機能させるためのゲームプログラム。
  28. 前記ゲーム制御手段は、前記動き検出手段によって前記第1軸方向の動きが検出された
    ときに、当該検出された時点を基準として決定される時点または期間において出力された
    前記センサの前記第2軸方向の出力に加えて、当該第1軸方向の動きに係る前記センサの
    前記第1軸方向の出力の大きさを用いてゲーム制御を行う、請求項26に記載のプログラ
    ム。
  29. 前記ゲーム制御手段は、前記動き検出手段によって前記第1軸方向の動きが検出された
    ときに、当該検出された時点を基準として決定される時点または期間における、第2軸方
    向の動きの有無を検出し、第2軸方向の動きが検出されたときに、当該第2軸方向の出力
    を用いてゲーム制御を行う、請求項26に記載のゲームプログラム。
JP2013174604A 2013-08-26 2013-08-26 ゲームプログラム及びゲーム装置 Active JP5679484B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013174604A JP5679484B2 (ja) 2013-08-26 2013-08-26 ゲームプログラム及びゲーム装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013174604A JP5679484B2 (ja) 2013-08-26 2013-08-26 ゲームプログラム及びゲーム装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012281204A Division JP5548762B2 (ja) 2012-12-25 2012-12-25 ゲームプログラム及びゲーム装置

Publications (2)

Publication Number Publication Date
JP2014000444A true JP2014000444A (ja) 2014-01-09
JP5679484B2 JP5679484B2 (ja) 2015-03-04

Family

ID=50034172

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013174604A Active JP5679484B2 (ja) 2013-08-26 2013-08-26 ゲームプログラム及びゲーム装置

Country Status (1)

Country Link
JP (1) JP5679484B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001129252A (ja) * 1999-11-02 2001-05-15 Namco Ltd ゲーム装置
JP2002153673A (ja) * 2000-11-16 2002-05-28 Konami Co Ltd 対戦式3dビデオゲーム装置及びそのコントローラ

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001129252A (ja) * 1999-11-02 2001-05-15 Namco Ltd ゲーム装置
JP2002153673A (ja) * 2000-11-16 2002-05-28 Konami Co Ltd 対戦式3dビデオゲーム装置及びそのコントローラ

Also Published As

Publication number Publication date
JP5679484B2 (ja) 2015-03-04

Similar Documents

Publication Publication Date Title
JP5204381B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステム及びゲーム処理方法
JP4262726B2 (ja) ゲームコントローラおよびゲームシステム
JP4547346B2 (ja) 傾き算出装置および傾き算出プログラムならびにゲーム装置およびゲームプログラム
US8414349B2 (en) Remotely controlled mobile device control system
US8870655B2 (en) Wireless game controllers
JP5390093B2 (ja) ゲームプログラムおよびゲーム装置
JP4240510B2 (ja) ゲームコントローラおよびゲームシステム
JP2009011870A (ja) ゲームコントローラおよびゲームシステム
JP2008048961A (ja) ゲームプログラムおよびゲーム装置
JP2013078624A (ja) ゲームシステムおよびゲームプログラム
JP2010131321A (ja) ゲーム装置およびゲームプログラム
JP5525565B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム処理方法
JP5013511B2 (ja) ゲームプログラムおよびゲーム装置
JP5679484B2 (ja) ゲームプログラム及びゲーム装置
JP5548762B2 (ja) ゲームプログラム及びゲーム装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130924

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130924

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141014

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: 20141224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141226

R150 Certificate of patent or registration of utility model

Ref document number: 5679484

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250