Lo nuevo: Esto es lo que cambie desde ayer.
(https://i.gyazo.com/3dcd62c6332aafc9c607b4689561471d.gif)
(https://i.gyazo.com/9ab655a0d92ab7af61cb6475280672c0.gif)
Comente las colisiones (están en verde) para ver si funcionaba este código de step, solo logre que la bala se destruya al tocar a estos jefes, no les hace daño ni efectos de sonido :(, cave mencionar que la vida de estos esta en un objeto controlador y no en ellos, ademas pueden apreciar que las balas solo se activan cuando colisionan con el jugador.
(https://i.gyazo.com/e82ed6ea47930aa09dfae735f0dff425.gif)
Otra cosa es que he probado con funciones como other, with y place_meeting, pero tal vez lo armo de forma equivocada, como debería armar este código para que se active todo lo que esta en { } ????
Por que no usas parents?
Intenta utilizar instance_place para detectar la colisión
[gml]
c1 = instance_place(x,y,obj_Jefe_Caminante);
c2 = instance_place(x,y,obj_Jefe_Merodeador);
c3 = instance_place(x,y,obj_Jefe_Centinela);
c4 = instance_place(x,y,obj_Jefe_Infernal);
if (c1 <> noone) or (c2 <> noone) or (c3 <> noone) or (c4 <> noone) {
effect_create_above.......
}
[/gml]
Cita de: Darkerman en Mayo 02, 2017, 06:02:46 AM
Por que no usas parents?
Todos estos son jefes con una forma distinta de combate, tendría que usar muchos eventos para deseredar, pero como todos manejan la misma variable de vida, solo necesito que colisionen con la bala.
Cita de: desplo en Mayo 02, 2017, 06:04:37 AM
Intenta utilizar instance_place para detectar la colisión
[gml]
c1 = instance_place(x,y,obj_Jefe_Caminante);
c2 = instance_place(x,y,obj_Jefe_Merodeador);
c3 = instance_place(x,y,obj_Jefe_Centinela);
c4 = instance_place(x,y,obj_Jefe_Infernal);
if (c1 <> noone) or (c2 <> noone) or (c3 <> noone) or (c4 <> noone) {
effect_create_above.......
}
[/gml]
El codigo de STEP me quedo asi
c1 = instance_place(x,y,obj_Jefe_Caminante);
c2 = instance_place(x,y,obj_Jefe_Merodeador);
c3 = instance_place(x,y,obj_Jefe_Centinela);
c4 = instance_place(x,y,obj_Jefe_Infernal);
if (c1 <> noone) or (c2 <> noone) or (c3 <> noone) or (c4 <> noone)
{
effect_create_above (ef_firework,x,y,0,c_yellow);
audio_play_sound (snd_Disparo_De_Fuego,50,false);
global.vida_jefe -= 1;
instance_destroy ();
}
Las balas solo se destruyen sin hacer nada de lo que aparece en { }, al menos el instance_destroy parece funcionar.
Cita de: Naitsabes0 en Mayo 02, 2017, 08:11:52 PM
Cita de: Darkerman en Mayo 02, 2017, 06:02:46 AM
Por que no usas parents?
Todos estos son jefes con una forma distinta de combate, tendría que usar muchos eventos para deseredar, pero como todos manejan la misma variable de vida, solo necesito que colisionen con la bala.
Puedes usar un parent vacio, y pone la colision de la bala
Cita de: Darkerman en Mayo 02, 2017, 09:44:06 PM
Cita de: Naitsabes0 en Mayo 02, 2017, 08:11:52 PM
Cita de: Darkerman en Mayo 02, 2017, 06:02:46 AM
Por que no usas parents?
Todos estos son jefes con una forma distinta de combate, tendría que usar muchos eventos para deseredar, pero como todos manejan la misma variable de vida, solo necesito que colisionen con la bala.
Puedes usar un parent vacio, y pone la colision de la bala
No tengo idea de como armar ni de como debe quedar lo que usted me esta planteando :(, todavía no tengo el conocimiento para interpretar algunos términos comunes, razón por la que he usado eventos de colisiones en vez de programarlos.
Hacer un partent, basicamente significa:
1) tener un objeto definido
2) derivar otro objeto a partir del objeto creado en 1
para que te des una idea, podemos decir que creo un objeto FELINO y hacer derivar muchos objetos, por ejemplo, un GATO, un TIGRE, un LEON.
La idea es agrupar de una forma logica los objetos para que compartan parte de código, en la mayoria de los casos.
Sin embargo, podés hacer un objeto base (como FELINO) y dejarlo vacío, sin eventos. Con la única finalidad de que sirva para agrupar a otros objetos.
En tu caso serìa crear primero un objeto jefe base, para luego ir derivando a todos los jefes.
Entonces hacer el codigo de disparo ser haría mucho mas sencillo. Sin tener que verificar los 4 fejes. Incluso si en un futuro se te da por hacer mas jefes, 20, 80, 1000. Solo bastaría derivar del objeto base.
Incluso la labor es más sencilla cuando implementás más de un disparo.
En la imagen adjunta número 1, muestro un diagrama de cómo deberia estar conformado.
En la imagen adjunta número 2, muestro la opción para derivar un jefe, de un objeto base. (El cual es llamado como "padre").
Entonces deberias crear "obj_jefe_base" y hacer que los jefes que ya estan creados vayan heredando de éste. Luego únicamente en obj_bullet debería haber un único evento de colision con "obj_jefe_base" y bastaría colocar el código de acción, o sea:
[GML]
effect_create_above (ef_firework,x,y,0,c_yellow);
audio_play_sound (snd_Disparo_De_Fuego,50,false);
global.vida_jefe -= 1;
instance_destroy ();
[/GML]