Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: zopas tv en Septiembre 30, 2017, 03:46:08 PM

Título: problema con script de reseteo
Publicado por: zopas tv en Septiembre 30, 2017, 03:46:08 PM
Hola!! tengo un problema ya  que al resetear las posiciones de 2 gameobjects (Barra y pelota) la pelota se va haciendo cada vez mas grande y al colocarse en la barra( transform.SetParent(Barra) ) se pone como plana. me podrian ayudar ?? Gracias. 
 

public void Reset(){
   
   transform.position = PosicionInicial;
 
   DetenerMovimiento();
}
void DetenerMovimiento(){
   
   enJuego = false;
   transform.SetParent(Barra);
   rig.isKinematic = true;
   rig.velocity = Vector3.zero;
}
Título: problema con script de reseteo
Publicado por: FNP en Septiembre 30, 2017, 04:26:56 PM
Hombre, así con lo que se puede ver en este script no puedo adivinar mucho, a ver si voy acertado.
 
- Entiendo que en un momento dado tienes una barra (raqueta) y una pelota y quieres poner la pelota en la posición inicial, es decir, encima de la raqueta.
 
- Entiendo que este script pertenece a la pelota, que es hija de la raqueta, por aquello de transform.SetParent(barra);
 
Ahora lo que no entiendo:
 
- ¿Usas físicas o no usas físicas? porque si usas físicas para que haces un isKinematic a true y si no las usas como detectas colisiones y demás, 
 
- ¿Porque la pelota es hija de la barra?
 
Si puedes, explícanos brevemente como has montado el juego: objetos, como se relacionan y reaccionan, Entiendo que es 3D pero que funciona como un 2D, me parece que es algo parecido al típico frontón de las consolas prehistóricas, por lo que si usas físicas (que veo que si) las estas puteando seguro bloqueando ejes y cosas de esas, pero no se, todo esto es percepción mía basada en la imaginación. danos mas detalles para que podamos entender lo que estás haciendo y ver cual es el problema.
Título: problema con script de reseteo
Publicado por: zopas tv en Septiembre 30, 2017, 08:18:35 PM
Mira el is kinematic en un momento dado( cuando empieza la partida ) se pone a false pero cuando se hace hija de la barra la pelota se pone mas grande eso es l que quiero hacer
Título: problema con script de reseteo
Publicado por: FNP en Septiembre 30, 2017, 08:42:08 PM
Eso es porque la escala de un objeto es relativa a la escala del padre y si el padre está rescalado al asignarle un hijo se aplicará la escala en función de la del padre, pero eso es un cambio de escala, no es que la pelota se ponga plana .¿no?
 
prueba con la barra y la pelota con escala 1 y si no te cambia el tamaño ya sabes cual era el problema.
Título: problema con script de reseteo
Publicado por: lightbug en Septiembre 30, 2017, 11:36:31 PM
Cita de: zopas tv date=1506779172y al colocarse en la barra( transform.SetParent(Barra) ) se pone como plana. me podrian ayudar ??
   


lo que dice @FNP, lee las referencias ahi esta todo:
 
https://docs.unity3d.com/ScriptReference/Transform.SetParent.html (https://docs.unity3d.com/ScriptReference/Transform.SetParent.html)
 
dice para el bool  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. "
 
.... usa SetParent(..... , true); y fijate
 
 
 
Lo que "se va haciendo mas grande" ni idea, en ese codigo no se ve