示例#1
0
    def force_fire(self, **kwargs):
        self.play_sound('fire')
        ang = self.angle + (self.fire_n - 1) * self.inaccuracy * 180

        proj = self.spawn_proj()
        proj.velocity = Vec2d.from_anglen(ang, self.proj_velocity)
        proj.angle = self.angle
        proj.target = kwargs.get('target_function', kwargs.get('target', None))

        self.fire_n = (self.fire_n + 1) % 3
示例#2
0
    def force_fire(self, **kwargs):
        self.play_sound('fire')
        ca = self.angle
        da = self.inaccuracy * 360
        sa = ca - da / 2

        frag = self.fragmentation
        vel = self.proj_velocity
        segments = []

        b_a = self.spawn(Ballast)
        b_a.set_parent(self)
        b_a.angle = sa
        b_a.velocity = Vec2d.from_anglen(sa, vel)

        b_b = self.spawn(Ballast)
        b_b.set_parent(self)
        b_b.angle = sa + da
        b_b.velocity = Vec2d.from_anglen(sa + da, vel)

        b_a.pair = b_b
        b_b.pair = b_a

        w = (self.Projectile.LENGTH - self.Projectile.RADIUS) / 2

        for n in range(frag):
            proj = self.spawn_proj()

            if segments:
                Pivot(proj.body, segments[-1].body, (-w, 0), (w, 0))

            segments.append(proj)
            ang = sa + da * (n / frag)
            proj.angle = ang - 90
            proj.velocity = Vec2d.from_anglen(ang, vel * .8)

        Pivot(b_a.body, segments[0].body, (0, 0), (-w, 0))
        Pivot(b_b.body, segments[-1].body, (0, 0), (w, 0))