Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memutar Imej Ke Arah Kursor Tetikus dalam PyGame?

Bagaimana untuk Memutar Imej Ke Arah Kursor Tetikus dalam PyGame?

Susan Sarandon
Susan Sarandonasal
2024-10-24 05:46:02140semak imbas

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

Memutar Imej untuk Menghadap Arah Kursor Tetikus dalam PyGame

Pengenalan
Dalam pembangunan permainan, ia selalunya diperlukan untuk membuat sprite atau pemain menghadap ke arah kursor tetikus. Panduan ini akan menyediakan penyelesaian yang komprehensif untuk memutar imej untuk menghala ke arah kedudukan tetikus dalam Python menggunakan PyGame.

Analisis Kod

Kod yang disediakan hampir betul, tetapi ia tidak mengira sudut vektor antara pemain dan kursor tetikus.

Penyelesaian

1. Kira Vektor dan Sudut:

  • Dapatkan kedudukan tetikus: mx, my = pygame.mouse.get_pos().
  • Kira segi empat tepat pemain: player_rect = Player_1.get_rect (kiri atas=(P_X,P_Y)).
  • Dapatkan vektor daripada pemain ke tetikus: dx = mx - player_rect.centerx dan dy = player_rect.centery - my.
  • Hitung sudut menggunakan sudut = math.degrees(math.atan2(-dy, dx)) - correction_angle. -dy membalikkan arah paksi-y untuk sistem koordinat PyGame.

2. Gunakan Sudut Pembetulan:

  • Berdasarkan orientasi pemain, anda perlu menggunakan sudut pembetulan (sudut_pembetulan).
  • Untuk imej yang menghadap ke kanan, sudut_pembetulan ialah 0.
  • Untuk imej yang menghadap ke atas, correction_angle ialah 90.
  • Untuk imej yang menghadap ke kiri, correction_angle ialah 180.
  • Untuk imej yang menghadap ke bawah, correction_angle ialah 270.

3. Putar Imej:

  • Gunakan pygame.transform.rotate(Player_1, angle) untuk memutarkan imej pemain mengikut sudut yang dikira.
  • Dapatkan segi empat tepat imej yang diputar dengan rot_image_rect = rot_image.get_rect(center=player_rect.center) untuk mengekalkan pusatnya.

Kod Kemas Kini:

<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>

Kod yang dikemas kini ini mengira sudut dengan betul dan memutarkan pemain untuk menghala ke arah kedudukan tetikus.

Atas ialah kandungan terperinci Bagaimana untuk Memutar Imej Ke Arah Kursor Tetikus dalam PyGame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn