Смещение точки (вектора) при касте способности

Sannin

Пользователь
6 Янв 2019
28
5
Проект
NWHC
Доброго времени суток. Появилась потребность создать юнита (при касте способности) с неким смещением в зависимости от угла поворота героя. Способность ненаправленная.
Реализовал следующим образом (по подобию, как делал на Warcraft III)

local hero = keys.caster
local offset = 500
local direction = hero:GetAnglesAsVector().y
local newvector = hero:GetAbsOrigin() + Vector(offset * math.cos(direction * 0.017453292), offset * math.sin(direction * 0.017453292))
local unit = CreateUnitByName("npc_dota_creature_aoda", newvector, true, hero, hero, hero:GetTeam())

0.017453292 - это число, получаемое делением числа Пи (3.14) на 180

Вопрос: есть ли ещё какие-то варианты реализации такого смещения? Может где не нужно всякие константы прописывать
 
Последнее редактирование:

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
Вместо умножения на константу используй функцию math.rad
 
  • Нравится
Реакции: Sannin

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
Еще можно так:
Lua:
unit:GetAbsOrigin()+unit:GetForwardVector()*offset
 
  • Нравится
Реакции: Sannin

Sannin

Пользователь
6 Янв 2019
28
5
Проект
NWHC
Как должна работать способность объясни
Персонаж применяет способность (ненаправленную), должен создаться юнит в зависимости от направления взгляда (угла поворота) персонажа с некоторым смещением от персонажа. Т.е. если представить на бумаге, то есть точка, и есть некий круг с радиусом 5 см, допустим. И нужно определить точку на этом круге, где создать юнита
 
Реклама: