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() - на это нельзя завязываться, если уже используешь стейт машину.
Это не будет работать, если анимация остановлена и может в циклах.