¡Ayuda a la Comunidad GM, haz una donación!
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!.
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. 1
Preguntas y respuestas / Re: registrar multiples colisiones al mismo tiempo (Juego tipo buscaminas)« en: Abril 11, 2021, 08:23:03 pm »
Hola Momoni
El código dependerá de cómo creaste la cuadrícula, si usaste ojetos en la room o algún sistema de datos como la ds_grid o los arrays. Para empezar, el código que calcula la cantidad de minas al rededor del bloque no debería ir en el Step Event porque eso hará que se ejecute en cada frame de tu juego, si corres el juego a 30fps, ese código se ejecutará 30 veces por segundo. Basta con que se ejecute al inicio y ya, en el create event o en algún evento posterior (pero sólo 1 vez) No hay forma de revisar múltiples colisiones sin hacer un loop, ya sea un "While", un "With" o un "For". Pero como en tu caso sólo hay 8 bloques al rededor, lo puedes escribir a mano de la siguiente manera: cminas = position_meeting(x-32,y-32,obj_mina) + position_meeting(x,y-32,obj_mina) + position_meeting(x+32,y-32,obj_mina) //Detecta la cantidad de minas de la fila de arriba Desconozco realmente si el código funciona separado por enter, pero tú lo pones todo en 1 misma línea en tu GM. favor notar que estoy usando "position_meeting" en vez de "place_meeting", lo que hace la función es detectar si en un punto específico de la room se encuentra el objeto indicado, la detección de colisión la hace contra la colisión que tiene asignada el sprite, asumí que tu sprite mide 32x32 y la colisión también. En caso de detectar colisión, devuelve "true" (que para Game Maker es 1), en caso contrario, devuelve "false" (que para GM es 0) Entonces imagina que el bloque tiene una mina a la izquierda y una mina arriba a la derecha, la fórmula hará el siguiente cálculo: Código: [Seleccionar] cmina = 0 + 0 + 1 Y como resultado tendrás que ese bloque tiene 2 minas rodeandolo.Saludos 2
Preguntas y respuestas / Re:Simbolos de orden numerico.« en: Noviembre 23, 2020, 01:10:37 am »
Hola Marth
Eso no es posible. La diferencia es que 'º' y 'ª' no son superíndices como tal, sino que son carácteres como cualquier otra letra, la diferencia es que cuyo dibujo sólo ocupa la parte de arriba del espacio disponible y da la sensación de que son superíndices. Puedes crear tu propia fuente a partir de un sprite y usar como "er" algún caracter que no ocupes, así sólo tienes que dibujar "er" en alguna subimagen de la fuente y ya la puedes usar como caracter. O algo más complejo podría ser dibujar la palabra "er" con una fuente más pequeña justo después de tu texto original y así dar la sensación de que es un súper índice. Saludos 3
Preguntas y respuestas / Re:¿Podria tomar mas datos del sistema en game maker?« en: Octubre 08, 2020, 03:14:43 am »
Hola Alemar5
A mi entender no, Game Maker se volvió multiplataformas y ya no tiene muchas funciones asociadas a Windows. Quizás alguna dll de terceros lo pueda hacer, pero directamente las funciones de Game Maker no pueden. Saludos 4
Preguntas y respuestas / Re:Generación Procedural« en: Octubre 08, 2020, 03:09:40 am »
Hola Luis
Una idea rápida es que puedes combinar dos ciclo FOR para recorrer cada casilla de la room y crear un objeto al azar ahí. No entiendo qué variables has usado, ni qué hace cada objeto, así que lo explicaré de forma genérica y tu lo adaptas a tus necesidades. En el create event: var i, j; Eso recorre cada casilla de la room y crea un objeto al azar entre los 3 bloques que puse de argumentos para la función "choose". El problema de esto es que los objetos son creados al azar usando una distribución uniforme, eso significa que cada objeto tiene la misma probabilidad de ocurrencia (a menos que lo pongas dos veces dentro del choose, en ese caso el objeto tendría el doble de probabilidades de ser creado que los demás). Un sistema mejor (pero más complejo) puede ser quizás crear un PERLIN NOISE que guarde un número de 0 a 1 en una DS_GRID y luego crear un objeto según el valor que está en la grid. ej: si el número va de 0 a 0.2 que me cree oceano, hasta 0.7 que me cree el continente y si el número da mayor a 0.7 que me cree unas montañas, etc. Saludos 5
Preguntas y respuestas / Re:Función lerp ,movimiento pad« en: Abril 16, 2020, 03:48:47 am »
Hola Ikaro3d
Encuentro interesante tu idea de usar LERP para suavizar el movimiento, pero le veo un problema al código de teclado. Específicamente a la condición: "if keyboard_key" del inicio... no le encuentro sentido, pienso que el código quedaría mejor si la borras. Esa condición te hace frenar de golpe si sueltas todas las teclas y no dejas que el lerp complete la distancia. Ejemplo: si vas todo a la derecha, te deberías mover a la derecha con el suavizado y todo perfect, pero si sueltas todas las teclas de golpe, el personaje frena de golpe, pero aún le falta recorrer un 85% de la distancia que el LERP del step anterior no lo hizo recorrer. Eso significa que si ahora pulso izquierda, el personaje primero avanzará ese 85% hacia la derecha y luego irá a la izquierda como era esperado. Este código debería funcionar con el JoyPad. Va explicado con comentarios para que no te pierdas. //Primero recibo en qué porcentaje muevo el Stick (regresa un valor entre -1 y 1). Edit: Ojo que si pulsas derecha y al mismo tiempo mueves el Stick a la derecha, te moverás dos veces a la derecha (al doble de rápido). Deberías crear algún "if" que te haga moverte o con teclado o con joypad, pero no ambos a la vez Saludos 6
Preguntas y respuestas / Re:sprit ,mirando siempre dirección ,dirección aleatoria« en: Marzo 28, 2020, 02:39:06 am »
Hola Ikaro3d
Intenta con: image_angle = direction 7
Preguntas y respuestas / Re:Crear objetos dentro de otro que esta girando« en: Marzo 28, 2020, 02:35:23 am »
Hola VietnamNeko
Crea variables auxiliares que almacenen la posición del proyectil (antes de crearlo). Luego calcula la distancia y dirección que hay desde el origen de tu objeto hasta el proyectil creado Luego crea el objeto en la misma distancia del origen, pero con la dirección afectada por la "image_angle" del objeto, eso hará que el objeto creado rote junto con el objeto creador. Ejemplo: if image_index = 15{ Saludos 8
Preguntas y respuestas / Re:Como soluciono problema al saltar« en: Marzo 28, 2020, 02:11:25 am »
Hola fredred156
En Game Maker cada línea de código se ejecuta una a una en orden, eso quiere decir que no ejecuta la segunda hasta que no haya leido la primera. Corta el código de movimiento izquierda-derecha y pégalo después de todo el código que nos acabas de mandar. Eso hará que el código de movimiento se ejecute justo después de caer y así se te actualice el sprite correctamente. Saludos 9
Preguntas y respuestas / Re:Acciones al presionar y soltar un botón.« en: Marzo 24, 2020, 12:10:27 am »
Que bien que te haya funcionado. Éxito solucionando el resto de problemas.
Saludos 10
Preguntas y respuestas / Re:Problema con ataques según la distancia« en: Marzo 22, 2020, 01:31:30 pm »
Hola Zhekken
El error que ves: "Unexpected symbol in expression" es en realidad un bug de Game Maker. Cuando se usa la palabra "var" y se termina la línea en una función o script (como el instance_create) Game Maker no cierra la línea y arroja ese bug. Para corregirlo, a la fila anterior, cierra la línea manualmente con un signo punto y coma " ; " y se arregla: var inst = instance_create(x,y,obj_bala); //Con el signo al final ya funciona bien El problema fue que cree el código sin probarlo en mi GM antes y me olvidé de ese bug. Citar y ahora eso me confundió porque no se exactamente que quisiste colocar ahí.Lo que hice fue crear una variable local en el evento alarma llamada "inst". Esa variable local existe sólo en el evento que se llama y luego se borra, eso quiere decir que la puedes editar y leer sólo durante la ejecución de ese evento alarm. Si la intentas leer en el evento STEP, te dirá que la variable ya no existe. Hacer que la torre cree una bala, luego guarda el ID único que la bala que acaba de crear en la variable "inst" para poder manipular las variables de sólo esa nueva bala sin afectar a las balas que ya existen. Luego la expresión: inst.enemigo = enemigoEl problema fue que a la bala y a la torre les cree la misma variable "enemigo", por eso es un poco confuso, pero significan cosas diferentes. La variable "enemigo" de la bala es el Instance ID del enemigo que tengo que perseguir hasta la muerte. La variable "enemigo" de la torre es el Instance ID del objeto enemigo más cercano a la torre. Entonces le estoy diciendo a la bala que acabo de crear, que persiga a muerte al enemigo que actualmente está más cercano a la torre. Es como hacer: obj_bala.x = 12, pero si hiciera eso, se cambiaría la variable de todos los "obj_bala" del juego y eso no es lo que se quiere. Saludos 11
Preguntas y respuestas / Re:Acciones al presionar y soltar un botón.« en: Marzo 22, 2020, 03:47:30 am »
Hola Dager
En el "Step End Event" del Objeto cuchillo. x = obj_player.xEse código hará que el objeto "cuchillo" se mueva a la posición de mi objeto "obj_player", pero 20 pixeles hacia abajo (tú ponle como hayas llamado a tu objeto y en la coordenada respectiva según el tamaño de tus sprites y los puntos de origenes) Si dices que la animación de ataque con el cuchillo tiene 3 sprites, al crearlo debes hacer que la animación no se ejecute hasta que sueltas la tecla "K". En el "Create Event" del Objeto cuchillo: image_speed = 0 //Esto evita que la animación se dibuje Hace que el ataque se ejecute al soltar la tecla. En el "Step Event" normal del Objeto cuchillo, coloca: if keyboard_check_release(ord("K")) { En el evento "End Animation" del Objeto cuchillo (que está en other), ponle que haga daño a los enemigos y una alarma que desaparezca la mano con cierto delay. ejemplo: if image_speed != 0 { //Esta condición hace que el ciclo de animación no se repita y el tiempo de la Alarma se ejecute sólo 1 vez. en "Alarm[0]" del Objeto cuchillo, después de que pasan esos 6 Steps: instance_destroy() //Elimina la mano con el cuchillo cuando se activa la alarma 0 Está de más decir que el player NO puede crear otro cuchillo hasta que el primero desaparezca, añade una condición para revisar si el objeto ya existe antes de crearlo En el Step Event del Personaje if keyboard_check_pressed(ord("K")) && !instance_exists(obj_cuchillo) { instance_create(x,y,obj_cuchillo) } Saludos 12
Preguntas y respuestas / Re:como crear una onda que distorciona todo lo que toca« en: Marzo 13, 2020, 08:53:10 pm »
Hola KayasamiX
Eso se logra con una Shader. Puedes usar este video como guía donde generan un efecto similar con algunas variaciones: Saludos 13
Preguntas y respuestas / Re:CREAR ACELERACION« en: Marzo 01, 2020, 10:24:21 pm »
Hola nonoroman
El problema es que el "while" repite ese mismo código infinitas veces en el mismo step hasta que la condición se deje de cumplir, por eso ves que se mueve de golpe. Reemplaza el "while" por un "if" y se debería solucionar. Saludos 14
Preguntas y respuestas / Re:Error al cargar el juego« en: Febrero 05, 2020, 01:43:56 am »
Hola Kalimerodrag
Que extraño. No sé que plataforma o sistema operativo estés usando, pero al menos yo uso Windows y sé que Game Maker Studio no puede acceder a las carpetas de tu ordenador, sólo puede acceder a ciertas carpetas, de hecho por defecto se crean y cargan los archivos desde Local/Appdata. Puedes acceder al directorio si buscas %localappdata% en el buscador de Windows. Si has cambiado el archivo al escritorio e intentas cargar ejemplo: load_game("Desktop/game.sav") no te va a funcionar aunque el archivo exista porque Game Maker no tiene acceso a "Desktop". Para que Game Maker gane acceso a cualquier carpeta del ordenador, el jugador le tiene que dar acceso manualmente mediante las funciones "get_open_filename" o "get_save_filename". Intenta esto para cargar tu juego: var file; file = get_open_filename("Continuar", "") Eso te abrirá un cuadro de díalogo (los tipicos cuando pulsas "File" > "Open" en Windows) que te permitirá buscar el archivo en tu ordenador y cargarlo manualmente a Game Maker. Saludos 15
Preguntas y respuestas / Re:Problema con plataforma circular« en: Febrero 02, 2020, 12:51:24 am »
Hola LastSparkle
Game Maker guarda las coordenadas que tenía el objeto en el Step Anterior. Cuando cambias la "X" e "Y" de la plataforma, puedes encontrar cuántos pixeles se movió horizontalmente/verticalmente y aplicarlos al player. Ejemplo, en el Evento que mueve tu plataforma: //Primero calcula si el player está arriba tuyo: Yo he llamado al player "obj_player", pero tu le pones el nombre que usaste tú Saludos |