Человек-панчлайн, attachMovieClip это метод AS2 по всей видимости.Как вариант можно создать массив в который и будут набиваться пули с уникальными именами а таймером или циклом проходить по массиву и очищать его. Как то так.Как только доберусь до компа попробую сделать подобное(За одно и массивы с циклами освою )
если ты хочешь сделать стрелковое оружие, то имхо, для отрисовки эффекта лучше чертить линию до точки стокновения с объектом.
Отнюдь.Движение пули с актуальной скоростью будет создавать иллюзию шлейфа что нам и надо. Кстати,а ты не знаешь как правильно создавать дубликаты пули или же их всех в массив запихнуть?
Добавлено (06.11.2011, 17:22) --------------------------------------------- noTformaT, А этот метод Math.sqrt AS3 поддерживает а то я его в справке не нашел что-то...
var gradus:Number;//Градус var mousex:Number;//Переменная для оси х var mousey:Number;//Переменная для оси у var bullet:MovieClip = new mc_bullet;//Переменная для создания пули var bulletSpeed:Number = 10;//Переменная для скорости пули
stage.addEventListener(MouseEvent.CLICK,mouseClick);//Слушатель для клика мыши stage.addEventListener(Event.ENTER_FRAME,bulletMove);//Слушатель для движения пули stage.addEventListener(KeyboardEvent.KEY_DOWN,moveHero);//Слушатель для движения Hero function mouseClick(e:MouseEvent):void//Функция для клика мыши { mousex = mouseX;//Узнаем ось по х mousey = mouseY;//Узнаем ось по у addChild(bullet);//Рисуем пулю(Кубик) bullet.x = hero.x;//Позиционируем кубик(Пулю) там где и Hero по х bullet.y = hero.y;//Позиционируем кубик(Пулю) там где и Hero по у trace(mousex, mousey); gradus = Math.atan2(mousey-bullet.y,mousex-bullet.x)*180/Math.PI;//Узнаем градус клика по отношению к пули. } function moveHero(e:KeyboardEvent):void//Функция для движения Hero. { //Движение с помощью WASD(У меня кнопка Left не пашет на буке ) if (e.keyCode == 87)//W { hero.y -= 5; } if (e.keyCode == 83)//S { hero.y += 5; } if (e.keyCode == 65)//A { hero.x -= 5; } if (e.keyCode == 68)//D { hero.x +=5; } } function bulletMove(e:Event):void {
var radians:Number = gradus * Math.PI / 180;//Переводим градус в радиан. var vx:Number = Math.cos(radians) * bulletSpeed;//Хрен знает зачем но надо... var vy:Number = Math.sin(radians) * bulletSpeed;//Хрен знает зачем но надо...
bullet.x += vx;//Двигаем пулю по оси х. bullet.y += vy;//Двигаем пулю по оси у
}
Вот Fla Тыц Теперь дело за малым,сообразить как сделать так что бы пуль было много а не одна(При повторном клике предыдущая исчезает) и удалить ее когда она выходит за приделы сцены.
Сообщение отредактировал Laendel - Воскресенье, 06 Ноября 2011, 13:33
mousex и mousey это координаты клика мыши.Нужно удалить объект когда координаты клика и пули будут совпадать или хотя бы находиться рядом. Весь смысл этого штурма мозга что бы создать выстрел.Искал в нете но там там заумно написано... Пытался разобраться с методами MathAtan2,Math.cos,Math.sin но нигде они не описаны туманно. Вот кстати статья интересная по этому делу... Тыц
Сообщение отредактировал Laendel - Суббота, 05 Ноября 2011, 22:38
Человек-панчлайн, В принципе то что надо.Можно закрутить креативно, но как мне удалить объект когда он доберется? Написал это но реакции ноль... if(bullet.x == mousex)//Проверяет равны ли координаты пули координатам клика по х { removeChild(bullet); }
Я немного изменил твой алгоритм. bullet.x=bullet.x+(mousex-bullet.x)/5; bullet.y=bullet.y+(mousey-bullet.y)/5; Там у меня при клике в переменные mousex и mousey вбиваются координаты мыши.У тебя в каждом фрейме обновлялись координаты мыши а так есть не меняющиеся координаты и пуля летит строго в точку клика. /5 как понимаю это кадры до конца пути?А можешь перевести на русский весь алгоритм а то даже смысл не улавливаю.Что для чего там? Но в целом очень круто все.Подобное я только с Tween Lite бы мог сделать,спасибо!
Сообщение отредактировал Laendel - Суббота, 05 Ноября 2011, 22:20
Забыл упомянуть что пишу (Пытаюсь писать) на AS3. Человек-панчлайн, Не работает.Пуля дергается в эпилептическом припадке. Вот Fla файл на всякий случай. Тыц
var mousex:Number;//Переменная для оси х var mousey:Number;//Переменная для оси у var bullet:MovieClip = new mc_bullet;//Переменная для создания пули var bulletSpeed:Number = 20;//Переменная для скорости пули
stage.addEventListener(MouseEvent.CLICK,mouseClick);//Слушатель для клика мыши stage.addEventListener(Event.ENTER_FRAME,bulletMove);//Слушатель для движения пули stage.addEventListener(KeyboardEvent.KEY_DOWN,moveHero);//Слушатель для движения Hero function mouseClick(e:MouseEvent):void//Функция для клика мыши { mousex = mouseX;//Узнаем ось по х mousey = mouseY;//Узнаем ось по у addChild(bullet);//Рисуем пулю(Кубик) bullet.x = hero.x;//Позиционируем кубик(Пулю) там где и Hero по х bullet.y = hero.y;//Позиционируем кубик(Пулю) там где и Hero по у } function moveHero(e:KeyboardEvent):void//Функция для движения Hero. { //Движение с помощью WASD(У меня кнопка Left не пашет на буке ) if (e.keyCode == 87)//W { hero.y -= 5; } if (e.keyCode == 83)//S { hero.y += 5; } if (e.keyCode == 65)//A { hero.x -= 5; } if (e.keyCode == 68)//D { hero.x +=5; } } function bulletMove(e:Event):void { //А что тут писать я даже не знаю.Что перепробовал то работает некоректно.Обидно блин... }
Все прокомментировано.Во Fla только два объекта это Hero и mc_bullet. Помогите.Ну или поугарайте над говнопроггером и укажите на ошибки...
Народ,помогите.Никак не могу сделать стрельбу... Задача создать и послать шарик в направлении курсора мыши от персонажа по клику и удалить его если он покинет границу сцены. Работаю в Flash Develop с Action Script 3. Скажите собственно как это сделать...
Пытаюсь на Flash написать игру (Точнее заготовки для опыта) похожую на проекты с Rpg Maker XP. Поскольку я нуб в программировании на Action Script 3.0 (Шаманю в Adobe Flash CS5) код у меня вышел грубый и длинный но то что хотел вышло.Персонаж ходит во все стороны и анимация вполне схожа с конструктором.
Что я сделал для этого.Я создал четыре MoveClip-а для персонажа,по одному для каждой стороны направления человечка и поместив их один на другой просто делал прозрачным остальные.Все четыре ходили в одну и туже сторону но прозрачность мувиков делает необходимую иллюзию. Но этот способ я знаю очень груб... Какой способ будет более правильным? Вот код...
import flash.events.KeyboardEvent; import flash.events.Event; stop(); heroVerh.alpha = 0; heroVniz.alpha = 1; heroLevo.alpha = 0; heroPravo.alpha = 0; var speedHero:Number = 5;//Скорость шага. var up:Boolean = false;//Проверка нажата ли w var down:Boolean = false;//Проверка нажата ли s var left:Boolean = false;//Проверка нажата ли a var right:Boolean = false;//Проверка нажата ли d var shag:Boolean = false;//Проверка идет ли анимация.Нужно для ее остановки.
stage.addEventListener(KeyboardEvent.KEY_DOWN,key_Down);//Слушатель нажата ли кнопка. stage.addEventListener(KeyboardEvent.KEY_UP,key_UP);//Проверка отпущена ли кнопка. function key_Down (e:KeyboardEvent):void { if (e.keyCode == 87) { up = true; shag = true; heroVerh.alpha = 1;//Прозрачность нужного мувика. heroVniz.alpha = 0; heroLevo.alpha = 0; heroPravo.alpha = 0; } if (e.keyCode == 83) { down = true; shag = true; heroVerh.alpha = 0; heroVniz.alpha = 1; heroLevo.alpha = 0; heroPravo.alpha = 0; } if (e.keyCode == 65) { left = true; shag = true; heroVerh.alpha = 0; heroVniz.alpha = 0; heroLevo.alpha = 1; heroPravo.alpha = 0; } if (e.keyCode == 68) { right = true; shag = true; heroVerh.alpha = 0; heroVniz.alpha = 0; heroLevo.alpha = 0; heroPravo.alpha = 1; } } function key_UP (e:KeyboardEvent):void { if (e.keyCode == 87) { up = false; shag = false; } if (e.keyCode == 83) { down = false; shag = false; } if (e.keyCode == 65) { left = false; shag = false; } if (e.keyCode == 68) { right = false; shag = false; } } addEventListener(Event.ENTER_FRAME,moveHero); function moveHero (e:Event):void { if (up && shag) { heroVniz.y -=speedHero; heroVerh.y -=speedHero; heroLevo.y -=speedHero; heroPravo.y -=speedHero; heroVerh.play();
Не могу понять как сделать так что бы кликаешь в определенную точку и персонаж(Кубик)двигался к месту клика. Помогите простым примером или пошлите меня туда где эта фишка описана...
Nikavr, Я тоже не играю,это просто стимул.Я на нем сайт свой обновляю когда срочно надо...Вообще Android можно считать бизнес-мобилкой...Такая туча программ удобных для ведения дел. Однозначно бери Android,не ошибешься.))