hola amigo tengo un problema, nose porque me anda mal la colision si se supone que es algo general, el codigo es el siguiente y sirve para colision en z
evento begin steps
[spoiler]if (place_meeting(x, y, jugador))
{
jugador.obj = id;
with(jugador)
{
if (z >= obj.z + obj.z_altura)
z_piso = obj.z + obj.z_altura ;
else
if (z + altura >= obj.z)
{
z = obj.z - altura - 1;
z_vel = 0;
}
}
}[/spoiler]
donde z es la altura inferior de jugador, z_piso es una variable para la altura del piso, altura variable de la altura del jugador dependiendo del z_piso, obj.z altura inferior del cubo y z_altura máxima del cubo
cuando obj.z= 0 obj.z_altura= obj.z+16, con esto todo bien, pero cuando obj.z= 16 por loo tanto obj.z_altura=32 se necesita un salto mas alto para pasarlo por encima o quedar encima del cubo
:-\what? no entiendo tu pregunta,o sea, no entiendo cual es la pregunta.
lo que hace supuestamente este algoritmo es cuando uno quiere saltar el cubo se puede situarse soobre el, como deberia de ser en la realidad.
con el primer cubo tiene como valor z= 0 por lo tanto la altura es z_altura= z+16 o sea z_altura=16, no?. este cubo seria el que este sobre el piso y hasta aqui todo bien el algoritmo funciona.
pd: se puede saltar la altura de un cubo a la ves.
pero cuando pongo un cubo sobre otro, el valor de z=16 y z_altura=32 (resumido), pero a este cubo se necesita un salto mayor para situarse arriba y deberia hacer lo mismo como el primer cubo, porque?
Pues bueno una solución simple (y tal vez no la mejor) es simplemente eliminar las colisiones con los cubos con menos altura cuando estén varios en un solo lugar, de este modo solo tendrías que preocuparte por la colisión con los cubos mas altos.
Por cierto, a como vi tu juego tu mejor opción es hacer colisiones con un array tridimensional.
si mas adelante mi intención es desactivar las instancias para aprovechar mas la memoria y en cuanto la array, si lo hago para todo el mapa tal ves me consuma mucha memoria, pero el problema era que le pasaba mal las dimenciones