【问题标题】:Python PyMunk acts weirdlyPython PyMunk 行为怪异
【发布时间】:2020-05-11 16:44:08
【问题描述】:

问题来了:

我的 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 

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

【问题讨论】:

    标签: python pygame pymunk


    【解决方案1】:

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

    可能是这样的

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

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

    【讨论】:

      【解决方案2】:

      因此,a 和 b 值是 相对 距身体的质心的。 (带有来自shape = pymunk.Segment(body, a, b, thickness)的a和b)

      非常感谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-01
        • 2021-08-29
        • 2019-11-03
        • 2012-08-05
        • 2012-12-03
        相关资源
        最近更新 更多