PDA

Ver la versión completa : Codigo sobre el movimiento del personaje



LTK666
27/09/2004, 14:05
if ((keys[SDLK_UP] || joyy < -10) && (jugador.y > 0)) {jugador.y=jugador.y-(5);}
if ((keys[SDLK_DOWN] || joyy > 10) && (jugador.y < 460)) {jugador.y=jugador.y+(5);}
if ((keys[SDLK_LEFT] || joyx < -10) && (jugador.x > 0)) {jugador.x=jugador.x-(5);}
if ((keys[SDLK_RIGHT] || joyx > 10) && (jugador.x < 620)) {jugador.x=jugador.x+(5);}


Con esta parte de codigo hago el el personaje principal se mueva izquierda, derecha arriba abajo...

Comopodria hacer que girase, es decir que rotase sobre si mismo a la izq y a la derecha?

kmkzk
27/09/2004, 14:44
Hola,
si no he entendido mal, lo que quieres es que el personaje gire sobre si mismo, en vez de avanzar,no?
Si es asi, podrias sustituir el codigo que hace que el personaje se mueva (por ej. jugador.y=jugador.y-(5); ), por otra linea que haya cambiar el sprite de personaje, segun la tecla que hayas pulsado.
Si quieres que el giro solo lo haga pulsando izquierda o derecha, tendrias que guardar la posicion de tu personaje en una variable (las posiciones podrian ser de 1 a 8), incrementar o decrementar esta variable, segun las teclas que pulses, y luego pintar el personaje en la posicion que le corresponde.
No se si lo que preguntabas era esto, pero bueno, si te sirve de ayuda bien y sino pues nada :p
Suerte!

un saludo

theNestruo
27/09/2004, 14:47
¿Estamos hablando de 2D o 3D? ¿Rotar sobre qué eje (es decir, rotar como la nave del "asteriod" o "darse la vuelta" como Mario Bros)? ¿Cuáles son los campos de la estructura jugador? No te vamos a poder ayudar con tan pocas pistas.

Por otra parte, te recomiendo que cambies

jugador.x = jugador.x + (5);
por esto otro:

jugador.x += 5;
(Y de forma similar en los otros casos).

LTK666
27/09/2004, 15:13
Muchas gracias a ambos siento la falta de pistas, lo que quiero es que gire como la nave del asteroids en 2D.

Pense que serai algo mas sencillo como

jugador.x = jugador.x + girar(5º);

o algo asi,

Licantropo
27/09/2004, 15:18
no se si sera parecido, pero en fenix en fenix seria facil de hacer, en fenix a parte de x e y, hay tambien una varible que se llama angle. Con modificar es variable se gira el sprite. Y para avanzar en lugar de x=x+5 (o lo que sea), se puede usar advance(5), que lo que hace es avanzar el sprite en linea recta segun el angulo que tenga. Supongo que en este leguaje (que es sdl o como se llame, no??) habra algo parecido.
No se si te servira, pero por lo menos lo he intentao.
Ta luego.

LTK666
27/09/2004, 15:37
gracias Licantropo esa es la funcion que trato de usar en SDL, haberla seguro que la hay, seria similar a la usadapor Locke en Paper Plane

Licantropo
27/09/2004, 15:41
si te sirve de algo, habia unos ejemplos en fenix, en un hilo llamodo empezar con fenix (creo), que iban de una navecita que dando a izquierda y derecha la girabas y pulsando un boton la movias. (Ademas los ejemplos estan mazo bien comentaos).
De nada, estamos pa ayudarnos. Hoy necesitas tu ayuda, quiza yo mañana, asi que si nos ayudamos mutuamente pos mejor :cool: . Ta luego, y suerte con tu jueguecillo.

LTK666
27/09/2004, 16:18
Gracais de nuevo Licantropo, el caso es que ya he mirado como ca la funcion en Fenix gracias a ese ejemplo que comentas pero no puedo usarla en SDL.