PDA

Просмотр полной версии : Разброс пуль при стрельбе


Toxedo
30.08.2008, 10:38
Нужно чтобы аттаченые мувики летели не точно в одном направлении а в пределах определеного угла. Будьте добры подскажите кусок кода или хотябы ключевое слово в поиске, а то на все запросы типа "векторы""Углы" находит хрень по перебросу из корел дроу изображения во флеш)

Division
30.08.2008, 11:35
Вообщем, представим, что каждый мувик движется под своим углом. То есть что-то вроде.

_x+=Speed*Math.cos(ang);
_y+=Speed*Math.sin(ang);

Тогда при добавлении мувика нужно задать его угол и скорость.
Предположим, что среляем мы под углом Angle, разброс пуль составляет D.
Значит, инициализация мувика выглядит как

ang = Angle + Math.random()*D-D/2;
Speed = 8;

Вроде так. Могу ошибиться, так как писал сразу в форуме. Не забываем, что углы в радианах (:

Toxedo
30.08.2008, 15:36
Чтот рандом не хочет работать как нужно. Все равно все Мк по одной линии летят(

Division
30.08.2008, 16:00
Покажи свой код. Думаешь я телепат?

Toxedo
30.08.2008, 16:21
i = 1
a = "mc"
ang = 1 + Math.random()*10-10/2;
Speed = 8;
onEnterFrame = function(){
this[a+i]._x+=Speed*Math.cos(ang);
this[a+i]._y+=Speed*Math.sin(ang);}

onMouseUp = function(){
i++
this.attachMovie("ss", a+i, this.getNextHighestDepth(), {_x:_xmouse, _y:_ymouse });
trace ([a+i])
}

Division
30.08.2008, 16:37
Насколько я понял, у тебя ang общий для всех клипов. Сделай у каждого мувика своё свойство ang.
UPD: и ещё я бы советовал переводить угол в радианы перед скармливанием синусам/косинусам

Toxedo
30.08.2008, 20:06
Насколько я понял, у тебя ang общий для всех клипов. Сделай у каждого мувика своё свойство ang.
UPD: и ещё я бы советовал переводить угол в радианы перед скармливанием синусам/косинусам

Спосибо, все заработало как нужно, но тут еще одна вешь. Угол по которому отстреливаются Мк не изменяется, а мне нужно чтобы был прицел по нужному Клипу, допстим "Vrag". Как это можно реализовать, но также разбросом рандомным, чтоб ни каждый Мк попадал в Vrag?

Division
30.08.2008, 20:36
Ну а в чем проблема-то?
Пишешь что-то вроде
ang = NeedAng + Math.random()*10-10/2;
Ну а NeedAng находишь при помощи функции Math.atan2. Которая, кстати, возвращает радианы (:
PS смотри гугл и help