예제 #1
0
    void Update()
    {
        //Si la ultima pokeball que lanzamos ya desaparecio
        // y si vemos algo
        // y si ese algo es un pokemon
        // le lanzamos un poke ball
        if (!pokeBall && sightSensor.notified && sightSensor.sightType == "Pokemon")
        {
            //CREAMOS POKE BALL
            //creamos un pokeball en el mismo lugar que esta el character que la lanza.
            pokeBall = Instantiate(pokeBallPrefab, transform.position, Quaternion.identity);

            static_shoot ballStatic = InitBall();//iniciamos la bola con una direccion por defecto

            //--BUSCAMOS EL POKEMON MAS CERCANO
            Vector3 rivalPos   = agentKinetics.transform.position;              //posicion actual del rival
            Vector3 pokemonPos = sightSensor.detectedSignal.transform.position; //la posicion del pokemon que vimos

            //ahora calculamos a que direccion lanzar.
            Vector3 shootDirection = shootHandler.CalculateFiringSolution(rivalPos, pokemonPos, ballSpeed, gravity, ballStatic.direction, false);

            ballStatic.direction = shootDirection;

            sightSensor.ResetSensor();
        }
    }
예제 #2
0
    // Update is called once per frame
    void Update()
    {
        if (!pokeBall)//si ya desaparecio la ultima poke ball que lanzamos lanzamos otra

        //creamos un pokeball en el mismo lugar que esta el character que la lanza.
        {
            pokeBall = Instantiate(pokeBallPrefab, transform.position, Quaternion.identity);
            //le pasamos la lista de pokemones y obstaculos
            static_shoot ballStatic = pokeBall.GetComponent <static_shoot>();
            //le pasamos datos necesarios
            ballStatic.pokemons     = pokemons_kins;
            ballStatic.pokemonsObjs = pokemons;
            ballStatic.obstacles    = obstacles;
            ballStatic.speed        = ballSpeed;
            ballStatic.ultraBall    = true;//estamos usando una ultra ball
            ballStatic.pokemonsData = pokemons_data;
            ballStatic.pointManager = manager;

            //le damos la direccion de la velocidad del trainer
            agentVelocity = agentKinetics.velocity;
            agentVelocity.Normalize();//esta sera la direccion del lanzamiento
            agentVelocity.z      = -1f;
            ballStatic.direction = agentVelocity;
        }
    }
예제 #3
0
    //Funcion que asigna los datos que necesita una poke bola
    static_shoot InitBall()
    {
        static_shoot ballStatic = pokeBall.GetComponent <static_shoot>();

        ballStatic.pokemons     = pokemons_kins;
        ballStatic.pokemonsObjs = pokemons;
        ballStatic.pokemonsData = pokemons_data;
        ballStatic.obstacles    = obstacles;
        ballStatic.speed        = ballSpeed;
        ballStatic.direction    = agentVelocity;
        ballStatic.pointManager = manager;
        return(ballStatic);
    }
예제 #4
0
    //Funcion que asigna los datos que necesita una poke bola
    static_shoot InitBall()
    {
        static_shoot ballStatic = pokeBall.GetComponent <static_shoot>();

        ballStatic.pokemons     = pokemons_kins;
        ballStatic.pokemonsObjs = pokemons;
        ballStatic.pokemonsData = pokemons_data;
        ballStatic.obstacles    = obstacles;
        ballStatic.speed        = ballSpeed;
        ballStatic.direction    = new Vector3(agentKinetics.velocity.x, agentKinetics.velocity.z, -1f); // DIRECCION POR DEFECTO
        ballStatic.pointManager = manager;
        ballStatic.ultraBall    = true;
        return(ballStatic);
    }
예제 #5
0
    // Update is called once per frame
    void Update()
    {
        //NORMAL SHOOT
        if (Input.GetKey("x") && !pokeBall)  //si presionamos x y ya termino la ultima pokeBall lanzada

        //creamos un pokeball en el mismo lugar que esta el character que la lanza.
        {
            pokeBall = Instantiate(pokeBallPrefab, transform.position, Quaternion.identity);
            InitDirection(); //inicializamos agentVelocity que nos dara la direccion de lanzamiento
            InitBall();      //inicializamos la bola que acabamos de crear
        }

        //CHEAT SHOOT
        //z si disparo rapido
        //s si disparo lento
        if ((Input.GetKey("z") || Input.GetKey("s")) && !pokeBall)  //si presionamos z o s y ya termino la ultima pokeBall lanzada


        //CREAMOS POKE BALL
        //creamos un pokeball en el mismo lugar que esta el character que la lanza.
        {
            pokeBall = Instantiate(pokeBallPrefab, transform.position, Quaternion.identity);

            InitDirection();                      //iniciamos la direccion por defecto
            static_shoot ballStatic = InitBall(); //iniciamos la bola con una direccion por defecto

            //DISPARO RAPIDO O LENTO
            bool slow = true;
            if (Input.GetKey("z"))//si queremos rapido
            {
                slow = false;
            }

            //--BUSCAMOS EL POKEMON MAS CERCANO
            Vector3 trainerPos = agentKinetics.transform.position; //posicion actual del trainer
            Vector3 pokemonPos = searchPokemon(trainerPos);        //valor por defecto en caso de que todos los pokemon esten atrapados


            //ahora calculamos a que direccion lanzar. PD: el *2 es porque necesitamos mas alcance
            Vector3 shootDirection = shootHandler.CalculateFiringSolution(trainerPos, pokemonPos, ballSpeed * 2, gravity, agentVelocity, slow);


            if (shootDirection.z != -1f)               //si shoot direction encontro una trayecotira
            {
                ballStatic.speed    *= 2;              //modificamos la velocidad de disparo
                ballStatic.direction = shootDirection; //ponemos la direccionque no es por defecto
            }
        }
    }