Limited player vision with lights

beginner

By: Pablo Fonovich - September 23, 2020

In this tutorial, you will learn how to make a player with limited vision using Light2D nodes.

The limited vision mechanic consists of:

  • Enemies outside the vision range should not be visible.
  • Lights and shadows should affect the environment.
  • Walls should interrupt the line of sight.

You can download the full project of this tutorial here.

We are going to use two Light2D nodes to implement this effect. One will add light and shadows to the environment, while the other will occlude the lit area’s enemies.

For the first light, add a texture and enable shadows by checking Shadows->Enabled. You can find a soft circle texture to use for your light in the project linked above. Set that the Mode attribute to Add. Doing so adds the light’s value to underlying pixels.

We can use the light’s cull mask to control which nodes it affects. Update the Range->Item Cull Mask property of the light so it only has Layer 1 enabled. That’s the first rectangle in the top-left of the grid.

Settings of First Light

By default, all sprites are on the light layer 1. You can change that by selecting any node that extends Node2D, including sprites and tilemaps, and changing their Visibility->Light Mask property.

For the second light, use the same texture, enable shadows, and change its Mode to Mask. The mask mode hides sprites outside the light’s area.

Set its Range->Item Cull Mask to Layer 2. With this, the light only applies the mask to nodes with Layer 2 enabled in their Visibility->Light Mask.

Settings of First Light

All nodes you want the mask to occlude should have Layer 2 layer enabled in Visibility->Light Mask.

In the demo project, the Player and TilemMap nodes have only Layer 1 enabled in Visibility->Light Mask.

Settings of the Player

Enemies have both Layer 1 and Layer 2. As a result, the masking light will only occlude enemies.

Settings of the Enemy

Made by

Our tutorials are the result of careful teamwork to ensure we produce high quality content. The following team members worked on this one:

Pablo Fonovich

Tutor

Nathan Lovato

Founder

Related courses

Banner image

Godot Node Essentials 80$

Learn to create professional 2D games with the Godot game engine.

Banner image

Ultimate Godot course bundle 365$

This ultimate bundle gives you access to ALL our current and future Godot courses, at a discount. It’s like a lifetime membership.

2 comments

How would you go about making it so that the player can also be hidden from vision, for example, in a game with multiple players.
Reply to Jake
Great tutorial! How would you go about masking sprites with their own light sources, however? E.g., torches, enemy field of views, etc
Reply to Ross

Enter your email to get notified when someone replies to your comment.
We encrypt your addres with a strong 256-bit AES encryption.
We'll only use your address for notifications. You can unsubscribe anytime.