Как я обещал, в этой игре можно будет спасать людей (собирать их). Они будут появляться в рандомной точке и крутиться, в надежде, что их кто-нибудь спасёт. Да, кстати я переделал звёзды. Раньше они появлялись в центре экрана, за границами экрана, но теперь всё нормально. Пока что ничего за спасания человека не дают, но мы это исправим, когда будем делать меню. Вот что должно получиться:
Для начала я предупрежу вас, что объяснять всё я не буду. Выкладывать код в урок буду исходя из темы урока. Остальной код можно будет узнать, скачав исходник.
Итак, рисуем человека, который будет летать в космосе, конвертируем в символ, называем его man и экспортируем в ActionScript. Далее рисуем прямоугольник размерам с человека, выделяем его, жмём F8, называем marker. Именно этот маркер (который в человеке) называем Marker. Этим маркером будет проверяться соприкосновение с вертолётом и пулей. Создаём класс man. Код:
Это ещё не всё. Открываем рисунок вертолёта, добавляем из библиотеки маркер. Этот маркер нужен для того, чтобы проверять соприкосновения с людьми, так что размещаем его желательно в центре и называем также Marker:
Остальные изменения я не стал выкладывать в урок. Скачать исходник со всеми изменениями можно здесь.
Удачи!
P.S. интересно, кто-нибудь что-то сделал по моим туториалам?..
Для начала я предупрежу вас, что объяснять всё я не буду. Выкладывать код в урок буду исходя из темы урока. Остальной код можно будет узнать, скачав исходник.
Итак, рисуем человека, который будет летать в космосе, конвертируем в символ, называем его man и экспортируем в ActionScript. Далее рисуем прямоугольник размерам с человека, выделяем его, жмём F8, называем marker. Именно этот маркер (который в человеке) называем Marker. Этим маркером будет проверяться соприкосновение с вертолётом и пулей. Создаём класс man. Код:
package { import flash.display.MovieClip; import flash.events.Event; import flash.geom.Point; public class man extends MovieClip { private var speedX,speedY,staticX,staticY:Number; private var game; private var Speed, rotationSpeed,radius,degrees,angle:Number; private var radians:Number=Math.PI/180; public function man(Game) { game=Game; rotationSpeed=Math.random()*2; Speed=Math.random()*5+2; radius=40; degrees=0; angle=0; start_position(); this.addEventListener(Event.ENTER_FRAME,update_bullet); // делаем маркер невидимым this.Marker.visible=false; game.mans_container.addChildAt(this,0); } private function start_position(){ var i:int=Math.random()*4; var X,Y:Number; if(i==0){ X=Math.random()*game.stgWidth; Y=0-radius; this.rotation=Math.random()*180; } else if(i==1){ X=Math.random()*game.stgWidth; Y=game.stgHeight+radius; this.rotation=Math.random()*-180; } else if(i==2){ X=0-radius; Y=Math.random()*game.stgHeight; this.rotation=Math.random()*360-180; } else if(i==3){ X=game.stgWidth+radius; Y=Math.random()*game.stgHeight; this.rotation=Math.random()*180-90; } var point:Point=new Point(X,Y); point=game.mans_container.globalToLocal(point); staticX=point.x; staticY=point.y; this.x=staticX; this.y=staticY; } private function update_bullet(e:Event) { update_coordinats(); rotat(); check_hit(); } private function check_hit(){ var kill:Boolean=false; if(this.Marker.hitTestObject(game.Player.Marker)){ kill=true; } else{ for(var i:int=0; i<game.bullets_container.numChildren;i++){ if(game.bullets_container.getChildAt(i).hitTestObject(this.Marker)){ kill=true; game.bullets_container.getChildAt(i).self_destruction(); } } } if(kill==true){ self_destruction(); } } private function rotat(){ this.rotation+=rotationSpeed; } private function update_coordinats() { //проверка на вылет пули за пределы окна var point:Point=new Point(this.x,this.y); point=game.bullets_container.localToGlobal(point); if ((point.x+this.width<game.stgWidth+500)&&(point.y+this.height0-500)&&(point.y-this.width>0-500)) { // выполняется вращение вокруг оси angle = degrees * radians; degrees += Speed/2; var yposition = radius * Math.cos(angle); var xposition = radius * Math.sin(angle); this.x = xposition+staticX; this.y = yposition+staticY; // } else { self_destruction(); } } public function self_destruction() { // иногда по неизвестной мне причине объект может удалить себя дважды и при этом возникнет ошибка //поэтому лучше себя застраховать try { this.removeEventListener(Event.ENTER_FRAME,update_bullet); this.parent.removeChild(this); } catch (Error) { } } } }
Это ещё не всё. Открываем рисунок вертолёта, добавляем из библиотеки маркер. Этот маркер нужен для того, чтобы проверять соприкосновения с людьми, так что размещаем его желательно в центре и называем также Marker:
Остальные изменения я не стал выкладывать в урок. Скачать исходник со всеми изменениями можно здесь.
Удачи!
P.S. интересно, кто-нибудь что-то сделал по моим туториалам?..
От того в какую сторону поворачиваешь зависит скорость вращения винта. Это не совсем правильно
ОтветитьУдалить:) Это просто обман зрения, в этом уроке было написано про вращение винта (что он будет поворачиваться на 20 градусов каждый кадр). И если вертолёт крутиться в сторону вращения винта, то будет казаться, что винт крутиться быстрее (или медленнее, хз).
ОтветитьУдалить