Noticias

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

problema con Jerarquia

Iniciado por juguefre, Julio 08, 2017, 04:40:51 AM

Tema anterior - Siguiente tema
Julio 08, 2017, 04:40:51 AM Ultima modificación: Julio 10, 2017, 12:27:25 PM por pioj
Hola,
 
Necesito crear un script en unity que haga lo que muestro en el video del link: https://youtu.be/7DJRX-bGmJk
 
Ya había logrado esto en otro engine (pero ese usa pascal como lenguaje) y he tratado de logra esto en unity y nada, no he podido.
 
En el vídeo se puede ver un terreno (la imagen de cesped), una flecha azul (que es hija de el terreno) y una flecha roja (que es hija de la flecha azul)
 
la jerarquía en unity funciona perfecto, las flechas siguen al terreno, la azul al terreno y la roja a la azul respectivamente, en el video paso la rotación de el terreno a la flecha azul usando esta linea de codigo:
 



   
      flecha_azul.rotateY=terreno.rotateY;
   

[/quote]
 
y la flecha azul no solo sigue al terreno sino que también rota en la misma cantidad.
 
Eso tan simple es lo que no he podido lograr en unity, pasar la rotación de un objeto a otro de forma automática.
 
Ya lo logre pero creo que es la PEOR forma de hacerlo pues simplemente configure las teclas 1 & 2 del teclado para que rotaran el terreno y luego uso las mismas lineas de codigo en el script de la flecha......así la flecha también gira pero voy a tener MUCHISIMOS objetos haciendo esto y no creo que esta forma sea optima.
 
Si nos basamos en los nombres que estoy usando que son:
 

  •    terreno


  •    flecha_azul


  •    flecha_roja


Y con estas 2 lineas de código logro el efecto que busco:
 



   
       
   
   
      flecha_azul.rotateY=terreno.rotateY;
   
   
      flecha_roja.rotateY=terreno.rotateY;
   
   
       
   

[/quote]
 
Como seria el codigo en Unity? 
 
 
 
Muchas gracias a todos por tomarse el tiempo de leer esto.
 
Agradezco muchísimo cualquier ayuda.
 
 

Buenos días,
 
si los objetos están emparentados por jerarquía, no necesitas pasar las operaciones de transformación del padre a los hijos, cuando trasladas, escalas o rotas al padre eso también afecta a los hijos. O sea que si por script quieres rotar la flecha azul cuando se rota el terreno, si la flecha azul en la jerarquía es hija del objeto terreno no tienes más que rotar el terreno.
 
Un concepto al que creo que tienes que echarle un ojo es la diferencia entre transform.rotation y transform.localRotation. Todos los objetos de Unity que tienen componente Transform tienen estos dos miembros. Rotation hace referencia a la rotación respecto al punto zero de la escena. LocalRotation es la rotacion respecto al objeto padre. Es muy intuitivo, revisa la documentación de Unity y lo verás muy claro.

Hola, gracias por tu respuesta,
 
 
 
La jerarquia en unity funciona, lo que necesito es por ejemplo si el terreno rota  90 grados la flecha rote tambien 90 grados sobre su propio pivote.
 
A ver si con imagenes en vez de un video se entiende mejor.
 
Aqui el terreno tiene rotacion 0 grados
 

 
El terreno tiene ahora rotacion 90 grados y mis lineas de codigo estan comentadas, la jerarquia se comporta normalmente.
 

 
Ahora descomento mi primera linea de codigo y la rotacion del terreno es 90 grados, se puede ver que la flecha azul se comporta muy diferente, la diferencia es que la flecha azul no solo se mueve con el terreno sino que tambien rota en la misma cantidad (en este caso la flecha azul rota 90 grados sobre su propio pivote)
 

 
Ahora tambien descomento la segunda linea y se puede ver que la flecha roja tambien se comporta de forma diferente.
 

 
Quiero hacer enfasis en que yo solamente he girado el terreno, las flechas giran de forma automatica debido al codigo y es esto  lo que busco lograr en unity.
 
Basicamente busco configurar un controller en unity y rotar el terreno/escenario con teclas/botones y que los objetos hijos del terreno roten automaticamente.
 
El valor de la rotacion es desconocido pues eso lo hara el jugador, el rotara el terreno de acuerdo a lo que quiera hacer en ese momento.
 
Gracias.

 

Mensaje corregido y movido a su correspondiente foro....

Etiquetas: