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