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

61
Creo que el problema puede estar en la primera parte, no lo se, pero prueba en la primera parte poniendo las variables de image entre llaves
[gml]
if (keyboard_check_pressed(vk_space) && global.puede_disparar == true)
{
  sprite_index = spr_disparo_der;
  image_index = 0;
  image_speed = 0.4;
}
[/gml]
Si no pones entre llaves las variables que quieres que se ejecuten, entonces solo se ejecutara la primera que esta despues de la condicion y las demas seran ignoradas, por eso es importante que las pongas entre llaves
62
Saludos Paublinix

En primera: Supongo que ya tienes todos los sprites del personaje del arma (obvio xD), asi que podrias almacenar en una variable que verifique cuando tengas un arma
[gml]
if (arma == true) {
  sprite_idle = spr_idle_arm;
  sprite_walk = spr_walk_arm;
  sprite_jump = spr_jump_arm;
} else {
  sprite_idle = spr_idle;
  sprite_walk = spr_walk;
  sprite_jump = spr_jump;
}
[/gml]
Y cuando oprimas las teclas de movimiento, pones que el sprite_index sea igual a la variable de sprite correspondiente
[gml]
sprite_index = spr_walk;
[/gml]

En segunda, a veces puedes tener varias armas y para esas situaciones solo podrias dibujar los sprites de esas armas en el evento draw
[gml]
if (arma_current == 0)
draw_sprite(spr_pistola, -1, x+(8*sign(image_xscale)), y)
[/gml]
De esa otra manera puede hacerse mas facil (y aun mas facil, si usaras una estructura de switch)

Claro puedes hacerlo como a ti te convenga en el momento
63
Saludos alemar5

Lo que se me ocurre para tu solución, es que almacenes los sonidos de las distintas pisadas en una variables en cada objeto de plataforma o superficie
[gml]
///Definela en cada objeto de superficie que tengas y añádeles un padre a todos para una colision unica
Superficie_sound = snd_pisada_roca;
[/gml]
Y en un evento de colision o en el codigo añade un simple verificador para que sepa cuando deba reproducirse
[gml]
if !sound_isplaying(other.Superficie_sound)
  sound_play(other.Superficie_sound);
[/gml]
Tambien puedes añadir una variable de temporizador si quieres un efecto mas concreto y calibrado
64
Preguntas y respuestas / Re:Problema al cambiar de personaje
Septiembre 01, 2020, 02:07:48 AM
Otra solucion, seria calcular el espacio de pixeles entre el origen del sprite y el ancho, y restarlo a la "y" cuando cambies al mario grande
[gml]
//Ponerlo en el codigo de transformacion
y -= sprite_get_height(spr_bigmario)/2;

