Beispiel #1
0
    private Vector3 FindEscapeAlcove()
    {
        var   alcoves       = AlcovesController.GetAlcoves();
        int   myAlcoveIndex = -1;
        float minDist       = 100;

        //find my alcove first, or the closest one
        for (int i = 0; i < alcoves.Count; i++)
        {
            Vector3 alcovePos = alcoves[i].transform.position;
            float   dist      = Vector3.Distance(alcovePos, transform.position);
            if (dist < minDist && ((closestEnemyXMovingDirection < 0) ? alcovePos.x < transform.position.x: alcovePos.x >= transform.position.x))
            {
                minDist       = dist;
                myAlcoveIndex = i;
            }
        }

        if (myAlcoveIndex == -1)
        {
            return(transform.position);
        }

        Vector3 closestAlcove = alcoves[myAlcoveIndex].transform.position;

        return((InAlcove(closestAlcove, _target, 0.6)) ? _target: closestAlcove);
    }
    // Use this for initialization
    void Start()
    {
        var alcoves = AlcovesController.GetAlcoves();

        System.Random rnd   = new System.Random();
        var           index = rnd.Next(alcoves.Count);

        while (index == 0 || index == 6)
        {
            index = rnd.Next(alcoves.Count);
        }
        _agent = Instantiate(AgentPrefab, alcoves[index].transform.position, Quaternion.identity);
        _agent.GetComponent <Agent>().SetAgentController(this);
        var playerIndex = rnd.Next(alcoves.Count);

        while (playerIndex == 0 || playerIndex == 6 || playerIndex == index)
        {
            playerIndex = rnd.Next(alcoves.Count);
        }

        _player = Instantiate(PlayerPrefab, alcoves[playerIndex].transform.position, Quaternion.identity);
        _player.GetComponent <Player>().SetAgentController(this);
        _agentScore    = 0;
        _playerScore   = 0;
        ScoreText.text = "Agent Score: " + _agentScore + " Player Score: " + _playerScore;
    }
Beispiel #3
0
    private Vector3 FindClosestSafeAlcove()
    {
        var   alcoves       = AlcovesController.GetAlcoves();
        int   myAlcoveIndex = -1;
        float minDist       = 100;

        //find my alcove first, or the closest one
        for (int i = 0; i < alcoves.Count; i++)
        {
            Vector3 alcovePos = alcoves[i].transform.position;
            float   dist      = Vector3.Distance(alcovePos, transform.position);
            if (dist < minDist && HasNoEnemyInFront(alcovePos))
            {
                minDist       = dist;
                myAlcoveIndex = i;
            }
        }

        if (myAlcoveIndex == -1)
        {
            return(transform.position);
        }

        Vector3 closestAlcove = alcoves[myAlcoveIndex].transform.position;

        float distToTarget        = Vector3.Distance(_target, transform.position);
        float distToClosestAlcove = Vector3.Distance(closestAlcove, transform.position);

        return((distToTarget < distToClosestAlcove || InAlcove(closestAlcove, _target, 0.6)) ? _target: closestAlcove);
    }
    public void TeleportAgent()
    {
        Destroy(_agent);
        var alcoves = AlcovesController.GetAlcoves();

        System.Random rnd   = new System.Random();
        var           index = rnd.Next(alcoves.Count);

        while (index == 0 || index == 6)
        {
            index = rnd.Next(alcoves.Count);
        }

        _agent = Instantiate(AgentPrefab, alcoves[index].transform.position, Quaternion.identity);
        _agent.GetComponent <Agent>().SetAgentController(this);
        DecrementPlayerTeleportTrapRemaining();
    }