#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
вообще пользовались им. Кроме того, я не знаю, какие анимации у вас есть, и нужно ли вам что-то еще, чтобы это сработало в вашем случае. Итак, я ограничиваюсь самым основным.