Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

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.


Mensajes - Clamud

Páginas: 1 2 3 4 ... 112
16
Preguntas y respuestas / Re:Cambiar el color de cada palabra
« en: Junio 02, 2020, 04:33:06 am »
Hay varios ejemplos en internet, pero no logré encontrar uno hecho en GM8, sin embargo, gran parte del código debe ser compatible

La mayoría de sistemas utilizan instrucciones dentro del texto, que están marcadas con caracteres especiales. El texto se va leyendo letra por letra, cuando se encuentra un caracter especial se lee la instrucción y se cambia la forma de dibujar el texto. Las coordenadas de cada letra se obtienen sumando las anchuras y alturas de las letras anteriores.

17
Preguntas y respuestas / Re:destruir instancias (solucionado)
« en: Junio 01, 2020, 05:39:40 am »
Que bueno que te ha servido.

other se utiliza dentro de un ciclo with para indicar la instancia que inició el ciclo.
// el objA tiene este código
foo = 0; // variable en instancia de objA

with (objB) // recorrer todas las instancias de objB
{
    foo = 123; // asignar variable a instancia de objB
    other.foo = 123; //asignar variable a instancia de objA
}

other también se utiliza en el evento colisión para obtener el id de la instancia con la que ocurrió la colisión.

18
Preguntas y respuestas / Re:Problema con draw text
« en: Junio 01, 2020, 05:27:50 am »
El sprite transparente sirve para definir el área en la que se puede hacer clic, verdad?
Puedes obtener el tramaño del texto con string_width y string_height. Después cambia la escala de la instancia par que todo el texto quepa en su área.
Ejemplo:
// create
draw_set_font(fontX);
draw_set_halign(fa_center);

wSprite = 16; // anchura del sprite
wText = string_width("Mensaje a dibujar"); //anchura del texto

image_xscale = wText / wSprite; // ajustar escala
Para probar que la escala es correcta, usa un sprite sin transparencia primero (no olvides poner draw_self en el evento draw)
// draw
draw_self();
draw_text("Mensaje a dibujar");

19
Preguntas y respuestas / Re:destruir instancias (solucionado)
« en: Mayo 31, 2020, 05:09:10 pm »
El problema es que al usar with el código se ejecuta en todas las instancias.
Guarda el id de las rocas para leer sus variables directamente
// guardar ids
r1 = instance_create_layer(x + 0, y + 0, "Instances", roca1);
r2 = instance_create_layer(x + 0, y + 1150, "Instances", roca2);

hspeed = -1;
audio_play_sound(sonido_laser, 0, 0);
image_xscale =random_range(1,1.3)

// step
if(r1.image_index == 0 and r2.image_index == 0) {
    instance_destroy();
}

20
Preguntas y respuestas / Re:duda sobre el editor de sprites de GM
« en: Mayo 31, 2020, 03:27:02 pm »
Mejor usa un editor externo como Aseprite

21
El problema de usar solo lengthdir es que van a atravesar las paredes.

¿Cómo son las paredes y los objetos? danos una idea de sus propiedades, si solid = true, cómo es su máscara de colisión etc.

Para mover muchas instancias juntas sin colisionar he utilizado un sistema en el que se define un área circular alrededor de cada instancia. Si las áreas de dos instancias se empalman, se desplazan en direcciones contrarias para que las áreas dejen de estar empalmadas. Como resultado parece que las instancias se deslizan suavemente cuando chocan.

Hay varias técnicas de búsqueda de caminos. Si las paredes están alineadas a una cuadrícula, puedes usar el algoritmo A* que ya está implementado en GMS (mp_grid functions)
https://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/motion%20planning/index.html

22
Preguntas y respuestas / Re:Varias A.I eligiendo diferentes objetivos
« en: Mayo 31, 2020, 03:05:51 pm »
Pon una variable en el objeto mesa que indique si está ocupada
ocupada = false;

El objeto cliente puede buscar una mesa vacía así
mesaObjetivo = noone; // al principio no hay objetivo

with (objMesa) {// revisar todas las mesas
    if (ocupada == false) {// si una mesa no está ocupada
        other.mesaObjetivo = id; // se convierte en objetivo
        ocupada = true; // ahora está ocupada
        break; // terminar de revisar las mesas
    }
}

23
Preguntas y respuestas / Re:Enemigos que apunten
« en: Mayo 29, 2020, 04:33:27 am »
¿Cómo intentaste hacer la función de apuntar?

