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;
|
||||
|
||||
Reference in New Issue
Block a user