No es posible saber qué teclas no se podrán detectar si se pulsan simultáneamente, todo depende del hardware. Lo que puedes hacer es diseñar el juego de forma que nunca se presionen muchas teclas a la vez. También puedes usar los botones del mouse y tal vez agregar soporte para gamepad.
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.
332
Preguntas y respuestas / Re:Crear un falso3d con primitivas
Junio 10, 2018, 03:18:30 PM
Para trabajar con primitivas en tiempo real puedes utilizar este programa
http://www.maartenbaert.be/model-creator/
Te puede dar una idea de las coordenadas que debes utilizar.
http://www.maartenbaert.be/model-creator/
Te puede dar una idea de las coordenadas que debes utilizar.
333
Preguntas y respuestas / Re:Puntuación personalizada
Junio 10, 2018, 03:14:55 PM
¿En qué formato estás diseñando la tipografía?
Si es vectorial, puedes instalarla en el sistema y después importar la fuente en la interfaz de GMS.
http://docs.yoyogames.com/source/dadiospice/001_advanced%20use/003_fonts.html
Si es un mapa de bits, puedes guardarla como una imagen e importarla como sprite.
Al inicio del juego crea la fuente a partir del sprite con la función font_add_sprite o font_add_sprite_ext
http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/fonts/font_add_sprite.html
http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/fonts/font_add_sprite_ext.html
Antes de dibujar el texto indica la fuente a utilizar con la función draw_set_font
http://docs.yoyogames.com/source/dadiospice/002_reference/drawing/drawing%20text/draw_set_font.html
Si es vectorial, puedes instalarla en el sistema y después importar la fuente en la interfaz de GMS.
http://docs.yoyogames.com/source/dadiospice/001_advanced%20use/003_fonts.html
Si es un mapa de bits, puedes guardarla como una imagen e importarla como sprite.
Al inicio del juego crea la fuente a partir del sprite con la función font_add_sprite o font_add_sprite_ext
http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/fonts/font_add_sprite.html
http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/fonts/font_add_sprite_ext.html
Antes de dibujar el texto indica la fuente a utilizar con la función draw_set_font
http://docs.yoyogames.com/source/dadiospice/002_reference/drawing/drawing%20text/draw_set_font.html
334
Preguntas y respuestas / Re:problema con salto
Junio 10, 2018, 03:02:55 PM
¿En qué parte se asigna state_new?
335
Preguntas y respuestas / Re:Shooting Palabras
Junio 07, 2018, 05:38:33 PM
Que bueno que lo solucionaste. Todavía no entiendo bien qué es lo que quieres lograr. Si muestras el código, tal vez podemos mejorarlo.
336
Preguntas y respuestas / Re:Shooting Palabras
Junio 06, 2018, 05:29:46 PM
¿Las letras se deben seguir moviendo junto a los otros enemigos o mantienen su posición después de que ocurre la colisión?
¿En que momento se hace la detección de palabras, en cada Step o al final de la ronda?
¿En que momento se hace la detección de palabras, en cada Step o al final de la ronda?
337
Preguntas y respuestas / Re:Shooting Palabras
Junio 06, 2018, 05:20:15 PM
Cuando la bala colisione con el enemigo se podría convertir en un objeto que muestre la letra.
338
Preguntas y respuestas / Re:colisiones en un juego tds
Junio 06, 2018, 05:17:21 PM
Si los muros son bloques rectangulares puedes usar este código:
http://www.comunidadgm.org/preguntas-y-respuestas/lateralidad-de-las-colisiones-(solucionado)/
Se pueden usar muchas técnicas, para que los zombies persegan al prota evitando los muros.
La más fácil es usar las funciones mp_potential.
Una forma más efectiva, pero más difícil de configurar, es usar las funciones mp_grid
(Busca la sección "Motion Planning" en el manual)
Otra forma más difícil de implementar es esta
https://zackbellgames.com/2015/10/02/faraway-dynamic-way-point-trails/
http://www.comunidadgm.org/preguntas-y-respuestas/lateralidad-de-las-colisiones-(solucionado)/
Se pueden usar muchas técnicas, para que los zombies persegan al prota evitando los muros.
La más fácil es usar las funciones mp_potential.
Una forma más efectiva, pero más difícil de configurar, es usar las funciones mp_grid
(Busca la sección "Motion Planning" en el manual)
Otra forma más difícil de implementar es esta
https://zackbellgames.com/2015/10/02/faraway-dynamic-way-point-trails/
339
Preguntas y respuestas / Re:Es posible detectar frecuencias de sonido?
Junio 03, 2018, 08:11:29 PM
¿Buscas transmitir datos a través de sonido?
Se podrían utilizar varias técnicas.
La primera es simple frecuencia modulada, como lo que propones, a cada letra se le asigna una frecuencia. Generar las frecuencias es fácil, simplemente se usa un archivo de audio con una frecuencia base y la frecuencias específicas se obtienen con audio_sound_pitch. Pero analizar el sonido generado con este método podría ser un poco difícil. El receptor debería escuchar un sonido muy limpio, sin distorsión con forma de onda senoidal. Ese sonido se podría analizar con Transformada Rápida de Fourier para obtener el valor de la frecuencia dominante. Si el sonido se distorsiona (como siempre sucede en los altavoces de teléfonos) o hay mucho ruido ambiente, se obtendrán muchas frecuencias combinadas y sería difícil encontrar la frecuencia dominante.
Otra forma de utilizar la frecuencia modulada sería enviar varias frecuencias por letra codificando el número binario que representa a la letra. Por ejemplo, 5 kHz es 0 lógico y 10 kHz es 1 lógico.
Otra técnica sería reproducir una secuencia de pulsos binarios para generar un onda cuadrada. Se podría copiar la codificación de algún protocolos de comunicación serial. El problema de una onda cuadrada es que se compone por muchas frecuencias armónicas y no se puede reproducir fielmente en los altavoces ni en los micrófonos.
Esta app transmite datos a través de sonido
https://play.google.com/store/apps/details?id=io.chirp.gemswap
pero chirrido parece demasiado largo para lo que transmite.
Se podrían utilizar varias técnicas.
La primera es simple frecuencia modulada, como lo que propones, a cada letra se le asigna una frecuencia. Generar las frecuencias es fácil, simplemente se usa un archivo de audio con una frecuencia base y la frecuencias específicas se obtienen con audio_sound_pitch. Pero analizar el sonido generado con este método podría ser un poco difícil. El receptor debería escuchar un sonido muy limpio, sin distorsión con forma de onda senoidal. Ese sonido se podría analizar con Transformada Rápida de Fourier para obtener el valor de la frecuencia dominante. Si el sonido se distorsiona (como siempre sucede en los altavoces de teléfonos) o hay mucho ruido ambiente, se obtendrán muchas frecuencias combinadas y sería difícil encontrar la frecuencia dominante.
Otra forma de utilizar la frecuencia modulada sería enviar varias frecuencias por letra codificando el número binario que representa a la letra. Por ejemplo, 5 kHz es 0 lógico y 10 kHz es 1 lógico.
Otra técnica sería reproducir una secuencia de pulsos binarios para generar un onda cuadrada. Se podría copiar la codificación de algún protocolos de comunicación serial. El problema de una onda cuadrada es que se compone por muchas frecuencias armónicas y no se puede reproducir fielmente en los altavoces ni en los micrófonos.
Esta app transmite datos a través de sonido
https://play.google.com/store/apps/details?id=io.chirp.gemswap
pero chirrido parece demasiado largo para lo que transmite.
340
Preguntas y respuestas / Re:Lateralidad de las colisiones
Junio 03, 2018, 07:33:27 PM
¿Qué código que utilizas?
El método más fácil que he utilizado es realizar el movimiento horizontal y vertical de forma separada y revisar las colisiones despues de cada uno de esos movimientos. Todo en el evento Step.
[gml]
// Horizontal
x += vx; //deplazar
with( obBlock ){ //ejecutar en las instancias bloque
if place_meeting(x,y, other.id){ //si hay colision
if (other.x < x) //colision a la izquierda
other.x = x - 16;
else //colision a la derecha
other.x = x + sprite_width + 16;
}
}
//Vertical
y += vy; //desplazar
with( obBlock ){ //ejecutar en las instancias bloque
if place_meeting( x,y, other.id ){ //si hay colision
if (other.y < y) //colision arriba
other.y = y - 16;
else //colision abajo
other.y = y + sprite_height + 16;
}
}
[/gml]
En el código se supone que el origen del sprite del objeto jugador está centrado y el sprite de los bloques tiene su origen en (0,0).
En tu caso, vx, vy se deben calcular con las funciones lenghtdir y el ángulo del objeto.
No se debe evitar utilizar image_angle para no rotar la máscara de colisión. Para dibujar el objeto rotado se puede utilizar draw_sprite_ext y una variable de ángulo personalizada.
Otro método es utilizar el sistema de física (Box2D).
Ejemplo adjunto.
El método más fácil que he utilizado es realizar el movimiento horizontal y vertical de forma separada y revisar las colisiones despues de cada uno de esos movimientos. Todo en el evento Step.
[gml]
// Horizontal
x += vx; //deplazar
with( obBlock ){ //ejecutar en las instancias bloque
if place_meeting(x,y, other.id){ //si hay colision
if (other.x < x) //colision a la izquierda
other.x = x - 16;
else //colision a la derecha
other.x = x + sprite_width + 16;
}
}
//Vertical
y += vy; //desplazar
with( obBlock ){ //ejecutar en las instancias bloque
if place_meeting( x,y, other.id ){ //si hay colision
if (other.y < y) //colision arriba
other.y = y - 16;
else //colision abajo
other.y = y + sprite_height + 16;
}
}
[/gml]
En el código se supone que el origen del sprite del objeto jugador está centrado y el sprite de los bloques tiene su origen en (0,0).
En tu caso, vx, vy se deben calcular con las funciones lenghtdir y el ángulo del objeto.
No se debe evitar utilizar image_angle para no rotar la máscara de colisión. Para dibujar el objeto rotado se puede utilizar draw_sprite_ext y una variable de ángulo personalizada.
Otro método es utilizar el sistema de física (Box2D).
Ejemplo adjunto.
341
Preguntas y respuestas / Re:Pantallas De carga
Mayo 29, 2018, 10:28:47 PM
Lo más fácil es poner una imagen estática. Mientras se ejecuta el código de generación del mapa no se puede actualizar la imagen, entonces es necesario dibujar la imagen antes de generar el mapa. Una forma es dibujar la imagen en el evento Draw y en el mismo evento iniciar una alarma con valor 1. En la alarma ejecutar el código del mapa.
[gml]
/// Evento Draw
draw_background(bgCargando, x, y);
alarm[0] = 1;
[/gml]
Para mostar una animación cuando está cargando, se debe dividir el código de generación en varios Steps. En lugar de utilizar un ciclo for, podrías crear una instancia con una variable para contar cuántas veces ha ejecutado su evento Step y en ese evento Step poner el código que estaba originalmente en el for. En el evento Draw de esa instancia podrías dibujar una barra de carga. También sería conveniente asignar un valor alto a la variable room_speed para evitar que la generación tarde más tiempo.
[gml]
/// Evento Draw
draw_background(bgCargando, x, y);
alarm[0] = 1;
[/gml]
Para mostar una animación cuando está cargando, se debe dividir el código de generación en varios Steps. En lugar de utilizar un ciclo for, podrías crear una instancia con una variable para contar cuántas veces ha ejecutado su evento Step y en ese evento Step poner el código que estaba originalmente en el for. En el evento Draw de esa instancia podrías dibujar una barra de carga. También sería conveniente asignar un valor alto a la variable room_speed para evitar que la generación tarde más tiempo.
342
General / Re:Necesito ayuda
Mayo 27, 2018, 08:48:29 PM
¿Qué código utilizas para cambiar de room?
343
Preguntas y respuestas / Re:Hacer que un sonido tenga distinto volumen segun la distancia [Solucionado]
Mayo 27, 2018, 08:46:00 PM
Otra forma es utilizar el sistema de audio 3D, que además atenúa el sonido en el lado izquierdo o derecho.
En el evento Create del soldado crea un emisor de audio y colocalo sobre el personaje
[gml]
ae = audio_emitter_create();
audio_emitter_position(ae, x,y,0);
[/gml]
En el evento Step del soldado actualiza la posición del emisor
[gml]
audio_emitter_position(ae, x,y,z);
[/gml]
Reproduce el sonido con
[gml]
audio_play_sound_on(ae, sound, 1,1);
[/gml]
En el evento Step del protagonista actualiza la posición del oyente
[gml]
audio_listener_position(x,y,z);
[/gml]
Para evitar fugas de memoria destruye el emisor en el evento Destroy del soldado
[gml]
if audio_emitter_exists(ae)
audio_emitter_free(ae);
[/gml]
En el evento Create del soldado crea un emisor de audio y colocalo sobre el personaje
[gml]
ae = audio_emitter_create();
audio_emitter_position(ae, x,y,0);
[/gml]
En el evento Step del soldado actualiza la posición del emisor
[gml]
audio_emitter_position(ae, x,y,z);
[/gml]
Reproduce el sonido con
[gml]
audio_play_sound_on(ae, sound, 1,1);
[/gml]
En el evento Step del protagonista actualiza la posición del oyente
[gml]
audio_listener_position(x,y,z);
[/gml]
Para evitar fugas de memoria destruye el emisor en el evento Destroy del soldado
[gml]
if audio_emitter_exists(ae)
audio_emitter_free(ae);
[/gml]
344
Juegos completos / Re:Pacman Yonki
Mayo 27, 2018, 08:35:22 PM
Lo jugué cuando lo publicaste, pero olvidé comentar. Los mensajes aleatorios que aparecen al tocar los signos de interrogación son muy divertidos. El problema es que el juego se hace aburrido rápidamente porque es muy repetitivo. Podrías agregar más niveles y diferentes modos de juego.
345
Preguntas y respuestas / Re:Ayuda con programación para colisión con un enemigo
Mayo 20, 2018, 05:48:32 PM
Debes compartir toda la carpeta del proyecto, no solo el archivo .project.gmx.
El error "Push:: Execution Error - Variable Get (var)" indica que una variable no existe. Tal vez no existe inv o no existe la instancia.
El error "Push:: Execution Error - Variable Get (var)" indica que una variable no existe. Tal vez no existe inv o no existe la instancia.