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

451
Una forma rápida de hacer las colisiones es utilizar el sistema de física. Sin embargo, no se adapta bien a algunos estilos de juego y hay que ajustar bien las propiedades físicas para lograr el efecto deseado (fricción entre superficies, cantidad de rebote, masa).
http://docs.yoyogames.com/source/dadiospice/002_reference/physics/index.html

Para objetos rectangulares uso un sistema como el que aparece en este tema (ve el archivo adjunto en el último mensaje)
http://www.comunidadgm.org/preguntas-y-respuestas/problema-con-colisiones-(jugador-volador)/msg127272/#msg127272

Para objetos circulares y elípticos he usado algo como esto
https://www.gamedev.net/articles/programming/math-and-physics/simple-but-effective-collisions-part-1-radial-collision-handling-r3147

Objetos con formas más irregulares pueden dividirse en círculos y rectángulos. También se puede implementar un sistema de física como Verlet.
452
En lugar de usar una base y una palanca, creo que sería más fácil si se usa un solo objeto.

En el evento Create desactiva la detección de doble click como click derecho
[gml]
device_mouse_dbclick_enable(false);
dx = 0; // distancia
dy = 0;
[/gml]

En el evento Step esto podría servir
[gml]
// Palanca Horizontal
dx = 0;
// revisar los 5 puntos táctiles
for (var i=0; i<4; i++)
{
  // si se presiona un punto
  if device_mouse_check_button(i, mb_left)
  {
    // coordenadas del punto
    px = device_mouse_x(i);
    py = device_mouse_y(i);
   
    // si el punto está dentro de esta instancia
    if position_meeting(px, py, id)
    {
      dx = px - x; // distancia en X
      // no rebasar distancia máxima
      if (dx > joystickMaxDist) dx = joystickMaxDist;
    }
  }
}
[/gml]

En el evento Draw dibuja la base y la palanca
[gml]
/// Dibujar palanca
draw_self(); // base
draw_sprite(spr_palanca, 0, x+dx, y+dy);
[/gml]

Si existe una view que se mueve, tal vez sea conveniente cambiar el evento Draw por Draw GUI, y utilizar device_mouse_*_to_gui
453
¿Qué tipo de objetos son?, ¿qué forma tiene la máscara de colisión de los objetos (son rectangulares, elípticos, irregulares)?, ¿pueden rotar?
454
General / Re:Ayuda PORFAVOR
Enero 29, 2018, 05:56:31 PM
Abre un proyecto de GMS, ve al menú Help -> Update license y escribe la clave en el cuadro que dice "License key". Busca la clave en alguno de tus correos electrónicos.
455
Puedes usar el algoritmo de Bresenham
https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
Adjunto una versión que hice en GML. El código está en el evento Draw del objeto obBrsn. Es el bloque de código tiene como título "Bresenham 1", en los otros bloques no recuerdo bien que modificaciones hice.

Otra opción es dibujar en una surface con la función draw_line, después copiar la surface a un buffer y del buffer extraer los valores de los pixels para pasarlos a un array o ds_grid.
456
Preguntas y respuestas / Re:Efecto de bola pinball
Enero 26, 2018, 04:02:56 AM
En el evento Mouse Left Pressed inicia un contador y en el evento Mouse Left Released asigna la velocidad dependiendo del valor del contador.
¿Usas el sistema de física?
457
Solo se puede GML, y GLSL para shaders.
458
Grafismo & Composición / Re:Graficas para un juego.
Enero 25, 2018, 04:25:57 AM
El terreno se ve muy bien, también el objeto central y el que está un poco más arriba. Los otros objetos grises creo que necesitan trabajarse más.
459
¿Los bloques de código se ejecutan en los objetos palanca correspondientes o se ejecutan en un objeto aparte?
460
En el evento Create declara una variable de estado, las variables de posición final e inicia una alarma
[gml]
/// Iniciar

estado = 0;
// estado 0: espera
// estado 1: en movimiento

// Posicion final
xfinal = 0;
yfinal = 0;

alarm[0] = segundos * room_speed;
// la posicion final se actualiza en la alarma
[/gml]
En el evento Alarm 0 actualiza la posición final y cambia al estado de movimiento
[gml]
/// Actualizar posicion final
xfinal = obPersonaje.x;
yfinal = obPersonaje.y;
estado = 1; //iniciar movimiento
[/gml]
En el evento Step realiza el desplazamiento
[gml]
/// Movimiento
if (estado == 1)
{
  //avanzar en linea recta hasta alcanzar la posicion final
  if mp_linear_step(xfinal, yfinal, velocidad, false)
  {
    //cuando llega a la posicion final
    estado = 0; //cambiar a estado de espera
    alarm[0] = segundos * room_speed; //durante unos segundos
  }
}
[/gml]
462
Preguntas y respuestas / Re:GPS game maker
Enero 23, 2018, 05:52:25 PM
Se necesitaría una extensión. Solo he visto una para GMS2.
463
La solución de Frida es la mejor opción.
464
Juegos completos / Re:Rabbit's Quest [Estilo 8-bit]
Enero 22, 2018, 06:14:08 AM
Desde que inició el juego la música me pareció excelente, ¿tú la creaste?, ¿qué software utilizaste?

Después me di cuenta de que se trataba de metroidvania, ese es mi tipo de juego favorito.

Creo que sería mejor que no existiera la capacidad de teletransportación al principio, para que algunas zonas se tengan que recorrer varias veces y descubrir cosas nuevas. Pero, si va a existir una enorme cantidad de rooms, está bien así.

Me pareció que la dificultad va incrementado a buen ritmo.

Los efectos hechos con pocos pixels están geniales.

Sería bueno poner un conjunto de controles alternativos, por ejemplo, moverse con las flechas y disparar con Z y X.

Supongo que en las siguientes versiones existirán más objetos coleccionables. Deberías poner muchos objetos en los recorridos, eso hace sentir que la exploración vale la pena.
465
Si es una red de área local, se puede hacer con las funciones de Networking. Una de las aplicaciones se configura como servidor y la otra como cliente.

Para usar Bluetooth se debe comprar un extensión, no se qué tan efectivas sean.

Si se emplea un servidor remoto, se podría realizar con las funicones http, pero de esto tengo menos conocimiento.

Se debe pensar bien en el tipo de mensajes que se deben enviar para evitar errores. Una vez realizada la conexión se podrían utilizar 3 tipos de mensajes: uno de saludo, uno con los datos y uno de verificación.