问题描述
我正在创建一个游戏,我需要在角色周围创建一个戒指。我编写了用于创建墙的 OOP,如下所示,但我不知道如何修改此代码以便它可以在我的播放器周围创建一个环。
class Wall(pygame.sprite.Sprite):
def __init__(self,x,y,width,height,color):
super().__init__()
self.image = pygame.Surface([width,height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.rect.y = y
self.rect.x = x
另外,我想传入的变量是颜色、半径、宽度/厚度和 x & y 坐标,例如
circle = Circle(colour,radius,y)
绘图精灵编辑:
spriteList.add(wallList)
spriteList.draw(screen)
非常感谢任何帮助, 干杯
解决方法
画一个圆
pygame.draw.circle(surface,color,center,radius)
如果你只是想画一个圆形精灵,你需要做的就是指定圆的半径和宽度(线宽):
class Circle(pygame.sprite.Sprite):
def __init__(self,circleColor,radius,width,x,y):
super().__init__()
self.image = pygame.Surface((radius * 2,radius * 2),pygame.SRCALPHA)
pygame.draw.circle(self.image,(radius,radius),width)
self.rect = self.image.get_rect(center = (x,y))
使用此解决方案,您需要在同一位置分别绘制 2 个对象,精灵和圆。
然而,如果你想创建一个围绕它的圆圈的单个精灵对象,你需要创建一个比精灵图像大的透明表面。 blit
表面上的精灵并在其周围画一个圆圈。下面的 image
是一个 pygame.Surface
对象:
import math
class MyPlayer(pygame.sprite.Sprite):
def __init__(self,y,image,width):
super().__init__()
diameter = math.hypot(*image.get_size())
radius = diameter // 2
self.image = pygame.Surface((diameter,diameter),pygame.SRCALPHA)
self.image.blit(image,image.get_rect(center = (radius,radius))
pygame.draw.circle(self.image,y))