Ya lo tienes funcionando, te comento los pequeños cambios:
En __init()__, velocidad y ángulo son locales y sólo se usan para calcular self.vx y self.vy (velocidad horizontal y vertical):
Como ya tienes calculada la velocidad, la función advance() puede eliminarse, con mover() es suficiente. El error de tipo que te daba, es que self.x y self.y están en punto flotante, mientras que Sprite.set_position() requiere que los parámetros sean enteros, para ello se usa la función python int(). Con ello la función mover() queda así:
En __init()__, velocidad y ángulo son locales y sólo se usan para calcular self.vx y self.vy (velocidad horizontal y vertical):
Code:
velocidad = 3
angulo = self.getAngle(jugador)
self.vx = math.cos(angulo) * velocidad
self.vy = math.sin(angulo) * velocidad
Como ya tienes calculada la velocidad, la función advance() puede eliminarse, con mover() es suficiente. El error de tipo que te daba, es que self.x y self.y están en punto flotante, mientras que Sprite.set_position() requiere que los parámetros sean enteros, para ello se usa la función python int(). Con ello la función mover() queda así:
Code:
def mover(self):
self.x += self.vx
self.y += self.vy
engine.sprites[self.sprite_id].set_position(int(self.x),int(self.y))