JuegoClase/Personajes/EnemigoCerdito/enemigo_cerdito.gd

101 lines
2.1 KiB
GDScript

extends Personajes
# comentario
@onready var raysuelo : RayCast2D = $Raycasts/RayCastSuelo
@onready var rayMuro : RayCast2D = $Raycasts/RayCastMuro
@onready var rayos := $Raycasts
@onready var raycastPlayer = $raycastPlayerDetector
@onready var anim = $AnimationPlayer
var player
var canChangeDirection = true
enum estados {ANGRY,PATRULLAR,MORIRSE}
var estadoActual = estados.PATRULLAR :
set(value):
estadoActual = value
match value:
estados.ANGRY:
speed = 90
anim.play("runAngry")
estados.PATRULLAR:
speed = 60
anim.play("walk")
var direccion = -1 :
set(value):
if value != direccion:
darseVuelta()
direccion = value
func _ready():
anim.play("walk")
speed = 60
func _physics_process(delta):
velocity.x = direccion * speed
if !is_on_floor():
velocity.y += 9
move_and_slide()
func _process(delta):
if player == null and raycastPlayer.is_colliding():
var colision = raycastPlayer.get_collider()
if colision.is_in_group("Player"):
player = colision
estadoActual = estados.ANGRY
if estadoActual == estados.ANGRY and player != null:
anim.play("runAngry")
var directionPlayer = global_position.direction_to(player.global_position)
if directionPlayer.x < 0:
direccion = -1
elif directionPlayer.x > 0:
direccion = 1
if estadoActual == estados.PATRULLAR:
if canChangeDirection and (rayMuro.is_colliding() or !raysuelo.is_colliding()):
direccion *= -1
$Sprite2D.flip_h = true if direccion == 1 else false
func takeDmg(damage):
vida-=damage
print(vida)
if vida<=0:
$dmgPlayer/CollisionShape2D.set_deferred("disabled",true)
estadoActual = estados.MORIRSE
anim.play("hurt")
$CollisionShape2D.set_deferred("disabled",true)
await (anim.animation_finished)
queue_free()
func _on_ray_timer_timeout():
canChangeDirection = true
pass # Replace with function body.
func darseVuelta():
canChangeDirection = false
$Raycasts/RayTimer.start()
rayos.scale.x *= -1
raycastPlayer.scale.x *= -1
func _on_dmg_player_he_hecho_danio():
estadoActual = estados.PATRULLAR
#darseVuelta()
direccion *= -1