Улучшение отбора шайбы
Теперь наши игроки не будут бежать сломя голову к противнику, пытаясь отобрать у него шайбу. Побегут только те, расстояние от которых до соперника не превышает 150. Взгляните на полученный результат. Теперь игроки более адекватно ведут себя при отборе шайбы. Нет, он слишком далеко; в скором времени на этом. Да, он рядом; надо предугадать его положение и. MBoid. steering = mBoid.steering.add… Читать ещё >
Улучшение отбора шайбы (реферат, курсовая, диплом, контрольная)
Мы написали довольно неплохой метод отбора шайбы. Но в настоящей игре хоккеисты не поступали бы так, как они ведут себя у нас. Отобрать шайбу они пытаются всей командой, но это совсем неестественно и может привести к образованию толпы. Мы можем исправить этот недочет путем проверки расстояния от игрока до лидера соперников.
class Athlete { // (…).
private function stealPuck () :void {.
// есть ли у шайбы владелец?
if (getPuckOwner () ≠ null) {.
// да, есть.
if (doesMyTeamHaveThePuck ()) {.
// шайба у моей команды.
// время перейти в атаку.
mBrain.popState ();
mBrain.pushState (attack);
} else {.
// шайба у противников.
var aOpponentLeader: Athlete = getPuckOwner ();
// лидер соперников близок ко мне?
if (distance (aOpponentLeader, this) < 150) {.
// да, он рядом; надо предугадать его положение и.
// перехватить его.
mBoid.steering = mBoid.steering.add (mBoid.pursuit (aOpponentLeader.boid));
mBoid.steering = mBoid.steering.add (mBoid.separation (50));
} else {.
// нет, он слишком далеко; в скором времени на этом.
// месте мы будем переходить в защиту.
// TODO: mBrain. popState ();
// TODO: mBrain. pushState (defend); } }.
} else {.
// шайба никому не принадлежит;
// надо подобрать ее.
mBrain.popState ();
mBrain.pushState (pursuePuck); } } }.
Теперь наши игроки не будут бежать сломя голову к противнику, пытаясь отобрать у него шайбу. Побегут только те, расстояние от которых до соперника не превышает 150.
Все оставшиеся игроки останутся на своих местах, поскольку они слишком далеко. Целесообразно их перевести в состояние защиты, однако, мы пока его не реализовали. В следующем уроке мы вернемся сюда и дополним наш код.
Взгляните на полученный результат. Теперь игроки более адекватно ведут себя при отборе шайбы.