Os pongo el código y os explico.
Código CSS:
Ver original
private function comprobarColisonesPersonaje (ev:EventoMovimiento):void { var obstaculoTemporal:MovieClip; var s:int; var d; d=personaje.getdirect(); for (s=0; s<arrayObstaculos.length;s++) { obstaculoTemporal=arrayObstaculos[s]; while(HitTest.complexHitTestObject(personaje,obstaculoTemporal,1)) { if(obstaculoTemporal.hitTestPoint(personaje.x+personaje.width/2, personaje.y,true) ) { personaje.y--; } /*if(obstaculoTemporal.hitTestObject(personaje) ) { personaje.y--; }*/ else { if(d==1) this.personaje.x --; if(d==-1) this.personaje.x ++; } } } }
Básicamente el juego consiste en generar varios obstáculos y enemigos "random" que te impiden llegar una meta, la cual debes alcanzar lo antes posible.
Esta parte del código controla las colisiones con los obstáculos con al condición de que mientras toque con alguno haga y--, si es por arriba o x-- e x++, si es por izquierda y derecha atendiendo a la dirección del personaje, dejándolo siempre fuera del obstáculo.
El problema se me plantea es en la condición del y--, pues x me lo hace bien. No pilla bien la condición o algo porque siempre me deja al personaje medio hundido, por lo que siempre colisiona y no me hace bien las otras dos condiciones, ni saltar, etc. Pero lo extraño es que no solo me ocurra con hitTestPoint . Si activo la prueba comentada (aunque le faltarían condiciones faltarían condiciones pero sirve para probar), que lo hace con hitTestObject también ocurre lo mismo y si pusiese con complexHitTestObject igual.
Por último indicar que la x e y del personaje está abajo a la izquierda pero me ocurre lo mismo si lo paso al centro o arriba y cambio un poco las condiciones.
Bueno de antemano muchas gracias por vuestra ayuda.