Noticias

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

problema con script de reseteo

Iniciado por zopas tv, Septiembre 30, 2017, 03:46:08 PM

Tema anterior - Siguiente tema
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;
}

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.

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

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.

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
 
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
 
 

Etiquetas: