45 lines
1.9 KiB
Markdown
45 lines
1.9 KiB
Markdown
|
# 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.
|
||
|
|