//O tambien
y -= sprite_yoffset;
[/gml]
Solia hacerlo asi en mis primeros dias de GML. Aunque la solucion de DawCrash puede ser mas facil  :-[
65
Gracias por resolver mis dudad y tienes razon, normalmente con codigos asi, suelo establecer una alarma de admenos 1 para que se carguen las variables de with pero como es una bala directa... Creo que habria que pulir el codigo un poco
66
Buena mi entendimiento sobre la direction,speed,hspeed,vspeed han cambiado un poco, aunque ya entendi bien el funcionamiento de esos codigos

Creo que me urge enserio repasar las clases de matematicas  :-[

Otra duda es que cuando se crea la bala y se le aplica la direction y la speed, ¿eso hace que los componentes que son hspeed y vspeed se adapten segun... La direcion y magnitud del vector?
67
Hola Makeros, como ya vieron en el titulo, tengo algunas dudas sobre el uso de las posiciones X e Y y la direction

Mi Razonamiento Basico:
Cuando hago un juego, uso las posiciones X e Y paras darle movimiento a mi personaje y a cualquier otro de forma horizontal y vertical. Ya que usar hspeed = 4 en un evento create es lo mismo que sumar 4 a X en el evento step
[gml]
/// Evento Create
hspeed = 4 //derecha
vspeed = -4 //izquierda

/// Evento Step
x += 4 //derecha
x -= 4 //izquierda
y += 4 //abajo
y -= 4 //arriba
[/gml]
Todos conocemos que al sumarle 4 seria positivo y eso indica a la derecha y restarle es negativo a la izquierda

De esa forma le doy movimiento a mi persona o a cualquier otro. Con la direction tambien entiendo el movimiento
[gml]
// 0/360 = derecha, 90 = arriba, 180 = izquierda, 270 = abajo
direction = 270;
speed = 4;
[/gml]
Las 2 formas son realmente buenas para dar movimiento en general pero cuando hago un proyecto, solo me enfoco en una a la hora de programar para no confundirme con sus significados

Hay veces que veo algunos codigos que emplean ambos metodos y suelo entenderlos un poco por la forma en que lo usan. Por ejemplo el siguiente codigo es para rotar un objeto:
[gml]
direction += 4;
x = obj_sphere.x + lengthdir_x(64, direction)
y = obj_sphere.y + lengthdir_y(64, direction)
[/gml]
Pero me confunde... Ya entiendo para que pero no el como, la funcion lengthdir_ te devuelve el angulo y la longitud a la que asignar la X o Y dependiendo de las propiedades, pero mi concepto no me deja entender muy bien la logica

Otro ejemplo es el de crear la bala segun la direction
[gml]
/// Event Step obj_player
if (keyshoot && ammo > 0)  {
   with(instance_create(x, y, obj_bullet) ) {
      direction = image_angle;
      speed = 7;
   }

/// Event Create obj_bullet
x = x + (2*hspeed);
y = y + (2*vspeed);
[/gml]
La parte de la bala me confunde un poco; tambien hay otros ejemplos en juegos 3D que he visto y que no entiendo

Seria mas facil poner lengthdir_ en vez de eso y ya lo he hecho. Normalmente no le prestaria mucha atencion a eso y simplemente seguiria haciendo lo que llevo pero muy seguido he intentado hacer un 3D ligero y al llegar a la parte en la que me topo con alguna X sumandole una direction y..., en fin, hay mas dudas que resaltaria pero me tardaria mucho mas, asi que lo dejare hasta ahi

Disculpa si no se entendieron mis ejemplos o si las dudas no quedaron claras
68
Preguntas y respuestas / Re:Instance_destroy ()
Agosto 17, 2020, 09:41:41 PM
Ahh... Te refieres a una instancia en particular ¿no?

para ello usas el numero de instancia unica que quieres destruir
[gml]
with(10001)
  instance_destroy()
[/gml]
Eso destruira sola a esa instancia, tambien puedes manejarlo en una variable depende de como lo quieras destruir, por ejemplo si colisionas, si esta cerca tuyo, o si no le queda vida, etc

Si quieres hacerlo con una en particular, simplemente busca su id en el editor de room, pero puede ser un poco fastidioso; asi que si quieres destruirlo segun los ejemplos anteriores, solo usa funciones que devuelvan id. Un ejemplo para colisiones es:
[gml]
/// Dentro de una bala
enemy = instance_place(x, y, obj_enemy)
if (enemy) {
  with(enemy) {
    vida -= 1;
    if (vida <= 0) instance_destroy()
  }
}
[/gml]
69
Ups creo que me confundi un poco  :-[

Otra forma mas rapida y ligera de hacerlo es con la funcion instance_place(), que tambien devuelve el numero de la instancia con la que colisionas
[gml]
with(instance_place(x+sign(image_xscale), y, obj_buster))
{
   hsp = 0;
   if (image_xscale == -1)
      direction = 45;
      else direction = 135;
      speed = 5;
}
[/gml]
Y esa es otra forma de reutilizar el with()
70
Asi esta mucho mejor  :-[, ya que usas el with(), porque no pruebas a usar la instancia en vez del objeto en si. Supongo que cuando creas una bala, esta la almacenas en una variable y si ese es el caso entonces porque no la usas en el with()
[gml]
if (place_meeting(x + sign(image_xscale), y, obj_buster)) {
    with(bullet) {
        hsp = 0;
        if (image_xscale = -1)
            direction = 45;
            else direction = 135;
            speed = 5;
    }
}
[/gml]
Y si lo que haces es crear balas independientes pues... te sugiero agregarla a una variable normal
[gml]
bullet = instance_create(x, y, obj_buster);
[/gml]
Otra duda que tengo, ¿es que si ese codigo lo colocas en el obj_buster? Pues si asi es entonces dejame decirte que se derrocha para nada ese with()
71
¿Podrias mostrar un poco tu codigo para entender mejor?, por lo que dices, si una rebota todas las instancias lo hacen

Por casualida no te estas referiendo al objeto mismo con un with(), igual sugiero que muestres un poco el codigo que usas, de esa forma sabriamos en que esta fallando  ???
72
Gracias por la sugerencia, no conocia esa funcion de GameMaker, bueno claro tendre que usarla en el evento draw para no hacerlo en todos los sprites
[gml]
var shadow;
shadow = make_color_hsv(0, 0, fs);
draw_sprite_ext(spr_live, 0, x, y+8, 1, 1, 0, shadow, 1)
[/gml]
73
Saludos makeros, tengo una duda que todavia np he planteado y es: como puedo colorizar una imagen poco a poco a un colorar, no necesaria mente tiene que ser negro.

Veran conozco como reducir y aumentar el alpha y ahora quisiera aprender a colorizar un sprite (empezando por negro); normal lo hago simple con el alpha
[gml]
if (hurt == maxhurt)
   alpha = max(0.4, alpha-0.025);
if (hurt == minhurt)
   alpha = max(0.65, alpha-0.05)
[/gml]
Eso funciona muy bien para reducir el alpha segun el daño pero ahora lo que quiero es colorizarlo poco a poco y desafortunadamente la variable image_blend solo lo hace de una forma image_blend = c_black; y sumandole, no creo que funcione

Asi que quisiera solo colorizarlo al igual que con el alpha, nose algo parecido a la opcion de "intensity" en el editor de sprite  ???
74
3dgeminis dehecho la nueva beta de GameMakerStudio 2 permite multiples tipos de array usando varios corchetes a la vez
[gml]
menu[0][0][1] = "";
[/gml]
Claro no creo que el use esa beta, asi que la idea de usar ds_grids puede ser la mejor opcion; de cualquier forma ¿que tipo de menu planea hacer para usar una array tan grande?
75
General / Como y a que Edad Conocieron GameMaker
Julio 05, 2020, 08:53:21 PM
Hola Makeros, Como muchos yo he conocido GameMaker para hacer mi propios videojuegos, bueno no lo he logrado todavia pero aun me acuerdo mi primera vez y recuerdo la motivacion que tenia en ese momento

Como olvidarlo, tenia 15 años y estaba viendo fangames de Sonic en Youtube, mientras buscaba otro video, aparecio un video curioso de "Como crear un Juego de Sonic en GameMaker", y como en la descripcion decia que no se requeria programar

Bueno en retrospectiva fue una completa mentira y ese fangame nunca se termino pero no lo deje botado, segui por 3 meses viendo Tutoriales de Adderly Cespedes hasta que finalmente me di cuenta que si queria hacer algo bueno pues tenia que programar  :-X

2 años despues y aqui estoy con un mayor conocimiento en la programacion pero sin haber logrado nada xD

Bueno llevo desde los 6 años interesado, asi que menos pienso dejarlo botado, en fin no voy a dar mas recuento pues si no, terminare acaparando este Tema  :-[