GodotФорумВопросы

Проблема с animationPlayer (2 стр)

Страницы: 1 2
#15
17:27, 4 апр 2025

Der FlugSimulator
> Один не может толком сформулировать вопрос, логи приложить и полный код
Да проще обходным путем. Я через обж кидаю. Некоторые проблемы проще обойти чем решать. И на счет сформулировать вопрос. После обновления программы blender и Godot, не импортируется файл .blend куда тебе еще четче.

#16
17:48, 4 апр 2025

Скуфидон_лайф
> Да проще обходным путем. ... Некоторые проблемы проще обойти чем решать.
По такой логике - ещё проще их вообще не решать.

> Я через обж кидаю.
Тут перевод необходим.

> После обновления программы blender и Godot, не импортируется файл .blend
Ты опять всё в кучу валишь. Конкретно ты не предоставил ни логов, ни настроек, ни описания процесса.
Я что, вытягивать должен? Не хочешь - не надо.

> куда тебе еще четче.
Ты форму багрепортов на гитхабе видел?
Я не телепат. А что у тебя там - может быть 100 причин.
У всех всё работает, лично у меня на линуксе и у 4х чел. на венде, не говоря о всех других фидбэках.

#17
17:56, 4 апр 2025

Скуфидон_лайф
> Один не может толком сформулировать вопрос

И я кстати не про тебя здесь говорил, а про автора этого топика.
Я всё жду его пояснения, что такое  iframes(), и логов print()

#18
18:15, 4 апр 2025

Der FlugSimulator
> Я что, вытягивать должен? Не хочешь - не надо.
Ну да я просто кидаю через другой формат. Так что да в целом помощь больше не нужна. Но спасибо за желание помочь, это ценно.

#19
19:09, 9 апр 2025


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

#20
13:54, 10 апр 2025

Привет. Решил проблему?

#21
16:43, 10 апр 2025

Пока нет, сейчас сосредоточился на других проблемах. Эту пока что просто заменил на эффект мерцания игрока при получении урона, убрав анимацию.

#22
17:04, 10 апр 2025

Я думаю, ты можешь попробовать останавливать анимацию через stop и задавать ее через queue (у меня сейчас нет доступа к документации, но вроде там как-то можно через queue задавать ее запуск).

#23
19:13, 10 апр 2025

MalkHadiel
> Эта функция вообще никак не влияет на процесс
Как же не влияет - она подвешивает выполнение функции через  await.

Что я ещё вижу из плохого, как я раньше и говорил -  _on_animation_player_finished() - на это нельзя завязываться, если уже используешь стейт машину.
Это не будет работать, если анимация остановлена и может в циклах.

Страницы: 1 2
GodotФорумВопросы