(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Уроки Flash: Создаем Metro Siberia Undeground (Часть 2)

Источник: demiart
Emanuele Ferontano (Перевод: Stasan)

Это вторая часть уроков, посвященных созданию игры MSU. Если вы незнакомы с первой частью, то перед продолжением, я настоятельно рекомендую вам ознакомиться с ней.

Эта часть посвящена созданию динамично меняющегося коридора, также мы сделаем так, чтобы клубы дымы увеличивались в размере, удаляясь от корабля.

Что ж давайте начнем.
Создадим новый Movie Clip, в нем изобразим два прямоугольника их координаты по x ставим равными нулю, а по у делаем их равноудаленными от середины Movie Clip"a. См. картинку.

Создаем Metro Siberia Undeground.Часть 2

Называем этот символ tunnel и ставим linkage.

Что ж теперь код, будет объяснен смысл только новых частей кода.

CODE

1. import flash.filters.GlowFilter;
2. var ship_filter:GlowFilter = new GlowFilter(0x00ff00, 0.8, 4, 4, 2, 3, false, false);
3. var smoke_filter:GlowFilter = new GlowFilter(0xff0000, 0.8, 4, 4, 2, 3, false, false);
4. var tunnel_filter:GlowFilter = new GlowFilter(0xffff00, 0.8, 4, 4, 2, 3, false, false);
5. gravity = 0.1;
6. thrust = 0.25;
7. yspeed = 0;
8. xspeed = 5;
9. distance = 0;
10. smoke_interval = 10000;
11. frames_passed = 0;
12. tunnel_height = 150;
13. engines = false;
14. _root.attachMovie("ship", "ship", _root.getNextHighestDepth(), {_x:150, _y:200});
15. _root.createEmptyMovieClip("tunnel_movie", _root.getNextHighestDepth());
16. ship.filters = new Array(ship_filter);
17. ship.onEnterFrame = function() {
18.     if (engines) {
19.         yspeed -= thrust;
20.         smoke_interval -= 0.25;
21.     }
22.     yspeed += gravity;
23.     this._y += yspeed;
24.     angle = Math.atan2(yspeed, xspeed);
25.     this._rotation = angle*180/Math.PI;
26.     frames_passed++;
27.     distance += xspeed;
28.     if (distance>50) {
29.         step = distance-50;
30.         wall = tunnel_movie.attachMovie("tunnel", "tunnel"+tunnel_movie.getNextHighestDepth(), tunnel_movie.getNextHighestDepth(), {_x:525-step, _y:tunnel_height});
31.         wall.filters = new Array(tunnel_filter);
32.         wall.onEnterFrame = function() {
33.             this._x -= xspeed;
34.             if (this._x<-25) {
35.                 this.removeMovieClip();
36.             }
37.         };
38.         tunnel_height += Math.floor(Math.random()*40)-19;
39.         distance = step;
40.     }
41.     if (frames_passed>=smoke_interval) {
42.         sm = _root.attachMovie("smoke", "smoke"+_root.getNextHighestDepth(), _root.getNextHighestDepth(), {_x:this._x-2, _y:this._y});
43.         sm.filters = new Array(smoke_filter);
44.         sm.onEnterFrame = function() {
45.             this._x -= xspeed;
46.             this._width += 0.2;
47.             this._height += 0.2;
48.             this._alpha -= 2;
49.             if (this._alpha<=0) {
50.                 this.removeMovieClip();
51.             }
52.         };
53.         frames_passed = 0;
54.     }
55.     if ((this._y> 400) or tunnel_movie.hitTest(this._x+28*Math.cos(angle), this._y+28*Math.sin(angle), true) or tunnel_movie.hitTest(this._x+8*Math.cos(angle+Math.PI/2), this._y+8*Math.sin(angle+Math.PI/2), true) or tunnel_movie.hitTest(this._x+8*Math.cos(angle-Math.PI/2), this._y+8*Math.sin(angle-Math.PI/2), true)) {
56.         yspeed = 0;
57.         this._y = 200;
58.         tunnel_movie.removeMovieClip();
59.         _root.createEmptyMovieClip("tunnel_movie", _root.getNextHighestDepth());
60.     }
61. };
62. _root.onMouseDown = function() {
63.     engines = true;
64.     smoke_interval = 10;
65. };
66. _root.onMouseUp = function() {
67.     engines = false;
68.     smoke_interval = 100000;
69. };

Давайте разбираться, что к чему.

4. Фильтр для туннеля.
9. Расстояние, пройденное кораблем.
12.Переменная отвечающая за высоту туннеля.
15. Создаем пустой Movie Clip в который будет помещаться туннель.
27. Увеличиваем пройденное расстояние на переменную скорости.
28. Проверяем больше ли дистанция ширины прямоугольника составляющего туннель(у меня это 50).
29. В переменную step я записываю разность между расстоянием и 50, чтобы знать куда вставлять следующий туннель
30. Вставляем Movie Clip туннеля его координаты основаны на step и tunnel_height.
31. Применяем фильтры к туннелю.
32.Функция чтобы уничтожать корабль если он дотронется до туннеля.
33. Вычитаем из координаты стены по x скорость корабля.
34-36.Если туннель ушел за пределы видимости, удаляем его.
38. Устанавливаем новую высоту туннеля, она будет на 20 px больше или меньше предыдущей. Это добавит эффект неоднородной поверхности.
39.Переменной отвечающей за расстояние присваиваем значение step, так как нам необходимо расстояние от последнего вставленного туннеля.
46-47. Увеличиваем размер дыма.
55. Проверка ни упал ли корабль вниз, и не коснулась ли хоть одна из точек, образующих треугольник, стены.
56. Обнуляем скорость по у.
57.Ставим корабль в центре сцены.
58-59. Убираем старый туннель.


[Upload your own video]

Файлы для загрузки


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 10.06.2008 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
IBM Domino Enterprise Server Processor Value Unit (PVU) License + SW Subscription & Support 12 Months
Quest Software. TOAD for SQL Server Xpert Edition
IBM RATIONAL Quality Manager Quality Professional Authorized User Single Install License + Sw Subscription & Support 12 Months
Allround Automation Direct Oracle Access Standard license
VMware Fusion 10 Pro, ESD
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Программирование в AutoCAD
Компьютерный дизайн - Все графические редакторы
Мастерская программиста
Новости мира 3D-ускорителей
3D и виртуальная реальность. Все о Macromedia Flash MX.
Краткие описания программ и ссылки на них
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100