Добавлен Castiel
Я уже как то задавал этот вопрос. Но искал в интернете движение по векторам и везде одни системы vector3 в которых ничего не понятно, что куда ссылается...Сейчас в варе можно двигать спецэффекты по 3 осям...По ху понятное дело, а двигать по z...Хотелось бы реализовать развернутую понятную идею как в вк3 только без муторных считываний локации и ее точек и высоты.
local x,y,xx,yy=GetUnitX(caster),GetUnitY(caster),GetSpellTargetX(),GetSpellTargetY()
local angle=math.atan(yy-y,xx-x)
local cos,sin=math.cos(angle),math.sin(angle)
local range=0
local missile=AddSpecialEffect("EFFECT",x,y)
local loc=Location(x,y)
TimerStart(CreateTimer(),0.03125,true,function()
range=range+25
xx,yy=x+range*cos,y+range*sin
MoveLocation(loc,xx,yy)
BlzSetSpecialEffectPosition(missile,xx,yy,GetLocationZ(loc)+60)
if range==1000 then
DestroyEffect(missile)
DestroyTimer(GetExpiredTimer())
end
end)
Вот Что то типа такого только без локации и с осью Z, я без понятия как это сделать....Так как мне не нужны локации в движении спецэффектов...
Принятый ответ
local x, y, z, xx, yy, zz
local dx = xx - x
local dy = yy - y
local dz = zz - z
local len = math.sqrt(dx * dx + dy * dy + dz * dz)
local nx = dx / len
local ny = dy / len
local nz = dz / len
local range = 0
local dx = xx - x
local dy = yy - y
local dz = zz - z
local len = math.sqrt(dx * dx + dy * dy + dz * dz)
local nx = dx / len
local ny = dy / len
local nz = dz / len
local range = 0
...
range=range+25
xx,yy,zz=x+range*nx,y+range*ny,z+range*nz
xx,yy,zz=x+range*nx,y+range*ny,z+range*nz
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Castiel
local cos,sin=math.cos(angle),math.sin(angle) и xx,yy=x+range*cos,y+range*sin но мне это нужно для z ! Мне нужны формулы и принцип движения обьекта в пространстве без учета ландшафта, то есть свободное перемещение из точки а в точку б учитывая все 3 оси!
local dx = xx - x
local dy = yy - y
local dz = zz - z
local len = math.sqrt(dx * dx + dy * dy + dz * dz)
local nx = dx / len
local ny = dy / len
local nz = dz / len
local range = 0
xx,yy,zz=x+range*nx,y+range*ny,z+range*nz
Отредактирован ScorpioT1000