(57)【要約】【課題】仮想の３次元空間におけるオブジェクトの位置をプレイヤに直感的に認識させる。【解決手段】ゲーム装置は、仮想の３次元空間に存在するプレイヤオブジェクトを表示装置に表示させる。ゲーム装置は、プレイヤオブジェクトの位置を通り所定の第１方向を向く直線と所定の他のオブジェクトとの交点の位置を第１位置として算出し、第１位置にプレイヤオブジェクトの影５４を描画する。また、ゲーム装置は、プレイヤオブジェクトの位置を通り第１方向と平行でない第２方向を向く直線と所定の他のオブジェクトとの交点の位置を第２位置として算出し、第２位置にプレイヤオブジェクトの影５５を描画する。【選択図】図８
2014000438.tif 000002
【特許請求の範囲】
【請求項１】
仮想の３次元空間に存在するオブジェクトを表示装置に表示させるゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記オブジェクトの位置を通り所定の第１方向を向く直線と所定の他のオブジェクトとの交点の位置を第１位置として算出する第１位置算出ステップと、
前記第１位置に前記オブジェクトの影を描画する第１影描画ステップと、
前記オブジェクトのうち予め定められた所定のオブジェクトの位置を通り前記第１方向と平行でない第２方向を向く直線と所定の他のオブジェクトとの交点の位置を第２位置として算出する第２位置算出ステップと、
前記第２位置に前記所定のオブジェクトの影を描画する第２影描画ステップとを前記コンピュータに実行させるゲームプログラム。
【請求項２】
前記３次元空間内には所定の影描画エリアが設定されており、
前記３次元空間において設定される所定の影描画エリア内に前記所定のオブジェクトが存在するか否かを判定するエリア判定ステップをさらに前記コンピュータに実行させ、
前記第２影描画ステップは、前記エリア判定ステップにおいて前記所定のオブジェクトの位置が前記影描画エリア内に存在すると判定された場合のみ実行される、請求項１に記載のゲームプログラム。
【請求項３】
前記ゲーム装置の記憶手段には、各前記影描画エリアに対してそれぞれ投影方向が関連付けられた影描画エリアデータが記憶されており、
前記第２位置算出ステップにおいて、前記コンピュータは、前記影描画エリアデータにおいて前記所定のオブジェクトが存在する影描画エリアに関連付けられている投影方向を前記第２方向として前記第２位置を算出する、請求項２に記載のゲームプログラム。
【請求項４】
前記第１方向は、前記３次元空間において設定される重力方向である、請求項１に記載のゲームプログラム。
【請求項５】
前記重力方向をゲーム状況に応じて変更する重力方向変更ステップを前記コンピュータにさらに実行させる、請求項４に記載のゲームプログラム。
【請求項６】
前記第２影描画ステップにおいて、前記コンピュータは、前記第１影描画ステップにお
いて描画される影とは異なる表示形態となるように影を描画する、請求項２ないし５のいずれか１項に記載のゲームプログラム。
【請求項７】
前記ゲームプログラムは、前記所定のオブジェクトでないオブジェクトの位置を通り、前記第１方向および前記第２方向と平行でない第３方向を向く直線と前記所定の他のオブジェクトとの交点の位置を第３位置として算出する第３位置算出ステップと、
前記第３位置に前記所定のオブジェクトでないオブジェクトの影を描画する第３影描画ステップを前記コンピュータにさらに実行させる、請求項２ないし６のいずれか１項に記載のゲームプログラム。
【請求項８】
前記所定の他のオブジェクトは、前記３次元空間内に固定して配置された地形オブジェクトである、請求項１または請求項２に記載のゲームプログラム。
【請求項９】
前記第１影描画ステップにおいて、前記コンピュータは、前記オブジェクトの位置から前記第１位置までの距離に基づいて前記影の濃さを変化させる、請求項１または請求項２に記載のゲームプログラム。
【請求項１０】
前記第２影描画ステップにおいて、前記コンピュータは、前記所定のオブジェクトの位置から前記第２位置までの距離に基づいて前記影の濃さを変化させる、請求項１または請求項２に記載のゲームプログラム。
【請求項１１】
前記第１影描画ステップにおいて、前記コンピュータは、前記オブジェクトの位置から前記第１位置までの距離に基づいて前記影の大きさを変化させる、請求項１または請求項２に記載のゲームプログラム。
【請求項１２】
前記第２影描画ステップにおいて、前記コンピュータは、前記所定のオブジェクトの位置から前記第２位置までの距離に基づいて前記影の大きさを変化させる、請求項１または請求項２に記載のゲームプログラム。
【請求項１３】
前記第１方向および前記第２方向は、それぞれ互いに直交する方向である、請求項１ないし１２のいずれか１項に記載のゲームプログラム。
【請求項１４】
仮想の３次元空間に存在するオブジェクトを表示装置に表示させるゲーム装置であって、
前記オブジェクトの位置から所定の第１方向を向く直線と所定の他のオブジェクトとの交点の位置を第１位置として算出する第１位置算出手段と、
前記第１位置に前記オブジェクトの影を描画する第１影描画手段と、
前記オブジェクトのうち予め定められた所定のオブジェクトの位置から前記第１方向と平行でない第２方向を向く直線と所定の他のオブジェクトとの交点の位置を第２位置として算出する第２位置算出手段と、
前記第２位置に前記所定のオブジェクトの影を描画する第２影描画手段とを備える、ゲーム装置。
【請求項１５】
仮想の３次元空間に存在するオブジェクトを表示装置に表示させるゲームシステムであって、
前記オブジェクトの位置を通り所定の第１方向を向く直線と所定の他のオブジェクトとの交点の位置を第１位置として算出する第１位置算出手段と、
前記第１位置に前記オブジェクトの影を描画する第１影描画手段と、
前記オブジェクトのうち予め定められた所定のオブジェクトの位置を通り前記第１方向と平行でない第２方向を向く直線と所定の他のオブジェクトとの交点の位置を第２位置として算出する第２位置算出手段と、
前記第２位置に前記所定のオブジェクトの影を描画する第２影描画手段とを備える、ゲームシステム。
【請求項１６】
プロセッサを備え、仮想の３次元空間に存在するオブジェクトを表示装置に表示させるゲーム装置のコンピュータが実行するゲーム処理方法であって、
前記オブジェクトの位置を通り所定の第１方向を向く直線と所定の他のオブジェクトとの交点の位置を第１位置として算出する第１位置算出ステップと、
前記第１位置に前記オブジェクトの影を描画する第１影描画ステップと、
前記オブジェクトのうち予め定められた所定のオブジェクトの位置を通り前記第１方向と平行でない第２方向を向く直線と所定の他のオブジェクトとの交点の位置を第２位置として算出する第２位置算出ステップと、
前記第２位置に前記所定のオブジェクトの影を描画する第２影描画ステップとを含むゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームプログラムおよびゲーム装置に関し、より特定的には、３次元仮想空間内においてオブジェクトを表示するためのゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
特許文献１では、野球ゲームやサッカーゲーム等の球技系ゲームにおいて、ボールが高く飛ばされた場面でのゲーム処理について記載されている。このゲーム処理においては、例えば野球ゲームにおいてバッターがボールを打って高く飛ばした場合、表示画面にはグランド上の野手とともに、表示画面から外れたボールの影がグランド上に表示される。このようにボールの影が表示されることによって、プレイヤは、ボールが画面から外れていてもボールの位置を知ることができる。すなわち、野手を操作するプレイヤは、ボールの影の位置に向けて野手を操作することにより捕球を行うことができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−５８８６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述のような野球ゲームでは、プレイヤの操作対象である野手は２次元平面であるグランド上で移動を行うので、２次元平面におけるボールの位置をプレイヤに認識させればよかった。しかし、３次元空間を移動するキャラクタを操作するようなゲームにおいては、単に地面上にキャラクタの影を表示するだけでは、平面上におけるキャラクタの位置をプレイヤに認識させることしかできず、３次元空間におけるキャラクタの位置を認識させるためには不十分である。
【０００５】
それ故、本発明の目的は、仮想の３次元空間におけるオブジェクトの位置をプレイヤに直感的に認識させることができるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、仮想の３次元空間に存在するオブジェクト（プレイヤオブジェクト５３）を表示装置（テレビ２）に表示させるゲーム装置（３）のコンピュータ（ＣＰＵ１０等）に実行させるゲームプログラム（６０）である。ゲームプログラムは、第１位置算出ステップ（Ｓ２３）と、第１影描画ステップ（Ｓ２５）と、第２位置算出ステップ（Ｓ３５）と、第２影描画ステップ（Ｓ３８）とをコンピュータに実行させる。第１位置算出ステップにおいて、コンピュータは、オブジェクトの位置を通り所定の第１方向を向く直線と所定の他のオブジェクトとの交点の位置を第１位置として算出する。第１影描画ステップにおいて、コンピュータは、第１位置にオブジェクトの影（５４）を描画する。第２位置算出ステップにおいて、コンピュータは、オブジェクトの位置を通り第１方向と平行でない第２方向を向く直線と所定の他のオブジェクトとの交点の位置を第２位置として算出する。第２影描画ステップにおいて、コンピュータは、第２位置にオブジェクトの影（５５）を描画する。
【０００８】
第２の発明においては、３次元空間内には所定の影描画エリア（７１）が設定されてもよい。このとき、ゲームプログラムは、３次元空間において設定される所定の影描画エリア内にオブジェクトが存在するか否かを判定するエリア判定ステップ（Ｓ３２）をさらにコンピュータに実行させる。第２影描画ステップは、エリア判定ステップにおいてオブジェクトの位置が影描画エリア内に存在すると判定された場合のみ実行される。
【０００９】
第３の発明においては、ゲーム装置の記憶手段（メインメモリ）には、各影描画エリアに対してそれぞれ投影方向が関連付けられた影描画エリアデータ（６３）が記憶されていてもよい。このとき、第２位置算出ステップにおいて、コンピュータは、影描画エリアデータにおいてオブジェクトが存在する影描画エリアに関連付けられている投影方向を第２方向として第２位置を算出する。
【００１０】
第４の発明においては、第１方向は、３次元空間において設定される重力方向であってもよい。
【００１１】
第５の発明においては、ゲームプログラムは、重力方向をゲーム状況に応じて変更する重力方向変更ステップ（Ｓ７）をコンピュータにさらに実行させてもよい。
【００１２】
第６の発明においては、第２影描画ステップにおいて、コンピュータは、第１影描画ステップにおいて描画される影とは異なる表示形態となるように影を描画してもよい（図８参照）。
【００１３】
第７の発明においては、第２位置算出ステップにおいて、コンピュータは、予め定められた所定のオブジェクト（プレイヤオブジェクト）についてのみ第２位置を算出してもよい。このとき、第２影描画ステップにおいて、コンピュータは、所定のオブジェクトについてのみ影を描画する。ゲームプログラムは、第３位置算出ステップと、第３影描画ステップとをコンピュータにさらに実行させる。第３位置算出ステップにおいて、コンピュータは、第２方向と平行でない第３方向を向く直線と前記所定のオブジェクト以外の他のオブジェクトとの交点の位置を第３位置として算出する。第３影描画ステップにおいて、コンピュータは、第３位置に所定のオブジェクト以外の他のオブジェクトの影を描画する。
【００１４】
第８の発明においては、所定のオブジェクトは、３次元空間内に固定して配置された地形オブジェクトであってもよい。
【００１５】
第９の発明においては、第１影描画ステップにおいて、コンピュータは、オブジェクトの位置から第１位置までの距離に基づいて影の濃さを変化させてもよい。
【００１６】
第１０の発明においては、第２影描画ステップにおいて、コンピュータは、オブジェクトの位置から第２位置までの距離に基づいて影の濃さを変化させてもよい。
【００１７】
第１１の発明においては、第１影描画ステップにおいて、コンピュータは、オブジェクトの位置から第１位置までの距離に基づいて影の大きさを変化させてもよい。
【００１８】
第１２の発明においては、第２影描画ステップにおいて、コンピュータは、オブジェクトの位置から第２位置までの距離に基づいて影の大きさを変化させてもよい。
【００１９】
また、本発明は、上記第１〜第１２の発明における各ステップを実行するゲーム装置と同等の機能を有するゲーム装置の形態で提供されてもよい。
【発明の効果】
【００２０】
第１の発明によれば、オブジェクトに対して異なる２方向に投影された２つの影が付される。３次元空間におけるオブジェクトの位置を認識するためには、オブジェクトに１つの影を付すのみでは不十分であったが、第１の発明のように異なる２方向に投影される２つの影を付すことによって、プレイヤは、３次元空間におけるオブジェクトの位置を直感的に認識することができる。
【００２１】
第２の発明によれば、オブジェクトが所定の影描画エリア内に存在する場合にのみ、当該オブジェクトに対して２つの影が付される。これによれば、２つの影を付す必要がある場所に影描画エリアを設定することで、不要な場所では影を描画する処理を省略することができるので、効率良く影を生成することができ、コンピュータの処理負担を軽減することができる。
【００２２】
第３の発明によれば、制作者は、第２の影が投影される方向を任意に設定することができる。したがって、影描画エリア毎に最適な方向に第２の影を生成することができるので、３次元空間におけるオブジェクトの位置をプレイヤにより認識させやすくすることができる。
【００２３】
第４の発明によれば、１つの影が投影される方向を重力方向とすることで、当該影が自然な方向に生成される。これによって、仮想の３次元空間を自然に表現することができる。
【００２４】
第５の発明によれば、ゲーム状況に応じて重力方向が変化するという、今までにない新規なゲームを提供することができる。
【００２５】
第６の発明によれば、２つの影の表示形態（例えば、形状）を異ならせることによって、プレイヤに２つの影を区別して認識させることができる。これによって、プレイヤは、重力方向がどちらであるかを２つの影を見ることによって判断することができる。特に、第５の発明のように重力方向がゲーム状況に応じて変化する場合には、２つの影によって重力方向をプレイヤに正しく認識させることは有効である。
【００２６】
第７の発明によれば、第２位置算出ステップ、および、第２影描画ステップにおいては所定のオブジェクトについてのみ処理が実行される。したがって、所定のオブジェクト以外の他のオブジェクト（例えば、壁オブジェクト等）については、上記ステップにおける処理を省略することができるので、第２の影を効率良く生成することができ、コンピュータの処理負担を軽減することができる。
【００２７】
第８の発明によれば、地形オブジェクトに影を表示することによって、プレイヤは、３次元空間におけるオブジェクトの位置を認識しやすくなる。
【００２８】
第９〜第１２の発明によれば、オブジェクトの位置から影の位置までの距離に応じて影の濃さまたは大きさが変化する。これによれば、プレイヤは当該距離をより認識しやすくなり、ひいては、３次元空間におけるオブジェクトの位置をより認識しやすくなる。
【図面の簡単な説明】
【００２９】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の機能ブロック図
【図３】コントローラ５の外観構成を示す斜視図
【図４】コントローラ５の外観構成を示す斜視図
【図５】コントローラ５の内部構造を示す図
【図６】コントローラ５の内部構造を示す図
【図７】コントローラ５の構成を示すブロック図
【図８】本実施形態におけるゲームのゲーム画面の一例を示す図
【図９】ゲーム装置３のメインメモリに記憶される主なデータを示す図
【図１０】現在エリアデータの一例を示す図
【図１１】ゲーム空間内に設定される影描画エリアの一例を示す図
【図１２】ゲーム装置３において実行される処理の流れを示すメインフローチャート
【図１３】図１２に示す第１影描画処理（ステップＳ８）の流れを示すフローチャート
【図１４】図１２に示す第２影描画処理（ステップＳ１１）の流れを示すフローチャート
【発明を実施するための形態】
【００３０】
（ゲームシステムの全体構成）
図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、コントローラ５、およびマーカ部６を含む。本システムは、コントローラ５を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００３１】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられ、データの読み取りが可能な情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。なお、ゲームプログラムはゲーム装置３の内部メモリ（不揮発であることが好ましいが揮発性でもよい）に予め記憶されていてもよいし、ゲーム装置３は、ゲーム装置３とネットワークを介して接続される所定のサーバ（または他のゲーム装置）からゲームプログラムをダウンロードして内部メモリに記憶するようにしてもかまわない。
【００３２】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００３３】
コントローラ５は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与える入力装置である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは通信可能に構成されればよく、有線で接続されてもよい。
【００３４】
（ゲーム装置３の内部構成）
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００３５】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０はシステムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００３６】
システムＬＳＩ１１には、入出力プロセッサ１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００３７】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００３８】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００３９】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００４０】
入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００４１】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００４２】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００４３】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００４４】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００４５】
（コントローラ５の構成）
次に、図３〜図７を参照して、コントローラ５について説明する。図３および図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００４６】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００４７】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００４８】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、他のコントローラ）を接続するために利用される。
【００４９】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００５０】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００５１】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４９（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００５２】
次に、図５および図６を参照して、コントローラ５の内部構造について説明する。図５および図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００５３】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図７）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００５４】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００５５】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４８が設けられている。バイブレータ４８は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４８が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４８は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４８がコントローラ５の中心よりも端側に配置することによって、バイブレータ４８の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５および図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４９に音声信号を出力するアンプ等を備えている。
【００５６】
なお、図３〜図６に示したコントローラ５の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００５７】
図７は、コントローラ５の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、および加速度センサ３７を備えている。コントローラ５は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００５８】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００５９】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析し、画像内で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００６０】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるマーカ部６のマーカ６Ｒおよび６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒおよび６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒおよび６Ｌ）の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（姿勢）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００６１】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、３軸または２軸の加速度センサは、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。なお、加速度センサ３７は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００６２】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ５を基準に設定されるＸＹＺ座標系における３次元のベクトル（ＡＸ，ＡＹ，ＡＺ）として表される。以下では、加速度センサ３７によって検出される３軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【００６３】
加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（姿勢）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ５の向きや動きを算出することができる。
【００６４】
なお、加速度センサ３７から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）またはコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かだけで傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾き角度を算出してもよいし、当該傾き角度を算出せずに、コントローラ５の傾き方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾きまたは姿勢を判定することができる。
【００６５】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の動き方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００６６】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。
【００６７】
操作部３２、撮像情報演算部３５、および加速度センサ３７からマイコン４２へ出力された各データ（操作ボタンデータ、マーカ座標データ、および加速度データ）は、一時的にメモリ４３に格納される。これらの各データは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３の無線コントローラモジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変換されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいてゲーム処理を行う。なお、通信部３６から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の無線コントローラモジュール１９へ出力する。
【００６８】
上記コントローラ５を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５によって画面上の任意の位置を指示する操作、および、コントローラ５自体を動かす操作を行うことができる。例えば、プレイヤは、コントローラ５を動かすゲーム操作、および、コントローラ５によってテレビ２の画面上の位置を指し示すゲーム操作を行うことができる。
【００６９】
（ゲーム装置における処理の概要）
以下、ゲーム装置３で実行される処理の概要について説明する。以下では、プレイヤが仮想の３次元空間においてプレイヤキャラクタを操作して遊ぶゲームにおけるゲーム処理を説明する。
【００７０】
図８は、本実施形態におけるゲームのゲーム画面の一例を示す図である。図８に示すように、本ゲームにおける仮想の３次元空間（ゲーム空間）には、地面オブジェクト５１および壁オブジェクト５２が配置される。地面オブジェクト５１および壁オブジェクト５２は、ゲーム空間内に固定して配置される地形オブジェクトである。なお、ゲーム空間における位置を表すためのｘｙｚ座標系（ワールド座標系）が定義されており、ここでは地面オブジェクト５１はｘｚ平面に平行に配置されている。また、壁オブジェクト５２はｘｙ平面に平行に配置されている。なお、図８では３次元空間における方向を示すためにｘｙｚ座標軸を記載しているが、実際には座標軸は表示されない。
【００７１】
ゲーム空間にはさらに、プレイヤの操作対象であるプレイヤオブジェクト５３が登場する。プレイヤオブジェクト５３は、コントローラ５に対する操作入力に従って、ゲーム空間を移動したり、ジャンプしたり、飛んだりすることができる。したがって、プレイヤオブジェクト５３は、ジャンプしたり飛んだりすることにより、地面オブジェクト５１および壁オブジェクト５２から離れて宙に浮いた状態となることがある。
【００７２】
また、本実施形態におけるゲームでは、ゲーム空間には重力方向が定義される。つまり、ゲーム装置３は、仮想的な重力を考慮してプレイヤオブジェクト５３によるジャンプ等の動作や他のオブジェクトの挙動を計算する。なお、本実施形態においては、重力方向は、常に一定ではなく、ゲームの状況に応じて変化するものとする。例えば、プレイヤオブジェクト５３がゲーム空間のある地点を通過したことによって、重力方向が９０°変化し、変化前に壁であった場所を歩けるようになったり、変化前の地面が壁となったりする。また、本実施形態においては、ゲーム空間における位置によって重力方向が異なる場合がある。例えば、地面オブジェクト５１は星のような大きな球体であってもよく、このとき、地面（球体の表面）での重力方向は球体の中心を向くように設定されてもよい。
【００７３】
以上に説明したようなゲームにおいて、プレイヤは、コントローラ５を用いて３次元空間内のプレイヤオブジェクト５３を操作し、ゴール地点に到達する、あるいは、特定の敵を倒す等の所定の課題を達成することを目的としてゲームを進行する。
【００７４】
上記のような３次元空間内でプレイヤオブジェクト５３が動作するゲームにおいて、プレイヤオブジェクト５３が例えばジャンプ中や飛行中であって宙に浮いた状態にある場合、プレイヤは、３次元空間におけるプレイヤオブジェクト５３の位置を正確に把握しづらい。つまり、宙に浮いた状態では、ｘｚ平面上におけるプレイヤオブジェクト５３の位置、および、ｘｙ平面上におけるプレイヤオブジェクト５３の位置がわかりづらい。プレイヤオブジェクト５３の正確な位置が把握できなければ、プレイヤは、プレイヤオブジェクト５３をどのように操作すべきか判断することができないので、プレイヤオブジェクト５３を正確に操作することができないおそれがある。
【００７５】
そこで、本実施形態では、ゲーム装置３は、プレイヤオブジェクト５３の３次元空間における位置をプレイヤが把握しやすくなるように、２方向にプレイヤオブジェクト５３の影を描画する。具体的には図８に示すように、ゲーム空間には第１の影５４および第２の影５５が描画される。
【００７６】
第１の影５４は、地面オブジェクト５１に対してプレイヤオブジェクト５３の位置を重力方向に投影した位置に描画される。地面オブジェクト５１上における第１の影５４の位置によって、プレイヤは、重力方向に垂直なｘｚ平面におけるプレイヤオブジェクト５３の位置を直感的に把握することができる。さらに、第１の影５４とプレイヤオブジェクト５３との距離によって、プレイヤは、地面オブジェクト５１からプレイヤオブジェクト５３までの距離を直感的に把握することができる。
【００７７】
第２の影５５は、壁オブジェクト５２に対してプレイヤオブジェクト５３の位置を重力方向に垂直な方向に投影した位置に描画される。ここでは、第２の影５５が投影される方向、すなわち、第２の影５５を描画するためにプレイヤオブジェクトを投影する方向を「投影方向」と呼ぶ。図８では、投影方向はｚ軸正方向であるとする。壁オブジェクト５２上における第２の影５５の位置によって、プレイヤは、投影方向に垂直なｘｙ平面におけるプレイヤオブジェクト５３の位置を直感的に把握することができる。さらに、第２の影５５とプレイヤオブジェクト５３との距離によって、プレイヤは、壁オブジェクト５２からプレイヤオブジェクト５３までの距離を直感的に把握することができる。
【００７８】
以上のように、本実施形態によれば、ゲーム装置３は、プレイヤオブジェクトの影として、異なる２方向に投影される２つの影を描く。これによって、３次元空間におけるプレイヤオブジェクトの立体的な位置を直感的にわかりやすくプレイヤに理解させることができる。なお、２つの影を投影する方向を略垂直な方向とすることによって、２つの影を投影する方向が近い場合に比べて、３次元空間におけるオブジェクトの位置をプレイヤに認識させやすくなる。
【００７９】
なお、本実施形態では、ゲーム装置３は、２つの影を常に描画するのではなく、ゲーム空間において予め設定される影描画エリア内にプレイヤオブジェクト５３が位置する場合のみ２つの影を描画する。そして、プレイヤオブジェクト５３が影描画エリアの外に位置する場合、第１の影のみを描画する。影描画エリアは、第２の影が投影される投影面となる地形オブジェクト（例えば図８に示す壁オブジェクト５２）が存在する場所に設定される。図８を例にとって説明すると、壁オブジェクト５２の前方に影描画エリアが設定され、壁オブジェクト５２の後方や側方には影描画エリアが設定されない。また、影描画エリアは、例えば、プレイヤオブジェクト５３が宙に浮いている場合のように、３次元空間における位置が特に把握しづらいことが想定される場所に設定されてもよい。例えば、プレイヤオブジェクト５３が所定の条件（アイテム取得）を満たした場合にのみ空を飛べるようになる場合、所定の条件を満たすことができる場所付近（アイテムがある場所の付近）に影描画エリアを設定してもよい。以上のように、ゲーム空間内に影描画エリアを設定することによって、第２の影が不要な場合には第２の影を描画する処理を省略することができるので、ゲーム装置３の処理負担を軽減することができる。例えば、影が投影される投影面となるオブジェクトがないために影を描画する処理が無駄になる場合や、第２の影がなくてもプレイヤオブジェクト５３の位置の把握が容易であると想定される場合等には、第２の影を描画する処理を省略することにより、ゲーム装置３の処理負担を軽減することができる。
【００８０】
なお、本実施形態では、第１の影と第２の影とは、表示形態が互いに異なるように描画される。具体的には、第１の影は、プレイヤオブジェクト５３の形状を地面オブジェクト５１に投影した形状となっているのに対して、第２の影は、円形（または楕円形）であり、各影の形状は異なっている。このように、２つの影の表示形態を変えることによって、プレイヤは２つの影を区別して認識することができる。これによって、プレイヤは、重力方向（第１の影が投影される方向）を明確に認識することができる。本ゲームのように、ゲーム状況に応じて重力方向が変化するゲームにとっては、２つの影の表示形態を異ならせることによって重力方向をプレイヤにわかりやすくすることは特に有効である。
【００８１】
（ゲーム処理の詳細）
以下、図９〜図１４を参照して、本実施形態におけるゲーム処理の詳細について説明する。図９は、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図９に示すように、メインメモリには、ゲームプログラム６０、操作データ６１、およびゲーム処理用データ６２等が記憶される。なお、メインメモリには、図９に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【００８２】
ゲームプログラム６０は、本実施形態に係る画像処理プログラムの一例であり、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。
【００８３】
操作データ６１は、コントローラ５からゲーム装置３へ送信されてくる操作データである。操作データ６１には、各操作ボタン３２ａ〜３２ｉに対する入力状態を示す操作ボタンデータ、上記撮像情報演算部３５によって算出されるマーカ座標を示すマーカ座標データ、および、加速度センサ３７によって検出される加速度ベクトルを示す加速度データが含まれる。上述したように、操作データはコントローラ５からゲーム装置３へ１／２００秒に１回の割合で送信されるので、メインメモリに記憶される操作データはこの割合で更新される。メインメモリには、最新の（最後に取得された）操作データのみが記憶されればよい。
【００８４】
ゲーム処理用データ６２は、後述するゲーム処理（図１２）において用いられるデータである。ゲーム処理用データ６２は、現在エリアデータ６３、オブジェクト位置データ６４、重力方向データ６５、第１交点位置データ６６、第２交点位置データ６７、第１影画像データ６８、および第２影画像データ６９を含む。
【００８５】
現在エリアデータ６３は、プレイヤオブジェクトが現在存在するフィールドに設定されている影描画エリアに関する影描画エリアデータを含むデータである。ここで、フィールドとは、地形オブジェクト等によって構成される１つのゲーム空間であり、本ゲームにおいては、複数のゲーム空間（フィールド）が用意されているものとする。また、影描画エリアデータとは、影描画エリアに関する各種情報を示すデータである。
【００８６】
図１０は、現在エリアデータの一例を示す図である。図１０に示すように、現在エリアデータに含まれる影描画エリアデータは、１つの影描画エリアに関するエリアＩＤ、フィールドＩＤ、エリア位置、エリアサイズ、投影方向、および最大距離の各情報を示すデータである。なお、図１０に示す現在エリアデータは、フィールドＩＤが“００１”であるフィールドに設定される影描画エリアに関する影描画エリアデータを含んでいる。本実施形態では、各フィールドに設定される各影描画エリアに関する影描画エリアデータは光ディスク４に記憶されている。プレイヤオブジェクトが存在するフィールドが変更されると、変更後のフィールドに設定される影描画エリアに関する影描画エリアデータが光ディスク４から読み出され、新たな現在エリアデータ６３としてメインメモリに記憶される。以下、影描画エリアデータにより示される各情報について説明する。
【００８７】
エリアＩＤは、影描画エリアを識別するための番号であり、影描画エリアに固有の番号である。また、フィールドＩＤは、影描画エリアが存在するフィールドを識別するための番号であり、フィールドに固有の番号である。
【００８８】
図１１は、ゲーム空間内に設定される影描画エリアの一例を示す図である。図１１はゲーム空間の一部を表しており、図１１では壁オブジェクト５２の前方に影描画エリア７１（図１１において太線の点線で示される領域）が設定されている。図１１に示されるように、本実施形態では、影描画エリアは直方体の領域であり、各辺がｘ軸、ｙ軸、およびｚ軸のいずれかと平行となるように設定される。
【００８９】
エリア位置は、影描画エリアが設定される位置であり、本実施形態では、直方体である影描画エリアの中心位置Ｐ（図１１参照）である。具体的には、エリア位置は、上記ワールド座標系の座標値によって表される。例えば図１１においては、エリアＩＤが“００１”である影描画エリアに対して“（３５０，５５０，２５０）”という座標値が関連付けられている。また、上記エリアサイズは、影描画エリアの大きさである。具体的には、エリアサイズは、直方体である影描画エリアの３辺の長さそれぞれの１／２の長さを表す。つまり、影描画エリアは、エリア位置により示される座標値を中心に、エリアサイズにより示される長さの幅を有する領域として特定される。例えば図１１においては、エリアＩＤが“００１”である影描画エリアに対して“（５００，８００，５００）”という３つの値が関連付けられている。したがって、エリアＩＤが“００１”である影描画エリアは、“（３５０，５５０，２５０）”を中心に、ｘ軸方向に５００，ｙ軸方向に８００、ｚ軸方向に５００の幅を有する領域、すなわち、“−１５０≦ｘ≦８５０，−２５０≦ｙ≦１３５０，−２５０≦ｚ≦７５０”で表される領域となる。以上のエリア位置およびエリアサイズの情報によって、ゲーム空間内における影描画エリアの範囲が特定される。
【００９０】
投影方向は、影描画エリアにおいて第２の影が投影される方向である。具体的には、この投影方向は、ゲーム空間内における方向を示すベクトル（図１１に示すベクトルＶ）として表される。本実施形態では、当該ベクトルを単位ベクトルとして表す。例えば、投影方向が図１１に示すベクトルＶの方向である場合、投影方向はｚ軸負方向、すなわち、（０，０，−１）と表される。また、図１０に示されるように、本実施形態では影描画エリア毎に投影方向が個別に設定されるので、ゲーム開発者は、第２の影が投影される方向を影描画エリア毎に自由に設定することが可能である。
【００９１】
最大距離は、第２の影が投影される最大の距離である。つまり、プレイヤオブジェクトから投影方向に向かって最大距離までの範囲内に、第２の影を描くオブジェクト（例えば壁オブジェクト）が存在する場合、第２の影が描画される。
【００９２】
図９の説明に戻り、オブジェクト位置データ６４は、ゲーム空間内におけるプレイヤオブジェクトの位置を示す。具体的には、当該位置は、上記ワールド座標系の座標値によって表される。プレイヤオブジェクトの位置は、プレイヤオブジェクトの所定部分の位置（例えば、体の中心の位置）に設定される。なお、ゲーム装置３は、プレイヤの操作性等を考慮して、プレイヤオブジェクトの位置を適宜変化させるようにしてもよい。例えば、プレイヤオブジェクトの外形形状が変形する場合には、外形形状に合わせてプレイヤオブジェクトの位置を適宜変更するようにしてもよい。より具体的には、例えばプレイヤオブジェクトが体を丸めて回転しながらジャンプしている場合には、プレイヤオブジェクトの外形形状が球体に近くなる。この場合、球体の中心付近の位置をプレイヤオブジェクトの位置としてオブジェクト位置データ６４を設定してもよい。
【００９３】
重力方向データ６５は、現時点においてプレイヤオブジェクトに加えられる（仮想の）重力の方向を示す。この重力の方向は、上記投影方向と同様、ゲーム空間内における方向を示す単位ベクトルとして表される。本実施形態では、第１の影は、プレイヤオブジェクトを重力方向に投影した位置に描画されるので、重力方向は、第１の影が投影される方向である。
【００９４】
第１交点位置データ６６は、第１の影の位置、すなわち、プレイヤオブジェクトから重力方向に延ばした直線と地形オブジェクトとの交点の位置を示す。第２交点位置データ６７は、第２の影の位置、すなわち、プレイヤオブジェクトから投影方向に延ばした直線と地形オブジェクトとの交点の位置を示す。
【００９５】
第１影画像データ６８は、第１の影の画像データである。本実施形態では、第１の影は、プレイヤオブジェクトの外形形状を重力方向に投影した形状であり、予め定められた色（例えば黒色）である。また、第２影画像データ６９は、第２の影の画像データである。本実施形態では、第２の影は、予め定められた形状であり、プレイヤオブジェクトから第２の影までの距離に基づいて決められる色（濃さ）である。第１の影および第２の影の画像の描画方法については後述する。
【００９６】
次に、ゲーム装置３において行われる処理の詳細を、図１２〜図１４を用いて説明する。図１２は、ゲーム装置３において実行される処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１２に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、図１２に示すゲーム処理は、ＣＰＵ１０およびＧＰＵ１１ｂの協働動作として行われる。以下では、プレイヤオブジェクトの影を生成して表示する処理を中心にゲーム処理を説明する。
【００９７】
まず、ステップＳ１において、ＣＰＵ１０は、ゲームに関する初期化処理を実行する。具体的には、ＣＰＵ１０は、プレイヤオブジェクト等のゲームキャラクタのデータ、および、予め定められたフィールド（ゲーム開始時にプレイヤオブジェクトが位置するフィールド）を構築するための地形オブジェクトのデータ等を光ディスク４から読み込む。そして、読み込んだデータを用いて当該フィールドの３次元空間を構築し、プレイヤオブジェクトや他のオブジェクトを当該フィールドの初期位置に配置する処理等を実行する。また、ステップＳ１においては、上記フィールドに設定される影描画エリアに関する影描画エリアデータが光ディスク４から読み込まれ、現在エリアデータ６３としてメインメモリに記憶される。
【００９８】
上記ステップＳ１の後、ステップＳ２〜Ｓ１４の処理ループが、ゲームが実行される間繰り返し実行される。なお、１回の当該処理ループは、１フレーム時間（例えば１／６０秒）に１回の割合で実行される。
【００９９】
ステップＳ２において、ＣＰＵ１０は操作データを取得する。すなわち、コントローラ５から送信されてくる操作データがゲーム装置３で受信され、メインメモリに記憶されるので、ＣＰＵ１０はメインメモリから操作データ６１を読み出す。ステップＳ２の後、ステップＳ３の処理が実行される。
【０１００】
ステップＳ３において、ＣＰＵ１０は、プレイヤオブジェクトが存在するフィールドが変更されたか否かを判定する。ここで、本ゲームでは、予め定められたゲーム条件が満たされた場合にフィールドが変更される。予め定められたゲーム条件が満たされた場合とは、例えば、他のフィールドに移動するための入り口にプレイヤオブジェクトが入った場合や、フィールドに存在する所定の敵オブジェクトを倒した場合や、プレイヤオブジェクトが所定のアイテムを取得した場合等である。ステップＳ３の判定結果が肯定である場合、ステップＳ４およびＳ５の処理が実行される。一方、ステップＳ３の判定結果が否定である場合、ステップＳ４およびＳ５の処理がスキップされて、後述するステップＳ６の処理が実行される。
【０１０１】
ステップＳ４において、ＣＰＵ１０は、変更後の新たなフィールドに設定される影描画エリアに関する影描画エリアデータを光ディスク４から読み出す。読み出された１以上の影描画エリアデータは、現在エリアデータ６３としてメインメモリに記憶される。また、ステップＳ４において、ＣＰＵ１０は、変更後の新たなフィールドを構築するための地形オブジェクトのデータ等を光ディスク４から読み出す。
【０１０２】
ステップＳ４の次のステップＳ５において、ＣＰＵ１０は、ステップＳ４で読み出された地形オブジェクトのデータ等を用いて、変更後の新たなフィールドを構築する。また、ステップＳ５においては、当該新たなフィールドに登場する各オブジェクト（プレイヤオブジェクトや敵オブジェクトを含む）が予め定められた所定位置に配置される。ステップＳ５の後、ステップＳ６の処理が実行される。
【０１０３】
ステップＳ６において、ＣＰＵ１０は、フィールド上のオブジェクトを動作させる。つまり、プレイヤによるコントローラ５に対する操作に従ってプレイヤオブジェクトを動作させたり、予め定められたアルゴリズムに従って敵オブジェクトを動作させたりする。プレイヤオブジェクトの動作は、具体的には、ステップＳ２で取得された操作データに基づいて決定される。また、このとき、ゲーム空間におけるプレイヤオブジェクトの位置が算出され、当該位置を示すデータがオブジェクト位置データ６４としてメインメモリに記憶される。ステップＳ６の後、ステップＳ７の処理が実行される。
【０１０４】
ステップＳ７において、ＣＰＵ１０は、プレイヤオブジェクトに加えられる仮想的な重力の方向を算出する。本実施形態では、重力方向はゲーム状況に基づいて決定される。例えば、重力方向はプレイヤオブジェクトの現在位置に基づいて決定される。すなわち、ゲーム空間の各位置とその位置における重力方向との対応は予め定められており、当該対応を示すデータが光ディスク４に記憶されている。ＣＰＵ１０は、当該対応を示すデータを参照して、プレイヤオブジェクトの現在位置に対応する重力方向を特定する。なお、プレイヤオブジェクトの現在位置は、メインメモリに記憶されているオブジェクト位置データ６４により示される。また、例えば、重力方向は、プレイヤオブジェクトがゲーム空間のある地点を通過したことによって変化したり、予め定められた所定のゲーム条件（例えば、プレイヤオブジェクトがあるアイテムを取得する等）が満たされた場合に変化したりするように決定されてもよい。ステップＳ７で算出された重力方向を示すデータは、重力方向データ６５としてメインメモリに記憶される。
【０１０５】
ステップＳ７の次のステップＳ８において、ＣＰＵ１０は、第１影描画処理を実行する。第１影描画処理は、重力方向に投影される影である第１の影を描画するための処理である。以下、図１３を参照して、第１影描画処理の詳細を説明する。
【０１０６】
図１３は、図１２に示す第１影描画処理（ステップＳ８）の流れを示すフローチャートである。第１影描画処理においては、まずステップＳ２１において、ＣＰＵ１０は、プレイヤオブジェクトの位置から重力方向を向く直線を算出する。すなわち、メインメモリに記憶されているオブジェクト位置データ６４および重力方向データ６５を参照し、オブジェクト位置データ６４により示される座標から、重力方向データ６５により示される方向に延びる直線（半直線）を算出する。ステップＳ２１の後、ステップＳ２２の処理が実行される。
【０１０７】
ステップＳ２２において、ＣＰＵ１０は、ステップＳ２１で算出された直線に接触する地形オブジェクトがあるか否かを判定する。すなわち、地形オブジェクトを構成するポリゴンのうちに上記直線に接触するものがあるか否かを判定する。ステップＳ２２の判定結果が肯定である場合、ステップＳ２３〜Ｓ２５の処理が実行される。一方、ステップＳ２２の判定結果が否定である場合、ＣＰＵ１０はステップＳ２３〜Ｓ２５の処理をスキップして第１影描画処理を終了する。
【０１０８】
ステップＳ２３において、ＣＰＵ１０は、ステップＳ２１で算出された直線と、それに接触する地形オブジェクトとの交点の位置を算出する。ステップＳ２３によって、第１の影が投影される位置が算出されたこととなる。算出された交点の位置を示すデータは、第１交点位置データ６６としてメインメモリに記憶される。
【０１０９】
ステップＳ２３の後に実行されるステップＳ２４およびＳ２５においては、地形オブジェクトに第１の影が付されたゲーム画像が生成される。ここで、ゲーム空間内のオブジェクトに影を付す方法はどのような方法であってもよいが、本実施形態ではテクスチャを用いて影を付す。以下、ステップＳ２４およびＳ２５の処理の詳細を説明する。
【０１１０】
ステップＳ２４において、ＣＰＵ１０は、第１の影の画像を生成する。第１の影の画像は、第１の影の形状および色（具体的には、黒色の濃さ）を決定することによって生成することができる。第１の影の形状は、プレイヤオブジェクトを重力方向に向かって投影面（地形オブジェクト）に投影した形状となるように算出される。つまり、第１の影の形状は、重力方向からプレイヤオブジェクトを見た場合の外形形状となる。また、本実施形態では、第１の影の色は予め定められている。ステップＳ２４で生成された第１の影の画像データは、第１影画像データ６８としてメインメモリに記憶される。
【０１１１】
なお、他の実施形態においては、上記ステップＳ２４においてＣＰＵ１０は、プレイヤオブジェクトから影が付される位置（ステップＳ２３で算出された交点の位置）までの距離に基づいて第１の影の表示形態を変化させるようにしてもよい。例えば、上記距離が長いほど第１の影の大きさが大きくなるようにしてもよいし、上記距離が長いほど第１の影の色の濃さが薄くなるようにしてもよい。これによれば、プレイヤは上記距離をより理解しやすくなるので、３次元空間におけるプレイヤオブジェクトの位置をより把握しやすくなる。
【０１１２】
ステップＳ２５において、ＣＰＵ１０は、ステップＳ２３で算出された交点の位置に第１の影を描画する。すなわち、地形オブジェクトの上記交点の位置に第１の影の画像を重ねて描画する。具体的には、まず、ＣＰＵ１０は、地形オブジェクトについては予め定められた地形オブジェクト用のテクスチャを用いて、ゲーム空間内のオブジェクト（地形オブジェクトおよびプレイヤオブジェクト等）を描画する。次に、ステップＳ２４で生成された第１の影の画像をテクスチャとして用いて地形オブジェクトを描画し、最初に描画された画像に重ねることで、影が付された画像を得る。上記ステップＳ２５の後、ＣＰＵ１０は第１影描画処理を終了する。
【０１１３】
なお、上記ステップＳ２５においては、ゲーム装置３は、地形オブジェクト用のテクスチャを用いて地形オブジェクトを描画した後、影の画像をテクスチャとして用いて当該地形オブジェクトを重ねて描画するようにした。ここで、地形オブジェクト上に影を付す処理はどのような処理であってもよく、上記ゲーム処理における方法に限定されない。例えば、他の実施形態においては、ゲーム装置３は、地形オブジェクトに影を付すために、当該地形オブジェクト用のテクスチャと影の画像とを合成する処理を行い、合成したテクスチャを用いて地形オブジェクトを描画するようにしてもよい。また、影の画像をテクスチャとして用いる方法に限らず、影用のポリゴンを地形オブジェクトの上に配置することによって地形オブジェクトの上に影を付すようにしてもよい。
【０１１４】
以上に説明した第１影描画処理では、第１の影は、プレイヤオブジェクトが影描画エリア内に存在するか否かにかかわらず常に表示される。また、第１の影は、プレイヤオブジェクトの形状を投影面である地形オブジェクトに投影させた形状である。つまり、第１の影は、３次元空間におけるプレイヤオブジェクトの位置を識別させる目的に加えて、ゲーム空間をより自然に表現する目的で表示されるものである。
【０１１５】
図１２の説明に戻り、ステップＳ８の次のステップＳ９において、ＣＰＵ１０は、現在のフィールド（プレイヤオブジェクトが現在存在しているフィールド）内に設定されている影描画エリアの全てについて第２影描画処理（後述するステップＳ１１）を実行したか否かを判定する。ステップＳ９の判定結果が肯定である場合、後述するステップＳ１２の処理が実行される。一方、ステップＳ９の判定結果が否定である場合、すなわち、第２影描画処理をまだ実行していない影描画エリアがある場合、ステップＳ１０の処理が実行される。
【０１１６】
ステップＳ１０において、ＣＰＵ１０は、今回のステップＳ２〜Ｓ１２の処理ループにおいて第２の影をすでに描画したか否かを判定する。ステップＳ１０の判定結果が肯定である場合、後述するステップＳ１２の処理が実行される。一方、ステップＳ１０の判定結果が否定である場合、すなわち、第２の影がまだ描画されていない場合、ステップＳ１１の処理が実行される。
【０１１７】
ステップＳ１１において、ＣＰＵ１０は、第２影描画処理を実行する。第２影描画処理は、投影方向に投影される影である第２の影を描画するための処理である。以下、図１４を参照して、第２影描画処理の詳細を説明する。
【０１１８】
図１４は、図１２に示す第２影描画処理（ステップＳ１１）の流れを示すフローチャートである。第２影描画処理においては、まずステップＳ３１において、ＣＰＵ１０は、現在のフィールドに設定されている影描画エリアのうちで、第２影描画処理をまだ実行していない影描画エリアを選択する。ステップＳ３１の後、ステップＳ３２の処理が実行される。
【０１１９】
ステップＳ３２において、ＣＰＵ１０は、ステップＳ３１で選択された影描画エリア内にプレイヤオブジェクトが存在するか否かを判定する。ステップＳ３２の判定は、現在エリアデータ６３に含まれる影描画エリアデータのうち、ステップＳ３１で選択された影描画エリアに関する影描画エリアデータと、オブジェクト位置データ６４とを参照することによって行われる。具体的には、ステップＳ３２の判定は、オブジェクト位置データ６４により示される座標値（ｐｘ，ｐｙ，ｐｚ）が次の式（１）を満たすか否かによって行われる。
ａｘ−ｓｘ≦ｐｘ≦ａｘ＋ｓｘ  かつ
ａｙ−ｓｙ≦ｐｙ≦ａｙ＋ｓｙ  かつ
ａｚ−ｓｚ≦ｐｚ≦ａｚ＋ｓｚ      …（１）
上式（１）においては、ステップＳ３１で選択された影描画エリアに関する影描画エリアデータにより示されるエリア位置を（ａｘ，ａｙ，ａｚ）とし、エリアサイズを（ｓｘ，ｓｙ，ｓｚ）としている。ステップＳ３２の判定結果が肯定である場合、ステップＳ３３の処理が実行される。一方、ステップＳ３２の判定結果が否定である場合、ＣＰＵ１０は第２影描画処理を終了する。この場合における第２影描画処理においては第２の影が描画されない。
【０１２０】
ステップＳ３３において、ＣＰＵ１０は、プレイヤオブジェクトの位置から投影方向を向く直線を算出する。この直線は、ステップＳ３１で選択された影描画エリアに関する影描画エリアデータと、オブジェクト位置データ６４とを用いて算出される。具体的には、ＣＰＵ１０は、オブジェクト位置データ６４により示される座標から上記影描画エリアデータにより示される投影方向に延びる直線（半直線）を算出する。ステップＳ３３の後、ステップＳ３４の処理が実行される。
【０１２１】
ステップＳ３４において、ＣＰＵ１０は、プレイヤオブジェクトの位置から最大距離内の範囲で、ステップＳ３３で算出された直線に接触する地形オブジェクトがあるか否かを判定する。すなわち、地形オブジェクトを構成するポリゴンのうちに上記範囲内で上記直線に接触するものがあるか否かを判定する。なお、上記最大距離は、ステップＳ３１で選択された影描画エリアに関する影描画エリアデータにより示される最大距離である。ステップＳ３４の判定結果が肯定である場合、ステップＳ３５〜Ｓ３８の処理が実行される。一方、ステップＳ３４の判定結果が否定である場合、ＣＰＵ１０はステップＳ３５〜Ｓ３８の処理をスキップして第２影描画処理を終了する。この場合における第２影描画処理においては第２の影が描画されない。
【０１２２】
ステップＳ３５において、ＣＰＵ１０は、ステップＳ３４で算出された直線と、それに接触する地形オブジェクトとの交点の位置を算出する。なお、上記最大距離内の範囲で、上記直線に接触する地形オブジェクトが複数ある場合には、最も距離が短い地形オブジェクトとの交点の位置を算出する。ステップＳ３５によって、第２の影が投影される位置が算出されたこととなる。算出された交点の位置を示すデータは、第２交点位置データ６７としてメインメモリに記憶される。ステップＳ３５の後、ステップＳ３６の処理が実行される。
【０１２３】
ステップＳ３６において、ＣＰＵ１０は、第２の影の色の濃さを算出する。この濃さは、プレイヤオブジェクトの位置から、ステップＳ３５で算出された交点までの距離に基づいて算出される。本実施形態において、第２の影は、予め定められた大きさの円形形状であり、第２の影の濃さは、円形内における黒色の画素の数Ｎとして表される。具体的には、黒色の画素数Ｎは、次の式（２）に従って算出される。
Ｎ＝Ｄｍａｘ−（Ｄｍａｘ−Ｄｍｉｎ）×Ｄｉｓ／Ｄｉｓｍａｘ  …（２）
上式（２）において、変数Ｄｉｓは、プレイヤオブジェクトの位置から上記交点までの距離である。また、定数Ｄｉｓｍａｘ、定数Ｄｍａｘ、および定数Ｄｍｉｎは、予め定められている。定数Ｄｍａｘは、上記距離が０の場合における黒色の画素数であり、定数Ｄｍｉｎは、上記距離が定数Ｄｉｓｍａｘ以上となる場合における黒色の画素数である。上式（２）に従って画素数Ｎを算出することにより、上記距離が小さいほど画素数Ｎが大きくなり、上記距離が大きくなるにつれて画素数Ｎが小さくなる。つまり、上記距離が小さいほど第２の影の色が濃くなり、上記距離が大きくなるにつれて第２の影の色が薄くなる。したがって、本実施形態によれば、プレイヤは、第２の影の濃さによってプレイヤオブジェクトから第２の影が投影される地形オブジェクトまでの距離を直感的に理解することができるので、ゲーム空間におけるプレイヤオブジェクトの位置をより把握しやすくなる。
【０１２４】
なお、上記ステップＳ３６においては、ＣＰＵ１０は、上記距離に基づいて第２の影の色の濃さを変化させることによって第２の影の表示形態を変化させるようにしたが、他の実施形態においては、第２の影の大きさを上記距離に基づいて変化させるようにしてもよい。例えば、上記距離が長いほど第１の影の大きさが大きくなるようにしてもよい。また、第２の影の大きさおよび濃さの両方を上記距離に基づいて変化させるようにしてもよい。
【０１２５】
ステップＳ３６の次のステップＳ３７において、ＣＰＵ１０は、第２の影の画像を生成する。具体的には、予め定められた大きさの略円形の画素領域内に、ステップＳ３６で算出された画素数Ｎの数だけ黒色の画素が存在する画像が生成される。なお、生成された画像において、黒色の画素以外の画素の色は透明である。ステップＳ３７で生成された第２の影の画像データは、第２影画像データ６９としてメインメモリに記憶される。
【０１２６】
ステップＳ３７の次のステップＳ３８において、ＣＰＵ１０は、ステップＳ３５で算出された交点の位置に第２の影を描画する。すなわち、地形オブジェクトの上記交点の位置に第２の影の画像を重ねて描画する。具体的には、ＣＰＵ１０は、地形オブジェクトの上記交点の位置に第２の影が付加されるように、予め定められている地形オブジェクト用のテクスチャと第２の影の画像とを合成する（重ね合わせる）。ステップＳ３８の後、ＣＰＵ１０は第２影描画処理を終了する。
【０１２７】
以上に説明した第２影描画処理では、第２の影は、プレイヤオブジェクトが影描画エリア内に存在する場合にのみ表示される。また、第２の影は、プレイヤオブジェクトの形状を投影面である地形オブジェクトに投影させた形状とは無関係であり、予め定められた形状である。第２の影は、３次元空間におけるプレイヤオブジェクトの位置を識別させる目的で表示されるものであるので、リアルな形状とするよりも、第１の影とは異なる形状とすることより第１の影と区別が容易な形状とする方が好ましいからである。また、予め定められた形状とすることによって、オブジェクトの形状を投影面に投影させた形状とする場合よりもゲーム装置３の処理負担を軽減することができる。
【０１２８】
図１２の説明に戻り、ステップＳ１２において、ＣＰＵ１０は、ゲーム画像を表示する。すなわち、ＣＰＵ１０は、ゲーム空間内に設定される仮想カメラからゲーム空間を見たときの画像が生成され、テレビ２の画面に表示される。このとき、ステップＳ２３（または、ステップＳ２３およびＳ３５）で算出された各交点の位置の地面オブジェクトについては、地面オブジェクト用のテクスチャに影画像が重ねられたテクスチャを用いて地面オブジェクトが描画されるので、当該交点の位置に影が付されたゲーム画像が生成される。
【０１２９】
ステップＳ１２の次のステップＳ１３において、ＣＰＵ１０は、ゲームを終了するか否かを判定する。ステップＳ１３の判定は、例えば、ゲームがクリアされたか否か、ゲームオーバーとなったか否か、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ１３の判定結果が否定である場合、ステップＳ２の処理が再度実行される。以降、ステップＳ１３でゲームを終了すると判定されるまで、ステップＳ２〜Ｓ１３の処理が繰り返し実行される。一方、ステップＳ１３の判定結果が肯定である場合、ＣＰＵ１０は、図１２に示すゲーム処理を終了する。以上で、ゲーム処理の説明を終了する。
【０１３０】
以上のように、上記ゲーム処理によれば、プレイヤオブジェクトが影描画エリア内に存在する場合、プレイヤオブジェクトから重力方向に向かった位置に第１の影が表示されるとともに、プレイヤオブジェクトから（重力方向とは異なる）投影方向に向かった位置に第２の影が表示される（図８参照）。これによって、３次元空間におけるプレイヤオブジェクトの位置をプレイヤに直感的に理解させることができる。
【０１３１】
なお、上記ゲーム処理においては、ステップＳ２３およびＳ３５において、直線とそれに接触する地形オブジェクトとの交点の位置を算出するようにした。ここで、他の実施形態では、地形オブジェクトに限らず、プレイヤオブジェクトに最も近い位置で直線と接するオブジェクトと当該直線との交点の位置を算出するようにしてもよい。そして、算出された交点の位置に影を付すようにしてもよい。
【０１３２】
また、上記ゲーム処理においては、ゲーム空間をより自然に見せるために、プレイヤオブジェクト以外の他のオブジェクト（例えば、壁オブジェクト５２）の影が表示されてもよい。例えば、ゲーム装置３は、上記ステップＳ６の後のタイミングで、上記他のオブジェクトについて影を描画するステップを実行するようにしてもよい。また、当該ステップは、第１影描画処理（ステップＳ８）において、他のオブジェクトについても第１の影を生成することによって実行されてもよい。なお、上記他のオブジェクトの影は、第１および第２の影とは異なる方法で生成されてもよく、影の生成方法が第１および第２の影の生成方法とは異なっていてもよいし、影が投影される方向が第１および第２の影が投影される方向とは異なっていてもよい。ただし、上記他のオブジェクトの影は、プレイヤオブジェクトの第１の影と同様、オブジェクトから重力方向に向かった位置に影が付されることが好ましい。なお、他のオブジェクトに影を付す場合であっても、当該他のオブジェクトには第２の影を付す必要はない。つまり、第２の影は、予め定められた所定のオブジェクト（上記実施形態では、プレイヤオブジェクト）のみに付すようにすればよい。このように、プレイヤオブジェクトについてはプレイヤに位置を把握させることを優先して、２方向に２つの影を描くとともに、他のオブジェクトについてはゲーム世界を自然に表現することを優先して、所定の方向に１つの影を描くようにしてもよい。
【０１３３】
なお、上記ゲーム処理では、２つの影を生成する対象となるオブジェクトをプレイヤオブジェクトとして説明したが、他の実施形態においては、予め定められた１以上の所定のオブジェクトについて２つの影を生成するようにしてもよい。例えば、プレイヤオブジェクトに加えて（または、プレイヤオブジェクトに代えて）敵オブジェクトについて第１および第２の影を生成して表示するようにしてもよい。また、複数のオブジェクトについて第１および第２の影を生成する場合であっても、当該複数のオブジェクト以外の他のオブジェクトについては第２の影を生成しないようにしてもよい。
【産業上の利用可能性】
【０１３４】
以上のように、本発明は、仮想の３次元空間におけるオブジェクトの位置をプレイヤに直感的に認識させること等を目的として、例えばゲームプログラムやゲーム装置等として利用することが可能である。
【符号の説明】
【０１３５】
１    ゲームシステム
２    テレビ
３    ゲーム装置
４    光ディスク
５    コントローラ
６    マーカ部
１０    ＣＰＵ
１１ｃ  ＧＰＵ
１１ｅ  内部メインメモリ
１２    外部メインメモリ
５１    地面オブジェクト
５２    壁オブジェクト
５３    プレイヤオブジェクト
５４    第１の影
５５    第２の影
７１    影描画エリア
【図１】
2014000438.tif 000003
【図２】
2014000438.tif 000004
【図３】
2014000438.tif 000005
【図４】
2014000438.tif 000006
【図５】
2014000438.tif 000007
【図６】
2014000438.tif 000008
【図７】
2014000438.tif 000009
【図８】
2014000438.tif 000010
【図９】
2014000438.tif 000011
【図１０】
2014000438.tif 000012
【図１１】
2014000438.tif 000013
【図１２】
2014000438.tif 000014
【図１３】
2014000438.tif 000015
【図１４】
2014000438.tif 000016