pygame + pyBox2D - 扭矩?

时间:2017-08-07 03:26:07

标签: python box2d

我正在尝试使用Box2D和pygame前端编写一些物理模拟器。但是,似乎在我的程序中没有任何扭矩正确应用于任何物体,我不确定为什么。使用此示例程序:

#!/usr/bin/python

import pygame
import Box2D as b

def main():
    pygame.init()
    pygame.font.init()
    screen = pygame.display.set_mode((600, 450))
    clock = pygame.time.Clock()

    running = True

    world = b.b2World()
    world.gravity = (0, -5)
    ground = world.CreateStaticBody(
            position=(0,-5), shapes=b.b2PolygonShape(box=(60,5)))
    obj = world.CreateDynamicBody(
            angle=15, position=(30,22), shapes=b.b2PolygonShape(box=(5,5)))

    while running:
        screen.fill((0, 0, 0))
        events = pygame.event.get()
        if any(map(lambda e:e.type == pygame.QUIT, events)):
            running = False

        drawPolygons(screen, obj)

        world.Step(1/60, 10, 10)
        pygame.display.flip()
        clock.tick(60)
    pygame.quit()


def drawPolygons(screen, body):
    for fixture in body.fixtures:
        shape = fixture.shape
        vertices = [body.transform*v * 10 for v in shape.vertices]
        vertices = [(v[0], 450-v[1]) for v in vertices]
        pygame.draw.polygon(screen, (255,255,255), vertices)


if __name__ == '__main__':
    main()

如果我跑这个,有角度的方形将落到地板上,只是坐在一个角度而不是翻倒。类似地,对物体中心以外的点施加力将表现为我正在应用于中心。我错过了什么吗?

编辑:即使我使用ApplyTorque方法明确施加扭矩,身体也不会旋转,所以我有理由相信我的灯具设置的方式有问题,或者我是如何绘制它们的。施加力量否则按预期工作,所以我不太确定出了什么问题。

EDIT2:经过进一步的实验,似乎手动设置角速度不会影响我身体的角速度,这真的很奇怪(ApplyTorque不碰它)

0 个答案:

没有答案