Искусственный интеллект у нас будет простой – если игрок в видимости бота и время перезарядки вышло, то тогда стрелять. В общем, боты довольно тупые) Можете в этом убедиться:
Класс ботов похож на класс людей, а класс пули ботов на класс пули игрока, так что открываем класс man, жмём save as, в имя файла пишем bot. Код будет очень похож, и выкладывать его в урок я не буду. Всё как всегда в исходнике. И не забываем нарисовать это НЛО (называть bot, экспортировать …). Рисуем пулю, называем bot_bullet. Уже не говорю про экспортирование :) Код тоже похож, но он маленький, так что вот:
package { import flash.display.MovieClip; import flash.events.Event; import flash.geom.Point; public class bot_bullet extends MovieClip { private var speedX,speedY:Number; private var game; private var Speed:Number=15; private var radians:Number=Math.PI/180; private var speedRotation:Number; public function bot_bullet(Game, Parent) { game=Game; speedRotation=Math.random()*9+1; this.rotation=Parent.Rotation; var bulletAngle:Number=this.rotation*radians; speedX=Math.cos(bulletAngle)*Speed; speedY=Math.sin(bulletAngle)*Speed; this.x=Parent.x; this.y=Parent.y; this.addEventListener(Event.ENTER_FRAME,update_bullet); game.bot_bullets_container.addChildAt(this,0); } private function update_bullet(e:Event) { update_coordinats(); check_hit(); rotate(); } private function rotate(){ this.rotation+=speedRotation; } private function check_hit(){ if(this.hitTestObject(game.Player.Marker)){ //отнимаем жизни у игрока self_destruction(); } } private function update_coordinats() { //проверка на вылет пули за пределы окна var point:Point=new Point(this.x,this.y); point=game.bot_bullets_container.localToGlobal(point); if ((point.x+this.width<game.stgWidth+30)&&(point.y+this.height<game.stgHeight+30)&&(point.x-this.width>0-30)&&(point.y-this.width>0-30)) { this.x+=speedX; this.y+=speedY; } else { self_destruction(); } } public function self_destruction() { // иногда по неизвестной мне причине объект может удалить себя дважды и при этом возникнет ошибка //поэтому лучше себя застраховать try { this.removeEventListener(Event.ENTER_FRAME,update_bullet); this.parent.removeChild(this); } catch (Error) { } } } }Надеюсь, Вы поймёте, что если бы я писал все изменения в урок, то это заняло бы страниц 10. В следующем уроке мы сделаем меню, а в следующем будут всякие доработки. Так что осталось всего 2 урока! Пойду праздновать свой день рождения (21 января). Как всегда исходник и до следующего поста!))
Комментариев нет:
Отправить комментарий