Exemple #1
0
 public void CloseDistance(float delta)
 {
     if (!inRange && aimed)
     {
         hostActor.Move(new Vector3(0, 0, -hostActor.GetMovementSpeed()), delta);
     }
     hostAi.AimAt(enemy.Transform.origin);
 }
Exemple #2
0
 public void MaintainDistance(float delta)
 {
     if (!inRange && aimed)
     {
         // Move up into range
         hostActor.Move(new Vector3(0, 0, -hostActor.GetMovementSpeed()), delta);
     }
     else if (aimed && currentRange < RangedRange)
     {
         // Back up to keep out of melee range
         hostActor.Move(new Vector3(0, 0, hostActor.GetMovementSpeed()), delta);
     }
     hostAi.AimAt(enemy.Transform.origin);
 }
    public void Pursue(float delta)
    {
        Vector3 pos          = hostActor.Translation;
        Vector3 potentialPos = hostActor.Pointer(1f);
        Vector3 targetPos    = enemy.Translation;

        hostAi.AimAt(targetPos);

        float currentDist   = pos.DistanceTo(targetPos);
        float potentialDist = potentialPos.DistanceTo(targetPos);

        if (currentDist > potentialDist)
        {
            hostActor.Move(new Vector3(0, 0, -hostActor.GetMovementSpeed()), delta);
        }
    }