Exemplo n.º 1
0
    private void Swim()
    {
        if (Time.fixedTime >= timeNextAction)
        {
            // Randomize the speed.
            speedRandomized = speedFish * UnityEngine.Random.Range(0.5f, 1.5f);

            // Pick a random target.
            positionTarget = PenguinArea.ChooseRandomPosition(transform.parent.position, 100.0f, 260.0f, 2.0f, 13.0f);

            // Rotate toward the target.
            transform.rotation = Quaternion.LookRotation(positionTarget - transform.position, Vector3.up);

            // Calculate the time to get there.
            float timeToGetThere = Vector3.Distance(transform.position, positionTarget) / speedRandomized;
            timeNextAction = Time.fixedTime + timeToGetThere;
        }
        else
        {
            // Make sure that the fish does not swim past the target.
            Vector3 moveVector = speedRandomized * transform.forward * Time.fixedDeltaTime;
            if (moveVector.magnitude <= Vector3.Distance(transform.position, positionTarget))
            {
                transform.position += moveVector;
            }
            else
            {
                transform.position = positionTarget;
                timeNextAction     = Time.fixedTime;
            }
        }
    }
Exemplo n.º 2
0
    /// <summary>
    /// Swim between random positions
    /// </summary>
    ///
    /// TODO : Add some vision on the fish to avoid the penguin
    ///
    private void Swim()
    {
        // If it's time for the next action, pick a new speed and destination
        // Else, swim toward the destination
        if (Time.fixedTime >= nextActionTime)
        {
            // Randomize the speed
            randomizedSpeed = fishSpeed * UnityEngine.Random.Range(.5f, 1.5f);

            // Pick a random target
            targetPosition = PenguinArea.ChooseRandomPosition(transform.parent.position, 100f, 260f, 2f, 13f);

            // Rotate toward the target
            transform.rotation = Quaternion.LookRotation(targetPosition - transform.position, Vector3.up);

            // Calculate the time to get there
            float timeToGetThere = Vector3.Distance(transform.position, targetPosition) / randomizedSpeed;
            nextActionTime = Time.fixedTime + timeToGetThere;
        }
        else
        {
            // Make sure that the fish does not swim past the target
            Vector3 moveVector = randomizedSpeed * transform.forward * Time.fixedDeltaTime;
            if (moveVector.magnitude <= Vector3.Distance(transform.position, targetPosition))
            {
                transform.position += moveVector;
            }
            else
            {
                transform.position = targetPosition;
                nextActionTime     = Time.fixedTime;
            }
        }
    }
Exemplo n.º 3
0
    private void Swim()
    {
        if (Time.fixedTime >= nextActionTime)
        {
            randomizedSpeed = fishSpeed * UnityEngine.Random.Range(0.5f, 1.5f);

            targetPosition = PenguinArea.ChooseRandomPosition(transform.parent.position, 100f, 260f, 2f, 13f);

            transform.rotation = Quaternion.LookRotation(targetPosition - transform.position, Vector3.up);

            float timeToGetThere = Vector3.Distance(transform.position, targetPosition) / randomizedSpeed;
            nextActionTime = Time.fixedTime + timeToGetThere;
        }
        else
        {
            Vector3 moveVector = randomizedSpeed * transform.forward * Time.fixedDeltaTime;
            if (moveVector.magnitude <= Vector3.Distance(transform.position, targetPosition))
            {
                transform.position += moveVector;
            }
            else
            {
                transform.position = targetPosition;
                nextActionTime     = Time.fixedTime;
            }
        }
    }
Exemplo n.º 4
0
 public override void InitializeAgent()
 {
     base.InitializeAgent();
     penguinArea = GetComponentInParent <PenguinArea>();
     baby        = penguinArea.penguinBaby;
     rigidbody   = GetComponent <Rigidbody>();
 }
Exemplo n.º 5
0
 private void Swim()
 {
     if (Time.fixedTime >= nextActionTime)
     {
         // randomised the speed
         randomisedSpeed = fishSpeed * UnityEngine.Random.Range(.5f, 1.5f);
         // pic the target position
         targetPosition = PenguinArea.ChooseRandomPosition(transform.parent.position, 260f, 100f, 13f, 2f);
         //Rotate the target
         transform.rotation = Quaternion.LookRotation(targetPosition - transform.position, Vector3.up);
         // calculate time to get there
         float timeToGetThere = Vector3.Distance(transform.position, targetPosition) / randomisedSpeed;
         nextActionTime = Time.fixedTime + timeToGetThere;
     }
     else
     {
         // Make sure that the fish does not past the target
         Vector3 moveVector = randomisedSpeed * Time.fixedDeltaTime * transform.forward;
         if (moveVector.magnitude <= Vector3.Distance(transform.position, targetPosition))
         {
             transform.position += moveVector;
         }
         else
         {
             transform.position = targetPosition;
             nextActionTime     = Time.fixedTime;
         }
     }
 }
