Fazer personagem 3d ficar de frente para outro durante diálogo
3 participantes
Página 1 de 1
Fazer personagem 3d ficar de frente para outro durante diálogo
Olá pessoal, estou tendo um pouco de dificuldade quando executo uma animação em um sistema de diálogo. É o seguinte, quando o meu personagem entra no trigger do outro personagem no qual quero dialogar, eu posso pressionar a tecla D e meu personagem inicia o diálogo e executa uma animação gesticulando com os braços, o meu problema é que não consigo fazer meu personagem ficar sempre de frente para o outro na hora do diálogo, e acaba ficando um pouco estranho as vezes, pois ele executa a animação em direções nada a ver. Alguém teria alguma ideia do que posso fazer para resolver isso?
ronigleydson- Avançado
- PONTOS : 2183
REPUTAÇÃO : 23
Respeito as regras :
Re: Fazer personagem 3d ficar de frente para outro durante diálogo
Se você tiver uma animação do boneco girando, dá pra fazer uma Coroutine executar enquanto o ângulo entre a frente do npc e a frente do player for maior que x, sendo menor, termina a coroutine e inicia o diálogo.
Se não tiver animação, você pode usar um Quaternion.LookRotation pra pegar a rotacao ideal pro NPC, fazer o lerp entre a rotação atual e a rotação ideal usando o Quaternion.Slerp, e no fim, iniciar o diálogo.
Calcular angulo:
https://docs.unity3d.com/ScriptReference/Vector3.SignedAngle.html
Encontrar Rotacao ideal:
https://docs.unity3d.com/ScriptReference/Quaternion.LookRotation.html
Girar suavemente:
https://docs.unity3d.com/ScriptReference/Quaternion.Slerp.html
Se não tiver animação, você pode usar um Quaternion.LookRotation pra pegar a rotacao ideal pro NPC, fazer o lerp entre a rotação atual e a rotação ideal usando o Quaternion.Slerp, e no fim, iniciar o diálogo.
Calcular angulo:
https://docs.unity3d.com/ScriptReference/Vector3.SignedAngle.html
Encontrar Rotacao ideal:
https://docs.unity3d.com/ScriptReference/Quaternion.LookRotation.html
Girar suavemente:
https://docs.unity3d.com/ScriptReference/Quaternion.Slerp.html
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Fazer personagem 3d ficar de frente para outro durante diálogo
Acho que vou tentar utilizar o Quaternion e fazer da maneira que você mencionou, eu até tenho uma animação mas preciso estudar um pouco mais sobre Coroutine pra saber certinho como usar. Obg pela ajuda e os links sobre as referências.Fagner escreveu:Se você tiver uma animação do boneco girando, dá pra fazer uma Coroutine executar enquanto o ângulo entre a frente do npc e a frente do player for maior que x, sendo menor, termina a coroutine e inicia o diálogo.
Se não tiver animação, você pode usar um Quaternion.LookRotation pra pegar a rotacao ideal pro NPC, fazer o lerp entre a rotação atual e a rotação ideal usando o Quaternion.Slerp, e no fim, iniciar o diálogo.
Calcular angulo:
https://docs.unity3d.com/ScriptReference/Vector3.SignedAngle.html
Encontrar Rotacao ideal:
https://docs.unity3d.com/ScriptReference/Quaternion.LookRotation.html
Girar suavemente:
https://docs.unity3d.com/ScriptReference/Quaternion.Slerp.html
ronigleydson- Avançado
- PONTOS : 2183
REPUTAÇÃO : 23
Respeito as regras :
Re: Fazer personagem 3d ficar de frente para outro durante diálogo
nao da pra usar lookat?ronigleydson escreveu:Olá pessoal, estou tendo um pouco de dificuldade quando executo uma animação em um sistema de diálogo. É o seguinte, quando o meu personagem entra no trigger do outro personagem no qual quero dialogar, eu posso pressionar a tecla D e meu personagem inicia o diálogo e executa uma animação gesticulando com os braços, o meu problema é que não consigo fazer meu personagem ficar sempre de frente para o outro na hora do diálogo, e acaba ficando um pouco estranho as vezes, pois ele executa a animação em direções nada a ver. Alguém teria alguma ideia do que posso fazer para resolver isso?
um gameobject pra ser o target, quando tiver dialogo, deixa uma booleana true que esteja relacionada ao lookat
transform.LookAt(target.transform);
giowde- Avançado
- PONTOS : 2160
REPUTAÇÃO : 17
Respeito as regras :
Re: Fazer personagem 3d ficar de frente para outro durante diálogo
Valeu pela ajuda, vou tentar assim tb, mexer com transform e suas funcionalidades as vezes buga minha cabeça kkk. Obrigado.giowde escreveu:nao da pra usar lookat?ronigleydson escreveu:Olá pessoal, estou tendo um pouco de dificuldade quando executo uma animação em um sistema de diálogo. É o seguinte, quando o meu personagem entra no trigger do outro personagem no qual quero dialogar, eu posso pressionar a tecla D e meu personagem inicia o diálogo e executa uma animação gesticulando com os braços, o meu problema é que não consigo fazer meu personagem ficar sempre de frente para o outro na hora do diálogo, e acaba ficando um pouco estranho as vezes, pois ele executa a animação em direções nada a ver. Alguém teria alguma ideia do que posso fazer para resolver isso?
um gameobject pra ser o target, quando tiver dialogo, deixa uma booleana true que esteja relacionada ao lookat
transform.LookAt(target.transform);
ronigleydson- Avançado
- PONTOS : 2183
REPUTAÇÃO : 23
Respeito as regras :
Tópicos semelhantes
» Muita Dúvida em como fazer o tiro do personagem para de ficar automatico
» Como fazer o personagem "teletransportar" para outro lugar na mesma cena?
» [Duvida] movimentar personagem para frente e para traz numa plataforma 3d
» Como usar Vector3.Angles para detectar que algo está na frente de outro objeto?
» Personagem olhar para frente ao andar.
» Como fazer o personagem "teletransportar" para outro lugar na mesma cena?
» [Duvida] movimentar personagem para frente e para traz numa plataforma 3d
» Como usar Vector3.Angles para detectar que algo está na frente de outro objeto?
» Personagem olhar para frente ao andar.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos