Defold предоставляет для игровых объектов, компонентов и 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-ноды также содержат свойства, но они считываются и записываются через специальные функции — так называемые “геттеры” и “сеттеры”. Для каждого свойства существует одна 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
СВОЙСТВА 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() |
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB