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 - Killer

106
Preguntas y respuestas / Re:Como inhabilitar teclas
Abril 10, 2014, 11:41:58 PM
Puedes usar keyboard_clear en el evento begin step, la función limpia el estado de la tecla y el evento se ejecuta antes que cualquier otro, de manera que juntos evitaran cualquier evento o función de tecla. Para desactivarla usa una variable de control.

if Tecla keyboard_clear(vk_space)
107
Preguntas y respuestas / Re:Archivos DLL
Abril 09, 2014, 07:23:36 AM
Lo que dicen de los DLLs en GameMaker Studio es no se pueden usar en ningún modulo aparte de windows, lo cual es cierto.
108
No tengo el módulo de android, pero suena a algo que se podría arreglar con redondeo, por ejemplo, si lo que dice el manual es correcto entonces esto:

if display_get_orientation() = display_landscape
   {
   x += round(device_get_tilt_y());
   }
else
   {
   x += round(device_get_tilt_x());
   }


Haría que el Pj no se mueva hasta que haya pasado una inclinación de alrededor de 45 grados.
109
El background que quieras hacer invisible debe ser desactivado en la vista anterior a la que quieres que desaparezca, esto es debido al orden en que se dibuja todo en pantalla, primero se dibuja el color de fondo de la room, luego los backgrounds puestos desde el editor de room, y luego los objetos y tiles según profundidad.

Esto quiere decir que para cuando llegue el momento de que cualquier objeto ejecute su evento draw (el unico evento donde current_view funciona) el background ya habrá sido dibujado y no puede ser eliminado.

Con esto en mente, si quieres que un background sea dibujado en la view 0 pero no en la view 1 deberás desactivarlo desde la view 0 para que cuando sea momento de dibujarlo en la view 1 ya este desactivado, y volver a activarlo en la view 1 para que pueda ser dibujado la próxima vez que se dibuje la view 0.

switch(view_current){
case (0); background_visible[0] = false; break;
case (1); background_visible[0] = true; break;
}

110
Puedes dibujar un sprite de sombra por partes, en columnas de 1 de ancho, calculando la distancia hasta el suelo para cada parte.

Dibujar el sprite por partes se haría con sprite_draw_part:

draw_sprite_part(sprite,subimage,left,top,width,height,x,y)

En esta función left y top son las coordenadas del sprite desde donde quieres empezar a dibujar, y width y height son el ancho y largo de la parte del sprite a dibujar desde las coordenadas dadas en left y top, también a tener en cuenta es que draw_sprite_part ignora los puntos de origen del sprite.

Entonces por ejemplo, puedes usar un for para separar el sprite en columnas y un while para calcular la distancia hasta el suelo:

for (i=0;i<sprite_get_width(sprite),i+=1){
  j = 0;
  while(!collision_point(X+i,Y+j,Suelo,1,1) && j<480)
    j += 1;
  draw_sprite_part(sprite,subimage,i,0,1,sprite_get_height(sprite),x+i,y+j);
}


Te dejo un ejemplo con el código para la sombra optimizado, en este código en particular los objetos donde se puede proyectar una sombra deben tener un parent en común, que debe ser el que se use para verificar colisiones en el while.
111
Las funciones draw se deben usar en el evento Draw, para verificar que se presionen teclas puedes usar keyboard_check(tecla) dentro de un if, puedes buscar en el manual por los valores de las teclas que usar con keyboard_check.

Entonces para lo que quieres seria, en evento Draw:

if keyboard_check(ord('A')) draw_sprite(circulo,0,x,y);
112
Change sprite to "sprite sin bombas"... estas usando D&D, el icono de cambiar sprite también pide que especifiques la subimagen desde donde empezar, esto quiere decir que si lo usas durante un evento step cambiara continuamente a la subimagen inicial que le pusiste.

Puedes solucionarlo poniendo image_index en la casilla de subimage de change sprite o haciendo que la condicion para realizar el cambio se fije si el sprite no es ya "sprite sin bombas".
113
Preguntas y respuestas / Re:transicion entre rooms
Marzo 30, 2014, 04:35:00 AM
No comprendo lo que quieres decir con "máscara de un sprite", la máscara de un sprite usualmente se refiere a su área de colisión, que no es algo que normalmente se dibuje.

