コード例 #1
0
ファイル: particle_fireworks.py プロジェクト: yasoob/arcade
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)

        # Set the working directory (where we expect to find files) to the same
        # directory this .py file is in. You can leave this out of your own
        # code, but it is needed to easily run the examples using "python -m"
        # as mentioned at the top of this program.
        file_path = os.path.dirname(os.path.abspath(__file__))
        os.chdir(file_path)

        arcade.set_background_color(arcade.color.BLACK)
        self.emitters = []
        self.frametime_plotter = FrametimePlotter()

        self.launch_firework(0)
        arcade.schedule(self.launch_spinner, 4.0)

        stars = arcade.Emitter(
            center_xy=(0.0, 0.0),
            emit_controller=arcade.EmitMaintainCount(20),
            particle_factory=lambda emitter: AnimatedAlphaParticle(
                filename_or_texture=random.choice(STAR_TEXTURES),
                change_xy=(0.0, 0.0),
                start_alpha=0,
                duration1=random.uniform(2.0, 6.0),
                mid_alpha=128,
                duration2=random.uniform(2.0, 6.0),
                end_alpha=0,
                center_xy=arcade.rand_in_rect((0.0, 0.0), SCREEN_WIDTH, SCREEN_HEIGHT)
            )
        )
        self.emitters.append(stars)

        self.cloud = arcade.Emitter(
            center_xy=(50, 500),
            change_xy=(0.15, 0),
            emit_controller=arcade.EmitMaintainCount(60),
            particle_factory=lambda emitter: AnimatedAlphaParticle(
                filename_or_texture=random.choice(CLOUD_TEXTURES),
                change_xy=(_Vec2(arcade.rand_in_circle((0.0, 0.0), 0.04)) + _Vec2(0.1, 0)).as_tuple(),
                start_alpha=0,
                duration1=random.uniform(5.0, 10.0),
                mid_alpha=255,
                duration2=random.uniform(5.0, 10.0),
                end_alpha=0,
                center_xy=arcade.rand_in_circle((0.0, 0.0), 50)
            )
        )
        self.emitters.append(self.cloud)
コード例 #2
0
def emitter_27():
    """Maintain a steady count of particles"""
    e = arcade.Emitter(
        pos=CENTER_POS,
        emit_controller=arcade.EmitMaintainCount(3),
        particle_factory=lambda emitter: arcade.LifetimeParticle(
            filename_or_texture=TEXTURE,
            vel=arcade.rand_on_circle(Vec2d.zero(), 2.0),
            lifetime=random.uniform(1.0, 3.0),
        ))
    return emitter_27.__doc__, e
コード例 #3
0
    def __init__(self):
        self.w = 600
        self.h = 600
        arcade.Window.__init__(self, self.w, self.h, "Particles!")
        arcade.set_background_color(arcade.color.EERIE_BLACK)

        # Sprite for particle from image (try changing to other item numbers! 17 is hearts!)
        self.text_blue = arcade.load_texture(
            "Sprites/PNG/Items/platformPack_item001.png")
        # Sprite for particle pregenerated
        self.text_red = arcade.make_soft_circle_texture(20, arcade.color.RED)
        self.text_green = arcade.make_soft_square_texture(
            50, arcade.color.GREEN, 200, 150)

        # Timer for cosine/sine purposes later
        self.timer = 0

        # Empty list to store our emitters for easy drawing and updating
        self.emitters = []

        # Make the center, moving emitter
        self.fountain = arcade.Emitter(
            center_xy=(self.w / 2, self.h / 2),  # Position
            emit_controller=arcade.EmitInterval(
                0.01),  # When to make more particles
            particle_factory=lambda emitter: arcade.
            FadeParticle(  # Type of particle
                filename_or_texture=self.text_blue,  # Particle texture
                change_xy=arcade.rand_in_circle(
                    (0, 0), 4.5),  # Particle velocity
                lifetime=1.0,  # Particle lifetime
                scale=0.5,  # Particle scaling
            ),
        )

        self.cursor = arcade.Emitter(
            center_xy=(self.w / 2, self.h / 2),
            emit_controller=arcade.EmitMaintainCount(
                30),  # Alway keep 30 on screen
            particle_factory=lambda emitter: arcade.
            LifetimeParticle(  # Stay bright till end
                filename_or_texture=self.text_red,
                change_xy=(random.uniform(-1, 1), random.uniform(-1, 1)),
                lifetime=random.random(
                ),  # die out at random times, or else this looked weird
                scale=1,
            ),
        )

        # Add our current, always-on emitters to the list
        self.emitters.extend([self.fountain, self.cursor])
コード例 #4
0
def createParticleEmitter(x0, y0, partNB, partSize, partScale, partSpeed,
                          color, startAlpha, endAlpha):
    e = arcade.Emitter(
        center_xy=(x0, y0),
        emit_controller=arcade.EmitMaintainCount(partNB),
        particle_factory=lambda emitter: arcade.FadeParticle(
            filename_or_texture=arcade.make_circle_texture(partSize, color),
            change_xy=arcade.rand_in_circle((0.0, 0.0), partSpeed),
            lifetime=uniform(0.01, 0.4),
            scale=partScale,
            start_alpha=startAlpha,
            end_alpha=endAlpha,
        ),
    )
    return e
コード例 #5
0
 def generate_smoke(self):
     """
     Particle generator to create smoking wreck
     """
     offset = random.randint(-10, 10)
     smoke = arcade.Emitter(
         center_xy=(self.center_x + offset, self.center_y + offset),
         emit_controller=arcade.EmitMaintainCount(50),
         particle_factory=lambda emitter: arcade.FadeParticle(
             filename_or_texture=self.texture_smoke,
             change_xy=arcade.rand_vec_spread_deg(90, 20, 2),
             lifetime=random.random() * 2,
         ),
     )
     self.emitter = smoke
     return smoke
コード例 #6
0
ファイル: cloud.py プロジェクト: kfields/arcade-imgui
 def create_emitter(self):
     self.emitter = arcade.Emitter(
         center_xy=(500, 500),
         change_xy=(0.15, 0),
         emit_controller=arcade.EmitMaintainCount(60),
         particle_factory=lambda emitter: AnimatedAlphaParticle(
             filename_or_texture=random.choice(CLOUD_TEXTURES),
             change_xy=(_Vec2(arcade.rand_in_circle((0.0, 0.0), 0.04)) + _Vec2(0.1, 0)).as_tuple(),
             start_alpha=0,
             duration1=random.uniform(5.0, 10.0),
             mid_alpha=255,
             duration2=random.uniform(5.0, 10.0),
             end_alpha=0,
             center_xy=arcade.rand_in_circle((0.0, 0.0), 50)
         )
     )