понедельник, 2 июля 2012 г.

1. Растущее дерево. Таймер (Tick) (UDK Uscript)

Это простой урок, в нём будет рассмотрено использование таймера, добавление меша на уровень и изменение его размера.



Для начала нужно создать класс дочерний от Actor класса (ну например Tree) и указать что он placeable, т.е. размещаемый.

class Tree extends Actor placeable;

Затем прописать переменные. Первая будет отвечать за меш и все действия с ним, а вторая будет обычная переменная типа Float, которая будет отвечать за изменение размера дерева.


var StaticMeshComponent Tree;
var Float Size; // Размер дерева

После этого прописать блок DefaultProperties (в нём определяются значения по умолчанию).
Там будут находится начальные настройки дерева.

В этом блоке есть свойство StaticMesh, дак вот его можно взять в UDK, любой который вам понравиться. Чтобы взять ссылку на него Необходимо запустить UDK, открыть Actor Browser найти дерево, правой кнопкой нажать на него и в появившимся списке выбрать "Copy full name to clipboard". После чего вставить ссылку на объект после StaticMesh= .


Defaultproperties
{
// Меш дерева
Begin Object Class=StaticMeshComponent Name=Derevo
StaticMesh=StaticMesh'GenericFoliage01.Trees.Mesh.SM_GEN_Foliage01_LargeTree01_Opt';//какой меш будет использован
Scale=0.1;//Размер меша
end Object

// Приравниваем к переменной Tree чтобы можно было изменять свойства
Tree=Derevo

// Добавление меша на уровень
Components.Add(Derevo)
}


После этого нужно написать функцию таймера(Она должна располагаться после описания переменных и перед блоком DefaultProperties), в ней будет изменятся переменная size, а значение этой переменной будет изменять размер дерева.

Simulated function Tick (float DeltaTime) 
{
Size=Size+0.001; // Скорость с которой дерево будет расти
Tree.Setscale(size); 
}


Вот и всё, теперь можно запускать UDK открывать Actor Classes и размещать на уровень.



3 комментария:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. Заменить
    Size=Size+0.001; // Скорость с которой дерево будет расти

    На

    Size=Size-0.001;

    ОтветитьУдалить
    Ответы
    1. Ну да)) Попробуй.. Меш тупо вывернет)


      Вот рабочий вар на уменьшение
      class anom extends Actor placeable;

      var StaticMeshComponent Anom;
      var Float Size;

      Simulated function Tick (float DeltaTime)
      {
      Size=Size-0.01;
      Anom.Setscale(size);
      }

      Defaultproperties
      {
      Begin Object Class=StaticMeshComponent Name=AnomMesh
      StaticMesh=StaticMesh'phystest_resources.RemadePhysBarrel';
      Scale=1;
      end Object

      Anom=AnomMesh
      Size=1
      Components.Add(AnomMesh)
      }

      Удалить