Código a:
En pantalla caen naves, y cuando una toca la nave del jugador entonces ésta debe agrandarse si su defensa es mayor que la defensa de la nave enemiga. La defensa de las naves determina sus tamaños. La idea es que una nave absorbe a otra si es más grande, y entonces se hace aún más grande, es como si comiera a la más pequeña (ergo esa desaparecería de la pantalla, pero eso aún no lo hice).Ver original
N2 = 1; do { Res = "Nave"+N2; NaveDf = eval(Res+".Df"); if (Player.hitTest(eval(Res)) == true) { if (Player.Df>NaveDf) { Player.Df = Player.Df+NaveDf; setProperty (Player, _xscale, Player.Df); setProperty (Player, _yscale, Player.Df); } } N2 = N2+1; } while (N>=N2);
Aparentemente el hitTest o chequeo de la colisión está bien, porque para probar creé una variable ahí que se modificara y lo hace, entonces a veces es true, como corresponde.
El problema parece ser el 2ndo if, a veces la nave del jugador no crece y a veces se achica @_@ Posiblemente en el 1er caso es que se achica, sólo que muy poco por eso no se nota, voy a ver.
Player.Df está definido desde antes:
Player.Df = 20;
NaveDf por lo que veo está bien, es decir, siempre es un número, está bien...
Nave.Df también parece ok.
Res también, sino no funcionaría la colisión.
N2 idem.
N no le veo sentido a que sea el problema.
¿Entonces? ¿precisan ver el código completo? ¿cual será la falla?
Edit:
Disculpen, acabo de ver la falla, el código está bien, lo que pasa que la nave del jugador en principio tiene tamaño 20x20, y al aumentar su df a 21 por ejemplo queda a 21% de su tamaño, por eso se achica. Ya lo solucioné estableciendo desde el principio que esté a 50% de su tamaño (también aumenté su df a 50).
En cuanto a que no se agranda, parece que estaba muy impaciente o creía que había colisiones cuando no, pero ahora creo que funciona bien.
Cuando tenga más completo al juego lo presento =)