攻击特效
@ -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
|
||||