Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: vidal M en Agosto 17, 2019, 05:58:42 pm

Título: Empujar bloques como en Zelda
Publicado por: vidal M en Agosto 17, 2019, 05:58:42 pm
Buen día

Espero me puedan ayudar con mi problema.

 Necesito mover blocks como en zelda pero que cuando mi personaje colisione con el bloque el bloque se mueva cada 32 pixeles y no ala velocidad a la que  se mueve mi  personaje.

agradecería mucho su ayuda.

este es mi codigo en un script


if (place_meeting(x+vx,y,obj_block_rock_2)){
   var block = instance_place(x+vx,y,obj_block_rock_2);
   with (block) {
      script_move(obj_player.vx/4,0);
   }
   vx /= 4;
   
}


if (place_meeting(x,y+vy,obj_block_rock_2)){
   var block = instance_place(x,y+vy,obj_block_rock_2);
   with (block) {
      script_move(0,obj_player.vy/4);
   }
   vy /= 4;
      
}

Título: Re:Empujar bloques como en Zelda
Publicado por: Zhekken en 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

Título: Re:Empujar bloques como en Zelda
Publicado por: 3dgeminis en Agosto 19, 2019, 02:09:15 am
Supongo que quieres "patear" el bloque. Lo que puedes hacer es guardar la posicion actual del bloque y la posicion final, a donde tendria que estar.
Si movemos el bloque hacia la derecha y la posicion inicial es 0, la posicion final seria 32. Si la posicion inicial es diferente a la final, lo movemos, si es igual lo detenemos(la velocidad tiene que ser multiplo de la distancia a recorrer)
Ejemplo empujar a la derecha:
///CREATE////////////////////////////////////////////////////////////
mover=false
x1=x
x2=x

///STEP//////////////////////////////////////////////////////////////
if (keyboard_check_pressed(vk_enter) and mover=false)
  {
   x2=x1+32
   mover=true
  }
 
if mover=true
  {
   if x1!=x2
      {
       x1+=4
       x=x1
      }
   else {mover=false}
  }
Título: Re:Empujar bloques como en Zelda
Publicado por: vidal M en Agosto 19, 2019, 04:21:17 pm
Muchas gracias a  ambos mi juego es tipo RPG realizare las 2 sugerencias que me ofrecieron muchas gracias otra vez.

Saludos!!
Título: Re:Empujar bloques como en Zelda
Publicado por: jhgv en Agosto 29, 2019, 09:54:44 pm
Hola, Pues quizas apenas estes empezando en Gml entonces te ayudare sin usar palabras muy tecnicas ni en codigo te dare una idea y como deberia estar estructurado:
si el personaje colisiona con la caja entonces comprobaras hacia que lado va el personaje y asi le dices a la caja a que lado debe ir y hacia que velocidad... luego compruebas si el personaje dejo de colisionar y entonces haces que la caja deje de moverse :p saludos