首页 > 解决方案 > 在pygame中围绕中心点旋转玩家

问题描述

我正在制作一个游戏,其中有两个玩家,他们可以互相射击。它们的移动将由围绕固定点的旋转定义,该点将是 (600, 300),它是我们屏幕的中心。只要玩家按下某个按钮(不断为我们的玩家提供力量),他们就会一直围绕该点旋转,否则他们会跌倒(由于重力)。我认为将其视为使用绳子连接到点的球会有所帮助。只要按下按钮,绳子就会被连接,而一旦按钮被释放并且球飞走,绳子就会松开。这是我的播放器类

class Player:
    def __init__(self):
        self.pos = [500, 200]
        self.width = 30
        self.height = 30
        self.player = pygame.image.load("player.png").convert_alpha()
        self.player = pygame.transform.scale(self.player, (self.width, self.height))
        self.rect = self.player.get_rect()
        self.rotated_player = None
        self.anguler_vel = 0
        self.Fg = 0.05
        self.Fp = 0
        self.arm_length = 0

Fp是垂直于重力的力FgFg是把它拉到我们的玩家身上的力量。Fp由 定义math.sin(theta) * Fg。我正在跟踪,Fp因为我希望玩家在从绳子上脱离后继续沿旋转方向移动。arm_length是字符串的长度。

我有一个Point类,这是我们的玩家将旋转的点。这是重点课程。

class Point:
    def __init__(self,x, y):
        self.pos = [x, y]
        dx = self.pos[0] - player.pos[0]
        dy = self.pos[1] - player.pos[1]
        self.angle = math.atan2(dy, dx)

现在,我需要实际旋转本身的帮助。我知道在每一帧的角度上添加一个特定的值会让它四处走动。但是我如何让它绕过我指定的某个点,以及臂长如何与此相关?我发现实现所有这些真的很困难,因为 y 轴是翻转的,并且由于 FPS 速率,在计算中使用它们时所有位置值都必须按比例缩小。任何有关如何完成此操作的帮助也将不胜感激。谢谢

标签: pythonpygame

解决方案


推荐阅读