UTNianos

Versión completa: Física de vuelo.
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Bueno, vuelvo a molestar por aca...
Empece con unity y estoy intentando hacer la fisica de algo que vuela, estoy intentando con Addforce el problema de esto es que..
imaginen un avión cuando yo le doy propulsión este sube la tompa, en realidad tiende a quedar horizontal y cuando no tiene propulsión la trompa baja
logro que el objeto "vuele" y se mueva para adelante el problema es este, controlar la rotación digamos, por que quiero lograr que al subir mucho la tompa pierda aceleración y si la bajo gano aceleración...

A alguien se le ocurre algo? Aunque sea una puntita para que investigue
(intente con con torque y esta bueno para controlarlo si quiero subir o bajar la trompa pero no le encuentro la vuelta a que lo haga con la propulsión y gane o pierda aceleración)
Un par de cosas mas que nada de razonamiento cuando un avion o cohete vuela si uno aumenta su impulso este se va a mover de forma tangencial a la trayectoria, sin embargo cuando desaceleras el avion o cohete tiende a rotar hacia su centro de masa.

Para que se vea mas bonito, en el caso de un avion con una helice en su trompa este se va a volcar naturalmente hacia el frente, en cambio en un cohete como su centro de masa esta en la cola lo que ocurre aqui es lo contrario. Esto es asi si uno no controla la direccion, es decir, si uno no puede subir o bajar la trompa ahi funciona totalmente distinto.

Si queres ver como funciona esto busca por internet existe un juego bastante copado se llama "Kerbal Space Program", graficamente es bastante malo para lo que existe hoy por hoy, pero es un excelente simulador de vuelo en donde podes armar cohetes y aviones, lo genial de este juego es que tiene en cuenta el centro de masa del vehiculo que armes.





Todo esto es muy bonito siempre y cuando Unity acepte el concepto de centro de masa, sino no te sirve esto vas a tener que armar algun modulo que se encargue de esto.
Claro yo me habia planteado algo parecido, le puse el punto "pivote" que en realidad es el centro de masa del objeto en la parte de atrás que es donde tiene la propulsión el tema es que cuando le aplico una fuerza con el meto addforce de unity se lo aplica al objeto completo y por alguna razón este no cambia su angulo, intente con un método que se llama addforceatposition pero este depende de la posicion "global" de el objeto en mi espacio 2D.
Luego intente con el addforce y el torque para asi cuando acelera darle un torque para arriba y cuando desacelera un torque para abajo, el problema con esto es que como es un rigidbody y toma las leyes de la fisica este queda girando por que no tiene nada que lo detenga, lo que me extraña es que estando bajo las leyes de la física por ser un rigid body no tome el angulo solo al darle una aceleración.

Para resumir: entendi la fisica el problema es llevarla a unity, que en realidad mi objeto ya esta bajo las leyes de la fisica, debe haber algún método para aplicar aceleración.

aca se ve masomenos lo que quiero lograr.

http://www.minijuegos.com/juego/flight
Me parece que esta bien el metodo addForce no te modifique el ángulo ya que le estas aplicando una fuerza de empuje, es decir que lo que hace, addForce es continuar con el ángulo justo un instante antes de aplicar el empuje o por lo menos deberia hacer eso. Lo que deberias hacer es crear un nuevo metodo que cuando esta en caida libre el objeto vaya modificando gradualmente el ángulo y después otro metodo que te permita modificar el ángulo(algo asi como un timon) antes de aplicar el empuje.

Otra forma de hacerlo es crear un nuevo metodo que aplique un aumento de ángulo mientras aplicas el empuje.
No es mala la idea, pero imagino que debe haber una forma de setear el centro de masa y dejarlo que gire con respecto a este.
Algo asi como el Hinge Joint (te clava el objeto en un punto y lo deja girar con respecto a ese)
si no queda otra me voy a poner a codear y fue Confused
el tema de codearlo es la parte en donde dependiendo del angulo que tomes la aceleración sube o baja.
Fechhe, ¿te falta mucho para poder cursar Técnicas de Gráficos por Computadora?

Suscribite a la lista y ponete a bombardearlos por ahí, que vas a conseguir ejércitos de locos que les encanta toda la movida esta =)
(17-07-2014 18:58)Fechhe escribió: [ -> ]No es mala la idea, pero imagino que debe haber una forma de setear el centro de masa y dejarlo que gire con respecto a este.
Algo asi como el Hinge Joint (te clava el objeto en un punto y lo deja girar con respecto a ese)
si no queda otra me voy a poner a codear y fue Confused
el tema de codearlo es la parte en donde dependiendo del angulo que tomes la aceleración sube o baja.
Me temo que si vas a tener que codear algo porque Unity es un kit de desarrollo pero no te la servida en bandeja. Igual todo esto que estamos hablando lo dan en Técnicas de Gráficos por Computadora, obviamente pasado primero por paradigmas.
Jajaja lamentablemente me falta muchísimo ya empece a codear y se me ocurrió calcular el arrastre dependiendo del angulo de ataque de la trompa.

(Estoy en primer año, los conocimientos de programación y demás los tengo por que soy técnico en computación no por la tecnológica todavía.)

Después les cuento como me fue codeando esto. Tengo para varios cafes...
Jajajajaja dale suerte!!!
Listo!! No fue tan tortuoso como esperaba.
Ya funciona (sin manejar la trompa) osea solo cambia el angulo de ataque de la rompa con la gravedad y la propulsión.
Después para una mejora voy a hacer que se pueda "manejar".

Gracias por la ayuda.wave
URLs de referencia