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

961
Eso es genial, yo estaba haciendo un script para copiar los sprites en blando, pero tu método es mejor.
962
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.
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
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
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
966
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.
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.
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
Además de calentarse, ¿se ralentiza?
970
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]
971
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?
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].
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.