Привет всем флешелюбам и любителям флеша!
26 Матра 2011 года в Донецке состаялся UAFPUG#26, основная тема для докладов была "Flash для игроделов" (eсли кто не знает, то UAFPUG расшифровывается как Ukrainian Adobe Flash Platform User Group). И я там был, мёд пиво пил!) Ну а если серьёзно, то из этой встечи я вынес для себя много нужно и полезного! Я тоже выступал там с докладом, доклад был на тему:
"Основные этапы создания rpg игры"
1. Передвижение ГГ по сцене
2. Определение столкновения ГГ с препятствиями
3. Отталкивание от стен
4. Создание врагов
5. Создание мини-карты
6. Чего можно добиться А вот и сама презентация: P.S: ПРЕЗЕНТАЦИЯ РАСЧИТАНА НА ТО, ЧТО ВЫ ИМЕЕТЕ ХОТЯ-БЫ ОБЩЕЕ ПРЕДСТАВЛЕНИЕ О ACTIONSCRIPT 3.0!!
Основные этапы.
Слайд 1 На этом слайде показаны этапы по которым которым будет презентация.
Выбор уравления и его программирование.
Слайд 2, 3, 4, 5, 6. Управление является немаловажным аспектом любой игры, я решил остановиться на передвижение на WASD и повороте на AD. На пятом слайде написан код для передвижения персонажа на примере двух кнопок W и D. (P.S: код можно прокручивать колёсиком мышки).
Проверка столкновения персонажа с препятствиями.
Слайд 7,8,9. Первое, что нужно сделать, это добавить вспомогательные маркеры (как это делается показано на слайде 8). На слайде № 9 написан код для проверки столкновения ГГ с препятствиями.
Отталкивание персонажа от препятствий.
Слайд 10, 11, 12. Теперь в код проверки столкновение ГГ с препятствиями добавляем код для отталкивания персонажа от препятствий. Код проверки столкновений вместе с кодом отталкивания будет выглядеть так:
Слайд 13, 14, 15, 16, 17, 18. На слайде 14 видно, как нужно оформлять врагов. На слайде 15 представлен код для размещения врагов на сцене случайным образом. На слайде 17 показано, как заставить врага перемещатся вслед за персонажем.
Создание мини-карты.
Слайд 19, 20, 21. На слайде 20 предоставлен код, который я подобрал старым, добрым методом профессора Тыка, и который подходит только под радиус моей мини-карты, но на днях обязуюсь исправить код длямини-карты любого рамера :)
Чего можно добиться.
Слайд 22, 23. Немного посидев и пошаманив, можно добиться такого результата как на слайде 22.
Управление:
Передвижение: WASD
Удар (выстрел магией): щелчек мышкой.
Переключение оружия (магии): 1 2 3 4.
Переход на следующую локацию: Подойти к краю локации и нажать пробел.
Вот и презентации конец, а кто слушал - Молодец!)
P.S.S.: Если вам кажется, что вы уже где-то ведели эту презентацию, то не спешите кричать на меня, мол я вор :). Это моя презентация, просто решил закинуть её еще и на блог.
Рабочий исходник.
26 Матра 2011 года в Донецке состаялся UAFPUG#26, основная тема для докладов была "Flash для игроделов" (eсли кто не знает, то UAFPUG расшифровывается как Ukrainian Adobe Flash Platform User Group). И я там был, мёд пиво пил!) Ну а если серьёзно, то из этой встечи я вынес для себя много нужно и полезного! Я тоже выступал там с докладом, доклад был на тему:
"Основные этапы создания rpg игры"
1. Передвижение ГГ по сцене
2. Определение столкновения ГГ с препятствиями
3. Отталкивание от стен
4. Создание врагов
5. Создание мини-карты
6. Чего можно добиться А вот и сама презентация: P.S: ПРЕЗЕНТАЦИЯ РАСЧИТАНА НА ТО, ЧТО ВЫ ИМЕЕТЕ ХОТЯ-БЫ ОБЩЕЕ ПРЕДСТАВЛЕНИЕ О ACTIONSCRIPT 3.0!!
Основные этапы.
Слайд 1 На этом слайде показаны этапы по которым которым будет презентация.
Выбор уравления и его программирование.
Слайд 2, 3, 4, 5, 6. Управление является немаловажным аспектом любой игры, я решил остановиться на передвижение на WASD и повороте на AD. На пятом слайде написан код для передвижения персонажа на примере двух кнопок W и D. (P.S: код можно прокручивать колёсиком мышки).
Проверка столкновения персонажа с препятствиями.
Слайд 7,8,9. Первое, что нужно сделать, это добавить вспомогательные маркеры (как это делается показано на слайде 8). На слайде № 9 написан код для проверки столкновения ГГ с препятствиями.
Отталкивание персонажа от препятствий.
Слайд 10, 11, 12. Теперь в код проверки столкновение ГГ с препятствиями добавляем код для отталкивания персонажа от препятствий. Код проверки столкновений вместе с кодом отталкивания будет выглядеть так:
for (var i:Number=1; i<17; i++) { if ((stena.hitTestPoint(hero["p"+i].x+hero.x,hero["p"+i].y+hero.y,true))) { var ugol = Math.atan2(hero["p" + i].y,hero["p" + i].x); for (var i2:Number=1; i2<30; i2++) { hero.x -= 0.3 * Math.cos(ugol); hero.y -= 0.3 * Math.sin(ugol); if ((stena.hitTestPoint(hero["p"+i].x+hero.x,hero["p"+i].y+hero.y,true)==false)) { i2 = 31; } } } }Создаём врагов.
Слайд 13, 14, 15, 16, 17, 18. На слайде 14 видно, как нужно оформлять врагов. На слайде 15 представлен код для размещения врагов на сцене случайным образом. На слайде 17 показано, как заставить врага перемещатся вслед за персонажем.
Создание мини-карты.
Слайд 19, 20, 21. На слайде 20 предоставлен код, который я подобрал старым, добрым методом профессора Тыка, и который подходит только под радиус моей мини-карты, но на днях обязуюсь исправить код длямини-карты любого рамера :)
Чего можно добиться.
Слайд 22, 23. Немного посидев и пошаманив, можно добиться такого результата как на слайде 22.
Управление:
Передвижение: WASD
Удар (выстрел магией): щелчек мышкой.
Переключение оружия (магии): 1 2 3 4.
Переход на следующую локацию: Подойти к краю локации и нажать пробел.
Вот и презентации конец, а кто слушал - Молодец!)
P.S.S.: Если вам кажется, что вы уже где-то ведели эту презентацию, то не спешите кричать на меня, мол я вор :). Это моя презентация, просто решил закинуть её еще и на блог.
Рабочий исходник.
помойму классно и понятно сделано, я еще плохо ориентируюсь во флэш, еле освоил хит-тест для отталкивания от стены с четырех сторон. Да и сижу пока во флэш 8, но впринципе я понял как можно перевести на ас2, тут ничего трудного. Кстати а по какому принципу мини карта, я понял что там идет деление чтобы уменьшить героя и т.п, но просто интересно почему именно 15-18? как это зависит от размера комнаты?
ОтветитьУдалитьща буду пробовать такую штуку как миникарта из презентации. Мне пока столкновения такого уровня не требуются. А массив противников я вроде освоил раньше из книги.
ОтветитьУдалитьА у вас будет как создать камеру следующую за персонажем?
ОтветитьУдалитьЗдавствуйте, Виталий. Насчет мини-карты скажу так, она делалась на скорую руку, и если честно "методом тыка".В скором времени переделаю код, что бы работало на любых экранах (сейчас по идее будет правильно работать только на 550*400).
ОтветитьУдалитьКамеру следящую за персонажем можно сделать разными способами:
1). Прокрутка заднего фона вместо персонажа (по моему самый адекватный вариант).
2). Написать код "камеры". Это мувик который будет имитировать камеру, и привязать его по координатам к персонажу. (Если будет нужно, пишите, объясню подробно как это сделать).
Smitg9 как с вами связаться? Мой ящик dim_ok_23@mail.ru
УдалитьСпасибо за презентацию...все очень круто!!! .Один вопрос, почему у меня не происходит столкновения? у меня герой проходит под препятствием(( как сделать?
ОтветитьУдалитьскинуть свой исходник, я гляну.
ОтветитьУдалитьЭтот комментарий был удален администратором блога.
ОтветитьУдалитьСтрого, не судите...я ещё новичек в этом....))
ОтветитьУдалитьНе заметил, в коде есть ошибки...при объявление экземпляра..Stena..там по идеи везде..переменная stena...но и исправлиными ошибками так же нет столкновения..
ОтветитьУдалитьпрошу прощения за долгое молчание (не было интернета) Вот рабочий исходник с картой и врагами: http://portofolo-downl.ucoz.ru/files/UAFPUG06.zip
УдалитьP/S: Ссылка прикреплена к теме.
У меня CS4 и он не открывает исходник((((
ОтветитьУдалитьсегодня переделаю...
Удалитьпеределал под ЦС4 http://portofolo-downl.ucoz.ru/files/UAFPUG06.zip
УдалитьА как сделать чтобы враги толкали ГГ как в 18 слайде?
ОтветитьУдалитьзасунуть их в мувик с землёй, и передвигать)
УдалитьСсылка а исходник битая, дайте рабочую пожалуйста
ОтветитьУдалитьПростите за вопрос не в тему,мне нужна помощ по коду,неодин час ломаю голову над своим кодом.Что в нем неверно?
ОтветитьУдалитьvar hp1:int=50;
text1.text=hp1;
var hp2:int=50;
в нужных мне кадрах я прописал:
hp2-=5+Math.random()*5;
text2.text=hp2;
мне выдает ошибку "Неявное приведение значения типа int к несоответствующему типу String."
Попробуй так:
Удалитьvar hp1=50;
text1.text=hp1;
var hp2=50;
hp2-=5+Math.random()*5;
text2.text=hp2;
Мне нужно чтобы оно считало целыми числами,int убирать нельзя.
ОтветитьУдалитья решил задачу сам:
ОтветитьУдалитьvar hp1=50;
var hp2=50;
text1.text=hp1;
text2.text=hp2;
и в некоторых кадрах:
var i:int=5+Math.random()*5;
hp2-=i;
text2.text=hp2;
а где прогу эту скачать можно?
ОтветитьУдалитьА как сделать задержку между выстрелами?
ОтветитьУдалитьПочините ссылку на исходник, пожалуйста!
ОтветитьУдалитьили отправите *.fla файлом на mihaildulcev@mail.ru... это меня многому научит. Тема очень классная, РПГ очень хороший стиль, лично, как мне.
УдалитьСпасибо за уроки. А не могли бы вы более подробно обяснить код отталкивания от стен
ОтветитьУдалитьimport flash.events.Event;
ОтветитьУдалитьimport flash.text.engine.EastAsianJustifier;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
var hero_speed=5;
stage.addEventListener(Event.ENTER_FRAME, gameF);
function gameF(e:Event):void
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownF);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpF);
function keyDownF(e:KeyboardEvent):void
{
if(e.keyCode==Keyboard.D)
{
right=1;
}
if(e.keyCode==Keyboard.W)
{
up=1;
}
}
function keyUpF(e:KeyboardEvent):void
{
if(e.keyCode==Keyboard.D)
{
right=0;
}
if(e.keyCode==Keyboard.W)
{
up=0;
}
}
if(right==1)
{
hero.rotation+=7;
}
if(up==1)
{
hero.x=Math.cos(hero.rotation*(Math.PI/180)-90)*hero_speed;
hero.y=Math.sin(hero.rotation*(Math.PI/180)-90)*hero_speed;
}
}
Ругается на ваш "right" и "up"
Пишет:"Обращение несуществующего свойства".
Подскажите как исправить!?