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

  • Официальное уведомление администрации CustomGames.RU
    В связи с масштабным техническим сбоем в инфраструктуре прежнего хостинг-провайдера (Beget), работа форума CustomGames.RU была оперативно перенесена на новую серверную площадку и развёрнута из резервной копии базы данных.

    • Безопасность данных: учётные записи и данные пользователей находятся в полной безопасности. Все пароли и защищаемые параметры хранятся исключительно в криптографически зашифрованном (хэшированном) виде — никаких критических инцидентов для аккаунтов пользователей не произошло.
    • Временные технические ограничения: на этапе синхронизации файлового хранилища часть статических материалов (пользовательские аватары и архивные вложения) временно недоступна. По мере получения доступа к файловым архивам все материалы будут восстановлены в полном объёме.

Sannin

Пользователь
6 Янв 2019
35
9
Проект
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

Вопрос: есть ли ещё какие-то варианты реализации такого смещения? Может где не нужно всякие константы прописывать
 
Последнее редактирование:
Вместо умножения на константу используй функцию math.rad
 
  • Нравится
Реакции: Sannin
Еще можно так:
Lua:
unit:GetAbsOrigin()+unit:GetForwardVector()*offset
 
  • Нравится
Реакции: Sannin
Как должна работать способность объясни
Персонаж применяет способность (ненаправленную), должен создаться юнит в зависимости от направления взгляда (угла поворота) персонажа с некоторым смещением от персонажа. Т.е. если представить на бумаге, то есть точка, и есть некий круг с радиусом 5 см, допустим. И нужно определить точку на этом круге, где создать юнита
 
Реклама: