Greetings and thanks for using GameJam Toolkit.
contact : me@julien-foucher.com

GameJam Toolkit on the Unity asset store.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
HOW TO USE GAMEJAM TOOLKIT :
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Don't forget to include the GameJamToolkit namespace (using GameJamToolkit;) if you want to interact with the GameJamToolkit scripts.

All the scripts you will need are located in the GameJamToolkit/EasyTools folder.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyCameraShake.cs:
Useful if you want to add some shake when your character is hit, or when you destroy something etc... You can shake the camera and all sort of other things, like your UI, characters etc...
You can set "Shaker Groups" to trigger multiples shakes at the same time (for example, if you have multiple cameras, set their group to "camera" so you can shake them all at the same time)

------------------------------

Useful exposed STATIC functions:

public static List GetCamShakeForGroup(string groupName = "default");
Gives a list of EasyCameraShake that are in the selected group.

public static void ShakeGroup(string groupName = "default")
Shake an entire group according to the default shake settings that you defined in the inspector

public static void ShakeGroup(string groupName, float amount, float duration, bool infinite = false)
Shake an entire group, overriding the duration and power of the shake (You can also set the shake duration to be infinite, so you can stop it manually when you want)

public static void StopShakeGroup(string groupName = "default")
Stop the shaking of an entire group

------------------------------

Useful exposed functions:

public void Shake(multiples parameters)
Shake the associated item

public void StopShake()
Stop the shaking

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyDestroyAfterTime.cs:
Script that will destroy the associated GameObject after the time you define in the inspector. Can be useful for items that needs to be cleared after some time (example : bullets if you don't do pooling, +1 textsetc...)

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyExitApp.cs:
Let you exit the game by pressing a key (default is escape). You can set the key used to quit the game. I found that one usefull as in many jams, we forget to add an exit condition, so the users often have to alt+F4 the game. This will never happen again.
Just drag and drop it into your scene.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyFollow.cs:
Dual functionality script : can be used as a custom parent (the object will ac aas if he was aa child of the target transform), or to make an object follow another

Inspector variables:
- Act as custom child: if enabled, replace the inspector variaables by :
-- use custom parent Position : set its own position to the position of the target transform
-- use custom parent Orient : set its own orientation to the orientation of the target transform
-- use custom parent Scale : set its own scale to the scale of the target transform
-- keep z pos : the custom parent will not affect the z pos of the item

if Act as custom child is not enabled, the item will follow the target item.
- speed : the speed of the item
- stop dist : the distance from the target item where the object will stop following the target
- linar : if enabled, the follow speed will be linear. else, it will lerp to the target

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyKeyTrigger.cs:
Script that let you trigger unityEvents by pressing a key. Useful to debug, test mechanics like spawns etc...

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyLookAt2D.cs:
The object with this script attached will look at the transform that you want.

Inspector variables:
- Target : the transform you want this object to look at
- Offset : If the front of your object is not the forward vector, no problem, you can adjust the offset.
- Immediate : if set, the object will look directly at the target, without lerping to it.
- Rotate speed (only visible if Immediate not set) : the rotation speed of the object. The higher the faster your item will orient to its target

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyScreenshot.cs:
Used to take screenshots. The default key is F12 but you can modify it in the inspector. The directory where the screenshot are taken : "Screenshot" folder in the "yourGameName_Data" folder next to the executable if you are taking it with a builded version, else if taken from the inspector, they are in the "Screenshot" folder, in the asset folder. The name of the screenshots are : ScreenshotName_year-month-day_hour-minut-second-milli.png

Inspector variables:
- Capture Key : set the key that is used to take screenshots (default F12)
- ScreenshotName : the prefix of the screnshot
- Supersize : 1 by default, multiply the screenshot resolution. Don't put it too high, else your game will freeze for some time. But hey, i'm sure this 16k screenshot worth it!

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyEffectColor.cs:
Used this to make a text/sprite/ui text/ui image/textmesh change color over time.
You can set:
- the color over time using a gradient
- the speed (Iterations per seconds)
- if you want the effect to loop
- if you want the effect to do ping pong (0 to 1 to 0 to 1 etc...) or just reset to zero (0 to 1, reset, 0 to 1 etc...)
- if you want the effect to start on enable
- if you want the effect to reset on enable

------------------------------

Useful exposed functions:

public void StartEffect(bool reset = false)
Start the effect. Set "reset" to true to reset the effect.

public void StopEffect(bool reset = false)
Stop the effect. Set "reset" to true to reset the effect.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyEffectRotate.cs:
Used to make a gameObject rotate according to a speed for each axis, or using curves to set the orientation over time.

Inspector variables:
If "use advanced settings" is not checked :
- rotate speed : set a speed for each axis, in degree per seconds

If "use advanced settings" is checked :
Same inspector variables as EasyEffectColor.cs, (except for the color gradient) plus:
- 3 curves, one for each axis, that determine the rotation over time
- multiplicator: multiply the curve value (that are in degree). 360 is a full turn

Same exposed functions as EasyEffectColor.cs.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyEffectScale.cs:
Used to scale a gameObject according to a global curve, or a curve for each axis

Inspector variables:
Same inspector variables as EasyEffectColor.cs, (except for the color gradient) plus:
- "use curve as base scale multiplier": check this if you want the curve to multiply the base scale of the object instead of setting the scale value according to the curve (for item that does not have a scale of 1)
- multiplicator: multiply the curve value by this
- One global curve, or 3 (one for each axis) if "use separate axis" is checked

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EasyEffectTranslate.cs:
Used to move a gameObject according to a curve for each axis

Inspector variables:
Same inspector variables as EasyEffectColor.cs, (except for the color gradient) plus:
- one curve for each axis
- multiplicator that multiply the curve value

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

If you have any questions, if you want a new feature or if you found a bug, please send me a message.
If you have a bug report, please explain what you want to achieve, what your problem is and how to reproduce the bug.