攻击特效
@ -0,0 +1,13 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" load_steps=5 format=3 uid="uid://dtyosukxpf33d"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" path="res://render/shader/effect.gdshader" id="1_s5fvm"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dd3e7ol8qa5eq" path="res://render/texture/noise/noise2.png" id="2_gu3jv"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/noise/noise1.png" id="3_p66ui"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cksxjvafx2skm" path="res://render/texture/mask/mask5.png" id="3_r0nln"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_s5fvm")
|
||||||
|
shader_parameter/tex_main = ExtResource("2_gu3jv")
|
||||||
|
shader_parameter/tex_noise = ExtResource("3_p66ui")
|
||||||
|
shader_parameter/tex_mask = ExtResource("3_r0nln")
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
importer_version=1
|
||||||
|
type="Mesh"
|
||||||
|
uid="uid://dq207a0waxk0j"
|
||||||
|
path="res://.godot/imported/slash1.obj-f08c28e52f0b7a534f3823600caaafbb.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=["res://.godot/imported/slash1.obj-f08c28e52f0b7a534f3823600caaafbb.mesh"]
|
||||||
|
|
||||||
|
source_file="res://render/mesh/slash1.obj"
|
||||||
|
dest_files=["res://.godot/imported/slash1.obj-f08c28e52f0b7a534f3823600caaafbb.mesh", "res://.godot/imported/slash1.obj-f08c28e52f0b7a534f3823600caaafbb.mesh"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
scale_mesh=Vector3(1, 1, 1)
|
||||||
|
offset_mesh=Vector3(0, 0, 0)
|
||||||
|
optimize_mesh=true
|
||||||
|
force_disable_mesh_compression=false
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
importer_version=1
|
||||||
|
type="Mesh"
|
||||||
|
uid="uid://bdwcmlxy5dwjx"
|
||||||
|
path="res://.godot/imported/slash2.obj-76aba645d36c47b3a645e11ecc63a80b.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=["res://.godot/imported/slash2.obj-76aba645d36c47b3a645e11ecc63a80b.mesh"]
|
||||||
|
|
||||||
|
source_file="res://render/mesh/slash2.obj"
|
||||||
|
dest_files=["res://.godot/imported/slash2.obj-76aba645d36c47b3a645e11ecc63a80b.mesh", "res://.godot/imported/slash2.obj-76aba645d36c47b3a645e11ecc63a80b.mesh"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
scale_mesh=Vector3(1, 1, 1)
|
||||||
|
offset_mesh=Vector3(0, 0, 0)
|
||||||
|
optimize_mesh=true
|
||||||
|
force_disable_mesh_compression=false
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
[gd_resource type="ParticleProcessMaterial" load_steps=3 format=3 uid="uid://dubkkji6sm8on"]
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_fjosh"]
|
||||||
|
offsets = PackedFloat32Array(0, 0.0894942, 0.684825, 1)
|
||||||
|
colors = PackedColorArray(0.278431, 0.65098, 1, 0, 0.278431, 0.65098, 1, 1, 0.278431, 0.65098, 1, 0.941176, 0.278431, 0.65098, 1, 0)
|
||||||
|
|
||||||
|
[sub_resource type="GradientTexture1D" id="GradientTexture1D_cypke"]
|
||||||
|
gradient = SubResource("Gradient_fjosh")
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
particle_flag_rotate_y = true
|
||||||
|
angle_min = 180.0
|
||||||
|
angle_max = 180.0
|
||||||
|
direction = Vector3(0, 1, 0)
|
||||||
|
spread = 0.0
|
||||||
|
angular_velocity_min = -720.0
|
||||||
|
angular_velocity_max = -720.0
|
||||||
|
gravity = Vector3(0, 0, 0)
|
||||||
|
tangential_accel_min = -100.0
|
||||||
|
scale_min = 0.25
|
||||||
|
scale_max = 0.25
|
||||||
|
color_ramp = SubResource("GradientTexture1D_cypke")
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
render_mode blend_add,unshaded;
|
||||||
|
|
||||||
|
uniform sampler2D tex_main : source_color;
|
||||||
|
uniform sampler2D tex_noise : source_color;
|
||||||
|
uniform sampler2D tex_mask : source_color;
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
vec2 uv2 = UV - 1.0 * vec2(mod(TIME, 2.0) - 1.0, 0);
|
||||||
|
vec4 col_main = texture(tex_main, UV);
|
||||||
|
vec4 col_noise = texture(tex_noise, UV - 0.5 * vec2(mod(TIME, 2.0) - 1.0, 0));
|
||||||
|
vec4 col_mask = texture(tex_mask, UV);
|
||||||
|
vec4 col = col_mask * COLOR * 1.0 + (col_noise + col_main) * COLOR;
|
||||||
|
ALBEDO = col.rgb;
|
||||||
|
ALPHA = col_mask.r * COLOR.a;
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 629 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://wlexfl17167"
|
||||||
|
path="res://.godot/imported/angle_mask.png-63d0ca414835f5e10cba70f60f51743e.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/mask/angle_mask.png"
|
||||||
|
dest_files=["res://.godot/imported/angle_mask.png-63d0ca414835f5e10cba70f60f51743e.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
|
||||||
|
After Width: | Height: | Size: 2.6 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c1nrboeh88fwt"
|
||||||
|
path="res://.godot/imported/mask1.png-4f11c099a8e93c4a50e5b5109793ca51.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/mask/mask1.png"
|
||||||
|
dest_files=["res://.godot/imported/mask1.png-4f11c099a8e93c4a50e5b5109793ca51.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
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cnnhlvmrbdhjf"
|
||||||
|
path="res://.godot/imported/mask2.png-add4f7f83d4a993f4cd8cd597517bf25.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/mask/mask2.png"
|
||||||
|
dest_files=["res://.godot/imported/mask2.png-add4f7f83d4a993f4cd8cd597517bf25.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
|
||||||
|
After Width: | Height: | Size: 4.4 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bgc7ni6f5e8si"
|
||||||
|
path="res://.godot/imported/mask3.png-03d81c5ec5ed19ed517e8bead41bdfae.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/mask/mask3.png"
|
||||||
|
dest_files=["res://.godot/imported/mask3.png-03d81c5ec5ed19ed517e8bead41bdfae.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
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://b2s7805jh3khd"
|
||||||
|
path="res://.godot/imported/mask4.png-c62deed2b9e46b22194482ef8631e116.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/mask/mask4.png"
|
||||||
|
dest_files=["res://.godot/imported/mask4.png-c62deed2b9e46b22194482ef8631e116.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
|
||||||
|
After Width: | Height: | Size: 21 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cksxjvafx2skm"
|
||||||
|
path="res://.godot/imported/mask5.png-01df40eb2cfeb741fda691b6a0a708d7.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/mask/mask5.png"
|
||||||
|
dest_files=["res://.godot/imported/mask5.png-01df40eb2cfeb741fda691b6a0a708d7.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
|
||||||
|
After Width: | Height: | Size: 352 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c4byf37he3mjt"
|
||||||
|
path="res://.godot/imported/noise1.png-f693e43e5a0783b64c9b218416eadc51.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/noise/noise1.png"
|
||||||
|
dest_files=["res://.godot/imported/noise1.png-f693e43e5a0783b64c9b218416eadc51.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
|
||||||
|
After Width: | Height: | Size: 255 KiB |
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dd3e7ol8qa5eq"
|
||||||
|
path="res://.godot/imported/noise2.png-b12ecd0c48ee15f1133a07b5fcc330f0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://render/texture/noise/noise2.png"
|
||||||
|
dest_files=["res://.godot/imported/noise2.png-b12ecd0c48ee15f1133a07b5fcc330f0.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,24 @@
|
|||||||
|
[gd_scene load_steps=5 format=3 uid="uid://b2h4pcmlii7dg"]
|
||||||
|
|
||||||
|
[ext_resource type="Material" uid="uid://dtyosukxpf33d" path="res://render/material/effect_slash.tres" id="1_6c80n"]
|
||||||
|
[ext_resource type="Script" path="res://script/effect/particle.gd" id="1_fx8ev"]
|
||||||
|
[ext_resource type="Material" uid="uid://dubkkji6sm8on" path="res://render/process_material/slash_normal.tres" id="2_eq67i"]
|
||||||
|
[ext_resource type="ArrayMesh" uid="uid://dq207a0waxk0j" path="res://render/mesh/slash1.obj" id="3_idjnm"]
|
||||||
|
|
||||||
|
[node name="Particle" type="Node3D"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.699187, 4.61636)
|
||||||
|
script = ExtResource("1_fx8ev")
|
||||||
|
|
||||||
|
[node name="Slash" type="GPUParticles3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.174235, 0, 0)
|
||||||
|
material_override = ExtResource("1_6c80n")
|
||||||
|
cast_shadow = 0
|
||||||
|
emitting = false
|
||||||
|
amount = 1
|
||||||
|
lifetime = 0.25
|
||||||
|
one_shot = true
|
||||||
|
speed_scale = 1.5
|
||||||
|
fixed_fps = 60
|
||||||
|
local_coords = true
|
||||||
|
process_material = ExtResource("2_eq67i")
|
||||||
|
draw_pass_1 = ExtResource("3_idjnm")
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
extends Node3D
|
||||||
|
class_name Particle
|
||||||
|
|
||||||
|
var life_time : float
|
||||||
|
var is_pause : bool = false
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
for child in get_children():
|
||||||
|
if child is GPUParticles3D:
|
||||||
|
var particle = child as GPUParticles3D
|
||||||
|
if particle.lifetime > life_time:
|
||||||
|
life_time = particle.lifetime
|
||||||
|
particle.restart()
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
if is_pause:
|
||||||
|
return
|
||||||
|
life_time -= delta
|
||||||
|
if life_time <= 0:
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
func set_pause(is_pause_set:bool):
|
||||||
|
is_pause = is_pause_set
|
||||||
|
for child in get_children():
|
||||||
|
if child is GPUParticles3D:
|
||||||
|
var particle = child as GPUParticles3D
|
||||||
|
particle.speed_scale = 0 if is_pause else 1
|
||||||