以下、本発明の実施形態の例について図面に基づき詳細に説明する。本発明の実施形態に係るゲーム装置は、例えば家庭用ゲーム機(据置型ゲーム機)、携帯ゲーム機、携帯電話機、携帯情報端末(PDA)、又はパーソナルコンピュータなどによって実現される。ここでは、本発明の実施形態に係るゲーム装置を家庭用ゲーム機によって実現する場合について説明する。
[ハードウェア構成]
図1は、本発明の実施形態に係るゲーム装置のハードウェア構成を示す。図1に示すゲーム装置10は、家庭用ゲーム機11、表示部32、音声出力部34、及び光ディスク36(情報記憶媒体)を含む。表示部32及び音声出力部34は家庭用ゲーム機11に接続される。例えば、家庭用テレビ受像機又は液晶ディスプレイが表示部32として用いられ、例えば、家庭用テレビ受像機に内蔵されたスピーカ又はヘッドホンが音声出力部34として用いられる。
家庭用ゲーム機11は公知のコンピュータゲームシステムである。家庭用ゲーム機11は、バス12、制御部14、主記憶16、画像処理部18、入出力処理部20、音声処理部22、光ディスクドライブ24、ハードディスク26、通信インタフェース28、及びコントローラ30を含む。
制御部14は一又は複数のマイクロプロセッサを含む。制御部14は、図示しないROMに格納されるオペレーティングシステムや、光ディスク36から読み出されるプログラムに基づいて、情報処理を実行する。主記憶16は例えばRAMを含み、光ディスク36から読み出されたプログラム及びデータが主記憶16に書き込まれる。主記憶16は制御部14の作業用メモリとしても用いられる。バス12はアドレス及びデータを家庭用ゲーム機11の各部でやり取りするためのものである。
画像処理部18はVRAMを含み、制御部14から供給される画像データに基づいてVRAM上にゲーム画面を描画する。VRAM上に描画されたゲーム画面はビデオ信号に変換されて所定のタイミングで表示部32に出力される。
入出力処理部20は制御部14が音声処理部22、光ディスクドライブ24、ハードディスク26、通信インタフェース28、及びコントローラ30にアクセスするためのインタフェースである。音声処理部22はサウンドバッファを含み、光ディスク36からサウンドバッファに読み出された音声データを音声出力部34から出力する。通信インタフェース28はインターネットなどの通信ネットワークに家庭用ゲーム機11を有線又は無線接続するためのインタフェースである。
光ディスクドライブ24は光ディスク36に記録されたプログラムやデータを読み取る。ここでは、プログラムやデータを家庭用ゲーム機11に供給するために光ディスク36を用いるが、メモリカード等、他の情報記憶媒体を用いるようにしてもよい。また、例えば通信ネットワークを介して遠隔地からプログラムやデータを家庭用ゲーム機11に供給するようにしてもよい。ハードディスク26は一般的なハードディスク装置(補助記憶装置)である。なお、光ディスク36に記憶されることとして説明するプログラムやデータはハードディスク26に記憶されていてもよい。
コントローラ30は、プレイヤによって行われるゲーム操作を受け付けるための操作部である。家庭用ゲーム機11には一又は複数のコントローラ30が有線又は無線接続される。図2A及び図2Bはコントローラ30の一例を示す。なお、図2Aにおいて、X軸はコントローラ30の長軸方向(左右方向)に対応し、Y軸はコントローラ30の短軸方向(上下方向)に対応している。X軸とY軸とは直交している。
コントローラ30の表面30aには複数の操作部材が備えられている。例えば、方向ボタン群40と、ボタン42A,42B,42X,42Yと、左スティック(レバー)44Lと、右スティック(レバー)44Rとが備えられている。
方向ボタン群40は例えば方向を指示する操作に用いられる。方向ボタン群40は、上方向に対応する上方向ボタン40Uと、下方向に対応する下方向ボタン40Dと、左方向に対応する左方向ボタン40Lと、右方向に対応する右方向ボタン40Rと、を含む。
上方向ボタン40Uは感圧ボタンとして構成されている。例えば、上方向ボタン40Uには感圧センサが設けられ、上方向ボタン40Uに加えられた押下力に関する押下力情報が制御部14に供給される。押下力は、例えば0〜255の数値によって表される。下方向ボタン40D、左方向ボタン40L、及び右方向ボタン40Rも、それぞれ、上方向ボタン40Uと同様に感圧ボタンとして構成され、これらのボタンの各々に加えられた押下力に関する押下力情報も制御部14に供給される。
左スティック44L及び右スティック44Rも例えば方向を指示する操作に用いられる。左スティック44L及び右スティック44Rは、コントローラ30の筐体の表面30aに直立しており、この直立状態から全方位に所定角度だけ傾倒自在に構成されている。
左スティック44Lの左右方向及び上下方向への傾きに関する傾き情報が制御部14に供給される。例えば、左右方向への傾きの大きさは、例えば−127〜+127の数値で表される。値「0」は、左スティック44LがX軸方向(左右方向)に傾いていないことを示す。また、値「+127」は、左スティック44LがX軸正方向(右方向)に限界まで倒れていることを示す。さらに、値「−127」は、左スティック44LがX軸負方向(左方向)に限界まで倒れていることを示す。上下方向への傾きについても同様である。また、右スティック44Rについても左スティック44Lと同様である。なお以下では、左スティック44Lが左右方向及び上下方向のいずれにも傾けられていない状態のことを、左スティック44Lが「ニュートラルの状態」にあるというように記載する。右スティック44Rについても同様である。
ボタン42A,42B,42X,42Yは各種ゲーム操作に用いられる。なお、ボタン42A,42B,42X,42Yも、それぞれ、方向ボタン群40と同様に感圧ボタンとして構成され、これらのボタンの各々に加えられた押下力に関する押下力情報が制御部14に供給される。
入出力処理部20は一定周期毎(例えば1/60秒ごと)にコントローラ30の各操作部材の状態をスキャンし、そのスキャン結果を表す操作信号をバス12を介して制御部14に供給する。方向ボタン群40の押下力情報や、左スティック44L及び右スティック44Rの各々の傾き情報も操作信号として制御部14に供給される。制御部14は操作信号に基づいてユーザのゲーム操作を判定する。
[ゲーム]
ゲーム装置10では、光ディスク36から読み出されたゲームプログラムが実行されることによって、例えばアクションゲームが実行される。このアクションゲームでは、プレイヤによって操作されるゲームキャラクタ(以下「プレイヤキャラクタ」と呼ぶ。)と、プレイヤキャラクタと対立するゲームキャラクタ(以下「敵キャラクタ」と呼ぶ。)とが登場する。プレイヤはプレイヤキャラクタを操作して敵キャラクタを退治する。
ゲームプログラムが実行されると、ゲーム空間が主記憶16に構築される。図3はゲーム空間の一例を示す。図3に示すゲーム空間50は、互いに直交する三つの座標軸(Xw軸、Yw軸、及びZw軸)が設定された仮想的な3次元空間になっている。図3に示すように、ゲーム空間50には、プレイヤによって操作されるゲームキャラクタオブジェクトであるプレイヤキャラクタ52と、プレイヤキャラクタ52と対立するゲームキャラクタオブジェクトである敵キャラクタ56と、が配置される。
プレイヤキャラクタ52は剣を表す剣オブジェクト54を持っている。剣オブジェクト54は長手形状を有している。図3に示す例では、剣オブジェクト54は棒状のオブジェクトである。プレイヤキャラクタ52は、剣オブジェクト54の一方の端側を左手52l及び右手52rで把持することによって剣オブジェクト54を持っている。なお、プレイヤキャラクタ52は剣オブジェクト54以外のオブジェクトを持つようにしてもよい。例えば、プレイヤキャラクタ52は刀オブジェクト、斧オブジェクト、又は棒オブジェクトなどを持つようにしてもよい。
また、ゲーム空間50には仮想カメラ58が設定される。例えば、仮想カメラ58の位置はプレイヤキャラクタ52の背後の上方に設定される。この仮想カメラ58から見たゲーム空間50を表す画像がゲーム画面に表示される。図4は表示部32に表示されるゲーム画面の一例を示す。図4は、プレイヤキャラクタ52が剣オブジェクト54を振り上げている場面である。図4に示すように、ゲーム画面には、プレイヤキャラクタ52の背後の上方から見たプレイヤキャラクタ52や剣オブジェクト54が表示される。なお、仮想カメラ58の視野領域に敵キャラクタ56が含まれている場合には、敵キャラクタ56もゲーム画面に表示される。
プレイヤキャラクタ52は、プレイヤの操作に従って、剣オブジェクト54を構えたり、剣オブジェクト54を振ったりする。図5は、プレイヤキャラクタ52が剣オブジェクト54を振っている場合のゲーム画面の一例を表している。図5に示すように、プレイヤキャラクタ52が攻撃のために剣オブジェクト54を振っている場合のゲーム画面には、剣オブジェクト54の残像60が表示される。この残像60が表示されることによって、剣オブジェクト54がどのように振られているかをプレイヤが容易に把握できるようになっている。
本実施形態では、プレイヤがプレイヤキャラクタ52に多彩な剣さばきを行わせることができるようになっている。具体的には、プレイヤが左スティック44L及び右スティック44Rを用いて、剣オブジェクト54の構え方や振り方を細かく指示できるようになっている。例えば、プレイヤは左スティック44Lを傾けることによって、プレイヤキャラクタ52の左手52l(又は右手52r)の位置を変えることができるようになっている。また、プレイヤは右スティック44Rを傾けることによって、剣オブジェクト54の先端部分54aの位置を変えることができるようになっている。以下、この構成について詳細に説明する。
[機能ブロック]
図6は、ゲーム装置10で実現される機能を示す機能ブロック図である。図6に示すように、ゲーム装置10は、ゲームデータ記憶部70、第1の点制御部72、第2の点制御部74、オブジェクト制御部76、及び表示制御部78を含む。ゲームデータ記憶部70は、例えば主記憶16及び光ディスク36によって実現され、その他の機能ブロックは、例えば制御部14が光ディスク36に記憶されたプログラムを実行することによって実現される。
ゲームデータ記憶部70はゲームを実行するために必要な各種データを記憶する。例えば、ゲームデータ記憶部70は、ゲーム空間50に配置される各オブジェクトの形状に関するモデルデータを記憶する。また例えば、ゲームデータ記憶部70は、ゲームの現在の状況に関するゲーム状況データを記憶する。例えば、ゲーム空間50に配置される各動的オブジェクト(プレイヤキャラクタ52、剣オブジェクト54、及び敵キャラクタ56)の状態(例えば位置や姿勢など)に関するデータや、仮想カメラ58の状態(例えば位置、視線方向や画角など)に関するデータがゲーム状況データに含まれる。
ここで、剣オブジェクト54の状態に関するデータについて説明する。本実施形態では、剣オブジェクト54の状態(例えば位置や姿勢)の制御の基礎とされる第1の点及び第2の点がゲーム空間50内に設定される。図7は第1の点及び第2の点の一例について説明するための図である。
例えば、第1の点80は、剣オブジェクト54の第1の部分の位置を制御するために用いられる点であり、剣オブジェクト54の第1の部分に関連づけられている。上記「第1の部分」は、例えば、剣オブジェクト54のうちの、プレイヤキャラクタ52の左手52lによって握られるグリップ部分54lである。なお、上記「第1の部分」は、剣オブジェクト54のうちの、プレイヤキャラクタ52の右手52rによって握られるグリップ部分54rであってもよい。
また例えば、第2の点82は、剣オブジェクト54の第2の部分の位置を制御するために用いられる点であり、剣オブジェクト54の第2の部分に関連づけられている。上記「第2の部分」は、例えば剣オブジェクト54の先端部分54aである。
本実施形態の場合、第1の点80及び第2の点82の位置が剣オブジェクト54の状態に関するデータに含まれる。
なお、本実施形態では、剣オブジェクト54の長手方向が第1の点80から第2の点82への方向84と一致する場合に第1の点80と第2の点82との間の長さが剣オブジェクト54の長手方向の長さよりも長くなるように、第1の点80及び第2の点82が設定されるようになっている。
第1の点制御部72は、ゲーム空間50内に設定される第1の点80を第1の操作部材の状態(操作状態)に基づいて移動させる。例えば、第1の点制御部72は、ゲームキャラクタの位置に基づいて設定される第1の領域内で、第1の点80を第1の操作部材の状態に基づいて移動させる。以下、第1の点制御部72の機能について詳しく説明する。
図8は第1の点制御部72の機能について説明するための図である。なお、図8では、プレイヤキャラクタ52の腕と剣オブジェクト54とを省略している。図8に示すように、ゲーム空間50には、第1の点80が移動可能な第1の領域を表す第1の領域オブジェクト90が配置される。後述するように、本実施形態の場合、第1の点80は第1の領域オブジェクト90の表面92上を移動するようになっており、第1の領域オブジェクト90の表面92が、第1の点80が移動可能な領域(第1の領域)に相当する。
第1の領域オブジェクト90は透明に設定された不可視のオブジェクトであり、この第1の領域オブジェクト90はゲーム画面への表示が制限(抑止)される。第1の領域オブジェクト90の位置はプレイヤキャラクタ52の位置に基づいて設定される。本実施形態の場合、第1の領域オブジェクト90の位置とプレイヤキャラクタ52の位置とは常に一定の関係を有するようになっている。
上述したように、第1の領域オブジェクト90の表面92は第1の点80が移動可能な領域(第1の領域)を表しており、第1の点80は剣オブジェクト54のグリップ部分54lの位置を制御するための点である。このため、第1の領域オブジェクト90(言い換えれば第1の領域)の形状、大きさ、及びプレイヤキャラクタ52との位置関係は、プレイヤキャラクタ52の左手52lが届く領域を考慮して決定される。
図8に示す例では、第1の領域オブジェクト90の代表点90aがプレイヤキャラクタ52の代表点52aから正面方向52bに一定距離離れた位置となるように、第1の領域オブジェクト90は配置されている。また、図8に示す例では、第1の領域オブジェクト90の形状が球体の一部からなる形状になっている。具体的には、第1の領域オブジェクト90の形状が半球形状になっている。なお、第1の領域オブジェクト90の形状は球体の一部からなる形状(例えば半球形状)に限られない。
図9は、第1の領域オブジェクト90の表面92について説明するための図である。図9に示すように、表面92上には、互いに交わる第1の軸(Xa軸)及び第2の軸(Ya軸)が設定される。Xa軸とYa軸とは原点Oaで交わり、原点Oaは表面92の中心に対応している。
第1の点制御部72は、第1の領域オブジェクト90の表面92上で第1の点80を第1の操作部材の状態に基づいて移動させる。本実施形態の場合、左スティック44Lが「第1の操作部材」に相当する。
図9におけるXa軸は図2AにおけるX軸に対応し、図9におけるYa軸は図2AにおけるY軸に対応している。左スティック44Lがニュートラルの状態である場合、第1の点制御部72は第1の点80を原点Oaに設定する。
左スティック44Lが図2Aに示すX軸正方向(又はX軸負方向)に傾けられた場合、第1の点制御部72は第1の点80を図9に示すXa軸正方向(又はXa負方向)に移動させる。この場合、第1の点80のXa軸座標値は、左スティック44LのX軸方向への傾きの大きさに対応する座標値に設定される。
また、左スティック44Lが図2Aに示すY軸正方向(又はY軸負方向)に傾けられた場合、第1の点制御部72は第1の点80を図9に示すYa軸正方向(又はYa軸負方向)に移動させる。この場合、第1の点80のYa軸座標値は、左スティック44LのY軸方向への傾きの大きさに対応する座標値に設定される。
左スティック44LがX軸方向又は/及びY軸方向に傾けられた後、左スティック44Lがニュートラルの状態に戻された場合、第1の点制御部72は第1の点80を原点Oaに戻す。
なお、第1の点80が移動可能な領域を第1の領域オブジェクト90の表面92に限定しなくてもよい。例えば、第1の点80は第1の領域オブジェクト90の内部を移動するようにしてもよい。この場合、第1の領域オブジェクト90の内部が、第1の点80が移動可能な領域(第1の領域)に相当する。このように、第1の領域オブジェクト90の表面92及び内部の両方又は一方が、第1の点80が移動可能な領域(第1の領域)に相当するようにすればよい。
第2の点制御部74は、ゲーム空間50内に設定される第2の点82を第2の操作部材の状態(操作状態)に基づいて移動させる。第2の点制御部74は、ゲームキャラクタの位置に基づいて設定される第2の領域内で、第2の点82を第2の操作部材の状態に基づいて移動させる。以下、第2の点制御部74の機能について詳しく説明する。
図10は第2の点制御部74の機能について説明するための図である。なお、図10でも、プレイヤキャラクタ52の腕と剣オブジェクト54とを省略している。図10に示すように、ゲーム空間50には、第2の点82が移動可能な第2の領域を表す第2の領域オブジェクト94が配置される。後述するように、本実施形態の場合、第2の点82は第2の領域オブジェクト94の表面96上を移動するようになっており、第2の領域オブジェクト94の表面96が、第2の点82が移動可能な領域(第2の領域)に相当する。
本実施形態の場合、第2の領域オブジェクト94は第1の領域オブジェクト90よりも大きいオブジェクトになっている。第1の領域オブジェクト90と同様、第2の領域オブジェクト94は透明に設定された不可視のオブジェクトであり、この第2の領域オブジェクト94はゲーム画面への表示が制限(抑止)される。第2の領域オブジェクト94の位置はプレイヤキャラクタ52の位置に基づいて設定される。本実施形態の場合、第2の領域オブジェクト94の位置とプレイヤキャラクタ52の位置とは常に一定の関係を有するようになっている。
上述したように、第2の領域オブジェクト94の表面96は第2の点82が移動可能な領域(第2の領域)を表しており、第2の点82は剣オブジェクト54の先端部分54aの位置を制御するための点である。このため、第2の領域オブジェクト94(言い換えれば第2の領域)の形状、大きさ、及びプレイヤキャラクタ52との位置関係は、剣オブジェクト54の先端部分54aが届く領域を考慮して決定される。
図10に示す例では、第2の領域オブジェクト94の代表点94aがプレイヤキャラクタ52の代表点52aから前方斜め上方向52cに一定距離離れた位置となるように、第2の領域オブジェクト94は配置される。なお、プレイヤキャラクタ52の正面方向52bと方向52cとの間の角度θは常に一定になっている。また、図10に示す例では、第2の領域オブジェクト94の形状が球体の一部からなる形状になっている。具体的には、第2の領域オブジェクト94の形状が半球形状になっている。なお、第2の領域オブジェクト94の形状は球体の一部からなる形状(例えば半球形状)に限られない。
図11は、第2の領域オブジェクト94の表面96について説明するための図である。表面96上には、互いに交わる第3の軸(Xb軸)及び第4の軸(Yb軸)が設定されている。Xb軸とYb軸とは原点Obで交わり、原点Obは表面96の中心に対応している。
第2の点制御部74は、第2の領域オブジェクト94の表面96上で第2の点82を第2の操作部材の状態に基づいて移動させる。本実施形態の場合、右スティック44Rが「第2の操作部材」に相当する。
図11におけるXb軸は図2AにおけるX軸に対応し、図11におけるYb軸は図2AにおけるY軸に対応している。右スティック44Rがニュートラルの状態である場合、第2の点制御部74は第2の点82を原点Obに設定する。
右スティック44Rが図2に示すX軸正方向(又はX軸負方向)に傾けられた場合、第2の点制御部74は第2の点82を図11に示すXb軸正方向(又はXb負方向)に移動する。この場合、第2の点82のXb軸座標値は、右スティック44RのX軸方向への傾きの大きさに対応する座標値に設定される。
また、右スティック44Rが図2に示すY軸正方向(又はY軸負方向)に傾けられた場合、第2の点制御部74は第2の点82を図11に示すYb軸正方向(又はYb軸負方向)に移動する。この場合、第2の点82のYb軸座標値は、右スティック44RのY軸方向への傾きの大きさに対応する座標値に設定される。
右スティック44RがX軸方向又は/及びY軸方向に傾けられた後、右スティック44Rがニュートラルの状態に戻された場合、第2の点制御部74は第2の点82を原点Obに戻す。
なお、第2の点82が移動可能な領域を第2の領域オブジェクト94の表面96に限定しなくてもよい。例えば、第2の点82は第2の領域オブジェクト94の内部を移動するようにしてもよい。この場合、第2の領域オブジェクト94の内部が、第2の点82が移動可能な領域(第2の領域)に相当する。このように、第2の領域オブジェクト94の表面96及び内部の両方又は一方が、第2の点82が移動可能な領域(第2の領域)に相当するようにすればよい。
オブジェクト制御部76は、ゲーム空間50内に配置されるオブジェクトの位置及び姿勢を第1の点80及び第2の点82に基づいて制御する。例えば、「オブジェクト」は、長手形状を有するオブジェクトである。また例えば、「オブジェクト」は、プレイヤキャラクタ52が持って使用する物を表すオブジェクトである。本実施形態の場合、剣オブジェクト54が、オブジェクト制御部76の制御対象である「オブジェクト」に相当する。
図12は、オブジェクト制御部76による剣オブジェクト54の位置及び姿勢の制御について説明するための図であり、第1の点80(第1の領域オブジェクト90)と第2の点(第2の領域オブジェクト94)と剣オブジェクト54との関係を表している。本実施形態の場合、オブジェクト制御部76は、第1の点80から第2の点82への方向84に基づいて、剣オブジェクト54の位置及び姿勢を制御する。より具体的には、オブジェクト制御部76は、剣オブジェクト54の長手方向(グリップ部分54lから先端部分54aへの方向86)が第1の点80から第2の点82への方向84と一致するように、剣オブジェクト54の位置及び姿勢を制御する。
表示制御部78は、仮想カメラ58から見たゲーム空間50をゲーム画面に表示する(図4及び図5参照)。
また、剣オブジェクト54の所定時間あたりの動き量が基準量よりも大きい場合、表示制御部78は、剣オブジェクト54の残像60をゲーム画面に表示する(図5参照)。なお、「動き量」は、剣オブジェクト54の動きの程度を示す数値であり、例えば、剣オブジェクト54の位置及び/又は姿勢の変化の程度を示す変化量とも言い換えることができる。剣オブジェクト54の所定時間あたりの動き量が基準量よりも大きい場合とは、例えばプレイヤキャラクタ52が剣オブジェクト54を素早く振った場合であり、言い換えれば、プレイヤキャラクタ52が攻撃を行った場合である。このようにすることによって、プレイヤキャラクタ52が剣オブジェクト54を素早く振った場合(プレイヤキャラクタ52が攻撃を行った場合)に剣オブジェクト54の残像60がゲーム画面に表示されるようになる。
[処理]
ゲーム装置10で実行される処理について説明する。図13及び図14はゲーム装置10で実行される処理のうちの、剣オブジェクト54の制御に関する処理について主に示すフロー図である。制御部14は光ディスク36に記憶されるプログラムに従って、図13及び図14に示す処理を所定時間(本実施形態では1/60秒)ごとに実行する。制御部14が図13及び図14に示す処理を実行することによって、第1の点制御部72、第2の点制御部74、オブジェクト制御部76、及び表示制御部78が実現される。
図13に示すように、制御部14は敵キャラクタ56の状態を更新する(S101)。例えば、制御部14は敵キャラクタ56の位置を更新することによって、敵キャラクタ56を移動させる。また例えば、制御部14は、プレイヤキャラクタ52への攻撃を敵キャラクタ56に行わせる。
また、制御部14はプレイヤキャラクタ52の位置を更新する(S102)。例えば、制御部14はプレイヤキャラクタ52をプレイヤの操作に基づいて移動させる。例えば、プレイヤキャラクタ52の移動操作には左スティック44Lが用いられるようにしてもよい。より具体的には、右スティック44Rがニュートラルの状態にある場合に、制御部14は、左スティック44Lの状態(傾き方向)に基づいてプレイヤキャラクタ52を移動させるようにしてもよい。
なお、左スティック44Lや右スティック44R以外の操作部材がプレイヤキャラクタ52の移動操作に用いられるようにしてもよい。例えば、方向ボタン群40が用いられるようにしてもよい。この場合、制御部14は方向ボタン群40の状態(押下状態)に基づいてプレイヤキャラクタ52を移動させることになる。
ステップS102の処理が完了した後、制御部14は変数nに1を加算する(S103)。変数nはゲーム開始時に0に初期化されている。変数nは、後述するように、ステップS105〜S108の処理の実行間隔を本処理全体の実行間隔(例えば1/60秒)よりも大きい間隔(例えばN/60秒:Nは2以上の整数)にするために用いられる。
制御部14は変数nがN(例えば4)であるか否かを判定する(S104)。変数nがNである場合、制御部14はステップS105〜108の処理を実行する。
すなわち、制御部14は左スティック44L及び右スティック44Rの傾き情報を取得する(S105)。そして、制御部14(第1の点制御部72)は、左スティック44Lの傾き情報に基づいて第1の点80の位置を更新する(S106)。
例えば、制御部14は、左スティック44Lの左右方向(X軸方向)への傾きを示す数値に基づいて、第1の点80のXa軸座標値を更新する。ゲームデータ記憶部70には、左スティック44Lの左右方向への傾きを示す数値と、Xa軸座標値と、を対応づけた情報が記憶されており、この情報に基づいて、第1の点80のXa軸座標値が決定される。
また、制御部14は、左スティック44Lの上下方向(Y軸方向)への傾きを示す数値に基づいて、第1の点80のYa軸座標値を更新する。ゲームデータ記憶部70には、左スティック44Lの上下方向への傾きを示す数値と、Ya軸座標値と、を対応づけた情報が記憶されており、この情報に基づいて、第1の点80のYa軸座標値が決定される。
ステップS106の処理が完了した後、制御部14(第2の点制御部74)は、右スティック44Rの傾き情報に基づいて第2の点82の位置を更新する(S107)。
例えば、制御部14は、右スティック44Rの左右方向(X軸方向)への傾きを示す数値に基づいて、第2の点82のXb軸座標値を更新する。ゲームデータ記憶部70には、右スティック44Rの左右方向への傾きを示す数値と、Xb軸座標値と、を対応づけた情報が記憶されており、この情報に基づいて、第2の点82のXb軸座標値が決定される。
また、制御部14は、右スティック44Rの上下方向(Y軸方向)への傾きを示す数値に基づいて、第2の点82のYb軸座標値を更新する。ゲームデータ記憶部70には、右スティック44Rの上下方向への傾きを示す数値と、Yb軸座標値と、を対応づけた情報が記憶されており、この情報に基づいて、第2の点82のYb軸座標値が決定される。
ステップS107の処理が完了した後、制御部14(オブジェクト制御部76)は、第1の点80及び第2の点82の位置に基づいて、剣オブジェクト54の位置及び姿勢を更新する(S108)。例えば、制御部14は、剣オブジェクト54のグリップ部分54lの位置を第1の点80に基づいて設定し、剣オブジェクト54の先端部分54aの位置を第1の点80から第2の点82への方向84に基づいて設定する。
より具体的には、図12に示したように、制御部14は、剣オブジェクト54のグリップ部分54lの位置を第1の点80の位置に一致させる。また、制御部14は、剣オブジェクト54の長手方向(グリップ部分54lから先端部分54aへの方向86)が第1の点80から第2の点82への方向84と一致するように、剣オブジェクト54の先端部分54aの位置を設定する。この場合、剣オブジェクト54の先端部分54aの位置は、第1の点80から第2の点82への方向84に伸ばした直線上の位置であって、かつ、グリップ部分54lからの距離が所定距離である位置に設定される。
ステップS108の処理が完了した後、制御部14は変数nを0に初期化する(S109)。ここで、ステップS104〜S109の処理の意義について説明する。プレイヤが左スティック44L及び右スティック44Rの傾き状態を一定に保っているつもりであっても、左スティック44L及び右スティック44Rの傾き状態は1/60秒ごとに小さく変化している場合が多い。このため、ステップS105〜108の処理も1/60秒ごとに実行してしまうと、剣オブジェクト54の位置及び姿勢が1/60秒ごとに変化することになってしまう。その結果、剣オブジェクト54が震えているように表示され、プレイヤに違和感を感じさせてしまう。この点、本実施形態のように、ステップS105〜S108の処理(言い換えれば、剣オブジェクト54の位置及び姿勢の更新処理)の実行間隔を本処理全体(言い換えれば、プレイヤキャラクタ52や敵キャラクタ56の状態の更新処理)の実行間隔(例えば1/60秒)よりも大きい間隔(例えばN/60秒)にすることによって、上記のような違和感を軽減することが可能になる。
ステップS109の処理が完了した場合、又はステップS104において変数nがNでないと判定された場合、図14に示すように、制御部14はプレイヤキャラクタ52の姿勢を更新する(S110)。このステップS110では、プレイヤキャラクタ52の姿勢が第1の点80及び第2の点82の少なくとも一方の位置に基づいて設定される。
例えば、ステップS110において、まず制御部14は、プレイヤキャラクタ52の部位のうちの、剣オブジェクト54を把持する部位の位置を決定する。具体的には、制御部14は、剣オブジェクト54のグリップ部分54lの位置をプレイヤキャラクタ52の左手52lの位置として決定する。なお、上述したように、剣オブジェクト54のグリップ部分54lの位置は第1の点80に基づいて決定されるため、プレイヤキャラクタ52の左手52lの位置は第1の点80に基づいて決定されるということができる。
また、制御部14は、剣オブジェクト54のグリップ部分54rの位置をプレイヤキャラクタ52の右手52rの位置として決定する。なお、剣オブジェクト54のグリップ部分54rの位置は第1の点80及び第2の点82の位置に基づいて決定されるため、プレイヤキャラクタ52の右手52rの位置は第1の点80及び第2の点82の位置に基づいて決定されるということができる。
その後、制御部14は、プレイヤキャラクタ52の左手52l及び右手52rの位置に基づいて、プレイヤキャラクタ52の他の部位の位置などを決定する。例えば、プレイヤキャラクタ52の内部には、プレイヤキャラクタ52の各部位の位置(言い換えれば、プレイヤキャラクタ52の姿勢)を制御するためのスケルトンが設定されている。このステップS110では、このスケルトンの状態が左手52l及び右手52rの位置に基づいて決定されることによって、プレイヤキャラクタ52の他の部位の位置などが決定される。なお、スケルトンの状態を左手52l及び右手52rの位置に基づいて決定する場合には、例えば、一般的なインバースキネマティクス法のアルゴリズムが用いられる。
ステップS110の処理が完了した後、制御部14は剣オブジェクト54が敵キャラクタ56に当たったか否かを判定する(S111)。このステップS111では一般的な衝突判定アルゴリズムが用いられる。
剣オブジェクト54が敵キャラクタ56に当たった場合、制御部14は、その敵キャラクタ56の状態を更新する(S112)。例えば、敵キャラクタ56が退治された状態に更新される。
ステップS112の処理が完了した場合、又はステップS111において剣オブジェクト54が敵キャラクタ56に当たっていないと判定された場合、制御部14(表示制御部78)は、仮想カメラ58から見たゲーム空間50を表す視野画像をVRAM上に生成する(S113)。
その後、制御部14(表示制御部78)は、剣オブジェクト54の動き量が基準量よりも大きいか否かを判定する(S114)。このステップS114では、例えば、剣オブジェクト54の先端部分54aの位置の変化量が「動き量」として用いられる。なお、第2の点82の位置の変化量が「動き量」として用いられるようにしてもよい。
剣オブジェクト54の動き量が基準量よりも大きい場合、制御部14(表示制御部78)は、VRAM上に生成された視野画像上に、剣オブジェクト54の残像60を描画する(S115)。例えば、剣オブジェクト54の位置の履歴が主記憶16に記憶されるようになっており、剣オブジェクト54の残像60の描画位置は剣オブジェクト54の位置の履歴に基づいて決定される。
ステップS113〜S115の処理によってVRAM上に生成された画像はゲーム画面として表示部32に表示される。以上で本処理は終了する。
[まとめ]
以上に説明したゲーム装置10では、剣オブジェクト54の制御の基礎とされる第1の点80及び第2の点82がゲーム空間50内に設定される。第1の点80の位置は左スティック44Lの傾き状態に基づいて制御され、第2の点82の位置は右スティック44Rの傾き状態に基づいて制御される。そして、剣オブジェクト54の位置及び姿勢は第1の点80及び第2の点82の位置に基づいて制御される。
ゲーム装置10によれば、剣オブジェクト54の位置や姿勢が左スティック44L及び右スティック44Rの傾き状態に基づいて細かく変化するようになる。このため、ゲーム装置10によれば、プレイヤが左スティック44L及び右スティック44Rを用いて剣オブジェクト54の構え方や振り方を細かく指示できるようにすることが可能になる。すなわち、ゲーム装置10によれば、プレイヤキャラクタ52が持っている剣オブジェクト54に関する操作の操作性を向上することが可能になる。
ところで、剣オブジェクト54の構え方や振り方を細かく指示できるようにするための他の方法としては、加速度センサなどが内蔵されたコントローラを用いる方法も考えられる。しかしながら、この場合、コントローラ30が加速度センサなどを内蔵している必要がある。この点、本実施形態によれば、コントローラ30が加速度センサなどを内蔵している必要がない。
なお、ゲーム装置10では、第1の領域オブジェクト90がゲーム空間50に配置され、第1の点80が移動可能な領域が第1の領域オブジェクト90の表面92に制限される。同様に、第2の領域オブジェクト94がゲーム空間50に配置され、第2の点82が移動可能な領域が第2の領域オブジェクト94の表面96に制限される。剣オブジェクト54の位置や姿勢は第1の点80及び第2の点82の位置に基づいて変化するため、プレイヤキャラクタ52が可能な剣オブジェクト54の構え方や振り方は、第1の領域オブジェクト90及び第2の領域オブジェクト94の形状、大きさ、及びプレイヤキャラクタ52との位置関係によって変化する。
ゲーム装置10によれば、ゲーム開発において、ゲーム空間50内に配置されるオブジェクトの形状などを作成する者が、プレイヤキャラクタ52が可能な剣オブジェクト54の構え方や振り方の決定に関与できるようになる。
[変形例]
なお、本発明は以上に説明した実施の形態に限定されるものではない。
(1)例えば、オブジェクト制御部76は、プレイヤキャラクタ52が剣オブジェクト54を振る場合(すなわち、プレイヤキャラクタ52が攻撃を行う場合)の剣オブジェクト54の動きを補正するようにしてもよい。
プレイヤキャラクタ52が剣オブジェクト54を振る場合、左スティック44L及び右スティック44Rの操作通りに剣オブジェクト54を動かしてしまうと、剣オブジェクト54の動きが不自然になってしまう場合がある。この点、下記に説明するようにすることによって、剣オブジェクト54の動きが不自然にならないように図るようにしてもよい。
この場合、オブジェクト制御部76は、剣オブジェクト54の所定時間あたりの動き量が基準量よりも大きいか否かを判定する。すなわち、オブジェクト制御部76は、プレイヤキャラクタ52が剣オブジェクト54を素早く振っているか否か(プレイヤキャラクタ52が攻撃を行っているか否か)を判定する。この判定は、図14のステップS114の場合と同様に実行される。
剣オブジェクト54の所定時間あたりの動き量が基準量よりも大きい場合、オブジェクト制御部76は、剣オブジェクト54の位置及び姿勢の変化方向を基本方向として取得する。そして、オブジェクト制御部76は、基本方向が取得された後の剣オブジェクト54の位置及び姿勢の変化方向を基本方向に基づいて補正する。
図15は、剣オブジェクト54の動きの補正について説明するための図である。例えば、プレイヤが、剣オブジェクト54の先端部分54aが図15に示すP1〜P5のような直線的な軌道を描くように剣オブジェクト54を振ることを意図して操作を行った場合であっても、実際には、先端部分54aが図15に示すP1,P2,Q3,Q4,Q5のような曲線的な軌道を描くような操作を行ってしまう場合がある。これは、プレイヤが左手及び右手の親指を使って左スティック44L及び右スティック44Rを操作する場合に生じやすい。このような場合、剣オブジェクト54の動きが不自然であるとプレイヤが感じてしまうおそれがある。
そこで、剣オブジェクト54の先端部分54aの位置がP1からP2に変化した場合の移動量が基準量よりも大きいような場合、オブジェクト制御部76はP1からP2への方向を基本方向として取得する。その後、オブジェクト制御部76は、剣オブジェクト54の先端部分54aの位置を、基本方向に伸ばした直線98上に先端部分54aの元々の位置から下ろした垂線の足の位置に補正する。例えば、剣オブジェクト54の先端部分54aの元々の位置がQ3である場合、オブジェクト制御部76は、剣オブジェクト54の先端部分54aの位置を、元々の位置(Q3)から直線98上に下ろした垂線の足の位置(P3)に補正する。このようにすれば、剣オブジェクト54の動きが不自然であるとプレイヤが感じてしまわないように図ることが可能になる。
なお、ここでは、剣オブジェクト54の先端部分54aの位置を補正する例について説明したが、剣オブジェクト54の先端部分54aの代わりに、第2の点82の位置を補正するようにしてもよい。
また、剣オブジェクト54の動きの補正は、剣オブジェクト54が攻撃のために振り始められてから所定時間が経過した場合に終了するようにすればよい。または、剣オブジェクト54の動きの補正は、剣オブジェクト54の動き量が基準量以下になった場合に終了するようにしてもよい。
(2)例えば、第1の点80は剣オブジェクト54のグリップ部分54l以外の部分に関連づけられるようにしてもよい。例えば、第1の点80は、剣オブジェクト54のグリップ部分54rに関連づけられるようにしてもよい。この場合、第1の領域オブジェクト90(すなわち、第1の領域)の形状、大きさ、及びプレイヤキャラクタ52との位置関係は、プレイヤキャラクタ52の右手52rが届く領域を考慮して設定される。
(3)例えば、第2の点82は剣オブジェクト54の先端部分54a以外の部分に関連づけられるようにしてもよい。例えば、第2の点82は、剣オブジェクト54のグリップ部分54rに関連づけられるようにしてもよい。この場合、第2の領域オブジェクト94(すなわち、第2の領域)の形状、大きさ、及びプレイヤキャラクタ52との位置関係は、プレイヤキャラクタ52の右手52rが届く領域を考慮して設定される。また、この場合にも、オブジェクト制御部76は、剣オブジェクト54の長手方向が第1の点80から第2の点82への方向84と一致するように、剣オブジェクト54の姿勢を制御する。
なお、第1の点80から第2の点82までの距離が長い場合の方が、第1の点80から第2の点82までの距離が短い場合に比べて、第2の点82が移動可能な領域(第2の領域)が広くなるため、剣オブジェクト54(先端部分54a)の動きを滑らかにするための調整を行い易くなる。
(4)例えば、左スティック44Lの代わりに他の操作部材が用いられるようにしてもよい。例えば方向ボタン群40が用いられるようにしてもよい。この場合、第1の点制御部72は、方向ボタン群40の押下状態に基づいて第1の点80を移動させる。この場合、左スティック44Lの左右方向及び上下方向への傾きの代わりに、左方向ボタン40L、右方向ボタン40R、上方向ボタン40U、及び下方向ボタン40Dに加えられる押下力が用いられる。
なお、コントローラ30は、方向ボタン群40の代わりに、十字形状を有する十字ボタンを備えるようにしてもよい。例えば、十字ボタンは、上方向に対応する上押下部と、下方向に対応する下押下部と、左方向に対応する左押下部と、右方向に対応する右押下部と、が一体的に形成されたボタンである。
また、方向ボタン群40ではなく、ボタン42A,42B,42X,42Yが左スティック44Lの代わりに用いられるようにしてもよい。この場合、ボタン42Yが上方向ボタン40Uに相当し、ボタン42Aが下方向ボタン40Dに相当すると考えるようにすればよい。また、ボタン42Xが左方向ボタン40Lに相当し、ボタン42Bが右方向ボタン40Rに相当すると考えるようにすればよい。
左スティック44Lと同様、右スティック44Rの代わりに他の操作部材が用いられるようにしてもよい。
(5)例えば、プレイヤキャラクタ52は剣オブジェクト54以外の武器オブジェクトを持つようにしてもよい。なお、プレイヤキャラクタ52が複数種類の武器オブジェクトを持ち替えるような場合、武器オブジェクトごとに、第1の点80が移動可能な領域(第1の領域)と、第2の点82が移動可能な領域(第2の領域)と、の少なくとも一方が変化するようにしてもよい。すなわち、第1の領域オブジェクト90又は/及び第2の領域オブジェクト94の形状、大きさ、又はプレイヤキャラクタ52との位置関係の少なくとも一つが武器オブジェクトの種別に基づいて変わるようにしてもよい。この場合、第1の領域オブジェクト90又は/及び第2の領域オブジェクト94の形状、大きさ、又はプレイヤキャラクタ52との位置関係の少なくとも一つに関するデータが、武器オブジェクトの種別ごとにゲームデータ記憶部70に記憶されるようにすればよい。こうすれば、武器オブジェクトの種別ごとに、武器オブジェクトの構え方や振り方が変わるようにすることが可能になる。
(6)例えば、プレイヤキャラクタ52が複数種類のゲームキャラクタのうちから選択されるような場合、ゲームキャラクタごとに、第1の点80が移動可能な領域(第1の領域)と、第2の点82が移動可能な領域(第2の領域)と、の少なくとも一方が変わるようにしてもよい。すなわち、第1の領域オブジェクト90又は/及び第2の領域オブジェクト94の形状、大きさ、又はプレイヤキャラクタ52との位置関係の少なくとも一つがゲームキャラクタの種別に基づいて変わるようにしてもよい。この場合、第1の領域オブジェクト90又は/及び第2の領域オブジェクト94の形状、大きさ、又はプレイヤキャラクタ52との位置関係の少なくとも一つに関するデータが、ゲームキャラクタの種別ごとにゲームデータ記憶部70に記憶されるようにすればよい。こうすれば、ゲームキャラクタの種別ごとに、剣オブジェクト54の構え方や振り方が変わるようにすることが可能になる。
(7)例えば、ゲーム空間は、プレイヤキャラクタ、剣、及び敵キャラクタが位置及び姿勢が2つの座標要素で管理されるような2次元ゲーム空間であってもよい。
(8)例えば、本発明は、プレイヤキャラクタ52が武器オブジェクト以外のオブジェクトを持つようなゲームにも適用することができる。本発明は、アクションゲーム以外のゲームにも適用することができる。例えば、選手キャラクタがバットオブジェクトを持つ野球ゲームにも本発明は適用することができる。この場合、プレイヤがバットオブジェクトの構え方や振り方を細かく指示できるようにすることが可能になる。また例えば、ゲームキャラクタがオールを漕ぐようなゲームにも本発明は適用することができる。この場合、プレイヤがオールの漕ぎ方を細かく指示できるようにすることが可能になる。
なお、オブジェクト制御部76による制御の対象となるオブジェクトは、長手形状を有するオブジェクトでなくてもよいし、ゲームキャラクタによって持たれているオブジェクトでなくてもよい。例えば、プレイヤが左スティック44L及び右スティック44Rを用いて、ゲーム空間に浮いているオブジェクトの姿勢を細かく調整するようなゲームにも本発明は適用することが可能である。