Septiembre 11, 2013, 10:46:45 PM Ultima modificación: Septiembre 22, 2013, 08:25:10 PM por darius
saludos, makeros  :D
mi duda:

Tiempo atrás, cuando usaba drag&drop, las colisiones las chekeaba con los eventos de colisión. Ahora uso gml, y en muchos códigos me es más conveniente chekear las colisiones con tal objeto desde el código en los eventos step o en los scripts, este es el problema:   :-\
Quiero chekear si este coche colisiona con el círculo:


El resultado que quiero es negativo (no colisiona);
-----------------------
Si chekeo con los eventos de colisión, la colisión no se produciría, es decir, se chekea exacto:

(donde el rojo es la zona que se chekea)

Si chekeo mediante código puedo usar:
if collision_rectangle(bbox_left,bbox_top,bbox_right,bbox_bottom,obj_bola,1,1)
pero he aquí el problema; el chekeo sería así:

y por tanto daría positivo.

usando collision_circle:

también daría positivo....

Creo que se puede chekear con if place_meeting, pero como en vez de pedirte con qué instancia quieres chekear te pide la posición de esa instancia, si en esa posición hay otra instancia se equivocaría... es decir, no es 100% fiable (eso creo)  :-\

Por tanto, ¿hay alguna forma de chekear colisiones 100% precisas?
¿Me he equivocado o engañado en algo?
:P Si pudiesen resolver mis dudas se lo agradecería.
salu2
;)

Hola. Los codigos hechos en drag and drop se pueden pasar exactamente a GML. me parece que lo que estas pidiendo es utilizar la funcion place_meeting(x,y,objeto), pero, nose si eso hace que la colision sea precisa, hay un programa que te pasa el drag and drop a GML, lo encontré en las descargas.

http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=157
El ayer es un recuerdo, el mañana un pensamiento, es el ahora en donde existo y vivo para ser feliz :D

en fin, gracias por la respuesta... me tendré que aguantar con el place_meeting...
gracias   :P

También está instance_place(), que devuelve el ID del objeto con el colisionas  :-[.

 :-[ pues sí, no lo había visto...  :-[
tengo un duda; e el manual pone:
Citar
instance_place(x,y,obj) Returns the id of the instance of type obj met when the current instance is placed at position (x,y). obj can be an object or the keyword all. If it does not exist, the special object noone is returned.

No entiendo para qué sirve entonces el x e y,  :-\ si me lo pudiéseis aclarar, se acabarían definitivamente mis dudas xD

Cita de: darius en Septiembre 12, 2013, 11:18:46 PM
No entiendo para qué sirve entonces el x e y,  :-\ si me lo pudiéseis aclarar, se acabarían definitivamente mis dudas xD

x e y sirven para probar si hay una colisión en ese punto.  La instrucción se usa para saber si hay una colisión no con cualquier objeto, sino con un objeto especifico en un punto específico

Imagina que desde un objeto obj_A haces esto;
instance_place(100, 100, obj_B)

Lo que hace GM cuando ejecuta la instrucción es mover la instancia del objeto A al punto especificado (100, 100),  revisar si hay colisión contra el objeto B (tomando en cuenta la máscara de colisión del objeto A), regresar al objeto A a su posición original y avisar si hubo colisión o no. Si hubo colisión, regresa la id de la instancia del objeto B

#6 Septiembre 13, 2013, 08:40:16 AM Ultima modificación: Septiembre 13, 2013, 08:43:10 AM por brunoxzx
Cita de: penumbra en Septiembre 12, 2013, 11:59:30 PM
Lo que hace GM cuando ejecuta la instrucción es mover la instancia del objeto A al punto especificado (100, 100),  revisar si hay colisión contra el objeto B (tomando en cuenta la máscara de colisión del objeto A), regresar al objeto A a su posición original y avisar si hubo colisión o no. Si hubo colisión, regresa la id de la instancia del objeto B

Exactamente  ;).

ok, ya lo entiendo perfectisimamente, perdón por responder tarde xD...  :-[
tema cerrado  :P