如何在Pygame Zero中制作全向子弹



我决定制作一款自上而下的射击游戏,但我不知道如何进行全方位射击。每个网站和视频都基于pygame,而不是零,这是我迄今为止的代码:

#Imports
import pgzrun
import random
#Pygame Zero window size
WIDTH = 400
HEIGHT = 400
#Actors
floor = Actor("floor")
sadboy = Actor("sadboy")
#Variables
sadboy.x = WIDTH//2
sadboy.y = HEIGHT//2
#Lists
sadtears = []

def update():
#Movement
if keyboard.a:
sadboy.x -= 2
if keyboard.d:
sadboy.x += 2
if keyboard.w:
sadboy.y -= 2
if keyboard.s:
sadboy.y += 2

#Drawing floor and character
def draw():
screen.clear()
screen.blit("floor", (0, 0))
sadboy.draw()
for sadtear in sadtears:
sadtear.draw()

def on_key_down(key):
if key == keys.UP:
sadtears.append(Actor('sadtear'))
sadtears[-1].x = sadboy.x
sadtears[-1].y = sadboy.y
sadtear.y -= 5
if key == keys.DOWN:
sadtears.append(Actor('sadtear'))
sadtears[-1].x = sadboy.x
sadtears[-1].y = sadboy.y
sadtear.y += 5
if key == keys.LEFT:
sadtears.append(Actor('sadtear'))
sadtears[-1].x = sadboy.x
sadtears[-1].y = sadboy.y
sadtear.x -= 5
if key == keys.RIGHT:
sadtears.append(Actor('sadtear'))
sadtears[-1].x = sadboy.x
sadtears[-1].y = sadboy.y
sadtear.x += 5

pgzrun.go()

如果有人能帮我,请帮我,因为我已经为此挣扎了一段时间。非常感谢!

我不知道我是否理解你,我也无法测试它是否有效,但我会为每个子弹设置speed_xspeed_y

def on_key_down(key):
if key == keys.UP:
bullet = Actor('sadtear')
bullet.x = sadboy.x
bullet.y = sadboy.y
bullet.speed_x = 0
bullet.speed_y = -5
sadtears.append(bullet)

(其他方向需要不同的值speed_xspeed_y(

我会在update()中使用它来移动

def update():

for bullet in sadtears:
bullet.x += bullet.speed_x
bullet.y += bullet.speed_y

最新更新