Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: xavigalaxyace en Septiembre 04, 2017, 12:11:13 PM

Título: transform.parent sin escalar
Publicado por: xavigalaxyace en Septiembre 04, 2017, 12:11:13 PM
Como puedo hacer un
 



   
       
   
   
      gameobject.transform.prent = game.transform;
   
   
      gameobject.transform.localScale = scale;
   
   
       
   

[/quote]
 
 
 
¿C´0mo puedo hacer un parent sin modificar el scale?
Título: transform.parent sin escalar
Publicado por: francoe1 en Septiembre 04, 2017, 01:32:24 PM



   
      transform.SetParent(target, true);
   

[/quote]
 
 
Título: transform.parent sin escalar
Publicado por: lightbug en Septiembre 05, 2017, 12:15:07 AM
Cita de: francoe1 date=1504524744transform.SetParent(target, true);
   


Estas seguro Franco? yo pense que si ponias "true" te hacia el parent de toda la vida, y si le dabas "false" jerarquicamente te hacia el parent pero nada mas, sin modificar pos,rot y scale respecto al nuevo objeto. Osea si solo quiere NO modificar scale pero si el resto no se si funcionaria. Nunca lo use en false por eso tambien te  consulto.
Título: transform.parent sin escalar
Publicado por: francoe1 en Septiembre 05, 2017, 03:08:02 AM
Cita de: lightbug date=1504563307Estas seguro Franco? yo pense que si ponias "true" te hacia el parent de toda la vida, y si le dabas "false" jerarquicamente te hacia el parent pero nada mas, sin modificar pos,rot y scale respecto al nuevo objeto. Osea si solo quiere NO modificar scale pero si el resto no se si funcionaria. Nunca lo use en false por eso tambien te  consulto.
   


Con el tema de UI estuve usando mucho la función, pero me hiciste dudar y probe...
 
Si pones false, el componente transform no se modifica, por lo cual si emparentan a un objeto que tenga como escala (2,2,2) el resultado del transform sería el mismo que antes de emparentar por lo que este se escalará por su jerarquía.
 
Si pones true, el componente transform se modifica, por lo cual si emparentan a un objeto que tenga como escala (2,2,2) el resultado del transform sería (.5,.5,.5) para mantener la escala del objeto, lo mismo con las rotaciones.
Título: transform.parent sin escalar
Publicado por: lightbug en Septiembre 05, 2017, 03:11:17 AM
Cita de: francoe1 date=1504573682Si pones false, el componente transform no se modifica, por lo cual si emparentan a un objeto que tenga como escala (2,2,2) el resultado del transform sería el mismo que antes de emparentar por lo que este se escalará por su jerarquía.
   


y se mueve tambien con el padre?
 
lo probaria pero ni ganas de dar click al icono de Unity que tengo aca a 47 pixels de distancia
Título: transform.parent sin escalar
Publicado por: francoe1 en Septiembre 05, 2017, 01:52:35 PM
Cita de: lightbug date=1504573877y se mueve tambien con el padre?
   
   
      lo probaria pero ni ganas de dar click al icono de Unity que tengo aca a 47 pixels de distancia
   


ni idea jajajaj despues pruebo jajaaj, supongo que sigue el patron de escala y rotación.
Título: transform.parent sin escalar
Publicado por: lightbug en Septiembre 06, 2017, 01:02:32 AM
Cita de: francoe1 date=1504612355ni idea jajajaj despues pruebo jajaaj, supongo que sigue el patron de escala y rotación.
   


con false me hizo lo comun del parent, lo del padre se paso al hijo, la posicion del hijo es relativa al padre y la escala se transfiere
 
con true me modifico al hijo con tal de dejarlo intacto donde estaba pero tambien andaba lo mas bien, yo siempre pense que solo a nivel jerarquico te hacia el hijo, como un hijo especial que no se mueve con el padre, que idiota es solo un calculo previo para dejarlo igual que antes. Osea esto esta genial para plataformas y no tenes el problema de que el personaje se vuelva obeso morbido tipo 2 cada vez que se sube a una jajaj.
 
saludos
Título: transform.parent sin escalar
Publicado por: TheBullet en Septiembre 06, 2017, 08:43:03 AM
Pero normalmente cuando haces un SetParent() solo indicando un transform ya lo hace sin modificar la escala del objeto que mueves no? O sea, en el transform del hijo cambiará la escala local para adaptarla a la del padre y que el objeto se mantenga igual a nivel global.
Título: transform.parent sin escalar
Publicado por: lightbug en Septiembre 06, 2017, 01:58:55 PM
Cita de: TheBullet date=1504680183Pero normalmente cuando haces un SetParent() solo indicando un transform ya lo hace sin modificar la escala del objeto que mueves no? O sea, en el transform del hijo cambiará la escala local para adaptarla a la del padre y que el objeto se mantenga igual a nivel global.
   


me mataste, habria que probar, si haces el setparent solo pienso que te hará la version "false" quizas..¿? es que toda la vida usé transform.parent = .... y se comportaba como la false, y generalmente cuando usaba SetParent a la hora de setear cosas lineas abajo elegia la posicion global directamente y no la local (del inspector) asi que nunca me di cuenta de cual de las dos te hacia (la escala se me iba descontrolada eso si por eso pienso que es la false). habra que probar luego.
Título: transform.parent sin escalar
Publicado por: TheBullet en Septiembre 06, 2017, 07:51:26 PM
Cita de: lightbug date=1504699135me mataste, habria que probar, si haces el setparent solo pienso que te hará la version "false" quizas..¿? es que toda la vida usé transform.parent = .... y se comportaba como la false, y generalmente cuando usaba SetParent a la hora de setear cosas lineas abajo elegia la posicion global directamente y no la local (del inspector) asi que nunca me di cuenta de cual de las dos te hacia (la escala se me iba descontrolada eso si por eso pienso que es la false). habra que probar luego.
   


Ah, pues yo al revés, siempre utilizo SetParent y solo indico el transform que va a ser el padre, de hecho no sabia que había un bool para indicar que se mantenga la escala xD. Haciéndolo así cambia la escala a nivel local para ajustarla y mantener la escala a nivel global anterior. ¿Cambiándolo directamente desde transform.parent también se mantiene la escala a nivel global o se deforma el objeto?
 
Entiendo que en SetParent el bool por defecto es true por lo que pone en la documentación:
 



   

            
         

               worldPositionStays
            

               If true, the parent-relative position, scale and rotation are modified such that the object keeps the same world space position, rotation and scale as before.
            

[/quote]
 
https://docs.unity3d.com/ScriptReference/Transform.SetParent.html (https://docs.unity3d.com/ScriptReference/Transform.SetParent.html)
 
 
 
 
Título: transform.parent sin escalar
Publicado por: lightbug en Septiembre 06, 2017, 08:33:54 PM
Cita de: TheBullet date=1504720286¿Cambiándolo directamente desde transform.parent también se mantiene la escala a nivel global o se deforma el objeto?
   


Recien probe y no se deforma nada, funciona exactamente igual al setparent -> true, es decir que en mi caso el conocer el SetParent fue para cagada, me trajo mas confusión, antes con el transform.parent era feliz y planeo seguir usandondolo asi... SetParent R.I.P
 
Cita de: TheBullet date=1504720286Entiendo que en SetParent el bool por defecto es true por lo que pone en la documentación:
   


Si tenes razon, se me paso, queda en true por defecto, es decir que deberia mantener todo bien