Since adding a pistol to the game, I wanted to. make sure it was satisfying to use. One of the goals for me was to make it feel solid when fired and to do that there were a few things I had to make sure.
One of the objectives for me was proper blood squirts. I did consider just using decals but a stream of blood spewing out was a must for me. To achieve this there are several layers to the particle system.
First, a puff of red for the instant feedback for the player. This includes a tiny explosion of red gibs too if you look closely.
Secondly, there is a larger spray of blood that doesn't have to be as instant as the above but is there to amp up highlight the blood splatter.
Lastly, the stream of blood. This was the probably the most important part to get right and is done by rendering it in world space with a bit of noise to give it that fluid type movement. This is also the only particle system in this set to have world collision enabled.
The collision is required to detect where the blood pooling should be and is spawned on "death" of the blood stream particle hitting the ground. The pooling particle is a horizontal billboard that scales over time and also rendered in world space.
Here is a in-game test showing how the particle behaves in a real game demo.
The particle system is spawned at the raycast contact point of the pistol (which I can describe in another article if interested). Since the hanging corpse has physics itself, the general movement really shows off the blood splatter moving in world space.
One thing to note, it is entirely possible to also make the other particle systems also have world collisions to crate more blood pooling but for optimisation reasons I decided not to.
Taking it to the Next Level
So with all the above in place where do we go next? Since I already created a working Pistol, decent blood splatter and pooling, I wanted to try and do some localised hit detection when used on enemies.
All the enemies in the game already have an armature for the head, spine (upper and lower), hips, upper and lower arms, hands, and upper and lower legs, feet. I decided not to check for every part but the hit detection will work for 8 different zones.
When the enemy is hit with a bullet, it will play out a suitable animation and even mirror it depending on which side of the body was hit as shown below.
For a very small selection of enemies, there will also be ragdolls for when they are killed which is simply turned on as soon as they are killed.
On a final note, just wanted to say that the game I'm making isn't going to have lots of weapons but I wanted to experiment with the idea and make it a very rare item. You would be lucky to even find a handful of bullets in the entire game and if you do find some, it will only be useful for a tiny selection of enemies.