:) hola comu que tal,
ya tenia rato que no me pasaba,
alguien me podria ayudar,
el problema es que tengo una base enemiga que crea al enemigo1 durante cierto tiempo
bueno total se hacen varias instancias del mismo enemigo la cosa es que las instancias al collisionar se traban es decir que
cuando el enemigo1(instancia 1) enemigo1(instancia2) collisionas se supone que deverian decambiar de direccion de hecho lo hace pero llega un momento como que se cuatrapea y se quedan trabadas ambas instancias.
1 forma de resolverlo nose que a cierta distancia cambie de direccion pero que no cambie justo cuando esta la instancia pegada para que no se traben o algo asi no se si me explique.
la cosa es que me funciona muy bien al dejar los enemigos con la opcion de solidos desactivada pero se miran muy juntos
y no megusta, luego activo la casilla solidos y todo bien asta que luego de un tiempo se traban
Hola Francos
Lo más sencillo que se me ocurre es que cuando ambos enemigo1 colisionen entre ellos, tomen la dirección opuesta.
En el evento colisión del enemigo1 con el enemigo1 pone:
Si tu juego se ve desde arriba
direction = point_direction(other.x,other.y,x,y) //Calcula la dirección desde el otro objeto hasta mi. Si usas tu propia variable de dirección, pones tu variable en vez de "direction"
speed = velocidad //Setea mi velocidad (no es 100% necesaria esta línea, en teoría la velocidad debería estar seteada de antes)
Si tu juego se ve de lado
hspeed = (velocidad)*sign(x-other.x) //Si usas tu propia variable de velocidad, usa esa en vez de "hspeed"
Saludos
Utiliza una variable que indique si está colisionando y una alarma
[gml]
// Create
colisionando = false;
// Step
if place_meeting(obj_enemigo) and (not colisionado)
{
colisionando = true;
alarm[0] = 1;
// ... codigo para reaccionar a la colision ...
}
// Alarm 0
colisionando = false;
[/gml]
gracias usare ambas para ver cual me sirve , hola gracias por la ayuda pero no logre que funcionara no se si haya otra forma
clamud intente el code que me diste y funciono un poco segui buscando y nada pero nose si por ejemplo mires el code
code:
si evento collicion con enemigo1
speed=0
direction=el contrario de la velocidad del enemigo con todo y su imagen en direccion a la velocidad todo bien
pero lo que no me gusta es que se traban los monos quedan trabados
y con
place_meeting funciona pero luego tambien se traba
uso un mask que es igual para los enemigos no se si se pueda collisionar con el mask enves de las imagenes o algo asi
tengo un enemigo principal que no hace nada simplemente cambia al enemigo que hace todas las funciones el otro es como una salida de enemigo creo que este cuando cambia al que hace las funciones al juntarce con otra instancia se traba
nose tambian abra algo como para verificar que antes del cambio de imagen no este otro objeto sobre el o algo asi saludos y gracias
hola gracias por la ayuda pero alguna otra idea
Saludos,
Otra opción podría ser que compares la distancia x,y de ambos objetos (enemigos) y que al llegar a cierta distancia entre ellos se den la vuelta sin llegar a tocarse siquiera.
haber deja intento :)
hola clamud y nod
intente esto que me funciona pero no entiendo muy bien su funcion
me pueden explicar mas omenos como es
ley que esta variable es como para verificar
! que significa mas omenos asi como el else con diferencia que este se puede cumplir al principio de la funcion
mi codigo es variables on1=0 //collicionando on1=1 //no collision
if !place_meeting(x,y,Pasarela_1) // lo de la pasarela es como un block negro que evita que el personaje enemigo cambie a su enemigo principal el que hace todas las funciones
{on1=0} // este es para decir bueno estas colicionando como dice clamud no vas a cambiar
else
{on1=1}// bueno ya pasaste la collicion con pasarela entonces create la alarma cambio
if on1=1{alarm[0]=2} //este cambia al personaje que quiero que aga todas las funciones que es el enemigo
todo sale bien pero lo que no entiendo es ! esto en esto place_meeting lo entiendo pero muy cerradamente
por ejemplo la pasarela latengo para que los enemigos que ya son principales no collicionesn con el enemigo que acaba de salir y se trabe al cambiar al personaje principal que quiero decir es que la pasarela es un cuadro mas grande que el personaje que hace que los enemigos collicionen con el cuadro negro antes que el enemigo que ba a cambiar pero si pongo la pasarela solido se traba el enemigo que acaba de salir si lo pongo no solido no se traba pero que hace exactamente esta funcion segun verifica si hay un solido y si no lohay se cumple la funcion o como enque me perdi yo lo explico como lo entiendo para que me corrijan porque no me queda claro lode solido y no solido con !place_meeting() gracias
¿Utilizas el evento Collision?, tal vez por eso hay un cambio al activar la variable solid.
El símbolo ! significa negación. La función place_meeting devuelve true o false, es decir, está tocando o no está tocando.
Cuando se escribe esto !place_meeting, se invierte la lógica, true se vuelve false y false se vuelve true.
no no me a quedado y ya e intentado vastante ademas tengo un mas para todo los objetos y nada se traban asta puse cuando colliciona cambie de direccion pero aun asi se traba alguna otra idea
Quítale el check de sólido
mh... tienes dos sólidos, enemigo 1 y enemigo 2.
Lo más lógico es que entre ellos no se choquen, como por ejemplo en yoshi island, hay un tubo por donde suben enemigos y entre ellos no se chocan, pero son sólidos. Eso sería lo mejor, si ya quieres que se estorben.
Pero si quieres que se estorben o choquen sin quedarse pillados, en lugar de place_meeting, prueba comparando sus mask... o al realizar place_meeting que cambie su hsp al contrario de donde se choca.