Ir al contenido

publicidad

Foto

Necesito ayudita con el XNA


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
13 respuestas en este tema

#1

Escrito 27 julio 2009 - 19:01

A ver, es un problema de coordenadas, porque el raton se sale de la ventana del juego y cuando muevo la ventana las coordenadas varian.

A ver, es una cosa rara, porque yo quiero que la coordenada 0,0 empieze desde la esquina superior izquierda de la ventana, no de donde le da la gana.

Alguien sabe si hay algun comando o algo para evitar que salga el raton de la ventana y solucionar los problemas de coordenadas?

#2

Escrito 27 julio 2009 - 19:48

No entiendo muy bien el problema que tienes.
¿Cuando mueves la camara ls coordenadas se vuelven raras?

Supongo que lo de obtener la posicion lo tendras asi:

MouseState ms = Mouse.GetState();
this.mousePosition = new Vector2(ms.X, ms.Y);

creo que el problema puede ser que quieres obtener la posicion relativa a lo que estas viendo en ese momento en la pantalla, pero xna devuelve la posicion absoluta, con lo que si desplazas la camara 500 a la derecha, ahora la esquina superior izquierda no es (0,0),. sino (500, 0)

Si el problema no es eso, explica un poco mas a ver si entiendo tu problema mejor

Un saludo

#3

Escrito 27 julio 2009 - 20:01

No entiendo muy bien el problema que tienes.
¿Cuando mueves la camara ls coordenadas se vuelven raras?

Supongo que lo de obtener la posicion lo tendras asi:

MouseState ms = Mouse.GetState();
this.mousePosition = new Vector2(ms.X, ms.Y);

creo que el problema puede ser que quieres obtener la posicion relativa a lo que estas viendo en ese momento en la pantalla, pero xna devuelve la posicion absoluta, con lo que si desplazas la camara 500 a la derecha, ahora la esquina superior izquierda no es (0,0),. sino (500, 0)

Si el problema no es eso, explica un poco mas a ver si entiendo tu problema mejor

Un saludo



Si, hago un menu con el raton, miro las opciones del menu sus coordenadas, que son por ejemplo 300, 250. Pues cuando muevo la ventana ya la cosa se va al traste porque las coordenadas del elemento del menu han cambiado, ya no es 300,250 sino que puede ser por ejemplo 400, 130.

  • Ellolo17

  • Heraldo de la Muerte

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#4

Escrito 27 julio 2009 - 21:10

Pues guarda en una variable las coordenadas originales y luego comparalas con la posicion actual de la ventana para ver donde estarian ahora los botones y calcularlo ;)

No sabria decir mas que esa teoria aunque... al ser en XNA no se pueden usar controles de windows? algun form o algo de eso? -repito que XNA no he tocado...-

Un saludo.

#5

Escrito 27 julio 2009 - 22:13

Pues guarda en una variable las coordenadas originales y luego comparalas con la posicion actual de la ventana para ver donde estarian ahora los botones y calcularlo ;)

No sabria decir mas que esa teoria aunque... al ser en XNA no se pueden usar controles de windows? algun form o algo de eso? -repito que XNA no he tocado...-

Un saludo.


no lo se, supongo que si, pero es una cosa rara, creo que habia una funcion que evitaba que pasara eso pero no lo se

#6

Escrito 27 julio 2009 - 22:53

si el problema te da en los menus..... utiliza gameStates, te sera mas facil (si es que no los usas ya)
Mirate este manual a ver si te ayuda: http://creators.xna....statemanagement


Si no es eso.... no te puedo ayudar. Yo soy mas de programar para PAD que para mouse.
Un saludo

#7

Escrito 28 julio 2009 - 01:11

si el problema te da en los menus..... utiliza gameStates, te sera mas facil (si es que no los usas ya)
Mirate este manual a ver si te ayuda: http://creators.xna....statemanagement


Si no es eso.... no te puedo ayudar. Yo soy mas de programar para PAD que para mouse.
Un saludo


El problema no es en menus, sino en la totalidad del juego. Sin unas coordenadas que sean las correctas todo mi juego puede irse al garete

  • The_Hans

  • TERRESTRIS VERITAS

  • vida restante: 100%
  • Registrado: 27 ene 2004
  • Mensajes: 7.490
#8

Escrito 28 julio 2009 - 08:30

