Read this manual in English

Свойства

Defold предоставляет для игровых объектов, компонентов и GUI-нод свойства, которые можно считывать, устанавливать и анимировать. Существуют следующие типы свойств:

  • Определенные системой трансформации игровых объектов (положение, вращение и масштаб) и специфические свойства компонентов (например, размер пикселя спрайта или масса объекта столкновения)
  • Определяемые пользователем скриптовые свойства, задаваемые в Lua-скриптах (подробнее в руководстве по свойствам скрипта)
  • Свойства GUI-нод
  • Шейдерные константы, определенные в шейдерах и файлах материалов (подробнее в руководстве по материалам)

В зависимости от того, где находится свойство, доступ к нему осуществляется через общую функцию или функцию, специфичную для данного свойства. Многие свойства могут быть автоматически анимированы. Анимация свойств с помощью встроенной системы настоятельно рекомендуется вместо самостоятельного манипулирования свойствами (внутри функции update()), как по соображениям производительности, так и ради удобства.

Составные свойства типа vector3, vector4 или quaternion также раскрывают свои субкомпоненты (x, y, z и w). К этим компонентам можно обращаться по отдельности, дополняя имя точкой (.) и именем компонента. Например, чтобы установить х-компонент позиции игрового объекта:

-- Установите позицию по x для "game_object" в значение 10.
go.set("game_object", "position.x", 10)

Функции go.get(), go.set() и go.animate() принимают в качестве первого параметра ссылку, а в качестве второго — идентификатор свойства. Ссылка идентифицирует игровой объект или компонент и может быть строкой, хэшем или URL. URL-адреса подробно описаны в руководстве по адрессации. Идентификатор свойства — это строка или хэш, дающий свойству имя:

-- Установите масштаб по X для спрайта
local url = msg.url("#sprite")
local prop = hash("scale.x")
go.set(url, prop, 2.0)

Для GUI-нод идентификатор ноды предоставляется в качестве первого параметра специфичной для свойства функции:

-- Получить цвет кнопки
local node = gui.get_node("button")
local color = gui.get_color(node)

Свойства игровых объектов и компонентов

Все игровые объекты и некоторые типы компонентов имеют свойства, которые можно считывать и манипулировать ими во время выполнения. Считывать эти значения можно с помощью go.get(), а записывать — с помощью go.set(). В зависимости от типа значения свойства, значения можно анимировать с помощью go.animate(). Небольшой набор свойств доступен только для чтения.

get
С помощью go.get() можно считывать.
get+set
С помощью go.get() можно считывать, записывать — с помощью go.set(). Числовые значения можно анимировать с помощью go.animate().

Существуют также легаси-функции для чтения и записи свойств игровых объектов. Это go.get_position(), go.set_position(), go.get_rotation(), go.set_rotation() и др.

СВОЙСТВА ИГРОВОГО ОБЪЕКТА

Свойство Описание Тип  
position Локальная позиция игрового объекта vector3 get+set
rotation Локальное вращение игрового объекта, выраженное в виде кватерниона quaternion get+set
euler Локальное вращение игрового объекта в углах Эйлера vector3 get+set
scale Локальное неоднородное масштабирование игрового объекта, выраженное в виде вектора, каждый компонент которого содержит множитель по каждой оси. Чтобы удвоить размер по осям x и y, предоставьте vmath.vector3(2.0, 2.0, 0) vector3 get+set

СВОЙСТВА КОМПОНЕНТА SPRITE

Свойство Описание Тип  
size Немасштабируемый размер спрайта — его размер, взятый из исходного атласа vector3 get
texture0 Хэш пути текстуры спрайта hash get
scale Неоднородное масштабирование спрайта vector3 get+set

СВОЙСТВА КОМПОНЕНТА COLLISION OBJECT

Свойство Описание Тип  
mass Масса объекта столкновения number get
linear_velocity Текущая линейная скорость объекта столкновения vector3 get
angular_velocity Текущая угловая скорость объекта столкновения vector3 get
linear_damping Линейное затухание объекта столкновения vector3 get+set
angular_damping Угловое затухание объекта столкновения vector3 get+set

СВОЙСТВА КОМПОНЕНТА SPINE MODEL

Свойство Описание Тип  
animation Текущая анимация hash get
skin Текущий примененный скин модели (не может быть анимирован!) hash get+set
cursor Текущее положение (от 0 до 1) курсора воспроизведения анимации number get+set
playback_rate Скорость воспроизведения анимации. Множитель к скорости воспроизведения анимации number get+set

СВОЙСТВА КОМПОНЕНТА MODEL (3D)

Свойство Описание Тип  
animation Текущая анимация. hash get
texture0 Хэш пути текстуры модели hash get
cursor Позиция (между 0–1) курсора воспроизведения number get+set
playback_rate Скорость воспроизведения анимации. Множитель к скорости воспроизведения анимации number get+set

СВОЙСТВА КОМПОНЕНТА LABEL

Свойство Описание Тип  
scale Масштаб метки vector3 get+set
color Цвет метки vector4 get+set
outline Цвет контура метки vector4 get+set
shadow Цвет тени метки vector4 get+set
size Размер метки. Размер будет ограничивать текст, если включен перенос строки vector3 get+set

Свойства GUI-ноды

GUI-ноды также содержат свойства, но они считываются и записываются через специальные функции — так называемые “геттеры” и “сеттеры”. Для каждого свойства существует одна get-функция и одна set-функция. Также определен набор констант, которые используются в качестве ссылок на свойства при их анимировании. Если необходимо сослаться на отдельные компоненты свойства, следует использовать строковое имя свойства или хэш строкового имени.

  • position (или gui.PROP_POSITION)
  • rotation (или gui.PROP_ROTATION)
  • scale (или gui.PROP_SCALE)
  • color (или gui.PROP_COLOR)
  • outline (или gui.PROP_OUTLINE)
  • shadow (или gui.PROP_SHADOW)
  • size (или gui.PROP_SIZE)
  • fill_angle (или gui.PROP_FILL_ANGLE)
  • inner_radius (или gui.PROP_INNER_RADIUS)
  • slice9 (или gui.PROP_SLICE9)

Следует отметить, что все значения цвета кодируются в vector4, компоненты которого соответствуют значениям RGBA:

x
Компонент красного цвета
y
Компонент зеленого цвета
z
Компонент синего цвета
w
Компонент прозрачности (alpha)

СВОЙСТВА GUI-НОД

Свойство Описание Тип  
color Цвет грани ноды vector4 gui.get_color() gui.set_color()
outline Цвет контура ноды vector4 gui.get_outline() gui.set_outline()
position Положение ноды vector3 gui.get_position() gui.set_position()
rotation Вращение ноды, выраженное в углах Эйлера — градусах, повернутых вокруг каждой оси vector3 gui.get_rotation() gui.set_rotation()
scale Масштаб ноды, выраженный в виде множителя по каждой оси vector3 gui.get_scale() gui.set_scale()
shadow Цвет тени ноды vector4 gui.get_shadow() gui.set_shadow()
size Немасштабируемый размер ноды vector3 gui.get_size() gui.set_size()
fill_angle Угол заливки ноды Pie, выраженный в градусах против часовой стрелки number gui.get_fill_angle() gui.set_fill_angle()
inner_radius Внутренний радиус ноды Pie number gui.get_inner_radius() gui.set_inner_radius()
slice9 The edge distances of a slice9 node. vector4 gui.get_slice9() gui.set_slice9()