Add navigation regions to all floors
Actually fix the annoying LookAt bug for real this time I hope
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user