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; }
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(); }