[第1実施例]
以下、この第1実施例の限定しない一例に係るゲームシステムについて説明する。この第1実施例におけるゲームシステム1の一例は、本体装置(情報処理装置;この第1実施例ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(図2参照)。以下では、この第1実施例のゲームシステム1のハードウェア構成について説明し、その後に、この第1実施例のゲームシステム1の制御について説明する。
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。図1および図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
図3は、本体装置2の一例を示す六面図である。図3に示すように、本体装置2は、略板状のハウジング11を備える。この第1実施例において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。この第1実施例においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。この第1実施例においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、図6に示すスピーカ88)を備えている。図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。この第1実施例において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、この第1実施例においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
図4は、左コントローラ3の一例を示す六面図である。図4に示すように、左コントローラ3は、ハウジング31を備える。この第1実施例においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、図1および図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
左コントローラ3は、アナログスティック32を備える。図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、この第1実施例においては、アナログスティック32を押下する入力が可能である。
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33~36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。さらに、左コントローラ3は、録画ボタン37および-(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上にLボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面のうち、本体装置2に装着される際に装着される側の面に、SLボタン43およびSRボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
図5は、右コントローラ4の一例を示す六面図である。図5に示すように、右コントローラ4は、ハウジング51を備える。この第1実施例においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。この第1実施例においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53~56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。さらに、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上にRボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、SLボタン65およびSRボタン66を備える。
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、図3に示す構成の他、図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
本体装置2は、スロットインターフェース(以下、「I/F」と略記する)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。この第1実施例においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、この第1実施例においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信(または、取得)する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信(または、取得)する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、この第1実施例においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、表示画像データや音声データ)を据置型モニタ等に出力することができる。
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、図6で示しているため図7では省略している。
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。この第1実施例においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判断することができる。
左コントローラ3は、電力供給部108を備える。この第1実施例において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、アナログスティック52を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
次に、図8-図26を参照して、この第1実施例のゲームシステム1において実行される仮想のゴルフゲームのゲーム処理についての概要を説明する。詳細な説明は省略するが、仮想のゴルフゲームでは、ユーザまたはプレイヤ(以下、単に「プレイヤ」という)は、単独でまたは他のプレイヤ(人間またはコンピュータのプレイヤ)とストロークプレイを行うことができる。ただし、マッチプレイなどの他のゴルフゲームもプレイすることができる。以下においては、プレイヤがプレイヤキャラクタを使用してゴルフゲームをプレイする場合について説明し、他のプレイヤについてはプレイヤと同様であるため、重複する説明は省略することにする。
この第1実施例では、ゴルフゲームのアプリケーションが実行されると、プレイするゴルフゲームの種類(たとえば、ストロークプレイまたはマッチプレイ)、プレイするゴルフコース、および、プレイヤが使用するキャラクタが複数のキャラクタの中から選択される。これらの選択が終了すると、プレイヤの操作に従って、または、自動的に、ゴルフゲームが開始される。
詳細な説明は省略するが、この第1実施例では、複数のキャラクタは、それぞれ、他のキャラクタとは外観が異なり、個別に、クラブ毎の最大飛距離が割り当てられている。
本体装置2は、画像処理装置としても機能し、ゲーム画像などの各種画面に対応する表示画像データを生成および出力(または、表示)する。プロセッサ81は、3次元の仮想空間に各種のオブジェクトおよびキャラクタを配置し、或る情景または場面を生成する。この情景または場面を仮想のカメラで撮影した(つまり、視点から見た)画像がゲーム画像としてディスプレイ12に表示される。
なお、この明細書においては、グリーン上においてゴルフボールを入れる穴を「カップ」と呼び、ゴルフコース内において、ティーイングエリアからグリーンまでのプレイする区域または領域(すなわち、キャラクタが移動可能な範囲)を「ホール」と呼ぶことにする。また、この明細書において、「カップイン」とは、ゴルフボールがカップに入ることを意味する。
ゴルフゲームが開始されると、選択されたゴルフコースの最初のホールにおけるティーイングエリアおよびそのティーイングエリアから見えるホールの一部の画像(背景画像)を含むゲーム画像がディスプレイ12に表示される。たとえば、ゴルフコースのうちの最初のホールがゲーム空間またはゲームフィールドに生成され、ティーイングエリアの後方の所定位置からプレイヤキャラクタがボールを打撃する方向を向くように仮想のカメラの位置および向きが設定される。ゲーム画像の限定しない一例として、図8に示すようなパラメータ決定画面300が表示装置(たとえば、ディスプレイ12)に表示される。
図8に示すように、パラメータ決定画面300には、プレイヤキャラクタ302が表示され、プレイヤキャラクタ302は、仮想のゴルフクラブ(以下、単に「クラブ」という)304を握っている。図8からも分かるように、プレイヤキャラクタ302は、アドレスした状態で表示され、ティーアップされた仮想のゴルフボール(以下、単に「ボール」という)306が所定の位置に配置されている。上述したように、パラメータ決定画面300には、背景画像308が表示される。図8に示す例では、背景画像308として、ティーイングエリア、左右のティマーカ、フェアウェイ、樹木、空および雲などの仮想のオブジェクトが表示されている。
また、図8では、パラメータ決定画面300のほぼ中心に仮想のピン310が表示される。さらに、ボール306の位置から仮想のピン310に向かって軌道予想画像312が表示される。この軌道予想画像312は、予め決定した打ち出し方向にボール306を打撃した場合のボール306の軌道を予想可能に示す画像であって、この第1実施例では、基準軌道の一部を可視化した帯状の画像である。この第1実施例では、基準軌道のうち、ボール306の現在位置から最高点に達するまでの部分が軌道予想画像312として表示される。ただし、軌道予想画像312を表示するための基準軌道は、予め決定した打ち出し方向にボール306を打撃した場合の理想の放物線であって、この第1実施例では、使用するクラブ304を用いて、100%の打撃力でボール306を打撃した場合の放物線である(図22参照)。理想の放物線とは、仮想空間において重力以外の影響を受けない場合の放物線という意味である。
また、図8に示すように、軌道予想画像312は、構成要素となる複数の四辺形の画像312aを含む。複数の四辺形の画像312aは、ボール306打ち出し方向に移動するようにアニメーションで表示される。たとえば、複数の四辺形の画像312aの各々は、ボール306の現在位置から最高点の位置に向けて移動し、最高点の位置まで移動すると、ボール306の現在位置から移動を移動開始し、プレイヤが後述する第2のパラメータ決定操作を開始するまで、移動を継続する。
この第1実施例では、軌道予想画像312は、基準軌道を用いた画像であるが、これに限定される必要はない。他の実施例では、軌道予想画像312は、ボール306が前方に直線的に移動する方向(以下、「正面方向」という)に延びる、所定の長さの帯状の画像であってもよい。この場合、軌道予想画像312の大きさおよび位置の少なくとも一方は、使用するクラブ304の情報およびプレイヤキャラクタ302の情報の少なくとも1つに基づいて設定または補正されてもよい。ただし、ボール306の正面方向とは、アドレス状態のプレイヤキャラクタ302の真横の方向のうちのボール306を移動させる方向である。具体的には、右打ちのプレイヤキャラクタ302では、ボール306の正面方向は左方向であり、左打ちのプレイヤキャラクタ302では、ボール306の正面方向は右方向である。
ただし、軌道予想画像312は、第2のパラメータ決定操作が開始されると、パラメータ決定画面300から消去(または、非表示)される。これは一例であり、軌道予想画像312はプレイヤキャラクタ302がボール306を打撃するまでの任意のタイミングで消去されてもよい。
四辺形の画像312aは、予想されるボール306の移動方向を示す。ボール306が基準軌道に沿って移動することが予想される場合には、画像312aは、縦長の長方形にされる。また、ボール306が曲がることが予想される場合には、四辺形の画像312aは、曲がる方向および曲がる大きさ(以下、これらを「曲がり情報」という)を示す。曲がり情報は、ボール306の現在位置の地面の傾斜および打ち出し方向に基づいて決定される。ボール306が曲がる方向は、一般的な現実のゴルフと同様であり、傾斜がつま先上がりである場合には、ボール306は左に曲がり、傾斜がつま先下がりである場合には、ボール306は右に曲がり、傾斜の大きさに連動して曲がる大きさは大きくなる。
ただし、ボール306の打ち出し方向は、ボール306の移動開始時の左右の方向と上下の方向を含む。ボール306の左右の打ち出し方向は、ボール106の現在位置とピン310(カップ)を結ぶ直線で予め決定される。ただし、ボール106の現在位置がピン310から遠い場合には、ボール306の左右の打ち出し方向は、ボール106の現在位置から近場のフェアウェイなどに設定される。ボール106の現在位置がピン310から遠い場合には、ボール106からピン310までの直線距離が長い場合のみならず、ドッグレッグホールのように、途中で曲がっているホールでは、ボール306からピン310までのホールの形状に沿った実測距離が長い場合が含まれる。また、ボール306の左右の打ち出し方向は、プレイヤによって設定(変更)可能である。ボール306の上下の打ち出し方向は、使用するクラブ304(具体的には、打ち出し角度)に応じて決定される。
図9はボール306が右に曲がることが予想される場合のパラメータ決定画面300の限定しない一例を示す。図9に示す例では、ボール306がつま先下がりの斜面上にある。このため、ボール306は右に曲がることが予想され、水平面に対する斜面の角度の大きさで曲がる大きさが決定される。
また、ボール306が右に曲がることが予想される場合には、画像312aは左上の角が右上の角よりも上方に突出した平行四辺形にされる。つまり、パラメータ決定画面300において、右側が下に下がった四辺形の画像312aを表示することにより、ボール306が右に曲がることが表現される。また、ボール306の曲がる大きさに応じて右上の角に対する左上の角の突出量が変化される。
図示は省略するが、ボール306がつま先上がりの斜面上にある場合には、ボール306が左に曲がることが予想され、画像312aは右上の角が左上の角よりも上方に突出した平行四辺形にされる。つまり、パラメータ決定画面300において、左側が下に下がった四辺形の画像312aを表示することにより、ボール306が左に曲がることが表現される。また、ボール306の曲がる大きさに応じて左上の角に対する右上の角の突出量が決定される。
上述したように、この第1実施例では、複数の画像312aはボール306の打ち出し方向に移動するようにアニメーションで表示される。このため、曲がる方向および曲がる大きさに応じた形状を有する複数の画像312aをアニメーション表示するためのデータが予め用意され、適宜使用される。ただし、アニメーション表示するためのデータは、予め用意せずに、表示の都度生成するようにしてもよい。
なお、この第1実施例では、複数の画像312aは、ボール306の移動方向に向けて移動するようにアニメーションで表示されるが、複数の画像312aは、ボール306の曲がる方向および曲がる大きさを表現した形状で表示されるため、静止したままでもよい。つまり、複数の画像312aは、移動しなくてもよい。
また、この第1実施例では、軌道予想画像312を構成する画像312aの形状で、ボール306が曲がる方向および曲がる大きさを表現するようにしてあるが、これに限定される必要はない。他の例では、画像312aを表示させる傾きで表現するようにしてもよい。かかる場合には、画像312aの左右方向の中心を通り、画像312aに平行な縦軸周りに、画像312aを、ボール306が曲がる方向に、曲がる大きさに応じて角度だけ回転される。
さらに、この第1実施例では、軌道予想画像312を複数の画像312aで構成し、画像312aの形状を変化させるようにしたが、単一の軌道予想画像312自体の形状または傾きによって、ボール306が曲がる方向および曲がる大きさを表現するようにしてもよい。たとえば、軌道予想画像312を縦長の1つの四角形で構成し、ボール306が曲がる方向および曲がる大きさに応じて、軌道予想画像312を捻る方向(または、傾ける方向)および捻る量(または、傾ける量)を変化させてもよい。
また、ボール306の移動方向が、基準軌道よりも上方または下方になることが予想される場合には、そのことを画像312aの色を変えることでプレイヤに報知することもできる。たとえば、ボール306の移動方向の高さが基準軌道から変化しないまたはほぼ変化しない場合には、画像312aは半透明の白色にされる。また、ボール306の移動方向の高さが基準軌道よりも上方になることが予想される場合には、画像312aは青色にされる。さらに、ボール306の移動方向の高さが基準軌道よりも下方になることが予想される場合には、画像312aは赤色にされる。また、ボール306の移動方向の高さが基準軌道よりも上方または下方になることが予想される場合には、高さの変化量に応じて青色または赤色の濃さ(つまり、彩度)を変化させるようにしてもよい。
ただし、ボール306の移動方向が基準軌道よりも上方または下方になることを画像312aの色の違いではなく、色の濃さまたは画像312aの形状の違いで表現してもよい。
上記のとおり、ボール306が曲がる方向は、一般的な現実のゴルフと同様であるため、プレイヤキャラクタ302が右打ちであれば、左足上がりの場合に、ボール306の移動方向の高さが基準軌道よりも高くなり、左足下がりの場合に、ボール306の移動方向の高さが基準軌道よりも低くなり、傾斜の大きさに連動して高さの変化が大きくなる。
このように、軌道予想画像312自体は直線的に表示され、ボール306の移動方向は、軌道予想画像312を構成する複数の画像312aの形状によって表現するので、移動後のボール306の軌道を予想する困難性を維持しつつ、画像312aの形状によって抽象的に曲がり情報を表現することでゲーム性を担保してある。つまり、ゴルフゲームに対する興趣を向上させることができる。
仮に、軌道予想画像312自体をボール306の予想軌道で長期間分表示した場合には、移動後のボール306の軌道を予想する興味が減退し、ゴルフゲームに対する興味が減退する虞がある。
ただし、軌道予想画像312をボール306の予想軌道に基づいて表示するようにしてもよい。この場合、軌道予想画像312として、予想軌道のうち、ボール306の打ち出し後の短時間(たとえば、水平到達距離までの時間の4分の1)分が表示される。上記のように、長期間分の予想軌道で軌道予想画像312を表現した場合には、移動後のボール306の軌道を予想する興味が減退するためである。つまり、軌道予想画像312を、短時間分の予想軌道で表現することにより、移動後にボール306の軌道が曲がる場合に、曲がる大きさの影響を受けるのを出来る限り少なくする。したがって、予想軌道で表現する場合にも、軌道予想画像312を直線的に表示することができる。ただし、かかる場合にも、曲がる方向および曲がる大きさに応じて、画像312aの形状を変化させることにより、移動後のボール306の軌道を予想する困難性を維持しつつ、画像312aの形状によって抽象的に曲がり情報を表現することでゲーム性が担保される。
また、図9に示すパラメータ決定画面300では、移動ゲージ320がボール306の曲がり情報に応じて変形される。移動ゲージ320の詳細については後述する。上述したように、図9に示す場合には、ボール306は右に曲がることが予想されるため、移動ゲージ320も右に曲げられている。移動ゲージ320を曲げる度合は、ボール306が曲がる大きさが大きいほど大きくされる。つまり、移動ゲージ320を曲げる方向および曲げる大きさも、ボール306の現在位置の傾斜および打ち出し方向に基づいて決定される。
このように、移動ゲージ320もボール306の現在位置の傾斜および打ち出し方向に基づいて曲げるため、移動ゲージ320が曲がっている方向と曲がっている大きさによって直感的にボール306の移動方向を知ることができる。したがって、移動後のボール306の軌道を予想する困難性を維持しつつ、移動ゲージ320の形状によって抽象的に曲がり情報を表現することでゲーム性を担保してある。つまり、ゴルフゲームに対する興趣を向上させることができる。
ただし、上述したように、軌道予想画像312では、軌道予想画像312自体は直線的に表示され、ボール306の移動方向は、軌道予想画像312を構成する複数の画像312aの形状によって表現するので、移動ゲージ320は変形しないようにしてもよい。また、移動ゲージ320を変形させて、複数の画像312aの形状を変形させないようにしてもよい。
また、図8および図9からも分かるように、パラメータ決定画面300の右下の角部には、プレイヤキャラクタ302が打撃に使用するクラブ304の種類を表示するための表示領域314が設けられる。パラメータ決定画面300において、クラブ304の種類が変更されると、プレイヤキャラクタ302が握っているクラブ304の画像が変更後の種類のクラブ304の画像に変更される。このとき、表示領域314に表示されるクラブ304の種類も変更される。この第1実施例では、Lボタン38またはRボタン60を押下することにより、クラブ304の種類を変更することができる。Lボタン38が押下されると、現在のクラブ304よりも長いクラブ304に変更され、Rボタン60が押下されると、現在のクラブ304よりも短いクラブ304に変更される。クラブ304の種類に応じて、100%の打撃力でボール306を打撃した場合のボール306の飛距離が決定される。ただし、飛距離はプレイヤキャラクタ302の種類に応じて変えてもよい。
また、表示領域314の上方には、星形の能力ゲージ316が表示される。能力ゲージ316は、使用するクラブ304の能力を上げることができるかどうかを決定するためのパラメータ(以下、「能力上昇パラメータ」という)の大きさ(または、蓄積量)を表示するものである。能力上昇パラメータが蓄積されると、蓄積量に応じて、星形の能力ゲージ316内の色が変化する。能力ゲージ316が一杯になると、すなわち、能力上昇パラメータが最大値(たとえば、100)に達すると、プレイヤの操作に応じて、使用するクラブ304の能力を上げることができる。たとえば、プレイヤがYボタン56を押下することにより、クラブ304の能力を上昇させることが選択される。再度Yボタン56を押下するか、Bボタン54を押下することにより、クラブ304の能力を上昇させることをキャンセルすることができる。また、クラブ304の能力を上げた状態で、プレイヤキャラクタ302がボール306を打撃すると、能力上昇パラメータは最小値(たとえば、0)にされる。
この第1実施例では、所定の条件を満たすと、能力上昇パラメータが蓄積される。一例として、所定の条件は、最大値(100%)の75%未満の打撃力でボール306を打撃したことである。他の実施例では、所定の条件は、所定のアイテムを取得または使用したこと、または/および、所定のノルマを達成したことでもよい。能力上昇パラメータの蓄積量は、固定値でもよいし、可変値でもよい。たとえば、打撃力が75%未満であれば、所定の蓄積量(たとえば、20)が能力上昇パラメータに加算される。ただし、蓄積量は、打撃力が75%から小さくなるにつれて増大されてもよい。
クラブ304の種類の変更およびクラブ304の能力の上昇、すなわち、ボール306の移動に関する一部のパラメータ(以下、「第1のパラメータ」という)を決定する操作(以下、「第1のパラメータ決定操作」という)は、移動ゲージ320を用いたボール306の移動に関する第2のパラメータ(以下、「第2のパラメータ」という)を決定する操作(以下、「第2のパラメータ決定操作」という)の前に行われる。また、詳細な説明は省略するが、第2のパラメータ決定操作の前に行われる。また、詳細な説明は省略するが、第2のパラメータ決定操作の前においては、クラブ304の選択および能力を上昇させるかどうかの選択のみならず、プレイヤの操作に応じて、ボール306の左右の打ち出し方向、すなわち、ボール306の移動開始時における左右の方向を変更することができる。この左右の打ち出し方向も上記のボール306の移動に関する第1のパラメータである。たとえば、ボール306の左右の打ち出し方向は、アナログスティック32を左または右に傾倒させることにより変更することができる。
さらに、パラメータ決定画面300の中央から右寄りであり、表示領域314および能力ゲージ316の左側には、ボール306の移動に関する第2のパラメータを決定するための移動ゲージ320が表示される。この第1実施例では、ボール306の移動に関する第2のパラメータは、ボール306の打撃力、ボール306の軌道の変化およびボール306の軌道のぶれである。
この第1実施例では、軌道の変化は、基準軌道に対する上下および左右への変化の方向と変化量(または、変化の強さ)を意味する。上述したように、基準軌道は、使用するクラブ304の種類(具体的には、上下方向の打ち出し角度)および打撃力(具体的には、ボール306の初速度)によって決定される放物線を意味する。また、この第1実施例では、軌道のぶれは、ボール306の打ち出し方向のぶれの方向(この第1実施例では、左右の方向)とぶれ量を意味する。
放物線は斜方投射の一般的な物理計算で数1に従って算出することができる。また、時間tにおけるボール306の位置は数2に従って算出することができる。ただし、仮想のゲーム空間には、所定の重力加速度gが設定されているものとする。また、θはボール306の上下方向の打ち出し角度であり、v0はボール306の初速度である。ボール306の上下方向の打ち出し角度θは、クラブ304毎に予め設定されている。さらに、ボール306の初速度v0は、打撃力と使用するクラブ304の最大飛距離に応じて設定される。また、tは時間(フレーム)である。フレームは、画面更新の単位時間であり、たとえば、1/60秒である。
また、基準軌道を算出する場合には、ローカル座標が設定される。具体的には、ボール106の現在位置が基準(原点)に設定され、ボール106の現在位置から仮想の着弾点に向かって水平に延びる軸がx軸に設定され、このx軸に垂直であり、仮想空間の高さ方向に延びる軸がy軸に設定される。さらに、x軸とy軸の両方に垂直なz軸が設定される。また、ボール106の現在位置から仮想の着弾点に向かって水平に延びる方向がx軸のプラス方向に設定され、仮想空間の上方に向かう方向がy軸のプラス方向に設定され、x軸のプラス方向を見た場合の右方に向かう方向がz軸のプラス方向に設定される。
ただし、基準軌道を算出する場合には、地形(または、地面)に傾斜が無いものとする。したがって、ゲーム空間内において、ボール306の現在位置から、この現在位置における高さと同じ高さになる位置(すなわち、水平到達距離における位置)までの放物線が基準軌道として算出される。
[数1]
基準軌道 y=tanθ・x-(gx2)/(2v0
2cos2θ)
[数2]
なお、この第1実施例では、基準軌道は一般的な物理計算で算出される放物線であるが、仮想空間における空気抵抗およびボールスピンに伴う揚力の影響も加味したシミュレーション処理に基づいて求めるようにしてもよい。
位置 x=v0cosθ・t y=v0sinθ-(gt2)/2
ここで、移動ゲージ320について詳しく説明する。図8に示したように、移動ゲージ320は、縦長の棒状(または、帯状)に形成された長方形の領域(以下、「基本領域」という)322を含み、基本領域322は4つの区間(または、領域)に分割されている。この第1実施例では、分割された4つの区間を、パラメータ決定画面300において下から順に、第1操作区間322a、第2操作区間322b、第3操作区間322cおよび第4操作区間322dと呼ぶことにする。移動ゲージ320は、一例として、白色の線で表示され、第2のパラメータ決定操作の前において、基本領域322内は黒色にされる。
また、移動ゲージ320は、基本領域322の外側に、大きさおよび形状が可変的に設定される領域(以下、「リスク領域」という)324を含む。詳細は後述するが、リスク領域324は、基本領域322の範囲を超えて、ボール306の左または右への方向のぶれを決定するための領域である。このリスク領域324は、使用するクラブ304およびライの状態に基づいて可変的に大きさおよび形状が決定される。簡単に説明すると、一般的な現実のゴルフの場合と同様に、打撃の難易度が高くなると、リスク領域324の大きさが大きくされる。つまり、使用するクラブ304が同じ場合には、ライの状態に応じて、移動ゲージ320の全体の大きさに対するリスク領域324の大きさが異なる。また、一例として、リスク領域324内は赤色にされる。図8に示す例では、リスク領域324は三角形の形状であり、移動ゲージ320の上端に向かうに従って左右の幅が次第に大きくされる。したがって、移動距離が長くなるにつれて、ぶれが大きくなる可能性が高く、ボール306の到達点が拡散するイメージとなり、移動距離が長くなるほど、ぶれるまたはぶれが大きくなることを直感的に認識することができる。
この第1実施例では、リスク領域324を分かり易く示すために、基本領域322とリスク領域324を色分けして示してあるが、これらは色分けせずに一体的に示されてもよい。たとえば、基本領域322の一部が変形して左右の方向に広がることにより、リスク領域324が形成されてもよい。
また、移動ゲージ320の基本領域322内には、基準軌道でボール306が移動した場合に、ボール306の現在位置から水平到達距離の位置までの間に存在する、グリーン、ピン310、バンカー、ウォーターハザードおよびラフのような所定のオブジェクト(以下、「表示対象オブジェクト」という)に対応する画像(以下、「対象画像」という)3220が表示される。
ただし、対象画像3220は、ボール306との距離(または、位置関係)が分かるように、基本領域322において、ボール306の現在位置から表示対象オブジェクトまでの直線距離に対応する位置に表示される。
直線距離に対応する位置は、移動ゲージ320の長さが、100%の打撃力で選択中のクラブ304を用いてボール306を打撃した場合のボール306の水平到達距離に相当すると仮定した場合に、移動ゲージ320の下端からその直線距離に相当する長さだけ離れた位置を意味する。
したがって、パラメータ決定画面300を表示(または、更新)する場合には、ボール306の現在位置から水平到達距離の位置までの間に存在する表示対象オブジェクトの有無が検出されるとともに、表示対象オブジェクトまでの直線距離が検出される。
図10は対象画像3220を含むパラメータ決定画面300の一例を示す。図10に示すパラメータ決定画面300では、基本領域322の第4操作区間322dに、グリーンおよびピン310のそれぞれについての対象画像3220が表示される。ただし、グリーンについての対象画像3220は四角形に縦縞模様を付して示してあり、グリーン上に重なってピン310についての対象画像3220が表示されている。図示は省略するが、グリーンの一部が表示され、そのグリーンの一部にピン310が立っていない場合には、ピン310についての対象画像3220は表示されない。以下、これらのことについて同様である。
図11(A)および図11(B)は、移動ゲージ320の限定しない他の例を示す。図11(A)に示す例では、基本領域322の第4操作区間322dにおいて、グリーンおよびピン310のそれぞれについての対象画像3220が表示されるとともに、グリーンの手前のバンカーについての対象画像3220が表示される。図11(A)では、バンカーについての対象画像3220は、四角形に複数の点をランダムに付して示してある。
図11(B)に示す例では、基本領域322の第4操作区間322dにおいて、グリーンおよびピン310のそれぞれについての対象画像3220が表示されるとともに、グリーンの手前であり第3操作区間322cにおいて、ラフについての対象画像3220が表示される。図11(B)では、ラフについての対象画像3220は、四角形に4つのWの文字を付して示してある。
この第1実施例では、対象画像3220は、第2のパラメータ決定操作が開始されると、消去(または、非表示)される。ただし、これは一例であり、打撃力が決定されたときに消去されてもよい。
上述したように、移動ゲージ320の長さが、100%の打撃力で選択中のクラブ304を用いてボール306を打撃した場合のボール306の水平到達距離に相当すると仮定するため、後述するように、打撃力を決定する際に、対象画像3220が表示されていた位置を考慮することができる。また、クラブ304の種類によって水平到達距離が変化するため、対象画像3220の表示/非表示が変化したり、対象画像3220が表示される位置が変化したりするため、使用するクラブ304を選択する際の判断材料になる。つまり、使い勝手の良い移動ゲージ320を提供することができる。このことは、移動ゲージ320にリスク領域324が設けられなくても同様のことが言える。
さらに、図8-図10に示すパラメータ決定画面300では、移動ゲージ320は平面的に表示(以下、「2D表示」という)されるが、所定のボタン(この第1実施例では、ZRボタン61)が押下されると、立体的に表示(以下、「3D表示」という)される。ただし、移動ゲージ320が3D表示されている場合に、所定のボタン(この第1実施例では、ZLボタン39)が押下されると、2D表示に戻される。プレイヤは、移動ゲージ320を2D表示するか3D表示するかを選択することができる。
図12は移動ゲージ320を3D表示した場合のパラメータ決定画面300の限定しない一例を示す。図13は移動ゲージ320を3D表示した場合のパラメータ決定画面300の限定しない他の例を示す。
図12に示すように、移動ゲージ320を3D表示する場合には、移動ゲージ320は斜めに表示され、移動ゲージ320を中心に補助枠350が表示される。補助枠350は、ボール306の現在位置を基準として、左右に数十メートルの範囲および上下に数十メートルの範囲を規定し、操作区間322a-322d毎に区切られている。ただし、補助枠350のうち、移動ゲージ320の下端の中央と重なる位置がボール306の現在位置に相当する。また、図12に示す例では、移動ゲージ320を基準として、補助枠350の下側の部分は、操作区間322a-322d毎に区切られた直方体の形状で示される。一方、移動ゲージ320を基準として、補助枠350の上側の部分は、移動ゲージ320の上端側の面と、この面に垂直な右側の面のみを示してある。図12および図13に示すパラメータ決定画面300では、補助枠350で示される左右の範囲は、上下の範囲よりも大きく設定されているが、これは一例であり、限定される必要はない。
また、補助枠350を構成する右側の端面上には、ボール306の正面方向における、地面オブジェクト、地上に配置されたオブジェクト(以下、「地上オブジェクト」という)、空中に配置されたオブジェクト(以下、「空中オブジェクト」という)の高さの変化を示す折れ線(つまり、高さ情報)352が表示される。ただし、折れ線352が表示されるのは、ボール306の現在位置から水平到達距離の位置までの直線上の範囲である。このように、移動ゲージ320に沿って折れ線352が表示される。また、ボール306の正面方向における地面オブジェクト、地上オブジェクトおよび空中オブジェクトは、ボール306が移動する場合の移動の障害になるオブジェクト(すなわち、障害オブジェクト)である。
この第1実施例では、ボール306の現在位置から水平到達距離の位置までの直線に平行な仮想の直線を、3次元のゲーム空間において地上および空中に配置されるオブジェクトよりも高い位置に設ける。たとえば、仮想の直線は、3次元のゲーム空間において、100mの高さに設定される。この仮想の直線から鉛直方向に下ろした線オブジェクトが、最初に、地面オブジェクト、地上オブジェクトまたは空中オブジェクトを構成するポリゴンに当たった位置をその地点における高さに決定する。これを仮想空間における数センチから数十センチ毎の間隔で行うことにより、ボール306の現在位置から水平到達距離の位置までの高さの変化が検出される。ただし、線オブジェクトは、地上オブジェクトまたは空中オブジェクトをすり抜けないように、一定の太さを持った円柱形状またはカプセル形状のオブジェクトである。また、高さを検出する場合には、仮想の直線および線オブジェクトは描画される必要はなく、計算処理のみが実行される。
上述したように、プレイヤの操作によって打ち出し方向は変更されるため、打ち出し方向が変化されると、高さを検出する処理が実行され、パラメータ決定画面300においては、プレイヤキャラクタ302から見た背景画像308が変化されるとともに、高さを検出する処理の結果に応じて折れ線352も変化される。また、ボール306が斜面に在る場合には、上述したように、軌道予想画像312内の複数の画像312aの形状および移動ゲージ320の形状も変化される。
図13は、図12に示す状態から打ち出し方向を左に約30度回転した場合のパラメータ決定画面300の限定しない一例を示す。図13に示すように、打ち出し方向には、樹木のオブジェクトが配置される。また、上述したように、高さを検出する処理が実行され、折れ線352が変化される。折れ線352が、移動ゲージ320の面に対して上方に突出する部分が、打ち出し方向に配置される樹木のオブジェクトの高さを示す。
このように、移動ゲージ320を3D表示した場合には、打ち出し方向における高さの情報を知ることができる。また、補助枠350は操作区間322a-322d毎に区切られているため、折れ線352の変化を操作区間322a-322d毎に知ることができ、後述する方向入力を行う場合の目安にすることができる。
続いて、第2のパラメータ決定操作を説明するとともに、ボール306の移動について説明する。ただし、図14以降では、移動ゲージ320を2D表示した場合について説明するが、移動ゲージ320を3D表示した場合も、同様に、パラメータ決定画面300が変化される。
なお、この第1実施例では、移動ゲージ320に沿って折れ線352を表示するようにしたが、移動ゲージ320に厚みを設けて表示し、その断面または側面に折れ線352を表示するようにしてもよい。
また、折れ線352は一例であり、数センチまたは数十センチ毎に、棒グラフで高さ情報を表現してもよい。
図8等に示すパラメータ決定画面300において、第2のパラメータ決定操作の開始の指示が有ると、この第1実施例では、Aボタン53が押下されると、第1指標画像326が初期位置(すなわち、移動ゲージ320の下端)から一端(すなわち、移動ゲージ320の上端)に向けて移動を開始する。第1指標画像326は、打撃力を決定するための指標であり、移動速度V1で移動する。
図14に示すように、第1指標画像326が移動すると、移動ゲージ320内の第1指標画像326が移動した部分の色が変化される。一例として、第1指標画像326が移動ゲージ320内を移動すると、移動した部分の色が黄色に変化される。この第1実施例では、基本領域322の色は変化されるが、リスク領域324の色は変化されない。したがって、基本領域322とリスク領域324の識別性または視認性が向上される。ただし、第1指標画像326は、移動ゲージ320内を移動されるため、リスク領域324が設けられる部分においては横幅が長くされる。
なお、この第1実施例では、第1指標画像326が移動した部分の色を変化するようにしたが、第1指標画像326の移動に代えて、移動ゲージ320内の色が、移動ゲージ320の下端から上端に向けて次第に変化されてもよい。この場合、色が変化される速度が移動速度V1である。
打撃力は、第1指標画像326を停止させた位置に応じて決定され、最小値(0%)よりも大きく、最大値(100%)以下で決定される。ただし、第1指標画像326が移動ゲージ320の下端に位置する場合に、打撃力は最小であり、第1指標画像326が移動ゲージ320の上端に位置する場合に、打撃力は最大である。第1指標画像326は、停止の指示が有ると、この第1実施例では、Aボタン53が押下されると、移動を停止する。打撃力は、移動ゲージ320の全長に対する、移動ゲージ320の下端から停止した第1指標画像326までの長さの割合で決定される。厳密には、第1指標画像326は、移動ゲージ320の下端から上端に向かうに従って、各操作区間322a-322dの変形に応じて次第に斜めに傾くため、打撃力は、移動ゲージ320の下端から第1指標画像326の中心の位置までの長さで決定される。つまり、第1指標画像326が移動ゲージ320の上端に近い程、打撃力は大きくなる。上述したように、打撃力に基づいてボール306の初速度v0は決定されるため、第1指標画像326が移動ゲージ320の上端に近い程、ボール306の移動距離が長くなる。
第1指標画像326は、停止の指示が無い場合には、移動ゲージ320の上端まで到達すると、移動方向を反転して、移動ゲージ320の下端に向けて移動する。第1指標画像326が移動ゲージ320の下端まで到達すると、第1指標画像326は移動を停止し、第2のパラメータ決定操作のやり直し、または、ミスショットまたは空振りとなる。
なお、第1指標画像326が移動ゲージ320の下端に向けて移動している場合にも、プレイヤは第1指標画像326の移動を停止させることができる。
また、他の実施例では、第1指標画像326は、移動ゲージ320の上端まで到達すると、再び、下端から上端に向けて移動するようにしてもよい。
図15は第1指標画像326の移動が停止された場合の限定しない一例のパラメータ決定画面300を示す。図15に示すように、第1指標画像326は、第4操作区間322dの中央から上端寄りの位置で停止している。第1指標画像326が停止すると、第2指標画像330が移動ゲージ320の下端から上端に向けて移動速度V2で移動を開始する。第2指標画像330は、ボール306の軌道を変化させる方向および変化させる大きさ(すなわち、変化量)を入力可能な所定期間(以下、「方向入力期間」という)およびボール306の軌道を変化させる部分(または、区間)を示す指標である。一例として、移動速度V2は、移動速度V1と同じであるが、異なる速度でもよい。
第2指標画像330は、移動ゲージ320の下端から、停止した第1指標画像326の位置まで移動する。この期間が方向入力期間である。したがって、第1指標画像326が操作区間322a、322b、322cまたは322dの途中で停止された場合には、この第1指標画像326が同じ操作区間322a、322b、322cまたは322dの終端で停止された場合に比べて、方向入力期間が短くされる。プレイヤは、第1指標画像326の移動を停止することにより打撃力を指定すると、方向入力期間において、経時的に方向入力を行うことができる。この経時的な方向入力によって、打撃した後のボール306の軌道を、基準軌道から変化させることができる。つまり、経時的な方向入力を経時的に軌道に反映させながらボール306を移動させることができる。上記のように、第2指標画像330は、移動速度V2で移動するため、方向入力期間は、第1指標画像326の位置に応じて可変的に設定される。
したがって、プレイヤは、打撃力のみならず、方向入力期間を考慮して第1指標画像326を停止させるのでゲームの興趣および戦略性が向上する。
ただし、経時的な方向入力は、方向入力期間において検出される方向入力であり、この方向入力期間において、プレイヤが常に方向入力を行っているとは限らない。
プレイヤは、アナログスティック32を傾倒することにより、方向入力を行うことができる。アナログスティック32は360度の方向に傾倒することが可能であり、したがって、360度の方向入力が可能である。また、アナログスティック32を傾倒させる角度の大きさ、すなわち傾倒量に応じて、傾倒させた方向(以下、「傾倒方向」という)にボール306の軌道を変化させる大きさ(または、強さ)が決定される。つまり、プレイヤはボール306の軌道を変化させる方向のみならず、変化の度合いも決定することができる。したがって、方向入力自体に興味を持たせることができる。
図16は第2指標画像330が移動中である場合の限定しない一例のパラメータ決定画面300を示す。図16に示すように、第2指標画像330が移動すると、移動ゲージ320内の第2指標画像330が移動した部分の色がオレンジ色に変化される。ただし、リスク領域324の色は変化されない。また、図16では、第1指標画像326が移動したことにより変化された色と、第2指標画像330が移動したことにより変化された色を分かり易く示すために、図14および図15に示したパラメータ決定画面300とは、斜線の向きと隣接する斜線間の幅を変えてあり、さらに、第1指標画像326が移動したことにより変化された色を示す斜線は省略してある。また、第2指標画像330の移動に代えて、移動ゲージ320内の色が、移動ゲージ320の下端から、停止した第1指標画像326の位置まで次第に変化されてもよい。この場合、色が変化される速度が移動速度V2である。
また、図16に示すように、第1操作区間322aの中央には、方向入力を示す画像(以下、「矢印画像」という)332が表示される。矢印画像332は、表示される操作区間322a、322b、322cまたは322dにおいて、フレーム毎に検出された複数の方向入力を、1つにまとめた方向入力(以下、「区間方向入力」という)を示す画像である。上述したように、方向入力は、アナログスティック32を上下および左右のそれぞれに傾倒した傾倒量であり、したがって、区間方向入力は、上下および左右の入力値がそれぞれで加算された1つの2次元ベクトルである。つまり、操作区間322a-322dの各々において、フレーム毎に検出された複数の方向入力の平均値が区間方向入力として算出される。
この第1実施例では、矢印画像332は、複数の方向入力をまとめた1つの区間方向入力を示す画像であるため、検出した方向入力よりも少ない数の区間方向入力が表示される。したがって、区間方向入力が分かり易い。
矢印画像332が表示されるタイミングは、一例として、所定数(たとえば、10-12)の方向入力が検出されたタイミングである。したがって、所定数の方向入力が検出されると、区間方向入力が算出され、区間入力方向を示す矢印画像332が対応する操作区間322a、322b、322cまたは322dに表示される。したがって、第2指標画像330が操作区間322a、322b、322cまたは322dの途中を移動中であっても、所定数の方向入力が検出された時点において、区間方向入力が算出され、算出された区間方向入力を示す矢印画像332が当該操作区間322a、322b、322cまたは322dに表示される。
他の例では、第2指標画像330が操作区間322a、322b、322cまたは322dの中央に到達したときに、区間方向入力が算出され、算出された区間方向入力を示す矢印画像332が当該操作区間322a、322b、322cまたは322dに表示されるようにしてもよい。
ただし、いずれの場合であっても、最終的には、操作区間322a、322b、322cまたは322dにおいて検出されたすべての方向入力から算出された区間方向入力に対応する矢印画像332が当該操作区間322a、322b、322cまたは322dに表示される。つまり、第2指標画像330が移動中の操作区間322a、322b、322cまたは322dにおいて途中で表示された矢印画像332は、第2指標画像330が当該操作区間322a、322b、322cまたは322dの終端まで移動したときに更新される。
したがって、第2指標画像330が操作区間322a、322b、322cまたは322dの移動中に表示された矢印画像332を見て、この矢印画像332が示す区間方向入力が所望の方向および大きさ(または、強さ)でない場合には、区間方向入力が所望の方向および大きさになるように、方向入力を修正することができる。このため、矢印画像332は、単に区間方向入力を示すだけでなく、区間方向入力を修正するための指標とも言える。
この第1実施例では、方向入力の傾倒量に応じて、ボール306の軌道を変化させる強さが異なり、その強さが分かるように、矢印画像332を表示または非表示するとともに、強さの段階に応じた内容に変更するようにしてある。この第1実施例では、ボール306の軌道を変化させる強さは、傾倒量が0である場合を含み、傾倒量が0よりも大きい場合については、3つの段階(たとえば、強、中、弱)に分類される。アナログスティック32の傾倒量は0から1.0の間で0.1ずつ変化し、傾倒しない場合の傾倒量は0であり、最大限に傾倒した場合の傾倒量は1.0である。また、傾倒量が0よりも大きく0.3以下である場合に、強さの段階が弱に決定され、傾倒量が0.3よりも大きく0.7以下である場合に、強さの段階が中(すなわち、強と弱の間)に決定され、傾倒量が0.7よりも大きく1.0以下である場合に、強さの段階が強に決定される。
したがって、この第1実施例では、ボール306の軌道を変化させる場合には、ボール306の軌道を変化させる強さを3段階で表現した矢印画像332が表示され、ボール306の軌道を変化させない場合には、矢印画像332は表示されない。図16に示す矢印画像332は、ボール306の軌道を変化させる強さが強である場合の矢印画像332であり、矢印(矢先)が3つ並べて表示される。図示は省略するが、ボール306の軌道を変化させる強さが弱である場合には、矢印が1つの矢印画像332が表示される。また、ボール306の軌道を変化させる強さが中である場合には、矢印が2つの矢印画像332が表示される。
ただし、上記の強さの分類は、矢印画像332を表示または非表示するために行っているだけであり、実際に軌道を変化させる場合には利用されない。他の実施例では、この分類を、実際に軌道を変化させる場合に利用するようにしてもよい。ボール306の軌道を変化させる方法については、後で説明することにする。
なお、この第1実施例では、アナログスティック32の傾倒量が0よりも大きい場合については、ボール306の軌道を変化させる強さを3つの段階に分類するようにしてあるが、これは一例であり、2つの段階以上であれば、4段階以上に分類することも可能である。
図17は、第2指標画像330が、第1指標画像326が停止した位置まで移動した場合の限定しない一例のパラメータ決定画面300を示す。図17に示すように、第2指標画像330は非表示され、移動ゲージ320の初期位置から第1指標画像326が停止した位置までの色がオレンジ色に変化されている。また、図17に示すパラメータ決定画面300では、各操作区間322a-322dには、矢印画像332が表示されている。ボール306は、矢印画像332が示す方向に軌道が変化される。したがって、図17に示す例では、プレイヤキャラクタ302がボール306を打撃すると、ボール306は、基準軌道が第1操作区間322aに相当する部分において右に変化され、第2操作区間322bに相当する部分において左に変化され、第3操作区間322cに相当する部分において右斜め上方に変化され、第4操作区間322dに相当する部分において左斜め上方に変化された軌道に従って移動する。
さらに、図17に示すパラメータ決定画面300では、第1指標画像326の下側に接触する画像(以下、「ぶれ指示画像」という)328が表示される。ぶれ指示画像328は、ボール306の軌道のぶれを示す画像である。この第1実施例では、プレイヤの操作によって、打撃力が決定され、さらに、軌道の変化が決定されたときに、軌道のぶれが抽選で決定される。
ぶれ指示画像328が表示される位置は、移動ゲージ320(または第1指標画像326)の横幅の範囲内において、抽選で決定される。この第1実施例では、所定の長さ(たとえば、0.5秒(30フレーム)程度)の抽選期間(以下、「ぶれの抽選期間」という)が設定される。ぶれは抽選期間の終了時に自動で決定される。また、ぶれの抽選期間において、指示画像328の表示位置は、第1指標画像326に沿ってランダムに変化され、その様子がパラメータ決定画面300で表示(以下、「抽選表示」ということがある)される。このように抽選表示を行うので、打撃力を決定してからボール306の移動が開始されるまでの間においても、プレイヤにゴルフゲームへの興味を持たせることができる。
ぶれ指示画像328が移動ゲージ320の横幅の中央に位置する場合には、ぶれは無く、左右のぶれ量は0である。ぶれ指示画像328が移動ゲージ320の中央から左寄りに位置する場合には、ボール306の軌道は左にぶれる。また、ぶれ指示画像328が移動ゲージ320の中央から右寄りに位置する場合には、ボール306の軌道は右にぶれる。ボール206が左または右にぶれる場合には、いずれの場合にも、ぶれ量は、ぶれ指示画像328が移動ゲージ320の横幅の中央から離れるに従って大きくされる。
図18(A)はぶれが決定される範囲の限定しない一例を説明するための図であり、図18(B)はぶれが決定される範囲の限定しない他の例を説明するための図である。図18(A)では、第1指標画像326は、移動ゲージ320のうち、リスク領域324が設けられていない位置で停止されている。したがって、図18(A)に示す場合には、ぶれは基本領域322の範囲内で決定される。一方、図18(B)では、第1指標画像326は、移動ゲージ20のうち、リスク領域324が設けられている位置で停止されている。したがって、図18(B)に示す場合には、ぶれは基本領域322とリスク領域324の範囲内で決定される。このため、図18(B)に示す場合には、図18(A)に示す場合よりも、打撃力が大きいため、ボール306の移動距離は長くなるが、ぶれ量が大きくなる可能性もある。上述したように、ぶれ量は、ぶれ指示画像328が移動ゲージ320の横幅の中央から離れるに従って大きくされる。したがって、ぶれ指示画像328が、リスク領域324内であるときは、リスク領域324外であるときに比べて、ぶれ量が大きくされる。また、プレイヤは、移動距離を重視するか、方向性を重視するかで、クラブ304の選択および打撃力の大きさを考慮してゴルフゲームをプレイすることができる。
また、打撃力の大きさは、方向入力期間と比例するため、プレイヤの操作によりボール306の移動方向を変化させる期間を長くする場合にも、ぶれ量が大きくなる可能性がある。つまり、第1指標画像326を停止させる位置に応じて、方向入力期間の長さが変化するため、方向入力期間を長くすることを重視するか、ぶれ量を大きくしないことを重視するかで、クラブ304の選択および打撃力の大きさを考慮してゴルフゲームをプレイすることもできる。
この第1実施例では、ぶれが有る場合には、ボール306の左右の打ち出し方向が変化される。ボール306の打ち出し方向の変化量は、ぶれ量に比例して大きくされる。ただし、他の例では、ぶれが有る場合には、軌道の一部または全部を、ぶれの方向に、ぶれ量に応じた大きさだけ変化(または、移動)させるようにしてもよい。その他の例では、ぶれが有る場合には、ボール306の打ち出し方向および軌道の両方を変化させるようにしてもよい。これらは、プレイヤキャラクタ302または/およびクラブ304の種類に応じて個別に採用されてもよい。
また、第1操作区間322a、第2操作区間322b、第3操作区間322cおよび第4操作区間322dのそれぞれの終端(または、上端)側の線は、斜めに設定される。第1操作区間322aから第4操作区間322dに向かうに従って、各操作区間322a-322dの終端側の線の傾斜度合は大きくされる。この傾斜度合は、ボール306の左右のぶれ量に関係している。一般的に、ドローボールとフェードボールでは、ドローボールの方が、移動距離が長い。したがって、図8に示すように、右打ちのキャラクタの場合には、パラメータ決定画面300において、終端側の線は左から右に向かうに従って下方に傾斜する。つまり、右打ちのキャラクタでは、左にぶれる方が右にぶれる場合よりも、移動距離が長くされる。ただし、終端側の線だけが傾斜するのではなく、各操作区間322a-322dが、移動ゲージ320の下端から上端に向かうに従って変化が大きくなるように変形している。
図示は省略するが、左打ちのキャラクタの場合には、各操作区間322a-322dの終端側の境界線の傾斜の向きが右打ちのキャラクタの場合と逆になる。
なお、詳細な説明は省略するが、ぶれが有る場合には、ぶれによって変化される移動距離はボール306が着弾してから転がる距離に影響を与えるようにしてある。打撃力を決定した位置よりもぶれ指示画像328の方が移動ゲージ320の上端に近い場合には、ボール306が転がる距離が長くされ、逆に、打撃力を決定した位置よりもぶれ指示画像328の方が移動ゲージ320の上端から遠い場合には、ボール306が転がる距離が短くされる。ただし、地形が傾斜している場合および着弾した地点がバンカー、ラフおよびハザードである場合には、ボール306は地形の傾斜に従って転がり、また、着弾した地点に応じて移動または停止される。上述したように、各区間322a-322dの形状は変形しているため、決定されたぶれ指示画像328の位置が基本領域322内であっても移動距離は変化される。
方向入力期間が終了したときに、ぶれの抽選を開始し、これと並行して、プレイヤキャラクタ302はスイング動作を開始し、ボール306を打撃する。ただし、方向入力期間が終了し、さらに、ぶれの抽選が終了したとき、プレイヤキャラクタ302のスイング動作が開始されてもよい。
図19はプレイヤキャラクタ302がボール306を打撃した直後のパラメータ決定画面300の限定しない一例を示す。図19に示す例では、ぶれ指示画像328は、基本領域322の横幅の中央付近に位置するため、ぶれは無いか、少し右寄りである。したがって、ボール306は、予め決定した打ち出し方向または予め決定した打ち出し方向から少し右向きに移動を開始する。
ボール306が移動を開始すると、図示は省略するが、仮想のカメラは、ボール306の後方であり、斜め上方から俯瞰的に撮影するように移動される。ただし、詳細な説明は省略するが、仮想のカメラは、基準軌道でボール306が移動したと仮定した場合の架空のボールを追従するように移動される。これは、ボール306の軌道の変化をゲーム画面画像によってプレイヤに示すためである。したがって、ボール306がゲーム画面画像に収まるように、仮想のカメラの画角が適宜調整される。
また、ボール306が移動を開始すると、パラメータ決定画面300およびボール306が着弾し、停止するまでのゲーム画面においては、移動ゲージ320において、現在移動中のボール306の位置に対応する操作区間322a、322b、322cまたは322dが識別可能に表示され、当該操作区間322a、322b、322cまたは322dの矢印画像332が表示される。現在移動中のボール306の位置に対応する操作区間322a、322b、322cまたは322dは、他の操作区間の色(この第1実施例では、オレンジ色)と異なる色(たとえば、黄色)で表示される。ただし、方向入力期間において表示された各操作区間322a-322dの矢印画像332の各々は、方向入力期間が終了し、プレイヤキャラクタ302がスイング操作を開始したときに、一旦白色にされ、現在移動中のボール306の位置に対応する操作区間322a、322b、322cまたは322dの矢印画像332は、他の操作区間と異なる色(たとえば、黒)で表示されてもよい。つまり、現在移動中のボール306の位置に対応する、操作区間322a、322b、322cまたは322dおよびその矢印画像332が目立たせられる(または、ハイライトされる)。したがって、プレイヤは、自身の方向入力に従う向きにボール306の軌道が変化していることを知ることができる。
ただし、この明細書において、現在移動中のボール306の位置に対応する操作区間322a、322b、322cまたは322dは、移動ゲージ320の初期位置から打撃力を決定したときの第1指標画像326の停止位置までの長さが基準軌道の水平到達距離に相当すると仮定した場合に、ボール306の移動開始からの時間tにおける基準軌道の水平方向の移動距離(以下、「水平距離」という)に相当する移動ゲージ320上の位置を含む操作区間322a、322b、322cまたは322dを意味する。
なお、プレイヤキャラクタ302がボール306を打撃すると、一旦、移動ゲージ320内の色は打撃力を決定したときの色(黄色)に戻され、各操作区間322a-322dの矢印画像332は非表示される。ただし、矢印画像332は半透明の白色で表示されていてもよい。
また、この第1実施例では、現在移動中のボール306の位置に対応する操作区間322a、322b、322cまたは322dの全体が識別可能に表示されるようにしてあるが、これに限定される必要はない。現在移動中のボール306の位置に対応する移動ゲージ320の位置に点または線などの所定の指示画像を表示するようにしてもよい。また、現在移動中のボール306の位置に対応する操作区間322a、322b、322cまたは322dの矢印画像332を表示するだけでもよい。この場合、各操作区間322a-322dに矢印画像332を表示しておき、現在移動中のボール3306の位置に対応する操作区間322a、322b、322cまたは322dの矢印画像332の色を変化させるようにしてもよい。
図19に示すパラメータ決定画面300は、プレイヤキャラクタ302がボール306を打撃した直後の状態を示すため、第1操作区間322aが識別可能に表示され、当該第1操作区間322aの矢印画像332が表示される。各操作区間322a-322dを識別可能に表示する場合には、各操作区間322a-322dに所定の色(この第1実施例では、オレンジ色)を付すことで行われる。
次に、方向入力を用いてボール306の軌道を変化させる方法について説明する。上述したように、プレイヤは、ボール306の軌道を、基準軌道から変化させたい場合には、変化させたい方向に、アナログスティック32を傾倒する。プレイヤの操作入力は、毎フレーム検出されるため、アナログスティック32が傾倒されている場合には、傾倒方向および傾倒量が毎フレーム検出される。
この第1実施例では、ボール306の軌道は、移動ゲージ320の各操作区間322a-322dにおける方向入力(以下、「区間方向入力」という。)を用いて変化される。方向入力は、打撃力の決定後、第2指標画像330が初期位置から第1指標画像326が停止されている位置までの方向入力期間において、毎フレーム検出される。この第1実施例では、経時的な方向入力(すなわち、区間方向入力)を経時的に軌道に反映させながら、ボール306が移動される。ただし、プレイヤは、方向入力期間の全部または一部において、方向入力を行わない場合もある。たとえば、方向入力期間において、1回の方向入力しか検出しない場合もある。また、後述するように、操作区間322a-322d毎に、毎フレーム検出される方向入力が平均化された区間方向入力が算出される。したがって、経時的な区間方向入力は、2つ以上の操作区間(この第1実施例では、322a-322d)において、時間的に連続する操作区間毎の区間方向入力であり、時系列に従ってボール306の軌道に影響を与える。
後述するように、ボール306の軌道を変化させる場合には、上下方向と左右方向に分けて計算するため、方向入力は上下方向の傾倒量と左右方向の傾倒量に分けて記憶される。ただし、この明細書においては、アナログスティック32を傾倒させる方向は、左コントローラ3を正面から見た場合の上下左右の方向を意味する。つまり、図1および図3に示すように、ゲームシステム1およびその構成部品(つまり、本体装置2、左コントローラ3、右コントローラ4)について所定の3軸(xyz軸)を設定した場合において、左右の方向はx軸方向に相当し、上下の方向はy軸方向に相当する。また、ボール306の軌道は、プレイヤの方向入力に基づいて、ボール306の基準軌道をローカル座標の原点からX軸のプラス方向を見た場合の上下左右の方向に変化される(図22参照)。ただし、ローカル座標の原点は、ボール306の移動開始位置である。移動開始位置は、打撃する前のボール306の位置である。
図20(A)は方向入力期間においてフレーム毎に検出された方向入力の表の限定しない一例を示す。後述する基準軌道のフレーム数と区別するために、方向入力の表では、フレーム数を操作フレーム数と表記することにする。このことは、図20(B)に示す平均化した方向入力の表についても同じである。
方向入力の表では、上下方向では、上方向の傾倒がプラスの数字で表され、下方向の傾倒がマイナスの数字で表される。また、左右方向では、右方向の傾倒がプラスの数字で表され、左方向の傾倒がマイナスの数字で表される。上記のとおり、数字の大きさは、傾倒量を示し、0から1.0までの数で表される。
この第1実施例では、矢印画像332が示す方向にボール306を移動させるため、操作区間322a-322d毎に、複数の方向入力が平均化される。つまり、操作区間322a-322d毎に、区間方向入力が算出される。区間方向入力が算出されると、区間方向入力が算出された操作区間322a、322b、322cまたは322dにおいて検出された方向入力として書き戻される。つまり、各々の操作区間322a-322dにおいては、同じ値の方向入力(すなわち、区間方向入力)が記載される。図20(B)は、操作区間322a-322d毎に平均化された方向入力の表の限定しない一例を示す。このように、書き戻された方向入力すなわち区間方向入力を用いて、ボール306の軌道が変化される。
ボール30の軌道のどの部分にどの区間方向入力を反映させるかを決定するために、この第1実施例では、基準軌道についての移動時間毎(つまり、フレーム毎)の水平距離を記載した対応表が作成される。図21は対応表の限定しない一例を示す。図21に示すように、対応表では、フレーム数(以下、「移動フレーム数」という)に対応して、ボール306が基準軌道で移動する場合の移動開始後の水平距離dn(nは1以上の整数)が記載される。ただし、上述したように、基準軌道は、ボール306を打撃したときに、ボール306の初速度v0および打ち出し角度θを用いて数1で算出され、水平距離dnは、数2に従って算出される位置xである。
図22は、打撃力が100%に決定された場合の移動ゲージ320、この場合に検出された操作区間322a-322d毎の方向入力、および打撃力に基づく基準軌道の一例を示す。図22に示すように、打撃力が100%であるため、操作区間322a-322dを第2指標画像330が移動する時間が方向入力期間である。また、図22では、移動ゲージ320を横向きに記載し、移動ゲージ320に対応させて基準軌道を記載してある。
なお、図22では、打撃力が100%の場合について示し、この図22を用いてボール306の軌道を変化せる方法について説明するが、打撃力が100%未満の場合についても、同様である。
一例として、或る時間t(フレーム)における基準軌道の水平距離dnを対応表から取得し、この水平距離dnに対応する位置における1つの区間方向入力を特定し、特定した1つの区間方向入力を用いてボール306の軌道を変化することが考えられる。或る時間tにおける基準軌道の水平距離dnは、移動開始から時間tまでの移動フレーム数に対応する水平距離dnである。
なお、この1つの区間方向入力は、上述したように、操作区間322a-322d毎に複数の方向入力を1つにまとめたものであるため、特に、操作区間322a-322dを跨ぐときに、ボール306の軌道が滑らかに変化しない可能性がある。
そこで、この第1実施例では、図22の点線枠で示すように、或る時間tにおける水平距離dnに対応する位置の区間方向入力を中心に、前後数フレーム~十数フレーム分の複数の区間方向入力の平均値を算出し、平均化した区間方向入力を用いて次のフレームのボール306の位置を算出するようにしてある。このため、操作区間322a-322dを跨ぐ場合にも、ボール306の軌道がより滑らかに変化することができる。
この第1実施例では、方向入力期間が終了したときに、対応表の水平距離dn(または、移動フレーム数n)毎に、ボール306の軌道に影響を与える操作フレーム数pの範囲(以下、「対応範囲」という)が決定される。そして、次のフレームのボール306の位置を算出する場合には、現フレームにおける基準軌道の水平距離dnに対応する対応範囲に含まれる複数の区間方向入力の平均値が算出される。
ただし、上記の方法は一例であり、限定される必要はない。他の実施例では、基本的に、或る時間tにおける水平距離dnに対応する位置の区間方向入力を用いて次のフレームのボール306の位置を算出し、1フレームの開始時刻が操作区間322a、322bまたは322cの終わり付近に相当し、当該1フレームの終了時刻が次の操作区間322b、322cまたは322dの開始付近に相当する場合のように、1フレームの効果が区間を跨ぐ場合に限り、1フレームにおける時間の割合に応じて、隣接する2つの区間の区間方向入力を合成した区間方向入力を用いて次のボール306の位置を算出するようにしてもよい。
次のフレームのボール306の位置を算出する場合には、現フレームにおけるボール306の速度ベクトルと、現フレームにおける基準軌道の水平距離dnに対応する対応表に含まれる複数の区間方向入力を平均化した平均値についての2次元ベクトルが合成される。
ただし、ボール306の速度ベクトルは、現フレームにおける、ボール306の移動方向および移動量である。移動方向は、ボール306の打ち出し方向を初期の方向として、斜方投射の物理計算に従って次第に変化されるとともに、区間方向入力の影響により変化される。また、移動量は、次のフレームまでの水平距離dn+1から、現フレームまでの水平距離dnを減算した値である。水平距離は、図21に示した対応表から取得することができる。
また、この第1実施例では、図23(A)および図23(B)に示すように、平均化した区間方向入力を示す2次元ベクトルの左右方向の成分と上下方向の成分のそれぞれについて速度ベクトルを回転させる。
ただし、ボール306の移動は、上述したローカル座標で算出され、図23(A)はローカル座標の仮想空間を真上から見た図であり、図23(B)はローカル座標の仮想空間を真横から見た図である。
なお、図23(A)および図23(B)に示すように、フレームNの直前すなわちフレームN-1において、速度ベクトルは、ローカル座標のx軸の方向と平行であり、かつ、ローカル座標のy軸およびz軸のそれぞれと直交する。
また、図23(A)および図23(B)では、簡単のため、各フレームにおける速度ベクトルの大きさは同じにしてある。実際には、アナログスティック32の傾倒量すなわち方向入力の強さも考慮される。
さらに、図23(A)に示す上下入力回転軸は、アナログスティック32を上下方向に傾倒する場合の回転軸に相当し、図23(B)に示す左右入力回転軸は、アナログスティック32を左右方向に傾倒する場合の回転軸に相当する。
図23(A)に示すように、フレームNの速度ベクトルは、直前(フレームN-1)の速度ベクトルに対して、フレームNでの上下入力回転軸に対して垂直な左右入力回転軸の周りに、左右方向の方向入力に応じて回転される。図23(A)に示す例は、左右入力回転軸を中心として右方向に約30度回転されている。また、図23(A)に示すように、平均化した区間方向入力によりフレームN+1の移動ベクトルの向きを決定する場合には、左右入力回転軸は、ローカル座標のY軸と平行である。詳細な説明は省略するが、次のフレームN+1の速度ベクトルは、フレームNの速度ベクトルの向きに対して、左右入力回転軸を中心として右方向に約30度回転される。
また、図23(B)に示すように、フレームNの速度ベクトルは、直前の速度ベクトルに対して、フレームNでの左右入力回転軸に対して垂直な上下入力回転軸の周りに、上下方向の方向入力に応じて回転される。図23(B)に示す例は、上下入力回転軸を中心として上方向に約30度回転されている。また、図23(B)に示すように、平均化した区間方向入力の上下方向の成分によりフレームN+1の移動ベクトルの向きを決定する場合には、上下入力回転軸は、ローカル座標のZ軸と平行である。詳細な説明は省略するが、次のフレームN+1の速度ベクトルは、フレームNの速度ベクトルの向きに対して、上下入力回転軸を中心として上方向に約30度回転される。
このように、移動ベクトルが、平均化された区間方向入力についての2次元ベクトルを用いて、左右入力回転軸および上下入力回転軸のそれぞれの軸周りに回転され、ローカル座標における、次のフレームN+1のボール306の位置が算出される。
なお、ゲーム画像を表示する場合には、ローカル座標で算出されたボール306の位置がワールド座標系のボール306の位置に変換される。
また、方向入力による軌道の変化は、基準軌道についての水平到達位置まで、すなわち、対応表の移動フレーム数の最大値(nmax)まで行われる。
ただし、対応表の移動フレーム数の最大値に進むまでの間に、ボール306がカップインしたり、地面オブジェクト(たとえば、フェアウェイ、バンカー、ラフ、ウォーターハザード、アウトオブバウンズ(OB)のオブジェクト)に当たったり、地上オブジェクト(たとえば、樹木、建物、壁のオブジェクト)に当たったり、空中オブジェクト(たとえば、飛行船、気球、宙に浮いたブロックのオブジェクト)に当たったりした場合には、方向入力による軌道の変化は終了される。
また、対応表の移動フレーム数の最大値まで進んだ場合でも、ボール306がカップインしたり、地面のオブジェクトに当たったり、地上のオブジェクトに当たったり、空中のオブジェクトに当たったりしない場合には、ボール306は、いずれかにオブジェクトに当たるまで、最後に算出された速度ベクトルの方向に仮想空間における重力の影響を受けながら移動する。
ただし、仮想空間における空気抵抗およびボールスピンに伴う揚力の影響も加味されてもよい。
ボール306がフェアウェイまたはラフのオブジェクトに当たった場合には、ボール306がフェアウェイまたはラフのオブジェクトで跳ねた後に、転がり、さらに、止まる処理が実行される。ただし、跳ねたり転がったりする処理は、ライの状態に応じて変化される。また、ボール306がウォーターハザードおよびOBのオブジェクトに当たった場合には、ボール306がウォーターハザードまたはOBゾーンに当たった時点で止まり、ボール306がペナルティ加算後に打撃する位置に自動的に移動する処理が実行される。さらに、ボール306がバンカーのオブジェクトに当たった場合には、そのまま砂に減り込んで停止する処理が実行されたり、跳ねた後に、転がり、さらに、止まる処理が実行されたりする。また、ボール306が地上に配置されたオブジェクトに当たると、跳ね返ったり、向きを変えて移動したり、その場に落下したりする。ボール306が、跳ね返ったり、向きを変えて移動したりする場合には、その後、上記のように、地面またはウォーターハザードのオブジェクに当たる。以下、これらの処理をまとめて、「移動停止処理」と呼ぶことにする。
また、ボール306がカップインするまでは、プレイヤキャラクタ302は次にボール306を打撃する位置(以下、「次の打撃位置」という)まで自動で移動され、アドレスした状態にされる。つまり、次にボール306を移動させるためのパラメータ決定画面300がディスプレイ12に表示される。ただし、プレイヤキャラクタ302は次の打撃位置までプレイヤの操作に従って移動するようにしてもよい。この場合、移動中にアイテムを取得することができてもよい。
ボール306がカップインすると、ボール306がカップインしたホールのスコアが算出され、記録される。そして、次のホールが有る場合には、プレイヤキャラクタ302は、次のホールのティーイングエリアに自動で移動される。次のホールが無い場合には、プレイヤキャラクタ302のトータルのスコアが算出および記録され、今回プレイしたゴルフコースについてのゴルフゲームが終了する。
なお、他のプレイヤとプレイする場合には、プレイヤについても上記のような処理が実行される。ただし、打撃する順番がゴルフのルールに従って決定され、ゴルフゲームが進行される。
また、図24はバンカーに在るボール306を打撃する場合のパラメータ決定画面300の限定しない一例を示す。図24に示すパラメータ決定画面300では、移動ゲージ320の長さがフェアウェイに在るボール306を打撃する場合と比較して短く設定される。図24に示す例では、図8等に示した他のパラメータ決定画面300の移動ゲージ320の80%の長さに設定される。これは、一般的なスポーツのゴルフにおいて、バンカーショットでは、フェアウェイでボール306を打撃するよりも飛距離が短くなるためである。したがって、図示は省略するが、いわゆる目玉の場合には、移動ゲージ320は、図8等に示した他のパラメータ決定画面300の移動ゲージ320の50%の長さに設定される。
ただし、移動ゲージ320の長さを短くする場合には、移動ゲージ320の全体を縮小し、これに伴って、移動ゲージ320の長さに比例して、第1指標画像326の移動速度V1および第2指標画像330の移動速度V2は小さくされる。したがって、移動ゲージ320が短くされたことに起因して、方向入力期間が短くなることはない
図示は省略するが、ラフに在るボール306を打撃する場合には、ラフの深さに応じて、移動ゲージ320の長さが短くされる。他の実施例では、プレイヤまたは他のプレイヤの操作或いは所定のイベントの発生によって、プレイヤキャラクタ302が使用するボール306の重量が大きくされたり、仮想空間における重力加速度gが大きくされたりした場合にも、移動ゲージ320の長さが短くされる。
ただし、他の実施例では、バンカーまたはラフのような打撃の難易度が比較的高い位置からボール306を打撃する場合には、移動ゲージ320の長さを短くしても、第1指標画像326の移動速度V1および第2指標画像330の移動速度V2を変化させないようにしてもよい。かかる場合には、打撃力の決定が可能な期間および方向入力期間を短くすることで、打撃の難易度が高いことに合わせて、操作の難易度が高くされる。
また、プレイヤまたは他のプレイヤの操作或いは所定のイベントの発生によって、プレイヤキャラクタ302が使用するボール306の重量が小さくされたり、仮想空間における重力加速度gが小さくされたりした場合には、移動ゲージ320の長さが長くされる。したがって、移動ゲージ320の長さを長くしない場合と同じ打撃力であっても、ボール306の飛距離が長くされる。この場合、移動ゲージ320の長さが長くなるが、長さが短くされる場合と同様に、移動ゲージ320の全体を拡大し、これに伴って、移動ゲージ320の長さに比例して、第1指標画像326の移動速度V1および第2指標画像330の移動速度V2は大きくされる。したがって、方向入力期間が長くなることはない。
このように、移動ゲージ320の長さが変化されるが、移動ゲージ320を3D表示した場合も同様である。また、移動ゲージ320が曲げて表示される場合にも、同様に、移動ゲージ320の長さは変化される。
また、現実のゴルフにおいて、バンカーショットでは一般的にミスショットが出やすい。つまり、打撃の難易度が高いため、使用するクラブ304がアイアンまたはウェッジであっても、リスク領域324は比較的大きくされる。図24に示す例では、クラブ304はサンドウェッジ(SW)であるが、打撃力が85%付近からリスク領域324が設けられている。すなわち、たとえばフェアウェイから打撃する場合に比べて、リスク領域324が、移動ゲージ320のより低い打撃力に対応する部分から設けられている。なお、他の実施例では、このようなリスク領域324の設定に代えて、あるいは加えて、リスク領域324の横幅をより広くしてもよい。
図25は図24に示したパラメータ決定画面300と同様の状況において、クラブ304を1Wに変更した場合のパラメータ決定画面300の限定しない一例を示す。バンカーショットでは、1Wを使用する場合には、アイアンまたはウェッジを使用する場合よりも打撃の難易度が高いため、図24に示した場合よりも、さらに、リスク領域324は大きくされる。図25に示す例では、リスク領域324は、打撃力の50%付近から設けられ、打撃力が大きくなるにつれて大きくなり、さらに、打撃力の85%付近から大きくなる度合が大きくされる。
図26は図24に示したパラメータ決定画面300と同様の状況において、能力上昇パラメータが最大値に達した場合に、使用するクラブ304の能力を上昇させることを選択した状態のパラメータ決定画面300の限定しない一例を示す。能力上昇パラメータが最大値に達した場合に、プレイヤがYボタン56を押下すると、使用するクラブ304の能力を上昇させることが選択される。すると、図26に示すように、リスク領域324が縮小される。一例として、リスク領域324の上下方向の長さおよび左右方向の長さがそれぞれ半分にされる。このように、使用するクラブ304の能力が上昇されると、リスク領域324が縮小されることにより、ボール306が大幅にぶれることが無くなる。つまり、ぶれ量が少なくされ、ボール306が移動する場合の方向性が良くなる。
図示は省略するが、上述したように、使用するクラブ304の能力を上昇させた状態で、プレイヤキャラクタ302がボール306を打撃すると、打撃上昇パラメータは最小値にされ、星形の能力ゲージ316内の色が消去される。
なお、この第1実施例では、使用するクラブ304の能力が上昇されると、ぶれ量を少なくするようにしたが、これに限定される必要はない。他の例では、使用するクラブ304の飛距離が長くされてもよい。または、使用するクラブ304の種類に応じて、飛距離が長くされたり、ぶれ量が少なくされたりしてもよい。
また、この第1実施例では、「使用するクラブ304の能力が上昇される」と説明してあるが、飛距離が長くされたり、ぶれ量が少なくされたりするため、プレイヤキャラクタ302の打撃の技量が上昇されるということもできる。したがって、使用するプレイヤキャラクタ302の種類に応じて、飛距離が長くされたり、ぶれ量が少なくされたりしてもよい。
図27は図6に示したDRAM85のメモリマップ850の限定しない一例を示す図である。図27に示すように、DRAM85は、プログラム記憶領域852およびデータ記憶領域854を含む。プログラム記憶領域852には、ゲームアプリケーションのプログラム(つまり、ゴルフゲームのゲームプログラム)が記憶される。図27に示すように、ゲームプログラムは、メイン処理プログラム852a、画像生成プログラム852b、操作検出プログラム852c、第1のパラメータ決定プログラム852d、第2のパラメータ決定プログラム852e、全方向入力記憶プログラム852f、区間方向入力決定プログラム852g、移動制御プログラム852hおよび画像表示プログラム852iなどを含む。ただし、ゲーム画像などの画像を表示する機能は本体装置2が備える機能である。したがって、画像表示プログラム852iは、ゲームプログラムに含まれない。
詳細な説明は省略するが、各プログラム852a-852iは、本体装置2に電源が投入された後の適宜のタイミングで、フラッシュメモリ84および/またはスロット23に装着された記憶媒体からその一部または全部が読み込まれてDRAM85に記憶される。ただし、各プログラム852a-852iの一部または全部は、本体装置2と通信可能な他のコンピュータから取得するようにしてもよい。
メイン処理プログラム852aは、この第1実施例の仮想のゴルフゲームの全体的なゲーム処理を実行するためのプログラムである。画像生成プログラム852bは、後述する画像生成データ854bを用いて、ゲーム画像などの各種の画像に対応する表示画像データを生成するためのプログラムである。操作検出プログラム852cは、左コントローラ3または/および右コントローラ4からの操作データ854aおよび他のコントローラからの操作データ854aを取得(または、受信)し、データ記憶領域854に識別可能に記憶するためのプログラムである。ここで、他のコントローラは、左コントローラ3または右コントローラ4と同等のコントローラまたは左コントローラ3および右コントローラ4を組み合わせたコントローラと同等のコントローラである。
第1のパラメータ決定プログラム852dは、第2のパラメータ決定操作の前に、プレイヤの操作に基づいて、使用するクラブ304を変更したり、ボール306の左右の打ち出し方向を変更したり、移動ゲージ320の表示方法を変更したり、使用するクラブ304の能力を上げたりするためのプログラムである。ただし、第2のパラメータ決定操作の前に、使用するクラブ304の能力を上げることをキャンセルすることもできる。第2のパラメータ決定プログラム852eは、プレイヤの操作に基づいて、ボール306の打撃力を決定したり、ボール306の基準軌道に対する変化方向を決定したり、プレイヤの操作に拘わらずにボール306のぶれを決定するためのプログラムである。
全方向入力記憶プログラム852fは、方向入力期間において検出した方向入力をフレーム毎に記憶するとともに、後述する区間方向入力決定プログラム852gに従ってフレーム毎に検出した方向入力を操作区間322a-322dの各々でまとめた区間方向入力を、対応する操作区間322a-322dの方向入力として操作フレーム毎に書き戻すためのプログラムである。
区間方向入力決定プログラム852gは、操作区間322a-322d毎に、フレーム毎に検出した方向入力を、所定数検出した場合と第2指標画像330が各操作区間322a-322dの終端に到達した場合に、1つにまとめた区間方向入力を決定するためのプログラムである。
移動制御プログラム852hは、ボール306の移動を制御するためのプログラムである。クラブ304の種類および打撃力に基づいて決定される基準軌道を用いて、ぶれおよび経時的な方向入力による影響を受けたボール306の軌道を決定し、決定した軌道に従ってボール306を移動させる。ただし、この第1実施例は、1フレーム毎に移動後のボール306の位置が算出される。他の例では、ボール306が移動を開始する前に、軌道の全部が算出され、算出された軌道に従って移動されてもよい。
画像表示プログラム852iは、画像生成プログラム852bに従って生成した表示画像データを表示装置に出力するためのプログラムである。したがって、表示画像データに対応する画像(つまり、パラメータ決定画面300など)がディスプレイ12などの表示装置に表示される。
なお、プログラム記憶領域852には、BGM等の音を出力するための音出力プログラム、他の機器と通信するための通信プログラム、データをフラッシュメモリ84などの不揮発性の記憶媒体に記憶するためのバックアッププログラムなども記憶される。
また、図28に示すように、データ記憶領域854には、操作データ854a、画像生成データ854b、キャラクタデータ854c、ゲームデータ854d、打ち出し方向データ854e、曲がり情報データ854f、表示対象オブジェクトデータ854g、高さ情報データ854h、打撃力データ854i、基準軌道データ854j、ぶれデータ854k、方向入力データ854m、強さデータ854n、対応表データ854p、対応範囲データ854q、ボール位置データ854rおよびハイライト対象データ854sが記憶される。また、データ記憶領域854には、3Dフラグ854t、第1のパラメータ決定フラグ854u、第2のパラメータ決定フラグ854vおよびボール移動フラグ854wが記憶される。
操作データ854aは、左コントローラ3または/および右コントローラ4から受信される操作データおよび他のコントローラから受信される操作データである。この第1実施例においては、本体装置2が左コントローラ3、右コントローラ4および他のコントローラのうちの2つ以上から操作データを受信する場合には、本体装置2は、それぞれのコントローラに分類して操作データ854aを記憶する。
なお、複数の人間のプレイヤがゴルフゲームをプレイする場合には、各プレイヤが使用するコントローラと、複数のプレイヤまたは複数のプレイヤキャラクタが対応付けられ、操作データ854aは、プレイヤまたはプレイヤキャラクタを識別可能にしてデータ記憶領域854に記憶される。
また、コンピュータ(プロセッサ81)が操作する対戦相手のキャラクタについては、一例として、コンピュータ(プロセッサ81)が生成した操作データ854aがデータ記憶領域854に記憶される。
画像生成データ854bは、ポリゴンデータおよびテクスチャデータなど、表示画像データを生成するために必要なデータである。キャラクタデータ854cは、この第1実施例のゴルフゲームをプレイするキャラクタについてのデータである(図29参照)。キャラクタデータ854cについては後で詳細に説明する。ゲームデータ854dは、この第1実施例のゴルフゲームの途中または結果についてのデータであり、後述するプレイデータ900cを含む。
打ち出し方向データ854eは、ボール306の打ち出し方向についてのデータである。上述したように、ボール306の打ち出し方向は、左右の方向と上下の方向を含む。パラメータ決定画面300が表示された当初では、ボール306の現在位置とピン310(カップ)またはピン310よりも近くのフェアウェイを結ぶ直線方向が左右の打ち出し方向として決定され、プレイヤは、この打ち出し方向を戦略により変更することができる。ただし、打ち出し方向は変更しなくても良い。
曲がり情報データ854fは、ボール306の現在位置の傾斜および打ち出し方向に基づいて決定されるボール306が曲がる方向および曲がる大きさ(すなわち、曲がり情報)についてのデータである。表示対象オブジェクトデータ854gは、ボール306の現在位置と水平到達位置との間に存在する各表示対象オブジェクトの識別情報と、ボール306の現在位置から各表示対象オブジェクトまでの直線距離についてのデータである。高さ情報データ854hは、移動ゲージ320を3D表示する場合に、打ち出し方向における、ボール306の現在位置から水平到達距離の位置までの間の高さの変化(すなわち、高さ情報)についてのデータである。
打撃力データ854iは、プレイヤの操作によって決定された打撃力の値(%)についてのデータである。基準軌道データ854jは、ボール306の基準軌道についてのデータであり、基準軌道はボール306の現在位置、打ち出し方向、選択中のクラブ304の打ち出し角度および決定された打撃力に応じたボール306の初速度v0に基づいて決定される。ただし、第2のパラメータ決定操作前において、軌道予想画像312を表示する場合には、基準軌道を算出するときに、打撃力は100%に設定される。ぶれデータ854kは、ランダムに決定されたぶれ方向およびぶれ量についてのデータである。
方向入力データ854mは、第2のパラメータ決定操作において、方向入力期間にフレーム毎に検出した方向入力のデータであり、区間方向入力が算出された後では、フレーム毎に検出した方向入力のデータが、操作区間322a-322d毎に、算出された区間方向入力のデータに書き換えられる。ただし、各方向入力および各区間方向入力は、アナログスティック32の傾倒方向および傾倒量を示す。強さデータ854nは、操作区間322a-322d毎の区間方向入力の強さについてデータである。上述したように、区間方向入力の傾倒量の大きさに応じて、区間方向入力の強さが4段階で分類される。
対応表データ854pは、図21に示したような対応表についてのデータである。上述したように、対応表では、基準軌道について、移動フレーム数nに対応して水平距離dnが記載される。対応範囲データ854qは、対応表の各水平距離dnについて決定された対応範囲(すなわち、操作フレーム数pの範囲)についてのデータである。
ボール位置データ854rは、仮想空間におけるボール306の現在位置(この第1実施例では、3次元位置)の座標データである。ハイライト対象データ854sは、移動ゲージ320において、ハイライトする操作区間322a、322b、322cまたは322dおよびその矢印画像332を示すデータである。
3Dフラグ854tは、移動ゲージ320を3D表示するかどうかを判断するためのフラグである。移動ゲージ320を3D表示する場合には、3Dフラグ854tはオンされ、移動ゲージ320を2D表示する場合には、3Dフラグ854tはオンされる。
第1のパラメータ決定フラグ854uは、第1のパラメータを決定するかどうかを判断するためのフラグである。第1のパラメータ決定操作を行う場合に、第1のパラメータ決定フラグ854uはオンされ、第2のパラメータ決定操作を開始すると、第1のパラメータ決定フラグ854uはオフされる。
第2のパラメータ決定フラグ854vは、第2のパラメータを決定するかどうかを判断するためのフラグである。第2のパラメータ決定操作を行う場合に、第2のパラメータ決定フラグ854vはオンされ、第2のパラメータ決定操作を終了し、ぶれが決定されると、第2のパラメータ決定フラグ854vはオフされる。
ボール移動フラグ854wは、ボール306を移動させるかどうかを判断するためのフラグである。ボール306が打撃されたときに、ボール移動フラグ854wはオンされ、ボール306の移動が停止したときに、ボール移動フラグ854wはオフされる。
図示は省略するが、データ記憶領域854には、ゴルフゲームの実行に必要な他のデータが記憶されたり、ゴルフゲームの実行に必要な、他のフラグおよびタイマ(またはカウンタ)が設けられたりする。
図29は、図28に示したキャラクタデータ854cの具体的な内容を示す図である。図29に示すように、キャラクタデータ854cは、プレイヤキャラクタ302および対戦相手のキャラクタについてのデータである。この第1実施例では、対戦相手のキャラクタがいない場合について説明するため、図29では、キャラクタデータ854cは、プレイヤキャラクタデータ900を含む。
なお、1または複数の対戦相手のキャラクタデータの内容は、プレイヤキャラクタデータ900と同じである。
図29に示すように、プレイヤキャラクタデータ900は、種類データ900a、現在位置データ900b、プレイデータ900cおよび能力上昇パラメータデータ900dなどを含む。また、プレイヤキャラクタデータ900は、カップインフラグ900eを含む。
種類データ900aは、プレイヤキャラクタ302の種類であり、プレイヤによって選択されたキャラクタを識別する識別情報についてのデータである。現在位置データ900bは、仮想空間におけるプレイヤキャラクタ302の現在位置(この第1実施例では、3次元位置)の座標データである。
プレイデータ900cは、ゴルフゲームをプレイした場合のプレイヤキャラクタ302についてのデータである。一例として、ストロークプレイの場合には、プレイデータ900cとして、ホール毎に、ティーショットからカップインまでの打数および現在のホールまでのトータルの打数のデータが記憶される。
能力上昇パラメータデータ900dは、プレイヤキャラクタ302の能力上昇パラメータの数値のデータである。カップインフラグ900eは、プレイヤキャラクタ302のボール306がカップインしたかどうかを判断するためのフラグである。この第1実施例では、ボール306がカップインしたときに、カップインフラグ900eがオンされ、次の打撃位置に移動したときに、カップインフラグ900eがオフされる。
図30は、本体装置2のプロセッサ81(またはコンピュータ)のゲームプログラムの処理(すなわち、「全体的なゲーム処理」)の限定しない一例を示すフロー図である。図31および図32は、本体装置2のプロセッサ81(またはコンピュータ)のゲーム制御処理の限定しない一例を示すフロー図である。さらに、図33および図34は、本体装置2のプロセッサ81(またはコンピュータ)の第1のパラメータ決定処理の限定しない一例を示すフロー図である。さらにまた、図35-図37は、本体装置2のプロセッサ81(またはコンピュータ)のボールの第2のパラメータ決定処理の限定しない一例を示すフロー図である。また、図38および図39は、本体装置2のプロセッサ81(またはコンピュータ)のボール移動処理の限定しない一例を示すフロー図である。
ただし、図30-図39の各処理では、他のプレイヤについての処理は省略し、プレイヤについての処理のみを説明する。他のプレイヤについての処理は、プレイヤについての処理と同じであり、一般的なスポーツのゴルフと同じルールに従う順番でボールを打撃するように実行される。
以下、図30-図39を用いて、全体的なゲーム処理、ゲーム制御処理、第1のパラメータ決定処理、第2のパラメータ決定処理およびボール移動処理について説明するが、同じ処理を実行するステップについての重複する説明は省略する。
ただし、図30-図39に示すフロー図における各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、この第1実施例では、基本的には、図30-図39に示すフロー図における各ステップの処理をプロセッサ81が実行するものとして説明するが、プロセッサ81以外のプロセッサや専用回路が一部のステップを実行するようにしてもよい。
本体装置2の電源が投入されると、全体的なゲーム処理の実行に先立って、プロセッサ81は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってDRAM85等の各ユニットが初期化される。本体装置2は、プレイヤによって、この第1実施例のゲームプログラムの実行が指示されると、全体的なゲーム処理を開始する。
図30に示すように、プロセッサ81は、全体的なゲーム処理を開始すると、ステップS1で、初期設定を実行する。この第1実施例では、ストロークプレイのゴルフゲームまたはマッチプレイのゴルフゲームを選択するためのゲーム選択画面が表示され、プレイヤの選択操作に従ってプレイするゴルフゲームの種類が決定される。以下では、一人のプレイヤがストロークプレイを選択した場合について説明するが、複数人のプレイヤでストロークプレイする場合には、一般的な現実のゴルフのルールに従ってボールからカップまでの距離が遠い順にボールを打撃し、ゴルフゲームが進行される。また、マッチプレイが選択された場合には、マッチプレイのルールに従ってゴルフゲームが進行される。
続くステップS3では、左コントローラ3または/および右コントローラ4から送信された操作データ854aを取得し、ステップS5では、後で詳細に説明する、ゲーム制御処理(図31および図32参照)を実行する。ただし、ステップS3では、取得した操作データ854aをデータ記憶領域854に記憶する。
次のステップS7では、ゲーム画像を生成する。ここでは、プロセッサ81は、ステップS5のゲーム制御処理の結果に基づいてゲーム画像(つまり、パラメータ決定画面300などの各種画面)に対応するゲーム画像データを生成する。なお、パラメータ決定画面300に対応するゲーム画像データを生成する場合には、クラブ304の種類およびボール306のライに応じて、移動ゲージ320(リスク領域324を含む)の大きさが適宜変化される。また、ゲーム制御処理と並行してプレイヤキャラクタ302のスイング動作の処理が実行されている場合には、ゲーム制御処理の結果とスイング動作の結果に基づいてゲーム画像データが生成される。
また、ステップS9では、ゲーム音声を生成する。ここでは、プロセッサ81は、ステップS5のゲーム制御処理の結果に応じたゲーム音声に対応する音声データを生成する。
続いて、ステップS11では、ゲーム画像を表示する。ここでは、プロセッサ81は、ステップS7で生成したゲーム画像データをディスプレイ12に出力する。また、ステップS13では、ゲーム音声を出力する。ここでは、プロセッサ81は、ステップS9で生成したゲーム音声データを、コーデック回路87を介してスピーカ88に出力する。
そして、ステップS15では、ゲームを終了するかどうかを判断する。ステップS15の判断は、プレイヤがゲームを終了する指示を行ったか否か等によって行われる。ステップS15で“NO”であれば、つまりゲームを終了しない場合には、ステップS3に戻る。一方、ステップS15で“YES”であれば、つまりゲームを終了する場合には、全体的なゲーム処理を終了する。
図31に示すように、プロセッサ81は、ステップS5に示したゲーム制御処理を開始すると、ステップS21で、ゴルフゲームのプレイ中かどうかを判断する。ステップS21で“YES”であれば、つまり、ゴルフゲームのプレイ中であれば、ステップS31に進む。一方、ステップS21で“NO”であれば、つまり、ゴルフゲームのプレイ中でなければ、ステップS23で、ゴルフゲームの開始かどうかを判断する。ここでは、プロセッサ81は、プレイヤによってゴルフゲームの開始が指示されたかどうかを判断する。
ステップS23で“NO”であれば、つまり、ゴルフゲームの開始でなければ、ステップS25で、各種選択処理を実行して、ゲーム制御処理を終了し、図30に示した全体的なゲーム処理にリターンする。
なお、各種選択処理は、プレイヤキャラクタの選択処理およびゴルフコースの選択処理である。ストロークプレイのゴルフゲームをプレイする場合には、他のプレイヤの数および他のプレイヤの各々の種類(すなわち、人間またはコンピュータ)の選択処理およびホール数の選択処理がさらに実行される。また、マッチプレイのゴルフゲームをプレイする場合には、対戦相手である他のプレイヤの種類の選択処理が実行される。図示は省略するが、プロセッサ81は、各種選択処理を終了すると、プレイヤの操作に応じて、ゴルフゲームを開始する。
一方、ステップS23で“YES”であれば、つまり、ゴルフゲームの開始であれば、ステップS27で、プレイヤキャラクタ302をスタートホールのティーイングエリアの打撃位置に配置し、ステップS29で、第1のパラメータ決定フラグ854uをオンして、全体的なゲーム処理にリターンする。また、ステップS21で“YES”であれば、つまり、ゴルフゲームのプレイ中であれば、ステップS31で、第1のパラメータを決定するかどうかを判断する。ここでは、プロセッサ81は、第1のパラメータ決定フラグ854uがオンであるかどうかを判断する。ステップS31で“NO”であれば、つまり、第1のパラメータを決定しない場合には、ステップS41に進む。
一方、ステップS31で“YES”であれば、つまり、第1のパラメータを決定する場合には、ステップS33で、後述する第1のパラメータ決定処理(図33および図34参照)を実行して、ステップS35で、第2のパラメータ決定操作の開始かどうかを判断する。ここでは、プロセッサ81は、第1指標画像326が初期位置に停止した状態のパラメータ決定画面300が表示されている場合に、Aボタン53が押下されたかどうかを判断する。ただし、ステップS33で、第1のパラメータ決定処理を実行する場合には、プロセッサ81は、全体的なゲーム処理において、図8-図10、図12、図13および図24-図26に示したようなパラメータ決定画面300のゲーム画像データを生成し、ディスプレイ12に出力する。このとき、ボール306の正面方向において、ボール306の現在位置から水平到達距離までの間の表示対象オブジェクトが検出されるとともに、表示対象オブジェクトまでの直線距離が検出され、検出された表示対象オブジェクトが移動ゲージ320の基本領域322内の対応する位置に表示される。
ステップS35で“NO”であれば、つまり、第2のパラメータ決定操作の開始でなければ、全体的なゲーム処理にリターンする。一方、ステップS35で“YES”であれば、つまり、第2のパラメータ決定操作の開始であれば、ステップS37で、第2のパラメータ決定フラグ854vをオンし、ステップS39で、第1のパラメータ決定フラグ854uをオフして、全体的なゲーム処理にリターンする。
ステップS41では、第2のパラメータを決定するかどうかを判断する。ここでは、プロセッサ81は、第2のパラメータ決定フラグ854vがオンであるかどうかを判断する。ステップS41で“YES”であれば、つまり、第2のパラメータを決定する場合には、ステップS43で、後述する第2のパラメータ決定処理(図35-図37参照)を実行して、全体的なゲーム処理にリターンする。ただし、ステップS43で、第2のパラメータ決定処理を実行する場合には、プロセッサ81は、全体的なゲーム処理において、図14-図17に示したようなパラメータ決定画面300のゲーム画像を生成し、ディスプレイ12に出力する。
一方、ステップS41で“NO”であれば、つまり、第2のパラメータを決定しない場合には、図32に示すステップS45で、ボール306を移動させるかどうかを判断する。ここでは、プロセッサ81は、ボール移動フラグ854wがオンであるかどうかを判断する。
ステップS45で“YES”であれば、つまり、ボール306を移動させる場合には、ステップS47で、後述するボール移動処理(図38および図39参照)を実行して、全体的なゲーム処理にリターンする。一方、ステップS45で“NO”であれば、つまり、ボール306を移動させない場合には、ステップS49で、プレイヤキャラクタ302がボール306を打撃した時点であるかどうかを判断する。
ステップS49で“YES”であれば、つまり、プレイヤキャラクタ302がボール306を打撃した時点であれば、ステップS51で、ボール移動フラグ854wをオンし、全体的なゲーム処理にリターンする。一方、ステップS49で“NO”であれば、つまり、プレイヤキャラクタ302がボール306を打撃した時点でなければ、ステップS52で、スイング動作の処理中であるかどうかを判断する。
ステップS52で“YES”であれば、スイング動作の処理中であれば、プレイヤキャラクタ302がスイング動作を開始してからボール306を打撃する前であると判断し、全体的なゲーム処理にリターンする。一方、ステップS52で“NO”であれば、スイング動作の処理中でなければ、ステップS53で、カップインフラグ900eがオンであるかどうかを判断する。
ステップS53で“NO”であれば、つまり、カップインフラグ900eがオフであれば、ステップS55で、プレイヤキャラクタ302を次の打撃位置に移動させ、ステップS57で、第1のパラメータ決定フラグ854uをオンして、全体的なゲーム処理にリターンする。一方、ステップS53で“YES”であれば、つまり、カップインフラグ900eがオンであれば、ステップS59で、スコアを算出する。ここでは、プロセッサ81は、カップインしたホールのスコアと、現在のホールまでの合計のスコアを算出する。
続くステップS61では、プレイする次のホールが有るかどうかを判断する。ステップS61で“YES”であれば、つまり、プレイする次のホールが有れば、ステップS63で、プレイヤキャラクタ302を次のホールのティーイングエリアの打撃位置に移動させ、ステップS65で、第1のパラメータ決定フラグ854uをオンし、ステップS67で、カップインフラグ900eをオフして、全体的なゲーム処理にリターンする。
一方、ステップS61で“NO”であれば、つまり、プレイする次のホールが無ければ、ステップS69で、現在のゴルフコースのプレイを終了して、全体的なゲーム処理にリターンする。
なお、図示は省略するが、後述するように、プレイヤキャラクタ302のスイング動作が開始された後では、図31および図32に示すゲーム制御処理と並行して、プレイヤキャラクタ302のスイング動作の処理が実行される。プレイヤキャラクタ302のスイング動作の処理では、プレイヤキャラクタ302のスイング動作のアニメーションフレームが、最後のアニメーションフレームまでフレーム毎に進められる。
図33に示すように、プロセッサ81は、ステップS33に示した第1のパラメータ決定処理を開始すると、ステップS101で、クラブ選択かどうかを判断する。ここでは、プロセッサ81は、Lボタン38またはRボタン60が押下されたかどうかを判断する。ステップS101で“YES”であれば、つまり、クラブ選択であれば、ステップS103で、プレイヤの操作に従って使用するクラブ304を変更して、図34に示すステップS131に進む。一方、ステップS101で“NO”であれば、つまり、クラブ選択でなければ、ステップS105で、打ち出し方向の変更かどうかを判断する。ここでは、プロセッサ81は、アナログスティック32が左または右に傾倒されたかどうかを判断する。
ステップS105で“YES”であれば、つまり、打ち出し方向の変更であれば、ステップS107で、プレイヤの操作に従って打ち出し方向を変更して、ステップS109で、ボール306の現在位置における地面の傾斜および打ち出し方向に基づいてボール306の曲がり情報を算出する。ただし、プロセッサ81は、算出した曲がり情報に対応する曲がり情報データ854fをDRAM85のデータ記憶領域854に記憶する。
続く、ステップS111では、打ち出し方向において、ボール306の現在位置から水平到達距離の位置までに存在する表示対象オブジェクトを検出する。ただし、プロセッサ81は、検出結果、すわなち、表示対象オブジェクトデータ854gをDRAM85のデータ記憶領域854に記憶または更新する。
続いて、ステップS113では、移動ゲージ320を3D表示中であるかどうかを判断する。ここでは、プロセッサ81は、3Dフラグ854tを参照して、3Dフラグがオンであるかどうかを判断する。ステップS113で“NO”であれば、つまり、移動ゲージ320を2D表示中であれば、ステップS131に進む。一方、ステップS113で“YES”であれば、つまり、移動ゲージ320を3D表示中であれば、ステップS115で、打ち出し方向において、ボール306の現在位置から水平到達距離の位置までの高さ情報を算出して、ステップS131に進む。ただし、プロセッサ81は、算出した高さ情報に対応する高さ情報データ854hをDRAM85のデータ記憶領域854に記憶または更新する。このことは、後述するステップS121も同じである。
また、ステップS105で“NO”であれば、つまり、打ち出し方向の変更でなければ、図34に示すステップS117で、移動ゲージ320の3D表示指示であるかどうかを判断する。ここでは、プロセッサ81は、ZRボタン61が押下されたかどうかを判断する。ただし、3Dフラグ854tがオンである場合には、ZRボタン61が押下されたとしても、その操作は無効にされる。
ステップS117で“YES”であれば、つまり、移動ゲージ320の3D表示指示である場合には、ステップS119で、3Dフラグ854tをオンし、ステップS121で、打ち出し方向において、ボール306の現在位置から水平到達距離の位置までの高さ情報を算出して、ステップS131に進む。
一方、ステップS117で“NO”であれば、つまり、移動ゲージ320の3D表示指示でない場合には、ステップS123で、移動ゲージ320の2D表示指示であるかどうかを判断する。ここでは、プロセッサ81は、ZLボタン39が押下されたかどうかを判断する。ただし、3Dフラグ854tがオフである場合には、ZLボタン39が押下されたとしても、その操作は無効にされる。
ステップS123で“YES”であれば、つまり、移動ゲージ320の2D表示指示である場合には、ステップS125で、3Dフラグ854tをオフして、ステップS131に進む。このとき、高さ情報データ854hは消去されてもよい。
一方、ステップS123で“NO”であれば、つまり、移動ゲージ320の2D表示指示でない場合には、ステップS127で、使用するクラブ304の能力を上げるかどうかを判断する。ここでは、プロセッサ81は、Yボタン56が押下されたかどうかを判断する。ただし、能力上昇パラメータが最大値(100)に満たない場合には、Yボタン56が押下されたとしても、その操作は無効にされる。
ステップS127で“YES”であれば、つまり、使用するクラブ304の能力を上げる場合には、ステップS129で、リスク領域324を縮小して、ステップS131に進む。一方、ステップS127で“NO”であれば、つまり、使用するクラブ304の能力を上げない場合には、ステップS131に進む。
ステップS131では、軌道予想画像132のアニメーションを1フレーム分進めて、ゲーム制御処理にリターンする。したがって、複数の画像132aが基準軌道上を1フレーム分移動する。
図35に示すように、プロセッサ81は、ステップS43に示した第2のパラメータ決定処理を開始すると、ステップS201で、打撃力が決定されているかどうかを判断する。プロセッサ81は、打撃力データ854iがDRAM85のデータ記憶領域854に記憶されているかどうかを判断する。ステップS201で“YES”であれば、つまり、打撃力が決定されていれば、図36に示すステップ217に進む。一方、ステップS201で“NO”であれば、つまり、打撃力が決定されていなければ、ステップS203で、打撃力の決定操作が有るかどうかを判断する。ここでは、プロセッサ81は、パラメータ決定画面300において、第1指標画像326が移動している場合に、Aボタン53が押下されたかどうかを判断する。
ステップS203で“NO”であれば、つまり、打撃力の決定操作が無ければ、ステップS205で、第1指標画像326を1フレーム分移動させて、ゲーム制御処理にリターンする。上述したように、第1指標画像326は、初期位置から移動ゲージ320の上端に向けて移動し、移動ゲージ320の上端に達すると、初期位置に向けて移動する。一方、ステップS203で“YES”であれば、つまり、打撃力の決定操作が有れば、ステップS207で、第1指標画像326を停止し、ステップS209で、打撃力を記憶する。つまり、プロセッサ81は、決定された打撃力に対応する打撃力データ854iをデータ記憶領域854に記憶する。
次のステップS211では、決定された打撃力が75%未満であるかどうかを判断する。ステップS211で“YES”であれば、つまり、決定された打撃力が75%未満であれば、ステップS213で、能力上昇パラメータを所定値(たとえば、20)加算して、ステップS215に進む。一方、ステップS211で“NO”であれば、つまり、決定された打撃力が75%以上であれば、ステップS215に進む。
ステップS215では、図21に示したような対応表を生成し、ゲーム制御処理にリターンする。ただし、プロセッサ81は、生成した対応表に対応する対応表データ854pをデータ記憶領域854に記憶する。
図36に示すように、ステップS217では、方向入力期間が終了したかどうかを判断する。つまり、第2指標画像330が、第1指標画像326が停止している位置に到達したかどうかを判断する。ステップS217で“NO”であれば、つまり、方向入力期間が終了していなければ、ステップS219で、第2指標画像330を1フレーム分移動させて、ステップS221で、今回検出した方向入力を記憶する。上述したように、方向入力は、アナログスティック32の傾倒方向と傾倒量であり、この第1実施例では、上下方向の傾倒量と左右方向の傾倒量に分けられる。
そして、ステップS223で、第2指標画像330が移動中の操作区間322a、322b、322cまたは322dの終端に到達したかどうかを判断する。ステップS223で“YES”であれば、つまり、第2指標画像330が移動中の操作区間322a、322b、322cまたは322dの終端に到達すれば、ステップS225で、当該操作区間322a、322b、322cまたは322dにおけるすべての方向入力を合わせて1つの方向入力すなわち区間方向入力を決定し、ステップS227で、決定した1つの区間方向入力についての強さのレベルを分類し、ステップS229で、決定した1つの方向入力を当該操作区間322a、322b、322cまたは322dにおける各方向入力として書き戻して、ゲーム制御処理にリターンする。
なお、ステップS229の処理が実行された当該操作区間322a、322b、322cまたは322dについては、その後の第2のパラメータ決定処理において、決定された1つの区間方向入力および分類された強さが変更されることはない。
プロセッサ81は、当該操作区間322a、322b、322cまたは322dで検出した各方向入力に対応する方向入力データを、ステップS225で決定した1つの区間方向入力に対応する区間方向入力データで書き換え、方向入力データ854mを更新する。
なお、ステップS225で決定した1つの区間方向入力は、第2指標画像330が当該操作区間322a、322b、322cまたは322dの終端まで移動した後に、プレイヤキャラクタ302がボール306を打撃するまでの間において、当該操作区間322a、322b、322cまたは322dに矢印画像332を表示するために使用される。また、この矢印画像332は、ステップS227で分類した強さのレベルに応じた画像である。このことは、後述するステップS235についても同様である。
一方、ステップS223で“NO”であれば、つまり、第2指標画像330が移動中の操作区間322a、322b、322cまたは322dの終端に到達していなければ、ステップS231で、第2指標画像330が移動中の操作区間322a、322b、322cまたは322dで検出した方向入力の数が所定数(たとえば、10)に達したかどうかを判断する。ステップS231で“NO”であれば、つまり、第2指標画像330が移動中の操作区間322a、322b、322cまたは322dで検出した方向入力の数が所定数に達していなければ、ゲーム制御処理にリターンする。一方、ステップS231で“YES”であれば、つまり、第2指標画像330が移動中の操作区間322a、322b、322cまたは322dで検出した方向入力の数が所定数に達していれば、ステップS233で、当該操作区間322a、322b、322cまたは322dで検出した所定数の方向入力を合わせた1つの区間方向入力を決定し、ステップS235で、決定した1つの区間方向入力についての強さのレベルを分類して、ゲーム制御処理にリターンする。
また、ステップS217で“YES”であれば、つまり、方向入力期間が終了すれば、図31に示すステップS237で、ぶれの抽選期間中であるかどうかを判断する。ステップS237で“YES”であれば、つまり、ぶれの抽選期間中であれば、ステップS239で、ぶれ指示画像328の位置をランダムに変更して、ゲーム制御処理にリターンする。
一方、ステップS237で“NO”であれば、つまり、ぶれの抽選期間中でなければ、ステップS241で、ぶれの抽選期間の終了かどうかを判断する。ステップS241で“NO”であれば、つまり、ぶれの抽選期間の終了でなければ、ぶれの抽選を開始していないと判断して、ステップS243で、ぶれの抽選を開始する。次のステップS245では、対応表の各移動フレームについて、ボール306の軌跡軌道に影響を与える対応範囲を決定し、ステップS247で、プレイヤキャラクタ302のスイング動作を開始して、ゲーム制御処理にリターンする。
また、ステップS241で“YES”であれば、つまり、ぶれの抽選期間の終了であれば、ステップS249で、ぶれを決定し、ステップS251で、第2のパラメータ決定フラグ854vをオフして、ゲーム制御処理にリターンする。ステップS249では、プロセッサ81は、決定したぶれに対応するぶれデータ854kをデータ記憶領域854に記憶する。
なお、図36に示したステップS233で決定した1つの区間方向入力は、第2指標画像330が当該操作区間322a、322b、322cまたは322dの終端まで移動する間に、当該操作区間322a、322b、322cまたは322dに矢印画像332を表示するために使用される。
図38に示すように、プロセッサ81は、ステップS47に示したボール移動処理を開始すると、ステップS301で、ボール306が移動中であるかどうかを判断する。ステップS301で“YES”であれば、つまり、ボール306が移動中であれば、ステップS303で、ボール306が背景オブジェクトに当たったかどうかを判断する。つまり、プロセッサ81は、ボール306がフェアウェイ、ラフおよびバンカーなどの地面オブジェクトに着弾したり、ウォーターハザードまたはOBゾーンのオブジェクトに当たったり、木または建物などの地上オブジェクト、飛行船、気球またはブロックなどの空中オブジェクトに当たったかどうかを判断する。
ステップS303で“NO”であれば、つまり、ボール306が背景オブジェクトに当たっていなければ、図39に示すステップS317に進む。一方、ステップS303で“YES”であれば、つまり、ボール306が背景オブジェクトに当たっていれば、ステップS305で、上述したような移動停止処理を実行して、ゲーム制御処理にリターンする。
また、ステップS301で“NO”であれば、つまり、ボール306が移動中でなければ、ステップS307で、ボール306が移動開始前であるかどうかを判断する。ステップS307で“NO”であれば、つまり、ボール306が移動開始前でなければ、ボール306が停止したと判断して、ステップS309で、ボール306がカップインしたかどうかを判断する。
ステップS309で“NO”であれば、つまり、ボール306がカップインしていなければ、ステップS313に進む。一方、ステップS309で“YES”であれば、つまり、ボール306がカップインしていれば、ステップS311で、カップインフラグ900eをオンして、ステップS313に進む。ステップS313では、ボール移動処理を終了し、ゲーム制御処理にリターンする。
なお、ステップS313の処理が実行されることにより、ボール306は移動中ではなくなる。
また、ステップS307で“YES”であれば、つまり、ボール306が移動開始前であれば、ステップS315で、変数nを1に設定して(n=1)、図39に示すステップS321に進む。変数nは、対応表における移動フレーム数を示す。
図39に示すように、ステップS317では、変数nが最大値nmaxを超えているかどうかを判断する。ステップS317で“NO”であれば、つまり、変数nが最大値nmaxを超えていなければ、ステップS325に進む。一方、ステップS317で“YES”であれば、つまり、変数nが最大値nmaxを超えていれば、ステップS319で、変数nが最大値nmaxのときに算出した速度ベクトルを用いて、1フレーム分移動後のボール306の位置を算出して、ゲーム制御処理にリターンする。
また、ステップS321では、ぶれが有るかどうかを判断する。ステップS321で“NO”であれば、つまり、ぶれが無ければ、ステップS325に進む。一方、ステップS321で“YES”であれば、つまり、ぶれが有れば、ステップS323で、ぶれに応じてボール306の打ち出し方向を変化させて、ステップS325に進む。
ステップS325では、移動フレーム数nに対応する位置の操作フレーム数pの方向入力を検出した操作区間322a、322b、322cまたは322dおよび当該操作区間322a、322b、322cまたは322dの矢印画像332をハイライトの対象に決定する。次のステップS327では、移動フレーム数nに対応する対応範囲における複数の区間方向入力を平均化した方向を反映して、1フレーム分移動後のボール306の位置を算出する。そして、ステップS329で、変数nを1加算して(n=n+1)、ゲーム制御処理にリターンする。
図40は他の実施例のボール移動処理の一部を示すフロー図である。他の実施例のボール移動処理では、ぶれがある場合に、移動後のボール306の軌道にぶれの影響を与える。したがって、図39に示したステップS321およびS323が削除され、図38に示したステップS315の処理を実行すると、ステップS325に進む。また、図40に示すように、ステップS341およびS343がステップS327とS329の間に設けられる。
具体的には、ステップS327の処理を実行すると、ステップS341で、ぶれが有るかどうかを判断する。ステップS341で“NO”であれば、つまり、ぶれが無ければ、ステップS329に進む。一方、ステップS341で“YES”であれば、つまり、ぶれが有れば、ステップS343で、ステップS327で算出したボールの位置をぶれに応じて変更して、ステップS329に進む。他の処理については、図39を用いて説明した処理と同じである。
なお、ぶれがある場合に、ボール306の打ち出し方向と移動後のボール306の軌道の両方を変化させる場合には、図39に示したステップS327とS329の間において、図40に示したステップS341およびS343をさらに実行するようにすればよい。
この第1実施例によれば、ボールの飛距離が長くなるにつれてボールがぶれる可能性が高くなるため、飛距離を優先するか、方向性を優先するかという戦略性が生じる。したがって、従来のゴルフゲームのように、パワーゲージを用いた打撃操作において、操作タイミングを覚えることによるゴルフゲームへの興味減退を出来る限り防止することができる。
また、この第1実施例によれば、ぶれ量は移動ゲージの幅で表現されるため、打撃力を決定するときに、ぶれのリスクを認識することができるとともに、打撃力が決定された後は、ぶれ指示画像が打撃力を決定した第1指標画像に沿って表示されるため、視線移動も無くスムーズに把握することができる。
なお、この第1実施例では、第1指標画像を停止させる位置に応じて、ボールを打撃する場合の打撃力を決定するようにしたが、ボールの初速度、ボールの水平到達距離またはボールの移動距離を決定するようにしてもよい。つまり、第1指標画像を停止させる位置に応じて、ボールの移動距離または移動距離に関するパラメータのいずれかが決定される。
また、この第1実施例では、移動ゲージを予め決定された位置に表示し、移動ゲージ内を第1指標画像および第2指標画像が移動するようにしたが、これに限定される必要はない。第1指標画像および第2指標画像は移動ゲージに沿って移動するようにしてもよい。また、移動ゲージを予め表示せずに、単に、初期位置から他方端に向けてゲージ(または、バー)が徐々に伸びるように表示し、プレイヤの操作に応じて、ゲージが伸びるのを停止して、打撃力を決定し、打撃力を決定するために表示したゲージ内を、または、ゲージに沿って、初期位置からゲージの上端まで第2指標画像に相当する指標を移動させ、その間に検出した方向入力に基づいてボールの軌道を変化させてもよい。
さらに、この第1実施例では、方向入力期間に検出した方向入力を区間毎にまとめた区間方向入力を用いて、矢印画像を表示するとともに、軌道の全体または一部を変化させるようにしたが、これに限定される必要はない。他の実施例では、矢印画像を表示する場合と、軌道を変化させる場合とで、区間方向入力の算出方法を異ならせてもよい。一例として、矢印画像を表示する場合には、第1実施例に記載のとおり、操作区間における複数の方向入力の平均値を算出するが、軌道を変化させる場合には、操作区間における複数の方向入力から最大の傾倒量である方向入力を算出(または、抽出)する。また、同じ平均値を算出する場合であっても、矢印画像の表示の場合と、軌道の変化の場合とで、平均値の算出に用いる方向入力の数を異ならせるようにしてもよい。
さらにまた、この第1実施例では、第2指標画像は、移動ゲージの下端から、停止した第1指標画像の位置まで移動するようにしたが、移動ゲージの下端から上端まで移動してもよい。この場合であっても、方向入力期間は、第2指標画像が、移動ゲージの下端から、停止した第1指標の画像の位置に移動するまでの時間である。ただし、方向入力期間は、第2指標画像が移動ゲージの下端から上端に移動するまでの時間であってもよい。すなわち、第1指標画像が停止された位置に拘わらず、一定の方向入力期間が設けられるようにしてもよい。
また、この第1実施例では、操作区間毎に、各操作区間におけるすべての方向入力についての平均値を算出するようにしたが、これに限定される必要はない。他の実施例では、区間毎に、区間の中における所定のタイミングで検出された方向入力を、当該区間の方向入力に決定してもよい。
さらに、この第1実施例では、移動ゲージを均等に分割するようにしたが、均等に分割しなくてもよい。たとえば、移動ゲージは、それぞれ、第1操作区間から第4操作区間に向かうに従って長くなるように設定されてよい。
さらにまた、この第1実施例では、移動ゲージを4つの操作区間に分割するようにしたが、操作区間が2つ以上であれば、移動ゲージを5つ以上に分割することもできる。ただし、操作区間が多くなるにつれて、一打においてボールの軌道を変化させるための操作の回数が多くなるため、ゲームの難易度またはプレイヤのレベルが高くなるにつれて、移動ゲージが分割される数が増えるようにしてもよい。この場合、ゲームを開始した当初においては、移動ゲージを分割せずに、ゲームの難易度またはプレイヤのレベルが或る程度高くなると、2つに分割し、さらに、ゲームの難易度またはプレイヤのレベルが高くなるにつれて、分割される数が次第に増加されてもよい。また、プレイヤが使用するキャラクタの種類、キャラクタのレベルなどの能力に応じて、移動ゲージが分割される数が設定されるようにしてもよい。さらに、プレイヤまたはプレイヤキャラクタが所定のアイテムを使用することで、移動ゲージが分割される数が設定されても良い。また、プレイヤが所望の分割数を設定できてもよい。
また、この第1実施例では、移動ゲージは、横幅を有し、縦方向に延びる形状にしたが、これに限定される必要はない。移動ゲージは、横方向に延びる形状にしてもよいし、角丸のL字状に形成されてもよい。つまり、第1指標画像および第2指標画像が一方端から他方端に向けて移動可能な形状であればよい。
さらに、この第1実施例では、移動ゲージは、固定位置に表示されるようにしたが、これに限定される必要はない。他の実施例では、第2のパラメータ決定操作が開始されると、背景画像の邪魔にならない任意の位置に第1指標を表示し、第1指標を最初に表示した位置を初期位置として予め決められた方向(たとえば、上方)に向けて移動させるようにしてもよい。つまり、第1指標画像が初期位置から移動することにより、移動ゲージが初期位置から延びるように表示される。ただし、第1指標画像の移動可能な範囲(長さ)は、第1実施例に示した移動ゲージと同様に予め決定されている。また、プレイヤの停止操作に応じて第1指標画像は停止され、初期位置と停止位置の距離に応じて打撃力が決定される。この停止位置における第1指標画像の幅方向において、ぶれ指示画像の位置が抽選で決定される。ただし、基本領域およびリスク領域の大きさと形状は、上述の第1実施例と同様に決定される。したがって、第1指標画像は移動するに従って初期位置における第1指標画像に対して傾斜し、リスク領域が設定された位置では、第1指標画像の横幅は長くされる。また、上述の第1実施例と同様に、第1指標画像の初期位置から第1指標画像の停止位置まで、第2指標画像を移動させる方向入力期間において、プレイヤの方向入力を検出し、検出した方向入力に基づいてボールの軌道に影響を与える。
さらにまた、この第1実施例では、移動ゲージは、各領域の終端側の線を傾斜させるようにしたが、傾斜させなくてもよい。この場合には、ぶれに応じて移動距離を変化させてもよいし、変化させなくてもよい。
また、この第1実施例では、第1指標画像と指示画像は別の画像にしたが、これに限定される必要はない。たとえば、第1指標画像と指示画像として機能する点画像を表示し、打撃力を決定する場合には、移動ゲージ内をその長手方向に移動し、ぶれを決定する場合には、移動ゲージ内のその短手方向に移動するようにしてもよい。
さらに、この第1実施例では、移動ゲージのうちの基本領域の外側にリスク領域を設けるようにしたが、基本領域の内側にリスク領域を設けるようにしてもよい。かかる場合には、打撃力が大きくなるにつれて、ぶれる率およびぶれ量が大きくなるように、リスク領域が大きくされる。たとえば、リスク領域を、移動ゲージの基本領域の横幅の中心(または中央)に設定し、ぶれ指示画像がリスク領域内において、中心から幅方向にずれるに従ってぶれが大きくされる。また、たとえば、移動ゲージの基本領域において、ぶれ指示画像が横幅の中心から横幅方向にずれるにしたがってぶれが大きくされるようにしてもよい。この場合、基本領域の横幅の中心点以外をリスク領域と捉えることができる。ただし、基本領域の縦方向において、どこからリスク領域を設けるかについては、打撃の難易度によって決定することができる。
さらにまた、この第1実施例では、移動ゲージのうちの基本領域内であっても、ぶれは有るが、他の実施例では、基本領域内ではぶれは無く、リスク領域内でぶれが有るようにしてもよい。
また、この第1実施例では、方向入力期間が終了したときに、ぶれを決定するようにしたが、打撃力が決定された後であれば、ボールが移動開始する前までの任意のタイミングで決定することができる。
さらに、この第1実施例では、ぶれを抽選で決定するようにしたが、これに限定される必要はない。プレイヤの操作に応じてぶれ指示画像の移動が停止され、ぶれ指示画像の位置すなわちぶれが決定されてもよい。
さらにまた、この第1実施例では、第1指標画像を停止させた位置に応じて打撃力を決定するようにしたが、ぶれを決定したときのぶれ指示画像の位置に応じて打撃力を決定するようにしてもよい。上述したように、第1指標画像は移動ゲージの終端に向かうに従って傾斜されるため、ぶれに応じて打撃力の大きさが変化するため、基準軌道の水平到達距離が変化される。このようにしても、ドローボールとフェードボールの違いにより移動距離を変化させることができる。
また、この第1実施例では、第1指標画像が停止された位置に関係無く、ぶれを決定するため、リスク領域の手前の基本領域内においてもぶれを決定するようにしたが、第1指標画像が停止された位置がリスク領域の手前である場合には、ぶれを決定しないようにしてもよい。
さらに、この第1実施例では、移動ゲージ内を第1指標画像および第2指標画像が移動し、それに伴って、移動した部分の色を変化させるようにしたが、色は変化させなくてもよい。
さらにまた、この第1実施例では、コントローラの操作ボタンおよびアナログスティックを操作することにより、操作入力を行うようにしたが、これに限定される必要はない。他の実施例では、コントローラに2軸または3軸のジャイロセンサのようなモーションセンサを設けて、プレイヤが本体装置2から外したコントローラ(左コントローラ3および右コントローラ4のいずれか一方)を握ってスイングすることで操作入力するようにしてもよい。つまり、プレイヤがコントローラを動かす動作で、一度に、打撃力およびボールの軌道が決定される。この場合、プレイヤが、アドレス状態から、コントローラを振り上げたときの振り上げの大きさをジャイロセンサで検出し、コントローラを振り上げた位置からコントローラを振り下ろしてアドレス状態の位置に戻ってくるまでの手首の回転角度をジャイロセンサで検出する。一例として、コントローラの振り上げの大きさで打撃力が決定される。また、予め正しくスイングした場合の手首の回転角度の時間変化(以下、「基準の回転角度」)が記憶されており、基準の回転角度と、プレイヤがコントローラを動かしたときの手首の回転角度の違いに基づいて、ボールの軌道の種類(たとえば、ドロー、フェード、フック、スライス)が判定される。この判定結果に従って、ボールの軌道の種類に応じて予め決定された矢印画像が移動ゲージ内に表示され、ボールは判定された軌道に従って移動される。ただし、ボールの打ち出し角度は選択したクラブによって決まっている。また、加速度センサを設けることにより、コントローラを振り下ろしてアドレス状態の位置に戻ってきたときのコントローラの加速度を検出して、打撃力に換算してもよい。
また、この第1実施例では、ゴルフゲームについて説明したが、他のスポーツゲームにも適用可能である。他のスポーツとしては、サッカー、野球、テニス、バレーボール、ボウリングおよびバドミントンなどが該当する。サッカーの場合には、シュートやフリーキックの場面で、キックしたボールの軌道を経時的な方向入力に従って変更することができる。また、野球の場合には、ピッチャーが投球したり、バッターが打撃したりしたボールの軌道を経時的な方向入力に従って変更することができる。さらに、テニスおよびバレーボールでは、手またはラケットで打ったボールの軌道を経時的な方向入力に従って変更することができる。ボウリングでは、野球のピッチャーと同様に、投球したボールの軌道を経時的な方向入力に従って変更することができる。そして、バドミントンでは、テニスと同様に、ラケットで打ったシャトルの軌道が経時的な方向入力に従って変更することができる。
また、上述の第1実施例では、情報処理システムの一例としてゲームシステム1を示したが、その構成は限定される必要は無く、他の構成を採用することが可能である。たとえば、上記「コンピュータ」は、上述の第1実施例においては、1つのコンピュータ(具体的には、プロセッサ81)であるが、他の実施例においては、複数のコンピュータであってもよい。上記「コンピュータ」は、例えば、複数の装置に設けられる(複数の)コンピュータであってもよく、より具体的には、上記「コンピュータ」は、本体装置2のプロセッサ81と、コントローラが備える通信制御部(マイクロプロセッサ)101、111とによって構成されてもよい。
さらに、他の実施例では、インターネットのようなネットワーク上のサーバで、全体的なゲーム処理の一部(S5-S9)を実行するようにしてもよい。かかる場合には、本体装置2のプロセッサ81は、左コントローラ3および右コントローラ4から取得した操作データを、ネットワーク通信部82およびネットワークを介して上記のサーバに送信し、サーバで全体的なゲーム処理の一部を実行された結果(つまり、ゲーム画像のデータおよびゲーム音声のデータ)を受信して、ゲーム画像をディスプレイ12に表示するとともに、ゲーム音声をスピーカ88から出力する。つまり、上述の第1実施例で示したゲームシステム1とネットワーク上のサーバを含む情報処理システムを構成することもできる。
また、上述の第1実施例では、ディスプレイ12にゲーム画像を表示する場合について説明したが、これに限定される必要はない。本体装置2を、クレードルを介して据置型モニタ(たとえば、テレビモニタ)に接続することにより、ゲーム画像を据置型モニタに表示することもできる。かかる場合には、ゲームシステム1と据置型モニタを含む情報処理システムを構成することもできる。
さらに、上述の第1実施例では、本体装置2に左コントローラ3および右コントローラ4を着脱可能な構成のゲームシステム1を用いた場合について説明したが、これに限定される必要はない。たとえば、左コントローラ3および右コントローラ4と同様の操作ボタンおよびアナログスティックを有する操作部を本体装置2に一体的に設けたゲーム装置またはゲームプログラムを実行可能な他の電子機器のような情報処理装置を用いることもできる。他の電子機器としては、スマートフォンまたはタブレットPCなどが該当する。かかる場合には、操作部はソフトウェアキーで構成することもできる。
さらにまた、上述の第1実施例で示した具体的な数値および画像の構成は一例であり、実際の製品に応じて適宜変更可能である。
たとえば、ぶれの決定は、打撃力が決定された後、方向入力の検出を終了するまでの間に行っても良いし、プレイヤキャラクタがスイング動作を開始した後、ボールを打撃するまでの間に行っても良い。
また、第2のパラメータ決定処理は、大きく分けて、打撃力を決定する処理(S203-S209)、プレイヤによる方向入力を検出する処理(S217-S221)およびぶれを決定する処理(S237-S243、S249)を含むが、プレイヤによる方向入力を検出する処理だけを含んでもよい。かかる場合には、たとえば、打撃力を決定する処理およびぶれを決定する処理は、他の(たとえば、第3の)パラメータ決定処理として、第2のパラメータ決定処理の前に実行される。
[第2実施例]
上述の第1実施例では、3D表示した移動ゲージの右側(または、横)に、ボールの正面方向における障害オブジェクトの高さの変化を折れ線で表示するようにしたが、これに限定される必要はない。この第2実施例では、移動ゲージとは別に、プレイヤが指示した位置までの距離および障害オブジェクトの高さの変化を表示(以下、「距離高度計表示」という)するようにしてもよい。ただし、この距離高度計表示については、上記の移動ゲージの横の折れ線の表示に代えて、または、上記の移動ゲージの横の折れ線の表示とともに、実施される。以下、距離高度計表示について、具体的に説明する。ただし、ここでは、距離高度計表示について図示および説明を行い、上記の移動ゲージの横の折れ線の表示についての図示および説明は省略する。
図41はパラメータ決定画面300の他の例を示す図であり、図42は距離高度測定画面400の一例を示す図である。
図41のパラメータ決定画面300は、図8に示したパラメータ決定画面300とは異なるホールについての画面であり、背景画像308が異なる。なお、図41に示す点線枠Rは、一部の障害オブジェクトの範囲を示しているだけであり、実際のゲーム画像では表示されることはない。
図41に示すようなパラメータ決定画面300がディスプレイ12に表示されている場合において、第2のパラメータ決定操作の開始の指示が行われる前に、所定のボタン(たとえば、ZRボタン61)が押下されると、図42に示すような距離高度測定画面400がディスプレイ12に表示される。以下、図42-図45に示す距離高度測定画面400および起伏表示画面450について説明するが、背景画像308およびピン310はパラメータ決定画面300と同じ参照符号を付してある。
距離高度測定画面400は、背景画像308およびピン310に加え、ポインタ画像402、グラフ画像404および線オブジェクト406を含む。距離高度測定画面400では、プレイヤキャラクタ302および移動ゲージ320は表示されない。一例として、距離高度測定画面400は、仮想のカメラ(すなわち、視点)の位置がボール306の現在位置の所定距離(たとえば、プレイヤキャラクタ302の身長程度)上方に設定された場合の仮想のカメラの撮影画像である。ただし、これは一例であり、距離高度測定画面400を表示する場合の仮想のカメラの位置は、ボール306の現在位置またはプレイヤキャラクタ302の頭部(または、目)の位置に設定されてもよい。また、仮想のカメラは、ズームインされ、後述するポインタ画像402で指示された位置辺りの障害オブジェクト等の状況を見ることができる。このように仮想のカメラを設定することにより、現実のゴルフに用いられるレーザ距離計を覗いたゴルフのプレイヤに見える情景(または、内容)と同様の情景についての距離高度測定画面400をディスプレイ12に表示することができる。
また、距離高度測定画面400が表示される当初においては、仮想のカメラの注視点は、所定の位置に設定される。所定の位置は、現在のボール306の位置に基づいて決定される。たとえば、使用中のクラブ304の水平到達距離で、フェアウェイの真ん中の位置またはカップの位置に設定される。ただし、これは一例であり、所定の位置は、プレイヤが指示するようにしてもよい。図42に示す例では、所定の位置は、使用中のクラブ304の水平到達距離で、フェアウェイの真ん中の位置に設定される。
ポインタ画像402は、常に、距離高度測定画面400の中央に表示される。つまり、ポインタ画像402は、その中心位置が仮想のカメラの注視点の位置に重なる位置に配置される。
ただし、ポインタ画像402は、その中心位置が仮想のカメラの注視点の位置に重ならない位置に配置されてもよい。
また、距離高度測定画面400が表示されている場合には、プレイヤがアナログスティック52を傾倒させると、傾倒させた方向に仮想のカメラの注視点が移動される。つまり、仮想のカメラの向きが変更され、距離高度測定画面400が変更される。したがって、ポインタ画像402は、仮想のカメラの注視点の移動に従って移動される。
ただし、仮想のカメラの注視点は、仮想のカメラから一定距離離れた位置に設定され、ニアクリッピング面とファークリッピング面の間であり、ニアクリッピング面およびファークリッピング面と平行な平面内を移動される。
ポインタ画像402は、視点から延びて注視点を通る仮想の直線が障害オブジェクトに当たる場合に、当該障害オブジェクトに当たる位置を指示する。ただし、この仮想の直線が2以上の障害オブジェクトに当たる場合には、ポインタ画像402は、視点に近い方の障害オブジェクトに当たる位置を指示する(図44および図45参照)。
なお、仮想の直線が障害オブジェクトに当たらない場合には、ポインタ画像402は、視点から所定距離(たとえば、使用するクラブ304の水平到達距離)だけ離れた位置を指示する。ただし、ポインタ画像402によって指示される位置は、ポインタ画像402の中心によって指示される位置(以下、「指示位置」という)を意味する。
ポインタ画像402が障害オブジェクトを指示すると、ボール306の現在位置を基準として、距離および高度が計測され、計測された距離および高度が表示される。距離はポインタ画像402の下方に表示され、高度はポインタ画像402の右上方に表示される。距離は、仮想空間内における、ボール306の現在位置から、ポインタ画像402による指示位置までの高さ方向の成分を含まない水平距離である。ただし、距離は、ボール306の現在位置から指示位置までの直線距離(3次元距離)でもよい。また、高度は、仮想空間内における、ボール306の現在位置の高さを基準とした場合に、ポインタ画像402による指示位置の高さの差である。ただし、ボール306の現在位置の高さを基準として、ポインタ画像402による指示位置が上方である場合には、プラスの数字で表示され、ポインタ画像402による指示位置が下方である場合には、マイナスの数字で表示される。
したがって、プレイヤは、ポインタ画像402で障害オブジェクトを指示することにより、ボール306の現在位置から障害オブジェクトまでの水平距離およびボール306の現在位置に対する高さ(すなわち、高度)を知ることができる。また、障害オブジェクトまでの水平距離および高度を知ることで、使用するクラブ304の種類を選択する場合および軌道を変化させる方向および変化量を決定する場合の参考にすることができる。
グラフ画像404は、所定の大きさの矩形の枠404aを含み、この枠404a内において、ボール306の現在位置の高さを基準として、ボール306の現在位置から指示位置までの間に存在する障害オブジェクトの高さの変化を示す折れ線4040が記載される。ただし、図42では、ボール306の現在位置から指示位置までの障害オブジェクトの起伏がほとんどないため、折れ線4040はなだらかな直線になっている(図43も同じ)。枠404aにおいて、左端にボール306の現在位置が設定され、右端に指示位置が設定される。グラフ画像404では、四角の点が指示位置の高さの位置に記載される。ただし、枠404a内の上下方向の中心に、横方向に延びる一点鎖線は、ボール306の現在位置の高さを示す基準線4042である。また、障害オブジェクトの高さを検出する方法は、上述の第1実施例で説明した方法と同じであるが、異なる方法であってもよい。
なお、グラフ画像404は、背景画像308などの背面側の画像が見えるように、半透明で表示される(図44および図45参照)。
枠404aの大きさは固定され、ボール306の現在位置とポインタ画像402の指示位置までの水平距離が、枠404aの横幅の長さに対応するように設定(たとえば、縮尺)される。
また、障害オブジェクトの高さは、枠404aの縦幅の長さに対応するように設定(たとえば、縮尺)される。ただし、障害オブジェクトの高さを分かり易く示すために、縦方向の縮尺率は横方向よりも小さく設定される。一例として、枠404aの長さの縦横比は1:2であるが、縮尺率の縦横比は3:5である。ただし、縮尺率の縦横比は固定される必要はなく、指示位置がボール306の現在位置から比較的離れている場合には、障害オブジェクトの高さが低くなり、折れ線4040で分かり難くなるため、縦方向の縮尺率をさらに小さく設定してもよい。
さらに、距離高度測定画面400では、ボール306の現在位置から使用中のクラブ304の水平到達距離だけ離れた位置に、ボール306の到達位置の目安となる線オブジェクト406が表示される。一例として、線オブジェクト406は、明るく太い線のオブジェクトである。したがって、使用中のクラブ304でボール306を打撃した場合の到達位置を容易に予想することができる。
また、線オブジェクト406において、ボール306の着弾点に目印となる画像(以下、「目印画像」という)406aが表示される。ただし、ボール306の着弾点は、プレイヤキャラクタ302が現在の打ち出し方向にボール306を打撃し、打撃したボール306がまっすぐ飛んだ場合に、着弾すると予想される位置である。したがって、着弾すると予想される位置を容易に知ることができる。
なお、上述の第1実施例および図41では省略したが、線オブジェクト406および目印画像406aは、パラメータ決定画面300に表示されてもよい。
また、上述したように、仮想のカメラの向き、すなわち、距離高度測定画面400は変更可能である。図43は図42に示す距離高度測定画面400が表示されている場合に、プレイヤが仮想のカメラの向きを右斜め下方に移動させるように操作することで、ディスプレイ12に表示される距離高度測定画面400の一例である。
図43では、ポインタ画像402は、線オブジェクト406よりも手前側の地面オブジェクトを指示するため、図42に示す場合よりも、ボール306から指示位置までの距離が短くなっている。また、グラフ画像404では、枠404aの横幅に対して、ボール306の現在位置から指示位置までの水平距離が設定される。
また、図42および図43に示すポインタ画像402およびグラフ画像404の近傍に表示された高さを見ると、線オブジェクト406の手前側の方が、高度が少し高くなっているため、図43に示すポインタ画像402の指示位置から前方に向かうに従って、少し下り傾斜になっていることが分かる。
また、図42または図43に示す距離高度測定画面400が表示されている場合に、プレイヤが仮想のカメラの向きを右斜め下方に移動させるように操作することで、図41の点線で囲んだ点線枠Rの辺りをポインタ画像42で指示することも可能である。図44および図45は、距離高度測定画面400の他の例を示す。
図44の距離高度測定画面400は、上記のように、仮想のカメラの向きを移動させて、図41の点線枠R内であって、手前と奥に並んで配置される2本の樹木についての地上オブジェクトのうち、奥側の樹木についての地上オブジェクトに仮想のカメラを向けた場合にディスプレイ12に表示される。また、図45の距離高度測定画面400は、上記のように、仮想のカメラを移動させて、図41の点線枠R内であって、手前と奥に並んで配置される2本の樹木についての地上オブジェクトのうち、手前の樹木についての地上オブジェクトに仮想のカメラを向けた場合にディスプレイ12に表示される。
図44に示すように、仮想のカメラが奥側の樹木に向けられる場合には、ボール306の現在位置から奥側の樹木の指示位置までの水平距離がポインタ画像402の近傍に表示されるとともに、枠404aの横幅に対応するように設定される。また、グラフ画像404からも分かるように、仮想のカメラがが奥側の樹木に向けられる場合、ボール306と奥側の樹木の間には、手前側の樹木が配置されるため、ボール306の現在位置と指示位置との間においては、手前側の樹木による高さの変化が折れ線4040に現れている。
また、図45に示すように、仮想のカメラが手前側の樹木に向けられる場合には、ボール306の現在位置から手前側の樹木の指示位置までの水平距離がポインタ画像402の近傍に表示されるとともに、枠404aの横幅に対応するにように設定される。また、グラフ画像404からも分かるように、仮想のカメラが手前側の樹木に向けられる場合、ボール306と手前側の樹木の間には、地上オブジェクトが配置されていないため、ボール306の現在位置と指示位置との間においては、地面オブジェクトの起伏のみが折れ線4040に現れている。
図示は省略するが、上述したように、距離高度測定画面400がディスプレイ12に表示される場合には、プレイヤの操作に従って仮想のカメラの向きが変更されるため、ポインタ画像402が線オブジェクト406よりも先の障害オブジェクトを指示することもある。つまり、使用するクラブ304の水平到達距離を超えて距離を計測することも可能である。したがって、使用するクラブ304の番手を上げるかどうかを決定する場合に参考にすることができる。
図46は起伏表示画面450の一例を示す。起伏表示画面450は、距離高度測定画面400が表示されているときに、さらに所定のボタン(ここでは、ZRボタン61)が操作されると、ディスプレイ12に表示される。図46に示す起伏表示画面450は、図43に示した距離高度測定画面400が表示されている状態で、所定のボタンが操作された場合に、ディスプレイ12に表示される。
図46に示すように、起伏表示画面450では、背景画像308に加えて、ポインタ画像402、線オブジェクト406および目印画像406aが表示されるとともに、グリッド画像460が表示される。また、起伏表示画面450では、グラフ画像404は消去(または、非表示)される。これは、起伏表示画面450では、ポインタ画像402による指示位置を中心とする所定の範囲の起伏を視認可能に表示するためである。一例として、所定の範囲は、ポインタ画像402を中心とし、この中心を仮想空間の真上から見た場合において、縦横の長さが40ヤードずつの正方形で決定される範囲である。ただし、これは一例であり、ポインタ画像402の指示位置に応じて所定の範囲は可変的に設定されてもよい。
また、起伏表示画面450では、障害オブジェクト(図46では、地面オブジェクト)の起伏を見やすくするために、距離高度測定画面400を表示する場合よりも、少し俯瞰的に見るように、仮想のカメラの位置が高く設定されている。なお、ポインタ画像402の中心位置は、仮想のカメラの注視点の位置に重なる位置のままである。
図46からも分かるように、グリッド画像460は、地面オブジェクトのような障害オブジェクト上に表示されたガイド線(すなわち、グリッド線)の画像であり、地面オブジェクトの起伏がグリッド線の形状の変化によって表現される。
プレイヤは、起伏表示画面450を見ることで、ポインタ画像402の指示位置付近の地形を知ることができ、たとえば、ボール306を着弾させる位置を決めることができる。
また、起伏表示画面450が表示されている場合に、所定のボタン(この第2実施例では、ZLボタン39)が押下されると、距離高度測定画面400に戻される。さらに、距離高度測定画面400が表示されている場合に、所定のボタン(すなわち、ZLボタン39)が押下されると、パラメータ決定画面300に戻される。ただし、起伏表示画面450が表示されている場合には、他の所定のボタン(この第2実施例では、Bボタン54)が押下されると、距離高度測定画面400に戻さずに、パラメータ決定画面300に戻されてもよい。
第2実施例においても、第1実施例の効果に加え、ユーザがポインタ画像で指示する指示位置までの距離および高度または地面の起伏を知ることができる。
[第3実施例]
第3実施例では、ボール306が移動を開始してからディスプレイ12に表示されるゲーム画像によって、ボール306が飛行中か地面を転がっているか、つまり、キャリーとランを分かり易く示すようにした以外は、第1実施例および第2実施例と同様であるため、重複した説明は省略する。
以下、ボール306が移動を開始してから移動を停止するまでに表示されるゲーム画像について説明するが、パラメータの設定等は第1実施例と同じであるため、その説明は省略することにする。また、同様の理由により、ボール306の軌道を変化させるための操作が行われなかったものとして、ボール306が移動される場合のゲーム画像について説明する。
図47は、図41に示したパラメータ決定画面300において、パラメータの決定等の操作が実行され、プレイヤキャラクタ302がボール306を打撃し、ボール306が移動を開始した直後のパラメータ決定画面300の一例を示す。
図47に示すように、第3実施例では、ボール306が移動を開始すると、これと同時またはほぼ同時に、ボール306が飛行中か地面を転がっているかを移動距離とともに示すための画像(以下、「移動指示画像」という)510が表示される。
移動指示画像510は、ゲーム画像(ここでは、パラメータ決定画面300)の中央下部に表示される。一例として、この移動指示画像510は、黒色の横棒510a、横棒510aの前面に重なる白色の横棒510b、および、横棒510aと横棒510bの上方に表示される線510cで構成される。また、移動指示画像510の上方には、現フレームまでのボール306の水平距離が表示される。
横棒510aは、ボール306の最大飛距離を示し、所定の長さに固定され、その所定の長さはプレイヤキャラクタ302が使用中のクラブ304の最大飛距離に対応する。横棒510bは、打撃したボール306の計算上の飛距離を示し、決定された打撃力に応じたボール306の飛距離に応じた長さに設定される。
ただし、移動指示画像510では、左端が現在のボール306の位置に相当する。したがって、横棒510aおよび横棒510bでは、左端が距離0であり、右に向かうに従って距離が長くなる。図47に示すパラメータ決定画面300では、横棒510aに対する横棒510bの長さからも、打撃力が50%程度に決定されたことが分かる。
また、線510cは、仮想空間において、ボール306が移動する様子を横から見た場合のボール306の軌道を時間の変化に従って2次元で示す。したがって、ボール306が空中を移動する場合には、放物線の形状の線510cが描画される。ボール306が空中を移動する場合には、線510cは、移動前のボール306の位置と、現在のボール306の位置の水平距離と、地面から現在のボール306の位置までの高さを取得して、それに応じた放物線(弾道)で描画される。ボール306の移動開始時点の高さと着弾した地点の高さとは等しくなるように線510cは描画されるが、高さの違いを反映して描画されてもよい。また、放物線の描画方法はこれに限られない。例えば、予め用意された放物線画像を、打撃力やボール306の現在位置に応じて適宜変形し、時間経過とともに徐々に左から描画してもよい。
また、ボール306が地面を転がる場合には、地面からのボール306の高さは0ヤードであるため、線510cは直線の横線で描画される。後述するように、ボール306が地面を転がる場合には、線510cを点線の直線で示してある(図49参照)。これはボール306が空中を移動しているか地面を転がっているかを分かり易く示すためである。ただし、これは一例であり、線510cは、実線の放物線と実線の直線で示し、互いに異なる色を付してもよい。また、線510cは、単一の色を付してもよい。図47に示すパラメータ決定画面300では、ボール306は水平方向に22ヤード移動し、上下方向の打ち出し方向に従って高度が次第に高くなっていることが分かる。なお、着弾後にボール306がバウンドする場合も、地面を転がっているものとして線510cを直線で示してもよい。
ボール306が或る程度移動すると、つまり、ボール306が移動を開始してから所定時間(たとえば、0.5秒)経過すると、ボール306が移動する様子を示すゲーム画像(以下、「ボール移動画面500」という)がディスプレイ12に表示される。第1実施例で説明したように、ボール306が移動を開始した後では、仮想のカメラは、ボール306の後方であり、斜め上方から俯瞰的に撮影するように移動される。ただし、詳細な説明は省略するが、仮想のカメラは、基準軌道でボール306が移動したと仮定した場合の架空のボールを追従するように移動される。また、ボール306がゲーム画像(すなわち、に収まるように、仮想のカメラの画角が適宜調整される。
図48はボール306が飛行中の場合のボール移動画面500の一例を示す。図49はボール306が着弾した後に地面を転がっている場合のボール移動画面500の一例を示す。
図48に示すボール移動画面500では、図47に示したパラメータ決定画面300よりもさらにボール306が移動し、水平距離が61ヤードであり、上下方向の打ち出し方向に従ってさらに高度が高くなっていることが分かる。図49に示すボール移動画面500では、図48に示したボール移動画面500よりもさらにボール306が移動し、最高点に達した後に次第に高度を下げて地面に着弾し、地面を転がっている。図49に示すボール移動画面500においては、水平距離が111+42(=153)ヤードである。図49からも分かるように、移動距離の表示は、空中を移動した距離と、地面を転がって移動した距離とに分けてある。
なお、図示は省略するが、ボール306が地面に着弾した後に、バックスピンまたは地面の傾斜により、ボール306が逆向きに移動する場合がある。このとき、線510cの直線部分(点線部分)は左に伸びるように、あるいは一旦右に伸びた直線部分が短くなるように描画されてもよい。また、ボール306が着弾点から手前に戻る場合、直線部分による移動距離はマイナス表示されてもよい。たとえば、図49に示すボール移動画面500において、水平距離を「111y-42y」のように表示してもよい。
また、図示は省略するが、空中を移動中のボール306が地上オブジェクトまたは空中オブジェクトに当たって地面に落ちた場合には、放物線の線510cは、ボール306が地上オブジェクトまたは空中オブジェクトに当たった時点から下向きに延びる縦線に変形され、その後、ボール306が地面を転がる場合には、実線の縦線に続いて点線の横線が描画される。なお、下向に伸びる縦線に変形することに代えて、放物線の線510cは、放物形状を維持しつつ圧縮または縮尺されることで、地上オブジェクトまたは空中オブジェクトに当たった時点でボール306が着弾したように描画されてもよい。
また、図示は省略するが、追い風または/および着弾点の高度が低い(いわゆる、打ち下ろし)場合には、移動距離が延びるため、横棒510bを超えた位置まで放物線が記載される。逆に、向かい風または/および着弾点の高度が高い(いわゆる、打ち上げ)場合には、移動距離が短くなるため、水平到達距離が横棒510bの長さよりも短くなるように放物線が記載される。
さらに、図示は省略するが、ボール306の現在位置からピン310までの水平距離が使用中のクラブ304の最大飛距離よりも短い場合には、水平距離に相当する位置であり、横棒510aの上方にピン310を示す画像を表示するようにしてもよい。ただし、ボール306の現在位置からピン310までの水平距離が使用中のクラブ304の最大飛距離よりも長い場合にも、ピン310までの水平距離に相当する位置にピン310を示す画像を表示するようにしてもよい。ただし、プレイヤキャラクタ302が或る程度ピン310に向かってボール306を打撃する場合にのみ、ピン310を示す画像を表示し、たとえば、ピン310方向とは逆向きに打撃する場合には、ピン310を示す画像は表示しなくてもよい。
さらにまた、図示は省略するが、打撃力を決定したときに、移動ゲージ320において、第1指標画像326が停止された位置から上方に延びるように、ボール306が転がることを示す帯状の画像が描画されてもよい。帯状の画像は所定の色を付され、その横幅は、移動ゲージ320の横幅と同じまたはほぼ同じに設定される。ただし、帯状の画像は、ボール306が転がることをプレイヤに知らせることを目的とするため、帯の長さは所定の長さで固定されている。また、上記のように、移動指示画像510において、線510cを、実線の放物線と実線の直線で示し、互いに異なる色を付す場合に、帯状の画像に付される所定の色を実線の直線で描画された線510cの色と同じに設定することにより、その色が、ボール306が転がることを示していることをプレイヤに印象付けることができる。
なお、帯状の画像は、第1指標画像326が停止された位置から上方に延びるため、打撃力が最大値または最大値に近い値の場合には、移動ゲージ320の上端を超えて表示されることもある。
第3実施例においても、第1実施例の効果に加え、ボールが移動する場合に、空中を移動しているのか地面を転がっているのかを一目で理解することができる。