Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - FridaFlowers

16
Preguntas y respuestas / Re:camara
Enero 16, 2019, 04:09:21 AM
En las propiedades del Room, en la seccion de views, en la parte mas baja, justo donde te deja asignar el tamaño de la camara, también se puede establecer la velocidad de ésta.

(object following)
Si es "-1", por defecto, entonces el seguimiento de la cámara será instantáneo. En caso contrario irá mas lento o rápido depeniendo del valor que le asignes, siempre teniendo en cuenta la velocidad del objeto al cual persigue.

Puedes ir probando con valores pequeños, 1, 2, e ir ajustandolo según convenga.
19
Para recortar la estrella puedes usar surfaces y bm_subtract, primero dibujas la parte que no quieres que se borre, luego el sprite que quieres recortar:
[gml]
sup = surface_create(64,64)

surface_set_target(sup)

draw_sprite(spr_redondela, 0, 0,0) //dibujas el circulo
draw_set_blend_mode_ext(bm_dest_alpha, bm_subtract)
draw_sprite(spr_estrella, 0, 0,0) //dibujas la estrella
draw_set_blend_mode(bm_normal);

surface_reset_target();
[/gml]
Este codigo te daría la estrella sin puntas, recortada donde cabe el circulo.
Luego deberías, si quieres, usar otra surface para juntar el circulo y la estrella sin puntas para obtener una sola imagen:
[gml]
sup2 = surface_create(64,64)

surface_set_target(sup2)
draw_sprite(spr_redondela, 0, 0,0) //dibujas el circulo debajo
draw_surface(sup, 0,0) //dibujas la estrella sin puntas
surface_reset_target();
[/gml]
Eso te daría la imagen final en una surface.

No te olvides de eliminarlas para que no ocupen memoria!  :)
20

Nombre del creador: Frida Flowers
Breve descripción de su función te permite dibujar un anillo, o un ciruclo hueco
  Versión GM utilizada Game Maker Studio 1.4.99999
Argumentos:
radio_in : radio del circulo interior
radio_ex: radio del borde exterior
x : coordenada x donde va a dibujarse
y . coordenada y donde va a dibujarse la figura
col = color con el que va a pintarse la figura

[gml]
///scr_dibujar_dona(radio_in, radio_ex, x, y, col)
var rin = argument[0]
var rex = argument[1]
var xx = argument[2]
var yy = argument[3]
var color = argument[4]

var sup = surface_create(rex*2, rex*2)

surface_set_target(sup)
var cy = floor(surface_get_height(sup)/2)
var cx = floor(surface_get_height(sup)/2)
draw_circle_colour(cx, cy, rex, color, color, false)
draw_set_blend_mode(bm_subtract)
draw_circle_colour(cx, cy, rin, color, color, false)
draw_set_blend_mode(bm_normal)
surface_reset_target()
draw_surface(sup, xx-cx, yy-cy)

surface_free(sup)
[/gml]
21
Aqui hay un script para dibujar donas, anillos, redondelas huecas, ruedas... como se le diga XD
Está hecho en base a surfaces:
[gml]
///scr_dibujar_dona(radio_in, radio_ex, x, y, col)
var rin = argument[0]
var rex = argument[1]
var xx = argument[2]
var yy = argument[3]
var color = argument[4]

var sup = surface_create(rex*2, rex*2)

surface_set_target(sup)
var cy = floor(surface_get_height(sup)/2)
var cx = floor(surface_get_height(sup)/2)
draw_circle_colour(cx, cy, rex, color, color, false)
draw_set_blend_mode(bm_subtract)
draw_circle_colour(cx, cy, rin, color, color, false)
draw_set_blend_mode(bm_normal)
surface_reset_target()
draw_surface(sup, xx-cx, yy-cy)

surface_free(sup)
[/gml]
La manera de usarlo es:
scr_dibujar_dona(radio_in, radio_ex, x, y, col)

radio_in = es el radio del circulo de adentro
radio_ex = es el radio del borde exterior

Cabe aclarar que el radio interior tiene que ser a lo sumo menor o igual, de otra manera, no se aprecia nada en pantalla.

El script no dibuja los bordes negro, pero se puede modificar lo poco para lograrlo, o en su defecto los dibujas fuera del script con las funciones convencionales.
22
A la final nunca te dije como se hacía xD me olvidé.
Aqui te dejo los pasos, yo utilice GIMP para editar el sprite pero se puede hacer con cualquier programa para editar, por ejemplo photoshop.

Paso 1:
Creas una nueva capa


Paso 2:
Seleccionas la herramienta de degradado y haces con BLANCO y NEGRO el difuminado respectivamente de más luz a sombreado.


Paso 3:
El modo de mezcla lo tenes que poner en MULTIPLICAR


