Недавно я смотрел Flash-видео: «Lynda.com - проекты ActionScript 3.0: разработка игр» с Тоддом Перкинсом.
Последний урок был «Создание Flash Tank Game». Я последовал и создал ту же самую игру, которая была описана в уроке.
Но в примере урока у вражеского танка не было спускающегося ИИ. Враг двигался и стрелял случайно, и играть в эту игру было не очень весело.
Я решил сделать ИИ более совершенным. Мне удалось заставить противника изменить направление движения, если его ударил игрок.
Если враг успешно ударил игрока, он останавливается и продолжает стрелять в игрока с тем же углом и той же позицией, пока он не пропустил или не получил удар от игрока.
Проблема в том, что формула для вычисления правильного угла пушки не является правильной. Враг вроде стреляет правильно, но он все еще сильно скучает.
Итак, вот формула, которую я использовал:
enemyTargetRotation=Math.asin(Math.abs(enemy_mc.y - player_mc.y)/(Math.sqrt(Math.pow(player_mc.x - enemy_mc.x, 2)+ Math.pow((enemyWall_mc.height - stage.height),2)))/180*Math.PI);
enemyTargetRotation*=10000;
enemyTargetRotation+=180;