Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Uso de las físicas en mi juego (Newton+simple plataformas3D)

Iniciado por Oanime, 01 de Enero de 2008, 05:10:29 PM

« anterior - próximo »

Oanime

Hola,

Tengo unos problemillas a la hora de hacer moverse mi personaje como quiero usando newton. Mi juego es un plataformas 3D con jugabilidad 2D.

El caso, es que despues de leer bastante he sacado como conclusión que cuando introduces físicas en tú juego, no es buena idea tocar a mano las posiciones, etc... de digamos por ejemplo tu heroe, esto es, para no cargarse toda la simulación.

El caso, es que siguiendo ese patrón me es realmente imposible hacer cosas que antes hacia super sencillas como por ejemplo girar al persona 180 grados ( ya que debería de hacerlo con fuerzas de giro (torque), etc...), hacer uqe mi personaje ande decentemente sin que vaya cayendose cada metro como si fuera un bolo, etc... Entonces, me gustaría saber como la gente hace esto, si deja a los personajes fuera de la simulación, etc... ya que estoy un poco despesperado :).

Un saludo,
HexDump.

TiRSO

Cuando usas un motor de física, eso es lo que hay. Como dices, lo correcto es moverlo todo con el motor de físicas, por mantener la coherencia y por aprovechar las herramientas que este te proporciona. Es verdad que añade nuevas complicaciones, pero nadie dijo que fuera fácil...
Por otro lado, si el juego es sencillo, y consideras que no merece la pena el esfuerzo, tampoco pasa nada si programas algunos movimientos al estilo "tradicional". No se trata de hacer siempre las cosas de la forma "correcta"; se trata de que funcionen como tú quieras.

misscelan

Yo uso uso un objeto newton para los personajes. Éstos se deplazaran hacía donde se desplace el objeto, pero cuando quiero rotar el personaje no roto el objeto newton. Queda bastante bien.

En cuanto al tema de la estabilidad, mírate esta función NewtonConstraintCreateUpVector te sirve para mantener un objeto fijo sobre un eje.

Si tratas al personaje siguiendo completamente el tratamiento que hace Newton para los objetos normales, te quedará irreal e injugable.

Un saludo.

Oanime

Gracias por las respuestas,

misscelan, pues eso espero, que me des algunos consejos :).

El caso, por ejemplo en el tema del giro, es que yo uso ogrenewt (un wrapper pra usar los tipos de ogre, etc...). Yo engancho un nodo de ogre a un body de newton y para girar la malla he de rotar el body para permitir la coherencia. Por otra parte, al final y en vista d q no había forma de hacerlo de otra forma, lo que hago es llamar directametne a una funcion qeu hay llamada setPositionOrientation, con la posicion actual del rigid y la orientacion que yo quiero y ya esta, aunque esto como ya te digo rompe la coherencia de ese objecto en la simulacion, pero no me importa para el player.

Ahora por ejemplo tengo problemas de que el tio cuanod salta y me muevo a un lado anda por el aire (no cae hasta que no suelto la tecla de andar), se me tropieza con el suelo (rarisimo), osea voy andando y hay veces que se me para en las jutnas de los tiles y otras no :/.

No se si lo mejor va a ser mandar a tomar por saco a las físicas y directamente usar newton solo para colisiones, aunque es una pena.

Si pudieras tú que lo tienes hecho dar algunos consejos, problemas con lo que te encontrastes y como los resolviste, etc... te lo agradecería.

Un saludo,
HexDump.

misscelan

Para el personaje jugador utilizo una esfera, que es la que interactua con el mundo o con los otros objetos. A la hora de pintar el personaje, del objeto Newton sólo tengo en cuenta la posición, muchas veces la esfera se queda rotando si voy pegado a una pared pero como te digo para pintar el muñeco sólo tengo en cuenta la posición.

Para el tema de salvar obstáculos (pequeños bordes o escaleras) al crear el objeto como esfera te ayudará, pero lo mejor es que pongas la fricción del material a 0 o valores muy bajos de esta manera la esfera subirá obstáculos no muy grandes sin que te percates. Hay gente que en vez de jugar con la fricción lo que hace es lanzar un rayo en la dirección  del movimiento para detectar si hay colisión delante del personaje, si es así y no pasa de la altura máxima decicida por ti aplicarle una fuerza hacia arriba. Bajar la fricción puede provocar que por ejemplo si saltas sobre una plataforma móvil sea prácticamente imposible permanecer en ella, eso pasará si únicamente mueves el objeto a base de aplicar fuerzas Al principio lo hice así pero de esta manera el personaje se movía como si estuviese en una pista de patinaje. Así que lo que hago es jugar fijando fuerzas o velocidad según el momento para poder tener un control más preciso.

Respecto al salto, en el callback que usas para aplicar las fuerzas debes tener en cuenta siempre la gravedad acuérdate de aplicarla también cuando sólo quieras mover tu mñeco hacia los lados. Lo mejor es que tengas un vector que siempre tenga puesta la gravedad, añadas las fuerzas nuevas si pulsas algún botón y fijes ese vector como fuerza en el callback que mencioné antes.

Espero que te sirve de ayuda.

Un saludo.

Oanime

Claro que me sirve, y tanto. Ahora ya se por donde tirar, es que es algo dificil ver como hacer esto, o cual es el camino, si nunca has movido un personaje con físicas.

Gracias por al info, y no te digo que no te vuelva a dar la vara de nuevo sobre el tema ;).

Un saludo,
HexDump.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.