在电子游戏中将滚动添加到血小板中。

在电子游戏中将滚动添加到血小板中。

好的,我在下面列出了我的项目的代码,我只是在做一些关于制作一个平台的玩玩游戏的实验。我试图弄清楚如何做一些非常简单的滚动跟随玩家,所以播放器是相机的中心,它反弹/跟随他。有谁可以帮我?

import pygamefrom pygame import *WIN_WIDTH = 800WIN_HEIGHT = 640HALF_WIDTH = int(WIN_WIDTH / 2)HALF_HEIGHT = int(WIN_HEIGHT / 2)
DISPLAY = (WIN_WIDTH, WIN_HEIGHT)DEPTH = 32FLAGS = 0CAMERA_SLACK = 30def main():
    global cameraX, cameraY
    pygame.init()
    screen = pygame.display.set_mode(DISPLAY, FLAGS, DEPTH)
    pygame.display.set_caption("Use arrows to move!")
    timer = pygame.time.Clock()

    up = down = left = right = running = False
    bg = Surface((32,32))
    bg.convert()
    bg.fill(Color("#000000"))
    entities = pygame.sprite.Group()
    player = Player(32, 32)
    platforms = []

    x = y = 0
    level = [
        "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP",
        "P                                P",
        "P                                P",
        "P                                P",
        "P                                P",
        "P                                P",
        "P                                P",
        "P                                P",
        "P       PPPPPPPPPPP              P",
        "P                                P",
        "P                                P",
        "P                                P",
        "P                                P",
        "PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP",]
    # build the level
    for row in level:
        for col in row:
            if col == "P":
                p = Platform(x, y)
                platforms.append(p)
                entities.add(p)
            if col == "E":
                e = ExitBlock(x, y)
                platforms.append(e)
                entities.add(e)
            x += 32
        y += 32
        x = 0

    entities.add(player)

    while 1:
        timer.tick(60)
斯蒂芬大帝
浏览 437回答 3
3回答

桃花长相依

因为正确的知道,你有一个静态的背景,和你控制的球员,是闪现在他的位置,你有两个选项,始终显示字符在中间。如果你的地图是小的,你可以有一个大的IMG A,并得到一个矩形,根据播放器的位置,将是屏幕的大小。这样,球员将永远处于中间。Rect.钳(RECT)或Rect.钳_IP(RECT)将在这方面帮助您。另一种方法是为屏幕上的位置设置一个不同的元组。播放器将在屏幕中心有一个恒定的值,而背景位置将是播放器位置的负值。

开心每一天1111

唯一的方法是将地图中的逻辑位置与屏幕上的物理位置分开。任何与实际在屏幕上绘制地图相关的代码-在您的例子中,所有的.rect你的精灵属性-必须这样做,根据一个偏移的部分,你的屏幕是实际使用的地图。例如,您的屏幕可能会显示您的地图,从左上角的位置(10,10)开始-所有这些都显示相关代码(在上面的例子中,这些代码是.rect属性)应该从当前逻辑位置减去屏幕偏移量-(假设字符位于地图共弦处(12,15),因此,在上面的示例中,应该以(12,15)-(10,10)->(2,5)*块_size绘制它,在上面的示例中,块_size被硬编码为32,32,所以您希望在显示的物理像素位置(2*32,5*32)绘制它)。(提示:避免用这种方式硬编码,在代码开始时将其作为常量声明)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python