Python 如何防止精灵相互重叠

Python 如何防止精灵相互重叠,python,python-3.x,pygame,Python,Python 3.x,Pygame,所以我对Pygame没有太多经验,我想知道如何防止敌人重叠。我尝试过几种方法,但几乎没有成功。我想听听你对我如何做这件事的看法。我认为一个好主意是通过碰撞检测。但我不太确定这将如何运作 以下是代码: class Enemy: def __init__(self, x, y): self.x = x self.y = y def draw(self): global characterradius, characterradius1

所以我对Pygame没有太多经验,我想知道如何防止敌人重叠。我尝试过几种方法,但几乎没有成功。我想听听你对我如何做这件事的看法。我认为一个好主意是通过碰撞检测。但我不太确定这将如何运作

以下是代码:

class Enemy:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def draw(self):
        global characterradius, characterradius1, characterradius2, characterradius3, characterradius4, characterradius5
        global characterradius6, characterradius7, estanding, emoveup, emovedown, emoveleft, emoveright, enemyradiusshow
        global eradius1, eradius2, eradius3, eradius4

        self.enemyradiusshow = True
        self.estanding = False
        emoveup = False
        emovedown = False
        emoveleft = False
        emoveright = False

        if moveup:
            self.y += speed
        if movedown:
            self.y -= speed
        if moveleft:
            self.x += speed
        if moveright:
            self.x -= speed

        enemyhitbox = pygame.Rect(self.x + 6, self.y + 5, 50, 80)
        self.enemyhitbox = pygame.Rect(self.x + 6, self.y + 5, 50, 80)
        enemyhitboxvisible = True
        self.enemyhitboxvisible = False
        playerradiusvisible = False

        if self.enemyhitboxvisible:
            pygame.draw.rect(win, (255, 255, 255), (self.x + 6, self.y + 5, 50, 80))
        if enemyhitboxvisible:
            pygame.draw.rect(win, (255, 255, 255), (self.x + 6, self.y + 5, 50, 80))

        if playerradiusvisible:
            pygame.draw.rect(win, (80, 200, 50), (character_x - 180, character_y - 180, 150.5, 150.5))
            pygame.draw.rect(win, (200, 80, 50), (character_x + 80, character_y - 180, 150.5, 150.5))
            pygame.draw.rect(win, (80, 50, 200), (character_x - 180, character_y + 90, 150.5, 150.5))
            pygame.draw.rect(win, (200, 150, 50), (character_x + 80, character_y + 90, 150.5, 150.5))

            pygame.draw.rect(win, (150, 150, 50), (character_x - 180, character_y - 30, 150.5, 120))
            pygame.draw.rect(win, (200, 70, 50), (character_x + 80, character_y - 30, 150.5, 120))
            pygame.draw.rect(win, (50, 150, 200), (character_x - 30, character_y - 180, 110, 150.5))
            pygame.draw.rect(win, (50, 150, 200), (character_x - 30, character_y + 90, 110, 150.5))

        characterradius = pygame.Rect(character_x - 180, character_y - 180, 150.5, 150.5)
        characterradius1 = pygame.Rect(character_x + 80, character_y - 180, 150.5, 150.5)
        characterradius2 = pygame.Rect(character_x - 180, character_y + 90, 150.5, 150.5)
        characterradius3 = pygame.Rect(character_x + 80, character_y + 90, 150.5, 150.5)
        character_hitbox = pygame.Rect(character_x + 80, character_y + 90, 150.5, 150.5)

        characterradius4 = pygame.Rect(character_x - 180, character_y - 30, 150.5, 120)
        characterradius5 = pygame.Rect(character_x + 80, character_y - 30, 150.5, 120)
        characterradius6 = pygame.Rect(character_x - 30, character_y - 180, 110, 150.5)
        characterradius7 = pygame.Rect(character_x - 30, character_y + 90, 110, 150.5)

        self.enemyspeed = 1

        if characterradius.colliderect(self.enemyhitbox):
            self.x += self.enemyspeed
            self.y += self.enemyspeed
            emoveleft = True
        if characterradius1.colliderect(self.enemyhitbox):
            self.x -= self.enemyspeed
            self.y += self.enemyspeed
            emoveright = True
        if characterradius2.colliderect(self.enemyhitbox):
            self.x += self.enemyspeed
            self.y -= self.enemyspeed
            emoveleft = True
        if characterradius3.colliderect(self.enemyhitbox):
            self.x -= self.enemyspeed
            self.y -= self.enemyspeed
            emoveright = True
        if characterradius4.colliderect(self.enemyhitbox):
            self.x += self.enemyspeed
            emoveleft = True
        if characterradius5.colliderect(self.enemyhitbox):
            self.x -= self.enemyspeed
            emoveright = True
        if characterradius6.colliderect(self.enemyhitbox):
            self.y += self.enemyspeed
            emovedown = True
        if characterradius7.colliderect(self.enemyhitbox):
            self.y -= self.enemyspeed
            emoveup = True

        if emoveup:
            win.blit(zombieupimage, (self.x, self.y))
            self.emovedown = False
            self.emoveleft = False
            self.emoveright = False
            self.emoveup = True
        if emovedown:
            win.blit(zombieimage, (self.x - 5.5, self.y - 4))
            self.emovedown = True
            self.emoveleft = False
            self.emoveright = False
            self.emoveup = False
        if emoveleft:
            win.blit(zombieleftimage, (self.x, self.y))
            self.emovedown = False
            self.emoveleft = True
            self.emoveright = False
            self.emoveup = False
        if emoveright:
            win.blit(zombierightimage, (self.x, self.y))
            self.emovedown = False
            self.emoveleft = False
            self.emoveright = True
            self.emoveup = False

        if not emoveup:
            self.estanding = True
        if not emovedown:
            self.estanding = True
        if not emoveleft:
            self.estanding = True
        if not emoveright:
            self.estanding = True

        if characterradius.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius1.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius2.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius3.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius4.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius5.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius6.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius7.colliderect(self.enemyhitbox):
            self.estanding = False
