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

1
Se me ocurre usar lo siguiente:
Cuando enemigo 1 o enemigo 2 creen el objeto ataque le asignar?n unas variables, que depender?n del ataque de los enemigos, y entonces el nivel de la instancia del ataque depender? del nivel del objeto enemigo 1 ? 2.
En el momento en el que el enemigo crea el ataque habr?a que hacer algo como ?sto:
var creado;
creado=instance_create(x,y,AtaqueRoca)//Crea la instancia roca y guarda su id en una variable llamada creado
creado.da?o=nivel+(ataque/personaje.defensa)//F?rmula para calcular el da?o

Asigna a la instancia creada el da?o que quieres que cause, deduciendolo del nivel y del ataque del enemigo y tuyos (la f?rmula me la acabo de inventar, tendr?s que cambiarla por la que tu uses para calcular el da?o XD)

Y cuando colisione el ataque con el personaje le debe restar vida seg?n su variable da?o. Ojal? me haya explicado bien y te sirva, suerte.  :)

Un saludo
2
He modificado un poco tu adjunto y me ha funcionado, lo vuelvo a adjuntar. Creo que la soluci?n de 15689 es m?s correcta pero es un m?todo distinto al que usabas, as? te cambio menos el juego.
He cambiado primero el c?digo de colisi?n entre el bicho y la pared, y queda as?:
if place_meeting(x+8,y,PlataformaMario)
{hspeed=-1
image_xscale = 1
}


else

{
hspeed=1
image_xscale = -1
}
Comprueba si se est? chocando por un lado y cambia la velocidad y la imagen, si no es as?, es porque se est? chocando por el otro lado, y entonces pone la velocidad y la imagen hacia all?. Si te fijas he quitado la variable hspeed1, que no era necesaria, y en lugar de eso he usado el image_xscale a la vez que cambio de direcci?n.

El segundo cambio es m?s dif?cil de explicar: lo que hace image_xscale es rotar la imagen alrededor de un eje, este eje lo puedes cambiar en las propiedades del sprite. Donde pone Origin, se define donde est?n estos ejes. Para que al girar el sprite del bicho no ocurran cosas raras, este eje debe pasar por el centro del sprite. Como el sprite tiene 17 pixeles de largo, he puesto en las propiedades del sprite que Origin en x sea 8 (La mitad m?s o menos), as? gira bien.
Para entenderte con esto te sugiero que pruebes cambiando este valor poniendolo una vez en 0 y otra en 8, as? entender?s mejor todo este rollo XD

Espero que te sirva y suerte. :)

Un saludo

Editado:
PD. Por cierto, es bueno que los tama?os de tus sprites sean potencias de 2 como 4*4, 8*8, 16*16... As? se ahorra memoria (no me preguntes por qu? XD). Si cambias el tama?o del sprite del bicho a 16*16 (quit?ndole un pixel) conseguir?s que sea potencia de 2 y que adem?s su centro sea par, para que al ponerle el eje de Origin en 8, sea exactamente en su mitad y gire mejor.
Espero haberme explicado bien, me cuesta mucho poner por escrito lo que voy pensando XD Esto tampoco es tan importante, si no quieres complicarte no es necesario.
3
Mi idea era que usases s?lo un sprite para la animaci?n en vez de un objeto entero. Te he adjuntado el ejemplo pero s?lo usando un objeto ladrillo, en lugar de usar uno para la animaci?n y otro para cuando est? parado.
He cambiado un poco la parte de c?digo que hay despu?s del if (y+16 < other.y-7) y he escrito esto:
if (y+16 < other.y-7)
{
  //instance_create(x,y,LadrilloMovimiento);
  sprite_index=Ladrillo_Movimiento
  alarm[0]=5
  sound_play(sound2);
  //instance_destroy();
}

Y en el evento alarm 0 del ladrillo he puesto que vuelva a su sprite original, lo puedes ver en el adjunto.

As? nos ahorramos un objeto, y por tanto algo de memoria 8). Seguro que puedes aplicar t?cnicas parecidas a otros objetos, por ejemplo, tienes cinco objetos de Mario, que seguro que se pueden reducir a uno o dos. El c?digo se te har? m?s complicado, pero eso ayuda mucho a pulir la t?cnica de programaci?n. Suerte  :)

PD: No quiero desviarme mucho del tema, te aconsejo que sigas probando lo de la colisi?n con los ladrillos, puede darte fallos.

Un saludo.
4
He cambiado un poco el c?digo.
En la segunda pieza de c?digo del evento colisi?n entre Mario y los ladrillos tienes escrito que se ejecute la animaci?n if (y+13 < other.y). Teniendo en cuenta que el sprite de Mario est? centrado (tiene puesto Origin en x=8, y=8) y que el de los ladrillos est? ubicado en la esquina superior derecha (Origin en x=0, y=0), he cambiado por if (y+16 < other.y-7) para contrarrestarlo.
A m? me ha funcionado bien cuando lo he probado pero quiz?s no tenga alg?n bug. Espero que te sirva.  :)

Por cierto, como consejo creo que deber?as intentar usar menos objetos, por ejemplo el objeto del bloque realizando la animaci?n (LadrilloMovimiento) es prescindible. Suerte en tu juego, que vas muy bien.

Un saludo.