Noticias

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

Movimiento constante de Vector3

Iniciado por UnityDevelopersXD, Mayo 23, 2016, 02:32:57 AM

Tema anterior - Siguiente tema
Hola a la comunidad, queria preguntar como puedo hacer para que un vector 3 tenga un valor, pero este se modifique con el movimiento de otro.Por ejemplo: Creo un vector 3 pero quiero que este se modifique si el personaje mueve la camara, esto me serviria para un arma para que esta se cree en una posicion y que cuando el personaje presione el click derecho del raton esta se mueva a la posicion del vector 3, pero como el personaje siempre se mueve entonces necesito que el vector 3 mantenga la posicion del arma pero al mismo tiempo la mueva.No se si me explique bien, pero si no entienden me avisan.Por favor si me pueden explicar en C# seria lo mejor ya que no entiendo mucho el UnityScript, pero tambien me lo pueden explicar en el UnityScript si no hay mas opcion.Gracias

Si un gameobject lo cuelgas de otro en jerarquía, se moverá con él. O sea, si el arma cuelga del personaje, cuando el personaje se mueva el arma también.
 
Luego puedes mover localmente el arma que será independiente del personaje.

Si haces que  el arma sea hijo del personaje (del gameobject, o un gameobject vacío donde iría el arma colocada, por ejemplo)  se moverá junto con él.

Eso si lo sabia, pero si lo coloco en la jerarquía y luego hago el arma se mueva en la posición del vector3 (digamos que el vector 3 tenga el valor 0,0,0) entonces si el personaje se mueve y el arma se mueve, no se ira a aquella posicion(0,0,0) del mapa y luego se movera pero no enfrente del jugador.O me equivoco?
 
Porque esto es lo que quiero lograr:
 
El personaje comienza con el arma en su costado(para disparar desde la cadera),pero si el personaje a mitad del juego necesita apuntar(por ejemplo si tiene un francotirador) entonces como yo podría hacer que el personaje apunte(osea que se mueva el arma hasta la posición que desee) pero siempre frente al jugador.Porque cuando lo hago simplemente asi: armaObjeto.transform.translate = posicionApuntar; entonces se pone el arma en la posicion del mapa(Junto con el jugador), es decir, se mueve el arma y el jugador a la posicion.

Mayo 24, 2016, 04:49:59 AM #4 Ultima modificación: Mayo 24, 2016, 04:58:43 AM por KarmaLP
A ver, si te he entendido bien, creo que no tienes muy claro lo que son las coordenadas globales (es decir en el mundo, lo que vienen siendo las coordenadas normales) y las coordenadas locales (que dependen de padres e hijos)
 
 
 
Si emparentas un objeto con otro, las coordenadas del hijo siempre serán relativas a las del padre, siendo su origen (0,0,0) el punto donde esté el padre colocado.
 
Te pongo un ejemplo:
 
tienes un objeto en 42.10,12  (objeto padre, pongamos el personaje, esto serían coordenadas globales) y le añades un objeto hijo (el arma), este estará en 0 0 0 (coordenadas locales), que significa eso? que si mueves el padre por ejemplo 10 unidades en el eje x se quedaría en 52,10,12, el hijo se moverá también , pero sus coordenadas serán 0,0,0, ya que son relativas al padre. Eso pasa también con la rotación y la escala. (al revés no pasa, si mueves al hijo el padre no se moverá)
 
 
 
Otro ejemplo:
 
Tienes el padre en 25,30,2 y le añades un hijo, este hijo lo colocas en 0,20,0 , si miramos las coordenadas globales el hijo estaría en 25,50,2, pero al ser un hijo de otro objeto se aplican las coordenadas locales, por eso está en 0,20,0.Movamos el padre donde lo movamos las coordenadas seguirán siendo las mismas, puesto que son relativas.
 
 
 
Aquí tienes una explicación sobre localposition (en inglés, sacado de la documentación oficial de unity)
 
 
 
http://docs.unity3d.com/ScriptReference/Transform-localPosition.html
 
 
 
Aun así lo de apuntar también lo puedes hacer usando una animación que haga el movimiento, con un trigger que al estar activado se mueva para apuntar y al desactivarse vuelva a la posición inicial.
 
Un saludo, espero haber resuelto tus dudas, aunque sé que soy bastante malo explicandome xD

Ah ya entiendo lo de las coordenadas, entonces dejame revisar el script porque me mueve el personaje y no se porque, gracias igualmente KarmaLP ademas lo de la animacion me dio una idea.

Etiquetas: