Olá! Estou tendo um problema com o projeto. O player não está rotacionando. Verifiquei o script várias vezes mas não estou conseguindo encontrar o erro. Se puderem me ajudar, ficarei muito grata!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá! Estou tendo um problema com o projeto. O player não está rotacionando. Verifiquei o script várias vezes mas não estou conseguindo encontrar o erro. Se puderem me ajudar, ficarei muito grata!
Oi, Caroline, tudo bem?
Acho que o problema pode não ser no script, você configurou a mascara Floor? Tem que selecionar a camada do chão lá no Inspector senão o raio não tem com o que colidir.
Depois se quiser evoluir esse comportamento eu deixei uma dica nesse tópico
Configurei sim a mascara. O estacionamento esta na layer ”Floor” e no inspector do Player tambem adicionei essa camada na variavel que foi criada (public LayerMask Floor;). Tentei adicionar um plano, como tem no topico que voce sugeriu, mas tambem nao deu certo. Sera que por conta da posicao da camera? Esta assim:
A posição da camera não deveria influenciar não. Conseguindo ver o chão e batendo com ele tá tudo bem.
Vamo testar a colisão dentro do if do Raycast coloca algo como:
Debug.Log(impacto.collider.gameObject.name);
Assim vai aparecer na janela de console (se não tiver aberto aperte ctrl + shift + c) o nome do objeto com o qual o raio esta colidindo e dê pra identificar algum problema.
Sobre o plano o código, acho que ele vai ficar mais claro um pouco a frente do curso quando você fizer a parte de atirar, mas fazendo uma adaptação ficaria algo assim dentro do FixedUpdate:
Ray raio = Camera.main.ScreenPointToRay(Input.mousePosition);
// colocar isso numa variável privada quando aprendermos sobre isso no curso 2 :)
Plane plano = new Plane(Vector3.up, transform.position);
float distanciaColisao;
if (plano.Raycast(ray, out distanciaColisao))
{
Vector3 localColisao = raio.GetPoint(distanciaColisao);
localColisao.y = 0; // zerando rotações em Y
//direcao para onde vamos olhar baseado onde estamos
Vector3 posicaoParaOlhar = localColisao - transform.position;
Quaternion novaRotacao = Quaternion.LookRotation(posicaoParaOlhar);
GetComponent<Rigidbody>().MoveRotation(novaRotacao);
}Esse agora deve funcionar, mas acho que fazermos o antigo funcionar antes de evoluir é melhor, mas guarda ele pra que você possa estudar no futuro.
Localizei onde esta o problema, mas nao achei o erro. Minha verificação não está funcionando. O debug dentro do if não está rodando. Fiz o teste também de apenas printar uma frase, dentro da verificação também não funcionou, mas fora dela sim. Tentei refazer todo o codigo, mas ainda acontece o mesmo.
A movimentação está normal? E se tirar a mascara muda algo?
if(Physics.Raycast(raio, out impactor, 100))
Sim, de resto esta tudo normal... No inicio testei sem a mascara, ele virava as vezes e de forma bem brusca, agora com a mascara ele nao rotaciona nada.
Se quiser subir seu a pasta do seu projeto num arquivo .zip e colocar num Google Drive, Dropbox, ou algo assim, eu consigo dar uma olhada
Só lembra de colocar o compartilhamento como publico e esse link aqui :)
Beleza! Aqui o link:
https://drive.google.com/drive/folders/16pzp7jJM6-iKygLlUtz5yJZQUtLqY_OF?usp=sharing
Oi, Caroline, tudo bem?
Conferi o projeto e o chão do estacionamento não tem um colisor, por isso que o raio não consegue colidir com ele. Se você adicionar um box collider deve funcionar, inclusive a parte das camadas :)
Bons estudos!
Nossa, nao acredito que deixei isso passar HAHAH
Muito obrigada pela ajuda e pela paciência!!