TowerGame/scripts/bullet.gd

32 lines
861 B
GDScript

extends RigidBody3D
@export var damage_per_speed: float = 1.0
@export var min_damage: float = 10.0
@export var lifetime: float = 2.0
@export var homing_force: float = 10.0
var target: Enemy = null
func _on_body_entered(body: Node) -> void:
#print("Bullet collided with %s" % body.name)
if body is Unit:
var speed: float = linear_velocity.length()
var damage: float = speed * damage_per_speed
if damage >= min_damage:
(body as Unit).hurt(damage)
func _process(delta: float) -> void:
lifetime -= delta
if lifetime <= 0:
destroy()
if global_position.y < -10:
destroy()
func _physics_process(delta: float) -> void:
if homing_force > 0 and target != null:
var distance: float = global_position.distance_to(target.global_position)
var velocity_direction: Vector3 = linear_velocity.limit_length()
func destroy() -> void:
queue_free()