Maison  >  Article  >  développement back-end  >  Comment faire pivoter dynamiquement l'image d'un joueur pour faire face au curseur de la souris dans les jeux de tir 2D ?

Comment faire pivoter dynamiquement l'image d'un joueur pour faire face au curseur de la souris dans les jeux de tir 2D ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-23 22:28:021073parcourir

How to Dynamically Rotate a Player Image to Face the Mouse Cursor in 2D Shooting Games?

Comment faire pivoter une image (un joueur) dans le sens de la souris ?

Lors de la création de jeux de tir 2D, il est essentiel de permettre au joueur de visez dans la direction du curseur de la souris. Cependant, trouver une solution à ce problème peut s'avérer difficile.

Description du problème

L'image du joueur (Player_1) doit pivoter dynamiquement en fonction de la position de la souris pour améliorer la visée. expérience.

Solution

Pour y parvenir, nous devons calculer l'angle entre la position du joueur et la position du curseur de la souris. Ceci est réalisé comme suit :

<code class="python">import pygame, sys, os
import math

# ... (rest of the code remains the same)

def game_loop():
    while True:
        events()

        mx, my = pygame.mouse.get_pos() # Get the mouse position
        player_rect = Player_1.get_rect(topleft=(P_X,P_Y)) # Get the player's rectangle

        dx, dy = mx - player_rect.centerx, player_rect.centery - my # Calculate the vector from the player to the mouse
        angle = math.degrees(math.atan2(-dy, dx)) - correction_angle # Compute the angle of the vector

        rot_image = pygame.transform.rotate(Player_1, angle) # Rotate the player image by the calculated angle
        rot_image_rect = rot_image.get_rect(center=player_rect.center) # Get the rotated image's rectangle

        DS.fill(White)
        DS.blit(rot_image, rot_image_rect) # Blit the rotated player image
        pygame.display.flip()</code>

Le correction_angle est une constante qui dépend de l'orientation initiale du sprite du joueur. Les valeurs courantes sont :

  • 0 degrés : Sprite regarde vers la droite.
  • 90 degrés : Sprite regarde vers le haut.
  • 180 degrés : Sprite regarde vers la gauche.
  • 270 degrés : Sprite regarde vers le bas.

Cette méthode permet à l'image du joueur de pivoter et de viser avec précision vers la position du curseur de la souris, améliorant ainsi l'expérience de jeu.

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