3
respostas

Minha bala está indo para cima, ao invés de ir para frente!

INSTANCIAÇÃO DA BALA:

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

public class ControlaArma : MonoBehaviour {
    public GameObject Bala;
    public GameObject CanoArma;

    void Start () {

    }


    void Update () {
        if (Input.GetButtonDown("Fire1"))
        {
            Instantiate(Bala,CanoArma.transform.position,CanoArma.transform.rotation);
        }
    }
}

MOVIMENTAÇÃO DA BALA:


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

public class Bala : MonoBehaviour {
    public float Velocidade = 10;

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

ELA ESTÁ SENDO CRIADA E SE MOVIMENTANDO DA FORMA CORRETA MAS ESTÁ INDO PARA CIMA AI INVÉS DE IR PARA A FRENTE.

3 respostas

Oi, Vitor.

Confere a rotação do objeto CanoDaArma porque lembra que a bala vai para frente em relação a como ela é criada. E ela é criada baseada na rotação desse objeto então por isso ela pode estar indo para cima.

Você pode colocar na rotação do Instantiate também Quaternion.Identity para zerar as rotações.

Instantiate(Bala,CanoArma.transform.position, Quaternion.Identity);

Bons estudos!

Bom dia Vitor, tudo bom?

Provavelmente o tiro está indo para cima porque a rotação do objeto CanoArma está apontando para cima.

Quando utilizamos o transform.forwardpara fazer a movimentação da bala, estamos falando para ela seguir a direção da "seta azul" que vemos quando selecionamos o objeto na nossa cena.

Como a bala está com a mesma rotação que o objeto CanoArma se o cano da arma estiver apontando para cima a bala vai sair para cima.

Seja se mudando a rotação do CanoArma você consegue arrumar o problema.

Era exatamente isso, muito obrigado!!!