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

1
Preguntas y respuestas / Plataformas verticales
Septiembre 12, 2020, 01:29:24 AM
Hola! Tengo unas plataformas que se mueven verticalmente, primero ascienden y una vez que tocan el techo descienden, y a la inversa si el personaje esta sobre ellas. Logré que el personaje se mueva sobre la plataforma sin problema pero sucede que si la plataforma esta bajando con el personaje encima, cuando comienza a ascender nuevamente, el personaje baja un pixel y queda estancado en la plataforma.

El código de la plataforma en el evento step es el siguiente:

[gml]
if (place_meeting(x, y - 1, obj_player)) && vsp == 0 {
    phase = 1;
}

if (place_meeting(x, y - 1, obj_spike)) {
    phase = 2;
}

if (phase == 1) {
    vsp = -2;
}

if (phase == 2) {
    vsp = 1;
}

if (place_meeting(x, y - 1, obj_player))
    obj_player.y += vsp;

if (vsp > 0) && (y >= ystart) {
    vsp = 0;
    y = ystart;
}

//Colisiones
scr_collisions();
[/gml]

El código de las colisiones es el siguiente:

[gml]//Colisiones horizontales
if (hsp != 0) {
    if (place_meeting(x + hsp, y, obj_solid)) {
        while (!place_meeting(x + sign(hsp), y, obj_solid))
            x += sign(hsp);
        hsp = 0;
    }
}
x += hsp;

//Colisiones verticales
if (vsp != 0) {
    if (place_meeting(x, y + vsp, obj_solid)) {
        while (!place_meeting(x, y + sign(vsp), obj_solid))
            y += sign(vsp);
        vsp = 0;
    }
}
y += vsp;[/gml]

Ya intente poniendo el código en "end step event", usando bbox_top, etc. sin resultados positivos
2
Cita de: bygdle en Agosto 17, 2020, 04:19:32 AM
[gml]
var obj = instance_place(x + sign(image_xscale), y, obj_buster);
if(instance_exists(obj))
with(obj) {
    // bla bla bla...
}
[/gml]
http://docs.yoyogames.com/source/dadiospice/002_reference/objects%20and%20instances/instances/instance%20functions/instance_place.html

Gracias! Voy a probarlo también
3
Gracias por tu ayuda! Lo solucioné usando el primer método que me dijiste
4
Cita de: T789 en Agosto 17, 2020, 04:11:48 AM
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()

Nono, el codigo esta en el enemigo en el que rebota la bala, el objeto buster es el nombre las balas, precisamente  :-[

Voy a probar ese método y luego te cuento, gracias!
5
Cita de: T789 en Agosto 17, 2020, 03:37:04 AM
¿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  ???

Gracias por responder, asi es, uso with() pero probé usando arma.variable y sucede lo mismo

if (place_meeting(x + sign(image_xscale), y, obj_buster)) {
        with (obj_buster) {
            hsp = 0;
            if (image_xscale = -1)
                direction = 45;
            else direction = 135;
            speed = 5;
        }
}
6
Hola, tengo el objecto "bala" que dispara el personaje y rebota en determinados enemigos cuando los golpea. El problema es que cuando una instancia de la bala rebota, el código hace que todas las demás también reboten aunque no hayan tocado al enemigo.

Hay alguna manera de hacer que solo afecte a la instancia que choca con el enemigo?
7
Hola! quería saber si hay alguna manera de acceder a las variables que son específicas para cada instancia de un objeto (las que se crean dentro el room sobre las instancias), ya que necesito acceder a ellas cuando creo una nueva instancia.

Lo que necesito hacer específicamente es que cuando se destruye una instancia y luego se crea otra en el mismo lugar, tenga la misma variable y valor que la anterior.
8
Cita de: Javier en Mayo 13, 2020, 01:40:23 AM
Ya intentaste subiendo la velocidad en que se ejecuta el room, entre mas frames mas nitidez de movimiento.

Hasta Luego!

Si, tengo la velocidad en 60 fps
9
Hola como indica el título tengo ese problema. Cuando el personaje se mueve, se ve borroso. Probando e investigando pude descubrir que se debe a que mi personaje se mueve en velocidades decimales, por ejemplo 1.4 y tengo un objeto camara que hace que la view siga al jugador.

Probé usando números enteros o round(x) y round(y) el problema se soluciona pero el personaje ya no se mueve a la velocidad que quiero. Hay alguna otra forma de solucionar esto pudiendo mantener las velocidades de movimiento del personaje en decimales?
10
Cita de: 3dgeminis en Abril 24, 2020, 08:21:35 AM
place_meeting toma en cuenta la mascara de colision, mientras que collision_rectangle las coordenadas que tu le das para definir un area de colision.

Y como sería con collision_rectangle para que cuando un objeto colisiona con otro objeto que tiene la máscara desactivada no colisionen?
11
Hola, quiero hacer que el personaje pueda trepar la escalera y pararse sobre ella cuando llega a lo más alto (similar a los juegos Megaman). Para esto hago que la mascara de la escalera sea -1 cuando el personaje esta por debajo y se active cuando el personaje esta por encima.
Estaba utilizando en las colisiones (collision_rectangle(bbox_left, bbox_top, bbox_right...) y aunque desactivo la mascara el personaje sigue sin poder atravesar (choca con el objeto). Cambie a place_meeting y funciona perfectamente.
No tengo problema en usar place_meeting pero quería saber por que esa diferencia de que con una funciona y con otra no, si básicamente hacen lo mismo.
12
Hola, tengo un jefe que se mueve saltando, la velocidad vertical es siempre la misma pero la horizontal varía. Son 8 altos, el problema es que la primera ronda de saltos la hace exactamente como quiero, pero a partir de la segunda las posiciones empiezan a variar, generalmente por 1 pixel. Por que sucede esto si en el código no hay ninguna variación? Simplemente repito una y otra vez la misma ronda de saltos
13
Hola, quiero hacer que el sprite del personaje cuando corre varíe la velocidad de acuerdo a la velocidad a la que se mueve. Es decir, a la velocidad horizontal.

Intente con image_speed = hsp

hsp es la variable que uso para la velocidad horizontal, y como le aplique fricción quiero que la velocidad del sprite sea la misma que la de la velocidad horizontal, sin embarlo al usar lo que puse arriba, image speed se ejecuta con una velocidad de 0.2

EDIT: Ya lo solucioné, era un error de image speed que figuraba 2 veces
14
Cita de: 3dgeminis en Junio 03, 2019, 07:49:18 AM
Prueba a hacer doble clic sobre la instancia

Gracias, había probado todo menos eso  :-[
15
Preguntas y respuestas / Código para instancias
Junio 03, 2019, 06:19:05 AM
Hola, hace poco empecé a usar GM Studio 2 después de varios años de usar la primera versión.

Quería saber cómo agregar código a una instancia desde el editor de Room. En GM Studio se podía lograr haciendo click derecho sobre la instancia y seleccionando "code" en el menú que se desplegaba pero en esta versión al hacer click derecho sobre las instancias no sucede nada y tampoco veo la opción por ninguna parte.