96 lines
2.5 KiB
GDScript
96 lines
2.5 KiB
GDScript
extends Area2D
|
|
|
|
@onready var bullet = $Bullet
|
|
|
|
@export var speed = -250
|
|
var shader_active = false
|
|
var pause = false
|
|
var target = null
|
|
|
|
@onready var head_splat = preload("res://sprites/head_splat.png")
|
|
|
|
func start(pos):
|
|
position = pos
|
|
|
|
#func _ready():
|
|
#var target_node = get_parent().get_node("root/$EnemyShard")
|
|
#var target = target_node.is_in_group("shards")
|
|
|
|
|
|
func _process(delta):
|
|
if pause == true: return
|
|
position.y += speed * delta
|
|
|
|
#if target:
|
|
#var direction = (target.position - position).normalized()
|
|
#position += direction * speed * delta
|
|
#
|
|
#if position.distance_to(target.position) < 10:
|
|
#stick_to_target(target)
|
|
|
|
#func stick_to_target(target):
|
|
#target.add_child(bullet)
|
|
#print("Sticking to target!")
|
|
#position = Vector2.ZERO
|
|
#
|
|
|
|
# Signal checks to see if the bullet leaves the viewport then removes bullet.
|
|
func _on_visible_on_screen_notifier_2d_screen_exited() -> void:
|
|
queue_free()
|
|
|
|
func _on_area_entered(area: Area2D) -> void:
|
|
|
|
if area.is_in_group("enemies"):
|
|
match area.enemy_type:
|
|
"crt":
|
|
if area.is_in_group("enemies"):
|
|
print("CRT hit!")
|
|
area.hit_detection()
|
|
queue_free()
|
|
|
|
"shards":
|
|
if area.is_in_group("shards"):
|
|
#print("Shards hit!")
|
|
area.hit_detection()
|
|
# stick_to_target(target)
|
|
reparent(area)
|
|
$Sprite2D.texture = head_splat
|
|
$Sprite2D.hframes = 1
|
|
position = Vector2.ZERO
|
|
pause = true
|
|
$Sprite2D/GPUParticles2D.hide()
|
|
|
|
|
|
|
|
"mirror":
|
|
if area.is_in_group("enemies"):
|
|
print("Mirror hit!")
|
|
area.hit_detection()
|
|
queue_free()
|
|
|
|
"chicken":
|
|
if area.is_in_group("enemies"):
|
|
print("Chicken hit!")
|
|
area.hit_detection()
|
|
queue_free()
|
|
|
|
_:
|
|
if area.is_in_group("enemies"):
|
|
area.hit_detection()
|
|
|
|
|
|
if area.is_in_group("heart"):
|
|
print("Heart hit!")
|
|
EventBus.ending.emit(2)
|
|
queue_free()
|
|
#area.hit_detection()
|
|
|
|
|
|
#func bullet_fx():
|
|
#shader_active = true
|
|
#bullet.material.set_shader_parameter("toggle", 1.0)
|
|
#pause = true
|
|
#await get_tree().create_timer(1).timeout
|
|
#pause = false
|
|
#shader_active = false
|
|
#bullet.material.set_shader_parameter("toggle", 0.0)
|