Можете сказать как сделать юнита астральным? А именно хочу я сделать юнита обычным, но чтобы он был под эффект астрала, знаете как? Чтобы моделька была астральная.

Принятый ответ

Похожие вопросы:

ответ
странно, но в любом случае, я снова дал не ту, эта именно обновляет скин - мороз, оживление, вот это всё пересчитывает. Вот функция смены модели:

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 одинаковых спелла, которые построены на одних и тех же переменных.

`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
26
5 лет назад
0
Вроде бы в игре эффект астрала делается полупрозрачностью модели юнита и наложенным зелёным облачком.
0
15
0
8gabriel8:
Вроде бы в игре эффект астрала делается полупрозрачностью модели юнита и наложенным зелёным облачком.
Это надо изменять цвет юнита или что именно с ним делать? Добавлять триггеры?
0
26
5 лет назад
0
Конкретнее объясни, что ты хочешь, я же не телепат, чтобы понять, нужно тебе это для способности, либо юнит таким должен быть всегда. (и это не единственное, чего не знаю)
0
20
5 лет назад
0
Даже не пытайтесь.Закончится тем,что вам прилетит кусок карты и фраза:
Покажи как надо сделать? А потом еще миллион волпросов.
Смиритесь,братья
0
29
5 лет назад
0
Закончится тем,что вам прилетит кусок карты
В ответ полетит Ещё одна карта с реализованным на коленке функционалом и фраза:
Тут реализовано, разбирайтесь.
0
20
5 лет назад
0
при отлове нужного события нужно делать юнита прозрачным на 50% и вешать эффект облачка из спелла Астрала

это есть в настройках анимации вроде
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.