Я уже как то задавал этот вопрос. Но искал в интернете движение по векторам и везде одни системы 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
...
range=range+25
xx,yy,zz=x+range*nx,y+range*ny,z+range*nz
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
8
4 года назад
Отредактирован Castiel
0
О господи никто не понял, что я хочу! Мне нужно понять как расчитать углы, движения, и все все! Имея скорость снаряда и расстояние, как сделать на конкретном примере в хy я понимаю что там math.atan(y,x) потом косинус и синус и просто двигай, а как быть с 3 осью Z как для нее расчитать угол ... О BlzSetSpecialEffectZ/X/Y я и сам знаю...Как расчитать угол и движения для оси Z примерно как для XY angle=math.atan(yy-y,xx-x)
local cos,sin=math.cos(angle),math.sin(angle) и xx,yy=x+range*cos,y+range*sin но мне это нужно для z ! Мне нужны формулы и принцип движения обьекта в пространстве без учета ландшафта, то есть свободное перемещение из точки а в точку б учитывая все 3 оси!
0
23
4 года назад
0
для угла высоты никогда не сушесвотвал. Посколько это работа vector2
0
8
4 года назад
0
pro100master:
для угла высоты никогда не сушесвотвал. Посколько это работа vector2
хорошо, как тогда двигать свободно обьект по 3 осям на наглядном примере без всяких vector3 систем через 100+функций, чисто все расчитать в одной функции и запустить таймер и двигать обьект из точки А в точку Б используя все 3 оси
2
29
4 года назад
2
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
...
range=range+25
xx,yy,zz=x+range*nx,y+range*ny,z+range*nz
Принятый ответ
0
23
4 года назад
0
Doc, дергать же будет при большой расстоянии шагов)
0
29
4 года назад
0
pro100master:
Doc, дергать же будет при большой расстоянии шагов)
И в чем разница между этим и подходом с тригонометрией?
0
37
4 года назад
Отредактирован ScorpioT1000
0
x = distance * math.cos(yaw) * math.cos(pitch),
y = distance * math.sin(yaw) * math.cos(pitch),
z = distance * math.sin(pitch)
где distance - расстояние, yaw - угол гор. в радианах, pitch - угол верт. в радианах
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.