生死簿演出效果

This commit is contained in:
cakipaul 2025-02-07 09:56:12 +08:00
parent d879e9d3fa
commit df4be58868
21 changed files with 338 additions and 27 deletions

View File

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

View File

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://wvnpr0w3srtr" uid="uid://wvnpr0w3srtr"
path="res://.godot/imported/ghost-sheet.png-b0ae6f2c371a730d2abf0df2867d0094.ctex" path="res://.godot/imported/ghost-sheet.png-fd0ed1a0a1580aa9bba0ac20527fbdcd.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://asset/art/临时草稿/ghost-sheet.png" source_file="res://asset/art/临时草稿/c01_序章/ghost-sheet.png"
dest_files=["res://.godot/imported/ghost-sheet.png-b0ae6f2c371a730d2abf0df2867d0094.ctex"] dest_files=["res://.godot/imported/ghost-sheet.png-fd0ed1a0a1580aa9bba0ac20527fbdcd.ctex"]
[params] [params]

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dryx1iyict3gd" uid="uid://dryx1iyict3gd"
path="res://.godot/imported/ghost.png-be8d53dbf62bca42bbf3c61f27140309.ctex" path="res://.godot/imported/ghost.png-68c970ef18f4992531a7fb7b8fd05408.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://asset/art/临时草稿/ghost.png" source_file="res://asset/art/临时草稿/c01_序章/ghost.png"
dest_files=["res://.godot/imported/ghost.png-be8d53dbf62bca42bbf3c61f27140309.ctex"] dest_files=["res://.godot/imported/ghost.png-68c970ef18f4992531a7fb7b8fd05408.ctex"]
[params] [params]

View File

Before

Width:  |  Height:  |  Size: 926 B

After

Width:  |  Height:  |  Size: 926 B

View File

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cx8ny1barwdwy" uid="uid://cx8ny1barwdwy"
path="res://.godot/imported/纸片.png-a8bd0177d01abb04bca508d0a6f52ec4.ctex" path="res://.godot/imported/纸片.png-9104f73d086c6ee0e16c1ef27489823e.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://asset/art/临时草稿/纸片.png" source_file="res://asset/art/临时草稿/c01_序章/纸片.png"
dest_files=["res://.godot/imported/纸片.png-a8bd0177d01abb04bca508d0a6f52ec4.ctex"] dest_files=["res://.godot/imported/纸片.png-9104f73d086c6ee0e16c1ef27489823e.ctex"]
[params] [params]

View File

Before

Width:  |  Height:  |  Size: 955 B

After

Width:  |  Height:  |  Size: 955 B

View File