Exemplo n.º 6
0
 private void Start()
 {
     penguinArea   = GetComponentInParent <PenguinArea>();
     baby          = penguinArea.penguinBaby;
     animator      = GetComponent <Animator>();
     rayPerception = GetComponent <RayPerception3D>();
 }
 /// <summary>
 /// Initial setup, called when the agent is enabled
 /// </summary>
 public override void Initialize()       // BL NOTE - InitializeAgent was renamed to Initialize in ML Agents 0.15.0
 {
     base.Initialize();
     penguinArea = GetComponentInParent <PenguinArea>();
     baby        = penguinArea.penguinBaby;
     rigidbody   = GetComponent <Rigidbody>();
 }
Exemplo n.º 8
0
 // initial setup, called once when the agent is first enabled
 // NOTE: method name changed from `InitializeAgent` in v0.15
 public override void Initialize()
 {
     // NOTE: likewise, the call to the parent class is `Initialize` not `InitializeAgent`
     base.Initialize();
     penguinArea = GetComponentInParent <PenguinArea>();
     baby        = penguinArea.penguinBaby;
     rigidbody   = GetComponent <Rigidbody>();
 }
Exemplo n.º 9
0
 private void Start()
 {
     //initiates essential variables
     pArea         = GetComponentInParent <PenguinArea>();
     baby          = pArea.pBaby;
     animator      = GetComponent <Animator>();
     rayPerception = GetComponent <RayPerception3D>();
 }
Exemplo n.º 10
0
 public override void Initialize()
 {
     //base.Initialize();
     penguinArea = GetComponentInParent <PenguinArea>();
     baby        = penguinArea.penguinBaby;
     rigidbody   = GetComponent <Rigidbody>();
     parameters  = Academy.Instance.EnvironmentParameters;
 }
Exemplo n.º 11
0
    private void CalculateTime()
    {
        randomizedSpeed = speed + Random.Range(0.5f, 1.5f);

        target             = PenguinArea.RandomPosition(transform.parent.position, 100f, 260f, 2f, 13f);
        transform.rotation = Quaternion.LookRotation(target - transform.position, Vector3.up);

        var timeToGet = Vector3.Distance(transform.position, target) / randomizedSpeed;

        nextActionTime = Time.fixedTime + timeToGet;
    }
Exemplo n.º 12
0
    public override void AcademyReset()
    {
        if (null == penguinAreas)
        {
            penguinAreas = FindObjectsOfType <PenguinArea>();
        }

        for (int i = 0; i < penguinAreas.Length; ++i)
        {
            PenguinArea area = penguinAreas[i];
            area.speedFish  = resetParameters["speed_fish"];
            area.radiusFeed = resetParameters["radius_feed"];
            area.ResetArea();
        }
    }
Exemplo n.º 13
0
    private void Awake()
    {
        // check if the penguin is the agent or the player
        if (this.GetComponent <PenguinAgent>())
        {
            isAgent = true;
        }

        penguinArea = GetComponentInParent <PenguinArea>();

        if (!isAgent && GameManager.gameMode == mode.simulation)
        {
            this.gameObject.SetActive(false);
        }
    }
Exemplo n.º 14
0
    /// <summary>
    /// Nada entre posições aleatorias
    /// </summary>
    private void Swim()
    {
        //Se for a hora para proxima ação, pega uma nova velocidade e destino
        //Senão nada para o destino

        if (Time.fixedTime >= nextActionTime)
        {
            //Velocidade aleatoria
            randomizedSpeed = fishSpeed * UnityEngine.Random.Range(.5f, 1.5f);


            //Pega um algo aleatorio
            targetPosition = PenguinArea.ChooseRandomPosition(transform.parent.position, 100f, 260f, 2f, 13f);


            //Rotaciona em direção ao alvo
            transform.rotation = Quaternion.LookRotation(targetPosition - transform.position, Vector3.up);


            //Calcula o tempo para chegar lá
            float timeToGetThere = Vector3.Distance(transform.position, targetPosition) / randomizedSpeed;
            nextActionTime = Time.fixedTime + timeToGetThere;
        }
        else
        {
            //Garante que o peixe não nade alem do alvo
            Vector3 moveVector = randomizedSpeed * transform.forward * Time.fixedDeltaTime;
            if (moveVector.magnitude <= Vector3.Distance(transform.position, targetPosition))
            {
                transform.position += moveVector;
            }
            else
            {
                transform.position = targetPosition;
                nextActionTime     = Time.fixedTime;
            }
        }
    }
Exemplo n.º 15
0
 private void Start()
 {
     penguinArea     = GetComponentInParent <PenguinArea>();
     babyPenguin     = penguinArea.penguinBaby;
     rayPerception3d = GetComponent <RayPerception3D>();
 }
Exemplo n.º 16
0
 /// <summary>
 /// Initial setup, called when the agent is enabled
 /// </summary>
 public override void Initialize()
 {
     base.Initialize();
     penguinArea = GetComponentInParent <PenguinArea>();
     rigidbody   = GetComponent <Rigidbody>();
 }
Exemplo n.º 17
0
 private void Awake()
 {
     configurations = this.GetComponent <PenguinConfig>();
     penguinArea    = GetComponentInParent <PenguinArea>();
 }
Exemplo n.º 18
0
 private void Start()
 {
     penguinArea = GetComponentInParent <PenguinArea>();
 }