如何获得在pymunk和pyglet中跟随汽车的摄像头

问题描述 投票:0回答:1

因此,我试图让我的车停在屏幕的开始位置,同时将其他所有东西向左移动,但我并没有成功。我的车不需要来自玩家的任何输入,它始终以相同的速度运行。到目前为止,这是我的女仆-

def update(dt):
    global car_x
    global CanIStart

    space.step(0.02)
    for shape in space.shapes:
        if(shape.id == 1):
            carRunNow = int(shape.body.position[0]) - car_x
            car_x = int(shape.body.position[0])
            CanIStart = True


    if(CanIStart):
        for shape in space.shapes:
            if(shape.id == 15):
                space.remove(shape)
                shape.body.position = (int(shape.body.position.x)-carRunNow, int(shape.body.position.y))
                space.add(shape) 

这是我的道路代码-

def make_road(space, size, posOne, run):
    if(run == 10):
        part_shape = pymunk.Segment(space.static_body, (0, 150), (300, 150), 2)
        part_shape.body.position = 0, 0      # Set the position of the body
        part_shape.elasticity = 0.62
        part_shape.friction = 0.62
        part_shape.id = 15
        space.add(part_shape)
        make_road(space, size, (300, 150), run-1)
        return
    elif(run > 0):
        modifier = random.randint(-80,80)
        while(posOne[1] + modifier < 0):
            modifier = random.randint(-80,80)
        part_shape = pymunk.Segment(space.static_body, posOne, (posOne[0] + size, posOne[1] + modifier), 2)
        part_shape.elasticity = 0.62
        part_shape.friction = 0.62
        part_shape.id = 15
        space.add(part_shape)
        print(posOne)
        make_road(space, size, (posOne[0] + size, posOne[1] + modifier), run - 1)
        return
    else:
        return

形状id 15是道路。该代码引起了一些问题-第一个是汽车的车轮穿过道路,第二个是运动不是很平稳。

感谢您的帮助:)

python pyglet pymunk
1个回答
0
投票

通常,删除不是一个好主意-一直添加对象。 Pymunk(实际上是基础c库,chipmunk)在更新之间保留了一个缓冲区或高速缓存,如果您执行此操作,这些缓冲区或高速缓存会丢失,从而导致不稳定,平滑和高性能的模拟。

相反,我建议您更新相机逻辑,这样就不必删除-一直加所有路。确切地讲,在不知道您的相机/绘图代码如何工作的情况下很难回答。

© www.soinside.com 2019 - 2024. All rights reserved.