top of page

Magic Effects
&
Custom Inspector Controller

Technical Artist Portfolio

Sword summon attack effect

Introduction

This portfolio demonstrates particle effects created in Unity and controlled using custom Unity editor inspector controls.

 

The brief for this work includes constraints for the amount of control artists and designers could have over the effects. For example while colour controls are required to change the base colour of the effect, limits should be placed on the level the opacity, (alpha channel) can be set to.

 

This will prevent effects from becoming entirely transparent or so high in opacity that they obscure the characters in the scene.

 

Certain elements of the effects should have a fixed colour and remain unaffected by any change to the base colour of the effect, (in order to add contrast and make the effects pop).

Design Brief

  • Create a system to allow artists to integrate artwork, (2D sprites) into a particle effect system for making magic effects

  • Allow for designers to control effects using a set of custom editor controls

  • Set restrictions of certain controls such as opacity and attack range

  • Control over effect lighting colour, range and intensity

  • Include controls for switching key inputs that will trigger each effect

  • Ensure effects can target specific characters, (player or enemies)

  • Allow for audio to be toggled on and off

  • Include the ability to change the effect prefab to instantiate

  • Each effect must be able to be triggered using an inspector button for testing in play mode while in the editor

Applying effects to player and enemies in range

These effects make full use of Unity’s built in particle system to make the magic look as realistic and exciting as possible, while still maintaining a stylised aesthetic.

 

The example effects used in this demonstration can all be easily edited to use different custom sprites, sound effects and lighting.

Magic Effect Controller script

These effects have been created using a mixture of custom sprites, (made in Affinity Designer) and the default particles in Unity.

 

Changes are applied using constant values, random values between two constants and custom curves.

In addition, Perlin noise is added to some of the effects to accentuate movement, rotation and scale.

Custom inspector tools in action using the Ring effect

Changes to these effects  are made using a set of custom controls available in the inspector, in the Unity editor.

 

These controls have been specifically designed with custom sliders for float values, that have been locked to a range to fit the brief.

 

This makes it easy for artists or designers to make quick changes to the effects and immediately see the results in the editor during play mode, without accidentally breaking the effects. 

Custom inspector tools in action for grouped effects

The main effect controls include:

  • Slot for each effect prefab to instantiate

  • Slot for changing sprite used in particle system

  • Dropdown menu for choosing effect activation key

  • Colour selector for changing the base effect colour 

  • Slider for setting the alpha percentage of the effect, (min 10% - max 70% to avoid obscuring characters in the scene) 

  • Toggle button for controlling audio effects on / off

  • Button to play the effect in play mode, within the Unity editor

Custom Editor script & enemies range finding script

Additional controls include:

  • Slider for player attack range, (attached to the player character). This controls the range the player can attack within by adding enemies to a public list when they enter the player’s attack range and removing them from that list when they leave   

  • Button to reset effect to a set of default settings

Enemies range finding in action using Execute Always attribute to update the range sphere collider live while not in "Play Mode"

Reflections & Future Development

This brief contained specific requirements that have all been met. I worked on two version of the effect controllers, (one for individual effects and another for group effects). This meant that I had to transfer code between these scripts as the controls changed and new functions were added. In the future I will work on one version of the controller script until all the requirements have been met before expanding the functionality to a group effect controller. This will minimize repeating code and reduce time ensuring functionality is matched in both version. 

In the future I would like to add further controls to allow artists to extend the functionality of the controls and customise them through the Unity editor without having to ask for changes in the code base. It may also be useful to implement a series of checks on the type and resolution scale of sprites added to effects, so that effects can remain consistent. 

Further development would also include added reactions for each effect. This includes making each effect impact either the player character or the enemies in the scene. This could be applying damage or healing to characters, as well as applying status effects such as poison or bleed damage. 

Overall this project stretched my imagination and forced me to think outside the box when designing solutions to the problems that occurred during development. Making sure that effects were instantiated in the correct position and were set to follow the correct character was a challenge. Good use of tags in Unity helped to allow for identification of enemies in the scene, and also those that were in range of the player. Control over the individual modules of each particle system was also challenging. Good use of references, tags and for loops allowed for quick checks to be made and effects to be updated in the editor. 

bottom of page