Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends KinematicBody
- var move_speed = 2
- var attack_range = .1
- var stopping_distance = 2
- export (int) var health := 30
- var foo : int = 5
- var knockback = knockback(foo)
- var target_player
- onready var anim_player = $AnimatedSprite3D
- func _ready():
- target_player = get_tree().current_scene.get_node("player")
- anim_player.play("idle")
- func _physics_process(delta):
- if $AnimatedSprite3D.animation == "stunned" and $AnimatedSprite3D.frame !=5:
- yield(get_tree().create_timer(0.2), "timeout")
- anim_player.play("idle")
- if follow_player():
- anim_player.play("walking")
- elif idle():
- anim_player.play("idle")
- else:
- knockback = knockback(foo)
- if knockback:
- anim_player.play("stunned")
- func follow_player():
- var direction_to_player = target_player.global_transform.origin - global_transform.origin
- var distance_to_player = direction_to_player.length()
- direction_to_player = direction_to_player.normalized()
- # check if the enemy is to the left or right of the player
- if global_transform.origin.x < target_player.global_transform.origin.x:
- # enemy is to the left of the player, flip the sprite3d horizontally
- anim_player.set_scale(Vector3(-1, 1, 1))
- else:
- # enemy is to the right of the player, flip the sprite3d back to the opposite direction
- anim_player.set_scale(Vector3(1, 1, 1))
- if distance_to_player > stopping_distance:
- var velocity = direction_to_player * move_speed
- move_and_slide(velocity)
- return true
- else:
- return false
- func idle():
- var direction_to_player = target_player.global_transform.origin - global_transform.origin
- var distance_to_player = direction_to_player.length()
- if distance_to_player < stopping_distance:
- move_and_slide(Vector3.ZERO)
- return true
- else:
- return false
- func knockback(damage: int):
- health -= damage
- print("enemy was hit!, current health: " + str(health))
- if health <= 20:
- anim_player.play("stunned")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement