ld-39-jam/EnemyGrunt.gd

57 lines
1.2 KiB
GDScript3
Raw Normal View History

2017-07-30 20:57:41 +01:00
extends KinematicBody2D
2017-08-12 17:02:52 +01:00
var ExplosionEffect = load("res://ExplosionEffect.tscn")
const km = preload("Kinematic.gd")
2017-08-10 23:26:45 +01:00
var grunt_max_speed = 256 # pixels per second
var grunt_arrive_radius = 64
2017-08-10 20:17:39 +01:00
var grunt_arrive_speed = 1
2017-07-31 17:23:46 +01:00
var grunt_rot_speed = deg2rad(22.5) # degrees per second
2017-08-12 17:02:52 +01:00
var health = 100
var cur_kinematic
2017-08-10 20:17:39 +01:00
var steering
var s_seek
var s_arrive
2017-07-31 17:23:46 +01:00
2017-07-30 20:57:41 +01:00
func _ready():
var t = get_tree().get_root().get_node("Game/MinimapControl").register_entity(self)
set_fixed_process(true)
cur_kinematic = km.Kinematic.new(self, grunt_max_speed)
2017-08-10 20:17:39 +01:00
steering = km.Steering.new()
s_seek = km.Seek.new(self)
2017-08-10 20:17:39 +01:00
s_arrive = km.Arrive.new(self, grunt_arrive_radius, grunt_arrive_speed)
var player = get_tree().get_root().get_node("Game/Player")
s_seek.set_target(player)
s_arrive.set_target(player)
2017-08-12 15:45:22 +01:00
2017-08-12 17:02:52 +01:00
func on_explode():
# create explosion effect
var new_ee = ExplosionEffect.instance()
get_tree().get_root().add_child(new_ee)
new_ee.set_global_pos(get_global_pos())
queue_free()
2017-08-12 15:45:22 +01:00
func do_damage(v):
2017-08-12 17:02:52 +01:00
health -= v
2017-07-31 17:23:46 +01:00
2017-07-30 20:57:41 +01:00
func type():
2017-08-12 15:45:22 +01:00
return "Enemy"
2017-07-31 17:23:46 +01:00
func _fixed_process(delta):
2017-08-10 20:17:39 +01:00
s_seek.get_steering(steering)
s_arrive.get_steering(steering)
cur_kinematic.update(steering, delta)
2017-08-12 17:02:52 +01:00
if health <= 0:
on_explode()
2017-07-31 17:23:46 +01:00
func _process(delta):
pass
# rotate(grunt_rot_speed * delta)