@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://c6vi6umco6o0a" uid="uid://c6vi6umco6o0a"
path="res://.godot/imported/纸片_正面.png-42b654938cd8738cd210ea618ad1b29d.ctex" path="res://.godot/imported/纸片_正面.png-b3eff97e26be42ec2e9fc396225adbb2.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://asset/art/临时草稿/纸片_正面.png" source_file="res://asset/art/临时草稿/c01_序章/纸片_正面.png"
dest_files=["res://.godot/imported/纸片_正面.png-42b654938cd8738cd210ea618ad1b29d.ctex"] dest_files=["res://.godot/imported/纸片_正面.png-b3eff97e26be42ec2e9fc396225adbb2.ctex"]
[params] [params]

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cndai8whwoytn"
path="res://.godot/imported/生死簿.png-9e0db0f43d213880f862d1ac0028c5b0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/临时草稿/生死簿/生死簿.png"
dest_files=["res://.godot/imported/生死簿.png-9e0db0f43d213880f862d1ac0028c5b0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 902 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cpfpxox5q5ql3"
path="res://.godot/imported/生死簿名字.png-afb8dbf8ccc3016d7d4bed6879fab76b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/临时草稿/生死簿/生死簿名字.png"
dest_files=["res://.godot/imported/生死簿名字.png-afb8dbf8ccc3016d7d4bed6879fab76b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d4n4e3lid3tu2"
path="res://.godot/imported/陆小蝶名字.png-8108706d0ed00a19530aea4b52059bef.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/临时草稿/生死簿/陆小蝶名字.png"
dest_files=["res://.godot/imported/陆小蝶名字.png-8108706d0ed00a19530aea4b52059bef.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -1,6 +1,6 @@
/* /*
https://godotshaders.com/shader/glitch-effect-shader-for-godot-engine-4/ https://godotshaders.com/shader/glitch-effect-shader-for-godot-engine-4/
Glitch Effect Shader by Yui Kinomoto @arlez80 Glitch Effect Shader by Yui Kinomoto @arlez80
MIT License MIT License
*/ */

View File

@ -21,30 +21,30 @@ vec4 tri_color_mix(vec4 color1, vec4 color2, vec4 color3, float pos) {
void fragment() { void fragment() {
// Scale UVs to make the noise more visible // Scale UVs to make the noise more visible
vec2 base_uv = UV * 1.0; vec2 base_uv = UV * 1.0;
// Create two layers of noise with different speeds // Create two layers of noise with different speeds
vec2 shifted_uv1 = base_uv + TIME * fire_speed; vec2 shifted_uv1 = base_uv + TIME * fire_speed;
vec2 shifted_uv2 = base_uv + TIME * fire_speed * 1.5; vec2 shifted_uv2 = base_uv + TIME * fire_speed * 1.5;
// Sample noise texture twice // Sample noise texture twice
float fire_noise1 = texture(noise_tex, fract(shifted_uv1)).r; float fire_noise1 = texture(noise_tex, fract(shifted_uv1)).r;
float fire_noise2 = texture(noise_tex, fract(shifted_uv2)).r; float fire_noise2 = texture(noise_tex, fract(shifted_uv2)).r;
// Combine the noise samples // Combine the noise samples
float combined_noise = (fire_noise1 + fire_noise2) * 0.5; float combined_noise = (fire_noise1 + fire_noise2) * 0.5;
// Calculate fire shape // Calculate fire shape
float noise = UV.y * (((UV.y + fire_aperture) * combined_noise - fire_aperture) * 75.0); float noise = UV.y * (((UV.y + fire_aperture) * combined_noise - fire_aperture) * 75.0);
// Add horizontal movement // Add horizontal movement
noise += sin(UV.y * 10.0 + TIME * 2.0) * 0.1; noise += sin(UV.y * 10.0 + TIME * 2.0) * 0.1;
// Calculate gradient position and mix three colors // Calculate gradient position and mix three colors
float gradient_pos = clamp(noise * 0.08, 0.3, 2.0); float gradient_pos = clamp(noise * 0.08, 0.3, 2.0);
//vec4 smoth_mid_color = smoothstep(top_color, middle_color, vec4(1)); //vec4 smoth_mid_color = smoothstep(top_color, middle_color, vec4(1));
vec4 fire_color = tri_color_mix(bottom_color, middle_color, top_color, gradient_pos); vec4 fire_color = tri_color_mix(bottom_color, middle_color, top_color, gradient_pos);
// Set final color and alpha // Set final color and alpha
COLOR = fire_color; COLOR = fire_color;

View File

@ -2,7 +2,7 @@
[ext_resource type="Script" path="res://scene/ground/script/c01/s12_飘动的寻人启事.gd" id="1_like6"] [ext_resource type="Script" path="res://scene/ground/script/c01/s12_飘动的寻人启事.gd" id="1_like6"]
[ext_resource type="Shader" path="res://asset/shader/rotation_displacement_vertex.gdshader" id="2_2w1m2"] [ext_resource type="Shader" path="res://asset/shader/rotation_displacement_vertex.gdshader" id="2_2w1m2"]
[ext_resource type="Texture2D" uid="uid://c6vi6umco6o0a" path="res://asset/art/临时草稿/纸片_正面.png" id="3_dl751"] [ext_resource type="Texture2D" uid="uid://c6vi6umco6o0a" path="res://asset/art/临时草稿/c01_序章/纸片_正面.png" id="3_dl751"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_q4vn8"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_q4vn8"]
shader = ExtResource("2_2w1m2") shader = ExtResource("2_2w1m2")

View File

@ -0,0 +1,10 @@
extends CanvasLayer
@onready var signature = %"陆小蝶"
func _ready() -> void:
layer = GlobalConfig.LAYER_LITTLE_GAME
# SceneManager.pop_center_notification(tr("input_拼凑信件"))
signature.visible = false
# test
get_tree().create_timer(3.0).timeout.connect(signature.play)

View File

@ -1,7 +1,148 @@
[gd_scene format=3 uid="uid://bl5pohc77hi43"] [gd_scene load_steps=11 format=3 uid="uid://bl5pohc77hi43"]
[node name="生死簿" type="Node2D"] [ext_resource type="Texture2D" uid="uid://cndai8whwoytn" path="res://asset/art/临时草稿/生死簿/生死簿.png" id="1_7k4qj"]
[ext_resource type="Script" path="res://scene/little_game/书架/生死簿.gd" id="1_wipr2"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="3_17f8x"]
[ext_resource type="Texture2D" uid="uid://d4n4e3lid3tu2" path="res://asset/art/临时草稿/生死簿/陆小蝶名字.png" id="3_858cl"]
[ext_resource type="Texture2D" uid="uid://cpfpxox5q5ql3" path="res://asset/art/临时草稿/生死簿/生死簿名字.png" id="3_wngb0"]
[ext_resource type="Script" path="res://scene/little_game/书架/陆小蝶名字.gd" id="4_dssaj"]
[ext_resource type="AudioStream" uid="uid://c26x8f18w6is0" path="res://asset/audio/sfx/c02/撞到柜子.mp3" id="4_jifnx"]
[node name="p1" type="Sprite2D" parent="."] [sub_resource type="AtlasTexture" id="AtlasTexture_isheb"]
atlas = ExtResource("3_wngb0")
region = Rect2(9, 5, 40, 75)
[node name="p2" type="Sprite2D" parent="."] [sub_resource type="AtlasTexture" id="AtlasTexture_wk6af"]
atlas = ExtResource("3_wngb0")
region = Rect2(56, 8, 28, 68)
[sub_resource type="AtlasTexture" id="AtlasTexture_b5epk"]
atlas = ExtResource("3_wngb0")
region = Rect2(105, 6, 29, 70)
[node name="生死簿" type="CanvasLayer"]
layer = 11
script = ExtResource("1_wipr2")
[node name="SfxStamp" parent="." instance=ExtResource("3_17f8x")]
stream = ExtResource("4_jifnx")
dir = "c02"
file = "撞到柜子.mp3"
[node name="bg" type="TextureRect" parent="."]
anchors_preset = 14
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_top = -100.0
offset_bottom = 100.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
texture = ExtResource("1_7k4qj")
stretch_mode = 5
[node name="p1" type="TextureRect" parent="bg"]
layout_mode = 0
offset_top = -58.0
offset_bottom = -58.0
mouse_filter = 2
stretch_mode = 5
[node name="陆小蝶" type="Sprite2D" parent="bg"]
unique_name_in_owner = true
modulate = Color(0.503203, 0.320866, 0.30312, 1)
position = Vector2(340, 103)
texture = ExtResource("3_858cl")
script = ExtResource("4_dssaj")
area_size = Vector2(100, 150)
[node name="seal1" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_isheb")
[node name="seal2" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_wk6af")
[node name="seal3" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_b5epk")
[node name="seal4" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_isheb")
[node name="seal5" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_wk6af")
[node name="seal6" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_b5epk")
[node name="seal7" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_isheb")
[node name="seal8" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_wk6af")
[node name="seal9" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_b5epk")
[node name="seal10" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_isheb")
[node name="seal11" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_wk6af")
[node name="seal12" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_b5epk")
[node name="seal13" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_isheb")
[node name="seal14" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_wk6af")
[node name="seal15" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_b5epk")
[node name="seal16" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_isheb")
[node name="seal17" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_wk6af")
[node name="seal18" type="Sprite2D" parent="bg/陆小蝶"]
modulate = Color(0.710006, 0.41208, 0.953067, 1)
scale = Vector2(0.5, 0.5)
texture = SubResource("AtlasTexture_b5epk")

View File

@ -0,0 +1,58 @@
@tool
extends Sprite2D
@export var area_size := Vector2(60, 60):
set(val):
area_size = val
queue_redraw()
@export var gizmo_outline_color := Color(0.8, 0.3, 0.1, 0.8):
set(val):
gizmo_outline_color = val
queue_redraw()
func play() -> void:
visible = true
var tween = create_tween()
tween.tween_interval(3.0)
tween.tween_property(self, "self_modulate:a", 0.0, 15.0)
var final_modulate = Color.PALE_VIOLET_RED
tween.parallel().tween_property(get_parent(), "modulate", final_modulate, 15.0)
tween = create_tween()
var interval = 3.
for c in self.get_children():
c.visible = false
tween.tween_interval(interval)
tween.tween_callback(_stamp_seal.bind(c))
interval = max(interval - 0.3, 0.4)
func _stamp_seal(seal: Sprite2D) -> void:
# rand self_modulate
seal.self_modulate = Color(randf_range(.8, 1.), randf_range(.8, 1.), randf_range(.8, 1.), 1.)
# rand rotation
seal.rotation = randf_range(-1., 1.)
# rand position within area
seal.position = Vector2(
randf_range(-area_size.x * 0.5, area_size.x * 0.5),
randf_range(-area_size.y * 0.5, area_size.y * 0.5)
)
# stamp
$"../../SfxStamp".play()
# show
seal.visible = true
var origin_scale = seal.scale
create_tween().tween_property(seal, "scale", origin_scale * Vector2(1.05, 1.05), .1)
create_tween().tween_property(seal, "scale", origin_scale * Vector2(1.0, 1.), .1)
func _draw() -> void:
if Engine.is_editor_hint():
# draw gizmo
var area_rect = Rect2(-area_size * 0.5, area_size)
# fill
var fill_color = gizmo_outline_color
fill_color.a = 0.4
draw_rect(area_rect, fill_color)
# outline
draw_rect(area_rect, gizmo_outline_color, false, 1.0)

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=9 format=3 uid="uid://h0s5ms7r7d8g"] [gd_scene load_steps=9 format=3 uid="uid://h0s5ms7r7d8g"]
[ext_resource type="Shader" path="res://scene/shading/ghost.gdshader" id="1_n4q4i"] [ext_resource type="Shader" path="res://scene/shading/ghost.gdshader" id="1_n4q4i"]
[ext_resource type="Texture2D" uid="uid://wvnpr0w3srtr" path="res://asset/art/临时草稿/ghost-sheet.png" id="2_vp102"] [ext_resource type="Texture2D" uid="uid://wvnpr0w3srtr" path="res://asset/art/临时草稿/c01_序章/ghost-sheet.png" id="2_vp102"]
[ext_resource type="Texture2D" uid="uid://bc64s5xfysrc3" path="res://asset/art/scene/c01/s07_书店外/bg_书店外_夜晚.png" id="4_lap87"] [ext_resource type="Texture2D" uid="uid://bc64s5xfysrc3" path="res://asset/art/scene/c01/s07_书店外/bg_书店外_夜晚.png" id="4_lap87"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_fv2fx"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_fv2fx"]