Летающие птицы
Я помню, как когда то играл в Unreal1 заканчивая первые уровни... По сценарию игры я был заключен в тюрьму, и затем я сумел выйти, и я вышел из пещеры. Я был поражен! Огромные наружные области с деревьями, травой и птицами, летающими высоко в небе...
Ниже код для птицы, которая может летать и кружить над вами:
action move_bird
{
var init_pos; // позиция птицы
var bird_speed; // скорость полёта
var flying_distance;
flying_distance = my.skill1;
if (flying_distance == 0) {flying_distance = 2000;} // значение по умолчанию, расстояние полёта
bird_speed = my.skill2;
if (bird_speed == 0) {bird_speed
= 5;} // значение по умолчанию, скорость полёта
my.passable = on;
vec_set (init_pos.x, my.x); // сохранение начальной позиции птицы
while (1)
{
temp.x
= bird_speed * time;
temp.y = 0;
temp.z = 0;
move_mode
= ignore_passable;
my.skill40 += ent_move (temp,
nullvector); // движения и повороты
if (my.skill40 > flying_distance)
{
my.skill40
= 0;
vec_set
(my.x, init_pos.x);
}
ent_cycle("walk", my.skill1); // анимация птицы
my.skill1 += 3 * time; // скорость анимации
my.skill1 %= 100; // анимационный цикл
wait (1);
}
}
Мы определили несколько переменных; init_pos будет хранить начальную позицию птицы, bird_speed будет хранить скорость птицы, и flying_distance будет хранить расстояние, которое должно быть охвачено птицей перед возвращением к ее начальной позиции. Вы можете установить flying_distance, используя skill1 и bird_speed, используя skill2 в Wed; однако, если вы забудите сделать это, то код будет использовать предопределенные 2000 и 5. Мы делаем птицу проходимой (passable) (хотя это совсем не обязательно), и затем мы храним начальную позицию птицы в init_pos (это - позиция, которую вы дали вашей птице в Wed) перед циклом. Цикл сохраняет скорость птицы и перемещает её, сохраняя расстояние, которое было охвачено в skill40; если это значение становится больше чем flying_distance, птица возвращается к начальной позиции и это происходит в цикле. Далее проигрывается анимация (walk), но естественно можно использовать свою.
Разместите их на уровень на различных высотах, выберите их позиции и установите им надлежащую скорость и длину расстояния. Расстояние должно быть достаточно большим, потому что вы не хотите, чтобы игрок заметил цикл возврата птицы (движение в петле); удостоверьтесь, что птицы начинают летать в области, которая не может быть замечена игроком, и концом их полёта должна быть так же не видная для игрока область.