Fixed rocket homing

This commit is contained in:
2025-11-13 21:40:20 +03:00
parent 4bd449a19b
commit 2f289de3cb
30 changed files with 31 additions and 28 deletions
@@ -25,27 +25,30 @@ func _physics_process(delta: float) -> void:
func _acquire_target() -> void:
target = _get_nearest_foe([])
target = _get_nearest_foe()
func _apply_homing_guidance(delta: float) -> void:
if not target: return
var max_rotation_speed := deg_to_rad(rotation_speed) * delta
var max_angle_change := deg_to_rad(rotation_speed) * delta
var angle := (_velocity + position - target.position).angle()
var current_angle := _velocity.angle()
var target_angle := (target.position - position).angle()
_velocity = _velocity.rotated(angle)
var angle_diff := wrapf(target_angle - current_angle, -PI, PI)
var angle_change := clampf(angle_diff, -max_angle_change, max_angle_change)
_velocity = _velocity.rotated(angle_change)
_update_sprite(_velocity)
func _update_sprite(velocity: Vector2) -> void:
var sector := 360.0 / sprites.size()
var angle := rad_to_deg(velocity.angle())
var bisector := floori(angle + sector * 0.5)
var sector := TAU / sprites.size()
var angle := velocity.angle()
var bisector := angle + sector * 0.5
var index := floori(posmod(bisector, 360) / sector)
var index := floori(fposmod(bisector, TAU) / sector)
for sprite in sprites:
sprite.hide()
@@ -1,7 +1,7 @@
[gd_scene load_steps=7 format=3 uid="uid://c3l866fdqt7pf"]
[ext_resource type="PackedScene" uid="uid://1o2ta17yc5bp" path="res://game/entities/weapons/abstract_weapon.tscn" id="1_sk5u1"]
[ext_resource type="Script" uid="uid://lauvvj5xhbud" path="res://game/entities/weapons/launcher/launcher.gd" id="2_mxjpe"]
[ext_resource type="Script" uid="uid://lauvvj5xhbud" path="res://game/entities/weapons/launcher/launcher_weapon.gd" id="2_mxjpe"]
[ext_resource type="Script" uid="uid://ccpriilfr3kme" path="res://game/reloaders/abstract_reloader.gd" id="3_1rkeb"]
[ext_resource type="PackedScene" uid="uid://dukgbg13ujkv2" path="res://game/entities/weapons/launcher/launcher_projectile.tscn" id="3_fsoo2"]
[ext_resource type="Script" uid="uid://b255rb32vc6co" path="res://game/reloaders/firerate_reloader.gd" id="4_fsoo2"]