public class Athlete {.
public function Athlete (thePosX :Number, thePosY: Number, theTotalMass: Number, theTeam: FlxGroup) { // ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΠ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ 'idle'.
mBrain.pushState (idle); }.
private function idle () :void {.
var aPuck: Puck = getPuck ();
stopAndlookAt (aPuck.position); }.
private function stopAndlookAt (thePoint :Vector3D) :void {.
mBoid.velocity = thePoint — mBoid. position;
mBoid.velocity = normalize (mBoid.velocity) * 0.01; } }.
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ Π²ΡΠ΅Π³Π΄Π°. ΠΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ, ΠΎΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠΎΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, attack.
ΠΠ΅ΡΠΎΠ΄ stopAndlookAt () Π²ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ Π½ΡΠΆΠ½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΎΠΌΡ ΠΆΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΡ Π²ΡΡΠΈΡΠ»ΡΠ»ΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΄Π°ΡΠ°. ΠΠ΅ΠΊΡΠΎΡ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΉΡΡ Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Ρ
ΠΎΠΊΠΊΠ΅ΠΈΡΡΠ° ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠΉΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ ΡΠ°ΠΉΠ±Ρ, ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅ thePoint — mBoid. position ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π·Π³Π»ΡΠ΄Π° ΡΠΏΠΎΡΡΡΠΌΠ΅Π½Π°.
ΠΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ ΠΊ Ρ
ΠΎΠΊΠΊΠ΅ΠΈΡΡΡ, ΡΠΎ ΠΎΠ½ ΡΡΡΡΠ΅ΠΌΠΈΡΡΡΡ ΠΊ ΡΠ°ΠΉΠ±Π΅. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΎΡΡΠ°Π²Π°Π»ΡΡ Π½Π° ΠΌΠ΅ΡΡΠ΅, ΠΌΡ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π²Π΅ΠΊΡΠΎΡ Π½Π° ΡΠΈΡΠ»ΠΎ, Π±Π»ΠΈΠ·ΠΊΠΎΠ΅ ΠΊ Π½ΡΠ»Ρ, Ρ. Π΅. Π½Π° 0.01. ΠΡΠΎ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΏΠΎΡΡΡΠΌΠ΅Π½Π° Π½Π° ΠΌΠ΅ΡΡΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π½Π° ΡΠ°ΠΉΠ±Ρ.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ ΠΌΠ°ΡΡΡ
ΠΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π·Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ³ΡΠΎΠΊΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»ΠΈΡΡ Π½Π° ΡΠ²ΠΎΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΈ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈΡΡ ΡΠ°ΠΌ. ΠΠ±Π½ΠΎΠ²ΠΈΠΌ Π½Π°Ρ ΠΊΠ»Π°ΡΡ Athlete:
public class Athlete {.
private var mInitialPosition: Vector3D; // ΡΡΠ°ΡΡΠΎΠ²Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Ρ
ΠΎΠΊΠΊΠ΅ΠΈΡΡΠ°.
public function Athlete (thePosX :Number, thePosY: Number, theTotalMass: Number, theTeam: FlxGroup) { // (…).
mInitialPosition = new Vector3D (thePosX, thePosY); // ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΠ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ 'idle'.
mBrain.pushState (idle); }.
private function prepareForMatch () :void {.
mBoid.steering = mBoid. steering + mBoid. arrive (mInitialPosition, 80);
// Π½Π°Ρ
ΠΎΠΆΡΡΡ Π»ΠΈ Ρ Π² ΡΠ²ΠΎΠ΅ΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ?
if (distance (mBoid.position, mInitialPosition) <= 5) {.
// Ρ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ.
mBrain.popState ();
mBrain.pushState (idle); } } // (…) }.
ΠΠΈΠΆΠ΅ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΠ Π² ΠΈΠ³ΡΡ. ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΡ G ΠΈ ΠΈΠ³ΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΡΡΡΡ Π² ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ΠΈ Π²ΡΡΠ°Π½ΡΡ Π½Π° Π½ΡΠΆΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ°: