RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-390543

gogolplay's questions

Martin Hope
gogolplay
Asked: 2022-07-24 05:01:03 +0000 UTC

游戏。需要制作动画

  • 0

我欢迎大家!我开始学习 pygame,对于我的游戏,有必要为角色制作一个附加的相机,我做到了,但现在我的代码已经有点困惑了。一般来说,你需要制作一个角色的空闲动画,我做了几次尝试,但不知何故没有成功。请告知如何做到这一点。提前致谢。这是我的代码:

import sys
from random import randint


class Enemies(pygame.sprite.Sprite):
    def __init__(self, pos, group):
        super(Enemies, self).__init__(group)
        self.image = pygame.image.load('enemy/name.png')
        self.rect = self.image.get_rect(topleft = pos)


class Player(pygame.sprite.Sprite):
    def __init__(self, pos, group):
        super(Player, self).__init__(group)
        self.idle_animation = [pygame.image.load('player/idle/idle' + f"{i}.png") for i in range(1, 11)]
        self.idle = True
        self.image = pygame.image.load('player/idle/idle1.png')
        self.rect = self.image.get_rect(center = pos)
        self.direction = pygame.math.Vector2()
        self.speed = 5

    def input(self):
        key = pygame.key.get_pressed()

        if key[pygame.K_w]:
            self.direction.y = -1
            self.idle = False
        elif key[pygame.K_s]:
            self.direction.y = 1
            self.idle = False
        else:
            self.direction.y = 0
            self.idle = True

        if key[pygame.K_d]:
            self.direction.x = 1
            self.idle = False
        elif key[pygame.K_a]:
            self.direction.x = -1
            self.idle = False
        else:
            self.direction.x = 0
            self.idle = True

        if self.idle == True:
            for i in range(1, 11):
                self.image = pygame.image.load('player/idle/idle' + str(i) + '.png')

    def update(self):
        self.input()
        self.rect.center += self.direction * self.speed


class CameraGroup(pygame.sprite.Group):
    def __init__(self):
        super(CameraGroup, self).__init__()
        self.display_surface = pygame.display.get_surface()

        self.offset = pygame.math.Vector2()
        self.half_w = self.display_surface.get_size()[0] // 2
        self.half_h = self.display_surface.get_size()[1] // 2

        self.ground_surf = pygame.image.load('bg/bg.png')
        self.ground_rect = self.ground_surf.get_rect(topleft = (0,0))

    def center_target_camera(self, target):
        self.offset.x = target.rect.centerx - self.half_w
        self.offset.y = target.rect.centery - self.half_h

    def custom_draw(self, player):
        self.center_target_camera(player)

        ground_offset = self.ground_rect.topleft - self.offset
        self.display_surface.blit(self.ground_surf, ground_offset)

        for sprite in sorted(self.sprites(), key = lambda sprite: sprite.rect.centery):
            offset_pos = sprite.rect.topleft - self.offset
            self.display_surface.blit(sprite.image, offset_pos)


pygame.init()
screen = pygame.display.set_mode((640, 360), pygame.FULLSCREEN)
pygame.mouse.set_visible(False)

camera_group = CameraGroup()
player = Player((640, 360), camera_group)

for i in range(20):
    random_x = randint(0, 1000)
    random_y = randint(0, 1000)
    Enemies((random_x, random_y), camera_group)

fps = 30
clock = pygame.time.Clock()
true = True

while true:
    clock.tick(fps)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        if pygame.key.get_pressed()[pygame.K_ESCAPE]:
            event.type = pygame.QUIT

    screen.fill([255, 255, 255])

    camera_group.update()
    camera_group.custom_draw(player)

    pygame.display.flip()
python pygame
  • 1 个回答
  • 61 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5