Есть ли способ воспроизвести анимацию, экспортированную из другой сцены? - PullRequest
1 голос
/ 09 июля 2020

В настоящее время я работаю над создателем врагов для 2D-игры с созданием волн на арене в Godot.

У меня есть переменная экспорта (ресурса), которая позволяет мне вставлять анимацию возрождения в сцену.

Мой вопрос: как мне воспроизвести указанную анимацию?

Я создал комментарии в моем коде, объясняющие, как это настроить. Я думаю, что два возможных способа решения этой проблемы - это

  1. Вставка функции, в которой я ее прокомментировал, которая принимает ранее определенное значение позиции и воспроизводит эту анимацию с этими координатами. Однако я не знаю, как воспроизвести анимацию как экспорт (ресурс) var.
  2. Воспроизвести анимацию не как функцию, используя значение позиции ... но это все тот же вопрос.

Спасибо!

extends Node2D

export(NodePath) var node_path

const WIDTH = 254
const HEIGHT = 126
export(Resource) var ENEMY
export(Resource) var SPAWNANIMATION

var spawnArea = Rect2()
var delta = 3
var offset = 0.5

#Creates the spawnArea and randomizes positions for the enemy to spawn
func _ready():
    randomize()
    spawnArea = Rect2(0, 0, WIDTH, HEIGHT)
    setnextspawn()

#Spawns an Enemy at said Random position
func spawnEnemy():
    var position = Vector2(randi()%WIDTH, randi()%HEIGHT)
    var enemy = ENEMY.instance()
    enemy.position = position #Determined position
    #EnemySpawningAnim(position)
    get_node(node_path).add_child(enemy)
    return position

#Spawn Timer for in between each enemy spawn
func setnextspawn():
    var nextTime = delta + (randf()-0.5) * 2 * offset
    $Timer.wait_time = nextTime
    $Timer.start()

func _on_Timer_timeout():
    spawnEnemy()
    setnextspawn()

#Function that takes a position to play the animation at
func EnemySpawningAnim(position):
    pass

1 Ответ

0 голосов
/ 09 июля 2020

Вам понадобится узел AnimationPlayer, который вы add_animation() ресурс, когда _ready(). Вот пример кода:

func _ready():
    $AnimationPlayer.add_animation('spawn', SPAWNANIMATION)

func EnemySpawningAnim(position):
    # ... logic to handle position
    $AnimationPlayer.play('spawn')
...