En todo caso, cualquier cosa que se pueda dibujar se puede usar en las transiciones sin mayor problema, en el ejemplo que deje viene otra transición, la de voltear página, si la viste notarás que en ella se dibujan rectángulos, líneas e incluso una tercera superficie.
114
Preguntas y respuestas / Re:Dudas sobre rooms
Marzo 30, 2014, 04:28:37 AM
Quítale la view a la room, de manera que se dibuje toda al mismo tiempo, si tu room es muy grande el juego será escalado para entrar en la ventana de windows, eso no importa.

Ahora usa la función screen_save, te guardará una screenshot del room en su estado actual.
115
Preguntas y respuestas / Re:transicion entre rooms
Marzo 28, 2014, 11:36:54 PM
Creo entender, pero la creación de transiciones puede ser algo complicado, debes crear un script que controlara la transición, donde argument0 y argument1 contienen superficies con la imagen del room origen y el room destino, respectivamente, el argument2 y el argument3 el ancho y alto de las superficies y el argument4 la posición temporal actual de la transición.

Dentro del script debes poner el comportamiento de la transición, es decir, lo que debe dibujar y la manera en que debe ser dibujado, por ejemplo:


/*
argument0 superficie con room de origen
argument1 superficie con room de destino
argument2 ancho de las superficies
argument3 altura de las superficies
argument4 posicion de la transicion
*/
var i,P;

if argument4 < 0.5 draw_surface(argument0,0,0);
else draw_surface(argument1,0,0);

if argument4 < 0.25
  P = argument4 * 2;
if argument4 >= 0.25 && argument4 < 0.75
  P = 0.5;
if argument4 >= 0.75
  P = (argument4 - 0.5)*2;

for(i = 0;i<argument3/16;i+=2)
  draw_background_part(background0,0,i*16,argument2,16,0-argument2*(1-P*2),16*i);
for(i = 1;i<argument3/16;i+=2)
  draw_background_part(background0,0,i*16,argument2,16,argument2-argument2*P*2,16*i);


Este código dibujaría primero la superficie del room origen hasta la mitad de la transición, y pasada la mitad dibujara la superficie del room destino.

También dibuja el background0 en tiras que aparecen a los lados, moviéndolas según la posición temporal de la transición, dando una pequeña pausa cuando el background esta completo para que se pueda apreciar.

Una vez que tienes un script listo para transformarlo en transición debes usar la función transition_define, donde debes pasarle el número de ID que usara la transición y el nombre del script que usa como una string:

transition_define(99,"tr_strings")

La ID que le asignas a la transición es la que debes usar cuando la quieras usar:

transition_kind = 99
room_goto(room1)


Es un tema un tanto complejo si no tienes experiencia en ello, te dejo un ejemplo con el script que acabo de poner para que lo veas en acción.

El problema cuando se usan views es que las superficies necesarias para las transiciones deben tener las mismas dimensiones, por lo que si views son distintas de un room a otro no funcionan bien. 
116
Preguntas y respuestas / Re:Mantener salud
Marzo 25, 2014, 09:20:46 AM
Cuando creas una instancia nueva a esta se le asigna una ID, puedes usar esa ID para pasar variables. Por ejemplo:

Inst = instance_create(x,y,monstruo_caido);
Inst.Salud = Salud;
instance_destroy();


En este código hipotético creas una instancia de monstruo_caido, guardas su ID en la variable Inst, luego usas dicha ID para cambiar la variable Salud de monstruo_caido al valor de la Salud de la instancia original y la destruyes. Luego puedes hacer lo mismo para pasar la Salud de monstruo_caido al nuevo monstruo:

Inst = instance_create(x,y,monstruo);
Inst.Salud = Salud;
instance_destroy();


Como vez el código es prácticamente igual, solo cambia el nombre del objeto, y con esto estarás pasando el valor de Salud desde el monstruo original, a través de monstruo_caido hasta el nuevo monstruo. Obviamente tendrás que cambiar el código para que se aplique a tu caso.
117
Ok, no te voy a decir exactamente lo que debes hacer porque parte de la idea de este foro es que aprendas y experimentes, no que si simplemente no te sale algo a la primera vengas a preguntar.

Entonces, si la función mueve los tiles 7 a la izquierda una vez y nada más, necesitas que la función se ejecute constantemente, donde pondrías un código que debe ejecutarse constantemente?
118
Probablemente seria mejor usar tile_layer_shift, que mueve todos los tiles en una misma profundidad, con tile_set_position tienes que encontrarlos y moverlos uno por uno, calculando la posición previa que tenían.

