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); }
public override int Execute(DroneEnvironmentKnowledge knowledge) { if (knowledge.EnemiesInRange.Count <= 0) { return(-1 * _score); } return(_score); }
public override int Execute(DroneEnvironmentKnowledge knowledge) { if (knowledge.HuntingEnemy == null && knowledge.EnemiesInRange.Count > 0) { return(_score); } ; return(-1 * _score); }
public override int Execute(DroneEnvironmentKnowledge knowledge) { var enemyColliders = Physics.OverlapSphere(knowledge.BotTransform.position, _range, _detectionLayer); if (enemyColliders.Length <= 0) { return(_score); } return(-1 * _score); }
public override int Execute(DroneEnvironmentKnowledge knowledge) { if (knowledge.HuntingEnemy != null) { return(_score); } ; return(-1 * _score); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
public override void Execute(DroneEnvironmentKnowledge knowledge) { // todo for now its just rudimentary knowledge.HuntingEnemy = FindNearestEnemy(knowledge); // Debug.LogError("select new hunt"+ knowledge.HuntingEnemy.name); }
private void InitKnowledge() { _knowledge = new DroneEnvironmentKnowledge(this.transform, new List <EnemyControllerBase>(), null, _droneConfiguration); }
public override void Execute(DroneEnvironmentKnowledge knowledge) { //probably there should be nothing }
public override void Execute(DroneEnvironmentKnowledge knowledge) { knowledge.BotTransform.position += new Vector3(0, knowledge.DroneConfiguration.AscendSpeed, 0); }
public override void Execute(DroneEnvironmentKnowledge knowledge) { // todo probably nothing }
public abstract void Execute(DroneEnvironmentKnowledge knowledge);
public override void Execute(DroneEnvironmentKnowledge knowledge) { knowledge.BotTransform.position += new Vector3(0, 0, -knowledge.DroneConfiguration.HorizontalSpeed); }