以下是完整的代码,以备您需要:

import pygame
import time
import os
import random

pygame.init()

# Screen Resolution
screen_width = 800
screen_height = 600

# Character Variables
character_x = 380
character_y = 250

# Background Variables
backgroundx = -375
backgroundy = -255

# Images
bgimage = pygame.image.load('bg.png')
characterimage = pygame.image.load('character.png')
characterbackimage = pygame.image.load('characterback.png')
characterleftimage = pygame.image.load('characterright.png')
characterrightimage = pygame.image.load('characterleft.png')

zombieimage = pygame.image.load('zombie.png')
zombieupimage = pygame.image.load('zombieback.png')
zombieleftimage = pygame.image.load('zombieleft.png')
zombierightimage = pygame.image.load('zombieright.png')

healthbarimage = pygame.image.load('healthbar.png')
hungerbarimage = pygame.image.load('hungerbar.png')
thirstbarimage = pygame.image.load('thirstbar.png')
energybarimage = pygame.image.load('energybar.png')

healthimage = pygame.image.load('health.png')
hungerimage = pygame.image.load('hunger.png')
thirstimage = pygame.image.load('thirst.png')

vignetteimage = pygame.image.load('vignette.png')

# Movement Fix
characterbackx = 6.5
characterbacky = 5
characterleftx = 5
characterlefty = 4
characterrightx = 7.5
characterrighty = 4.5

# Bars
healthbarx = 580
healthbary = 555
hungerbarx = 580
hungerbary = 520
thirstbarx = 580
thirstbary = 485
energybarx = 765
energybary = 430

energybardraw_x = 770
energybardraw_y = 432.5
energybardraw_width = 15
energybardraw_height = 1

thirstbardraw_x = 581
thirstbardraw_y = 490.7
thirstbardraw_width = 1
thirstbardraw_height = 15

hungerbardraw_x = 581
hungerbardraw_y = 524
hungerbardraw_width = 1
hungerbardraw_height = 15

thirsttimer = 0
hungertimer = 0
notsprintthirst = True
notsprinthunger = True
sprintthirst = False
sprinthunger = False

# Settings Variables
vignettex = 0
vignettey = 0

# Settings
vignette_on = True
vignette_off = False

# Movement
timerdown = 0
timerup = 0
timerleft = 0
timerright = 0

movingdown = True
movingleft = False
movingright = False
movingup = False

able_to_move = True

moveup = False
movedown = False
moveleft = False
moveright = False
sprint = False
speed = 2.5


def loadinscreen():

    loadingscreen = pygame.image.load('loadingscreen.png')
    os.environ['SDL_VIDEO_CENTERED'] = '1'
    pygame.init()
    screen = pygame.display.set_mode((500, 80), pygame.NOFRAME)
    bg = pygame.Surface(screen.get_size())
    bg.fill((0, 244, 0))
    screen.blit(loadingscreen, (0, 0))
    pygame.display.update()
    time.sleep(1)

