Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

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


Temas - Fashion_Trozos

Páginas: 1 2
1
Hola buenas, estoy haciendo un plataformas chustero para practicar. En el juego quiero que mi personaje dispare, y claro, podrá disparar dependiendo de si mira hacia izquierda o hacia derecha. Como podría hacer que detecte hacía que lado esta mirando el personaje?

2
Buenas a todos!. Estoy intentando familiarizarme con el tema de las colisiones. Estoy haciendo un plataformas básico. Las colisiones verticales funcionan perfectamente, pero las horizontales no. os pongo el código a ver si me podéis echar una mano. Un saludo

Código: [Seleccionar]
//--------------------Colisiones-----------------------------------------

//Colision vertical contra el suelo

if place_meeting(x,y+vsp,ob_suelo){

//Mientras no encontremos colision a un pixel, ajustamos de 1 en 1
while (!place_meeting(x,y+sign(vsp),ob_suelo)){
y += sign(vsp);
}
vsp = 0;
}

//Colisiones horizontales

if (place_meeting(x+hsp,y,ob_suelo)){

//Mientras no encontremos colision a un pixel, ajustamos de 1 en 1
while (!place_meeting(x+sign(hsp),y,ob_suelo)){
x += sign(hsp);
}
hsp = 0;
}

3
Preguntas y respuestas / Game Maker 2 de prueba, ahora solo 30 días?
« en: Junio 11, 2019, 09:03:28 am »
Acabo de descargarme Game Maker Studio 2 de la pagina de yoyo y veo que han cambiado el sistema de prueba, por lo que he leido ahora solo dura 30 días el trial?? esto es así?? alguien lo esta utilizando con mas de 30 días?

4
Preguntas y respuestas / Game Maker Studio 2 no se abre!
« en: Junio 05, 2019, 07:04:19 pm »
Buenas a todos, no se que pasa, moví algunos archivos de la carpeta donde tengo instalado Game Maker y no se que toque que no funciona, pulso en el icono, me pide permisos como administrador, doy que sí y nada, no pasa nada, ni se abre el programa , ni tira ningún error ni nada de nada. lo he probado a desinstalar 30 veces y nada, también me lo he vuelto a descargar de la pagina de Yoyo y nada de nada. Tengo la versión de prueba del 2. alguien sabe como puedo solucionar esto?

5
Preguntas y respuestas / Como picar solo una roca
« en: Junio 04, 2019, 02:22:19 pm »
Buenas a todos! He creado un sprite con forma de roca y con 4 subimagenes. La idea es que a cada golpe de pico la roca se vaya destruyendo. He creado una variabe destruccion_roca = 0 y cada vez que pico en una roca aumenta 1 o 2 dependiendo de si llevo o no el pico equipado, después dependiendo del valor de destruccion_roca asignar un sprite index determinado. El problema viene que no se donde colocar todo esto. Primero he intentado colocarlo en el ob_roca y funciona! pero cada vez que golpeo una roca veo como todas las rocas de la room sufren el mismo efecto y se van destrozando. No utilizo un evento de colisión para controlar este tipo de cosas, lo he echo así:

STEP del player

Código: [Seleccionar]
//----------PICAR ROCA---------------------------------------------------------



//Picar roca con o sin pico
if distance_to_object(ob_roca) < 4
and mouse_check_button_pressed(mb_left)
and position_meeting(mouse_x,mouse_y,ob_roca)
and poder_picar == true {

//Si no llevo pico
if pico_equipado == false{
ob_roca.vida_roca--;
recurso_roca++;
destruccion_roca++
poder_picar = false;
destruccion_roca ++
alarm[0] = room_speed * 1.5;
}
else {

//Si llevo pico
ob_roca.vida_roca -= 2;
recurso_roca      += 2;
destruccion_roca  += 2;
poder_picar = false;
alarm[0] = room_speed * 1.5;
}
}

mi idea es colocar algo tipo así para ir cambiando de subimagen:

Código: [Seleccionar]
if destruccion_roca = 0 {
ob_roca.image_index = 0
}

if destruccion_roca = 1 {
ob_roca.image_index = 1
}

if destruccion_roca = 2 {
ob_roca.image_index = 2
}

if destruccion_roca = 3 {
ob_roca.image_index = 3
}

Y que cada vez que golpee una roca determinada se vaya destruyendo, pero solo la roca que estoy golpeando

6
Preguntas y respuestas / Mi personaje no ataca cuando esta parado
« en: Mayo 28, 2019, 01:16:13 pm »
Buenas a todo el mundo. Llevo ya unos días intentando hacer que funcione una maquina de estados, es a primera vez que lo hago y al final salvando problemillas de por aquí y por allá al final mi personaje se mueve, se esta quieto y ataca. Ahora el problema lo tengo en que cuando esta parado no ataca. He intentado hacer otro estado de "parado_atacando" pero ni aun así lo consigo. Debugueando por la consola veo que entra al estado de atacar parado, pero solo lo hace por un minisegundo, por lo tanto veo que entra en ese estado, pero no se mantiene allí y se sale rapidísimo. Os paso la parte del código de atacar:

Código: [Seleccionar]
if mouse_check_button_pressed(mb_left)
and pico_equipado = true
and estado != estado_personaje.atacando
and dir != "parado"

{
estado = estado_personaje.atacando;
image_index = 0;
}
   
if mouse_check_button_pressed(mb_left)
and pico_equipado = true
and estado != estado_personaje.atacando
and dir = "parado" 

{
estado = estado_personaje.atacando_parado;
image_index = 0;
}

show_debug_message(estado)

Os paso tambien el script de atacar parado, que es exactamente igual que el de atacar. Por ahora solo ataca cuando voy moviendome   :)

Código: [Seleccionar]
image_speed = 1;

switch(dir){
case "abajo":
sprite_index = spr_prota_frente_picando;
break;
case "arriba":
sprite_index = spr_prota_detras_picando;
break;
case "derecha":
sprite_index = spr_prota_derecha_picando;
break;
case "izquierda":
sprite_index = spr_prota_izquierda_picando;
break;
}

if image_index >= image_number-1{
estado = estado_personaje.parado_pico
}

7
Preguntas y respuestas / [RESUELTO] Problema con enumerador
« en: Mayo 27, 2019, 08:01:43 pm »
Hola, buenas a todo el mundo. Tengo un problema, quiero usar un enumerador porque estoy siguiendo (otra vez) un tutorial de como hacer una maquina de estados. Me da error en el evento Create.

Código: [Seleccionar]
enum ep{
parado = scr_parado(),
caminando = scr_prota_moviendose()
}

dir = "abajo";
estado = ep.parado;

El error que me da es "error game maker enum assignment must be an integer". No estoy utilizando bien el enumerador? un saludo!

8
Hola, buenas tardes a todo el mundo. Llevo unos días intentando aprender un poco sobre las maquinas de estados. He conseguido hacerla funcionar, pero solo en parte. Por ahora mi personaje se mueve en todas direcciones con su animación en la dirección concreta, cuando esta parado simplemente se queda quieto mirando hacia la dirección en la que iba, si iba a la derecha y dejo de pulsar, pues eso, se detiene mirando a la derecha. Hasta ahí bien, el problema me ha surgido al querer que mi personaje ataque. He echo unas animaciones cutres del personaje atacando en todas direcciones y he preparado un script de "ataque" pero no ha funcionado lo bien que me gustaría. Os pongo algo del código y a ver si me podéis echar un cable.

En el evento Crate no he puesto nada referente a la maquina de estados, lo probé como explicaba Hektor Profe en un video de Youtube pero no hubo manera, me daba errores y decidí seguir adelante sin hacer un enumerador con los estados (a lo mejor ahí empezó mi fallo).

En el Step primero tengo esto:

if      (vv > 0) dir = "abajo";
else if (vv < 0) dir = "arriba";
else if (vh > 0) dir = "derecha";
else if (vh < 0) dir = "izquierda";
else if (vh == 0 and vv == 0) dir = "parado"

if pico_equipado == true {
   
    //Parte grafica con pico
    if dir != "" scr_prota_moviendose_con_pico()
    if (vh == 0 and vv == 0) scr_parado_con_pico()
    }
   
    else{
       
    //Parte grafica sin pico
    if dir != ""   scr_prota_moviendose()
    if (vh == 0 and vv == 0) scr_parado()
    }

Tengo como dos modos que digamos, uno con un pico equipado y otro sin.

Estos son los scripts (pondré solo los de sin pico)

Script parado:

image_speed = 0;
image_index = 0;

Script moviendose:

image_speed = 1

switch(dir){
    case "abajo":
        sprite_index = spr_prota_frente;
        break;
    case "arriba":
        sprite_index = spr_prota_detras;
        break;
    case "derecha":
        sprite_index = spr_prota_derecha;
        break;
    case "izquierda":
        sprite_index = spr_prota_izquierda;
        break;
}

Esto es lo que tengo para que se mueva, y se mueve. El problema viene cuando quiero añadir el ataque. Realmente lo único que he echo para añadir el ataque es lo siguiente:

Step:

if mouse_check_button_pressed(mb_left) {    
   atacando = true;
}


if atacando == true {
    scr_prota_picando()
}

Y el script de "ataque":

image_speed = 1

switch(dir){
    case "abajo":
        sprite_index = spr_prota_frente_picando;
        break;
    case "arriba":
        sprite_index = spr_prota_detras_picando;
        break;
    case "derecha":
        sprite_index = spr_prota_derecha_picando;
        break;
    case "izquierda":
        sprite_index = spr_prota_izquierda_picando;
        break;
    case "parado":
        sprite_index = spr_prota_frente_picando;
        break;
}

if image_index = 4 {

    atacando = false;

}

Lo que me sucede haciéndolo así es que al pulsar el botón del mouse el personaje entra en el modo ataque por decirlo de alguna manera y ya no lo abandona, a parte no funciona como me gustaría que es que cuando pulso ataca y cuando no, pues no. Lo que sucede es que se activa la animación dependiendo de hacía que lado me muevo y se queda activada todo el tiempo mientras me mueva, si voy a la derecha veo al personaje atacando sin parar hacía la derecha y en cuando me detengo se detiene la animación también. Me imagino que no lo estoy haciendo bien, me cuesto mucho imaginarme la lógica para que todo funcione bien.

9
Preguntas y respuestas / Como picar piedra? [SOLUCIONADO]
« en: Mayo 14, 2019, 04:00:20 pm »
Llevo un par días pues eso, intentando picar piedra que digamos. Me gustaría que me propusierais lógicas fáciles de como hacer algo así. La intención es que cuando el personaje se acerque a menos de 4 pixeles de una "roca" y pulse, por ejemplo, espacio, le reste 1 a la vida de la piedra, cuando la piedra pierda digamos 4 vidas se destruya.
Lo he intentado de varias maneras y no consigo hacerlo bien. O se me destruye el protagonista, o todas las rocas o no pasa nada. He intentado ir simplificandolo todo hasta que he empezado un proyecto solo para probar esto mismo y ni aun así. Os pongo el código de esto último.

Código: [Seleccionar]
if distance_to_object(ob_roca) < 4 and keyboard_check_pressed(vk_space){
ob_roca.vida_roca--
}

if ob_roca.vida_roca == 0 {
instance_destroy(instance_nearest(x,y,ob_roca))
}

Pero al "picar" 4 de piedra desaparecen todas las instancias y me da este error:

