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

error CS0246

eu fiz da maneira que ta no video mas sempre sai essa mesma mensagem aqui:

Assets\codigos\movimentacaoGeral.cs(12,37): error CS0246: The type or namespace name 'meuRigidbody' could not be found (are you missing a using directive or an assembly reference?)

eu não to conseguindo saber o que e

esses são os codigos

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

public class movimentacaoGeral : MonoBehaviour
{
    private Rigidbody meuRigidbody;

    // Start is called before the first frame update
    void awake()
    {
        meuRigidbody = GetComponent<meuRigidbody>();
    }    

    public void movimentacao(Vector3 direcao, float velocidade)
    {

        meuRigidbody.MovePosition
            (meuRigidbody.position +
            direcao.normalized * velocidade * Time.deltaTime);
    }
}


 public GameObject Jogador;
    public float velocidade = 5;
    private movimentacaoGeral andano;


    // Start is called before the first frame update
    void Start()
    {
        Jogador = GameObject.FindWithTag("jogador");

        andano = GetComponent<movimentacaoGeral>();
    }

    // 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 > 2.5)
        {
            andano.movimentacao(direcao, velocidade);

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

me ajuda por favor

4 respostas

Oi, Fred, tudo bem?

Nessa linha você tem que pegar o Rigidbody da Unity não o do nosso script:

meuRigidbody = GetComponent<meuRigidbody>();

Acho que depois disso talvez dê outro erro, aí é só trocar o awake por Awake

Bons estudos!

eu resolvi, mas agora ta aparecendo essa mensagem de erro:

Assets\codigos\inimigoAndano.cs(32,15): error CS1061: 'movimentacaoGeral' does not contain a definition for 'MoveRotation' and no accessible extension method 'MoveRotation' accepting a first argument of type 'movimentacaoGeral' could be found (are you missing a using directive or an assembly reference?)

o codigo e esse

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

public class inimigoAndano : MonoBehaviour { public GameObject Jogador; public float velocidade = 5; private movimentacaoGeral andano;

// Start is called before the first frame update
void Start()
{
    Jogador = GameObject.FindWithTag("jogador");

    andano = GetComponent<movimentacaoGeral>();
}

// 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);
   andano.MoveRotation(novaRotacao);

    if (distancia > 2.5)
    {
        andano.movimentacao(direcao, velocidade);

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

void AtacaJogador()
{
    Jogador.GetComponent<controle>().TomarDano();
    //Time.timeScale = 0;
    //Jogador.GetComponent<controle>().TextoGameOver.SetActive(true);
    //Jogador.GetComponent<controle>().vivo = false;
}

}

eu agora não intendi o que teve de errado dessa vez

solução!

Ele está reclamando da chamada andano.MoveRotation(novaRotacao); acredito que você queria chamar outro método aí, certo?

eu consegui resolver, eu tinha que colocar uns codigos no movimentacaoGeral