JustPaste.it

the enemy script

extends KinematicBody2D

 

var motion = Vector2()
export (int) var speed = 60
var jump_force = -300
var gravity = 11.8
var drilling = true
var tween = Tween.new()
var jump_timer = Timer.new()

 

func _ready():
add_child(tween)
add_child(jump_timer)
jump_timer.wait_time = 1.0
jump_timer.one_shot = true
jump_timer.connect("timeout", self, "_on_jump_timer_timeout")

 

func _process(delta):
$CollisionShape2D.rotation_degrees = $rotate.rotation_degrees + 90
$groundDetector/CollisionPolygon2D.rotation_degrees = $rotate.rotation_degrees + 90
if drilling:
var forward_dir = Vector2(cos($rotate.rotation), sin($rotate.rotation))
position += forward_dir * delta * speed #movement based on rotation
$rotate.look_at(get_parent().get_node(get_parent().player).position)
else:
motion.y += gravity
move_and_slide(motion)

 

func _on_groundDetector_body_entered(body):
if body is TileMap:
drilling = true

 

func _on_groundDetector_body_exited(body):
if body is TileMap:
drilling = false
jump_timer.start()

 

func _on_jump_timer_timeout():
motion.y = jump_force
jump_timer.stop()
yield(get_tree().create_timer(0.4), "timeout")
tween.interpolate_property(
$rotate, # Node whose property will be interpolated
"rotation_degrees", # Property to interpolate
$rotate.rotation_degrees, # Start value
180, # End value
0.2 # Time in seconds, you can change it
)
tween.start()