Roughed in dynamic CRT enemy movement; tweaked parallax cloud movement

and sprites.
This commit is contained in:
Henry 2026-02-18 00:32:14 +00:00
parent 26803702b1
commit 661098529d
12 changed files with 134 additions and 27 deletions

View file

@ -3,6 +3,7 @@ extends Area2D
var bullet_scene = preload("res://scenes/enemy_bullet.tscn")
var start_pos = Vector2.ZERO
var speed = 0
var direction = Vector2(0,1)
var tween_speed: float = 1.4
var exploding = false
@ -11,11 +12,17 @@ var enemy_move_aggression = randf_range(5, 20)
var enemy_shoot_aggression = randf_range(4, 20)
@onready var screensize = get_viewport_rect().size
@onready var timer = $MoveTimer
func _ready():
timer.start()
func start(pos):
speed = 0
position = Vector2(pos.x, -pos.y)
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)
start_pos = pos
await get_tree().create_timer(randf_range(0.25, 0.55)).timeout
var tween = create_tween().set_trans(Tween.TRANS_BACK)
@ -26,9 +33,21 @@ func start(pos):
$ShootTimer.wait_time = enemy_shoot_aggression
$ShootTimer.start()
func _on_timer_timeout() -> void:
func _on_timer_timeout():
speed = randf_range(75, 100)
$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)
$DirectionTimer.start()
func _on_shoot_timer_timeout():
var b = bullet_scene.instantiate()
@ -38,9 +57,36 @@ func _on_shoot_timer_timeout():
$ShootTimer.start()
func _process(delta):
position.y += speed * delta
position += direction * speed * delta
#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():