Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Colison en vista desde arriba [diferente]  (Leído 317 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado AgeX_005

  • Habitual
  • *
  • Puntos: 23
  • Mensajes: 10
    • Ver Perfil
en: Junio 26, 2020, 10:55:16 pm
Wenas.. se que ya hay preguntas asi pero lo que to quiero lograr no es asi....

Yo tengo un personaje q se mieve hacia el mouse... su direccion apunta al mouse....y solo se puede mover adelante y atras pk la direccion se controla con el mouse (obvio)

Como haria un sistema de colisiones con este sistema de movimientos... me ayudan?? :,3

Yo lo q hago es q si toca la pared el speed se pone en 0 y si funciona pero como k se traba :/

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado elmmeronw

  • Habitual
  • *
  • Puntos: 35
  • Mensajes: 31
  • Agradecido: 13 veces
  • Sexo: Masculino
  • Visita me en mi pequeño canal Cid Codigos
    • Ver Perfil
    • Cid Codigo Youtube
Respuesta #1 en: Junio 27, 2020, 07:26:57 pm
Prueba con esto...

if (place_meeting(x,y+hspeed,obj_solid))
{
    while(!place_meeting(x,y+sign(hspeed),obj_solid))
    {
        y += sign(hspeed);
    }
    hspeed = 0;
}

eso es una colision precisa para ambas direcciones tambien puede modificar las "hspeed" por "vspeed" que funciona igual espero que se de utilidad.

 


Desconectado RickTheCastle

  • Habitual
  • *
  • Puntos: 18
  • Mensajes: 11
  • Agradecido: 3 veces
  • Sexo: Masculino
  • La vida te pondrá obstáculos. pero los limites tu los pones
    • Ver Perfil
    • RickTheCastle
Respuesta #2 en: Junio 30, 2020, 08:39:51 pm
Wenas.. se que ya hay preguntas asi pero lo que to quiero lograr no es asi....

Yo tengo un personaje q se mieve hacia el mouse... su direccion apunta al mouse....y solo se puede mover adelante y atras pk la direccion se controla con el mouse (obvio)

Como haria un sistema de colisiones con este sistema de movimientos... me ayudan?? :,3

Yo lo q hago es q si toca la pared el speed se pone en 0 y si funciona pero como k se traba :/

Vale, existe una forma, pero es un poco complicada, aparte, como que no esta bien pulida que digamos:

En el evento create, haremos una variable la cual sera la velocidad

///Velocidad Del Jugador
velocidad = 8

Luego, Iremos al evento step y en ese mismo evento crearemos otras 2 variables, no digo que sean necesarias pero nos facilitara el trabajo de repetir un codigo.

/*Estas variables serán las coordenadas de la dirección a donde nos querremos mover.
En Este Caso, Es 1 pixel hacia la dirección que tenga determinado nuestro personaje*/

direction = point_direction(x,y,mouse_x,mouse_y)

xx = lengthdir_x(1,direction)
yy = lengthdir_y(1,direction)

/*Luego colocaremos que al presionar el botón izquierdo del mouse, nuestro personaje
se mueva a esa dirección, comprobando que no halla ningún objeto solido intermediario entre
su posicion, con la velocidad */

if mouse_check_button(mb_left){
     repeat(velocidad){
          if place_free(x + xx,y){
               x += xx
          }
          if place_free(x,y + yy){
               y += yy
          }
     }
}

Esto colisionara con cualquier objeto solido. Te recomiendo seriamente que no cambies la mascara de colisión, ya que podría ocasionar muchos errores respecto a eso.