Noticias

¡Ayuda a la Comunidad GM, haz una donación!

* Sponsor

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

Páginas: 1 2 3 4 ... 15
16
¡Wow! Me sorprendio un poco la noticia

Primero quiero repasar que esa noticia no es tan mala, y es que hay varios puntos a nuestro favor

Como yoyogames ha sido comprada por un navegador tan conocido como opera, eso significaria un alcance a nuevas puertas, me refiero que ahora que yoyogames es propiedad de opera eso haria que le dieran un mayor soporte para juegos onlines. Quien sabe, a lo mejor y ahora puedan añadir mas cosillas al GameMaker. En lo personal, a mi me gustaria que añadieran algunas cosillas

Bueno... Que GameMaker sea integrado a un navegador puede sernos algo dificil, ya que si fuera ese el caso entonces solo podriamos tener acceso a el con wifi, pues hay algunas personas que tienen GameMaker ya comprado y que no tienen conexión a internet; pero tambien puede que dejen de venderlo ya que si lo integran a un navegador seria algo tosco el tener que pagar y solo usarlo con un interner bueno, en mi mente no me gustaria toparme con esa posibilidad

Y... ¿Que pasara con los que ya lo compraron y lo usan en escritorio? ¿Van hacer una actualizacion y a chequear todas las cuentas para distribuirlo nuevamente o no? Eso tambien me seria un problema

Bueno yo no me preocupo mucho por eso ya que uso la version 8 del GameMaker, pero si hicieran un cambio con el GameMaker y pusieran un precio mas bajo entonces para mi seria algo indiscutible

Bueno, ya veremos que hara Opera y como influira eso en GameMaker

17
Podrias usar el primer ejemplo que te di y hacer lo siguiente:

1-Seleccionas un lugar donde guardar la captura
2-Ves en que manera esta puesta la ruta, pues recuerda que
draw_text(32, 32, "Ruta del sprite seleccionado: "+file)
Ese pequeño testeo te indica en que ruta/directorio se guardo la captura y de esa misma forma podrias ver la ruta del directorio donde se guardo. Asi para la proxima solo tendrias que memorizarte esa ruta y utilizarla al guardar captura sin tener que salir ese apartado visual

18
OmarMakero buena sugerencia, pero no deberia ser
if !foto
Sino:
if (foto != "") screen_save(foto);
Pues esas funciones solo devuelven cadenas

19
Saludos Alemar5

Te puedo indicar como funciona el "get_open_filename()", esa funcion solo sirve para seleccionar un archivo que se encuentra en tu disco duro, por lo que no hay una ruta definida en la que buscar los archivos.
/// Event Create
file = get_open_filename("Selecciona una imagen de tu dico duro |.png|.jpg|.bmp", "")
sprite = sprite_add(file, 0, 0, 0, 0, 0);

/// Event Draw
draw_text(32, 32, "Ruta del sprite seleccionado: "+file)
draw_sprite(sprite, 0, 48, 32)
Puedes usar ese codigo para probar la funcion. Ahora creo que para la funcion de get_save_filename() necesitas tener algun archivo en la pestaña de include_files (nose si esa pestaña exista en versiones posteriores a GM8)

20
Preguntas y respuestas / Re:como hacer mover un objeto
« en: Enero 19, 2021, 12:17:20 am »
Saludos

Existen muchas formas de hacer movimientos en GM, puedes hacerlo tanto con las variables de "hspeed" "vspeed" o con las posicion "x y" del objeto, te recomiendo mejor la segunda ya que se empieza hacer mas facil

Primero seria una gravedad, para eso usarias algunas variables que gestionen la fuerza con la que se caera y una variable que contenga la velocidad vertical.
Luego esta el movimiento para los lados que eso lo harias igual que con la gravedad, pero en modo horizontal
/// Event Create
hsp = 0;  //velocidad horizontal
vsp = 0;  //velocidad vertical
vel = 4;
grav = 0.6;
pixelCheck = 0.1;  //para chequear la colisión en pixeles
/// Gravedad
vsp += grav;
if (vsp > 8) vsp = 8;
repeat(vsp * 10) {
  if place_meeting(x, y+sign(vsp)*pixelCheck, obj_solid)
    vsp = 0;
  else
    y += sign(vsp)*pixelCheck;
}

/// Movimientos
var move;
move = (keyboard_check(vk_right)-keyboard_check(vk_left))
repeat(move * vel) {
  if place_meeting(x+move, y, obj_solid)
    hsp = 0;
  else
    x += move;
}
Esos repeat son para chequear colisiones y para moverlos pixel a pixel, de esa forma es facil.

Por ultimo si quieres hacer un salto... Bueno ya depende de como lo quieras, como eres un novato te sugiero probar el metodo facil
/// Event Keyboard check Space
if place_meeting(x, y+1, obj_solid)
  vsp = -10; // el resultado es negativo para que valla hacia arriba
Con eso creo que ya tendrias lo basico en el movimiento de un objeto, bueno siempre hay mas metodos que probar para hacer movimientos, hay distintas formas de hacer colisiones y movimiento, eso ya depende del tipo de juego que hagas y de como lo quieras hacer, el metodo que te doy es para un simple plataformero

21
Preguntas y respuestas / Re:Efecto Parallax
« en: Enero 15, 2021, 04:10:04 am »
Una solucion mas basica no seria...:
if (abs(vspeed) > 0)
  background_y -= sign(vspeed);

22
Preguntas y respuestas / Re:Bloques que reaparecen al azar por la room
« en: Diciembre 01, 2020, 07:55:54 pm »
Nose porque este fallando, intenta cambiar el 10 por un 11, aunque si no es eso lo que falla, entonces intenta de este otro metodo
/// Donde sea que lo hayas puesto
if !instance_exists(obj_bloque)
{
  var i, posx, posy;
  i = 0;
  repeat(10) {
    posx[i] = (irandom_range(32, 416)/32)
    posy[i] = (irandom_range(32, 160)/8)
    if (i > 0) {
      while(posx[i] == posx[i-1])
       posx[i] = (irandom_range(32, 416)/32);
      while(posy[i] == posy[i-1])
       posy[i] = (irandom_range(32, 160)/8);
    }
   instance_create(posx[i], posy[i], obj_bloque)
    // Aumentar indice
    i += 1;
  }
}

23
Preguntas y respuestas / Re:Bloques que reaparecen al azar por la room
« en: Diciembre 01, 2020, 06:41:52 pm »
Saludos Zhekken

