PDA

Ver la versión completa : ¿Coordenadas en pantalla, coordenadas en mundo?



Licantropo
07/01/2005, 23:44
Tengo otro problema. Al final he conseguio hacer un mapa de tiles, me ha quedao decente, he conseguido simular un scrool (al hacer lo del mapa de tiles no se puede usar scrooll ¿o si?. Si es que si agradeceria que me dijerais como, porque solucionaria la pregunta que voy a hacer ahora).
El tema es que tengo un personaje principal con sus coordenadas por el mundo y sus coordenadas en pantalla. Y luego tengo personajes secundarios con sus coordenadas porl el mundo. Como paso estas coordenadas a coordenadas en pantalla.

Yo he hecho algo asi:

[CODE]

//Se forman varias regiones en la pantalla debido a la simulacion del scroll:
//Las cuatro esquinas: si el protra entra en ellas los objetos de dentro permanecen igual (no se les aplica scroll)
If(xp<128||xp>anchura*32-160)
If(yp<96||yp>altura*32-120)

;
Else
//Las regiones de de los laterales que quedan entre las esquinas
//Se le aplica scroll solo a su componente y
y=ypc-yp+96;
End
Else
//La parte de arriba y de abajo que queda entre las esquinas
//Se aplica solo scroll a la x
If(yp<96||yp>altura*32-96)
x=xpc-xp+128;
Else
//Y por ultimo toda la parte del centro se le aplica scroll a todo.
y=ypc-yp+96;
x=xpc-xp+128;
End
End

[CODE]

ypc,xpc=cordenadas de personaje secundario
yp,xp=coordenadas de protagonista
x,y=coordenadas de pantalla del personajes secundario

Pues todo eso me va bien, el problema esta al mover el personaje secundario.
El problema esta cuando el protagonista entra en una de las zonas de las esquinas o en la zona superior e inferior que queda entre las esquinas. En el resto iba mas o menos bien. Lo que pasa al entrar en esas zonas es que el personaje secundario se queda parao, se porque es: porque no se actualiza sus coordenadas en pantalla. Pero no se me ocurre como hacerlo.

¿Me podeis ayudar? Muchas gracias, hasta luego.

fosfy45
07/01/2005, 23:47
:sobando: .

Licantropo
07/01/2005, 23:50
Bueno ya que estoy otra pregunta mas sencilla:

tengo declarado mapa[10][10]

y me gustaria hacer algo de la forma mapa[0]=[1,0,1,3,1,1,4,1,1,1] (con los numeritos que quiera)

¿hay alguna forma de hacerlo?
¿o tengo que poner mapa[0][0]=1; ... mapa[0][10]=1;?

Gracias de Nuevo.

Locke
07/01/2005, 23:55
Si tienes las coordenadas del mundo de los personajes segundarios, lo unico que tienes que hacer es crear una variable que te almacene la posicion del lado izquierdo de la pantalla en el mundo.

Es decir, tu tienes una variable cord_scr que comienza siendo 0. Cada vez que haces scroll un pixel a la derecha la incrementas, y si es hacia la izquierda la decrementas. Asi, solo tendras que restar esta variable a la coordenada x del personaje secundario para saber su coordenada en la pantalla. Si el resultado de esta resta es >=0 y <320 entonces es que tienes que pintarlo. En cualquier otro caso no hace falta porque esta fuera de la pantalla.

Espero que te haya quedado claro, y espero tb que fuera esto lo que preguntabas, que no las tengo todas conmigo xD

EDIT:

Respecto a la segunda pregunta, si estas programando en C haz esto en la declaracion:

variable[10][10]={ {0,1,2,3,4,5,6,7,8,9}, {0,1...}, ... }

Si es fenix no se si es igual o diferente. Prueba :)

Licantropo
08/01/2005, 15:52
Muchas gracias, he hecho mas o menos lo que me has dicho y ya he conseguio que vaya decentemente.

En cuanto a lo de la matriz se pone como dices pero en lugar de {} se ponen().
Pero solo se puede hacer asi al declararlo, en el resto de programa no. Pero bueno algo es algo.

Gracias de nuevo.