Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

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: Detectar colision [SOLUCIONADO]  (Leído 1455 veces)

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

Desconectado Yuzo

en: Febrero 08, 2018, 09:41:27 am
Hola.

Estoy con un boss y estoy pensando en como programar lo siguiente:

Tiene un punto concreto donde si le das le restas vida, el caso es que tambien tiene unos brazos con los que puede que se cubra o no.

Las balas del jugador, algunas se eliminan al tocar algo y otras no, depende de la fuerza de la misma.

Lo que quiero es que el objeto estomago (punto donde le haces daño) detecte si la bala (con un with, por ejemplo) esta colisionando con el brazo, si es asi, no le restara vida, de lo contrario, si.

Vamos, lo que no se es como detectar una colision a partir de codigo, ya que siempre lo he hecho como evento.

Gracias.

P.D. tambien habia pensado en crear una varibale de "cubriendose" y que si es true no le quite vida y ya esta, pero por la naturaleza de otros eventos y funciones del gameplay, esto se ha de descartar como opcion, que a priori era la mas sencilla que se me ocurrio.
« última modificación: Febrero 08, 2018, 08:15:59 pm por Yuzo »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Francos

Respuesta #1 en: Febrero 08, 2018, 11:22:05 am
Hola bueno yo pienso q deberias poner objetos transparentes y persigan al boss y usas distance y unas var para identificar la fuerza de la bala. O algo asi

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado Yuzo

Respuesta #2 en: Febrero 08, 2018, 01:11:06 pm
Gracias, pero creo que no tiene nada que ver con lo que queria preguntar, es que cuando hablo me voy demasiado por las ramas, jejeje.

La pregunta es, puede un objeto detectar si esta colisionando con otro objeto concreto mediante codigo ?.

 


Desconectado JohnW

Respuesta #3 en: Febrero 08, 2018, 02:06:06 pm
Gracias, pero creo que no tiene nada que ver con lo que queria preguntar, es que cuando hablo me voy demasiado por las ramas, jejeje.

La pregunta es, puede un objeto detectar si esta colisionando con otro objeto concreto mediante codigo ?.

Se me ocurre que podrias usar la funcion "collision_point" que tiene el argumento "obj" para concretar colision.
Podria ser algo asi: (No lo he probado)
Código: [Seleccionar]
if collision_point(1, 2, 3, 4, 5)
   {
   Vida -= 10;
   }
Donde:
1 - Es la coordenada x del punto a verificar
2 - Es la coordenada y del punto a verificar
3 - Es el objeto para verificar, por ejemplo, las colisiones de los brazos
4 - Es si la verificación se basa en colisiones de píxeles perfectos (true = lento) o su cuadro delimitador en general (false = rápido).
5 - Es si la instancia de llamada, si corresponde, debe excluirse (verdadero) o no (falso).
Código: [Seleccionar]
Te quedaria algo asi:
if collision_point(x, y, obj_Brazos, false, true)
   {
   Vida -= 10;
   }
Supongo que de esa manera detectas que si la bala colisiona con brazo le resta 10 puntos de vida y en caso contrario no haria nada, y si ya tienes el evento en bala de que al colisionar desaparezca o se destruya pues el codigo quedaria simple.

Ya me contaras si te sirve o no.

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado Yuzo

Respuesta #4 en: Febrero 08, 2018, 05:47:06 pm
Antes de postear, como siempre, estuve ojeando la ayuda y vi lo que mencionas, pero no lo entendí muy bien.

trastearé un poco y te cuento ;-)

 


Desconectado 3dgeminis

Respuesta #5 en: Febrero 08, 2018, 07:29:12 pm
Podrias hacer distintas cajas de colision en el mismo objeto con collision_rectangle y collision_circle

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado Yuzo

Respuesta #6 en: Febrero 08, 2018, 08:04:09 pm
heeemmm.... si bueno, eso esta bien, pero ya te digo que lo que y quería saber es si hay una manera de decir mediante código algo así como: " SI COLISIONAS CON ESTE OBJETO, PASA ESTO".

No se, algo así como:

if colisionando con obj_brazo{
no pasa nada
}else{
vida -= 10
}

Existe algo que haga lo que yo he expresado como "colisionando", es lo único que necesito. ( lo de "no pasa nada", obviamente no va a funcionar, es por poner un ejemplo).

De todos modos mil gracias chicos por vuestra ayuda ;-).
« última modificación: Febrero 08, 2018, 08:06:34 pm por Yuzo »

 


Desconectado Francos

Respuesta #7 en: Febrero 08, 2018, 08:09:12 pm
Código: [Seleccionar]
Publicado por: 3dgeminis
Podrias hacer distintas cajas de colision en el mismo objeto con collision_rectangle y collision_circle
asi es eso es lo que trataba de decir esque pienso que el boss por ser un solo sprite o un solo objeto al momento de detectar la posicion o la collicion que es casi lo mismo pues  al momento de que el boss se tape la panza o lo quesea con los brazos como es la misma imagen pues collisionara o detectara la collision con el mismo objeto y no tendra caso sera lo mismo que si collisionara normal vajaria vida o no en el mismo objeto...

Código: [Seleccionar]
heeemmm.... si bueno, eso esta bien, pero ya te digo que lo que y quería saber es si hay una manera de decir mediante código algo así como: " SI COLISIONAS CON ESTE OBJETO, PASA ESTO".

No se, algo así como:

if colisionando con obj_brazo{
no pasa nada
}else{
vida -= 10
}

Existe algo que haga lo que yo he expresado como "colisionando", es lo único que necesito. ( lo de "no pasa nada", obviamente no va a funcionar, es por poner un ejemplo).

De todos modos mil gracias chicos por vuestra ayuda ;-).
a ok si la hay pero la verdad no e entendido como se usa  es

ev_collision() esta funcion es para eso mas no la e aprendido a usar .
« última modificación: Febrero 08, 2018, 08:11:59 pm por Francos »

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado Yuzo

Respuesta #8 en: Febrero 08, 2018, 08:13:39 pm
Coño, vale, ya entiendo lo que queríais decir, perdonadme, es que cada día que pasa soy un poco más tonto.

Trastearé con ello, muchísimas gracias chicos, lo doy por solucionado, cuando el trabajo, la casa y la pareja me lo permitan me meto con ello ;-).

 


Desconectado Yuzo

Respuesta #9 en: Febrero 08, 2018, 08:15:32 pm

ev_collision() esta funcion es para eso mas no la e aprendido a usar .

Anda, pues no lo sabía, mirare cosillas también, gracias !!!

 


Desconectado JohnW

Respuesta #10 en: Febrero 09, 2018, 03:28:16 pm
Una cosa mas, si todo eso no consigues hacerlo funcionar se me ocurre otra opcion que quizas no es la mejor pero puede salvarte de mucho y es mas facil de hacer que todo lo anterior.

La idea es que tu "boss" estuviera en dos sprites el modo "normal" y modo "brazos" y entonces al cambiar al sprite "brazos" pues seria tan simple como que ese sprite no tuviera nada de programacion con lo cual por mucho que le peges no afectaria a la "vida" del sprite normal, y viceversa con el otro sprite normal lo programas como tu boss original con su daño y todo eso.

Eso seria una manera "chapuza" por llamarlo asi pero que yo en algunos momentos puntuados me han salvado de comidas de cabeza.

Saludos

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo