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

Обсуждение специальной версии Magic Particles (Dev), предназначенной для разработчиков игр.

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

Сообщение freak » Ср июл 03, 2013 12:19 pm

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

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

Сообщение Odin_KG » Ср июл 03, 2013 2:18 pm

Здравствуйте

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

Да, конечно. Magic_SetEmitterPosition и Magic_SetEmitterPositionMode
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm

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

Сообщение freak » Чт июл 04, 2013 5:06 pm

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

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

Сообщение Odin_KG » Пт июл 05, 2013 12:47 am

Есть способ решить такую задачу?

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

Я вижу 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 никаких дополнительных манипуляций с координатами не потребуется.
Вложения
circle.zip
(8.52 Кб) Скачиваний: 1910
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm

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

Сообщение freak » Пт июл 05, 2013 2:22 am

Большое спасибо. То что нужно!
freak
 
Сообщения: 3
Зарегистрирован: Ср июл 03, 2013 12:11 pm

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

Сообщение Odin_KG » Пт июл 05, 2013 7:14 am

Пожалуйста
Аватара пользователя
Odin_KG
Administrator
Administrator
 
Сообщения: 841
Зарегистрирован: Чт янв 15, 2009 2:57 pm


Вернуться в Magic API

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3