Делаем во флэше движение персонажа как в Crimsonland
12.02.2009, автор Stormit, рубрики: ActionScript, Flash игры, Игровые баннерыДумаю, что многих в своё время зацепила игра Crimsonland. Лично мне нравится как там реализовано управление главным героем. При нажатии клавиши “Вверх” персонаж смещается не строго вверх, а туда, куда смотрит. Кнопки “Вправо” и “Влево” только поворачивают героя и меняют направление движения.
Такое движение сделать во флеше очень просто, достаточно знать формулы синуса и косинуса. Этим мы и займёмся.
Для начала нам нужен сам объект, пусть это будет танк, так наглядней. Он состоит из двух частей: ходовая часть (foot) и башня (body). Дальше мы будем поворачивать башню за мышкой, поэтому я вынес её в отдельный клип. Сам клип - танк будет называться hero. Слоем выше в кадре будет весь скрипт, управляющий движением. Внутри клипа foot сделана анимация вращения колёс (будет запускаться и останавливаться скриптом). Всё должно быть как на слайде 1.
Для перемещения танка нам нужно хранить всего 2 переменные: скорость перемещения и скорость поворота. Угол поворота можно всегда считать с самого клипа hero. Далее переводим данные из полярной системы координат в Декартову. Формулы преобразования на слайде 2.
В кадре пишем управляющий код:
var step = 2; //скорость перемещения var rotDirSpeed = 5; //скорость поворота onEnterFrame = function () { if (Key.isDown(Key.LEFT)) { hero._rotation -= rotDirSpeed; //поворачиваем танк влево } else if (Key.isDown(Key.RIGHT)) { hero._rotation += rotDirSpeed; //поворачиваем танк вправо } var dirAngle = hero._rotation / 180 * Math.PI; //угол поворота танка в радианах if (Key.isDown(Key.UP)) { hero.foot.play(); //запускаем анимацию колёс hero._x += step * Math.cos(dirAngle); //проекция скорости на ось x hero._y += step * Math.sin(dirAngle); //проекция скорости на ось y } else if (Key.isDown(Key.DOWN)) { hero.foot.play() hero._x -= step * Math.cos(dirAngle); //идём hero._y -= step * Math.sin(dirAngle); //назад } else { hero.foot.stop(); //останавливаем анимацию колёс } }
Если всё сделано правильно, танк должен ездить как на слайде 3.
Пока очень примитивно, управляясь только с клавиатуры. Этого нам мало. Настоящий танк должен уметь крутить башней и стрелять, иначе толку мало. Раз так, то внутри клипа body делаем анимацию выстрела (не забываем в первом кадре поставить stop()). Башня будет крутиться вокруг центра клипа, так что выставьте его корректно. Немного перепишем код и получим слайд 4.
var step = 2; var rotDirSpeed = 5; onEnterFrame = function () { if (Key.isDown(Key.LEFT)) { hero._rotation -= rotDirSpeed; } else if (Key.isDown(Key.RIGHT)) { hero._rotation += rotDirSpeed; } var mDx = _xmouse - hero._x; var mDy = _ymouse - hero._y; var mAngle = Math.atan2(mDy, mDx); hero.body._rotation = -hero._rotation + mAngle / Math.PI * 180; //поворачиваем башню за мышкой var dirAngle = hero._rotation / 180 * Math.PI; if (Key.isDown(Key.UP)) { hero.foot.play(); hero._x += step * Math.cos(dirAngle); hero._y += step * Math.sin(dirAngle); } else if (Key.isDown(Key.DOWN)) { hero.foot.play() hero._x -= step * Math.cos(dirAngle); hero._y -= step * Math.sin(dirAngle); } else { hero.foot.stop(); } }; onMouseDown = function () { hero.body.play(); //стреляем по клику };
Чтобы башня стреляла (стреляем по клику) не так часто, проще всего продлить анимацию выстрела.
С механикой понятно, но ведь в Crimsonland бегает не танк, а матёрый боец. Попробуем перерисовать и сделать человека. Всё работает, только тело неестественно крутится на все 360 градусов (слайд 5).
Сделаем так, чтобы корпус мог поворачиваться вправо и влево только на 90 градусов от направления движения. Чтобы игроку было понятнее куда можно стрелять, да и вообще, куда повёрнут главный герой, обозначим это графически. Немного меняем код и получаем слайд 6:
var step = 2; var rotDirSpeed = 5; onEnterFrame = function () { if (Key.isDown(Key.LEFT)) { hero._rotation -= rotDirSpeed; } else if (Key.isDown(Key.RIGHT)) { hero._rotation += rotDirSpeed; } var mDx = _xmouse - hero._x; var mDy = _ymouse - hero._y; var mAngle = Math.atan2(mDy, mDx); hero.body._rotation = -hero._rotation + mAngle / Math.PI * 180; if(hero.body._rotation < -90) { //ограничение поворота влево hero.body._rotation = -90; } else if(hero.body._rotation > 90) { hero.body._rotation = 90;//ограничение поворота вправо } var dirAngle = hero._rotation / 180 * Math.PI; if (Key.isDown(Key.UP)) { hero.foot.play(); hero._x += step * Math.cos(dirAngle); hero._y += step * Math.sin(dirAngle); } else if (Key.isDown(Key.DOWN)) { hero.foot.play(); hero._x -= step * Math.cos(dirAngle); hero._y -= step * Math.sin(dirAngle); } else { hero.foot.stop(); } }; onMouseDown = function () { hero.body.play(); };
Персонаж ходит и стреляет. Слегка необычное управление вносит в игру дополнительный интерес. Чтобы проверить его на играбельность, забрасываем нашего бойца в реальные условия и даём неограниченный боезапас. Оказывается, пока мы всё это делали, Землю захватили зомби и надежда теперь только на нашего героя. Удачного вам истребления нежити (слайд 7)!
Интересно на 72%




Уря! А мы думали ты уже умер
молодец, что не забросил блог) мы те6я ждали)
Привет!
Классный у тебя проект, очень интересные и красочные и оригинальные статьи!
Вопрос. На AS3 планируешь переходить?
Очень здорово! Восхищаюсь твоим умением рисовать.
Все довольно просто, но тем не менее интересно!
(фигура дергается влево-вправо, когда мышь за спиной персонажа - но это так, маленькие придирки
Рад тому, что блог жив! Желаю чтобы были силы, время и возможности продолжать вести его
Творческих успехов!
Дождались
Как всегда, отличная статья.
Но управление персонажем совсем не такое как в CrimsonLand.
Оно интересное, добавляет что то свое в геймплей, но на мой взгляд не очень удобное.
Тоже заинтересовал вопрос почему опять AS2 ? Процесс разработки “вирусного кризиса ” оставил желать лутшего?
А я за AS2… Зачем что-то усложнять, если можно сделать в разы проще и понятнее? Да, может быть не совсем правильно, может AS2 это “недоязык”, но… Мне он больше нравится
2Виктор - ну для дизайнера AS2 может проще и понятнее (не буду спорить), а для программиста однозначно AS3 (особенно если программист имел опыт программирования на других языках с использованием ООП ).
Интересно что скажет Денис ?
Спасибо, я и не ожидал такого отклика.
Более-менее крупные игрушки я теперь пишу на AS3, а на AS1 мне здесь проще писать: меньше строк кода и быстрее получается.
Кто захочет на AS3 сам портирует, хотя я сам АС2 терпеть уже не могу…
Денис все верно делает - чем меньше цифра после AS - тем шире аудитория.
Никогда флеш не получил бы такого расрпостранения, если бы не ранние версии его языка, доступные даже таким гуманитярям как я ))) Предков уважать надо.
И да, отличная статья ) Снова синус и косинус на коне )
А мне поворот персонажа на 360 градусов больше понравился.
“Лично мне нравится как там реализовано управление главным героем. При нажатии клавиши “Вверх” персонаж смещается не строго вверх, а туда, куда смотрит. Кнопки “Вправо” и “Влево” только поворачивают героя и меняют направление движения.”
Не было там такого НЕ БЫЛО. Если бы там бы ло как вы написали, то как раз играть с тем способом управления который вы реализовали было бы очень сложно. Это как раз и видно в 7 экране вашей презентации. А было там очень удобно - клавиши управления перемещали героя в абсолютных направлениях, а мышкой крутилось туловище с оружием.
ура с возращением!!!
пиши хоть строчечку инода…
хоть просто if (1 = 1) trace(1)
ведь мы тя полюбили и скучаем без тя
PS: ты сейчас чтото вояешь, так кидай нам микро кусок из работы и говори что ето хитрость - головоломка
давно это было, остались одни воспоминания, но мне казалось что именно так… поставлю ещё разок
Поздравляю с возвращением.
Не расскажешь, где обычному программисту можно научиться так здорово рисовать?
хитрый, у меня какая-то беда. вроде пишу всё по твоим интсрукциям, а в итоге танчеГ стоит на месте и как-то невесело крутит колёса… если есть исходник, не мог бы выслать его на мыло lifeissimple@mail.ru
заранее спс
“Думаю, что многих в своё время зацепила игра Crimsonland. Лично мне нравится как там реализовано управление главным героем. При нажатии клавиши “Вверх” персонаж смещается не строго вверх, а туда, куда смотрит. Кнопки “Вправо” и “Влево” только поворачивают героя и меняют направление движения.”
Замечу, что это способ управления персонажем в Crimson Land является нестандартным (да и неудобным для многих игроков). По умолчанию персонаж двигается именно по направлению нажатой клавиши.
Но для танка, конечно, подобное управление довольно удобно
to PagaN
Выбери себе простой стиль рисования (минимум линий и т.д). Например Shag или Cartoon Networks.
Передавай всё квадратными формами, если хочешь, а всем будешь говорить что это твой стиль
to Life
Не знаю, вроде расписал всё. Если есть клип с именем hero и на той же линейке слоем выше в кадр скопирован код - танк должен ездить.
народ сделайте пож видео урок….я ничего непонял
Спасибо за очень хорошие уроки. У меня целых 3 вопроса, надеюсь получить ответ:
Первый и самый простой. Как была сделана надпись “Еще раз”?
Второй и сложный. Как Вы прописывали столкновения, очень хотелось бы, чтобы Вы продлили урок, с описанием создания 7 кадра.
Третий и последний. Как сделать, чтобы зомби следовали за игроком.
Спасибо.
1) шрифт “Beast Impacted”
2) столкновения проверяются каждый кадр через hitTest() пули с каждым монстром (с каким-то символом внутри монстра)
3) движок такой же как и у главного героя, они всегда идут вперёд (куда смотрят), только поворачиваются всегда строго на жертву.
“2) столкновения проверяются каждый кадр через hitTest() пули с каждым монстром (с каким-то символом внутри монстра)”
При увеличении скорости монстров или пуль, пули смогут пролетать сквозь монстров, если не повезет и пуля провериться в кадре до и в кадре после пролета монстра
Всё нормально если скорость пули в пикселах не превышает её длину (ну и к зомби это тоже относится)
Ждем урока с трейсингом :)) Хотя особенно пытливые могут найти неплохие примеры от разработчиков N
Да, жаль что у меня не получиться…
Вот спасибо. Я правда такие штуки давно уже пробовал реализовать, но все равно интересно поглядеть на разное исполнение. Спасибо.
ЗЫ. не пропадай смотри (а чужим нельзя ничего постить?).
Помогите,добрые люди.Хочу сделать свою игру на флеш.Столько идей накопилось в голове.Пробовал изучать програмирование но нихрена не понял(может потому что плохо читал или плохо написано).Хочу сделать РПГ с широким спектром возможностей(реализовать различный транспорт,сложную систему развития персонажа и всё такое З.Ы. это я канешно широко замахнулся))) ),Ченить типо сталкера,тока 2d,вид сверху.Вышлите мне на мыло плиз несколько подробных,понятных,наглядных уроков.Пожалуйста…очень прошу!!!
Мыло nrjyzr@yandex.ru
2Димон: Поржал )))))))))))))))))))
“Пробовал изучать програмирование но нихрена не понял”.
Бу-га-га!
Сколько я повидал людей пишущих подобное, они “нихрена не понимают” и через 10 лет.
С таким подходом программистами не становятся.
Учись учись и еще раз учись. Сам! Иначе так и будешь всю жизнь напрягать всех вокруг - “пришлите мне то”, “помогите сделать это”…
Плохо, что не показал как создать движение пули и создания и “искусственного интеллекта” - зомби. Жаль… Хоть и за это спасибо.
Могу рассказать об этом, только нового мало будет. Те же принципы применяются к перемещению пули и зомби (появятся функции добавления пули и зомби и проверка на попадание). А интеллект соответствует живому трупу - тупо поворачиваться и идти на свою жертву.
Так,ладно.Буду пытаться изучать програмирование.Дайте пожалуйста хотябы ссылки на полезную литературу.
Димон - вот те ссылки
http://www.gamedev.ru/articles/
http://www.dtf.ru/articles/articles.php
но про игру “Мечту” - забудь. Если начнешь с маленького и сделаешь несколько простеньких игр или демок (змейка, тетрис, пакмен, линии). Сделаешь не просто копи-пастом а с пониманием, тогда и желание делать РПГ - отпадет само сабой.
Отличный блог! Немедленно подписываюсь…
2Алексей:
а чего там с пулями? Работает так же как персонаж, только повернуть нельзя.
Задаешь угол выстрела, скорость, вычисляешь смещение по иксу и игреку и двигаешь потихоньку.
// это задается один раз
angle = 50
speed = 5
dx = speed * Math.cos(angle*Math.PI/180);
dy = speed * Math.sin(angle*Math.PI/180);
//а этим двигаешь потихоньку (или по-быстрому)
burrel_mc._x +-= dx;
burrel_mc._y +-= dy;
с монстрякой после каждого движения корректируешь его поворот, чтобы точно на тебя пер. Там интеллектом и не пахнет (от мертвецов другим пахнет наверное
burrel_mc._x +-= dx;
burrel_mc._y +-= dy;
ы, откуда вылезло? там просто += без минусов %)))
А можно продолжения с добавлением монстров и стерльбой? ))) Очень хоцца доделать)
А расскажите пожалуйста, как сделать, чтобы он не поворачвался вправо-влево от нажатия стрелок… а шёл туда…
То есть… я использую WASD для перемещения… “hero” перемещается в 8 направлениях… вперёд-назад-вправо-влево-и по диагоналям… перемещатся-то он перемещается, а вот как поварачивать “foot” в нужную сторону…
А в чём проблема?
Это ещё проще. Просто смещайте его по _x или _y если нажата нужная клавиша. Если зажата клавиша LEFT, _x уменьшаем, если RIGHT - увеличиваем. То же с _y.
Ха))ваще по теме статья,сейчас буду Crimsoland 5 создавать)))))
…ненене… я смещать понял как… я не понял, как поворачивать нижнюю часть тела в нужном направлении… при нажатии RIGHT он идёт направо, но ноги так и идут вперёд…
Вот… неговоря уже о диагонали…
…бррр… прошу прощения, может я не правильно обьясняю…
Это я всё знаю…
При нажатии кнопки “w” и кнопки “d” ‘hero” идёт по диагонали вверх-направо… но “foot” не поворачивается на 45 градусов.
И как это сделать, я не понимаю…
…простите, что туплю… но у меня никак не выходит сделать…
Смотря как он у вас движется (можно нажатие клавиш проверять).
В любом случае угол поворота можно вычислить так:
hero._rotation = Math.atan2(speedY, speedX) / Math.PI * 180;
Уважаемый Stormit, а можно вам письмо написать, и исходник показать?
Мой адресс: glkn@yandex.ru
Мне свободно можно слать письма вот сюда: contact[лайка]xitri.com
Работает спам-фильтр, так что пишите “человеческие” письма
Я не знаю насколько правомерно давать ссылки на сайты, но для начинающих, которые хотят написать свою РПГ существует уже давно ресурс http://flashdocs.net (не сочтите за рекламу, я там наприер не обитаю)
Судя по последним новостям, действительно давно, а если смотреть на google PR, то гугл его ещё даже не проиндексировал. В любом случае сайт по теме.
уроки конечно хороши, но я афигеваю с того как все быстро расписывается…. там создали анимацию… тут вот это… получается это….
по коду все ясно, на 5+
но по действиям… ваще неуловимо все… точней нужно быть! а то некоторые сидят и не втыкают почему башня у танка не крутится!
без обид, просто заметка!
Ну а как писать, что символ создаётся по нажатию клавиши F8 а анимация во флеше бывает 2-х типов: шейпморфинг и твининг? Так это есть на других сайтах, здесь только ньюансы и полезные готовые решения.
Сложно объяснить чтобы охватить всю аудиторию, одним будет непонятно, другим слишком разжёвано. Поэтому я рассчитываю что люди знают что такое флеш, знают где панель инструментов, умеют создавать символы, делать анимацию и знают где и как писать Actionscript.
Спс огромный за разъяснение, что да как делать, только не могу понять почему у меня при проварке кода все ок, а ничего не двигается.
P. S. если можно разъяснить поподробнее может на мыло скинуть чего если возможно.
Почему когда при нажатии кнопок ап и давн танк двигается не той стороной? (он как бы смещается просто в сторону - едет боком) уже 100 раз перепроверил код.
Toto:
Зайди в объект Танк и поверни его на 90 градусов, если не повезет будет ехать задом, а если повезет - передом.
у меня все отлично работает, но одно НО…
почему то…. при движении курсором… пушка отклоняется на 90 градусов….. тоесть что бы попасть в угол 0 градусов(вверх) курсор должен бытьотклонен право
В первом кадре тело танка и пушки направлены на север ) вот потому таки и делал в мк.
Попробую повернуть )
П.С. Исходники мастби )
Во флеше 0 градусов, совпадает с осью Х. То есть, чтобы не было глюков, танк должен смотреть влево (сам клип и башня внутри) и при этом _rotation у клипов должен быть равен 0. Проверяйте на панели Transform.
что-то всеравно не хочет…. курсор вправо.. пушка вверх… сразу как начинаю двигать курсор влево ппушка тоже влево но с разницей в 90 градусов
Зайди в клип body и верни графику на 90 градусов
Спасибо за пример ! Искал, то что надо !
Народ скажите почему танк при движении назад поворачивает в противоположенную сторону и как с этим бороться.
скажите пожалуйста , как сделать в 6-ом флеше , чтобы камера следовала за героем , т.е он не исчезал с экрана , а экран вроде как двигался бы за наим…ну как в обычных играх….скажите пожалуйста..
Следующая статья будет об этом
спасибо большое !
доброе время суток, я только начинаю учиться так, что вопрос может выглядеть по дурацки… у меня не получается что бы танк ездил. что я делаю не так:
1. создаю танк, перевожу в символ (foot, body)
2. из них создаю символ (hero)
3. в hero создаю второй слой, в кадер (вкладка действие) копирую код
4. управление - проверить ролик - танк как вкопаный?
В 3-м шаге ошибка: код нужно прописать на уровень выше, в той же линейке где лежит клип hero
а Вам не сложно будет выслать исходник? на spireT4@Yandex.ru, буду вам очень признателен.
Stormit, не могли бы Вы подсказать код для кнопок типа Q, W, E и т. д.?
Key.isDown(Key.Q) и Key.isDown(Q) не работают - выдают ошибку.
GALLlblSH
смотри коды любых нужных кнопок.
пропиши в первом кадре
stop();
this.createTextField(”showkod_txt”, this.getNextHighestDepth(), 10, 10, 100, 32);
showkod_txt.text=”нажать кнопку”;
var keys:Object = new Object();
keys.onKeyDown = function() {
showkod_txt.text=Key.getCode();
};
Key.addListener(keys);
Может боян, но никак не могу найти. Как сделать чтобы “герой” перемещался по клику мышки. То есть первым кликом его выделяем, вторым задаем координаты перемещения.
А здесь этого и нет. В примере описано управление с клавиатуры.
Чтобы шёл в заданную точку (куда кликнули), нужно поворачивать объект в нужном направлении (dirAngle) и смещать его каждый кадр, пока он не достигнет цели.
Разве не так?
onClipEvent (load) {
_x = 0;
_y = 0;
speed = 100;
}
onClipEvent (mouseDown) {
endX = _root._xmouse;
endY = _root._ymouse;
}
onClipEvent (enterFrame) {
_x += (endX-_x)/speed;
_y += (endY-_y)/speed;
}
Правда у меня здесь один объект следует куда щелкнешь мышью. А вот как бы сделать несколько таких объектов. Типа стратегия будет))
Приветствую, не подскажите юному программеру, как применить ХитТест к флешке, подобной CrimsonLand’у, чтобы персонаж не мог, скажем, выходит за пределы флешки? Заранее благодарен)
to Anton
В вашем случае объект будет двигаться с замедлением, так как шаг смещения зависит от расстояния до цели.
Нужно вычислять угол поворота до цели и раскладывать скорость по координатам:
var dx = endX - _x;
var dy = endY - _y;
var angle = Math.atan2(dy, dx);
_x += speed * Math.cos(angle);
_y += speed * Math.sin(angle);
to comRAT
Лучше проверять по координатам и если объект выступает за одну из границ - возвращать его на границу. HitTest тут излишен.
Спасибо, уже сам сообразил) И отдельное спасибо за ваш блог - очень многому научился)
блин что-то у меня не получается выставить корректно центр клипа.Пушка двигается вокруг корпуса.Не подскажите как нормально выставить ??(не ругайтесь я нубас)
Скажи пожалуйста, а как сделать, чтобы оставались следы некоторое время от танка? Как то не могу додуматься.
2 HunTGuN
у тебя не от центрована пушка.
1. Зайди в клип body
2. Выдели всю башню
3. Поставь башню так где у нее люк на крестик внутри клипа (это его ось так сказать)
4. Если все правильно поставил, то должно крутится как надо.
Насчтеп следов от танка, я не могу понять все таки как использовать правильно функции global
Как привязать следы к этим координатам. Помогите кто-нибудь. Читал комментарии здесь http://xitri.com/2008/07/09/flash-programming-drive-a-car.html но мне это не слишком помогло, хотя направление мысли уловил, но не могу реализовать. 
Это конечно очень круто!!! Крутой саит! Решил попробовать сделать то-же самое но ничего не получается
Можете подсказать может есть подробное описание создания чего то подобного? А то весь нет облазал ничего ненашел
для Витали: единственный выход - найти книжку по adobe Flash(в стиле: для новичков, или для чайников) и изучить азы флеша. Если нужны исходники этого урока я могу дать: стучись в аську: 598615762. С ув. Марьян.
Супер а можно исходник на почту
пожалуйста mosya_377@mail.ru
Как всегда отличный пост. У меня есть вопрос. Перевожу ваш пример на AS3. И все получилось только вот не пойму одного. Почему координаты у меня вычисляются по-другому - не так как у вас. Вот код из файла tank.as в который является классом танка
public function functionEnterFrame(event:Event):void
{
var angle = this.rotation/180*Math.PI;
if(left)
{
this.rotation -= rotSpeed;
}
else if(right)
{
this.rotation += rotSpeed;
}
if(down)
{
this.foots.play();
this.x -= speed*Math.sin(angle);//не понятно почему здесь другие расчеты
this.y += speed*Math.cos(angle);
}
else if(up)
{
this.foots.play();
this.x += speed*Math.sin(angle);
this.y -= speed*Math.cos(angle);
}
else
{
this.foots.stop();
}
}
как видно из кода для x получается не cos а sin . это не понятно. Но все ездит и поворачивается.
Наверное потому что у вас там знак +=
для обоих координат операция должна быть одинаковой - либо прибавляем, либо вычитаем
Да нет. Все подбиралось опытным путем. Если я ставил везде += то движение было неверным. А так танк двигается в точности как у вас на примере. Самое интересное что все функционирует, только код мне самому не понятен как работает.
То же перевожу на AS3. Но не все получается, Юрий можно попросить сбросить исходники на 1redgar1@mail.ru заранее благодарен.
Блин парни я начинающий в етом деле но уменя ничего не получается можете кинуть исходник на Daemon.D.G@mail.ru или web-moder@mail.ru или вообще здесь выложить
.З.Ы. буду очень признателен
День добрый.
Первое.
ReDgar, исходники тю-тю, нету теперь. Полетел винт и все барахло что было накрылось. Так что извиняй, ничего прислать не смогу.
Второе.
Дима, не поверишь. Я тоже новичек и еще какой. Так что смотреть мои исходники не стоит, наверное, тем более (как следует из пункта 1) у меня их теперь нет.
Добрый день) у меня почему то башня двигается за мышкой как то не правильно, курсор в оной стороне а башня поворачивается в другую. Почему так происходит?
Зайди в клип “башня” и поверни её дулом вправо.
Народ помогите плз!
У меня adobe flash cs3, и я делаю такие шаги:
1. Создаю танк, правда без анимации колес, называю его foot
2. Создаю башня, называю body
3. Все это объединяю в hero
4. Дальше создаю новый слой и там пишу код:
var step = 2; //скорость перемещения
var rotDirSpeed = 5; //скорость поворота
onEnterFrame = function () {
if (Key.isDown(Key.LEFT)) {
hero._rotation -= rotDirSpeed; //поворачиваем танк влево
} else if (Key.isDown(Key.RIGHT)) {
hero._rotation += rotDirSpeed; //поворачиваем танк вправо
}
var dirAngle = hero._rotation / 180 * Math.PI; //угол поворота танка в радианах
if (Key.isDown(Key.UP)) {
// hero.foot.play(); //запускаем анимацию колёс
hero._x += step * Math.cos(dirAngle); //проекция скорости на ось x
hero._y += step * Math.sin(dirAngle); //проекция скорости на ось y
} else if (Key.isDown(Key.DOWN)) {
// hero.foot.play()
hero._x -= step * Math.cos(dirAngle); //идём
hero._y -= step * Math.sin(dirAngle); //назад
} else {
// hero.foot.stop(); //останавливаем анимацию колёс
}
}
5. нажимаю alt+enter и на стрелки танк не реагирует!(
Пробовал с анимацией - то же самое.
тут что то нужно высчитаывать?
Никита, а ты в пропертис муви клипов в поле instance name давал соответствующим клипам соответствующие имена? - херо, боди, или что там еще есть?
А каким образом было реализован метод ротации танка не через его 0,0 а через его центральную часть ?
Леха, я называл херо боди када делал их в муви клип))спс!)
народ может у когото есть исходник у меня постоянно ошибка выдается все кода. что не так сделал не знаю! нужно нормальный урок чтобы люди видели как что и где прописывать,если есть то скиньте исходник буду по ниму изучать свои ошибки terminator200911@mail.ru
зарание благодарен!!!
Народ я тут сайт нашел с исходниками старых игр http://flashgame2010.ucoz.com/ может по таким игрушкам что то сделают!
Stormit можете выслать мне исходник,почему то когда я делаю все получается только почему то ноги от тела отсоединяются!
Добрый день. Если кто перевел этот пример на AS 3.0 - вышлите мне пожалуйста исходники. Заранее премного благодарен!
STORMIT подскажи пожалуйста как сделать чтобы ноги и тело вместе поварачивались за мышкой! заранее спасибо.
почему может быть такое, что он считает передом hero его правый бок, когда нажимаю вперед идет вправо, нажимаю вправо идет вниз и т.д