有没有办法播放从另一个场景导出的动画?
Is there a way to play an animation that one has exported from another scene?
我目前正在为 Godot 中的 2D 竞技场 wave 生成器游戏开发敌人生成器。
我有一个 export(resource) 变量,允许我将生成动画插入到场景中。
我的问题是:如何播放上述动画?
我在我的代码中创建了注释来解释它是如何设置的。我认为可以解决的两种可能方法是
- 在我评论的地方插入一个函数,它采用先前确定的位置值并在这些坐标处播放该动画。但是我不知道如何将动画作为导出(资源)变量播放。
- 播放动画不是使用位置值的函数...但它仍然是同一个问题。
谢谢!
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
当 _ready()
时,您将需要一个 AnimationPlayer
节点作为您 add_animation()
的资源。这是一个代码示例:
func _ready():
$AnimationPlayer.add_animation('spawn', SPAWNANIMATION)
func EnemySpawningAnim(position):
# ... logic to handle position
$AnimationPlayer.play('spawn')
我目前正在为 Godot 中的 2D 竞技场 wave 生成器游戏开发敌人生成器。
我有一个 export(resource) 变量,允许我将生成动画插入到场景中。
我的问题是:如何播放上述动画?
我在我的代码中创建了注释来解释它是如何设置的。我认为可以解决的两种可能方法是
- 在我评论的地方插入一个函数,它采用先前确定的位置值并在这些坐标处播放该动画。但是我不知道如何将动画作为导出(资源)变量播放。
- 播放动画不是使用位置值的函数...但它仍然是同一个问题。
谢谢!
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
当 _ready()
时,您将需要一个 AnimationPlayer
节点作为您 add_animation()
的资源。这是一个代码示例:
func _ready():
$AnimationPlayer.add_animation('spawn', SPAWNANIMATION)
func EnemySpawningAnim(position):
# ... logic to handle position
$AnimationPlayer.play('spawn')