実施の形態に係るゲーム装置は、プレイヤーズキャラクタを操作してゴルフを行うゲームを制御する。
図1及び図2は、実施の形態に係るゲーム装置10の外観を示す。図1及び図2に示すゲーム装置10は、プレイヤーが把持して使用する携帯型のゲーム装置である。図1に示すように、ゲーム装置10の表側、すなわち、プレイヤーがゲーム装置10を把持して操作するときにプレイヤーに面する側には、方向キー21、ボタン22、左アナログスティック23、右アナログスティック24、左ボタン25、右ボタン26などの入力装置20と、表示装置68と、前面カメラ71とが備えられている。表示装置68には、プレイヤーの指やスタイラスペンなどによる接触を検知するためのタッチパネル69が併設されている。ボタン22は、○ボタン31、△ボタン32、□ボタン33、及び×ボタン34を含む。
図2に示すように、ゲーム装置10の裏側には、背面タッチパネル70と背面カメラ72が備えられている。ゲーム装置10の裏側にも、表側と同様に表示装置を設けてもよいが、本実施の形態では、ゲーム装置10の裏側には表示装置を設けずに、背面タッチパネル70のみを設ける。
プレイヤーは、ゲーム装置10を両手で把持した状態で、例えば、右手親指でボタン22を操作し、左手親指で方向キー21を操作し、右手人差し指又は中指で右ボタン26を操作し、左手人差し指又は中指で左ボタン25を操作し、両手の親指でタッチパネル69を操作し、両手の薬指又は小指で背面タッチパネル70を操作することができる。スタイラスペンなどを用いる場合は、例えば、ゲーム装置10を左手で把持した状態で、右手でスタイラスペン又は人差し指によりタッチパネル69及びボタン22を操作し、左手親指で方向キー21を操作し、左手人差し指又は中指で左ボタン25を操作し、左手薬指又は小指で背面タッチパネル70を操作することができる。
図3は、実施の形態に係るゲーム装置10の構成を示す。ゲーム装置10は、入力装置20、制御部40、パラメータ保持部60、ゲームデータ保持部62、画面生成部66、表示装置68、タッチパネル69、背面タッチパネル70、前面カメラ71、背面カメラ72、3軸ジャイロセンサ75、及び3軸加速度センサ76を備える。これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのCPU、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
前面カメラ71は、ゲーム装置10の表側の画像を撮像する。背面カメラ72は、ゲーム装置10の裏側の画像を撮像する。入力装置20、タッチパネル69、及び背面タッチパネル70は、上述したように、ゲーム装置10の筐体表面に設けられ、プレイヤーから操作入力を受け付ける。
3軸ジャイロセンサ75は、ゲーム装置10のXZ平面、ZY平面、YX平面における角速度を検知する。3軸ジャイロセンサ75は、回転型又は振動型の機械式ジャイロセンサであってもよいし、流体式又は光学式のジャイロセンサであってもよい。3軸ジャイロセンサ75により検知された3軸の周りの角速度を積分することにより、3軸の周りの回転量を算出することができる。
3軸加速度センサ76は、梁に支持された錘を内蔵し、加速による錘の位置変化を検知することにより、ゲーム装置10のXYZの3軸方向の加速度を検知する。3軸加速度センサ76は、機械式、光学式、又は半導体式の加速度センサであってもよい。3軸加速度センサ76により、重力加速度の方向とゲーム装置10のXYZの3軸の方向との相対角度を検知することができるので、ゲーム装置10の姿勢を算出することができる。また、3軸の方向の加速度を積分することにより速度を算出することができ、さらに積分することにより移動量を算出することができる。
制御部40は、ゴルフゲームのプログラムが格納されたゲームデータ保持部62からプログラムを読み出して実行し、入力装置20、タッチパネル69、背面タッチパネル70などから受け付けたプレイヤーからの操作入力に基づいて、ゲーム世界においてゴルフプレイヤーとして機能するプレイヤーズキャラクタの動作を制御しつつ、ゴルフゲームを進行させる。パラメータ保持部60は、ゴルフゲームの進行に必要なパラメータを保持する。画面生成部66は、制御部40により制御されるゲームの画面を生成し、表示装置68に表示させる。
制御部40は、ショット制御部41、クラブ選択部46、落下位置制御部47、ティー位置制御部48、弾道算出部50、プレイヤー撮影部52、及び背景制御部53を含む。ショット制御部41は、プレイヤーズキャラクタによるショットを制御する。ショット制御部41は、カメラ制御部42、パワー決定部44、インパクト決定部45、及びパワーショット制御部51を含む。
図4は、プレイヤーズキャラクタがショットを行うときのゲーム画面の例を示す。ショット画面100には、プレー中のホールの地形がレンダリングされた画像と、プレイヤーズキャラクタを後方から見た画像が表示されている。プレイヤーは、この画面において、入力装置20を操作してショットのパワー、インパクト、方向を決定し、プレイヤーズキャラクタにショットを行わせる。
クラブ選択部46は、プレイヤーズキャラクタがショットを打つ前に、プレイヤーからの指示入力に応じて、ショットを打つためのクラブを選択する。クラブ選択部46は、プレイヤーズキャラクタが次のショットを打つ順番が回ってきたとき、ゲームデータ保持部62に格納された、プレイヤーズキャラクタの能力を示すパラメータと、プレイヤーズキャラクタが使用可能なクラブの標準的な飛距離とを参照して、それぞれのクラブによる飛距離を算出してパラメータ保持部60に格納する。そして、現在のボールの位置からピンまでの残りヤード数を算出し、それぞれのクラブによる飛距離と比較して、最適なクラブを選択して設定する。クラブ選択部46は、プレイヤーから左ボタン25の入力を受け付けると、1段階飛距離が短いクラブに切り替え、右ボタン26の入力を受け付けると、1段階飛距離が長いクラブに切り替える。
カメラ制御部42は、画面生成部66がゲーム画面を生成する際のカメラの視点位置及び視線方向を制御する。カメラ制御部42は、プレイヤーズキャラクタがショットを行うときのゲーム画面を生成する場合、初期設定として、プレイヤーズキャラクタの後方に視点位置を設定し、プレイヤーズキャラクタを見る方向に視線方向を設定する。プレイヤーは、ホールの地形を確認したり、ショットする方向や距離などを判断したりするために、入力装置20を操作して視点位置や視線方向を変更することができる。カメラ制御部42は、ショット画面100において△ボタン32の入力を受け付けると、現在選択されているクラブでショットしたときのボールの落下予想地点の斜め上方に視点位置を設定し、落下予想地点付近を表示する画面に移行させる。
図5は、ボールの落下予想地点付近を表示したゲーム画面の例を示す。落下地点画面102には、落下予想地点付近を斜め上方から眺めた画像と、現在選択されているクラブを用いて、パワーもインパクトも最良の値で真っ直ぐにショットした場合のボールの落下予想地点を示すマーカ104が表示されている。プレイヤーは、この落下地点画面102において、左アナログスティック23を操作してカメラの視点位置を移動させ、ボールの落下地点付近のホールの地形などを確認することができる。カメラ制御部42は、落下地点画面102において×ボタン34の入力を受け付けると、ショット画面100に移行させる。
落下位置制御部47は、図5に示した落下地点画面102において、タッチパネル69のマーカ104が表示されている位置におけるドラッグ操作を受け付けると、プレイヤーの指により指示された指示位置の移動にともなってマーカ104を移動させる。マーカ104の左右方向、二次元極座標系で表現すると偏角の変化は、プレイヤーズキャラクタのショットの方向の変化に対応するので、落下位置制御部47は、マーカ104の偏角を連続的に変化させるとともに、プレイヤーズキャラクタのショットの方向を変化させるようショット制御部41に指示する。これに対して、マーカ104の前後方向(画面上では上下方向)、二次元極座標系で表現すると動径の変化は、ショットの強弱に対応し、プレイヤーがパワーやインパクトを調整して打ち分けるべきであるから、落下位置制御部47はマーカ104の動径を連続的に変化させない。マーカ104を前後方向に所定量以上移動させた場合は、ショットに使用するクラブを変更することにより、クラブの飛距離に対応する位置にマーカ104を不連続的に移動させる。すなわち、使用可能なクラブを使用してプレイヤーズキャラクタがショットをしたときの標準的な飛距離としてパラメータ保持部60又はゲームデータ保持部62などに予め設定されていた複数の値の間でマーカ104の動径を不連続的に変化させる。
図6及び図7は、ボールの落下地点を示すマーカの位置を変更する様子を説明するための図である。プレイヤーが、マーカ104を指で右下方向にドラッグすると、落下位置制御部47は、プレイヤーの指の位置を指示位置114として取得する。現在のボールの位置と指示位置114との間の距離が、円弧110の半径の距離を下限値とし、図示しない円弧の半径の距離を上限値とする所定の範囲内にある場合は、図6に示すように、現在選択されているクラブを使用してプレイヤーズキャラクタがショットをしたときに予想されるボールの飛距離を半径とする円弧106と、現在のボールの位置と指示位置114とを結ぶ直線との交点の位置にマーカ104を移動させる。すなわち、マーカ104は、円弧106に沿って移動され、現在のボールの位置とマーカ104の位置とを結ぶ直線に平行な方向には移動されない。落下位置制御部47は、プレイヤーズキャラクタによるショットの方向を、現在のボールの位置と移動後のマーカ104の位置とを結ぶ直線の方向に変更するようショット制御部41に指示する。
現在のボールの位置と指示位置114との間の距離が所定の範囲外になった場合、例えば、図7に示すように、指示位置114が円弧110よりも現在のボールの位置に近くなった場合、落下位置制御部47は、クラブ選択部43に1段階飛距離の短いクラブに切り替えるよう指示するとともに、新しく選択されたクラブを使用してプレイヤーズキャラクタがショットをしたときに予想されるボールの飛距離を半径とする円弧112と、現在のボールの位置と指示位置114とを結ぶ直線との交点の位置にマーカ104を移動させる。
図7に示した状態から、プレイヤーがマーカ104を指で上方向にドラッグすると、落下位置制御部47は、指示位置114が円弧108を超えたときに、1段階飛距離の長いクラブに切り替えるようクラブ選択部46に指示し、マーカ104を円弧106上へ移動させる。すなわち、飛距離が円弧106に対応する第1のクラブから、飛距離が円弧112に対応する、飛距離が1段階短い第2のクラブに切り替えるための閾値となる、円弧110に対応する第1の距離は、第2のクラブから第1のクラブに切り替えるための閾値となる、円弧108に対応する第2の距離よりも短い。言い換えれば、第1のクラブの選択が維持される指示位置114の範囲と、第2のクラブの選択が維持される指示位置114の範囲は、少なくとも一部で重複している。このように、クラブの切替に際してヒステリシスを設けることにより、指示位置が境界領域付近にあるときに、クラブが何度も切り替わってしまう事態を避けることができ、操作性の良いユーザインタフェースを提供することができる。なお、クラブの飛距離を示す円弧106及び112や、クラブを切り替えるための閾値を示す円弧108及び110は、落下地点画面102に表示してもよいし、表示しなくてもよい。
クラブ選択部46は、落下地点画面102においても、左ボタン25又は右ボタン26の入力を受け付けてクラブを切り替えてもよい。このとき、落下位置制御部47は、クラブの切り替えにともなって、切替後のクラブの飛距離に対応する円弧上にマーカ104を移動させる。
現在選択されているクラブが1番ウッド(ドライバー)である場合は、それ以上飛距離の長いクラブはないので、飛距離の短いクラブに切り替えることしかできない。したがって、飛距離が所定値よりも長いクラブが選択されている場合、カメラ制御部42は、落下地点画面102を表示するときに、マーカ104よりも現在のボールの位置に近い領域が遠い領域よりも広く表示されるようにするために、マーカ104が画面上方にくるようにカメラの視点位置を設定してもよい。逆に、現在選択されているクラブが9番アイアン又はウェッジである場合など、飛距離が所定値よりも短いクラブが選択されている場合、マーカ104よりも現在のボールの位置から遠い領域が近い領域よりも広く表示されるようにするために、マーカ104が画面下方にくるようにカメラの視点位置を設定してもよい。これにより、操作性の良いユーザインタフェースを提供することができる。
プレイヤーが落下地点画面102において上下左右の端付近の所定の領域に指をドラッグさせると、カメラ制御部42はその方向にカメラの視点位置を移動させて画面をスクロールする。プレイヤーが指を離してドラッグ操作を停止させると、カメラ制御部42は、現在のマーカ104の位置が中央にくるようにカメラの視点位置を設定してもよいし、上述したように、飛距離が所定値よりも長い又は短いクラブが選択されている場合は、マーカ104の位置が画面上方又は下方の所定位置にくるようにカメラの視点位置を設定してもよい。
上述した例では、タッチパネル69に対するドラッグ操作により指示位置が移動される場合について説明したが、指示位置は方向キー21やアナログスティックなどにより移動されてもよいし、マウスなどのポインティングデバイスにより移動されてもよい。
ティー位置制御部48は、プレイヤーズキャラクタがティーショットを打つ前に、プレイヤーからの指示入力に応じて、ボールをティーアップする位置を決定する。図4に示したティーショットを打つためのショット画面100において、タッチパネル69のボールが表示された位置におけるタップ入力を受け付けると、ティー位置制御部48は、ティーグラウンドを表示するゲーム画面に移行させ、ボールをティーアップする位置を変更するための指示入力を受け付ける。ティー位置制御部48は、方向キー21の入力を受け付けると、指示された方向へティー位置を移動させる。
ティー位置制御部48は、表示装置68におけるプレイヤーズキャラクタの表示位置に対応するタッチパネル69の位置に対する入力を取得すると同時に、タッチパネル69に対する入力位置に対応する背面タッチパネル70の位置から所定の範囲内の位置に対する入力を取得したとき、すなわち、プレイヤーが親指と人差し指でプレイヤーズキャラクタをつまむようにして、タッチパネル69及び背面タッチパネル70のプレイヤーズキャラクタが表示された位置に同時に触れたとき、プレイヤーが、プレイヤーズキャラクタを指でつまんだと判定する。このとき、ティー位置制御部48は、プレイヤーズキャラクタが上に持ち上げられた様子を表示し、プレイヤーがプレイヤーズキャラクタをつまんだ指を左右に動かしたことを検知すると、プレイヤーズキャラクタを指示された方向に移動させるとともに、それにともなってティー位置を左右に移動させる。ティー位置制御部48は、プレイヤーズキャラクタが上に持ち上げられた様子を表示するとき、プレイヤーズキャラクタが空中でもがくような動作を行う様子を表示してもよい。この場合、ティー位置制御部48は、プレイヤーズキャラクタがもがくような動作を行うようプレイヤーズキャラクタの動作を制御してもよいし、プレイヤーズキャラクタがもがいている様子を表示するアニメーションを予めゲームデータ保持部62に格納しておき、それを読み出して表示してもよい。
ティー位置制御部48は、プレイヤーがタッチパネル69と背面タッチパネル70を指で挟持したときの圧力を取得し、圧力に応じてプレイヤーズキャラクタの挙動を決定してもよい。例えば、圧力が高いほど、プレイヤーズキャラクタが激しくもがくようにしてもよい。また、圧力が所定の閾値未満である場合はプレイヤーズキャラクタがおとなしく持ち上げられるようにし、所定の閾値以上である場合にプレイヤーズキャラクタがもがくような挙動をさせてもよい。タッチパネル69又は背面タッチパネル70が圧力を検知可能である場合、又は、圧力センサが併設されている場合には、ティー位置制御部48は、検知された圧力を取得する。圧力センサが設けられていない場合は、ティー位置制御部48は、タッチパネル69及び背面タッチパネル70の一方又は双方におけるプレイヤーの指の接触面積に応じて圧力を算出してもよい。例えば、接触面積が大きいほど高い圧力が算出されるようにしてもよい。
図8は、ティー位置を変更するためのゲーム画面の例を示す。ティーグラウンド画面140には、プレイヤーズキャラクタ142、ティーアップ領域144、ボール146が表示されている。ティー位置制御部48は、タッチパネル69においてボール146に対するドラッグ操作を受け付けると、ティーアップ領域144内で、ボール146及びプレイヤーズキャラクタ142を指示された方向へ移動させる。
図9は、ティー位置を変更するためのゲーム画面の例を示す。ティーグラウンド画面140のプレイヤーズキャラクタ142が表示された位置において、タッチパネル69と背面タッチパネル70に対して同時に接触を検知すると、ティー位置制御部48は、プレイヤーズキャラクタ142がプレイヤーの指でつままれて持ち上げられたような挙動を表示する。
図10は、ティー位置を変更するためのゲーム画面の例を示す。図9においてプレイヤーズキャラクタ142が持ち上げられた後、プレイヤーがタッチパネル69と背面タッチパネル70をつまんだ状態のまま画面上方へ指をずらすと、ティー位置制御部48は、プレイヤーズキャラクタ142が指の動きに追随して上方へ持ち上げられる様子を表示する。このとき、プレイヤーズキャラクタ142がもがく様子を表示してもよい。
図11は、ティー位置を変更するためのゲーム画面の例を示す。図10においてプレイヤーズキャラクタ142が持ち上げられた後、プレイヤーがタッチパネル69と背面タッチパネル70をつまんだ状態のまま左右に指をずらすと、ティー位置制御部48は、ティーアップ位置がティーアップ領域144内におさまる範囲で、プレイヤーズキャラクタ142が指の動きに追随してプレイヤーズキャラクタ142を左右に移動させる。この後、プレイヤーが指を離すと、ティー位置制御部48は、プレイヤーズキャラクタ142が地面に着地する様子を表示するとともに、プレイヤーズキャラクタ142の移動に追随してボール146を移動させる。これにより、プレイヤーは、プレイヤーズキャラクタ142をつまんで移動させるという斬新な方法でティーアップ位置を移動させることができる。
図8〜図11に示したように、ゲーム画面に表示されるゲーム空間内の地面は、タッチパネル69及び背面タッチパネル70の平面に対して略垂直となっている。すなわち、表示装置68の画面に垂直な奥行き方向にゲーム空間の地面が広がっているので、ゲーム空間の上下方向は、表示装置68、タッチパネル69、及び背面タッチパネル70の上下方向に対応する。したがって、プレイヤーがキャラクタの位置を指でつまむと、表示装置68に表示されたキャラクタを地面から離れる方向に移動させ、プレイヤーが指を動かすとプレイヤーの指の動きに追随して上下左右にキャラクタを移動させ、プレイヤーが指を離すとキャラクタを地面に着地させることで、あたかも、ゲーム装置10の中にいるキャラクタを現実に指で掴んでいるかのように見せることができ、斬新な演出を提供することができる。
パワー決定部44は、プレイヤーズキャラクタのショットのパワーを決定する。パワー決定部44は、ショットを開始する指示が割り当てられた操作入力を入力装置20から受け付けると、画面生成部66に、プレイヤーズキャラクタがボールをショットするためにテークバックする動作を行っている画面を生成させ、表示装置68に表示させる。プレイヤーは、プレイヤーズキャラクタがテークバックする動作の進行の度合いを指標として、パワーを決定する指示が割り当てられた操作入力を入力装置20により行う。パワー決定部44は、パワーを決定するための操作入力を受け付けた時点におけるプレイヤーズキャラクタのショットする動作の進行の度合いに応じて、ショットのパワーを決定する。パワー決定部44は、決定したパワーを弾道算出部50に通知する。
パワー決定部44は、フルスイングするときのテークバックする動作に要する時間と、テークバックを開始してからパワーを決定するための操作入力を受け付けるまでの時間又は表示画面のフレーム数との比に基づいて、ショットのパワーを決定する。例えば、テークバックを開始する時点でのパワーを0%、トップスイングの時点でのパワーを100%として、操作入力を受け付けた時点でのパワーを内分により決定してもよい。フルスイングに要する時間が2秒で、テークバック開始から1.6秒後に操作入力を受け付けた場合、パワーを80%としてもよい。また、フルスイングの動作を表示するときのフレーム数が100フレームで、テークバック開始から70フレーム後に操作入力を受け付けた場合、パワーを70%としてもよい。パワー決定部44は、プレイヤーがタイミングを計るための指標として、パワーが所定の値、例えば50%、100%に達したときに、その旨を表示したり、クラブヘッドの表示態様を変更したりしてもよい。
図12(a)(b)は、プレイヤーズキャラクタがテークバックする動作を行っているときのゲーム画面の例を示す。図12(a)は、プレイヤーズキャラクタがテークバックを開始してから、フルスイングに要する時間の半分の時間が経過したときの状態を示す。この時点でプレイヤーから操作入力を受け付けると、パワー決定部44は、ショットのパワーを50%と決定する。図12(b)は、プレイヤーズキャラクタがトップオブスイングに至った状態を示す。この時点でプレイヤーから操作入力を受け付けると、パワー決定部44は、ショットのパワーを100%と決定する。
パワー決定部44は、テークバック中に操作入力を受け付けたときに、その時点でテークバックを終了してダウンスイングに移行させてもよいし、パワーが決定された後も引き続きテークバックを行わせ、フルスイングする様子を表示させてもよい。パワー決定部44は、テークバック中に操作入力を受け付けずにトップスイングに至った場合、素振りであったことにしてショットを行わないようにしてもよいし、ダウンスイング中はパワーが降下するものとして引き続き操作入力を受け付け、ダウンスイングを開始してから操作入力を受け付けるまでの時間に応じてパワーを決定してもよい。
パワー決定部44は、ライの状態や、バンカーショットにおけるバンカーの地形、プレイヤーズキャラクタのスタンスなどによっては、フルスイングしても100%のパワーを達成できないようにしてもよい。また、アプローチショットなどの場合に、プレイヤーズキャラクタにフルスイングさせず、ハーフスイングしかできないようにしてもよい。このような場合であっても、上記のようにプレイヤーズキャラクタに素振りをさせる機能を設けることにより、プレイヤーは、まずはプレイヤーズキャラクタに素振りをさせてスイングとパワーとの関係を確認してから、ショットを行うことができる。
インパクト決定部45は、プレイヤーズキャラクタのショットのインパクトを決定する。インパクト決定部45は、パワー決定部44によりショットのパワーが決定された後、画面生成部66に、プレイヤーズキャラクタがダウンスイングする動作を行っている画面を生成させ、表示装置68に表示させる。プレイヤーは、プレイヤーズキャラクタがダウンスイングしてボールを打撃するタイミングに合わせて、インパクトを決定する指示が割り当てられた操作入力を入力装置20により行う。インパクト決定部45は、プレイヤーズキャラクタがダウンスイングしてボールを打撃する時点と、インパクトを決定するための操作入力を受け付けた時点との時間差に応じて、ショットのインパクトを決定する。インパクト決定部45は、決定したインパクトを弾道算出部50に通知する。このとき、インパクトが100%になる瞬間よりも速く操作入力を受け付けた場合はマイナス、遅い場合はプラスの符号をつけるなどして、タイミングが速かったのか遅かったのかを表現してもよい。
インパクト決定部45は、タイミングをとるための指標の補助として、画面生成部66に、時間の経過にしたがって収縮し、プレイヤーズキャラクタがボールを打撃する時点、すなわち、最も高いインパクトでショットすることができる時点で最小となる図形を含む画面を生成させ、表示装置68に表示させる。プレイヤーは、収縮する図形を更に指標として、インパクトを決定するための操作入力を行うことができる。インパクト決定部45は、ボールの位置を中心又は重心とした図形を表示し、ボールの位置に収束するように収縮させてもよい。これにより、プレイヤーが、プレイヤーズキャラクタがダウンスイングしている様子と、図形が収縮する様子の双方を視認しながら操作を行うことができ、より操作性の良いユーザインタフェースを実現することができる。
インパクト決定部45は、例えば、プレイヤーズキャラクタがボールを打撃する時点、すなわち時間差がゼロである時点でのインパクトを100%、時間差が所定の上限値となる時点でのインパクトを所定の下限値として、操作入力を受け付けた時点でのインパクトを内分により決定してもよい。後述するように、弾道算出部50では、インパクト決定部45により決定されたインパクトの値が低いほど、狙った着地点から大きく外れるように、飛距離や方向などが補正される。インパクト決定部45は、プレイヤーズキャラクタのダウンスイングがボールを通過した後、操作入力を受け付けずに時間差が所定の上限値を超えた場合、素振りであったことにしてショットを行わないようにしてもよいし、インパクトを自動的に所定の下限値に設定してショットを行わせてもよい。
図13(a)(b)は、プレイヤーズキャラクタがダウンスイングする動作を行っているときのゲーム画面の例を示す。図13(a)は、プレイヤーズキャラクタがダウンスイングを開始したときの状態を示す。インパクト決定部45は、タイミングを計るための指標の補助として円120を表示している。また、インパクトが下限値となるときの円120の直径を示す図形122と、インパクトが上限値、例えば100%となるときの円120の直径を示す図形124とを表示している。円120の直径が図形122が示す直径よりも大きいときに操作入力を受け付けた場合、インパクト決定部45は、インパクトを所定の下限値に設定してもよい。また、この場合、後述するように、弾道算出部50は、このショットをミスショットとして扱ってもよい。円120の直径が図形124が示す直径よりも小さいときに操作入力を受け付けた場合、インパクト決定部45は、インパクトを所定の上限値、例えば100%に設定してもよい。円120の直径が図形122が示す直径よりも小さく、図形124が示す直径よりも大きいときに操作入力を受け付けた場合、インパクト決定部45は、操作入力を受け付けたタイミングに応じて、所定の上限値と下限値の間の値を設定してもよい。図13(b)は、プレイヤーズキャラクタがボールを打撃する直前の状態を示す。インパクト決定部45は、円120を収縮させ、プレイヤーズキャラクタがボールを打撃する瞬間に最小となるようにする。インパクト決定部45は、プレイヤーズキャラクタがボールを打撃する瞬間まで操作入力を受け付けなかった場合、それ以降は円120を膨張させてもよい。この場合も、円120の直径が図形124が示す直径よりも小さい間はインパクトを上限値とし、図形122が示す直径よりも大きくなるとインパクトを下限値としてもよい。円120が図形122が示す直径よりも大きくなった時点でも操作入力を受け付けなかった場合は、自動的にインパクトを下限値に設定してショットを行わせてもよい。別の例として、インパクト決定部45は、円120の直径が図形122が示す直径よりも大きいときはインパクトを下限値とし、直径が小さくなるほどインパクトが大きくなるようにし、図形124が示す直径と同じときにインパクトを上限値としてもよい。そして、それ以降は、円120の直径が図形124が示す直径よりも小さくなるにつれてインパクトが徐々に小さくなるようにしてもよい。
更に別の例として、インパクト決定部45は、時間の経過にしたがって左右又は上下に、或いは任意の直線又は曲線上を移動する図形と、インパクトが最大となる図形の位置とを示すゲージを表示させ、プレイヤーが操作入力を行うタイミングをとるための指標としてもよい。また、インパクト決定部45は、入力装置20のアナログスティックを倒す角度、速度、圧力などに応じてショットのインパクトやパワーを決定してもよい。
弾道算出部50は、ショット制御部41により決定されたショットのパワー及びインパクトと、ボールのライ、風、地形などの外部要因に基づいて、ショットされたボールの弾道を物理計算により算出する。
弾道算出部50は、ショットに用いたクラブに応じて予め設定された初速度及びロフト角をパラメータ保持部60から読み出す。弾道算出部50は、読み出した初速度に、パワー決定部44により決定されたパワー、インパクト決定部45により決定されたインパクト、プレイヤーズキャラクタごとに設定された体力などの属性値、ボールのライなどに応じて初速度又はロフト角を調整する。例えば、パワーやインパクトが高いほど初速度が速くなるように、パワーやインパクトの%値を初速度に乗じてもよい。また、インパクトの値が小さいほど狙った着地点からずれるように、ボールの飛ぶ方向や速度などを調整してもよい。例えば、インパクトが100%になる瞬間よりも速く操作入力を受け付けた場合はボールの軌道を右に曲げてスライスボールとし、遅い場合は左に曲げてフックボールとしてもよい。また、インパクトが所定の下限値以下であった場合は、ミスショットとして扱い、極端に初速度を小さくして弾道を算出してもよい。ラフやバンカーの場合は、フェアウェイよりも初速度を低くしてもよい。また、ボールの接地面の傾斜が大きければ初速度を低くしてもよい。ショットの際にプレイヤーが初速度やロフト角を変更する操作入力を行った場合には、さらにその影響を考慮して初速度やロフト角を調整してもよい。
弾道算出部50は、初速度とロフト角を決定すると、ボールに作用する力に応じて速度を調整しつつ、ボールの位置をフレームごとに算出する。弾道算出部50は、ボールの現在位置の座標に対して、フレームを単位とした速度を加算し、次のフレームにおけるボールの位置の座標を算出する。ボールの速度には、フレームごとに、重力、揚力、風力、空気抵抗が加算される。重力については、物理法則に則って、下向きに、9.8メートル毎秒毎秒とする。揚力は、上向きに、速度に比例する値とする。風力は、ホールの全ての場所において一定方向に一定速度としてもよいし、場所に応じて変化させてもよい。空気抵抗は、進行方向と逆向きに、速度に比例する値とする。このように、風の方向及び速度を考慮してボールの弾道を算出することにより、現実のゴルフと同様に、風の影響を考慮しながらショットを行う難しさを演出することができ、よりリアリティのあるゴルフゲームを実現することができる。
ボールが何かに衝突した場合は、衝突した面の属性に応じて予め設定された摩擦係数及び反発係数にしたがって、水平方向及び垂直方向の速度を調整する。摩擦係数及び反発係数は、フェアウェイ、ラフ、バンカーなどによって異なる値を設定してもよい。弾道算出部50は、さらに、演出効果として、物理法則とは関係のない特殊な演算を弾道に与えてもよい。これにより、ゴルフゲームに変化を持たせ、ゲームの娯楽性を向上させることができる。
画面生成部66は、弾道算出部50により算出されたボールの位置に応じて、ボールが画面に入るようにカメラの視点位置及び視線方向を設定し、ボールが飛ぶ様子を示す画面を生成して、表示装置68に表示する。ボールが停止すると、次のショットに移る。
パワーショット制御部51は、プレイヤーズキャラクタの能力以上の飛距離を出すことが可能なパワーショットが選択された場合に、パワーショットの成否を判定する。パワーショットが選択された場合、インパクトが最大となるタイミングの範囲が、通常のショットよりも小さく設定される。パワーショット制御部51は、通常のショットよりも小さく設定されたタイミングの範囲でインパクトを決定するための指示入力を受け付けると、パワーショットに成功したと判定する。
本実施の形態では、パワーショット制御部51は、通常のパワーショットよりも更に飛距離を出すことが可能なフルパワーショットを打つことを可能とする。フルパワーショットは、以下の条件が全て満たされたときに成功と判定される。(1)パワーショットが選択されたこと。(2)スイングを開始するための1回目の指示入力を受け付けた後、パワーを決定するための2回目の指示入力を良好なタイミングで受け付けたこと。(3)2回目の指示入力の後、プレイヤーが、ゲーム装置10の上側を手前に引くように所定の角度以上回転させたこと。(4)インパクトを決定するための3回目の指示入力を良好なタイミングで受け付けたこと。(5)3回目の指示入力までに、プレイヤーが、ゲーム装置10の上側を奧に倒すようにして回転させ、3回目の指示入力のときに、2回目の指示入力のときとほぼ同じ姿勢に戻されたこと。パワーショット制御部51は、以上の条件の成否を判定して、フルパワーショットの成否を判定する。
パワーショット制御部51は、パワーを決定するための2回目の指示入力を受け付けたときのゲーム装置10の姿勢に関する情報を3軸ジャイロセンサ75又は3軸加速度センサ76から取得し、ゲーム装置10の長手方向を軸としたピッチ角を算出して、基準角度としてパラメータ保持部60に記録する。パワーショット制御部51は、2回目の指示入力を受け付けた後のゲーム装置10の姿勢を所定の時間間隔で3軸ジャイロセンサ75又は3軸加速度センサ76から取得してピッチ角を算出し、パラメータ保持部60に記録されている基準角度から所定の第1の角度以上回転したか否かを判定する。2回目の指示入力を受け付けた後、インパクトを決定するための3回目の指示入力を受け付けるまでの間に、一度も第1の角度以上ゲーム装置10が回転しなかった場合には、パワーショットは不成功と判定される。
パワーショット制御部51は、3回目の指示入力を受け付けたときのゲーム装置10の姿勢に関する情報を3軸ジャイロセンサ75又は3軸加速度センサ76から取得して、そのときのピッチ角を算出し、パラメータ保持部60に記録されている基準角度から所定の第2の角度の範囲内であるか否かを判定する。第2の角度の範囲は、基準角度よりも手前側に設定されてもよいし、基準角度よりも奧側に設定されてもよいし、基準角度を含むように手前側から奧側にまたがって設定されてもよい。3回目の指示入力を受け付けたときのピッチ角が、第2の角度の範囲内になかった場合には、パワーショットは不成功と判定される。
プレイヤーは、2回目の指示入力を行った後、ゲーム装置10の上側を手前に引くようにして第1の角度以上回転させ、更に、ゲーム装置10の上側を奧に倒すようにして回転させ、インパクトのタイミングに合わせて3回目の指示入力を行ったときに、ゲーム装置10の姿勢が2回目の指示入力を行ったときとほぼ同じ角度に戻っていれば、フルパワーショットを成功させることができる。パワーショット制御部51は、フルパワーショットに成功したと判定すると、ショットのパワーを所定値だけ増加させるようパワー決定部44に指示する。パワーの増加量は、3回目の指示入力を受け付けたときのゲーム装置10のピッチ角と基準角度との差に応じて決定されてもよい。例えば、ピッチ角と基準角度との差が小さいほど大きい値をパワーに加算してもよい。
図14は、パワーショットを成功させるための条件について説明するための図である。プレイヤーが、ショットを開始するための1回目の指示入力をした後、図14(a)に示した状態で、2回目の指示入力をしたとする。このとき、パワーショット制御部51は、3軸ジャイロセンサ75又は3軸加速度センサ76からゲーム装置10の姿勢を取得し、水平方向AOとゲーム装置10の上下方向BOとのなす角AOBを算出して、基準角度としてパラメータ保持部60に格納する。パワーショット制御部51は、この基準角度が0度となるようにキャリブレーションしてもよい。その場合、基準角度をパラメータ保持部60に格納しなくてもよい。以下、基準角度が0度となるようにキャリブレーションされたものとして説明する。
パワーショット制御部51は、上記の条件(3)の成否を判定するために、2回目の指示入力を受け付けた後のゲーム装置10の姿勢を所定の時間間隔で3軸ジャイロセンサ75又は3軸加速度センサ76から取得し、図14(b)に示したように、ピッチ角BODが第1の角BOCを超えたか否かを判定する。角BODが角BOCを超えたとき、パワーショット制御部51は、条件(3)が成立したと判定する。
パワーショット制御部51は、上記の条件(5)の成否を判定するために、3回目の指示入力を受け付けたときのゲーム装置10の姿勢を3軸ジャイロセンサ75又は3軸加速度センサ76から取得し、図14(c)に示したように、ピッチ角BOGが第2の角度の範囲、すなわち、角BOEから角BOFの間であるか否かを判定する。角BOGが角BOEから角BOFの間であるとき、パワーショット制御部51は、条件(5)が成立したと判定する。
上述した例では、ゲーム装置10を前後に回転させつつボタンを入力する操作をプレイヤーに要求したが、別の例では、ゲーム装置10を前後に移動させつつボタンを入力させてもよい。パワーショット制御部51は、ゲーム装置のピッチ角だけでなく、ロール角又はヨー角を用いて、フルパワーショットの成否又はパワーの増加量を決定してもよい。また、ロール角又はヨー角を用いて、弾道を変化させてもよい。例えば、ゲーム装置10を左右にねじりながら3回目の指示入力を行った場合に、弾道を左右に変化させてもよい。
上述した例では、2回目の指示入力のときに基準姿勢を設定し、いったん第1の角度以上手前に回転させた後、3回目の指示入力のときに基準姿勢に戻っていることを条件としたが、タイミングや操作の内容にはさまざまな変形例が考えられる。例えば、1回目の指示入力のときに基準角度を設定し、いったん手前に回転させた後、2回目又は3回目の指示入力のときに基準姿勢に戻っていることを条件としてもよい。また、1回目の指示入力のときに基準角度を設定し、いったん所定の角度以上奧に倒した後、2回目の指示入力のときに基準角度に戻し、更に所定の角度以上手前に回転させた後、3回目の指示入力のときに再び基準角度に戻っていることを条件としてもよい。2回の指示入力でショットを行う場合には、1回目の指示入力のときに基準角度を設定し、いったん所定の角度以上手前に回転させた後、2回目の指示入力のときに基準姿勢に戻っていることを条件としてもよい。また、所定のタイミングにおける姿勢を基準とするのではなく、現実世界における水平方向又は鉛直方向を基準としてもよい。また、角度ではなく、角速度、速度、加速度、変位量などが所定値以上であること、又は、所定の範囲内であることを条件としてもよい。
プレイヤー撮影部52は、前面カメラ71を制御して、ゴルフゲームをプレーしているプレイヤーを撮影する。プレイヤー撮影部52は、プレイヤーが、ホールインワン、チップイン、アルバトロス、イーグル、バーディー、ピンから所定の範囲内に寄せたアプローチショット、パワー又はインパクトを決定するための指示入力のタイミングが所定の範囲内であったショットなど、素晴らしいスーパーショットに成功したときに、前面カメラ71によりプレイヤーを撮影する。プレイヤーがスーパーショットに成功したか否かは、プレイヤーが3回目の指示入力を行った直後に弾道算出部50により算出された弾道によって判定することができるので、ボールが空中を飛んでいる間に撮影を行うか否かを決定することができる。したがって、プレイヤー撮影部52は、ボールがカップに入った瞬間や、ボールがピンそばに止まった瞬間のプレイヤーの顔を撮影してもよい。また、ボールが空中を飛んでいる間からプレイヤーの顔を動画撮影してもよい。プレイヤー撮影部52は、プレイヤーがスーパーショットに成功した後に、記念撮影を行う旨を画面に表示してから、プレイヤーの顔を撮影してもよい。
プレイヤー撮影部52は、撮影したプレイヤーの写真を加工して表示してもよい。例えば、顔認識などの技術を利用してプレイヤーの頭に王冠の画像を重畳させてもよいし、プレイヤーの胸にメダルの画像を重畳させてもよい。また、前面カメラ71はゲーム装置10の右上に配置されているおり、プレイヤーの顔は撮影された画像の右寄りに配置されることになるので、画像の左側とトリミングしてプレイヤーの顔が中央にくるようにしてもよい。プレイヤー撮影部52は、撮影されたプレイヤーの画像又は動画像と、図示しないリプレー制御部によりパラメータ保持部60に記録されていたリプレーデータとを対応づけて、記憶媒体などに記録してもよい。また、メールなどに添付して他のプレイヤーに送信できるようにしてもよいし、サーバにアップロードして他のプレイヤーが閲覧できるようにしてもよい。
プレイヤー撮影部52は、プレイヤーが、OB区域、ウォーターハザード、バンカー、ラフなどにボールが落ちる失敗ショットを行ったときに、プレイヤーを撮影してもよい。この場合、プレイヤー撮影部52は、撮影されたプレイヤーの画像に、汗や涙などの画像を重畳させて表示又は記録してもよい。
背景制御部53は、ゲーム画面の背景を制御する。背景制御部53は、背面タッチパネル70の上半分の領域に対するタッチ入力を受け付けると、ゲーム画面の背景画像を、背面カメラ72により撮像された画像に切り替える。通常は、ホールの地形がレンダリングされたゲーム画面において、オブジェクトが何もない部分は空が表示されることになるが、その部分が現実世界におけるプレイヤーの周囲の画像に切り替えられる。背景制御部53は、ゲーム画面の背景を、ゲームデータ保持部62などに格納されている画像に切り替えてもよい。例えば、現実の有名なゴルフコースなどの画像や、風景画像などに切り替えてもよい。これにより、プレイヤーは、現実世界の中でゴルフをプレーしているような気分を味わうことができる。
図15は、ボールの落下予想位置を示すマーカを移動する手順を示すフローチャートである。ボールの落下予想位置付近を表示するための落下地点画面において、プレイヤーが、マーカを指でドラッグすると(S100のY)、落下位置制御部47は、プレイヤーの指の位置を指示位置として取得し、現在選択されているクラブを使用してプレイヤーズキャラクタがショットをしたときに予想されるボールの飛距離を半径とする円弧に沿ってマーカを移動させる(S102)。現在のボールの位置と指示位置との間の距離が、現在のクラブの選択を維持する範囲の上限値を超えた場合(S104のY)、落下位置制御部47は、1段階飛距離の長いクラブに変更し(S106)、変更後のクラブに対応する円弧にマーカを移動する(S108)。上限値を超えない場合は(S104のN)、S106及びS108をスキップする。現在のボールの位置と指示位置との間の距離が、現在のクラブの選択を維持する範囲の下限値を下回った場合(S110のY)、落下位置制御部47は、1段階飛距離の短いクラブに変更し(S112)、変更後のクラブに対応する円弧にマーカを移動する(S114)。上限値を超えない場合は(S110のN)、S112及びS114をスキップする。マーカに対するドラッグ操作を受け付けない場合は(S100のN)、S102〜S114をスキップする。落下地点画面が表示されている間、これらの手順を繰り返す。
図16は、ティーアップ位置を移動する手順を示すフローチャートである。ティーグラウンド付近を表示するためのティーグラウンド画面において、プレイヤーが、プレイヤーズキャラクタを指でつまむ操作を行うと(S200のY)、ティー位置制御部48は、プレイヤーズキャラクタが上に持ち上げられた様子を表示する(S202)。プレイヤーが、プレイヤーズキャラクタを指でつまんだままドラッグ操作を行うと(S204のY)、ティー位置制御部48は、プレイヤーズキャラクタを指示された位置に移動させるとともに(S206)、プレイヤーズキャラクタの移動に合わせてティーアップ位置を移動させる(S208)。ドラッグ操作を受け付けない場合(S204のN)、S206及びS208をスキップする。プレイヤーがプレイヤーズキャラクタをつまんでいた指を離すまでの間(S210のN)、S204〜S208を繰り返す。プレイヤーが指を離すと(S210のY)、ティー位置制御部48は、持ち上げられていたプレイヤーズキャラクタが地面に着地する様子を表示する(S212)。プレイヤーズキャラクタを指でつまむ操作を受け付けない場合(S200のN)、S202〜S212をスキップする。ティーグラウンド画面が表示されている間、これらの手順を繰り返す。
図17は、フルパワーショットの成否を判定する手順を示すフローチャートである。パワーショットが選択された状態で、ショットを開始するための1回目の指示入力を受け付けると(S300のY)、パワーを決定するための2回目の指示入力を受け付けるまで待機し(S302のN)、2回目の指示入力を受け付けると(S302のY)、指示入力のタイミングが所定の範囲内であれば(S304のY)、そのときのゲーム装置10の姿勢を示す情報を3軸ジャイロセンサ75又は3軸加速度センサ76から取得し、ピッチ角を算出して基準角度とする(S306)。指示入力のタイミングが所定の範囲外であれば(S304のN)、フルパワーショットに失敗したと判定して(S320)、処理を終了する。つづいて、インパクトを決定するための3回目の指示入力を受け付けるまでの間(S308のN)、所定のタイミングでゲーム装置10の姿勢を示す情報を3軸ジャイロセンサ75又は3軸加速度センサ76から取得し、ピッチ角を算出する(S310)。3回目の指示入力を受け付けると(S308のY)、指示入力のタイミングが所定の範囲内であれば(S312のY)、まず、2回目の指示入力から3回目の指示入力までの間のゲーム装置10のピッチ角が第1の角度を超えているか判定し(S314)、超えていれば(S314のY)、更に、3回目の指示入力を受け付けたときのゲーム装置10のピッチ角が第2の角度の範囲内であるか判定する(S316)。第2の角度の範囲内であれば(S316のY)、フルパワーショットに成功したと判定して(S318)、処理を終了する。3回目の指示入力のタイミングが所定の範囲外であるか(S312のN)、2回目の指示入力から3回目の指示入力までの間のゲーム装置10のピッチ角が第1の角度を超えていないか(S314のN)、3回目の指示入力を受け付けたときのゲーム装置10のピッチ角が第2の角度の範囲外であれば(S316のN)、フルパワーショットに失敗したと判定して(S320)、処理を終了する。1回目の指示入力を受け付けない場合(S300のN)、S302〜S320をスキップして処理を終了する。
以上、本発明を実施例をもとに説明した。この実施例は例示であり、その各構成要素や各処理プロセスの組合せにいろいろな変形が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
実施の形態では、プレイヤーズキャラクタが表示された位置において、プレイヤーがタッチパネルと背面タッチパネルを指で挟持すると、プレイヤーズキャラクタを持ち上げて移動させることを可能とする技術について説明した。タッチパネルと背面タッチパネルのほぼ同じ位置を指で挟持する操作を検知して制御に反映させる技術は、他にも多様な応用例が考えられる。例えば、アプローチショットを行う前に、ピンが表示された位置において、タッチパネルと背面タッチパネルに対して同時に上方向へのドラッグ操作が行われたとき、すなわち、プレイヤーがピンをつまんで上に移動させる動作を行ったときに、ピンを抜く制御を行ってもよい。また、画面に表示されているオブジェクトなどを指でつまんで画面の上下左右に移動させることができるようにしてもよい。