XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Общение> Трактир
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Kiran
Творю на Game Maker
offline
Опыт: 16,939
Активность:
Угол между двумя точками(Flash - AS3)
Реализовываю в игре взрыв, отбрасывающий попавших под него юнитов, но не знаю посредством чего можно определить направление, в котором нужно смещать противников по отношению к точке взрыва.

Отредактировано Kiran, 25.09.2012 в 17:12.
Старый 25.09.2012, 12:35
FunkieFoO

offline
Опыт: 7,159
Активность:
точка взрыва, точка где стоит юнит, начало луча в точке взрыва (луч должен проходить через точку, где стоял юнит) и двигать по направлению луча. Есс-но для каждого в отдельности
Старый 25.09.2012, 12:54
Kiran
Творю на Game Maker
offline
Опыт: 16,939
Активность:
FunkieFoO, это понятно, я не понимаю как код должен выглядеть, сама формула.
Старый 25.09.2012, 12:57
FunkieFoO

offline
Опыт: 7,159
Активность:
может быть стоило начать с того, в какой среде ты собираешься это реализовывать?
Старый 25.09.2012, 13:37
Kiran
Творю на Game Maker
offline
Опыт: 16,939
Активность:
FunkieFoO, actionscript3
Старый 25.09.2012, 14:39
Doc

offline
Опыт: 63,163
Активность:
Причем тут угол вообще?
Vec3 explosion, unit;
float explosionRadius;


Vec3 d = unit - explosion;
Vec3 vel = d * (explosionRadius - d.length());
Старый 25.09.2012, 16:40
Kiran
Творю на Game Maker
offline
Опыт: 16,939
Активность:
Doc, боюсь, в ас3 нет такого типа данных. Собсна вот пример того, что мне было нужно.

Код:
//создаём 1 объект
var n1 = new Shape;
n1.graphics.beginFill(0xFFCC00);
n1.graphics.drawCircle(40, 40, 40);
n1.x=500;
n1.y=600;
addChild(n1)
//2-й объект
var n2 = new Shape;
n2.graphics.beginFill(0xFFCC00);
n2.graphics.drawCircle(40, 40, 40);
n2.x=100;
n2.y=800;
addChild(n2)

//находим угол в радианах между точками
var rad:Number = Math.atan2(n1.y-n2.y,  n1.x-n2.x); 

//находим точку для смещения        
 var point = Point.polar(1, rad); //1 - это любая скорость

//покдлючаем ко 2-му объекту событие
n2.addEventListener(Event.ENTER_FRAME,function(){
      //смещаем об2 в сторону от об1 (+, если нужно притягивать)
      n2.x -= point.x; 
         n2.y -= point.y;
      })

Отредактировано Kiran, 26.09.2012 в 00:51.
Старый 25.09.2012, 17:12
Doc

offline
Опыт: 63,163
Активность:
Kiran, www.zambetti.com/projects/vector2d
Вот от таких просто РАКОВЫХ способов флешки и тормозят.
Старый 25.09.2012, 17:27
Kiran
Творю на Game Maker
offline
Опыт: 16,939
Активность:
Doc, хоспади... Док, где же ты был 4 часа назад?!
п.с Спасибо.

Kiran добавил:
Doc, эх.. если честно, не понял как работает система. Можешь объяснить как с её помощью сделать то, что мне надо?
Старый 25.09.2012, 17:56
Doc

offline
Опыт: 63,163
Активность:
Kiran, ну что объяснять, это векторная геометрия, 9-10 класс.
Старый 25.09.2012, 19:58
Kiran
Творю на Game Maker
offline
Опыт: 16,939
Активность:
Doc, ну, увы, но я не имею возможности отправится в прошлое и сказать себе, что мне таки это понадобиться в будущем). Но на самом деле я просто не понимаю зачем это использовать и почему мой способ раковый? Объект просто один раз находит угол и затем сдвигается по нему. Ну, только что надо вторую переменную из цикла вывести(в попыхах писал, теперь исправил).
Старый 26.09.2012, 00:51
Doc

offline
Опыт: 63,163
Активность:
Kiran, потому что он намного медленнее и основан на ненужных в данном случае полярках. Ну я в целом придираюсь, если один раз находится, то можно и так разумеется. Делай как знаешь, просто помни, что есть альтернатива проще, очень многие задачи можно решить с помощью векторов.
Старый 26.09.2012, 00:53
Kiran
Творю на Game Maker
offline
Опыт: 16,939
Активность:
Doc, ну, если честно, только от тебя услышал вариант с векторами(даже в гейм мейкере ф-ция поиска угла реализована по примеру выше), но таки спасибо.
Старый 26.09.2012, 00:57
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 18:17.