elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  pseudo codigo - motor fisico
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: pseudo codigo - motor fisico  (Leído 2,061 veces)
EvilGoblin


Desconectado Desconectado

Mensajes: 2.323


YO NO LA VOTE!


Ver Perfil
pseudo codigo - motor fisico
« en: 19 Agosto 2010, 17:18 pm »

Estoy "Programando" un juego, y mi intencion es desplazar un auto con un motor fisico. ya hice los graficos y los tengo cargados en pantalla.

Estoy utilizando SDL.

Logre la aceleracion "deseada" para un movimiento en linea recta.

me muevo por pixeles (usando los direccionales del teclado)

                                x
     |¯¯¯¯¯¯¯¯¯¯¯¯¯
     |      _
     |     | | <- auto
     |     | |
     |      ¯
     |
Y   |



x,y. son las coordenadas que utilizo para distinguir sobre que pixel se comienza a dibujar el auto.

el auto empieza a dibujarse sobre la esquina izquierda, superior.

mi desplazamiento lo hago progresivo 1,2,3,5,7,9,11,12.......(12 pixeles cada 100 ms)

frenar ... freno de -2 pixeles cada 100 ms
...

ahora el problema me radica a la hora de doblar.

Yo quiero lograr el efecto asi:
utilizo una variable llamada angulo iniciada en 45


Al estar detenido y presionar izquierda este va disminuyendo hasta 0..

al presionar derecha va aumentando hasta 90..

que al acelerar... se calcule la direccion en la que esta y se rote el vehiculo y se desplaze a la posicion .
(creo que tengo que usar alguna funcion de MRUV)

al estar desplazandose y presionar IZQ o DERE, y aumentar o disminuir angulo. se recalcule el trayecto...


Para esto lo logro con


switch(keys) {

case(LEFT):
   auto01.doblar(LEFT);
case(RIGHT):
   auto01.doblar(RIGHT);
case(UP)
   auto01.acelerar();
case(DOWN)
   auto01.frenar();
}

clase CSprite(auto01)
Código:
class CSprite {
private:
int pos_x, pos_y;
int direccion;
int velocidad;
int comienzo;
int aux_v;
int aux_d;
int aux_v2;
int angulo;

public:
SDL_Surface *original;
SDL_Surface *movimiento;
SDL_Rect roriginal;
SDL_Rect rmovimiento;
int get_x(){ return pos_x; };
int get_y(){ return pos_y; };
int acelerar();
int frenar();
int doblar(int nn);
int draw(SDL_Surface *screen);
int cargar(char *path);
int borrar();
int posicionar(int xx, int yy);
int calcular();
int desplazo();

};

...aun asi mi fisica es mala xD.. el auto queda girando sin ser acelerado..

y se va DemaSiado para los costados.




..........
Perdon por la extensa explicacion.. pero era para guiar un poco en lo que estoy parado..


Me gustaria que me guiaran con pseudo codigo la fisica de un auto en 2D visto desde arriba... como lograria el efecto de acelerado, frendo, doblado.

Muchas Gracias!


En línea

Experimental Serial Lain [Linux User]
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: pseudo codigo - motor fisico
« Respuesta #1 en: 19 Agosto 2010, 20:36 pm »

Hay mucho que tomar en cuenta en juegos de autos, desde la fricción de las ruedas hasta la centrifuga en el giro, pero vamos que primero sencillo y luego le vas agregando variables.

Con respecto al giro, porque no lo dejas en 0 y luego cambias a positivo o negativo el ángulo ?? pero bueno, no importa xD

Podrías publicar el código de aceleración y el de los giros?

Saludos!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Aporte]Ver Código Fuente y la web simulaneamente con una URL (Pseudo-Protocolo)
Desarrollo Web
@XSStringManolo 0 1,705 Último mensaje 29 Octubre 2019, 21:17 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines