微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Pygame Zero 中制作全方位子弹

如何解决如何在 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。