#python #pgzero
Вопрос:
Я решил, что собираюсь сделать шутер с видом сверху, но я не могу понять, как выполнять всенаправленную съемку. Каждый веб-сайт и видео основаны на 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()
Если кто-нибудь может мне помочь, пожалуйста, сделайте это, потому что я уже некоторое время борюсь с этим. Большое спасибо!
Комментарии:
1. Я не знаю, что это значит
omni directional shooting
. Если вы хотите двигаться в каком-то направлении, то вам нужноangle
, а затем вы можете рассчитатьdx = speed * sin(angle)
dy = speed * cos(angle)
(или, может быть, сначала должно бытьcos()
и второеsin()
). И PyGame должнаpygame.math
сделать это проще. Иpgzero
также должен иметь его.2. и если вы двигаетесь только
left, right, up, down
тогда , вы можете уменьшить его до значенийdx = -speed, dy = 0
дляleft
,dx = 0, dy = -speed
дляup
и т. Д. И вы должны использовать ихupdate
для измененияx, y
Ответ №1:
Я не знаю , понимаю ли я вас, и я не могу проверить, работает ли это, но я бы поставил 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