[RESOLVIDO] Rotação do objeto
4 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Rotação do objeto
Olá, estou com um script para rotacionar na Eixo Z, Que se a rotação em Z > 0 && < 45 Ele gira até a posição 45° Eixo Z. mais Ele simplesmente rotaciona para -90°
- Código:
if (Input.GetKey (KeyCode.UpArrow) && transform.rotation.eulerAngles.z > 0 && transform.rotation.eulerAngles.z < 45) {
transform.RotateAround (transform.position, -Vector3.right, Time.deltaTime);
}
Última edição por rafaelllsd em Seg Dez 12, 2016 2:52 pm, editado 1 vez(es)
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [RESOLVIDO] Rotação do objeto
Veja se o objeto é filho de outro GameObject, caso seja, faça com que gire em relação ao objeto.rafaelllsd escreveu:Olá, estou com um script para rotacionar na Eixo Z, Que se a rotação em Z > 0 && < 45 Ele gira até a posição 45° Eixo Z. mais Ele simplesmente rotaciona para -90°
- Código:
if (Input.GetKey (KeyCode.UpArrow) && transform.rotation.eulerAngles.z > 0 && transform.rotation.eulerAngles.z < 45) {
transform.RotateAround (transform.position, -Vector3.right, Time.deltaTime);
}
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [RESOLVIDO] Rotação do objeto
Ele não é afiliado a nenhum outro objeto :/
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [RESOLVIDO] Rotação do objeto
use Quaternion :3rafaelllsd escreveu:Ele não é afiliado a nenhum outro objeto :/
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [RESOLVIDO] Rotação do objeto
Amigo, eu estava com um problema desses há uns tempos. Eu tava fazendo um sisteminha para o player olhar pra direita quando apertar D, e olhar pra esquerda quando apertar A. Só que estava acontecendo isso, ele sempre ia pra uma só rotação, 90°. Eu corrigi isso utilizando a câmera como referência, assim peguei o lado direito e esquerdo dela para o meu player. Poderia me dizer o que está tentando fazer? Assim posso te ajudar melhor.
George Lucas Vieira- Avançado
- PONTOS : 3391
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: [RESOLVIDO] Rotação do objeto
Estou tentando fazer um script de Helicoptero bem simples só para ter uma ideia como é e aprimorar depois, só que quando clico no "UpArrow" que é para ele girar 45° e começa a impulsionar para frente ele sempre gira -90° no caso girar para frente.
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: [RESOLVIDO] Rotação do objeto
Cara, isto é muito complexo, e não tem muito como explicar, pois depende muito de como os objetos estão rotacionados na sua cena...
a Unity faz conversões para NUNCA passar de 180º nos angulos... então, as vezes ela inverte um eixo, então você seta 45º, mas como está invertido, ela vai compensar nos 2 outros eixos, e ferra tudo.
Uma das maneiras de contornar isto é usar o +=... vou dar um exemplo:
Este script abaixo é para o volante de um veículo baseado em wheelCollider:
eu somo rotação no valor atual do angulo... desta forma, a Unity converte o valor corretamente, sem bugar.
a Unity faz conversões para NUNCA passar de 180º nos angulos... então, as vezes ela inverte um eixo, então você seta 45º, mas como está invertido, ela vai compensar nos 2 outros eixos, e ferra tudo.
Uma das maneiras de contornar isto é usar o +=... vou dar um exemplo:
Este script abaixo é para o volante de um veículo baseado em wheelCollider:
- Código:
using UnityEngine;
using System.Collections;
public class Volante : MonoBehaviour {
[Range(0.4f,4.0f)]public float velGiroVolante = 2.0f;
float rotacInicVolanteZ, angulo2Volante;
void Start () {
rotacInicVolanteZ = transform.localEulerAngles.z;
}
void Update () {
float direcaoFixVolante = Input.GetAxis ("Horizontal");
angulo2Volante = Mathf.MoveTowards(angulo2Volante, direcaoFixVolante, velGiroVolante*Time.deltaTime);
transform.localEulerAngles = new Vector3 (transform.localEulerAngles.x, transform.localEulerAngles.y, rotacInicVolanteZ + (angulo2Volante * 540.0f));//540 = 1.5 voltas
}
}
eu somo rotação no valor atual do angulo... desta forma, a Unity converte o valor corretamente, sem bugar.
Re: [RESOLVIDO] Rotação do objeto
Obrigado, me ajudaram bastante :D
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Rotação apontando para um Objeto.
» [RESOLVIDO] Ajuda com orientação de rotação de objeto
» [RESOLVIDO] Copiar a rotação de um Objeto para outro.
» [RESOLVIDO] Como voltar um objeto para sua rotação inicial?
» [RESOLVIDO] Como fazer um objeto ter a mesma rotação de outro
» [RESOLVIDO] Ajuda com orientação de rotação de objeto
» [RESOLVIDO] Copiar a rotação de um Objeto para outro.
» [RESOLVIDO] Como voltar um objeto para sua rotação inicial?
» [RESOLVIDO] Como fazer um objeto ter a mesma rotação de outro
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos