Noticias

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

Como hago para emparentar GameGbjects mediante un script

Iniciado por Miguel Torrealba, Septiembre 14, 2015, 02:58:14 AM

Tema anterior - Siguiente tema
 Hola , Alguien me dice como hago para emparentar gameobjects mediante un script ( o si existe alguna funcion para eso ) ,lo que quiero es que cuando un objeto colisione con otro en la jerarquia salgan emparentados , osea que de 2 pasen a 1 .P.D Necesito una explicacion detallada sobre esta funcion transform.parent  ya que cada vez que la utilizo la consola me da un error, y no lo entiendo bien. .Si se necesitan el script se los dare.

Pon los script que sino no sabemos bien el problema.


es curioso que exijas una explicacion detallada sobre la funcion transform.parent (que para empezar no es ni una funcion) pero al mismo tiempo ofrezcas tan poco detalle sobre tu problematica; no es cuestion de poner tu script si no quieres, pero que minimo que indicar el error que te aparece en la consola ?de cualquier modo, no se puede hacer una explicacion detallada del transform.parent porque no tiene mas que eso xD pero si te sirve de ayuda, haciendo un ejercicio de imaginacion (puesto que no se sabe el error que te salta), solo me imagino dos posibles errores que puedas tener en tu script si solo quieres emparentar dos objetos al momento de colisionar y no hace nada mas:a ) el error que te aparece es porque estas intentando emparentar un objeto a algo que no sea un transform (por ejemplo a un gameobject). el transform.parent solo acepta un component transform.b ) el "error" que te aparece es una advertencia indicandote que transform.parent esta obsoleto y deberias utilizar la funcion SetParent (transform); si este es el caso, no es mas que una advertencia pero igual deberia de realizar la accion de emparentar un objeto al otro.void OnCollisionEnter (Collision objeto) { objeto.transform.SetParent (this.transform); }es complicado el script xD con una sola linea ya consigues lo que quieres sin ningun error, otra cosa es que haga otras acciones al momento de colisionar y en una de esas acciones tengas el error, pero como no muestras nada es imposible saberlo.

Cita de: Arthure date=1442220971" data-ipsquote="" data-cite="Arthure" class="ipsQuote void OnCollisionEnter (Collision objeto) { objeto.transform.SetParent (this.transform); }es complicado el script xD con una sola linea ya consigues lo que quieres sin ningun error, otra cosa es que haga otras acciones al momento de colisionar y en una de esas acciones tengas el error, pero como no muestras nada es imposible saberlo.
SetParent() ? yo hasta ahora siempre habia modificado la variable transform.parent "manualmente" ( transform.parent = objetoQueMeAcaboDeInventar.transform; ) Hay alguna diferencia entre esas dos formas?

Cita de: Jose134 date=1442221432" data-ipsquote="" data-cite="Jose134" class="ipsQuote SetParent() ? yo hasta ahora siempre habia modificado la variable transform.parent "manualmente" ( transform.parent = objetoQueMeAcaboDeInventar.transform; ) Hay alguna diferencia entre esas dos formas?
Desde el punto de vista funcional, no hay absolutamente ninguna diferencia; las dos hacen exactamente lo mismo. La unica diferencia es que transform.parent esta obsoleta, ya aparece la advertencia en consola cuando la utilizas recomendandote utilizar SetParent (transform). Esto provoca que en una futura version de unity ya no este disponible el transform.parent y al importar tu codigo te salte un error.Pero al margen de eso, en la actualidad puedes utilizar cualquiera de las dos formas; aunque es como todo, siempre es mejor dejar lo obsoleto un poco de lado y utilizar lo mas actualizado para evitarte futuros posibles quebraderos de cabeza

Septiembre 14, 2015, 02:22:41 PM #6 Ultima modificación: Septiembre 14, 2015, 02:34:24 PM por Miguel Torrealba
Hola disculpa por no responder aqui esta el script 
public class CajaScript : MonoBehaviour {    public int PuntosGanados;
    public GameObject Casa;
            
    void OnTriggerEnter2D(Collider2D coll)
    {
        if (coll.tag == "Casa Nieve") {
                                Debug.Log("Ganaste un punto!!!!!!!!!!");
                               
                                transform.parent = Casa.transform;
                                NotificationCenter.DefaultCenter ().PostNotification(this, "IncrementarPuntos",PuntosGanados);
        }         else {                            
            if(coll.tag != "Casa Nieve" && coll.tag == "Destructor")
                    {
                    Debug.Log("Perdiste una vida :(");
                    NotificationCenter.DefaultCenter ().PostNotification (this, "PerderVidas", 1); 
                    
            }
        }                     
    } 
} Veran les explico , Tengo un generador que genera casas a un lado de la camara , y un pajaro que lanza cajas desde arriba a las casas , lo que quiero es que cuando la Caja colisione con la casa estos se emparenten osea que de 2 objetos pasen a 1 (Eso es para que se puedan destruir juntos) .Lo que quiero es que se unan, no que uno valla en la posicion del otro, por eso pedi la explicacion del transform.parent,porque si voy a unir 2 objetos no vi sentido al acceder a su transform.El error error CS0029: Cannot implicitly convert type `UnityEngine.GameObject' to `UnityEngine.Transform'[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="23613" data-ipsquote-contentcommentid="110240">es curioso que exijas una explicacion detallada sobre la funcion transform.parent (que para empezar no es ni una funcion) pero al mismo tiempo ofrezcas tan poco detalle sobre tu problematica; no es cuestion de poner tu script si no quieres, pero que minimo que indicar el error que te aparece en la consola ?de cualquier modo, no se puede hacer una explicacion detallada del transform.parent porque no tiene mas que eso xD pero si te sirve de ayuda, haciendo un ejercicio de imaginacion (puesto que no se sabe el error que te salta), solo me imagino dos posibles errores que puedas tener en tu script si solo quieres emparentar dos objetos al momento de colisionar y no hace nada mas:a ) el error que te aparece es porque estas intentando emparentar un objeto a algo que no sea un transform (por ejemplo a un gameobject). el transform.parent solo acepta un component transform.b ) el "error" que te aparece es una advertencia indicandote que transform.parent esta obsoleto y deberias utilizar la funcion SetParent (transform); si este es el caso, no es mas que una advertencia pero igual deberia de realizar la accion de emparentar un objeto al otro.void OnCollisionEnter (Collision objeto) { objeto.transform.SetParent (this.transform); }es complicado el script xD con una sola linea ya consigues lo que quieres sin ningun error, otra cosa es que haga otras acciones al momento de colisionar y en una de esas acciones tengas el error, pero como no muestras nada es imposible saberlo.[/quote]Si creo que es el primer error que dijiste ya que quiero emparentar dos objetos y no igualar su transform,bueno en caso de que el transform.parent no pueda emparentar objetos , Existe alguna otra funcion para hacerlo ??. Para explicarme mejor te dejare un ejemploCaja CasaColision Caja-Casa1-Casa

mas perdido que wally en una convencion de chinos xDDDlos gameobjects se emparentan mediante sus transforms, no significa que vayan a igualar su posicion rotacion ni nada (todo seguira igual pero uno dentro del otro).Lo que me pregunto es para que utilizas la funcion OnTriggerEnter2D si despues no haces uso del objeto con el que colisionas por ningun lado :S para imaginarse eso sin ver el codigo, la peña quiere milagros xDvoid OnTriggerEnter2D (Collider2D coll) {if (coll.tag == "Casa") {this.transform.SetParent (coll.transform);NotificationCenter.DefaultCenter ().......} else if (coll.tag == "Destructor") NotificationCenter.DefaultCenter ().......}Es mas rapido de arreglar que de imaginarse el error sin ver el codigo, suerte

Gracias Funciona perfectamente eres una maquina gracias por tu ayuda , Agradecido 100%. Si tengo mas problemas te avisare .

Etiquetas: