mirror of
https://codeberg.org/Melon-Bread/Comets.gd.git
synced 2025-07-06 22:54:36 -04:00
Initial Invader concept added
This commit is contained in:
@ -1,7 +1,5 @@
|
||||
extends Node2D
|
||||
|
||||
# TODO: MAYBE make ufo enemey that randomly flies in from ones side to the other
|
||||
|
||||
const COMET_SPAWNER = preload("res://scenes/comet_spawner.tscn")
|
||||
|
||||
@export var level : int = 1
|
||||
|
66
scripts/invader.gd
Normal file
66
scripts/invader.gd
Normal file
@ -0,0 +1,66 @@
|
||||
extends Area2D
|
||||
|
||||
# TODO: Make a random spawner for invaders
|
||||
# TODO: Give points if shot
|
||||
|
||||
signal shot
|
||||
|
||||
const BULLET = preload("res://scenes/bullet.tscn")
|
||||
|
||||
@export var move_speed := 100.0
|
||||
var movement_direction := Vector2.ZERO
|
||||
var random_position := Vector2.ZERO
|
||||
var can_shoot := false
|
||||
var viewport_size : Vector2
|
||||
|
||||
func _ready() -> void:
|
||||
viewport_size = get_viewport_rect().size
|
||||
|
||||
# I am sorry to who has to make sense of this
|
||||
random_position.x = randi_range(1, 2)
|
||||
if random_position.x == 2:
|
||||
random_position.x = viewport_size.x-1
|
||||
movement_direction.x = -1
|
||||
else:
|
||||
movement_direction.x = 1
|
||||
random_position.y = randi_range(32, viewport_size.y + 32)
|
||||
position = random_position
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
position += move_speed * movement_direction * delta
|
||||
|
||||
if can_shoot:
|
||||
# FIXME: Proper shoot angle and not able to sudoku
|
||||
shoot($GunMarker.global_position, randf_range(90.0, 100.0))
|
||||
|
||||
# "Die", if off screen
|
||||
if position.x > viewport_size.x or position.x < 0:
|
||||
queue_free()
|
||||
|
||||
func _on_flying_tone_finished() -> void:
|
||||
$FlyingTone.play()
|
||||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if body.is_in_group("ship"):
|
||||
body.crash()
|
||||
|
||||
func _on_area_entered(area: Area2D) -> void:
|
||||
if area.is_in_group("bullet"):
|
||||
shot.emit()
|
||||
crash()
|
||||
|
||||
func shoot(pos : Vector2, rot : float) -> void:
|
||||
var bullet := BULLET.instantiate()
|
||||
bullet.position = pos
|
||||
bullet.rotation = rot
|
||||
$Projectiles.add_child(bullet)
|
||||
$ShootSound.play()
|
||||
can_shoot = false
|
||||
$ShootTimer.start()
|
||||
|
||||
func crash() -> void:
|
||||
$AnimationPlayer.play("crash")
|
||||
|
||||
func _on_shoot_timer_timeout() -> void:
|
||||
can_shoot = true
|
Reference in New Issue
Block a user