Exemple #1
0
    public override int Execute(DroneEnvironmentKnowledge knowledge)
    {
        var enemyColliders = Physics.OverlapSphere(knowledge.BotTransform.position, _range, _detectionLayer);

        UnityEngine.Debug.Log("number of detected enemies:::" + enemyColliders.Length);


        // if (knowledge.EnemiesInRange.Count > 0) return -1 * _score;

        if (enemyColliders.Length > 0)
        {
            List <EnemyControllerBase> enemies = new List <EnemyControllerBase>();

            foreach (var enemyCollider in enemyColliders)
            {
                var enemy = enemyCollider.transform.root.GetComponent <EnemyControllerBase>();
                if (enemies.Contains(enemy))
                {
                    continue;
                }
                enemies.Add(enemy);
                knowledge.EnemiesInRange = enemies;
                Debug.Log("enemies number::::" + enemies.Count);
            }

            return(-1 * _score);
        }



        return(_score);
    }
Exemple #2
0
 public override int Execute(DroneEnvironmentKnowledge knowledge)
 {
     if (knowledge.EnemiesInRange.Count <= 0)
     {
         return(-1 * _score);
     }
     return(_score);
 }
Exemple #3
0
    public override int Execute(DroneEnvironmentKnowledge knowledge)
    {
        if (knowledge.HuntingEnemy == null && knowledge.EnemiesInRange.Count > 0)
        {
            return(_score);
        }
        ;


        return(-1 * _score);
    }
Exemple #4
0
    public override int Execute(DroneEnvironmentKnowledge knowledge)
    {
        var enemyColliders = Physics.OverlapSphere(knowledge.BotTransform.position, _range, _detectionLayer);

        if (enemyColliders.Length <= 0)
        {
            return(_score);
        }

        return(-1 * _score);
    }
Exemple #5
0
    public override int Execute(DroneEnvironmentKnowledge knowledge)
    {
        if (knowledge.HuntingEnemy != null)
        {
            return(_score);
        }
        ;


        return(-1 * _score);
    }
Exemple #6
0
 public override int Execute(DroneEnvironmentKnowledge knowledge)
 {
     if (knowledge.HuntingEnemy == null)
     {
         return(-1 * _score);
     }
     if (knowledge.BotTransform.position.y < knowledge.HuntingEnemy.Position.y + knowledge.DroneConfiguration.ThresholdOverEnemy)
     {
         return(0);
     }
     return(_score);
 }
Exemple #7
0
    public override int Execute(DroneEnvironmentKnowledge knowledge)
    {
        if (knowledge.HuntingEnemy == null)
        {
            return(-1 * _score);
        }

        if (knowledge.BotTransform.position.x < knowledge.HuntingEnemy.Position.x)
        {
            return(0);
        }
        return(_score);
    }
Exemple #8
0
    public override int Execute(DroneEnvironmentKnowledge knowledge)
    {
        if (knowledge.HuntingEnemy == null)
        {
            return(-1 * _score);
        }

        float sqrDist = (knowledge.BotTransform.position - knowledge.HuntingEnemy.Position).sqrMagnitude;

        if (sqrDist < knowledge.DroneConfiguration.AllowedDistanceToMoveHorizontally)
        {
            return(0);
        }
        return(_score);
    }
Exemple #9
0
    EnemyControllerBase FindNearestEnemy(DroneEnvironmentKnowledge knowledge)
    {
        float nearestDistance            = float.MaxValue;
        EnemyControllerBase nearestEnemy = null;

        for (int i = 0; i < knowledge.EnemiesInRange.Count; i++)
        {
            float distance = (knowledge.EnemiesInRange[i].Position - knowledge.BotTransform.position).sqrMagnitude;
            if (distance < nearestDistance)
            {
                nearestDistance = distance;
                nearestEnemy    = knowledge.EnemiesInRange[i];
            }
        }

        return(nearestEnemy);
    }
Exemple #10
0
    public int CalculateScore(DroneEnvironmentKnowledge knowledge)
    {
        int           score   = 0;
        StringBuilder builder = new StringBuilder();


        foreach (var item in _scoreCalculator)
        {
            int itemScore = item.Execute(knowledge);
            score += itemScore;
            builder.Append(item.GetType().Name + ":::" + itemScore);
        }
        builder.Append(this.GetType().Name + score).Append(Environment.NewLine);

        Debug.Log(builder);
        return(score);
    }
Exemple #11
0
    public override int Execute(DroneEnvironmentKnowledge knowledge)
    {
        if (knowledge.HuntingEnemy == null)
        {
            return(-1 * _score);
        }


        Vector3 direction    = (knowledge.HuntingEnemy.Position - knowledge.BotTransform.position).normalized;
        bool    goalObscured = Physics.Raycast(knowledge.BotTransform.position, direction, knowledge.DroneConfiguration.ThresholdToDetectEnemy, _obstacleLayer);

        if (goalObscured)
        {
            return(0);
        }

        return(_score);
    }
Exemple #12
0
    public override void Execute(DroneEnvironmentKnowledge knowledge)
    {
        if (knowledge.HuntingEnemy == null)
        {
            return;
        }
        shootTimer += Time.deltaTime;
        Vector3 goalRotation = (knowledge.HuntingEnemy.Position - knowledge.BotTransform.position).normalized;


        if (shootTimer < knowledge.DroneConfiguration.FireRate)
        {
            return;
        }
        shootTimer = 0;
        Vector3 goalDirection = (knowledge.HuntingEnemy.Position - knowledge.BotTransform.position).normalized;
        var     bullet        = knowledge.BotTransform.GetComponent <DroneController>().PoolManager.ShootBullet(knowledge.BotTransform.position, Quaternion.identity, goalDirection);
    }
Exemple #13
0
 public override void Execute(DroneEnvironmentKnowledge knowledge)
 {
     // todo for now its just rudimentary
     knowledge.HuntingEnemy = FindNearestEnemy(knowledge);
     //    Debug.LogError("select new hunt"+ knowledge.HuntingEnemy.name);
 }
Exemple #14
0
 private void InitKnowledge()
 {
     _knowledge = new DroneEnvironmentKnowledge(this.transform, new List <EnemyControllerBase>(), null, _droneConfiguration);
 }
Exemple #15
0
 public override void Execute(DroneEnvironmentKnowledge knowledge)
 {
     //probably there should be nothing
 }
Exemple #16
0
 public override void Execute(DroneEnvironmentKnowledge knowledge)
 {
     knowledge.BotTransform.position += new Vector3(0, knowledge.DroneConfiguration.AscendSpeed, 0);
 }
Exemple #17
0
 public override void Execute(DroneEnvironmentKnowledge knowledge)
 {
     // todo probably nothing
 }
Exemple #18
0
 public abstract void Execute(DroneEnvironmentKnowledge knowledge);
Exemple #19
0
 public override void Execute(DroneEnvironmentKnowledge knowledge)
 {
     knowledge.BotTransform.position += new Vector3(0, 0, -knowledge.DroneConfiguration.HorizontalSpeed);
 }