Unreal Engine — это мощный и универсальный игровой движок, который используется для создания одних из самых зрелищных видеоигр в наше время. От первоклассных проектов, таких как Fortnite, Rocket League и Gears of War 4, до таких инди-игр, как Cuphead, Enter The Gungeon и Don't Starve TogetherUnreal Engine позволил разработчикам воплотить свои идеи в реальность. Хорошая поддержка, огромное комьюнити. Бесплатен в использовании.
105 50 983
26
Археология - комментирование практически неактуальных ресурсов. Я думаю, пока проект имеет статус "активен", его главную страничку негоже считать неактуальным ресурсом. Или вы уже похоронили проект? =)
1
Не такой он уж и сложный, в нём нужно только разобраться и всё будет понятно!
1 пункт от Кет: 4.3 (археология)
Начал потихоньку ковырять UDK. появился вопрос по кизмету. Как сделать движение объекта относительно его поворота. Так как передвижение по координатам делается легко, то вот с движением объекта относительно его поворота не могу понять как.
Вопрос
7 3 404
26
Sergant1000, краткий гайд тут настрочу.
  • Сам нод - класс, который наследуется от SequenceAction
  • В свойствах можно задать имя нода (параметр ObjName) и категорию (параметр ObjCategory)
  • За момент, когда "сигнал" входит в нод, отвечает событие Activated, основной код выполнения стоит писать в нем
  • За параметры нода отвечает массив VariableLinks, в котором изначально находится параметр Target; очистить массив можно, прописав в свойствах по умолчанию VariableLinks.Empty
  • Объявление параметра выглядит следующим образом
VariableLinks(0)=(ExpectedType=class'SeqVar_Float',LinkDesc="Argument",PropertyName=CosineArgument,bWriteable=true)
Тут ExpectedType - какого типа нод должен приниматься (чаще всего достаточно поменять слово после прочерка на тип), LinkDesc - как будет подписан "вход" параметра на ноде, PropertyName - переменная в классе, в которую будет заноситься внесенная инфа (например, в моем примере в классе должна быть переменная CosineArgument типа Float), bWriteable - можно ли изменять значение этого параметра (можно ставить false для, например, результата).
  • Входные и выходные точки представляют собой массивы bool InputLinks и OutputLinks соответственно.
То есть, синус будет выглядеть где-то так:
class SeqAct_GetCosine extends SequenceAction;

var float CosineArgument;
var float CosineResult;

event Activated()
{
    CosineResult = Cos(CosineArgument);
}

defaultproperties
{
    ObjName="Calc Cosine"
    ObjCategory="Misc"
    VariableLinks.Empty
    VariableLinks(0)=(ExpectedType=class'SeqVar_Float',LinkDesc="Argument",PropertyName=CosineArgument)
    VariableLinks(1)=(ExpectedType=class'SeqVar_Float',LinkDesc="Result",PropertyName=CosineResult)
}
Как-то так, должно работать, у меня сейчас нет UDK, чтобы проверить. Таким же образом можно сделать любые другие вспомогательные ноды.
Принятый ответ
17
lentinant, можешь сделать гайд по созданию нодов. или ткнуть где посмотреть.
26
Sergant1000, недостающие ноды можно написать самому, или поискать в интернете уже готовые решения.
17
Проблема в том что я не нашел в кизмете, ни синусов, ни косинусов.
26
Банальное передвижение: используйте нод Get Location and Rotation, берите из него векторы Location и Rotation, получите новый вектор, равный сумме Location и умноженного на определенный коэффициент Rotation, присвойте новое значение позиции через Set Location and Rotation. Осталось придумать, как менять Rotation в зависимости от входных данных. Я уже не помню, есть ли косинусы/арккосинусы, и прочая тригонометрия в Кисмете. Если есть - берете тот же Rotation, берете его координаты, вычисляете по ним любой тригонометрический показатель (косинус, синус, тангенс), по нему - угол, если есть инпут - меняете соответственным образом угол, опять переделываете в тригонометрический показатель, по нему вычисляете компоненты для обновленного вектора Rotation, нодом Set Vector создаете новый вектор и через тот же Set Location and Rotation присваиваете объекту.
23
В теории везде это делается так: берётся угол поворота, от него берутся синус и косинус и множатся на скорость. Таким образом получаются отдельные скорости по осям. И объект перемещается по этим осевым скоростям. Как оно в udk - не знаю.