Maison  >  Article  >  développement back-end  >  Comment faire pivoter une image dans la direction du curseur de la souris dans PyGame ?

Comment faire pivoter une image dans la direction du curseur de la souris dans PyGame ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-24 05:46:02140parcourir

How to Rotate an Image Towards the Mouse Cursor Direction in PyGame?

Faire pivoter une image pour faire face à la direction du curseur de la souris dans PyGame

Introduction
Dans le développement de jeux, il est souvent nécessaire pour que les sprites ou les joueurs soient face à la direction du curseur de la souris. Ce guide fournira une solution complète pour faire pivoter une image pour pointer vers la position de la souris en Python à l'aide de PyGame.

Analyse du code

Le code fourni est presque correct, mais il ne calcule pas l'angle du vecteur entre le joueur et le curseur de la souris.

Solution

1. Calculer le vecteur et l'angle :

  • Obtenir la position de la souris : mx, my = pygame.mouse.get_pos().
  • Calculer le rectangle du joueur : player_rect = Player_1.get_rect (topleft=(P_X,P_Y)).
  • Obtenez le vecteur du joueur à la souris : dx = mx - player_rect.centerx et dy = player_rect.centery - my.
  • Calculez le angle en utilisant angle = math.degrees(math.atan2(-dy, dx)) - correction_angle. Le -dy inverse la direction de l'axe y pour le système de coordonnées de PyGame.

2. Appliquer l'angle de correction :

  • En fonction de l'orientation du joueur, vous devez appliquer un angle de correction (correction_angle).
  • Pour une image tournée vers la droite, correction_angle est 0.
  • Pour une image orientée vers le haut, correction_angle est de 90.
  • Pour une image tournée vers la gauche, correction_angle est de 180.
  • Pour une image orientée vers le bas, correction_angle est de 270.

3. Faire pivoter l'image :

  • Utilisez pygame.transform.rotate(Player_1, angle) pour faire pivoter l'image du joueur selon l'angle calculé.
  • Obtenez le rectangle de l'image pivotée avec rot_image_rect = rot_image.get_rect(center=player_rect.center) pour conserver son centre.

Code mis à jour :

<code class="python">import math
import pygame

# Calculate the vector and angle
mx, my = pygame.mouse.get_pos()
player_rect = Player_1.get_rect(topleft=(P_X,P_Y))
dx = mx - player_rect.centerx
dy = player_rect.centery - my
angle = math.degrees(math.atan2(-dy, dx)) - correction_angle

# Rotate the image
rot_image = pygame.transform.rotate(Player_1, angle)
rot_image_rect = rot_image.get_rect(center=player_rect.center)</code>

Ce code mis à jour calcule correctement l'angle et fait pivoter le joueur pour qu'il pointe vers la position de la souris.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn