Advertisement
chris33556

simple_enemy_script_back_up

Jan 18th, 2023
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. extends KinematicBody
  2.  
  3. var move_speed = 2
  4. var attack_range = .1
  5. var stopping_distance = 2
  6. export (int) var health := 30
  7. var foo : int = 5
  8. var knockback = knockback(foo)
  9.  
  10. var target_player
  11. onready var anim_player = $AnimatedSprite3D
  12.  
  13. func _ready():
  14. target_player = get_tree().current_scene.get_node("player")
  15. anim_player.play("idle")
  16. func _physics_process(delta):
  17. if $AnimatedSprite3D.animation == "stunned" and $AnimatedSprite3D.frame !=5:
  18. yield(get_tree().create_timer(0.2), "timeout")
  19. anim_player.play("idle")
  20. if follow_player():
  21. anim_player.play("walking")
  22. elif idle():
  23. anim_player.play("idle")
  24. else:
  25. knockback = knockback(foo)
  26. if knockback:
  27. anim_player.play("stunned")
  28.  
  29. func follow_player():
  30. var direction_to_player = target_player.global_transform.origin - global_transform.origin
  31. var distance_to_player = direction_to_player.length()
  32. direction_to_player = direction_to_player.normalized()
  33.  
  34. # check if the enemy is to the left or right of the player
  35. if global_transform.origin.x < target_player.global_transform.origin.x:
  36. # enemy is to the left of the player, flip the sprite3d horizontally
  37. anim_player.set_scale(Vector3(-1, 1, 1))
  38. else:
  39. # enemy is to the right of the player, flip the sprite3d back to the opposite direction
  40. anim_player.set_scale(Vector3(1, 1, 1))
  41.  
  42. if distance_to_player > stopping_distance:
  43. var velocity = direction_to_player * move_speed
  44. move_and_slide(velocity)
  45. return true
  46. else:
  47. return false
  48.  
  49. func idle():
  50. var direction_to_player = target_player.global_transform.origin - global_transform.origin
  51. var distance_to_player = direction_to_player.length()
  52. if distance_to_player < stopping_distance:
  53. move_and_slide(Vector3.ZERO)
  54. return true
  55. else:
  56. return false
  57.  
  58. func knockback(damage: int):
  59. health -= damage
  60. print("enemy was hit!, current health: " + str(health))
  61. if health <= 20:
  62. anim_player.play("stunned")
  63.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement