Hola, empeze hace poco con el Bennu y me surgio una duda que como nunca programe ningun juego no tengo la menor idea como resolverla.
Mi rama de procesos es asi:
PersonajePrincipal---llama a---Enemigo---llama a---disparoEnemigo.
Lo que me gustaria es que el disparoEnemigo sepa donde esta mi personaje principal y se mueva hacia el.
No hay obstaculos en el camino, todavia estoy con la pantalla negra de escenario.
Aqui les dejo el proceso disparoEnemigo:
PROCESS disparoEnemigo()
BEGIN
graph=42;
x=father.x;
y=father.y;
flags=father.flags;
LOOP
graph=graph+1;
IF (graph>49)
graph=42;
END
IF (flags==0)
x=x-8;
ELSIF (flags==1)
x=x+8;
END
IF ( collision ( type disparo ) )
BREAK;
END
IF ( collision ( type protagonista ) )
BREAK;
END
FRAME;
END
END
Muchisimas gracias por su ayuda.
Gianfranco Pintus
Prueba esto que es facilillo ...
Metelo en el proceso disparoEnemigo,quita todos los avances de X,y metelo dentro del LOOP
Angle=Get_Angle(Type protagonista);
Advance(X); // X=a lo que tu quieras con tu ejemplo 8
lo unico que aunque sea facil te gira el grafico,pero tambien te valdria para quitar los flags ^^.Ya me contaras que tal te vale,ademas seguro que te ponen otros ejemplos mas practicos y complicados :P
Saludos
Perfecta la solución de DjSonik, pruébala.
También hay una opción sencilla por simple diferencia de coordenadas entre la posición del prota y del disparo, si la diferencia es mayor se mueve en un sentido, y si no se mueve en el otro.
A esta última opción se le puede dar un comportamiento de "auténtico" misil teledirigido si lo que haces es incrementar unas variables velocidad_horizontal y velocidad_vertical según la diferencia entre coordenadas sea positiva o negativa. De esta forma, mientras la diferencia de coordenadas horizontales sea negativa la velocidad horizontal crecerá y crecerá, mientras que en caso contrario decrecerá y decrecerá.
No sé si has entendido este último método, pero los resultados son ACOJONANTES, si quieres ver un ejemplo de uso en vivo puedes descargar uno de mis proyectos de juego de aviones, That Huge Sardines Can in Roids y ver como los misiles te persiguen como posesos, aquí encontrarás la descarga:
http://trinit.es/descargas/ (http://trinit.es/descargas/)
Gracias DjSonyk, me sirvio mucho. Windgate suena muy interesante, ahora voy a ver tu videojuego e intentar implementar lo que decis.
Ok, el módulo de misiles no lo hice yo, lo hizo Mephistoii666, un usuario que apenas pasa por el foro. De todas formas la idea de misil teledirigido da mucho juego, tú investiga y si tienes algo divertido súbelo sin dudarlo :D
en el game-editor ponias ''go to'' x.type protagonista y.type protagonista...
¿hay en bennu algo parecido???
GO TO... Eso es bastante sucio, no sé si en Bennu se mantiene algo así pero no lo usaría en absoluto.
Puedes obtener el ángulo entre los procesos con get_angle() y luego avanzar hacia el proceso con advance()... Creo recordar que en mi tutorial había ejemplos claros de eso...
creo recordar ahora que era ''Move to'' para ir en linea recta, algo que tampoco valia mucho porque en un pong que estaba haciendo, para que la paleta del contrario siguiera solo en el eje Y a la pelota habia que poner un script, y eso tampoco adelantaba nada...
No he usado GameMaker, pero me huele que no tiene nada que ver. Bennu es TODO código, puedes hacer lo que quieras, pero tienes que saber cómo expresarlo, hay multitud de funciones para ayudar en cada cosa, en particular el seguimiento yo veo 3 posibilidades:
1) Currar a pelo con la x,y para personalizar a tope lo que quieres a costa de echar más código.
2) get_angle ( ) para hacerlo sencillo y funcionando, la cosa seguirá la dirección correcta, en linea recta siempre.
3) Usar las funciones de IA, path_find ( ) aunque la verdad no es muy eficiente ni está bien hecha, pero funcionar funciona y es capaz de resolver laberintos.
es Game-editor y trabajaba en C, aunque en realidad es como hacer una interfaz grafica para Bennu donde puedas poner el graph donde quieras que el interfaz te lo interpreta y traduce a codigo + unas sencillas instrucciones (mover a, cambiar animacion, pulsar boton... ) que las volvia a traducir a codigo, una cosa practicamente inutil por lo menos para mi ya que no era nada facil hacer juegos como el pong...