Перейти к содержанию

AnimatedDaicon

animated_daicon.png

AnimatedDaicon - нода представляющая двигающийся обьект, который способен воздействовать на другие тела, когда воздействие на него самого напротив отсутствует.


Параметры:

- d3

AnimatableBody3D

Ядро StaticDaicon.


- whisker

Area3D

Отслеживает столкновения и работает в комплексе с y и z-сортировками для правильной отрисовки обьектов. Он определяет находиться ли обьект за заграждением или нет.


- shader_cast

RayCast3D

ShaderCast - нода особого назначения. Её цель - определять столкновения с обьектами перед игроком и на основе этого рисовать шейдер.


- tile_size

int

Размер плитки определяет, сколько пикселей соответствует 1 метру в 3D. (по сути, это размер плитки на размер ячейки в 3D)


- y_3d

int

Позиция персонажа на оси Z.


- z_step

int

Z-шаг в системе сортировки между уровнями высоты.

Например z_step = 10, тогда:

Уровень -1 = -10 Уровень 0 = 0 Уровень 1 = 10 Уровень 2 = 20


- z_sort_coef

int

Максимальная высота объекта в блоках (метрах). Используется в системе сортировки в качестве коэффициента.


- mesh

MeshInstance3D

Ячейка для меш-ноды которая встраивается в ядро (после установки вы можете увидеть её в разделе 3D). Имеет собственный словарь в разделе "Core": mesh_properties.


- shape

Node3D

Ячейка для шейп-ноды которая встраивается в ядро (нужна для столкновений). Пропускает только CollisionShape3D или CollisionPolygon3D. Имеет собственный словарь в разделе "Core": shape_properties.


Mesh & Shape-раздел

Раздел "Mesh & Shape" содержит параметры для Mesh и Shape.


Slots-раздел

Node3D

Слоты - ячейки для нод разработчика если потребуется внедрить их в ядро (связь только через код).


Core-раздел

- child_count

int

Ведет постоянный счёт количества дочерних нод ядра.


- properties

Dictionary

Словари параметров нод, занесенных в ядро через ячейки. Хранят все параметры необходимые для динамического развертывания дочерних нод ядра.


AnimatedBody-раздел

Раздел параметров для корневой ноды ядра.

(Смотрите документацию Godot : AnimatedBody3D)


CollisionObject3D-раздел

Раздел параметров для корневой ноды ядра.

(Смотрите документацию Godot : CollisionObject3D)

Info

Также содержит axis_lock.


RayCast-раздел

Раздел параметров для нод Whisker и ShaderCast.

(Смотрите документацию Godot : Area3D - RayCast3D)


Методы:

- _ready

При каждом запуске развертывает ядро. Проводит базовую настройку ноды.


- _process

Синхронизирует перемещение ноды в 2D и её ядра в 3D во время нахождение в редакторе. Также обновляет z_index во время игры.


- update_pos

func update_pos():
    self.position.x = (d3.position.x - offset_3d.x) * tile_size
    self.position.y = ((d3.position.z - offset_3d.z) - (d3.position.y - offset_3d.y)) * tile_size

Функция обновляет позицию обьекта в 2D пространстве передавая ей трехмерные координаты ядра.


- _update_z_index

func _update_z_index():
    if whisker.get_overlapping_bodies():
        if whisker.get_overlapping_bodies()[0].has_meta("z_index"):
            self.z_index = whisker.get_overlapping_bodies()[0].get_meta("z_index") - 1
        else:
            self.z_index = (int(d3.position.y + (offset_3d.y * 1.1))) * z_step - 1
    else:
        self.z_index = ((d3.position.y - offset_3d.y) + z_sort_coef) * z_step + 2

    d3.set_meta("z_index", self.z_index)

- get_node_properties

func get_node_properties(node: Node) -> Dictionary:
    var properties : Dictionary = {
        "Name" : node.name,
        "Class" : node.get_class(),
        "Properties" : {}
    }
    for prop in node.get_property_list():
        if prop.usage & PROPERTY_USAGE_STORAGE:
            properties.Properties[prop.name] = node.get(prop.name)
    return properties

Функция записывает все параметры ноды, её имя, а также класс в словарь и возвращает его.


_expand

func _expand()  -> void:
    _expand_d3()
    _expand_ray_cast()
    if mesh_properties:
        _expand_mesh()
    if shape_properties:
        _expand_shape()
    _expand_slots()

Функция занимается развертыванием ядра.