在动画精灵中随机选择动画

问题描述 投票:0回答:1

首先,必须确保 AnimatedSprite2D 是要使用的正确节点。我正在制作一款随机点击游戏,您只需单击一个按钮,就有机会获得不同的物品。我需要某些物品比其他物品更稀有,并且需要精灵来显示您获得的物品,而且还能够发送该物品的稀有度、名称等信息。

现在我正在考虑在一个动画精灵上添加一堆单帧动画,然后使用动画的名称来查找元数据。

如果 AnimatedSprite2D 是正确的选择,那么脚本会是什么样子?

random metadata sprite godot godot4
1个回答
0
投票

我不确定哪个节点更适合您的情况,因此我正在为

AnimatedSprite2D
AnimationPlayer
编写解决方案,以防您将来的偏好发生变化

动画精灵2D

@onready var animated_sprite_2d:AnimatedSprite2D = $AnimatedSprite2D

func play_random_animation():
    var animation_names := animated_sprite_2d.sprite_frames.get_animation_names()
    
    if(!len(animation_names)):
        return
    
    var random_ani_name = animation_names[randi() % animation_names.size()]
    animated_sprite_2d.play(random_ani_name)

动画播放器

@onready var animation_player:AnimationPlayer = $AnimationPlayer

func play_random_animation():
    var animation_names := animation_player.get_animation_list()
    
    if(!len(animation_names)):
        return
    
    var random_ani_name = animation_names[randi() % animation_names.size()]
    animation_player.play(random_ani_name)

注意: 您可能还想研究

randomize()
以获得真正的随机性。

以下是所使用的类的相关文档链接:

  1. 动画Sprite2D
  2. SpriteFrames
  3. 动画播放器
  4. 动画混合器
© www.soinside.com 2019 - 2024. All rights reserved.