Mover un coche viendolo desde arriba

Started by scuws, June 26, 2010, 09:23:01 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

scuws

Probablemente sea una tonteria pero a mí que estoy empezando me ha costado un dolor de cabeza y puede que alguien que este empezando le sirva, también lo pongo por si es mejorable( lo más probable ).


PROCESS coche ( )
PRIVATE

float speed;

END
BEGIN
file = fpgs [ 0 ];
graph = 1;
x = 200;
y = 200;
LOOP
IF ( speed < 0 || speed > 0 )
IF ( KEY ( _RIGHT ) )
angle += -speed*500;
ELSEIF ( KEY ( _LEFT ) )
angle += speed*500;
END
END
IF ( KEY ( _UP ) )
IF ( speed < 10 )
speed += 0.5;
END
ELSE
IF ( speed > 0 )
speed -= 0.25;
END
END
advance_c ( speed );
FRAME;
END
END

FUNCTION advance_c ( float speed )

BEGIN
father.x += ( speed*sin(father.angle) );
father.y += ( speed*cos(father.angle) );
END


Aquí os pongo la imagen que he usado.

SplinterGU

#1
para hacer eso existe la funcion advance

advance( incremento ), tiene en cuenta angulo, x e y (resolution tambien si corresponde).

el codigo quedaria:


PROCESS coche ( )
PRIVATE

float speed;

END
BEGIN
file = fpgs [ 0 ];
graph = 1;

        resolution = 100;
x = 200 * resolution;
y = 200 * resolution;

LOOP
IF ( speed < 0 || speed > 0 )
IF ( KEY ( _RIGHT ) )
angle += -speed*500;
ELSEIF ( KEY ( _LEFT ) )
angle += speed*500;
END
END
IF ( KEY ( _UP ) )
IF ( speed < 10 )
speed += 0.5*resolution;
END
ELSE
IF ( speed > 0 )
speed -= 0.25*resolution;
END
END
advance( speed );
FRAME;
END
END


podes cambiar los "*resolution" por el valor ya multiplicado.

saludos.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

laghengar

Inventé un sistema por el que bennu giraba el mapa por el que circula, junto con los objetos que estén en este mapa, lo hice hace mucho tiempo pero si te interesa iré recopilando información.
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Prg

el método de splinter es el mejor, pero incluso (cuando el speed>1), puedes usar get_distx y get_disy

sería así:

[code language="bennu"]PROCESS coche ( )
PRIVATE

   float speed;
   
END
BEGIN
   file = fpgs [ 0 ];
   graph = 1;

   LOOP
      IF ( speed < 0 || speed > 0 )
         IF ( KEY ( _RIGHT ) )
            angle += -speed*500;
         ELSEIF ( KEY ( _LEFT ) )
            angle += speed*500;
         END
      END
      IF ( KEY ( _UP ) )
         IF ( speed < 10 )
            speed += 0.5*resolution;
         END
      ELSE
         IF ( speed > 0 )
            speed -= 0.25*resolution;
         END
      END
      x+=get_distx(angle, speed);
                y+=get_disty(angle, speed);
      FRAME;
   END
END[/code]
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)