Added danger
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
@tool
|
||||
class_name Danger
|
||||
extends ColorRect
|
||||
|
||||
|
||||
const DAMAGE_VALUE = 50.0
|
||||
const COLLISION_OFFSET = Vector2(8, 8)
|
||||
|
||||
|
||||
var _player : Player
|
||||
|
||||
|
||||
@onready var damage_timer : Timer = $DamageTimer
|
||||
@onready var collision : CollisionShape2D = $Area2D/CollisionShape2D
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
_setup_collision()
|
||||
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
if Engine.is_editor_hint():
|
||||
_setup_collision()
|
||||
|
||||
|
||||
func _setup_collision() -> void:
|
||||
collision.shape.size = size - COLLISION_OFFSET
|
||||
collision.position = (size)/2
|
||||
|
||||
|
||||
func _hit_player() -> bool:
|
||||
if not _player: return false
|
||||
SoundManager.play_sfx_stream(SoundManager.sfx_stream_danger, global_position)
|
||||
_player.deal_damage(DAMAGE_VALUE)
|
||||
return true
|
||||
|
||||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if not body is Player: return
|
||||
_player = body
|
||||
_hit_player()
|
||||
damage_timer.start()
|
||||
|
||||
|
||||
func _on_body_exited(body: Node2D) -> void:
|
||||
if not body is Player: return
|
||||
damage_timer.stop()
|
||||
_player = null
|
||||
|
||||
|
||||
func _on_damage_timer_timeout() -> void:
|
||||
if not _hit_player():
|
||||
damage_timer.stop()
|
||||
@@ -0,0 +1 @@
|
||||
uid://bol2bemjm438o
|
||||
@@ -0,0 +1,35 @@
|
||||
[gd_scene format=3 uid="uid://dxqq07mde0b4a"]
|
||||
|
||||
[ext_resource type="Shader" uid="uid://c58hxwayyl757" path="res://game/shaders/danger.gdshader" id="1_3ra4u"]
|
||||
[ext_resource type="Script" uid="uid://bol2bemjm438o" path="res://game/entities/danger/danger.gd" id="2_oh0ew"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_jttxq"]
|
||||
shader = ExtResource("1_3ra4u")
|
||||
shader_parameter/palette = PackedColorArray(0.36862746, 0.99215686, 0.5529412, 1, 0.23921569, 0.23137255, 0.37254903, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
|
||||
shader_parameter/palette_size = 2
|
||||
shader_parameter/chance = 0.3
|
||||
shader_parameter/edge_width = 10.0
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bhunq"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[node name="Danger" type="ColorRect" unique_id=554396375]
|
||||
material = SubResource("ShaderMaterial_jttxq")
|
||||
offset_right = 10.0
|
||||
offset_bottom = 10.0
|
||||
script = ExtResource("2_oh0ew")
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="." unique_id=1925024065]
|
||||
collision_layer = 4
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=1370118603]
|
||||
position = Vector2(5, 5)
|
||||
shape = SubResource("RectangleShape2D_bhunq")
|
||||
|
||||
[node name="DamageTimer" type="Timer" parent="." unique_id=38832097]
|
||||
|
||||
[connection signal="body_entered" from="Area2D" to="." method="_on_body_entered"]
|
||||
[connection signal="body_exited" from="Area2D" to="." method="_on_body_exited"]
|
||||
[connection signal="timeout" from="DamageTimer" to="." method="_on_damage_timer_timeout"]
|
||||
@@ -17,8 +17,8 @@ shader = ExtResource("3_vrpsd")
|
||||
shader_parameter/max_value = 0.0
|
||||
shader_parameter/current_value = 0.0
|
||||
shader_parameter/old_value = 0.0
|
||||
shader_parameter/health_color = Color(0.36862746, 0.99215686, 0.5529412, 1)
|
||||
shader_parameter/depletion_color = Color(0.32941177, 0.6509804, 0.41568628, 1)
|
||||
shader_parameter/health_color = Color(0.99215686, 0.36862746, 0.39215687, 1)
|
||||
shader_parameter/depletion_color = Color(0.654902, 0.29803923, 0.4745098, 1)
|
||||
shader_parameter/restoration_color = Color(1, 1, 1, 1)
|
||||
shader_parameter/background_color = Color(0, 0, 0, 0)
|
||||
|
||||
|
||||
@@ -1176,6 +1176,8 @@ sources/0 = SubResource("TileSetAtlasSource_6b8cu")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_yeikn"]
|
||||
shader = ExtResource("4_6b8cu")
|
||||
shader_parameter/palette = PackedColorArray(0.36862746, 0.99215686, 0.5529412, 1, 0.23921569, 0.23137255, 0.37254903, 1, 0.23921569, 0.23137255, 0.37254903, 1, 0.23921569, 0.23137255, 0.37254903, 1, 0.23921569, 0.23137255, 0.37254903, 1, 0.23921569, 0.23137255, 0.37254903, 1, 0.23921569, 0.23137255, 0.37254903, 1, 0.23921569, 0.23137255, 0.37254903, 1)
|
||||
shader_parameter/palette_size = 8
|
||||
shader_parameter/corruption_x = 0.0
|
||||
shader_parameter/edge_width = 50.0
|
||||
shader_parameter/screen_to_world = Projection(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
|
||||
@@ -1197,6 +1199,8 @@ script = ExtResource("1_o2mui")
|
||||
[node name="TileMapLayer" type="TileMapLayer" parent="." unique_id=502099522]
|
||||
tile_set = SubResource("TileSet_71ysb")
|
||||
|
||||
[node name="Dangers" type="Node2D" parent="." unique_id=608961351]
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1125559156]
|
||||
|
||||
[node name="LevelColorRect" type="ColorRect" parent="CanvasLayer" unique_id=739757562]
|
||||
@@ -1229,6 +1233,7 @@ unique_name_in_owner = true
|
||||
process_mode = 2
|
||||
|
||||
[node name="CorruptionTimer" type="Timer" parent="." unique_id=783383429]
|
||||
wait_time = 0.5
|
||||
|
||||
[node name="DestructionTimer" type="Timer" parent="." unique_id=431284916]
|
||||
one_shot = true
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
[gd_scene format=4 uid="uid://cuig5x5fd47hs"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://hdnty666fw1h" path="res://game/levels/abstract_level.tscn" id="1_46m3m"]
|
||||
[ext_resource type="PackedScene" uid="uid://dxqq07mde0b4a" path="res://game/entities/danger/danger.tscn" id="2_yeikn"]
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_yeikn"]
|
||||
viewport_path = NodePath("CanvasLayer/CodeViewport")
|
||||
|
||||
[node name="TestLevel" unique_id=1001045799 instance=ExtResource("1_46m3m")]
|
||||
initial_corruption_x = -500.0
|
||||
@@ -10,4 +14,13 @@ corruption_speed = 10.0
|
||||
position = Vector2(0, -38)
|
||||
|
||||
[node name="TileMapLayer" parent="." index="1" unique_id=502099522]
|
||||
tile_map_data = PackedByteArray("AAAMAP//AAAFAAoAAAAMAP7/AAALAAYAAAAMAP3/AAAIAAYAAAAMAPz/AAAKAAYAAAAMAPv/AAADAAYAAAAMAPr/AAAGAAYAAAAMAPn/AAABAAYAAAAMAPj/AAAIAAYAAAAMAPf/AAAFAAYAAAAMAPb/AAAIAAYAAAAMAPX/AAALAAYAAAAMAPT/AAALAAYAAAAMAPP/AAADAAYAAAAMAPL/AAACAAYAAAAMAPH/AAAFAAYAAAAMAPD/AAABAAYAAAAAAPn/AAADAAQAAAAAAPj/AAAKAAYAAAAAAPf/AAACAAYAAAAAAPb/AAADAAYAAAAAAPX/AAAJAAYAAAAAAPT/AAADAAYAAAAAAPP/AAAIAAYAAAAAAPL/AAAKAAYAAAAAAPH/AAAGAAYAAAAAAPD/AAAJAAYAAAAAAO//AAAJAAYAAAD0////AAAGAAcAAAD0//7/AAAGAAYAAAD0//3/AAABAAYAAAD0//z/AAAGAAYAAAD0//v/AAAFAAYAAAD0//r/AAAHAAYAAAD0//n/AAAHAAYAAAD0//j/AAACAAYAAAD0//f/AAAEAAYAAAD0//b/AAABAAYAAAD0//X/AAABAAYAAAD0//T/AAAIAAYAAAD0//P/AAALAAYAAAD0//L/AAAFAAYAAAD0//H/AAAGAAYAAAD0//D/AAAKAAYAAAD0/+//AAAGAAYAAAD0/+7/AAAKAAYAAAD0/+3/AAAJAAYAAAD0/+z/AAALAAYAAAD0/+v/AAAAAAYAAAD0/+r/AAAIAAYAAAD0/+n/AAAFAAYAAAD0/+j/AAAIAAYAAAD0/+b/AAAEAAYAAAD0/+f/AAADAAYAAAAMAO//AAAIAAYAAAAMAO7/AAACAAYAAAAMAO3/AAAHAAYAAAAMAOz/AAAJAAYAAAAMAOv/AAAFAAYAAAAMAOr/AAALAAYAAAAMAOn/AAADAAYAAAAMAOj/AAAGAAYAAAAMAOf/AAAFAAYAAAAAAO7/AAABAAYAAAAAAO3/AAALAAYAAAAAAOz/AAAKAAYAAAAAAOv/AAAIAAYAAAAAAOr/AAADAAYAAAAAAOn/AAAEAAYAAAAAAOj/AAACAAYAAAAAAOf/AAAAAAYAAAAAAOb/AAAEAAYAAAAMAOb/AAAFAAYAAAAMAOX/AAAJAAgAAAANAOX/AAAIAAUAAAAOAOX/AAAAAAUAAAAPAOX/AAACAAUAAAAQAOX/AAAAAAUAAAARAOX/AAAHAAUAAAASAOX/AAAHAAUAAAATAOX/AAACAAUAAAAUAOX/AAAKAAUAAAAVAOX/AAAKAAUAAAAWAOX/AAAGAAUAAAAXAOX/AAALAAUAAAAYAOX/AAAKAAUAAAAZAOX/AAAAAAUAAAAaAOX/AAADAAUAAAAbAOX/AAAAAAIAAAD0/+X/AAAKAAkAAADz/+X/AAAFAAUAAADy/+X/AAAGAAUAAADx/+X/AAAJAAUAAADw/+X/AAAHAAUAAADv/+X/AAABAAUAAADu/+X/AAAIAAUAAADt/+X/AAAKAAUAAADs/+X/AAAHAAUAAADr/+X/AAAHAAUAAADq/+X/AAABAAUAAADp/+X/AAAKAAUAAADo/+X/AAAIAAUAAADn/+X/AAABAAUAAADm/+X/AAALAAUAAADl/+X/AAAGAAEAAAAAAOX/AAAAAAYAAAAAAOT/AAALAAYAAAAAAOP/AAACAAYAAAAAAOL/AAAEAAYAAAAAAOH/AAAHAAYAAAAAAOD/AAADAAYAAAAAAN//AAAGAAYAAAAAAN7/AAAEAAYAAAAAAN3/AAABAAYAAAAAANz/AAAKAAYAAAAAANv/AAADAAYAAAAAANr/AAACAAMAAAALAP//AAAHAAUAAAAKAP//AAAFAAUAAAAJAP//AAACAAUAAAAIAP//AAAIAAUAAAAHAP//AAAAAAUAAAAGAP//AAABAAUAAAAFAP//AAAJAAUAAAAEAP//AAALAAUAAAADAP//AAAEAAUAAAACAP//AAADAAUAAAABAP//AAAJAAUAAAAAAP//AAAJAAUAAAD/////AAAJAAUAAAD+////AAACAAUAAAD9////AAADAAUAAAD8////AAAGAAUAAAD7////AAACAAUAAAD6////AAAIAAUAAAD5////AAACAAUAAAD4////AAAHAAUAAAD3////AAACAAUAAAD2////AAAKAAUAAAD1////AAAEAAUAAAA=")
|
||||
tile_map_data = PackedByteArray("AAAMAP//AAAFAAoAAAAMAP7/AAALAAYAAAAMAP3/AAAIAAYAAAAMAPz/AAAKAAYAAAAMAPv/AAADAAYAAAAMAPr/AAAGAAYAAAAMAPn/AAABAAYAAAAMAPj/AAAIAAYAAAAMAPf/AAAFAAYAAAAMAPb/AAAIAAYAAAAMAPX/AAALAAYAAAAMAPT/AAALAAYAAAAMAPP/AAADAAYAAAAMAPL/AAACAAYAAAAMAPH/AAAFAAYAAAAMAPD/AAABAAYAAAAAAPn/AAADAAQAAAAAAPj/AAAKAAYAAAAAAPf/AAACAAYAAAAAAPb/AAADAAYAAAAAAPX/AAAJAAYAAAAAAPT/AAADAAYAAAAAAPP/AAAIAAYAAAAAAPL/AAAKAAYAAAAAAPH/AAAGAAYAAAAAAPD/AAAJAAYAAAAAAO//AAAJAAYAAAD0////AAAGAAcAAAD0//7/AAAGAAYAAAD0//3/AAABAAYAAAD0//z/AAAGAAYAAAD0//v/AAAFAAYAAAD0//r/AAAHAAYAAAD0//n/AAAHAAYAAAD0//j/AAACAAYAAAD0//f/AAAEAAYAAAD0//b/AAABAAYAAAD0//X/AAABAAYAAAD0//T/AAAIAAYAAAD0//P/AAALAAYAAAD0//L/AAAFAAYAAAD0//H/AAAGAAYAAAD0//D/AAAKAAYAAAD0/+//AAAGAAYAAAD0/+7/AAAKAAYAAAD0/+3/AAAJAAYAAAD0/+z/AAALAAYAAAD0/+v/AAAAAAYAAAD0/+r/AAAIAAYAAAD0/+n/AAAFAAYAAAD0/+j/AAAIAAYAAAD0/+b/AAAEAAYAAAD0/+f/AAADAAYAAAAMAO//AAAIAAYAAAAMAO7/AAACAAYAAAAMAO3/AAAHAAYAAAAMAOz/AAAJAAYAAAAMAOv/AAAFAAYAAAAMAOr/AAALAAYAAAAMAOn/AAADAAYAAAAMAOj/AAAGAAYAAAAMAOf/AAAFAAYAAAAAAO7/AAABAAYAAAAAAO3/AAALAAYAAAAAAOz/AAAKAAYAAAAAAOv/AAAIAAYAAAAAAOr/AAADAAYAAAAAAOn/AAAEAAYAAAAAAOj/AAACAAYAAAAAAOf/AAAAAAYAAAAAAOb/AAAEAAYAAAAMAOb/AAAFAAYAAAAMAOX/AAAJAAgAAAANAOX/AAAIAAUAAAAOAOX/AAAAAAUAAAAPAOX/AAACAAUAAAAQAOX/AAAAAAUAAAARAOX/AAAHAAUAAAASAOX/AAAHAAUAAAATAOX/AAACAAUAAAAUAOX/AAAKAAUAAAAVAOX/AAAKAAUAAAAWAOX/AAAGAAUAAAAXAOX/AAALAAUAAAAYAOX/AAAKAAUAAAAZAOX/AAAAAAUAAAAaAOX/AAADAAUAAAAbAOX/AAAFAAUAAAD0/+X/AAAKAAkAAADz/+X/AAAFAAUAAADy/+X/AAAGAAUAAADx/+X/AAAJAAUAAADw/+X/AAAHAAUAAADv/+X/AAABAAUAAADu/+X/AAAIAAUAAADt/+X/AAAKAAUAAADs/+X/AAAHAAUAAADr/+X/AAAHAAUAAADq/+X/AAABAAUAAADp/+X/AAAKAAUAAADo/+X/AAAIAAUAAADn/+X/AAABAAUAAADm/+X/AAALAAUAAADl/+X/AAAHAAUAAAAAAOX/AAAAAAYAAAAAAOT/AAALAAYAAAAAAOP/AAACAAYAAAAAAOL/AAAEAAYAAAAAAOH/AAAHAAYAAAAAAOD/AAADAAYAAAAAAN//AAAGAAYAAAAAAN7/AAAEAAYAAAAAAN3/AAABAAYAAAAAANz/AAAKAAYAAAAAANv/AAADAAYAAAAAANr/AAACAAMAAAALAP//AAAHAAUAAAAKAP//AAAFAAUAAAAJAP//AAACAAUAAAAIAP//AAAIAAUAAAAHAP//AAAAAAUAAAAGAP//AAABAAUAAAAFAP//AAAJAAUAAAAEAP//AAALAAUAAAADAP//AAAEAAUAAAACAP//AAADAAUAAAABAP//AAAJAAUAAAAAAP//AAAJAAUAAAD/////AAAJAAUAAAD+////AAACAAUAAAD9////AAADAAUAAAD8////AAAGAAUAAAD7////AAACAAUAAAD6////AAAIAAUAAAD5////AAACAAUAAAD4////AAAHAAUAAAD3////AAACAAUAAAD2////AAAKAAUAAAD1////AAAEAAUAAADk/+X/AAAGAAUAAADj/+X/AAAKAAUAAADi/+X/AAACAAUAAADh/+X/AAAFAAUAAADg/+X/AAAGAAUAAADf/+X/AAAKAAUAAADe/+X/AAAIAAUAAADd/+X/AAAKAAUAAADc/+X/AAAIAAUAAADb/+X/AAAEAAUAAADa/+X/AAABAAUAAADZ/+X/AAAKAAUAAADY/+X/AAAAAAUAAADX/+X/AAAGAAUAAADW/+X/AAAKAAUAAADV/+X/AAAJAAUAAADU/+X/AAABAAUAAADT/+X/AAAEAAUAAADS/+X/AAALAAUAAADR/+X/AAACAAUAAADQ/+X/AAAJAAUAAADP/+X/AAAAAAUAAADO/+X/AAAJAAUAAADN/+X/AAAAAAUAAADM/+X/AAAKAAUAAADL/+X/AAACAAUAAADK/+X/AAABAAUAAADJ/+X/AAAJAAUAAADI/+X/AAAFAAUAAADH/+X/AAAAAAEAAAAcAOX/AAAFAAUAAAAdAOX/AAACAAUAAAAeAOX/AAAEAAUAAAAfAOX/AAACAAUAAAAgAOX/AAACAAUAAAAhAOX/AAACAAUAAAAiAOX/AAAJAAUAAAAjAOX/AAAGAAUAAAAkAOX/AAAAAAUAAAAlAOX/AAAEAAUAAAAmAOX/AAAKAAUAAAAnAOX/AAAKAAUAAAAoAOX/AAAEAAUAAAApAOX/AAADAAIAAAA=")
|
||||
|
||||
[node name="Danger" parent="Dangers" parent_id_path=PackedInt32Array(608961351) index="0" unique_id=554396375 instance=ExtResource("2_yeikn")]
|
||||
offset_left = 89.0
|
||||
offset_top = -75.0
|
||||
offset_right = 189.0
|
||||
offset_bottom = -55.0
|
||||
|
||||
[node name="CodeSprite" parent="CanvasLayer" parent_id_path=PackedInt32Array(1125559156) index="1" unique_id=1152584149]
|
||||
texture = SubResource("ViewportTexture_yeikn")
|
||||
|
||||
@@ -25,6 +25,7 @@ const MUSIC_BUS = "Music"
|
||||
|
||||
@export_group("SFX Streams", "sfx_stream")
|
||||
@export var sfx_stream_corruption : AudioStream
|
||||
@export var sfx_stream_danger : AudioStream
|
||||
@export var sfx_stream_destruction : AudioStream
|
||||
@export var sfx_stream_fall : AudioStream
|
||||
@export var sfx_stream_game_over : AudioStream
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
[ext_resource type="AudioStream" uid="uid://b6xkhskx5gi0w" path="res://sound/sfx/land.wav" id="6_22ptj"]
|
||||
[ext_resource type="AudioStream" uid="uid://dy2eudg02crrp" path="res://sound/sfx/destruction.wav" id="6_l4iry"]
|
||||
[ext_resource type="AudioStream" uid="uid://ellnbrkpn47a" path="res://sound/sfx/fall.wav" id="6_q7cyi"]
|
||||
[ext_resource type="AudioStream" uid="uid://byn27t4ualxmi" path="res://sound/sfx/danger.wav" id="6_wyfta"]
|
||||
[ext_resource type="AudioStream" uid="uid://bj6ausg5hyuyg" path="res://sound/sfx/swing.wav" id="7_ab171"]
|
||||
[ext_resource type="AudioStream" uid="uid://33unutlwsika" path="res://sound/sfx/wall_jump.wav" id="8_22ptj"]
|
||||
|
||||
@@ -26,6 +27,7 @@ ui_stream_accept = ExtResource("2_ge1il")
|
||||
ui_stream_decline = ExtResource("3_agyxs")
|
||||
ui_stream_select = ExtResource("4_0i6kl")
|
||||
sfx_stream_corruption = ExtResource("5_ab171")
|
||||
sfx_stream_danger = ExtResource("6_wyfta")
|
||||
sfx_stream_destruction = ExtResource("6_l4iry")
|
||||
sfx_stream_fall = ExtResource("6_q7cyi")
|
||||
sfx_stream_game_over = ExtResource("6_6ll5c")
|
||||
|
||||
@@ -12,5 +12,4 @@ void fragment() {
|
||||
float dist = destruction_x - world_pos.x;
|
||||
|
||||
COLOR.a = smoothstep(-edge_width, edge_width, dist);
|
||||
COLOR.a /= 2.0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
#include "res://game/shaders/random_color.gdshaderinc"
|
||||
|
||||
uniform float chance : hint_range(0.0, 1.0) = 0.3;
|
||||
uniform float edge_width : hint_range(0, 100) = 8.0;
|
||||
|
||||
uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_nearest_mipmap;
|
||||
|
||||
void fragment() {
|
||||
vec4 screen_color = texture(SCREEN_TEXTURE, SCREEN_UV);
|
||||
COLOR = random_color(screen_color, UV, chance);
|
||||
|
||||
float dist_left = UV.x / fwidth(UV.x);
|
||||
float dist_right = (1.0 - UV.x) / fwidth(UV.x);
|
||||
float dist_bottom = UV.y / fwidth(UV.y);
|
||||
float dist_top = (1.0 - UV.y) / fwidth(UV.y);
|
||||
float pixel_dist = min(min(dist_left, dist_right), min(dist_bottom, dist_top));
|
||||
|
||||
float fade = clamp(pixel_dist / edge_width, 0.0, 1.0);
|
||||
|
||||
COLOR.a *= fade;
|
||||
|
||||
|
||||
|
||||
//vec4 tex_color = texture(TEXTURE, UV);
|
||||
//
|
||||
//// Расстояние до каждого края в пикселях экрана
|
||||
//float dist_left = UV.x / fwidth(UV.x);
|
||||
//float dist_right = (1.0 - UV.x) / fwidth(UV.x);
|
||||
//float dist_bottom = UV.y / fwidth(UV.y);
|
||||
//float dist_top = (1.0 - UV.y) / fwidth(UV.y);
|
||||
//
|
||||
//// Берём ближайший край
|
||||
//float pixel_dist = min(min(dist_left, dist_right),
|
||||
//min(dist_bottom, dist_top));
|
||||
//
|
||||
//// Плавное затухание: 0 на самой границе, 1 на расстоянии edge_width и дальше
|
||||
//float fade = clamp(pixel_dist / edge_width, 0.0, 1.0);
|
||||
//
|
||||
//COLOR = tex_color;
|
||||
//COLOR.a *= fade;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://c58hxwayyl757
|
||||
@@ -1,5 +1,7 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
#include "res://game/shaders/random_color.gdshaderinc"
|
||||
|
||||
uniform float corruption_x = 0.0;
|
||||
uniform float edge_width = 50.0;
|
||||
uniform mat4 screen_to_world;
|
||||
@@ -19,4 +21,7 @@ void fragment() {
|
||||
|
||||
COLOR.rgb = mix(bw, screen_color.rgb, t);
|
||||
COLOR.a = screen_color.a;
|
||||
|
||||
float chance = (1.0 - t)/8.0;
|
||||
COLOR = random_color(COLOR, UV, chance);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
const int MAX_PALETTE_SIZE = 8;
|
||||
|
||||
uniform vec3 palette[MAX_PALETTE_SIZE] : source_color;
|
||||
uniform int palette_size : hint_range(1, MAX_PALETTE_SIZE) = 1;
|
||||
|
||||
|
||||
float hash(vec2 p) {
|
||||
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);
|
||||
}
|
||||
|
||||
vec4 random_color(vec4 current_color, vec2 uv, float chance)
|
||||
{
|
||||
vec2 seed = uv * fract(TIME);
|
||||
float random_value = hash(seed);
|
||||
if (chance != 0.0 && random_value < chance) {
|
||||
float index_rand = hash(seed + vec2(0.5, 0.5));
|
||||
int index = int(index_rand * float(palette_size)) % palette_size;
|
||||
current_color.rgb = palette[index];
|
||||
}
|
||||
return current_color;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://b857povoqa1cj
|
||||
Reference in New Issue
Block a user