Всем привет. Недавно делал игру на заказ, стрелялка, в стиле Джемса Бонда "Казино рояль" и столкнулся с такой прихотью заказчика - заказчик захотел чтобы при попаданиии в агента 007 он рассыпался как на заставке к фльму http://www.youtube.com/watch?v=Q7oxh5MrGOQ (2:12-2:15). Задача оказалась несложной и очень даже интересной в плане реализации. В связи с этим решил написать этот урок, возможно не для всех новый, но все же.
Начнем с самого героя, для игры я делал анимацию бегущего агента 007, но для урока ограничусь статическим изображением 007.
Первый раз опишу подробно как создавать мувие клипы, хотя в прошлых урока все это было подробно описано. 1.Итак первое что мы делаем- жмем Ctrl+F8
2. в появившемся окне пишем имя и выбираем тип мувие клип и нажимем ОК
3.Далее рисуем Джеймса.
На этом подготовка клипа с агентом закончена. Возвращаемся на главную сцену и приступаем к созданию нового клипа назовем его nois (создание клипа см выше). Этот клип будет выполнять роль частиц, на которые будет распадаться Бонд.
После того как вы нарисовали саму частицу не спешите возвращаться на главную сцену.
Создадим новый слой в этом же клипе, в нем будет храниться скрипт отвечающий за поведение мувика.
нажимаем на пустой кадр нового слоя и жмем F9 или просто переходим на вкладку Action и пишем следующий код
Code
this.speedY=Math.random()*5-1
this.onEnterFrame=function(){
this.speedY+=.2;
this._y+=this.speedY;
}
Теперь по коду:
команда this - дословно с анг - этот, т.е. данная команда обращаеться к источнику, если так можно сказать, в данном случае к мувие клипу. this.speedY=Math.random()*5-1 - c помощью этого кода в в клипе создаеться свойство speedY, которому мы присваиваем случайное число 0 до 5
свойство speedY будет использоваться для хранения скорости падения нашей частицы.
onEnterFrame - при смене кадра.
Соеденив все вместе имем приблизительно следущее - этот мувие клип. приСменеКадра = выполнить некую функцию {тело функции }
в теле функции мы просто каждую секунду увеличиваем значение speedY для мувика, т.е. наш мувик будет падать вниз.
на этом манипуляции с кодм завершены.
переходим к следующему этапу:
Создаем новый мувие клип "agent_die" и из клипов nois делаем очертания агента.
Затем находим этот клип в библиотеке клацаем ПКМ и заходим в свойство Properties, там ставим галочку на Export for Action Script и пишем имя a_die.
Теперь возвращаемся на главную сцену, перетаскиваем на него из библиотеки клип с агентом и в его свойствах хадаем имя agent.
Осталось написать пару строчек скрипта.
Создаем новый слой, нажимаем F9 и пишем
Code
agent.onMouseDown=function(){ //при нажатие мышкой на клипе agent
agent._visible=false; //скрываем клип
_root.attachMovie("a_die","a_die3",20); //сцена. добавитьКлип(имяИпортируемогоКлипа, овое Имя, глубина)
_root["a_die3"]._x=agent._x;// размещаем клип на место agenta
_root["a_die3"]._y=agent._y;
}
В коде выше мы при нажатие мыши на клипе agent размещаем на его месте созданный ранее силует из частиц
Все готово, разрешается ликовать и радоваться))) Нажимаем Ctrl+Enter и смотрим что получилось.
Думаю многие из вас посмотрев результат разочаровались. Ничего сейчас попробуем исправиться и добавить немного реалистичности в разлете частиц.
Для этого откройте мувик nois и добавте пару строк в уже имеющийся скрипт
Code
this._rotation =Math.random()*360; //поворот клипа на случайный угол от 0 до 360 градусов
naprX=random(2); //-
naprY=random(2); //-
if(naprY==1){this.naprY=-1;}else{this.naprY=1} //-
if(naprX==1){this.naprX=-1;}else{this.naprX=1} //эти 4 строки случайно выбирают направление полета клипа
this.speedX=this.naprX*Math.random()*2 //в свойство speedX данного клипа заносится случайная скорость от 0 до 2
//(Тут и строчкой ниже можно похимичить и поизменять скорость, меняя числа в конце)
this.speedY=this.naprY*Math.random()*3-1 //в свойство speedX данного клипа заносится случайная скорость от 0 дл 3
this._xscale = this._yscale = Math.random() * 20+10 ; // случайно задаеться размер клипа от 10 до 30
this.onEnterFrame=function(){
this.speedY+=.2;
this._x+=this.speedX;
this._y+=this.speedY;
}
http://megaswf.com/serve/1012260
<iframe frameborder="0" scrolling="no" src="" id="megaswf"></iframe><script src="http://megaswf.com/ServeEmbedJS.aspx?fileID=1012260&height=18&width=447&iframeID=megaswf" type="text/javascript"></script>