I am trying to make a first person shooter, and what I need now is a blood splatter effect on the screen when the player has been shot by an enemy. Something like in Call of Duty and Uncharted.

How can I achieve something like this?

I prefer to use logic bricks but Python code would be fine too (But please explain the code).

  • $\begingroup$ Add a overlay scene with blood textures when the character detects a collision with the bullets? $\endgroup$ – X-27 is done with the network Jun 17 '16 at 18:05
  • $\begingroup$ @X-27 I can do that but what if I want to do this for example: if the player's health is at 60 / 100 show an overlay with a little bit of blood and when the player's health is at 5 / 100 show lots of blood on the overlay. Sorry if this is a stupid question, I am new to the game engine in blender. $\endgroup$ – giga Jun 17 '16 at 19:22

Almost every game uses pre-rendered animated (sometimes) transparent textures applied to a quad attached to the camera rendered in front of everything else for such effects (the same way as a HUD is). Such effects include, but are not limited to, rain drops, blood, damage (eg. red blinking emboss, injury texture, blood splatter).

It is both pointless and very CPU and GPU intensive to do it in 3D and/or in realtime. Pointless as since it is applied to the "camera" it follows the camera, so since it is viewed from one angle, there's no point in it being 3d rather than 2D and it is too CPU/GPU intensive to render it in realtime as fluid dynamics are still not fast enough for the average consumer GPU.

If you want the blood to increase as the health decreases, there are several design choices which can be used:

1) Apply several blood splatter textures on the same quad, on top of each other

2) As some games do it, just add a second red emboss texture quad on top of the blood quad as the damage increases. That texture can also be blinking (animate the transparency, or have the texture an animated video file or sequence of image files).

3) Have a blood animation where just a few blood drops flow to form a big blood pool and navigate to the corresponding frame as the damage increases (eg. if health is 100, set frame to 0, if 01, set frame to 120).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.