ゲーム装置、ゲーム制御方法、及びゲーム制御プログラム
【課題】娯楽性の高いゲーム制御技術を提供する。
【解決手段】
ゲーム装置は、ユーザから操作入力を受け付ける入力受付部と、操作入力に応じてプレイヤーズキャラクタがゴルフをプレーするゲームを制御する制御部140と、ゲームの画面を生成する画面生成部166とを備える。制御部140は、ユーザが入力デバイスを把持してスイングするときに、ショット開始時における入力デバイスの位置と、インパクト時における入力デバイスの位置とを取得し、それらを比較することにより、インパクトの位置を決定するインパクト決定部145と、インパクト決定部145により決定されたインパクトの位置に基づいて、打撃されたボールの弾道を算出する弾道算出部150とを含む。
【解決手段】
ゲーム装置は、ユーザから操作入力を受け付ける入力受付部と、操作入力に応じてプレイヤーズキャラクタがゴルフをプレーするゲームを制御する制御部140と、ゲームの画面を生成する画面生成部166とを備える。制御部140は、ユーザが入力デバイスを把持してスイングするときに、ショット開始時における入力デバイスの位置と、インパクト時における入力デバイスの位置とを取得し、それらを比較することにより、インパクトの位置を決定するインパクト決定部145と、インパクト決定部145により決定されたインパクトの位置に基づいて、打撃されたボールの弾道を算出する弾道算出部150とを含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム制御技術に関し、とくに、ゴルフゲームを制御するゲーム装置、ゲーム制御方法、及びゲーム制御プログラムに関する。
【背景技術】
【0002】
キャラクタを操作してゴルフをプレーするゲームが人気を博している。ゴルフは、現実の世界においても、幅広い年齢層にわたって競技人口が多く、不偏の人気を誇るスポーツである。
【発明の概要】
【発明が解決しようとする課題】
【0003】
数多くのゴルフゲームが市場に出回っているが、もともと競技スタイルがシンプルであるが故に、特色を出すのが難しく、あまり変わり映えのしないものが多い。そのため、新鮮な面白さを味わうことのできる特色あるゴルフゲームの開発が望まれている。とくに、ボールをショットする際のユーザインタフェースは、ゴルフゲームの成績を決定する重要な要素であるから、ユーザにとって使いやすいのはもちろん、ユーザが思ったようなショットを打つことができるような、言い換えれば、ユーザの操作入力が的確にショットに反映されるようなユーザインタフェースであることが望ましい。
【0004】
本発明はこうした状況に鑑みてなされたものであり、その目的は、より娯楽性の高いゲーム制御技術を提供することにある。
【課題を解決するための手段】
【0005】
本発明のある態様は、ゲーム制御プログラムに関する。このゲーム制御プログラムは、コンピュータを、ユーザから操作入力を受け付ける入力受付部、前記操作入力に応じてプレイヤーズキャラクタがゴルフをプレーするゲームを制御する制御部、前記ゲームの画面を表示する画面生成部、として機能させ、前記制御部は、ユーザが入力デバイスを把持してスイングするときに、ショット開始時における前記入力デバイスの位置と、インパクト時における前記入力デバイスの位置とを取得し、それらを比較することにより、インパクトの位置を決定するインパクト決定部と、前記インパクト決定部により決定されたインパクトの位置に基づいて、打撃されたボールの弾道を算出する弾道算出部と、を含むことを特徴とする。
【0006】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0007】
本発明によれば、より娯楽性の高いゲーム制御技術を提供することができる。
【図面の簡単な説明】
【0008】
【図1】本発明の実施例にかかるゲームシステムの使用環境を示す図である。
【図2】入力デバイスの外観構成を示す図である。
【図3】入力デバイスの内部構成を示す図である。
【図4】ゲーム装置の構成を示す図である。
【図5】実施の形態に係るゲームシステムにおいてユーザがショットをしている様子を示す図である。
【図6】アプリケーション処理部の構成を示す図である。
【図7】プレイヤーズキャラクタがショットを行うときのゲーム画面の例を示す図である。
【図8】プレイヤーズキャラクタがショットを行うときのゲーム画面の例を示す図である。
【図9】インパクトの位置を判定する方法を説明するための図である。
【図10】実施の形態に係るゲーム制御方法の手順を示すフローチャートである。
【図11】図10のS116の詳細な手順を示すフローチャートである。
【発明を実施するための形態】
【0009】
実施の形態に係るゲーム装置は、ゴルフゲームを提供する。本実施の形態では、ユーザが把持する入力デバイスをゴルフクラブに見たて、ユーザが入力デバイスを実際にスイングすることによりショットを行う。本実施の形態のゲーム装置は、入力デバイスを撮像するための撮像装置を備えており、ユーザがショットを行っているときに入力デバイスを撮像し、ショット前の基準位置とインパクト時の入力デバイスの位置とを比較することにより、クラブヘッドによるボールの打撃位置を判定して、ショットの弾道に反映させる。これにより、ユーザが実際にゴルフクラブでボールを打っているような感覚で、入力デバイスをスイングしたときの打ち方がゴルフゲームにおけるショットの弾道に反映されるような、本格的なショットを可能とするゲーム装置を実現することができる。
【0010】
図1は、本発明の実施例にかかるゲームシステム1の使用環境を示す。ゲームシステム1は、ゲームソフトウェアを実行するゲーム装置10と、ゲーム装置10による処理結果を出力する表示装置12と、入力デバイス20と、入力デバイス20を撮像する撮像装置14を備える。
【0011】
入力デバイス20は、ユーザが操作指示を行うための操作入力装置であり、ゲーム装置10は、入力デバイス20における操作指示をもとにゲームアプリケーションを処理して、ゲームアプリケーションの処理結果を示す画像信号を生成する処理装置である。
【0012】
入力デバイス20は、ユーザによる操作指示をゲーム装置10に伝送する機能をもち、本実施例ではゲーム装置10との間で無線通信可能な無線コントローラとして構成される。入力デバイス20とゲーム装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルを用いて無線接続を確立してもよい。なお入力デバイス20は、無線コントローラに限らず、ゲーム装置10とケーブルを介して接続される有線コントローラであってもよい。
【0013】
入力デバイス20はバッテリにより駆動され、ゲームを進行させる操作指示を行うための複数のボタンを有して構成される。ユーザが入力デバイス20のボタンを操作すると、その操作指示が無線によりゲーム装置10に送信される。ゲーム装置10は、入力デバイス20から操作指示を受信し、操作指示に応じてゲーム進行を制御して、ゲーム画像信号を生成する。生成されたゲーム画像信号は、表示装置12より出力される。
【0014】
撮像装置14は、CCD撮像素子またはCMOS撮像素子などから構成されるビデオカメラであり、実空間を所定の周期で撮像して、周期ごとのフレーム画像を生成する。たとえば、撮像装置14の撮像速度は30枚/秒として、表示装置12のフレームレートと一致させてもよい。撮像装置14は、USB(Universal Serial Bus)あるいはその他のインタフェースを介してゲーム装置10と接続する。
【0015】
表示装置12は画像を出力するディスプレイであって、ゲーム装置10において生成された画像信号を受けて、ゲーム画面を表示する。表示装置12は、ディスプレイおよびスピーカを有するテレビであってよく、またコンピュータディスプレイであってもよい。表示装置12は、ゲーム装置10に有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などにより無線接続されてもよい。
【0016】
本実施例のゲームシステム1において、入力デバイス20は発光体を有する。ゲーム中、発光体は所定色で発光し、撮像装置14により撮像される。撮像装置14は入力デバイス20を撮像し、フレーム画像を生成してゲーム装置10に供給する。ゲーム装置10はフレーム画像を取得して、フレーム画像における発光体の画像の位置および大きさから、実空間における発光体の位置情報を導出する。ゲーム装置10は、位置情報をゲームの操作指示として取り扱い、プレイヤーキャラクタの動作を制御するなど、ゲームの処理に反映させる。本実施例のゲーム装置10は、入力デバイス20のボタンなどの操作入力だけでなく、取得した発光体画像の位置情報も用いてゲームアプリケーションを処理する機能をもつ。
【0017】
入力デバイス20の発光体は、複数色で発光可能に構成される。発光体は、ゲーム装置10からの発光指示により、発光色を変更できる。
【0018】
また入力デバイス20は加速度センサおよびジャイロセンサを有する。センサの検出値は、所定周期でゲーム装置10に送信され、ゲーム装置10は、センサの検出値を取得して、実空間における入力デバイス20の姿勢情報を取得する。ゲーム装置10は、姿勢情報をゲームの操作指示として取り扱い、ゲームの処理に反映させる。このように本実施例のゲーム装置10は、取得した入力デバイス20の姿勢情報も用いてゲームアプリケーションを処理する機能をもつ。
【0019】
図2は、入力デバイス20の外観構成を示す。図2(a)は、入力デバイス20の上面構成を示し、図2(b)は、入力デバイス20の下面構成を示す。入力デバイス20は、発光体22およびハンドル24を有する。発光体22は、その外側を光透過性を有する樹脂で球体に形成され、内側に発光ダイオードや電球などの発光素子を有する。内側の発光素子が発光すると、外側の球体全体が光る。ハンドル24の上面には、操作ボタン30、32、34、36、38が設けられ、下面には操作ボタン40が設けられる。ユーザはハンドル24の端部を手で把持した状態で、操作ボタン30、32、34、36、38を親指で操作し、操作ボタン40を人差し指で操作する。操作ボタン30、32、34、36、38は、押下式に構成され、ユーザは押下することで操作する。操作ボタン40は、アナログ量を入力できるものであってよい。
【0020】
ユーザは表示装置12に表示されるゲーム画面を見ながらゲームを行う。撮像装置14は、ゲームアプリケーションの実行中に発光体22を撮像する必要があるため、その撮像範囲が表示装置12と同じ方向を向くように配置されることが好ましい。一般にユーザは表示装置12の正面でゲームをプレイすることが多いため、撮像装置14は、その光軸の方向が表示装置12の正面方向と一致するように配置される。具体的に、撮像装置14は、表示装置12の近傍において、表示装置12の表示画面をユーザが視認可能な位置を撮像範囲に含むように配置されることが好ましい。これにより、撮像装置14は、入力デバイス20を撮像できる。
【0021】
図3は、入力デバイス20の内部構成を示す。入力デバイス20は、無線通信モジュール48、処理部50、発光部62および操作ボタン30、32、34、36、38、40を備える。無線通信モジュール48は、ゲーム装置10の無線通信モジュールとの間でデータを送受信する機能をもつ。処理部50は、入力デバイス20における所期の処理を実行する。
【0022】
処理部50は、メイン制御部52、入力受付部54、3軸加速度センサ56、3軸ジャイロセンサ58および発光制御部60を有する。メイン制御部52は、無線通信モジュール48との間で必要なデータの送受を行う。
【0023】
入力受付部54は、操作ボタン30、32、34、36、38、40からの入力情報を受け付け、メイン制御部52に送る。3軸加速度センサ56は、XYZの3軸方向の加速度成分を検出する。3軸ジャイロセンサ58は、XZ平面、ZY平面、YX平面における角速度を検出する。なお、ここでは、入力デバイス20の幅方向をX軸、高さ方向をY軸、長手方向をZ軸と設定する。3軸加速度センサ56および3軸ジャイロセンサ58は、入力デバイス20のハンドル24内に配置され、ハンドル24内の中心近傍に配置されることが好ましい。無線通信モジュール48は、操作ボタンからの入力情報とともに、3軸加速度センサ56による検出値情報、および3軸ジャイロセンサ58による検出値情報を、所定の周期でゲーム装置10の無線通信モジュールに送信する。この送信周期は、たとえば11.25m秒に設定される。
【0024】
発光制御部60は、発光部62の発光を制御する。発光部62は、赤色LED64a、緑色LED64b、青色LED64cを有し、複数色の発光を可能とする。発光制御部60は、赤色LED64a、緑色LED64b、青色LED64cの発光を調整して、発光部62を所望の色に発光させる。
【0025】
無線通信モジュール48はゲーム装置10から発光指示を受け取ると、メイン制御部52に供給し、メイン制御部52は、発光制御部60に発光指示を供給する。発光制御部60は、発光部62が発光指示により指定された色で発光するように、赤色LED64a、緑色LED64b、青色LED64cの発光を制御する。たとえば発光制御部60は、各LEDをPWM(パルス幅変調)制御で点灯制御してもよい。
【0026】
図4は、ゲーム装置10の構成を示す。ゲーム装置10は、フレーム画像取得部80、画像処理部82、デバイス情報導出部84、無線通信モジュール86、入力受付部88、出力部90およびアプリケーション処理部100を備える。本実施例におけるゲーム装置10の処理機能は、CPU、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される構成を描いている。プログラムは、ゲーム装置10に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。なおハードウェアの構成上、ゲーム装置10は複数のCPUを有してもよい。
【0027】
無線通信モジュール86は、入力デバイス20の無線通信モジュール48との間で無線通信を確立する。これにより入力デバイス20は、操作ボタンの状態情報、3軸加速度センサ56および3軸ジャイロセンサ58の検出値情報を、ゲーム装置10に所定の周期で送信できるようになる。
【0028】
無線通信モジュール86は、入力デバイス20から送信される操作ボタンの状態情報、およびセンサ検出値情報を受信し、入力受付部88に供給する。入力受付部88は、ボタン状態情報およびセンサ検出値情報を分離し、アプリケーション処理部100に引き渡す。アプリケーション処理部100は、ボタン状態情報およびセンサ検出値情報を、ゲームの操作指示として受け取る。アプリケーション処理部100は、センサ検出値情報を、入力デバイス20の姿勢情報として取り扱う。
【0029】
フレーム画像取得部80はUSBインタフェースとして構成され、撮像装置14から所定の撮像速度(たとえば30フレーム/秒)でフレーム画像を取得する。画像処理部82は、フレーム画像から発光体画像を抽出する。画像処理部82は、フレーム画像中の発光体画像の位置、および大きさを特定する。入力デバイス20の発光体22が、たとえばユーザ環境内で使われそうにない色で点灯することで、画像処理部82は、フレーム画像から高精度に発光体画像を抽出できる。画像処理部82は、フレーム画像データを所定の閾値を用いて2値化処理し、2値化された画像を生成してもよい。この2値化処理により、所定の閾値より大きい輝度を保持する画素の画素値が“1”に符号化され、所定の閾値以下の輝度を保持する画素の画素値が“0”に符号化される。この所定の閾値を超える輝度で発光体22を点灯させることで、画像処理部82は、2値化された画像から、発光体画像の位置および大きさを特定できる。たとえば画像処理部82は、フレーム画像における発光体画像の重心座標と、発光体画像の半径を特定する。
【0030】
デバイス情報導出部84は、画像処理部82で特定された発光体画像の位置および大きさから、撮像装置14からみた入力デバイス20の位置情報を導出する。デバイス情報導出部84は、発光体画像の重心座標からカメラ座標における位置座標を導出し、また発光体画像の半径から、撮像装置14からの距離情報を導出する。この位置座標および距離情報は、入力デバイス20の位置情報を構成する。デバイス情報導出部84は、フレーム画像ごとに入力デバイス20の位置情報を導出し、アプリケーション処理部100に引き渡す。アプリケーション処理部100は、入力デバイス20の位置情報を、ゲームの操作指示として受け取る。
【0031】
アプリケーション処理部100は、入力デバイス20の位置情報および姿勢情報と、ボタン状態情報とからゲームを進行させて、ゲームアプリケーションの処理結果を示す画像信号を生成する。画像信号は出力部90から表示装置12に送られ、表示画像として出力される。
【0032】
図5は、実施の形態に係るゲームシステムにおいてユーザがショットをしている様子を示す図である。ユーザが入力デバイス20をゴルフクラブのように把持してスイングすると、ゲーム装置10は、撮像装置14により入力デバイス20を撮像して入力デバイス20の移動軌跡を取得し、ユーザのスイングに合わせて、表示装置12に表示されるプレイヤーズキャラクタをスイングさせる。また、後述するように、ユーザのスイングの軌跡に応じてショットのパワーとインパクト位置を決定し、弾道に反映させる。
【0033】
図6は、アプリケーション処理部100の構成を示す。アプリケーション処理部100は、制御部140、パラメータ保持部160、及びゲームデータ保持部170を備える。制御部140は、ショット制御部141、弾道算出部150、及び画面生成部166を備える。ショット制御部141は、初期設定部142、パワー決定部144、及びインパクト決定部145を備える。これらの構成も、ハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。
【0034】
制御部140は、ゴルフゲームのプログラムが格納されたゲームデータ保持部170からプログラムを読み出して実行し、入力デバイス20から受け付けたユーザの操作入力に基づいて、ゲーム世界においてゴルフプレイヤーとして機能するプレイヤーズキャラクタの動作を制御しつつ、ゴルフゲームを進行させる。パラメータ保持部160は、ゴルフゲームの進行に必要なパラメータを保持する。ゲームデータ保持部170は、ゲームデータを保持する。画面生成部166は、制御部140により制御されるゲームの画面を生成し、出力部90から出力して表示装置12に表示させる。
【0035】
図7は、プレイヤーズキャラクタがショットを行うときのゲーム画面の例を示す。画面102には、プレー中のホールの地形がレンダリングされた画像と、プレイヤーズキャラクタを後方から見た画像が表示されている。ユーザは、この画面において、入力デバイス20を操作してショットのパワー及びインパクトを決定し、プレイヤーズキャラクタにショットを行わせる。
【0036】
初期設定部142は、ユーザに、入力デバイス20を把持して実際にボールを打つようにアドレスした姿勢と、スイングしてフォロースルーに入る前の両腕を前方に伸ばした姿勢をとらせて、それらの状態を撮像装置14に撮像させ、それらの状態における入力デバイス20の位置を取得する。初期設定部142は、それらの位置の間の距離を算出し、補正用パラメータとしてパラメータ保持部160に格納する。この補正用パラメータは、ユーザの腕の長さにほぼ比例する。後述するように、パワー決定部144は、ユーザがバックスイングしたときの入力デバイス20の位置から、バックスイングの度合いを判定してパワーに反映させるが、ユーザの腕の長さによってバックスイングしたときの入力デバイス20の位置が異なるので、初期設定部142が算出した補正用パラメータを参照して補正を行う。初期設定部142は、鉛直方向に平行で、上記の2つの状態における入力デバイス20の位置を通る平面を算出し、スイング面としてパラメータ保持部160に格納する。初期設定部142は、スイング面と撮像装置14の視線方向とが所定角以上ずれている場合は、ほぼ平行になるようにアドレスを正すようユーザに促してもよい。
【0037】
パワー決定部144は、プレイヤーズキャラクタのショットのパワーを決定する。パワー決定部144は、ショットを開始する指示が割り当てられた操作入力を入力デバイス20から受け付けると、そのときの入力デバイス20の姿勢に関する情報を入力受付部88から取得する。パワー決定部144は、入力デバイス20がユーザにより正しくアドレスされた状態にあるか否かを判定する。例えば、3軸加速度センサ56又は3軸ジャイロセンサ58からセンサ値を取得して入力デバイス20の姿勢を算出し、算出した姿勢が所定の範囲内であるか否かを判定する。入力デバイス20の姿勢が所定の範囲内になければ、パワー決定部144は、入力デバイス20を把持して正しく構えるようユーザに促す。入力デバイス20の姿勢が所定の範囲内にあれば、パワー決定部144は、そのときの入力デバイス20の位置座標及び距離情報を含む位置情報をデバイス情報導出部84から取得し、基準位置としてパラメータ保持部160に格納して、ユーザによるショットの制御を開始する。
【0038】
パワー決定部144は、入力デバイス20の位置情報を所定の間隔でデバイス情報導出部84から取得し、パラメータ保持部160に格納されている入力デバイス20の基準位置と比較することにより、ユーザのスイングの度合いを判定する。このとき、パワー決定部144は、初期設定部142により設定された補正用パラメータを参照してスイングの度合いを補正する。例えば、入力デバイス20の現在位置と基準位置との間の距離を算出し、補正用パラメータが大きい、すなわち、ユーザの腕の長さが長いほど小さく、補正用パラメータが小さい、すなわち、ユーザの腕の長さが短いほど大きい値を距離に乗じて補正値を算出し、算出された補正値からユーザのスイングの度合いを判定する。パワー決定部144は、スイング面と撮像装置14の向きとを更に考慮してスイングの度合いを補正してもよい。パワー決定部144は、スイングの度合いと補正値との対応をゲームデータ保持部170に格納しておき、算出された補正値に対応するスイングの度合いを取得してもよい。撮像装置14とユーザとの位置関係によっては、ユーザがバックスイングしているときに入力デバイス20がユーザの頭又は体に隠れて撮像装置14により撮像されない場合があるが、その場合は、パワー決定部144は、入力デバイス20が撮像されている間の入力デバイス20の移動軌跡と速度を算出し、入力デバイス20が撮像されなかったときの入力デバイス20の位置を外挿補間などにより推測してもよい。また、3軸加速度センサ56又は3軸ジャイロセンサ58のセンサ値を取得して、入力デバイス20の位置を算出してもよい。
【0039】
パワー決定部144は、判定されたスイングの度合いに応じて、プレイヤーズキャラクタがスイングしている様子を表示する。パワー決定部144は、プレイヤーズキャラクタがスイングする過程を表現した複数の画像を、スイングの度合いと対応づけてゲームデータ保持部170に格納しておき、判定されたスイングの度合いに対応する画像を読み出して表示してもよい。また、プレイヤーズキャラクタがスイングするときの姿勢情報を、スイングの度合いと対応づけてゲームデータ保持部170に格納しておき、判定されたスイングの度合いに対応する姿勢情報を適用して、プレイヤーズキャラクタの3次元形状データをレンダリングしてもよい。これにより、ユーザのスイングに合わせてプレイヤーズキャラクタもスイングしているように見せることができる。
【0040】
パワー決定部144は、判定されたスイングの度合いに応じて、ショットのパワーの度合いを画面に表示する。パワー決定部144は、後述するように、ユーザがどこまでテークバックしたかを示す値と、インパクト時の入力デバイス20の速度から、ショットのパワーを算出するが、ユーザがスイングしているときに、その位置からダウンスイングしてボールを打撃したときのショットのパワーの目安として、テークバックの度合いに応じたパワーゲージを表示する。パワー決定部144は、テークバックの度合い、すなわち、パワーの目安が所定の値に達したときに、音を出力してもよいし、入力デバイス20を振動又は発光させてもよい。例えば、テークバックの度合いが50%と100%に達したときに、入力デバイス20を振動させてもよい。
【0041】
図8は、プレイヤーズキャラクタがショットを行うときのゲーム画面の例を示す。画面102には、ユーザのスイングの度合いに応じて、プレイヤーズキャラクタがスイングしている様子が表示されている。また、ユーザのテークバックの度合いに応じて、その状態から振り下ろしてショットしたときのパワーの目安を示すパワーゲージ110が表示されている。
【0042】
ユーザがダウンスイングを行って、入力デバイス20がショットの開始時の基準位置よりも撮像装置14に近づくと、パワー決定部144は、ユーザがどこまでテークバックしたかを示す値と、インパクト時の入力デバイス20の速度から、ショットのパワーを算出する。パワー決定部144は、ショットが開始されて、入力デバイス20と撮像装置14の間の距離が遠くなった後、再びショット開始時と同じ距離になったときをインパクトの瞬間とし、それまでのユーザのスイングの度合いの最大値をテークバックの度合いとする。また、パワー決定部144は、インパクトの瞬間の入力デバイス20の速度を取得する。パワー決定部144は、3軸加速度センサ56又は3軸ジャイロセンサ58のセンサ値を取得して入力デバイス20の速度を算出してもよいし、デバイス情報導出部84から取得した入力デバイス20の位置情報から入力デバイス20の速度を算出してもよい。パワー決定部144は、テークバックの度合いと入力デバイス20の速度からパワーを算出して弾道算出部150へ通知する。パワー決定部144は、テークバックの度合いが大きいほど、また、入力デバイス20の速度が速いほど、パワーが大きくなるようにする。
【0043】
インパクト決定部145は、インパクトの瞬間の入力デバイス20の位置情報をデバイス情報導出部84から取得し、ショット開始時の基準位置と比較することにより、クラブヘッドがボールを打撃した位置を判定する。インパクト決定部145は、基準位置における入力デバイス20と撮像装置14との間の距離と同じ距離になったときの入力デバイス20の位置座標を取得する。同じ距離になったときの位置情報がない場合は、インパクト決定部145は、前後の複数のフレームの位置座標から内挿補間又は外挿補間により、同じ距離になったときの位置座標を取得してもよい。例えば、前後又は直前の3以上のフレームの位置座標を用いて、入力デバイス20の軌道を多項式などにより表現される3次元曲線で近似し、3次元近似曲線上で同じ距離になったときの位置座標を算出してもよい。インパクト決定部145は、3軸加速度センサ56又は3軸ジャイロセンサ58のセンサ値を取得して、スイング中の入力デバイス20と撮像装置14との間の距離を算出してもよい。例えば、スイング面に平行な方向の加速度成分を積分することにより、入力デバイス20の基準位置からの相対位置を算出してもよい。インパクト決定部145は、ショット開始時の基準位置とインパクト時の位置とのずれの大きさを算出し、ずれの大きさに応じてインパクトの位置を判定する。
【0044】
図9は、インパクトの位置を判定する方法を説明するための図である。図8は、ショット開始時の発光体22の位置200と、インパクト時の発光体22の位置202を示す。インパクト決定部145は、位置200における発光体22の中心位置を中心とした所定長の半径のゴルフボール204を想定し、位置202における発光体22の中心位置206をクラブヘッドが打撃したと判定してもよい。このとき、プレイヤーズキャラクタの属性やユーザのレベルなどに応じて、ゴルフボール204の半径を調整してもよい。例えば、初級者用のプレイヤーズキャラクタが使用されている場合は、ゴルフボール204の半径を大きくして、基準位置とインパクト時の位置とのずれがインパクト位置のずれに反映されにくくしてもよい。逆に、上級者用のプレイヤーズキャラクタが使用されている場合は、ゴルフボール204の半径を小さくして、ずれがインパクト位置に反映されやすくしてもよい。インパクト決定部145は、ずれが所定の範囲内である場合は、ボールの中心位置を打撃したことにしてもよい。インパクト決定部145は、決定したインパクト位置を弾道算出部150に通知する。
【0045】
弾道算出部150は、ショット制御部141により決定されたショットのパワー及びインパクトと、ボールのライ、風、地形などの外部要因に基づいて、ショットされたボールの弾道を物理計算により算出する。
【0046】
弾道算出部150は、ショットに用いたクラブに応じて予め設定された初速度及びロフト角をパラメータ保持部160から読み出す。弾道算出部150は、読み出したロフト角と、インパクト決定部145から通知されたインパクト位置に基づいて、ボールが飛ぶ方向を決定する。弾道算出部150は、パワー決定部144により決定されたパワー、インパクト決定部145により決定されたインパクト位置、プレイヤーズキャラクタごとに設定された体力などの属性値、ボールのライなどに応じて、ボールの初速度を調整する。例えば、パワーが高いほど初速度が速くなるように、パワーの%値を初速度に乗じてもよい。また、インパクトの位置が中心から外れるほど狙った着地点からずれるように、ボールの飛ぶ方向や速度などを調整してもよい。例えば、ボールの左側を打撃した場合はボールの軌道を右に曲げてスライスボールとし、右側を打撃した場合は左に曲げてフックボールとしてもよい。また、パワーが所定の下限値以下であった場合や、インパクトの位置が所定値以上ボールの中心から外れていた場合は、ミスショットとして扱い、極端に初速度を小さくして弾道を算出してもよい。ラフやバンカーの場合は、フェアウェイよりも初速度を低くしてもよい。また、ボールの接地面の傾斜が大きければ初速度を低くしてもよい。ショットの際にプレイヤーが初速度やロフト角を変更する操作入力を行った場合には、さらにその影響を考慮して初速度やロフト角を調整してもよい。
【0047】
弾道算出部150は、初速度とロフト角を決定すると、ボールに作用する力に応じて速度を調整しつつ、ボールの位置をフレームごとに算出する。弾道算出部150は、ボールの現在位置の座標に対して、フレームを単位とした速度を加算し、次のフレームにおけるボールの位置の座標を算出する。ボールの速度には、フレームごとに、重力、揚力、風力、空気抵抗が加算される。重力については、物理法則に則って、下向きに、9.8メートル毎秒毎秒とする。揚力は、上向きに、速度に比例する値とする。風力は、ホールの全ての場所において一定方向に一定速度としてもよいし、場所に応じて変化させてもよい。空気抵抗は、進行方向と逆向きに、速度に比例する値とする。このように、風の方向及び速度を考慮してボールの弾道を算出することにより、現実のゴルフと同様に、風の影響を考慮しながらショットを行う難しさを演出することができ、よりリアリティのあるゴルフゲームを実現することができる。
【0048】
ボールが何かに衝突した場合は、衝突した面の属性に応じて予め設定された摩擦係数及び反発係数にしたがって、水平方向及び垂直方向の速度を調整する。摩擦係数及び反発係数は、フェアウェイ、ラフ、バンカーなどによって異なる値を設定してもよい。弾道算出部150は、さらに、演出効果として、物理法則とは関係のない特殊な演算を弾道に与えてもよい。これにより、ゴルフゲームに変化を持たせ、ゲームの娯楽性を向上させることができる。
【0049】
画面生成部166は、弾道算出部150により算出されたボールの位置に応じて、ボールが画面に入るようにカメラの視点位置及び視線方向を設定し、ボールが飛ぶ様子を示す画面を生成する。ボールが停止すると、次のショットに移る。
【0050】
図10は、実施の形態に係るゲーム制御方法の手順を示すフローチャートである。ユーザが操作ボタン30を押してショットが開始されると(S100のY)、パワー決定部144は、そのときの入力デバイス20の位置を取得し、基準位置としてパラメータ保持部160に記録する(S102)。ユーザがスイングしている間、パワー決定部144は、入力デバイス20の位置を取得し(S104)、スイングの度合いを判定して(S106)、スイングの度合いに応じてプレイヤーズキャラクタの表示を更新し(S108)、パワーの指標となるパワーゲージの表示を更新する(S110)。パワー決定部144は、ボールがインパクトされたと判定されるまで(S112のN)、S104からS110の手順を繰り返す。
【0051】
入力デバイス20と撮像装置14との間の距離が、基準位置におけるそれらの間の距離と等しくなったとき、パワー決定部144は、ボールがインパクトされたと判定し(S112のY)、テークバックの度合いとインパクト時の入力デバイス20の速度に基づいてショットのパワーを決定する(S114)。インパクト決定部145は、インパクト時の入力デバイス20の位置とショット開始時の基準位置とを比較して、インパクトの位置を決定する(S116)。弾道算出部150は、決定されたパワーとインパクトの位置に基づいてボールの弾道を算出し(S118)、画面生成部166は、算出された弾道を画面に表示する(S120)。ショットが開始されない場合は(S100のN)、全ての手順をスキップする。
【0052】
図11は、図10のS116の詳細な手順を示すフローチャートである。インパクト決定部145は、ショット開始時の入力デバイス20の基準位置を取得するとともに(S140)、インパクト時の入力デバイス20の位置を取得し(S142)、それらの間のずれを算出することにより、インパクトの位置を算出する(S144)。インパクト決定部145は、プレイヤーズキャラクタ又はユーザの属性に応じて、インパクトの位置を補正する(S146)。
【0053】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、その各構成要素や各処理プロセスの組合せにいろいろな変形が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【0054】
1 ゲームシステム、10 ゲーム装置、12 表示装置、14 撮像装置、20 入力デバイス、22 発光体、100 アプリケーション処理部、140 制御部、141 ショット制御部、142 初期設定部、144 パワー決定部、145 インパクト決定部、150 弾道算出部、160 パラメータ保持部、166 画面生成部、170 ゲームデータ保持部。
【技術分野】
【0001】
本発明は、ゲーム制御技術に関し、とくに、ゴルフゲームを制御するゲーム装置、ゲーム制御方法、及びゲーム制御プログラムに関する。
【背景技術】
【0002】
キャラクタを操作してゴルフをプレーするゲームが人気を博している。ゴルフは、現実の世界においても、幅広い年齢層にわたって競技人口が多く、不偏の人気を誇るスポーツである。
【発明の概要】
【発明が解決しようとする課題】
【0003】
数多くのゴルフゲームが市場に出回っているが、もともと競技スタイルがシンプルであるが故に、特色を出すのが難しく、あまり変わり映えのしないものが多い。そのため、新鮮な面白さを味わうことのできる特色あるゴルフゲームの開発が望まれている。とくに、ボールをショットする際のユーザインタフェースは、ゴルフゲームの成績を決定する重要な要素であるから、ユーザにとって使いやすいのはもちろん、ユーザが思ったようなショットを打つことができるような、言い換えれば、ユーザの操作入力が的確にショットに反映されるようなユーザインタフェースであることが望ましい。
【0004】
本発明はこうした状況に鑑みてなされたものであり、その目的は、より娯楽性の高いゲーム制御技術を提供することにある。
【課題を解決するための手段】
【0005】
本発明のある態様は、ゲーム制御プログラムに関する。このゲーム制御プログラムは、コンピュータを、ユーザから操作入力を受け付ける入力受付部、前記操作入力に応じてプレイヤーズキャラクタがゴルフをプレーするゲームを制御する制御部、前記ゲームの画面を表示する画面生成部、として機能させ、前記制御部は、ユーザが入力デバイスを把持してスイングするときに、ショット開始時における前記入力デバイスの位置と、インパクト時における前記入力デバイスの位置とを取得し、それらを比較することにより、インパクトの位置を決定するインパクト決定部と、前記インパクト決定部により決定されたインパクトの位置に基づいて、打撃されたボールの弾道を算出する弾道算出部と、を含むことを特徴とする。
【0006】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0007】
本発明によれば、より娯楽性の高いゲーム制御技術を提供することができる。
【図面の簡単な説明】
【0008】
【図1】本発明の実施例にかかるゲームシステムの使用環境を示す図である。
【図2】入力デバイスの外観構成を示す図である。
【図3】入力デバイスの内部構成を示す図である。
【図4】ゲーム装置の構成を示す図である。
【図5】実施の形態に係るゲームシステムにおいてユーザがショットをしている様子を示す図である。
【図6】アプリケーション処理部の構成を示す図である。
【図7】プレイヤーズキャラクタがショットを行うときのゲーム画面の例を示す図である。
【図8】プレイヤーズキャラクタがショットを行うときのゲーム画面の例を示す図である。
【図9】インパクトの位置を判定する方法を説明するための図である。
【図10】実施の形態に係るゲーム制御方法の手順を示すフローチャートである。
【図11】図10のS116の詳細な手順を示すフローチャートである。
【発明を実施するための形態】
【0009】
実施の形態に係るゲーム装置は、ゴルフゲームを提供する。本実施の形態では、ユーザが把持する入力デバイスをゴルフクラブに見たて、ユーザが入力デバイスを実際にスイングすることによりショットを行う。本実施の形態のゲーム装置は、入力デバイスを撮像するための撮像装置を備えており、ユーザがショットを行っているときに入力デバイスを撮像し、ショット前の基準位置とインパクト時の入力デバイスの位置とを比較することにより、クラブヘッドによるボールの打撃位置を判定して、ショットの弾道に反映させる。これにより、ユーザが実際にゴルフクラブでボールを打っているような感覚で、入力デバイスをスイングしたときの打ち方がゴルフゲームにおけるショットの弾道に反映されるような、本格的なショットを可能とするゲーム装置を実現することができる。
【0010】
図1は、本発明の実施例にかかるゲームシステム1の使用環境を示す。ゲームシステム1は、ゲームソフトウェアを実行するゲーム装置10と、ゲーム装置10による処理結果を出力する表示装置12と、入力デバイス20と、入力デバイス20を撮像する撮像装置14を備える。
【0011】
入力デバイス20は、ユーザが操作指示を行うための操作入力装置であり、ゲーム装置10は、入力デバイス20における操作指示をもとにゲームアプリケーションを処理して、ゲームアプリケーションの処理結果を示す画像信号を生成する処理装置である。
【0012】
入力デバイス20は、ユーザによる操作指示をゲーム装置10に伝送する機能をもち、本実施例ではゲーム装置10との間で無線通信可能な無線コントローラとして構成される。入力デバイス20とゲーム装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルを用いて無線接続を確立してもよい。なお入力デバイス20は、無線コントローラに限らず、ゲーム装置10とケーブルを介して接続される有線コントローラであってもよい。
【0013】
入力デバイス20はバッテリにより駆動され、ゲームを進行させる操作指示を行うための複数のボタンを有して構成される。ユーザが入力デバイス20のボタンを操作すると、その操作指示が無線によりゲーム装置10に送信される。ゲーム装置10は、入力デバイス20から操作指示を受信し、操作指示に応じてゲーム進行を制御して、ゲーム画像信号を生成する。生成されたゲーム画像信号は、表示装置12より出力される。
【0014】
撮像装置14は、CCD撮像素子またはCMOS撮像素子などから構成されるビデオカメラであり、実空間を所定の周期で撮像して、周期ごとのフレーム画像を生成する。たとえば、撮像装置14の撮像速度は30枚/秒として、表示装置12のフレームレートと一致させてもよい。撮像装置14は、USB(Universal Serial Bus)あるいはその他のインタフェースを介してゲーム装置10と接続する。
【0015】
表示装置12は画像を出力するディスプレイであって、ゲーム装置10において生成された画像信号を受けて、ゲーム画面を表示する。表示装置12は、ディスプレイおよびスピーカを有するテレビであってよく、またコンピュータディスプレイであってもよい。表示装置12は、ゲーム装置10に有線ケーブルで接続されてよく、また無線LAN(Local Area Network)などにより無線接続されてもよい。
【0016】
本実施例のゲームシステム1において、入力デバイス20は発光体を有する。ゲーム中、発光体は所定色で発光し、撮像装置14により撮像される。撮像装置14は入力デバイス20を撮像し、フレーム画像を生成してゲーム装置10に供給する。ゲーム装置10はフレーム画像を取得して、フレーム画像における発光体の画像の位置および大きさから、実空間における発光体の位置情報を導出する。ゲーム装置10は、位置情報をゲームの操作指示として取り扱い、プレイヤーキャラクタの動作を制御するなど、ゲームの処理に反映させる。本実施例のゲーム装置10は、入力デバイス20のボタンなどの操作入力だけでなく、取得した発光体画像の位置情報も用いてゲームアプリケーションを処理する機能をもつ。
【0017】
入力デバイス20の発光体は、複数色で発光可能に構成される。発光体は、ゲーム装置10からの発光指示により、発光色を変更できる。
【0018】
また入力デバイス20は加速度センサおよびジャイロセンサを有する。センサの検出値は、所定周期でゲーム装置10に送信され、ゲーム装置10は、センサの検出値を取得して、実空間における入力デバイス20の姿勢情報を取得する。ゲーム装置10は、姿勢情報をゲームの操作指示として取り扱い、ゲームの処理に反映させる。このように本実施例のゲーム装置10は、取得した入力デバイス20の姿勢情報も用いてゲームアプリケーションを処理する機能をもつ。
【0019】
図2は、入力デバイス20の外観構成を示す。図2(a)は、入力デバイス20の上面構成を示し、図2(b)は、入力デバイス20の下面構成を示す。入力デバイス20は、発光体22およびハンドル24を有する。発光体22は、その外側を光透過性を有する樹脂で球体に形成され、内側に発光ダイオードや電球などの発光素子を有する。内側の発光素子が発光すると、外側の球体全体が光る。ハンドル24の上面には、操作ボタン30、32、34、36、38が設けられ、下面には操作ボタン40が設けられる。ユーザはハンドル24の端部を手で把持した状態で、操作ボタン30、32、34、36、38を親指で操作し、操作ボタン40を人差し指で操作する。操作ボタン30、32、34、36、38は、押下式に構成され、ユーザは押下することで操作する。操作ボタン40は、アナログ量を入力できるものであってよい。
【0020】
ユーザは表示装置12に表示されるゲーム画面を見ながらゲームを行う。撮像装置14は、ゲームアプリケーションの実行中に発光体22を撮像する必要があるため、その撮像範囲が表示装置12と同じ方向を向くように配置されることが好ましい。一般にユーザは表示装置12の正面でゲームをプレイすることが多いため、撮像装置14は、その光軸の方向が表示装置12の正面方向と一致するように配置される。具体的に、撮像装置14は、表示装置12の近傍において、表示装置12の表示画面をユーザが視認可能な位置を撮像範囲に含むように配置されることが好ましい。これにより、撮像装置14は、入力デバイス20を撮像できる。
【0021】
図3は、入力デバイス20の内部構成を示す。入力デバイス20は、無線通信モジュール48、処理部50、発光部62および操作ボタン30、32、34、36、38、40を備える。無線通信モジュール48は、ゲーム装置10の無線通信モジュールとの間でデータを送受信する機能をもつ。処理部50は、入力デバイス20における所期の処理を実行する。
【0022】
処理部50は、メイン制御部52、入力受付部54、3軸加速度センサ56、3軸ジャイロセンサ58および発光制御部60を有する。メイン制御部52は、無線通信モジュール48との間で必要なデータの送受を行う。
【0023】
入力受付部54は、操作ボタン30、32、34、36、38、40からの入力情報を受け付け、メイン制御部52に送る。3軸加速度センサ56は、XYZの3軸方向の加速度成分を検出する。3軸ジャイロセンサ58は、XZ平面、ZY平面、YX平面における角速度を検出する。なお、ここでは、入力デバイス20の幅方向をX軸、高さ方向をY軸、長手方向をZ軸と設定する。3軸加速度センサ56および3軸ジャイロセンサ58は、入力デバイス20のハンドル24内に配置され、ハンドル24内の中心近傍に配置されることが好ましい。無線通信モジュール48は、操作ボタンからの入力情報とともに、3軸加速度センサ56による検出値情報、および3軸ジャイロセンサ58による検出値情報を、所定の周期でゲーム装置10の無線通信モジュールに送信する。この送信周期は、たとえば11.25m秒に設定される。
【0024】
発光制御部60は、発光部62の発光を制御する。発光部62は、赤色LED64a、緑色LED64b、青色LED64cを有し、複数色の発光を可能とする。発光制御部60は、赤色LED64a、緑色LED64b、青色LED64cの発光を調整して、発光部62を所望の色に発光させる。
【0025】
無線通信モジュール48はゲーム装置10から発光指示を受け取ると、メイン制御部52に供給し、メイン制御部52は、発光制御部60に発光指示を供給する。発光制御部60は、発光部62が発光指示により指定された色で発光するように、赤色LED64a、緑色LED64b、青色LED64cの発光を制御する。たとえば発光制御部60は、各LEDをPWM(パルス幅変調)制御で点灯制御してもよい。
【0026】
図4は、ゲーム装置10の構成を示す。ゲーム装置10は、フレーム画像取得部80、画像処理部82、デバイス情報導出部84、無線通信モジュール86、入力受付部88、出力部90およびアプリケーション処理部100を備える。本実施例におけるゲーム装置10の処理機能は、CPU、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される構成を描いている。プログラムは、ゲーム装置10に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。なおハードウェアの構成上、ゲーム装置10は複数のCPUを有してもよい。
【0027】
無線通信モジュール86は、入力デバイス20の無線通信モジュール48との間で無線通信を確立する。これにより入力デバイス20は、操作ボタンの状態情報、3軸加速度センサ56および3軸ジャイロセンサ58の検出値情報を、ゲーム装置10に所定の周期で送信できるようになる。
【0028】
無線通信モジュール86は、入力デバイス20から送信される操作ボタンの状態情報、およびセンサ検出値情報を受信し、入力受付部88に供給する。入力受付部88は、ボタン状態情報およびセンサ検出値情報を分離し、アプリケーション処理部100に引き渡す。アプリケーション処理部100は、ボタン状態情報およびセンサ検出値情報を、ゲームの操作指示として受け取る。アプリケーション処理部100は、センサ検出値情報を、入力デバイス20の姿勢情報として取り扱う。
【0029】
フレーム画像取得部80はUSBインタフェースとして構成され、撮像装置14から所定の撮像速度(たとえば30フレーム/秒)でフレーム画像を取得する。画像処理部82は、フレーム画像から発光体画像を抽出する。画像処理部82は、フレーム画像中の発光体画像の位置、および大きさを特定する。入力デバイス20の発光体22が、たとえばユーザ環境内で使われそうにない色で点灯することで、画像処理部82は、フレーム画像から高精度に発光体画像を抽出できる。画像処理部82は、フレーム画像データを所定の閾値を用いて2値化処理し、2値化された画像を生成してもよい。この2値化処理により、所定の閾値より大きい輝度を保持する画素の画素値が“1”に符号化され、所定の閾値以下の輝度を保持する画素の画素値が“0”に符号化される。この所定の閾値を超える輝度で発光体22を点灯させることで、画像処理部82は、2値化された画像から、発光体画像の位置および大きさを特定できる。たとえば画像処理部82は、フレーム画像における発光体画像の重心座標と、発光体画像の半径を特定する。
【0030】
デバイス情報導出部84は、画像処理部82で特定された発光体画像の位置および大きさから、撮像装置14からみた入力デバイス20の位置情報を導出する。デバイス情報導出部84は、発光体画像の重心座標からカメラ座標における位置座標を導出し、また発光体画像の半径から、撮像装置14からの距離情報を導出する。この位置座標および距離情報は、入力デバイス20の位置情報を構成する。デバイス情報導出部84は、フレーム画像ごとに入力デバイス20の位置情報を導出し、アプリケーション処理部100に引き渡す。アプリケーション処理部100は、入力デバイス20の位置情報を、ゲームの操作指示として受け取る。
【0031】
アプリケーション処理部100は、入力デバイス20の位置情報および姿勢情報と、ボタン状態情報とからゲームを進行させて、ゲームアプリケーションの処理結果を示す画像信号を生成する。画像信号は出力部90から表示装置12に送られ、表示画像として出力される。
【0032】
図5は、実施の形態に係るゲームシステムにおいてユーザがショットをしている様子を示す図である。ユーザが入力デバイス20をゴルフクラブのように把持してスイングすると、ゲーム装置10は、撮像装置14により入力デバイス20を撮像して入力デバイス20の移動軌跡を取得し、ユーザのスイングに合わせて、表示装置12に表示されるプレイヤーズキャラクタをスイングさせる。また、後述するように、ユーザのスイングの軌跡に応じてショットのパワーとインパクト位置を決定し、弾道に反映させる。
【0033】
図6は、アプリケーション処理部100の構成を示す。アプリケーション処理部100は、制御部140、パラメータ保持部160、及びゲームデータ保持部170を備える。制御部140は、ショット制御部141、弾道算出部150、及び画面生成部166を備える。ショット制御部141は、初期設定部142、パワー決定部144、及びインパクト決定部145を備える。これらの構成も、ハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できる。
【0034】
制御部140は、ゴルフゲームのプログラムが格納されたゲームデータ保持部170からプログラムを読み出して実行し、入力デバイス20から受け付けたユーザの操作入力に基づいて、ゲーム世界においてゴルフプレイヤーとして機能するプレイヤーズキャラクタの動作を制御しつつ、ゴルフゲームを進行させる。パラメータ保持部160は、ゴルフゲームの進行に必要なパラメータを保持する。ゲームデータ保持部170は、ゲームデータを保持する。画面生成部166は、制御部140により制御されるゲームの画面を生成し、出力部90から出力して表示装置12に表示させる。
【0035】
図7は、プレイヤーズキャラクタがショットを行うときのゲーム画面の例を示す。画面102には、プレー中のホールの地形がレンダリングされた画像と、プレイヤーズキャラクタを後方から見た画像が表示されている。ユーザは、この画面において、入力デバイス20を操作してショットのパワー及びインパクトを決定し、プレイヤーズキャラクタにショットを行わせる。
【0036】
初期設定部142は、ユーザに、入力デバイス20を把持して実際にボールを打つようにアドレスした姿勢と、スイングしてフォロースルーに入る前の両腕を前方に伸ばした姿勢をとらせて、それらの状態を撮像装置14に撮像させ、それらの状態における入力デバイス20の位置を取得する。初期設定部142は、それらの位置の間の距離を算出し、補正用パラメータとしてパラメータ保持部160に格納する。この補正用パラメータは、ユーザの腕の長さにほぼ比例する。後述するように、パワー決定部144は、ユーザがバックスイングしたときの入力デバイス20の位置から、バックスイングの度合いを判定してパワーに反映させるが、ユーザの腕の長さによってバックスイングしたときの入力デバイス20の位置が異なるので、初期設定部142が算出した補正用パラメータを参照して補正を行う。初期設定部142は、鉛直方向に平行で、上記の2つの状態における入力デバイス20の位置を通る平面を算出し、スイング面としてパラメータ保持部160に格納する。初期設定部142は、スイング面と撮像装置14の視線方向とが所定角以上ずれている場合は、ほぼ平行になるようにアドレスを正すようユーザに促してもよい。
【0037】
パワー決定部144は、プレイヤーズキャラクタのショットのパワーを決定する。パワー決定部144は、ショットを開始する指示が割り当てられた操作入力を入力デバイス20から受け付けると、そのときの入力デバイス20の姿勢に関する情報を入力受付部88から取得する。パワー決定部144は、入力デバイス20がユーザにより正しくアドレスされた状態にあるか否かを判定する。例えば、3軸加速度センサ56又は3軸ジャイロセンサ58からセンサ値を取得して入力デバイス20の姿勢を算出し、算出した姿勢が所定の範囲内であるか否かを判定する。入力デバイス20の姿勢が所定の範囲内になければ、パワー決定部144は、入力デバイス20を把持して正しく構えるようユーザに促す。入力デバイス20の姿勢が所定の範囲内にあれば、パワー決定部144は、そのときの入力デバイス20の位置座標及び距離情報を含む位置情報をデバイス情報導出部84から取得し、基準位置としてパラメータ保持部160に格納して、ユーザによるショットの制御を開始する。
【0038】
パワー決定部144は、入力デバイス20の位置情報を所定の間隔でデバイス情報導出部84から取得し、パラメータ保持部160に格納されている入力デバイス20の基準位置と比較することにより、ユーザのスイングの度合いを判定する。このとき、パワー決定部144は、初期設定部142により設定された補正用パラメータを参照してスイングの度合いを補正する。例えば、入力デバイス20の現在位置と基準位置との間の距離を算出し、補正用パラメータが大きい、すなわち、ユーザの腕の長さが長いほど小さく、補正用パラメータが小さい、すなわち、ユーザの腕の長さが短いほど大きい値を距離に乗じて補正値を算出し、算出された補正値からユーザのスイングの度合いを判定する。パワー決定部144は、スイング面と撮像装置14の向きとを更に考慮してスイングの度合いを補正してもよい。パワー決定部144は、スイングの度合いと補正値との対応をゲームデータ保持部170に格納しておき、算出された補正値に対応するスイングの度合いを取得してもよい。撮像装置14とユーザとの位置関係によっては、ユーザがバックスイングしているときに入力デバイス20がユーザの頭又は体に隠れて撮像装置14により撮像されない場合があるが、その場合は、パワー決定部144は、入力デバイス20が撮像されている間の入力デバイス20の移動軌跡と速度を算出し、入力デバイス20が撮像されなかったときの入力デバイス20の位置を外挿補間などにより推測してもよい。また、3軸加速度センサ56又は3軸ジャイロセンサ58のセンサ値を取得して、入力デバイス20の位置を算出してもよい。
【0039】
パワー決定部144は、判定されたスイングの度合いに応じて、プレイヤーズキャラクタがスイングしている様子を表示する。パワー決定部144は、プレイヤーズキャラクタがスイングする過程を表現した複数の画像を、スイングの度合いと対応づけてゲームデータ保持部170に格納しておき、判定されたスイングの度合いに対応する画像を読み出して表示してもよい。また、プレイヤーズキャラクタがスイングするときの姿勢情報を、スイングの度合いと対応づけてゲームデータ保持部170に格納しておき、判定されたスイングの度合いに対応する姿勢情報を適用して、プレイヤーズキャラクタの3次元形状データをレンダリングしてもよい。これにより、ユーザのスイングに合わせてプレイヤーズキャラクタもスイングしているように見せることができる。
【0040】
パワー決定部144は、判定されたスイングの度合いに応じて、ショットのパワーの度合いを画面に表示する。パワー決定部144は、後述するように、ユーザがどこまでテークバックしたかを示す値と、インパクト時の入力デバイス20の速度から、ショットのパワーを算出するが、ユーザがスイングしているときに、その位置からダウンスイングしてボールを打撃したときのショットのパワーの目安として、テークバックの度合いに応じたパワーゲージを表示する。パワー決定部144は、テークバックの度合い、すなわち、パワーの目安が所定の値に達したときに、音を出力してもよいし、入力デバイス20を振動又は発光させてもよい。例えば、テークバックの度合いが50%と100%に達したときに、入力デバイス20を振動させてもよい。
【0041】
図8は、プレイヤーズキャラクタがショットを行うときのゲーム画面の例を示す。画面102には、ユーザのスイングの度合いに応じて、プレイヤーズキャラクタがスイングしている様子が表示されている。また、ユーザのテークバックの度合いに応じて、その状態から振り下ろしてショットしたときのパワーの目安を示すパワーゲージ110が表示されている。
【0042】
ユーザがダウンスイングを行って、入力デバイス20がショットの開始時の基準位置よりも撮像装置14に近づくと、パワー決定部144は、ユーザがどこまでテークバックしたかを示す値と、インパクト時の入力デバイス20の速度から、ショットのパワーを算出する。パワー決定部144は、ショットが開始されて、入力デバイス20と撮像装置14の間の距離が遠くなった後、再びショット開始時と同じ距離になったときをインパクトの瞬間とし、それまでのユーザのスイングの度合いの最大値をテークバックの度合いとする。また、パワー決定部144は、インパクトの瞬間の入力デバイス20の速度を取得する。パワー決定部144は、3軸加速度センサ56又は3軸ジャイロセンサ58のセンサ値を取得して入力デバイス20の速度を算出してもよいし、デバイス情報導出部84から取得した入力デバイス20の位置情報から入力デバイス20の速度を算出してもよい。パワー決定部144は、テークバックの度合いと入力デバイス20の速度からパワーを算出して弾道算出部150へ通知する。パワー決定部144は、テークバックの度合いが大きいほど、また、入力デバイス20の速度が速いほど、パワーが大きくなるようにする。
【0043】
インパクト決定部145は、インパクトの瞬間の入力デバイス20の位置情報をデバイス情報導出部84から取得し、ショット開始時の基準位置と比較することにより、クラブヘッドがボールを打撃した位置を判定する。インパクト決定部145は、基準位置における入力デバイス20と撮像装置14との間の距離と同じ距離になったときの入力デバイス20の位置座標を取得する。同じ距離になったときの位置情報がない場合は、インパクト決定部145は、前後の複数のフレームの位置座標から内挿補間又は外挿補間により、同じ距離になったときの位置座標を取得してもよい。例えば、前後又は直前の3以上のフレームの位置座標を用いて、入力デバイス20の軌道を多項式などにより表現される3次元曲線で近似し、3次元近似曲線上で同じ距離になったときの位置座標を算出してもよい。インパクト決定部145は、3軸加速度センサ56又は3軸ジャイロセンサ58のセンサ値を取得して、スイング中の入力デバイス20と撮像装置14との間の距離を算出してもよい。例えば、スイング面に平行な方向の加速度成分を積分することにより、入力デバイス20の基準位置からの相対位置を算出してもよい。インパクト決定部145は、ショット開始時の基準位置とインパクト時の位置とのずれの大きさを算出し、ずれの大きさに応じてインパクトの位置を判定する。
【0044】
図9は、インパクトの位置を判定する方法を説明するための図である。図8は、ショット開始時の発光体22の位置200と、インパクト時の発光体22の位置202を示す。インパクト決定部145は、位置200における発光体22の中心位置を中心とした所定長の半径のゴルフボール204を想定し、位置202における発光体22の中心位置206をクラブヘッドが打撃したと判定してもよい。このとき、プレイヤーズキャラクタの属性やユーザのレベルなどに応じて、ゴルフボール204の半径を調整してもよい。例えば、初級者用のプレイヤーズキャラクタが使用されている場合は、ゴルフボール204の半径を大きくして、基準位置とインパクト時の位置とのずれがインパクト位置のずれに反映されにくくしてもよい。逆に、上級者用のプレイヤーズキャラクタが使用されている場合は、ゴルフボール204の半径を小さくして、ずれがインパクト位置に反映されやすくしてもよい。インパクト決定部145は、ずれが所定の範囲内である場合は、ボールの中心位置を打撃したことにしてもよい。インパクト決定部145は、決定したインパクト位置を弾道算出部150に通知する。
【0045】
弾道算出部150は、ショット制御部141により決定されたショットのパワー及びインパクトと、ボールのライ、風、地形などの外部要因に基づいて、ショットされたボールの弾道を物理計算により算出する。
【0046】
弾道算出部150は、ショットに用いたクラブに応じて予め設定された初速度及びロフト角をパラメータ保持部160から読み出す。弾道算出部150は、読み出したロフト角と、インパクト決定部145から通知されたインパクト位置に基づいて、ボールが飛ぶ方向を決定する。弾道算出部150は、パワー決定部144により決定されたパワー、インパクト決定部145により決定されたインパクト位置、プレイヤーズキャラクタごとに設定された体力などの属性値、ボールのライなどに応じて、ボールの初速度を調整する。例えば、パワーが高いほど初速度が速くなるように、パワーの%値を初速度に乗じてもよい。また、インパクトの位置が中心から外れるほど狙った着地点からずれるように、ボールの飛ぶ方向や速度などを調整してもよい。例えば、ボールの左側を打撃した場合はボールの軌道を右に曲げてスライスボールとし、右側を打撃した場合は左に曲げてフックボールとしてもよい。また、パワーが所定の下限値以下であった場合や、インパクトの位置が所定値以上ボールの中心から外れていた場合は、ミスショットとして扱い、極端に初速度を小さくして弾道を算出してもよい。ラフやバンカーの場合は、フェアウェイよりも初速度を低くしてもよい。また、ボールの接地面の傾斜が大きければ初速度を低くしてもよい。ショットの際にプレイヤーが初速度やロフト角を変更する操作入力を行った場合には、さらにその影響を考慮して初速度やロフト角を調整してもよい。
【0047】
弾道算出部150は、初速度とロフト角を決定すると、ボールに作用する力に応じて速度を調整しつつ、ボールの位置をフレームごとに算出する。弾道算出部150は、ボールの現在位置の座標に対して、フレームを単位とした速度を加算し、次のフレームにおけるボールの位置の座標を算出する。ボールの速度には、フレームごとに、重力、揚力、風力、空気抵抗が加算される。重力については、物理法則に則って、下向きに、9.8メートル毎秒毎秒とする。揚力は、上向きに、速度に比例する値とする。風力は、ホールの全ての場所において一定方向に一定速度としてもよいし、場所に応じて変化させてもよい。空気抵抗は、進行方向と逆向きに、速度に比例する値とする。このように、風の方向及び速度を考慮してボールの弾道を算出することにより、現実のゴルフと同様に、風の影響を考慮しながらショットを行う難しさを演出することができ、よりリアリティのあるゴルフゲームを実現することができる。
【0048】
ボールが何かに衝突した場合は、衝突した面の属性に応じて予め設定された摩擦係数及び反発係数にしたがって、水平方向及び垂直方向の速度を調整する。摩擦係数及び反発係数は、フェアウェイ、ラフ、バンカーなどによって異なる値を設定してもよい。弾道算出部150は、さらに、演出効果として、物理法則とは関係のない特殊な演算を弾道に与えてもよい。これにより、ゴルフゲームに変化を持たせ、ゲームの娯楽性を向上させることができる。
【0049】
画面生成部166は、弾道算出部150により算出されたボールの位置に応じて、ボールが画面に入るようにカメラの視点位置及び視線方向を設定し、ボールが飛ぶ様子を示す画面を生成する。ボールが停止すると、次のショットに移る。
【0050】
図10は、実施の形態に係るゲーム制御方法の手順を示すフローチャートである。ユーザが操作ボタン30を押してショットが開始されると(S100のY)、パワー決定部144は、そのときの入力デバイス20の位置を取得し、基準位置としてパラメータ保持部160に記録する(S102)。ユーザがスイングしている間、パワー決定部144は、入力デバイス20の位置を取得し(S104)、スイングの度合いを判定して(S106)、スイングの度合いに応じてプレイヤーズキャラクタの表示を更新し(S108)、パワーの指標となるパワーゲージの表示を更新する(S110)。パワー決定部144は、ボールがインパクトされたと判定されるまで(S112のN)、S104からS110の手順を繰り返す。
【0051】
入力デバイス20と撮像装置14との間の距離が、基準位置におけるそれらの間の距離と等しくなったとき、パワー決定部144は、ボールがインパクトされたと判定し(S112のY)、テークバックの度合いとインパクト時の入力デバイス20の速度に基づいてショットのパワーを決定する(S114)。インパクト決定部145は、インパクト時の入力デバイス20の位置とショット開始時の基準位置とを比較して、インパクトの位置を決定する(S116)。弾道算出部150は、決定されたパワーとインパクトの位置に基づいてボールの弾道を算出し(S118)、画面生成部166は、算出された弾道を画面に表示する(S120)。ショットが開始されない場合は(S100のN)、全ての手順をスキップする。
【0052】
図11は、図10のS116の詳細な手順を示すフローチャートである。インパクト決定部145は、ショット開始時の入力デバイス20の基準位置を取得するとともに(S140)、インパクト時の入力デバイス20の位置を取得し(S142)、それらの間のずれを算出することにより、インパクトの位置を算出する(S144)。インパクト決定部145は、プレイヤーズキャラクタ又はユーザの属性に応じて、インパクトの位置を補正する(S146)。
【0053】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、その各構成要素や各処理プロセスの組合せにいろいろな変形が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【0054】
1 ゲームシステム、10 ゲーム装置、12 表示装置、14 撮像装置、20 入力デバイス、22 発光体、100 アプリケーション処理部、140 制御部、141 ショット制御部、142 初期設定部、144 パワー決定部、145 インパクト決定部、150 弾道算出部、160 パラメータ保持部、166 画面生成部、170 ゲームデータ保持部。
【特許請求の範囲】
【請求項1】
コンピュータを、
ユーザから操作入力を受け付ける入力受付部、
前記操作入力に応じてプレイヤーズキャラクタがゴルフをプレーするゲームを制御する制御部、
前記ゲームの画面を表示する画面生成部、として機能させ、
前記制御部は、
ユーザが入力デバイスを把持してスイングするときに、ショット開始時における前記入力デバイスの位置と、インパクト時における前記入力デバイスの位置とを取得し、それらを比較することにより、インパクトの位置を決定するインパクト決定部と、
前記インパクト決定部により決定されたインパクトの位置に基づいて、打撃されたボールの弾道を算出する弾道算出部と、を含む
ことを特徴とするゲーム制御プログラム。
【請求項2】
前記インパクト決定部は、前記入力デバイスを撮像するための撮像装置により撮像された前記入力デバイスの画像を解析することにより前記入力デバイスの位置を取得することを特徴とする請求項1に記載のゲーム制御プログラム。
【請求項3】
前記インパクト決定部は、前記画像を解析することにより、前記入力デバイスと前記撮像装置との間の距離と、前記画像における前記入力デバイスの位置座標とを取得し、ショット開始時における前記入力デバイスと前記撮像装置との間の距離と同じ距離に前記入力デバイスが戻ったときの前記画像における前記入力デバイスの位置座標と、ショット開始時の前記画像における前記入力デバイスの位置座標とを比較することにより、インパクトの位置を決定することを特徴とする請求項2に記載のゲーム制御プログラム。
【請求項4】
前記インパクト決定部は、前記プレイヤーズキャラクタ又は前記ユーザの属性に応じて、インパクトの位置を補正することを特徴とする請求項1から3のいずれかに記載のゲーム制御プログラム。
【請求項5】
前記弾道算出部は、前記入力デバイスに備えられた前記入力デバイスの速度、加速度、角速度、又は姿勢を検知するセンサから取得したセンサ値を更に用いて、打撃されたボールの弾道を算出することを特徴とする請求項1から4のいずれかに記載のゲーム制御プログラム。
【請求項6】
前記制御部は、ユーザがテークバックした度合いに応じてショットのパワーを決定するパワー決定部を更に含み、
前記パワー決定部は、ユーザが前記入力デバイスを把持してテークバックするときに、前記入力デバイスの位置を取得してテークバックの度合いを判定し、判定されたテークバックの度合いに応じて、その位置からダウンスイングしてボールを打撃したときのパワーの目安を示す指標を画面に表示する
ことを特徴とする請求項1から5のいずれかに記載のゲーム制御プログラム。
【請求項7】
ユーザから操作入力を受け付ける入力受付部と、
前記操作入力に応じてプレイヤーズキャラクタがゴルフをプレーするゲームを制御する制御部と、
前記ゲームの画面を生成する画面生成部と、を備え、
前記制御部は、
ユーザが入力デバイスを把持してスイングするときに、ショット開始時における前記入力デバイスの位置と、インパクト時における前記入力デバイスの位置とを取得し、それらを比較することにより、インパクトの位置を決定するインパクト決定部と、
前記インパクト決定部により決定されたインパクトの位置に基づいて、打撃されたボールの弾道を算出する弾道算出部と、を含む
ことを特徴とするゲーム装置。
【請求項8】
入力受付部が、ユーザから操作入力を受け付けるステップと、
制御部が、前記操作入力に応じてプレイヤーズキャラクタがゴルフをプレーするゲームを制御するステップと、
画面生成部が、前記ゲームの画面を表示するステップと、を含み、
前記制御部は、
ユーザが入力デバイスを把持してスイングするときに、ショット開始時における前記入力デバイスの位置と、インパクト時における前記入力デバイスの位置とを取得し、それらを比較することにより、インパクトの位置を決定するインパクト決定部と、
前記インパクト決定部により決定されたインパクトの位置に基づいて、打撃されたボールの弾道を算出する弾道算出部と、を含む
ことを特徴とするゲーム制御方法。
【請求項9】
請求項1から6のいずれかに記載のゲーム制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項1】
コンピュータを、
ユーザから操作入力を受け付ける入力受付部、
前記操作入力に応じてプレイヤーズキャラクタがゴルフをプレーするゲームを制御する制御部、
前記ゲームの画面を表示する画面生成部、として機能させ、
前記制御部は、
ユーザが入力デバイスを把持してスイングするときに、ショット開始時における前記入力デバイスの位置と、インパクト時における前記入力デバイスの位置とを取得し、それらを比較することにより、インパクトの位置を決定するインパクト決定部と、
前記インパクト決定部により決定されたインパクトの位置に基づいて、打撃されたボールの弾道を算出する弾道算出部と、を含む
ことを特徴とするゲーム制御プログラム。
【請求項2】
前記インパクト決定部は、前記入力デバイスを撮像するための撮像装置により撮像された前記入力デバイスの画像を解析することにより前記入力デバイスの位置を取得することを特徴とする請求項1に記載のゲーム制御プログラム。
【請求項3】
前記インパクト決定部は、前記画像を解析することにより、前記入力デバイスと前記撮像装置との間の距離と、前記画像における前記入力デバイスの位置座標とを取得し、ショット開始時における前記入力デバイスと前記撮像装置との間の距離と同じ距離に前記入力デバイスが戻ったときの前記画像における前記入力デバイスの位置座標と、ショット開始時の前記画像における前記入力デバイスの位置座標とを比較することにより、インパクトの位置を決定することを特徴とする請求項2に記載のゲーム制御プログラム。
【請求項4】
前記インパクト決定部は、前記プレイヤーズキャラクタ又は前記ユーザの属性に応じて、インパクトの位置を補正することを特徴とする請求項1から3のいずれかに記載のゲーム制御プログラム。
【請求項5】
前記弾道算出部は、前記入力デバイスに備えられた前記入力デバイスの速度、加速度、角速度、又は姿勢を検知するセンサから取得したセンサ値を更に用いて、打撃されたボールの弾道を算出することを特徴とする請求項1から4のいずれかに記載のゲーム制御プログラム。
【請求項6】
前記制御部は、ユーザがテークバックした度合いに応じてショットのパワーを決定するパワー決定部を更に含み、
前記パワー決定部は、ユーザが前記入力デバイスを把持してテークバックするときに、前記入力デバイスの位置を取得してテークバックの度合いを判定し、判定されたテークバックの度合いに応じて、その位置からダウンスイングしてボールを打撃したときのパワーの目安を示す指標を画面に表示する
ことを特徴とする請求項1から5のいずれかに記載のゲーム制御プログラム。
【請求項7】
ユーザから操作入力を受け付ける入力受付部と、
前記操作入力に応じてプレイヤーズキャラクタがゴルフをプレーするゲームを制御する制御部と、
前記ゲームの画面を生成する画面生成部と、を備え、
前記制御部は、
ユーザが入力デバイスを把持してスイングするときに、ショット開始時における前記入力デバイスの位置と、インパクト時における前記入力デバイスの位置とを取得し、それらを比較することにより、インパクトの位置を決定するインパクト決定部と、
前記インパクト決定部により決定されたインパクトの位置に基づいて、打撃されたボールの弾道を算出する弾道算出部と、を含む
ことを特徴とするゲーム装置。
【請求項8】
入力受付部が、ユーザから操作入力を受け付けるステップと、
制御部が、前記操作入力に応じてプレイヤーズキャラクタがゴルフをプレーするゲームを制御するステップと、
画面生成部が、前記ゲームの画面を表示するステップと、を含み、
前記制御部は、
ユーザが入力デバイスを把持してスイングするときに、ショット開始時における前記入力デバイスの位置と、インパクト時における前記入力デバイスの位置とを取得し、それらを比較することにより、インパクトの位置を決定するインパクト決定部と、
前記インパクト決定部により決定されたインパクトの位置に基づいて、打撃されたボールの弾道を算出する弾道算出部と、を含む
ことを特徴とするゲーム制御方法。
【請求項9】
請求項1から6のいずれかに記載のゲーム制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2013−17737(P2013−17737A)
【公開日】平成25年1月31日(2013.1.31)
【国際特許分類】
【出願番号】特願2011−154992(P2011−154992)
【出願日】平成23年7月13日(2011.7.13)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】
【公開日】平成25年1月31日(2013.1.31)
【国際特許分類】
【出願日】平成23年7月13日(2011.7.13)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】
[ Back to top ]