Unity Spain
Post Antiguos => General (Antiguo) => Mensaje iniciado 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)
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