Muchas gracias, pero se me es mas cómodo si alguien pasa el manual así como lo explique ya que es visualmente mejor
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
17
Preguntas y respuestas / Re:Acciones al presionar y soltar un botón.
Marzo 21, 2020, 10:05:45 AMCita de: Dager en Marzo 21, 2020, 09:58:14 AM
Buenas a todos!
Necesito una mano con mi código en un juego que estoy programando, ya que me esta dando demasiados problemas.
Estoy trabajando en un juego 2d de plataformas.
Intento programar un ataque cuerpo a cuerpo con una cuchilla al usar la tecla K, pero no tan simple.
Lo que quiero lograr es, que al mantener presionada la tecla K, el personaje muestre que tiene una cuchilla en su mano
(y puedas moverte libremente con ella en la mano) pero, al momento de soltar la tecla K, este realice un corte hacia
adelante y al terminar la animación, la esconda.
Para ser mas específicos, la mano con la cuchilla es un objeto distinto del personaje. Se que si quiero que este objeto
(la mano con el cuchillo) permanezca oculto, tengo que esconderlo por default... Y mostrarlo al presionar la tecla K
(obviamente, debo hacer que la mano con el cuchillo siga al personaje estando encima de este, para que parezca
que forma parte del mismo sprite del personaje aunque no sea así) y luego, al soltarla hacer la animacion del corte
para volver a ocultarse (el objeto de la mano con cuchillo) al terminar la animacion.
Obviamente, ya tengo todos los sprites dibujados.
Lo que estoy usando al principio del codigo de este objeto es...
keyAttack = keyboard_check_pressed(ord("K")); //Comprueba si la tecla K esta siendo presionada
keyAttackRelease = keyboard_check_released(ord("K")); //Comprueba si se dejo de presionar la tecla K
Pero, tengo muchos problemas como por ejemplo, no logro que la mano siga al personaje al mantener la tecla K,
este objeto simplemente se queda fijo en la ultima posicion donde estuvo el personaje cuando fue llamada.
Y tampoco logro que la animacion funcione correctamente al soltar la tecla K, son 3 sprites los del objeto de
la mano con el cuchillo.
He intentado de todo y me tiene super cansado. Agradecería que puedan ayudarme con esto.
Muchas gracias!
Ya que ando por aquí, mientras que alguien que sepa te responde, mírate este vídeo que quizá te interese:
https://www.youtube.com/watch?v=U-7Jqy-mIfE
18
Preguntas y respuestas / Re:Manual de Game Maker Studio 2
Marzo 21, 2020, 09:45:30 AMCita de: kostra en Marzo 21, 2020, 08:53:51 AM
debería salirte en esp sin cambiar nada, en qué idioma tienes el pc? mira ver que no sea eso
Y el archivo 5pice es 5piceIDE.exe y se trata del mismo proceso de game maker
tengo mi pc en español, no tengo instalado game maker studio 2, solo el 1, y el manual del 1 me sale en ingles
19
Preguntas y respuestas / Manual de Game Maker Studio 2
Marzo 21, 2020, 08:33:16 AM
Pido disculpas por crear otro Post tan rápido... pero para mas comodidad para mi uso del Game Maker les vengo a pedir un favor....
como ya saben el manual del game maker studio viene por defecto en ingles, y estuve revisando y sin necesidad de tener el game maker studio instalado puedes usar el manual que trae por defecto... como mi pc es algo vieja no me corre el game maker studio 2, y la verdad aunque me corriera, seguiría usando el studio 1 porque ahí tengo mi licencia standar... hace tiempo alguien pregunto que donde podía conseguir el manual de game maker studio 2 en español, y alguien le respondió diciéndole que ya el gms2 trae su manual en español.... por lo que acá no vengo con una duda si no a pedirles el manual, alguno podría subirlo a alguna pagina como mega o mediafire para descargarlo? creo que incluso por acá se puede... no se si la ruta de instalación de gms2 sea igual a la del 1 pero mi manual esta acá:
C:\Users\Zhekken\AppData\Roaming\GameMaker-Studio
y es el archivo que se llama: 5pice
Este trae como un signo de interrogación amarillo y el formato es .chm
no se si crear un post para pedir esto este en contra de las reglas pero me ayudarían mucho si suben el manual para descargarmelo y al fin tenerlo en español sin tener que depender del internet... incluso podría servirle a los que aun usan el game maker studio 1 y quieran usar el manual en español... y tengo claro que quizá el manual del gms2 tenga cosas nuevas que no tiene el gms1 pero aun así podría servirme mucho.. Muchas Gracias :)
como ya saben el manual del game maker studio viene por defecto en ingles, y estuve revisando y sin necesidad de tener el game maker studio instalado puedes usar el manual que trae por defecto... como mi pc es algo vieja no me corre el game maker studio 2, y la verdad aunque me corriera, seguiría usando el studio 1 porque ahí tengo mi licencia standar... hace tiempo alguien pregunto que donde podía conseguir el manual de game maker studio 2 en español, y alguien le respondió diciéndole que ya el gms2 trae su manual en español.... por lo que acá no vengo con una duda si no a pedirles el manual, alguno podría subirlo a alguna pagina como mega o mediafire para descargarlo? creo que incluso por acá se puede... no se si la ruta de instalación de gms2 sea igual a la del 1 pero mi manual esta acá:
C:\Users\Zhekken\AppData\Roaming\GameMaker-Studio
y es el archivo que se llama: 5pice
Este trae como un signo de interrogación amarillo y el formato es .chm
no se si crear un post para pedir esto este en contra de las reglas pero me ayudarían mucho si suben el manual para descargarmelo y al fin tenerlo en español sin tener que depender del internet... incluso podría servirle a los que aun usan el game maker studio 1 y quieran usar el manual en español... y tengo claro que quizá el manual del gms2 tenga cosas nuevas que no tiene el gms1 pero aun así podría servirme mucho.. Muchas Gracias :)
20
Preguntas y respuestas / Re:Problema con ataques según la distancia
Marzo 20, 2020, 06:39:20 PMCita de: correojon en Marzo 20, 2020, 12:27:14 PM
Primero, esta parte:
obj_bala.step:
[gml]if place_meeting(x,y,obj_enemigo){
instance_destroy()
}
if distance_to_object(obj_enemigo) < obj_torre.rango_vision and object_exists(obj_enemigo){
move_towards_point(obj_enemigo.x,obj_enemigo.y,5)
}[/gml]
object_exists(obj_enemigo) lo usamos para comprobar si existe alguna instancia del objeto obj_enemigo, por lo que es más aconsejable ponerlo antes de intentar hacer nada con obj_enemigo, como chequear la distancia o ver si estamos chocando con una instancia. Además, si chocas con un enemigo destruyes la bala, por lo que no haría falta seguir comprobando la distancia para moverse. Así que el código quedaría así:
[gml]
if instance_exists(obj_enemigo){//Ojo, hay que usar instance_exists, no objec_exists. Mira las diferencias en el manual.
if place_meeting(x,y,obj_enemigo) instance_destroy();
else if distance_to_object(obj_enemigo) < obj_torre.rango_vision move_towards_point(obj_enemigo.x,obj_enemigo.y,5);
}[/gml]
Respecto a que las balas sigan sólo al primer enemigo eso es porque estás usando obj_enemigo, que es el nombre genérico del objeto, en vez de usar el id de la instancia concreta que quieres seguir. Si no tienes clara la diferencia entre un objeto y una instancia te recomiendo que compruebes el manual porque esto es algo básico que te va a hacer falta para muchas cosas.
Volviendo a tu duda, lo que tenemos que hacer es identificar al enemigo concreto que ve la torre y decirle a cada bala que siga a ese enemigo.
obj_torre.step:
[gml]
if enemigo_detectado==noone{//Si NO hemos detectado a ningún enemigo
var vEnemy = instance_nearest(x, y, obj_enemigo);//Me guardo la id del enemigo más cercano en una variable temporal
if point_distance(x, y, vEnemy.x, vEnemy.y) < rango_vision{//Compruebo a ver si hay está dentro del rango
enemigo_detectado = vEnemy;//Me guardo la id en la variable enemigo_detectado.
tiempoDisparo = tiempoDisparoMax;//Y pongo la cuenta atrás para el tiempo de disparo
}
}else{//Ya tenemos un enemigo_detectado
if tiempoDisparo > 0 tiempoDisparo--;//Reduzco la cuenta atrás para disparar
else{//Cuando la cuenta atrás se complete
with (instance_create(x, y, obj_bala)) enemigo = enemigo_detectado;//Creo una bala y le paso la id del enemigo que había detectado
enemigo_detectado = noone;//Marco que ya no tengo enemigo, así puedo volver a intentar detectar a otro enemigo, o al mismo si sigue dentro del rango
}
}
[/gml]
He definido unas cuantas variables nuevas que tendrás que inicializar en el evento create:
[gml]
enemigo_detectado = noone;//id del enemigo detectado o noone si no hemos detectado nada
tiempoDisparo = 0;//Variable para hacer la cuenta atrás del disparo
tiempoDisparoMax = 2;//Valor máximo de la cuenta atrás
[/gml]
Ahora, a obj_bala le tenemos que decir que use la id del enemigo que le hemos pasado. Modificamos el código que teníamos antes y donde usábamos obj_enemigo ponemos enemigo, que es la variable que hemos usado al crear la bala para guardar la id del enemigo más cercano:
obj_bala.step:
[gml]
if instance_exists(enemigo){
if place_meeting(x,y,enemigo) instance_destroy();
else if distance_to_object(enemigo) < obj_torre.rango_vision move_towards_point(enemigo.x,enemigo.y,5);
}[/gml]
En el evento create de obj_bala tienes que inicializar la variable enemigo = noone;
Con esto te debería funcionar, aunque te va a pasar que por ejemplo si el enemigo se aleja mucho de la bala la bala se queda parada. Creo que deberías hacer que en este caso la bala siguiera recta y se destruyera al salir de la pantalla, o algo así.
Bueno de todas formas, creo que es importante que consultes el manual y que entiendas bien la diferencia entre objeto e instancia. Mira también las funciones que tienen versiones de objeto e instancia para entender bien para qué sirve cada una.
Ánimo!
al ver toda tu explicación y que prácticamente me corregiste todo mi código, solo me doy cuenta de que aun me falta mucho por delante para poder hacer a lo que a simple vista para mi era un juego "simple" y quizá exagero pero sin tu ayuda no me hubiera dado cuenta de la diferencia entre "object_exists y instance_exists" con el código que pasaste ya puedo saber mas o menos como detectar una instancia por separado, supongo que esa era la clave para la idea de este juego... la verdad hubiera sido mas "simple" hacer que las balas se disparen una sola vez en dirección al primer objeto(instancia) que detectan, pero así las balas tendrían probabilidad de fallar y eso no me gusta, por eso quería que las balas persigan...
´pase todo tu código al juego pero me da varios errores, y la verdad prefiero dejar el editable por si lo quieres revisar así se te haga mas cómodo...
por cierto si lo vas a revisar(o alguien mas) pido disculpas por el desastre que tengo en mis objetos, es que pensé que seria un proyecto pequeño donde solo haría pocas cosas y termine haciendo un desastre por no querer hacer un Background..
21
Preguntas y respuestas / Problema con ataques según la distancia
Marzo 20, 2020, 09:46:07 AM
disculpen el nombre de este titulo pero no sabia como ponerle :'(
necesito ayuda con un juego de Tower Defense, para "resumir" mi duda, pasa que hice un cubo que tiene un rango de alcance de 60 pixeles, cada vez que el objeto enemigo pasa por este rango, se crea una bala que persigue al objeto enemigo con el codigo:
if distance_to_object(obj_enemigo) < obj_torre.rango_vision and object_exists(obj_enemigo){
move_towards_point(obj_enemigo.x,obj_enemigo.y,5)
}
quería que mientras la distancia entre el objeto enemigo sea menor que el rango de visión que tiene el objeto torre, y mientras exista el objeto enemigo(esta parte en la que si el objeto exista o no, me confunde y no se si lo puse bien pero sin esto la bala al no detectar un obj_enemigo y ya estar en "persecusion" cuando desaparece el obj_enemigo me manda un error) entonces se creara una bala (esto de que se cree la bala esta en otro código parecido al de arriba solo que esta es para que la bala siga al enemigo y el otro para crear la bala mientras este en el rango) que perseguirá al objeto enemigo.... no se si deba pasar el código completo, pero mi problema es que mi alarma crea la bala después de que el objeto enemigo sale del rango, no me llevo bien con las alarmas :( y también que mi idea era que mientras el objeto enemigo este dentro de este rango el objeto torre pueda disparar balas, y esta sigan al objeto enemigo (esto dando igual si ya salio del rango porque se supone que ya la bala fue disparada)... todo bien en esto pero el problema mas grave es que cuando la bala comienza a perseguir al objeto enemigo, asi haya otro objeto enemigo, la bala sigue persiguiendo al que va de primero, les dejo un gif para que entiendan el problema de forma visual...
Quiza sea muy confusa mi duda, pero quiero que cuando se cree el obj_bala esta persiga al obj_enemigo, pero no que todas las balas persigan a un mismo enemigo si no al que este dentro del rango solamente, osea el objetivo mas cercano en ese instante... mejor dejo los códigos por si acaso y así puedan ayudarme mejor:
obj_torre en Create:
poder = 0
rango_vision = 60
alarm[0] = -1
obj_torre en Step:
rango_vision = 60
if distance_to_object(obj_enemigo) < rango_vision {
alarm[0] = 2
}
obj_torre en alarm 0 :
if alarm[0] == 0 {
instance_create(x,y,obj_bala)
}
obj_bala en step:
if place_meeting(x,y,obj_enemigo){
instance_destroy()
}
if distance_to_object(obj_enemigo) < obj_torre.rango_vision and object_exists(obj_enemigo){
move_towards_point(obj_enemigo.x,obj_enemigo.y,5)
}
el enemigo solo tiene un evento de path para recorrer la ruta...
no espero que vengan a darme todo el código que me falta, si me dan algunas ideas de como razonar de forma lógica lo que hago mal igual me estarían ayudando... muchas gracias por tomarse su tiempo de leer :)
necesito ayuda con un juego de Tower Defense, para "resumir" mi duda, pasa que hice un cubo que tiene un rango de alcance de 60 pixeles, cada vez que el objeto enemigo pasa por este rango, se crea una bala que persigue al objeto enemigo con el codigo:
if distance_to_object(obj_enemigo) < obj_torre.rango_vision and object_exists(obj_enemigo){
move_towards_point(obj_enemigo.x,obj_enemigo.y,5)
}
quería que mientras la distancia entre el objeto enemigo sea menor que el rango de visión que tiene el objeto torre, y mientras exista el objeto enemigo(esta parte en la que si el objeto exista o no, me confunde y no se si lo puse bien pero sin esto la bala al no detectar un obj_enemigo y ya estar en "persecusion" cuando desaparece el obj_enemigo me manda un error) entonces se creara una bala (esto de que se cree la bala esta en otro código parecido al de arriba solo que esta es para que la bala siga al enemigo y el otro para crear la bala mientras este en el rango) que perseguirá al objeto enemigo.... no se si deba pasar el código completo, pero mi problema es que mi alarma crea la bala después de que el objeto enemigo sale del rango, no me llevo bien con las alarmas :( y también que mi idea era que mientras el objeto enemigo este dentro de este rango el objeto torre pueda disparar balas, y esta sigan al objeto enemigo (esto dando igual si ya salio del rango porque se supone que ya la bala fue disparada)... todo bien en esto pero el problema mas grave es que cuando la bala comienza a perseguir al objeto enemigo, asi haya otro objeto enemigo, la bala sigue persiguiendo al que va de primero, les dejo un gif para que entiendan el problema de forma visual...
Quiza sea muy confusa mi duda, pero quiero que cuando se cree el obj_bala esta persiga al obj_enemigo, pero no que todas las balas persigan a un mismo enemigo si no al que este dentro del rango solamente, osea el objetivo mas cercano en ese instante... mejor dejo los códigos por si acaso y así puedan ayudarme mejor:
obj_torre en Create:
poder = 0
rango_vision = 60
alarm[0] = -1
obj_torre en Step:
rango_vision = 60
if distance_to_object(obj_enemigo) < rango_vision {
alarm[0] = 2
}
obj_torre en alarm 0 :
if alarm[0] == 0 {
instance_create(x,y,obj_bala)
}
obj_bala en step:
if place_meeting(x,y,obj_enemigo){
instance_destroy()
}
if distance_to_object(obj_enemigo) < obj_torre.rango_vision and object_exists(obj_enemigo){
move_towards_point(obj_enemigo.x,obj_enemigo.y,5)
}
el enemigo solo tiene un evento de path para recorrer la ruta...
no espero que vengan a darme todo el código que me falta, si me dan algunas ideas de como razonar de forma lógica lo que hago mal igual me estarían ayudando... muchas gracias por tomarse su tiempo de leer :)
22
Preguntas y respuestas / Re:¿Como pedir números al jugador?
Noviembre 27, 2019, 05:17:51 PMCita de: BssString en Noviembre 27, 2019, 01:55:06 AM
Hola Zhekken
Si el resultado de tu contraseña es exacto, entonces comparalas como texto y ya.
Ej:Código [Seleccionar]if (respuesta = "1234") { abrir puerta }
Si usas las comillas estarás comparando textos en vez de números.
Existe la función "string_digits" que toma sólo los números de una string.
Ej: string_digits("100tifico") te da como resultado "100" (como texto)
También existe la función "real" para convertir una string a número siempre y cuando tenga formato de número.
ej: real("-12.5") te regresa -12.5 como número
Pero real("a123sdb5") falla.
Te sugiero combinar ambas. string_digits para dejar sólo los números y luego real para convertirlos a número.
Saludos
Muchas gracias por tu explicación, ya había intentado con "string_digits" pero no me había funcionado porque me faltaba usar el "real" para convertir el numero que escribía en "texto" a números ya que comparaba lo que escribía con una variable que era en números (por ejemplo: contraseña = 1234) entonces si se escribía en texto la respuesta (por ejemplo: respuesta = "1234") no me dejaba comparar.... como dices mas arriba podía hacer una comparación en texto pero así no me gusta... usando (string_digits) y (real) solucione mi problema, muchas gracias :)
wilodxd ... también gracias a ti, aunque la verdad no me llevo bien con los booleanos :( de hecho creo que no he hecho ningún mini ejemplo que los use ( o tal vez si pero no recuerdo ) por eso no supe aplicar tu solución, aun así te agradezco mucho por tomarte tu tiempo y querer ayudarme :)
23
Preguntas y respuestas / ¿Como pedir números al jugador? (Solucionado)
Noviembre 26, 2019, 04:30:27 AM
Buenas hace poco encontré este Script(foro): https://www.comunidadgm.org/desarrollo-de-scripts/pedir-el-nombre-al-jugador/
quisiera saber si alguno de ustedes sabe como hacer lo mismo pero en vez de letras solo pedirle números al jugador, esto podría servir por ejemplo para que se abra alguna especie de ventana y abrir tipos de puertas que pidan una contraseña en números... se que se pueden escribir números pero se guardan de tipo string ... si tienen otra manera de pedir solo números al jugador se los agradecería mucho si me explican...solo quiero pedir al usuario/jugador que escriba un numero para que este se almacene en una variable, de ahí pasar a condiciones y así abrir una puerta si se escribe bien la contraseña o dar un mensaje de error si se equivocan etc...
//\\Si no me estoy explicando bien luego lo edito dando un mejor ejemplo//\\
quisiera saber si alguno de ustedes sabe como hacer lo mismo pero en vez de letras solo pedirle números al jugador, esto podría servir por ejemplo para que se abra alguna especie de ventana y abrir tipos de puertas que pidan una contraseña en números... se que se pueden escribir números pero se guardan de tipo string ... si tienen otra manera de pedir solo números al jugador se los agradecería mucho si me explican...solo quiero pedir al usuario/jugador que escriba un numero para que este se almacene en una variable, de ahí pasar a condiciones y así abrir una puerta si se escribe bien la contraseña o dar un mensaje de error si se equivocan etc...
//\\Si no me estoy explicando bien luego lo edito dando un mejor ejemplo//\\
24
Preguntas y respuestas / Re:Necesito ayuda con juego de Mesa
Septiembre 30, 2019, 07:04:07 AMCita de: getnoff en Septiembre 06, 2019, 12:02:13 PM
Saludos.
Bien lo primero que diré es que crear juegos de mesa es difícil. Hay que saber un poco sobre estructuras de datos.
Ahora al tema: si yo hiciera un juego de parchís/ludo intentaría en lugar de usar paths, usar arrays (arreglos) para en ellos guardar las coordenadas de cada casilla. Como el trayecto suele ser irregular, hay que guardar manualmente todos los valores.
Entonces luego cuando una ficha tenga que mover cierta cantidad (por ejemplo 3 casillas), hago un algoritmo que desplace la ficha desde la casilla 0 a la 1, y cuando termine de la 1 a la 2, y al final de la 2 a la 3, y para que se mueva correctamente entre cada una, leer los datos de coordenadas de cada casilla que fue guardada en los arrays.
Hace un tiempo hice un prototipo de un parchís con este método, si te interesa verlo lo puedo subir.
La verdad es que me ayudarías mucho con eso, y hice esto de los juegos de mesa solo por querer hacer algo y practicar pero me pasa igual que con todas las ideas que tengo para algo, "terminan siendo mas complejos de lo que pienso" y al final como no se resolverlos me quedo atrapado y no avanzo mas, aunque pude hacer un efecto visual que quería con los paths y el resultado me gusto, también me gustaría ver tu proyecto y asi ver otra manera de como hacer ese tipo de juegos, me interesa mucho porque si en un futuro quiero ponerme serio con un juego así, podría guiarme de tu proyecto, claro eso con tu permiso...
25
Preguntas y respuestas / Re:Enemigo morir vuelva a aparecer en la room
Septiembre 18, 2019, 10:58:12 AM
acá te hice un mini ejemplo de algo que hice, pero tengo el problema de que si destruyo la instancia del enemigo este no me corre las alarmas (y no entiendo el por que ya que si creo una bala al tocar con el enemigo se destruye y puedo seguir creándolas, supongo que por el orden en que esta el código eso me falla) ya que alguien de aquí explique como corregir ese detalle y tendrías el código listo, pero en caso de que no se pueda entonces haces lo que dice el de arriba, una vez la vida del enemigo llegue a 0 entonces lo mueves a una zona de la room donde no pueda hacer nada y ya con otra alarma lo mueves a la room de nuevo... yo use choose con unas coordenadas en especifico porque así lo veo mejor... el cubo del enemigo no se destruye pero si "reaparece" de manera "aleatoria" en varias partes de la room... si este se destruyera y reapareciera después de los 2 segundos se vería mucho mejor pero como dije mas arriba, al destruirse no me funciona la alarma... espero te sirva :(
Edito porque olvide mencionar que con el 1 haces el disparo.
Edito porque olvide mencionar que con el 1 haces el disparo.
26
Preguntas y respuestas / Re:que pasa si publico un juego con game maker pirata pero es gratuito
Septiembre 11, 2019, 06:14:43 PM
No quiero hacer un nuevo tema para preguntar prácticamente lo mismo que el pero .... y que pasa con las personas que tienen la versión gratuita: Game Maker Studio 1.4.9999 ? si pueden vender sus juegos o no?
27
Preguntas y respuestas / Re:El Personaje se atora en la paredes al Saltar
Agosto 19, 2019, 12:28:00 AM
Mientras te dan una respuesta ve mirándote este vídeo, hace tiempo me paso lo mismo que a ti, el personaje se quedaba pegado en las paredes si dejaba pegada de la derecha o izquierda... pero con este vídeo, siguiendo su tutorial ese problema desapareció ya que hace bien las colisiones incluso en los saltos, así que quizá este vídeo te ayude... Buena suerte :D
https://www.youtube.com/watch?v=laq930_oewU
https://www.youtube.com/watch?v=laq930_oewU
28
Preguntas y respuestas / Necesito ayuda con juego de Mesa
Agosto 18, 2019, 02:20:52 PM
Bueno les explico, ayer por la mañana desperté con la idea de hacer un mini juego de Mesa (solo para practicar mas con el programa, nada serio) iguales a los que son como: Ludo o Monopoly, para los que no hayan jugado este tipo de juegos, en resumen, tu personaje seria una ficha con una figura cualquiera, lanzas un dado y el numero que te salga el personaje avanzara, si cae un 3 entonces avanzas 3 casillas y así hasta que el primer jugador en llegar a la meta gana...
primero tenia que saber como hacer que el personaje avanzara por casillas, osea si una Room tiene casillas de 32x32 entonces el personaje se moverá de una en una, así como se mueven los personajes en Rpg Maker, investigando conseguí este codigo que me funciono bien:
Evento Create del personaje:
key_nokey=true;
Evento Step del personaje:
if (keyboard_check(vk_down)) {
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(270,2);
}
}
if (keyboard_check(vk_up)) {//Arriba
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(90,2);
}
}
if (keyboard_check(vk_left)) {//Izquierda
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(180,2);
}
}
if (keyboard_check(vk_right)) {//Derecha
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(0,2);
}
}
if (keyboard_check_released(vk_right) or keyboard_check_released(vk_left) or keyboard_check_released(vk_up) or keyboard_check_released(vk_down)) {
key_nokey=true;
}
if (key_nokey=true) {
if (place_snapped(32,32)) {
motion_set(0,0)
}
}
el personaje con las teclas, arriba,abajo,izquierda y derecha se mueven por casillas... ya con eso pude mover el personaje como quería, pero luego pensé que los jugadores no pueden mover libremente porque se supone que las fichas deben seguir una ruta especifica, algo obvio, pero igual la idea esta en que se mueva por casillas, luego pensé en usar Paths, que con esto sigues una ruta especifica y logre hacer una donde el personaje seguía la ruta que yo quería, llegando desde el inicio hasta la meta...
lo que yo tenia en mente era hacer que al presionar una tecla cualquiera, de manera aleatoria se elija cuantos pasos debe dar el personaje (osea cuantas casillas debe moverse) del 1 al 6 como un dado.
podría usar:
dado = choose (1,2,3,4,5,6)
una vez elija un numero al azar, entonces el personaje se mueva x cantidad de veces... pero con los Paths, no se como hacer que se detenga una vez entra en una casilla o que se mueva las casillas especificas que yo quiero (sin perder la ruta del path).
y aquí va mi pregunta, ¿hay una manera de hacer que el personaje se mueva las casillas que yo quiera y que nunca pierda su ruta?
Ahí les dejo un ejemplo de mas o menos como seria, la imagen la hice rápido así que dura poco
Disculpen que no tarde tanto en volver a preguntar algo de nuevo pero no se que cantidad de tiempo debo esperar para eso o si las preguntas que debo hacer deban ser sobre algo mas complejo que esto.
======================
Editado
======================
Después de inventar con los Paths, resolví el problema (sin eso de usar casillas, aunque la verdad me hubiera gustado mas así para que sea mas exacto)
Evento Create del jugador:
path_start(path0,0,0,0)
alarm[0] = 0
Evento alarm[0]
path_speed = 0
Evento Step:
if keyboard_check_pressed(ord("1")){
path_speed = 2
alarm[0] = 16
}
if keyboard_check_pressed(ord("2")){
path_speed = 2
alarm[0] = 32
}
if keyboard_check_pressed(ord("3")){
path_speed = 2
alarm[0] = 48
}
if keyboard_check_pressed(ord("4")){
path_speed = 2
alarm[0] = 64
}
if keyboard_check_pressed(ord("5")){
path_speed = 2
alarm[0] = 80
}
if keyboard_check_pressed(ord("6")){
path_speed = 2
alarm[0] = 96
}
ya solo me queda hacer que elija uno de estos 6 de manera aleatoria para que se mueva las casillas que salga en el dado. pero de igual forma, no se estaría moviendo en casillas exactas, aun así, de manera visual seria lo mismo.
por cierto la room es de 320x320 así que cada 1 segundo el personaje que es de 32x32 se mueve un cuadro equivalente a el que serian las casillas.
(si lees esto y tienes la respuesta a mi pregunta de mas arriba, igual dímela por favor que preferiría un método mas exacto)
primero tenia que saber como hacer que el personaje avanzara por casillas, osea si una Room tiene casillas de 32x32 entonces el personaje se moverá de una en una, así como se mueven los personajes en Rpg Maker, investigando conseguí este codigo que me funciono bien:
Evento Create del personaje:
key_nokey=true;
Evento Step del personaje:
if (keyboard_check(vk_down)) {
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(270,2);
}
}
if (keyboard_check(vk_up)) {//Arriba
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(90,2);
}
}
if (keyboard_check(vk_left)) {//Izquierda
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(180,2);
}
}
if (keyboard_check(vk_right)) {//Derecha
key_nokey=false;
if (place_snapped(32,32)) {
motion_set(0,2);
}
}
if (keyboard_check_released(vk_right) or keyboard_check_released(vk_left) or keyboard_check_released(vk_up) or keyboard_check_released(vk_down)) {
key_nokey=true;
}
if (key_nokey=true) {
if (place_snapped(32,32)) {
motion_set(0,0)
}
}
el personaje con las teclas, arriba,abajo,izquierda y derecha se mueven por casillas... ya con eso pude mover el personaje como quería, pero luego pensé que los jugadores no pueden mover libremente porque se supone que las fichas deben seguir una ruta especifica, algo obvio, pero igual la idea esta en que se mueva por casillas, luego pensé en usar Paths, que con esto sigues una ruta especifica y logre hacer una donde el personaje seguía la ruta que yo quería, llegando desde el inicio hasta la meta...
lo que yo tenia en mente era hacer que al presionar una tecla cualquiera, de manera aleatoria se elija cuantos pasos debe dar el personaje (osea cuantas casillas debe moverse) del 1 al 6 como un dado.
podría usar:
dado = choose (1,2,3,4,5,6)
una vez elija un numero al azar, entonces el personaje se mueva x cantidad de veces... pero con los Paths, no se como hacer que se detenga una vez entra en una casilla o que se mueva las casillas especificas que yo quiero (sin perder la ruta del path).
y aquí va mi pregunta, ¿hay una manera de hacer que el personaje se mueva las casillas que yo quiera y que nunca pierda su ruta?
Ahí les dejo un ejemplo de mas o menos como seria, la imagen la hice rápido así que dura poco
Disculpen que no tarde tanto en volver a preguntar algo de nuevo pero no se que cantidad de tiempo debo esperar para eso o si las preguntas que debo hacer deban ser sobre algo mas complejo que esto.
======================
Editado
======================
Después de inventar con los Paths, resolví el problema (sin eso de usar casillas, aunque la verdad me hubiera gustado mas así para que sea mas exacto)
Evento Create del jugador:
path_start(path0,0,0,0)
alarm[0] = 0
Evento alarm[0]
path_speed = 0
Evento Step:
if keyboard_check_pressed(ord("1")){
path_speed = 2
alarm[0] = 16
}
if keyboard_check_pressed(ord("2")){
path_speed = 2
alarm[0] = 32
}
if keyboard_check_pressed(ord("3")){
path_speed = 2
alarm[0] = 48
}
if keyboard_check_pressed(ord("4")){
path_speed = 2
alarm[0] = 64
}
if keyboard_check_pressed(ord("5")){
path_speed = 2
alarm[0] = 80
}
if keyboard_check_pressed(ord("6")){
path_speed = 2
alarm[0] = 96
}
ya solo me queda hacer que elija uno de estos 6 de manera aleatoria para que se mueva las casillas que salga en el dado. pero de igual forma, no se estaría moviendo en casillas exactas, aun así, de manera visual seria lo mismo.
por cierto la room es de 320x320 así que cada 1 segundo el personaje que es de 32x32 se mueve un cuadro equivalente a el que serian las casillas.
(si lees esto y tienes la respuesta a mi pregunta de mas arriba, igual dímela por favor que preferiría un método mas exacto)
29
Preguntas y respuestas / Re:Empujar bloques como en Zelda
Agosto 17, 2019, 10:35:50 PM
Hola, buenas :D soy nuevo en esto de Game Maker así que solo podría ayudarte con este vídeo que conseguí hace unos días, en su vídeo el explica como mueve su caja de izquierda a derecha solo si presionas una tecla y dependiendo desde donde empuja la caja, el personaje cambiara el sprite , la verdad es que no se si con esto te ayude pero si lo logras usar en tu código, supongo que quedaría bien, aunque la parte de la gravedad ignórala si tu juego es Rpg si no la caja se iría hacia abajo... y te faltaría agregar el movimiento de abajo y arriba de la caja.
Para mi que es un tutorial muy completo, te lo recomiendo, aunque la verdad espero que te sirva en la versión de GM que uses, buena suerte :)
solo espero si se puedan pasar vídeos :(
PD: Edito porque olvide pasar el enlace xD
Acá esta:
https://www.youtube.com/watch?v=8Uor0-bUJWE
Para mi que es un tutorial muy completo, te lo recomiendo, aunque la verdad espero que te sirva en la versión de GM que uses, buena suerte :)
solo espero si se puedan pasar vídeos :(
PD: Edito porque olvide pasar el enlace xD
Acá esta:
https://www.youtube.com/watch?v=8Uor0-bUJWE
30
Preguntas y respuestas / Re:Ayuda con armaduras o resistencias
Agosto 12, 2019, 10:16:11 AMCita de: getnoff en Agosto 12, 2019, 09:26:08 AM
Hola.
La primera cuestión es sencilla, pasa porque pones las asignaciones en mal orden, deben ir así:
[gml]
ataque = resistencia;
vida -= ataque;
if vida <= 0 instance_destroy();
[/gml]
Pensemos con lógica: si el ataque no se asigna antes pues sigue siendo 50, por ende la vida resta 50 y sólo después el ataque se establece a 25 cuando ya se ha restado, por eso hay que establecer primero que el ataque es la mitad (25) para que luego la vida se reste 25 correctamente.
Y ahora lo segundo, tengo una duda que no creo que estés usando instance_destroy(obj_bala) porque el instance destroy no contiene argumentos, asumo que tienes puesto un with(obj_bala) instance_destroy();
Bien el problema es que cuando escribes "obj_bala" está abarcando a todas las instancias de la bala, así que para sólo referirte a la que colisiona al enemigo puedes hacer lo siguiente, en el obj_bala en el evento colisión con el enemigo, sólo pon:
[gml]
instance_destroy();
[/gml]
Como estamos en el obj_bala, game maker sabe por la colisión a cual instancia nos estamos refiriendo.
Muchas gracias, todo solucionado :D