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

O gerador de zumbis no jogo não me ataca

Por algum motivo, eu aplicando os "prefabs" do zumbi, e jogando no "Gerador", ele cria o inimigo, mas ele não me ataca em nenhum momento. Algum jeito para arrumar isso?Insira aqui a descrição dessa imagem para ajudar na acessibilidade

8 respostas

Oi, Gustavo, você já tentou aumentar a distancia de ataque?

Pode colar seu script aqui?

A distância de ataque está normal. Qual script você quer ver?

solução!

O do zumbi que faz o ataque.

Mas você já tentou aumentar a distancia? A distancia que eu coloquei no meu era um guia, no seu por exemplo os objetos podem estar maiores e não ser suficiente, você tem que testar o que funciona pro seu jogo. Parece que zumbi também tá rodando meio estranho o que pode influenciar. Vendo o código posso dar umas dicas nisso, mas veja se aumentando a distancia resolve o problema pra termos certeza.

Ah sim, realmente. Eu aumentei a distância de 2.5, para 3, e realmente funcionou. Muito obrigado.

De qualquer forma se quiser postar o código aqui eu dou uma olhada o porque deles estarem tombando pro lado do jogador :)

Aqui está o código usado para o Zumbi.

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

public class Zombie : MonoBehaviour {

    public GameObject PlayerChase;
    public float speedy = 5;


    void Start () {
        PlayerChase = GameObject.FindWithTag("FindPlayer");
    }

    void Update () {

    }

    void FixedUpdate() {

        float distance = Vector3.Distance(transform.position, PlayerChase.transform.position);

        Vector3 direction = PlayerChase.transform.position - transform.position;

        // Guys look. A {player}.
        Quaternion Rotaction = Quaternion.LookRotation(direction);
        GetComponent<Rigidbody>().MoveRotation(Rotaction);

        if (distance > 3) {
            GetComponent<Rigidbody>().MovePosition(GetComponent<Rigidbody>().position + direction.normalized * speedy * Time.deltaTime);

            GetComponent<Animator>().SetBool("HitPlayer", false);
        } else {
            GetComponent<Animator>().SetBool("HitPlayer", true);
        }
    }

    void Ded() {
        Time.timeScale = 0;
        PlayerChase.GetComponent<Movement>().TextOverLay.SetActive(true);
        PlayerChase.GetComponent<Movement>().Life = false;
    }
}

Você provavelmente pode fazer algo como:

Vector3 direction = PlayerChase.transform.position - transform.position;
direction.y = 0;

// Guys look. A {player}.
Quaternion Rotaction = Quaternion.LookRotation(direction);
GetComponent<Rigidbody>().MoveRotation(Rotaction);

Assim você cancelaria qualquer diferença em Y na direção e ele não olharia pra baixo nem pra cima.

Opa, beleza, coloquei aqui. Muito obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software