Следование за шайбой — pursuePuck
Если шайба принадлежит нашей команде, надо переходить к атаке,. Кто-то из моей команды ближе и он ее подберет. Шайба рядом, надо попытаться подобрать ее. Иначе пытаемся отобрать ее у соперника. MBrain. pushState (doesMyTeamHaveThePuck ()? attack: stealPuck); } } }}. Никто не подобрал шайбу, это наш шанс. MBoid. steering = mBoid. steering + mBoid. seek (aPuck.position); Шайба слишком далеко, быть… Читать ещё >
Следование за шайбой — pursuePuck (реферат, курсовая, диплом, контрольная)
Это состояние будет активно, когда шайба не будет принадлежать никому (начало игры тоже попадает под это описание, поскольку шайба без владельца будет находиться в центре поля).
Хоть мы и должны бежать к никому не принадлежащей шайбе, нельзя забывать об имитации реальных действий. В настоящем хоккее игроки, увидев такую шайбу, не погонятся всей командой за ней. Из стратегических соображений, погнаться за ней должен тот, кто ближе всех к ней. Все остальные игроки должны помогать ему.
Если же шайбу кто-то уже взял, то нам следует перейти либо к атаке, либо к отбору. Все это выполняется в зависимости от того, кто же умудрился захватить шайбу — игрок нашей команды или соперник.
А вот код состояния pursuePuck:
class Athlete { // (…).
private function pursuePuck () :void {.
var aPuck: Puck = getPuck ();
mBoid.steering = mBoid. steering + mBoid. separation ();
if (distance (this, aPuck) > 150) {.
// шайба слишком далеко, быть может,.
// кто-то из моей команды ближе и он ее подберет.
mBrain.popState ();
mBrain.pushState (idle);
} else {.
// шайба рядом, надо попытаться подобрать ее.
if (aPuck.owner == null) {.
// никто не подобрал шайбу, это наш шанс.
mBoid.steering = mBoid. steering + mBoid. seek (aPuck.position);
} else {.
// кто-то уже подобрал шайбу;
// если шайба принадлежит нашей команде, надо переходить к атаке,.
// иначе пытаемся отобрать ее у соперника.
mBrain.popState ();
mBrain.pushState (doesMyTeamHaveThePuck ()? attack: stealPuck); } } }}.
Обратите внимание на 6 строчку из приведенного выше кода. Она отвечает за то, чтобы игроки не оставались слишком близко друг к другу во время активного состояния pursuePuck, поскольку это будет выглядеть не естественно.
Ну и давайте взглянем на результат. Каждые 2 секунды шайба помещается в центр поля для того, чтобы мы могли взглянуть на способность наших игроков подбирать шайбу.