public void ResetPlayer() { //gameObject.SetActive(false); if (gameController.GetComponent <Game_Controller>().isStage2 == true) { transform.position = gameController.GetComponent <Game_Controller>().level2Spawn.position; } else { transform.position = new Vector3(15, -15, 0); } }
void FindVisibleTargets() { //cria um circulo centrado no detentor desse script, com raio definido pelo desenvolvedor e que ira retornar //quantos colisores que entrarem nesse circulo que estejam na camada de deteccao e ira colocar esses colisores // no vetor passado como terceiro parametro targetsInRadius = Physics2D.OverlapBoxAll(transform.position, new Vector2(viewRadius + radiusOffsetDistance, viewRadius + radiusOffsetDistance), viewAngle, detectionMask); //limpa o vetor de alvos visiveis visibleTargets.Clear(); //Debug.Log(targetsInRadius.Length); //percorre todo o vetor de alvos no raio de visao for (int i = 0; i < targetsInRadius.Length; i++) { //aloca a transformacao do objeto no vetor para uma variavel para facilitar a manipulacao/comparacao Transform target = targetsInRadius[i].transform; //calculo para descobrir o vetor direcao a partir do detentor desse script para o alvo Vector2 dirTarget = new Vector2(target.position.x - transform.position.x, target.position.y - transform.position.y); //tranform.right sempre aponta para o eixo x positivo //se o angulo entre o vetor de direçao enre o jogador e o alvo, e o vetor positivo X for menor que o //angulo de visao dividido por 2 Vector2 dir = new Vector2(); if (Vector2.Angle(dirTarget, dir) < viewAngle / 2) { //armazena a distancia entre o detentor desse script e o alvo float distanceTarget = Vector2.Distance(transform.position, target.position); //Se ao lancarmos um raio na direcao do alvo e na distancia do alvo e nao colidir com nenhum objeto, //adicionamos esse alvo no vetor de alvos visiveis if (!Physics2D.Raycast(transform.position, dirTarget, distanceTarget + radiusOffsetDistance, obstacleMask)) { visibleTargets.Add(target); if (target.gameObject.tag == "Player") { controller.GetComponent <Game_Controller>().changeGameStatus(); } } } } }