# Tiers / Level Ups


speedtier_1 = True

# Hitboxes Variables

win = pygame.display.set_mode((screen_width, screen_height))
character = win.blit(characterimage, (character_x, character_y))

class Enemy:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def draw(self):
        global characterradius, characterradius1, characterradius2, characterradius3, characterradius4, characterradius5
        global characterradius6, characterradius7, estanding, emoveup, emovedown, emoveleft, emoveright, enemyradiusshow
        global eradius1, eradius2, eradius3, eradius4

        self.enemyradiusshow = True
        self.estanding = False
        emoveup = False
        emovedown = False
        emoveleft = False
        emoveright = False

        if moveup:
            self.y += speed
        if movedown:
            self.y -= speed
        if moveleft:
            self.x += speed
        if moveright:
            self.x -= speed

        enemyhitbox = pygame.Rect(self.x + 6, self.y + 5, 50, 80)
        self.enemyhitbox = pygame.Rect(self.x + 6, self.y + 5, 50, 80)
        enemyhitboxvisible = True
        self.enemyhitboxvisible = False
        playerradiusvisible = False

        if self.enemyhitboxvisible:
            pygame.draw.rect(win, (255, 255, 255), (self.x + 6, self.y + 5, 50, 80))
        if enemyhitboxvisible:
            pygame.draw.rect(win, (255, 255, 255), (self.x + 6, self.y + 5, 50, 80))

        if playerradiusvisible:
            pygame.draw.rect(win, (80, 200, 50), (character_x - 180, character_y - 180, 150.5, 150.5))
            pygame.draw.rect(win, (200, 80, 50), (character_x + 80, character_y - 180, 150.5, 150.5))
            pygame.draw.rect(win, (80, 50, 200), (character_x - 180, character_y + 90, 150.5, 150.5))
            pygame.draw.rect(win, (200, 150, 50), (character_x + 80, character_y + 90, 150.5, 150.5))

            pygame.draw.rect(win, (150, 150, 50), (character_x - 180, character_y - 30, 150.5, 120))
            pygame.draw.rect(win, (200, 70, 50), (character_x + 80, character_y - 30, 150.5, 120))
            pygame.draw.rect(win, (50, 150, 200), (character_x - 30, character_y - 180, 110, 150.5))
            pygame.draw.rect(win, (50, 150, 200), (character_x - 30, character_y + 90, 110, 150.5))

        characterradius = pygame.Rect(character_x - 180, character_y - 180, 150.5, 150.5)
        characterradius1 = pygame.Rect(character_x + 80, character_y - 180, 150.5, 150.5)
        characterradius2 = pygame.Rect(character_x - 180, character_y + 90, 150.5, 150.5)
        characterradius3 = pygame.Rect(character_x + 80, character_y + 90, 150.5, 150.5)
        character_hitbox = pygame.Rect(character_x + 80, character_y + 90, 150.5, 150.5)

        characterradius4 = pygame.Rect(character_x - 180, character_y - 30, 150.5, 120)
        characterradius5 = pygame.Rect(character_x + 80, character_y - 30, 150.5, 120)
        characterradius6 = pygame.Rect(character_x - 30, character_y - 180, 110, 150.5)
        characterradius7 = pygame.Rect(character_x - 30, character_y + 90, 110, 150.5)

        self.enemyspeed = 1

        if characterradius.colliderect(self.enemyhitbox):
            self.x += self.enemyspeed
            self.y += self.enemyspeed
            emoveleft = True
        if characterradius1.colliderect(self.enemyhitbox):
            self.x -= self.enemyspeed
            self.y += self.enemyspeed
            emoveright = True
        if characterradius2.colliderect(self.enemyhitbox):
            self.x += self.enemyspeed
            self.y -= self.enemyspeed
            emoveleft = True
        if characterradius3.colliderect(self.enemyhitbox):
            self.x -= self.enemyspeed
            self.y -= self.enemyspeed
            emoveright = True
        if characterradius4.colliderect(self.enemyhitbox):
            self.x += self.enemyspeed
            emoveleft = True
        if characterradius5.colliderect(self.enemyhitbox):
            self.x -= self.enemyspeed
            emoveright = True
        if characterradius6.colliderect(self.enemyhitbox):
            self.y += self.enemyspeed
            emovedown = True
        if characterradius7.colliderect(self.enemyhitbox):
            self.y -= self.enemyspeed
            emoveup = True

        if emoveup:
            win.blit(zombieupimage, (self.x, self.y))
            self.emovedown = False
            self.emoveleft = False
            self.emoveright = False
            self.emoveup = True
        if emovedown:
            win.blit(zombieimage, (self.x - 5.5, self.y - 4))
            self.emovedown = True
            self.emoveleft = False
            self.emoveright = False
            self.emoveup = False
        if emoveleft:
            win.blit(zombieleftimage, (self.x, self.y))
            self.emovedown = False
            self.emoveleft = True
            self.emoveright = False
            self.emoveup = False
        if emoveright:
            win.blit(zombierightimage, (self.x, self.y))
            self.emovedown = False
            self.emoveleft = False
            self.emoveright = True
            self.emoveup = False

        if not emoveup:
            self.estanding = True
        if not emovedown:
            self.estanding = True
        if not emoveleft:
            self.estanding = True
        if not emoveright:
            self.estanding = True

        if characterradius.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius1.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius2.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius3.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius4.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius5.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius6.colliderect(self.enemyhitbox):
            self.estanding = False
        if characterradius7.colliderect(self.enemyhitbox):
            self.estanding = False

        if self.estanding:
            win.blit(zombieimage, (self.x, self.y))

        if self.enemyradiusshow:
            pygame.draw.rect(win, (255, 0, 0), (self.x - 11, self.y + 40, 15, 15))
            pygame.draw.rect(win, (0, 255, 0), (self.x + 23.5, self.y + 87, 15, 15))
            pygame.draw.rect(win, (0, 0, 255), (self.x + 58, self.y + 40, 15, 15))
            pygame.draw.rect(win, (155, 155, 155), (self.x + 23.5, self.y - 12, 15, 15))

        eradius1 = pygame.Rect (self.x - 11, self.y + 40, 15, 15)
        eradius2 = pygame.Rect (self.x + 23.5, self.y + 87, 15, 15)
        eradius3 = pygame.Rect (self.x + 58, self.y + 40, 15, 15)
        eradius4 = pygame.Rect (self.x + 23.5, self.y - 12, 15, 15)