Paso4:
Seleccionas la capa del sprite y le aplicas el efecto de BLUR o DESENFOQUE, yo use el Gaussian blur, pero ahi otros que podes ir probando


Resultado:
23
Los consejos que te dieron son muy buenos.
Basicamente tienes que evitar que resalte tanto el planeta, despues de todo es un objeto secundario de fondo.
Tendrias que, oscurecerlo o hacer que se camufle con el fondo, bajandole el brillo y hasta quiza desenfoncandolo un poco, puesto que generalemente se asocia la cantidad de detalles a la cercania de los objetos, mientras que los que estan mas lejos suelen verse difusos.
Podrias aplicarlo tambien a las estrellas para que no se confundan con disparos.

Adjunto una imagen, que esta modificada, inlcluso le puedes dar una profundidad al fondo haciendo que la mitad del objeto se vaya perdiendo en la oscuridad
24
De hecho, estuve pensando, si todavía quieres utilizar surfaces, creo que tengo una manera mucho mas facil de hacerlo.

Simplemente creas una surface con el tamaño del rectangulo y dibujas el texto encima, si el texto se sale de la surface simplemente no se dibujará.

Luego bastaría simplemente dibujar la surface.
Te dejo un ejemplo adjunto XD

25
Probé tu solucion por curiosidad, pero tampoco funcionó, seguía recortandose mal.

No, son exactamente iguales, ambos de 32x32, en la imagen adjunta había puesto el sprite justamente para que se viera las medidas. Tanto el sprite como la surface tienen el mismo tamaño.
26
Te dejo los pasos explicados, de como lo haría yo:
Bueno, inicialmente (1) deberías crear una surface más grande que el texto, lo suficiente para cubrir el texto que se sale por los bordes.

(2) Tendrias que quitar la parte del recuadro para obtener el negativo(3). Esto se hace facilmente con:

draw_set_blend_mode(bm_subtract)
draw_roundrect_ext(...)

Luego deberías crear una nueva surface (4) donde dibujarías el texto normal.
Y repetirías el paso de recorte(5):
draw_set_blend_mode(bm_subtract)
draw_surface(surface_roja, 0, 0)

(6)Fin

Bueno, como dicen en las peliculas: "en mi cabeza sonaba bien".
27
Gracias por responder, la verdad eso no solucionó el problema.


De hecho encontré el problema en la pagina de texturas, al parecer se recortan por alguna razón.
Hay que ir a Global Game Settings a texture group y marcar el "No cropping".

No entiendo la verdad porqué lo hicieron así XD   
28
Estamos desarrollando un juego en el cual queremos lograr un efecto de parpadeo, para no tener que estár pintando el personaje de otro color por cada sprite, decidi que podiamos usar una surface, aplicarle un color plano y recortar la figura.
El problema está en que se recorta solo el limite del ultimo pixel pintado y no todo el sprite.

Los sprites son de 32x32 y la surface tambien es de 32x32, yo deduzo que debería recortarse entera entonces.
Los codigos que utilizamos son:

obj_surface_parpadeo_blanco:
create
surfa = surface_create(32, 32);
step
if (surface_exists(surfa)){

    surface_set_target(surfa);
    draw_clear_alpha(c_white, 0);
    draw_set_alpha(1);
    draw_set_color(c_white);
    draw_rectangle(0,0,32,32,false);
    draw_set_blend_mode_ext(bm_subtract, bm_src_alpha);
    draw_sprite(obj_player.sprite_index, obj_player.image_index, 16, 16);
    draw_set_blend_mode(bm_normal);
    surface_reset_target();
}

draw
if (surface_exists(surfa)) 
    draw_surface(surfa, x, y);


Ya la posicion, no importa que esté descuadrada, sino que no se esté recortando todo el area del sprite que vendría cubriendo la parte transparente.

Cómo podemos arreglarlo?  :'(
29
Si, está en realidad en otra carpeta que no es appdata, se utiliza %programdata%, total.

La cuestión es que pierde el indice si no se vé desde el GMS
(imagen adjunta1)

cuando en realidad debiera poder verse el indice
(imagen adjunta2)

Como sea, todavía sirve, pero es bastante tardado moverse entre enlaces. Porque no funciona el indice, ni la pestaña para buscar, nada. Pero podés se puede abrir a mano los apartados.


edit:
http://www.mediafire.com/file/z2ym96s5pdiz1y8/GMS2_Spanish-master.zip/file

lo subi ahi, por si aun te sirve

30
Cita de: The Dokz en Octubre 08, 2018, 08:39:34 PM
Intuitivo = no sabe programar.

Gracias por el comentario nada aportativo, compañero.

Se puede utilizar D&D para los que no saben utilizar código y GML para programar, por cierto.