1

在pymunk中,我设置了身体质量和空间重力,它应该会自动下降,但是具有段形的身体不会移动,这是我在pyglet中的代码

import pyglet
import pymunk
from pymunk.pyglet_util import DrawOptions

window = pyglet.window.Window(1280,720,resizable=False)
options = DrawOptions()

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

ball_mass = 1
ball_radius = 10

ball_moment = pymunk.moment_for_circle(ball_mass,0,10)
ball = pymunk.Body(ball_mass,ball_moment)
ball_shape = pymunk.Circle(ball,ball_radius)
ball.position =200,500
ball_shape.elasticity = 1
ball_shape.friction = 1

space.add(ball,ball_shape)

stick = pymunk.Body(1,100,body_type=pymunk.Body.DYNAMIC)
stick_shape = pymunk.Segment(stick,(0,0),(150,150),4)
stick.position = (300,400)
pin = pymunk.PivotJoint(space.static_body,stick,(300,400))
# stick.apply_impulse_at_local_point((0,-100),(150,150))
space.add(stick,stick_shape,pin)


@window.event
def on_draw():
    window.clear()
    space.debug_draw(options)

def update(dt):
    space.step(dt)


if __name__ == '__main__':
    pyglet.clock.schedule_interval(update, 1/60.0)
    pyglet.app.run()

球掉下来但棍子不动,或者棍子上的apply_impulse_at_local_point,我只是想知道,如果没有PivotJoint,棍子掉下来,我只是固定棍子的一个点,为什么它不动,它应该旋转,是吗?

4

1 回答 1

0

一个问题是棍子的重心在一端。这让它表现得有点奇怪。试着让它的重心在它的实际中心。

stick_shape = pymunk.Segment(stick,(-75,-75),(75,75),4)
于 2018-09-09T19:12:56.377 回答