Проблемы с анимацией противника Годо

#game-physics #godot #gdscript

#игра-физика #годо #gdscript

Вопрос:

Я создал врага для своей 2d rpg игры в godot, но я использовал AnimationPlayer и не знаю, как заставить моего врага следовать за мной с правильной анимацией

 onready var sprite = $AnimationPlayer
onready var stats = $Stats
onready var playerDetectionZone = $PlayerDetectionZone


func _physics_process(delta):
    knockback = knockback.move_toward(Vector2.ZERO, FRICTION * delta)
    knockback = move_and_slide(knockback)
    match state:
        IDLE:
            velocity = velocity.move_toward(Vector2.ZERO, FRICTION * delta)
            seek_player()
        WANDER:
            pass
        CHASE:
            var player = playerDetectionZone.player
            if player != null:
                var direction = (player.global_position - global_position).normalized()
                velocity = velocity.move_toward(direction * MAX_SPEED, ACCELERATION * delta)
    
    velocity = move_and_slide(velocity)

func seek_player():
    if playerDetectionZone.can_see_player():
        state = CHASE


func _on_Hurtbox_area_entered(area):
    stats.health -= area.damage
    knockback = area.knockback_vector * 65


func _on_Stats_no_health():
    queue_free()
    var enemyDeathEffect = EnemyDeathEffect.instance()
    get_parent().add_child(enemyDeathEffect)
    enemyDeathEffect.global_position = global_position
 

Ответ №1:

У AnimationPlayer него есть play метод, который вы можете вызвать, чтобы сообщить ему о воспроизведении анимации (вы передаете имя анимации в качестве параметра). Обычно вы создаете циклические анимации и просто вызываете play , чтобы переключиться на другую анимацию, когда это необходимо (например, когда персонаж меняет состояния).

Я не вижу, чтобы вы AnimationPlayer вообще пользовались им. Кроме того, я не знаю, какие анимации у вас есть, и нужно ли вам что-то еще, чтобы это сработало в вашем случае. Итак, я ограничиваюсь самым основным.