Bagaimana untuk Membuat Peluru Menembak Ke arah Kursor Tetikus dalam PyGame?

Barbara Streisand
Lepaskan: 2024-11-02 08:49:02
asal
279 orang telah melayarinya

How to Make Bullets Shoot Towards the Mouse Cursor in PyGame?

Bagaimana untuk menembak peluru ke arah kursor tetikus dalam PyGame?

Anda menghadapi masalah dalam membuat peluru anda menembak ke arah kursor tetikus dalam PyGame. Kod anda pada masa ini melibatkan penciptaan kelas Bullet, menambah peluru dan mengira sudut. Walau bagaimanapun, anda mendapati bahawa peluru tidak berputar dan bergerak seperti yang dijangkakan. Mari kita semak pendekatan dan perbaikinya.

Pertama, isu dengan putaran berpunca daripada fakta bahawa pygame.transform.rotate mencipta permukaan berputar baharu tanpa mengemas kini objek peluru sedia ada anda. Untuk memutar sprite di tempatnya, anda perlu menggunakan sprite.image = pygame.transform.rotate(sprite.image, angle).

Bagi mendapatkan arah, anda menggunakan sudut yang sentiasa berubah antara kedudukan pemain dan tetikus, yang mengakibatkan pergerakan peluru yang tidak konsisten. Sebaliknya, arah perlu ditetapkan sekali apabila peluru dilepaskan:

self.dir = pygame.mouse.get_rel()  # Relative movement since the last event
Salin selepas log masuk

Untuk menormalkan arah dan menetapkan kelajuan, anda boleh melakukan ini:

dist = math.sqrt(self.dir[0]**2 + self.dir[1]**2)
self.speed = self.speed / dist
self.dir = (self.dir[0]/dist, self.dir[1]/dist)
Salin selepas log masuk

Akhir sekali, anda perlu menambah kelajuan yang dikira pada kedudukan peluru dalam fungsi kemas kini:

self.pos += self.speed[0], self.speed[1]
Salin selepas log masuk

Berikut ialah contoh yang menggabungkan penambahbaikan yang disebutkan:

class Bullet(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface((10, 10))
        self.image.fill((255, 0, 0))
        self.rect = self.image.get_rect()
        self.speed = 10

    def update(self):
        angle = math.atan2(self.dir[1], self.dir[0])
        self.image = pygame.transform.rotate(self.image, -angle * (180 / math.pi))
        self.pos += self.speed[0], self.speed[1]
        self.rect = self.image.get_rect(center=self.pos)
Salin selepas log masuk

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

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!