Con tile_layer_shift simplemente le dices cuanto quieres que se muevan y listo, por ejemplo:

tile_layer_shift(1000000,-7,0)

Esto hace que los tiles se muevan 7 pixeles a la izquierda, donde 1000000 es la profundidad de la capa de tiles, -7 es la distancia de x que debe moverse y 0 es la distancia de y que debe moverse.
119
General / GameMaker para PS4
Marzo 19, 2014, 06:59:31 PM
Bueno gente, finalmente esta ocurriendo:

https://twitter.com/lordoftheyoyo/status/446291814979366912
http://blog.eu.playstation.com/2014/03/19/gdc-new-tools-middleware-coming-ps4/
http://www.yoyogames.com/news/210

Para aquellos que no sepan inglés:

YoYo Games y Sony Anuncian la Asociación de GameMaker: Studio al Programa de Desarrolladores Licenciados de PlayStation


Hoy en GDC, estamos emocionados de anunciar una asociacion estrategica con sony para ofrecer soporte para PlayStation®4, PlayStation®Vita y PlayStation®3. Esto hace el publicar juegos con GameMaker: Studio a las plataformas de PlayStation® fácil y libre de cargos para todos los desarrolladores de Playstation licenciados.

El soporte de GameMaker para el programa de desarrolladores licenciados de PlayStation incluye soporte para las caracteristicas de PSNSM, asi como periféricos licenciados para la plataforma que incluye controles, entradas de control y cámaras.

"El anuncio de hoy is un logro mayor en nuestra estrategia de hacer el desarrollo de juegos poderosos y multiplataforma más ampliamente accesible" dijo Sandy Duncan, Jefe Ejecutivo Oficial de YoYo Games. "Son noticias particularmente buenas para la comunidad de desarrolladores Indie ya que remueve la barrera de complejidad que existe al entregar experiencias de juego Indiw a los usuarios de PlayStation."

"Nos complace estar trabajando con YoYo Games para llevar GameMaker: Studio a nuestras plataformas de PlayStation" Dijo Teiji Yutaka, Senior Vicepresidente de Plataformas de Tecnología de Sony Computer Entertainment Inc. "Los usuarios de PlayStation pronto podran disfrutar de una amplia  variedad de juegos creativos, incluyendo títulos de juegos independientes únicos de la creciente comunidad global de desarrolladores de GameMaker, que incluye algunos de los talentos independientes más aclamados de la comunidad de desarrollo independiente del mundo."

YoYo Games estara demostrando juegos creados con GameMaker: Studio corriendo en PS4 y PS Vita en la GDM empezando hoy, Miercoles, 19 de Marzo hasta el Viernes, 21 de Marzo en el puesto 1924.

La beta abierta de GameMaker: Studio para desarrolladores Licenciados de PlayStation estará disponible inmediatamente despues de la GDC. Los exportadores de GameMaker: Studio para PS4, PS Vita y PS3 estan actualmente en desarrollo, y se espera que estén disponibles para desarrolladores licenciados el 30 de abril para PS4, 30 de Mayo para PS Vita y 30 de Junio para PS3.

Cualquier interesado en volverse un desarrollador licenciado de PlayStation® puede registrar su interés con SCE en https://www.companyregistration.playstation.com/




Incidentalmente, esto se ha estado discutiendo en la comuna oficial desde hace algunos días cuando que se descubrió una lista nueva de constantes de exportación en Studio 1.3:

os_3ds
os_bb10
os_ps4
os_psvita
os_wiiu
os_xboxone


Lo que nos lleva a la pregunta ¿es este solo el inicio? ¿Llegará Gamemaker a exportar a todas las consolas actuales? Considerando que la constante os_psp ha estado por mucho tiempo en el GM sin que se haga nada con ella todo lo que se diga no será más que especulación hasta que hable el staff de yoyo, pero podemos soñar, no?
120
Puedes usar partículas, haces una partícula que tenga el sprite del efecto, le pones el tiempo de vida que quieres que dure, y la creas cuando el enemigo muere, como las partículas son controladas desde el sistema al que pertenecen y no desde el objeto donde fue creada la partícula continuara existiendo hasta que se acabe su vida.

Edit: Oops, no me fije que no habías puesto el icono del GM que usas en el título tema, haznos un favor y ponlo, o todos los que contestamos estaremos en falta a las reglas.