Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: R3N3 en Agosto 05, 2017, 03:54:48 AM

Título: problemas para arrastrar una caja
Publicado por: R3N3 en Agosto 05, 2017, 03:54:48 AM
Hola amigos tengo un problema, tengo un personaje con character controller , necesito mover cajas en el escenario (es un juego sencillo de celular de tipo puzzle) , por ahora lo hago de la siguiente manera , con un trigers stay al presionar un botón , hago a la caja hijo del personaje , por lo que puedo moverlo a cualquier lado , pero cuando ejerso fuerza contra una pared, la caja , el collider, entra un poco en el collider de la pared , y sale disparada la caja
 (//<fileStore.core_Attachment>/monthly_2017_08/arrastrar2.jpg.3fbd38e7db38a6b3f646c583fd8fb235.jpg)
Título: problemas para arrastrar una caja
Publicado por: Igor en Agosto 05, 2017, 01:20:41 PM
El problema puede ser el rigidbody, si la caja tiene rigidbody puedes poner en el fragmento del script donde haces a la caja hija del personaje
 

miCaja.rigidbody.constraints = RigidbodyConstraints.FreezePositionX | RigidbodyConstraints.FreezePositionZ | RigidbodyConstraints.FreezePositionY;

 
O sino en update:
 



   
      miCaja.rigidbody.velocity = Vector3.zero;
   

[/quote]
 
La primera impide que rigidbody añada fuerzas(force) de movimiento al objeto cuando "choca" con algo, la segunda detiene el movimiento por fuerzas del rigidbody
 
Sino, lo que puedes hacer es colocar manualmente la caja, primero en la posicion/rotamiento del player y luego moverla adelante 
 



   
       
   
   
      miCaja.transfor.position = miPersonaje.transform.position;
   
   
      miCaja.transform.rotation = miPersonaje.transform.rotation;
   
   
      miCaja.transform.position += miCaja.transform.forward * distancia;
   
   
       
   

[/quote]
 
Si aun asi sigue moviendose la caja al chocar con algo(que no deveria) puedes meter el codigo en lateUpdate para asegurarte de que la colocas en su sitio despues de que Phisics haga lo que sea que haga, ya que lateUpdate se ejecuta despues, aunque esto es una chapuza, porque no solucion el problema sino que lo "sobreescribe", deberias poder solucionarlo con lo del rigidbody que te he dicho al principio, pero recuerda al "soltar" la caja cambiar otra vez las constraints del rigidbody