Ребята, помогите триггер исправить так, чтобы юнит, перемещаясь к цели, шел именно на цель?
А то бывает так, когда Target прошел мимо цели и улетел на все 4 стороны.

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

Скорее всего ошибка в углах, посмотри в переменной "С". Дебагом проверяй
раскрыть
local real a = GetUnitFacing(u) //угол поворота юнита
local real speed = 1000.0
//Если это движение даймика, то берутся координаты этого юнита
//Если это движение мнимой точки, то в начале берутся координаты кастера, а потом относительно этого сохраняем и загружаем координаты
local real x = ... //то что описал выше
local real y = ... //
set x = x + distance * Cos(a * bj_DEGTORAD)
set y = y + distance * Sin(a * bj_DEGTORAD)
local unit u=GetTriggerUnit() //кастер
local real x1=GetUnitX(u) 
local real y1=GetUnitY(u)

local unit t=GetSpellTargetUnit() //цель каста, если в качестве цели стал юнит
local real x2=GetUnitX(t)
local real y2=GetUnitY(t)

local real x2=GetSpellTargetX() //координаты цели, если в качестве цели стала точка
local real y2=GetSpellTargetY()

//определение расстояния
local real dx=x2-x1 //разница между концом на началом координаты
local real dy=y2-y1
local real dist = SquareRoot(dx * dx + dy * dy) //расстояние, где SquareRoot - математический корень, dx * dx - это dx в степени 2

local real angle = Atan2(dy,dx)
// внизу текущие координаты мнимой точки
local real x = LoadReal(.....) //загружаем из хэша
local real y = LoadReal(.....) //также из хэша

set x = x + dist * Cos(angle * bj_DEGTORAD)
set y = y + dist * Sin(angle * bj_DEGTORAD)
3D движение,сферические координаты
set d = SquareRoot( dx * dx + dy * dy + dz * dz) 
local real a = Atan2(dy,dx)
set x = x + d * Cos( a ) * Sin( t )
set y = y + d * Sin( a ) * Sin( t )
set z = z + d * Cos( t )
t - новый угол, угол наклона
0
19
7 лет назад
0
Похожие вопросы:

ответ
Этот патч еще в марте вышел, алло
А на хайве про новый, которого еще нет.

0
28
7 лет назад
0
во первых что такое C
а во вторых смысл править
там столько утечек что через несколько применений вар крашнется
0
27
7 лет назад
Отредактирован MpW
0
Скорее всего ошибка в углах, посмотри в переменной "С". Дебагом проверяй
раскрыть
local real a = GetUnitFacing(u) //угол поворота юнита
local real speed = 1000.0
//Если это движение даймика, то берутся координаты этого юнита
//Если это движение мнимой точки, то в начале берутся координаты кастера, а потом относительно этого сохраняем и загружаем координаты
local real x = ... //то что описал выше
local real y = ... //
set x = x + distance * Cos(a * bj_DEGTORAD)
set y = y + distance * Sin(a * bj_DEGTORAD)
local unit u=GetTriggerUnit() //кастер
local real x1=GetUnitX(u) 
local real y1=GetUnitY(u)

local unit t=GetSpellTargetUnit() //цель каста, если в качестве цели стал юнит
local real x2=GetUnitX(t)
local real y2=GetUnitY(t)

local real x2=GetSpellTargetX() //координаты цели, если в качестве цели стала точка
local real y2=GetSpellTargetY()

//определение расстояния
local real dx=x2-x1 //разница между концом на началом координаты
local real dy=y2-y1
local real dist = SquareRoot(dx * dx + dy * dy) //расстояние, где SquareRoot - математический корень, dx * dx - это dx в степени 2

local real angle = Atan2(dy,dx)
// внизу текущие координаты мнимой точки
local real x = LoadReal(.....) //загружаем из хэша
local real y = LoadReal(.....) //также из хэша

set x = x + dist * Cos(angle * bj_DEGTORAD)
set y = y + dist * Sin(angle * bj_DEGTORAD)
3D движение,сферические координаты
set d = SquareRoot( dx * dx + dy * dy + dz * dz) 
local real a = Atan2(dy,dx)
set x = x + d * Cos( a ) * Sin( t )
set y = y + d * Sin( a ) * Sin( t )
set z = z + d * Cos( t )
t - новый угол, угол наклона
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.