Der FlugSimulator
> Один не может толком сформулировать вопрос, логи приложить и полный код
Да проще обходным путем. Я через обж кидаю. Некоторые проблемы проще обойти чем решать. И на счет сформулировать вопрос. После обновления программы blender и Godot, не импортируется файл .blend куда тебе еще четче.
Скуфидон_лайф
> Да проще обходным путем. ... Некоторые проблемы проще обойти чем решать.
По такой логике - ещё проще их вообще не решать.
> Я через обж кидаю.
Тут перевод необходим.
> После обновления программы blender и Godot, не импортируется файл .blend
Ты опять всё в кучу валишь. Конкретно ты не предоставил ни логов, ни настроек, ни описания процесса.
Я что, вытягивать должен? Не хочешь - не надо.
> куда тебе еще четче.
Ты форму багрепортов на гитхабе видел?
Я не телепат. А что у тебя там - может быть 100 причин.
У всех всё работает, лично у меня на линуксе и у 4х чел. на венде, не говоря о всех других фидбэках.
Скуфидон_лайф
> Один не может толком сформулировать вопрос
И я кстати не про тебя здесь говорил, а про автора этого топика.
Я всё жду его пояснения, что такое iframes(), и логов print()
Der FlugSimulator
> Я что, вытягивать должен? Не хочешь - не надо.
Ну да я просто кидаю через другой формат. Так что да в целом помощь больше не нужна. Но спасибо за желание помочь, это ценно.
func iframes():
can_take_damage = false
await get_tree().create_timer(0.5).timeout
can_take_damage = true
Эта функция вообще никак не влияет на процесс, я её закомментил - результат тот же.
По принтам ситуация такая:
Скрипт Player:
func take_damage(damage_amount : int, damage_vector : Vector2): if can_take_damage: enemy_position = damage_vector health -= damage_amount if health > 0: print("STATE MUST CHANGE") fsm.change_state("take_damage") iframes() else: can_take_damage = false fsm.change_state("die") pass func _on_animation_player_finished(anim_name: StringName) -> void: if anim_name == "Anim_Take_Damage": print("ANIMATION_TAKE_DAMAGE_WAS_FINISHED") fsm.change_state("idle")
Скрипт State-Take_Damage:
func enter(): var impulse_direction = entity.position.x - entity.enemy_position.x if impulse_direction < 0: print("IMPULSE") entity.velocity = Vector2(-200,-200) entity.move_and_slide() else: entity.velocity = Vector2(200,-200) entity.move_and_slide() print("ANIMATION START") entity.animPlayer.play("Anim_Take_Damage") entity.move_and_slide()
Результат срабатывания следующий:
STATE MUST CHANGE
IMPULSE
ANIMATION START
ANIMATION_TAKE_DAMAGE_WAS_FINISHED
Привет. Решил проблему?
Пока нет, сейчас сосредоточился на других проблемах. Эту пока что просто заменил на эффект мерцания игрока при получении урона, убрав анимацию.
Я думаю, ты можешь попробовать останавливать анимацию через stop и задавать ее через queue (у меня сейчас нет доступа к документации, но вроде там как-то можно через queue задавать ее запуск).
MalkHadiel
> Эта функция вообще никак не влияет на процесс
Как же не влияет - она подвешивает выполнение функции через await.
Что я ещё вижу из плохого, как я раньше и говорил - _on_animation_player_finished() - на это нельзя завязываться, если уже используешь стейт машину.
Это не будет работать, если анимация остановлена и может в циклах.