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);
     }
 }
Пример #2
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();
                    }
                }
            }
        }
    }