Página 1 de 1

Bug de rotação no objeto

Enviado: Qua Dez 07, 2016 6:07 pm
por Adilson
uso o seguinte codigo com a finalidade de conseguir fazer o objeto olhar para onde esta andando:

Código: Selecionar todos

using UnityEngine;
using System.Collections;

public class spider_contrrol : MonoBehaviour 
{
 private int act = 0;
 private int nomove = 0;
 public float smooth = 2.0F;
 Rigidbody m_Rigidbody;
 Animator m_Animator;
 SphereCollider m_Collider;
 void Start ()  {
 m_Animator = GetComponent<Animator> ();
 m_Rigidbody = GetComponent<Rigidbody> ();
 m_Collider = GetComponent<SphereCollider> ();
 }
 
 // Update is called once per frame
 void Update () {
 if (nomove <= 0) {
 float horizontal = Input.GetAxis ("Horizontal") * 2;
 float vertical = Input.GetAxis ("Vertical") * 2;
 if (Mathf.Abs (horizontal) + Mathf.Abs (vertical) > 0) {
 act = 1; {
 Vector3 p = transform.position;
 Vector3 t = new Vector3 (transform.position.x + (horizontal*3), transform.position.y, transform.position.z + (vertical*3));

 Vector3 d = t - p;
 d.y = 0;
 Quaternion newRotation = Quaternion.FromToRotation(Vector3.forward, d);
 }
 } else
 act = 0;
 if (Input.GetKeyDown ("x")) {
 act = 5;
 horizontal = 0;
 vertical = 0;
 }
 m_Rigidbody.velocity = new Vector3 (horizontal, 0, vertical);
 } else
 nomove -= 1;
 m_Animator.SetInteger("act", act);
 }
}
Porem quando aperto para baixo no teclado, o objeto vira de ponta cabeça '-'
Não sou iniciante, sou profissional em game maker e agora to aprendendo Unity

Re: Bug de rotação no objeto

Enviado: Qua Dez 07, 2016 6:26 pm
por WellingtonBecker

Código: Selecionar todos

Vector3 t = new Vector3 (transform.position.x + (horizontal*3), transform.position.y + (vertical*3), transform.position.z );

Re: Bug de rotação no objeto

Enviado: Qua Dez 07, 2016 6:33 pm
por Adilson
No work :(
Ele olha certinho pra esquerda e pra direita, mas quando vai pra baixo ou pra cima, ele soh olha pra cima.

Re: Bug de rotação no objeto

Enviado: Qua Dez 07, 2016 9:24 pm
por Rodrigo Santiago
O unity tem isso mesmo, tem algumas coisas que você tem que testar pra saber como ele interpreta depois ...

Nesse caso deve ser porque os cálculos de rotação do "FromToRotation" são diferente do que você está pensando. e ele roda 'por cima' pra igualar ao vetor. Já tentou usar EulerAngles ?

Re: Bug de rotação no objeto

Enviado: Qua Dez 07, 2016 9:43 pm
por Adilson
Eu sou novo nisso amigo, poderia me dar uma ajudinha e me explicar isso ai, talves funcione :'(

Re: Bug de rotação no objeto

Enviado: Qua Dez 07, 2016 10:00 pm
por Rodrigo Santiago
Primeiro, como vc quer rodar apenas no eixo Y (girando de cima), você pode usar ângulos normais.

por exemplo :

Código: Selecionar todos

 newRotation.eulerAngles = new Vector(0,180,0);


MAS ,como você já fez um monte de coisa pra desse jeito , tenta usar SetLookRotation

Código: Selecionar todos

Quaternion newRotation = Quaternion.SetLookRotation(d);