Problema con la función impulsar()

¡Hola a todos!
Estoy haciendo un juego de plataformas y he confirmado algo que sospechaba: La función impulsar() a veces impulsa mas y otras menos. No se si está pensada para ser así, pero resulta incómodo que al saltar el personaje no llegue y otras se re pase.
¿Alguien sabe de alguna manera de lograr un resultado similar de otra manera?
editt: Probé el ejemplo de plataformas y parece que ahí no ocurre, quizás no sea un problema de la función, sino del código que uso para saltar que haga se ejecute varias veces el impulsar.

Es probable que se esté ejecutando varias veces como dices @lukeitor . Lo que podrías hacer para darte cuenta si es así es llamar a la función print así print("ejecutando"); y ver si en el intérprete aparece varias veces:

Otra opción, es asegurarte que la velocidad vertical y horizontal del actor es cero antes de impulsarlo:

print("Voy a impulsarme");
print("Mi velocidad x es " + this.velocidad_x);
print("Mi velocidad y es " + this.velocidad_y);

this.impulsar(0, 10);
1 Like

al final si, era eso y lo solucioné a medias porque me da la impresión de q sigue saltando de más a veces. Probablemente en mi juego los personajes no salten XD
Otro problema que tuve fue que el actor barra_energia no se puede poner
this.fijo = true;
Pero algo menor la verdad.

Buenísimo que era eso @lukeitor !!!, con respecto a la fuerza del salto, también podría influír la velocidad vertical que tenga el actor al comenzar el salto. Tal vez te conviene poner la variable this.velocidad_y = 0 justo antes de impulsar al actor para realizar el salto.

Lugo, sobre el actor barra de energía, me dí cuenta que hay un pequeño bug, la sentencia this.fijo = true tendrías que hacerla justo debajo de la función super.iniciar() sino no funciona:

Aquí armé un ejemplo en donde funciona bien por si te sirve de referencia:

Abrir este proyecto en el editor de pilas

¡Abrazo!

1 Like

muchas gracias, ahora todo funciona perfectamente