コード例 #1
0
ファイル: 12_collision.py プロジェクト: magandrez/payton
def hit(collision, pairs):
    for pair in pairs:
        pair[0].material.color = [1.0, 0, 0]
        pair[1].material.color = [1.0, 0, 0]
        # Once there is a hit, system will not check
        # for the same collision, if you want to have the objects
        # back in the collision detection pipeline, you have to do
        # collision.resolve(pair[0], pair[1])


scene = Scene()
collision = CollisionTest(callback=hit)
for i in range(50):
    x = random.randint(-5, 5)
    y = random.randint(-5, 5)
    z = random.randint(-5, 5)
    if i % 2 == 0:
        s = Sphere()
        s.position = [x, y, z]
        scene.add_object("s_{}".format(i), s)
        collision.add_object(s)
    else:
        c = Cube()
        c.position = [x, y, z]
        scene.add_object("c_{}".format(i), c)
        collision.add_object(c)

scene.add_collision_test(collision)
scene.run()
コード例 #2
0
spherical_car_1 = Wavefront(filename=car_object_file)
spherical_car_2 = Wavefront(filename=car_object_file)

aabb_car_1 = Wavefront(filename=car_object_file)
aabb_car_2 = Wavefront(filename=car_object_file)

spherical_car_1.position = [-2, 0, 0]
spherical_car_2.position = [-2, 0, 4]

aabb_car_1.position = [2, 0, 0]
aabb_car_2.position = [2, 0, 4]

scene.add_object("scar1", spherical_car_1)
scene.add_object("scar2", spherical_car_2)

scene.add_object("acar1", aabb_car_1)
scene.add_object("acar2", aabb_car_2)

spherical_collision.add_object(spherical_car_1)
spherical_collision.add_object(spherical_car_2)

aabb_collision.add_object(aabb_car_1)
aabb_collision.add_object(aabb_car_2)

scene.add_collision_test(spherical_collision)
scene.add_collision_test(aabb_collision)

scene.create_clock("motion", 0.01, motion)

scene.run()
コード例 #3
0
def makeItRed(collision, pairs):
    global moving_part
    for pair in pairs:
        pair[1].material.color = [1.0, 0, 0]
        collision.resolve(pair[0], pair[1])
    c3.position = [c3.position[0], c3.position[1], c3.position[2] + 0.11]

    moving_part = c3
    myScene.clocks["c2_clocks"].pause()
    print("Collision triggered")


collision = CollisionTest(callback=makeItRed)
collision.add_object(c2)
collision.add_object(c3)
myScene.add_collision_test("test", collision)

myScene.add_object("cylinder_1", c1)
myScene.add_object("cylinder_2", c2)
myScene.add_object("cylinder_3", c3)


def c2Move(period, total):
    pos = moving_part.position
    moving_part.position = [pos[0], pos[1], pos[2] + period]


def c3Move(period, total):
    if moving_part == c3 and myScene.clocks["c2_clocks"]._pause:
        time.sleep(0.5)
        c3.material.color = [1.0, 1.0, 1.0]