gpt4 book ai didi

python - 当我点击移动时,如何为 pygame 角色行走设置动画

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:28 26 4
gpt4 key购买 nike

我是 pygame 的新手,正在制作一个游戏。我有一个角色,我正在努力让腿动起来。有两张图片,如何切换它们?角色是蓝色巫师。有人可以帮忙吗?谢谢大家

import pygame
import time
time_start = time.time()
seconds = 0
pygame.init()
time = pygame.time.get_ticks()
timeStep = 1000
display_width = 1500
display_height = 750
originx = 0
originy = 0
gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('Game')
black = (0,0,0)
white = (255,255,255)
dollarBill = pygame.image.load('DollarBill.png')
clock = pygame.time.Clock()
killed = False
manImg = pygame.image.load('Wizard1Front.png')
manImgt = pygame.image.load('Wizard1Front.png')
wfo = True
def dollarbill(dx,dy):
gameDisplay.blit(dollarBill, (dx,dy))
def blueWizard(x,y):
if wfo == True:
gameDisplay.blit(manImg, (x,y))
else:
gameDisplay.blit(manImgt, (x,y))
x = (display_width * 0.45)
y = (display_height * 0.8)
dx = (display_width * 0.45)
dy = (display_height * 0.8)
#key response
key_left = False
key_right = False
key_up = False
key_down = False
right_ctrl = False
ctrl_left = False
ctrl_right = False
ctrl_up = False
ctrl_down = False
while not killed:
for event in pygame.event.get():
if event.type == pygame.QUIT:
crashed = True
pygame.quit()
quit()
############################
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
key_left = True
ctrl_left = True
elif event.key == pygame.K_RIGHT:
key_right = True
ctrl_right = True
elif event.key == pygame.K_UP:
key_up = True
ctrl_up = True
elif event.key == pygame.K_DOWN:
key_down = True
ctrl_down = True
elif event.key == pygame.K_RCTRL:
right_ctrl = True
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
key_left = False
ctrl_left = False
if event.key == pygame.K_RIGHT:
key_right = False
ctrl_right = False
if event.key == pygame.K_UP:
key_up = False
ctrl_up = False
if event.key == pygame.K_DOWN:
key_down = False
ctrl_down = False
######################
##what the keys do
if key_right == True and x < (display_width - 74):
x += 2.5
if key_left == True and x > 0:
x += -2.5
if key_up == True and y > 0:
y += -2.5
if key_down == True and y < (display_height - 113):
y += 2.5
if right_ctrl == True:
dx += 20
if ctrl_left == True:
dx += -2.5
if ctrl_right == True:
dx += 2.5
if ctrl_up == True:
dy += -2.5
if ctrl_down == True:
dy += 2.5
##extra logic
if dx > (display_width) or dy > (display_height):
dx = x
dy = y
right_ctrl = False
if dx < (originx) or dy < (originy):
dx = x
dy = y
right_ctrl = False
gameDisplay.fill(black)
blueWizard(x,y)
dollarbill(dx,dy)
pygame.display.update()
clock.tick(60)
pygame.quit()
quit()

最佳答案

虽然此示例可能适用于简单的两个图像移动 Sprite ,但您真正想做的是考虑使用 Sprite 表。

Sprite Sheets 是传统游戏中运动的方式(原始 NES、Sega 等)。

基本思想是,您拥有一张包含 Sprite 所有可能图像的大图像。然后,您使用代码将该大图像的特定 block 分配给新图像。然后将这些图像放入一个数组中。当你的玩家移动时,你会增加数组索引,然后在到达末尾时重置为 0。

如何选择要显示的图像(索引)可以通过在 map 上的放置(x 或 y 位置)、当前速度或某些其他属性来定义。

您甚至可以根据玩家状态更改使用的图像数组。这意味着,您可以拥有一组用于行走的图像,另一组用于运行的图像,以及一组用于跳跃的图像。您可以根据标志或状态对象确定哪个数组。

一般来说,为了获得良好的行走 Action ,您的阵列中至少需要 6 个图像。

有关 PyGame 中 Sprite 表的更多信息,请查看他们的 wiki:https://pygame.org/wiki/Spritesheet

有关 sprite 表的示例,请查看 Spriters 资源:http://www.spriters-resource.com/

关于python - 当我点击移动时,如何为 pygame 角色行走设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32108655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com