enemy.gd 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. extends KinematicBody2D
  2. var player
  3. var motion = Vector2()
  4. export var speed = 150
  5. export var attackrange = 64
  6. export var reactiontime = 1
  7. var active = false
  8. export var detectionzone = 128
  9. export var exppt = 15
  10. func _ready():
  11. player = get_tree().get_nodes_in_group('player')[0]
  12. $types.play($types.get_animation_list()[round(rand_range(1,2))])
  13. pass # Replace with function body.
  14. func _physics_process(delta):
  15. if player:
  16. for x in range(-1,1):
  17. for y in range(-1,1):
  18. if checkapproxpos(Vector2(x,y)):
  19. active = true
  20. if active:
  21. reactiontime -= 1
  22. if reactiontime == 0:
  23. motion = (player.global_position - global_position).normalized()
  24. reactiontime = 180
  25. $hitbox.position = motion * attackrange
  26. move_and_slide(motion * speed)
  27. func checkapproxpos(var offset = Vector2()):
  28. var pos1 = Vector2(int(player.global_position.x/detectionzone), int(player.global_position.y/detectionzone))
  29. var pos2 = Vector2(int(global_position.x/detectionzone), int(global_position.y/detectionzone))
  30. if pos1.y+offset.y == pos2.y+offset.y and pos1.x+offset.x == pos2.x+offset.x:
  31. return true