A downloadable tool

This version is a free demo, and your project WILL NOT BUILD while Bullet Hell Jam is not in progress.

If you're updating to 2.0.9 or higher, you'll need to delete RotateWithTransformModule.cs and MoveWithTransformModule.cs from Assets/Wayfarer Games/BulletFury/Scripts/Modules

BulletFury is a hyper optimised modular bullet spawning system for Unity 2022 and above, it uses URP - if you don't know what that means, pick the "Universal 2D" template when you start your project :)

If you don't see any bullets in a build, update to 2.0.1 or higher!

To get started, import the package you get from this page, and add a "bullet spawner" component to a gameobject.

The first thing to do is add a texture - that's the sprite for your bullets. Once you've done that, you'll see a preview of the current spawning pattern in the editor.

IF YOU DON'T SEE ANY BULLETS: you need to use the universal render pipeline. Here's a guide for adding it to your project: https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@7.1/manua...

There are two "fire modes":

  • Automatic: this shoots bullets automatically, based on the fire rate (which is "time between spawns")
  • Manual: call Spawn(transform, Time.deltaTime) or Spawn(position, up, Time.deltaTime) on the spawner to shoot bullets. This is probably what you'll use for your player!

From there, there are a lot of options to play with. I'll write an in-depth guide to what they all do soon, but it should be pretty easy to work out! 

The three lists at the bottom are for "modules". The first is for modules that change how the bullet acts when it spawns - there are currently two modules, "spawn from transform" which lets you spawn them from a specific point, and "wait to continue", which will make the bullets spawn in, then stop after a set time. You can set them off again by calling spawner.ActivateWaitingBullets();

The second is for changing the position and direction of the bullets. There's only one at the minute, and it will make the positions rotate over time. Try it and see for yourself!

The third is for changing how the bullets move. Here you can make them change size or colour over time (you might want to make your bullets scale up when they are spawned so they don't appear to "pop in"), you can add object tracking (e.g. missiles that follow the player), or you can make them speed up/slow down, or rotate. You can easily add more modules yourself, too!

Detecting collisions

You'll need to use an object with a 2D collider on it, and a script which implements IBulletHitHandler, something like this:

using BulletFury;
using BulletFury.Data;
public class Damage : MonoBehaviour, IBulletHitHandler 
{
    private float health = 100;
    
    public void Hit(BulletContainer bullet)
    {
        health -= bullet.Damage;
    }
}

And that's it! You can get the bullet's position, damage, rotation, etc, and this will be called on all children of the collider that was hit. For collision layers, it uses the spawner's layer as defined on the gameobject itself (the dropdown next to the name).

Trigger colliders won't destroy bullets - you can use this for graze mechanics!

Events

The Spawner itself has several events you can use to add a bit of juice:

  • OnBulletDiedEvent will be called when bullets die, with a bool to say whether it collided with something or not. You can use this to add hitsparks when bullets collide, or do things like spawn extra bullets if they don't collide with anything!
  • OnBulletSpawnedEvent will be called for every individual bullet that spawns. You might use this for muzzle flash - play a particle effect at the bullet's position when it spawns!
  • OnWeaponFiredEvent will be called for every Spawn method call. That's one time for the whole group of bullets. Use this for things like sound effects, so you're not playing a sound for every individual bullet!

During Bullet Hell Jam, I'll be around and active on the jam's Discord Server! Say hello, give me a ping _thechief, and I'll be around to help.

Buy the Unity Asset Store version if you need to build your project after the jam


StatusIn development
CategoryTool
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
AuthorWayfarerGames
TagsBullet Hell, job-system, Shoot 'Em Up, Unity

Download

Download
bulletfury_2.0.16.unitypackage 150 kB

Community

StickyBug Hunt!
by WayfarerGames · 4 posts
3y
StickyChangelog
by WayfarerGames · 1 post
3y
Post a new topicView all posts