Le_Dieu_du_fond_du_Jardin/docs/shadows.md

45 lines
1.9 KiB
Markdown
Raw Permalink Normal View History

2020-04-18 22:06:40 +02:00
# Directional shadows
Your player needs to have a `shadow` child. You can use/extend the one provided in `contrib/scenes/shadow/shadow.tscn`.
To actually cast a shadow, you must have one or more `Light2D` instances, with an `Area2D` child (named eg. `shadow_caster`).
Attach the `globals/shadow_caster.gd` script to it and create the `CollisionPolygon2D` or `CollisionShape2D`.
The `force_light_mask` toggle will reset your player's light mask to match the `Light2D`'s _range cull mask_ so the player
will always be lit up by the light. This is so you can stand in front of a light, outside `shadow_caster`, and not have it
affect you - simply by having different masks. If you don't want this behavior, uncheck the box or set matching masks.
Now when your player enters the `shadow_caster`(s), there'll be shadows!
## Tunables
There are more than a few tunables here.
* (int)var light_y_offset = 0
* Affect the shadow direction by moving the light higher than it is
* (float)var max_dist_visible = 50
* (float)var alpha_coefficient = 2.0
* These two affect how far from the light the shadow is visible, within the collision polygon
* (float)var alpha_max = 0.65
* The darkest the shadow can get
* (float)var scale_power = 1.2
* (float)var scale_divide = 1000.0
* (float)var scale_extra = 0.15
* Magic tunables to affect the shadow's length
## Shadow configuration
All the scaling tunables above are ignored if you uncheck `scaling`.
If you don't want your shadow to rotate, uncheck `rotating` and set a `fixed_rotation`.
This value is ignored when `rotating` is checked. The unit is degrees, starting directly
toward the camera and moving clockwise.
# Static shadows
Add a `Sprite` child to your character, you can call it `static_shadow`
if you want, and attach `globals/static_shadow_sprite.gd` to it.
You may have to unset `centered`, and set the relevant offsets and scale.