Add navigation regions to all floors

Actually fix the annoying LookAt bug for real this time I hope
This commit is contained in:
2026-02-06 00:00:22 -08:00
parent da8c4209d7
commit 70a33d68cf
40 changed files with 1547 additions and 981 deletions

View File

@@ -117,6 +117,8 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
this.Provide();
_enemyLogic.Start();
_previousPosition = GlobalPosition;
}
#endregion
@@ -206,6 +208,7 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
var randomSpawnPoint = spawnPointsGodotCollection.PickRandom();
GlobalPosition = randomSpawnPoint.GlobalPosition;
_previousPosition = GlobalPosition;
if (this is IHavePatrolBehavior patrolEnemy)
patrolEnemy.PatrolBehavior.HomePosition = GlobalPosition;
@@ -218,17 +221,12 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
protected void LookAtTarget(Vector3 targetPosition)
{
var velocity = GlobalPosition - _previousPosition;
if (velocity.IsZeroApprox())
{
_previousPosition = GlobalPosition;
if (GlobalPosition.IsEqualApprox(targetPosition))
return;
}
var lookDirection = GlobalPosition - targetPosition;
var look = new Vector3(lookDirection.X, GlobalPosition.Y, lookDirection.Z);
if (!look.IsEqualApprox(GlobalPosition))
LookAt(look - new Vector3(0.001f, 0.001f, 0.001f), Vector3.Up);
if (GlobalPosition.DistanceTo(look) > 0.01)
LookAt(look, Vector3.Up);
}
protected void SetTarget(Vector3 targetPosition) => TargetPosition = targetPosition;

View File

@@ -42,11 +42,11 @@ script = ExtResource("1_xsluo")
[node name="CollisionShape" type="CollisionShape3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.74339, 0)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.0617, 0)
shape = SubResource("CapsuleShape3D_cwfph")
[node name="Collision" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.74339, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.0617, 0)
[node name="Collision" type="Area3D" parent="Collision"]
collision_layer = 2048
@@ -84,13 +84,13 @@ collision_mask = 34
shape = SubResource("CylinderShape3D_drfkj")
[node name="Visual" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.657239, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.975554, 0)
[node name="EnemyModelView" parent="Visual" instance=ExtResource("4_o3b7p")]
unique_name_in_owner = true
[node name="Components" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.74339, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.0617, 0)
[node name="PatrolBehavior" parent="Components" instance=ExtResource("4_drfkj")]
unique_name_in_owner = true
@@ -112,7 +112,7 @@ radius = 1.0
debug_enabled = true
[node name="SFX" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.74339, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.0617, 0)
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="SFX"]
unique_name_in_owner = true

View File

@@ -727,7 +727,7 @@ autoplay = true
bus = &"SFX"
[node name="Shadow" type="Sprite3D" parent="."]
transform = Transform3D(0.115, 0, 0, 0, -5.02681e-09, 0.115, 0, -0.115, -5.02681e-09, -0.00018537, 0.00315392, 0.0453106)
transform = Transform3D(0.115, 0, 0, 0, -5.02681e-09, 0.115, 0, -0.115, -5.02681e-09, -0.00018537, -0.942894, 0.0453106)
transparency = 0.1
cast_shadow = 0
texture_filter = 0