相关疑难解决方法(0)

Python如何延迟子弹射击

提前谢谢您的时间.

如果我使用空格键发射子弹,则会创建一连串子弹.如果我在'if keys [pygame.K_SPACE]:'里面设置time.sleep()的延迟,那么它也会将循环冻结设定的秒数.我怎么能这样做,所以一次只发射一颗子弹?这是我的游戏循环的副本,请告诉我是否需要更多代码:

def game_loop():
    global pause
    x = (display_width * 0.2)
    y = (display_height * 0.2)

    x_change = 0
    y_change = 0

    blob_speed = 3

    velocity = [2, 2]

    pos_x = display_width/1.2
    pos_y = display_height/1.2

    gameExit = False
    while not gameExit:
        for event in pygame.event.get():#monitors hardware movement/ clicks
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        pos_x += velocity[0]
        pos_y += velocity[1]

        if pos_x + blob_width > display_width or pos_x < 601:
            velocity[0] = -velocity[0]

        if pos_y + blob_height > …
Run Code Online (Sandbox Code Playgroud)

python pygame

3
推荐指数
1
解决办法
395
查看次数

在pygame中朝鼠标方向射击子弹

我只是不明白为什么我的子弹不起作用。我做了一个子弹课,这里是:

class Bullet:
    def __init__(self):
        self.x = player.x
        self.y = player.y
        self.height = 7
        self.width = 2
        self.bullet = pygame.Surface((self.width, self.height))
        self.bullet.fill((255, 255, 255))
Run Code Online (Sandbox Code Playgroud)

现在我在我的游戏类中添加了几个函数,这是新代码:

class Game:
    def __init__(self):
        self.bullets = []
    
    def shoot_bullet(self):
         if self.bullets:
            for bullet in self.bullets:
                rise = mouse.y - player.y
                run = mouse.x - player.x
                angle = math.atan2(rise, run)

                bullet.x += math.cos(angle)
                bullet.y += math.sin(angle)

                pygame.transform.rotate(bullet.bullet, -math.degrees(angle))
                D.blit(bullet.bullet, (bullet.x, bullet.y))


    def generate_bullet(self):
        if  mouse.is_pressed():
            self.bullets.append(Bullet())
Run Code Online (Sandbox Code Playgroud)

我期望代码做的是每次按下鼠标按钮时Bullet()都会添加game.bullets一个,然后game.shoot_bullet计算玩家和鼠标之间的角度并相应地朝鼠标的方向发射子弹。然而,结果是一团糟,子弹实际上不旋转也不移动。它们被生成并奇怪地移动到屏幕的左侧。我不确定我是否搞砸了什么,或者我使用的方法是完全错误的。

python pygame

3
推荐指数
1
解决办法
810
查看次数

如何一次停止发射 1 颗以上的子弹?

import pygame
pygame.init()

red = 255,0,0
blue = 0,0,255
black = 0,0,0

screenWidth = 800
screenHeight = 600

gameDisplay = pygame.display.set_mode((screenWidth,screenHeight))        ## screen width and height
pygame.display.set_caption('JUST SOME BLOCKS')       ## set my title of the window

clock = pygame.time.Clock()

class player():       ## has all of my attributes for player 1
    def __init__(self,x,y,width,height):
        self.x = x
        self.y = y
        self.height = height
        self.width = width
        self.vel = 5
        self.left = False
        self.right = False
        self.up = False
        self.down = False

class …
Run Code Online (Sandbox Code Playgroud)

python pygame pygame-tick

3
推荐指数
1
解决办法
383
查看次数

标签 统计

pygame ×3

python ×3

pygame-tick ×1