feat: implement explosive and homing projectile types for weapon system

This commit is contained in:
DottsGit
2026-06-04 18:40:59 -04:00
parent 09103ce366
commit bd04135dba
2 changed files with 42 additions and 15 deletions
+20 -15
View File
@@ -6,20 +6,25 @@ var turn_speed: float = 5.0
func _physics_process(delta: float) -> void:
if is_instance_valid(weapon_source) and weapon_source.get("homing_target_pos") != null:
var target: Vector3 = weapon_source.homing_target_pos
if target != Vector3.ZERO:
# Steer towards target
var speed = velocity.length()
var desired_dir = (target - global_position).normalized()
var current_dir = velocity.normalized()
var new_dir = current_dir.lerp(desired_dir, turn_speed * delta).normalized()
velocity = new_dir * speed
# Also rotate visually to match new direction
var up_vec = Vector3.UP
if abs(new_dir.dot(up_vec)) > 0.99:
up_vec = Vector3.RIGHT
transform.basis = Basis.looking_at(new_dir, up_vec)
var is_painting = weapon_source.get("is_targeting")
if is_painting != null and not is_painting:
# Not painting target, just fly straight
pass
else:
var target: Vector3 = weapon_source.homing_target_pos
if target != Vector3.ZERO:
# Steer towards target
var speed = velocity.length()
var desired_dir = (target - global_position).normalized()
var current_dir = velocity.normalized()
var new_dir = current_dir.lerp(desired_dir, turn_speed * delta).normalized()
velocity = new_dir * speed
# Also rotate visually to match new direction
var up_vec = Vector3.UP
if abs(new_dir.dot(up_vec)) > 0.99:
up_vec = Vector3.RIGHT
transform.basis = Basis.looking_at(new_dir, up_vec)
super._physics_process(delta)