Bueno yo habia hecho una pregunta anteriormente donde decia que me ayudaran a q el personaje segundario lo siguiera y me dieron esto pero no lo entiendo:
Simplemente haz un array con dos posiciones paso[0,0] y paso[0,1], y paso [1,0] y paso [1,1] cada step o evento de movimiento en el que hagas que el personaje se desplace en su eje X o Y (inicializa paso[0] y paso[1] en create , en ese mismo evento y debajo pon algo asi donde pers es el personajillo que te sigue:
C?digo:
Citar
//tenemos paso[0] y paso[1] ambos con subindices tambien 0 y 1, pondremos que el subindice 0 es para las X, y el 1 para las Y, y el indice de la izquierda 0 y 1 para el paso 0 o el paso 1
paso[1,0]=paso[0,0];
paso[1,1]=paso[0,1];
paso[0,0]=xprevious;
paso[0,1]=yprevious;
pers.x=paso[1,0];
pers.y=paso[1,1];
Ese es el codigo que no lo entiendo y que quisiera que me lo expliquen.
Grax por si me lo explican, por que trate con este codigo pero no me gusta:
move_towards_point(obj_personaje1.x, obj_personaje1.y, 5);
La gracia de esto que te puse es que son variables tipo array, ademas bidimensional, con dos indices de la forma variable[indice1,indice2]
entonces .. bueno mas que nada es explicarte como funcionan los arrays (te van a ser muy utiles como maker.. casi te diria que son las variables que mas juego te van a dar y con las que te puedes ahorrar muchos quebraderos de cabeza y lineas de codigo, asi que prestale atencion o lee sobre ellas o busca ejemplos, voy a intentar explicarlo)
ponte que queremos hacer una lista de dinero de 5 personas, personas que van del 0 al 4 (para aprovechar la posicion 0), nota, de momento usamos arrays unidimensionales, mas abajo pasamos a bidimensionales
tendriamos
dinero[0]=20;
dinero[1]=40;
dinero[2]=50;
dinero[3]=100;
dinero[4]=10;
tenemos 5 valores en el array, que corresponden a 5 personas, cada una con una cantidad que yo he elegido
entonces.. imaginate que quiero sumar el dinero de todos porque es una puesta en comun.. tendria que ir uno por uno?? y decir.. suma=dinero[0]+dinero[1]+dinero[2]+dinero[3]....
es una perdida de tiempo ya que los arrays tienen la ventaja que puedes jugar con sus indices
si hicieras un for lo podrias hacer todo de una tirada, primero inicializarias suma a 0 y luego..
suma=0;
for(i=0;i<5;i+=1){
suma=suma+dinero[ i ];
}
date cuenta que en el indice hemos puesto i que es el indice que va a ir cambiando en el for, de 0 a un numero menor que 5 sumando de 1 en 1 (asi funciona el for que he puesto)
bien, con esto tenemos que si ahora queremos asociarle el dinero a un nombre de persona tendriamos que hacer una lista aparte no?
aparte de los dinero... haria falta una de nombres llamada nombre
nombre[0]="Jose";
nombre[1]="Pepe";
nombre[2]="Diego";
nombre[3]="Rafa";
nombre[4]="Ramon";
y seguido a esto recordamos el valor del dinero que tenia cada uno
dinero[0]=20;
dinero[1]=40;
dinero[2]=50;
dinero[3]=100;
dinero[4]=10;
Entonces a nuestra forma de entender, el 0 es Jose y tiene 20, el 3 es Rafa y tiene 100, el 4 es Ramon y tiene 10...
son variables separadas que comparten indice, puedes jugar asi, o decidir hacer un array bidimensional
unificariamos todo con dos indices,, recordamos que la estructura era variable[indice1,indice2]
Entonces, indice1 lo usaremos como antes, para el numero de la persona (del 0 al 4), y indice2 lo vamos a usar con valor 0 o valor 1, si es 0 estamos con el dinero, y si es 1 estamos con el nombre de la persona, quedaria asi, unificado lo vamos a llamar listado
listado[0,0]=20;
listado[0,1]="Jose";
listado[1,0]=40;
listado[1,1]="Pepe";
listado[2,0]=50;
listado[2,1]="Diego";
listado[3,0]=100;
listado[3,1]="Rafa";
listado[4,0]=10;
listado[4,1]="Ramon";
Bien, contando con que entiendes esto, el ejemplo que te puse es que cada step que da el personaje, osea en cada instante que tu decides que se mueve (quiza lo hayas hecho por el evento Key Left o Right, no lo se la verdad, en donde hayas hecho que su eje X o Y cambie pones a continuacion el codigo que te di)
Te explico como funciona..
paso[1,0] acumula el valor del eje X del personaje en cierto momento
paso[1,1] acumula el valor del eje Y del personaje en cierto momento
y con paso [0, ] pasa lo mismo tanto en el 0 como en el 1, lo que pasa es que con paso[0, ] guardamos justo el paso anterior, pero antes de hacerlo le decimos a paso[1, ] que acumule el que tiene paso[0, ] asi creamos una memoria de los ultimos dos pasos del personaje, donde estaba hace un paso (en paso[0, ]) y donde estaba hace dos pasos ( en paso[1, ]). de esta manera si el personaje obedece a paso[1, ] andara con dos pasos de retras respecto al personaje, lo que dara la impresion de que lo persigue a su misma velocidad, que es lo que nos interesa, porque un move_towards_point()... deja mucho que desear..
espero que te haya servido
Grax men, pero creo que tiene algo mal o algo que no puse, ademas tu me diste el codigo en este orden
paso[1,0]=paso[0,0];
paso[1,1]=paso[0,1];
paso[0,0]=xprevious;
paso[0,1]=yprevious;
Poochyena.x=paso[1,0];
Poochyena.y=paso[1,1];
Pero nos suelta error, y lo cambie de posicion a este:
paso[0,0]=xprevious;
paso[0,1]=yprevious;
paso[1,0]=paso[0,0];
paso[1,1]=paso[0,1];
Poochyena.x=paso[1,0];
Poochyena.y=paso[1,1];
Pero cuando llego a la room con el personaje principal, el personaje secundario no se mueve se queda quieto.
Me falto algo, yo puse el codigo en el evento Create del personaje principal, no se si toca poner otro en el del personaje secundario?
Men, grax por explicarme lo que signifcaba y eso (te daria un Karma o 2, pero no se como darlos)
te he vuelto a escribir aqui que este codigo debes ponerlo en el mismo evento en el que hagas que el personaje se mueva, si tienes la funcion keyboard_checl(vk_left) y todo el percal en step, pues pon este codigo en step, si lo tienes en eventos de keyboard ponlo en los eventos de keyboard
ES EN CREATE DONDE DEBES INICIALIZAR
paso[0,0]=x;
paso[0,1]=y;
paso[1,0]=x;
paso[1,1]=y;
esto se ejecuta en create, y nunca mas, para inicializarlo. Lo otro en el evento que te he comentado que debas ponerlo arriba, no se como tendras montado el movimiento del personaje
Men, grax me sirvio (alguna vez te equibocas al responder una pregunta de este tipo), eres un master, te debo 2 karmas (te los dare cuando sepa darlos). :D ;D
Solo que ahora tengo otro problema, el personaje secundario esta pegado (encima practicamente) y cuando hay una animacion de caminar se queda quieto hasta que el personaje principal se quede quieto o cambie de direccion.
Ya se cual es el problema es que cuando oprimo las flechas su funcion es moverse todo el tiempo en su direccion correspondiente y hasta que la suelte para. lo que escribiste solo funciona cuando oprimo varias veces esa direccion.
:( ahora como le hago?? :(
pues quitalo del evento de la tecla y ponlo en step y te ahorras quebraderos de cabeza ;) seguro que te funciona
Bueno ahora si esta pegado (pero esta encima y no puedo ver el personaje principal)
ok cambia el orden del codigo que cambiaste a como te puse... ponlo asi
paso[1,0]=paso[0,0];
paso[1,1]=paso[0,1];
paso[0,0]=xprevious;
paso[0,1]=yprevious;
Poochyena.x=paso[1,0];
Poochyena.y=paso[1,1];
De las dos formas pasa, se queda encima del personaje principal slo se le be el frente, todo lo de atras esta cubierto por el 2 personaje.
Sera que hay que a?adirle algo o quitarle? :(
Me da que en vez de usar dos arrays va a haber que usar 5 pongamosle.. acuerdate de inicializar esto en create:
paso[0,0]=x;
paso[0,1]=y;
paso[1,0]=x;
paso[1,1]=y;
paso[2,0]=x;
paso[2,1]=y;
paso[3,0]=x;
paso[3,1]=y;
paso[4,0]=x;
paso[4,1]=y;
y esto ya en el step donde estaba antes:
paso[4,0]=paso[3,0];
paso[4,1]=paso[3,1];
paso[3,0]=paso[2,0];
paso[3,1]=paso[2,1];
paso[2,0]=paso[1,0];
paso[2,1]=paso[1,1];
paso[1,0]=paso[0,0];
paso[1,1]=paso[0,1];
paso[0,0]=xprevious;
paso[0,1]=yprevious;
Poochyena.x=paso[4,0];
Poochyena.y=paso[4,1];
si no va ya es para pegarse un tiro xD
Jejej ahora si, aunque esta un poco separado pero asi esta bn, men grax