(57)【特許請求の範囲】
【請求項１】
入力面上における入力位置を所定時間間隔で検出する入力装置を備える情報処理装置のコンピュータに、
前記入力装置によって連続して検出された各入力位置を、検出された順に前記情報処理装置のメモリに記憶させる入力位置記憶ステップと、
前記メモリに最初に記憶された入力位置を基点位置として前記メモリに記憶させる基点位置記憶ステップと、
前記入力位置が前記メモリに記憶される度に、前記メモリに最後に記憶された入力位置と前記メモリ内の基点位置とを結ぶ操作ベクトルを算出する操作ベクトル算出ステップと、
前記操作ベクトルの大きさおよび向きに基づいて所定の処理を行う処理ステップと、
前記入力位置が前記メモリに記憶される度に、前記入力面の中心位置に近づく方向へ移動させた位置に前記メモリ内の前記基点位置を更新する更新ステップとを実行させる、入力データ処理プログラム。
【請求項２】
前記更新ステップは、
前記メモリに最後に記憶された入力位置を終点としかつ最後から１つ前に前記メモリに記憶された入力位置を始点とする移動ベクトルを算出する移動ベクトル算出ステップと、
前記移動ベクトルの大きさおよび向きの少なくとも一方に基づいて前記基点位置の移動量を算出する移動量算出ステップと、
前記中心位置に近づく方向へ前記移動量に従って移動させた位置に前記メモリ内の基点位置を更新する更新実行ステップとを含む、請求項１に記載の入力データ処理プログラム。
【請求項３】
前記移動量算出ステップにおいては、前記移動ベクトルの大きさが大きいほど移動量が大きくなるように当該移動量が算出される、請求項２に記載の入力データ処理プログラム。
【請求項４】
前記移動量算出ステップにおいては、前記移動ベクトルの向きが現在の基点位置と前記中心位置とを結ぶ直線の向きに近いほど移動量が大きくなるように当該移動量が算出される、請求項２に記載の入力データ処理プログラム。
【請求項５】
前記移動量算出ステップにおいては、現在の基点位置と前記中心位置とを結ぶ直線の方向に関する前記移動ベクトルの成分が大きいほど移動量が大きくなるように当該移動量が算出される、請求項２に記載の入力データ処理プログラム。
【請求項６】
前記更新ステップは、前記算出された移動量が現在の基点位置から前記中心位置までの距離よりも大きいとき、当該移動量を当該距離の大きさに調整する調整ステップをさらに含み、
前記更新実行ステップは、前記算出された移動量が現在の基点位置から前記中心位置までの距離よりも大きいとき、前記調整された移動量に従って前記メモリ内の基点位置を更新する、請求項２に記載の入力データ処理プログラム。
【請求項７】
前記更新ステップは、
前記メモリに最後に記憶された入力位置を終点としかつ最後から１つ前に前記メモリに記憶された入力位置を始点とする移動ベクトルを算出する移動ベクトル算出ステップと、
前記移動ベクトルの大きさが所定量よりも大きいか否かを判定する判定ステップと、
前記判定ステップにおいて前記移動ベクトルの大きさが前記所定量よりも大きいと判定されたときのみ、前記メモリに記憶されている基点位置を更新する更新実行ステップとを含む、請求項１に記載の入力データ処理プログラム。
【請求項８】
前記更新ステップは、前記入力位置が前記メモリに記憶される度に、前記入力面の中心位置に近づく方向へ移動させた位置に前記メモリ内の前記基点位置を更新する、請求項１に記載の入力データ処理プログラム。
【請求項９】
前記基点位置記憶ステップにおいては、前記メモリに最初に記憶された入力位置が前記中心位置を含む所定領域の内側にあるとき、当該入力位置が基点位置として前記メモリに記憶され、当該入力位置が当該所定領域の外側にあるとき、前記中心位置が基点位置として前記メモリに記憶される、請求項１に記載の入力データ処理プログラム。
【請求項１０】
入力面上における入力位置を所定時間間隔で検出する入力装置を備える入力データ処理装置であって、
前記入力装置によって連続して検出された各入力位置を、検出された順に記憶する入力位置記憶手段と、
前記入力位置記憶手段に最初に記憶された入力位置を基点位置として記憶する基点位置記憶手段と、
前記入力位置が前記入力位置記憶手段に記憶される度に、前記入力位置記憶手段に最後に記憶された入力位置と前記基点位置記憶手段に記憶されている基点位置とを結ぶ操作ベクトルを算出する操作ベクトル算出手段と、
前記操作ベクトルの大きさおよび向きに基づいて所定の処理を行う処理手段と、
前記入力位置が前記入力位置記憶手段に記憶される度に、前記入力面の中心位置に近づく方向へ移動させた位置に前記メモリ内の前記基点位置を更新する更新手段とを備える、入力データ処理装置。
【請求項１１】
入力データに応じて所定のデータ処理を実行する入力データ処理装置に接続可能な入力装置であって、
入力面上における入力位置を所定時間間隔で検出する入力検出手段と、
前記入力装置によって連続して検出された各入力位置を、検出された順に記憶する入力位置記憶手段と、
前記入力位置記憶手段に最初に記憶された入力位置を基点位置として記憶する基点位置記憶手段と、
前記入力位置が前記入力位置記憶手段に記憶される度に、前記入力位置記憶手段に最後に記憶された入力位置と前記基点位置記憶手段に記憶されている基点位置とを結ぶ操作ベクトルを算出する操作ベクトル算出手段と、
前記算出された操作ベクトルを前記入力データとして前記入力データ処理装置へ送信する送信手段と、
前記入力位置が前記入力位置記憶手段に記憶される度に、前記入力面の中心位置に近づく方向へ移動させた位置に前記メモリ内の前記基点位置を更新する更新手段とを備える、入力装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タッチパッド等の入力装置から入力されるデータを処理するための入力データ処理プログラムおよび入力データ処理装置に関する。
【背景技術】
【０００２】
従来、表示装置の画面上に表示されたカーソルをタッチパッド等を用いて移動させる技術がある。この技術においては、タッチパッドには予め決められた位置（例えばタッチパッドの中心）に基点が設定され、当該基点に対するタッチ点（操作者がタッチパッドに触れた位置）の方向および距離に応じて画面上のカーソルが移動する。特許文献１には、タブレットに対する座標の入力に際し、基点に対するペンの接触箇所の方向および距離に比例した速度でカーソルを移動させることが記載されている。
【特許文献１】特開昭６３−７３４１５号公報（発明の詳細な説明の〔概要〕）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記の技術においては、操作者の意識と実際のタッチ位置との関係が問題となることがある。すなわち、タッチパッドへの入力を開始する際において、操作者は、上記カーソルを移動させない意図で、まずタッチパッドの基点をタッチしようとすることがある。しかし、操作者が基点を正確に指示することは困難な場合もあり、この結果、実際には、操作者のタッチ点は基点からずれてその周辺に位置していることがあり得る。この場合、操作者にはカーソルを移動させる意図がなくても、実際にはカーソルが移動してしまうという事態が生じる。このように、上記の技術においては、タッチパッドへの入力を開始する際において操作者の意図に反してカーソルが移動してしまうという問題があった。
【０００４】
そこで、上記問題を解決する方法として、操作者が最初にタッチした点を基点とする方法が考えられる。この方法によれば、操作者による最初のタッチ点がタッチパッドの中心からずれた位置であっても、そのタッチ点の位置が基点に設定されるので、操作者がタッチパッドへの入力を開始した時点ではカーソルは移動しない。しかしながら、この方法で設定された基点は、タッチパッドの中心に必ずしも設定されるわけではない。したがって、中心からずれた位置に基点が設定された場合には、バランスの悪い位置に基点が存在し続けることになり、結果的に操作性の低下をもたらす。具体例として、円形のタッチパッドの中心よりも上側に基点が設定された場合を考えると、タッチ点の上限の位置から基点までの長さは、タッチ点の下限の位置から基点までの長さとは異なる長さとなる。したがって、カーソルを上方向に移動させる場合の最大速度が、カーソルを下方向に移動させる場合の最大速度とは異なることになるので、操作者にとっては操作性が非常に悪くなってしまう。
【０００５】
それ故、本発明の目的は、ポインティングデバイスの操作性を向上させることが可能な入力データ処理プログラムおよび情報処理装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、入力面上における入力位置を所定時間間隔で検出する入力装置（タッチパッド２１）を備える情報処理装置（ゲーム装置１０）のコンピュータ（ＣＰＵ２２）に次のステップを実行させる入力データ処理プログラム（ゲームプログラム）である。入力データ処理プログラムは、入力位置記憶ステップ（Ｓ１３）と、基点位置記憶ステップ（Ｓ１７）と、操作ベクトル算出ステップ（Ｓ３）と、処理ステップ（Ｓ４）と、更新ステップ（Ｓ２５）とをコンピュータに実行させる。入力位置記憶ステップにおいては、情報処理装置は、入力装置によって連続して検出された各入力位置を、検出された順に情報処理装置のメモリ（メインメモリ３４）に記憶させる。基点位置記憶ステップにおいては、メモリに最初に記憶された入力位置を基点位置（図３に示す基点６２）としてメモリに記憶させる。操作ベクトル算出ステップにおいては、入力位置がメモリに記憶される度に、メモリに最後に記憶された入力位置とメモリ内の基点位置とを結ぶ操作ベクトル（図４に示すベクトルｖ’１）を算出する。処理ステップにおいては、操作ベクトルの大きさおよび向きに基づいて所定の処理（例えば、画面に表示されているプレイヤキャラクタやカーソルを移動させる処理）を行う。更新ステップにおいては、入力位置がメモリに記憶される度に、予め定められた目標位置（図３に示す点Ａ）に近づく方向へ移動させた位置にメモリ内の基点位置を更新する。
【０００８】
第２の発明においては、更新ステップは、移動ベクトル算出ステップ（Ｓ１３）と、移動量算出ステップ（Ｓ２２）と、更新実行ステップ（Ｓ２５）とを含んでいてもよい。移動ベクトル算出ステップにおいては、情報処理装置は、メモリに最後に記憶された入力位置を終点としかつ最後から１つ前にメモリに記憶された入力位置を始点とする移動ベクトル（図４に示すベクトルｖ１）を算出する。移動量算出ステップにおいては、移動ベクトルの大きさおよび向きの少なくとも一方に基づいて基点位置の移動量を算出する。更新実行ステップにおいては、目標位置に近づく方向へ移動量に従って移動させた位置にメモリ内の基点位置を更新する。
【０００９】
第３の発明においては、移動量算出ステップにおいて、移動ベクトルの大きさが大きいほど移動量が大きくなるように当該移動量が算出されてもよい。
【００１０】
第４の発明においては、移動量算出ステップにおいて、移動ベクトルの向きが現在の基点位置と目標位置とを結ぶ直線の向きに近いほど移動量が大きくなるように当該移動量が算出されてもよい。
【００１１】
第５の発明においては、移動量算出ステップにおいて、現在の基点位置と目標位置とを結ぶ直線の方向（中心方向）に関する移動ベクトルの成分が大きいほど移動量が大きくなるように当該移動量が算出されてもよい。
【００１２】
第６の発明においては、更新ステップは、調整ステップ（Ｓ２３、Ｓ２４）をさらに含んでいてもよい。調整ステップにおいては、コンピュータは、算出された移動量が現在の基点位置から目標位置までの距離よりも大きいとき、当該移動量を当該距離の大きさに調整する。このとき、更新実行ステップにおいては、調整された移動量に従ってメモリ内の基点位置を更新する。
【００１３】
第７の発明においては、更新ステップは、移動ベクトル算出ステップ（Ｓ１３）と、判定ステップ（Ｓ３１）と、更新実行ステップ（Ｓ２５）とを含んでいてもよい。移動ベクトル算出ステップにおいては、情報処理装置は、メモリに最後に記憶された入力位置を終点としかつ最後から１つ前にメモリに記憶された入力位置を始点とする移動ベクトルを算出する。判定ステップにおいては、移動ベクトルの大きさが所定量よりも大きいか否かを判定する。更新実行ステップにおいては、判定ステップにおいて移動ベクトルの大きさが所定量よりも大きいと判定されたときのみ、メモリに記憶されている基点位置を更新する。
【００１４】
第８の発明においては、目標位置は入力面の中心位置であってもよい。
【００１５】
第９の発明においては、基点位置記憶ステップにおいて、メモリに最初に記憶された入力位置が目標位置を含む所定領域（判定領域６３）の内側にあるとき、当該入力位置が基点位置としてメモリに記憶され、当該入力位置が当該所定領域の外側にあるとき、目標位置が基点位置としてメモリに記憶されてもよい。
【００１６】
第１０の発明は、入力面上における入力位置を所定時間間隔で検出する入力装置（タッチパッド２１）を備える入力データ処理装置（ゲーム装置１０）である。入力データ処理装置は、入力位置記憶手段（メインメモリ３４）と、基点位置記憶手段（メインメモリ３４）と、操作ベクトル算出手段（Ｓ３を実行するＣＰＵ２２等。以下、単にステップ番号のみを示す。）と、処理手段（Ｓ４）と、更新手段（Ｓ５）とを備える。入力位置記憶手段は、入力装置によって連続して検出された各入力位置を、検出された順に記憶する。基点位置記憶手段は、入力位置記憶手段に最初に記憶された入力位置を基点位置として記憶する。操作ベクトル算出手段は、入力位置が入力位置記憶手段に記憶される度に、入力位置記憶手段に最後に記憶された入力位置と基点位置記憶手段に記憶されている基点位置とを結ぶ操作ベクトルを算出する。処理手段は、操作ベクトルの大きさおよび向きに基づいて所定の処理を行う。更新手段は、入力位置が入力位置記憶手段に記憶される度に、予め定められた目標位置に近づく方向へ移動させた位置にメモリ内の基点位置を更新する。
【００１７】
第１１の発明は、入力データに応じて所定のデータ処理を実行する入力データ処理装置に接続可能な入力装置である。入力装置は、入力検出手段（タッチパッド２１）と、入力位置記憶手段と、基点位置記憶手段と、操作ベクトル算出手段と、送信手段と、更新手段とを備える。入力検出手段は、入力面上における入力位置を所定時間間隔で検出する。入力位置記憶手段は、入力装置によって連続して検出された各入力位置を、検出された順に記憶する。基点位置記憶手段は、入力位置記憶手段に最初に記憶された入力位置を基点位置として記憶する。操作ベクトル算出手段は、入力位置が入力位置記憶手段に記憶される度に、入力位置記憶手段に最後に記憶された入力位置と基点位置記憶手段に記憶されている基点位置とを結ぶ操作ベクトルを算出する。送信手段は、算出された操作ベクトルを入力データとして入力データ処理装置へ送信する。更新手段は、入力位置が入力位置記憶手段に記憶される度に、予め定められた目標位置に近づく方向へ移動させた位置にメモリ内の基点位置を更新する。
【発明の効果】
【００１８】
第１の発明によれば、基点位置記憶ステップによって、メモリに最初に記憶された入力位置を基点位置としてメモリに記憶させるため、プレイヤが入力を行った直後の時点では、入力位置と基点位置が等しく、操作ベクトルがゼロとなるので、操作ベクトルの大きさおよび向きに応じたゲーム処理が行われない。したがって、操作ベクトルに応じて例えばカーソルやプレイヤキャラクタを移動させる場合、これらのカーソルやプレイヤキャラクタの移動がプレイヤの意図に反して行われることがない。つまり、第１の発明によれば、プレイヤが意図しないゲーム操作が実行されることを防止することができる。それ故、タッチパッド等のポインティングデバイスの操作性を向上することができる。
さらに、更新ステップによって、基点は目標位置に向かって移動していくので、バランスの悪い位置に基点が存在し続けることを回避することができる。これによっても、タッチパッド等のポインティングデバイスの操作性を向上することができる。
【００１９】
第２の発明によれば、プレイヤが行った操作を表す移動ベクトルに応じて基点を移動させるので、基点を移動させるときにプレイヤが抱く違和感を効果的に抑止することができる。
【００２０】
第３の発明によれば、プレイヤが入力面上において入力位置を大きく移動させたときに基点の移動量は大きくなる。したがって、プレイヤが上記違和感を抱きにくいときに基点を大きく移動させるので、プレイヤが抱く違和感を効果的に抑止することができるとともに、基点を目標位置に効率良く移動させることができる。
【００２１】
第４の発明によれば、プレイヤが入力面上において描いた軌跡の向きと、基点の移動方向とが近いほど基点の移動量は大きくなる。したがって、プレイヤが上記違和感を抱きにくいときに基点を大きく移動させるので、プレイヤが抱く違和感を効果的に抑止することができるとともに、基点を目標位置に効率良く移動させることができる。
【００２２】
第５の発明によれば、プレイヤが入力面上において描いた軌跡の向きおよび長さに応じて基点の移動量を決定するので、プレイヤが上記違和感を抱きにくいときに基点を大きく移動させることができる。したがって、プレイヤが抱く違和感を効果的に抑止することができるとともに、基点を目標位置に効率良く移動させることができる。特に、上記第３および第４の発明に比べて、プレイヤの違和感の抱きやすさと基点の移動量との関係をより正確に判断することができる。
【００２３】
第６の発明によれば、調整ステップによって、現在の基点位置から目標位置までの距離を上限値として移動量が調整されるので、基点が目標位置を超えて移動してしまうことがない。したがって、第６の発明によれば、基点を正しく目標位置に到達させることができる。
【００２４】
なお、仮に、プレイヤが入力位置を所定量より大きく動かしていないときにまで、基点を等速で移動させるとすると、プレイヤが望まないにもかかわらず操作ベクトルの大きさおよび向きが変化してしまい、実際の操作内容が変化してしまうことになる。例えば、プレイヤが入力位置を変えていないにもかかわらず、カーソルやプレイヤキャラクタの移動方向や移動速度が変化してしまうことになる。つまり、操作内容がプレイヤの意図に反して変更されてしまう。
【００２５】
これに対し、第７の発明によれば、プレイヤが入力位置を所定量より大きく動かしていないときには更新実行ステップにおいて基点位置が更新されず、操作ベクトルも変化しない。このように、第７の発明によれば、プレイヤが入力位置を所定量より大きく動かしていないときには操作内容がプレイヤの意図に反して変更されることがない。従って、ポインティングデバイスの操作性を向上することができる。
【００２６】
第８の発明によれば、最終的にはバランスの良い位置に基点を設定することができる。
【００２７】
第９の発明によれば、プレイヤが目標位置を指定することを意図しているのか、それとも、目標位置以外の位置を指定することを意図しているのかを判断することができる。したがって、プレイヤの意図をより正確に反映させた操作を実現することができるので、操作性をより向上することができる。
【００２８】
また、第１０および第１１の発明によれば、第１の発明と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００２９】
図１は、本発明の一実施形態に係る入力データ処理装置の一例であるゲームシステムの構成を示す外観図であり、図２はそのブロック図である。図１および図２に示すように、ゲームシステム１０は、ゲーム装置１４、光ディスク１６、メモリカード１８、コントローラ２０、テレビ１２（図２に示すスピーカ５０を含む）を備える。光ディスク１６およびメモリカード１８は、ゲーム装置１４に着脱自在に装着される。コントローラ２０は、ゲーム装置１４に設けられる複数（図１では、４つ）のコントローラポート用コネクタのいずれかに接続される。コントローラ２０は複数の操作部を有し、具体的には、第１のタッチパッド２１ａ、第２のタッチパッド２１ｂ、スタートボタン２１ｃ、セレクトボタン２１ｄ、Ｌボタン２１ｅ、およびＲボタン２１ｆを含む。また、他の実施形態においては、ゲーム装置１４とコントローラ２０との通信は、通信ケーブルを用いずに無線通信によって行われてもよい。また、テレビ１２およびスピーカ５０は、ＡＶケーブル等によってゲーム装置１４に接続される。なお、本発明は図１に示すような据え置き型のゲーム装置に限らず、携帯型のゲーム装置であってもよいし、業務用のゲーム装置であってもよいし、携帯電話やパソコン等、プログラムを実行することができる装置であってもよいことはもちろんである。以下、図２を参照しながら、本発明に係るゲームシステムにおける各部を詳細に説明するとともに、ゲームシステムにおける一般的な動作を説明する。
【００３０】
外部記憶媒体の一例である光ディスク１６は、例えばＤＶＤ−ＲＯＭであり、本発明に係るプログラムの一例であるゲームプログラムやキャラクタデータ等のゲームに関するデータを固定的に記憶している。プレイヤがゲームを行う場合、光ディスク１６はゲーム装置１４に装着される。なお、ゲームプログラム等を記憶する手段は、ＤＶＤ−ＲＯＭに限らず、例えばＣＤ−ＲＯＭ、ＭＯ、メモリカード、ＲＯＭカートリッジ等の記憶媒体であってもよく、また、ゲーム装置本体内のメモリやハードディスク等の記憶手段に記憶されるようにしてもよく、この場合、通信によりゲームプログラムをダウンロードするようにしてもよい。メモリカード１８は、例えばフラッシュメモリ等の書き換え可能な記憶媒体によって構成され、例えばゲームにおけるセーブデータ等のデータを記憶する。
【００３１】
ゲーム装置１４は、光ディスク１６に記録されているゲームプログラムを読み出し、ゲーム処理を行う。コントローラ２０は、プレイヤがゲーム操作に関する入力を行うための入力装置である。コントローラ２０は、プレイヤによるタッチパッド２１ａおよび２１ｂの操作や各操作ボタン２１ｃ〜２１ｆの押圧操作や後述するスイッチ（図示しない）の押圧操作に応じて操作データをゲーム装置１４に出力する。テレビ１２は、ゲーム装置１４から出力された画像データを画面に表示する。また、スピーカ５０は、典型的にはテレビ１２に内蔵されており、ゲーム装置１４から出力されたゲームの音声を出力する。複数のプレイヤによってゲームを行う場合、コントローラ２０はプレイヤの数だけ設けられる。
【００３２】
前述のように、コントローラ２０は、その主面の左右両側に１つずつ、計２つのタッチパッド２１ａおよび２１ｂを有する。なお、２つのタッチパッド２１ａおよび２１ｂは同じ構成であり、以下では、２つのタッチパッド２１ａおよび２１ｂを特に区別しない場合、単に「タッチパッド２１」と記載する。タッチパッド２１としては、例えば抵抗膜方式や光学式（赤外線方式）や静電容量結合式など、任意の方式のものを利用することができる。タッチパッド２１は、その入力面にプレイヤの指等が触れると、接触位置（入力位置）に対応する座標データ（入力座標データ）を出力する。タッチパッド２１は、所定のサンプリング時間毎に入力位置を検出して入力座標データを出力する。ここでは、所定のサンプリング時間を画面表示のフレーム時間と同じであるとする。なお、タッチパッド２１は、入力座標データを出力するものであればどのようなものであってもよい。例えば、タッチパッド２１は、プレイヤの指等が入力面に接触している面積を示すデータを上記入力座標データとともにゲーム装置１４に出力してもよいし、入力位置の移動速度を検出して出力してもよい。また、本実施形態においては、タッチパッド２１の入力面は、押下可能なようにバネ等で支持されており、タッチパッド２１の裏面にはそれぞれスイッチ（図示せず）が設けられる。プレイヤは、タッチパッド２１の入力面を押下することによってスイッチを押下することができる。
【００３３】
なお、以上に説明したコントローラ２０は、本発明において用いられる入力装置の一例であり、入力装置は、入力面上における入力位置を所定のサンプリング時間毎に検出することが可能なポインティングデバイスであればどのようなものであってもよい。例えば、入力装置は、タッチパッドを１つのみ備える構成であってもよいし、タッチパッドに代えてタッチパネルを備える構成であってもよい。
【００３４】
次に、ゲーム装置１４の構成について説明する。図２において、ゲーム装置１４内には、ＣＰＵ２２およびそれに接続されるメモリコントローラ４０が設けられる。さらに、ゲーム装置１４内において、メモリコントローラ４０は、グラフィックスプロセッシングユニット（ＧＰＵ）２４と、メインメモリ３４と、デジタル信号処理回路（ＤＳＰ）３６と、各種インターフェース（Ｉ／Ｆ）４２〜５２とに接続される。また、ＤＳＰ３６を介してサブメモリ３８と接続される。メモリコントローラ４０は、これら各構成要素間のデータ転送を制御する。
【００３５】
ゲーム開始の際、まず、ディスクドライブ５４は、ゲーム装置１４に装着された光ディスク１６を駆動する。光ディスク１６に記憶されているゲームプログラムは、ディスクＩ／Ｆ５２およびメモリコントローラ４０を介して、メインメモリ３４に読み込まれる。メインメモリ３４上のプログラムをＣＰＵ２２が実行することによって、ゲームが開始される。ゲーム開始後、プレイヤは、各タッチパッド２１ａおよび２１ｂや各操作ボタン２１ｃ〜２１ｆや上記スイッチを用いてコントローラ２０に対してゲーム操作等の入力を行う。プレイヤによる入力に従い、コントローラ２０は、操作データをゲーム装置１４に出力する。コントローラ２０から出力される操作データは、コントローラＩ／Ｆ４２およびメモリコントローラ４０を介してＣＰＵ２２に入力される。ＣＰＵ２２は、入力された操作データに応じてゲーム処理を行う。ゲーム処理における画像データ生成等に際して、ＧＰＵ２４やＤＳＰ３６が用いられる。また、サブメモリ３８は、ＤＳＰ３６が所定の処理を行う際に用いられる。
【００３６】
ＧＰＵ２４は、ジオメトリユニット２６およびレンダリングユニット２８を含み、画像処理専用のメモリに接続されている。この画像処理専用メモリは、例えばカラーバッファ３０およびＺバッファ３２として利用される。ジオメトリユニット２６は、仮想３次元空間であるゲーム空間に置かれた物体や図形に関する立体モデル（例えばポリゴンで構成されるオブジェクト）の座標についての演算処理を行うものであり、例えば立体モデルの回転・拡大縮小・変形や、ワールド座標系の座標から視点座標系やスクリーン座標系の座標への変換を行うものである。レンダリングユニット２８は、所定のテクスチャに基づいて、スクリーン座標に投影された立体モデルについてピクセルごとのカラーデータ（ＲＧＢデータ）をカラーバッファ３０に書き込むことによって、ゲーム画像を生成する。また、カラーバッファ３０は、レンダリングユニット２８によって生成されたゲーム画像データ（ＲＧＢデータ）を保持するために確保されたメモリ領域である。Ｚバッファ３２は、３次元の視点座標から２次元のスクリーン座標に変換する際に視点からの奥行情報を保持するために確保されたメモリ領域である。ＧＰＵ２４は、これらを用いてテレビ１２に表示すべき画像データを生成し、適宜メモリコントローラ４０およびビデオＩ／Ｆ４４を介してテレビ１２に出力する。なお、ゲームプログラム実行時にＣＰＵ２２において生成される音声データは、メモリコントローラ４０からオーディオＩ／Ｆ４８を介して、スピーカ５０に出力される。なお、本実施形態では、画像処理専用のメモリを別途設けたハードウェア構成としたが、これに限らず例えばメインメモリ３４の一部を画像処理用のメモリとして利用する方式（ＵＭＡ：Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を使うようにしてもよい。ゲーム装置１４は、ゲームプログラムを実行することにより生成したゲームデータをメモリコントローラ４０およびメモリＩ／Ｆ４６を介してメモリカード１８に転送する。また、ゲーム装置１４は、ゲーム開始に先立って、メモリカード１８に記憶されたゲームデータを、メモリコントローラ４０およびメモリＩ／Ｆ４６を介してメインメモリ３４に読み込む。
【００３７】
次に、本実施形態に係るプログラムによってゲーム装置１４において実行される処理の概要を説明する。ゲーム装置１４は、タッチパッド２１への入力に基づいて操作ベクトルを算出し、この操作ベクトルに従ってゲーム処理を行う。操作ベクトルとは、プレイヤによって行われたタッチパッド２１への入力操作をベクトルで表したものである。具体的には、操作ベクトルは、入力面上に設定される基点の位置を始点とし、入力面に対してプレイヤによる入力が行われた位置（入力位置）を終点とするベクトルである。ゲーム装置１４は、この操作ベクトルに基づいてプレイヤによる操作内容を判断し、プレイヤによる操作に従ったゲーム処理を行う。
【００３８】
本実施形態では、ゲーム空間にプレイヤキャラクタが登場するゲームを例として説明する。また、ゲーム装置１４は、上記ゲーム処理の一例として、プレイヤによる操作に従ってプレイヤキャラクタをゲーム空間内で移動させる処理を行う場合を例として説明する。具体的には、ゲーム装置１４は、操作ベクトルの向きに応じた方向に、操作ベクトルの大きさに応じた速度でプレイヤキャラクタを移動させる。このような操作ベクトルを用いてゲーム処理を行うことによって、タッチパッドでありながら、ジョイスティックを操作するような操作感をプレイヤに与えることができる。なお、操作ベクトルに従って行われる処理はどのようなものであってもよく、例えば、テレビ１２の画面上に表示されたカーソルを移動させる処理であってもよい。
【００３９】
次に、タッチパッド２１への入力に基づいて操作ベクトルを算出する処理を図３〜図６を用いて説明する。なお、以下では、プレイヤがタッチパッド２１に対して一連の連続した入力を行った場合について説明する。図３は、時刻ｔ０におけるタッチパッド２１の様子を示す図である。ここでは、時刻ｔ０においてタッチパッド２１は入力を最初に検出したものとする。なお、図３〜図６において、点Ａは円形のタッチパッドの中心である。また、接触領域６１は、タッチパッド２１にプレイヤの指等が接触している領域を示す。タッチパッド２１は、接触領域６１内の所定の点（典型的には、接触領域６１の重心）の位置を示す入力座標データを出力する。ここでは、点Ｂ１の位置を示す入力座標データが出力されるものとする。つまり、タッチパッド２１は、時刻ｔ０において点Ｂ１の位置を最初の入力位置として検出したものとする。このとき、ゲーム装置１４は、タッチパッド２１において最初に検出された入力位置（すなわち、点Ｂ１の位置）に基点６２を設定する。したがって、時刻ｔ０においては操作ベクトルは０となる。その結果、操作ベクトルに従って行われるゲーム処理において、プレイヤキャラクタは移動されない。
【００４０】
図４は、図３における時刻ｔ０からサンプリング時間ｔが経過した時点（時刻：ｔ０＋ｔ）におけるタッチパッド２１の様子を示す図である。ここでは、接触領域６１が点Ｂ２の位置に移動した結果、タッチパッド２１は、時刻（ｔ０＋ｔ）において、点Ｂ２の位置を示す入力座標データを出力したとする。このとき、ゲーム装置１４は、現在の基点６２の位置から中心点Ａへの方向（中心方向）へ距離Ｌ’１だけ基点６２を移動させる。なお、図４および図５においては、移動前の基点を点線で示し、移動後の基点６２を黒丸で示している。以下、基点の移動量Ｌ’１の算出方法を説明する。
【００４１】
まず、ゲーム装置１４は、１つ前に検出された入力位置（点Ｂ１）から現在の入力位置（点Ｂ２）までのベクトル（ベクトルｖ１）を算出する。なお、このベクトルは、入力位置の移動方向および移動量を表すベクトルであり、以下ではこのベクトルを移動ベクトルと呼ぶ。換言すれば、移動ベクトルは、サンプリング時間毎に検出される入力位置の移動速度を表す。移動ベクトルが算出されると、ゲーム装置１４は次に、移動ベクトルｖ１の上記中心方向の成分Ｌ１を算出する。さらに、移動ベクトルｖ１の中心方向成分Ｌ１に所定の調整量を乗算することによって移動量Ｌ’１が算出される。なお、所定の調整量は予め定められた定数である。したがって、移動量Ｌ’１は移動ベクトルの中心方向成分Ｌ１に比例した大きさとなる。
【００４２】
図４において基点６２が移動されると、ゲーム装置１４は、移動後の基点６２の位置と現在の入力位置（点Ｂ２）とに基づいて操作ベクトルを算出する。すなわち、操作ベクトルは、基点６２を始点とし、点Ｂ２を終点とするベクトルｖ’１となる。ゲーム装置１４は、この操作ベクトルｖ’１に従ってプレイヤキャラクタを移動させるゲーム処理を行う。
【００４３】
図５は、図４における時刻（ｔ０＋ｔ）からさらにサンプリング時間ｔが経過した時点（時刻：ｔ０＋２ｔ）におけるタッチパッド２１の様子を示す図である。時刻ｔ０＋２ｔにおいても、図４に示した場合と同様の計算が行われることによって基点６２が移動され、操作ベクトルが算出される。すなわち、１つ前に検出された入力位置（点Ｂ２）から現在の入力位置（点Ｂ３）までの移動ベクトルｖ２が算出され、移動ベクトルｖ２の上記中心方向の成分Ｌ２が算出される。さらに、移動ベクトルの中心方向成分Ｌ２に上記調整量を乗算することによって移動量Ｌ’２が算出される。したがって、基点６２は中心方向に移動量Ｌ’２だけ移動される。また、操作ベクトルは、基点６２を始点とし、現在の入力位置（点Ｂ３）を終点とするベクトルｖ’２となる。プレイヤキャラクタを移動させるゲーム処理は、この操作ベクトルｖ’２に従って行われる。
【００４４】
なお、時刻（ｔ０＋２ｔ）以降においてもそれまでと同様に、新たな入力位置が検出される度に基点が中心方向に移動される。基点の移動が繰り返される結果、基点が中心点Ａに達した場合、基点の移動は停止される。また、基点が中心点Ａを超えて移動しようとした場合、すなわち、基点から中心点Ａまでの距離よりも算出された移動量が大きい場合、基点は中心点Ａまで移動される。そして、それ以降において基点の移動は停止される。
【００４５】
以上のように、本実施形態によれば、基点の初期位置は、プレイヤが最初に入力を行った位置に設定される。したがって、プレイヤが入力を行った直後の時点において操作ベクトルは０となるので、この時点ではプレイヤキャラクタの移動が行われない。それ故、最初に中心を触ろうとしたプレイヤの意図に反してプレイヤキャラクタが移動することがないので、タッチパッドの操作性を向上することができる。また、基点は、プレイヤによる入力位置の移動に応じて中心点Ａに近づいていき、最終的に中心点Ａに達する。したがって、基点は、最初は中心から外れた位置にあるものの、プレイヤが操作を行う間に中心に移動する。それ故、基点の位置がバランスの悪い位置に存在することに起因する操作性の低下を防止することができる。
【００４６】
なお、本実施形態では、プレイヤが操作を行う間に基点が移動するので、プレイヤの操作感覚と、ゲーム処理に実際に反映される操作とが若干異なる可能性がある。図６は、移動ベクトルが中心方向と略垂直である場合の操作ベクトルを示す図である。図６を例にとって説明すると、プレイヤの操作感覚では、操作ベクトルは移動前の基点６２（点線）から点Ｂｂまでのベクトルｖ”ｂであるのに対して、ゲーム処理に実際に反映される操作ベクトルはベクトルｖ’ｂとなる。このベクトルｖ”ｂとベクトルｖ’ｂとの差があまりに大きいと、プレイヤの操作感覚とゲーム処理に実際に反映される操作との違いによってプレイヤが操作に違和感を抱く可能性がある。このような違和感をプレイヤに与えないようにするためには１回の基点の移動量を小さくすればよい。しかし、１回の基点の移動量を単純に小さくすると、基点が中心位置に到達するまでの時間が長くなり、基点の位置がバランスの悪い位置に存在することに起因する操作性の低下を防止する効果が小さくなってしまう。
【００４７】
ここで、移動ベクトルの中心方向成分が大きい場合、基点を中心方向に移動させたとしてもプレイヤは上記違和感を抱きにくいと考えられる。図７は、移動ベクトルが中心方向と略平行である場合の操作ベクトルを示す図である。図７に示すように、移動ベクトルの中心方向成分が大きい場合、基点を中心方向にある程度移動させてもベクトルｖ”Ｂの向きとベクトルｖ’Ｂの向きとは大きく異ならない。つまり、この場合、基点を中心方向にある程度移動させたとしてもプレイヤは上記違和感を抱きにくい。一方、図６に示すように、移動ベクトルの中心方向成分が小さい場合に基点を中心方向に大きく移動させると、ベクトルｖ”ｂの向きとベクトルｖ’ｂの向きとが大きく異なるので、プレイヤが上記違和感を抱くおそれが十分にある。
【００４８】
そこで、本実施形態では、１回の基点の移動量を、移動ベクトルの中心方向成分の大きさに応じて決定するようにしている。すなわち、移動ベクトルの中心方向成分が大きい場合、プレイヤは上記違和感を抱きにくいので、基点の移動量を大きくする。一方、移動ベクトルの中心方向成分が小さい場合、プレイヤは上記違和感を抱きやすいので、基点の移動量を小さくする。これによって、本実施形態では、プレイヤに違和感を与えずに、基点を効果的に中心に移動させることができる。したがって、本実施形態では、プレイヤの操作感覚とゲーム処理に実際に反映される操作とが異なることに起因するプレイヤの違和感をできるだけ生じないようにすることができるとともに、基点の位置がバランスの悪い位置に存在することに起因する操作性の低下を効果的に防止することができる。
【００４９】
また、本実施形態においては、タッチパッド２１の入力面に対して、基点が最終的に到達する点（すなわち、中心点Ａ）の位置を中心とした判定領域が設定される。図８は、タッチパッド２１の入力面に設定される判定領域を示す図である。図８においては、点線の内側領域が判定領域６３である。図８に示すように、判定領域６３は、中心点Ａを中心とする円形領域である。タッチパッド２１が最初に検出した入力位置（初期入力位置）が判定領域６３の内側である場合、ゲーム装置１４は、図３に示したように初期入力位置に基点を設定する。一方、初期入力位置が判定領域６３の外側である場合、ゲーム装置１４は、中心点Ａの位置に基点を設定する。例えば図８に示すように、初期入力位置が点Ｂ４である場合、基点６２は中心点Ａの位置に設定される。
【００５０】
ここで、ゲームの内容やゲームの進行状況によっては、プレイヤが中心点Ａに最初にタッチすることを望まないこともあると考えられる。例えば、動き出しにおいてはプレイヤキャラクタをゆっくり移動させて次第に速く移動させたい場合には、プレイヤは最初に中心点Ａの位置にタッチすることを望むと考えられる。一方、プレイヤキャラクタを動き出しから高速で移動させたい場合には、プレイヤは最初に中心点Ａの位置にタッチしないと考えられる。
【００５１】
そこで、本実施形態では、判定領域６３を設けることによって、プレイヤが中心点Ａの位置をタッチすることを意図しているのか、それとも、中心点Ａ以外の位置をタッチすることを意図しているのかを判断している。具体的には、プレイヤが判定領域６３の外側を最初にタッチする場合、プレイヤの意図は、プレイヤキャラクタを移動させる操作にあり、中心点Ａにタッチする意図はないと考えられる。したがって、この場合、ゲーム装置１４は基点を中心点Ａの位置に設定する。一方、プレイヤが判定領域６３の内側を最初にタッチする場合、プレイヤは、プレイヤキャラクタを動き出しから急に移動させることを意図しておらず、中心点Ａにタッチすることを意図していると考えられる。したがって、この場合、ゲーム装置１４は基点を初期入力位置に設定する。このような判定領域６３を設けることによって、中心点Ａ以外をタッチすることを意図した操作にも対応することができるので、操作性をより向上することができる。
【００５２】
次に、ゲームプログラムを実行することによってゲーム装置１４において行われるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる主なデータについて図９を用いて説明する。図９は、ゲーム装置１４のメインメモリ３４に記憶される主なデータを示す図である。図９に示すように、メインメモリ３４には、入力座標データ群７０、移動ベクトルデータ７１、タッチフラグデータ７２、判定領域データ７３、基点座標データ７４、基点距離データ７５、移動量データ７６、単位ベクトルデータ７７、および操作ベクトルデータ７８等が記憶される。なお、メインメモリ３４には、図９に示すデータの他、プレイヤキャラクタに関するデータ（プレイヤキャラクタの画像データや位置データ等）やゲーム空間に関するデータ（地形データ等）等、ゲーム処理に必要なデータが記憶される。
【００５３】
入力座標データ群７０は、タッチパッド２１によって連続して検出された各入力位置を示す入力座標データの集合である。本実施形態では、プレイヤが１回の連続した入力を行う間に検出された入力位置を示す入力座標データは、入力座標データ群７０に検出した順に追加される。したがって、初期入力位置を示す入力座標データが第１入力座標データ７０ａとしてメインメモリ３４に記憶され、２番目に検出された入力位置を示す入力座標データが第２入力座標データ７０ｂとしてメインメモリ３４に記憶される。なお、ここでは、第ｎ（ｎは１以上の整数）番目に検出された入力位置を示す第ｎ入力座標データとして記憶される座標を（ｘ（ｎ），ｙ（ｎ））と表す。また、この座標（ｘ（ｎ），ｙ（ｎ））は、タッチパッド２１の入力面の所定位置（例えば中心点）を原点とする直交座標系の座標とする。なお、１回の連続した入力が完了して（すなわち、タッチパッド２１から指が離されて）別の新たな入力が開始されると、それまで記憶されていた入力座標データ群７０の内容は消去され、当該新たな入力に対応する入力座標データが新たに順次記憶されていく。
【００５４】
移動ベクトルデータ７１は、上記移動ベクトルを示すデータである。本実施形態では、移動ベクトルデータ７１は、最新の移動ベクトルを示すデータのみがメインメモリに記憶される。すなわち、移動ベクトルが新たに算出されると、移動ベクトルデータの内容は、当該新たに算出された移動ベクトルを示すデータに更新される。なお、ここでは、移動ベクトルデータを（ｖｘ，ｖｙ）と表す。
【００５５】
タッチフラグデータ７２は、タッチパッド２１に対する入力があるか否かを表すフラグのデータである。具体的には、タッチパッド２１に対する入力がある場合、フラグの値は“１”に設定され、タッチパッド２１に対する入力がない場合、フラグの値は“０”に設定される。
【００５６】
判定領域データ７３は、上記判定領域を示すデータである。ここでは、判定領域は上記中心点を中心とする円形領域であるので、判定領域の半径の長さＬを示すデータが判定領域データ７３として記憶される。判定領域の半径の長さＬは、ゲームプログラムにおいて予め決められている。
【００５７】
基点座標データ７４は、基点の位置を示すデータである。ここでは、基点座標データ７４として記憶される座標を（Ｐｘ，Ｐｙ）と表す。この座標（Ｐｘ，Ｐｙ）は、入力座標データにより示される座標と同じ座標系の座標である。また、基点距離データ７５は、基点から中心点までの距離Ｄを示すデータである。移動量データ７６は、基点の上記移動量Ｌ’を示すデータである。
【００５８】
単位ベクトルデータ７７は、基点から中心点への方向を向く単位長さのベクトル（単位ベクトル）を示すデータである。つまり、単位ベクトルは上記中心方向を示す。ここでは、単位ベクトルデータ７７として記憶される座標を（ｕｘ，ｕｙ）と表す。また、操作ベクトルデータ７８は、上記操作ベクトルを示すデータである。ここでは、操作ベクトルを（ｖ’ｘ，ｖ’ｙ）と表す。
【００５９】
次に、ゲームプログラムを実行することによってゲーム装置１４において行われるゲーム処理の詳細を、図１０および図１１を用いて説明する。図１０は、ゲーム装置１４において実行されるゲーム処理の流れを示すフローチャートである。ゲーム装置１４の電源が投入されると、ゲーム装置１４のＣＰＵ２２は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、メインメモリ３４等の各ユニットが初期化される。そして、光ディスク１６に記憶されたゲームプログラムがメインメモリ３４に読み込まれ、ＣＰＵ２２によって当該ゲームプログラムの実行が開始される。図１０に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図１０および図１１においては、ゲーム処理のうち、タッチパッド２１への入力に基づいて上記操作ベクトルを算出する処理について詳細に示し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。
【００６０】
図１０のステップＳ１において、まず、初期化処理が行われる。具体的には、初期値を設定すべきデータについて、予め定められた初期値がメインメモリ３４に記憶される。例えば、判定領域の半径の長さＬを示すデータが判定領域データ７３として記憶される。また、タッチフラグの値は“０”に設定される。さらにステップＳ１においては、ゲーム空間が構築されるとともに、プレイヤキャラクタ等のゲーム空間に登場するキャラクタがゲーム空間に配置されることによって、初期状態のゲーム空間がテレビ１２に表示される。
【００６１】
ステップＳ１の次のステップＳ２において基点設定処理が行われる。基点設定処理とは、タッチパッド２１に対する入力を受け付けるとともに、操作ベクトルを算出するための基点を設定する処理である。以下、図１１を用いて基点設定処理の詳細を説明する。
【００６２】
図１１は、図１０に示すステップＳ２の詳細な処理の流れを示すフローチャートである。基点設定処理においては、まずステップＳ１１において、タッチパッド２１に対する入力があったか否かが判定される。具体的には、ＣＰＵ２２は、タッチパッド２１から出力されるデータを読み込み、タッチパッド２１から入力座標データが出力されているか否かを判定する。タッチパッド２１から入力座標データが出力されている場合、タッチパッド２１に対する入力があると判定されてステップＳ１３の処理が行われる。一方、入力がないことを示すデータがタッチパッド２１から出力されている場合、タッチパッド２１に対する入力がないと判定されてステップＳ１２の処理が行われる。
【００６３】
ステップＳ１２においてはタッチフラグがオフに設定される。すなわち、ＣＰＵ２２は、メインメモリ３４に記憶されているタッチフラグデータ７２の値を“０”に設定する。ステップＳ１２の後、ＣＰＵ２２は基点設定処理を終了する。
【００６４】
一方、ステップＳ１３においては、タッチパッド２１の入力位置および移動ベクトルが取得される。具体的には、ＣＰＵ２２は、ステップＳ１１でタッチパッド２１から読み込んだ入力座標データを、メインメモリ３４に記憶されている入力座標データ群７０に追加する。また、ＣＰＵ２２は、当該入力座標データにより示される位置を終点とし、メインメモリ３４に前回追加された入力座標データにより示される位置を始点とする移動ベクトルを算出する。より具体的には、第ｎ入力座標データ（ｎは１以上の整数）により示される座標を（ｘ（ｎ），ｙ（ｎ））とし、第ｍ入力座標データ（ｍ＝ｎ＋１）により示される座標を（ｘ（ｍ），ｙ（ｍ））とすると、移動ベクトル（ｖｘ（ｍ），ｖｙ（ｍ））は、以下の式（１）によって算出される。
ｖｘ（ｍ）＝ｘ（ｍ）−ｘ（ｎ）
ｖｙ（ｍ）＝ｙ（ｍ）−ｙ（ｎ）  …（１）
なお、タッチパッド２１が移動ベクトルを検出可能である場合、ＣＰＵ２２は、タッチパッド２１から出力される移動ベクトルのデータを読み込めばよく、上記式（１）を用いた計算を行わなくてもよい。算出された移動ベクトルを示す移動ベクトルデータ７１はメインメモリ３４に更新して記憶される。すなわち、新たに算出された移動ベクトルデータが以前に算出された移動ベクトルデータに上書きして記憶される。
【００６５】
ステップＳ１３の次のステップＳ１４において、ステップＳ１３において検出された入力は最初の入力であるか否か、すなわち、ステップＳ１３で取得された入力位置は初期入力位置であるか否かが判定される。ここで、初期入力位置とは、上述したように、タッチパッド２１において入力位置が連続して検出される場合において１番目に検出された入力位置のことである。ＣＰＵ２２は、タッチフラグの内容に従ってステップＳ１４の判定処理を行う。すなわち、メインメモリ３４に記憶されているタッチフラグデータ７２の値が“０”である場合、ステップＳ１３で取得された入力位置は初期入力位置であると判定する。この場合、ステップＳ１５の処理が行われる。一方、メインメモリ３４に記憶されているタッチフラグデータ７２の値が“１”である場合、ステップＳ１３で取得された入力位置は初期入力位置でないと判定する。この場合、ステップＳ１５〜Ｓ１８の処理がスキップされてステップＳ１９の処理が行われる。
【００６６】
ステップＳ１５においては、タッチフラグがオンに設定される。すなわち、ＣＰＵ２２は、メインメモリ３４に記憶されているタッチフラグデータ７２の値を“１”に設定する。続くステップＳ１６において、最初の入力におけるタッチ位置は入力面の中心付近の位置であるか否か、すなわち、上記初期入力位置は判定領域内であるか否かが判定される。ステップＳ１６の判定は、メインメモリ３４に最後に記憶された入力座標データ（最新の入力座標データ）と、判定領域データ７３とを参照することによって行われる。すなわち、ＣＰＵ２２は、最新の入力座標データにより示される座標位置が、判定領域データ７３により定義される領域内に位置するか否かを判定する。具体的には、最新の入力座標データにより示される座標を（ｘ（ｎ），ｙ（ｎ））（ｎは１以上の整数）とすると、以下の式（２）を満たす場合、初期入力位置は判定領域内であると判定される。
（（ｘ（ｎ））2 ＋（ｙ（ｎ））2 ）1/2 ≦Ｌ  …（２）
なお、式（２）に示すＬは、判定領域の半径である。
【００６７】
ステップＳ１６の判定において、初期入力位置は判定領域内であると判定された場合、ステップＳ１７の処理が行われる。すなわち、ステップＳ１７において、初期入力位置に基点が設定される（図３参照）。具体的には、ＣＰＵ２２は、直前のステップＳ１３で記憶された入力座標データの内容を基点座標データ７４としてメインメモリ３４に記憶する。一方、ステップＳ１６の判定において、初期入力位置は判定領域内でないと判定された場合、ステップＳ１８の処理が行われる。すなわち、ステップＳ１８において、中心点の位置に基点が設定される（図８参照）。具体的には、ＣＰＵ２２は、中心点の座標（０，０）を示すデータを基点座標データ７４としてメインメモリ３４に記憶する。ステップＳ１７またはステップＳ１８の後、ステップＳ１９の処理が行われる。
【００６８】
ステップＳ１９においては、基点から中心点までの距離Ｄが算出される。具体的には、ＣＰＵ２２は、メインメモリ３４に記憶されている基点座標データ７４を用いて以下の式（３）に従って距離Ｄを算出する。
Ｄ＝（Ｐｘ2 ＋Ｐｙ2 ）1/2   …（３）
なお、式（３）では、基点の座標を（Ｐｘ，Ｐｙ）としている。ステップＳ１９で算出された距離Ｄを示すデータは、基点距離データ７５としてメインメモリ３４に更新して記憶される。
【００６９】
ステップＳ１９の次のステップＳ２０において、基点が中心点にあるか否かが判定される。ステップＳ２０の判定は、基点座標データ７４を参照することによって行うことができる。すなわち、基点座標データ７４により示される座標（Ｐｘ，Ｐｙ）が（０，０）であれば、基点が中心点にあると判定される。基点が中心点にないと判定される場合、ステップＳ２１〜Ｓ２５の処理が行われる。ステップＳ２１〜Ｓ２５の処理は、基点を移動させる処理である。一方、基点が中心点にあると判定される場合、ステップＳ２１〜Ｓ２５の処理がスキップされて、ＣＰＵ２２は、図１１に示す基点設定処理を終了する。
【００７０】
ステップＳ２１においては、単位ベクトルが算出される。単位ベクトルとは、上述したように、基点から中心点への方向を向く単位長さのベクトルである。ＣＰＵ２２は、基点の位置座標（Ｐｘ，Ｐｙ）と上記距離Ｄとを用いて、次に示す式（４）に従って単位ベクトル（ｕｘ，ｕｙ）を算出する。
ｕｘ＝Ｐｘ÷Ｄ
ｕｙ＝Ｐｙ÷Ｄ  …（４）
式（４）から算出された単位ベクトルのデータは、単位ベクトルデータ７７としてメインメモリ３４に記憶される。
【００７１】
ステップＳ２１の次のステップＳ２２において、基点の移動量Ｌ’が算出される。前述したように、移動量Ｌ’は、移動ベクトルの中心方向の成分に所定の調整量を乗算することによって算出される。すなわち、ＣＰＵ２２は、移動ベクトルデータ７１および単位ベクトルデータ７７を参照することによって移動量Ｌ’を算出する。具体的には、移動ベクトルをｖとし、単位ベクトルをｕとし、調整量をＡとすると、移動量Ｌ’は次の式（５）によって算出される。
Ｌ’＝｜ｕ・ｖ｜×Ａ  …（５）
式（５）に示すように、単位ベクトルと移動ベクトルとの内積に調整量Ａを積算することによってＬ’が得られる。算出された移動量Ｌ’のデータは、移動量データ７６としてメインメモリ３４に記憶される。
【００７２】
なお、上記調整量Ａの値は、ゲームプログラムにおいて予め決められている。この調整量Ａの値を変化させることによって、基点が中心点に達するまでの時間を変化させることができる。すなわち、調整量Ａの値を大きくすると、基点が中心点に達するまでの時間が早くなり、調整量Ａの値を小さくすると、基点が中心点に達するまでの時間が遅くなる。
【００７３】
ステップＳ２２の次のステップＳ２３においては、ステップＳ２２で算出された移動量Ｌ’が大きすぎるか否かが判定される。具体的には、ＣＰＵ２２は、基点距離データ７５および移動量データ７６を参照して、移動量Ｌ’が上述の距離Ｄよりも大きいか否かを判定する。ステップＳ２２の判定の結果、移動量Ｌ’が距離Ｄよりも大きい場合（移動量Ｌ’が大きすぎる場合）、ステップＳ２４の処理が行われる。すなわち、ステップＳ２４において、移動量Ｌ’が限度量（距離Ｄ）に調整される。具体的には、ＣＰＵ２２は、メインメモリ３４に記憶されている移動量データ７６の内容を距離Ｄの値に更新する。ステップＳ２４の後、ステップＳ２５の処理が行われる。一方、ステップＳ２２の判定の結果、移動量Ｌ’が距離Ｄよりも小さい場合、ステップＳ２４の処理はスキップされ、ステップＳ２５の処理が行われる。
【００７４】
ステップＳ２５においては、基点が移動される。このとき、基点は、ステップＳ２２で算出されたまたはステップＳ２４で調整された移動量だけ中心方向に移動される（図４および図５参照）。具体的にはＣＰＵ２２は、基点座標データ７４、移動量データ７６、および単位ベクトルデータ７７を参照して、新たな基点の位置を算出する。移動前の基点の座標を（Ｐｘ’，Ｐｙ’）とし、単位ベクトルを（ｕｘ，ｕｙ）とし、移動量をＬ’とすると、移動後の基点の座標（Ｐｘ，Ｐｙ）は、次の式（６）に従って算出される。
Ｐｘ＝Ｐｘ’−ｕｘ×Ｌ’
Ｐｙ＝Ｐｙ’−ｕｙ×Ｌ’  …（６）
なお、ＣＰＵ２２は、メインメモリ３４に記憶されている基点座標データ７４の内容を、式（６）によって算出された座標のデータに更新して記憶する。ステップＳ２５の後、ＣＰＵ２２は基点設定処理を終了する。
【００７５】
図１０の説明に戻り、ステップＳ２の基点設定処理の次にステップＳ３の処理が行われる。すなわち、ステップＳ３において、操作ベクトルが算出される。操作ベクトルは、基点座標データ７４と、最新の入力座標データとを参照することによって算出される。具体的には、基点の座標を（Ｐｘ，Ｐｙ）とし、最新の入力位置の座標を（ｘ（ｎ），ｙ（ｎ））（ｎは１以上の整数）とすると、操作ベクトル（ｖ’ｘ，ｖ’ｙ）は、次の式（７）によって算出される。
ｖ’ｘ＝ｘ（ｎ）−Ｐｘ
ｖ’ｙ＝ｙ（ｎ）−Ｐｙ  …（７）
なお、ＣＰＵ２２は、メインメモリ３４に記憶されている操作ベクトルデータ７８の内容を、式（７）によって算出された操作ベクトルのデータに更新して記憶する。
【００７６】
ステップＳ３の次のステップＳ４において、ステップＳ３で算出された操作ベクトルに応じたゲーム処理が行われる。本実施形態では、ゲーム空間に登場するプレイヤキャラクタを移動させる処理がゲーム処理として行われる。具体的には、プレイヤキャラクタは、操作ベクトルの向きに応じた方向に、操作ベクトルの大きさに応じた速度で移動される。続くステップＳ５において、ゲームを終了するか否かが判定される。例えば、プレイヤによって所定のゲーム終了操作が行われたか否かが判定される。ゲームを終了すると判定された場合、ＣＰＵ２２は、図１０に示すゲーム処理を終了する。一方、ゲームを終了しないと判定された場合、ステップＳ２の処理が再度行われ、以降、ゲームを終了すると判定されるまでステップＳ２〜Ｓ５の処理が繰り返される。
【００７７】
以上に示した処理によって、基点の初期位置は、プレイヤが最初に入力を行った位置に設定されるので、プレイヤが入力を行った直後の時点においてはプレイヤキャラクタの移動が行われない。したがって、プレイヤの意図に反してプレイヤキャラクタが移動することがなく、タッチパッドの操作性を向上することができる。また、基点は、プレイヤによる入力位置の移動に応じて中心点Ａに近づいていき、最終的に中心点Ａに達する。したがって、基点の位置がバランスの悪い位置に存在し続けることによってタッチパッドの操作性が低下することを防止することができる。
【００７８】
なお、上記の実施形態においては、ゲーム装置は、移動ベクトルの中心方向成分の大きさに基づいて基点の移動量を算出した。ここで、他の実施形態においては、ゲーム装置は、基点を中心位置へ移動させればよく、基点を移動させるアルゴリズムはどのようなものであってもよい。例えば、図１２および図１３に示すように、移動ベクトルの向きに基づいて基点の移動量を算出するようにしてもよい。
【００７９】
図１２および図１３は、他の実施形態における基点の移動量の算出方法を説明するための図である。図１２においては、移動ベクトルＶ１と基点６２から中心点ＡまでのベクトルＶ２とのなす角をθ１とし、基点６２の移動量をＬ１とする。また、図１３においては、移動ベクトルＶ１とベクトルＶ２とのなす角をθ２とし、基点６２の移動量をＬ２とする。図１２および図１３に示すように、基点の移動量は、移動ベクトルＶ１とベクトルＶ２とのなす角の大きさに応じて変化するようにしてもよい。具体的には、図１１のステップＳ２２において、移動ベクトルＶ１とベクトルＶ２とのなす角が大きいほど基点の移動量が大きくなるように当該移動量を算出するようにしてもよい。また、移動ベクトルの向きに基づいて基点の移動量を算出する方法としては、移動ベクトルＶ１とベクトルＶ２とのなす角が所定値以上の場合にのみ基点を移動させる方法も考えられる。図１２および図１３に示した基点の移動方法によっても上記実施形態と同様、プレイヤの操作感覚とゲーム処理に実際に反映される操作との違いによってプレイヤが操作に違和感を抱くことを防止することができる。ただし、図１２および図１３に示した基点の移動方法では、移動ベクトルの大きさを考慮しない分、プレイヤの違和感は大きくなるおそれがある。
【００８０】
また、他の実施形態においては、移動ベクトルの大きさに基づいて基点の移動量を算出するようにしてもよい。具体的には、図１１のステップＳ２２において、移動ベクトルＶ１の大きさが大きいほど基点の移動量が大きくなるように移動量を算出してもよい。この方法によっても上記実施形態と同様、プレイヤの操作感覚とゲーム処理に実際に反映される操作との違いによってプレイヤが操作に違和感を抱くことを防止することができる。ただし、この方法では、移動ベクトルの方向を考慮しない分、プレイヤの違和感は大きくなるおそれがある。
【００８１】
また、他の実施形態においては、プレイヤが入力位置を変化させていない（すなわち、入力面上の同じ位置をタッチし続けている）間は、基点の位置を移動しないようにしてもよい。以下、この場合の処理を図１４を用いて説明する。
【００８２】
図１４は、他の実施形態における基点設定処理（図１１）を示す図である。なお、図１４においては、図１１と相違する処理ステップのみを示している。図１４においては、ステップＳ１４の判定処理において、ステップＳ１３において検出された入力は最初の入力でないと判定された場合、ステップＳ３１の処理が行われる。なお、ステップＳ１３において検出された入力は最初の入力であると判定された場合は、図１１と同様にステップＳ１５の処理が行われる。ステップＳ３１においては、移動ベクトルの大きさが予め定められた所定値以上であるか否かが判定される。移動ベクトルの大きさが当該所定値以上であると判定される場合、ステップＳ１９の処理が行われる。一方、移動ベクトルの大きさが当該所定値よりも小さいと判定される場合、ＣＰＵ２２は基点設定処理を終了する。
【００８３】
図１４によれば、移動ベクトルの大きさが上記所定値以上である場合のみ、基点を移動させる処理（ステップＳ２５）が行われる。したがって、プレイヤによるタッチ位置がほぼ移動していない場合、すなわち、移動ベクトルが所定値よりも小さい場合、基点は移動しない。ここで、毎フレーム常に基点を移動させるとすると、プレイヤがタッチ位置を変えていないときでも操作ベクトルの大きさおよび向きが変化してしまい、実際の操作内容が変化してしまうことになる。具体的には、プレイヤが入力位置を変えていないにもかかわらず、プレイヤキャラクタの移動方向や移動速度が変化してしまうことになり、操作内容がプレイヤの意図に反して変更されてしまう。これに対して、図１４に示す処理によれば、プレイヤが入力位置を動かしていないと判断される場合には、基点が移動されないので操作ベクトルも変わらない。したがって、操作内容がプレイヤの意図に反して変更されることがないので、ポインティングデバイスの操作性を向上することができる。
【００８４】
なお、他の実施形態においては、図１４に示すステップＳ３１において、移動ベクトルの向きに基づいて基点を移動させるか否かを判定するようにしてもよい。具体的には、ステップＳ３１において、移動ベクトルＶ１と基点から中心点までのベクトルＶ２とのなす角度が予め定められた所定値以上であるか否かが判定される。そして、当該角度が当該所定値よりも小さい場合にのみ、基点を移動させるようにする。これによって、図１２および図１３に示した基点の移動方法と同様の効果を得ることができる。
【００８５】
また、上記実施形態においては、コントローラ２０から出力された入力座標データを受け取ったゲーム装置１４が、操作ベクトルを算出する処理を実行した。ここで、他の実施形態では、コントローラ２０側で操作ベクトルを算出する処理を実行するようにしてもよい。図１５は、コントローラ２０側で操作ベクトルを算出する処理を実行する場合におけるコントローラおよびゲーム装置１４の処理の流れを示すシーケンスチャートである。すなわち、コントローラ２０は、基点設定処理および操作ベクトルを算出する処理を実行する（ステップＳ２’およびＳ３’）。ステップＳ２’の処理は図１０に示すステップＳ２と同様の処理であり、ステップＳ３’の処理は図１０に示すステップＳ３と同様の処理である。さらに、コントローラ２０は、ステップＳ３’の結果得られた操作ベクトルをゲーム装置１４へ出力（送信）する（ステップＳ４１）。ゲーム装置１４は、コントローラ２０から出力された操作ベクトルを受信し（ステップＳ４２）、受信した操作ベクトルに応じたゲーム処理を行う（ステップＳ４’）。ステップＳ４’の処理は図１０に示すステップＳ４と同様の処理である。なお、ゲームが終了したと判定されるまでステップＳ２’〜Ｓ４’の処理が繰り返される点は、図１０に示すゲーム処理と同様である。このように、コントローラ２０がＣＰＵやステップＳ２およびＳ３を実行する処理回路を備える場合には、操作ベクトルをコントローラ２０が算出するようにしてもよい。なお、このとき、ゲーム装置１４は、操作ベクトルに応じたゲーム処理を行うだけであるので、従来のゲーム装置をそのまま適用することができる。すなわち、操作ベクトルを算出可能なコントローラを従来のゲーム装置に接続することによって、図１と同等のゲームシステムを実現することができる。
【００８６】
また、上記実施形態においては、ゲームプログラムおよびゲーム装置を例として説明したが、本発明は、ゲームに限らず、画面上において指定された位置を検出することが可能なポインティングデバイスを用いて操作ベクトルを算出する技術に適用することができる。
【産業上の利用可能性】
【００８７】
以上のように、本発明は、ポインティングデバイスの操作性を向上させること等を目的とした入力データ処理プログラムおよび入力データ処理装置に利用することができる。
【図面の簡単な説明】
【００８８】
【図１】本発明の一実施形態に係るゲームシステムの構成を示す外観図
【図２】図１に示すゲームシステムのブロック図
【図３】時刻ｔ０におけるタッチパッド２１の様子を示す図
【図４】時刻（ｔ０＋ｔ）におけるタッチパッド２１の様子を示す図
【図５】時刻（ｔ０＋２ｔ）におけるタッチパッド２１の様子を示す図
【図６】移動ベクトルが中心方向と略垂直である場合の操作ベクトルを示す図
【図７】移動ベクトルが中心方向と略平行である場合の操作ベクトルを示す図
【図８】タッチパッド２１の入力面に設定される判定領域を示す図
【図９】ゲーム装置１４のメインメモリ３４に記憶される主なデータを示す図
【図１０】ゲーム装置１４において実行されるゲーム処理の流れを示すフローチャート
【図１１】図１０に示すステップＳ２の詳細な処理の流れを示すフローチャート
【図１２】他の実施形態における基点の移動量の算出方法を説明するための図
【図１３】他の実施形態における基点の移動量の算出方法を説明するための図
【図１４】他の実施形態における基点設定処理を示す図
【図１５】他の実施形態における処理の流れを示すシーケンスチャート
【符号の説明】
【００８９】
１０  ゲームシステム
１２  テレビ
１４  ゲーム装置
１６  光ディスク
２０  コントローラ
２１ａ，２１ｂ  タッチパッド
２２  ＣＰＵ
３４  メインメモリ
【図１】
0004748657.tif 000002
【図２】
0004748657.tif 000003
【図３】
0004748657.tif 000004
【図４】
0004748657.tif 000005
【図５】
0004748657.tif 000006
【図６】
0004748657.tif 000007
【図７】
0004748657.tif 000008
【図８】
0004748657.tif 000009
【図９】
0004748657.tif 000010
【図１０】
0004748657.tif 000011
【図１１】
0004748657.tif 000012
【図１２】
0004748657.tif 000013
【図１３】
0004748657.tif 000014
【図１４】
0004748657.tif 000015
【図１５】
0004748657.tif 000016