Добавлен  Sergant1000 
                            
                            
                            
                            
                            
                            
                        
                        
                    Начал потихоньку ковырять UDK. появился вопрос по кизмету. Как сделать движение объекта относительно его поворота. Так как передвижение по координатам делается легко, то вот с движением объекта относительно его поворота не могу понять как.
Принятый ответ
 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, чтобы проверить. Таким же образом можно сделать любые другие вспомогательные ноды.
    
        
            
                `
            
            
                
        
    
    ОЖИДАНИЕ РЕКЛАМЫ...
            
        
            
            0
        
    
 Показать
    
                    
                    
                    
                    
                    
                       SomeFire
                    
                    
                    
                    
                        11 лет
                        
                    
                    
                
                
        
            
            0
        
    
 Показать
                В теории везде это делается так: берётся угол поворота, от него берутся синус и косинус и множатся на скорость. Таким образом получаются отдельные скорости по осям. И объект перемещается по этим осевым скоростям. Как оно в udk - не знаю.
        
            
            0
        
    
 Показать
    
                    
                    
                    
                    
                    
                       lentinant
                    
                    
                    
                    
                        11 лет
                        
                    
                    
                
                
        
            
            0
        
    
 Показать
                Банальное передвижение: используйте нод Get Location and Rotation, берите из него векторы Location и Rotation, получите новый вектор, равный сумме Location и умноженного на определенный коэффициент Rotation, присвойте новое значение позиции через Set Location and Rotation. Осталось придумать, как менять Rotation в зависимости от входных данных. Я уже не помню, есть ли косинусы/арккосинусы, и прочая тригонометрия в Кисмете. Если есть - берете тот же Rotation, берете его координаты, вычисляете по ним любой тригонометрический показатель (косинус, синус, тангенс), по нему - угол, если есть инпут - меняете соответственным образом угол, опять переделываете в тригонометрический показатель, по нему вычисляете компоненты для обновленного вектора Rotation, нодом Set Vector создаете новый вектор и через тот же Set Location and Rotation присваиваете объекту.
        
            
            0
        
    
 Показать
    
                    
                    
                    
                    
                    
                       Sergant1000
                    
                    
                    
                    
                        11 лет
                        
                    
                    
                
                
        
            
            0
        
    
 Показать
                Проблема в том что я не нашел в кизмете, ни синусов, ни косинусов.
        
            
            0
        
    
 Показать
    
                    
                    
                    
                    
                    
                       lentinant
                    
                    
                    
                    
                        11 лет
                        
                    
                    
                
                
        
            
            0
        
    
 Показать
                 Sergant1000, недостающие ноды можно написать самому, или поискать в интернете уже готовые решения.
        
            
            0
        
    
 Показать
    
                    
                    
                    
                    
                    
                       Sergant1000
                    
                    
                    
                    
                        11 лет
                        
                    
                    
                
                
        
            
            0
        
    
 Показать
                 lentinant, мне бы пример.
        
            
            0
        
    
 Показать
    
                    
                    
                    
                    
                    
                       Sergant1000
                    
                    
                    
                    
                        11 лет
                        
                    
                    
                
                
        
            
            0
        
    
 Показать
                 lentinant, можешь сделать гайд по созданию нодов. или ткнуть где посмотреть.
        
            
            0
        
    
 Показать
    
                    
                    
                    
                    
                    
                       lentinant
                    
                    
                    
                    
                        11 лет
                        
                    
                    
                
                
        
            
            0
        
    
 Показать
                
    
         Принятый ответ
        
    
 Sergant1000, краткий гайд тут настрочу.
- Сам нод - класс, который наследуется от SequenceAction
- В свойствах можно задать имя нода (параметр ObjName) и категорию (параметр ObjCategory)
- За момент, когда "сигнал" входит в нод, отвечает событие Activated, основной код выполнения стоит писать в нем
- За параметры нода отвечает массив VariableLinks, в котором изначально находится параметр Target; очистить массив можно, прописав в свойствах по умолчанию VariableLinks.Empty
- Объявление параметра выглядит следующим образом
Тут ExpectedType - какого типа нод должен приниматься (чаще всего достаточно поменять слово после прочерка на тип), LinkDesc - как будет подписан "вход" параметра на ноде, PropertyName - переменная в классе, в которую будет заноситься внесенная инфа (например, в моем примере в классе должна быть переменная CosineArgument типа Float), bWriteable - можно ли изменять значение этого параметра (можно ставить false для, например, результата).
- Входные и выходные точки представляют собой массивы bool InputLinks и OutputLinks соответственно.
То есть, синус будет выглядеть где-то так:
Как-то так, должно работать, у меня сейчас нет UDK, чтобы проверить. Таким же образом можно сделать любые другие вспомогательные ноды.
                    
                        Чтобы оставить комментарий, пожалуйста, войдите на сайт.
                    
                
             
                        
                        
                    
 UE
                                UE
                            





