Added maggie's CRT destruction sound.
This commit is contained in:
parent
661098529d
commit
7e75a96795
8 changed files with 160 additions and 66 deletions
|
|
@ -1,28 +1,40 @@
|
|||
extends Area2D
|
||||
|
||||
var enemy_type: String = "crt"
|
||||
|
||||
var bullet_scene = preload("res://scenes/enemy_bullet.tscn")
|
||||
var start_pos = Vector2.ZERO
|
||||
var move_break
|
||||
var speed = 0
|
||||
var direction = Vector2(0,1)
|
||||
var tween_speed: float = 1.4
|
||||
|
||||
var exploding = false
|
||||
var can_shoot = true
|
||||
var vulnerable = true
|
||||
var stunned = false
|
||||
var blocking = false
|
||||
|
||||
var shader_active = false
|
||||
|
||||
var enemy_move_aggression = randf_range(5, 20)
|
||||
var enemy_shoot_aggression = randf_range(4, 20)
|
||||
|
||||
const TILE = 32
|
||||
|
||||
@onready var screensize = get_viewport_rect().size
|
||||
@onready var timer = $MoveTimer
|
||||
|
||||
@onready var crt = $EnemyCRT/CRT
|
||||
|
||||
func _ready():
|
||||
timer.start()
|
||||
|
||||
func start(pos):
|
||||
speed = 2
|
||||
var pos_mod = randf_range(-32,32) #modify the start position randomly
|
||||
position = Vector2(pos.x + pos_mod, -pos.y) #add the modifier
|
||||
#position = Vector2(pos.x, -pos.y)
|
||||
$CRT.frame = 0
|
||||
#var pos_mod = randf_range(-TILE,TILE) #modify the start position randomly
|
||||
#position = Vector2(pos.x + pos_mod, -pos.y) #add the modifier
|
||||
position = Vector2(pos.x, -pos.y)
|
||||
start_pos = pos
|
||||
await get_tree().create_timer(randf_range(0.25, 0.55)).timeout
|
||||
var tween = create_tween().set_trans(Tween.TRANS_BACK)
|
||||
|
|
@ -38,65 +50,74 @@ func _on_timer_timeout():
|
|||
$DirectionTimer.start()
|
||||
|
||||
func _on_direction_timer_timeout():
|
||||
direction = Vector2(randf_range(-1, 1), randf_range(0, 1))
|
||||
direction = direction.snapped(Vector2(0,1))
|
||||
match direction:
|
||||
Vector2(0,1):
|
||||
$EnemyCRT.set_frame(0)
|
||||
Vector2(1,0):
|
||||
$EnemyCRT.set_frame(1)
|
||||
Vector2(-1,0):
|
||||
$EnemyCRT.set_frame(2)
|
||||
var move_direction = int(randf_range(0,2))
|
||||
match move_direction:
|
||||
0:
|
||||
$CRT.frame = 0
|
||||
direction = Vector2(0,1)
|
||||
can_shoot = true
|
||||
vulnerable = true
|
||||
1:
|
||||
$CRT.frame = 1
|
||||
direction = Vector2(1,0)
|
||||
can_shoot = false
|
||||
vulnerable = false
|
||||
2:
|
||||
$CRT.frame = 2
|
||||
direction = Vector2(-1,0)
|
||||
can_shoot = false
|
||||
vulnerable = false
|
||||
|
||||
$DirectionTimer.start()
|
||||
|
||||
func _on_shoot_timer_timeout():
|
||||
var b = bullet_scene.instantiate()
|
||||
get_tree().root.add_child(b)
|
||||
b.start(position)
|
||||
$ShootTimer.wait_time = randf_range(4, 20)
|
||||
$ShootTimer.start()
|
||||
if can_shoot == true:
|
||||
var b = bullet_scene.instantiate()
|
||||
get_tree().root.add_child(b)
|
||||
b.start(position)
|
||||
$ShootTimer.wait_time = randf_range(4, 20)
|
||||
$ShootTimer.start()
|
||||
|
||||
else:
|
||||
$ShootTimer.start()
|
||||
|
||||
func _process(delta):
|
||||
|
||||
if stunned == true:
|
||||
return
|
||||
|
||||
position += direction * speed * delta
|
||||
|
||||
|
||||
if position.x > screensize.x + 32:
|
||||
start(start_pos)
|
||||
|
||||
|
||||
|
||||
|
||||
#direction = direction.snapped(Vector2(1, 0)) # Snap to horizontal
|
||||
#direction = direction.snapped(Vector2(0, 1)) # Snap to vertical
|
||||
|
||||
|
||||
|
||||
if position.y > screensize.y + 32:
|
||||
start(start_pos)
|
||||
|
||||
#if position.x > screensize.x + 32:
|
||||
#start(start_pos)
|
||||
#
|
||||
#if position.x < screensize.x + 32:
|
||||
#start(start_pos)
|
||||
|
||||
#if Input.is_action_just_pressed("ui_right"):
|
||||
#direction = Vector2(1, 0) # Move right
|
||||
#elif Input.is_action_just_pressed("ui_left"):
|
||||
#direction = Vector2(-1, 0) # Move left
|
||||
#elif Input.is_action_just_pressed("ui_up"):
|
||||
#direction = Vector2(0, -1) # Move up
|
||||
#elif Input.is_action_just_pressed("ui_down"):
|
||||
#direction = Vector2(0, 1) # Move down
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
func explode():
|
||||
if exploding: return
|
||||
exploding = true
|
||||
EventBus.enemy_hit.emit(5)
|
||||
speed = 0
|
||||
$ImpactCRT.play()
|
||||
$AnimationPlayer.play("explode")
|
||||
#set_deferred("monitoring", false)
|
||||
await $AnimationPlayer.animation_finished
|
||||
queue_free()
|
||||
EventBus.enemy_died.emit()
|
||||
|
||||
func block():
|
||||
if blocking: return
|
||||
blocking = true
|
||||
stunned = true
|
||||
await get_tree().create_timer(5).timeout
|
||||
shader_active = true
|
||||
crt.material.set_shader_parameter("toggle", 1.0)
|
||||
await get_tree().create_timer(1).timeout
|
||||
shader_active = false
|
||||
crt.material.set_shader_parameter("toggle", 0.0)
|
||||
stunned = false
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue