JP5031260B2 - オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法 - Google Patents

オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法 Download PDF

Info

Publication number
JP5031260B2
JP5031260B2 JP2006128417A JP2006128417A JP5031260B2 JP 5031260 B2 JP5031260 B2 JP 5031260B2 JP 2006128417 A JP2006128417 A JP 2006128417A JP 2006128417 A JP2006128417 A JP 2006128417A JP 5031260 B2 JP5031260 B2 JP 5031260B2
Authority
JP
Japan
Prior art keywords
wind
hit
movable object
movable
moving
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006128417A
Other languages
English (en)
Other versions
JP2007296228A (ja
Inventor
力 兼重
隆行 嶋村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2006128417A priority Critical patent/JP5031260B2/ja
Priority to US11/640,409 priority patent/US8684845B2/en
Publication of JP2007296228A publication Critical patent/JP2007296228A/ja
Application granted granted Critical
Publication of JP5031260B2 publication Critical patent/JP5031260B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • A63F13/577Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/56Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/10Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
    • A63F2300/105Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals using inertial sensors, e.g. accelerometers, gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6607Methods for processing data by generating or executing the game program for rendering three dimensional images for animating game characters, e.g. skeleton kinematics

Description

この発明は、オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法に関し、特にたとえば、仮想空間において風を表現する、オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法に関する。
仮想ゲーム空間に風の生成を表現する関連技術の一例が特許文献1および2に開示されている。特許文献1の技術では、オブジェクト空間の所与の位置に複数の風生成源が設けられる。オブジェクトの受ける風の計算方法としては、算出対象となる地点において、各生成源から受ける風のベクトル(風の力と方向)が計算され、算出された各風ベクトルが合成されて、オブジェクトの受ける風(合成ベクトル)が決定される。
また、特許文献2の技術では、オブジェクトの移動に応じて生じる風に影響を受ける粒子オブジェクトの振る舞いが表現される。移動するオブジェクトごとに予め対応付けられた複数の仮想的な風に関する情報を示すテーブルが設定されている。具体的には、風の基準位置、風向き、風力、および風の影響範囲が定義されている。オブジェクトの移動と共に仮想的な風も移動するが、当該オブジェクトと仮想的な風の相対的な位置は変化しない。
特開2001−276416号公報 特開2001−307129号公報
特許文献1および2の技術は、いずれもプレイヤの操作に応じて生成される風をオブジェクトとして表したものではない。特に、特許文献1の技術では、各生成源から受ける風のベクトルが計算され、算出された各風ベクトルを合成することによってオブジェクトが受ける風が決定されるので、演算処理が複雑になるという欠点があった。また、特許文献2の技術では、複数の仮想的な風は、予め対応付けられたオブジェクト毎にテーブルとして設定されるので、生成される風の定義は対応付けられたオブジェクトに制約されるという欠点があった。さらに、プレイヤの操作に応じて仮想ゲーム空間内の任意の位置に風を生成しようとすると、多数の仮想的な風をテーブルに設定しておかねばならないため、メモリ容量が増大してしまうという欠点があった。
それゆえに、この発明の主たる目的は、操作者の操作に応じて仮想空間内に生成される風を簡単な処理でかつ少ないメモリ容量で表現することのできる、オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法を提供することである。
第1の発明(請求項1の発明)は、自身の動きを検出するための動き検出手段を有し、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するオブジェクト制御プログラムである。このオブジェクト制御プログラムは、コンピュータプロセッサに、動作状態検出ステップ、風オブジェクト生成ステップ、風オブジェクト移動ステップ、当り判定ステップ、および可動オブジェクト制御ステップを実行させる。動作状態検出ステップは、操作装置の動きに基づいて操作装置の動作状態を検出する。風オブジェクト生成ステップは、動作状態が所定の状態であるとき、想空間に風オブジェクトを生成する。風オブジェクト移動ステップは、風オブジェクトを移動させる。当り判定ステップは、風オブジェクトと可動オブジェクトとの当りを判定する。可動オブジェクト制御ステップは、当り判定ステップによって当りが生じたと判定されたとき、可動オブジェクトを動かす。
請求項1の発明では、オブジェクト制御プログラムは操作者の操作に応じて仮想空間に風を発生させるためのものであり、コンピュータ(12:実施例で相当する参照符号。以下同じ。)のプロセッサ(28)に実行させる次の各ステップを含む。なお、コンピュータ、自身の動きを検出する操作装置の動き検出手段(56、64)を有し、操作者によって操作される操作装置(14)を備えており、仮想空間内に配置される可動オブジェクト(90)を表示装置(16)に表示する。動作状態検出ステップ(S1−S7、S61−S67)では、操作装置の動きに基づいて動作状態が検出される。風オブジェクト生成ステップ(S9−S15、S71−S77)では、動作状態が所定の状態であるときに、想空間に風オブジェクト(92)が生成される。このように、操作者の操作に応じて生成される風はオブジェクトを用いて表現される。また、操作装置自体を所定の状態に動作させることによって仮想空間内に風を起こすことができる。風オブジェクトは、実施例では透明なポリゴンで形成されており、画面には表示されない。たとえば操作データに基づいて算出される位置にあるいは所定の位置に風オブジェクトは生成される。風オブジェクト移動ステップ(S17、S31、S79)では、風オブジェクトが移動される。たとえば、風オブジェクトは、視点と生成位置とを結ぶ方向に移動され、また、操作データに基づいて算出される速度で移動されてよい。当り判定ステップ(S35)では、風オブジェクトと可動オブジェクトとの当りが判定される。つまり、可動オブジェクトが風の影響を受けるか否かが判定される。可動オブジェクト制御ステップ(S19、S81)では、当りが生じたと判定されたとき、可動オブジェクトが動かされる。実施例では、可動オブジェクトは風車であり、風の影響を受けて回転速度が変化される。
請求項1の発明によれば、操作者の操作に応じて生成される風をオブジェクトを用いて表現するようにしたので、風の影響の有無を当り判定によって判断することができ、また、仮想空間の任意の位置で風を表現できる。したがって、簡単な処理でかつ少ないメモリ容量で風を表現することができる。
請求項の発明は、請求項の発明に従属し、動き検出手段は、操作装置の位置を示す撮像対象を撮像するための撮像手段を含んでいる。このオブジェクト制御プログラムは、コンピュータプロセッサに、座標算出ステップ、および座標変化量算出ステップをさらに実行させる。座標算出ステップは、撮像手段で撮像された撮像対象の位置に基づいて仮想空間内における座標を算出する。座標変化量算出ステップは、単位時間における座標の変化量を算出する。オブジェクト生成ステップは、変化量が所定の条件を満たすとき、風オブジェクトを生成する。
請求項の発明では、動き検出手段は撮像手段(70)を含み、撮像手段によって、操作装置の位置を示す撮像対象(18a、18b)が撮像される。実施例では、撮像対象は、表示装置の近傍に設けられる2つの赤外マーカであり、撮像画像におけるマーカの位置が検出される。座標算出ステップ(S3)では、撮像対象の位置に基づいて仮想空間内における座標が算出される。たとえば、マーカの位置から操作装置による指示位置が算出され、当該指示位置を仮想空間内の座標に変換することによって、対応する位置の座標が算出される。座標変化量算出ステップ(S5)では、単位時間における座標の変化量が算出される。実施例では、現フレームの座標と前フレームの座標との差が算出される。オブジェクト生成ステップでは、変化量が所定の閾値よりも大きいといった所定の条件が満足されたとき、風オブジェクトが生成される。操作装置の位置に基づく仮想空間内の座標は、操作装置を動かすことによって変化する。この座標変化量が所定条件を満たせば、仮想空間に風が発生される。したがって、操作装置を振るといったようなこれまでにない操作で仮想空間内に風オブジェクトを生成させるという、斬新なオブジェクト制御を提供することができる。
請求項の発明は、請求項に従属し、このオブジェクト制御プログラムは、コンピュータプロセッサに、変化量を一定間隔に分割する分割ステップをさらに実行させる。風オブジェクト生成ステップは、分割ステップによる分割によって一定間隔を隔てた各位置に風オブジェクトを生成する。
請求項の発明では、分割ステップ(S9)で座標変化量を一定間隔に分割することによって生成位置が算出され、各生成位置に風オブジェクトが生成される。したがって、一定距離ごとに複数の風オブジェクトを生成することができる。このように、操作装置を振る程度に応じて、生成される風オブジェクトの数を変化させることができる。
請求項の発明は、請求項の発明に従属し、動き検出手段は、加速度センサを含んでいる。このオブジェクト制御プログラムは、コンピュータプロセッサに、加速度センサで検出された加速度を取得する加速度取得ステップをさらに実行させる。風オブジェクト生成ステップは、加速度が所定の条件を満たすとき、風オブジェクトを生成する。
請求項の発明では、操作装置に加速度センサが設けられる。加速度取得ステップ(S61)では加速度センサで検出された加速度が取得され、風オブジェクト生成ステップでは、加速度が所定の条件を満たすとき(S63)、風オブジェクトが生成される。操作装置を動かすと、加速度センサで検出される加速度は変化する。したがって、加速度センサを用いることによって、操作装置を振るといったようなこれまでにない操作で仮想空間内に風オブジェクトを生成させるという、斬新なオブジェクト制御を提供することができる。
請求項の発明は、請求項の発明に従属し、オブジェクト制御プログラムは、コンピュータプロセッサに、加速度に応じて風オブジェクトの数を設定する数設定ステップをさらに実行させる。風オブジェクト生成ステップは、数設定ステップによって設定された数の風オブジェクトを一定間隔を隔てた各位置に生成する。
請求項の発明では、数設定ステップ(S71)で加速度に応じて風オブジェクトの生成数が設定され、風オブジェクト生成ステップでは、設定された数の風オブジェクトが一定間隔を空けた各位置に生成される。このように、加速度センサを用いることによって、操作装置を振る程度に応じて、生成される風オブジェクトの数を変化させることができる。
請求項の発明は、請求項またはの発明に従属し、加速度センサは、少なくとも操作装置の第1の方向の加速度と、当該第1の方向とは異なる第2の方向の加速度とを検知する。風オブジェクト生成ステップは、第1の方向の加速度が取得されたとき、風オブジェクトを生成する。
請求項の発明では、加速度センサによって所定の方向の加速度が検出されたときのみ、風が発生される。したがって、操作装置をたとえば上下方向に振ったときは風が発生するが、左右方向に振ったときは風が発生しないといったように、操作装置を擬似的に団扇等に見立てたような操作を実現することができる。
請求項の発明は、請求項1ないしのいずれかの発明に従属し、可動オブジェクトおよび風オブジェクトは、それぞれ中心座標および所定長の径を有する球として形成されている。当り判定ステップは、球としての可動オブジェクトと球としての風オブジェクトとの当りを判定する。このオブジェクト制御プログラムは、コンピュータプロセッサに、当り判定ステップによって当りが生じたと判定されたとき、可動オブジェクトの中心座標と風オブジェクトの中心座標との距離を算出する距離算出ステップをさらに実行させる。可動オブジェクト制御ステップは、距離算出ステップによって算出された距離に応じて可動オブジェクトの動作状態を変化させる。
請求項の発明では、可動オブジェクトおよび風オブジェクトは球形に形成され、当り判定ステップでは球同士の当りが判定される。距離算出ステップ(S37)では、可動オブジェクトの中心座標と風オブジェクトとの中心座標との距離が算出される。可動オブジェクト制御ステップでは、風オブジェクトと可動オブジェクトとの距離に応じて、可動オブジェクトの動作状態が変化される。したがって、可動オブジェクトと風オブジェクトの位置関係によって可動オブジェクトに影響を与える風の強さが変わるといった表現を簡単な処理で実現することができる。
請求項の発明は、請求項の発明に従属し、風オブジェクト移動ステップは、動作状態検出ステップによって検出された操作装置の動きの変化に応じた速度で、風オブジェクトを移動させる。
請求項の発明では、風オブジェクト移動ステップでは、操作装置の動きの変化に応じた速度が算出され(S13)、当該速度で風オブジェクトが移動される。たとえば、風オブジェクトの初速度が、操作装置による指示位置の変化量に応じて決められる。したがって、操作装置の動作状態に応じた速度で風オブジェクトを移動させることができる。たとえば、操作装置を振る操作の速さに応じて風オブジェクトの速度を変化させることができる。
第2の発明(請求項9の発明)は、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するコンピュータのオブジェクト制御プログラムである。このオブジェクト制御プログラムは、コンピュータのプロセッサに、風オブジェクト生成ステップ、風オブジェクト移動ステップ、当り判定ステップ、および可動オブジェクト制御ステップを実行させる。風オブジェクト生成ステップは、操作装置からの操作データに応じて仮想空間に風オブジェクトを生成する。風オブジェクト移動ステップは、風オブジェクトを移動させる。当り判定ステップは、風オブジェクトと可動オブジェクトとの当りを判定する。可動オブジェクト制御ステップは、当り判定ステップによって当りが生じたと判定されたとき、可動オブジェクトを動かす。
また、可動オブジェクトおよび風オブジェクトは、それぞれ中心座標および所定長の径を有する球として形成されており、当り判定ステップは、球としての可動オブジェクトと球としての風オブジェクトとの当りを判定する。オブジェクト制御プログラムは、コンピュータのプロセッサに、距離算出ステップをさらに実行させる。距離算出ステップは、当り判定ステップによって当りが生じたと判定されたとき、可動オブジェクトの中心座標と風オブジェクトの中心座標との距離を算出する、可動オブジェクト制御ステップは、距離算出ステップによって算出された距離に応じて可動オブジェクトの動作状態を変化させる。
の発明(請求項10の発明)は、自身の動きを検出するための動き検出手段を有し、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するオブジェクト制御装置である。このオブジェクト制御装置は、動作状態検出手段、風オブジェクト生成手段、風オブジェクト移動手段、当り判定手段、および可動オブジェクト制御手段を備える。動作状態検出手段は、操作装置の動きに基づいて操作装置の動作状態を検出する。風オブジェクト生成手段は、動作状態が所定の状態であるとき、想空間に風オブジェクトを生成する。風オブジェクト移動手段は、風オブジェクトを移動させる。当り判定手段は、風オブジェクトと可動オブジェクトとの当りを判定する。可動オブジェクト制御手段は、当り判定手段によって当りが生じたと判定されたとき、可動オブジェクトを動かす。
第4の発明(請求項11の発明)は、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するオブジェクト制御装置である。このオブジェクト制御装置である。このコンピュータは、風オブジェクト生成手段、風オブジェクト移動手段、当り判定手段、および可動オブジェクト制御手段を備える。風オブジェクト生成手段は、操作装置からの操作データに応じて仮想空間に風オブジェクトを生成する。風オブジェクト移動手段は、風オブジェクトを移動させる。当り判定手段は、風オブジェクトと可動オブジェクトとの当りを判定する。可動オブジェクト制御手段は、当り判定手段によって当りが生じたと判定されたとき、可動オブジェクトを動かす。
また、可動オブジェクトおよび風オブジェクトは、それぞれ中心座標および所定長の径を有する球として形成されており、当り判定手段は、球としての可動オブジェクトと球としての風オブジェクトとの当りを判定する。コンピュータは、距離算出手段をさらに備える。距離算出手段は、当り判定手段によって当りが生じたと判定されたとき、可動オブジェクトの中心座標と風オブジェクトの中心座標との距離を算出する、可動オブジェクト制御手段は、距離算出手段によって算出された距離に応じて可動オブジェクトの動作状態を変化させる。
第5の発明(請求項12の発明)は、自身の動きを検出するための動き検出手段を有し、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するオブジェクト制御システムである。このオブジェクト制御システムは、動作状態検出手段、風オブジェクト生成手段、風オブジェクト移動手段、当り判定手段、および可動オブジェクト制御手段を備える。動作状態検出手段は、操作装置の動きに基づいて操作装置の動作状態を検出する。風オブジェクト生成手段は、動作状態が所定の状態であるとき、仮想空間に風オブジェクトを生成する。風オブジェクト移動手段は、風オブジェクトを移動させる。当り判定手段は、風オブジェクトと可動オブジェクトとの当りを判定する。可動オブジェクト制御手段は、当り判定手段によって当りが生じたと判定されたとき、可動オブジェクトを動かす。
第6の発明(請求項13の発明)は、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するオブジェクト制御システムである。このオブジェクト制御システムは、風オブジェクト生成手段、風オブジェクト移動手段、当り判定手段、および可動オブジェクト制御手段を備える。風オブジェクト生成手段は、操作装置からの操作データに応じて仮想空間に風オブジェクトを生成する。風オブジェクト移動手段は、風オブジェクトを移動させる。当り判定手段は、風オブジェクトと可動オブジェクトとの当りを判定する。可動オブジェクト制御手段は、当り判定手段によって当りが生じたと判定されたとき、可動オブジェクトを動かす。
また、可動オブジェクトおよび風オブジェクトは、それぞれ中心座標および所定長の径を有する球として形成されており、当り判定手段は、球としての可動オブジェクトと球としての風オブジェクトとの当りを判定する。オブジェクト制御システムは、距離算出手段をさらに備える。距離算出手段は、当り判定手段によって当りが生じたと判定されたとき、可動オブジェクトの中心座標と風オブジェクトの中心座標との距離を算出する、可動オブジェクト制御手段は、距離算出手段によって算出された距離に応じて可動オブジェクトの動作状態を変化させる。
第7の発明(請求項14の発明)は、自身の動きを検出するための動き検出手段を有し、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するコンピュータのオブジェクト制御方法であって、コンピュータは(a)操作装置の動きに基づいて操作装置の動作状態を検出し、(b)動作状態が所定の状態であるとき、仮想空間に風オブジェクトを生成し、(c)風オブジェクトを移動させ、(d)風オブジェクトと可動オブジェクトとの当りを判定し、そして(e)ステップ(d)において当りが生じたと判定したとき、可動オブジェクトを動かす、オブジェクト制御方法である。
第8の発明(請求項15の発明)は、操作者によって操作される操作装置を備え、中心座標および所定長の径を有する球として形成され、仮想空間内に配置される可動オブジェクトを表示装置に表示するコンピュータのオブジェクト制御方法であって、コンピュータは、(a)操作装置からの操作データに応じて仮想空間に中心座標および所定長の径を有する球として形成される風オブジェクトを生成し、(b)風オブジェクトを移動させ、(c)風オブジェクトと可動オブジェクトとの当りを判定し、(d)ステップ(c)において当りが生じたと判定したとき、可動オブジェクトの中心座標と風オブジェクトの中心座標との距離を算出し、そして(e)ステップ(c)において当りが生じたと判定したとき、ステップ(d)において算出した距離に応じて可動オブジェクトの動作状態を変化させる、オブジェクト制御方法である。
第2ないし第8の発明においても、第1の発明と同様な効果を奏する。
この発明によれば、プレイヤの操作に応じて生成される風をオブジェクトを用いて表現し、この風オブジェクトとの当りによって仮想ゲーム空間内の可動オブジェクトを動作させるようにしたので、プレイヤの操作に応じて生成される風を、簡単な処理でかつ少ないメモリ容量で表現することができる。
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
図1を参照して、この実施例のゲームシステム10はゲーム装置12およびコントローラ14を含む。ゲーム装置12は、据置型ゲーム装置であり、家庭用テレビジョン受像機のようなディスプレイないしモニタ16にケーブルを介して接続される。コントローラ14は、プレイヤないしユーザによって操作される操作装置であり、ゲーム装置10に操作データを与える。
モニタ16の周辺(図1ではモニタ16の画面の上側)には、2つのマーカ18aおよび18bが所定間隔を隔てて設置される。マーカ18aおよび18bは、コントローラ14の位置を示すためのものである。マーカ18aおよび18bは、具体的には赤外LEDであり、それぞれモニタ16の前方に向かって赤外光を出力する。マーカ18aおよび18bはコントローラ14の撮像対象である。後述されるように、コントローラ14は光学式ポインティングデバイスとしても機能する。
ゲーム装置12には、接続端子を介して受信ユニット20が接続される。受信ユニット20は、コントローラ14から無線送信される操作データを受信する。具体的には、コントローラ14は、たとえばBluetooth(ブルートゥース)(登録商標)のような無線通信技術を用いて、受信ユニット20が接続されたゲーム装置12へ操作データを送信する。
また、ゲーム装置12には、当該ゲーム装置12に対して交換可能に用いられる情報記憶媒体の一例である光ディスク22が脱着される。ゲーム装置12の上部主面には、当該ゲーム装置12の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置12上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク22の脱着が可能となる。また、ゲーム装置12には、外部メモリカード24が必要に応じて着脱自在に装着される。当該メモリカード24に搭載されるフラッシュメモリ等にはセーブデータ等が記憶される。
ゲーム装置12は、光ディスク22に記憶されたゲームプログラムを実行することによって、その結果をゲーム画像としてモニタ16に表示する。なお、ゲーム装置12は、外部メモリカード24に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、当該ゲーム画像をモニタ16に表示することもできる。また、モニタ16に備えられるスピーカ26(図2参照)からはゲームサウンドが出力される。そして、プレイヤは、モニタ16に表示されたゲーム画像を見ながら、コントローラ14を操作することによって、仮想ゲームをプレイする。
図2にはゲーム装置12の電気的構成の一例が示される。ゲーム装置12は、各種プログラムを実行するたとえばリスク(RISC)CPU(セントラルプロセッシングユニット)28を含む。CPU28は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ30等のメモリの初期化等を行った後、光ディスク22に記憶されているゲームプログラムおよびデータをロードし、当該ゲームプログラムに従ってゲーム処理を行う。
CPU28には、メモリコントローラ32を介して、GPU(Graphics Processing Unit)34、メインメモリ30、DSP(Digital Signal Processor)36、およびARAM(Audio RAM)38が接続される。また、メモリコントローラ32には、所定のバスを介して、コントローラI/F(インターフェース)40、ビデオI/F42、外部メモリI/F44、オーディオI/F46、およびディスクI/F48が接続され、それぞれ受信ユニット20、モニタ16、外部メモリカード24、スピーカ26、およびディスクドライブ50が接続されている。
GPU34は、CPU28の命令に従って画像処理を行う。GPU34は、たとえば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU34は、図示しない画像処理専用のメモリやメインメモリ30の一部の記憶領域を用いて画像処理を行う。GPU34は、表示すべきゲーム画像データやムービー映像を生成し、適宜メモリコントローラ32およびビデオI/F42を介してモニタ16に出力する。
メインメモリ30は、CPU28によって使用される記憶領域であり、CPU28の処理に必要なゲームプログラムおよびデータを適宜記憶する。たとえば、メインメモリ30は、CPU28によって光ディスク22から読み出されたゲームプログラムや各種データ等を記憶する。
DSP36はサウンドプロセサとして機能し、DSP36にはサウンドデータ等を記憶するためのARAM38が接続される。ARAM38は、DSP36が所定の処理(たとえば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP36は、ARAM38に記憶されたサウンドデータを読み出し、当該データに基づいてメモリコントローラ32およびオーディオI/F46を介してモニタ16に備えられるスピーカ26からに当該サウンドを出力させる。
メモリコントローラ32は、データ転送を統括的に制御し、メモリコントローラ32には上述した各種I/Fが接続される。コントローラI/F40は、たとえば4つのコントローラI/Fで構成され、それらが有するコネクタを介して外部機器とゲーム装置12とを通信可能に接続する。たとえば、受信ユニット20は、上記コネクタと嵌合し、コントローラI/F40を介してゲーム装置12と接続される。上述したように受信ユニット20は、コントローラ14からの操作データを受信し、コントローラI/F40を介して当該操作データをCPU28へ出力する。なお、他の実施例では、ゲーム装置12には、受信ユニット20に代えて、コントローラ14から送信されてくる操作データを受信する受信モジュールがその内部に設けられてよい。この場合、受信モジュールが受信した送信データは、所定のバスを介してCPU28に出力される。
ビデオI/F42にはモニタ16が接続され、モニタ16にはビデオI/F42からの画像信号によってゲーム画像が表示される。外部メモリI/F44には外部メモリカード24が接続され、CPU28は、メモリコントローラ32を介して外部メモリカード24に設けられたフラッシュメモリ等にアクセスする。
オーディオI/F46にはモニタ16に内蔵されるスピーカ26が接続される。オーディオI/F46は、DSP36によってARAM38から読み出されたサウンドデータやディスクドライブ50から直接出力されるサウンドデータに対応するオーディオ信号をスピーカ26に与え、スピーカ26から当該サウンドが出力される。
ディスクI/F48には、ディスクドライブ50が接続される。ディスクドライブ50は、所定の読み出し位置に配置された光ディスク22に記憶されているデータを読み出す。読み出されたデータはディスクI/F48およびメモリコントローラ32等を介してメインメモリ30に書き込まれ、あるいは、オーディオI/F46に出力される。
図3および図4にはコントローラ14の外観の一例が示される。図3(A)は、コントローラ14の上面後方から見た斜視図であり、図3(B)は、コントローラ14を下面後方から見た斜視図である。図4は、コントローラ14を前方から見た正面図である。
図3および図4を参照して、コントローラ14は、たとえばプラスチック成型によって形成されたハウジング52を有している。ハウジング52は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ14を用いて、それに設けられたボタンを押下するゲーム操作を行うことと、コントローラ14自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。たとえば、或るゲームでは、プレイヤは、長手方向を軸としてコントローラ14を回転させることによって、操作対象に移動動作を行わせることができる。また、プレイヤは、コントローラ14によって指し示される画面上の位置を変える操作によって、ゲーム空間に登場するオブジェクトを移動させることができる。ここで、「コントローラ14によって指し示される画面上の位置」とは、理想的には、コントローラ14の前端部から上記長手方向に延ばした直線とモニタ16の画面とが交わる位置であるが、厳密に当該位置である必要はない。当該位置の周辺の位置をゲーム装置12によって算出することができればよい。以下では、コントローラ14によって指し示される(画面上の)位置を「指示位置」と呼ぶ。また、コントローラ14(ハウジング52)の長手方向を、「コントローラ14の指示方向」と呼ぶことがある。
ハウジング52には、複数の操作ボタンが設けられる。ハウジング52の上面には、十字キー54a、Xボタン54b、Yボタン54c、Aボタン54d、セレクトスイッチ54e、メニュースイッチ54f、およびスタートスイッチ54gが設けられる。一方、ハウジング52の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン54iが設けられる。これらの各ボタン(スイッチ)54は、ゲーム装置12が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。また、ハウジング52の上面には、遠隔からゲーム装置12本体の電源をオン/オフするための電源スイッチ54hが設けられる。
また、コントローラ14は撮像情報演算部56(図5参照)を有しており、図4に示すように、ハウジング52前面には撮像情報演算部56の光入射口56aが設けられる。一方、ハウジング52の後面にはコネクタ58が設けられている。コネクタ58は、たとえば32ピンのエッジコネクタであり、コントローラ14に他の機器を接続するために利用される。また、ハウジング52上面の後面側には複数のLED60が設けられる。ここで、コントローラ14には、他のコントローラ14と区別するためにコントローラ種別(番号)が付与される。コントローラ14からゲーム装置12へ操作データを送信する際、当該コントローラ14に現在設定されているコントローラ種別に対応する1つのLED60が点灯する。
図5にはコントローラ14の電気的構成が示される。コントローラ14は、操作部54(各操作ボタン54a−54h)および撮像情報演算部56の他に、その内部に通信部62および加速度センサ64を備えている。
撮像情報演算部56は、撮像手段が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムである。撮像情報演算部56は、たとえば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ14の動きでも追跡して解析することができる。
具体的には、撮像情報演算部56は、赤外線フィルタ66、レンズ68、撮像素子70および画像処理回路72を含んでいる。赤外線フィルタ66は、コントローラ14の前方の開口56aからの入射光から赤外線のみを通過させる。ここで、モニタ16の表示画面近傍に配置されるマーカ18aおよび18bは、モニタ16の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ66を設けることによってマーカ18aおよび18bの画像をより正確に撮像することができる。レンズ68は、赤外線フィルタ66を透過した赤外線を集光して撮像素子70へ出射する。撮像素子70は、たとえばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ68が集光した赤外線を撮像する。したがって、撮像素子70は、赤外線フィルタ66を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子70によって撮像された画像を撮像画像と呼ぶ。撮像素子70によって生成された画像データは、画像処理回路72で処理される。画像処理回路72は、撮像画像内における撮像対象(マーカ18aおよび18b)の位置を算出する。画像処理回路72は、各マーカ18aおよび18bの撮像画像内における位置を示す各座標値を撮像データとして通信部62へ出力する。
加速度センサ64は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。たとえば、2軸または3軸の加速度センサの場合には、加速度センサの検出部に加わっている加速度を、各軸に沿った直線成分の加速度としてそれぞれ検出する。具体的には、この実施例では、3軸加速度センサが適用され、コントローラ14の上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸でそれぞれ加速度を検知する。また、この加速度センサ64の各軸ごとに検出される加速度に所定の演算処理を施すことによって、コントローラ14の傾きや回転を算出することが可能である。つまり、ゲーム装置12は、上記撮像画像からコントローラ14のZ軸周りの回転角度を算出することが可能であるだけでなく、加速度センサ64によってもコントローラ14の回転角度を算出することが可能である。たとえば、加速度センサ64が静止した状態においては、常に重力加速度が加わっており、この重力加速度に対する各軸の傾きに応じた加速度が各軸ごとに検出される。具体的には、加速度センサ64が水平状態で静止しているとき、加速度センサのY軸に1Gの重力加速度が加わり、他の軸の重力加速度はほぼ0となる。次に、加速度センサ64の姿勢が水平状態より傾くと、加速度センサ64の各軸方向と重力方向との角度に応じて、重力加速度が加速度センサ64の各軸に分散され、このとき、加速度センサ64の各軸の加速度値が検出される。このような各軸ごとの加速度値に演算を加えることによって、重力方向に対する加速度センサ64の姿勢を算出することができる。
なお、加速度センサ64としては、必要な操作信号の種類によっては、上下方向、左右方向および前後方向のうちいずれか2つの組合せの2軸でそれぞれ加速度を検出する2軸加速度センサが用いられてもかまわない。
加速度センサ64が検出した加速度を示すデータは、通信部62へ出力される。なお、加速度センサ64は、典型的には静電容量式の加速度センサが用いられ得る。
通信部62は、マイクロコンピュータ(Micro Computer:マイコン)74、メモリ76、無線モジュール78およびアンテナ80を含む。マイコン74は、処理の際にメモリ76を記憶領域として用いながら、取得したデータを無線送信する無線モジュール78を制御する。
操作部54、加速度センサ64および撮像情報演算部56からマイコン74へ出力されたデータは、一時的にメモリ76に格納される。ここで、通信部62から受信ユニット20への無線送信は所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。マイコン74は、受信ユニット20への送信タイミングが到来すると、メモリ62に格納されているデータを操作データとして無線モジュール78へ出力する。無線モジュール78は、たとえばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ80から放射する。つまり、操作データは、無線モジュール78で微弱電波信号に変調されてコントローラ14から送信される。微弱電波信号はゲーム装置12側の受信ユニット20で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置12は操作データを取得することができる。ゲーム装置12のCPU28は、コントローラ14から取得した操作データに基づいてゲーム処理を行う。
なお、図3および図4に示したコントローラ14の形状や、各操作スイッチ54の形状、数および設置位置等は単なる一例に過ぎず、他の形状、数および設置位置に適宜変更され得る。また、コントローラ14における撮像情報演算部56の位置(撮像情報演算部56の光入射口56a)は、ハウジング52の前面でなくてもよく、ハウジング52の外部から光を取り入れることができれば他の面に設けられてもかまわない。このとき、上記「コントローラ14の指示方向」は、光入射口56aに垂直な方向となる。
上記コントローラ14を用いることによって、プレイヤは、各操作スイッチを押下する従来の一般的なゲーム操作に加えて、コントローラ14自身の位置を動かしたり、コントローラ14を回転させたりするというゲーム操作を行うことができる。以下、上記コントローラ14を用いたゲーム操作について説明する。
図6には、コントローラ14を用いてゲーム操作をするときの状態を概説する図解図が示される。図6に示すように、ゲームシステム10でコントローラ14を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ14を把持する。ここで、マーカ18aおよび18bは、モニタ16の画面の横方向と平行に配置されている。プレイヤは、コントローラ14の前面(撮像情報演算部56が撮像する光の入射口側)がマーカ18aおよび18bの方向を向く状態でコントローラ14を把持する。この状態で、プレイヤは、コントローラ14が指し示す画面上の位置を変更したり、コントローラ14と各マーカ18aおよび18bとの距離を変更したりすることによってゲーム操作を行う。
ただし、各マーカ18aおよび18bは所定の視野角の範囲で赤外光を放射し、また、コントローラ14の撮像情報演算部56の撮像素子70は、当該コントローラ14の視線方向(図3のZ軸方向)を中心とした所定の視野角の範囲で入射する光を受光することができる。したがって、プレイヤは、撮像素子70が2つのマーカ18aおよび18bからの赤外光を受光することが可能な位置および向きとなるように、コントローラ14を把持する。具体的には、撮像素子70の視野角の中に少なくとも一方のマーカ18aまたは18bが存在し、かつ、マーカ18aおよび18bの少なくとも一方の視野角の中にコントローラ14が存在する状態となるように、プレイヤはコントローラ14を把持する。この状態にあるとき、コントローラ14は、マーカ18aおよび/または18bを検知することができる。プレイヤは、この状態を満たす範囲でコントローラ14の位置および向きを変化させることによってゲーム操作を行うことができる。なお、コントローラ14の位置および向きがこの範囲外となった場合、コントローラ14による位置指示に基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
操作可能範囲内でコントローラ14が把持される場合、撮像情報演算部56によって各マーカ18aおよび18bの画像が撮像される。すなわち、撮像素子70によって得られる撮像画像には、撮像対象である各マーカ18aおよび18bの画像(対象画像)が含まれる。対象画像を含む撮像画像の画像データを用いて、画像処理回路72は、各マーカ18aおよび18bの撮像画像における位置を表す座標(マーカ座標)を算出する。
撮像画像の画像データにおいて対象画像は所定の大きさの高輝度部分として現れる。したがって、画像処理回路72は、高輝度部分を対象画像の候補として検出し、検出された高輝度部分の大きさが所定の大きさの範囲内であるか否かを判定する。そして、高輝度部分が所定範囲内の大きさである場合、当該高輝度部分は対象画像を表すと判定され、高輝度部分が所定範囲内の大きさでない場合、当該高輝度部分は対象画像以外の画像を表すと判定される。
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路72は当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子70の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子70によって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをy軸正方向とし、右向きをx軸正方向とする座標系(xy座標系)で表現されるものとする。また、対象画像が正しく検出される場合には上記判定処理によって2つの高輝度部分が対象画像として判定されるので、上記算出処理によって2箇所のマーカ座標が算出される。画像処理回路72は、上記算出処理によって算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータは、上述したように、マイコン74によって操作データとしてゲーム装置12に送信される。
ゲーム装置12は、受信した操作データに含まれる上記マーカ座標のデータを用いて、コントローラ14による指示位置を算出できる。具体的には、2つのマーカ座標の中点の位置が、コントローラ14の向いている位置すなわち指示位置として採用される。
また、ゲーム装置12は、コントローラ14から各マーカ18aおよび18bまでの距離を算出することができる。具体的には、撮像画像における対象画像間の距離がコントローラ14とマーカ18との距離に応じて変化するので、2つのマーカ座標間の距離の算出によって、ゲーム装置12はコントローラ14とマーカ18aおよび18bとの間の距離を把握できる。
また、ゲーム装置12は、コントローラ14のZ軸周りの捻りすなわち回転も把握できる。具体的には、コントローラ14がZ軸周りに回転されると撮像画像内におけるマーカ画像も回転するので、ゲーム装置12は2つのマーカ座標を結ぶベクトルの角度の算出によって、コントローラ14のZ軸周りの回転を把握できる。なお、コントローラ14がZ軸周りに回転した状態である場合、撮像画像内の2つのマーカ座標の位置も回転しているので、上述のような中点である指示位置はコントローラ14のZ軸周りの回転の度合いに応じて補正されてよい。
なお、検出されたマーカ座標が1つであった場合には、コントローラ14による指示位置を算出できない。しかし、前回のフレームで2つのマーカ座標を検出できていれば、前回のマーカ座標に基づいて今回のもう1つのマーカ座標を推定するようにしてもよい。あるいは、推定を行わず、2つのマーカ座標が検出された場合のみ、指示位置を算出するようにしてもよい。
このゲームシステム10では、プレイヤによるコントローラ14の操作に応じて、仮想ゲーム空間内に風が発生される。具体的には、プレイヤは、コントローラ14を所定の状態に動かすことによって、仮想ゲーム空間に風を生じさせることができる。たとえば、プレイヤは、コントローラ14を振るように動かすことによって、風を起こすことができる。仮想ゲーム空間には、図6の表示画面から分かるように、可動オブジェクトとしての風車オブジェクト90が配置されている。可動オブジェクト90は、プレイヤ操作に応じて発生した風を受けて動作する。具体的には、風車オブジェクト90の回転状態が、風の影響を受けて変化する。
この実施例では、プレイヤ操作に応じて生成される風は、オブジェクトを用いて表現される。つまり、プレイヤによるコントローラ14に対する操作に応じて、仮想ゲーム空間内に風オブジェクト92(図8参照)が生成されて移動される。風オブジェクト92を生成および移動させることによって仮想ゲーム空間の任意の位置で風の影響を与えることが可能になる。具体的には、仮想ゲーム空間に配置された風車オブジェクト90が風の影響を受けるか否かは、風オブジェクト92と風車オブジェクト90との当り判定によって、簡単に判定することができる。このように、風オブジェクト92を使用するようにしたので、当該オブジェクトデータを準備しておくだけで、つまり、少ないデータ量で仮想ゲーム空間の任意の位置に風を導入することができるし、仮想ゲーム空間内の他のオブジェクトに風の影響を簡単な処理で与えることができる。
図7にはメモリマップの一例が示される。メインメモリ30はゲームプログラム記憶領域100およびデータ記憶領域102を含む。なお、図7にはメモリマップの一部が示されており、ゲーム進行に必要な他のプログラムおよびデータも記憶される。
ゲームプログラム記憶領域100の記憶領域104には操作データ取得プログラムが記憶されている。このプログラムによって、コントローラ14からの操作データが、受信ユニット20およびコントローラI/F40を介してメインメモリ30に取得される。上述のように、コントローラ14は、ゲーム装置12における1フレーム(たとえば1/60秒)よりも短い周期で操作データを送信してくる。また、コントローラ14の撮像情報演算部56および加速度センサ64のサンプリング周期は、ゲーム装置12における1フレームよりも短い周期(たとえば1/200秒)に設定されており、コントローラ14の1回の送信データには複数の検出タイミングにおけるマーカ座標および加速度値が含まれる。したがって、この実施例では、ゲーム装置12では1フレームに複数個の操作情報(マーカ座標および加速度値等)を含む操作データを取得することができる。CPU28は、複数個の操作情報を必要に応じて利用してゲーム処理を実行することができる。
記憶領域106には、風オブジェクト生成プログラムが記憶されている。このプログラムによって、仮想ゲーム空間に風オブジェクト92が生成される。この実施例では、コントローラ14の位置および姿勢の少なくとも一方に基づく動きに基づいて、当該コントローラ14の動作状態が所定の状態であると判定されるときに、風オブジェクト92は生成される。コントローラ14の動作状態が所定の状態であることは、この実施例では、プレイヤによってコントローラ14を振る操作が行われたことを意味する。また、コントローラ14を振る操作であるか否かは、この実施例では、コントローラ14による指示位置に基づいて判定される。具体的には、1フレームの間に指示位置の変化量が所定の閾値を超えたと判定される場合には、コントローラ14を振る操作が行われたと判断される。なお、後述される別の実施例は、コントローラ14によって検出された加速度に基づいて振る操作であるか否かが判定される。コントローラ14からの操作データ(指示位置および加速度の少なくとも一方を含む)を用いて、コントローラ14が所定の状態に動作されたか否かを判定することができるので、コントローラ14を振るといったようなこれまでにない操作で仮想ゲーム空間内に風を生じさせるという斬新なゲームが実現される。
指示位置に基づいた風オブジェクトの生成を説明するための図解図が図8に示される。仮想ゲーム空間は3次元であり、仮想カメラ(視点)の視野のうちニアクリップ面とファークリップ面との間の空間が投影面上に投影され、ゲーム画像としてレンダリングされる。そこで、この実施例では、風オブジェクト92の生成位置は、ニアクリップ面上であるように規定されている。なお、この実施例では、ニアクリップ面が投影面であるが、投影面はニアクリップ面に限られない。
具体的には、現フレームと前フレームのコントローラ14の指示位置(2次元座標)のそれぞれをニアクリップ面に投影して、仮想ゲーム空間において各指示位置に対応する3次元座標を算出する。つまり、コントローラ14によるモニタ16の画面に対する指示位置をニアクリップ面上の対応する位置に変換する。そして、現フレームの座標と前フレームの座標との差(変化量)が所定の閾値より大きい場合には、振る操作が行われたと判定して、風オブジェクト92の生成位置を算出する。具体的には、座標の変化量を一定間隔で分割し、各分割位置を生成位置として採用する。したがって、この実施例では、振る操作が素早いほど多くの風オブジェクト92が生成される。
このようにして算出される仮想ゲーム空間内の各位置に、風オブジェクト92が生成される。風オブジェクト92は、複数のポリゴンで構成されたオブジェクトであり、後述するように球形である。また、風オブジェクト92は透明なポリゴンで形成されており、仮想ゲーム空間に生成されてもゲーム画面上には表示されない。
また、風オブジェクト92の射出方向すなわち移動方向としては、この実施例では、視点と各生成位置とを結んで得られる各ベクトルの方向が採用される。つまり、風オブジェクト92は、画面手前から奥行き方向へ進む。
さらに、風オブジェクト92の初速度が、現フレームと前フレームの座標の変化量の大きさすなわちコントローラ14を振る速度に基づいて算出される。座標変化量が大きいほど、つまり、振る操作が素早いほど、初速度は大きい値に設定される。あるいは、初速度は、Z軸方向の加速度の値に基づいて決められてもよい。または、風オブジェクト92の移動速度は、所定値に設定されてもよい。
図7に戻って、記憶領域108には、風オブジェクト移動プログラムが記憶されている。このプログラムによって、風オブジェクト92の移動が制御される。風オブジェクト92は、生成位置から上述の射出方向および初速度で移動する。なお、移動速度はこの実施例では一定であるが、別の実施例では仮想ゲーム空間に設定された条件に応じて加減されてもよい。
記憶領域110には、当り判定プログラムが記憶されている。このプログラムによって、風オブジェクト92と風車オブジェクト90とが衝突したか否かが判定される。たとえば、風オブジェクト92の中心座標と風車オブジェクト90の中心座標との間の距離が、風オブジェクト92の半径rと風車オブジェクト90の半径Rとの間の距離以下になったか否かが判定される。なお、風車オブジェクト90は、視点側に膨らんだ半球形を有するオブジェクトである。風車オブジェクト90は、たとえば風車の実体を示す十字形の部分にのみテクスチャがマッピングされることでゲーム画像では十字形の風車として表示される。風をオブジェクトで表現するようにしたので、オブジェクト同士の当り判定という簡単な処理で風の影響の有無を判別できる。
記憶領域112には、風車オブジェクト制御プログラムが記憶されている。このプログラムによって風車オブジェクト90の動作が制御される。この実施例では、各風車オブジェクト90は、風を受けることによって、つまり、風オブジェクト92との衝突によって回転する。具体的には、図9に示すように、風オブジェクト92の半径がrであり、風車オブジェクト90の半径がRであり、風オブジェクト92と風車オブジェクト90の中心間距離がdであるとすると、次の数1で算出される速度Vaが風車オブジェクト90の現在の回転速度Vに加算される。
[数1]
Va=Vp×(1−d/(r+R))
ここで、Vpは所定の定数である。両オブジェクトが離れているほど、加えられる回転速度Vaは小さくなる。
このように、当り判定で当りが生じたと判定されるときには、両者の中心間距離に応じて、風車オブジェクト90の動作状態を変化させるようにした。また、風車オブジェクト90と風オブジェクト92との位置関係によって風車オブジェクト90に与えられる風の影響度が変わるといった表現を行える。このような表現は、風車オブジェクト90と風オブジェクト92を球形に形成しているため、より簡単な処理で実現される。
図7に戻って、記憶領域114には画像表示プログラムが記憶されている。このプログラムによって、風車オブジェクト90を含む仮想ゲーム空間の場面を示す3次元ゲーム画像が生成されて、当該ゲーム画像がモニタ16に表示される。
データ記憶領域102の記憶領域116には、光ディスク22から読み出されたゲームマップデータおよびオブジェクトデータ等が記憶される。ゲームマップデータは仮想ゲーム空間の配置を示す。オブジェクトデータは、仮想ゲーム空間に登場する風車オブジェクト90等のオブジェクトを示すデータや、プレイヤ操作に応じて生成される風オブジェクト92を示すデータを含む。
記憶領域118は操作データバッファであり、コントローラ14から送信される操作データが記憶される。上述のように、ゲーム装置12における1フレームの間に、コントローラ14から複数個の操作情報を含む操作データを少なくとも1回受信するので、受信された操作データが順次この記憶領域118に蓄積される。具体的には、操作データは、撮像情報演算部56によって検出されたマーカ座標を示すマーカ座標データ、および加速度センサ64で検出されたX、Y、Z軸の加速度値を示す加速度データを含む。
記憶領域120には指示位置が記憶される。上述のように、指示位置はコントローラ14で指し示される画面上の位置であり、2次元座標で示される。取得した2つのマーカ座標(マーカ18aと18b)の中点の座標を算出し、これを指示位置として記憶する。なお、上述のように、1フレームあたり複数個のマーカ座標が取得されるので、たとえば複数の中点座標の平均を取ることで算出される座標を指示位置として採用してもよい。
記憶領域122には指示位置履歴が記憶される。所定数のフレーム分の指示位置が記憶される。また、指示位置は仮想ゲーム空間における対応する位置に変換された3次元座標である。つまり、上述の図8で示したように、2次元座標の指示位置をニアクリップ面上に投影した位置の3次元座標が記憶される。この指示位置履歴データに基づいて変化量が算出される。
記憶領域124には加速度履歴が記憶される。所定数のフレーム分の加速度値が記憶される。なお、上述のように、1フレームで複数個の加速度値が取得されるので、加速度値も、指示位置と同様に、複数個の値の平均値をとるようにしてよい。あるいは、最大値もしくは最小値を採用してもよい。
記憶領域126には風オブジェクト制御データが記憶される。生成された複数の風オブジェクト92のそれぞれ(第1風オブジェクト、第2風オブジェクト、…)に関して、位置、射出方向および初速度など情報が記憶される。位置情報の初期座標は、上述の図8で示したように、風オブジェクト生成プログラムによって算出される各風オブジェクト92の生成位置である。その後、各風オブジェクト92の位置は、風オブジェクト移動プログラムによって射出方向および初速度に基づいて算出された移動後の座標に、フレームごとに更新される。
記憶領域128には風車オブジェクト制御データが記憶される。仮想ゲーム空間に配置される複数の風車オブジェクト90のそれぞれ(第1風車オブジェクト、第2風車オブジェクト、…)に関して、位置(中心座標)および回転速度などの情報が記憶される。各風車オブジェクト90の位置はこの実施例では所定の座標に固定されている。また、回転速度の初期値は適宜に設定されるが、たとえば、0(すなわち無回転状態)であってよい。当り判定プログラムによって風オブジェクト92との衝突が判定されたときには、回転速度が更新される。現在の回転速度に、上述の図9および数1に示したように、風車オブジェクト制御プログラムによって算出された値Vaが加算されて、新たな回転速度が算出される。なお、風車オブジェクト90が回転している場合には、たとえば一定時間ごとに回転速度から所定値だけ減算することによって、回転が徐々に止まるようにされてよい。
図10にゲーム装置10のゲーム動作の一例が示される。ゲーム処理を開始すると、CPU28は、ステップS1で操作データバッファ118からマーカ座標を読み出して指示位置座標(2次元座標)を算出し、当該指示位置を示す2次元座標を指示位置記憶領域120に記憶する。
なお、図10では、プレイヤによって振る操作が行われていない場合の処理を省略しているが、その場合、ステップS1からS17が実行されず、処理はステップS19へ進む。
次に、ステップS3で、CPU28は、図8に示したように、指示位置をニアクリップ面上に投影して、3D仮想ゲーム空間の座標に変換する。算出された指示位置の3次元座標は、指示位置履歴記憶領域122に記憶される。
続いて、ステップS5で、CPU28は、指示位置履歴記憶領域122のデータに基づいて、現フレームの指示位置と前フレームの指示位置との差(座標変化量)を算出する。位置座標の差はベクトルであるので、算出したベクトルのスカラー値も算出しておく。
そして、ステップS7で、CPU28は、差が所定の閾値よりも大きいか否かを判定する。この判定は振る操作が行われたか否かの判定である。所定の閾値は、指示位置の変化が振る操作に相当すると見なせる適切な値に設定される。また、この判定によって手ぶれ程度の指示位置の変化によって風が生じるのを防止することができる。
ステップS7で“YES”の場合、つまり、コントローラ14を振る操作が行われた場合には、CPU28は、ステップS9で、差を一定間隔で分割することによって、各風オブジェクト92の生成位置を算出する。図8に示したように、前フレームの指示位置から現フレームの指示位置までを結ぶ線分を一定間隔で分割することによって得られた各位置の座標が算出される。したがって、コントローラ14を振る速さの程度に応じた数の風オブジェクト92を生成することができる。
ステップS11では、CPU28は、各生成位置の射出方向を算出する。各射出方向は、この実施例では、視点(仮想カメラ位置)から各生成位置までを結ぶベクトルの単位ベクトルである。
ステップS13では、CPU28は指示位置の差から初速度を算出する。上述のように、素早い振り操作が行われた場合に風の移動速度を速くするので、差(座標変化量)が大きいほど初速度の値が大きくされる。初速度の値は、座標変化量に基づいて所定の式に従って算出されてよいし、あるいは、座標変化量に対応付けられた速度が予め記憶されているテーブルから選ばれてもよい。また、別の実施例では、加速度(Z軸方向)の値に基づいて初速度を算出するようにしてよく、この場合にも、座標変化量の場合と同様に、コントローラ14を振る操作の程度に応じた速度で風オブジェクト92を移動させることができる。
ステップS15では、CPU28は風オブジェクト92を生成する。これによって、仮想ゲーム空間内の各生成位置に各風オブジェクト92が配置される。また、風オブジェクト制御データ記憶領域126には、各風オブジェクト92の位置、射出方向および初速度を示す情報が記憶される。
そして、ステップS17で、CPU28は風オブジェクト移動処理を開始する。この風オブジェクト移動処理によって、生成された各風オブジェクト92の移動が制御される。CPU28は、生成された複数の風オブジェクト92のそれぞれについて、図11に示すような風オブジェクト移動処理を実行する。風オブジェクト移動処理は、図10のメイン処理と並列的に実行される。ステップS17で各風オブジェクト92の移動処理が開始されると、処理はステップS19に進む。
図11に示すように、風オブジェクト移動処理を開始すると、CPU28は、ステップS31で風オブジェクト92を移動させる。具体的には、CPU28は、現在位置から射出方向に向けて初速度で移動させることによって、移動後の位置の座標を算出し、記憶領域126の当該風オブジェクト92の位置情報を当該座標に更新する。
次に、ステップS33で、CPU28は、移動後の位置が所定範囲外であるか否かを判定する。つまり、風オブジェクト92がゲーム画像として描画されるクリッピングエリアから出たか否かが判定される。
ステップS33で“NO”であれば、CPU28は、ステップS35で風オブジェクト92と風車オブジェクト90のいずれかが重なっているか否かを判定する。つまり、風オブジェクト92と風車オブジェクト90との当り判定を実行する。このように、この実施例では、風をオブジェクトによって表現するようにしたので、オブジェクト同士の当り判定によって、仮想ゲーム空間の可動オブジェクト90に対する風の影響の有無を判断することができる。
ステップS35で“YES”であれば、つまり、風オブジェクト92が風車オブジェクト90に衝突した場合には、CPU28は、ステップS37で、風オブジェクト92の中心座標と風車オブジェクト90の中心座標との距離dを両者の位置情報に基づいて算出する。
続くステップS39で、CPU28は、風オブジェクト92によって風車オブジェクト90に与える影響の度合いを算出する。つまり、風車オブジェクト90の回転速度に加算すべき回転速度Vaを、上述の数1に従って算出する。
そして、ステップS41で、CPU28は、衝突した風車オブジェクト90の現在の回転速度にVaを加算して、風車オブジェクト制御データ記憶領域128の当該風車オブジェクト90の回転速度の情報を更新する。これによって、風オブジェクト92と衝突した風車オブジェクト90は、更新された速度で回転されることとなる。
ステップS41を終了すると、または、ステップS35で“NO”の場合、処理はステップS31に戻る。ステップS33で“YES”と判定されるまで、この風オブジェクト移動処理の各ステップは、1フレームごとに繰り返し実行される。
そして、ステップS33で“YES”の場合、つまり、風オブジェクト92が描画される範囲の外へ移動した場合には、CPU28は、ステップS43で当該風オブジェクト92を仮想ゲーム空間から消去する。風オブジェクト制御データ記憶領域126の当該風オブジェクト92に関する情報はクリアされる。ステップS43を終了するとこの風オブジェクト移動処理を終了する。
図10の説明に戻って、ステップS7で“NO”の場合には、つまり、振る操作と認められない場合には、処理はステップS19に進む。ステップS19では、CPU28は、風車制御処理を実行する。これによって、記憶領域128の回転速度がゼロでない各風車オブジェクト90は、各回転速度に基づいて回転される。
ステップS21では、CPU28は、画面表示処理を実行する。これによって、風車オブジェクト90を含む仮想ゲーム空間の様子を示すゲーム画面が生成されて、モニタ16に表示される。風を受けて風車オブジェクト90が回転されている場合には、当該風車オブジェクト90の回転する場面を示すゲーム画面がモニタ16に表示される。
ステップS23では、CPU28はゲーム終了であるか否かを判断し、“NO”であればステップS1へ戻ってゲーム処理を繰返し、“YES”であればこのゲーム処理を終了する。
なお、上述のフロー図では、ステップS7で、指示位置の変化量が閾値より大きいという条件によって振り操作か否かを判断するようにしている。しかし、変形例では、コントローラ14の指示位置の変化量が取得される場合には、変化量の大小にかかわらず、コントローラ14の操作が行われたものと見なして、風オブジェクト92を生成するようにしてもよい。また、上述のフロー図では、ステップS5で現フレームの指示位置と前フレームの指示位置との差を算出するようにしている。しかし、変形例では、現フレームの指示位置と数フレーム前の指示位置との差を算出するようにしてもよい。あるいは、指示位置の座標変化の開始点から終了点までの差を算出するようにしてもよい。このようにすれば、より長時間の振り操作を判定することができる。
この実施例によれば、プレイヤの操作に応じて生成される風を風オブジェクト92として表現し、この風オブジェクト92との当りによって仮想ゲーム空間内の風車オブジェクト90が風の影響を受けて動作するようにした。したがって、プレイヤの操作に応じて生成される風を、オブジェクトを用いることによって簡単な処理で表現することができる。また、風オブジェクトデータを準備しておけば、仮想ゲーム空間の任意の位置における多数の風を定義したようなデータを準備する必要がないので、少ないメモリ容量でゲーム空間の任意の位置で風を表現することができる。
なお、上述の実施例では、コントローラ14を振る操作が行われたか否かをコントローラ14の指示位置情報に基づいて判定するようにしていた。しかし、他の実施例では、コントローラ14が所定の状態に動かされたか否かを、つまり、コントローラ14を振る操作が行われたか否かを、加速度情報に基づいて判定するようにしてよい。
プレイヤが画面を指すような状態で把持したコントローラ14を振ると、コントローラ14の前方(Z軸方向)に遠心力が加わる。したがって、この実施例では、所定の閾値よりも大きいZ軸方向加速度が検出されたとき、コントローラ14を振る操作が行われたと判定される。
また、コントローラ14の振られた方向を風発生条件の1つとして考慮するようにしてもよい。この実施例では、加速度情報に基づいてコントローラ14が振られた方向を判別し、所定の方向にコントローラ14が振られたことが判定されたときに風を発生させる。
さらに、加速度の大きさに応じて風オブジェクト92の生成数が設定される。コントローラ14が強くつまり素早く振られるほど、多くの風オブジェクト92が生成される。
各風オブジェクト92の生成位置の決め方は、図12に示される。まず、コントローラ14による指示位置が始点として設定される。指示位置の座標(2次元)は、上述の実施例と同様に、仮想ゲーム空間内においてニアクリップ面上の座標(3次元)に変換される。この始点も生成位置の1つである。そして、始点からコントローラ14の振り方向と逆方向に一定間隔を隔てることによって、残りの風オブジェクト92の生成位置が算出される。風オブジェクト92の生成間隔の値は適宜に設定される。
なお、この実施例では、生成位置を算出するための始点をコントローラ14の指示位置から算出するようにしている。つまり、コントローラ14によって検出される指示位置および加速度の両方に基づいて風オブジェクト92の生成を制御するようにしている。しかし、加速度情報のみに基づいて風オブジェクト92の生成を制御する場合には、始点としては、所定の座標(たとえば表示画面の中央)、あるいはランダムに決められる任意の座標が採用されてもよい。
また、各風オブジェクト92の射出方向も、上述の実施例と同様に、視点と各生成位置とを結ぶベクトルの単位ベクトルによって算出される。
この実施例のゲーム動作の一例が図13に示される。ゲーム装置12のCPU28は、ステップS61で、操作データバッファ118から加速度データを読み出して、各軸方向の加速度値を取得する。なお、上述のように、1フレームに複数個の操作情報を含む操作データが受信されるので、各軸方向の加速度値として、平均値を算出するようにしてよい。あるいは、最大値または最小値が採用されてもよい。取得した各軸方向の加速度値は加速度履歴記憶領域124に記憶される。
次に、ステップS63で、CPU28は、Z軸方向の加速度が所定の閾値よりも大きいか否かを判断する。つまり、コントローラ14を振る操作が行われたか否かを判定する。たとえば、現フレームのZ軸方向の加速度値のみに基づいて判定がなされてよい。あるいは、加速度履歴記憶領域124に記憶された所定数のフレーム分の加速度値を参照することによって、振り操作を精度良く判定できる。これによって手ぶれ等によって風が起きるのを防止できる。
ステップS63で“YES”であれば、CPU28は、ステップS65で、XおよびY軸方向の加速度から振り方向を推測する。たとえば、コントローラ14が図3に示したように基準状態(X軸方向が左右方向、Y軸方向が上下方向、Z軸方向が前後方向である状態)でプレイヤに所持されている場合、X軸方向の加速度がゼロでありかつY軸方向に重力加速度以外の加速度が検出されるとき、振り方向は上下方向であると推定される。また、X軸方向の加速度が検出されかつY軸方向の加速度がゼロ(すなわち重力加速度のみ)であるとき、振り方向は左右方向であると推定される。また、コントローラ14が図3に示したような基準状態以外の状態(例えば、X軸方向に重力加速度が検出されるように90度傾けた状態)でプレイヤに所持されている場合は、各軸毎に現フレームの加速度値から静止している状態(重力加速度のみが検出されている状態)の時のフレームの加速度値を減算すればよい。このようにすれば、重力加速度を除いた加速度のみを検出することができ、例えばコントローラ14を90度傾けた状態で振る操作が行われた場合でも、重力加速度の影響を受けることなく振り方向を正確に推測することができる。
ステップS67では、CPU28は、振り方向が所定方向(この実施例ではY軸方向、すなわちコントローラ14が基準状態のとき上下方向)であるか否かを判定する。このように、この実施例では、コントローラ14が所定方向に振られた場合だけ風を発生させるようにしている。つまり、所定方向に振られたときに風を発生させることが可能であるが、他の方向に振られても風を発生させることが不可能である。したがって、コントローラ14を擬似的に団扇等に見立てたような操作で風を発生させるゲームを実現することができる。この実施例では、振り方向がY軸方向であるときに風を発生させるので、平面がXZ面となるようにして所持された団扇を振っているような操作感をプレイヤに与えることができる。
ステップS67で“YES”であれば、CPU28は、ステップS69で、上述の図10のステップS3と同様にして、コントローラ14の指示位置の座標をニアクリップ面に投影して、3D仮想ゲーム空間の座標に変換する。
ステップS71では、CPU28は、加速度の大きさに応じて風オブジェクト92の生成数を設定する。たとえば、コントローラ14が強く振られるほど、つまり、Z軸の加速度が大きいほど、生成数は多くされる。なお、図13では省略されるが、加速度の大きさに応じて初速度を算出してもよい。
続いて、ステップS73では、CPU28は、上述の図12に示したように、指示位置を始点とし振り方向の逆方向へ一定間隔を隔てることによって、設定された数の生成位置を算出する。
ステップS75では、CPU28は、上述の実施例の図10のステップS11と同様にして、各生成位置の射出方向を算出する。そして、CPU28は、ステップS77で、上述のステップS15と同様にして風オブジェクトを生成し、ステップS79で風オブジェクト移動処理を開始する。各風オブジェクト92ごとの風オブジェクト移動処理の動作は、上述の図11と同様である。ステップS79を終了すると、処理はステップS81へ進む。
一方、ステップS67で“NO”の場合、つまり、所定方向の振り操作が行われていない場合には、風を発生させずに処理はステップS81へ進む。また、ステップS63で“NO”の場合、つまり、振る操作が検出されない場合にも、処理はそのままステップS81に進む。
ステップS81では、CPU28は、上述のステップS19と同様にして風車制御処理を実行し、ステップS83では、上述のステップS21と同様にして画面表示を実行する。そして、ステップS85で、CPU28はゲーム終了でるか否かを判断し、“NO”であればステップS61に戻ってゲーム処理を繰り返し、“YES”であればゲーム処理を終了する。
なお、上述の図13では、ステップS63で、加速度が閾値よりも大きいという条件によって振り操作の判定を行うようにしている。しかし、変形例では、重力加速度以外の加速度が検出される場合には、加速度の大きさにかかわらず、振る操作が行われたものと見なして、風オブジェクト92を生成するようにしてもよい。
また、上述の各実施例では、コントローラ14は撮像情報演算部56と加速度センサ64の両方を備えている。しかし、指示位置の変化のみに基づいて振り操作を判定して風オブジェクト92を生成する場合には、コントローラ14には加速度センサ64が設けられなくてもよい。反対に、加速度情報のみに基づいて振り操作を判定して風オブジェクト92を生成する場合には、コントローラ14には撮像情報演算部56が設けられなくてもよい。
また、上述の実施例では、撮像情報演算部56によって指示位置の変化を算出するようにしたが、これに限らず、他の方法を用いてもよい。例えば、コントローラ14の十字キー54aを操作することによって得られる上下左右の方向指示に基づいて画面上を移動するカーソル位置の変化量を算出するようにしてもよい。また、他の手法として、モニタ画面にタッチパネルを設置し、モニタを指やペン等で直接タッチすることによって指示された画面上の位置座標をタッチパネルによって検出し、その検出座標の変化量を算出するようにしてもよい。また、他の手法として、コントローラ14に代えて、マウス、トラックパッド、トラックボール等の画面上の位置座標を指定する他のポインティングデバイスを用いて、当該マウス等から出力される出力値に基づいて画面上の指示位置の変化量を算出するようにしてもよい。
この発明の一実施例のゲームシステムの一例を示す外観図である。 図1のゲーム装置の電気的構成の一例を示すブロック図である。 図1のコントローラの一例を示す図解図であり、(A)は後方上側から見た斜視図であり、(B)は後方下側から見た斜視図である。 図1のコントローラを前方から見た正面図である。 図1のコントローラの電気的構成の一例を示すブロック図である。 プレイヤがコントローラを用いてゲーム操作をするときの一場面を示す図解図である。 メモリマップの一例を示す図解図である。 指示位置に基づく風オブジェクトの生成方法を説明するための図解図である。 衝突時の風オブジェクトと風車オブジェクトとの位置関係を示す図解図である。 ゲーム装置のゲーム動作の一例を示すフロー図である。 図10で開始される風オブジェクト移動処理の動作の一例を示すフロー図である。 他の実施例における加速度に基づく風オブジェクトの生成方法を説明するための図解図である。 他の実施例におけるゲーム装置のゲーム動作の一例を示すフロー図である。
符号の説明
10 …ゲームシステム
12 …ゲーム装置
14 …コントローラ
16 …モニタ
18a、18b…マーカ
20 …受信ユニット
22 …光ディスク
28 …CPU
30 …メインメモリ
34 …GPU
56 …撮像情報演算部
62 …通信部
64 …加速度センサ
90 …風車オブジェクト
92 …風オブジェクト

Claims (15)

  1. 自身の動きを検出するための動き検出手段を有し、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するコンピュータオブジェクト制御プログラムであって、
    前記コンピュータプロセッサに、
    前記操作装置の動きに基づいて前記操作装置の動作状態を検出する動作状態検出ステップ、
    前記動作状態が所定の状態であるとき、前記仮想空間に風オブジェクトを生成する風オブジェクト生成ステップ、
    前記風オブジェクトを移動させる風オブジェクト移動ステップ、
    前記風オブジェクトと前記可動オブジェクトとの当りを判定する当り判定ステップ、および
    前記当り判定ステップによって当りが生じたと判定されたとき、前記可動オブジェクトを動かす可動オブジェクト制御ステップを実行させる、オブジェクト制御プログラム。
  2. 前記動き検出手段は、前記操作装置の位置を示す撮像対象を撮像するための撮像手段を含んでいて、
    前記コンピュータプロセッサに、
    前記撮像手段で撮像された前記撮像対象の位置に基づいて、前記仮想空間内における座標を算出する座標算出ステップ、および
    単位時間における前記座標の変化量を算出する座標変化量算出ステップをさらに実行させ、
    前記風オブジェクト生成ステップは、前記変化量が所定の条件を満たすとき、前記風オブジェクトを生成する、請求項記載のオブジェクト制御プログラム。
  3. 前記コンピュータプロセッサに、前記変化量を一定間隔に分割する分割ステップをさらに実行させ、
    前記風オブジェクト生成ステップは、前記分割ステップによる分割によって一定間隔を隔てた各位置に風オブジェクトを生成する、請求項記載のオブジェクト制御プログラム。
  4. 前記動き検出手段は、加速度センサを含んでいて、
    前記コンピュータプロセッサに、前記加速度センサで検出された加速度を取得する加速度取得ステップをさらに実行させ、
    前記風オブジェクト生成ステップは、前記加速度が所定の条件を満たすとき、前記風オブジェクトを生成する、請求項記載のオブジェクト制御プログラム。
  5. 前記コンピュータプロセッサに、前記加速度に応じて風オブジェクトの数を設定する数設定ステップをさらに実行させ、
    前記風オブジェクト生成ステップは、前記数設定ステップによって設定された数の風オブジェクトを一定間隔を隔てた各位置に生成する、請求項記載のオブジェクト制御プログラム。
  6. 前記加速度センサは、少なくとも前記操作装置の第1の方向の加速度と、当該第1の方向とは異なる第2の方向の加速度とを検知するものであり、
    前記風オブジェクト生成ステップは、前記第1の方向の加速度が取得されたとき、前記風オブジェクトを生成する、請求項または記載のオブジェクト制御プログラム。
  7. 前記可動オブジェクトおよび前記風オブジェクトは、それぞれ中心座標および所定長の径を有する球として形成されており、
    前記当り判定ステップは、前記球としての前記可動オブジェクトと前記球としての前記風オブジェクトとの当りを判定し、
    前記コンピュータプロセッサに、前記当り判定ステップによって当りが生じたと判定されたとき、前記可動オブジェクトの中心座標と前記風オブジェクトの中心座標との距離を算出する距離算出ステップをさらに実行させ、
    前記可動オブジェクト制御ステップは、前記距離算出ステップによって算出された距離に応じて前記可動オブジェクトの動作状態を変化させる、請求項1ないしのいずれかに記載のオブジェクト制御プログラム。
  8. 前記風オブジェクト移動ステップは、前記動作状態検出ステップによって検出された前記操作装置の動きの変化に応じた速度で、前記風オブジェクトを移動させる、請求項記載のオブジェクト制御プログラム。
  9. 操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するコンピュータのオブジェクト制御プログラムであって、
    前記コンピュータのプロセッサに、
    前記操作装置からの操作データに応じて前記仮想空間に風オブジェクトを生成する風オブジェクト生成ステップ、
    前記風オブジェクトを移動させる風オブジェクト移動ステップ、
    前記風オブジェクトと前記可動オブジェクトとの当りを判定する当り判定ステップ、および
    前記当り判定ステップによって当りが生じたと判定されたとき、前記可動オブジェクトを動かす可動オブジェクト制御ステップを実行させ、
    前記可動オブジェクトおよび前記風オブジェクトは、それぞれ中心座標および所定長の径を有する球として形成されており、
    前記当り判定ステップは、前記球としての前記可動オブジェクトと前記球としての前記風オブジェクトとの当りを判定し、
    前記コンピュータのプロセッサに、前記当り判定ステップによって当りが生じたと判定されたとき、前記可動オブジェクトの中心座標と前記風オブジェクトの中心座標との距離を算出する距離算出ステップをさらに実行させ、
    前記可動オブジェクト制御ステップは、前記距離算出ステップによって算出された距離に応じて前記可動オブジェクトの動作状態を変化させる、オブジェクト制御プログラム。
  10. 自身の動きを検出するための動き検出手段を有し、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するオブジェクト制御装置であって、
    前記操作装置の動きに基づいて前記操作装置の動作状態を検出する動作状態検出手段、
    前記動作状態が所定の状態であるとき、前記仮想空間に風オブジェクトを生成する風オブジェクト生成手段、
    前記風オブジェクトを移動させる風オブジェクト移動手段、
    前記風オブジェクトと前記可動オブジェクトとの当りを判定する当り判定手段、および
    前記当り判定手段によって当りが生じたと判定されたとき、前記可動オブジェクトを動かす可動オブジェクト制御手段を備える、オブジェクト制御装置。
  11. 操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するオブジェクト制御装置であって、
    前記操作装置からの操作データに応じて前記仮想空間に風オブジェクトを生成する風オブジェクト生成手段、
    前記風オブジェクトを移動させる風オブジェクト移動手段、
    前記風オブジェクトと前記可動オブジェクトとの当りを判定する当り判定手段、および
    前記当り判定手段によって当りが生じたと判定されたとき、前記可動オブジェクトを動かす可動オブジェクト制御手段を備え、
    前記可動オブジェクトおよび前記風オブジェクトは、それぞれ中心座標および所定長の径を有する球として形成されており、
    前記当り判定手段は、前記球としての前記可動オブジェクトと前記球としての前記風オブジェクトとの当りを判定し、
    前記当り判定手段によって当りが生じたと判定されたとき、前記可動オブジェクトの中心座標と前記風オブジェクトの中心座標との距離を算出する距離算出手段をさらに備え、
    前記可動オブジェクト制御手段は、前記距離算出手段によって算出された距離に応じて前記可動オブジェクトの動作状態を変化させる、オブジェクト制御装置。
  12. 自身の動きを検出するための動き検出手段を有し、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するオブジェクト制御システムであって、
    前記操作装置の動きに基づいて前記操作装置の動作状態を検出する動作状態検出手段、
    前記動作状態が所定の状態であるとき、前記仮想空間に風オブジェクトを生成する風オブジェクト生成手段、
    前記風オブジェクトを移動させる風オブジェクト移動手段、
    前記風オブジェクトと前記可動オブジェクトとの当りを判定する当り判定手段、および
    前記当り判定手段によって当りが生じたと判定されたとき、前記可動オブジェクトを動かす可動オブジェクト制御手段を備える、オブジェクト制御システム。
  13. 操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するオブジェクト制御システムであって、
    前記操作装置からの操作データに応じて前記仮想空間に風オブジェクトを生成する風オブジェクト生成手段、
    前記風オブジェクトを移動させる風オブジェクト移動手段、
    前記風オブジェクトと前記可動オブジェクトとの当りを判定する当り判定手段、および
    前記当り判定手段によって当りが生じたと判定されたとき、前記可動オブジェクトを動かす可動オブジェクト制御手段を備え、
    前記可動オブジェクトおよび前記風オブジェクトは、それぞれ中心座標および所定長の径を有する球として形成されており、
    前記当り判定手段は、前記球としての前記可動オブジェクトと前記球としての前記風オブジェクトとの当りを判定し、
    前記当り判定手段によって当りが生じたと判定されたとき、前記可動オブジェクトの中心座標と前記風オブジェクトの中心座標との距離を算出する距離算出手段をさらに備え、
    前記可動オブジェクト制御手段は、前記距離算出手段によって算出された距離に応じて前記可動オブジェクトの動作状態を変化させる、オブジェクト制御システム。
  14. 自身の動きを検出するための動き検出手段を有し、操作者によって操作される操作装置を備え、仮想空間内に配置される可動オブジェクトを表示装置に表示するコンピュータのオブジェクト制御方法であって、
    前記コンピュータは
    (a)前記操作装置の動きに基づいて前記操作装置の動作状態を検出し、
    (b)前記動作状態が所定の状態であるとき、前記仮想空間に風オブジェクトを生成し、
    (c)前記風オブジェクトを移動させ、
    (d)前記風オブジェクトと前記可動オブジェクトとの当りを判定し、そして
    (e)前記ステップ(d)において当りが生じたと判定したとき、前記可動オブジェクトを動かす、オブジェクト制御方法。
  15. 操作者によって操作される操作装置を備え、中心座標および所定長の径を有する球として形成され、仮想空間内に配置される可動オブジェクトを表示装置に表示するコンピュータのオブジェクト制御方法であって、
    前記コンピュータは、
    (a)前記操作装置からの操作データに応じて前記仮想空間に中心座標および所定長の径を有する球として形成される風オブジェクトを生成し、
    (b)前記風オブジェクトを移動させ、
    (c)前記風オブジェクトと前記可動オブジェクトとの当りを判定し、
    (d)前記ステップ(c)において当りが生じたと判定したとき、前記可動オブジェクトの中心座標と前記風オブジェクトの中心座標との距離を算出し、そして
    (e)前記ステップ(c)において当りが生じたと判定したとき、前記ステップ(d)において算出した距離に応じて前記可動オブジェクトの動作状態を変化させる、オブジェクト制御方法。
JP2006128417A 2006-05-02 2006-05-02 オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法 Active JP5031260B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006128417A JP5031260B2 (ja) 2006-05-02 2006-05-02 オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法
US11/640,409 US8684845B2 (en) 2006-05-02 2006-12-18 Storage medium storing game program and game apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006128417A JP5031260B2 (ja) 2006-05-02 2006-05-02 オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法

Publications (2)

Publication Number Publication Date
JP2007296228A JP2007296228A (ja) 2007-11-15
JP5031260B2 true JP5031260B2 (ja) 2012-09-19

Family

ID=38712615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006128417A Active JP5031260B2 (ja) 2006-05-02 2006-05-02 オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法

Country Status (2)

Country Link
US (1) US8684845B2 (ja)
JP (1) JP5031260B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8157651B2 (en) * 2005-09-12 2012-04-17 Nintendo Co., Ltd. Information processing program
JP5420824B2 (ja) * 2007-03-30 2014-02-19 任天堂株式会社 ゲーム装置およびゲームプログラム
JP2009276829A (ja) 2008-05-12 2009-11-26 Nintendo Co Ltd 情報処理プログラムおよび情報処理装置
JP5376874B2 (ja) * 2008-09-05 2013-12-25 任天堂株式会社 画像処理プログラムおよび画像処理装置
TWI373057B (en) * 2009-10-08 2012-09-21 Wistron Corp Electronic apparatus
US9924907B2 (en) * 2011-09-30 2018-03-27 Google Technology Holdings LLC Method and system for identifying location of a touched body part
JP2015186575A (ja) * 2015-05-15 2015-10-29 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理システムおよび情報処理方法
JP6892262B2 (ja) * 2016-12-26 2021-06-23 株式会社コーエーテクモゲームス ゲームプログラム、記録媒体、ゲーム処理方法
CN117122926A (zh) * 2022-05-20 2023-11-28 腾讯科技(成都)有限公司 虚拟车辆的控制方法、装置、终端设备及存储介质
CN117036560B (zh) * 2023-10-10 2024-01-02 福州朱雀网络科技有限公司 一种适用于虚拟场景的风场模拟方法、介质和设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5076584A (en) * 1989-09-15 1991-12-31 Openiano Renato M Computer game controller with user-selectable actuation
JPH10165648A (ja) * 1996-12-09 1998-06-23 Konami Co Ltd 当たり判定装置,及びコンピュータプログラムを記録した媒体
JP4462704B2 (ja) 2000-03-29 2010-05-12 株式会社バンダイナムコゲームス ゲーム装置および情報記憶媒体
JP3428562B2 (ja) * 2000-04-25 2003-07-22 株式会社スクウェア オブジェクトの動きを処理する方法および記録媒体、並びに、ゲーム装置
JP4974319B2 (ja) * 2001-09-10 2012-07-11 株式会社バンダイナムコゲームス 画像生成システム、プログラム及び情報記憶媒体
US20060233098A1 (en) * 2005-04-14 2006-10-19 Mcardle James M Method for detecting object collisions in a computer-based game

Also Published As

Publication number Publication date
US8684845B2 (en) 2014-04-01
JP2007296228A (ja) 2007-11-15
US20070270220A1 (en) 2007-11-22

Similar Documents

Publication Publication Date Title
JP5031260B2 (ja) オブジェクト制御プログラム、オブジェクト制御装置、オブジェクト制御システムおよびオブジェクト制御方法
US7833099B2 (en) Game apparatus and recording medium recording game program for displaying a motion matching a player's intention when moving an input device
US8797264B2 (en) Image processing apparatus and storage medium storing image processing program
JP5177615B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
JP5376874B2 (ja) 画像処理プログラムおよび画像処理装置
US8884875B2 (en) Information processing apparatus and computer-readable recording medium recording information processing program
US7538775B2 (en) Storage medium storing game program and game apparatus
JP5448073B2 (ja) 情報処理装置、情報処理プログラム、情報処理システム、および、選択対象の選択方法
US8246457B2 (en) Storage medium having game program stored thereon and game apparatus
US9751013B2 (en) Storage medium, information processing system, and information processing method for adjusting images based on movement information
US20070191112A1 (en) Storage medium storing subject selecting program and subject selecting apparatus
JP2009148466A (ja) ゲームプログラムおよびゲーム装置
JP5236214B2 (ja) 画像処理プログラム
JP2009189660A (ja) 情報処理プログラムおよび情報処理装置
JP5183878B2 (ja) ゲームプログラム、ゲームシステム
JP5529401B2 (ja) ゲームプログラムおよびゲーム装置
JP5259965B2 (ja) 情報処理プログラム、および、情報処理装置
JP2010142404A (ja) ゲームプログラムおよびゲーム装置
JP2008142509A (ja) ゲームシステムおよびゲームプログラム
JP5525177B2 (ja) 情報処理プログラム、および、情報処理装置
JP5350612B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム処理方法
JP5945297B2 (ja) ゲームプログラムおよびゲーム装置
JP5798601B2 (ja) ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120323

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120626

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120627

R150 Certificate of patent or registration of utility model

Ref document number: 5031260

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150706

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250