Forum begins after the advertisement:
[General] Creating Unholy Vespers (King Bible Evolution)
Home › Forums › Video Game Tutorial Series › Creating a Rogue-like Shoot-em Up in Unity › [General] Creating Unholy Vespers (King Bible Evolution)
- This topic is empty.
-
AuthorPosts
-
October 17, 2024 at 8:06 pm #16102::
Hi all! We’ve recently recreated the King Bible in this forum post so we’ve decided to create its evolution, the Unholy Vespers! The main bulk of work in this article is just creating new VFX for the weapon, as the Unholy Vespers is basically just a King Bible that never ends.
What the completed Unholy Vespers in our project looks like.Before we start, please ensure you’ve completed the King Bible forum post, as we will be inheriting from a script (KingBibleWeapon.cs) that we’ve implemented there.
Here’s what we will be covering:
1. Creating the Spellbinder Passive 2. Creating the Unholy Vesper Projectile Prefab 3. Creating the UnholyVespersWeapon.cs script 4. Creating the Unholy Vespers Weapon Data 5. Configuring the evolution to take place
1. Creating the Spellbinder Passive
To start off, let’s create the passive that is required to evolve the King Bible. If you already have one you can skip this step.- Navigate to your
Scriptable Objects>Passive Items
folder and right-click and go toCreate>2D Top-down Rogue-like>Passive Data
. Rename the newly created Scriptable Object to “Spellbinder” - Configure the Spellbinder accordingly. Here’s its wiki page if you’d like to refer to its actual stats. For now you do not need to put anything in the Evolution Data as we have not created the Unholy Vespers weapon yet.
2. Creating the Unholy Vesper Projectile Prefab.
The prefab for the Unholy Vesper Projectile is almost the same as its original weapon, so we can just duplicate the King Bible Projectile’s prefab and make a few changes.We will also be reusing the King Bible Projectile script on our new Prefab as well, since they both spin around the Player and deal damage on contact, though we will change a few values.
- Drag the King Bible prefab into your scene, right-click it and select
Prefab>Unpack
. - Next, rename it to “Unholy Vesper Projectile” and drag it back into your Weapon Prefabs folder. You can delete the prefab that’s left in your scene as we will be working on the prefab in Prefab Mode.
- Double-click the newly-created prefab in the Project window to enter Prefab Mode.
Rearranging the Particle System
Since the King Bible and Unholy Vespers share the ‘Pages Falling Out’ effect (just with a different rate of falling out), we’ll just modify a few properties of the Particle System we created for the King Bible to get the effect we need.However, since we’ll also be using Texture Sheet Animation to animate the ‘Changing Symbols’ effect of the Vespers, we’ll put the Page Falling Out effect onto a child Game Object and the Symbols effect on the parent Game Object so we can modify the projectile’s collider easier to fit the symbols.
- Firstly, let’s create a new empty Game Object as a child of the Unholy Vesper Projectile by right-clicking it in the Hierarchy and selecting “Create Empty”. Rename this new Game Object to “Falling Pages VFX”.
- Click the 3 dots on the newly created empty object’s
Transform
and click “Reset”. - Go back to the Unholy Vesper Projectile and copy the
Particle System
on it by clicking the 3 dots on theParticle System
‘s component and clicking “Copy Component”. - Then, go to the Falling Pages VFX object and paste the script by clicking on the dots next to the
Transform
and clicking “Paste Component As New”. You can then remove the originalParticle System
on the parent object.
Creating the Pages Falling Out VFX
Now, the ‘Pages Falling Out’Particle System
should be transferred onto the child Game Object. We can start modifying theParticle System
to increase the rate of pages falling out since that happens in the original Game.- We’ll change the following values:
- Start Lifetime – 0.35
- Start Size – 0.7
- Start Color – A dark shade of Purple with the Alpha (A) value of 0.8
- Then, we’ll go over to “Emission” and set the Rate over Time to 9.
- Next, we’ll go over to “Shape” and increase the Radius of our Edge to 0.1.
- After that, we’ll go over to “Size over Lifetime” and turn it on. Click on the Size graph, and a graph should pop up at the bottom of the Inspector. Make sure that the Key Value at the start is 0.5 and the Key Value at the end is 1. You can move the keys on the graph by dragging them, and holding Ctrl to snap.
- Finally, go over to “Noise” and turn it on. You can experiment with the values, but I feel that the default Noise is subtle enough for our effect.
Creating the Changing Symbols VFX
Now, we can move onto creating the Changing Symbols VFX.-
- Create a new
Particle System
on the Unholy Vesper Projectile. - We’ll change the following values:
- Duration – 1
- Looping – on
- Prewarm – on
- Start Lifetime – 1
- Start Speed – 0
- Start Size – 1
- Start Rotation – 0
- Start Color – Red with an Alpha (A) value of 1
- Gravity Modifier – 0
- Scaling Mode – Hierarchy (Scales the particles with the scale of the Game Object)
- Next we’ll go over to “Emission” and set the Rate over Time to 1.
- After that turn “Shape” off.
- Now, let’s go over to “Texture Sheet Animation” and turn it on. Set the Mode to Sprites, and click the “plus” button to add in slots depending on how many symbol sprites you’ll add, then add the symbols into the slots.
- I just used the red weapons in the Weapon Sprite Sheet for easy use.
- I’d recommend using sprites that are of the same dimensions so that the colliders can be set up easily.
- Also, do take note that if you’re planning to use your own Symbol sprites, they all need to be in the same sprite sheet for the Texture Sheet to animate properly.
- Then, set the Time Mode to Lifetime and click on the graph next to Frame over Time. Adjust the graph so that the graph curves towards the ends.
- Create a new
- After that, you’ll want to click on the arrow next to the Start Frame field and click “Random Between Two Constants”. Set the first constant to 0 and the second constant to the amount of symbol sprites you’re using.
- To end off the VFX, go to “Renderer” and configure these following settings. Remember to also configure the Order in Layer properly so the particles do not get blocked!
- Material – AdditiveParticle (or any additive material, I only changed the material to remove the outline on the symbols, but if you need the outlines, you can just use the “Default-ParticleSystem” material.
- Min Particle Size – 0
- Max Particle Size – 99
- Render Alignment – Local
- Once the VFX is done, check if the
Box Collider 2D
attached to the projectile fits the symbols. Configure it accordingly to fit if it doesn’t. - Finally, let’s change the “Speed Multiplier” and “Radius Multiplier” of the King Bible Projectile (script) attached to the Game Object. I’ve set my “Speed Multiplier” to 4 and “Radius Multiplier” to 1.75. This ensures the rings are of a suitable distance away from the player and makes them feel like the original game.
Now, you should have an Unholy Vesper projectile that both changes its sprite to a random symbol, and has pages that fall out at an increased rate.
3. Creating the
Here, we’ll set up the controller that will fire the projectiles. We’re going to create a new C# script calledUnholyVespersWeapon.cs
scriptUnholyVespersWeapon.cs
. Here’s the script with an explanation further below.using UnityEngine; public class UnholyVespersWeapon : KingBibleWeapon { public override bool ActivateCooldown(bool strict = false) { // When 'strict' is enabled and the cooldown is not yet finished, // do not refresh the cooldown. if (strict && currentCooldown > 0) return false; // Calculate what the cooldown is going to be, factoring in the cooldown // reduction stat in the player character. // Cooldown no longer depends on duration, so we take it out float actualCooldown = (currentStats.lifespan) * Owner.Stats.cooldown; // Limit the maximum cooldown to the actual cooldown, so we cannot increase // the cooldown above the cooldown stat if we accidentally call this function // multiple times. currentCooldown = Mathf.Min(actualCooldown, currentCooldown + actualCooldown); return true; } }
- We’re going to make it inherit from the
KingBibleWeapon
class, since it functions the same way as the King Bible controller (i.e. spawns rings every time the cooldown ends).
The Overriden
ActivateCooldown()
function- This is the only function we’re overriding, because according to the wiki, the cooldown of the weapon no longer depends on its duration so we take it out of the actualCooldown calculation.
- This makes it so there’s always at least 1 spawned ring active on the screen at any time, giving the illusion that it never ends.
4. Creating the Unholy Vespers Weapon Data
Here we’ll set up the Weapon Data Scriptable Object that will give our Unholy Vespers its stats.- Navigate to your
Scriptable Objects>Weapons
folder, right-click and go toCreate>2D Top-Down Rogue-Like>Weapon Data
. Rename the newly created Scriptable Object to “Unholy Vespers”. - Set the Behaviour to “UnholyVespersWeapon” and you should be able to configure your Unholy Vespers accordingly. Here’s the wiki page for it if you’d like to have the exact stats.
5. Configuring the weapon evolution to take place
Finally, we’ll get the weapon to evolve if the user picks up a treasure chest when their King Bible is at the max Level and they have the Spellbinder in their inventory.- Search for your King Bible’s Weapon Data Scriptable Object and configure the Evolution Data like so: The Evolution Data of the King Bible.
- We’ll also need to go to the Spellbinder’s Passive Data Scriptable Object and configure the Evolution Data as well: The Evolution Data of the Spellbinder.
-
- Name – The name of the evolution.
- Condition – What triggers the weapon evolution. We set it to “Treasure Chest” so if the Player steps on the chest, it will do the necessary Evolution checks.
- Consumes – The item to remove after evolving. We select “Weapons”, since it will remove the King Bible weapon and replace it with the Unholy Vespers.
- Evolution Level – The level at which the item can evolve. We set it to 8 since the King Bible has 8 levels.
- Catalysts – The items needed, as well as the level the item must be, in order for the evolution to take place.
- For the King Bible, we set the Catalyst to the Spellbinder and set the level to 1 since as long as it’s in the player’s inventory, the King Bible can evolve.
- For the Spellbinder, we set the Catalyst to the King Bible and set the level to 8 since the King Bible needs to be at level 8 to evolve.
- Outcome – The weapon or passive that gets added to our inventory, and its starting level. We set this to the Unholy Vespers Scriptable Object, and set its starting level to 1.
And we’re done!
Now, you should be able to have a working Unholy Vespers weapon that will always have at least 1 ring of projectiles surrounding you, plus a Spellbinder passive if you don’t have one already!As always, if you encounter any problems in creating the Unholy Vespers, you can submit a forum post about in detail for further assistance. If you have your own implementation of the Unholy Vespers, or have any improvements you’d want to see, feel free to make a post as well!
has upvoted this post. - Navigate to your
-
AuthorPosts
- You must be logged in to reply to this topic.
Advertisement below: