[RESOLVIDO] Rotacionar Prefab dentro da Scene
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Rotacionar Prefab dentro da Scene
Boa tarde! Estou com o seguinte problema: Estou criando um jogo tower defense, uma das minhas "defesas" ja tem o seu modelo "deitado", como eu preciso, o outro modelo da defesa é com o modelo "de pé", logo, quando eu a coloco dentro da scene, por dentro do jogo, ela não fica exatamente como o prefab, e sim como o modelo original.
Estou usando este código para colocar as defesas:
Gostaria de saber, como eu posso fazer para que quando eu colocasse a próxima defesa, na qual possui o modelo "de pé", para que ela rotacionasse em 90°, assim, ficando "deitada" como a primeira defesa.
Não sei se me fiz claro, qualquer dúvidas podem comentar.
Obrigado desde já.
Estou usando este código para colocar as defesas:
- Código:
GameObject defesaParaConstruir = defesaManager.PegarDefesaParaConstruir();
defesa = (GameObject)Instantiate(defesaParaConstruir, transform.position + posicaoNaScene, transform.rotation);
Gostaria de saber, como eu posso fazer para que quando eu colocasse a próxima defesa, na qual possui o modelo "de pé", para que ela rotacionasse em 90°, assim, ficando "deitada" como a primeira defesa.
Não sei se me fiz claro, qualquer dúvidas podem comentar.
Obrigado desde já.
Ricardito- Membro
- PONTOS : 1729
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Rotacionar Prefab dentro da Scene
Crie dois prefabs separados, e em cada um coloque a defesa dentro do um objeto vazio.
você pode rotacionar a defesa como desejar, pois a raiz do prefab será o objeto vazio que a orientação é sempre correta.
você pode rotacionar a defesa como desejar, pois a raiz do prefab será o objeto vazio que a orientação é sempre correta.
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Rotacionar Prefab dentro da Scene
Cara, muito obrigado, isso revolveu cerca de 80% dos meus problemas, a unica coisa que está acontecendo, que ja acontecia antes, é que quando ela detecta um inimigo, volta para a posição "de pé", quando eu posiciono ela pela primeira vez, por dentro do jogo no caso, ela fica "deitada", como deveria ser, mas a partir do momento que ela detecta o primeiro inimigo ela volta para a posição "de pé" e aí continua nessa posição.Fagner escreveu:Crie dois prefabs separados, e em cada um coloque a defesa dentro do um objeto vazio.
você pode rotacionar a defesa como desejar, pois a raiz do prefab será o objeto vazio que a orientação é sempre correta.
Meu código para a defesa atirar nos inimigos é esse:
- Código:
void Update()
{
if (alvo == null) {
return;
}
//Para rotacionar a Defesa, fazendo com que não fique estática para o jogador
Vector3 direcao = alvo.position - transform.position;
Quaternion dirRotacao = Quaternion.LookRotation(direcao);
Vector3 rotacao = dirRotacao.eulerAngles;
parteRotacaoDefesa.rotation = Quaternion.Euler(0f, rotacao.y+90, 0f);
if (tiroContador <= 0f) {
Atirar();
tiroContador = 1f / velocidadeTiro;
}
tiroContador -= Time.deltaTime;
}
//Função para fazer as defesas atirarem quando tiverem um inimigo no seu alcance
void Atirar() {
GameObject tiroGameObject = (GameObject)Instantiate(tiroPrefab, tiroPontoInicial.position, tiroPontoInicial.rotation);
Tiro tiro = tiroGameObject.GetComponent<Tiro>();
if(tiro != null) {
tiro.Procura(alvo);
}
}
Ricardito- Membro
- PONTOS : 1729
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Rotacionar Prefab dentro da Scene
Lembrando que o ideal seria abrir esses modelos no Blender e corrigir as rotações por lá, do jeito atual você precisa ficar alterando hierarquia ou via código, o que não é prático.
Sem ver o game e como sua defesa está organizada na hierarquia, fica difícil de dizer, você pode testar seu código sem o "+90" na linha 11:
Sem ver o game e como sua defesa está organizada na hierarquia, fica difícil de dizer, você pode testar seu código sem o "+90" na linha 11:
- Código:
parteRotacaoDefesa.rotation = Quaternion.Euler(0f, rotacao.y+90, 0f);
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Rotacionar Prefab dentro da Scene
Muitíssimo obrigado! Era praticamente isso, o código ficou da seguinte forma:Fagner escreveu:Sem ver o game e como sua defesa está organizada na hierarquia, fica difícil de dizer, você pode testar seu código sem o "+90" na linha 11:mas se isso não resolver, poste um print da defesa, mostrando o transform de cada objeto na hierarquia para saber direito como você está fazendo.
- Código:
parteRotacaoDefesa.rotation = Quaternion.Euler(0f, rotacao.y+90, 0f);
- Código:
parteRotacaoDefesa.rotation = Quaternion.Euler(0f, rotacao.y + 90, rotacao.z + 90);
Não consegui achar a Tag "Resolvido" para colocar nesta resposta, mas consegui solucionar meu problema!
Ricardito- Membro
- PONTOS : 1729
REPUTAÇÃO : 2
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Prefab com altura diferente na Scene
» [RESOLVIDO] Encontrar um objeto que está dentro de um Prefab.
» [RESOLVIDO]Mudar de scene multiplayer?
» [RESOLVIDO] Ajuda Scene Editor
» [RESOLVIDO] Rotacionar tela mobile
» [RESOLVIDO] Encontrar um objeto que está dentro de um Prefab.
» [RESOLVIDO]Mudar de scene multiplayer?
» [RESOLVIDO] Ajuda Scene Editor
» [RESOLVIDO] Rotacionar tela mobile
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos