如何让一个精灵围绕另一个移动的精灵旋转?

问题描述 投票:0回答:0

我目前正在制作游戏,我想添加一个道具。我本质上是想做一些类似于恶魔城的咒语书的东西。我找到了一个代码来帮助我获得初始位置和旋转。问题是,十字架不会从它的初始位置移动。它只是原地转圈,而另一个离开它。我对 pygame 和游戏开发的数学还很陌生。它仍然很混乱。

import pygame

class Crucifix(pygame.sprite.Sprite):
        def __init__(self):
                super().__init__()
                self.sprite = pygame.image.load('image'). convert_alpha()
                
                
                self.image = self.sprite
                
                
                self.rect = self.image.get_rect()
                self.rect.x =500
                self.rect.y = 500
                self.mask = pygame.mask.from_surface(self.image)
               
                
        def update(self):
            self.rect.x -= 2
            
                
            
            if self.rect.x == -100:
                self.kill()
            


class EnemiesStrong(pygame.sprite.Sprite):
    
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)     
        self.original_image = pygame.image.load('image').convert_alpha()
        self.image = self.original_image        
        self.rect = self.image.get_rect()  
        self.angle = 0

    def initLoc(self, pos, radius):
        self.pos = pos
        self.radius = radius

    def update(self):
        center = pygame.math.Vector2(self.pos) + pygame.math.Vector2(0, -self.radius).rotate(-self.angle) 
        self.image = pygame.transform.rotate(self.original_image, self.angle)
        self.rect = self.image.get_rect(center = (round(center.x), round(center.y)))            
        
    def turnLeft(self):
        self.angle = (self.angle + 4) % 360
   
pygame.init()
window = pygame.display.set_mode((800, 800))
clock = pygame.time.Clock()
cross1= Crucifix()
enemy_s = EnemiesStrong()
pos = cross1.rect.x, cross1.rect.y

enemy_s.initLoc(cross1.rect.center, 100)
all_sprites = pygame.sprite.Group(enemy_s)
all_sprites.add(cross1)

run = True
while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    enemy_s.turnLeft()
    all_sprites.update()

    window.fill(0)
    
    all_sprites.draw(window)
    pygame.display.flip()

pygame.quit()
exit()


           

        

我不确定此时该尝试什么。任何帮助将不胜感激。

python pygame game-physics physics game-development
© www.soinside.com 2019 - 2024. All rights reserved.