Erro com um Script
3 participantes
Página 1 de 1
Erro com um Script
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(NavMeshAgent))]
public class Inimigo : MonoBehaviour {
private GameObject player;
private NavMeshAgent navMesh;
private bool podeAtacar;
// Use this for initialization
void Start() {
player = GameObject.FindWithTag("Player");
navMesh = GetComponent<NavMeshAgent>();
podeAtacar = true;
}
// Update is called once per frame
void Update()
{
navMesh.destination = player.transform.position;
if (Vector3.Distance(transform.position, player.transform.position) < 1.5f) { }
Debug.Log("esta Perto");
Atacar();
}
void Atacar()
{
if (podeAtacar == true)
{
StartCoroutine("TempoDeAtaque");
player.GetComponent<Jogador>().vida -= 40;
}
}
IEnumerator TempoDeAtaque() {
podeAtacar = false;
yield return WaitForSeconds(1);
podeAtacar = true;
}
}
Pessoal, estava utilizando esse Script que vi em um dos vídeos do Marcos, para criar uma base da inteligência artificial que eu estou formando.
Quando eu utilizo o Script, se cria os seguintes erros : ´´Error CS1955: Non-invocable member 'WaitForSeconds' cannot be used like a method.
E também: Error MissingReferenceException: The object of type 'Object' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
Alguém poderia me ajudar ? Por favor.
Guisao666- Iniciante
- PONTOS : 3241
REPUTAÇÃO : 0
Áreas de atuação : Iniciante em programação da linguagem C#.
Iniciante em Level Designer.
Respeito as regras :
Re: Erro com um Script
quanto ao seu primeiro erro, é porque vc nao colocou o new entre o return e o WaiForSeconds, tenta agora:
e eu tambem concertei um outro erro que encontrei... quanto ao seu segundo erro, voce linkou o player corretamente?
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(NavMeshAgent))]
public class Inimigo : MonoBehaviour {
private GameObject player;
private NavMeshAgent navMesh;
private bool podeAtacar;
// Use this for initialization
void Start() {
player = GameObject.FindWithTag("Player");
navMesh = GetComponent<NavMeshAgent>();
podeAtacar = true;
}
// Update is called once per frame
void Update()
{
navMesh.destination = player.transform.position;
if (Vector3.Distance(transform.position, player.transform.position) < 1.5f) {
Debug.Log("esta Perto");
Atacar();
}
}
void Atacar()
{
if (podeAtacar == true)
{
StartCoroutine("TempoDeAtaque");
player.GetComponent<Jogador>().vida -= 40;
}
}
IEnumerator TempoDeAtaque() {
podeAtacar = false;
yield return new WaitForSeconds(1);
podeAtacar = true;
}
}
e eu tambem concertei um outro erro que encontrei... quanto ao seu segundo erro, voce linkou o player corretamente?
JohnRambo- Moderador
- PONTOS : 5172
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: Erro com um Script
Bom ia postar o script mais fui lento d+ kk:
Obs: no momento em que voce faz o player perder vida seria melhor criar um metodo TakeDamage do que mudar o valor da variavel vida, porque assim pode ser que da erro ja que voce esta diminuindo a vida do player sem verificar se ela é maior que 40, dependendo da situação pode ser que a vida fique negativa e o player não morra.
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(NavMeshAgent))]
public class Inimigo : MonoBehaviour {
private GameObject player;
private NavMeshAgent navMesh;
private bool podeAtacar;
// Use this for initialization
void Start() {
player = GameObject.FindWithTag("Player");
navMesh = GetComponent<NavMeshAgent>();
podeAtacar = true;
}
// Update is called once per frame
void Update()
{
if(player == null) return; // checa apenas se o player existir
navMesh.destination = player.transform.position;
if (Vector3.Distance(transform.position, player.transform.position) < 1.5f) {
Debug.Log("esta Perto");
Atacar();
}
}
void Atacar()
{
if (podeAtacar == true)
{
StartCoroutine("TempoDeAtaque");
player.GetComponent<Jogador>().vida -= 40;
}
}
IEnumerator TempoDeAtaque() {
podeAtacar = false;
yield return new WaitForSeconds(1); // esqueceu do new
podeAtacar = true;
}
}
Obs: no momento em que voce faz o player perder vida seria melhor criar um metodo TakeDamage do que mudar o valor da variavel vida, porque assim pode ser que da erro ja que voce esta diminuindo a vida do player sem verificar se ela é maior que 40, dependendo da situação pode ser que a vida fique negativa e o player não morra.
Re: Erro com um Script
Muito Obrigado pessoal. Abraços.
Guisao666- Iniciante
- PONTOS : 3241
REPUTAÇÃO : 0
Áreas de atuação : Iniciante em programação da linguagem C#.
Iniciante em Level Designer.
Respeito as regras :
Tópicos semelhantes
» erro erro e mais erro script de craft
» ERRO NO SCRIPT
» erro no script PlanarReflection.cs
» Não Acho o Erro no Script - é um script para o player se mover
» Erro no Script- "The script needs to derived from MonoBehavior"
» ERRO NO SCRIPT
» erro no script PlanarReflection.cs
» Não Acho o Erro no Script - é um script para o player se mover
» Erro no Script- "The script needs to derived from MonoBehavior"
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos