JP2008307409A - 情報処理装置および情報処理プログラム - Google Patents
情報処理装置および情報処理プログラム Download PDFInfo
- Publication number
- JP2008307409A JP2008307409A JP2008248392A JP2008248392A JP2008307409A JP 2008307409 A JP2008307409 A JP 2008307409A JP 2008248392 A JP2008248392 A JP 2008248392A JP 2008248392 A JP2008248392 A JP 2008248392A JP 2008307409 A JP2008307409 A JP 2008307409A
- Authority
- JP
- Japan
- Prior art keywords
- pause
- game
- input data
- state
- controller
- 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.)
- Pending
Links
Images
Abstract
【課題】ポーズを解除した時における操作性を改善することができる情報処理装置および情報処理プログラムを提供する。
【解決手段】情報処理装置は、入力装置の状態に応じて変化し、所定の処理に用いられる入力データを逐次取得する。また、所定の処理が一時停止されるタイミングにおいて取得される入力データを記憶する。一時停止の解除の受付が開始された後、情報処理装置は、現在の入力データと記憶された入力データとを逐次比較する。現在の入力データの内容が記憶手段に記憶された入力データの内容に所定の基準よりも近くなったことに応じて、一時停止が解除されて所定の処理が再開される。
【選択図】図16
【解決手段】情報処理装置は、入力装置の状態に応じて変化し、所定の処理に用いられる入力データを逐次取得する。また、所定の処理が一時停止されるタイミングにおいて取得される入力データを記憶する。一時停止の解除の受付が開始された後、情報処理装置は、現在の入力データと記憶された入力データとを逐次比較する。現在の入力データの内容が記憶手段に記憶された入力データの内容に所定の基準よりも近くなったことに応じて、一時停止が解除されて所定の処理が再開される。
【選択図】図16
Description
本発明は、情報処理装置および情報処理プログラムに関し、より特定的には、入力装置自体を動かすことによって入力操作を行う情報処理装置および情報処理プログラムに関する。
従来、コントローラ等の入力装置自体を動かすことによってゲーム操作を行うゲーム装置およびゲームプログラムが考えられている。例えば、非特許文献1には、入力装置とゲーム装置とが一体となった携帯型のゲーム装置において、加速度センサによってゲーム装置自体の傾きを算出し、当該傾きに基づいてキャラクタの転がる方向を決定することが開示されている。このように、入力装置(上記例ではゲーム装置)自体を動かしてゲーム操作をプレイヤに行わせることによって、単にボタンを押下することによるゲーム操作にはない面白みのあるゲーム操作をプレイヤに提供することができる。
「コロコロカービィ取扱説明書」任天堂株式会社、2000年8月23日、p.10−11
「コロコロカービィ取扱説明書」任天堂株式会社、2000年8月23日、p.10−11
上記従来のゲーム装置において、プレイヤはゲーム中において、ゲーム装置に設けられた所定のボタンを押下することによってゲーム進行を一時停止する(ポーズする)ことができるとともに、一時停止状態を解除してゲーム進行を再開することができる。ここで、入力装置は任意の傾きで保持可能であるので、ポーズした時とポーズを解除した時とで入力装置の傾きの状態が一致しないのが通常である。このようにポーズの前後で入力装置の傾きの状態が一致しない場合、ポーズの前後でゲーム操作が急に変わるので、ポーズ解除後にプレイヤが予期しないゲーム操作が行われてしまうおそれがある。その結果、ポーズ解除後においてプレイヤがミスしてしまう可能性が高く、プレイヤはゲームの操作性が悪いと感じるおそれがある。
それ故、本発明の目的は、ポーズを解除した時における操作性を改善することができる情報処理装置および情報処理プログラムを提供することである。
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
第1の発明は、入力装置(コントローラ7)の位置および姿勢の少なくとも一方に関する状態(後述する第1実施例では、コントローラ7の長手方向を軸とした回転に関する傾き。後述する第2実施例では、コントローラ7の指示位置。)に基づいて所定の処理(ステップS12またはステップS42)を行う情報処理装置(3)である。情報処理装置は、入力データ取得手段(ステップS3またはS42を実行するCPU10等。以下、この欄においてはステップ番号のみを記載する。)と、一時停止手段(S14またはS44)と、記憶手段(S15またはS46)と、解除受付手段(S22、S62、またはS67)と、第1比較手段(S32またはS53)と、解除手段(S34またはS54)を備える。入力データ取得手段は、入力装置の状態に応じて変化し、所定の処理に用いられる入力データ(加速度データ621または第1カーソル位置データ637)を逐次取得する。一時停止手段は、所定の処理を一時停止させる。記憶手段は、所定の処理が一時停止されるタイミングにおいて取得される入力データを記憶する。解除受付手段は、所定の処理が一時停止している状態において、一時停止の解除の受付を開始する。第1比較手段は、一時停止の解除の受付が開始された後、入力データ取得手段によって逐次取得される現在の入力データと記憶手段に記憶された入力データとを逐次比較する。解除手段は、現在の入力データの内容が記憶手段に記憶された入力データの内容に所定の基準(後述する第1実施例では、加速度の方向の差分を示す所定値。後述する第2実施例では、2つのカーソルの距離を示す所定値。)よりも近くなったことに応じて、一時停止を解除して所定の処理を再開する。なお、第1の発明において、入力データ取得手段は、例えば入力装置から出力されたデータを入力データとして取得してもよいし、入力装置から出力されたデータに所定の演算を行うことによって入力データを取得してもよい。
第2の発明においては、情報処理装置は、画像表示手段(S36またはS55)をさらに備えていてもよい。画像表示手段は、一時停止の解除の受付が開始された後、記憶手段に記憶された入力データの内容を表す画像(第2モデル54、第1カーソル55、板状オブジェクト71、または基準カーソル78)と現在の入力データの内容を表す画像(第1モデル53、第2カーソル56、案内用オブジェクト75、または案内用カーソル77)とを逐次表示装置に表示させる。
第3の発明においては、入力装置は、所定の撮像対象を撮像するための撮像手段(撮像素子40)を備えていてもよい。このとき、情報処理装置は、撮像手段によって撮像される撮像画像における撮像対象の位置に関する座標(マーカ座標)を算出する座標算出手段(画像処理回路41)をさらに備える。入力データ取得手段は、座標を示すデータ、または、それから算出される入力装置の位置もしくは姿勢に対応するデータ(第1カーソル位置データ637)を入力データとして取得する。
第4の発明においては、入力装置は、加速度センサ(37)を備えていてもよい。このとき、入力データ取得手段は、加速度センサからの出力を示すデータ(加速度データ621)またはそれから算出される入力装置の姿勢に対応するデータを入力データとして取得する。
第5の発明においては、入力装置は、入力装置の位置または姿勢に関する状態を示すデータ(加速度データ621またはマーカ座標データ623)を出力してもよい。このとき、入力データ取得手段は、入力装置から出力されるデータを入力データとして取得する。
第6の発明においては、入力装置は、入力装置の位置または姿勢に関する状態を示すデータを出力してもよい。このとき、入力データ取得手段は、入力装置から出力されるデータに基づいて、仮想のゲーム空間に登場するオブジェクトを制御するためのデータ(第1カーソル位置データ637)を入力データとして算出して取得する。
第7の発明においては、解除受付手段は、プレイヤによる指示(解除受付ボタンの押下)があったことに応じて一時停止状態の解除の受付を開始してもよい。
第8の発明においては、入力装置は操作スイッチ(解除受付ボタン)を備えていてもよい。このとき、解除受付手段は、操作スイッチが操作されたことに応じて一時停止の解除の受付を開始する。
第9の発明においては、解除受付手段は、所定の処理が一時停止させられてから所定時間が経過したことに応じて(ステップS61の判定結果が肯定の場合)一時停止の解除の受付を開始してもよい。
第10の発明においては、解除受付手段は、第2比較手段(S66)と、開始実行手段(S67)とを含んでいてもよい。第2比較手段は、所定の処理が一時停止させられた後、入力データ取得手段によって逐次取得される現在の入力データと記憶手段に記憶された入力データとを比較する。開始実行手段は、現在の入力データの内容が記憶手段に記憶された入力データの内容に所定の基準よりも相違したことに応じて一時停止の解除の受付を開始する。
また、本発明は、上記発明における機能を情報処理装置のコンピュータに実行させるための情報処理プログラムの形態で提供されてもよい。
第1の発明によれば、所定の処理が一時停止(ポーズ)される場合、記憶手段は、入力データを記憶する。入力データは、入力装置の状態を反映したものであるので、記憶手段によって、ポーズ操作時(所定の処理が一時停止された時点)における入力装置の状態を記憶することができる。そして、解除手段は、現在の入力装置の状態とポーズ操作時における入力装置の状態とが近くなったことに応じて一時停止を解除する。これによって、一時停止が解除されてゲームが再開される際に、入力装置の状態を一時停止が行われる前とほぼ同じ状態にすることができる。したがって、第1の発明によれば、一時停止の前後においてゲーム操作が変わってしまうことに起因するプレイヤのミスを防止することができ、操作性を向上することができる。
第2の発明によれば、プレイヤは、現在の入力装置の状態とポーズ操作時における入力装置の状態とを画像で確認することができるので、一時停止を解除する操作が容易になる。
第3の発明によれば、撮像手段によって撮像される撮像画像を用いて、入力装置の位置や姿勢を容易に算出することができる。
第4の発明によれば、加速度センサによって検出される加速度を用いて、入力装置の姿勢を容易に算出することができる。
第5および第6の発明によれば、入力装置から出力されるデータ、または、それに基づいて得られるデータを入力データとして記憶するので、入力装置の状態を正確に記憶することができる。
第7の発明によれば、プレイヤが意図しないにもかかわらずゲームが再開されてしまうことを防止することができる。
第8の発明によれば、プレイヤは、入力装置の位置または姿勢を変化させる操作とは別の操作によって、解除の受付を開始するための指示を行うことができるので、当該指示の操作が容易になる。
第9および第10の発明によれば、プレイヤは解除の受付を開始するための操作を行う必要がないので、プレイヤの操作を簡易化することができる。
(ゲームシステムの構成)
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、据置型のゲーム装置を一例にして、本発明のゲーム装置について説明する。
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、据置型のゲーム装置を一例にして、本発明のゲーム装置について説明する。
図1において、ゲームシステム1は、家庭用テレビジョン受像機等のスピーカを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作データを与えるコントローラ7によって構成される。また、モニタ2の周辺(図では画面の上側)には、2つのマーカ8aおよび8bが設置される。マーカ8aおよび8bは、具体的には赤外LEDであり、それぞれモニタ2の前方に向かって赤外光を出力する。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される操作データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。なお、他の実施形態においてはコントローラ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は、その内部に備える通信部36(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて操作データを無線送信する。コントローラ7は、複数の操作ボタンからなる操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、少なくとも直交2軸方向の加速度を検出する加速度センサ37(後述)を備えている。加速度センサ37によって検出された加速度を示すデータは上記操作データの一部としてゲーム装置3へ送信される。ゲーム装置3は、当該加速度を示すデータに所定の演算を行うことによりコントローラ7の傾き(姿勢)を算出し、当該傾きに応じた処理を適宜実行する。また、コントローラ7は、当該コントローラ7から見た画像を撮像するための撮像情報演算部35(後述)を備えている。撮像情報演算部35は、モニタ2の周辺に配置された各マーカ8aおよび8bを撮像対象として、各マーカ8aおよび8bの画像を撮像する。ゲーム装置3は、この画像に基づいた演算処理によってコントローラ7の位置および姿勢に応じた処理を実行する。
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)10を備える。CPU10は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ13等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU10には、メモリコントローラ11を介して、GPU(Graphics Processing Unit)12、メインメモリ13、DSP(Digital Signal Processor)14、およびARAM(Audio RAM)15が接続される。また、メモリコントローラ11には、所定のバスを介して、コントローラI/F(インターフェース)16、ビデオI/F17、外部メモリI/F18、オーディオI/F19、およびディスクI/F21が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ22、およびディスクドライブ20が接続されている。
GPU12は、CPU10の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU12は、図示しない画像処理専用のメモリやメインメモリ13の一部の記憶領域を用いて画像処理を行う。GPU12は、これらを用いてモニタ2に表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ11およびビデオI/F17を介してモニタ2に出力する。
メインメモリ13は、CPU10で使用される記憶領域であって、CPU10の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ13は、CPU10によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ13に記憶されたゲームプログラムや各種データ等がCPU10によって実行される。
DSP14は、ゲームプログラム実行時にCPU10において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM15が接続される。ARAM15は、DSP14が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP14は、ARAM15に記憶されたサウンドデータを読み出し、メモリコントローラ11およびオーディオI/F19を介してモニタ2に備えるスピーカ22に出力させる。
メモリコントローラ11は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F16は、例えば4つのコントローラI/Fで構成され、それらが有するコネクタを介して嵌合可能な外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F16を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの操作データを受信し、コントローラI/F16を介して当該操作データをCPU10へ出力する。なお、他の実施形態においては、ゲーム装置3は、受信ユニット6に代えて、コントローラ7から送信されてくる操作データを受信する受信モジュールをその内部に設ける構成としてもよい。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU10に出力される。ビデオI/F17には、モニタ2が接続される。外部メモリI/F18には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F19にはモニタ2に内蔵されるスピーカ22が接続され、DSP14がARAM15から読み出したサウンドデータやディスクドライブ20から直接出力されるサウンドデータをスピーカ22から出力可能に接続される。ディスクI/F21には、ディスクドライブ20が接続される。ディスクドライブ20は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F19に出力する。
次に、図3A〜図8を参照して、コントローラ7について説明する。図3A〜図4は、コントローラ7の外観構成を示す斜視図である。図3Aは、コントローラ7の上面後方から見た斜視図であり、図3Bは、コントローラ7を下面後方から見た斜視図である。図4は、コントローラ7を前方から見た図である。
図3A〜図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ7を用いることによって、それに設けられたボタンを押下すること、コントローラ7自体の傾き(重力方向に対する角度)を変えること、および、コントローラ7自体の位置や向きを変えることによってゲーム操作を行うことができる。例えば、プレイヤは、コントローラ7の傾きを変化させることによって、ゲーム空間に登場する操作対象(後述するキャラクタ51等)に対する操作を行うことができる。また、例えば、プレイヤは、長手方向を軸としてコントローラ7を回転させたり、コントローラ7によって指し示される画面上の位置を変えたりする操作によって、操作対象に対する操作を行うことができる。ここで、「コントローラ7によって指し示される画面上の位置」とは、理想的には、コントローラ7の前端部から上記長手方向に延ばした直線とモニタ2の画面とが交わる位置であるが、厳密に当該位置である必要はなく、その周辺の位置をゲーム装置3によって算出することができればよい。以下では、コントローラ7によって指し示される画面上の位置を「コントローラ7の指示位置」と呼ぶ。また、コントローラ7(ハウジング31)の長手方向を、「コントローラ7の指示方向」と呼ぶことがある。
ハウジング31には、複数の操作ボタンが設けられる。ハウジング31の上面には、十字キー32a、Xボタン32b、Yボタン32c、Bボタン32d、セレクトスイッチ32e、メニュースイッチ32f、およびスタートスイッチ32gが設けられる。一方、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはAボタン32iが設けられる。これらの各ボタン(スイッチ)は、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。また、ハウジング31の上面には、遠隔からゲーム装置3本体の電源をオン/オフするための電源スイッチ32hが設けられる。
また、コントローラ7は撮像情報演算部35(図5B)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射口35aが設けられる。一方、ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、例えば32ピンのエッジコネクタであり、コントローラ7に他の機器を接続するために利用される。また、ハウジング31上面の後面側には複数のLED34が設けられる。ここで、コントローラ7には、他のコントローラ7と区別するためにコントローラ種別(番号)が付与される。LED34は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7からゲーム装置3へ操作データを送信する際、上記コントローラ種別に応じて複数のLED34のいずれか1つが点灯する。
次に、図5Aおよび図5Bを参照して、コントローラ7の内部構造について説明する。図5Aおよび図5Bは、コントローラ7の内部構造を示す図である。なお、図5Aは、コントローラ7の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bは、コントローラ7の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図5Bに示す基板300は、図5Aに示す基板300の裏面から見た斜視図となっている。
図5Aにおいて、ハウジング31の内部には基板300が固設されており、当該基板300の上主面上に操作ボタン32a〜32h、加速度センサ37、LED34、水晶振動子46、無線モジュール44、およびアンテナ45等が設けられる。そして、これらは、基板300等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。また、無線モジュール44およびアンテナ45によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子46は、後述するマイコン42の基本クロックを生成する。
一方、図5Bにおいて、基板300の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ7の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41によって構成されおり、それぞれ基板300の下主面に取り付けられる。また、基板300の下主面上の後端縁にコネクタ33が取り付けられる。そして、撮像情報演算部35の後方であって基板300の下主面上にAボタン32iが取り付けられていて、それよりさらに後方に、電池47が収容される。電池47とコネクタ33との間の基板300の下主面上には、バイブレータ48が取り付けられる。このバイブレータ48は、例えば振動モータやソレノイドであってよい。バイブレータ48が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームを実現することができる。
なお、図3A〜図5Bに示したコントローラ7の形状や、各操作ボタンの形状、数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができることは言うまでもない。また、コントローラ7における撮像情報演算部35の位置(撮像情報演算部35の光入射口35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。このとき、上記「コントローラ7の指示方向」は、光入射口に垂直な方向、すなわち、撮像素子40の撮像方向となる。
図6は、コントローラ7の構成を示すブロック図である。コントローラ7は、上述した加速度センサ37をその内部に備えている。加速度センサ37は、コントローラ7の加速度(重力加速度を含む)を検出する、すなわち、コントローラ7に加わる力(重力を含む)を検出する。以下、図7および図8を用いて、加速度の検出について詳細に説明する。
図7および図8は、コントローラ7の傾きと加速度センサの出力との関係を示す図である。なお、図7および図8に示すX’Y’Z’座標系は、コントローラ7を基準とした直交座標系であり、コントローラ7の回転に対応して回転し、コントローラ7の移動に対応して原点が移動する座標系である。ここでは、コントローラ7を基準とした上方向をY’軸正方向とし、前方向をZ’軸正方向とし、後側から前側を向いたときの左方向をX’軸正方向とする。
図7および図8に示すように、加速度センサ37は、コントローラ7を基準とした上下方向(図7に示すY’軸方向)、左右方向(図7に示すX’軸方向)および前後方向(図7に示すZ’軸方向)の3軸方向に関してそれぞれ加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサからの出力は各軸ごとの加速度値を表す。したがって、検出された加速度は、コントローラ7を基準に設定されるX’Y’Z’座標系(図7および図8参照)における3次元のベクトルとして表される。
図7は、重力加速度(図7に示すベクトルVa)がコントローラ7を基準とした下方向を向く状態を示している。なお、図7および図8では、コントローラ7は静止状態にあるものとする。図7に示す状態では、加速度センサ37によって検出される加速度の値(以下「加速度ベクトル」と呼ぶ)Vaは、Y’軸負方向を向く。このとき、加速度ベクトルVaは、Y’座標値のみが0でない値をとり、X’座標値およびZ’座標値は0となる。一方、図8は、図7に示す状態から、Z’軸を中心として回転させるようにコントローラ7を傾けた状態を示している。図8に示す状態では、加速度ベクトルVaの向きは図7に示す状態から変化し、X’座標値およびY’座標値が0でない値となり、Z’軸を中心として回転させているのでz座標値は0となる。図7および図8に示したように、加速度センサ37は、コントローラ7を基準とした3軸方向を各成分とする加速度の値を検出することができる。そして、マイコン42やCPU10などのコンピュータを利用したソフトウェア処理によって、検出した加速度の値を3軸方向の各成分からなる加速度ベクトルとして扱って演算を行うことによりコントローラ7の傾きを算出することができる。
加速度センサ37が検出した加速度を示すデータ(加速度データ)は、マイコン42へ出力される。なお、本実施形態では、加速度センサ37は、逐次(具体的には1フレーム時間毎)に加速度に応じた値を出力する。ゲーム装置3は、この値を加速度ベクトルとして扱いかつ所定の演算によりコントローラ7の傾き(姿勢)を算出し、当該傾きに応じたゲーム処理を実行する。
また、本実施形態においては、コントローラ7が静止している状態で加速度センサ37によって検出される加速度の大きさ、すなわち、加速度センサ37によって検出される加速度が重力加速度のみを表すときの当該加速度の大きさを、1と表す。例えば、図7に示す状態において検出される加速度ベクトルVaの各成分の値は、(X’,Y’,Z’)=(0,1,0)となる。
なお、加速度センサ37は、典型的には静電容量式の加速度センサが用いられるが、コントローラ7の傾きを算出することができるものであればよく、他の方式の加速度センサやジャイロスコープを用いることができる。しかしながら、加速度センサは各軸に沿った直線方向の加速度をそれぞれ検出するものであるのに対して、ジャイロスコープは回転に伴う角速度を検出するものである。つまり、加速度センサに代えてジャイロスコープを採用する場合には、上記のように検出される信号の性質が異なるため、両者を簡単に置き換えることはできない。そこで、加速度センサの代わりにジャイロスコープを用いて傾きを算出する場合には、大幅な変更を行う。具体的には、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロスコープから出力される角速度のデータを積分する。さらに、積分結果を用いて、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度で表されることになる。
なお、既に説明したように、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出する。したがって、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも絶対的な方向を検出することが可能である点で、加速度センサを用いる場合とジャイロスコープを用いる場合とで異なる。また、傾きとして算出される値の性質も上記のように角度であるかベクトルであるかの違いがあるので、加速度センサからジャイロスコープへの置き換えを行う際には当該傾きのデータに対しても所定の変換を行う必要がある。
図6の説明に戻り、コントローラ7は、加速度センサ37の他に、操作部32(各操作ボタン)、撮像情報演算部35、および通信部36を備えている。
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ7の動きでも追跡して解析することができる。
具体的には、撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ7の前方から入射する光から赤外線のみを通過させる。ここで、モニタ2の表示画面近傍に配置されるマーカ8aおよび8bは、モニタ2の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ38を設けることによってマーカ8aおよび8bの画像をより正確に撮像することができる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ39が集光した赤外線を撮像する。したがって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ8aおよび8b)の位置を算出する。以下、図9を用いて撮像対象の位置の算出方法を説明する。
図9は、撮像画像の一例を示す図である。図9に示す撮像画像A1においては、マーカ8aの画像8a’およびマーカ8bの画像8b’が左右に並んでいる。撮像画像が入力されると、まず、画像処理回路41は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。ここで、所定条件とは、撮像対象の画像(対象画像)を特定するための条件であり、所定条件の具体的な内容は、輝度が所定値以上の領域(高輝度領域)であり、かつ、領域の大きさが所定範囲内の大きさであることである。なお、所定条件は撮像対象を特定するための条件であればよく、他の実施形態においては、画像の色に関する条件を含んでいてもよい。
対象画像の位置を算出する際、まず、画像処理回路41は、撮像画像の領域から上記高輝度領域を対象画像の候補として特定する。撮像画像の画像データにおいて対象画像は高輝度領域として現れるからである。次に、画像処理回路41は、特定された高輝度領域の大きさに基づいて、その高輝度領域が対象画像であるか否かを判定する判定処理を行う。撮像画像には、対象画像である2つのマーカ8aおよび8bの画像8a’および8b’の他、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれている場合がある。この場合、マーカ8aおよび8bの画像8a’および8b’以外の画像も高輝度領域として現れてしまう。上記の判定処理は、対象画像であるマーカ8aおよび8bの画像8a’および8b’とそれ以外の画像とを区別し、対象画像を正確に特定するための処理である。具体的には、当該判定処理においては、特定された高輝度領域が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度領域が所定範囲内の大きさである場合、当該高輝度領域は対象画像を表すと判定され、高輝度領域が所定範囲内の大きさでない場合、当該高輝度領域は対象画像以外の画像を表すと判定される。
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度領域について、画像処理回路41は当該高輝度領域の位置を算出する。具体的には、当該高輝度領域の重心位置を算出する。なお、重心位置は撮像素子40の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子40によって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、重心位置の座標は、(0,0)から(1024,768)までの整数値で表現される。なお、撮像画像における位置は、図9に示すように、撮像画像の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とする座標系(xy座標系)で表現されるものとする。
以上のようにして、画像処理回路41は、撮像画像内において所定条件に合致する領域の位置を示す座標を当該領域毎に算出する。なお、以下では、画像処理回路41によって算出される座標をマーカ座標と呼ぶことがある。マーカ座標は、撮像画像に対応する平面上の位置を表すための座標系において撮像対象の位置を示す座標である。画像処理回路41は、マーカ座標を通信部36のマイコン42へ出力する。マーカ座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。マーカ座標はコントローラ7自体の向きや位置に対応して変化するので、ゲーム装置3は当該座標値を用いてコントローラ7の向きや位置を算出することができる。なお、本実施形態では、撮像画像からマーカ座標を算出する処理までをコントローラ7の画像処理回路41および/またはマイコン42で行ったが、例えば撮像画像をゲーム装置3に送り、以降の処理と同等の処理をゲーム装置3のCPU10等で行わせることもできる。
操作部32は、上述した十字キー32a等の各操作ボタン32a〜32iに相当し、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示すデータを通信部36のマイコン42へ出力する。
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理の際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータを無線送信する無線モジュール44を制御する。
操作部32、加速度センサ37、および撮像情報演算部35からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。ここで、通信部36から受信ユニット6への無線送信は所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。マイコン42は、受信ユニット6への送信タイミングが到来すると、メモリ43に格納されているデータを操作データとして無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ7から送信される。微弱電波信号はゲーム装置3側の受信ユニット6で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。
上記コントローラ7を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ7の傾きを変化させたり、コントローラ7自身の位置を動かしたり、コントローラ7を回転させたりするというゲーム操作を行うことができる。以下、上記コントローラ7を用いたゲーム操作について説明する。
図10は、コントローラ7を用いてゲーム操作するときの状態を概説する図解図である。図10に示すように、ゲームシステム1でコントローラ7を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ7を把持する。ここで、マーカ8aおよび8bは、モニタ2の画面の横方向と平行に、画面の上側に配置されている。なお、他の実施形態においては、マーカ8aおよび8bの配置位置ならびに2つのマーカ8aおよび8bを配置する向きは任意であり、例えば、マーカ8aおよび8bが画面の下側に配置されてもよいし、2つのマーカ8aおよび8bが画面の縦方向に沿って配置されてもよい。プレイヤは、コントローラ7の前面(撮像情報演算部35が撮像する光の入射口側)がマーカ8aおよび8bの方向を向く状態でコントローラ7を把持する。この状態で、プレイヤは、コントローラ7の傾きを変化させたり、コントローラ7が指し示す画面上の位置(指示位置)を変更したり、コントローラ7と各マーカ8aおよび8bとの距離を変更したりすることによってゲーム操作を行う。
(第1実施例)
以下、上述したゲームシステム1を用いて行われるゲームの具体例について説明する。まず、第1実施例として、加速度センサ37の出力(加速度ベクトル)を用いてゲーム操作が行われるゲームについて説明する。なお、第1実施例では、撮像情報演算部35から出力されるデータはゲーム操作に用いられないので、コントローラ7は撮像情報演算部35を備えていない構成であってもよい。このとき、モニタ2の画面周辺に設置されるマーカ8aおよび8bは不要である。また、第1実施例では、コントローラ7のZ’軸周りの回転に関するコントローラ7の傾きを算出するので、加速度センサ37は、図7に示す3軸方向の加速度のうち、X’軸方向およびY’軸方向の2軸方向の加速度を少なくとも検知することができればよい。
以下、上述したゲームシステム1を用いて行われるゲームの具体例について説明する。まず、第1実施例として、加速度センサ37の出力(加速度ベクトル)を用いてゲーム操作が行われるゲームについて説明する。なお、第1実施例では、撮像情報演算部35から出力されるデータはゲーム操作に用いられないので、コントローラ7は撮像情報演算部35を備えていない構成であってもよい。このとき、モニタ2の画面周辺に設置されるマーカ8aおよび8bは不要である。また、第1実施例では、コントローラ7のZ’軸周りの回転に関するコントローラ7の傾きを算出するので、加速度センサ37は、図7に示す3軸方向の加速度のうち、X’軸方向およびY’軸方向の2軸方向の加速度を少なくとも検知することができればよい。
図11は、第1実施例におけるゲーム画像の例を示す図である。第1実施例におけるゲームは、仮想の3次元ゲーム空間(2次元でもよい)に配置されるキャラクタ51を回転させて(図11に示す矢印参照)遊ぶゲームである。第1実施例では、ゲーム装置3は、コントローラ7のZ’軸周りの回転に基づいてキャラクタ51を3次元ゲーム空間の所定の軸周りに回転させる。すなわち、モニタ2の画面に表示されるキャラクタ51の傾きをコントローラ7のX’軸方向およびY’軸方向の傾きに基づいて決定する。本明細書では、通常のゲーム処理(第1実施例では、コントローラ7を傾ける操作に基づいてキャラクタ51を回転させる処理)が行われているゲーム状態を、「非ポーズ状態」と呼ぶ。なお、以下に示す第1実施例の説明においては、「コントローラ7のX’軸方向およびY’軸方向の傾き」を単に「コントローラ7の傾き」と記載することがある。
非ポーズ状態において、ポーズボタン(一時停止を指示するためのボタン。例えばスタートスイッチ32g)をプレイヤが押下する操作(ポーズ操作)が行われると、ゲーム装置3はゲーム処理を一時停止し、ゲーム状態を非ポーズ状態からポーズ状態へ移行させる。ポーズ状態とは、ゲーム処理が一時停止されている状態であって、かつ、一時停止を解除するための操作の受け付けが開始されていない状態である。図12は、ポーズ状態におけるゲーム画像の例を示す図である。ポーズ状態においては、ゲーム処理が一時停止されてゲーム処理は実行されないので、キャラクタ51は回転しない。ポーズ状態においては、ポーズ画像52がモニタ2の画面に表示される。ポーズ画像52は、ゲーム処理が一時停止中であることをプレイヤに通知するための画像である。
ポーズ状態において、所定のボタン(例えばセレクトスイッチ32e)をプレイヤが押下すると、ゲーム装置3は、ゲーム状態をポーズ状態から解除受付状態へ移行させる。解除受付状態は、ゲーム処理が一時停止されている状態であって、かつ、一時停止を解除するための操作の受け付けが開始されている状態である。つまり、上記所定のボタンは、ゲーム状態をポーズ状態から解除受付状態へ移行させる指示を行うためのボタンである。以下では、上記所定のボタンを解除受付ボタンと呼ぶ。プレイヤは、ポーズ状態からゲームを再開したい場合、まず解除受付ボタンを押下して、一時停止の解除を受け付け可能な状態にする。図13は、解除受付状態におけるゲーム画像の例を示す図である。解除受付状態において、ゲーム装置3は、コントローラ7を模した2つのモデル53および54をモニタ2の画面に表示させる。第1モデル53は、現在のコントローラ7の状態を表す。すなわち、解除受付状態においてプレイヤがコントローラ7の傾きを変化させると、ゲーム装置3は当該傾きに合わせて第1モデル53の傾きを変化させる。一方、第2モデル54は、ゲーム処理が一時停止された時点のコントローラ7の状態を表す。
解除受付状態においてゲーム装置3は、現在のコントローラ7の傾きがポーズ操作時(ゲーム処理が一時停止された時点)の傾きに一致するか否かを判定する。なお、第1実施例では、ゲーム装置3は、現在の傾きとポーズ操作時の傾きとが完全に一致しなくても、2つの傾きが所定の基準よりも近いと判断される場合には当該2つの傾きが一致したと判定する。判定の結果、一致すると判定される場合、ゲーム装置3は一時停止を解除する。したがって、ゲームを再開したいプレイヤは、コントローラ7の傾きがポーズ操作時の傾きに一致するように、コントローラ7を操作する。上述のように、解除受付状態においては各モデル53および54が表示されているので、プレイヤは、各モデル53および54を見ながら、第1モデル53の傾きが第2モデル54の傾きに一致するようにコントローラ7を操作すればよい。
図14は、一時停止が解除される時のゲーム画像の例を示す図である。図14に示すように、一時停止が解除される時点では、第1モデル53の傾きと第2モデル54の傾きとはほぼ一致している。また、一時停止が解除されると、ポーズ画像52ならびに各モデル53および54は消去される(画面に表示されなくなる)。なお、図14では、画面から削除される様子を点線で示している。以上のように一時停止が解除されることによって、ゲーム状態は解除受付状態から非ポーズ状態へ移行し、ゲーム処理が再開される。すなわち、ゲーム装置3は、コントローラ7を傾ける操作に基づいてキャラクタ51を回転させるゲーム処理を再開する。
以上のように、第1実施例によれば、ポーズ操作によってゲーム処理が一時停止された場合、コントローラ7の状態がポーズ操作時の状態に近くなったことを条件としてゲーム処理が再開される。これによれば、ゲーム処理が再開される時点におけるコントローラ7の状態は、ポーズ操作時の状態とほぼ同じ状態となる。したがって、一時停止を解除した時点における操作とポーズ時の操作とが全く異なることを防止することができるので、一時停止の前後において操作が変わってしまうことを防止することができる。例えば、図11〜図14に示す例で言えば、一時停止の直前には下方向を向いていたキャラクタ51が、一時停止の解除時に急に(プレイヤが予期していない方向である)上方向を向くことを防止することができる。シビアな操作が要求されるゲーム(図27参照)では、一時停止の前後でコントローラ7の状態をほぼ同じに保つことは特に有効である。
また、第1実施例によれば、ポーズ状態において一時停止を直接解除することは禁止されており、解除受付ボタンを押下することによってゲーム状態を解除受付状態へ移行するようにし、解除受付状態においてのみ一時停止の解除を可能としている。これによれば、プレイヤが意図しないにもかかわらずゲームが再開されてしまうことを防止することができる。具体的には、プレイヤはゲームを再開する意図がないにもかかわらず、コントローラ7の傾きがポーズ操作時の傾きと偶然一致してしまった結果、ゲームが再開されてしまうことを防止することができる。
次に、第1実施例においてゲーム装置3で実行されるプログラム処理について説明する。まず、ゲーム処理において用いられる主なデータについて図15を用いて説明する。図15は、ゲーム装置3のメインメモリ13に記憶される主なデータを示す図である。図15に示すように、メインメモリ13には、ゲームプログラム61、操作データ62、およびポーズ処理用データ63等が記憶される。なお、メインメモリ13には、図15に示すデータの他、ゲームに登場するキャラクタ51の画像データや、キャラクタ51の各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
ゲームプログラム61は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリ13に記憶される。ゲームプログラム61には、コントローラ7の傾きに応じてキャラクタ51を回転させるゲーム処理等の実行に必要なプログラムが含まれている。
操作データ62は、コントローラ7からゲーム装置3へ送信されてきて、メインメモリ13に記憶される。操作データ62には、加速度データ621および操作ボタンデータ622が含まれる。加速度データ621は、加速度センサ37によって検出された加速度を示すデータである。ここでは、加速度データ621は、図7に示すX’Y’Z’の3軸の方向に関する加速度ベクトルを示すデータである。また、操作ボタンデータ622は、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示すデータである。
ポーズ処理用データ63は、後述するゲーム処理において、ゲーム処理を一時停止したり一時停止を解除したりする際に用いられるデータである。ポーズ処理用データ63には、ゲーム状態データ631、キャラクタ方向データ632、ポーズ時状態データ633、しきい値データ634、第1モデルデータ635、および第2モデルデータ636が含まれる。
ゲーム状態データ631は、現在のゲーム状態を示すデータである。上述したように、本実施例では、ゲーム状態には「ポーズ状態」、「非ポーズ状態」、および「解除受付状態」という3つの状態がある。ゲーム状態データ631は、「ポーズ状態」、「非ポーズ状態」、および「解除受付状態」のいずれかを示す。
キャラクタ方向データ632は、プレイヤによって操作されるキャラクタ51の(ゲーム空間における)方向を示す。キャラクタ方向データ632は、具体的には、3次元ゲーム空間内の方向を示す3次元のベクトルのデータである。
ポーズ時状態データ633は、ゲーム処理が一時停止させられるタイミングにおけるコントローラ7の状態を示す。第1実施例において、コントローラ7の状態とは、コントローラ7の傾きに関する状態を指す。したがって、ポーズ時状態データ633は、ゲーム処理が一時停止させられた時点の加速度ベクトルを示す。
しきい値データ634は、上記解除受付状態において行われる判定処理、すなわち、現在のコントローラ7の傾きがポーズ操作時の傾きに一致するか否かの判定処理において用いられるしきい値を示す。このしきい値は、ゲームプログラム61において予め定められた固定値であってもよいし、プレイヤの指示やその他の条件に基づいて可変に定められる値であってもよい。
第1モデルデータ635は、上記第1モデルの方向を示すデータである。また、第2モデルデータ636は、上記第1モデルの方向を示すデータである。各モデルデータ635および636は、キャラクタ方向データ632と同様、3次元ゲーム空間内の方向を示す3次元のベクトルのデータである。
次に、ゲーム装置3において行われる処理の詳細を、図16〜図19を用いて説明する。図16は、ゲーム装置3において実行される処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ13等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ13に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図16に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、図16に示すフローチャートにおいては、ゲーム装置3において実行される処理のうち、ゲームを一時停止する処理および一時停止を解除する処理について詳細に示し、本願発明と直接関連しない他の処理については詳細な説明を省略する。
まず、ステップS1において、以降の処理において用いられるデータの初期化処理が実行される。具体的には、非ポーズ状態を示すデータがゲーム状態データ631としてメインメモリ13に記憶される。また、ゲームプログラム61において予め定められた値を示すデータがしきい値データ634としてメインメモリ13に記憶される。
続くステップS2において、ゲーム空間が構築されてモニタ2に表示される。CPU10は、例えば3次元のゲーム空間を構築し、さらに、ゲーム空間に登場するキャラクタ51を所定の初期位置に配置する。以上のように構築されたゲーム空間を表すゲーム画像が生成され、生成されたゲーム画像がモニタ2に表示される。以降、ステップS3〜S9の処理ループが1フレーム毎に繰り返されることによって、ゲームが進行していく。
ステップS3において、CPU10は、コントローラ7から操作データを取得する。すなわち、コントローラ7は所定時間間隔(例えば、1フレーム時間間隔)で操作データをゲーム装置3へ送信してくるので、CPU10は、送信されてきた操作データをメインメモリ13に記憶する。この操作データには、少なくとも上記加速度データおよび操作ボタンデータが含まれている。CPU10は、加速度データおよび操作ボタンデータをメインメモリ13に記憶する。なお、本実施例においてステップS2の処理は1フレーム時間毎に実行されるので、ゲーム装置3は、加速度データおよび操作ボタンデータを逐次取得することができる。
続くステップS4において、CPU10は、現在のゲーム状態が解除受付状態であるか否かを判定する。ステップS4の判定は、メインメモリ13に記憶されているゲーム状態データ631を参照することによって行われる。具体的には、ゲーム状態データ631が解除受付状態を示す場合、ステップS4の判定結果は肯定となり、ゲーム状態データ631が解除受付状態以外の状態を示す場合、ステップS4の判定結果は否定となる。ステップS4の判定結果が肯定の場合、後述するステップS8の処理が実行される。一方、ステップS4の判定結果が否定の場合、ステップS5の処理が実行される。
ステップS5において、CPU10は、現在のゲーム状態がポーズ状態であるか否かを判定する。ステップS5の判定は、メインメモリ13に記憶されているゲーム状態データ631を参照することによって行われる。具体的には、ゲーム状態データ631がポーズ状態を示す場合、ステップS5の判定結果は肯定となり、ゲーム状態データ631がポーズ状態以外の状態を示す場合、ステップS5の判定結果は否定となる。ステップS5の判定結果が肯定の場合、後述するステップS7の処理が実行される。一方、ステップS5の判定結果が否定の場合、ステップS6の処理が実行される。なお、ゲームが開始されてからポーズボタンが押下されていない状態では、ステップS4およびS5の判定結果は否定となるので、ステップS6の処理が実行される。
ステップS6においては、非ポーズ状態処理が実行される。非ポーズ状態処理は、通常のゲーム処理(本実施例では、コントローラ7を傾ける操作に基づいてキャラクタ51を回転させる処理)を実行するための処理である。以下、図17を参照して非ポーズ状態処理の詳細について説明する。
図17は、図16に示す非ポーズ状態処理(ステップS6)の詳細を示すフローチャートである。非ポーズ状態処理においては、まずステップS11において、CPU10はポーズボタン(第1実施例では、スタートスイッチ32g)が押下されたか否かを判定する。ステップS11の判定は、メインメモリ13に記憶されている操作ボタンデータ622を参照することによって行われる。すなわち、操作ボタンデータ622が、スタートスイッチ32gが押下されたことを示す場合、ステップS11の判定結果は肯定となり、操作ボタンデータ622が、スタートスイッチ32gが押下されていないことを示す場合、ステップS11の判定結果は否定となる。ステップS11の判定結果が肯定の場合、後述するステップS14の処理が実行される。一方、ステップS11の判定結果が否定の場合、ステップS12の処理が実行される。
以上のように、非ポーズ状態が継続する場合、ステップS11の判定結果が否定となるのでステップS12およびS13の処理が実行される。一方、非ポーズ状態においてポーズボタンが押下された場合、ステップS11の判定結果が肯定となるのでステップS14〜S16の処理が実行される。
ステップS12においては、ゲームを進行させるためのゲーム処理が実行される。第1実施例では、コントローラ7を傾ける操作に基づいてキャラクタ51を回転させる処理が実行される。具体的には、CPU10は、メインメモリ13に記憶されている加速度データ621により示される加速度ベクトルの方向に基づいて、ゲーム空間におけるキャラクタ51の方向を決定する。キャラクタ51の方向の算出方法はどのようなものであってもよい。例えば、加速度ベクトルの方向と一対一に対応するようにキャラクタ51の方向を決定するようにしてもよい。また例えば、加速度ベクトルの変化量(今回のフレームにおける加速度ベクトルと前回のフレームにおける加速度ベクトルとの差分)に基づいてキャラクタ51を回転させる角度を決定するようにしてもよい。決定されたキャラクタ51の方向を示すデータは、キャラクタ方向データ632としてメインメモリ13に記憶される。
続くステップS13においては、CPU10は、ステップS12の処理結果に従ってゲーム画像を生成してモニタ2に表示させる(図11)。すなわち、ステップS12で決定された方向を向くキャラクタ51の画像がモニタ2に表示される。ステップS13の処理が終了するとCPU10は非ポーズ状態処理を終了する。
一方、ステップS14においては、ゲーム状態がポーズ状態に設定される。具体的には、CPU10は、メインメモリ13に記憶されているゲーム状態データ631の内容を、ポーズ状態を示すデータに書き換える。これによって、次のフレーム処理(ステップS3〜S9の処理)においては、ステップS4の判定結果が否定となるとともにステップS5の判定結果が肯定となるので、ステップS7の処理が実行される。したがって、ステップS12およびS13のゲーム処理が実行されないので、上記ステップS14によってゲーム処理が一時停止されたこととなる。
続くステップS15において、コントローラ7の状態(第1実施例では、コントローラ7の傾きの状態)が記憶される。第1実施例では、CPU10は、現在の加速度ベクトルを示すデータ、すなわち、ステップS3で取得された加速度データ621をポーズ時状態データ633としてメインメモリ13に記憶する。なお、ステップS15で記憶されるデータは、コントローラ7の傾きに関する状態を示すものであればどのようなものであってもよい。例えば、ステップS15において、ステップS12と同様の方法で、キャラクタ51の方向を示すデータを算出し、算出されたデータをポーズ時状態データ633としてメインメモリ13に記憶するようにしてもよい。また、例えば、加速度ベクトルからキャラクタ方向データを算出するまでの過程において算出される中間データをポーズ時状態データ633としてメインメモリ13に記憶するようにしてもよい。
続くステップS16において、CPU10は、一時停止中のゲーム画像をモニタ2に表示させる。具体的には、ゲーム処理が一時停止された時点のゲーム画像にポーズ画像52を重ねた画像をモニタ2に表示させる(図12参照)。なお、ゲーム処理が一時停止された時点のゲーム画像とは、前回のフレーム処理のステップS13で表示されるゲーム画像のことである。ステップS16の処理が終了するとCPU10は非ポーズ状態処理を終了する。
以上に説明したように、非ポーズ状態(図11)においてプレイヤがポーズボタンを押下すると、ゲーム装置3はゲーム状態をポーズ状態へ移行させ(ステップS14)、一時停止中のゲーム画像をモニタ2に表示させる(ステップS16、図12参照)。このとき、ゲーム装置3は、ゲーム処理が一時停止させられるタイミングにおけるコントローラの傾きに関する状態を記憶する(ステップS15)。
次に、ポーズ状態における処理について説明する。図18は、図16に示すポーズ状態処理(ステップS7)の詳細を示すフローチャートである。ポーズ状態処理においては、まずステップS21において、CPU10は解除受付ボタン(本実施例では、セレクトスイッチ32e)が押下されたか否かを判定する。ステップS21の判定は、メインメモリ13に記憶されている操作ボタンデータ622を参照することによって行われる。すなわち、操作ボタンデータ622が、セレクトスイッチ32eが押下されたことを示す場合、ステップS21の判定結果は肯定となり、操作ボタンデータ622が、セレクトスイッチ32eが押下されていないことを示す場合、ステップS21の判定結果は否定となる。ステップS21の判定結果が肯定の場合、後述するステップS22の処理が実行される。一方、ステップS21の判定結果が否定の場合、ステップS22の処理がスキップされてステップS23の処理が実行される。
なお、第1実施例においては、解除受付ボタンは、ポーズボタン(スタートスイッチ32g)とは異なるセレクトスイッチ32eであるとしたが、他の実施例においては、解除受付ボタンとポーズボタンとを同じボタンとしてもよい。
ステップS22においては、ゲーム状態が解除受付状態に設定される。具体的には、CPU10は、メインメモリ13に記憶されているゲーム状態データ631の内容を、解除受付状態を示すデータに書き換える。これによって、次のフレーム処理(ステップS3〜S9の処理)においてはステップS4の判定結果が肯定となるのでステップS8の処理が実行されることとなる。
ステップS23においては、CPU10は、一時停止中のゲーム画像をモニタ2に表示させる。具体的には、ゲーム処理が一時停止された時点のゲーム画像にポーズ画像52を重ねた画像をモニタ2に表示させる(図12参照)。ステップS23の処理が終了するとCPU10はポーズ状態処理を終了する。
次に、解除受付状態における処理について説明する。図19は、図16に示す解除受付状態処理(ステップS8)の詳細を示すフローチャートである。上述したように、ポーズ状態において解除受付ボタンが押下された場合(ステップS21でYes)、ゲーム状態は解除受付状態へ移行し(ステップS22)、次のフレーム処理においては解除受付状態処理が実行される。
解除受付状態処理においては、まずステップS31において、CPU10はポーズボタン(第1実施例では、スタートスイッチ32g)が押下されたか否かを判定する。ステップS31の判定は、上述のステップS11の処理と同じ処理である。ステップS31の判定結果が肯定の場合、後述するステップS37の処理が実行される。一方、ステップS31の判定結果が否定の場合、ステップS32の処理が実行される。
ステップS32においては、CPU10は、コントローラ7の現在の状態(傾き)とポーズ操作時のコントローラ7の状態(傾き)とを比較し、両者が一致するか否かを判定する。コントローラ7の現在の傾きは、メインメモリ13に記憶されている加速度データ621によって示される。また、ポーズ操作時のコントローラ7の傾きは、メインメモリ13に記憶されているポーズ時状態データ633によって示される。したがって、CPU10は、加速度データ621により示される傾きとポーズ時状態データ633により示される傾きとを比較する。上述したように、第1実施例では、2つの傾きが完全に一致しなくても、2つの傾きがある程度近いと判断される場合には当該2つの傾きが一致したと判断する。
具体的には、CPU10は、加速度データ621により示されるベクトルと、ポーズ時状態データ633により示されるベクトルとの差分の大きさ(2つのベクトルの終点間の距離)を算出する。そして、この大きさが、予め定められたしきい値よりも小さいか否かを判定する。当該しきい値は、メインメモリ13に記憶されているしきい値データ634により示される値である。上記差分の大きさがしきい値よりも小さい場合、コントローラ7の現在の傾きとポーズ操作時の傾きとが一致すると判定され、上記差分の大きさがしきい値以上である場合、コントローラ7の現在の傾きとポーズ操作時の傾きとが一致しないと判定される。
なお、コントローラ7の現在の傾きとポーズ操作時の傾きとが一致するか否かの判定を行う方法は、上記差分の大きさを算出する方法に限らずどのような方法であってもよい。例えば、2つのベクトルのなす角度の大きさが、予め定められた所定値よりも小さい場合、コントローラ7の現在の傾きとポーズ操作時の傾きとが一致すると判定し、当該角度の大きさが所定値以上の場合、コントローラ7の現在の傾きとポーズ操作時の傾きとが一致しないと判定するようにしてもよい。
ステップS32の判定において、コントローラ7の現在の傾きとポーズ操作時の傾きとが一致すると判定される場合、ステップS33の処理が実行される。一方、コントローラ7の現在の傾きとポーズ操作時の傾きとが一致すると判定される場合、ステップS33およびS34の処理がスキップされてステップS35の処理が実行される。
ステップS33においては、CPU10は、現在の加速度ベクトルが信頼できるか否かを判定する。「加速度ベクトルが信頼できる」とは、加速度ベクトルがコントローラ7の傾きを正確に表していることを意味し、加速度ベクトルが重力加速度のみを表していることを意味する。ここで、本実施例で用いる加速度センサ37は、コントローラ7が静止している時には重力加速度のみを表すので、コントローラ7の傾きは加速度ベクトルによって正確に表されることになる。しかし、コントローラ7がプレイヤによって動かされている時には、加速度センサ37は、重力加速度の他にコントローラ7に加わる慣性力に起因する加速度の成分を含めた加速度を検出することになる。このような加速度が検出される場合、加速度ベクトルは、コントローラ7の傾きを正確に表すものではなくなる。
そこで、本実施例では、CPU10は、加速度ベクトルが信頼できるか否かを、加速度ベクトルの大きさに基づいて判定する。具体的には、加速度ベクトルの大きさが重力加速度の大きさ(すなわち、1)に近い場合、加速度ベクトルが信頼できるものであると判定し、加速度ベクトルの大きさが重力加速度の大きさから離れている場合、加速度ベクトルは信頼できないと判定する。なお、加速度ベクトルの大きさが重力加速度の大きさに近いか、それとも離れているかの判定は、加速度ベクトルの大きさと重力加速度の大きさとの差分の絶対値が、予め定められた所定値よりも小さいか、それとも大きいかによって行えばよい。
コントローラ7がプレイヤによって動かされている時、加速度ベクトルには、重力加速度の成分と、コントローラ7に加わる慣性力に起因する加速度の成分とが含まれるので、加速度ベクトルの大きさと重力加速度の大きさとは大きく異なることがある。したがって、加速度ベクトルが信頼できるか否かを加速度ベクトルの大きさに基づいて判定することによって、ステップS33の判定を正確に行うことができる。
なお、他の実施例においては、加速度ベクトルが信頼できるか否かの判定を、加速度ベクトル(または加速度ベクトルの向き)の変化量に基づいて行うようにしてもよい。具体的には、前回のフレーム処理において取得された加速度ベクトルと、今回のフレーム処理において取得された加速度ベクトルとの変化量を算出し、変化量が所定量よりも小さい場合には加速度ベクトルが信頼できると判定するようにしてもよい。
ステップS33の判定において、加速度ベクトルは信頼できると判定される場合、ステップS34の処理が実行される。一方、加速度ベクトルは信頼できないと判定される場合、ステップS34の処理がスキップされてステップS35の処理が実行される。なお、他の実施例においては、一定時間(例えば、数フレーム処理の間連続して)加速度ベクトルが信頼できると判定された場合にのみ、ステップS34の処理を実行するようにしてもよい。
ステップS34においては、ゲーム状態が非ポーズ状態に設定される。具体的には、CPU10は、メインメモリ13に記憶されているゲーム状態データ631の内容を、非ポーズ状態を示すデータに書き換える。これによって、次のフレーム処理(ステップS3〜S9の処理)においては、ステップS4の判定結果が否定となるとともにステップS5の判定結果が否定となるので、ステップS6の処理が実行される。したがって、次のフレーム処理において(ポーズボタンが再び押下されなければ)ステップS12およびS13のゲーム処理が実行されるので、上記ステップS34によって一時停止が解除されてゲーム処理が再開されることとなる。
ステップS35においては、ゲーム空間における各モデル53および54の方向が算出される。各モデル53および54の方向は、キャラクタ51の方向を算出する場合と同様の方法で、加速度ベクトルに基づいて算出される。なお、現在のコントローラ7の傾きを表す第1モデル53の方向は、現在の加速度ベクトル、すなわち、メインメモリ13に記憶されている加速度データ621により示される加速度ベクトルに基づいて算出される。一方、ポーズ操作時のコントローラ7の傾きを表す第2モデル54の方向は、ポーズ操作時の加速度ベクトル、すなわち、メインメモリ13に記憶されているポーズ時状態データ633により示される加速度ベクトルに基づいて算出される。
続くステップS36において、CPU10は、一時停止中のゲーム画像に加えて各モデル53および54をモニタ2に表示させる(図13参照)。なお、一時停止中のゲーム画像とは、上記ステップS16において表示されるゲーム画像である。このように、本実施例においては、解除受付状態においては各モデル53および54が表示されるので、プレイヤは、これらのモデル53および54を参照しながら、第1モデル53の方向が第2モデル54の方向に一致するようにコントローラ7の傾きを操作すればよく、一時停止を解除する操作が容易になる。ステップS36の処理が終了するとCPU10は解除受付状態処理を終了する。
一方、ステップS37においては、ゲーム状態がポーズ状態に設定される。ステップS37の具体的な処理内容は、図17に示すステップS14と同じである。ステップS37によって、次のフレーム処理(ステップS3〜S9の処理)においては、ステップS4の判定結果が否定となるとともにステップS5の判定結果が肯定となるので、ステップS7の処理が実行される。したがって、ゲーム状態はポーズ状態に移行したこととなる。以上のように、本実施例では、解除受付状態においてポーズボタンが押下された場合には、ゲーム状態は再度ポーズ状態に戻ることになる。
続くステップS38においては、CPU10は、一時停止中のゲーム画像をモニタ2に表示させる(図12参照)。ステップS38の具体的な処理内容は、図18に示すステップS23と同じである。ステップS38の処理が終了するとCPU10は解除受付状態処理を終了する。
以上に説明したように、解除受付状態においては、コントローラ7の現在の傾きとポーズ操作時のコントローラ7の傾きとの比較が行われ、両者が一致するか否かが判定される(ステップS32)。さらに、両者が一致する場合には、ゲーム状態が非ポーズ状態へ移行され(ステップS34)、ゲームが再開する。
図16の説明に戻り、ステップS6、S7、またはS8の処理の次に、ステップS9の処理が実行される。ステップS9において、CPU10はゲームを終了するか否かを判定する。ステップS9の判定は、例えば、プレイヤがゲームをクリアしたか否かや、ゲームに制限時間が設けられている場合には当該制限時間が経過したか否かによって行われる。ステップS9の判定結果が否定である場合、ステップS3の処理が再度実行され、以降、ゲームを終了すると判定されるまでステップS3〜S9の処理ループが実行される。一方、ステップS9の判定結果が肯定である場合、CPU10は図16に示す処理を終了する。以上で、ゲーム装置3において実行される処理の説明を終了する。
以上のように、第1実施例によれば、ゲーム処理が一時停止(ポーズ)される場合、ポーズ操作時におけるコントローラ7の傾き(加速度ベクトル)を記憶しておき、現在のコントローラ7の傾きとポーズ操作時におけるコントローラ7の傾きとを比較し、2つの傾きが一致することに応じて一時停止を解除する。これによって、一時停止が解除されてゲームが再開される際に、コントローラ7の傾きを、一時停止が行われる前と同じ傾きにすることができる。したがって、第1実施例によれば、一時停止の前後においてゲーム操作が変わってしまうことに起因するプレイヤのミスを防止することができ、操作性を向上することができる。
なお、他の実施例においては、ポーズボタンが押下されたことに加えて、ポーズ操作時のコントローラ7の状態がプレイヤにとって再現しやすい状態であることを条件としてゲーム処理を一時停止するようにしてもよい。ポーズ操作時のコントローラ7の状態をプレイヤが再現することが困難な場合、一時停止を解除することがプレイヤにとって困難になるからである。なお、ポーズ操作時のコントローラ7の状態がプレイヤにとって再現しやすい場合とは、例えば、コントローラ7が激しく動かされていない場合である。コントローラ7が激しく動かされていないか否かの判定方法としては、加速度センサの出力である加速度ベクトルの大きさが重力加速度の大きさに近いか否かによって行う方法が考えられる。
(第2実施例)
次に、第2実施例として、撮像情報演算部35の出力(マーカ座標)を用いてゲーム操作が行われるゲームについて説明する。なお、第2実施例では、加速度センサ37から出力される加速度ベクトルのデータはゲーム操作に用いられないので、コントローラ7は加速度センサ37を備えていない構成であってもよい。
次に、第2実施例として、撮像情報演算部35の出力(マーカ座標)を用いてゲーム操作が行われるゲームについて説明する。なお、第2実施例では、加速度センサ37から出力される加速度ベクトルのデータはゲーム操作に用いられないので、コントローラ7は加速度センサ37を備えていない構成であってもよい。
図20は、第2実施例におけるゲーム画像の例を示す図である。第2実施例におけるゲームは、画面上に表示されるカーソル55を操作して、仮想の2次元ゲーム空間(3次元でもよい)に配置されるキャラクタ51を変形させて遊ぶゲームである。第2実施例では、ゲーム装置3は、前述したコントローラ7の指示位置(コントローラ7によって指し示される画面上の位置)に基づいてカーソル55を画面上で移動させる。すなわち、画面上におけるカーソル55の位置を当該指示位置に基づいて決定する。なお、以下では、後述するカーソル56と区別する目的で、カーソル55を第1カーソル55と呼ぶ。
第2実施例では、非ポーズ状態においては、通常のゲーム処理として、コントローラ7の指示位置を変更する操作に基づいて第1カーソル55を移動させるとともに、第1カーソル55の位置に応じてキャラクタ51を変形させる処理が実行される。すなわち、非ポーズ状態において、ゲーム装置3は、コントローラ7から送信されてくる操作データに含まれるマーカ座標データに基づいてコントローラ7の指示位置を算出する。そして、算出した指示位置に第1カーソル55を移動させるとともに、第1カーソル55の位置に応じてキャラクタ51を変形させる。図20に示す例では、キャラクタ51の鼻が第1カーソル55の位置に応じて変形する。具体的には、第1カーソル55は画面の左端付近に位置しているので、キャラクタ51の鼻が左に伸びるように変形している。なお、他の実施例では、キャラクタ51の任意の位置をプレイヤが指定する(例えば、所望の位置まで第1カーソル55を移動させてコントローラ7のBボタン32dを押下する)ことによって、任意の位置を変形させることができるようにしてもよい。
非ポーズ状態において、ポーズボタン(例えばスタートスイッチ32g)をプレイヤが押下するポーズ操作が行われると、ゲーム装置3はゲーム処理を一時停止し、ゲーム状態を非ポーズ状態からポーズ状態へ移行させる。図21は、第2実施例におけるポーズ状態のゲーム画像の例を示す図である。ポーズ状態においては、ゲーム処理が一時停止されてゲーム処理は実行されないので、第1カーソル55は移動されず、ポーズ操作時の位置に固定される。第1実施例と同様、ポーズ状態においてはポーズ画像52がモニタ2の画面に表示される。
ポーズ状態において、解除受付ボタン(例えばセレクトスイッチ32e)をプレイヤが押下すると、ゲーム装置3は、ゲーム状態をポーズ状態から解除受付状態へ移行させる。つまり、プレイヤは、ポーズ状態からゲームを再開したい場合、第1実施例と同様、まず解除受付ボタンを押下する。図22は、第2実施例における解除受付状態のゲーム画像の例を示す図である。解除受付状態において、ゲーム装置3は、第1カーソル55とは異なる第2カーソル56をモニタ2の画面に表示させる。第2カーソル56は、現在のコントローラ7の指示位置を表す。
解除受付状態においてゲーム装置3は、現在のコントローラ7の指示位置がポーズ操作時の指示位置に一致するか否かを判定する。なお、第2実施例では、ゲーム装置3は、現在の指示位置とポーズ時の指示位置とが完全に一致しなくても、2つの位置がある程度近いと判断される場合には当該2つの指示位置が一致したと判定する。判定の結果、一致すると判定される場合、ゲーム装置3は一時停止を解除する。したがって、ゲームを再開したいプレイヤは、コントローラ7の指示位置がポーズ操作時の指示位置に一致するようにコントローラ7を操作する。上述のように、解除受付状態においては2つのカーソル55および56が表示されているので、プレイヤは、各カーソル55および56を見ながら、第2カーソル56の位置が第1カーソル55の位置に一致するようにコントローラ7を操作すればよい。
図23は、第2実施例において一時停止が解除される時のゲーム画像の例を示す図である。図23に示すように、一時停止が解除される時点では、第1カーソルの位置と第2カーソル56の位置とはほぼ一致している。また、一時停止が解除されると、ポーズ画像52および第2カーソル56は消去される(画面に表示されなくなる)。なお、図23では、画面から削除される様子を点線で示している。以上のように一時停止が解除されることによって、ゲーム状態は解除受付状態から非ポーズ状態へ移行し、ゲーム処理が再開される。すなわち、ゲーム装置3は、コントローラ7の指示位置を変更する操作に基づいて第1カーソル55を移動させ、第1カーソル55の位置に応じてキャラクタ51を変形させる処理が実行される。
以上のように、第2実施例によれば、第1実施例と同様、ポーズ操作によってゲーム処理が一時停止された場合、コントローラ7の状態がポーズ操作時の状態に近くなったことを条件としてゲーム処理が再開される。したがって、一時停止を解除した時点における操作とポーズ時の操作とが全く異なることを防止することができるので、一時停止の前後において操作が変わってしまうことを防止することができる。
また、第2実施例では、コントローラ7の指示位置を用いてゲーム処理を行うものである。ここで、コントローラ7の指示位置は、コントローラ7の位置および姿勢に対応して変化するものであり、コントローラ7の位置および姿勢に関する状態を示す情報であると言える。つまり、第2実施例は、コントローラ7の位置および/または姿勢に関する状態を撮像情報演算部35によって算出し、算出した結果をゲーム処理に用いるものである。本発明は、第2実施例のように、コントローラ7の状態を撮像情報演算部35によって算出する場合にも適用することができる。
次に、第2実施例においてゲーム装置3で実行されるプログラム処理について説明する。まず、ゲーム処理において用いられる主なデータについて図24を用いて説明する。図24は、第2実施例においてゲーム装置3のメインメモリ13に記憶される主なデータを示す図である。なお、図24においては、図15に示すデータと同様のデータについては図15と同じ参照符号を付して詳細な説明を省略する。以下、第1実施例との相違点を中心に図24について説明する。
図24に示すように、第1実施例と同様、メインメモリ13には、ゲームプログラム61、操作データ62、およびポーズ処理用データ63等が記憶される。第2実施例においては、操作データ62には、マーカ座標データ623および操作ボタンデータ622が含まれる。
マーカ座標データ623は、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための座標系(図9に示すxy座標系)で表現される。
第2実施例においては、ポーズ処理用データ63は、ゲーム状態データ631、ポーズ時状態データ633、しきい値データ634、第1カーソル位置データ637、および第2カーソル位置データ638を含んでいる。
第1カーソル位置データ637は、画面上における第1カーソル55の位置を示すデータである。第2カーソル位置データ638は、画面上における第2カーソル56の位置を示すデータである。
また、第1実施例と同様、ポーズ時状態データ633は、ゲーム処理が一時停止させられるタイミングにおけるコントローラ7の状態を示す。なお、第2実施例においては、コントローラ7の状態とは、コントローラ7の指示位置に関する状態を指す。したがって、第2実施例においては、ゲーム処理が一時停止させられた時点の第1カーソル位置データ637がポーズ時状態データ633として記憶される。
なお、第2実施例において用いられるしきい値データ634は、第1実施例において用いられたしきい値データと同じ目的で用いられるデータである。ただし、第2実施例におけるしきい値データ634の具体的な値は、第1実施例におけるしきい値データの値とは異なっていてもよい。
以下、第2実施例においてゲーム装置3において行われるゲーム処理の詳細を、図25および26を用いて説明する。第2実施例において実行される処理を示すメインフローチャートは、図16に示す処理と同様であるので、メインフローチャートに示される処理についての詳細な説明は省略する。なお、第2実施例におけるステップS3において取得される操作データはマーカ座標データおよび操作ボタンデータを含むので、ステップS3においては、マーカ座標データ623および操作ボタンデータ622がメインメモリ13に記憶される。
まず、第2実施例における非ポーズ状態処理について説明する。図25は、第2実施例における非ポーズ状態処理の詳細を示すフローチャートである。非ポーズ状態処理においては、まずステップS41において、CPU10はポーズボタン(第2実施例では、スタートスイッチ32g)が押下されたか否かを判定する。ステップS41の処理は、第1実施例におけるステップS11の処理と同じである。ステップS41の判定結果が肯定の場合、後述するステップS44の処理が実行される。一方、ステップS41の判定結果が否定の場合、ステップS42の処理が実行される。
ステップS42においては、ゲームを進行させるためのゲーム処理が実行される。第2実施例では、コントローラ7の指示位置に基づいて第1カーソル55を移動させる処理、および、第1カーソル55の位置に応じてキャラクタ51を変形させる処理が実行される。具体的には、CPU10は、メインメモリ13に記憶されているマーカ座標データ623により示されるマーカ座標に基づいて、コントローラ7の指示位置、すなわち、第1カーソル55の位置を決定する。ここで、コントローラ7の指示位置の算出方法はどのようなものであってもよいが、例えば以下に示す方法が考えられる。
以下、コントローラ7の指示位置の算出方法の一例を説明する。コントローラ7から取得されるマーカ座標データ623は、マーカ8aおよび8bに対応する2つのマーカ座標を示すので、まずCPU10は、マーカ座標データから2つのマーカ座標の中点を算出する。この中点の位置は、撮像画像に対応する平面上の位置を表すための上記xy座標系によって表現される。次に、CPU10は、当該中点の位置を示す座標を、モニタ2の画面上の位置を表すための座標系(x’y’座標系)の座標に変換する。なお、x’y’座標系が、画面の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とするものとすれば、上記変換は次のように行うことができる。すなわち、中点座標のx成分の正負を反転させて所定の割合(例えば、xy座標系における撮像画像のx軸方向の長さを、x’y’座標系における画面のx’軸方向の長さに一致させる割合)でスケーリングすることによって、指示位置のx’成分を得ることができる。また、中点座標のy成分を所定の割合(例えば、xy座標系における撮像画像のy軸方向の長さを、x’y’座標系における画面のy’軸方向の長さに一致させる割合)でスケーリングすることによって、指示位置のy’成分を得ることができる。なお、x成分からx’成分への変換の際に正負を反転させるのは、マーカ座標の中点の移動方向と、コントローラ7の実際の指示位置の移動方向とは、左右方向(x軸方向またはx’軸方向)に関して逆になるからである。つまり、コントローラ7の実際の指示位置がx’軸方向の負方向(正方向)に移動する場合、マーカ座標の中点がx軸方向の正方向(負方向)に移動するからである。以上のようにして算出されたx’y’座標値により示される位置がコントローラ7の指示位置となる。また、より正確な指示位置の算出方法の他の一例としては、上記2つのマーカ座標を結ぶベクトルがy軸に平行になるように画像中央を中心とした画像の回転を行い、回転後の当該2つのマーカ座標の中点に対して上記変換処理を行う。このような回転による補正処理を行うことによって、コントローラ7が傾いている場合等にも、正確に指示位置を算出することができる。
第2実施例では、以上のようにしてコントローラ7の指示位置、すなわち、第1カーソル55の位置が算出される。算出された第1カーソル55の位置を示すデータは、第1カーソル位置データ637としてメインメモリ13に記憶される。ステップS42においては、さらに、CPU10は、第1カーソル55の位置に応じてキャラクタ51を変形する。図24には図示していないが、変形されたキャラクタの形状を示すデータがメインメモリ13に記憶される。
続くステップS43において、CPU10は、ステップS42の処理結果に従ってゲーム画像を生成してモニタ2に表示させる。すなわち、ステップS42で決定された位置に第1カーソル55を表示するとともに、ステップS42で変形されたキャラクタ51の画像がモニタ2に表示される(図20)。ステップS43の処理が終了するとCPU10は非ポーズ状態処理を終了する。
一方、ステップS44においては、ゲーム状態がポーズ状態に設定される。ステップS44の処理は、第1実施例におけるステップS14の処理と同じである。第1実施例と同様、上記ステップS14によってゲーム処理が一時停止されたこととなる。
続くステップS45において、コントローラ7の状態が算出される。具体的には、第2実施例では、コントローラ7の指示位置が算出される。コントローラ7の指示位置の算出方法は、上述したステップS42における算出方法と同じである。算出された指示位置を示すデータは、第1カーソル位置データ637としてメインメモリ13に記憶される。
続くステップS46において、ステップS45で算出されたコントローラ7の状態が記憶される。第2実施例では、CPU10は、コントローラ7の指示位置を示すデータ、すなわち、第1カーソル位置データ637をポーズ時状態データ633としてメインメモリ13に記憶する。なお、ステップS46で記憶されるデータは、コントローラ7の指示位置に関する状態を示すものであればどのようなものであってもよい。例えば、ステップS3で取得されたマーカ座標データをポーズ時状態データ633として記憶するようにしてもよいし、マーカ座標データから得られる、2つのマーカ座標の中点の位置を示すデータをポーズ時状態データ633として記憶するようにしてもよい。また、例えば、キャラクタ51の形状を示すデータをポーズ時状態データ633として記憶するようにしてもよい。
続くステップS47において、CPU10は、一時停止中のゲーム画像をモニタ2に表示させる。具体的には、ゲーム処理が一時停止された時点のゲーム画像にポーズ画像52を重ねた画像をモニタ2に表示させる(図21参照)。なお、ゲーム処理が一時停止された時点のゲーム画像とは、前回のフレーム処理のステップS43で表示されるゲーム画像のことである。ステップS47の処理が終了するとCPU10は非ポーズ状態処理を終了する。
第2実施例におけるポーズ状態処理は、第1実施例と同様であるので、詳細な説明を省略する。次に、第2実施例における解除受付状態処理について説明する。図26は、第2実施例における解除受付状態処理の詳細を示すフローチャートである。
解除受付状態処理においては、まずステップS51において、CPU10はポーズボタン(第2実施例では、スタートスイッチ32g)が押下されたか否かを判定する。ステップS51の処理は、第1実施例におけるステップS31の処理と同じである。ステップS51の判定結果が肯定の場合、後述するステップS56の処理が実行される。一方、ステップS51の判定結果が否定の場合、ステップS52の処理が実行される。
ステップS52においては、コントローラ7の現在の状態が算出される。第2実施例では、コントローラ7の現在の状態として、コントローラ7の指示位置、すなわち、第2カーソル56の位置が算出される。第2カーソル56の位置は、メインメモリ13に記憶されているマーカ座標データ623に基づいて算出される。なお、第2カーソル56の位置の具体的な算出方法は、第1カーソル55の位置を算出する場合と同じである。算出された第2カーソル56の位置を示すデータは、第2カーソル位置データ638としてメインメモリ13に記憶される。
続くステップS53においては、CPU10は、コントローラ7の現在の状態(指示位置)とポーズ操作時のコントローラ7の状態(指示位置)とを比較し、両者が一致するか否かを判定する。コントローラ7の現在の指示位置は、メインメモリ13に記憶されている第2カーソル位置データ638によって示される。また、ポーズ操作時のコントローラ7の指示位置は、メインメモリ13に記憶されているポーズ時状態データ633によって示される。したがって、CPU10は、第2カーソル位置データ638により示される傾きとポーズ時状態データ633により示される傾きとを比較する。上述したように、第2実施例では、2つの位置が完全に一致しなくても、2つの位置がある程度近いと判断される場合には当該2つの位置が一致したと判断する。すなわち、2つの位置間の距離が、しきい値データ634により示される値よりも小さい場合、2つの位置が一致したと判断し、2つの位置間の距離が当該しきい値以上である場合、2つの位置は一致しないと判断する。
ステップS53の判定において、コントローラ7の現在の指示位置とポーズ操作時の指示位置とが一致すると判定される場合、ステップS54の処理が実行される。一方、コントローラ7の現在の指示位置とポーズ操作時の指示位置とが一致すると判定される場合、ステップS54の処理がスキップされてステップS55の処理が実行される。
ステップS54においては、ゲーム状態が非ポーズ状態に設定される。ステップS54の処理は、第1実施例のステップS34の処理と同じである。したがって、次のフレーム処理において(ポーズボタンが再び押下されなければ)一時停止が解除されてゲーム処理が再開されることとなる。
ステップS55において、CPU10は、一時停止中のゲーム画像に加えて第2カーソル56をモニタ2に表示させる(図22参照)。なお、一時停止中のゲーム画像とは、上記ステップS36において表示されるゲーム画像である。このように、本実施例においては、解除受付状態においては2つのカーソル55および56が表示されるので、プレイヤは、これらのカーソル55および56を参照しながら、第2カーソル56の位置が第1カーソル55の位置に一致するようにコントローラ7の指示位置(コントローラ7の位置および/または姿勢)を操作すればよく、一時停止を解除する操作が容易になる。ステップS55の処理が終了するとCPU10は解除受付状態処理を終了する。
一方、ステップS56においては、ゲーム状態がポーズ状態に設定される。ステップS56の処理は、第1実施例におけるステップS37と同じである。このステップS56によってゲーム処理が一時停止されたこととなる。以上のように、本実施例では、解除受付状態においてポーズボタンが押下された場合には、ゲーム状態は再度ポーズ状態に戻ることになる。
続くステップS57においては、CPU10は、一時停止中のゲーム画像をモニタ2に表示させる(図12参照)。ステップS57の処理は、第1実施例におけるステップS38と同じである。ステップS57の処理が終了するとCPU10は解除受付状態処理を終了する。
以上に説明したように、第2実施例における解除受付状態においては、コントローラ7の現在の指示位置とポーズ操作時のコントローラ7の指示位置との比較が行われ、両者が一致するか否かが判定される(ステップS53)。さらに、両者が一致する場合には、ゲーム状態が非ポーズ状態へ移行され(ステップS54)、ゲームが再開する。以上で、第2実施例においてゲーム装置3で実行される処理の説明を終了する。
以上のように、第2実施例によれば、ゲーム処理が一時停止(ポーズ)される場合、ポーズ操作時におけるコントローラ7の指示位置(カーソルの位置)を記憶しておき、現在のコントローラ7の指示位置とポーズ操作時におけるコントローラ7の指示位置とを比較し、2つの位置が一致することに応じて一時停止を解除する。これによって、一時停止が解除されてゲームが再開される際に、コントローラ7の指示位置を、一時停止が行われる前と同じ位置にすることができる。したがって、第2実施例によれば第1実施例と同様、一時停止の前後においてゲーム操作が変わってしまうことに起因するプレイヤのミスを防止することができ、操作性を向上することができる。また、第2実施例においては、解除受付状態において第2カーソルを表示することにより、一時停止を解除する操作をプレイヤにとって容易にすることができる。また、解除受付状態においては、第2カーソルのみを表示し、当該第2カーソルに基づいて決められるキャラクタ自体の画像を表示しないので、当該キャラクタの画像を表示する場合に比べてCPU10の処理負荷を軽減することができる。
(ゲーム処理に用いるデータの変形例)
なお、第1実施例では、コントローラ7の傾き(姿勢)に基づいて行われるゲーム処理を説明し、第2実施例では、コントローラ7の位置または姿勢に対応して変化する(コントローラ7の)指示位置に基づいて行われるゲーム処理を説明した。ここで、他の実施例においては、ゲーム処理は、コントローラ7の位置および姿勢の少なくとも一方に関する状態に基づいて行われるものであればよい。なお、「コントローラ7の位置および姿勢の少なくとも一方に関する状態」とは、コントローラ7の位置、姿勢、位置の変化(速度)、および姿勢の変化(角速度)等を含む概念である。例えば、ゲーム装置3は、コントローラ7の位置を算出し、算出した位置を用いてゲーム処理を行ってもよいし、コントローラ7の位置または姿勢の変化量(速度または角速度)を算出し、算出した変化量を用いてゲーム処理を行ってもよい。
なお、第1実施例では、コントローラ7の傾き(姿勢)に基づいて行われるゲーム処理を説明し、第2実施例では、コントローラ7の位置または姿勢に対応して変化する(コントローラ7の)指示位置に基づいて行われるゲーム処理を説明した。ここで、他の実施例においては、ゲーム処理は、コントローラ7の位置および姿勢の少なくとも一方に関する状態に基づいて行われるものであればよい。なお、「コントローラ7の位置および姿勢の少なくとも一方に関する状態」とは、コントローラ7の位置、姿勢、位置の変化(速度)、および姿勢の変化(角速度)等を含む概念である。例えば、ゲーム装置3は、コントローラ7の位置を算出し、算出した位置を用いてゲーム処理を行ってもよいし、コントローラ7の位置または姿勢の変化量(速度または角速度)を算出し、算出した変化量を用いてゲーム処理を行ってもよい。
例えば、ゲーム装置3は、上記撮像情報演算部35によって算出されるマーカ座標を用いて、コントローラ7のZ’軸周りの回転に関する姿勢を算出することができる。すなわち、Z’軸周りにコントローラ7を回転させた場合、2つのマーカ座標を結ぶ方向はコントローラ7の回転に合わせて回転する。したがって、2つのマーカ座標を結ぶ方向に基づいて上記姿勢を算出することができる。ゲーム装置3は、この姿勢に基づいてゲーム処理を行うようにしてもよい。また、ゲーム装置3は、上記撮像情報演算部35によって算出されるマーカ座標を用いて、マーカ8aおよび8bからコントローラ7までの距離を算出することができる。すなわち、コントローラ7をマーカ8aおよび8bに近づけた場合、2つのマーカ座標間の長さは長くなり、逆に、コントローラ7をマーカ8aおよび8bから遠ざけた場合、2つのマーカ座標間の長さは短くなる。したがって、2つのマーカ座標間の長さに基づいて上記距離を算出することができる。ゲーム装置3は、この距離に基づいてゲーム処理を行うようにしてもよい。
また、上記第1実施例では、コントローラ7の傾きを算出するために加速度センサ37を用い、上記第2実施例では、コントローラ7の指示位置を算出するために撮像情報演算部35を用いた。ここで、他の実施例では、ゲーム処理に反映されるコントローラ7の状態を算出するための任意のセンサが用いられてもよい。また、他の実施例では、加速度センサ37および撮像情報演算部35の両方を用いてコントローラ7の状態を算出するようにしてもよい。例えば、撮像情報演算部35を用いてコントローラ7の指示位置を算出するとともに、加速度センサ37を用いてコントローラ7の姿勢を算出するようにしてもよい。このとき、ゲーム処理は、コントローラ7の指示位置および姿勢に基づいて行われる。また、例えば、コントローラ7のZ’軸周りの回転に関する姿勢を算出する場合、加速度センサ37および撮像情報演算部35の両方を用いて(具体的には、いずれを用いるかを切り替えて)当該姿勢を算出するようにしてもよい。具体的には、撮像情報演算部35によってマーカ8aおよび8bを撮像可能である場合には、撮像情報演算部35から得られるマーカ座標データを用いて上記姿勢を算出し、撮像情報演算部35によってマーカ8aおよび8bを撮像不可能である場合には、加速度センサ37から得られる加速度ベクトルを用いて上記姿勢を算出するようにしてもよい。
(ポーズ操作時に記憶するゲームデータの変形例)
なお、上記第1実施例では、ポーズ操作時に加速度センサの出力(加速度ベクトル)を記憶し、上記第2実施例では、コントローラ7の指示位置(第1カーソル55の位置)を記憶するようにした。ここで、他の実施例では、ポーズ操作時に記憶するデータは、コントローラ7の状態(位置および姿勢の少なくとも一方に関する状態)に応じて変化し、ゲーム処理に用いられるゲームデータであればよい。このゲームデータは、コントローラ7の状態を示すデータ(上記加速度データ621、第1カーソル位置データ637、および、マーカ座標データ623)、および、当該データから算出されるデータ(キャラクタ方向データ632、および、キャラクタ51の形状を示すデータ)を含む概念である。なお、第1実施例のステップS32または第2実施例のステップS53において、上記記憶されるゲームデータとコントローラ7の現在の状態を示すゲームデータとを比較する場合、記憶されるゲームデータの種類に合わせて現在の状態を示すゲームデータの種類を変更する必要がある。例えば、第1実施例において、加速度データに代えてキャラクタ方向データを記憶する場合には、ステップS32の処理の前に現在のキャラクタ方向データを算出し、算出されたキャラクタ方向データと記憶されたキャラクタ方向データとを比較する。
なお、上記第1実施例では、ポーズ操作時に加速度センサの出力(加速度ベクトル)を記憶し、上記第2実施例では、コントローラ7の指示位置(第1カーソル55の位置)を記憶するようにした。ここで、他の実施例では、ポーズ操作時に記憶するデータは、コントローラ7の状態(位置および姿勢の少なくとも一方に関する状態)に応じて変化し、ゲーム処理に用いられるゲームデータであればよい。このゲームデータは、コントローラ7の状態を示すデータ(上記加速度データ621、第1カーソル位置データ637、および、マーカ座標データ623)、および、当該データから算出されるデータ(キャラクタ方向データ632、および、キャラクタ51の形状を示すデータ)を含む概念である。なお、第1実施例のステップS32または第2実施例のステップS53において、上記記憶されるゲームデータとコントローラ7の現在の状態を示すゲームデータとを比較する場合、記憶されるゲームデータの種類に合わせて現在の状態を示すゲームデータの種類を変更する必要がある。例えば、第1実施例において、加速度データに代えてキャラクタ方向データを記憶する場合には、ステップS32の処理の前に現在のキャラクタ方向データを算出し、算出されたキャラクタ方向データと記憶されたキャラクタ方向データとを比較する。
(案内画像の変形例)
なお、解除受付状態において、上記第1実施例ではモデル53および54が表示され、第2実施例では第2カーソル56が表示された。これらのモデルおよびカーソルは、ポーズ操作時のコントローラ7の状態になるようにプレイヤを案内するための画像である。つまり、これらの画像は、プレイヤが一時停止を解除する際にプレイヤの解除操作を容易にする目的で表示される。ここで、他の実施例では、上記の目的で表示される画像は、モデルやカーソルに限らず、例えば数値や操作方法を示す矢印であってもよい。具体的には、第1実施例においては、ポーズ操作時におけるコントローラ7の傾きと、現在の傾きとの角度差を画面に表示するようにしてもよい。また、第2実施例においては、指示位置を移動させるべき方向を示す矢印を画面に表示するようにしてもよい。さらに、他の実施例においては、解除受付状態において、操作対象となるオブジェクトの画像を案内用に表示してもよい。以下、図27および図28を用いて具体的に説明する。
なお、解除受付状態において、上記第1実施例ではモデル53および54が表示され、第2実施例では第2カーソル56が表示された。これらのモデルおよびカーソルは、ポーズ操作時のコントローラ7の状態になるようにプレイヤを案内するための画像である。つまり、これらの画像は、プレイヤが一時停止を解除する際にプレイヤの解除操作を容易にする目的で表示される。ここで、他の実施例では、上記の目的で表示される画像は、モデルやカーソルに限らず、例えば数値や操作方法を示す矢印であってもよい。具体的には、第1実施例においては、ポーズ操作時におけるコントローラ7の傾きと、現在の傾きとの角度差を画面に表示するようにしてもよい。また、第2実施例においては、指示位置を移動させるべき方向を示す矢印を画面に表示するようにしてもよい。さらに、他の実施例においては、解除受付状態において、操作対象となるオブジェクトの画像を案内用に表示してもよい。以下、図27および図28を用いて具体的に説明する。
図27および図28は、他の実施例におけるゲーム画像の例を示す図である。図27においては、2次元のゲーム空間に、板状オブジェクト71および72、ボールオブジェクト73、および壁オブジェクト74が配置されている。図27に示すゲームは、ゲーム装置3のCPU10によって制御される板状オブジェクト72と板状オブジェクト71との間でボールオブジェクト73を打ち合って遊ぶホッケーゲームである。板状オブジェクト71は、プレイヤによって操作される操作対象となるオブジェクト(プレイヤオブジェクト)である。板状オブジェクト71は、プレイヤの操作によって、画面の上下左右方向に移動可能であるとともに回転可能である(図27に示す矢印参照)。すなわち、板状オブジェクト71は、コントローラ7の指示位置に応じて画面の上下左右方向に移動するとともに、コントローラ7の傾きに応じて回転する。
図28は、図27に示すゲームにおいて解除受付状態となった場合のゲーム画像の例を示す図である。図28においては、板状オブジェクト71は、ポーズ操作時の状態で固定されている。このとき、ゲーム装置3は、現在のコントローラ7の状態から算出されるプレイヤオブジェクトの状態を表す案内用オブジェクト75を表示する。具体的には、解除受付状態においてゲーム装置3は、コントローラ7の指示位置を算出して、算出された指示位置に基づいて案内用オブジェクト75の画面上での位置を決定するとともに、コントローラ7の傾きを算出し、算出された傾きに基づいて案内用オブジェクト75の方向を決定する。また、ゲーム装置3は、板状オブジェクト71の位置と案内用オブジェクト75の位置とが一致するか否か、および、板状オブジェクト71の方向と案内用オブジェクト75の方向とが一致するか否かを判定する。そして、両者の位置および方向がともに一致すると判定される場合、一時停止を解除してゲームを再開する。このように、コントローラ7の状態が複数種類(上記例では、コントローラ7の指示位置および傾きの2種類)である場合には、それぞれの状態についてポーズ操作時の状態と現在の状態とが一致したことに応じて一時停止を解除することが好ましい。また、以上の図28に示したように、案内用の画像は、操作対象となるオブジェクトに対応する画像であってもよい。
また、第2実施例のように操作対象が画面上を移動する場合において、表示装置(モニタ2)の設定等の原因で、操作対象が画面に表示されない(または、一部分のみが表示される)状況が起こることがある。図29は、他の実施例におけるゲーム画像の例を示す図である。なお、図29では、説明を容易にするために、3つのカーソル76〜78のみが表示されるものとして示している。図29において、3つのカーソル76〜78とは、操作カーソル76、案内用カーソル77、および基準カーソル78である。操作カーソル76は、非ポーズ状態において操作対象となるカーソルである。
図29の例においては、解除受付状態において、画面から外れている操作カーソル76から所定距離だけ上方に基準カーソル78が表示される。また、コントローラ7の現在の指示位置に基づいて決定される位置に案内用カーソル77が表示される。案内用カーソル77は、コントローラ7の現在の指示位置に配置されるのではなく、当該指示位置から上記所定距離だけ上方の位置に配置される。解除受付状態において、プレイヤは、案内用カーソル77が基準カーソル78に一致するように案内用カーソル77を操作する。そして、案内用カーソル77が基準カーソル78に一致すると、一時停止が解除されてゲーム処理が再開される。図29に示したように、案内用の画像は、必ずしも操作対象の画像(操作カーソル76)である必要はなく、操作対象の画像とは異なる画像を用いて位置合わせを行うようにしてもよい。これによれば、図29に示したように、ポーズ操作時において操作対象が画面の端周辺に表示されていて操作対象が見にくい場合にも、案内用の画像を見やすく表示することができる。
(ポーズ状態処理の変形例)
なお、上記第1実施例および第2実施例においては、ゲーム装置3は、ポーズ状態において解除受付ボタンが押下されたことに応じて解除受付状態への移行を行った。ここで、他の実施例においては、ゲーム装置3は、ゲーム処理が一時停止させられてから所定時間が経過したことに応じて解除受付状態への移行を行ってもよい。以下、図30を用いてポーズ状態処理の変形例を説明する。
なお、上記第1実施例および第2実施例においては、ゲーム装置3は、ポーズ状態において解除受付ボタンが押下されたことに応じて解除受付状態への移行を行った。ここで、他の実施例においては、ゲーム装置3は、ゲーム処理が一時停止させられてから所定時間が経過したことに応じて解除受付状態への移行を行ってもよい。以下、図30を用いてポーズ状態処理の変形例を説明する。
図30は、ポーズ状態処理の変形例を示すフローチャートである。図30に示すポーズ状態処理においては、まずステップS61において、CPU10は、ゲーム処理が一時停止させられてから所定時間が経過したか否かを判定する。なお、所定時間は、ゲームプログラム61において予め定められた固定値であってもよいし、プレイヤの指示やその他の条件に基づいて可変に定められる値であってもよい。ステップS61において、所定時間が経過したと判定される場合、ステップS62の処理が実行される。一方、所定時間が経過していないと判定される場合、ステップS62の処理がスキップされてステップS63の処理が実行される。ステップS62においては、ゲーム状態が解除受付状態に設定される。ステップS62の処理は第1実施例におけるステップS22の処理と同じである。また、ステップS63の処理は第1実施例におけるステップS23の処理と同じである。
以上のように、他の実施例においては、ゲーム処理が一時停止させられてからの経過時間に基づいて、ポーズ状態から解除受付状態への移行を行うか否かを判定するようにしてもよい。これによれば、プレイヤは解除受付状態へ移行させる操作(上記第1実施例で言えば、解除受付ボタンを押下する操作)を行う必要がないので、プレイヤの操作を簡易化することができる。また、解除受付状態へ移行するために、一時停止してから一定時間経過したことを条件としているので、プレイヤが意図せずに、例えば一時停止直後に解除条件を満たしてしまうことなどによって一時停止が解除されることがない。
また、他の実施例においては、ポーズ状態において、現在のコントローラ7の状態が、ポーズ操作時の状態に対して所定の基準よりも相違したことに応じて一時停止状態の解除の受付を開始するようにしてもよい。以下、図31を用いてポーズ状態処理の変形例を説明する。
図31は、ポーズ状態処理の他の変形例を示すフローチャートである。図31に示すポーズ状態処理においては、まずステップS65において、CPU10は、コントローラ7の状態(位置および姿勢の少なくとも一方に関する状態)を算出する。例えば、上記第2実施例の場合には、コントローラ7の指示位置を算出する。このとき、算出された状態を示すデータがメインメモリ13に記憶される。なお、この時点では、ポーズ操作時における状態を示すデータは、ポーズ時状態データ633としてメインメモリ13に記憶されている。
続くステップS66において、CPU10は、ステップS65で算出された現在のコントローラ7の状態とポーズ操作時の状態とを比較し、現在の状態がポーズ操作時の状態から所定の基準よりも離れているか否かを判定する。例えば、第1実施例の場合には、コントローラ7の現在の傾きが、ポーズ操作時の傾きから所定角度以上離れているか否かを判定する。また、第2実施例の場合には、コントローラ7の現在の指示位置が、ポーズ操作時の指示位置から所定距離以上離れているか否かを判定する。ステップS66の判定結果が肯定の場合、ステップS67の処理が実行され、ステップS66の判定結果が否定の場合、ステップS67の処理がスキップされてステップS68の処理が実行される。ステップS67の処理は第1実施例におけるステップS22の処理と同じである。また、ステップS68の処理は第1実施例におけるステップS23の処理と同じである。
以上のように、他の実施例においては、ポーズ状態においてコントローラ7の現在の状態とポーズ操作時の状態とが大きく離れたことに応じて、ポーズ状態から解除受付状態への移行を行うようにしてもよい。これによれば、プレイヤは解除受付状態へ移行させる操作を行う必要がないので、プレイヤの操作を簡易化することができる。また、解除受付状態へ移行するために、コントローラ7の現在の状態とポーズ操作時の状態とが大きく離れたことを条件としているので、プレイヤが意図せずに、例えば一時停止直後に解除条件を満たしてしまうことなどによって一時停止が解除されることがない。
(ゲーム処理を一時停止するタイミングに関する変形例)
上記実施例においては、ゲーム装置3は、ポーズボタンが押下されたタイミングでゲーム処理を一時停止させるものであった。ここで、他の実施例においては、ポーズボタンが押下されるよりも少し前(具体的には、数フレーム前)の時点でゲーム処理が一時停止させられるようにしてもよい。つまり、当該時点から実際にポーズボタンが押下された時点までのゲーム処理を無効とし、ゲーム処理が再開される際には、ポーズボタンが押下されるよりも少し前の時点のゲーム処理状態から再開されるようにしてもよい。これによれば、プレイヤがポーズボタンを押下したことによってコントローラ7の位置または姿勢が変化してしまうおそれがある場合でも、プレイヤの意図したタイミングでゲーム処理を一時停止することができる。
上記実施例においては、ゲーム装置3は、ポーズボタンが押下されたタイミングでゲーム処理を一時停止させるものであった。ここで、他の実施例においては、ポーズボタンが押下されるよりも少し前(具体的には、数フレーム前)の時点でゲーム処理が一時停止させられるようにしてもよい。つまり、当該時点から実際にポーズボタンが押下された時点までのゲーム処理を無効とし、ゲーム処理が再開される際には、ポーズボタンが押下されるよりも少し前の時点のゲーム処理状態から再開されるようにしてもよい。これによれば、プレイヤがポーズボタンを押下したことによってコントローラ7の位置または姿勢が変化してしまうおそれがある場合でも、プレイヤの意図したタイミングでゲーム処理を一時停止することができる。
(プレイヤが複数人である場合の変形例)
なお、上記実施例においては、プレイヤが1人である場合を例として説明したが、プレイヤが複数人の場合であっても上記実施例を適用することができる。なお、この場合、プレイヤは1人につき1つのコントローラ7を操作するものとする。この場合、ゲーム装置3は、解除受付状態において、現在のコントローラの状態とポーズ操作時の状態とをコントローラ毎に比較する。そして、全てのコントローラについて、現在の状態とポーズ操作時の状態とが一致すると判定される場合、一時停止を解除してゲーム処理を再開する。なお、ポーズ状態から解除受付状態へ移行するための条件は、複数のコントローラのうちの1つのコントローラのポーズボタンが押下されたことであってもよいし、全てのコントローラのポーズボタンが押下されたことであってもよい。またポーズボタンを押下するという条件に代えて、上記図30または図31に示した条件を用いてもよい。
なお、上記実施例においては、プレイヤが1人である場合を例として説明したが、プレイヤが複数人の場合であっても上記実施例を適用することができる。なお、この場合、プレイヤは1人につき1つのコントローラ7を操作するものとする。この場合、ゲーム装置3は、解除受付状態において、現在のコントローラの状態とポーズ操作時の状態とをコントローラ毎に比較する。そして、全てのコントローラについて、現在の状態とポーズ操作時の状態とが一致すると判定される場合、一時停止を解除してゲーム処理を再開する。なお、ポーズ状態から解除受付状態へ移行するための条件は、複数のコントローラのうちの1つのコントローラのポーズボタンが押下されたことであってもよいし、全てのコントローラのポーズボタンが押下されたことであってもよい。またポーズボタンを押下するという条件に代えて、上記図30または図31に示した条件を用いてもよい。
以上のように、本発明は、ポーズを解除した時におけるゲームの操作性を改善すること等を目的として、例えばゲーム装置やゲームプログラムに利用することができる。
1 ゲームシステム
2 モニタ
3 ゲーム装置
4 光ディスク
5 外部メモリカード
7 コントローラ
8a,8b マーカ
10 CPU
13 メインメモリ
32 操作部
35 撮像情報演算部
36 通信部
37 加速度センサ
40 撮像素子
51 キャラクタ
52 ポーズ画像
53 第1モデル
54 第2モデル
55 第1カーソル
56 第2カーソル
61 ゲームプログラム
2 モニタ
3 ゲーム装置
4 光ディスク
5 外部メモリカード
7 コントローラ
8a,8b マーカ
10 CPU
13 メインメモリ
32 操作部
35 撮像情報演算部
36 通信部
37 加速度センサ
40 撮像素子
51 キャラクタ
52 ポーズ画像
53 第1モデル
54 第2モデル
55 第1カーソル
56 第2カーソル
61 ゲームプログラム
Claims (20)
- 入力装置の位置および姿勢の少なくとも一方に関する状態に基づいて所定の処理を行う情報処理装置であって、
前記入力装置の状態に応じて変化し、前記所定の処理に用いられる入力データを逐次取得する入力データ取得手段と、
前記所定の処理を一時停止させる一時停止手段と、
前記所定の処理が一時停止されるタイミングにおいて取得される入力データを記憶する記憶手段と、
前記所定の処理が一時停止している状態において、一時停止の解除の受付を開始する解除受付手段と、
前記一時停止の解除の受付が開始された後、前記入力データ取得手段によって逐次取得される現在の入力データと前記記憶手段に記憶された入力データとを逐次比較する第1比較手段と、
前記現在の入力データの内容が前記記憶手段に記憶された入力データの内容に所定の基準よりも近くなったことに応じて、一時停止を解除して前記所定の処理を再開する解除手段を備える、情報処理装置。 - 前記一時停止の解除の受付が開始された後、前記記憶手段に記憶された入力データの内容を表す画像と前記現在の入力データの内容を表す画像とを逐次表示装置に表示させる画像表示手段をさらに備える、請求項1に記載の情報処理装置。
- 前記入力装置は、所定の撮像対象を撮像するための撮像手段を備え、
前記撮像手段によって撮像される撮像画像における撮像対象の位置に関する座標を算出する座標算出手段をさらに備え、
前記入力データ取得手段は、前記座標を示すデータ、または、それから算出される前記入力装置の位置もしくは姿勢に対応するデータを前記入力データとして取得する、請求項1に記載の情報処理装置。 - 前記入力装置は、加速度センサを備え、
前記入力データ取得手段は、前記加速度センサからの出力を示すデータまたはそれから算出される前記入力装置の姿勢に対応するデータを前記入力データとして取得する、請求項1に記載の情報処理装置。 - 前記入力装置は、入力装置の位置または姿勢に関する状態を示すデータを出力し、
前記入力データ取得手段は、前記入力装置から出力されるデータを前記入力データとして取得する、請求項1に記載の情報処理装置。 - 前記入力装置は、入力装置の位置または姿勢に関する状態を示すデータを出力し、
前記入力データ取得手段は、前記入力装置から出力されるデータに基づいて、仮想空間に登場するオブジェクトを制御するためのデータを前記入力データとして算出して取得する、請求項1に記載の情報処理装置。 - 前記解除受付手段は、プレイヤによる指示があったことに応じて一時停止状態の解除の受付を開始する、請求項1に記載の情報処理装置。
- 前記入力装置は操作スイッチを備えており、
前記解除受付手段は、前記操作スイッチが操作されたことに応じて一時停止の解除の受付を開始する、請求項7に記載の情報処理装置。 - 前記解除受付手段は、前記所定の処理が一時停止させられてから所定時間が経過したことに応じて一時停止の解除の受付を開始する、請求項1に記載の情報処理装置。
- 前記解除受付手段は、
前記前記所定の処理が一時停止させられた後、前記入力データ取得手段によって逐次取得される現在の入力データと前記記憶手段に記憶された入力データとを比較する第2比較手段と、
前記現在の入力データの内容が前記記憶手段に記憶された入力データの内容に所定の基準よりも相違したことに応じて一時停止の解除の受付を開始する開始実行手段とを含む、請求項1に記載の情報処理装置。 - 入力装置の位置および姿勢の少なくとも一方に関する状態に基づいて所定の処理を行う情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記入力装置の状態に応じて変化し、前記所定の処理に用いられる入力データを逐次取得する入力データ取得ステップと、
前記所定の処理を一時停止させる一時停止ステップと、
前記所定の処理が一時停止されるタイミングにおいて取得される入力データを前記情報処理装置のメモリに記憶する記憶ステップと、
前記所定の処理が一時停止している状態において、一時停止の解除の受付を開始する解除受付ステップと、
前記一時停止の解除の受付が開始された後、前記入力データ取得ステップにおいて逐次取得される現在の入力データと前記メモリに記憶された入力データとを逐次比較する第1比較ステップと、
前記現在の入力データの内容が前記メモリに記憶された入力データの内容に所定の基準よりも近くなったことに応じて、一時停止を解除して前記所定の処理を再開する一時停止解除ステップとを前記コンピュータに実行させる、情報処理プログラム。 - 前記一時停止の解除の受付が開始された後、前記メモリに記憶された入力データの内容を表す画像と前記現在の入力データの内容を表す画像とを逐次表示装置に表示させる画像表示ステップを前記コンピュータにさらに実行させる、請求項11に記載の情報処理プログラム。
- 前記入力装置は、所定の撮像対象を撮像するための撮像手段を備え、
前記情報処理プログラムは、前記撮像手段によって撮像される撮像画像における撮像対象の位置に関する座標を算出する座標算出ステップを前記コンピュータにさらに実行させ、
前記入力データ取得ステップにおいて、前記コンピュータは、前記座標を示すデータ、または、それから算出される前記入力装置の位置もしくは姿勢に対応するデータを前記入力データとして取得する、請求項11に記載の情報処理プログラム。 - 前記入力装置は、加速度センサを備え、
前記入力データ取得ステップにおいて、前記コンピュータは、前記加速度センサからの出力を示すデータまたはそれから算出される前記入力装置の姿勢に対応するデータを前記入力データとして取得する、請求項11に記載の情報処理プログラム。 - 前記入力装置は、入力装置の位置または姿勢に関する状態を示すデータを出力し、
前記入力データ取得ステップにおいて、前記コンピュータは、前記入力装置から出力されるデータを前記入力データとして取得する、請求項11に記載の情報処理プログラム。 - 前記入力装置は、入力装置の位置または姿勢に関する状態を示すデータを出力し、
前記入力データ取得ステップにおいて、前記コンピュータは、前記入力装置から出力されるデータに基づいて、仮想空間に登場するオブジェクトを制御するためのデータを前記入力データとして算出して取得する、請求項11に記載の情報処理プログラム。 - 前記解除受付ステップにおいて、前記コンピュータは、プレイヤによる指示があったことに応じて一時停止状態の解除の受付を開始する、請求項11に記載の情報処理プログラム。
- 前記入力装置は操作スイッチを備えており、
前記解除受付ステップにおいて、前記コンピュータは、前記操作スイッチが操作されたことに応じて一時停止の解除の受付を開始する、請求項17に記載の情報処理プログラム。 - 前記解除受付ステップにおいて、前記コンピュータは、前記所定の処理が一時停止させられてから所定時間が経過したことに応じて一時停止の解除の受付を開始する、請求項11に記載の情報処理プログラム。
- 前記解除受付ステップは、
前記前記所定の処理が一時停止させられた後、前記入力データ取得ステップにおいて逐次取得される現在の入力データと前記メモリに記憶された入力データとを比較する第2比較ステップと、
前記現在の入力データの内容が前記メモリに記憶された入力データの内容に所定の基準よりも相違したことに応じて一時停止の解除の受付を開始する開始実行ステップとを含む、請求項11に記載の情報処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008248392A JP2008307409A (ja) | 2008-09-26 | 2008-09-26 | 情報処理装置および情報処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008248392A JP2008307409A (ja) | 2008-09-26 | 2008-09-26 | 情報処理装置および情報処理プログラム |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006064438A Division JP4260814B2 (ja) | 2006-03-09 | 2006-03-09 | ゲーム装置およびゲームプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008307409A true JP2008307409A (ja) | 2008-12-25 |
Family
ID=40235520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008248392A Pending JP2008307409A (ja) | 2008-09-26 | 2008-09-26 | 情報処理装置および情報処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008307409A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014091001A (ja) * | 2012-11-06 | 2014-05-19 | Sony Computer Entertainment Inc | 情報処理装置、情報処理システム、情報処理方法、プログラム及び情報記憶媒体 |
JP2020179241A (ja) * | 2020-07-28 | 2020-11-05 | グリー株式会社 | 制御プログラム、ゲーム装置、及び制御方法 |
US11383159B2 (en) | 2018-11-20 | 2022-07-12 | Gree, Inc. | Control program, game device, and control method |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001038049A (ja) * | 1999-07-30 | 2001-02-13 | Sega Corp | ゲーム装置 |
JP2003062341A (ja) * | 2001-08-22 | 2003-03-04 | Nintendo Co Ltd | ゲームシステム、パズルゲームプログラムおよびプログラムを記憶した記憶媒体 |
JP2003334379A (ja) * | 2002-05-20 | 2003-11-25 | Nintendo Co Ltd | ゲームシステムおよびゲームプログラム |
US20060046848A1 (en) * | 2004-08-31 | 2006-03-02 | Nintendo Co., Ltd., | Game apparatus, storage medium storing a game program, and game control method |
JP2007236696A (ja) * | 2006-03-09 | 2007-09-20 | Nintendo Co Ltd | ゲーム装置およびゲームプログラム |
-
2008
- 2008-09-26 JP JP2008248392A patent/JP2008307409A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001038049A (ja) * | 1999-07-30 | 2001-02-13 | Sega Corp | ゲーム装置 |
JP2003062341A (ja) * | 2001-08-22 | 2003-03-04 | Nintendo Co Ltd | ゲームシステム、パズルゲームプログラムおよびプログラムを記憶した記憶媒体 |
JP2003334379A (ja) * | 2002-05-20 | 2003-11-25 | Nintendo Co Ltd | ゲームシステムおよびゲームプログラム |
US20060046848A1 (en) * | 2004-08-31 | 2006-03-02 | Nintendo Co., Ltd., | Game apparatus, storage medium storing a game program, and game control method |
JP2007236696A (ja) * | 2006-03-09 | 2007-09-20 | Nintendo Co Ltd | ゲーム装置およびゲームプログラム |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014091001A (ja) * | 2012-11-06 | 2014-05-19 | Sony Computer Entertainment Inc | 情報処理装置、情報処理システム、情報処理方法、プログラム及び情報記憶媒体 |
US9802122B2 (en) | 2012-11-06 | 2017-10-31 | Sony Interactive Enertainment Inc. | Information processing apparatus, information processing system, information processing method, program and information recording medium |
US10994200B2 (en) | 2012-11-06 | 2021-05-04 | Sony Interactive Entertainment Inc. | Information processing apparatus, information processing system, information processing method, program and information recording medium |
US11383159B2 (en) | 2018-11-20 | 2022-07-12 | Gree, Inc. | Control program, game device, and control method |
JP2020179241A (ja) * | 2020-07-28 | 2020-11-05 | グリー株式会社 | 制御プログラム、ゲーム装置、及び制御方法 |
JP7114657B2 (ja) | 2020-07-28 | 2022-08-08 | グリー株式会社 | 制御プログラム、ゲーム装置、及び制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4260814B2 (ja) | ゲーム装置およびゲームプログラム | |
JP5692904B2 (ja) | 入力システム、情報処理装置、情報処理プログラム、および指示位置算出方法 | |
US9199166B2 (en) | Game system with virtual camera controlled by pointing device | |
JP4773170B2 (ja) | ゲームプログラムおよびゲームシステム | |
JP4907129B2 (ja) | 情報処理システムおよびプログラム | |
JP5131809B2 (ja) | ゲーム装置およびゲームプログラム | |
JP5075330B2 (ja) | 情報処理プログラム | |
JP5700758B2 (ja) | ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法 | |
JP4863761B2 (ja) | ゲーム装置およびゲームプログラム | |
JP5800526B2 (ja) | ゲーム装置、ゲームプログラム、ゲームシステム、およびゲーム処理方法 | |
JP4919887B2 (ja) | 画像処理プログラムおよび画像処理装置 | |
JP2007282787A (ja) | ゲーム装置およびゲームプログラム | |
JP5498690B2 (ja) | ゲームプログラムおよびゲーム装置 | |
JP5008071B2 (ja) | 情報処理装置および情報処理プログラム | |
JP2010142404A (ja) | ゲームプログラムおよびゲーム装置 | |
JP4917347B2 (ja) | ゲーム装置およびゲームプログラム | |
JP5576721B2 (ja) | ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム方法 | |
JP5350612B2 (ja) | ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム処理方法 | |
JP2008307409A (ja) | 情報処理装置および情報処理プログラム | |
JP5945297B2 (ja) | ゲームプログラムおよびゲーム装置 | |
JP4220531B2 (ja) | 重力方向算出装置および重力方向算出プログラム | |
JP2007295989A (ja) | ゲーム装置およびゲームプログラム | |
JP5331259B2 (ja) | 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 | |
JP5798601B2 (ja) | ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム処理方法 | |
JP5357998B2 (ja) | ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110701 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20110902 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20111024 |