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 ... 10
1
Preguntas y respuestas / Re:Pregunta sobre las Grids
« en: Julio 08, 2018, 05:48:46 pm »
Puedes usar un sistema de colisión como en el ejemplo adjunto, pero cambiando el array 2D por una ds_grid.
Existen muchas técnicas para generar niveles aleatorios, algunas se han mencionado en el foro.
Si se muestra la grid alineada a la view se puede calcular fácilmente que área de la grid está dentro de la view y dibujar solo esa parte. En Don't Starve se utiliza perspectiva, para no hacer cálculos complicados se podría dibujar una zona más grande así evitar partes de la view sin spites.
Las grids pueden almacenar números y cada número representar a un sprite u objeto. El mundo puede estar formado por muchas grids y cada grid puede estar almacenada en un archivo. En el juego se debe cargar un número reducido de grids, cuando se avanza a una zona diferente se borran los segementos más alejados y se cargan otros segmentos. Tal vez sea conveniente mantener 9 grids en la memoria: 1 grid donde se encuentra el personaje y 8 grids que rodean.
Los siguientes usuarios dieron las gracias a este tema: Goganpis

2
Preguntas y respuestas / Re:Ayuda
« en: Junio 24, 2018, 07:26:55 pm »
El problema es que al rotar la máscara de colisión cambia y a veces la función mp_potential_step trata de buscar una salida desde una posición con colisión.
En el evento Create declara una variable para controlar el ángulo del sprite
angulo = direction;
En el evento Step sustituye la variable image_angle por angulo.
Y en el evento Draw dibuja el sprite de esta forma
draw_sprite_ext( sprite_index, image_index, x, y, 1, 1, angulo, c_white, 1 );
Los siguientes usuarios dieron las gracias a este tema: Sr.Mojon

3
Preguntas y respuestas / Re:Crear un falso3d con primitivas
« en: 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.
Los siguientes usuarios dieron las gracias a este tema: grimnir6

4
Preguntas y respuestas / Re:Shooting Palabras
« en: 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.
Los siguientes usuarios dieron las gracias a este tema: tamuztech

5
Preguntas y respuestas / Re:Lateralidad de las colisiones
« en: 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.

// 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;
  }
}
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.
Los siguientes usuarios dieron las gracias a este tema: Marth

6
Preguntas y respuestas / Re:Traduccion con fuentes
« en: Mayo 11, 2018, 02:11:29 pm »
Tal vez las fuentes no son compatibles con UTF-8
En la ventana de propiedades de la fuente en GMS, ¿si escribes en el cuadro de prueba se muestra el mismo texto?
Los siguientes usuarios dieron las gracias a este tema: Dublan

7
Preguntas y respuestas / Re:Se borran las matrices???? (array de 2)
« en: Mayo 11, 2018, 02:06:50 pm »
Puedes elimiar el array de esta forma
http://www.comunidadgm.org/preguntas-y-respuestas/dudas-sobre-arrays/

Puedes utilizar ds_grid y escribir el mismo valor en todas las celdas con
ds_grid_clear(grid, valor);
Los siguientes usuarios dieron las gracias a este tema: prototipozero

8
Preguntas y respuestas / Re:Traduccion con fuentes
« en: Mayo 08, 2018, 05:19:42 pm »
¿Cómo se ha agregado la fuente al proyecto?
Los siguientes usuarios dieron las gracias a este tema: Dublan

9
Se puede simular la presión de una tecla con
keyboard_key_press(vk_up);
y para que la tecla ya no se detecte como presionada se debe presionar y soltar la tecla o usar la función
keyboard_key_release(vk_up);
Debes usar esas funciones junto a las funciones
gamepad_button_check_pressed
gamepad_button_check_released
pero creo que es mejor usar el método con if.
Los siguientes usuarios dieron las gracias a este tema: nonoroman

11
Preguntas y respuestas / Re:Desordenar tres listas de la misma manera
« en: Abril 29, 2018, 05:32:22 am »
Buena solución.
Hace poco estaba pensando en cómo comprobar que las funciones shuffle usan el mismo generador de números que las funciones random. Esto lo demuestra.
Los siguientes usuarios dieron las gracias a este tema: getnoff

12
Preguntas y respuestas / Re:Dibujar efecto de agua!!!
« en: Abril 16, 2018, 06:55:24 pm »
Puedes utilizar algo como esto.
http://www.comunidadgm.org/desarrollo-de-scripts/distorsionar-sprites/
Tal vez debes ajustar algunos parámetros como la velocidad de las ondas y su amplitud. También puedes dibujar encima un sprite azul con baja opacidad.

En realidad es más eficiente usar shaders. En el marketplace hay muchos (por el momento el marketplace no está disponible :o).
Puedes basarte en estos ejemplos
http://xorshaders.weebly.com/tutorials/8-wind-shader
https://github.com/h3rb/gml-pro
Los siguientes usuarios dieron las gracias a este tema: Goganpis

13
Preguntas y respuestas / Re:Como trabajan los archivos???
« en: Abril 16, 2018, 06:40:19 pm »
En GM8 no se pueden usar buffers, solo son espacios de memoria donde puedes escribir datos byte por byte.

En Minecraft se utilizan varias técnicas avanzadas de optimización, hacer una réplica no es tan sencillo como parece.
Hay varios ejemplos de Minecraft hechos con GML. Por ejemplo: https://enigma-dev.org/edc/games.php?game=65

Para aprender sobre estructuras de datos puedes comenzar con el artículo de NiuWeb
http://www.comunidadgm.org/articulos/estructuras-de-datos-mapas-y-listas-(programacion)/
y con el manual traducio
https://bygdle.xyz/gamemaker/manual/Referencia/Estructuras_de_datos/
Aún no hay información sobre ds_grids, pero funcionan de forma parecida a las ds_lists.
Los siguientes usuarios dieron las gracias a este tema: Goganpis

14
Preguntas y respuestas / Re:Dudas sobre arrays
« en: Abril 16, 2018, 06:17:38 pm »
Sí, los arrays se pueden declarar como variables locales con var. Al terminar el bloque de código los valores se borran de la memoria.
Ejemplo:
// Create
var arr;
arr[0] = 1;
arr[1] = 4;

// Draw
// Lanzará error porque arr ya no existe
draw_text(x,y, arr[0]);

Otra forma de borrar el contenido de un array es asignar un valor como a una variable simple.
Ejemplo:
arr[0] = 1;
arr[1] = 4;
arr[1] = 5;
arr[1] = 9;
//arr continen 4 valores

arr = 0;
//los valores anteriores se borraron
Los siguientes usuarios dieron las gracias a este tema: getnoff

15
Preguntas y respuestas / Re:salto en plataforma 3d
« en: Abril 16, 2018, 06:03:14 pm »
Estoy pensando que el método con instance_position solo funciona bien en GM8. Una alternativa para encontrar la altura del suelo es esta:
ins1 = true; //para determinar si es la primera instancia que se revisa
with (obj_piso) {
    if place_meeting(x,y, other.id) {
        if (other.ins1) { //primera instancia
            other.gnd = id.z1; //altura de esa instancia
            other.ins1 = false; //ya se revisó
        }
        else{
            //si la altura es mayor, sustituye a la anterior
            other.gnd = max(id.z1, other.gnd);
        }
    }
}
Debe ser más segura en todas las versiones de GM.
Los siguientes usuarios dieron las gracias a este tema: Ares074

Páginas: [1] 2 3 ... 10