Lo que dices es muy raro, porque precísamente con XNA no hay ningún problema. Lees el mouseState y luego lees las coordenadas X e Y. Estas coordenadas son siempre relativas a la posición de la ventana de renderizado pero absolutas respecto a la ventana en sí y van desde (0,0) hasta (x,y), donde x e y son los valores máximos de la resolución elegida (por ejemplo 1280x720).

[code:1]private MouseState mouseState; // defines la variable para capturar el mouseState actual

mouseState = Mouse.GetState(); // lo capturas

Console.WriteLine(mouseState.X.ToString()); // escribes la coordenada X por pantalla
Console.WriteLine(mouseState.Y.ToString()); // escribes la coordenada Y por pantalla[/code]


La verdad, no entiendo tu problema. ¿Qué intentas hacer exactamente? ¿Qué versión de XNA?

#9

Escrito 28 julio 2009 - 21:59

Lo que dices es muy raro, porque precísamente con XNA no hay ningún problema. Lees el mouseState y luego lees las coordenadas X e Y. Estas coordenadas son siempre relativas a la posición de la ventana de renderizado pero absolutas respecto a la ventana en sí y van desde (0,0) hasta (x,y), donde x e y son los valores máximos de la resolución elegida (por ejemplo 1280x720).

[code:1]private MouseState mouseState; // defines la variable para capturar el mouseState actual

mouseState = Mouse.GetState(); // lo capturas

Console.WriteLine(mouseState.X.ToString()); // escribes la coordenada X por pantalla
Console.WriteLine(mouseState.Y.ToString()); // escribes la coordenada Y por pantalla[/code]


La verdad, no entiendo tu problema. ¿Qué intentas hacer exactamente? ¿Qué versión de XNA?


Mejor será que te lo enseñe con imágenes. Los números negros en la esquina inferior derecha son las coordenadas, separadas por una coma.

Imagen Enviada

En esta imagen se muestra cuando el puntero de mi raton está en la esquina inferior derecha de la pantalla. No de la ventana del juego, sino de la pantalla. El juego esta programado en 1024x768, sin embargo, la pantalla esta a una resolucion de 1440x900.

Imagen Enviada

Aqui es cuando el puntero del ratón esta en la esquina superior izquierda, es raro que haya coordenadas negativas.

Y bueno, ese es el problema que me pasa. Me he explicado mal, espero que con las imagenes podais saber mi problema con exactitud

#10

Escrito 29 julio 2009 - 02:32

Antes creia que entendia lo que decias, con las imagenes veo que no. No veo el problema, te dice las coordenadas con el origen en tu ventana, por eso en la esquina superior izquierda son negativas.

#11

Escrito 29 julio 2009 - 04:40

Antes creia que entendia lo que decias, con las imagenes veo que no. No veo el problema, te dice las coordenadas con el origen en tu ventana, por eso en la esquina superior izquierda son negativas.


Te daria la razon si no fuera porque la posicion 0,0 no es la esquina superior izquierda de la ventana, sino que sale fuera de la ventana (cuando la ventana esta centrada, evidentemente si muevo la ventana en la esquina superior izquierda la 0,0 estara dentro de la ventana).

Si no lo veis claro mañana os mostrare imagenes con el escritorio completo para que veais que problema hay

  • The_Hans

  • TERRESTRIS VERITAS

  • vida restante: 100%
  • Registrado: 27 ene 2004
  • Mensajes: 7.490
#12

Escrito 29 julio 2009 - 08:30

¿Pero qué funciones estás usando para mostrar el valor de X e Y por pantalla? Pon el código :P

#13

Escrito 29 julio 2009 - 19:04

¿Pero qué funciones estás usando para mostrar el valor de X e Y por pantalla? Pon el código :P


Aqui lo tienes, y si, esta bien, lo se, porque justo cuando el raton esta en ciertas coordenadas me cambia de color la opcion de menu.

[code:1]public void drawpos(SpriteBatch spb, int x, int y)
{
spb.Begin();
spb.DrawString(sfn, x.ToString() + "," + y.ToString(), new Vector2(700, 700), Color.Black);
spb.End();
}[/code]

donde [/code] x es el mousestate.x y el y es el mousestate.y

  • Ellolo17

  • Heraldo de la Muerte

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#14

Escrito 29 julio 2009 - 19:57

En vez de pasar como parametros la posicion del raton prueba a llamar a esa funcion -mousestate.x- dentro de drawpos, a mi funcionó en un problema que tambien me daba el ratón en el City Destruction que hice ;)

Un saludo.


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad