Hola:
Me gustaria saber que estoy haciendo mal en GM,,, para hacer las colisiones exactas nada de esferas, rectangles,,, diamantes,,, sino la colicion que viene por la mascara ...
Esto lo se hacer en C/C++,,, pero no logor hacerlo en GM...
Adjunto los archivos
Gracias !!!
La colision con la mascara se define sola con la mascara que le pones, valga la redundancia. Si quieres la puedes modificar desde la edicion del sprite. Sino, puedes definirle una desde el objeto, en la parte de abajo a la izquierda.
Si te entiendo en Teoría eso es así, pero en el ejemplo cuando yo lo puse no me funcionó, entonces quiere decir que hay algo mal en el ejemplo, porfavor, de la fuente en GM8, podrías corregirla, para que de un resultado similar al que da en la versión de CPP, en las colisiones.
Pues eso es lo que necesito saber, y que realmente funcione de esa forma.
Vale gracias !!!
Te dejo un ejemplo mucho mas simple.
asdkasdfkas ya había escrito todo y al momento de previsualizar me llevo a iniciar sesión y se borro el mensaje :'(.
Ahora que el tema cumple las reglas contesto.
Bien tu problema es que no usas las variables prediseñadas por gm, las variables referentes a sprites son estas.
Citar
x: Coordenada x actual del objeto.
y: Coordenada y actual del objeto.
sprite_index: Indice del sprite actual.
image_index: Indice de la subimagen o frame actual.
image_xscale: Escala horizontal del sprite actual.
image_yscale: Escale vertical del sprite actual.
En game maker cuando no tienes nada en el evento draw game maker dibuja automáticamente esto.
[gml]
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);[/gml]
Bien básicamente lo que tienes que hacer es usar las variables descritas en lugar de las que tu creaste, esto se hace por que la "mascara" (que es el sprite que determina la colisión) usa todas las variables anteriormente descritas para determinar su posición, escala, angulo, etc. Otra cosa, para dibujar un sprite diferente no es necesario ponerlo en el evento draw como lo hiciste basta con cambiar el sprite actual utilizando la variable "image_index", el problema de ello es que al cambiar de sprite también cambiaría su colisión para evitar esto y hacer que el sprite de colisión siempre sea el mismo puedes definir una mascara distinta en las propiedades del objeto o bien utilizando la variable "mask_index".
Por ultimo te recomiendo no usar colisión precisa amenos que sea completamente necesario ya que es MUCHO mas lenta que usar una cuadrada, tu deberías de saber esto ya que conoces como funciona internamente una colisión precisa, en realidad puedes usar cientos de colisiones precisas a la vez pero obviamente siempre sera mucho mas rápido usar una cuadrada te digo esto por que es muy común que la gente use colisiones precisas para cosas como muros. Hay muchas opciones de colision al crear sprites pero en realidad todas son precisas excepto la cuadrada.
Gracias por la Respuesta era lo que buscaba.
En cuanto las colisiones precisas, son solamente unas pocas, que usare solamente en algunos casos.
Creo que voy a buscar un manual con técnicas sugerencias y recomendaciones, puesto que acá, fue mas bien como aplicar, las funciones optimas para rendimiento.
Sino habria que escribir un manualcillo, con técnicas y sugerencias de rendimiento, y detallar algunas experiencias de cada cual, para resolver ciertas cosas, eso si que nos seria de provecho, puesto que va mas halla de conocer el leguaje, ahora hay que saber como sacarle mejor partido ...
heheh ...
gracias a todos !!!
Cita de: esbxp en Febrero 18, 2012, 04:31:55 PM
Creo que voy a buscar un manual con técnicas sugerencias y recomendaciones, puesto que acá, fue mas bien como aplicar, las funciones optimas para rendimiento.
Sino habria que escribir un manualcillo, con técnicas y sugerencias de rendimiento, y detallar algunas experiencias de cada cual, para resolver ciertas cosas, eso si que nos seria de provecho, puesto que va mas halla de conocer el leguaje, ahora hay que saber como sacarle mejor partido ...
heheh ...
gracias a todos !!!
pues esta el post de ¿Qué afecta para que los juegos sean lentos? (http://www.comunidadgm.org/index.php?topic=53.0) pero se le pueden añadir algunas cosas mas, tal vez ya este algo desactualizado hace tiempo le envié un mp a correjon para que añadiera lo de no usar colisiones precisas pero aparentemente ya no se conecta tal vez debí haber enviado el mp a un moderador o administrador mas activo, pero debo admitir que no lo he echo por pura flojera.