courier/scripts/enemy.gd

47 lines
1.3 KiB
GDScript

extends CharacterBody2D;
@export var speed = 300
var ac = 7;
var SpriteTurningSpeed = 5
@export var FrictionMult = 0
var player_chase = false;
var patrolpoint_cur = 0;
@export var nav: NavigationAgent2D
var player = null;
@onready var Player = get_tree().get_first_node_in_group("player")
@export var patrolpoints: Array[Node2D];
func _physics_process(delta: float) -> void:
var direction = Vector2(0,0)
if (player_chase):
nav.target_position = player.position;
else:
if(patrolpoints[patrolpoint_cur] != null):
nav.target_position = patrolpoints[patrolpoint_cur].position;
else:
nav.target_position = Vector2(0,0)
direction = nav.get_next_path_position() - global_position;
direction = direction.normalized();
velocity = velocity.lerp(direction * speed, ac * delta)
if velocity.length() > 0.1:
rotation = rotate_toward(rotation,velocity.angle(),delta*SpriteTurningSpeed)
if(patrolpoints[patrolpoint_cur] != null):
if(position.distance_to(patrolpoints[patrolpoint_cur].position) < 10):
print(patrolpoint_cur)
patrolpoint_cur += 1
if(patrolpoint_cur == patrolpoints.size()):
patrolpoint_cur = 0;
move_and_slide();
func _on_dictection_body_entered(body: Node2D) -> void:
player = body;
player_chase = true;
func _on_dictection_body_exited(body: Node2D) -> void:
player = null;
player_chase = false;