Maison >développement back-end >Tutoriel Python >Comment obtenir un mouvement fluide d'objets dans PyGame avec une vitesse en virgule flottante ?
Limitations de mouvement PyGame Rect
Dans PyGame, l'objet rect, qui représente une zone sur l'écran, autorise uniquement les données intégrales pour les coordonnées. Cette limitation peut entraîner un mouvement saccadé des objets lors de l'utilisation de valeurs à virgule flottante pour la vitesse.
Solution : stockage de position séparé et mise à jour Rect
Pour surmonter cette limitation, on peut stockez la position de l'objet à l'aide de variables à virgule flottante tout en synchronisant l'objet rect en arrondissant les coordonnées et en mettant à jour son emplacement en conséquence. Cette approche garantit un mouvement précis de l'objet tout en conservant les valeurs intégrales requises par l'objet rect.
Implémentation
Par exemple, dans le code ci-dessous, le RedObject stocke sa position dans directement l'objet droit, ce qui entraîne un mouvement imprécis. Le GreenObject, cependant, stocke sa position séparément et met à jour l'objet rect en arrondissant les coordonnées :
class RedObject(pygame.sprite.Sprite): def update(self, window_rect): self.rect.centerx += self.move.x * 2 self.rect.centery += self.move.y * 2 class GreenObject(pygame.sprite.Sprite): def update(self, window_rect): self.pos += self.move * 2 self.rect.center = round(self.pos.x), round(self.pos.y)
En séparant le stockage de la position et la mise à jour du rect, le GreenObject obtient un mouvement fluide et fluide même en utilisant des valeurs à virgule flottante. pour la vitesse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!