enemies = []
randomposx = 500
randomposy = 500
max_enemies = 10
milliseconds_delay = 1
spawn_event = pygame.USEREVENT + 1
enemie_size = zombieimage.get_size()

pygame.time.set_timer(spawn_event, milliseconds_delay)
run = True

while run:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        elif event.type == spawn_event:
            if len(enemies) < max_enemies:
                x = random.randint(1, randomposx - enemie_size[0])
                y = random.randint(1, randomposy - enemie_size[1])
                e = Enemy(x, y)
                enemies.append(e)

        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w:
                moveup = True
            elif event.key == pygame.K_s:
                movedown = True
            elif event.key == pygame.K_a:
                moveleft = True
            elif event.key == pygame.K_d:
                moveright = True
            elif event.key == pygame.K_LSHIFT:
                sprint = True
        if event.type == pygame.KEYUP:
            if able_to_move:
                if event.key == pygame.K_w:
                    moveup = False
                elif event.key == pygame.K_s:
                    movedown = False
                elif event.key == pygame.K_a:
                    moveleft = False
                elif event.key == pygame.K_d:
                    moveright = False
                elif event.key == pygame.K_LSHIFT:
                    sprint = False

    keys = pygame.key.get_pressed()
    pygame.display.update()

    # Hitboxes

    def background():
        win.blit(bgimage, (backgroundx, backgroundy))

    background()
    for e in enemies:
        e.draw()

    def vignette():
        if vignette_on:
            win.blit(vignetteimage, (vignettex, vignettey))

    vignette()

    class Bars:
        win.blit(healthbarimage, (healthbarx, healthbary))
        win.blit(hungerbarimage, (hungerbarx, hungerbary))
        win.blit(thirstbarimage, (thirstbarx, thirstbary))
        win.blit(energybarimage, (energybarx, energybary))

        win.blit(healthimage, (735, 556.2))
        win.blit(hungerimage, (735, 520.5))
        win.blit(thirstimage, (733.5, 486.6))

    def drawbars():
        pygame.draw.rect(win, (0, 0, 0), (energybardraw_x, energybardraw_y, energybardraw_width, energybardraw_height))
        pygame.draw.rect(win, (0, 0, 0), (thirstbardraw_x, thirstbardraw_y, thirstbardraw_width, thirstbardraw_height))
        pygame.draw.rect(win, (0, 0, 0), (hungerbardraw_x, hungerbardraw_y, hungerbardraw_width, hungerbardraw_height))

    drawbars()

    def hitboxvisible():
        pygame.draw.rect(win, (200, 10, 50), (character_x, character_y, 50, 80))

    if movingdown:
        character = win.blit(characterimage, (character_x, character_y))
    if movingleft:
        characterleft = win.blit(characterleftimage, (character_x + characterleftx, character_y + characterlefty))
    if movingright:
        characterright = win.blit(characterrightimage, (character_x + characterrightx, character_y + characterrighty))
    if movingup:
        characterback = win.blit(characterbackimage, (character_x + characterbackx, character_y + characterbacky))

    if moveup:
        goingdown = False
        movingleft = False
        movingright = False
        movingup = True
        backgroundy += speed
    if movedown:
        movingleft = False
        movingright = False
        movingup = False
        movingdown = True
        backgroundy -= speed
    if moveleft:
        movingdown = False
        movingleft = True
        movingright = False
        movingup = False
        backgroundx += speed
    if moveright:
        movingdown = False
        movingleft = False
        movingright = True
        movingup = False
        backgroundx -= speed

    def energybar_gain():
        global energybardraw_height
        energybardraw_height -= 0.8

    if speedtier_1:
        if sprint:
            speed = 4
            energybardraw_height += 2
            sprintthirst = True
            notsprintthirst = False
            sprinthunger = True
            notsprinthunger = False
        if not sprint:
            speed = 3
            energybar_gain()
            sprintthirst = False
            notsprintthirst = True
            sprinthunger = False
            notsprinthunger = True

        if energybardraw_height < 0:
            energybardraw_height = 1
        if energybardraw_height > 146:
            energybardraw_height = 146
            sprint = False

    if notsprintthirst:
        thirsttimer += 0.5
    if sprintthirst:
        thirsttimer += 1

    if thirsttimer == 150:
        thirstbardraw_width += 2
    if thirsttimer > 150:
        thirsttimer = 0

    if notsprinthunger:
        hungertimer += 0.5
    if sprinthunger:
        hungertimer += 1
    if hungertimer == 175:
        hungerbardraw_width += 2
    if hungertimer > 175:
        hungertimer = 0

    if moveup or movedown or moveleft or moveright:
        timerdown += 1
        if timerdown > 12:
            timerdown = 0

        if timerdown == 1:
            character_y -= 1
        if timerdown == 2:
            character_y -= 1
        if timerdown == 3:
            character_y -= 1
        if timerdown == 4:
            character_y -= 1

        if timerdown == 5:
            character_y += 1
        if timerdown == 6:
            character_y += 1
        if timerdown == 7:
            character_y += 1
        if timerdown == 8:
            character_y += 1

    # Zombies Only

    pygame.display.update()
