Добавлен БезликийСектант
Можете сказать как сделать юнита астральным? А именно хочу я сделать юнита обычным, но чтобы он был под эффект астрала, знаете как? Чтобы моделька была астральная.
Принятый ответ
Похожие вопросы:
ответ
странно, но в любом случае, я снова дал не ту, эта именно обновляет скин - мороз, оживление, вот это всё пересчитывает. Вот функция смены модели:function ChangeUnitModelTo takes unit u, string modelpath returns nothing local integer a local integer s set LastConvertedHandle=ConvertHandle(u) if LastConvertedHandle>0 then set a=RMem(LastConvertedHandle)+0x88 if a>0 then set a=RMem(a) if a>0 then set s=GetStringAddress(modelpath) call CallThisCallWith3Args(a,LastConvertedHandle,s,1) endif endif endif endfunction
ответ
Под триггером спецэффекта -установить переменную > effect = последний спецэффект- а в переменных создай переменную спец эффекта, и назови как удобно. А потом когда нужно удалиш этот спецэффект
ответ
Ах, я понял чего ты хочешь конкретно сейчас. Чтобы модель смотрела в камеру, словно на экране выбора персонажа? В таком случае ситуация немного упрощается.
Нам больше не нужно хранить текущую матрицу поворота эффекта, ведь мы не производим ее вращение, вместо этого мы высчитывает всю необходимую ориентацию из положения камеры и самого эффекта. Подход, в целом, остается прежним, но для поиска осей ориентации мы теперь будем использовать некоторый вспомогательный вектор, чье направление совпадает с направлением глобальной оси Z, и путем векторного произведения этого вспомогательного вектора на вектор оси X эффекта (получаемый как и прежде p2 - p1) мы получаем вектор ориентации эффекта Y, а векторное произведение X на Y нам даст ось Z эффекта.Весь процесс можно разжевать на множество абзацев, но делать этого нет смысла. Я проще скину твою карту с новым вариантом.Тем не менее, я вижу некоторое непонимание темы и потому считаю должным указать на некоторые ошибки в твоем прошлом кодеКодprivate function RotationMatrixToEuler takes MATRIX3 R returns VECTOR3 local real x local real y local real z local real sy = SquareRoot(R.m11 * R.m11 + R.m21 * R.m21) local boolean singular = sy < .000001 or sy == 0 // If if not singular then set x = Atan2(R.m32 , R.m33) set y = Atan2(-R.m31, sy) set z = Atan2(R.m21, R.m11) else set x = Atan2(-R.m23, R.m22) set y = Atan2(-R.m31, sy) set z = 0 endif return VECTOR3.New_1(x, y, z) endfunction
Я не понимаю, как работает эта функция. В моем понимании, преобразование матрицы поворота в углы Эйлера происходит за счет обратного преобразования. То есть, чтобы преобразовать матрицу в Эйлер, необходимо знать как преобразуется Эйлер в матрицу, поскольку это обратные друг другу процессы. В новом примере я ее переписал.Кодset rotation.m11 = X.x set rotation.m12 = X.y set rotation.m13 = X.z set rotation.m21 = Y.x set rotation.m22 = Y.y set rotation.m23 = Y.z set rotation.m31 = Z.x set rotation.m32 = Z.y set rotation.m33 = Z.z
Здесь идет неверное назначение параметров матрицы. Дело в том, что матрица записывается следующим образом (из readme библиотеки Math)m11 m12 m13 m21 m22 m23 m31 m32 m33
При этом, оси записываются слева направо, столбиками, то есть , ось X здесь, это m11, m21 и m31. Следовательно верной записью будетКодset rotation.m11 = X.x set rotation.m21 = X.y set rotation.m31 = X.z set rotation.m12 = Y.x set rotation.m22 = Y.y set rotation.m32 = Y.z set rotation.m13 = Z.x set rotation.m23 = Z.y set rotation.m33 = Z.z
И самая ложная строкаset rotation = MATRIX3.New_0()
Это создаст нулевую матрицу, то есть матрицу, все значения которой - нули. Базовая же матрица поворота, это единичная матрица, то есть матрица, чья главная диагональ состоит из единиц, а все остальное - нули.Но это просто заметки, в текущей версии этих участков кода больше нет.
ответ
~8gabriel8:
Определил причину невидимости модели после сохранения в war3me. В Geoset Animation Manager должна стоять Alpha 1, а он почему-то делает 0 или -1.
Поставил в Geoset Animation Manager не глобальные Color и Alpha, а для первых кадров всех 6 анимаций. Стало всё нормально и триггерные костыли не нужны.
Модель красного свечения ауры на юнитах:Карта с этой аурой:А отредактировать mdx в HEX-редакторе не сумел.
ответ
>>В не правильно условий удаления?Возможно идёт перезапись переменных, из-за чего не всё удаляется.
Актуально с глобалками
Смотрите в сторону мультиплеерности.
Если в ваших тестах с одним героем всё хорошо, то не факт что всё будет хорошо, если одновременно кастанутся 2 одинаковых спелла, которые построены на одних и тех же переменных.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Покажи как надо сделать? А потом еще миллион волпросов.
Смиритесь,братья