Usa la función point_direction para conocer el ángulo entre el objeto enemigo y el jugador
angulo = point_direction(x, y, obj_player.x, obj_player.y);
Ese ángulo lo puedes usar para la dirección de movimiento de las balas y para inclinar el sprite del arma.

24
Preguntas y respuestas / Re:destruir instancias
« en: Mayo 29, 2020, 04:23:24 am »
Lo siento, no entendí bien la explicación. ¿Podrías poner un dibujo de lo que quieres lograr?

25
Preguntas y respuestas / Re:Como centrar funciones de dibujo
« en: Mayo 25, 2020, 05:59:10 am »
Usa un script que dibuje un rectángulo centrado. Algo como esto
var xc = argument0;
var yc = argument1;
var w2 = argument2 / 2; //anchura
var wh = argument3 / 2; //altura
draw_rectangle(xc - w2, yc - h2, xc + w2, yc + w2);

26
Preguntas y respuestas / Re:Objeto con fisica que siga a otro
« en: Mayo 24, 2020, 07:28:42 pm »
El manual dice que no es bueno modificar las variables phy_position directamente porque se interrumpe la simulación.
Para seguir el puntero del mouse puedes aplicar una fuerza o modificar la velocidad
instMouse.phy_speed_x = mouse_x - instMouse.phy_position_x;
instMouse.phy_speed_y = mouse_y - instMouse.phy_position_y;
El accesorio se puede pegar con una unión rotatoria
physics_joint_revolute_create(
    instMouse, instAcc, //instancias involucradas
    420, 220, //coordenadas de la unión
    0, 0, false, //no hay ángulo límite
    0, 0, false, //no hay motor
    false //las inancias no colisionan
);

Ejemplo en GMLIve

27
Grafismo & Composición / Re:Grafismo de Atari 2600
« en: Mayo 24, 2020, 06:09:58 pm »
Hay algo de información en Wikipedia
https://es.wikipedia.org/wiki/Atari_2600
https://en.wikipedia.org/wiki/Atari_2600_hardware
https://en.wikipedia.org/wiki/List_of_video_game_console_palettes

La consola tiene muchas limitaciones. La resolución y la complejidad de los gráficos pueden cambiar dependiendo del tipo de juego y de la complejidad de la programación.

Para hacer buen pixel-art es recomendable saber dibujar con técnicas tradicionales (lápiz y papel). Hay temas en el foro hablan sobre software para dibujar. Para dibujos pixelados utilizo Aseprite o GIMP.

29
Preguntas y respuestas / Re:Hacer que la view se mueva lentamente
« en: Mayo 23, 2020, 06:23:47 pm »
Para la view debes usar variables que indiquen la posición final y luego desplazar la view poco a poco desde la posición actual hasta la posición final.
Para ello puedes usar la función lerp
https://www.comunidadgm.org/desarrollo-de-scripts/interpolacion-lineal-en-gm8/
view_xview[0] = lerp(x_inicial, x_final, t);
view_yview[0] = lerp(y_inicial, y_final, t);
t += 0.05;
if (t > 1) t = 1;
la variable t va de 0 a 1, incrementando un poco en cada step.

Para hacer el cambio entre rooms lo más fácil es utilizar las transiciones predefinidas. Las transisiciones solo funcionan en GM8, se eliminaron en GMS.
Al cambiar de room, debes guardar en varibles globales la posición en la que debe aparecer el personaje en la siguiente room
if (room == rm0) {//primera room
    if (x > room_width) {//si se sale de la room por la derecha
        transition_kind = 15; //Push from right
        transition_steps = room_speed * 0.5; //duración de la transición
        global.xx = 0; //posición en la que va a aparecer
        global.yy = y;
        room_goto(rm1); //cambiar de room
    }
}
Adjunto un ejemplo.

30
Supongo que el archivo está en una carpeta en la que el juego no tiene acceso.
https://docs.yoyogames.com/source/dadiospice/002_reference/file%20handling/file%20system%20limits.html

En Windows puedes navegar a casi cualquier carpeta, pero en otras plataformas el acceso a archivos es más limitado.
Lo mejor sería que agregues el archivo al proyecto (Included file)
https://docs.yoyogames.com/source/dadiospice/001_advanced%20use/002_including%20files.html

Páginas: 1 2 3 4 ... 112