Bagaimana untuk Memutar Imej Ke Arah Kursor Tetikus dalam PyGame?

Susan Sarandon
Lepaskan: 2024-10-24 05:46:02
asal
212 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan