Eso es genial, yo estaba haciendo un script para copiar los sprites en blando, pero tu método es mejor.
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.
961
Preguntas y respuestas / Re:Duda con respecto a colorear un objeto
Febrero 04, 2016, 03:19:29 AM962
Preguntas y respuestas / Re:Iniciar música en un juego pero con el volumen apagado
Febrero 03, 2016, 05:26:10 AM
Hay que notar que los sonidos funcionan de forma parecida a los objetos y las instancias; cada sonido que se reproduce es una instancia creada a partir de un archivo de sonido en los recursos del juego. La función audio_play_sound genera el id, que debe usarse para modificar y obtener información de una instancia de sonido.
Para reproducir 3 canciones y silenciar 2, usa un código como este:
[gml]
musica1 = audio_play_sound( snMago, 1,true );
musica2 = audio_play_sound( snAltar, 1,true );
musica3 = audio_play_sound( snCordero, 1,true );
audio_sound_gain( musica2, 0,0 );
audio_sound_gain( musica3, 0,0 );
[/gml]
Después debes usar la función audio_sound_gain para incrementar el volumen de la instancia de sonido que necesites.
Para reproducir 3 canciones y silenciar 2, usa un código como este:
[gml]
musica1 = audio_play_sound( snMago, 1,true );
musica2 = audio_play_sound( snAltar, 1,true );
musica3 = audio_play_sound( snCordero, 1,true );
audio_sound_gain( musica2, 0,0 );
audio_sound_gain( musica3, 0,0 );
[/gml]
Después debes usar la función audio_sound_gain para incrementar el volumen de la instancia de sonido que necesites.
963
Preguntas y respuestas / Re:comprimir sonido
Febrero 02, 2016, 05:03:04 PM
Lo que permite la compresión son los códecs y los parámetros indicados. Hay muchos editores de audio con interfaces gráficas para ajustar los parámetros de compresión, una opción es Audacity. Para comprimir chiptunes utilizo el formato WAV con codificación GSM 6.10, de esa forma se comprimen mucho sin perder calidad, pero con sonidos de instrumentos reales la calidad baja demasiado. Si los vas a importar a GMS es mejor que no los comprimas antes; en el propio GMS se pueden indicar los ajustes de compresión.
964
Preguntas y respuestas / Re:Agarrar un personaje, cargarlo y arrojarlo
Febrero 02, 2016, 04:46:05 PM
Lo más fácil sería crear una path, o varias, para el movimiento del enemigo, pero si quieres un ajuste dinámico tal vez necesites hacer una animación esquelética. Todo depende del tipo de juego que quieras hacer; algunos juegos que recuerdo que permiten cargar a los enemigos son SMB2 y Chip n Dale, ambos de NES. Algo que facilita las animaciones es manejarlas como una máquina de estados. Deberías dar más imformación sobre tu juego.
965
Preguntas y respuestas / Re:tengo un jostick en 4 direcciones con radianes y quiero ponerlo en 8 podian ayud
Febrero 01, 2016, 05:05:47 PM
No se si sea obligatorio usar radianes, pero me parece que de esa forma está haciendo más operaciones de las necesarias. Esta es mi modificación borrando la función que convierte grados en radianes:
[gml]
vstick[argument0,8]=point_direction(vstick[argument0,3],vstick[argument0,4],device_mouse_x_to_gui(vstick[argument0,7]),device_mouse_y_to_gui(vstick[argument0,7]));
[/gml]
[gml]
if( vstick[argument0,8]>=337.5 or vstick[argument0,8]<22.5 ) direB = //derecha
if( vstick[argument0,8]>=22.5 and vstick[argument0,8]<67.5 ) direB = //derecha arriba
if( vstick[argument0,8]>=67.5 and vstick[argument0,8]<112.5 ) direB = //arriba
if( vstick[argument0,8]>=112.5 and vstick[argument0,8]<157.5 ) direB = //izquierda arriba
if( vstick[argument0,8]>=157.5 and vstick[argument0,8]<202.5 ) direB = //izquierda
if( vstick[argument0,8]>=202.5 and vstick[argument0,8]<247.5 ) direB = //izquierda abajo
if( vstick[argument0,8]>=247.5 and vstick[argument0,8]<292.5 ) direB = //abajo
if( vstick[argument0,8]>=292.5 and vstick[argument0,8]<337.5 ) direB = //derecha abajo
xunscaled = lengthdir_x(1,vstick[argument0,8]);
yunscaled = lengthdir_y(1,vstick[argument0,8]);
[/gml]
asigna a direB el valor que se ajuste a tus necesidades
[gml]
vstick[argument0,8]=point_direction(vstick[argument0,3],vstick[argument0,4],device_mouse_x_to_gui(vstick[argument0,7]),device_mouse_y_to_gui(vstick[argument0,7]));
[/gml]
[gml]
if( vstick[argument0,8]>=337.5 or vstick[argument0,8]<22.5 ) direB = //derecha
if( vstick[argument0,8]>=22.5 and vstick[argument0,8]<67.5 ) direB = //derecha arriba
if( vstick[argument0,8]>=67.5 and vstick[argument0,8]<112.5 ) direB = //arriba
if( vstick[argument0,8]>=112.5 and vstick[argument0,8]<157.5 ) direB = //izquierda arriba
if( vstick[argument0,8]>=157.5 and vstick[argument0,8]<202.5 ) direB = //izquierda
if( vstick[argument0,8]>=202.5 and vstick[argument0,8]<247.5 ) direB = //izquierda abajo
if( vstick[argument0,8]>=247.5 and vstick[argument0,8]<292.5 ) direB = //abajo
if( vstick[argument0,8]>=292.5 and vstick[argument0,8]<337.5 ) direB = //derecha abajo
xunscaled = lengthdir_x(1,vstick[argument0,8]);
yunscaled = lengthdir_y(1,vstick[argument0,8]);
[/gml]
asigna a direB el valor que se ajuste a tus necesidades
966
Preguntas y respuestas / Re:Detectar todas las instancias en un mismo sector
Febrero 01, 2016, 04:22:59 PM
Se me ocurre otra forma. En el evento Step del objeto bola actualiza una variable:
[gml]
dentro = place_meeting( x,y, obSector );
[/gml]
Y en el evento End Step de un objeto controlador (o el objeto sector) revisa que todas las bolas han entrado:
[gml]
global.todas = true;
with( obBola )
global.todas = global.todas and dentro;
if( global.todas )
{
//has ganado
}
[/gml]
Esto se puede complicar si quieres que cuenten únicamente las bolas que están completamente contenidas en el sector. Una solución sería implementar un algoritmo que detecte un polígono dentro de otro, que no es algo trivial, sin embargo, como las figuras a detectar son simples círculos bastaría con recortar toda la orilla del área de colisión del sector una distancia igual al radio de las bolas.
[gml]
dentro = place_meeting( x,y, obSector );
[/gml]
Y en el evento End Step de un objeto controlador (o el objeto sector) revisa que todas las bolas han entrado:
[gml]
global.todas = true;
with( obBola )
global.todas = global.todas and dentro;
if( global.todas )
{
//has ganado
}
[/gml]
Esto se puede complicar si quieres que cuenten únicamente las bolas que están completamente contenidas en el sector. Una solución sería implementar un algoritmo que detecte un polígono dentro de otro, que no es algo trivial, sin embargo, como las figuras a detectar son simples círculos bastaría con recortar toda la orilla del área de colisión del sector una distancia igual al radio de las bolas.
967
Preguntas y respuestas / Re:problemas: ritmo sonido
Febrero 01, 2016, 04:08:28 PM
Se puede obtener la posición de la canción con la función audio_sound_get_track_position, así no importa que se retrase o se corte el sonido, siempre podrás obtener la posición exacta dentro de la pista.
Supongo que no es una función pesada, el manual no advierte sobre eso, y por la forma en que se usa, debería ejecutarse super rápido. Sin embargo, para evitar sobrecarga, sería mejor que se ejecute dentro de una alarma, tal vez cada medio segundo, ya que los beats de las canciones, por lo general, tardan más de medio segundo, si son más rápidos se empiezan a escuchar como tremolo.
Supongo que no es una función pesada, el manual no advierte sobre eso, y por la forma en que se usa, debería ejecutarse super rápido. Sin embargo, para evitar sobrecarga, sería mejor que se ejecute dentro de una alarma, tal vez cada medio segundo, ya que los beats de las canciones, por lo general, tardan más de medio segundo, si son más rápidos se empiezan a escuchar como tremolo.
968
Noticias / Re:Concurso Comunidad Game Maker 2016
Febrero 01, 2016, 04:12:13 AM
Preferimos que lo publiquen hasta que termine el concurso, despues de eso pueden hacer lo que quieran con su juego.
969
Preguntas y respuestas / Re:Optimisacion de juego en android
Enero 31, 2016, 05:20:04 PM
Además de calentarse, ¿se ralentiza?
970
Preguntas y respuestas / Re:Mi sistema de teletransporte no sirve xD
Enero 31, 2016, 05:14:44 PM
En este caso la ds_list sobra, porque se puede sacar el portal de destino dentro del with. Yo lo implementé de esta forma:
[gml]
///Teleportar
//Ev. Colision con obPortal
if( not teled ) //se puede tele teleportar
if( point_distance( x,y, other.x,other.y ) < 16 ) //cerca del centro
{
var color = other.image_blend; //caracteristicas
var salida = other.id; // del portal actual
var destino = noone; //no sabemos si existe portal de destino
with( obPortal ) //revisar todos los portales
{
if( id <> salida //si es diferente a la salida
and image_blend == color ) //y tiene el mismo color
{
destino = id; //es un destino valido
break; //dejamos de revisar
}
}
if( destino <> noone ) //si el portal destino existe
{
x = destino.x; //ir a su posicion
y = destino.y;
teled = true; //evitar un doble teleporte
}
}
[/gml]
[gml]
//Ev. Step
if( not place_meeting( x,y, obPortal ) )
teled = false;
[/gml]
[gml]
///Teleportar
//Ev. Colision con obPortal
if( not teled ) //se puede tele teleportar
if( point_distance( x,y, other.x,other.y ) < 16 ) //cerca del centro
{
var color = other.image_blend; //caracteristicas
var salida = other.id; // del portal actual
var destino = noone; //no sabemos si existe portal de destino
with( obPortal ) //revisar todos los portales
{
if( id <> salida //si es diferente a la salida
and image_blend == color ) //y tiene el mismo color
{
destino = id; //es un destino valido
break; //dejamos de revisar
}
}
if( destino <> noone ) //si el portal destino existe
{
x = destino.x; //ir a su posicion
y = destino.y;
teled = true; //evitar un doble teleporte
}
}
[/gml]
[gml]
//Ev. Step
if( not place_meeting( x,y, obPortal ) )
teled = false;
[/gml]
971
Preguntas y respuestas / Re:Animacion se queda pegada en la primera imagen :(
Enero 29, 2016, 10:45:36 PM
Sube el archivo otra vez, porque me aparece corrupto y no puedo ver el código del personaje. ¿Cómo se utiliza el archivo lib?
972
Preguntas y respuestas / Re:Ayuda crear grappling hook con fisicas
Enero 28, 2016, 01:21:13 AM
Otro ejemplo: http://sandbox.yoyogames.com/games/106997
973
Noticias / Re:Concurso Comunidad Game Maker 2016
Enero 28, 2016, 01:05:35 AM
No importa la versión, sólo pedimos que envíen los juegos como ejecutables.
974
Preguntas y respuestas / Re:Problema con las views
Enero 27, 2016, 01:03:40 AM
Revisa que la captura se hace después del ini_close()
Para estirar el background usa background_xscale[0] y background_yscale[0].
Para estirar el background usa background_xscale[0] y background_yscale[0].
975
Preguntas y respuestas / Re:gravedad "real"
Enero 27, 2016, 12:55:35 AM
He dejado un ejemplo. Es importante que revises estos ajustes al trabajar con Box2D:
La habitación debe tener marcada la casilla "room is physics world" en la pestaña "physics", también debes especificar las componentes de la gravedad y la relación entre pixeles y metros; el manual recomienda una relación entre 0.1 y 50, porque así la simulación es más exacta, pero es más importante que se ajuste al tamaño que tendrían los objetos de tu juego en la vida real.
En los objetos se debe marcar la casilla "uses physics", con lo que aparece unos cuadros para ajustar las propiedades físicas.
Para que los objetos sean estáticos, la densidad debe ser igual a cero y también se debe marcar la casilla "kinematic".
Si la densidad es mayor a cero, se usa para calcular la masa (peso) del objeto.
La restitución indica cuánto puede rebotar.
Para que los objetos puedan colisionar entre ellos, deben estar en el mismo "collision group", este grupo se indica con un número mayor a cero.
La propiedad "friction" tiene un significado diferente al que se usa normalmente, en este caso idica qué tan rugosa es la superficie de un objeto.
Los valores de "damping" son más parecidos al significado que se le da a la fricción fuera de la simulación física.
La habitación debe tener marcada la casilla "room is physics world" en la pestaña "physics", también debes especificar las componentes de la gravedad y la relación entre pixeles y metros; el manual recomienda una relación entre 0.1 y 50, porque así la simulación es más exacta, pero es más importante que se ajuste al tamaño que tendrían los objetos de tu juego en la vida real.
En los objetos se debe marcar la casilla "uses physics", con lo que aparece unos cuadros para ajustar las propiedades físicas.
Para que los objetos sean estáticos, la densidad debe ser igual a cero y también se debe marcar la casilla "kinematic".
Si la densidad es mayor a cero, se usa para calcular la masa (peso) del objeto.
La restitución indica cuánto puede rebotar.
Para que los objetos puedan colisionar entre ellos, deben estar en el mismo "collision group", este grupo se indica con un número mayor a cero.
La propiedad "friction" tiene un significado diferente al que se usa normalmente, en este caso idica qué tan rugosa es la superficie de un objeto.
Los valores de "damping" son más parecidos al significado que se le da a la fricción fuera de la simulación física.