Exemplo n.º 1
0
 public override void InitializeAgent()
 {
     robot        = GetComponent <FighterBot>();
     stepInterval = agentParameters.numberOfActionsBetweenDecisions;
     isTraining   = brain.brainType == BrainType.External;
     waypoints    = new Queue <Vector2>();
 }
Exemplo n.º 2
0
 private void ToggleTexture(FighterBot robot, bool show)
 {
     if (robot != null)
     {
         uiImage.texture = robot.GetCam().Texture;
         uiImage.enabled = show;
         showTexture     = show;
     }
 }
Exemplo n.º 3
0
 public void Initialize(FighterBot robot)
 {
     for (int i = 0; i < 4; i++)
     {
         robot.GetLeg(i).GetOuterLeg().RaiseCollisionEvent += HandleCollisionEvent;
     }
     rb               = robot.GetBody().GetRigidbody();
     audioPlayer      = Object.FindObjectOfType <AudioPlayer>();
     audioSource      = GetComponent <AudioSource>();
     laser            = GetComponent <LineRenderer>();
     laser.startWidth = 0.075f;
     laser.endWidth   = 0.075f;
     laser.enabled    = true;
 }
Exemplo n.º 4
0
 private void Follow(FighterBot robot)
 {
     if (robot != selected)
     {
         if (showTexture)
         {
             ToggleTexture(selected, false);
             ToggleTexture(robot, true);
         }
         selected = robot;
         time     = Time.time;
     }
     crFollow = StartCoroutine(FollowCR());
 }
Exemplo n.º 5
0
    private void SelectNext()
    {
        List <FighterBot> candidates         = new List <FighterBot>();
        List <FighterBot> preferedCandidates = new List <FighterBot>();

        for (int i = 0; i < robots.Length; i++)
        {
            FighterBot robot = robots[i];
            if (robot != selected && robot.GetPosition().sqrMagnitude < outerBound &&
                IsUpright(robot) && HasMatchingVelocity(robot))
            {
                candidates.Add(robot);
                if (robot.Sensor.IsLocked)
                {
                    preferedCandidates.Add(robot);
                }
            }
        }

        if (preferedCandidates.Count > 0)
        {
            candidates = preferedCandidates;
        }

        float      minDist = Mathf.Infinity;
        FighterBot closest = selected;

        foreach (FighterBot robot in candidates)
        {
            float d = Vector3.Distance(transform.position, robot.GetPosition());
            if (d < minDist)
            {
                closest = robot;
                minDist = d;
            }
        }
        Follow(closest);
    }