ゲーム装置及びゲームプログラム
【課題】多様なオブジェクトの動作を実現しつつ、モーションデータのデータ量及びその作成コストを削減することが可能なゲーム装置及びゲームプログラムを提供する。
【解決手段】ゲーム装置は、プレイヤキャラクタの腰Wが移動する軌道WPと、足首Parが移動する楕円軌道ArPとを設定する。プレイヤキャラクタがゲーム空間を移動すると、その移動量に応じて、腰が軌道WP上を移動し、足首が楕円軌道ArP上を移動する。この場合において、足首が楕円軌道ArP上を1周する間、腰は軌道WP上を2往復する。これにより、足の動きに応じたモーション画像を予め用意する必要がなく、プレイヤキャラクタの多様な足の動きを実現することができる。
【解決手段】ゲーム装置は、プレイヤキャラクタの腰Wが移動する軌道WPと、足首Parが移動する楕円軌道ArPとを設定する。プレイヤキャラクタがゲーム空間を移動すると、その移動量に応じて、腰が軌道WP上を移動し、足首が楕円軌道ArP上を移動する。この場合において、足首が楕円軌道ArP上を1周する間、腰は軌道WP上を2往復する。これにより、足の動きに応じたモーション画像を予め用意する必要がなく、プレイヤキャラクタの多様な足の動きを実現することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム装置及びゲームプログラムに関し、より特定的には、予め記憶されたモーションデータを用いてオブジェクトを動作させるゲーム装置及びゲームプログラムに関する。
【背景技術】
【0002】
従来より、予め記憶されているモーションデータを用いて、仮想3次元空間等に存在するゲームキャラクタ等のオブジェクトを動作させるゲーム装置が存在する。例えば、特許文献1では、モーションデータを用いて多様なオブジェクトの動作を実現しつつ、モーションデータのデータ量を削減する方法が開示されている。具体的には、特許文献1に記載の技術では、プレイヤキャラクタに関する予め記憶された複数のモーションデータをタッチパネルのタッチ位置に応じてブレンドすることにより、プレイヤキャラクタがボールをドリブルする様子を画面上に表示している。これにより、モーションデータのデータ量が少ない場合でも、プレイヤキャラクタの多様な動作を表示可能としている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−102503号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載の技術では、ブレンドするための複数のモーションデータを予め記憶しておく必要がある。従って、より複雑なオブジェクトの動作を表現するためには、予め記憶しておくモーションデータのデータ量が多くなり、モーションデータのデータ量やその作成に要するコストを削減するという点では不十分な場合があった。
【0005】
それ故、本発明の目的は、多様なオブジェクトの動作を実現しつつ、モーションデータのデータ量及びその作成コストを削減することが可能なゲーム装置及びゲームプログラムを提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号及び補足説明等は、本発明の理解を助けるために後述する実施例との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【0007】
本発明は、仮想空間内でオブジェクト(プレイヤキャラクタ)を動かすゲーム装置であって、オブジェクト位置設定手段(S1、S9を実行するCPU10。以下、単にステップ番号のみを記載する。)と、第1部位設定手段(S5、S6)と、表示制御手段(S10)とを備える。オブジェクト位置設定手段は、上記オブジェクトの上記仮想空間内での位置を設定する。第1部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第1の部位(右足首Ar等)の位置(位置Par等)を設定する。表示制御手段は、第1部位設定手段によって設定された上記第1の部位を含む画像を画面に表示する。そして、第1部位設定手段は、上記オブジェクトの位置に応じて設定された第1の軌道(軌道ArP等)上を、上記オブジェクトの移動量に応じた量で上記第1の部位を移動させることで、上記第1の部位の位置を設定する。
【0008】
なお、上記第1の部位とは、上記オブジェクトと一体となって動作可能な上記オブジェクトの一部位を含むものであり、例えば、上記オブジェクトの身体の一部位であってもよいし、上記オブジェクトと付随して動作する別のオブジェクトであってもよい。
【0009】
上記によれば、オブジェクトの一部位である第1の部位が移動する第1の軌道を設定することができ、第1の部位の位置を、第1の軌道上に設定し、表示することができる。これにより、オブジェクトの多様な表示を行うことができるとともに、第1の部位の位置に応じたモーション画像を予め用意する必要がなく、画像データのデータ量を削減することができる。
【0010】
本発明では、上記第1の軌道は、閉曲線であってもよい。そして、第1部位設定手段は、上記第1の部位の位置を上記閉曲線上に設定する。
【0011】
ここで、閉曲線とは、始点と終点との位置が一致する曲線であり、多角形を含む広い概念の曲線である。
【0012】
この構成によれば、第1の部位を、閉曲線上を移動させることができる。
【0013】
本発明では、上記第1の軌道は短径が0以上の楕円又は円軌道であってもよい。そして、第1部位設定手段は、上記楕円又は円の中心角(θar等)を上記オブジェクトの移動量に応じて設定し、当該中心角によって定められる上記楕円又は円上の点を上記第1の部位の位置として設定する。
【0014】
ここで、短径が0の楕円とは、所定の長さを有する線分である。また、楕円又は円の中心角とは、楕円又は円の中心と当該楕円又は円上の点とを結ぶ線分が、予め定められた直線(当該中心と当該楕円又は円上の定点とを結ぶ線分)となす角である。また、楕円の中心とは、当該楕円の長軸と短軸との交点である。
【0015】
この構成によれば、第1の部位を、中心角に基づいて楕円又は円上を移動させることができる。また、オブジェクトの移動量に応じて上記中心角が設定されることにより、オブジェクトの移動量に応じた量で第1の部位を移動させることができる。
【0016】
本発明では、上記第1部位設定手段は、中心位置設定手段(S20)を含んでもよい。中心位置設定手段は、上記楕円又は円の中心(中心Oar等)の位置を上記オブジェクトの位置に基づいて設定する。
【0017】
この構成によれば、仮想空間における第1の部位の位置を上記オブジェクトの位置に応じて設定することができる。これにより、上記オブジェクトが仮想空間を移動することに伴って、上記第1の部位の位置を移動させることができる。
【0018】
本発明では、第2部位設定手段(S5)をさらに備えてもよい。第2部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第2の部位(腰W)の位置(位置Pw)を設定する。そして、第2部位設定手段は、上記オブジェクトの位置に応じて設定された第2の軌道(軌道WP)上を、上記オブジェクトの移動量に応じた量で上記第2の部位を移動させることで上記第2の部位の位置を設定する。さらに、第1部位設定手段は、上記第2の部位の位置に対する相対位置として、上記第1の部位の位置を設定する。そして、表示制御手段は、上記第1の部位及び上記第2の部位を含む画像を上記画面に表示する。
【0019】
この構成によれば、上記オブジェクトの一部位である第2の部位が移動する第2の軌道を設定することができ、第2の部位の位置を、第2の軌道上に設定することができる。そして、第1の部位の位置を第2の部位に対する相対位置として設定することができる。これにより、オブジェクトの移動に応じて、第2の部位の移動させることができ、さらに第2の部位の移動に伴って第1の部位を移動させることができる。
【0020】
本発明では、第2部位設定手段(S5)をさらに備えてもよい。第2部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第2の部位(腰W)の位置(位置Pw)を設定する。また、第2部位設定手段は、上記オブジェクトの位置に応じて設定された第2の軌道(軌道WP)上を、上記オブジェクトの移動量に応じた量で上記第2の部位を移動させることで上記第2の部位の位置を設定する。表示制御手段は、上記第1の部位及び上記第2の部位を含む画像を上記画面に表示する。そして、上記オブジェクトが上記仮想空間内を移動している場合、上記第1の部位及び上記第2の部位は、上記第1の軌道上及び上記第2の軌道上をそれぞれ周期的に移動する。この場合において、上記第1の部位の周期は上記第2の部位の周期の2倍である。
【0021】
この構成によれば、第1の部位は第1の軌道上を、第2の部位は第2の軌道上をそれぞれ周期的に移動する。そして、第1の部位の周期を第2の部位の周期の2倍に設定することにより、第1の部位を第2の部位と連動して動作させることができる。
【0022】
本発明では、第3部位設定手段(S6)をさらに備えてもよい。第3部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第3の部位(左足首Al)の位置を設定する。また、第3部位設定手段は、上記オブジェクトの位置に応じて設定された第3の軌道上(軌道AlP)を、上記オブジェクトの移動量に応じた量で上記第3の部位を移動させることで上記第3の部位の位置を設定する。さらに、第3部位設定手段は、上記第2の部位の位置に対する相対位置として、上記第3の部位の位置を設定する。表示制御手段は、上記第1の部位、上記第2の部位、及び上記第3の部位を含む画像を上記画面に表示する。そして、上記オブジェクトが上記仮想空間内を移動している場合、上記第3の部位は、上記第3の軌道上を上記第1の部位の周期と同じ周期で移動し、かつ、上記第1の部位と上記第3の部位とは、所定の位相差を有する。
【0023】
この構成によれば、第1の部位及び第2の部位に加えて、第3の部位の位置を設定することができる。これにより、第1の部位、第2の部位、及び第3の部位を画面上に表示することができる。また、第1の部位と第3の部位を所定の位相差で移動させることにより、第1の部位と第3の部位とが連動して動作する様子を画面に表示することができ、例えば、人が歩いたり走ったりする様子を表示することができる。
【0024】
本発明では、上記第2の軌道は短径が0以上の楕円又は円軌道であってもよい。この場合において、第2部位設定手段は、上記楕円又は円の中心角を上記オブジェクトの移動量に応じて設定し、当該中心角によって定められる上記楕円又は円上の点を上記第2の部位の位置として設定する。
【0025】
この構成によれば、第2の部位を、中心角に基づいて楕円又は円上を移動させることができる。また、上記オブジェクトの移動量に応じて上記中心角が設定されることにより、オブジェクトの移動量に応じた量で第2の部位を移動させることができる。
【0026】
本発明では、上記オブジェクトは上記仮想空間内に存在する所定の地形オブジェクト上を移動してもよい。この場合において、第1部位設定手段は、判定手段(S36)と、位置補正手段(S39)とを含む。判定手段は、上記第1の部位が上記地形オブジェクトの内部に存在するか否かを判定する。位置補正手段は、判定手段によって上記第1の部位が上記地形オブジェクトの内部に存在すると判定された場合に、上記第1の部位の位置を上記地形オブジェクトの表面に補正する位置補正手段を含む。
【0027】
この構成によれば、第1の部位が地形オブジェクトの内部に存在する場合、第1の部位の位置を補正することができる。これにより、第1の部位が地面の下に表示されることを防止することができる。
【0028】
本発明では、上記オブジェクトは上記仮想空間内に存在する所定の地形オブジェクト上を移動してもよい。この場合において、第1部位設定手段は、単位時間あたりの上記オブジェクトの移動量が所定の閾値より少ない場合、上記第1の部位の位置を上記地形オブジェクトに近づけるようにして、上記第1の部位の位置をさらに設定する(S52)。
【0029】
この構成によれば、上記オブジェクトが地形オブジェクト上を移動している場合において、その移動する速さが所定の速さより遅い場合、第1の部位の位置を地形オブジェクトに近づけることができる。これにより、上記オブジェクトが低速で移動している場合においても、第1の部位に関する表示を自然な表示にすることができる。
【0030】
本発明では、上記オブジェクトは、人オブジェクトであって、上記第1の部位及び上記第3の部位は足首であり、上記第2の部位は腰であってもよい。
【0031】
この構成によれば、人オブジェクトの足の動きを表現することができる。
【0032】
本発明では、第1部位設定手段によって設定された足首の位置と、第2部位設定手段によって設定された腰の位置とに基づいて、膝の状態(膝の角度及び膝の向き)を設定する膝状態設定手段(S7)をさらに備えてもよい。
【0033】
この構成によれば、膝の角度や向きを設定することができ、足の自然な動きを実現することができる。
【0034】
本発明では、オブジェクト位置設定手段は、所定の操作入力に基づいて上記オブジェクトの上記仮想空間内での位置を設定してもよい。
【0035】
この構成によれば、プレイヤからの操作入力に基づいて、上記オブジェクトの位置を設定することができる。
【0036】
本発明では、仮想空間内のオブジェクトを動作させるゲーム装置であって、オブジェクト位置設定手段と、第1部位動作手段と、表示制御手段とを備える。オブジェクト位置設定手段は、上記オブジェクトの上記仮想空間内での位置を設定する。第1部位動作手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対動作として、上記オブジェクトの第1の部位を動作させる。表示制御手段は、上記第1部位動作手段によって動作させた上記第1の部位を含む画像を画面に表示する。そして、第1部位動作手段は、上記オブジェクトの位置に応じて設定された第1の軌道上を、所定期間内に上記第1の部位を移動させることで、上記第1の部位を動作させる。
【0037】
この構成によれば、オブジェクトの一部位である第1の部位が移動する第1の軌道を設定することができ、第1の部位を、第1の軌道上で動作させることができる。これにより、オブジェクトの多様な表示を行うことができるとともに、第1の部位の動作に応じたモーション画像を予め用意する必要がなく、画像データのデータ量を削減することができる。
【0038】
また、本発明は、ゲーム装置のコンピュータを上記各手段として機能させるゲームプログラムの形態で実施されてもよい。
【発明の効果】
【0039】
本発明によれば、オブジェクトの一部位が移動する軌道を設定し、その軌道上を当該部位が移動することにより、オブジェクトの多様な表示を行うことができる。これにより、オブジェクトの部位の位置に応じたモーション画像を予め用意する必要がなく、画像データのデータ量や画像データを製作するためのコストを削減することができる。
【図面の簡単な説明】
【0040】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の構成を示すブロック図
【図3】コントローラ5を上側後方から見た斜視図
【図4】コントローラ5を下側前方から見た斜視図
【図5】ゲームキャラクタの足首及び腰が動く様子を横から見た図
【図6】腰Wの移動の仕方を示した図
【図7】右足首Arの移動の仕方を示した図
【図8A】人が歩く様子を横から見た場合において、右足又は左足が進行方向前後に位置している様子を示した図
【図8B】人が歩く様子を横から見た場合において、右足又は左足が地面について膝が伸びた状態を示した図
【図9】ゲーム装置3のメインメモリに記憶される主なデータを示す図
【図10】ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャート
【図11】図10における腰の軌道及び位置設定処理(ステップS5)の詳細を示すフローチャート
【図12】図10における右足首の軌道及び位置設定処理(ステップS6)の詳細を示すフローチャート
【図13】図10における膝位置設定処理(ステップS7)の詳細を示すフローチャート
【図14】図10におけるモデルの設定処理(ステップS8)の詳細を示すフローチャート
【図15】ステップS37における足首の高さを地面の高さに設定する処理を示した図
【図16】ステップS39における足首の高さを地面の高さに近づける処理を示した図
【発明を実施するための形態】
【0041】
(ゲームシステムの全体構成)
図1を参照して、本発明の一実施形態のゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置及びゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、コントローラ5、及びマーカ部6を含む。本システムは、コントローラ5を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0042】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0043】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6R及び6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0044】
コントローラ5は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
【0045】
図3は、コントローラ5を上側後方から見た斜視図ある。図4は、コントローラ5を下側前方から見た斜視図である。コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、及び、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0046】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、及び電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32f及び電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32f又は電源ボタン32hを誤って押下することを防止することができる。また、ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカからの音を外部に放出するための音抜き孔31aが形成されている。
【0047】
ハウジング31の後面にはコネクタ33が設けられており、コントローラ5に他の機器を接続するために利用される。また、ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0048】
また、コントローラ5は撮像情報演算部35を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6R及び6Lからの赤外光を少なくとも透過する材質で構成される。
【0049】
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、及びAV−IC15等を有する。
【0050】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14及びAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11e又は外部メインメモリ12に読み出したデータを書き込む。
【0051】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、及び内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0052】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0053】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0054】
上述のように生成された画像データ及び音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0055】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、及びメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0056】
入出力プロセッサ11aは、無線通信モジュール18及びアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18及びアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22及び無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データ又は途中データ)が記憶されてもよい。
【0057】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23及び無線コントローラモジュール19を介して受信し、内部メインメモリ11e又は外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0058】
さらに、入出力プロセッサ11aには、拡張コネクタ20及びメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0059】
ゲーム装置3には、電源ボタン24、リセットボタン25、及びイジェクトボタン26が設けられる。電源ボタン24及びリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0060】
[ゲーム処理の概要]
次に、図5〜図8Bを参照して、本実施形態のゲーム処理の概要について説明する。本実施形態では、3次元ゲーム空間上に存在するプレイヤキャラクタ等のゲームキャラクタが、当該ゲーム空間内を移動する場合において、移動する際の当該ゲームキャラクタの足の動きを画面上にリアルに表示するものとする。具体的には、本実施形態のゲームは、プレイヤチームのキャラクタと相手チームのキャラクタとがバスケットボールの試合を行うゲームである。プレイヤによるコントローラ5に対する入力に応じて、ゲームキャラクタがバスケットコート上を歩いたり走ったりする。通常、ゲームキャラクタがゲーム空間を歩いたりする場合には、予め記憶された複数のモーションの画像を順次画面上に表示することによって、ゲームキャラクタがゲーム空間を歩いたりする様子が画面上に表示される。本実施形態では、ゲームキャラクタの足の動きを計算により求めることによって、予め記憶されるべきモーションデータの量を削減する。本実施形態では、ゲームキャラクタの足首が動く軌道及びゲームキャラクタの腰が動く軌道が定められる。そして、当該軌道に沿って足首及び腰を移動させることによって、足首及び腰の位置を動かし、ゲームキャラクタが歩行等する様子を画面上に表示する。
【0061】
図5は、ゲームキャラクタの足首及び腰が動く様子を横から見た図である。図5では、ゲームキャラクタがゲーム空間上を歩行する様子を横から見た場合において、ゲームキャラクタの腰より下の部位のみが表示されている。図5に示されるように、ゲームキャラクタの体の一部位である腰Wとゲームキャラクタの右足首Arとが、図示されている。また、腰Wの軌道WPと、右足首Arの軌道ArPが図示されている。身体の各部位は、それぞれに設定された軌道上を移動する。すなわち、腰Wは、軌道WP上を移動し、右足首Arは軌道ArP上を移動する。より具体的には、腰Wの位置を示す位置Pwが軌道WP上を移動することにより、腰Wが動作し、右足首Arの位置を示す位置Parが軌道ArP上を移動することにより、右足首Arが動作する。また、図示されていないが、左足首Alも右足首Arと同様に、左足首Alに設定された軌道AlP上を移動する。このように、各部位(腰W、右足首Ar及び左足首Al)に設定された軌道上を、各部位がそれぞれ移動することにより、全体として、ゲームキャラクタが動作する様子が画面上に表示される。
【0062】
次に、各部位がそれぞれの軌道上を移動する移動の仕方について説明する。各部位は、それぞれに設定された楕円軌道の中心角をパラメータとして、当該中心角に対応する楕円軌道上の位置に移動する。上記各部位の中心角は、ゲームキャラクタがゲーム空間を移動する速度(実際には速度と時間の積である移動量)に応じて、変化する。図6は、腰Wの移動の仕方を示した図である。図6に示されるように、腰Wの軌道WPは、実際には直線であるが、短径(楕円の短軸の長さ)が0の楕円とみなすことができる。図6では、説明を分かりやすくするために、楕円WP’が描かれている。腰Wの位置Pwは、楕円WP’の中心角θw(楕円WP’上の点と楕円WP’の中心Owとを結ぶ線分が、楕円WP’の長軸となす角度)の大きさに応じて変化する。すなわち、腰Wの位置Pwは、図6に示されるように、中心角θwに対応する楕円WP’上の点Pから直線軌道WP(短径が0の楕円軌道WP)へ下ろした垂線の足である。従って、ゲームキャラクタがゲーム空間を一定の速度で移動する場合において、上記中心角θwを一定の速度で変化させることにより、当該ゲームキャラクタの移動に応じて、腰Wの位置Pwも変化し、結果として腰Wが動作する。
【0063】
同様に、右足首Arについても、軌道ArPの中心角を変化させることによって、軌道ArP上を移動させることができる。図7は、右足首Arの移動の仕方を示した図である。図7に示されるように、右足首Arの位置Parは、楕円軌道ArPの中心角θarの値に応じて定められる。当該中心角θarは、ゲーム空間におけるゲームキャラクタの移動量に応じて変化する。また、図示は省略するが、右足首Arと同様、左足首Alの位置Palについても、左足首Alに設定された楕円軌道AlPの中心角θalの値に応じて定められる。
【0064】
上述したように、各部位は、それぞれに設定された楕円軌道(短径の長さが0の楕円を含む楕円軌道)上を移動する。そして、各部位の位置は、それぞれに定められる中心角をパラメータとして、変化する。ここで、ゲームキャラクタの移動に伴う腰Wの中心角θwの変化量は、左右足首の中心角の変化量の倍に設定される。すなわち、左右足首が各楕円軌道上を移動する周期(左右足首の周期)は、腰Wが楕円軌道WP上を移動する周期(腰の周期)の倍に設定される(右足首の移動周期と左足首の移動周期は同じに設定される)。例えば、右足首Arが軌道ArP上を半回転する間(中心角θarが0からπまで変化する間)、腰Wは軌道WPの最上点から最下点を通って最上点まで移動する(すなわち、腰Wは軌道WP上を1回転する)。同様に、左足首Alが軌道AlP上を半回転する間、腰Wは軌道WPの最上点から最下点を通って最上点まで移動する。
【0065】
図8Aは、人が歩く様子を横から見た場合において、右足又は左足が進行方向前後に位置している様子を示した図である。図8Bは、人が歩く様子を横から見た場合において、右足又は左足が地面について膝が伸びた状態を示した図である。人が歩く場合や走る場合、例えば、右足又は左足が伸びた状態になった場合(図8Bに示されるように、右足又は左足が体に対して略垂直の状態になった場合)に、腰は最上点に位置し、右足又は左足が曲がった場合(図8Aに示されるように、右足又は左足が進行方向前後に位置している場合)に、腰は最下点に位置すると考えられる。従って、例えば、右足が進行方向に対して前後に1往復する間、腰は上下方向に2往復することになる。このように、足首の移動周期を腰の移動周期の倍に設定することにより、実際に人が歩いたり走ったりする場合のように、足の動きと腰の動きが連動しているように表示することができる。
【0066】
また、右足首Arと左足首Alとは、位相が逆に設定される。すなわち、中心角θarと中心角θalとは、位相がπだけずれている。このように、左右足首の位相をずらすことにより、左右の足が交互に前後する動作を表現することができる。
【0067】
以上のように、足首の移動周期を腰の移動周期の倍に設定し、かつ、左右足首を逆位相とすることにより、ゲームキャラクタがゲーム空間を歩いたり走ったりする動作を、実際に人が歩いたり走ったりする場合のように、リアルに表現することができる。
【0068】
[ゲーム処理の詳細]
次に、図9〜図16を参照してゲーム装置3において実行される処理の詳細について説明する。まず、ゲーム装置3における処理において用いられる主なデータについて図9を用いて説明する。図9は、ゲーム装置3のメインメモリ(外部メインメモリ12又は内部メインメモリ11e)に記憶される主なデータを示す図である。図9に示されるように、ゲーム装置3のメインメモリには、ゲームプログラム61、操作データ62、及びゲーム処理用データ64が記憶される。
【0069】
ゲームプログラム61は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部又は全部が読み込まれてメインメモリのプログラム領域に記憶される。
【0070】
操作データ62は、コントローラ5からゲーム装置3へ送信されてくる操作データである。コントローラ5からゲーム装置3へ、例えば、1/200秒に1回の割合で操作データが送信されるので、メインメモリに記憶される操作データ62はこの割合で更新される。操作データ62には、各ボタン(例えば、十字ボタン32a)が押されたか否かを示すボタン操作データ63等が含まれる。
【0071】
ゲーム処理用データ64は、後述するゲーム処理(図10)において用いられるデータである。ゲーム処理用データ64は、キャラクタ状態データ65、腰角度データ66、足首角度データ67、腰軌道データ68、足首軌道データ69、腰位置データ70、足首位置データ71、及び画像データ72を含む。ゲーム処理用データ64には、これらの他に相手キャラクタの位置やボールの位置を示すデータ、地面(コート)やゴール等ゲーム空間に関するデータやゲーム状況に関するデータ等、ゲーム処理に必要なデータが含まれる。
【0072】
キャラクタ状態データ65は、ゲーム空間におけるプレイヤキャラクタの位置、プレイヤキャラクタの身体の向き、及び、プレイヤキャラクタの速度を示すデータである。腰角度データ66は、上述した腰の軌道WPにおける腰の位置を示すデータであり、上記中心角θwを示すデータである。足首角度データ67は、上述した各足首の軌道(楕円軌道ArP及び楕円軌道AlP)における各足首の位置を示すデータであり、上記中心角θar及び中心角θalを示すデータである。
【0073】
腰軌道データ68は、腰の軌道WPに関するデータであり、腰の軌道WPのゲーム空間における位置(軌道WPの中心Owの位置)、軌道WPの短軸及び長軸の長さ、短軸又は長軸の傾き(短軸又は長軸のゲーム空間固定座標軸に対する傾き)等を示すデータである。足首軌道データ69は、各足首の軌道(楕円軌道ArP及び楕円軌道AlP)に関するデータであり、各足首の軌道のゲーム空間における位置(軌道の中心Oar及び中心Oalの位置)、各軌道の短軸及び長軸の長さ、短軸又は長軸の傾き(短軸又は長軸のゲーム空間固定座標軸に対する傾き)等を示すデータである。
【0074】
腰位置データ70は、ゲーム空間における腰の位置Pwを示すデータである。足首位置データ71は、ゲーム空間における足首の位置(右足首の位置Par及び左足首の位置Pal)を示すデータである。
【0075】
画像データ72は、プレイヤキャラクタや各種オブジェクトに関する画像データである。プレイヤキャラクタの画像データとして、例えば、基本的な姿勢(プレイヤキャラクタが直立状態である場合の姿勢)の画像がメインメモリに記憶される。プレイヤキャラクタの画像は、たとえば3次元のモデルとして記憶されるが、それ以外の形態によって記憶されてもよい。ここで、基本的な姿勢は、当該姿勢をしたキャラクタの3次元モデルそのものであってもよいし、別途記憶される当該3次元モデルに対してどのような姿勢にするかを示す制御データであってもよい。
【0076】
図10は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムや各種オブジェクト(ゲームキャラクタやボール、地面等)の画像(画像データ72)等がメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図10に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、図10では、本発明に直接関連しないゲーム処理については記載を省略し、上述したゲームキャラクタの足の動きに関する処理についてのみ主に説明する。
【0077】
まず、ステップS1において、CPU10は、各種オブジェクトをゲーム空間上に配置する。具体的には、CPU10は、プレイヤによって操作されるプレイヤキャラクタや地形(地面)を表す地形オブジェクト等をゲーム空間上に配置し、プレイヤキャラクタ等の位置をキャラクタ状態データ65等としてメインメモリに記憶する。次に、CPU10は、ステップS2の処理を実行する。
【0078】
ステップS2において、CPU10は、プレイヤによって入力されたコントローラ5からの操作データを取得する。具体的には、CPU10は、メインメモリに記憶されたボタン操作データ63をメインメモリから取得する。次に、CPU10は、ステップS3の処理を実行する。
【0079】
ステップS3において、CPU10は、プレイヤキャラクタの身体の向き及び速度を決定する。具体的には、CPU10は、ステップS2において取得されたボタン操作データ63に基づいて、プレイヤキャラクタの身体の向き、及び、プレイヤキャラクタが移動する速度(方向と速さ)を決定する。ここで、プレイヤキャラクタの身体の向きとプレイヤキャラクタが移動する方向とは、必ずしも一致させる必要はない。例えば、プレイヤキャラクタの身体の向きは、ゲーム空間上の所定の位置(例えば、ボールが存在する位置)を向くように設定される。また、例えば、プレイヤによってコントローラ5の十字ボタン32aが押されている場合、CPU10は、十字ボタン32aが示す方向(例えば、十字ボタン32aの右ボタンが押されている場合は右方向)をプレイヤキャラクタが移動する方向として決定する。さらに、例えば、プレイヤキャラクタが移動する速さは、予め定められた所定の速さに決定される。プレイヤキャラクタの身体の向きを決定する。そして、CPU10は、プレイヤキャラクタの身体の向き及び速度をキャラクタ状態データ65として、メインメモリに記憶する。なお、プレイヤキャラクタが移動する速度やプレイヤキャラクタの身体の向きはどのようにして決定されてもよく、例えば、Aボタン32dやBボタン32iが押されているか否かに応じて、速度(方向及び速さ)が決定されてもよし、プレイヤによるコントローラ5の操作に応じて、身体の向きが設定されてもよい。また、コントローラ5のコネクタ33にさらにスティック等を備えた拡張コントローラを接続し、当該スティックに対する操作に基づいて決定されてもよい。それ以外にも、ゲーム処理においてプレイヤキャラクタの移動速度や身体の向きをどのように設定してもよい。次に、CPU10は、ステップS4の処理を実行する。
【0080】
ステップS4において、CPU10は、プレイヤキャラクタの身体の向きに対する相対速度が算出される。具体的には、CPU10は、ステップS3で決定されたプレイヤキャラクタの移動速度と身体の向きとに基づいて、身体の向きの相対速度(「身体の向き」方向の速度成分)を算出する。次に、CPU10は、ステップS5の処理を実行する。
【0081】
ステップS5において、CPU10は、腰の軌道及び位置を設定する。ここでの処理は、上述した腰Wの軌道WPのゲーム空間における位置、及びその軌道WP内での腰の位置Pwを設定する処理である。ステップS5における処理の詳細を、図11を用いて説明する。図11は、図10における腰の軌道及び位置設定処理(ステップS5)の詳細を示すフローチャートである。
【0082】
まず、CPU10は、ステップS20の処理を実行する。ステップS20において、CPU10は、ゲーム空間における腰の楕円軌道WPの位置を設定する。ここで、軌道WPは、短径が0の楕円であり、実際には所定の長さ(楕円の長軸の長さ)を有する線分である。また、ゲーム空間における楕円軌道WPの位置(軌道WPの位置)とは、軌道WPの中心Owのゲーム空間における位置である。ステップS20において、CPU10は、ゲーム空間における現在の軌道WPの位置と移動速度とに基づいて、軌道WPの中心Owの位置を設定する。具体的には、CPU10は、プレイヤキャラクタが移動している場合、その移動速度に応じて現在の軌道WPの位置(前回、ステップS20が実行された際に設定された軌道WPの中心Owの位置)を変更する。そして、CPU10は、軌道WPの位置を腰軌道データ68として、メインメモリに記憶する。なお、ステップS20において、軌道WPの位置に加えて、軌道WPの向きも設定されてもよい。軌道WPの向きとは、軌道WPの短径が0でない場合において、短軸のゲーム空間における向きである。このように軌道WPの向きが設定されることにより、プレイヤキャラクタの腰の向きが設定される。また、本実施形態では、軌道WPの長軸の向きはゲーム空間における鉛直方向(上下方向)に設定されるが、長軸の向きもゲーム状況(プレイヤキャラクタの速度、周辺の環境や操作状況等)に応じて設定されてもよい(この場合、腰Wは上下方向に対して所定の傾きを有して動作する)。次に、CPU10は、ステップS21の処理を実行する。
【0083】
ステップS21において、CPU10は、現在の腰の中心角θwを取得する。具体的には、CPU10は、メインメモリを参照して、前回のステップS23(後述する)で算出された腰の中心角θwを取得する。次に、CPU10は、ステップS22の処理を実行する。
【0084】
ステップS22において、CPU10は、プレイヤキャラクタの移動速度に基づいて、中心角θwの変化量を算出する。具体的には、CPU10は、ステップS3で決定されたプレイヤキャラクタの移動速度に単位時間(1フレーム時間)を掛けて得られる移動量に応じて、中心角θwの変化量を算出する。中心角θwの角速度とプレイヤキャラクタの移動速度とは、対応付けされている。すなわち、プレイヤキャラクタの移動速度が大きいときには、プレイヤキャラクタの足や腰の動きも早くなるので、中心角θwの変化量が大きくなる。次に、CPU10は、ステップS23の処理を実行する。
【0085】
ステップS23において、CPU10は、中心角θwに基づいて、腰の位置Pwを決定する。具体的には、CPU10は、ステップS21で取得した現在の腰の中心角θwにステップS22で算出した中心角θwの変化量を加えることにより、新たな腰の中心角θwを算出し、腰角度データ66としてメインメモリに記憶する。そして、CPU10は、その算出した中心角θwに基づいて、軌道WP(短径が0の楕円軌道)上の腰の位置Pwを決定し(図6参照)、腰位置データ70としてメインメモリに記憶する。ステップS23の処理の後、CPU10は、図11に示す腰の軌道及び位置設定処理を終了する。
【0086】
図10に戻り、CPU10は、次にステップS6の処理を実行する。ステップS6において、CPU10は、足首の軌道及び位置を設定する。ここでの処理は、上述した足首(右足首Ar及び左足首Al)の楕円軌道(軌道ArP及び軌道AlP)のゲーム空間における位置、及びその楕円軌道内での足首の位置(右足首の位置Par及び左足首の位置Pal)を設定する処理である。ステップS6における処理の詳細を、図12を用いて説明する。図12は、図10における右足首の軌道及び位置設定処理(ステップS6)の詳細を示すフローチャートである。なお、図12では、右足首の軌道及び位置を設定する場合について説明するが、左足首の軌道及び位置についても同じようにして設定される。
【0087】
まず、CPU10は、ステップS30の処理を実行する。ステップS30において、CPU10は、ゲーム空間における楕円軌道ArPの向き、及び楕円軌道ArPの位置を設定する。具体的には、CPU10は、楕円軌道ArPの向きをステップS3で決定されたプレイヤキャラクタの身体の向きに一致させる。ここで、楕円軌道ArPの向きとは、楕円軌道ArPの中心Oarから、当該楕円の長軸と楕円軌道ArPとの交点(当該楕円の長軸と楕円軌道ArPとの2つの交点のうち、中心角θar=π/2となる場合の交点)に向かう方向である。また、CPU10は、楕円軌道ArPの位置(ゲーム空間における中心Oarの位置)をステップS20と同様、プレイヤキャラクタの位置と移動速度に基づいて設定する。具体的には、CPU10は、前回ステップS30で設定された楕円軌道ArPの位置を移動速度に応じた移動量で移動させることによって、楕円軌道ArPの中心Oarの位置を設定し、足首軌道データ69としてメインメモリに記憶する。次に、CPU10は、ステップS31の処理を実行する。
【0088】
ステップS31において、CPU10は、楕円軌道ArPの長軸の長さ(長径)、及び前傾角度を設定する。具体的には、CPU10は、まず、ステップS4で算出された相対速度(プレイヤキャラクタの速度のうち、身体の向きの速度成分)ベクトルを正規化する。正規化した相対速度ベクトルの値(すなわち、この値は移動速度の大きさにおける「身体の向き」方向の速さの割合を表す)が、例えば0.5以上の場合、CPU10は、プレイヤキャラクタの移動方向は身体の向きに対して「前方向」であると判定する。また、正規化した相対速度ベクトルの値が、例えば−0.5以下の場合、CPU10は、プレイヤキャラクタの移動方向は身体の向きに対して「後方向」であると判定する。一方、正規化した相対速度ベクトルの値が、上記以外の場合(すなわち、−0.5<相対速度ベクトルの値<0.5の場合)、CPU10は、プレイヤキャラクタの移動方向は身体の向きに対して「左右方向」であると判定する。そして、CPU10は、「前方向」又は「後方向」の場合、プレイヤキャラクタの移動速度に応じて、楕円軌道ArPの長軸の長さ(長径)を2.0から2.5の範囲内で設定し、足首軌道データ69としてメインメモリに記憶する。一方、CPU10は、「左右方向」の場合、プレイヤキャラクタの移動速度に応じて、楕円軌道ArPの長径を1.2から1.8の範囲内で設定し、足首軌道データ69としてメインメモリに記憶する。このように、身体の向きの速度(相対速度)に応じて、軌道ArPの長軸の長さの範囲を設定し、さらにプレイヤキャラクタの移動速度に応じて当該長軸の長さを設定することにより、プレイヤキャラクタの歩幅を速度に応じて設定することができる。すなわち、身体の向きの速度が大きい場合は、歩幅は大きく、身体の向きの速度が小さい場合は、歩幅を小さくすることができ、プレイヤキャラクタの自然な動きを実現することができる。
【0089】
また、CPU10は、楕円軌道ArPの長軸の前傾角度(長軸と地面とがなす角度)を設定する。例えば、CPU10は、「前方向」の場合、プレイヤキャラクタの移動速度に応じて、上記前傾角度を5°から20°の範囲内で設定する。また、CPU10は、「後方向」の場合、上記前傾角度を−10°に設定し、「左右方向」の場合、上記前傾角度を0°に設定する。そして、CPU10は、設定した前傾角度を足首軌道データ69としてメインメモリに記憶する。このように、プレイヤキャラクタの移動方向に応じて、上記前傾角度が設定されることにより、プレイヤキャラクタの移動方向に応じた足首の軌道を設定することができる。すなわち、例えば、プレイヤキャラクタの移動方向が「前方向」である場合、楕円軌道ArPは進行方向側が前傾角度分だけ下がるように傾くよう設定されるため、プレイヤキャラクタの足首の動きをより自然に表現することができる。次に、CPU10は、ステップS32の処理を実行する。
【0090】
ステップS32において、CPU10は、腰の位置に応じて楕円軌道ArPの高さを設定する。具体的には、CPU10は、ステップS23で決定された腰の位置Pwに基づいて、腰の軌道WPにおける最上点から位置Pwまでの長さを算出し、算出された長さだけゲーム空間の下方向に楕円軌道ArPの位置を移動させる(足首軌道データ69を更新する)。次に、CPU10は、ステップS33の処理を実行する。
【0091】
ステップS33において、CPU10は、現在の右足首の中心角θarを取得する。具体的には、CPU10は、メインメモリを参照して、前回ステップS35(後述する)で算出された中心角θarを取得する。次に、CPU10は、ステップS34の処理を実行する。
【0092】
ステップS34において、CPU10は、プレイヤキャラクタの移動速度に基づいて、右足首の中心角θarの変化量を算出する。ステップS34の処理は、上述したステップS22の処理と同様の処理である。具体的には、CPU10は、ステップS3で決定されたプレイヤキャラクタの移動速度に単位時間(1フレーム時間)を掛けて得られる移動量に応じて、中心角θarの変化量を算出する。ここで、右足首の中心角θarの角速度は、腰の中心角θwの角速度の1/2に設定されるため、右足首の中心角θarの変化量は、ステップS22で算出された中心角θwの変化量の半分となる。
【0093】
なお、ここでは、プレイヤキャラクタの移動方向がプレイヤの身体の向きと反対方向の場合(すなわち、上記相対速度ベクトルの値が負の場合)においても、中心角θarの変化量は負の値ではなく、正の値とする。すなわち、プレイヤキャラクタが前進している状態から身体の向きを変えずに後進する場合、足首の動きを反転させず、軌道上を一定の方向で移動させる。この場合において、相対速度の変化に応じて中心角θarの変化量が補正される。具体的には、プレイヤキャラクタの移動方向が急激に変化した場合は、その変化の度合いに応じて中心角θarの変化量を大きくしたりする。なお、プレイヤキャラクタが前進している状態から身体の向きを変えずに後進する場合、足首の動きを反転させてもよい。
【0094】
次に、CPU10は、ステップS35の処理を実行する。
【0095】
ステップS35において、CPU10は、右足首の中心角θarに基づいて、右足首の軌道ArP上の位置を算出する。具体的には、CPU10は、ステップS33で取得した現在の右足首の中心角θarにステップS34で算出した中心角θarの変化量を加えることにより、新たな右足首の中心角θarを算出し、足首角度データ67としてメインメモリに記憶する。そして、CPU10は、その算出した中心角θarに基づいて、軌道ArP上の右足首の位置Parを算出し(図7参照)、足首位置データ71としてメインメモリに記憶する。次に、CPU10は、ステップS36の処理を実行する。
【0096】
ステップS36において、CPU10は、右足首の位置Parが地面より下か否かを判定する。ここでの処理は、右足首の位置Parに基づいて右足首を描画した場合、右足首(全部又は一部)が地形オブジェクトよりも下に位置するか否かを判定する処理である。具体的には、CPU10は、ステップS35で算出された右足首の位置Parのゲーム空間における高さと、地形オブジェクトのゲーム空間における高さとを比較する。判定結果が肯定の場合、CPU10は、次にステップS37の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS38の処理を実行する。
【0097】
ステップS37において、CPU10は、足首の高さを地面の高さに補正する。具体的には、CPU10は、メインメモリを参照して、地形オブジェクトの高さを取得し、取得した高さを右足首の高さに設定することにより、ステップS35で算出された右足首の位置Parを更新する(足首位置データ71を更新する)。ステップS37の処理の後、CPU10は、図12に示す足首の軌道及び位置設定処理を終了する。
【0098】
一方、ステップS38において、CPU10は、プレイヤキャラクタの移動速度が所定の閾値以下か否かを判定する。具体的には、CPU10は、ステップS3で決定された移動速度の大きさが所定の閾値以下か否かを判定する。判定結果が肯定の場合、CPU10は、右足首の位置Parを補正するため、次にステップS39の処理を実行する。一方、判定結果が否定の場合、CPU10は、図12に示す足首の軌道及び位置設定処理を終了する。
【0099】
ステップS39において、CPU10は、プレイヤキャラクタの移動速度の大きさに比例させて右足首の高さを地面に近づける処理を行う。例えば、移動速度の大きさがステップS38の所定の閾値と等しい場合、CPU10は、右足首の高さを補正せず、移動速度の大きさが0の場合、右足首の高さを地形オブジェクトの高さに設定する。移動速度の大きさが上記閾値から0の間の場合、CPU10は、その移動速度の大きさに比例して、地面に近づけるようにして右足首の高さを設定する。すなわち、移動速度が小さいほど右足首が地面に近づくようにする。ステップS39の処理の後、CPU10は、図12に示す足首の軌道及び位置設定処理を終了する。
【0100】
上述のように、ステップS37又はステップS39において、足首の高さを補正することにより、プレイヤキャラクタの不自然な表示や動きを防止することができる。具体的には、足があまり動いていないのに足が空中にあるというような不自然な状況を改善し、足が動いていないときは地面に近づけることができる。図15は、ステップS37における足首の高さを地面の高さに設定する処理を示した図である。図16は、ステップS39における足首の高さを地面の高さに近づける処理を示した図である。図15に示されるように、右足首の位置Parが地形オブジェクトより下に位置することによって、右足首が地形オブジェクトの内部に存在する場合、右足首の高さを地形オブジェクトの高さに設定する。これにより、右足首の位置は、補正後の位置Par’に変更され、右足首は地形オブジェクトの内部に存在しないようになり、足首の表示を自然にすることができる。
【0101】
また、図16に示されるように、右足首が地形オブジェクトより上に位置している場合において、プレイヤキャラクタの移動速度の大きさが所定の閾値より小さい場合、軌道ArP上の点Parよりも下方の位置Par’に右足首の位置が補正される。例えば、プレイヤキャラクタが移動していない場合において、右足首が地面より上の位置にあることは不自然であるため、右足首の高さを補正する。一方、プレイヤキャラクタの移動速度が所定の閾値よりも速い場合、右足首が地面より上の位置にあることは不自然ではないため、補正は行われない。従って、プレイヤキャラクタの移動速度に応じて、ゲーム空間における足首の高さを補正することにより、プレイヤキャラクタの自然な動きを実現することができる。
【0102】
図10に戻り、CPU10は、次にステップS7の処理を実行する。ステップS7において、CPU10は、膝位置設定処理を実行する。ステップS7における処理の詳細を、図13を用いて説明する。図13は、図10における膝位置設定処理(ステップS7)の詳細を示すフローチャートである。
【0103】
まず、CPU10は、ステップS40の処理を実行する。ステップS40において、CPU10は、メインメモリを参照して、腰の位置(ステップS5で設定)、両足首の位置(ステップS6で設定)、及び、両足首の向きを取得する。ここで、両足首の向きは、プレイヤキャラクタの身体の向き(ステップS3で設定)に基づいて定められる。例えば、身体の向きと足首の向きが一致していてもよいし、身体の向きに対して両足首の向きが所定の角度だけ開いていてもよい。次に、CPU10は、ステップS41の処理を実行する。
【0104】
ステップS41において、CPU10は、膝の開き角度(腿と脛の角度)を算出する。具体的には、CPU10は、ステップS40で取得した腰の位置、両足首の位置、及び、腿と脛の長さに基づいて、膝の開き角度を算出する。ここで、腿の長さと脛の長さとは、予め定められており、メインメモリに記憶されている。次に、CPU10は、ステップS42の処理を実行する。
【0105】
ステップS42において、CPU10は、膝の向きを調整する。具体的には、CPU10は、プレイヤキャラクタの身体の向き、及び両足首の向きに応じて、両膝の向き(身体の向きに対する開き度合い)を算出する。ステップS42の処理の後、CPU10は、図13に示す膝位置設定処理を終了する。
【0106】
図10に戻り、CPU10は、次にステップS8の処理を実行する。ステップS8において、CPU10は、モデルの設定処理を実行する。ここでの処理は、上述の処理によって設定された各部位(腰や足首)の位置や向きに基づいて、描画のための各部位(腰、足首、かかとやつま先等)の詳細を設定する処理である。ステップS8における処理の詳細を、図14を用いて説明する。図14は、図10におけるモデルの設定処理(ステップS8)の詳細を示すフローチャートである。なお、図14では、つま先についてのモデル設定処理についてのみ主に説明する。
【0107】
まず、CPU10は、ステップS50の処理を実行する。ステップS50において、CPU10は、かかとが地面についているか否かを判定する。具体的には、CPU10は、ステップS6で設定された両足首の高さと地面の高さとに基づいて、かかとが地面についているか否かを判定する。例えば、CPU10は、足首の高さと地面の高さとの差が所定の閾値より小さい場合、かかとが地面についていると判定する。判定結果が肯定の場合、CPU10は、次にステップS51の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS52の処理を実行する。
【0108】
ステップS51において、CPU10は、足裏を地面に沿わせる処理を実行する。ここでの処理は、かかとが地面についていると判定された場合において、かかと以外のつま先等を地面につかせる処理である。このように、かかとが地面についている場合において、足裏を地面に沿わせることにより、足の動き及び表示を自然にすることができる。ステップS51の処理の後、CPU10は、次にステップS53の処理を実行する。
【0109】
ステップS52において、CPU10は、前回のつま先の向きを直立状態のつま先の向きに近づける処理を実行する。ここでの処理は、かかとが地面についていない場合において、つま先の上下方向の向き(地面に対する角度)を調整する処理である。具体的には、CPU10は、メインメモリを参照して前回のステップS52で設定されたつま先の向きを取得し、当該つま先の向きを予め定められた直立状態のつま先の向きに所定の値だけ近づける。例えば、直立状態のつま先の向きは、地面と平行に設定されている。このように、つま先の向きを調整することにより、かかとが地面についていない場合において、つま先の向きが不自然に上に向いたりすることを防止することができる。次に、CPU10は、ステップS53の処理を実行する。
【0110】
ステップS53において、CPU10は、その他のモデル(手や身体、首等)の設定処理を実行する。ここでは、例えば、足の位置に応じて手の位置を設定したり、首(顔)の向きを設定したりする。また、上記のステップS6およびステップS7においては、右足についての処理のみの説明を行ったが、左足についても同様の処理が行われる。ただし、右足と左足とでは初期の中心角の位相がπだけずれたものになっており、すなわち、交互に足を上げる動作が行われることになる。ステップS53の処理の後、CPU10は、CPU10は、図14に示すモデル設定処理を終了する。
【0111】
図10に戻り、CPU10は、次にステップS9の処理を実行する。ステップS9において、CPU10は、その他のゲーム処理を実行する。CPU10は、その他のゲーム処理として、プレイヤキャラクタの現在位置と移動速度とに基づいて、プレイヤキャラクタ自体の移動後の位置を設定したり、プレイヤキャラクタ以外のオブジェクト(プレイヤチームの他のキャラクタや相手チームのキャラクタ、ボール等)を動作させたり、表示領域を設定したりする。
【0112】
次に、CPU10は、ステップS10において、描画処理を実行する。上述のようにして算出された腰及び各足首の位置と、モデル設定処理で設定された各モデルの設定と、膝位置設定処理で設定された膝の設定と、キャラクタの基本姿勢の画像データ(画像データ72)とを用いて、プレイヤキャラクタの描画処理が実行される。また、CPU10は、その他のオブジェクトの描画処理を行う。CPU10は、GPU11bを用いて描画処理を行い、その結果、表示装置にゲーム画像が表示される。次に、CPU10は、ステップS11において、ゲームを終了するか否かの判定を行う。CPU10は、例えば、プレイヤからのゲーム終了命令を受信した場合やゲームがクリアされた場合、ゲーム処理を終了する。判定結果が肯定の場合、CPU10は、図10に示すゲーム処理を終了する。判定結果が否定の場合、CPU10は、ステップS2の処理を再度実行する。
【0113】
以上のように、本実施形態では、ゲームキャラクタの足の動きを計算により求め、描画することができる。これにより、予め多様なモーション画像を用意する必要なく、キャラクタの様々な足の動きを表現することができる。
【0114】
なお、本実施形態では、ゲームキャラクタの足や腰の動きを表示する場合について説明したが、他の実施形態では、キャラクタの他の部位、例えば、手や首等について上述した軌道を設定し、軌道上を動作させることによって、当該部位を表示してもよい。また、他の実施形態では、上述の方法により、人の動作のみならず、動物(4足動物)の動作を実現してもよい。
【0115】
また、他の実施形態では、キャラクタの身体の一部位ではないものについて当該キャラクタの部位とみなして、上述した軌道を設定し、当該部位を動作させてもよい。すなわち、あるオブジェクトに付随して動作する別のオブジェクトについて上述した軌道を設定し、動作させてもよい。例えば、キャラクタが所持するアイテム(武器等)について、当該アイテムが移動する軌道をキャラクタの位置に基づいて設定することにより、当該アイテムを動作させてもよい。
【0116】
また、本実施形態では、腰が動作する軌道は、線分(短径が0の楕円)であり、足首が動作する軌道は、楕円軌道であるとしたが、他の実施形態では、腰の軌道を楕円軌道とし、足首の軌道を線分としてもよい。また、別の実施形態では、各部位が動作する軌道は、どのような形状の軌道であってもよく、例えば、各部位が動作する軌道は、円であってもよいし、四角形や三角形等の多角形であってもよい。
【0117】
また、本実施形態では、足首の周期(右足首が楕円軌道ArP上を往復するのに要する時間)は腰の周期(腰が軌道WP上を往復するのに要する時間)の2倍に設定され、両足首はπだけ位相がずれているものとしたが、他の実施形態では、各部位の周期及び位相差はどのようにして定められてもよい。例えば、足首の周期は腰の周期と独立するように設定されてもよい。また、例えば、両足首の位相差を0に設定することにより、両足でジャンプする動作等を実現することができる。
【0118】
また、本実施形態では、各部位の軌道に関する中心角に基づいて、各軌道上の位置が定められたが、他の実施形態では、各軌道上の位置はどのように定められてもよい。例えば、各部位は、それぞれに設定された軌道上をキャラクタの移動速度に応じた速度で移動されてもよい。
【0119】
また、上記中心角の角速度は、必ずしもキャラクタの移動速度に関連付けられる必要はなく、キャラクタが静止状態であっても上記中心角を変化させてもよい。例えば、キャラクタが移動せずにゲーム空間の所定の位置で、身体を上下運動(上下に身体を揺らす運動)をしている様子を実現してもよい。すなわち、キャラクタの移動速度が0の場合において、腰の位置を、上記軌道WP上を移動させることによって、キャラクタが上下運動する様子や屈伸運動する様子を実現することができる。
【0120】
また、本実施形態では、バスケットボールのゲームについて説明したが、上述した方法は、様々なゲームに利用されてもよい。例えば、野球ゲームや他のスポーツゲームにおける人が歩いたり走ったりする様子を、上述した方法により実現することができる。
【0121】
また、本発明のゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置3に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置3に供給されてもよい。また、ゲームプログラムは、ゲーム装置3内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体(コンピュータ読み取り可能な記憶媒体)としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状の記憶媒体の他に、不揮発性半導体メモリでもよい。
【0122】
また、本実施形態においては、ゲーム装置3のCPU10がゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置3が備える専用回路によって行われてもよい。
【符号の説明】
【0123】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ部
【技術分野】
【0001】
本発明は、ゲーム装置及びゲームプログラムに関し、より特定的には、予め記憶されたモーションデータを用いてオブジェクトを動作させるゲーム装置及びゲームプログラムに関する。
【背景技術】
【0002】
従来より、予め記憶されているモーションデータを用いて、仮想3次元空間等に存在するゲームキャラクタ等のオブジェクトを動作させるゲーム装置が存在する。例えば、特許文献1では、モーションデータを用いて多様なオブジェクトの動作を実現しつつ、モーションデータのデータ量を削減する方法が開示されている。具体的には、特許文献1に記載の技術では、プレイヤキャラクタに関する予め記憶された複数のモーションデータをタッチパネルのタッチ位置に応じてブレンドすることにより、プレイヤキャラクタがボールをドリブルする様子を画面上に表示している。これにより、モーションデータのデータ量が少ない場合でも、プレイヤキャラクタの多様な動作を表示可能としている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−102503号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載の技術では、ブレンドするための複数のモーションデータを予め記憶しておく必要がある。従って、より複雑なオブジェクトの動作を表現するためには、予め記憶しておくモーションデータのデータ量が多くなり、モーションデータのデータ量やその作成に要するコストを削減するという点では不十分な場合があった。
【0005】
それ故、本発明の目的は、多様なオブジェクトの動作を実現しつつ、モーションデータのデータ量及びその作成コストを削減することが可能なゲーム装置及びゲームプログラムを提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号及び補足説明等は、本発明の理解を助けるために後述する実施例との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【0007】
本発明は、仮想空間内でオブジェクト(プレイヤキャラクタ)を動かすゲーム装置であって、オブジェクト位置設定手段(S1、S9を実行するCPU10。以下、単にステップ番号のみを記載する。)と、第1部位設定手段(S5、S6)と、表示制御手段(S10)とを備える。オブジェクト位置設定手段は、上記オブジェクトの上記仮想空間内での位置を設定する。第1部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第1の部位(右足首Ar等)の位置(位置Par等)を設定する。表示制御手段は、第1部位設定手段によって設定された上記第1の部位を含む画像を画面に表示する。そして、第1部位設定手段は、上記オブジェクトの位置に応じて設定された第1の軌道(軌道ArP等)上を、上記オブジェクトの移動量に応じた量で上記第1の部位を移動させることで、上記第1の部位の位置を設定する。
【0008】
なお、上記第1の部位とは、上記オブジェクトと一体となって動作可能な上記オブジェクトの一部位を含むものであり、例えば、上記オブジェクトの身体の一部位であってもよいし、上記オブジェクトと付随して動作する別のオブジェクトであってもよい。
【0009】
上記によれば、オブジェクトの一部位である第1の部位が移動する第1の軌道を設定することができ、第1の部位の位置を、第1の軌道上に設定し、表示することができる。これにより、オブジェクトの多様な表示を行うことができるとともに、第1の部位の位置に応じたモーション画像を予め用意する必要がなく、画像データのデータ量を削減することができる。
【0010】
本発明では、上記第1の軌道は、閉曲線であってもよい。そして、第1部位設定手段は、上記第1の部位の位置を上記閉曲線上に設定する。
【0011】
ここで、閉曲線とは、始点と終点との位置が一致する曲線であり、多角形を含む広い概念の曲線である。
【0012】
この構成によれば、第1の部位を、閉曲線上を移動させることができる。
【0013】
本発明では、上記第1の軌道は短径が0以上の楕円又は円軌道であってもよい。そして、第1部位設定手段は、上記楕円又は円の中心角(θar等)を上記オブジェクトの移動量に応じて設定し、当該中心角によって定められる上記楕円又は円上の点を上記第1の部位の位置として設定する。
【0014】
ここで、短径が0の楕円とは、所定の長さを有する線分である。また、楕円又は円の中心角とは、楕円又は円の中心と当該楕円又は円上の点とを結ぶ線分が、予め定められた直線(当該中心と当該楕円又は円上の定点とを結ぶ線分)となす角である。また、楕円の中心とは、当該楕円の長軸と短軸との交点である。
【0015】
この構成によれば、第1の部位を、中心角に基づいて楕円又は円上を移動させることができる。また、オブジェクトの移動量に応じて上記中心角が設定されることにより、オブジェクトの移動量に応じた量で第1の部位を移動させることができる。
【0016】
本発明では、上記第1部位設定手段は、中心位置設定手段(S20)を含んでもよい。中心位置設定手段は、上記楕円又は円の中心(中心Oar等)の位置を上記オブジェクトの位置に基づいて設定する。
【0017】
この構成によれば、仮想空間における第1の部位の位置を上記オブジェクトの位置に応じて設定することができる。これにより、上記オブジェクトが仮想空間を移動することに伴って、上記第1の部位の位置を移動させることができる。
【0018】
本発明では、第2部位設定手段(S5)をさらに備えてもよい。第2部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第2の部位(腰W)の位置(位置Pw)を設定する。そして、第2部位設定手段は、上記オブジェクトの位置に応じて設定された第2の軌道(軌道WP)上を、上記オブジェクトの移動量に応じた量で上記第2の部位を移動させることで上記第2の部位の位置を設定する。さらに、第1部位設定手段は、上記第2の部位の位置に対する相対位置として、上記第1の部位の位置を設定する。そして、表示制御手段は、上記第1の部位及び上記第2の部位を含む画像を上記画面に表示する。
【0019】
この構成によれば、上記オブジェクトの一部位である第2の部位が移動する第2の軌道を設定することができ、第2の部位の位置を、第2の軌道上に設定することができる。そして、第1の部位の位置を第2の部位に対する相対位置として設定することができる。これにより、オブジェクトの移動に応じて、第2の部位の移動させることができ、さらに第2の部位の移動に伴って第1の部位を移動させることができる。
【0020】
本発明では、第2部位設定手段(S5)をさらに備えてもよい。第2部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第2の部位(腰W)の位置(位置Pw)を設定する。また、第2部位設定手段は、上記オブジェクトの位置に応じて設定された第2の軌道(軌道WP)上を、上記オブジェクトの移動量に応じた量で上記第2の部位を移動させることで上記第2の部位の位置を設定する。表示制御手段は、上記第1の部位及び上記第2の部位を含む画像を上記画面に表示する。そして、上記オブジェクトが上記仮想空間内を移動している場合、上記第1の部位及び上記第2の部位は、上記第1の軌道上及び上記第2の軌道上をそれぞれ周期的に移動する。この場合において、上記第1の部位の周期は上記第2の部位の周期の2倍である。
【0021】
この構成によれば、第1の部位は第1の軌道上を、第2の部位は第2の軌道上をそれぞれ周期的に移動する。そして、第1の部位の周期を第2の部位の周期の2倍に設定することにより、第1の部位を第2の部位と連動して動作させることができる。
【0022】
本発明では、第3部位設定手段(S6)をさらに備えてもよい。第3部位設定手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対位置として、上記オブジェクトの第3の部位(左足首Al)の位置を設定する。また、第3部位設定手段は、上記オブジェクトの位置に応じて設定された第3の軌道上(軌道AlP)を、上記オブジェクトの移動量に応じた量で上記第3の部位を移動させることで上記第3の部位の位置を設定する。さらに、第3部位設定手段は、上記第2の部位の位置に対する相対位置として、上記第3の部位の位置を設定する。表示制御手段は、上記第1の部位、上記第2の部位、及び上記第3の部位を含む画像を上記画面に表示する。そして、上記オブジェクトが上記仮想空間内を移動している場合、上記第3の部位は、上記第3の軌道上を上記第1の部位の周期と同じ周期で移動し、かつ、上記第1の部位と上記第3の部位とは、所定の位相差を有する。
【0023】
この構成によれば、第1の部位及び第2の部位に加えて、第3の部位の位置を設定することができる。これにより、第1の部位、第2の部位、及び第3の部位を画面上に表示することができる。また、第1の部位と第3の部位を所定の位相差で移動させることにより、第1の部位と第3の部位とが連動して動作する様子を画面に表示することができ、例えば、人が歩いたり走ったりする様子を表示することができる。
【0024】
本発明では、上記第2の軌道は短径が0以上の楕円又は円軌道であってもよい。この場合において、第2部位設定手段は、上記楕円又は円の中心角を上記オブジェクトの移動量に応じて設定し、当該中心角によって定められる上記楕円又は円上の点を上記第2の部位の位置として設定する。
【0025】
この構成によれば、第2の部位を、中心角に基づいて楕円又は円上を移動させることができる。また、上記オブジェクトの移動量に応じて上記中心角が設定されることにより、オブジェクトの移動量に応じた量で第2の部位を移動させることができる。
【0026】
本発明では、上記オブジェクトは上記仮想空間内に存在する所定の地形オブジェクト上を移動してもよい。この場合において、第1部位設定手段は、判定手段(S36)と、位置補正手段(S39)とを含む。判定手段は、上記第1の部位が上記地形オブジェクトの内部に存在するか否かを判定する。位置補正手段は、判定手段によって上記第1の部位が上記地形オブジェクトの内部に存在すると判定された場合に、上記第1の部位の位置を上記地形オブジェクトの表面に補正する位置補正手段を含む。
【0027】
この構成によれば、第1の部位が地形オブジェクトの内部に存在する場合、第1の部位の位置を補正することができる。これにより、第1の部位が地面の下に表示されることを防止することができる。
【0028】
本発明では、上記オブジェクトは上記仮想空間内に存在する所定の地形オブジェクト上を移動してもよい。この場合において、第1部位設定手段は、単位時間あたりの上記オブジェクトの移動量が所定の閾値より少ない場合、上記第1の部位の位置を上記地形オブジェクトに近づけるようにして、上記第1の部位の位置をさらに設定する(S52)。
【0029】
この構成によれば、上記オブジェクトが地形オブジェクト上を移動している場合において、その移動する速さが所定の速さより遅い場合、第1の部位の位置を地形オブジェクトに近づけることができる。これにより、上記オブジェクトが低速で移動している場合においても、第1の部位に関する表示を自然な表示にすることができる。
【0030】
本発明では、上記オブジェクトは、人オブジェクトであって、上記第1の部位及び上記第3の部位は足首であり、上記第2の部位は腰であってもよい。
【0031】
この構成によれば、人オブジェクトの足の動きを表現することができる。
【0032】
本発明では、第1部位設定手段によって設定された足首の位置と、第2部位設定手段によって設定された腰の位置とに基づいて、膝の状態(膝の角度及び膝の向き)を設定する膝状態設定手段(S7)をさらに備えてもよい。
【0033】
この構成によれば、膝の角度や向きを設定することができ、足の自然な動きを実現することができる。
【0034】
本発明では、オブジェクト位置設定手段は、所定の操作入力に基づいて上記オブジェクトの上記仮想空間内での位置を設定してもよい。
【0035】
この構成によれば、プレイヤからの操作入力に基づいて、上記オブジェクトの位置を設定することができる。
【0036】
本発明では、仮想空間内のオブジェクトを動作させるゲーム装置であって、オブジェクト位置設定手段と、第1部位動作手段と、表示制御手段とを備える。オブジェクト位置設定手段は、上記オブジェクトの上記仮想空間内での位置を設定する。第1部位動作手段は、上記オブジェクト位置設定手段によって設定された上記オブジェクトの位置に対する相対動作として、上記オブジェクトの第1の部位を動作させる。表示制御手段は、上記第1部位動作手段によって動作させた上記第1の部位を含む画像を画面に表示する。そして、第1部位動作手段は、上記オブジェクトの位置に応じて設定された第1の軌道上を、所定期間内に上記第1の部位を移動させることで、上記第1の部位を動作させる。
【0037】
この構成によれば、オブジェクトの一部位である第1の部位が移動する第1の軌道を設定することができ、第1の部位を、第1の軌道上で動作させることができる。これにより、オブジェクトの多様な表示を行うことができるとともに、第1の部位の動作に応じたモーション画像を予め用意する必要がなく、画像データのデータ量を削減することができる。
【0038】
また、本発明は、ゲーム装置のコンピュータを上記各手段として機能させるゲームプログラムの形態で実施されてもよい。
【発明の効果】
【0039】
本発明によれば、オブジェクトの一部位が移動する軌道を設定し、その軌道上を当該部位が移動することにより、オブジェクトの多様な表示を行うことができる。これにより、オブジェクトの部位の位置に応じたモーション画像を予め用意する必要がなく、画像データのデータ量や画像データを製作するためのコストを削減することができる。
【図面の簡単な説明】
【0040】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の構成を示すブロック図
【図3】コントローラ5を上側後方から見た斜視図
【図4】コントローラ5を下側前方から見た斜視図
【図5】ゲームキャラクタの足首及び腰が動く様子を横から見た図
【図6】腰Wの移動の仕方を示した図
【図7】右足首Arの移動の仕方を示した図
【図8A】人が歩く様子を横から見た場合において、右足又は左足が進行方向前後に位置している様子を示した図
【図8B】人が歩く様子を横から見た場合において、右足又は左足が地面について膝が伸びた状態を示した図
【図9】ゲーム装置3のメインメモリに記憶される主なデータを示す図
【図10】ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャート
【図11】図10における腰の軌道及び位置設定処理(ステップS5)の詳細を示すフローチャート
【図12】図10における右足首の軌道及び位置設定処理(ステップS6)の詳細を示すフローチャート
【図13】図10における膝位置設定処理(ステップS7)の詳細を示すフローチャート
【図14】図10におけるモデルの設定処理(ステップS8)の詳細を示すフローチャート
【図15】ステップS37における足首の高さを地面の高さに設定する処理を示した図
【図16】ステップS39における足首の高さを地面の高さに近づける処理を示した図
【発明を実施するための形態】
【0041】
(ゲームシステムの全体構成)
図1を参照して、本発明の一実施形態のゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置及びゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、コントローラ5、及びマーカ部6を含む。本システムは、コントローラ5を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0042】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0043】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6R及び6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0044】
コントローラ5は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
【0045】
図3は、コントローラ5を上側後方から見た斜視図ある。図4は、コントローラ5を下側前方から見た斜視図である。コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、及び、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0046】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、及び電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32f及び電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32f又は電源ボタン32hを誤って押下することを防止することができる。また、ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカからの音を外部に放出するための音抜き孔31aが形成されている。
【0047】
ハウジング31の後面にはコネクタ33が設けられており、コントローラ5に他の機器を接続するために利用される。また、ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0048】
また、コントローラ5は撮像情報演算部35を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6R及び6Lからの赤外光を少なくとも透過する材質で構成される。
【0049】
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、及びAV−IC15等を有する。
【0050】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14及びAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11e又は外部メインメモリ12に読み出したデータを書き込む。
【0051】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、及び内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0052】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0053】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0054】
上述のように生成された画像データ及び音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0055】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、及びメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0056】
入出力プロセッサ11aは、無線通信モジュール18及びアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18及びアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22及び無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データ又は途中データ)が記憶されてもよい。
【0057】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23及び無線コントローラモジュール19を介して受信し、内部メインメモリ11e又は外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0058】
さらに、入出力プロセッサ11aには、拡張コネクタ20及びメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0059】
ゲーム装置3には、電源ボタン24、リセットボタン25、及びイジェクトボタン26が設けられる。電源ボタン24及びリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0060】
[ゲーム処理の概要]
次に、図5〜図8Bを参照して、本実施形態のゲーム処理の概要について説明する。本実施形態では、3次元ゲーム空間上に存在するプレイヤキャラクタ等のゲームキャラクタが、当該ゲーム空間内を移動する場合において、移動する際の当該ゲームキャラクタの足の動きを画面上にリアルに表示するものとする。具体的には、本実施形態のゲームは、プレイヤチームのキャラクタと相手チームのキャラクタとがバスケットボールの試合を行うゲームである。プレイヤによるコントローラ5に対する入力に応じて、ゲームキャラクタがバスケットコート上を歩いたり走ったりする。通常、ゲームキャラクタがゲーム空間を歩いたりする場合には、予め記憶された複数のモーションの画像を順次画面上に表示することによって、ゲームキャラクタがゲーム空間を歩いたりする様子が画面上に表示される。本実施形態では、ゲームキャラクタの足の動きを計算により求めることによって、予め記憶されるべきモーションデータの量を削減する。本実施形態では、ゲームキャラクタの足首が動く軌道及びゲームキャラクタの腰が動く軌道が定められる。そして、当該軌道に沿って足首及び腰を移動させることによって、足首及び腰の位置を動かし、ゲームキャラクタが歩行等する様子を画面上に表示する。
【0061】
図5は、ゲームキャラクタの足首及び腰が動く様子を横から見た図である。図5では、ゲームキャラクタがゲーム空間上を歩行する様子を横から見た場合において、ゲームキャラクタの腰より下の部位のみが表示されている。図5に示されるように、ゲームキャラクタの体の一部位である腰Wとゲームキャラクタの右足首Arとが、図示されている。また、腰Wの軌道WPと、右足首Arの軌道ArPが図示されている。身体の各部位は、それぞれに設定された軌道上を移動する。すなわち、腰Wは、軌道WP上を移動し、右足首Arは軌道ArP上を移動する。より具体的には、腰Wの位置を示す位置Pwが軌道WP上を移動することにより、腰Wが動作し、右足首Arの位置を示す位置Parが軌道ArP上を移動することにより、右足首Arが動作する。また、図示されていないが、左足首Alも右足首Arと同様に、左足首Alに設定された軌道AlP上を移動する。このように、各部位(腰W、右足首Ar及び左足首Al)に設定された軌道上を、各部位がそれぞれ移動することにより、全体として、ゲームキャラクタが動作する様子が画面上に表示される。
【0062】
次に、各部位がそれぞれの軌道上を移動する移動の仕方について説明する。各部位は、それぞれに設定された楕円軌道の中心角をパラメータとして、当該中心角に対応する楕円軌道上の位置に移動する。上記各部位の中心角は、ゲームキャラクタがゲーム空間を移動する速度(実際には速度と時間の積である移動量)に応じて、変化する。図6は、腰Wの移動の仕方を示した図である。図6に示されるように、腰Wの軌道WPは、実際には直線であるが、短径(楕円の短軸の長さ)が0の楕円とみなすことができる。図6では、説明を分かりやすくするために、楕円WP’が描かれている。腰Wの位置Pwは、楕円WP’の中心角θw(楕円WP’上の点と楕円WP’の中心Owとを結ぶ線分が、楕円WP’の長軸となす角度)の大きさに応じて変化する。すなわち、腰Wの位置Pwは、図6に示されるように、中心角θwに対応する楕円WP’上の点Pから直線軌道WP(短径が0の楕円軌道WP)へ下ろした垂線の足である。従って、ゲームキャラクタがゲーム空間を一定の速度で移動する場合において、上記中心角θwを一定の速度で変化させることにより、当該ゲームキャラクタの移動に応じて、腰Wの位置Pwも変化し、結果として腰Wが動作する。
【0063】
同様に、右足首Arについても、軌道ArPの中心角を変化させることによって、軌道ArP上を移動させることができる。図7は、右足首Arの移動の仕方を示した図である。図7に示されるように、右足首Arの位置Parは、楕円軌道ArPの中心角θarの値に応じて定められる。当該中心角θarは、ゲーム空間におけるゲームキャラクタの移動量に応じて変化する。また、図示は省略するが、右足首Arと同様、左足首Alの位置Palについても、左足首Alに設定された楕円軌道AlPの中心角θalの値に応じて定められる。
【0064】
上述したように、各部位は、それぞれに設定された楕円軌道(短径の長さが0の楕円を含む楕円軌道)上を移動する。そして、各部位の位置は、それぞれに定められる中心角をパラメータとして、変化する。ここで、ゲームキャラクタの移動に伴う腰Wの中心角θwの変化量は、左右足首の中心角の変化量の倍に設定される。すなわち、左右足首が各楕円軌道上を移動する周期(左右足首の周期)は、腰Wが楕円軌道WP上を移動する周期(腰の周期)の倍に設定される(右足首の移動周期と左足首の移動周期は同じに設定される)。例えば、右足首Arが軌道ArP上を半回転する間(中心角θarが0からπまで変化する間)、腰Wは軌道WPの最上点から最下点を通って最上点まで移動する(すなわち、腰Wは軌道WP上を1回転する)。同様に、左足首Alが軌道AlP上を半回転する間、腰Wは軌道WPの最上点から最下点を通って最上点まで移動する。
【0065】
図8Aは、人が歩く様子を横から見た場合において、右足又は左足が進行方向前後に位置している様子を示した図である。図8Bは、人が歩く様子を横から見た場合において、右足又は左足が地面について膝が伸びた状態を示した図である。人が歩く場合や走る場合、例えば、右足又は左足が伸びた状態になった場合(図8Bに示されるように、右足又は左足が体に対して略垂直の状態になった場合)に、腰は最上点に位置し、右足又は左足が曲がった場合(図8Aに示されるように、右足又は左足が進行方向前後に位置している場合)に、腰は最下点に位置すると考えられる。従って、例えば、右足が進行方向に対して前後に1往復する間、腰は上下方向に2往復することになる。このように、足首の移動周期を腰の移動周期の倍に設定することにより、実際に人が歩いたり走ったりする場合のように、足の動きと腰の動きが連動しているように表示することができる。
【0066】
また、右足首Arと左足首Alとは、位相が逆に設定される。すなわち、中心角θarと中心角θalとは、位相がπだけずれている。このように、左右足首の位相をずらすことにより、左右の足が交互に前後する動作を表現することができる。
【0067】
以上のように、足首の移動周期を腰の移動周期の倍に設定し、かつ、左右足首を逆位相とすることにより、ゲームキャラクタがゲーム空間を歩いたり走ったりする動作を、実際に人が歩いたり走ったりする場合のように、リアルに表現することができる。
【0068】
[ゲーム処理の詳細]
次に、図9〜図16を参照してゲーム装置3において実行される処理の詳細について説明する。まず、ゲーム装置3における処理において用いられる主なデータについて図9を用いて説明する。図9は、ゲーム装置3のメインメモリ(外部メインメモリ12又は内部メインメモリ11e)に記憶される主なデータを示す図である。図9に示されるように、ゲーム装置3のメインメモリには、ゲームプログラム61、操作データ62、及びゲーム処理用データ64が記憶される。
【0069】
ゲームプログラム61は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部又は全部が読み込まれてメインメモリのプログラム領域に記憶される。
【0070】
操作データ62は、コントローラ5からゲーム装置3へ送信されてくる操作データである。コントローラ5からゲーム装置3へ、例えば、1/200秒に1回の割合で操作データが送信されるので、メインメモリに記憶される操作データ62はこの割合で更新される。操作データ62には、各ボタン(例えば、十字ボタン32a)が押されたか否かを示すボタン操作データ63等が含まれる。
【0071】
ゲーム処理用データ64は、後述するゲーム処理(図10)において用いられるデータである。ゲーム処理用データ64は、キャラクタ状態データ65、腰角度データ66、足首角度データ67、腰軌道データ68、足首軌道データ69、腰位置データ70、足首位置データ71、及び画像データ72を含む。ゲーム処理用データ64には、これらの他に相手キャラクタの位置やボールの位置を示すデータ、地面(コート)やゴール等ゲーム空間に関するデータやゲーム状況に関するデータ等、ゲーム処理に必要なデータが含まれる。
【0072】
キャラクタ状態データ65は、ゲーム空間におけるプレイヤキャラクタの位置、プレイヤキャラクタの身体の向き、及び、プレイヤキャラクタの速度を示すデータである。腰角度データ66は、上述した腰の軌道WPにおける腰の位置を示すデータであり、上記中心角θwを示すデータである。足首角度データ67は、上述した各足首の軌道(楕円軌道ArP及び楕円軌道AlP)における各足首の位置を示すデータであり、上記中心角θar及び中心角θalを示すデータである。
【0073】
腰軌道データ68は、腰の軌道WPに関するデータであり、腰の軌道WPのゲーム空間における位置(軌道WPの中心Owの位置)、軌道WPの短軸及び長軸の長さ、短軸又は長軸の傾き(短軸又は長軸のゲーム空間固定座標軸に対する傾き)等を示すデータである。足首軌道データ69は、各足首の軌道(楕円軌道ArP及び楕円軌道AlP)に関するデータであり、各足首の軌道のゲーム空間における位置(軌道の中心Oar及び中心Oalの位置)、各軌道の短軸及び長軸の長さ、短軸又は長軸の傾き(短軸又は長軸のゲーム空間固定座標軸に対する傾き)等を示すデータである。
【0074】
腰位置データ70は、ゲーム空間における腰の位置Pwを示すデータである。足首位置データ71は、ゲーム空間における足首の位置(右足首の位置Par及び左足首の位置Pal)を示すデータである。
【0075】
画像データ72は、プレイヤキャラクタや各種オブジェクトに関する画像データである。プレイヤキャラクタの画像データとして、例えば、基本的な姿勢(プレイヤキャラクタが直立状態である場合の姿勢)の画像がメインメモリに記憶される。プレイヤキャラクタの画像は、たとえば3次元のモデルとして記憶されるが、それ以外の形態によって記憶されてもよい。ここで、基本的な姿勢は、当該姿勢をしたキャラクタの3次元モデルそのものであってもよいし、別途記憶される当該3次元モデルに対してどのような姿勢にするかを示す制御データであってもよい。
【0076】
図10は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムや各種オブジェクト(ゲームキャラクタやボール、地面等)の画像(画像データ72)等がメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図10に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、図10では、本発明に直接関連しないゲーム処理については記載を省略し、上述したゲームキャラクタの足の動きに関する処理についてのみ主に説明する。
【0077】
まず、ステップS1において、CPU10は、各種オブジェクトをゲーム空間上に配置する。具体的には、CPU10は、プレイヤによって操作されるプレイヤキャラクタや地形(地面)を表す地形オブジェクト等をゲーム空間上に配置し、プレイヤキャラクタ等の位置をキャラクタ状態データ65等としてメインメモリに記憶する。次に、CPU10は、ステップS2の処理を実行する。
【0078】
ステップS2において、CPU10は、プレイヤによって入力されたコントローラ5からの操作データを取得する。具体的には、CPU10は、メインメモリに記憶されたボタン操作データ63をメインメモリから取得する。次に、CPU10は、ステップS3の処理を実行する。
【0079】
ステップS3において、CPU10は、プレイヤキャラクタの身体の向き及び速度を決定する。具体的には、CPU10は、ステップS2において取得されたボタン操作データ63に基づいて、プレイヤキャラクタの身体の向き、及び、プレイヤキャラクタが移動する速度(方向と速さ)を決定する。ここで、プレイヤキャラクタの身体の向きとプレイヤキャラクタが移動する方向とは、必ずしも一致させる必要はない。例えば、プレイヤキャラクタの身体の向きは、ゲーム空間上の所定の位置(例えば、ボールが存在する位置)を向くように設定される。また、例えば、プレイヤによってコントローラ5の十字ボタン32aが押されている場合、CPU10は、十字ボタン32aが示す方向(例えば、十字ボタン32aの右ボタンが押されている場合は右方向)をプレイヤキャラクタが移動する方向として決定する。さらに、例えば、プレイヤキャラクタが移動する速さは、予め定められた所定の速さに決定される。プレイヤキャラクタの身体の向きを決定する。そして、CPU10は、プレイヤキャラクタの身体の向き及び速度をキャラクタ状態データ65として、メインメモリに記憶する。なお、プレイヤキャラクタが移動する速度やプレイヤキャラクタの身体の向きはどのようにして決定されてもよく、例えば、Aボタン32dやBボタン32iが押されているか否かに応じて、速度(方向及び速さ)が決定されてもよし、プレイヤによるコントローラ5の操作に応じて、身体の向きが設定されてもよい。また、コントローラ5のコネクタ33にさらにスティック等を備えた拡張コントローラを接続し、当該スティックに対する操作に基づいて決定されてもよい。それ以外にも、ゲーム処理においてプレイヤキャラクタの移動速度や身体の向きをどのように設定してもよい。次に、CPU10は、ステップS4の処理を実行する。
【0080】
ステップS4において、CPU10は、プレイヤキャラクタの身体の向きに対する相対速度が算出される。具体的には、CPU10は、ステップS3で決定されたプレイヤキャラクタの移動速度と身体の向きとに基づいて、身体の向きの相対速度(「身体の向き」方向の速度成分)を算出する。次に、CPU10は、ステップS5の処理を実行する。
【0081】
ステップS5において、CPU10は、腰の軌道及び位置を設定する。ここでの処理は、上述した腰Wの軌道WPのゲーム空間における位置、及びその軌道WP内での腰の位置Pwを設定する処理である。ステップS5における処理の詳細を、図11を用いて説明する。図11は、図10における腰の軌道及び位置設定処理(ステップS5)の詳細を示すフローチャートである。
【0082】
まず、CPU10は、ステップS20の処理を実行する。ステップS20において、CPU10は、ゲーム空間における腰の楕円軌道WPの位置を設定する。ここで、軌道WPは、短径が0の楕円であり、実際には所定の長さ(楕円の長軸の長さ)を有する線分である。また、ゲーム空間における楕円軌道WPの位置(軌道WPの位置)とは、軌道WPの中心Owのゲーム空間における位置である。ステップS20において、CPU10は、ゲーム空間における現在の軌道WPの位置と移動速度とに基づいて、軌道WPの中心Owの位置を設定する。具体的には、CPU10は、プレイヤキャラクタが移動している場合、その移動速度に応じて現在の軌道WPの位置(前回、ステップS20が実行された際に設定された軌道WPの中心Owの位置)を変更する。そして、CPU10は、軌道WPの位置を腰軌道データ68として、メインメモリに記憶する。なお、ステップS20において、軌道WPの位置に加えて、軌道WPの向きも設定されてもよい。軌道WPの向きとは、軌道WPの短径が0でない場合において、短軸のゲーム空間における向きである。このように軌道WPの向きが設定されることにより、プレイヤキャラクタの腰の向きが設定される。また、本実施形態では、軌道WPの長軸の向きはゲーム空間における鉛直方向(上下方向)に設定されるが、長軸の向きもゲーム状況(プレイヤキャラクタの速度、周辺の環境や操作状況等)に応じて設定されてもよい(この場合、腰Wは上下方向に対して所定の傾きを有して動作する)。次に、CPU10は、ステップS21の処理を実行する。
【0083】
ステップS21において、CPU10は、現在の腰の中心角θwを取得する。具体的には、CPU10は、メインメモリを参照して、前回のステップS23(後述する)で算出された腰の中心角θwを取得する。次に、CPU10は、ステップS22の処理を実行する。
【0084】
ステップS22において、CPU10は、プレイヤキャラクタの移動速度に基づいて、中心角θwの変化量を算出する。具体的には、CPU10は、ステップS3で決定されたプレイヤキャラクタの移動速度に単位時間(1フレーム時間)を掛けて得られる移動量に応じて、中心角θwの変化量を算出する。中心角θwの角速度とプレイヤキャラクタの移動速度とは、対応付けされている。すなわち、プレイヤキャラクタの移動速度が大きいときには、プレイヤキャラクタの足や腰の動きも早くなるので、中心角θwの変化量が大きくなる。次に、CPU10は、ステップS23の処理を実行する。
【0085】
ステップS23において、CPU10は、中心角θwに基づいて、腰の位置Pwを決定する。具体的には、CPU10は、ステップS21で取得した現在の腰の中心角θwにステップS22で算出した中心角θwの変化量を加えることにより、新たな腰の中心角θwを算出し、腰角度データ66としてメインメモリに記憶する。そして、CPU10は、その算出した中心角θwに基づいて、軌道WP(短径が0の楕円軌道)上の腰の位置Pwを決定し(図6参照)、腰位置データ70としてメインメモリに記憶する。ステップS23の処理の後、CPU10は、図11に示す腰の軌道及び位置設定処理を終了する。
【0086】
図10に戻り、CPU10は、次にステップS6の処理を実行する。ステップS6において、CPU10は、足首の軌道及び位置を設定する。ここでの処理は、上述した足首(右足首Ar及び左足首Al)の楕円軌道(軌道ArP及び軌道AlP)のゲーム空間における位置、及びその楕円軌道内での足首の位置(右足首の位置Par及び左足首の位置Pal)を設定する処理である。ステップS6における処理の詳細を、図12を用いて説明する。図12は、図10における右足首の軌道及び位置設定処理(ステップS6)の詳細を示すフローチャートである。なお、図12では、右足首の軌道及び位置を設定する場合について説明するが、左足首の軌道及び位置についても同じようにして設定される。
【0087】
まず、CPU10は、ステップS30の処理を実行する。ステップS30において、CPU10は、ゲーム空間における楕円軌道ArPの向き、及び楕円軌道ArPの位置を設定する。具体的には、CPU10は、楕円軌道ArPの向きをステップS3で決定されたプレイヤキャラクタの身体の向きに一致させる。ここで、楕円軌道ArPの向きとは、楕円軌道ArPの中心Oarから、当該楕円の長軸と楕円軌道ArPとの交点(当該楕円の長軸と楕円軌道ArPとの2つの交点のうち、中心角θar=π/2となる場合の交点)に向かう方向である。また、CPU10は、楕円軌道ArPの位置(ゲーム空間における中心Oarの位置)をステップS20と同様、プレイヤキャラクタの位置と移動速度に基づいて設定する。具体的には、CPU10は、前回ステップS30で設定された楕円軌道ArPの位置を移動速度に応じた移動量で移動させることによって、楕円軌道ArPの中心Oarの位置を設定し、足首軌道データ69としてメインメモリに記憶する。次に、CPU10は、ステップS31の処理を実行する。
【0088】
ステップS31において、CPU10は、楕円軌道ArPの長軸の長さ(長径)、及び前傾角度を設定する。具体的には、CPU10は、まず、ステップS4で算出された相対速度(プレイヤキャラクタの速度のうち、身体の向きの速度成分)ベクトルを正規化する。正規化した相対速度ベクトルの値(すなわち、この値は移動速度の大きさにおける「身体の向き」方向の速さの割合を表す)が、例えば0.5以上の場合、CPU10は、プレイヤキャラクタの移動方向は身体の向きに対して「前方向」であると判定する。また、正規化した相対速度ベクトルの値が、例えば−0.5以下の場合、CPU10は、プレイヤキャラクタの移動方向は身体の向きに対して「後方向」であると判定する。一方、正規化した相対速度ベクトルの値が、上記以外の場合(すなわち、−0.5<相対速度ベクトルの値<0.5の場合)、CPU10は、プレイヤキャラクタの移動方向は身体の向きに対して「左右方向」であると判定する。そして、CPU10は、「前方向」又は「後方向」の場合、プレイヤキャラクタの移動速度に応じて、楕円軌道ArPの長軸の長さ(長径)を2.0から2.5の範囲内で設定し、足首軌道データ69としてメインメモリに記憶する。一方、CPU10は、「左右方向」の場合、プレイヤキャラクタの移動速度に応じて、楕円軌道ArPの長径を1.2から1.8の範囲内で設定し、足首軌道データ69としてメインメモリに記憶する。このように、身体の向きの速度(相対速度)に応じて、軌道ArPの長軸の長さの範囲を設定し、さらにプレイヤキャラクタの移動速度に応じて当該長軸の長さを設定することにより、プレイヤキャラクタの歩幅を速度に応じて設定することができる。すなわち、身体の向きの速度が大きい場合は、歩幅は大きく、身体の向きの速度が小さい場合は、歩幅を小さくすることができ、プレイヤキャラクタの自然な動きを実現することができる。
【0089】
また、CPU10は、楕円軌道ArPの長軸の前傾角度(長軸と地面とがなす角度)を設定する。例えば、CPU10は、「前方向」の場合、プレイヤキャラクタの移動速度に応じて、上記前傾角度を5°から20°の範囲内で設定する。また、CPU10は、「後方向」の場合、上記前傾角度を−10°に設定し、「左右方向」の場合、上記前傾角度を0°に設定する。そして、CPU10は、設定した前傾角度を足首軌道データ69としてメインメモリに記憶する。このように、プレイヤキャラクタの移動方向に応じて、上記前傾角度が設定されることにより、プレイヤキャラクタの移動方向に応じた足首の軌道を設定することができる。すなわち、例えば、プレイヤキャラクタの移動方向が「前方向」である場合、楕円軌道ArPは進行方向側が前傾角度分だけ下がるように傾くよう設定されるため、プレイヤキャラクタの足首の動きをより自然に表現することができる。次に、CPU10は、ステップS32の処理を実行する。
【0090】
ステップS32において、CPU10は、腰の位置に応じて楕円軌道ArPの高さを設定する。具体的には、CPU10は、ステップS23で決定された腰の位置Pwに基づいて、腰の軌道WPにおける最上点から位置Pwまでの長さを算出し、算出された長さだけゲーム空間の下方向に楕円軌道ArPの位置を移動させる(足首軌道データ69を更新する)。次に、CPU10は、ステップS33の処理を実行する。
【0091】
ステップS33において、CPU10は、現在の右足首の中心角θarを取得する。具体的には、CPU10は、メインメモリを参照して、前回ステップS35(後述する)で算出された中心角θarを取得する。次に、CPU10は、ステップS34の処理を実行する。
【0092】
ステップS34において、CPU10は、プレイヤキャラクタの移動速度に基づいて、右足首の中心角θarの変化量を算出する。ステップS34の処理は、上述したステップS22の処理と同様の処理である。具体的には、CPU10は、ステップS3で決定されたプレイヤキャラクタの移動速度に単位時間(1フレーム時間)を掛けて得られる移動量に応じて、中心角θarの変化量を算出する。ここで、右足首の中心角θarの角速度は、腰の中心角θwの角速度の1/2に設定されるため、右足首の中心角θarの変化量は、ステップS22で算出された中心角θwの変化量の半分となる。
【0093】
なお、ここでは、プレイヤキャラクタの移動方向がプレイヤの身体の向きと反対方向の場合(すなわち、上記相対速度ベクトルの値が負の場合)においても、中心角θarの変化量は負の値ではなく、正の値とする。すなわち、プレイヤキャラクタが前進している状態から身体の向きを変えずに後進する場合、足首の動きを反転させず、軌道上を一定の方向で移動させる。この場合において、相対速度の変化に応じて中心角θarの変化量が補正される。具体的には、プレイヤキャラクタの移動方向が急激に変化した場合は、その変化の度合いに応じて中心角θarの変化量を大きくしたりする。なお、プレイヤキャラクタが前進している状態から身体の向きを変えずに後進する場合、足首の動きを反転させてもよい。
【0094】
次に、CPU10は、ステップS35の処理を実行する。
【0095】
ステップS35において、CPU10は、右足首の中心角θarに基づいて、右足首の軌道ArP上の位置を算出する。具体的には、CPU10は、ステップS33で取得した現在の右足首の中心角θarにステップS34で算出した中心角θarの変化量を加えることにより、新たな右足首の中心角θarを算出し、足首角度データ67としてメインメモリに記憶する。そして、CPU10は、その算出した中心角θarに基づいて、軌道ArP上の右足首の位置Parを算出し(図7参照)、足首位置データ71としてメインメモリに記憶する。次に、CPU10は、ステップS36の処理を実行する。
【0096】
ステップS36において、CPU10は、右足首の位置Parが地面より下か否かを判定する。ここでの処理は、右足首の位置Parに基づいて右足首を描画した場合、右足首(全部又は一部)が地形オブジェクトよりも下に位置するか否かを判定する処理である。具体的には、CPU10は、ステップS35で算出された右足首の位置Parのゲーム空間における高さと、地形オブジェクトのゲーム空間における高さとを比較する。判定結果が肯定の場合、CPU10は、次にステップS37の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS38の処理を実行する。
【0097】
ステップS37において、CPU10は、足首の高さを地面の高さに補正する。具体的には、CPU10は、メインメモリを参照して、地形オブジェクトの高さを取得し、取得した高さを右足首の高さに設定することにより、ステップS35で算出された右足首の位置Parを更新する(足首位置データ71を更新する)。ステップS37の処理の後、CPU10は、図12に示す足首の軌道及び位置設定処理を終了する。
【0098】
一方、ステップS38において、CPU10は、プレイヤキャラクタの移動速度が所定の閾値以下か否かを判定する。具体的には、CPU10は、ステップS3で決定された移動速度の大きさが所定の閾値以下か否かを判定する。判定結果が肯定の場合、CPU10は、右足首の位置Parを補正するため、次にステップS39の処理を実行する。一方、判定結果が否定の場合、CPU10は、図12に示す足首の軌道及び位置設定処理を終了する。
【0099】
ステップS39において、CPU10は、プレイヤキャラクタの移動速度の大きさに比例させて右足首の高さを地面に近づける処理を行う。例えば、移動速度の大きさがステップS38の所定の閾値と等しい場合、CPU10は、右足首の高さを補正せず、移動速度の大きさが0の場合、右足首の高さを地形オブジェクトの高さに設定する。移動速度の大きさが上記閾値から0の間の場合、CPU10は、その移動速度の大きさに比例して、地面に近づけるようにして右足首の高さを設定する。すなわち、移動速度が小さいほど右足首が地面に近づくようにする。ステップS39の処理の後、CPU10は、図12に示す足首の軌道及び位置設定処理を終了する。
【0100】
上述のように、ステップS37又はステップS39において、足首の高さを補正することにより、プレイヤキャラクタの不自然な表示や動きを防止することができる。具体的には、足があまり動いていないのに足が空中にあるというような不自然な状況を改善し、足が動いていないときは地面に近づけることができる。図15は、ステップS37における足首の高さを地面の高さに設定する処理を示した図である。図16は、ステップS39における足首の高さを地面の高さに近づける処理を示した図である。図15に示されるように、右足首の位置Parが地形オブジェクトより下に位置することによって、右足首が地形オブジェクトの内部に存在する場合、右足首の高さを地形オブジェクトの高さに設定する。これにより、右足首の位置は、補正後の位置Par’に変更され、右足首は地形オブジェクトの内部に存在しないようになり、足首の表示を自然にすることができる。
【0101】
また、図16に示されるように、右足首が地形オブジェクトより上に位置している場合において、プレイヤキャラクタの移動速度の大きさが所定の閾値より小さい場合、軌道ArP上の点Parよりも下方の位置Par’に右足首の位置が補正される。例えば、プレイヤキャラクタが移動していない場合において、右足首が地面より上の位置にあることは不自然であるため、右足首の高さを補正する。一方、プレイヤキャラクタの移動速度が所定の閾値よりも速い場合、右足首が地面より上の位置にあることは不自然ではないため、補正は行われない。従って、プレイヤキャラクタの移動速度に応じて、ゲーム空間における足首の高さを補正することにより、プレイヤキャラクタの自然な動きを実現することができる。
【0102】
図10に戻り、CPU10は、次にステップS7の処理を実行する。ステップS7において、CPU10は、膝位置設定処理を実行する。ステップS7における処理の詳細を、図13を用いて説明する。図13は、図10における膝位置設定処理(ステップS7)の詳細を示すフローチャートである。
【0103】
まず、CPU10は、ステップS40の処理を実行する。ステップS40において、CPU10は、メインメモリを参照して、腰の位置(ステップS5で設定)、両足首の位置(ステップS6で設定)、及び、両足首の向きを取得する。ここで、両足首の向きは、プレイヤキャラクタの身体の向き(ステップS3で設定)に基づいて定められる。例えば、身体の向きと足首の向きが一致していてもよいし、身体の向きに対して両足首の向きが所定の角度だけ開いていてもよい。次に、CPU10は、ステップS41の処理を実行する。
【0104】
ステップS41において、CPU10は、膝の開き角度(腿と脛の角度)を算出する。具体的には、CPU10は、ステップS40で取得した腰の位置、両足首の位置、及び、腿と脛の長さに基づいて、膝の開き角度を算出する。ここで、腿の長さと脛の長さとは、予め定められており、メインメモリに記憶されている。次に、CPU10は、ステップS42の処理を実行する。
【0105】
ステップS42において、CPU10は、膝の向きを調整する。具体的には、CPU10は、プレイヤキャラクタの身体の向き、及び両足首の向きに応じて、両膝の向き(身体の向きに対する開き度合い)を算出する。ステップS42の処理の後、CPU10は、図13に示す膝位置設定処理を終了する。
【0106】
図10に戻り、CPU10は、次にステップS8の処理を実行する。ステップS8において、CPU10は、モデルの設定処理を実行する。ここでの処理は、上述の処理によって設定された各部位(腰や足首)の位置や向きに基づいて、描画のための各部位(腰、足首、かかとやつま先等)の詳細を設定する処理である。ステップS8における処理の詳細を、図14を用いて説明する。図14は、図10におけるモデルの設定処理(ステップS8)の詳細を示すフローチャートである。なお、図14では、つま先についてのモデル設定処理についてのみ主に説明する。
【0107】
まず、CPU10は、ステップS50の処理を実行する。ステップS50において、CPU10は、かかとが地面についているか否かを判定する。具体的には、CPU10は、ステップS6で設定された両足首の高さと地面の高さとに基づいて、かかとが地面についているか否かを判定する。例えば、CPU10は、足首の高さと地面の高さとの差が所定の閾値より小さい場合、かかとが地面についていると判定する。判定結果が肯定の場合、CPU10は、次にステップS51の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS52の処理を実行する。
【0108】
ステップS51において、CPU10は、足裏を地面に沿わせる処理を実行する。ここでの処理は、かかとが地面についていると判定された場合において、かかと以外のつま先等を地面につかせる処理である。このように、かかとが地面についている場合において、足裏を地面に沿わせることにより、足の動き及び表示を自然にすることができる。ステップS51の処理の後、CPU10は、次にステップS53の処理を実行する。
【0109】
ステップS52において、CPU10は、前回のつま先の向きを直立状態のつま先の向きに近づける処理を実行する。ここでの処理は、かかとが地面についていない場合において、つま先の上下方向の向き(地面に対する角度)を調整する処理である。具体的には、CPU10は、メインメモリを参照して前回のステップS52で設定されたつま先の向きを取得し、当該つま先の向きを予め定められた直立状態のつま先の向きに所定の値だけ近づける。例えば、直立状態のつま先の向きは、地面と平行に設定されている。このように、つま先の向きを調整することにより、かかとが地面についていない場合において、つま先の向きが不自然に上に向いたりすることを防止することができる。次に、CPU10は、ステップS53の処理を実行する。
【0110】
ステップS53において、CPU10は、その他のモデル(手や身体、首等)の設定処理を実行する。ここでは、例えば、足の位置に応じて手の位置を設定したり、首(顔)の向きを設定したりする。また、上記のステップS6およびステップS7においては、右足についての処理のみの説明を行ったが、左足についても同様の処理が行われる。ただし、右足と左足とでは初期の中心角の位相がπだけずれたものになっており、すなわち、交互に足を上げる動作が行われることになる。ステップS53の処理の後、CPU10は、CPU10は、図14に示すモデル設定処理を終了する。
【0111】
図10に戻り、CPU10は、次にステップS9の処理を実行する。ステップS9において、CPU10は、その他のゲーム処理を実行する。CPU10は、その他のゲーム処理として、プレイヤキャラクタの現在位置と移動速度とに基づいて、プレイヤキャラクタ自体の移動後の位置を設定したり、プレイヤキャラクタ以外のオブジェクト(プレイヤチームの他のキャラクタや相手チームのキャラクタ、ボール等)を動作させたり、表示領域を設定したりする。
【0112】
次に、CPU10は、ステップS10において、描画処理を実行する。上述のようにして算出された腰及び各足首の位置と、モデル設定処理で設定された各モデルの設定と、膝位置設定処理で設定された膝の設定と、キャラクタの基本姿勢の画像データ(画像データ72)とを用いて、プレイヤキャラクタの描画処理が実行される。また、CPU10は、その他のオブジェクトの描画処理を行う。CPU10は、GPU11bを用いて描画処理を行い、その結果、表示装置にゲーム画像が表示される。次に、CPU10は、ステップS11において、ゲームを終了するか否かの判定を行う。CPU10は、例えば、プレイヤからのゲーム終了命令を受信した場合やゲームがクリアされた場合、ゲーム処理を終了する。判定結果が肯定の場合、CPU10は、図10に示すゲーム処理を終了する。判定結果が否定の場合、CPU10は、ステップS2の処理を再度実行する。
【0113】
以上のように、本実施形態では、ゲームキャラクタの足の動きを計算により求め、描画することができる。これにより、予め多様なモーション画像を用意する必要なく、キャラクタの様々な足の動きを表現することができる。
【0114】
なお、本実施形態では、ゲームキャラクタの足や腰の動きを表示する場合について説明したが、他の実施形態では、キャラクタの他の部位、例えば、手や首等について上述した軌道を設定し、軌道上を動作させることによって、当該部位を表示してもよい。また、他の実施形態では、上述の方法により、人の動作のみならず、動物(4足動物)の動作を実現してもよい。
【0115】
また、他の実施形態では、キャラクタの身体の一部位ではないものについて当該キャラクタの部位とみなして、上述した軌道を設定し、当該部位を動作させてもよい。すなわち、あるオブジェクトに付随して動作する別のオブジェクトについて上述した軌道を設定し、動作させてもよい。例えば、キャラクタが所持するアイテム(武器等)について、当該アイテムが移動する軌道をキャラクタの位置に基づいて設定することにより、当該アイテムを動作させてもよい。
【0116】
また、本実施形態では、腰が動作する軌道は、線分(短径が0の楕円)であり、足首が動作する軌道は、楕円軌道であるとしたが、他の実施形態では、腰の軌道を楕円軌道とし、足首の軌道を線分としてもよい。また、別の実施形態では、各部位が動作する軌道は、どのような形状の軌道であってもよく、例えば、各部位が動作する軌道は、円であってもよいし、四角形や三角形等の多角形であってもよい。
【0117】
また、本実施形態では、足首の周期(右足首が楕円軌道ArP上を往復するのに要する時間)は腰の周期(腰が軌道WP上を往復するのに要する時間)の2倍に設定され、両足首はπだけ位相がずれているものとしたが、他の実施形態では、各部位の周期及び位相差はどのようにして定められてもよい。例えば、足首の周期は腰の周期と独立するように設定されてもよい。また、例えば、両足首の位相差を0に設定することにより、両足でジャンプする動作等を実現することができる。
【0118】
また、本実施形態では、各部位の軌道に関する中心角に基づいて、各軌道上の位置が定められたが、他の実施形態では、各軌道上の位置はどのように定められてもよい。例えば、各部位は、それぞれに設定された軌道上をキャラクタの移動速度に応じた速度で移動されてもよい。
【0119】
また、上記中心角の角速度は、必ずしもキャラクタの移動速度に関連付けられる必要はなく、キャラクタが静止状態であっても上記中心角を変化させてもよい。例えば、キャラクタが移動せずにゲーム空間の所定の位置で、身体を上下運動(上下に身体を揺らす運動)をしている様子を実現してもよい。すなわち、キャラクタの移動速度が0の場合において、腰の位置を、上記軌道WP上を移動させることによって、キャラクタが上下運動する様子や屈伸運動する様子を実現することができる。
【0120】
また、本実施形態では、バスケットボールのゲームについて説明したが、上述した方法は、様々なゲームに利用されてもよい。例えば、野球ゲームや他のスポーツゲームにおける人が歩いたり走ったりする様子を、上述した方法により実現することができる。
【0121】
また、本発明のゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置3に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置3に供給されてもよい。また、ゲームプログラムは、ゲーム装置3内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体(コンピュータ読み取り可能な記憶媒体)としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状の記憶媒体の他に、不揮発性半導体メモリでもよい。
【0122】
また、本実施形態においては、ゲーム装置3のCPU10がゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置3が備える専用回路によって行われてもよい。
【符号の説明】
【0123】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ部
【特許請求の範囲】
【請求項1】
仮想空間内でオブジェクトを動かすゲーム装置であって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第1の部位の位置を設定する第1部位設定手段と、
前記第1部位設定手段によって設定された前記第1の部位を含む画像を画面に表示する表示制御手段とを備え、
前記第1部位設定手段は、前記オブジェクトの位置に応じて設定された第1の軌道上を、前記オブジェクトの移動量に応じた量で前記第1の部位を移動させることで、前記第1の部位の位置を設定する、ゲーム装置。
【請求項2】
前記第1の軌道は、閉曲線であり、
前記第1部位設定手段は、前記第1の部位の位置を前記閉曲線上に設定する、請求項1に記載のゲーム装置。
【請求項3】
前記第1の軌道は短径が0以上の楕円又は円軌道であって、
前記第1部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第1の部位の位置として設定する、請求項1に記載のゲーム装置。
【請求項4】
前記第1部位設定手段は、前記楕円又は円の中心の位置を前記オブジェクトの位置に基づいて設定する中心位置設定手段を含む、請求項3に記載のゲーム装置。
【請求項5】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第2の部位の位置を設定する第2部位設定手段をさらに備え、
前記第2部位設定手段は、前記オブジェクトの位置に応じて設定された第2の軌道上を、前記オブジェクトの移動量に応じた量で前記第2の部位を移動させることで前記第2の部位の位置を設定し、
前記第1部位設定手段は、前記第2の部位の位置に対する相対位置として、前記第1の部位の位置を設定し、
前記表示制御手段は、前記第1の部位及び前記第2の部位を含む画像を前記画面に表示する、請求項1に記載のゲーム装置。
【請求項6】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第2の部位の位置を設定する第2部位設定手段をさらに備え、
前記第2部位設定手段は、前記オブジェクトの位置に応じて設定された第2の軌道上を、前記オブジェクトの移動量に応じた量で前記第2の部位を移動させることで前記第2の部位の位置を設定し、
前記表示制御手段は、前記第1の部位及び前記第2の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第1の部位及び前記第2の部位は、前記第1の軌道上及び前記第2の軌道上をそれぞれ周期的に移動するとともに、前記第1の部位の周期は前記第2の部位の周期の2倍である、請求項1に記載のゲーム装置。
【請求項7】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第3の部位の位置を設定する第3部位設定手段をさらに備え、
前記第3部位設定手段は、前記オブジェクトの位置に応じて設定された第3の軌道上を、前記オブジェクトの移動量に応じた量で前記第3の部位を移動させることで前記第3の部位の位置を設定するとともに、前記第2の部位の位置に対する相対位置として、前記第3の部位の位置を設定し、
前記表示制御手段は、前記第1の部位、前記第2の部位、及び前記第3の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第3の部位は、前記第3の軌道上を前記第1の部位の周期と同じ周期で移動し、かつ、前記第1の部位と前記第3の部位とは、所定の位相差を有する、請求項6に記載のゲーム装置。
【請求項8】
前記第2の軌道は短径が0以上の楕円又は円軌道であって、
前記第2部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第2の部位の位置として設定する、請求項5に記載のゲーム装置。
【請求項9】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第1部位設定手段は、
前記第1の部位が前記地形オブジェクトの内部に存在するか否かを判定する判定手段と、
前記判定手段によって前記第1の部位が前記地形オブジェクトの内部に存在すると判定された場合に、前記第1の部位の位置を前記地形オブジェクトの表面に補正する位置補正手段とを含む、請求項1又は5に記載のゲーム装置。
【請求項10】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第1部位設定手段は、単位時間あたりの前記オブジェクトの移動量が所定の閾値より少ない場合、前記第1の部位の位置を前記地形オブジェクトに近づけるようにして、前記第1の部位の位置をさらに設定する、請求項1に記載のゲーム装置。
【請求項11】
前記オブジェクトは、人オブジェクトであって、前記第1の部位及び前記第3の部位は足首であり、前記第2の部位は腰である、請求項7に記載のゲーム装置。
【請求項12】
前記第1部位設定手段によって設定された足首の位置と、前記第2部位設定手段によって設定された腰の位置とに基づいて、膝の状態を設定する膝状態設定手段をさらに備える、請求項11に記載のゲーム装置。
【請求項13】
前記オブジェクト位置設定手段は、所定の操作入力に基づいて前記オブジェクトの前記仮想空間内での位置を設定する、請求項1に記載のゲーム装置。
【請求項14】
仮想空間内のオブジェクトを動作させるゲーム装置であって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対動作として、前記オブジェクトの第1の部位を動作させる第1部位動作手段と、
前記第1部位動作手段によって動作させた前記第1の部位を含む画像を画面に表示する表示制御手段とを備え、
前記第1部位動作手段は、前記オブジェクトの位置に応じて設定された第1の軌道上を、所定期間内に前記第1の部位を移動させることで、前記第1の部位を動作させる、ゲーム装置。
【請求項15】
仮想空間内でオブジェクトを動かすゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第1の部位の位置を設定する第1部位設定手段と、
前記第1部位設定手段によって設定された前記第1の部位を含む画像を画面に表示する表示制御手段として、前記コンピュータを機能させ、
前記第1部位設定手段は、前記オブジェクトの位置に応じて設定された第1の軌道上を、前記オブジェクトの移動量に応じた量で前記第1の部位を移動させることで、前記第1の部位の位置を設定する、ゲームプログラム。
【請求項16】
前記第1の軌道は、閉曲線であり、
前記第1部位設定手段は、前記第1の部位の位置を前記閉曲線上に設定する、請求項15に記載のゲームプログラム。
【請求項17】
前記第1の軌道は短径が0以上の楕円又は円軌道であって、
前記第1部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第1の部位の位置として設定する、請求項15に記載のゲームプログラム。
【請求項18】
前記第1部位設定手段は、前記楕円又は円の中心の位置を前記オブジェクトの位置に基づいて設定する中心位置設定手段を含む、請求項17に記載のゲームプログラム。
【請求項19】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第2の部位の位置を設定する第2部位設定手段として、前記コンピュータをさらに機能させ、
前記第2部位設定手段は、前記オブジェクトの位置に応じて設定された第2の軌道上を、前記オブジェクトの移動量に応じた量で前記第2の部位を移動させることで前記第2の部位の位置を設定し、
前記第1部位設定手段は、前記第2の部位の位置に対する相対位置として、前記第1の部位の位置を設定し、
前記表示制御手段は、前記第1の部位及び前記第2の部位を含む画像を前記画面に表示する、請求項15に記載のゲームプログラム。
【請求項20】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第2の部位の位置を設定する第2部位設定手段として、前記コンピュータをさらに機能させ、
前記第2部位設定手段は、前記オブジェクトの位置に応じて設定された第2の軌道上を、前記オブジェクトの移動量に応じた量で前記第2の部位を移動させることで前記第2の部位の位置を設定し、
前記表示制御手段は、前記第1の部位及び前記第2の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第1の部位及び前記第2の部位は、前記第1の軌道上及び前記第2の軌道上をそれぞれ周期的に移動するとともに、前記第1の部位の周期は前記第2の部位の周期の2倍である、請求項15に記載のゲームプログラム。
【請求項21】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第3の部位の位置を設定する第3部位設定手段として、前記コンピュータをさらに機能させ、
前記第3部位設定手段は、前記オブジェクトの位置に応じて設定された第3の軌道上を、前記オブジェクトの移動量に応じた量で前記第3の部位を移動させることで前記第3の部位の位置を設定するとともに、前記第2の部位の位置に対する相対位置として、前記第3の部位の位置を設定し、
前記表示制御手段は、前記第1の部位、前記第2の部位、及び前記第3の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第3の部位は、前記第3の軌道上を前記第1の部位の周期と同じ周期で移動し、かつ、前記第1の部位と前記第3の部位とは、所定の位相差を有する、請求項20に記載のゲームプログラム。
【請求項22】
前記第2の軌道は短径が0以上の楕円又は円軌道であって、
前記第2部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第2の部位の位置として設定する、請求項19に記載のゲームプログラム。
【請求項23】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第1部位設定手段は、
前記第1の部位が前記地形オブジェクトの内部に存在するか否かを判定する判定手段と、
前記判定手段によって前記第1の部位が前記地形オブジェクトの内部に存在すると判定された場合に、前記第1の部位の位置を前記地形オブジェクトの表面に補正する位置補正手段とを含む、請求項15又は19に記載のゲームプログラム。
【請求項24】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第1部位設定手段は、単位時間あたりの前記オブジェクトの移動量が所定の閾値より少ない場合、前記第1の部位の位置を前記地形オブジェクトに近づけるようにして、前記第1の部位の位置をさらに設定する、請求項15に記載のゲームプログラム。
【請求項25】
前記オブジェクトは、人オブジェクトであって、前記第1の部位及び前記第3の部位は足首であり、前記第2の部位は腰である、請求項21に記載のゲームプログラム。
【請求項26】
前記第1部位設定手段によって設定された足首の位置と、前記第2部位設定手段によって設定された腰の位置とに基づいて、膝の状態を設定する膝状態設定手段をとして、前記コンピュータをさらに機能させる、請求項25に記載のゲームプログラム。
【請求項27】
前記オブジェクト位置設定手段は、所定の操作入力に基づいて前記オブジェクトの前記仮想空間内での位置を設定する、請求項15に記載のゲームプログラム。
【請求項28】
仮想空間内のオブジェクトを動作させるゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対動作として、前記オブジェクトの第1の部位を動作させる第1部位動作手段と、
前記第1部位動作手段によって動作させた前記第1の部位を含む画像を画面に表示する表示制御手段として、前記コンピュータを機能させ、
前記第1部位動作手段は、前記オブジェクトの位置に応じて設定された第1の軌道上を、所定期間内に前記第1の部位を移動させることで、前記第1の部位を動作させる、ゲームプログラム。
【請求項1】
仮想空間内でオブジェクトを動かすゲーム装置であって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第1の部位の位置を設定する第1部位設定手段と、
前記第1部位設定手段によって設定された前記第1の部位を含む画像を画面に表示する表示制御手段とを備え、
前記第1部位設定手段は、前記オブジェクトの位置に応じて設定された第1の軌道上を、前記オブジェクトの移動量に応じた量で前記第1の部位を移動させることで、前記第1の部位の位置を設定する、ゲーム装置。
【請求項2】
前記第1の軌道は、閉曲線であり、
前記第1部位設定手段は、前記第1の部位の位置を前記閉曲線上に設定する、請求項1に記載のゲーム装置。
【請求項3】
前記第1の軌道は短径が0以上の楕円又は円軌道であって、
前記第1部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第1の部位の位置として設定する、請求項1に記載のゲーム装置。
【請求項4】
前記第1部位設定手段は、前記楕円又は円の中心の位置を前記オブジェクトの位置に基づいて設定する中心位置設定手段を含む、請求項3に記載のゲーム装置。
【請求項5】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第2の部位の位置を設定する第2部位設定手段をさらに備え、
前記第2部位設定手段は、前記オブジェクトの位置に応じて設定された第2の軌道上を、前記オブジェクトの移動量に応じた量で前記第2の部位を移動させることで前記第2の部位の位置を設定し、
前記第1部位設定手段は、前記第2の部位の位置に対する相対位置として、前記第1の部位の位置を設定し、
前記表示制御手段は、前記第1の部位及び前記第2の部位を含む画像を前記画面に表示する、請求項1に記載のゲーム装置。
【請求項6】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第2の部位の位置を設定する第2部位設定手段をさらに備え、
前記第2部位設定手段は、前記オブジェクトの位置に応じて設定された第2の軌道上を、前記オブジェクトの移動量に応じた量で前記第2の部位を移動させることで前記第2の部位の位置を設定し、
前記表示制御手段は、前記第1の部位及び前記第2の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第1の部位及び前記第2の部位は、前記第1の軌道上及び前記第2の軌道上をそれぞれ周期的に移動するとともに、前記第1の部位の周期は前記第2の部位の周期の2倍である、請求項1に記載のゲーム装置。
【請求項7】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第3の部位の位置を設定する第3部位設定手段をさらに備え、
前記第3部位設定手段は、前記オブジェクトの位置に応じて設定された第3の軌道上を、前記オブジェクトの移動量に応じた量で前記第3の部位を移動させることで前記第3の部位の位置を設定するとともに、前記第2の部位の位置に対する相対位置として、前記第3の部位の位置を設定し、
前記表示制御手段は、前記第1の部位、前記第2の部位、及び前記第3の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第3の部位は、前記第3の軌道上を前記第1の部位の周期と同じ周期で移動し、かつ、前記第1の部位と前記第3の部位とは、所定の位相差を有する、請求項6に記載のゲーム装置。
【請求項8】
前記第2の軌道は短径が0以上の楕円又は円軌道であって、
前記第2部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第2の部位の位置として設定する、請求項5に記載のゲーム装置。
【請求項9】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第1部位設定手段は、
前記第1の部位が前記地形オブジェクトの内部に存在するか否かを判定する判定手段と、
前記判定手段によって前記第1の部位が前記地形オブジェクトの内部に存在すると判定された場合に、前記第1の部位の位置を前記地形オブジェクトの表面に補正する位置補正手段とを含む、請求項1又は5に記載のゲーム装置。
【請求項10】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第1部位設定手段は、単位時間あたりの前記オブジェクトの移動量が所定の閾値より少ない場合、前記第1の部位の位置を前記地形オブジェクトに近づけるようにして、前記第1の部位の位置をさらに設定する、請求項1に記載のゲーム装置。
【請求項11】
前記オブジェクトは、人オブジェクトであって、前記第1の部位及び前記第3の部位は足首であり、前記第2の部位は腰である、請求項7に記載のゲーム装置。
【請求項12】
前記第1部位設定手段によって設定された足首の位置と、前記第2部位設定手段によって設定された腰の位置とに基づいて、膝の状態を設定する膝状態設定手段をさらに備える、請求項11に記載のゲーム装置。
【請求項13】
前記オブジェクト位置設定手段は、所定の操作入力に基づいて前記オブジェクトの前記仮想空間内での位置を設定する、請求項1に記載のゲーム装置。
【請求項14】
仮想空間内のオブジェクトを動作させるゲーム装置であって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対動作として、前記オブジェクトの第1の部位を動作させる第1部位動作手段と、
前記第1部位動作手段によって動作させた前記第1の部位を含む画像を画面に表示する表示制御手段とを備え、
前記第1部位動作手段は、前記オブジェクトの位置に応じて設定された第1の軌道上を、所定期間内に前記第1の部位を移動させることで、前記第1の部位を動作させる、ゲーム装置。
【請求項15】
仮想空間内でオブジェクトを動かすゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第1の部位の位置を設定する第1部位設定手段と、
前記第1部位設定手段によって設定された前記第1の部位を含む画像を画面に表示する表示制御手段として、前記コンピュータを機能させ、
前記第1部位設定手段は、前記オブジェクトの位置に応じて設定された第1の軌道上を、前記オブジェクトの移動量に応じた量で前記第1の部位を移動させることで、前記第1の部位の位置を設定する、ゲームプログラム。
【請求項16】
前記第1の軌道は、閉曲線であり、
前記第1部位設定手段は、前記第1の部位の位置を前記閉曲線上に設定する、請求項15に記載のゲームプログラム。
【請求項17】
前記第1の軌道は短径が0以上の楕円又は円軌道であって、
前記第1部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第1の部位の位置として設定する、請求項15に記載のゲームプログラム。
【請求項18】
前記第1部位設定手段は、前記楕円又は円の中心の位置を前記オブジェクトの位置に基づいて設定する中心位置設定手段を含む、請求項17に記載のゲームプログラム。
【請求項19】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第2の部位の位置を設定する第2部位設定手段として、前記コンピュータをさらに機能させ、
前記第2部位設定手段は、前記オブジェクトの位置に応じて設定された第2の軌道上を、前記オブジェクトの移動量に応じた量で前記第2の部位を移動させることで前記第2の部位の位置を設定し、
前記第1部位設定手段は、前記第2の部位の位置に対する相対位置として、前記第1の部位の位置を設定し、
前記表示制御手段は、前記第1の部位及び前記第2の部位を含む画像を前記画面に表示する、請求項15に記載のゲームプログラム。
【請求項20】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第2の部位の位置を設定する第2部位設定手段として、前記コンピュータをさらに機能させ、
前記第2部位設定手段は、前記オブジェクトの位置に応じて設定された第2の軌道上を、前記オブジェクトの移動量に応じた量で前記第2の部位を移動させることで前記第2の部位の位置を設定し、
前記表示制御手段は、前記第1の部位及び前記第2の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第1の部位及び前記第2の部位は、前記第1の軌道上及び前記第2の軌道上をそれぞれ周期的に移動するとともに、前記第1の部位の周期は前記第2の部位の周期の2倍である、請求項15に記載のゲームプログラム。
【請求項21】
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対位置として、前記オブジェクトの第3の部位の位置を設定する第3部位設定手段として、前記コンピュータをさらに機能させ、
前記第3部位設定手段は、前記オブジェクトの位置に応じて設定された第3の軌道上を、前記オブジェクトの移動量に応じた量で前記第3の部位を移動させることで前記第3の部位の位置を設定するとともに、前記第2の部位の位置に対する相対位置として、前記第3の部位の位置を設定し、
前記表示制御手段は、前記第1の部位、前記第2の部位、及び前記第3の部位を含む画像を前記画面に表示し、
前記オブジェクトが前記仮想空間内を移動している場合、前記第3の部位は、前記第3の軌道上を前記第1の部位の周期と同じ周期で移動し、かつ、前記第1の部位と前記第3の部位とは、所定の位相差を有する、請求項20に記載のゲームプログラム。
【請求項22】
前記第2の軌道は短径が0以上の楕円又は円軌道であって、
前記第2部位設定手段は、前記楕円又は円の中心角を前記オブジェクトの移動量に応じて設定し、当該中心角によって定められる前記楕円又は円上の点を前記第2の部位の位置として設定する、請求項19に記載のゲームプログラム。
【請求項23】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第1部位設定手段は、
前記第1の部位が前記地形オブジェクトの内部に存在するか否かを判定する判定手段と、
前記判定手段によって前記第1の部位が前記地形オブジェクトの内部に存在すると判定された場合に、前記第1の部位の位置を前記地形オブジェクトの表面に補正する位置補正手段とを含む、請求項15又は19に記載のゲームプログラム。
【請求項24】
前記オブジェクトは前記仮想空間内に存在する所定の地形オブジェクト上を移動し、
前記第1部位設定手段は、単位時間あたりの前記オブジェクトの移動量が所定の閾値より少ない場合、前記第1の部位の位置を前記地形オブジェクトに近づけるようにして、前記第1の部位の位置をさらに設定する、請求項15に記載のゲームプログラム。
【請求項25】
前記オブジェクトは、人オブジェクトであって、前記第1の部位及び前記第3の部位は足首であり、前記第2の部位は腰である、請求項21に記載のゲームプログラム。
【請求項26】
前記第1部位設定手段によって設定された足首の位置と、前記第2部位設定手段によって設定された腰の位置とに基づいて、膝の状態を設定する膝状態設定手段をとして、前記コンピュータをさらに機能させる、請求項25に記載のゲームプログラム。
【請求項27】
前記オブジェクト位置設定手段は、所定の操作入力に基づいて前記オブジェクトの前記仮想空間内での位置を設定する、請求項15に記載のゲームプログラム。
【請求項28】
仮想空間内のオブジェクトを動作させるゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記オブジェクトの前記仮想空間内での位置を設定するオブジェクト位置設定手段と、
前記オブジェクト位置設定手段によって設定された前記オブジェクトの位置に対する相対動作として、前記オブジェクトの第1の部位を動作させる第1部位動作手段と、
前記第1部位動作手段によって動作させた前記第1の部位を含む画像を画面に表示する表示制御手段として、前記コンピュータを機能させ、
前記第1部位動作手段は、前記オブジェクトの位置に応じて設定された第1の軌道上を、所定期間内に前記第1の部位を移動させることで、前記第1の部位を動作させる、ゲームプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2010−263944(P2010−263944A)
【公開日】平成22年11月25日(2010.11.25)
【国際特許分類】
【出願番号】特願2009−115518(P2009−115518)
【出願日】平成21年5月12日(2009.5.12)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成22年11月25日(2010.11.25)
【国際特許分類】
【出願日】平成21年5月12日(2009.5.12)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]