Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Funcion LookAt en 2D

Iniciado por shelbybto, Agosto 24, 2015, 05:34:01 AM

Tema anterior - Siguiente tema
Buenas, he estado buscando este tema pero aun no encuentro la solución.Tengo un modelo importado de blender en 3D, lo que estoy trabajando esta en 2D, básicamente tengo una nave que se mueve por los ejes X y Y.Estoy tratando de implementar un especie de radar donde tu seleccionas el destino y la nave va automáticamente al objeto. En este caso selecciono la luna como objetivo, entonces básicamente la nave debe rotar, de tal modo que el al activar la turbina esta se dirija al objetivo.He usado lookAt pero no funciona para 2D aparentemente solo rota los ejes X y Y.En mi caso solo tengo que calcular la rotación en Z para que la nave apunte al objetivo. He buscado en Google y casi siempre me encuentro con algo similar solo que el objetivo seria el Cursor. He tratado de adaptarlo pero sigo sin éxito.En la primera imagen se ve en que ejes se mueve la nave.Y en la segunda es el boceto de como va a quedar el radar.Si alguien sabe o ha hecho esto le agradecería que me orientara. lo unico que he conseguido es que rote en direcciones al azar.Datos Adicionales:Tengo una Script que controla que objeto esta seleccionado en un arreglo, este es el objeto hacia donde se dirige (ObjetosDetectados[ObjetoSeleccionado].transform.position)Tengo declarado GameObject Nave;  A este le asigno la nave que es la que va a rotarEste es el codigo que estado intentando:Vector3 PosicionRelativa = ObjetosDetectados[ObjetoSeleccionado].transform.position - Nave.transform.position;
Nave.transform.rotation = Quaternion.LookRotation(PosicionRelativa,Vector3.down); (Esta parte es donde se supone que se orienta el objeto)Estas son las combinaciones que he intentado
http://docs.unity3d.com/ScriptReference/Vector3-back.html" rel="external nofollow">back(La nave termina apuntando de frente hacia la camara)
http://docs.unity3d.com/ScriptReference/Vector3-down.html" rel="external nofollow">down(La nave termina apuntando a la derecha y girada en su propio eje)
http://docs.unity3d.com/ScriptReference/Vector3-forward.html" rel="external nofollow">forward(La nave termina apuntando hacia donde apunta la camara)
http://docs.unity3d.com/ScriptReference/Vector3-left.html" rel="external nofollow">left(La nave termina apuntando hacia la izquierda)
http://docs.unity3d.com/ScriptReference/Vector3-right.html" rel="external nofollow">right(La nave termina apuntando hacia la derecha)
http://docs.unity3d.com/ScriptReference/Vector3-up.html" rel="external nofollow">up(La nave termina apuntando izquierda y girada en su propio eje)
Si no le paso ningun parametro al final, termina como si le pasara Vector3.up;
Si necesitan información adicional, con gusto se las proporciono.Gracias Espero haberme explicado bien y que me puedan ayudar con esto.


Yo si quiero que un objeto "mire a otro en z" hago lo siguiente:objetoquemirara.transform.rotation = Quaternion.Identity;objetoquemirara.transform.rotation = Quaternion.LookRotation(objetoamirar.transform.forward);

Gracias por tu respuesta iRobb, estubo cercas te paso las imagenes, tengo la nocion de que el problema puede ser el modelo en blender. creo que unity no logra determinar el frento del objeto, ya que como se ve en la primera imagen la nave esta de frente, cuando use tu codigo, se inclino hacia el objetivo pero tambien giro X y Y, la rotacion paso de 0 en X y Y, a 348 y 284.Tambien dije igual no hay bronca corrijo la orientacion despues, solo que la nave no se dirigio al objetivo paso un poco lejos, como que no apunta directamente. Voy hacer unas pruebas con lo entendi del tutorial que dan en la pagina oficial y voy a cambiar el modelo 3D, por un simple Sprite 2D.Igual Gracias Por tu respuesta 


Ah. Como recomendación siempre dejar los modelos importados con rotación y posición 0 o tendràs muchos problemas después. Sino puedes hacerlo, mételos dentro de otro gameobject. Mi código funciona, solo que tus gameobjects deben estan rotados.

iRobb, te comento si mi modelo esta rotado en 0 y esta como unos -70 en X, intente con el mismo modelo pero exportado en PNG. Puse el Sprite y paso lo mismo creo que tal vez se daño o algo la escena porque es mas o menos el mismo resultados que me han arrojado con otras cosas que he encontrado. Es eso o estoy planteando mal el problema te dejo las fotos de los objetos que probé con sus rotaciones antes y después.Gracias por tu respuesta.




Etiquetas: