2

这是问题所在:

我的 pymunk 代码来自https://pymunk-tutorial.readthedocs.io/en/latest/shape/shape.html

但是当我启动该程序时,一个奇怪的力量作用于该段。查看结果:https ://youtu.be/s4a0RLb6Y6k

查看代码:(没有关于依赖项的无用部分)

import pymunk
import pymunk.pygame_util

import pygame
from pygame.locals import *





pygame.init()

width, height = 1280, 720

window = pygame.display.set_mode((width, height), FULLSCREEN)

draw_options = pymunk.pygame_util.DrawOptions(window)
window.fill((0,0,0))







run = True

space = pymunk.Space()
space.gravity = 0, -1000


b0 = space.static_body
sol = pymunk.Segment(b0, (0, 30), (width, 30), 10)
sol.elasticity = 1

body = pymunk.Body(mass=1, moment=1000)
body.position = (width/2, 50)
segment = pymunk.Segment(body, (width/2-20,50), (width/2+20,50), 1)
segment.elasticity = 0.95

space.add(sol, body, segment)


while run == True:
    space.step(0.01)


    window.fill((0,0,0))
    pygame.draw.line(window, (0, 255, 0), (0, height-30), (width, height-30), 1)
    space.debug_draw(draw_options)
    pygame.display.flip()
    pygame.time.Clock().tick(60)


    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                run = False
        if event.type == QUIT:
            run = False
        mouse_x, mouse_y = pygame.mouse.get_pos()
        pass

    continue 

我看不出问题出在哪里..提前谢谢

4

2 回答 2

1

视频中出现此类奇怪行为的一个常见原因是形状的重心不在实际中心。尝试进行更改,以使分段围绕其中心 (0,0),即身体所在的位置。

像这样的东西也许

segment = pymunk.Segment(body, (-20,0), (20,0), 1)

如果你想移动它,你可以调整身体的位置。

于 2020-05-12T12:06:45.403 回答
0

所以 a 和 b 值是相对于物体的质心的。(与 a 和 b 来自shape = pymunk.Segment(body, a, b, thickness)

非常感谢 !

于 2020-05-12T16:19:21.727 回答