0

簡単な質問ですが、答えが見つかりませんでした:

静的ボディは動的ボディに衝突インパルスを適用できますか?

ここに私のコードが何をするかの小さな記録があります

ご覧のとおり、2 つの動的な三角形が互いに衝突し、静的な線によって停止します。ただし、動作は私が望むものではありません。三角形が 1 つしかない場合は、1 つの頂点だけで棚を滑り落ちることになります --> 静的な物体は、三角形にいかなる種類のトルクや反力も加えません (私は物理学者ではありません)。

これは、非常に質量の大きい動的なボディを障害物として使用する必要があるということですか? 静的なものを使用する理由は、シミュレーションに多くの障害物があり、動的なボディがそれらに衝突することを計画しているためです。ダイナミック ボディを使用して環境全体を構築することは可能ですか? 私は何が欠けていますか?

私はこのところでpymunkとpygameを使用しています。私が得ることができるどんな助けにも感謝します

import pygame
import pymunk
import pymunk.pygame_util

pygame.init()
screen = pygame.display.set_mode((1000, 500))

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

# triangle creation func, takes position arguments
def create_tri(x, y):
    pos = pygame.math.Vector2(x, y)
    points = (0, 0), (50, 0), (25, 50)

    moment = pymunk.moment_for_poly(1, points)
    body = pymunk.Body(1, moment)
    body.position = pos

    shape = pymunk.Poly(body, points)
    return body, shape

# creating 2 triangles
tri2 = create_tri(100, 400)
space.add(tri2[0], tri2[1])

# temporary obstacle setup
line_moment = pymunk.moment_for_segment(0, (0, 0), (600, -300), 10)
line_body = pymunk.Body(10, line_moment, body_type=pymunk.Body.STATIC)
line_body.position = (0, 300)

line_shape = pymunk.Segment(line_body, (0, 0), (600, -300), 10)
space.add(line_shape)

# Main loop
game_running = True
while game_running:
   ev = pygame.event.poll()
   if ev.type == pygame.QUIT:
       pygame.quit()
   screen.fill((255, 255, 255))
   draw_options = pymunk.pygame_util.DrawOptions(screen)
   space.debug_draw(draw_options)
   space.step(0.02)
   pygame.display.flip()


4

1 に答える 1