Problema com script
3 participantes
Página 1 de 1
Problema com script
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(NavMeshAgent))]
public class AI2 : MonoBehaviour
{
public static AI2 instance1;
public float vida = 100;
bool chamouMorte = false;
public Transform Alvo;
private NavMeshAgent nav;
public bool podeatacar;
Animator anim;
public Transform VoltarMob;
public GameObject Mob;
void Awake()
{
instance1 = this;
anim = GetComponent<Animator>();
nav = GetComponent<NavMeshAgent>();
Alvo = GameObject.Find("JhonT").transform;
VoltarMob = GameObject.Find("VoltarMob").transform;
}
void Start()
{
podeatacar = true;
}
void Update()
{
GetComponentInChildren<TextMesh>().text = "Vida: " + vida;
float Distancia = Vector3.Distance(transform.position, Alvo.position);
Debug.Log(vida);
if (vida <= 0)
{
vida = 0;
chamouMorte = true;
anim.SetBool("morrendo", true);
StartCoroutine("Morrer");
}
if(chamouMorte == false)
{
if (Distancia > 20)
{
OlharVoltar();
GetComponent<NavMeshAgent>().speed = 0;
anim.SetBool("parado", true);
Debug.DrawLine(transform.position, Alvo.position, Color.blue);
}
if (Distancia <= 20)
{
anim.SetBool("parado", true);
GetComponent<NavMeshAgent>().speed = 0;
Olhar();
Debug.DrawLine(transform.position, Alvo.position, Color.yellow);
}
if (Distancia < 15)
{
anim.SetBool("andando", true);
GetComponent<NavMeshAgent>().speed = 3.5f;
Seguir();
Debug.DrawLine(transform.position, Alvo.position, Color.red);
}
else
{
anim.SetBool("andando", false);
// Olhar();
}
if (Distancia < 5)
{
anim.SetBool("andando", false);
anim.SetBool("atacando", true);
Atacar();
GetComponent<NavMeshAgent>().speed = 0;
Debug.DrawLine(transform.position, Alvo.position, Color.magenta);
}
else if (Distancia > 4 && Distancia <= 15)
{
anim.SetBool("atacando", false);
anim.SetBool("andando", true);
GetComponent<NavMeshAgent>().speed = 3.5f;
// StartCoroutine("TempoParaParar");
Debug.DrawLine(transform.position, Alvo.position, Color.white);
}
}
}
void JhonMorreu()
{
GetComponent<NavMeshAgent>().speed = 0;
anim.SetBool("parado", false);
anim.SetBool("atacando", false);
anim.SetBool("andando", false);
}
void Atacar()
{
if (podeatacar == true)
{
StartCoroutine("TempoAtaque");
StartCoroutine("Tempovida");
}
}
IEnumerator TempoAtaque()
{
podeatacar = false;
yield return new WaitForSeconds(1);
podeatacar = true;
}
IEnumerator Tempovida()
{
if (podeatacar == false)
{
yield return new WaitForSeconds(3.5f);
Jhon.instance.Vida -= 5;
}
}
IEnumerator TempoParaParar()
{
// anim.SetBool("andando", true);
yield return new WaitForSeconds(2);
anim.SetBool("andando", false);
}
private void Olhar()
{
Quaternion targetRotation;
targetRotation = Quaternion.LookRotation(Alvo.transform.position - transform.position);
targetRotation = Quaternion.Euler(new Vector3(transform.eulerAngles.x, targetRotation.eulerAngles.y, transform.eulerAngles.z));
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, 4 * Time.deltaTime);
}
private void OlharVoltar()
{
nav.destination = VoltarMob.position;
Quaternion targetRotation;
targetRotation = Quaternion.LookRotation(VoltarMob.transform.position - transform.position);
targetRotation = Quaternion.Euler(new Vector3(transform.eulerAngles.x, targetRotation.eulerAngles.y, transform.eulerAngles.z));
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, 4 * Time.deltaTime);
}
void Seguir()
{
nav.destination = Alvo.position;
}
IEnumerator Morrer()
{
anim.SetBool("atacando", false);
anim.SetBool("andando", false);
anim.SetBool("parado", false);
GetComponent<NavMeshAgent>().enabled = false;
yield return new WaitForSeconds(2);
Destroy (gameObject);
}
}
CanabravaBR- Iniciante
- PONTOS : 2907
REPUTAÇÃO : 2
Respeito as regras :
Re: Problema com script
Bom dia! Atenção aonde abre seus tópicos, você abriu este na área errada, pois não se trata de formação de equipes, mas sim dúvida. O mesmo será movido para a área correta.CanabravaBR escreveu:[size=41]Galera se eu colocar mais de um mob, apenas um vai receber dano e morrer alguem me ajuda?[/size]
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(NavMeshAgent))]
public class AI2 : MonoBehaviour
{
public static AI2 instance1;
public float vida = 100;
bool chamouMorte = false;
public Transform Alvo;
private NavMeshAgent nav;
public bool podeatacar;
Animator anim;
public Transform VoltarMob;
public GameObject Mob;
void Awake()
{
instance1 = this;
anim = GetComponent<Animator>();
nav = GetComponent<NavMeshAgent>();
Alvo = GameObject.Find("JhonT").transform;
VoltarMob = GameObject.Find("VoltarMob").transform;
}
void Start()
{
podeatacar = true;
}
void Update()
{
GetComponentInChildren<TextMesh>().text = "Vida: " + vida;
float Distancia = Vector3.Distance(transform.position, Alvo.position);
Debug.Log(vida);
if (vida <= 0)
{
vida = 0;
chamouMorte = true;
anim.SetBool("morrendo", true);
StartCoroutine("Morrer");
}
if(chamouMorte == false)
{
if (Distancia > 20)
{
OlharVoltar();
GetComponent<NavMeshAgent>().speed = 0;
anim.SetBool("parado", true);
Debug.DrawLine(transform.position, Alvo.position, Color.blue);
}
if (Distancia <= 20)
{
anim.SetBool("parado", true);
GetComponent<NavMeshAgent>().speed = 0;
Olhar();
Debug.DrawLine(transform.position, Alvo.position, Color.yellow);
}
if (Distancia < 15)
{
anim.SetBool("andando", true);
GetComponent<NavMeshAgent>().speed = 3.5f;
Seguir();
Debug.DrawLine(transform.position, Alvo.position, Color.red);
}
else
{
anim.SetBool("andando", false);
// Olhar();
}
if (Distancia < 5)
{
anim.SetBool("andando", false);
anim.SetBool("atacando", true);
Atacar();
GetComponent<NavMeshAgent>().speed = 0;
Debug.DrawLine(transform.position, Alvo.position, Color.magenta);
}
else if (Distancia > 4 && Distancia <= 15)
{
anim.SetBool("atacando", false);
anim.SetBool("andando", true);
GetComponent<NavMeshAgent>().speed = 3.5f;
// StartCoroutine("TempoParaParar");
Debug.DrawLine(transform.position, Alvo.position, Color.white);
}
}
}
void JhonMorreu()
{
GetComponent<NavMeshAgent>().speed = 0;
anim.SetBool("parado", false);
anim.SetBool("atacando", false);
anim.SetBool("andando", false);
}
void Atacar()
{
if (podeatacar == true)
{
StartCoroutine("TempoAtaque");
StartCoroutine("Tempovida");
}
}
IEnumerator TempoAtaque()
{
podeatacar = false;
yield return new WaitForSeconds(1);
podeatacar = true;
}
IEnumerator Tempovida()
{
if (podeatacar == false)
{
yield return new WaitForSeconds(3.5f);
Jhon.instance.Vida -= 5;
}
}
IEnumerator TempoParaParar()
{
// anim.SetBool("andando", true);
yield return new WaitForSeconds(2);
anim.SetBool("andando", false);
}
private void Olhar()
{
Quaternion targetRotation;
targetRotation = Quaternion.LookRotation(Alvo.transform.position - transform.position);
targetRotation = Quaternion.Euler(new Vector3(transform.eulerAngles.x, targetRotation.eulerAngles.y, transform.eulerAngles.z));
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, 4 * Time.deltaTime);
}
private void OlharVoltar()
{
nav.destination = VoltarMob.position;
Quaternion targetRotation;
targetRotation = Quaternion.LookRotation(VoltarMob.transform.position - transform.position);
targetRotation = Quaternion.Euler(new Vector3(transform.eulerAngles.x, targetRotation.eulerAngles.y, transform.eulerAngles.z));
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, 4 * Time.deltaTime);
}
void Seguir()
{
nav.destination = Alvo.position;
}
IEnumerator Morrer()
{
anim.SetBool("atacando", false);
anim.SetBool("andando", false);
anim.SetBool("parado", false);
GetComponent<NavMeshAgent>().enabled = false;
yield return new WaitForSeconds(2);
Destroy (gameObject);
}
}
Abraço!
Re: Problema com script
- Código:
public static AI2 instance1;
Por que uma instância estática?
Isto NUNCA pode acontecer em scripts compartilhados que tenham coisas como por exemplo, vida, ou outras coisas.
Use GetComponent e variáveis públicas, mas nunca estáticas.
Re: Problema com script
Eu estava usando mas não estava dando certo =c
CanabravaBR- Iniciante
- PONTOS : 2907
REPUTAÇÃO : 2
Respeito as regras :
Re: Problema com script
Ta, é que o erro não está neste script, e sim no script que causa dano neste...
Aquele script está acessando este de maneira errada.
Aquele script está acessando este de maneira errada.
Tópicos semelhantes
» Problema com script
» Problema com um script de som
» Problema com script
» Problema com Script
» problema com Script
» Problema com um script de som
» Problema com script
» Problema com Script
» problema com Script
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos