tentei criar um regulador de quantidade de zumbis chefes , igualzinho fizemos com os zumbis normais, mas ele dá o erro:
Assets\programasC\controlachefe.cs(73,29): error CS0122: 'spawn_chefe.diminuir_quantidade_de_chefe()' is inaccessible due to its protection level
(fiz um pouco diferente os scripts mas tudo funciona perfeitamente e a regulação esta idéntica)
ESTE É O SPAWN
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class spawn_chefe : MonoBehaviour
{
public GameObject chefe_zumbi;
float tempo_de_spawn = 0;
public float spawnar = 5;
public int numero_de_chefes_max = 3;
public int numero_de_chefes_existentes = 0;
void Update(){
tempo_de_spawn = tempo_de_spawn + Time.deltaTime;
if (tempo_de_spawn > spawnar){
tempo_de_spawn = 0;
if (numero_de_chefes_existentes < numero_de_chefes_max){
controlachefe zumbii = Instantiate(chefe_zumbi, transform.position, transform.rotation).GetComponent<controlachefe>();
zumbii.meugeradorchefe = this;
numero_de_chefes_existentes = numero_de_chefes_existentes + 1;
}
}
}
void diminuir_quantidade_de_chefe(){
numero_de_chefes_existentes = numero_de_chefes_existentes - 1;
}
}
ESTE É O DO CHEFE
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class controlachefe : MonoBehaviour
{
Transform jogador;
NavMeshAgent agente;
public int vida_chefao = 10;
public float velocidade_chefao = 5;
Vector3 direcao_chefe_jogador;
testedaordem script_do_jogador;
public int dano_chefe_max = 55;
public int dano_chefe_min = 40;
public float numero_que_define_a_porcentagem_do_drop = 0.4f;
public GameObject kit_medico;
void Start(){
jogador = GameObject.FindWithTag("gamer").transform; // aqui eu só acelerei, agora posso botar jogador.position direto
agente = GetComponent<NavMeshAgent>();
agente.speed = velocidade_chefao;
script_do_jogador = GameObject.FindWithTag("gamer").GetComponent<testedaordem>();
//kit_medico = GameObject.FindWithTag("kit_medico");
}
void FixedUpdate(){
direcao_chefe_jogador = jogador.position - transform.position;
Vector3 nova_direcao_chefe_jogador = Vector3.RotateTowards(transform.forward, direcao_chefe_jogador, 20 * Time.deltaTime, 0.0f);
Quaternion rotacionar_chefe = Quaternion.LookRotation(nova_direcao_chefe_jogador);
GetComponent<Rigidbody>().MoveRotation(rotacionar_chefe);
}
void Update(){
agente.SetDestination(jogador.position);// o remainingDistance pega a distancia entre o objeto e seu destino e como já
bool distancia_chefe_jogador = agente.remainingDistance <= agente.stoppingDistance; // defini o destino o remainig funciona
bool distancia_chefe_jogador_corrigir = Vector3.Distance(transform.position, jogador.position) <= 3;
if (distancia_chefe_jogador_corrigir == true){ // o stopping.Distance é definido no componente e diz a que distancia do destino
GetComponent<Animator>().SetBool("Zumbi_ataca", true); // o objeto deve parar
}
else{
GetComponent<Animator>().SetBool("Zumbi_ataca", false);
}
}
void OnTriggerEnter(Collider bala){
if (bala.tag == "bala"){
diminuir_vida();
}
}
void dropar_kit_medico_chefe(){
if (Random.value < numero_que_define_a_porcentagem_do_drop){
Instantiate(kit_medico, transform.position, transform.rotation);
}
}
public spawn_chefe meugeradorchefe;
void diminuir_vida(){
vida_chefao = vida_chefao - 1;
if (vida_chefao == 0){
GetComponent<Animator>().SetTrigger("morrer_zumbi");
this.enabled = false;
agente.enabled = false;
dropar_kit_medico_chefe();
meugeradorchefe.diminuir_quantidade_de_chefe();
Destroy(gameObject, 2);
/* NÃO SEI O PORQUÊ DESSE JEITO NÃO FUNCIONAR
float tempo_ate_morrer = 2;
tempo_ate_morrer = tempo_ate_morrer - Time.deltaTime;
if (tempo_ate_morrer <= 0){
Destroy(gameObject);
}
*/
}
}
void Atacar_jog(){
int dano_chefe = Random.Range(dano_chefe_min, dano_chefe_max);
script_do_jogador.tomardano(dano_chefe);
GameObject.FindWithTag("canvas").GetComponent<controlainterface>().barra_de_vida();
}
}