Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Munguia en Octubre 30, 2010, 07:02:47 AM

Título: view_angle(view_yview+0)
Publicado por: Munguia en Octubre 30, 2010, 07:02:47 AM
quiero dibujar con draw en los events en un room rotable, puedo mover el escenario con teclas derecha o izquierda, pero ciertos datos como las vidas giran tambi?n, quiero que se queden fijas en la pantalla

view_angle(view_yview+0)
view_angle(view_xview+0)

algo que se parezca a eso pero que funcione, pues necesito mantener el angulo y la vista en un lugar espec?fico de la pantalla

Gracias
Título: Re: view_angle(view_yview+0)
Publicado por: Hackware en Octubre 30, 2010, 08:39:15 AM
Aqu? te env?o un ejemplo. El truco est? en dibujar lo que deseas mantener quieto en pantalla lo bastante lejos de la view giratoria como para que no pueda ser visto desde ning?n ?ngulo; luego usando otra vista redibujas los objetos quietos dentro de la pantalla.

El inconveniente con este m?todo (y en realidad no conozco otro) es que cualquier cosa que dibujes desde afuera con la segunda view no podr? ser separado del color de fondo de la room. Lo ?nico que puedes hacer en este caso es disimular el color de fondo cubri?ndolo con alg?n fondito del tama?o del recuadro.

?Saludos!
Título: Re: view_angle(view_yview+0)
Publicado por: Killer en Octubre 30, 2010, 09:04:58 AM
Tambien puedes dibujar lo que quieras dandole una posicion relativa y cambiando su angulo para contrarrestar el angulo de la view, por ejemplo:

[gml]/*
argument0= sprite
argument1= subimagen
argument2= x relativa a la view
argument3= y relativa a la view
*/
var Dis,Dir,Xx,Yy;

Dis = point_distance(argument2,argument3,view_wview/2,view_hview/2);
Dir = point_direction(argument2,argument3,view_wview/2,view_hview/2);
Xx = view_wview/2 - lengthdir_x(Dis,Dir-view_angle);
Yy = view_hview/2 - lengthdir_y(Dis,Dir-view_angle);
draw_sprite_ext(argument0,argument1,Xx,Yy,1,1,-view_angle,c_white,1);[/gml]

Con este codigo puedes dibujar sprites que no rotan con la view. Puede usarse uno similar con textos.
Título: Re: view_angle(view_yview+0)
Publicado por: Hackware en Octubre 30, 2010, 09:34:00 AM
Prob? el script de Killer. A pesar de que se puede notar una peque?a distorci?n provocada por la frecuencia del monitor y de que view_xview y view_yview deben fijarse en 0 el resultado es satisfactorio. Con este m?todo no tienes que preocuparpe por renunciar a las transparencias, si es que las necesitas.
Título: Re: view_angle(view_yview+0)
Publicado por: Killer en Octubre 30, 2010, 09:40:46 AM
Si, en mi script original creo que usaba un argumento para seleccionar con cual view funcionaba el script, pero se perdio junto con mi viejo disco duro, este fue algo que arme rapido tratando de recordar como lo habia hecho, y como me es costumbre me salte un par de detalles.

En todo caso, Munguia, si tienes algun problema adaptandolo a texto no dudes en preguntar.
Título: Re: view_angle(view_yview+0)
Publicado por: Munguia en Noviembre 19, 2010, 06:48:08 AM
Gracias Killer y Hackware

la verdad es que no me queda claro ninguno de los ejemplos, les adjunto la forma en que lo estoy haciendo ya que difiere mucho de lo que me proponen, no estoy usando ning?n c?digo, chequen,
necesito ayuda para corregirlo

gracias
Título: Re: view_angle(view_yview+0)
Publicado por: Hackware en Noviembre 19, 2010, 09:39:03 AM
Estuve haciendo pruebas con el script de Killer y pude lograr que sprites y texto pudieran mostrarse de la forma que deseas, sin embargo la barra de vida y el contador de vidas con sprites quedaron exclu?dos porque el m?todo que utilice requiere funciones con un argumento que ajuste el ?ngulo como draw_sprite_ext() y draw_text_transformed().

Lo que puedes es dibujar el HUD completo sobre una surface que luego dibujar?s en pantalla con la funci?n draw_surface_ext(), de ese modo podr?s aplicar ajuste de ?ngulo a todo lo que hayas dibujado sobre ella. Prefer? no hacerte un ejemplo de esto porque me pareci? muy raro que hubieras utilizado D&D para tu ejemplo, porque desconozco si tienes la versi?n Pro (requerida para usar surfaces) y porque conf?o es que sabr?s hacerlo t? mismo despu?s de hayas examinado el ejemplo que te dejo a continuaci?n.

?Saludos! 8)