He buscado pero no he encontrado nada concreto.
Estoy haciendo un juego con vista aerea (tipico zelda) de zombies. He conseguido que los zombies caminen aleatoriamente, se paren y todo lo demas, pero no consigo que cuando camine en otra direccion le cambie el sprite. Uso un Transform Sprite pero no se que poner...
Adelanto que en todo el juego no he usado ni una linea de codigo (no se ni papa) por lo que agradeceria una respuesta sin codigo, o en caso contrario bien explicada para que lo entienda. Gracias.
Amigo el primer consejo es q trates de usar gml ya q las respuestas casi siempre van a ser asi!
Segundo puedes poner unas variables en el objeto y q cuando el objeto camine para la derecho se ponga en 0 para la izquierda se ponga 1 para arriba se ponga en 2 y abajo 3 y luego en el evento step puedes poner
Si la direccion es igual a 0
Cambiar el sprite por el sprite de la derecha
Y asi sucesivamente para todas las direcciones
Ojo esto no es gml!
La verdad si es mas complicado a gran escala usar los D&D pero si es lo que querés te explico como se hace:
No se si los zombies se te van a mover en 4 direcciones o en 8, asi que te lo explico con 4 direcciones y ni no lo cambias y ya.
En el objeto zombie añadís el evento "step", vas a la solapa "control" y agrega el icono con el < ? > y escribí lo siguiente:
direction >= 0
Luego lo mismo pero ahora escribirte esto:
direction < 45
Osea 0+45 = 45º
Y otro
direction >= 315
Osea 0-45 = 315º
Vas a la solapa "main1" y agregate el "chage sprite" (el pacman rojo) < SpC > donde los valores son:
- sprite: Sp_Zombie_Der
- subimage: -1
- speed: 1
luego hace lo mismo pero con las otras direcciones en total te quedaría algo así:
< ? > direction >= 0
< ? > direction < 45
< ? > direction >= 315
< SpC > Sp_Zombie_Der; -1; 1
< ? > direction >= 45
< ? > direction < 135
< SpC > Sp_Zombie_Arr; -1; 1
< ? > direction >= 135
< ? > direction < 225
< SpC > Sp_Zombie_Izq; -1; 1
< ? > direction >= 225
< ? > direction < 315
< SpC > Sp_Zombie_Abj; -1; 1
Me explico?
Gracias romon me a servido!
Ya quisiera aprender GML pero no se donde aprender. He visto muchos tutoriales pero te explican dando por sentado que tienes algun conocimiento de codigo y resulta imposible aprender.
Aprender gml no es difícil! Es mas de los lenguajes de programación q yo he usado este es el mas sencillo! (he usado java, c#, vs, .net, html, pascal, etc)
Si necesitas ayuda en esto del gml se q esta comunidad te puede ayudar mucho incluyendome yo q también te podría ayudar! Yo también estoy aprendiendo, antes solo utilizaba D&D y ahora no me gusta usarlo xq es mas rápido y se pueden hacer muchas mas cosas con gml! Ademas con el gml he visto q los resultados son mejores a la hora de ejecutar el juego!
Saludos y aquí estamos para ayudarte
Te recomiendo siempre, apretar F1 y leer de vez en cuando la ayuda y dominar las estructuras condicionales como IF, FOR, WHILE que es lo que vas a usar el 90% del tiempo
hola, he seguido las instrucciones, pero no consigo que cambie el sprite hacia la derecha, lo he probado con codigo gml tambien pero nada
la variable direction la estoy usando para otras cosas y no puedo usarla para esto, pero tengo creada otra variable:
os pongo el trozo de codigo:
dirgranjero = arccos((sqrt(sqr(xmove + xprevious)))/(sqrt(sqr(xmove+ymove))+(sqr(xprevious+yprevious))))
if dirgranjero < 45
and dirgranjero >= 315
{
sprite_index = spr_granjeroH_walkder
}
if dirgranjero >= 45
and dirgranjero < 135
{
sprite_index = spr_granjeroH_walkup
}
if dirgranjero >= 135
and dirgranjero < 225
{
sprite_index = spr_granjeroH_walkizq
}
if dirgranjero >=225
and dirgranjero < 315
{
sprite_index = spr_granjeroH_walkdown
}
con el codigo cambian todos los sprites perfectamente salvo el de la derecha :-X
if dirgranjero < 45 and dirgranjero >= 315
{
sprite_index = spr_granjeroH_walkder
}
Un número no puede ser AL MISMO TIEMPO (AND) menor a 45 y mayor a 315. Por ejemplo, si direccion = 0, es menor a 45, pero no cumple la segunda condición (mayor a 315), por lo que nunca cambiará de sprite.
Si AND no funciona... la solución es evidente.
CitarSi AND no funciona... la solución es evidente.
entiendo que quieres decir que en lugar de AND deberia poner OR, esto lo acabo de probar, pero no funciona.
la verdad es que, estoy empezando con el gml y voy muy verde.
evidentemente no te voy a pedir que me corrijas el codigo y me lo pongas aqui para que yo lo pueda copiar, pero si me gustaria que me explicases un poco mas
Tampoco hay mucho más que explicar, lo que se me hace raro es que no veo razón para que no puedas usar direction, lo segundo es que debes asegurarte que "dirgranjero" de verdad tenga los valores que esperas que tenga, de lo ccontrario la condición puede fallar
Si or no funciona, puedes usar
if (dirgranjero >= 0) and (dirgranjero < 46)
sprite_index = spr_granjeroH_walkder
if (dirgranjero > 314) and (dirgranjero <= 360)
sprite_index = spr_granjeroH_walkder
Gracias penumbra, me he parado a darle vueltas al asunto del direction, efectivamente con direction funciona, y ahora el or tambien. :D
a veces estar 3 horas delante del ordenador estrujandote el melon atonta bastante. :-[
Te puedo asegurar que muchas veces es mejor cambiar de aires en la programación y asomarte a la ventana o tomarte tranquilamente una taza de café con la idea de desconectar un rato.
Por cierto, ¿existe algún tutorial bueno de GML (me da igual en inglés)? Si no existe estaría bien hacer uno con ejemplos, etc incluyéndolo en esa traducción/manual que están los compis haciendo por ahí.
Saludos