Просмотр полной версии : Пушка
Здравствуйте! Вот исходник. В нем я сделал пушку.
Она вращатся прямо за курсором мыши, стреляет, поворот снарядов сравнивается с поворотом турели. НО!.
Когда я выстреливаю второй снаряд, то первый останавливается! Знаю почему, но не знаю как сделать по-другому. Хочу чтобы снаряды были независимы друг от друга. Помогите пожалуйста. Спасибо.
snarn = "snar"+n;
вот поэтому, ты же меяешь объект у которого высчитываешь координаты (а высчитываешь их только для одного объекта).
Совет: добавляй объекты в массив и в онентерфрейме перебирай этот массив. Объект должен уметь "самоудаляться" из массива когда его координаты будут за пределами сцены + хранить в себе вектор направления куда он летел.
Если будут время - постараюсь написать код.
Bar_Duck13
08.10.2006, 01:17
Вот так всё работает
Bar_Duck13
08.10.2006, 01:22
2 wvxvw: Зачем массив, когда снаряды могут сами по-себе жить? А вектор - это и есть _rotation самого снаряда.
2 Bar Duck13:
А если я захочу 101 снаряд выстрелить? :P
Или у меня снаряды будут разного калибра?
Или я когда-нибудь во что-нибудь этим снарядом попаду?
Или снаряды будут отклонятся из-за ветра\рикошетить\взрываться\просто летать по дуге? (_rotation - это просто часный случай вектора направления) =)
Я не спорю, твой подход решает локальную задачу лучше, но в последствии могут возникнуть сложности =)
Bar_Duck13
08.10.2006, 02:37
Если quicker спрашивает такой в принципе несложный вопрос, то значит он только учиться. А ты замахнулся на столкновение, ветер и т.п. Всё можно сделать потом, да и вообще без использования массивов. Нафига геморой.
2 quicker: меня заинтересовала задача и я решил ещё помочь. Забабахал за время, прошедшее с последнего ответа. В моём примере всё "живёт" сомо по себе. (И без массивов)
Это как же без массивов, а это кто? =)
enemyArr=[];
Да ладно, я ж говорю, что не спорю, и что твое решение для данной конкретной задачи проще, а значит лучше =)
2 wvxvw:
Товарищ Bar_Duck13 имел ввиду, что ему не нужен массив для хранения снарядов пушки. У него есть только массив врагов.
Мне лично такое не очень нравится. Во-первых код разнесён, во-вторых люблю разделять графику и движок. ^_^
Bar_Duck13
08.10.2006, 13:52
2 wvxvw: Вместо "enemyArr=[];" может быть и "enemyArr={};". Это сути дела не меняет. Поэтому у меня нет массива врагов, а есть объект врагов. По моему массив - это и есть объект. А снаряды действительно надо было тоже поместить (attach) в объект.
2 Хемуль: Было у меня пару работ, где строк кода > 1000. А в общей сложности ~ 2000 строк. Я запарился искать нужные строки. А разнеся код я знаю - действие такое в клипе таком, действие другое - в другом. Я понимаю - надо было выносить код в *.as файлы и присоединять include. Но что есть, то есть. И ёще: объясни, как это разделять графику и движок во Flash??? Я ещё работаю в Delphi и я знаю как это делять там. Процедура действий и графики отдельно. Не зависимо какой у тебя FPS действия в игре не ускоряются и не замедляются. А во Flash это взаимосвязано. Увеличишь скорость кадров и действия ускорятся.
2 Bar_Duck13:
Да, знаю... Я недавно сдал игрушку на 1000+ строк кода... Бывает сложно сразу сориентироваться под конец рабочего дня в этом всём...
По поводу разделения... Я имел в виду, что обычно как можно меньше всего храню в мувиклипах. Обычно я оперирую с обьектами в массиве, а потом переношу результат вычеслений на свойства мувиклипов.
Насчет разделения логики от графики - Model-View-Controller, гуглим и смотрив в википедии =)
//Вращение турели танка относительно ЕГО (НЕ СЦЕНЫ) координат
//Для этого используется метод "globalToLocal"
tank_point = {x:_xmouse, y:_ymouse};
tank.tur.globalToLocal(tank_point);
tank.tur._rotation -= Math.floor(Math.atan2(tan....Ребята, проще надо быть! tank.tur.onEnterFrame = function(){
this._rotation = Math.atan2( this._ymouse, this._xmouse )*180/Math.PI;
}
Ребята, проще надо быть! tank.tur.onEnterFrame = function(){
this._rotation = Math.atan2( this._ymouse, this._xmouse )*180/Math.PI;
}
ты хоть сам видел, что получится?? :taunt:
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.