Добавлен
Как плавно повышать или понижать высоту dummy с точки A к точке B
        x = GetUnitX(цель) - GetUnitX(P_a.dummy);
        y = GetUnitY(цель) - GetUnitY(P_a.dummy);
        z = GetUnitZ(цель) - GetUnitZ(P_a.dummy);
        r = SquareRoot(x*x + y*y + z*z)
так я узнаю дистанцию между точками (юнитами)
потом двигаю
            a = RADTODEG * Atan2(GetUnitY(P_a.at2) - GetUnitY(P_a.dummy), GetUnitX(P_a.at2) -
           GetUnitX(P_a.dummy))
            //поворот дамика 
            SetUnitFacingTimed(P_a.dummy, a, 0)
            //координаты
            x = GetUnitX(P_a.dummy);
            y = GetUnitY(P_a.dummy);
            z = GetUnitZ(P_a.dummy);

           //смещение 
            x = x + move_cord * Cos(DEGTORAD * a);
            y = y + move_cord * Sin(DEGTORAD * a);
           //z = ???             как работать с высотой ?

            SetUnitX(P_a.dummy, x);
            SetUnitY(P_a.dummy, y);
            SetUnitZ(P_a.dummy, z);

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

Посмотри в этой карте, там есть полёт гранаты. Запусти карту и посмотри, как выглядит этот полёт гранаты, в игре нажми G, чтоб кинуть её. Потом открываешь карту, заходишь в триггеры, открываешь папку Shoot, в которой есть триггер Grenades и смотришь, как сделали этот полёт гранаты.
Загруженные файлы

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
7
6 лет назад
0
я не б нем в векторах
и незнаю как
вот и задал впопрос как сделать
у меня высота допустим 50 у моей цели 200 мне надо чтобы высота постепенно повышалась дамика пока она летит к цели и достигла равной высоты цели
ну или понизилась если цель опустилась ниже
0
22
6 лет назад
Отредактирован Zahanc
0
Я думаю что можно сделать тупо
"""
if z > targetZ then
z = RMinBJ(z - (targetZ - z) * timeout, targetZ)
elseif z < targetZ then
z = RMaxBJ(z + (targetZ - z) * timeout, targetZ)
endif
"""
Возможно хрень сморозил. Я сомневаюсь.
+
Обновил. Заменил статичное число.
2
26
6 лет назад
Отредактирован Hate
2
значит так Sergey105, я тебе помогу, но в благородство играть не буду
напишу тебе примерный код, а ты там сам уже, хер его знает на кой черт тебе это Z сдалось, но я в чужие дела не лезу

берешь изначальную высоту отправной точки
MoveLocation(Loc, Gx(caster), Gy(caster))
start_z = GetLocationZ(Loc) + ShellStartZ[weapon]
и конечной точки
MoveLocation(Loc, x, y)
end_z = GetLocationZ(Loc) + ShellEndZ[weapon]
вместо ShellStartZ[weapon] и ShellEndZ[weapon] можно подставить стартовую и конечную высоту снаряда, что бы снаряд вылетал на уровне оружия например
рассчитываешь шаг который будет сделан за тик таймера
start_step_z = (start_z - end_z) / ( time / moving_period )
где moving_period = периоду таймера
time = время за которое снаряд пролетит все свое расстояние
можно найти используя формулы времени/расстояния/скорости за 4 класс математики
сохраняешь этот start_step_z еще раз как step_z
а далее при движении делаешь так
step_z += start_step_z
MoveLocation(Loc, x, y)
SetUnitFlyHeight( bullet, (start_z - step_z) - GetLocationZ(Loc), 0.)
занавес
п.с.
у юнита должен стоять тип движения земноводный, и нулевые крены
п.п.с.
изучайте прикрепленную карту
Загруженные файлы
0
21
6 лет назад
Отредактирован scopterectus
0
x = x + move_cord * Cos( a ) * Sin( t )
y = y + move_cord * Sin( a ) * Sin( t )
z = z + move_cord * Cos( t )
0
27
6 лет назад
0
0
15
6 лет назад
0
Посмотри в этой карте, там есть полёт гранаты. Запусти карту и посмотри, как выглядит этот полёт гранаты, в игре нажми G, чтоб кинуть её. Потом открываешь карту, заходишь в триггеры, открываешь папку Shoot, в которой есть триггер Grenades и смотришь, как сделали этот полёт гранаты.
Загруженные файлы
Принятый ответ
1
28
6 лет назад
1
научиться юзать вектора 2 минуты при очень медленом чтении и полном отсутствие мозга
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.