Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Zumbis me matam mesmo de longe e jogo fica em looping só reiniciando

Olá!

Estou em tentando reiniciar o jogo, porém o zumbi me mata mesmo de longe. Personagem tenta correr e é morto com os zumbi totalmente longe. No caso o jogo fica reiniciando e o personagem nem consegue correr para matar os zombis.

No caso teria que teria que gravar um video mas a plataforma não aceita.

Controla Jogador

using System.Collections; using System.Collections.Generic; using System.Diagnostics; using UnityEngine; using Debug = UnityEngine.Debug; using UnityEngine.SceneManagement; using System.Threading; using UnityEngine.SceneManagement;

public class ControlaJogador : MonoBehaviour {

public float Velocidade = 10;
Vector3 direcao;
public LayerMask MascaraChao;
public GameObject TextoGameOver;
public bool Vivo = true;

private void Start () 
{
    Time.timeScale = 1;
}

// Update is called once per frame
void Update () {

    float eixoX = Input.GetAxis("Horizontal");
    float eixoZ = Input.GetAxis("Vertical");

    direcao = new Vector3(eixoX, 0, eixoZ);

    if(direcao != Vector3.zero)
    {
        GetComponent<Animator>().SetBool("Movendo", true);
    }
    else
    {
        GetComponent<Animator>().SetBool("Movendo", false);
    }
    if(Vivo == false)
    {
        if(Input.GetButtonDown("Fire1"))
        {
            SceneManager.LoadScene("game");

        }
    }

}

void FixedUpdate()
{
    GetComponent<Rigidbody>().MovePosition
        (GetComponent<Rigidbody>().position +
        (direcao * Velocidade * Time.deltaTime));

    Ray raio = Camera.main.ScreenPointToRay(Input.mousePosition);
    Debug.DrawRay(raio.origin, raio.direction * 100, Color.red);

    RaycastHit impacto;

    if(Physics.Raycast(raio, out impacto, 100, MascaraChao))
    {
        Vector3 posicaoMiraJogador = impacto.point - transform.position;

        posicaoMiraJogador.y = transform.position.y;

        Quaternion novaRotacao = Quaternion.LookRotation(posicaoMiraJogador);
        GetComponent<Rigidbody>().MoveRotation(novaRotacao);
    }
}

} ** Controla Inimigo**

using System.Threading; using System.Collections; using System.Collections.Generic; using UnityEngine;

public class ControlaInimigo : MonoBehaviour {

public GameObject Jogador;
public float Velocidade = 2;
// Start is called before the first frame update
void Start()
{
    
}

// Update is called once per frame
void Update()
{
    
}

void FixedUpdate()
{
    float distancia = Vector3.Distance(transform.position, Jogador.transform.position);

    Vector3 direcao = Jogador.transform.position - transform.position;

    Quaternion novaRotacao = Quaternion.LookRotation(direcao);
    GetComponent<Rigidbody>().MoveRotation(novaRotacao);

    if (distancia > 1.5)
    {
        GetComponent<Rigidbody>().MovePosition
            (GetComponent<Rigidbody>().position + 
            direcao.normalized * Velocidade * Time.deltaTime);

        GetComponent<Animator>().SetBool("Atacando", false);            
    }
    else
    {
        GetComponent<Animator>().SetBool("Atacando", true);
    }
}
void AtacaJogador()
{
    Time.timeScale = 0;
    Jogador.GetComponent<ControlaJogador>().TextoGameOver.SetActive(true);
    Jogador.GetComponent<ControlaJogador>().Vivo = false;
}

}

4 respostas

Oi, Joyce, tudo bem?

Normalmente esse problema não é no código mas lá no evento da Animação que pode estar muito perto do começo ou duplicado então qualquer coisinha o zumbi ataca, pode também ser no Animator que está trocando pro Ataque em algum momento quando não deveria.

Se com essas ideias não conseguir resolver, faz um .zip do projeto (pasta toda) e coloca num Google Drive ou similar e cola o link aqui que eu abro pra dar uma olhada.

Bons estudos!

Olá!

Não vi nenhum problemas com as dicas.

https://drive.google.com/file/d/1_MYK87-AUPfch6TJ30BrBhOGCCsEr5VS/view?usp=sharing

Olá, dei uma olhada aqui e as setas do ataque estão com as condições ao contrario, então os zumbis já começam atacando

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

inverter a condição deve resolver o problema, bons estudos!

solução!

Olá!

Ajustando isto, funcionou. Muito obrigada.