python-3.x 有没有办法在pyglet中移动2d世界的摄像头?

xyhw6mcr  于 2022-11-19  发布在  Python
关注(0)|答案(3)|浏览(93)

我正在测试pyglet,它什么都有(除了一个很好的指南),但我唯一不明白的是:如何移动摄像头以显示隐藏内容?

twh00eeo

twh00eeo1#

如Rabbid 76所述,尝试pyglet.gl.glTranslatef(dx,dy,dz)。
glTranslatef中的第一个参数更改假定的“camera”的x方向,第二个参数更改y方向,第三个参数更改z方向。下面是一个快速代码示例,可能也会有所帮助:

import pyglet
from pyglet.window import key
from pyglet.gl import glTranslatef  

def movement(keys):
    if keys[key.I]:
        glTranslatef(0,10,0)
    if keys[key.K]:
        glTranslatef(0,-10,0)
    if keys[key.J]:
        glTranslatef(-10,0,0)
    if keys[key.L]:
        glTranslatef(10,0,0)

def update(dt):
    window.clear()
    label.draw()
    movement()

if __name__ == '__main__':

    window = pyglet.window.Window(height=1000,width=1000)
    keys = key.KeyStateHandler()
    window.push_handlers(keys)
    label = pyglet.text.Label('Hello, world',
                          font_size=36,
                          x=window.width//2, y=window.height//2)

    pyglet.clock.schedule_interval(update,1/60)
    pyglet.app.run()

在上面的例子中,您可以使用I、J、K和L键在窗口中移动标签。希望这对您有所帮助!

0kjbasz6

0kjbasz62#

尝试使用偏移量。Fo/x,假设x = 0,并且camoffset = 5。你可以将x渲染为x+camoffset。它可以工作。

mqkwyuun

mqkwyuun3#

对于pyglet 2更新之后的任何人,现在可以使用Window.view = Window.view.from_translation(pygmath.Vec3(xpos, ypos, zpos))

相关问题