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

Torre construída na posição errada

Boa tarde,eu finalizei o curso,mais percebi que quando clico com o botão do mouse para construir a torre,ela não e criada exatamente onde o ponteiro do mouse esta,ela e criado um poco a esquerda da onde clico.

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

public class Jogo : MonoBehaviour {

    [SerializeField] private GameObject torrePrefab;
    [SerializeField] private GameObject gameOver;
    [SerializeField]private Jogador jogador;

    private void Start()
    {
        gameOver.SetActive(false);
    }

    private void Update()
    {
        if(JogoAcabou())
        {
            gameOver.SetActive(true);
        }
        else {

            if(ClicouComBotaoPrimario())
        {
            ConstroiTorre();
        }
        }
    }

    private bool JogoAcabou()
    {
        return !jogador.EstaVivo();
    }

    public void RecomecaJogo()
    {
        Application.LoadLevel(Application.loadedLevel);
    }

    private bool ClicouComBotaoPrimario()
    {
        return Input.GetMouseButtonDown(0);
    }

    private void ConstroiTorre()
    {
        Vector3 posicaoDoClique = Input.mousePosition;
        RaycastHit elementoAtingidoPeloRaio = DisparaRaioCameraAteUmPonto(posicaoDoClique);

        if(elementoAtingidoPeloRaio.collider != null)
        {
            Vector3 posicaoDeCriacaoDaTorre = elementoAtingidoPeloRaio.point;
            Instantiate(torrePrefab, posicaoDeCriacaoDaTorre, Quaternion.identity);
        }
    }

    private RaycastHit DisparaRaioCameraAteUmPonto(Vector3 pontoInicial)
    {
       Ray raio = Camera.main.ScreenPointToRay(pontoInicial);
        RaycastHit elementoAtingidoPeloRaio;
        float comprimentoMaximoDoRaio = 100.0f;
        Physics.Raycast(raio, out elementoAtingidoPeloRaio, comprimentoMaximoDoRaio);

        return elementoAtingidoPeloRaio;
    }
}
4 respostas

Boa tarde Tulio, aparentemente não tem erro no código. O que pode estar acontecendo é que o pivot do seu prefab Torre está deslocado para a direita.

Veja se os modelos da Torre estão centralizados quando você coloca eles na posição 0,0,0 do mundo. Essa é uma maneira de verificar se os objetos estão na posição certa.

Boa tarde,realmente o pivot esta a direita fora do objeto,tentei zera a posição e ele continua fora,tem como eu mexer nele para volta ao centro do objeto?

solução!

Você pode criar um novo objeto vazio e jogar a torre dentro dele. Assim você pode alinhar a torre com esse novo objeto pai e usar isso como seu prefab.

Muito obrigado,deu certo =)