Add fade away component, simple AI and shooting
This commit is contained in:
44
scripts/components/periodic_shooting.gd
Normal file
44
scripts/components/periodic_shooting.gd
Normal file
@@ -0,0 +1,44 @@
|
||||
class_name PeriodicShootingComponent
|
||||
extends Node
|
||||
|
||||
@export var bullet_scene: PackedScene = preload("res://objects/bullet.tscn")
|
||||
@export var shoot_interval: float = 1.0
|
||||
@export var shoot_direction: Vector2 = Vector2.RIGHT
|
||||
@export var side_to_side_movement: SideToSideMovement
|
||||
@export var root: Node2D
|
||||
|
||||
var timer: Timer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
root = get_parent()
|
||||
setup_timer()
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if side_to_side_movement:
|
||||
shoot_direction = side_to_side_movement.direction if side_to_side_movement.direction != Vector2.ZERO else Vector2.RIGHT
|
||||
|
||||
func shoot() -> void:
|
||||
if shoot_direction == Vector2.ZERO:
|
||||
return
|
||||
|
||||
var bullet_instance: Node2D = bullet_scene.instantiate()
|
||||
var bullet_component: BulletComponent = bullet_instance.get_node("BulletComponent")
|
||||
bullet_instance.position = root.position
|
||||
bullet_component.direction = shoot_direction
|
||||
get_tree().current_scene.add_child(bullet_instance)
|
||||
|
||||
|
||||
func on_timer_timeout() -> void:
|
||||
shoot()
|
||||
timer.start()
|
||||
|
||||
|
||||
func setup_timer() -> void:
|
||||
timer = Timer.new()
|
||||
timer.wait_time = shoot_interval
|
||||
timer.one_shot = false
|
||||
timer.autostart = true
|
||||
timer.timeout.connect(on_timer_timeout)
|
||||
add_child(timer)
|
Reference in New Issue
Block a user