Unable to find any instance for object index '2' name 'ob_roca'
 at gml_Object_ob_prota_Step_0 (line 36) - if ob_roca.vida_roca == 0 {

La vida de la roca se la puse en el CREATE del ob_roca. Puede que ese sea el error?

Y si lo intento con un evento colision me pasa lo siguiente.

Código: [Seleccionar]
if keyboard_check_pressed(vk_space) {
ob_roca.vida_roca--
}

if ob_roca.vida_roca == 0 {
with other instance_destroy()
}

De esta manera me funciona el invento, pero claro, solo una vez. Me imagino que es porque la variable vidas_roca baja a "0" me sirve para que desaparezca la primera instancia en a que estoy "picando" pero después, en las demás, las destruye solo con colisionar al cumplirse if ob_roca.vida_roca == 0 . No podrían tener cada instancia del ob_roca sus propias vidas??? por decirlo de alguna manera.

Añadiendo un poco mas al código (ob_roca.vida_roca +=4) puedo hacer que funcione hasta la penúltima instancia, cuando se terminan las instancias en la room el invento peta

Código: [Seleccionar]
if keyboard_check_pressed(vk_space) {
ob_roca.vida_roca--
}

if ob_roca.vida_roca = 0 {
with other instance_destroy()
ob_roca.vida_roca +=4
}

PD: Tengo otro post abierto en el que el problema es muy similar, pero pensé que podía simplificarlo y así alguien podría responderme fácilmente a este problema y quedaría solucionado para próximos principiantes como yo. Si alguno de los dos queda solucionado, borraría el otro


10
Hola, buenas. Tengo un problema que no consigo solucionar. Quiero que mi personaje pueda sacar 4 unidades de piedra cuando "pique" una roca y que despues esta se destruya. No estoy muy seguro de como hacerlo, consigo que pueda extraer 4 unidades de una roca pero después se destruyen todas las instancias de roca y no solo la que esta picando.

Lo he puesto en un evento colisión de mi protagonista hacia el objeto roca.

Código: [Seleccionar]
if distance_to_object(ob_piedra) < 4 and mouse_check_button_pressed(mb_left)
and position_meeting(mouse_x,mouse_y,ob_piedra) {

if scr_obtener_slot_libre() != -1 and global.primera_piedra == true {
   global.inventario[scr_obtener_slot_libre()] = "Piedra"
   global.primera_piedra = false;
   }
   
   global.cantidad_piedra++
   global.vida_piedra--
   }

if global.vida_piedra <= 0 {with other instance_destroy()}

if global.cantidad_piedra == 0 {
global.primera_piedra = true;
}



Me imagino que es una tontería de primero de programación. Un saludo!

11
Preguntas y respuestas / Duda a la hora de equipar a mi personaje
« en: Mayo 07, 2019, 12:20:38 pm »
Hola, buenas. Estoy empezando a hacer mis pinitos y ahora me toca la parte de equipar a mi personaje. Por ahora ya se mueve, interacciona con otros items e incluso tengo mi primer inventario rudimentario (con el bucle "for"), el personaje va cogiendo y acumulando piedra, madera, lo típico. Ahora ha llegado el momento de poder equiparlo como toca con un pico, una pala etc. Tengo dudas en como hacerlo. Por una parte esta la visual, cual seria el procedimiento mas adecuado, me imagino que hay que hacer otra vez un sprite del personaje parado y caminando en todas direcciones, pero esta vez con la herramienta en cuestión y a parte, un sprite en cada dirección con la animación de la utilización de cada cosa que lleve equipada, esto es así? Y la otra seria ya mas la parte de programación pero creo que lo dejaré para otro post. Pregunto esto porque supongo que hay varias maneras de hacerlo, imagino que no es el mismo sistema por ejemplo Stardewvalley en el que parece que si han sido dibujados de nuevo lo personajes con la herramienta a por ejemplo Forager que parece que le han pegado el pico encima y se mueve y listo.

12
Estoy empezando a pensar en como hacer los fondos, por hora voy dibujando sprites del tipo: un arbol, un arbusto, etc, pero tengo la duda de cual sería la manera correcta de  hacerlo en gm2. Por ahora lo que hago es poner un fondo de color verde (no se de que manera hacerlo mejor) y después voy poniendo un arbol por aquí y un arbusto por allá, pero estoy utilizando instancias de objetos. He pensado en utilizar un draw_sprite, pero me parece una matada andar colocando los sprites así. Alguien sabe si hay alguna manera de colocar los sprites igual de fácil que cuando lo hago con instancias? un salu

13
Hola, buenas a todo el mundo. Tengo un problemilla cuando activo las vistas, os explico. Tengo un objeto que me sirve de botón (es un botón que al clicar encima se crea un acha), el botón se crea cuando se crea un panel de inventario al pulsar  la tecla "I", la cosa esta que si no activo las vistas al pasar el puntero del ratón me da true, pero al activar una vista (para acercar la vista al personaje) la función de position meeting parece que deja de funcionar y al pasar el cursor por encima ya no me da "1" sino "0", es como si al activar la vista no detectase que el botón se crea en la misma coordenada o algo así. Todo lo que dibujo en tema de paneles y tal lo hago en el Draw GUI y al objeto del botón en el evento GUI le he puesto "draw_self". Que estoy haciendo mal?, un saludo!

14
Hola, buenas. He estado buscando la manera de hacer un inventario en el cual se vayan ordenando los objetos conforme los "coges" o bien los "fabricas". Se que hay mil maneras de hacer inventarios, me he estado mirando el tema de los arreglos y listas, pero me falta base y me pierdo con facilidad. Me gustaría hacer un pequeño ejemplo, con digamos 4 slots me basta. Se que la pregunta es muy amplia y da como para un megatutorial, por el momento me bastaría con entender como puedo conseguir que detecte que un slot esta acupado por un objeto y que debe colocar el objeto en el siguiente. Como haríais el inventario, dibujando un sprite que sean 4 cuadrados, o usando un objeto que use ese sprite. Una vez dibujado el inventario, he conseguido que al fabricar, por ejemplo, un acha, se dibuje en el primer "slot" o recuadro, pero entiendo que no termino de ir por el camino correcto, creo que de esa manera game maker no sabe que el slot siguiente esta vacío. No se si me he explicado demasiado bien, en resumen, me gustaría hacer un inventario de 4 casillas en el que se coloquen los objetos en los huecos. (digo 4 huecos para simpificar una posible respuesta) Un saludo!

15
Hola buenas, llevo un buen rato dándole vueltas a como puedo hacer lo que pregunto en el título. Lo he intentdo con una variable del estilo "mostrar_inventario = false" y que al presionar la "i" fuera verdadero, pero no me sale. Entinedo que realmente al presionar la tecla estoy dandole una orden contradictoria supongo. Después lo he intentado así, pero vamos que creo que viene a ser lo mismo hehe. Como lo veis?

Código: [Seleccionar]
if keyboard_check_pressed(ord("I")) and instance_exists(ob_inventario) = false{
instance_create_depth(room_width/2,room_height/2,-1,ob_inventario)
}

if keyboard_check_pressed(ord("I")) and instance_exists(ob_inventario){
instance_destroy(ob_inventario)
}

Páginas: 1 2