Python PyMunk 行为怪异
Python PyMunk acts weirdly
问题来了:
我的 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
我看不出问题出在哪里..
提前致谢
视频中出现这种奇怪行为的一个常见原因是形状的重心不在实际中心。尝试更改,使段围绕其中心 (0,0),body 所在的位置。
可能是这样的
segment = pymunk.Segment(body, (-20,0), (20,0), 1)
如果你想移动它,你可以调整 body 的位置。
所以 a 和 b 值是 相对于 与 body 预测的质心的关系。
(a 和 b 来自 shape = pymunk.Segment(body, a, b, thickness)
)
非常感谢!
问题来了:
我的 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
我看不出问题出在哪里.. 提前致谢
视频中出现这种奇怪行为的一个常见原因是形状的重心不在实际中心。尝试更改,使段围绕其中心 (0,0),body 所在的位置。
可能是这样的
segment = pymunk.Segment(body, (-20,0), (20,0), 1)
如果你想移动它,你可以调整 body 的位置。
所以 a 和 b 值是 相对于 与 body 预测的质心的关系。
(a 和 b 来自 shape = pymunk.Segment(body, a, b, thickness)
)
非常感谢!