问题描述
我决定制作一款自上而下的射击游戏,但我不知道如何进行全方位射击。每个网站和视频都基于 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_x
、speed_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_x
,speed_y
)
我会在 update()
中使用它来移动它
def update():
for bullet in sadtears:
bullet.x += bullet.speed_x
bullet.y += bullet.speed_y