受击血渍
parent
d7c56138f8
commit
1a0c237b01
@ -0,0 +1,9 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://b3mpocbc8svx2"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" path="res://render/shader/fragment.gdshader" id="1_hr2a5"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bcrr12gbos636" path="res://render/texture/particle/shape/fragment1.png" id="2_r0lv7"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_hr2a5")
|
||||||
|
shader_parameter/tex_main = ExtResource("2_r0lv7")
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
render_mode unshaded;
|
||||||
|
|
||||||
|
uniform sampler2D tex_main : source_color;
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
vec4 col = texture(tex_main, UV);
|
||||||
|
ALBEDO = COLOR.rgb * col.r;
|
||||||
|
ALPHA = COLOR.a * col.r;
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 86 B |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d2tcm2g7sh1ne"
|
||||||
|
path="res://.godot/imported/gradient3.png-b722dde19beb65f5e22df2428d9b9ef1.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/particle/gradient/gradient3.png"
|
||||||
|
dest_files=["res://.godot/imported/gradient3.png-b722dde19beb65f5e22df2428d9b9ef1.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=0
|
||||||
|
compress/normal_map=2
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=false
|
||||||
|
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=0
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bcrr12gbos636"
|
||||||
|
path="res://.godot/imported/fragment1.png-81795d09090ef39d00ef7ac6d73d6291.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/particle/shape/fragment1.png"
|
||||||
|
dest_files=["res://.godot/imported/fragment1.png-81795d09090ef39d00ef7ac6d73d6291.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=0
|
||||||
|
compress/normal_map=2
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=false
|
||||||
|
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=0
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 8.5 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dcj75sifltene"
|
||||||
|
path="res://.godot/imported/water1.png-d5bc510fd51cdecdbbc1f1f7e7841665.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/particle/shape/water1.png"
|
||||||
|
dest_files=["res://.godot/imported/water1.png-d5bc510fd51cdecdbbc1f1f7e7841665.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=0
|
||||||
|
compress/normal_map=2
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=false
|
||||||
|
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=0
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
[gd_scene load_steps=6 format=3 uid="uid://ccxyyunj4ohqt"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_6r6qw"]
|
||||||
|
[ext_resource type="Script" path="res://script/effect/particle_decal.gd" id="3_yeg2u"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b6bfacouwy2hi" path="res://render/texture/decal/decal_glow.png" id="6_8db0o"]
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_jevf8"]
|
||||||
|
offsets = PackedFloat32Array(0, 0.82808, 1)
|
||||||
|
colors = PackedColorArray(1, 0, 0, 1, 1, 0, 0, 0.805158, 1, 0, 0, 0)
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_w5jkx"]
|
||||||
|
max_value = 0.6
|
||||||
|
_data = [Vector2(0, 0.31259), 0.0, 0.953112, 0, 0, Vector2(0.0742705, 0.500205), 0.0, 0.0, 0, 0, Vector2(0.143236, 0.456295), 0.0, 0.0, 0, 0, Vector2(1, 0.6), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 4
|
||||||
|
|
||||||
|
[node name="Particle" type="Node3D"]
|
||||||
|
script = ExtResource("1_6r6qw")
|
||||||
|
|
||||||
|
[node name="DecalBlood" type="Decal" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0)
|
||||||
|
size = Vector3(0.5, 5, 0.5)
|
||||||
|
texture_albedo = ExtResource("6_8db0o")
|
||||||
|
modulate = Color(0, 0, 0, 1)
|
||||||
|
upper_fade = 21.3037
|
||||||
|
cull_mask = 1
|
||||||
|
script = ExtResource("3_yeg2u")
|
||||||
|
lifetime = 3.0
|
||||||
|
gradient = SubResource("Gradient_jevf8")
|
||||||
|
scale_curve = SubResource("Curve_w5jkx")
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
[gd_scene load_steps=6 format=3 uid="uid://b0ogpoluxbsxx"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://script/effect/fragment.gd" id="1_blddo"]
|
||||||
|
[ext_resource type="Material" uid="uid://b3mpocbc8svx2" path="res://render/material/fragment.tres" id="2_cd8nd"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://ccxyyunj4ohqt" path="res://scene/effect/particle/particle_blood_decal.tscn" id="2_hrv13"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bcrr12gbos636" path="res://render/texture/particle/shape/fragment1.png" id="3_vu5gy"]
|
||||||
|
|
||||||
|
[sub_resource type="SphereShape3D" id="SphereShape3D_1r022"]
|
||||||
|
radius = 0.1
|
||||||
|
|
||||||
|
[node name="Fragment" type="CharacterBody3D"]
|
||||||
|
collision_layer = 256
|
||||||
|
script = ExtResource("1_blddo")
|
||||||
|
sub = ExtResource("2_hrv13")
|
||||||
|
velocity_min = Vector2(1, 2)
|
||||||
|
velocity_max = Vector2(2, 4)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
|
shape = SubResource("SphereShape3D_1r022")
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
material_override = ExtResource("2_cd8nd")
|
||||||
|
modulate = Color(1, 0, 0, 1)
|
||||||
|
pixel_size = 0.004
|
||||||
|
texture = ExtResource("3_vu5gy")
|
||||||
|
hframes = 2
|
||||||
|
vframes = 2
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
[gd_scene load_steps=4 format=3 uid="uid://j0wrno4hl0hp"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_kd50q"]
|
||||||
|
[ext_resource type="Script" path="res://script/effect/particle_sub_emitter.gd" id="2_osya7"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b0ogpoluxbsxx" path="res://scene/effect/particle/particle_fragment.tscn" id="3_o8j15"]
|
||||||
|
|
||||||
|
[node name="Particle" type="Node3D"]
|
||||||
|
script = ExtResource("1_kd50q")
|
||||||
|
|
||||||
|
[node name="ParticleSubEmitter" type="Node3D" parent="."]
|
||||||
|
script = ExtResource("2_osya7")
|
||||||
|
sub = ExtResource("3_o8j15")
|
||||||
|
count = 2
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
extends CharacterBody3D
|
||||||
|
class_name Fragment
|
||||||
|
|
||||||
|
@export var sub: PackedScene
|
||||||
|
@export var gravity_scale: float = 1.0
|
||||||
|
@export var velocity_min: Vector2 = Vector2.ONE
|
||||||
|
@export var velocity_max: Vector2 = Vector2.ONE
|
||||||
|
|
||||||
|
@onready var sprite3D: Sprite3D = %Sprite3D as Sprite3D
|
||||||
|
|
||||||
|
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
|
||||||
|
var frame_rate: float = 0.1
|
||||||
|
var frame_time: float = 0
|
||||||
|
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
var dir: Vector2 = Util.angle_dir(randf_range(0, 360)) * randf_range(velocity_min.x, velocity_max.x)
|
||||||
|
velocity.x = dir.x
|
||||||
|
velocity.z = dir.y
|
||||||
|
velocity.y = randf_range(velocity_min.y, velocity_max.y)
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
velocity.y -= gravity * gravity_scale * delta
|
||||||
|
var frame_count: int = sprite3D.hframes * sprite3D.vframes
|
||||||
|
var frame_time_all: float = frame_rate * frame_count
|
||||||
|
frame_time += delta
|
||||||
|
sprite3D.frame = int(frame_time / frame_rate) % frame_count
|
||||||
|
frame_time = fmod(frame_time, frame_time_all)
|
||||||
|
if move_and_slide():
|
||||||
|
var sub_particle: Node3D = sub.instantiate() as Node3D
|
||||||
|
SignalManager.effect_create.emit(sub_particle)
|
||||||
|
sub_particle.global_position = global_position
|
||||||
|
queue_free()
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
extends EffectBase
|
||||||
|
class_name ParticleSubEmitter
|
||||||
|
|
||||||
|
@export var sub: PackedScene
|
||||||
|
@export var count: int = 1
|
||||||
|
|
||||||
|
|
||||||
|
func on_ready():
|
||||||
|
for i in range(count):
|
||||||
|
var sub_particle: Node3D = sub.instantiate() as Node3D
|
||||||
|
SignalManager.effect_create.emit(sub_particle)
|
||||||
|
sub_particle.global_position = global_position
|
||||||
Loading…
Reference in New Issue