Nota: El problema que tengo se resume en 4 lineas al final del post, pero los detalles involucrados están a continuación.
Todavía sigo recuperando la información perdida, esta vez es de los "powe up" o aumento de poder, en total son 5, de los cuales 3 no están funcionando como deben, como estos poderes son diferentes a los que uno ve en tutoriales, y que ademas me falta poco código para que queden bien, solo necesito una pequeña modificación.
Estos son los "power up" defectuosos.
(https://i.gyazo.com/38e461b041471f37c12100e472a2d1e6.gif)
Como han podido ver hay 5 objetos que se destruyen y activan un efecto en el personaje, pero solo 3 tienen estos problemas como se ve en el GIF, estos serian los objetos involucrados.
(https://i.gyazo.com/9e2c75655c517b7bfde098698dce5fd1.gif)
Estos serian sus codigos
obj_Bola_Orbital_Triple
create:
///Variables
radio_bola = 60; //distancia de las bolas
angulo_bola = 0;
step:
///Codigo de la bola
x = objJugador.x + cos(degtorad(angulo_bola)) * radio_bola;
y = objJugador.y - sin(degtorad(angulo_bola)) * radio_bola;
angulo_bola = angulo_bola + 4; //velocidad de las bolas
obj_Bola_Orbital_Estrella
create:
///Variables
radio_bola = 120; //distancia de las bolas
angulo_bola = 0;
step:
///Codigo de la bola
x = objJugador.x + cos(degtorad(angulo_bola)) * radio_bola;
y = objJugador.y - sin(degtorad(angulo_bola)) * radio_bola;
angulo_bola = angulo_bola - 4; //velocidad de las bolas
obj_Escudo_Protector
create:
///Variables
image_speed = 0.1;
step:
///Codigo de la bola
action_potential_step(objJugador,objJugador,room_height+room_width,false);
obj_Poder_Bola_Orbital_Triple
create:
///Animacion
image_speed = 0.1;
collision objJugador:
///Creacion de las bolas
for(i=0; i<3; i++) //cantidad de bolas
{
id_bola=instance_create(objJugador.x, objJugador.y, obj_Bola_Orbital_Triple)
with(id_bola) {angulo_bola=120*other.i} // distancia de las bolas
}
effect_create_above (ef_firework,x,y,1,c_purple);
audio_play_sound (snd_Laser,50,false);
instance_destroy()
obj_Poder_Bola_Orbital_Estrella
create:
///Animacion
image_speed = 0.1;
collision objJugador:
///Creacion de las bolas
for(i=0; i<5; i++) //cantidad de bolas
{
id_bola=instance_create(objJugador.x, objJugador.y, obj_Bola_Orbital_Triple)
with(id_bola) {angulo_bola=72*other.i} // distancia de las bolas
}
effect_create_above (ef_firework,x,y,1,c_purple);
audio_play_sound (snd_Laser,50,false);
instance_destroy()
obj_Poder_Escudo_Jugador
create:
///Animacion
image_speed = 0.1;
collision objJugador:
///Creacion de las bolas
instance_create(x+objJugador,y+objJugador,obj_Escudo_Protector);
effect_create_above (ef_firework,x,y,1,c_yellow);
audio_play_sound (snd_Laser2,50,false);
instance_destroy()
El problema es...
El obj_Escudo_Protector no se crea cuando el jugador destruye el obj_Poder_Escudo_Jugador.
El obj_Bola_Orbital_Triple debería estar a 60 pixeles lejos del jugador rotando en dirección anti-horaria, mientras que el obj_Bola_Orbital_Estrella, debería estar a 120 pixeles lejos del jugador en dirección horaria, por lo que deben girar en dirección opuesta y tener distinto radio.
No conozco la función action_potential_step pero imagino que los dos primeros parámetros que te piden son la x e y. Por eso en el objeto del Escudo, en su evento Step debería ser:
action_potential_step(objJugador.x,objJugador.y,room_height+room_width,false);
Corrígeme si estoy equivocado.
Cita de: Zapdos43 en Agosto 15, 2017, 12:02:53 AM
No conozco la función action_potential_step pero imagino que los dos primeros parámetros que te piden son la x e y. Por eso en el objeto del Escudo, en su evento Step debería ser:
action_potential_step(objJugador.x,objJugador.y,room_height+room_width,false);
Corrígeme si estoy equivocado.
Gracias al cambio que me menciono logre hacer que el escudo aparezca, ademas estuve progresando aun mas en el problema de los proyectiles, por lo que tengo 2 problemas ahora en lugar de 3.
El problema todavía es que el obj_Bola_Orbital_Triple debería estar a 60 pixeles lejos del jugador rotando en dirección anti-horaria, mientras que el obj_Bola_Orbital_Estrella, debería estar a 120 pixeles lejos del jugador en dirección horaria, por lo que deben girar en dirección opuesta y tener distinto radio.
Esta es la diferencia que he logrado con el antes
(https://i.gyazo.com/38e461b041471f37c12100e472a2d1e6.gif)
y después.
(https://i.gyazo.com/91b303b977111f662cf8fdd3e90c7031.gif)
Visualmente ha quedado mejor pero si los poderes orbitales todavía giran al mismo lado y tienen el mismo radio.
El código que he implementado hasta ahora es
obj_Copia_Bola_Orbital_Triple
create:
///Animacion
image_speed = 0.1;
image_blend = c_yellow;
image_alpha = 1;
step:
///Efecto estela
image_alpha -= 0.1;
if image_alpha < 0 instance_destroy();
obj_Bola_Orbital_Triple
create:
///Variables
radio_bola = 60; //distancia de las bolas
angulo_bola = 0;
step:
///Codigo de la bola
x = objJugador.x + cos(degtorad(angulo_bola)) * radio_bola;
y = objJugador.y - sin(degtorad(angulo_bola)) * radio_bola;
angulo_bola = angulo_bola + 6; //velocidad de las bolas
instance_create(x,y,obj_Copia_Bola_Orbital_Triple);
instance_create(xprevious,yprevious,obj_Copia_Bola_Orbital_Triple);
obj_Bola_Orbital_Estrella
create:
///Variables
radio_bola = 120; //distancia de las bolas
angulo_bola = 0;
step:
///Codigo de la bola
x = objJugador.x + cos(degtorad(angulo_bola)) * radio_bola;
y = objJugador.y - sin(degtorad(angulo_bola)) * radio_bola;
angulo_bola = angulo_bola - 6; //velocidad de las bolas
instance_create(x,y,obj_Copia_Bola_Orbital_Triple);
instance_create(xprevious,yprevious,obj_Copia_Bola_Orbital_Triple);
obj_Poder_Bola_Orbital_Triple
create:
///Animacion
image_speed = 0.1;
collisionobjJugador:
///Creacion de las bolas
for(i=0; i<3; i++) //cantidad de bolas
{
id_bola=instance_create(objJugador.x, objJugador.y, obj_Bola_Orbital_Triple)
with(id_bola) {angulo_bola=120*other.i} // distancia de las bolas
}
effect_create_above (ef_firework,x,y,1,c_purple);
audio_play_sound (snd_Laser,50,false);
instance_destroy()
obj_Poder_Bola_Orbital_Estrella
create:
///Animacion
image_speed = 0.1;
collisionobjJugador:
///Creacion de las bolas
for(i=0; i<5; i++) //cantidad de bolas
{
id_bola=instance_create(objJugador.x, objJugador.y, obj_Bola_Orbital_Triple)
with(id_bola) {angulo_bola=72*other.i} // distancia de las bolas
}
effect_create_above (ef_firework,x,y,1,c_purple);
audio_play_sound (snd_Laser,50,false);
instance_destroy()
He conseguido que giren a la distancia y en el horario necesario.
en "radio_bola" colocas la distancia necesaria.
objBola_Antihorario
Step:
///Codigo de la bola
x = objPlayer.x + cos(degtorad(angulo_bola)) * radio_bola;
y = objPlayer.y - sin(degtorad(angulo_bola)) * radio_bola;
angulo_bola -= 6; //velocidad de las bolas
objBola_Horario
Step:
///Codigo de la bola
x = objPlayer.x + cos(degtorad(angulo_bola)) * radio_bola;
y = objPlayer.y - sin(degtorad(angulo_bola)) * radio_bola;
angulo_bola += 6; //velocidad de las bolas
O podes poner el angulo_bola negativo : -angulo_bola o multiplicarlo por 1 o -1 : angulo_bola*=-1
Cita de: TheWood en Agosto 15, 2017, 02:26:23 AM
He conseguido que giren a la distancia y en el horario necesario.
en "radio_bola" colocas la distancia necesaria.
objBola_Antihorario
Step:
///Codigo de la bola
x = objPlayer.x + cos(degtorad(angulo_bola)) * radio_bola;
y = objPlayer.y - sin(degtorad(angulo_bola)) * radio_bola;
angulo_bola -= 6; //velocidad de las bolas
objBola_Horario
Step:
///Codigo de la bola
x = objPlayer.x + cos(degtorad(angulo_bola)) * radio_bola;
y = objPlayer.y - sin(degtorad(angulo_bola)) * radio_bola;
angulo_bola += 6; //velocidad de las bolas
sigue igual. :-\
Ademas el valor negativo y positivo ya lo tienen, solo que no funciona, y respecto al radio, ambos ya tienen su diferencia, es decir 60 y 120 pixeles, pero la dirección y el radio no han cambiado, pese a que los valores son distintos el comportamiento es el mismo.
Cita de: 3dgeminis en Agosto 15, 2017, 02:35:09 AM
O podes poner el angulo_bola negativo : -angulo_bola o multiplicarlo por 1 o -1 : angulo_bola*=-1
Primera vez que escucho eso del negativo colocado en las variables, solo le di valor negativo, es decir 6 a uno y -6 a otro, al igual que el radio de uno es 60 mientras que el otro es 120, pero no se ejecuta.
Y en vez de colocar
with(id_bola) { .....}
mejor colocas
id_bola.valor = (el valor)
Y angulo_bola es la ¿velocidad o la distancia?
angulo_bola = angulo_bola + 6; //velocidad de las bolas
///Creacion de las bolas
for(i=0; i<3; i++) //cantidad de bolas
{
id_bola=instance_create(objJugador.x, objJugador.y, obj_Bola_Orbital_Triple)
with(id_bola) {angulo_bola=120*other.i} // distancia de las bolas
}
Si es la velocidad entonces deberías cambiar ese for i a
///Creacion de las bolas
for(i=0; i<3; i++) //cantidad de bolas
{
id_bola=instance_create(objJugador.x, objJugador.y, obj_Bola_Orbital_Triple)
with(id_bola) {radio_bola=120*other.i} // distancia de las bolas
}
Cita de: TheWood en Agosto 15, 2017, 04:57:44 AM
Y en vez de colocar
with(id_bola) { .....}
mejor colocas
id_bola.valor = (el valor)
Y angulo_bola es la ¿velocidad o la distancia?
angulo_bola = angulo_bola + 6; //velocidad de las bolas
///Creacion de las bolas
for(i=0; i<3; i++) //cantidad de bolas
{
id_bola=instance_create(objJugador.x, objJugador.y, obj_Bola_Orbital_Triple)
with(id_bola) {angulo_bola=120*other.i} // distancia de las bolas
}
Si es la velocidad entonces deberías cambiar ese for i a
///Creacion de las bolas
for(i=0; i<3; i++) //cantidad de bolas
{
id_bola=instance_create(objJugador.x, objJugador.y, obj_Bola_Orbital_Triple)
with(id_bola) {radio_bola=120*other.i} // distancia de las bolas
}
Aplicar el código que me ha enseñado no sirve para resolver el problema, sin embargo los resultados fueron algo interesantes e inesperados.
(https://i.gyazo.com/b3d73d341730a27fbbaaf7e62df775b4.gif)
debo admitir que se ve interesante :o, dejare guardado ese código para un futuro proyecto :), pero aun así no logre hacer que los 2 poderes orbiten en dirección opuesta en un radio distinto :-\, pero bueno al mal tiempo buena cara, seguiré en otra área del juego mientras espero alguna respuesta que me lleve a la solución.
Irónicamente el mismo código funciona bien en el proyecto de testeo que tengo en gm:S
(https://i.gyazo.com/3009f50d1a21ded3e6fdfb3b919c0a97.gif)