导入pygame
导入时间
导入操作系统
随机输入
pygame.init()
#屏幕分辨率
屏幕宽度=800
屏幕高度=600
#字符变量
字符x=380
字符_y=250
#背景变量
背景x=-375
背景=-255
#图像
bgimage=pygame.image.load('bg.png')
characterimage=pygame.image.load('character.png')
characterbackimage=pygame.image.load('characterback.png')
characterleftimage=pygame.image.load('characterright.png')
characterrightimage=pygame.image.load('characterleft.png')
zombieimage=pygame.image.load('zombie.png')
zombieupimage=pygame.image.load('zombieback.png')
zombieleftimage=pygame.image.load('zombieleft.png')
zombierightimage=pygame.image.load('zombieright.png')
healthbarimage=pygame.image.load('healthbar.png')
hungerbarimage=pygame.image.load('hungerbar.png')
口渴BarImage=pygame.image.load('口渴Bar.png')
energybarimage=pygame.image.load('energybar.png')
healthimage=pygame.image.load('health.png'))
hungerimage=pygame.image.load('hunger.png')
口渴图像=pygame.image.load('summit.png')
vignetteimage=pygame.image.load('vignette.png')
#运动定位
characterbackx=6.5
characterbacky=5
characterleftx=5
characterlefty=4
characterrightx=7.5
characterrighty=4.5
#栅栏
healthbarx=580
healthbary=555
hungerbarx=580
饥饿指数=520
X=580
巴利=485
energybarx=765
能量巴=430
能量棒x=770
能量棒y=432.5
能量棒宽度=15
能量棒高度=1
原始值x=581
平均原始值y=490.7
原始宽度=1
原始高度=15
hungerbardraw_x=581
hungerbardraw_y=524
hungerbardraw_宽度=1
hungerbardraw_高度=15
计时器=0
饥饿计时器=0
不正确=正确
非饥饿=真
短跑=假
sprint=False
#设置变量
vignettex=0
vignettey=0
#背景
vignette_on=真
vignette_off=错误
#运动
timerdown=0
timerup=0
timerleft=0
timerright=0
向下移动=真
左移=假
movingright=False
movingup=False
能够移动=真
moveup=False
向下移动=错误
moveleft=False
moveright=False
sprint=False
速度=2.5
def loadinscreen():
loadingscreen=pygame.image.load('loadingscreen.png'))
os.environ['SDL\u VIDEO\u CENTERED']=“1”
pygame.init()
screen=pygame.display.set_模式((500,80),pygame.NOFRAME)
bg=pygame.Surface(screen.get_size())
背景填充((0,244,0))
屏幕blit(加载屏幕,(0,0))
pygame.display.update()
时间。睡眠(1)
#分层/分级
speedtier_1=真
#Hitboxs变量
win=pygame.display.set_模式((屏幕宽度、屏幕高度))
character=win.blit(characterimage,(character\ux,character\uy))
阶级敌人:
定义初始化(self,x,y):
self.x=x
self.y=y
def牵引(自):
全局字符半径,字符半径1,字符半径2,字符半径3,字符半径4,字符半径5
全局CharacterRadius 6、CharacterRadius 7、estanding、emoveup、emovedown、emoveleft、emoveright、enemyradiusshow
全球eradius1、eradius2、eradius3、eradius4
self.enemyradiusshow=True
self.estanding=False
emoveup=False
emovedown=False
emoveleft=False
emoveright=假
如果向上移动:
self.y+=速度
如果向下移动:
self.y-=速度
如果向左移动:
self.x+=速度
如果正确:
self.x-=速度
enemyhitbox=pygame.Rect(self.x+6,self.y+5,50,80)
self.enemyhitbox=pygame.Rect(self.x+6,self.y+5,50,80)
enemyhitboxvisible=True
self.enemyhitboxvisible=False
playerradiusvisible=False
如果self.enemyHitbox可见:
pygame.draw.rect(赢,(255,255,255),(self.x+6,self.y+5,50,80))
如果EnemyHitbox可见:
pygame.draw.rect(赢,(255,255,255),(self.x+6,self.y+5,50,80))
如果PlayerRadius可见:
pygame.draw.rect(赢,(8020050),(character_x-180,character_y-180150.5150.5))
pygame.draw.rect(赢,(200,80,50),(角色x+80,角色y-180150.5150.5))
pygame.draw.rect(赢,(80,50,200),(角色x-180,角色y+90150.5150.5))
pygame.draw.rect(赢,(200,150,50),(角色x+80,角色y+90150.5150.5))
pygame.draw.rect(赢,(150,150,50),(character_x-180,character_y-30150.5120))
pygame.draw.rect(赢,(200,70,50),(角色x+80,角色y-30150.5120))
pygame.draw.rect(赢,(50150200),(角色x-30,角色y-180110150.5))
pygame.draw.rect(赢,(50150200),(角色x-30,角色y+90110150.5))
characterradius=pygame.Rect(character_x-180,character_y-180150.5150.5)
characterradius1=pygame.Rect(character_x+80,character_y-180150.5150.5)
characterradius2=pygame.Rect(character_x-180,character_y+90150.5150.5)
characterradius3=pygame.Rect(character_x+80,character_y+90150.5150.5)
character_hitbox=pygame.Rect(character_x+80,character_y+90150.5150.5)
characterradius4=pygame.Rect(character_x-180,character_y-30150.5120)
characterradius5=pygame.Rect(character_x+80,character_y-30150.5120)
characterradius6=pygame.Rect(character_x-30,character_y-180110150.5)
字符半径7=py
for enemy1 in enemies: 
    for enemy2 in enemies:
        if enemy1 == enemy2: #if both are the same enemy
            continue
        # Find the dist between both enemies
        # *Assumes sprite anchor is in center
        distanceBetween = Vector2.DistanceBetween(enemy1, enemy2)  
        combinedHitbox = enemy1.radius + enemy2.radius

        if combinedHitbox < distanceBetween:
            # Calculate the delta position (difference between)
            positionDiff = enemy2.position - enemy1.position
            # Move them away from each other half of the distance between them.
            enemy2.position += positionDiff /2
            enemy1.position -= positionDiff /2