Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Haddd Y Newton

Iniciado por , 05 de Marzo de 2006, 08:37:29 AM

« anterior - próximo »

 supongo que ya hablareis de ello cuando saqueis el tuto de las animaciones md5, pero... ¿como controlais el moviemento de un jugador(protagonista) ?

Es decir, vosotros utilizais newton , bien. He visto los tutos que vienen en el sdk de newton y son muy malos. (tuto 7 por ejemplo) Para desplazar a un jugador le aplica una fuerza , pero calcula en cada frame el valor de esa fuerza, como el frame rate es imposible que sea siempre el mismo , la velocidad del jugador no es constante , ni los saltos son tampoco constantes, ni miden lo mismo, vamos que no le veo yo futuro a hacer un juego donde no controles absolutamente este tema

¿Como pensais hacerlo vosotros ?¿hay una alternativa o una manera mejor de hacer eso con newton?

Haddd

 Si has visto el tutorial de collision del motor, puedes hacerte una idea. Utilizaremos las rutinas de colisión de Newton. Realmente un ser humano no es controlable por Impulses. He visto cosas hechas con Newon que se acercan, pero que va, es injugable. Quizás es que no sepamos más, pero el movim9iento de los personajes será una animación y la colisión con el mundo la gestionará el programa igual que como se hace en el tutorial de colision.

 Si, precisamente me refiero a eeso, al "desplazamiento". Osea que el usuario pulse la tecla "up arrow" o la "w" y el personaje desplace su posicion espacial en si hacia adelante. Como bien dices los impulses no los veo yo una buena solucion ,

Mas o menos , lo que yo busco es poder controlar el desplazamiento de forma constante. Es decir, si la animacion de andar, dura 15 frames a tantos frames por segundo , pues que se desplace siempre hacia adelante la misma cantidad de metros hasta que termine la animacion.

Con otros motores he intentado hacer el desplazamiento "espacial" con impulsos, pero era muy dificil conseguirlo

Por eso queria saber como lo tenias pensado hacer. Pero no la animacion, sino lo que es el desplazacimineto,

Lo siento, no se si me explico bien  :P  

Haddd

 Bueno, la animación no dura frames, dura tiempo, o al menos así lo controlamos nosotros. Entonces, dependiendo del tiempo en el que estés, muestras la animación interpolada. Que recorra 10m o 20m en 15s, implica también que la animación esté pensada así, si no, se acelerará o ralentizará.

Para controlar el tiempo, utilizamos el método Haddd.AtXSeconds, para asegurarte de que se desplaza tantos metros en tanto tiempo...

No se si era esa la pregunta....

 pero si teneis un personaje en X=10,Y=10,Z=10, y teneis que moverlo  en la direccion del eje X , 10 unidades mas en cada frame , ejemplo , frame 1=> X=20 , frame 2=>X=30 , etc
¿Como haceis el desplazamiento ?

Ejemplos :

A)
cogeis el personaje y haceis
posicion=personaje->GetPosition
posicion+=10;
personaje->setPosition(posicion)

B)
a base de impulsos con newton
personaje->AddNewtonForce( direccion/timestep)

C)
... cualquier otra forma....

Si utilizas la formula "A" podrias acabar atravesando una pared , ya que la simulacion de colisiones no detectaria colision porque cambias directamente la posicion del personaje
Si utilizas la formula "B" como depende del timestep y es imposible que sea cte en todos los momentos del juego .... no se puede garantizar un avance constante ...

Entoncess... que forma utilizareis en haddd para mover personajes, de forma exacta y constante y ademas utilizar el sistema de colisiones de newton?

Es que el tuto 7 de las sdk de newton.... la verdad, como tu dices en tu primer post.... no es muy bueno

Haddd

 Mira nuestro tutorial de World Collision.

Básicamente se traza un rayo de la posición anterior a la nueva, y se comprueba si hay colisión. Si la hay, se asume el punto de colisión como nueva posición. También se puede hacer el plane slicing, que mostramos en nuestro tutorial.

 Oscuas pedrin , pues es verdad , es un ejemplo erfeco. Gracias por la contestacion haddd






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.