Во-первых, необходимо убедиться, что AnimatedSprite2D — правильный узел для использования. Я делаю одну из тех случайных игр-кликеров, в которых вы нажимаете кнопку и получаете случайный шанс получить разные предметы. Мне нужно, чтобы некоторые предметы были более редкими, чем другие, и чтобы спрайт показывал предмет, который вы получаете, а также имел возможность отправлять такую информацию, как редкость этого предмета, имя и т. д.
Прямо сейчас я думал о том, чтобы разместить несколько однокадровых анимаций на одном анимированном спрайте, а затем использовать имя анимации для поиска метаданных.
Если AnimatedSprite2D подойдет, как будет выглядеть сценарий?





Я не уверен, какой узел лучше подойдет для вашего случая, поэтому пишу решение как для AnimatedSprite2D, так и для AnimationPlayer на случай, если ваши предпочтения изменятся в будущем.
@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() для истинной случайности.
Вот соответствующие ссылки на документацию для используемых классов:
@OwenUhl попробуйте применить это самостоятельно, и если это не сработает, добавьте к вопросу все, что вы пробовали, и я буду более чем рад вам помочь.
Есть идеи, как сделать определенные анимации более вероятными, чем другие?