fuzzyworld

godot-shooter / files / weapons / Rocket.gd

Rocket.gd

Blame: the commit that last changed each line · file · history

bd0825dd 2023-11-09 Pavel Safronov1extends Area2D
2class_name Rocket
3
16938031 2023-11-17 Pavel Safronov4const Utils = preload("res://utils/Utils.gd")
5const SmallExplosion = preload("res://effects/SmallExplosion.tscn")
ee6296b3 2023-11-17 Pavel Safronov6const Constants = preload("res://utils/Constants.gd")
7
bd0825dd 2023-11-09 Pavel Safronov8export var lifetime_seconds = 5
ee6296b3 2023-11-17 Pavel Safronov9export var speed = Constants.SPEED * 3
bd0825dd 2023-11-09 Pavel Safronov10export var arm_secs = 1
a343368e 2023-11-10 Pavel Safronov11export var damage_amount = 2
636e5224 2023-12-01 Pavel Safronov12export var shooter_rid = 0
ffa98f7d 2023-11-17 Pavel Safronov13var is_dead = false
bd0825dd 2023-11-09 Pavel Safronov14
15func _ready() -> void:
16 pass
17
18func _physics_process(delta: float) -> void:
ffa98f7d 2023-11-17 Pavel Safronov19 if !is_dead:
20 position += transform.y * speed * delta
bd0825dd 2023-11-09 Pavel Safronov21
22func on_bullet_body_entered(body):
636e5224 2023-12-01 Pavel Safronov23 var body_id = (body as Node2D).get_instance_id()
24 var body_is_shooter = shooter_rid != 0 and shooter_rid == body_id
25 if body_is_shooter:
26 return
27 if body.has_method("hurt"):
a343368e 2023-11-10 Pavel Safronov28 body.hurt(damage_amount)
bd0825dd 2023-11-09 Pavel Safronov29 var se = SmallExplosion.instance()
30 get_parent().add_child(se)
31 se.transform = transform
ffa98f7d 2023-11-17 Pavel Safronov32 self.is_dead = true
33 $AnimationPlayer.play("fade_out")
bd0825dd 2023-11-09 Pavel Safronov34
35func _on_LifeTimer_timeout() -> void:
36 var se = SmallExplosion.instance()
37 get_parent().add_child(se)
38 se.transform = transform
39 queue_free()