Страница 1 из 1

Смещение эмиттера относительно центра системы координат

СообщениеДобавлено: Ср июл 03, 2013 12:19 pm
freak
Добрый день.
Подскажите плз, есть эмиттер, с анимированным графиком позиции (эмиттер бегает по кругу).
Мне нужно через API смещать центр системы координат, вокруг которого анимирована позиция эмиттера.
Это возможно сделать средствами API, и если возможно - то как?
Спасибо.
С уважением, Алексей.

Re: Смещение эмиттера относительно центра системы координат

СообщениеДобавлено: Ср июл 03, 2013 2:18 pm
Odin_KG
Здравствуйте

Это возможно сделать средствами API, и если возможно - то как?

Да, конечно. Magic_SetEmitterPosition и Magic_SetEmitterPositionMode

Re: Смещение эмиттера относительно центра системы координат

СообщениеДобавлено: Чт июл 04, 2013 5:06 pm
freak
Я пытаюсь сделать следующее - эмиттер испускает дым, перемещение эмиттера зациклено по окружности (в редакторе, пусть будет радиус в 100px). Я хочу чтобы центр этой окружности всегда был в координатах мыши.
Каждый раз когда перемещается мышь я вызываю Magic_SetEmitterPosition с координатами мыши.
При этом эмиттер перемещается непосредственно в координаты мыши. Я не могу заставить эмиттер перемещаться по окружности вокруг постоянно смещающейся точки.
Есть способ решить такую задачу?

Re: Смещение эмиттера относительно центра системы координат

СообщениеДобавлено: Пт июл 05, 2013 12:47 am
Odin_KG
Есть способ решить такую задачу?

Конечно, есть.

Я вижу 3 варианта:
1) Как я понимаю, у вас эмиттер движется по окружности за счет ключей на шкале времени. У вас имеется текущее положение мыши (cx,cy) - оно соответствует центру окружности. Прежде чем вызывать Magic_SetEmitterPosition, чтобы переместить эмиттер, сначала вызываем Magic_GetEmitterPosition и определяем координаты эмиттера (ex,ey). Далее определяем координаты эмиттера относительно положения мыши (sx=ex-cx, sy=ey-cy). Теперь перемещаем координаты центра (мыши) в новое положение (cx=mouse_x, cy=mouse_y). Пересчитываем координаты эмиттера (ex=cx+sx, ey=cy+sy). Вызываем Magic_SetEmitterPosition(hmEmitter, ex,ey);
2) Если известно, что эмиттер всегда двигается по окружности, то можно всё упростить. Необходимо использовать не эмиттер типа Точка, а эмиттер типа Окружность (выбор формы осуществляется на самом первом графике при выделенном эмиттере), на этом же графике выбирается радиус окружности. На графике "Направление эмиттера" перемещаем угол излучения, чтобы было движение по кругу. Прицепил файл с примером.
3) Для эмиттера типа Точка можно при помощи зеленой и синей линии на графике выбирать координаты эмиттера. На мой взгляд, нарисовать таким образом окружность будет непросто, поэтому лучше использовать варианты либо 1 либо 2.

В случаях 2 и 3 никаких дополнительных манипуляций с координатами не потребуется.

Re: Смещение эмиттера относительно центра системы координат

СообщениеДобавлено: Пт июл 05, 2013 2:22 am
freak
Большое спасибо. То что нужно!

Re: Смещение эмиттера относительно центра системы координат

СообщениеДобавлено: Пт июл 05, 2013 7:14 am
Odin_KG
Пожалуйста