Godot Version
4.3
Question
`I tried to use the code of kidscancode and for some reason the enemy isn’t moving
here’s the code to check:`
extends CharacterBody2D
class_name Enemy
enum States {patrol, chasing, alerting, search, back, dead, attack}
@export var speed = 60.0
@export var path = Path2D
@onready var player_detection: RayCast2D = $"player detection"
@onready var wall_detection: RayCast2D = $"WALL DETECTION"
@onready var label: Label = $Label
var current_state = States.patrol
var offset = 0.0
var direction: int = 1
var target = null
var player = null
var current_patrol_point = 0
var patrol_points = []
func _ready():
if path:
patrol_points = path.curve.get_baked_points()
func _physics_process(delta):
label.text = str(States.keys()[current_state])
velocity = Vector2.ZERO
choose_action()
if target:
#if target.x > position.x:
#$Sprite2D.scale.x = 1
#elif target.x < position.x:
#$Sprite2D.scale.x = -1
if current_state != States.attack:
velocity = position.direction_to(target) * speed
#if velocity.length() > 0:
#anim_state.travel("run")
move_and_slide()
func choose_action():
#var current_anim = anim_state.get_current_node()
#if current_anim in attacks:
#return
match current_state:
States.dead:
set_physics_process(false)
States.patrol:
if path:
#anim_state.travel("idle")
target = null
return
target = patrol_points[current_patrol_point]
if position.distance_to(target) < 5:
current_patrol_point = wrapi(current_patrol_point + 1, 0, patrol_points.size())
States.chasing:
target = player.position
States.attack:
target = player.position
#anim_state.travel(attacks.pick_random())
#func _on_attack_radius_body_entered(body):
#current_state = States.attack
#
#func _on_detect_radius_body_exited(body):
#player = null
#current_state = States.patrol
#
#func _on_attack_radius_body_exited(body):
#current_state = States.chasing
func _on_area_2d_body_entered(body: Node2D) -> void:
player = body
current_state = States.chasing