Имплементация энергии фонаря, уменьшение энергии со временем, возможности восполнить энергию, а также шейдера для симуляции прозрачности (ослабления света фонаря) с помощью дизеринга

This commit is contained in:
Евгений Титаренко 2023-08-16 20:45:05 +03:00
parent 434493578c
commit fdb4fc40cc
6 changed files with 97 additions and 28 deletions

View file

@ -1,17 +1,25 @@
[gd_scene load_steps=14 format=3 uid="uid://dhn7yt46fyac8"]
[gd_scene load_steps=17 format=3 uid="uid://dhn7yt46fyac8"]
[ext_resource type="PackedScene" uid="uid://bhulqhxesd5gc" path="res://prefabs/player.tscn" id="1_65a7v"]
[ext_resource type="Texture2D" uid="uid://py6qiu3rm7cu" path="res://sprites/brickwall.png" id="2_edqdh"]
[ext_resource type="Texture2D" uid="uid://dlbl6d4yghvht" path="res://sprites/mask.png" id="3_8o315"]
[ext_resource type="Script" path="res://scripts/Flashlight.cs" id="3_cylxo"]
[ext_resource type="Material" uid="uid://xuvxq5hy1dt" path="res://shaders/light_shader_material.tres" id="4_ro05e"]
[ext_resource type="Shader" path="res://shaders/dithering.gdshader" id="5_64d71"]
[ext_resource type="Script" path="res://scripts/GameCamera.cs" id="6_quua3"]
[ext_resource type="Script" path="res://scripts/PointLight2DWorkaround.cs" id="6_slohe"]
[sub_resource type="Curve" id="Curve_o5byr"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.0824742, 0.273684), -10.2105, 0.0, 0, 0, Vector2(0.242268, 0.494737), -5.10526, 0.0, 0, 0, Vector2(0.396907, 0.736842), -7.6579, 0.0, 0, 0, Vector2(0.737113, 1), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 6
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_wg1ao"]
light_mode = 2
[sub_resource type="ViewportTexture" id="ViewportTexture_dwy4p"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_m680d"]
shader = ExtResource("5_64d71")
[sub_resource type="ViewportTexture" id="ViewportTexture_0u602"]
viewport_path = NodePath("FlashlightViewport")
[sub_resource type="CircleShape2D" id="CircleShape2D_prnh4"]
@ -31,16 +39,18 @@ y_sort_enabled = true
[node name="Player" parent="." instance=ExtResource("1_65a7v")]
position = Vector2(19, 4)
[node name="Controller" type="Node" parent="." node_paths=PackedStringArray("Player", "Camera", "Circle", "PlayerCircle", "Polygon", "CollisionCircle", "CollisionPlayerCircle", "CollisionPolygon")]
[node name="Controller" type="Node" parent="." node_paths=PackedStringArray("Player", "Camera", "Circle", "PlayerCircle", "Polygon", "CollisionCircle", "CollisionPlayerCircle", "CollisionPolygon", "FlashlightGroup")]
script = ExtResource("3_cylxo")
Player = NodePath("../Player")
Camera = NodePath("../PlayerCamera")
Circle = NodePath("../FlashlightViewport/Circle")
Circle = NodePath("../FlashlightViewport/CanvasGroup/Circle")
PlayerCircle = NodePath("../FlashlightViewport/PlayerCircle")
Polygon = NodePath("../FlashlightViewport/Triangle")
Polygon = NodePath("../FlashlightViewport/CanvasGroup/Triangle")
CollisionCircle = NodePath("../PlayerCamera/Area2D/Circle")
CollisionPlayerCircle = NodePath("../PlayerCamera/Area2D/PlayerCircle")
CollisionPolygon = NodePath("../PlayerCamera/Area2D/CollisionPolygon2D")
FlashlightGroup = NodePath("../FlashlightViewport/CanvasGroup")
BrightnessCurve = SubResource("Curve_o5byr")
[node name="TestWall" type="Sprite2D" parent="."]
light_mask = 2
@ -63,15 +73,18 @@ canvas_item_default_texture_filter = 0
size = Vector2i(256, 192)
render_target_update_mode = 4
[node name="Circle" type="Sprite2D" parent="FlashlightViewport"]
texture = ExtResource("3_8o315")
[node name="PlayerCircle" type="Sprite2D" parent="FlashlightViewport"]
position = Vector2(13.61, 14.405)
scale = Vector2(0.5, 0.5)
texture = ExtResource("3_8o315")
[node name="Triangle" type="Polygon2D" parent="FlashlightViewport"]
[node name="CanvasGroup" type="CanvasGroup" parent="FlashlightViewport"]
material = SubResource("ShaderMaterial_m680d")
[node name="Circle" type="Sprite2D" parent="FlashlightViewport/CanvasGroup"]
texture = ExtResource("3_8o315")
[node name="Triangle" type="Polygon2D" parent="FlashlightViewport/CanvasGroup"]
polygon = PackedVector2Array(-21, -25, 31, 29, -42, 31)
[node name="PlayerCamera" type="Camera2D" parent="." node_paths=PackedStringArray("Player")]
@ -82,7 +95,7 @@ CameraBounds = Vector2(30, 20)
[node name="PointLight2D" type="PointLight2D" parent="PlayerCamera" node_paths=PackedStringArray("LightViewport")]
blend_mode = 2
range_item_cull_mask = 2
texture = SubResource("ViewportTexture_dwy4p")
texture = SubResource("ViewportTexture_0u602")
script = ExtResource("6_slohe")
LightViewport = NodePath("../../FlashlightViewport")