Para resolver tu primera duda, sugiero
que cambies tu codigo por el siguiente
/// Donde sea que lo hayas puesto
if !instance_exists(obj_bloque)
{
  var i, posx, posy;
  i = 0;
  repeat(10) {
    posx[i] = random_range(32, 416)
    posy[i] = random_range(32, 160)
    if (i > 0) {
      while(posx[i] == posx[i-1])
       posx[i] = random_range(32, 416);
      while(posy[i] == posy[i-1])
       posy[i] = random_range(32, 160);
    }
    with(instance_create(posx[i], posy[i], obj_bloque) {
      if !place_snapped(32, 8)
      move_snap(32, 8)
    }
    // Aumentar indice
    i += 1;
  }
}

24
Preguntas y respuestas / Re:Función para esperar cierto tiempo
« en: Noviembre 21, 2020, 05:09:06 am »
Saludos T1ag0

En GameMaker existe una funcion llamada sleep() que sirve para detener el juego un determinado numero de milisegundos, claro, esta funcion solo lo detiene en el mismo paso, y digamos que si quieres dibujar un texto antes de ejecutarla, entonces prácticamente este texto se ejecutara despues de que hayan pasado el numero de milisegundos.
Por suerte he creado un script que hace exactamente lo mismo, a diferencia de que puedo añadirle varias cosillas extras.
Acontinuacion enmarco 3 distintas versiones del script:
///sleep_color(miliseg, color)
var i;
i = 0;
do {
  draw_set_color(argument1)
  draw_rectangle(0, 0, room_width, room_height, 0)
  screen_refresh()
  i += 1;
} until (i >= argument0)
///sleep_text(miliseg, x, y, text)
var i;
i = 0;
do {
  draw_text(argument1, argument2, argument3)
  screen_refresh()
  i += 1;
} until (i >= argument0)
///sleep_sprite(miliseg, sprite, subimg, x, y)
var i;
i = 0;
do {
  draw_sprite(argument1, argument2, argument3, argument4)
  screen_refresh()
  i += 1;
} until (i >= argument0)
No se si la funcion screen_refresh() exista en versiones posteriores a GM8, si no es asi, entonces sugiero uses sleep(1) en cada script en lugar de screen_refresh(); claro, tampoco se si al cambiarlo se ignore lo demas, pero para hacerlo mas seguro, sugiero que la parte de la verificacion la hagas en el evento draw. Osea que si es una collision la hagas en el evento draw en vez de un evento step

25
Preguntas y respuestas / Re:Se activen diferentes rutas cada cierto tiempo
« en: Noviembre 18, 2020, 02:05:20 am »
Existen varios metodos. Podrias usar una variable llamada "accion" que tenga distintos valores numericos, por ejemplo que se le vaya sumando 1 cada vez que pasa algo y luego verificar los estados que tenga
/// Event Alarm[1]
switch(accion)
{
  case 0:
  //Lo que quieras
  //Poner antes del break la misma alarma[1] pero con un distinto valor
  break;

  case 1:
  //Lo que quieras
  //Poner antes del break la misma alarma[1] pero con distinto valor
  break;
}
accion += 1;
Asi puedes usar una misma alarma pero que ejecute distintas acciones segun los estados de una misma variable, y al final de esa alarma le sumas 1 a la variable para ir a un proximo estado, o, podrias dar valores aleatorios en los mismos "case" para saltarte a cualquier "case"

Tambien estan las "time lines" por si quieres hacerlo mas sencilo

26
Preguntas y respuestas / Re:Ayuda con las alarmas, o mensajes
« en: Noviembre 17, 2020, 04:42:51 pm »
Echizen no uses "tm" para la alarma, especifique que usaras la misma array de 2Dimensiones:
alarm[0] = text[1, con]; //Si con es el indice para cada mensaje, pues usalo
No hay nada dificil en ello, pues ya te mostre que parte de la array se usa para la velocidad de cada mensaje; solo tienes que usar esa alarma y ya

27
Saludos T1ag0

Eso lo puedes hacer con el mismo instance_create, bueno no se que tan planeado quieras los movimientos pero todo podrias hacerlo programando objetos y usando alarmas.
Un ejemplo es crear una instancia de un misil y meternos en ella una vez la creemos:
/// Evento alarm[0]
with(instance_create(x, y, obj_misil)) {
  direction = point_direction(x, y, obj_p.x, obj_p.y)
  speed = 7;
}
alarm[0] = room_speed*1.5; //Fija el tiempo que quieras
En ese ejemplo nos metemos dentro de un objeto creado y le aplicamos una direccion (que seria hasta el jugador) y una velocidad. Notaras que al estar en una alarma se puede volver a utilizar indefinidamente, por lo que podrias usar una funcion choose() o irandom() para fijar distintas dimensiones

Otro ejemplo seria de que quieres crear varias instancias de distintos objetos y para ello puedes poner un choose
choose(obj_misil, obj_bala, obj_avion)

Todo depende de que es lo que quieras hacer

28
Preguntas y respuestas / Re:Ayuda con las alarmas, o mensajes
« en: Noviembre 15, 2020, 01:41:00 pm »
No no, mejor intenta de esta forma
y=288;
x=0;
image_xscale=8;
image_yscale=6;
tm=2;
con=0;
post=1;
text[0,0]="Felicidades, has llegado hasta aqui!";
text[1,0]=2
text[0,1]="Tuvo que haber sido duro, verdad?";
text[1,1]=2
text[0,2]="Tranquilo/a, se lo que te has estado#esforzando.";
text[1,2]=5
text[0,3]="...";
text[1,3]=2
text[0,4]="Te he estado viendo.";
text[1,4]=2
text[0,5]="Eres realmente fuerte. Mas de lo que#crees.";
text[1,5]=2
text[0,6]="Puedes descansar, te lo mereces.";
text[1,6]=2
text[0,7]="...";
text[1,7]=2
text[0,8]="Bueno, es hora de continuar.";
text[1,8]=2
text[0,9]="Tu puedes.";
text[1,9]=2
text[0,10]="Los dos sabemos de lo que eres#capaz.";
text[1,10]=2
text[0,11]="Confio en ti. Animo!";
text[1,11]=2
text[0,12]="Te esperare, asi que sigue#esforzandote.";
text[1,12]=2
text[0,13]="Falta poco."
text[1,13]=2
alarm[0]=tm;
fin="";
maxi=13;
esc=false;
Y para lo otro de que sigue con la misma velocidad, pues obvio, solo estas cogiendo el valor de un solo espacio en la array. Me imagino que para mostrar los distintos textos se usa una variable que sirva como indice, entonces busca esa variable y usala en la alarma, algo asi como:
alarm[0] = text[1, current_text] //una muestra para tener en claro la de cada texto
Te sugiero que cambies esa alarma que tienes en tu evento create y que busques la variable con la que posicionas cada texto del array

29
Preguntas y respuestas / Re:Ayuda con las alarmas, o mensajes
« en: Noviembre 15, 2020, 03:23:29 am »
Uso GM8 y eso no tiene nada que ver, de hecho... Yo diria que se debe a tu variable "text" ya que la usas como una array de 1Dimension y de 2Dimensiones.
Sugiero que lo arregles y que todos sean de 2Dimensiones fijas
text[0,0]="Felicidades, has llegado hasta aqui!";
text[1,0]=2
text[0,1]="Tuvo que haber sido duro, verdad?";
text[1,1]=2
text[0,2]="Tranquilo/a, se lo que te has estado#esforzando.";
text[1,2]=5
text[0,3]="...";
text[0,4]="Te he estado viendo.";
text[0,5]="Eres realmente fuerte. Mas de lo que#crees.";
text[0,6]="Puedes descansar, te lo mereces.";
text[0,7]="...";
text[0,8]="Bueno, es hora de continuar.";
text[0,9]="Tu puedes.";
text[0,10]="Los dos sabemos de lo que eres#capaz.";
text[0,11]="Confio en ti. Animo!";
text[0,12]="Te esperare, asi que sigue#esforzandote.";
text[0,13]="Falta poco."
Otra cosa es que debes ordenar fijamente los espacios de las array, si vas a poner un texto que sea en el primer espacio 0:
text[0, cualquier numero] = "" //El texto que quieras
Y si vas a poner una velocidad para la alarma, que sea en el espacio 1:
text[1, cualquier numero] = 2 //El numero que quieras
Ya con esos espacios ocupados, debes tener en cuenta que el orden debe ser seguido: 0-1-2-3-4-5-6-7-8-etc

30
Preguntas y respuestas / Re:iniciar animacion al iniciar el juego
« en: Noviembre 08, 2020, 06:38:54 pm »
Saludos T1ag0

Eso es algo que puedes hacer sabiendo cuando debes poner cada cosa

Por ejemplo puedes poner unas variables y unas alarmas para cada cosa, en tu caso
/// Event Create
texto = "" //El texto que se mostrara primero
global.ifMove = false; //Para permitir movimiento
alarm[0] = room_speed //Tiempo para que se muestre el otro texto
/// Event alarma[0]
texto = "Ya te puedes mover" //El segundo texto que se vaya a mostrar
global.ifMove = true; //Permitir moverle al ...
/// Event Draw
draw_text(320, 240, texto) //Se dibujara lo que tenga la variable "texto" en las cordenadas que quieras (yo puse esas de prueba)
Y por si... Por ejemplo quisieras que ya no se muestre texto al pulsar la primera tecla, solo debes poner un:
/// Evento de tecla cualquiera
instance_destroy();
Y listo. Lo otro de mostrar una animacion... Pues no se a que te refieres (?), pero si queres mostrar una animacion desde tu objeto personaje, solo tenes que usar un sprite_index y una alarma para inhabilitar la animacion

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