mark材质拆分,绿幕mark初版,soul_slash初版

master
chendian 8 months ago
parent 9237c8225f
commit 80057356e7

@ -88,6 +88,9 @@ func short_cut_index_pressed(index: int):
print("[", item_id, "]", mesh_library.get_item_name(item_id), "::", material_name) print("[", item_id, "]", mesh_library.get_item_name(item_id), "::", material_name)
elif short_cut_path == "func_fix_mesh": elif short_cut_path == "func_fix_mesh":
var material_grid_block: Material = load("res://render/material/level_grid_block.tres") as Material var material_grid_block: Material = load("res://render/material/level_grid_block.tres") as Material
var material_grid_mark_white: Material = load("res://render/material/level_grid_mark_white.tres") as Material
var material_grid_mark_black: Material = load("res://render/material/level_grid_mark_black.tres") as Material
var material_grid_mark_green: Material = load("res://render/material/level_grid_mark_green.tres") as Material
var dir_path: String = "res://resource/mesh_library" var dir_path: String = "res://resource/mesh_library"
var dir: DirAccess = DirAccess.open(dir_path) var dir: DirAccess = DirAccess.open(dir_path)
@ -102,6 +105,12 @@ func short_cut_index_pressed(index: int):
var mesh: Mesh = mesh_library.get_item_mesh(item_id) var mesh: Mesh = mesh_library.get_item_mesh(item_id)
var mesh_name: String = mesh_library.get_item_name(item_id) var mesh_name: String = mesh_library.get_item_name(item_id)
var material_set: Material = material_grid_block var material_set: Material = material_grid_block
if mesh_name.contains("mark_black"):
material_set = material_grid_mark_black
elif mesh_name.contains("mark_white"):
material_set = material_grid_mark_white
elif mesh_name.contains("mark_green"):
material_set = material_grid_mark_green
for surface_id: int in range(mesh.get_surface_count()): for surface_id: int in range(mesh.get_surface_count()):
if not mesh.surface_get_material(surface_id) == material_set: if not mesh.surface_get_material(surface_id) == material_set:
fix_count += 1 fix_count += 1

@ -1,8 +0,0 @@
[gd_resource type="Resource" script_class="CoreCfg" load_steps=2 format=3 uid="uid://chx14f0ty3usd"]
[ext_resource type="Script" path="res://script/config/core_cfg.gd" id="1_xylg2"]
[resource]
script = ExtResource("1_xylg2")
name = ""
type = 2

@ -1,8 +0,0 @@
[gd_resource type="Resource" script_class="CoreCfg" load_steps=2 format=3 uid="uid://c5h02ni8psoxq"]
[ext_resource type="Script" path="res://script/config/core_cfg.gd" id="1_rsjym"]
[resource]
script = ExtResource("1_rsjym")
name = ""
type = 2

@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="SkillCfg" load_steps=4 format=3 uid="uid://cuwtxibg84nno"]
[ext_resource type="Script" path="res://script/config/skill_cfg.gd" id="1_702bi"]
[ext_resource type="Animation" uid="uid://kfvqej1q5iqa" path="res://resource/skill_animation/hero01_combo0101.tres" id="2_nm2wy"]
[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="3_ppacp"]
[resource]
script = ExtResource("1_702bi")
name = ""
skill_animation = ExtResource("2_nm2wy")
range = 0.0
free_lock = false
ignore_push = false
stance_from = 100
stance_to = 2
break_level = 3
is_charging = false
mp_cost = 0
refresh_animation = false
sprite_frames = ExtResource("3_ppacp")
animation_name = "long_attack01"

@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="SkillCfg" load_steps=4 format=3 uid="uid://lr1iguojoyk"]
[ext_resource type="Script" path="res://script/config/skill_cfg.gd" id="1_42tyl"]
[ext_resource type="Animation" uid="uid://cvxifa2uac5oc" path="res://resource/skill_animation/hero01_combo0102.tres" id="2_bm5gt"]
[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="3_11afq"]
[resource]
script = ExtResource("1_42tyl")
name = ""
skill_animation = ExtResource("2_bm5gt")
range = 0.0
free_lock = false
ignore_push = false
stance_from = 100
stance_to = 3
break_level = 1
is_charging = false
mp_cost = 0
refresh_animation = false
sprite_frames = ExtResource("3_11afq")
animation_name = "long_attack02"

@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="SkillCfg" load_steps=4 format=3 uid="uid://b8b1afegmabx6"]
[ext_resource type="Script" path="res://script/config/skill_cfg.gd" id="1_uhj5t"]
[ext_resource type="Animation" uid="uid://cqc30d5uqi2my" path="res://resource/skill_animation/hero01_combo0103.tres" id="2_rvklk"]
[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="3_2hchk"]
[resource]
script = ExtResource("1_uhj5t")
name = ""
skill_animation = ExtResource("2_rvklk")
range = 0.0
free_lock = false
ignore_push = false
stance_from = 100
stance_to = 4
break_level = 1
is_charging = false
mp_cost = 0
refresh_animation = false
sprite_frames = ExtResource("3_2hchk")
animation_name = "long_attack03"

@ -1,27 +0,0 @@
[gd_resource type="Resource" script_class="SkillCfg" load_steps=5 format=3 uid="uid://cwvj0xsv61cjk"]
[ext_resource type="Script" uid="uid://ch4gg7uuu2e2t" path="res://script/config/skill_cfg.gd" id="1_doifq"]
[ext_resource type="Animation" uid="uid://h8hm3kbecdx8" path="res://resource/skill_animation/hero01_remote01.tres" id="2_h285p"]
[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="3_w10pb"]
[ext_resource type="Resource" uid="uid://d3mafsovw1mko" path="res://config/character/bullet_hero01_soul_hit01.tres" id="4_3k3a4"]
[resource]
script = ExtResource("1_doifq")
name = ""
skill_animation = ExtResource("2_h285p")
range = 0.0
free_lock = false
ignore_push = false
sub_character = ExtResource("4_3k3a4")
stance_from = 102
stance_to = 0
break_level = 3
is_charging = false
mp_cost = 0
mp_sub_cost = false
warn_type = 0
with_stop = false
is_lock_x = true
refresh_animation = false
sprite_frames = ExtResource("3_w10pb")
animation_name = "long_attack01"

@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="SkillCfg" load_steps=4 format=3 uid="uid://iyqp5jwc75b1"]
[ext_resource type="Script" path="res://script/config/skill_cfg.gd" id="1_e1byx"]
[ext_resource type="Animation" uid="uid://q7qlw0a7hfjt" path="res://resource/skill_animation/hero01_slash01.tres" id="2_1txbl"]
[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="3_roc1y"]
[resource]
script = ExtResource("1_e1byx")
name = ""
skill_animation = ExtResource("2_1txbl")
range = 0.0
free_lock = false
ignore_push = false
stance_from = 100
stance_to = 4
break_level = 3
is_charging = false
mp_cost = 0
refresh_animation = false
sprite_frames = ExtResource("3_roc1y")
animation_name = "long_attack04"

@ -0,0 +1,27 @@
[gd_resource type="Resource" script_class="SkillCfg" load_steps=4 format=3 uid="uid://dadc1ehlucuds"]
[ext_resource type="Script" uid="uid://ch4gg7uuu2e2t" path="res://script/config/skill_cfg.gd" id="1_2lha7"]
[ext_resource type="Animation" uid="uid://cwku3kd0i7tlt" path="res://resource/skill_animation/hero01_soul_slash.tres" id="2_lwm2b"]
[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="3_7738e"]
[resource]
script = ExtResource("1_2lha7")
name = ""
skill_animation = ExtResource("2_lwm2b")
stance_from = 102
stance_to = 10
break_level = 3
is_charging = false
attack1_with_stop = false
attack2_with_stop = false
mp_cost = 0
mp_sub_cost = false
free_lock = false
ignore_push = false
is_lock_x = true
is_lock_x_move = false
range = 0.0
warn_type = 0
sprite_frames = ExtResource("3_7738e")
animation_name = "long_attack02"
metadata/_custom_type_script = "uid://ch4gg7uuu2e2t"

@ -16,11 +16,6 @@
5 5
], ],
"path_to": [ "path_to": [
{
"name": "破碎遗迹",
"key_need": "单向门",
"is_one_way": true
},
{ {
"name": "冥界洞穴右" "name": "冥界洞穴右"
}, },
@ -181,6 +176,22 @@
"path_to": [] "path_to": []
}, },
"冥界洞穴左": { "冥界洞穴左": {
"pos": [
4,
4
],
"path_to": [
{
"name": "冥界洞穴下"
},
{
"name": "破碎遗迹",
"key_need": "单向门",
"is_one_way": true
}
]
},
"冥界洞穴下": {
"pos": [ "pos": [
4, 4,
5 5
@ -570,8 +581,7 @@
"path_to": [ "path_to": [
{ {
"name": "血池地狱", "name": "血池地狱",
"key_need": "单向门", "key_need": "激光"
"is_one_way": true
}, },
{ {
"name": "战斗-空" "name": "战斗-空"
@ -651,7 +661,8 @@
"key_need": "锁链" "key_need": "锁链"
}, },
{ {
"name": "旧都下城" "name": "旧都下城",
"key_need": "锁链"
}, },
{ {
"name": "战斗-萃香" "name": "战斗-萃香"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkm6ogc5k13l3"
path="res://.godot/imported/level_design.png-bd7fbbfa4cdbee7c036c09dfb6ff65b3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://level_design/level_design.png"
dest_files=["res://.godot/imported/level_design.png-bd7fbbfa4cdbee7c036c09dfb6ff65b3.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: 82 KiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://5w6yfho8pfh3"
path="res://.godot/imported/output_graph.png-f99ff2551f543dfa6e308087d362138c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://level_design/output_graph.png"
dest_files=["res://.godot/imported/output_graph.png-f99ff2551f543dfa6e308087d362138c.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

@ -12,7 +12,7 @@ background_mode = 1
sky = SubResource("Sky_hmsea") sky = SubResource("Sky_hmsea")
ambient_light_source = 2 ambient_light_source = 2
ambient_light_color = Color(1, 1, 1, 1) ambient_light_color = Color(1, 1, 1, 1)
ambient_light_energy = 0.15 ambient_light_energy = 0.1
tonemap_white = 2.39 tonemap_white = 2.39
ssil_enabled = true ssil_enabled = true
ssil_intensity = 0.4 ssil_intensity = 0.4

@ -5,4 +5,4 @@
[resource] [resource]
render_priority = 0 render_priority = 0
shader = ExtResource("1_n56k0") shader = ExtResource("1_n56k0")
shader_parameter/is_hide = true shader_parameter/is_hide = false

@ -1,19 +1,23 @@
[gd_resource type="ShaderMaterial" load_steps=4 format=3 uid="uid://dn4ao1jmb7ea6"] [gd_resource type="ShaderMaterial" load_steps=7 format=3 uid="uid://dn4ao1jmb7ea6"]
[ext_resource type="Shader" uid="uid://keyjsvf4g3fl" path="res://render/shader/level_grid_block.gdshader" id="1_ggegd"] [ext_resource type="Shader" uid="uid://keyjsvf4g3fl" path="res://render/shader/level_grid_block.gdshader" id="1_ggegd"]
[ext_resource type="Texture2D" uid="uid://hgvokjy0feyp" path="res://render/texture/material/Bricks099_1K-JPG_Roughness.jpg" id="2_ga6wc"]
[ext_resource type="Texture2D" uid="uid://dnblkeesjv16a" path="res://render/texture/particle/noise/noise4.png" id="2_mif3q"] [ext_resource type="Texture2D" uid="uid://dnblkeesjv16a" path="res://render/texture/particle/noise/noise4.png" id="2_mif3q"]
[ext_resource type="Texture2D" uid="uid://b68d8yjcj01yp" path="res://render/texture/material/Bricks099_1K-JPG_NormalGL.jpg" id="3_a7ne0"]
[ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="3_k18qr"] [ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="3_k18qr"]
[ext_resource type="Texture2D" uid="uid://dyp1l3nr6d5rw" path="res://render/texture/particle/noise/noise3.png" id="6_a7ne0"]
[resource] [resource]
render_priority = 0 render_priority = 0
shader = ExtResource("1_ggegd") shader = ExtResource("1_ggegd")
shader_parameter/is_target = false shader_parameter/is_target = false
shader_parameter/is_focus = false shader_parameter/is_focus = false
shader_parameter/target_position = Vector3(0, 1.28, 1) shader_parameter/target_position_y = 1.28
shader_parameter/focus_min = Vector3(50.56, 5.76, -0.640001) shader_parameter/target_level_top_y = 5.76
shader_parameter/focus_max = Vector3(64.64, 13.44, 7.04) shader_parameter/focus_min = Vector3(0, 0, 0)
shader_parameter/focus_max = Vector3(13.44, 7.04, 7.04)
shader_parameter/tex_noise1 = ExtResource("2_mif3q") shader_parameter/tex_noise1 = ExtResource("2_mif3q")
shader_parameter/tex_noise2 = ExtResource("3_k18qr") shader_parameter/tex_noise2 = ExtResource("3_k18qr")
shader_parameter/tex_noise3 = ExtResource("2_mif3q") shader_parameter/tex_noise_sub = ExtResource("6_a7ne0")
shader_parameter/tex_noise_sub = ExtResource("3_k18qr") shader_parameter/tex_material = ExtResource("2_ga6wc")
shader_parameter/tex_noise_sub_color = Color(0.0666667, 0.639216, 0.0823529, 0.227451) shader_parameter/tex_material_normal = ExtResource("3_a7ne0")

@ -0,0 +1,9 @@
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://xd5l2a8i0cvd"]
[ext_resource type="Shader" uid="uid://0b88pnjpdqkt" path="res://render/shader/level_grid_mark.gdshader" id="1_hn2oi"]
[resource]
render_priority = 0
shader = ExtResource("1_hn2oi")
shader_parameter/is_open = false
shader_parameter/mark_type = 1

@ -0,0 +1,13 @@
[gd_resource type="ShaderMaterial" load_steps=4 format=3 uid="uid://2wt4samsyj2b"]
[ext_resource type="Shader" uid="uid://0b88pnjpdqkt" path="res://render/shader/level_grid_mark.gdshader" id="1_tyap1"]
[ext_resource type="Texture2D" uid="uid://c5qaegv54l5oj" path="res://render/texture/background/canyon01.png" id="2_52b1h"]
[ext_resource type="Texture2D" uid="uid://c348uodiv002e" path="res://render/texture/background/canyon01_sub01.png" id="3_rtuyj"]
[resource]
render_priority = 0
shader = ExtResource("1_tyap1")
shader_parameter/is_open = false
shader_parameter/mark_type = 2
shader_parameter/tex = ExtResource("2_52b1h")
shader_parameter/tex_sub1 = ExtResource("3_rtuyj")

@ -0,0 +1,23 @@
[gd_resource type="ShaderMaterial" load_steps=7 format=3 uid="uid://hmd3hkbgbf03"]
[ext_resource type="Shader" uid="uid://keyjsvf4g3fl" path="res://render/shader/level_grid_block.gdshader" id="1_a41du"]
[ext_resource type="Texture2D" uid="uid://hgvokjy0feyp" path="res://render/texture/material/Bricks099_1K-JPG_Roughness.jpg" id="2_slcau"]
[ext_resource type="Texture2D" uid="uid://b68d8yjcj01yp" path="res://render/texture/material/Bricks099_1K-JPG_NormalGL.jpg" id="3_nxigh"]
[ext_resource type="Texture2D" uid="uid://dnblkeesjv16a" path="res://render/texture/particle/noise/noise4.png" id="4_3t5gh"]
[ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="5_hl2lv"]
[ext_resource type="Texture2D" uid="uid://dyp1l3nr6d5rw" path="res://render/texture/particle/noise/noise3.png" id="6_gid2t"]
[resource]
render_priority = 0
shader = ExtResource("1_a41du")
shader_parameter/is_target = false
shader_parameter/is_focus = false
shader_parameter/target_position_y = 1.28
shader_parameter/target_level_top_y = 5.76
shader_parameter/focus_min = Vector3(0, 0, 0)
shader_parameter/focus_max = Vector3(13.44, 7.04, 7.04)
shader_parameter/tex_noise1 = ExtResource("4_3t5gh")
shader_parameter/tex_noise2 = ExtResource("5_hl2lv")
shader_parameter/tex_noise_sub = ExtResource("6_gid2t")
shader_parameter/tex_material = ExtResource("2_slcau")
shader_parameter/tex_material_normal = ExtResource("3_nxigh")

@ -15,6 +15,6 @@ shader_parameter/speed = 2.0
shader_parameter/ray1_density = 8.0 shader_parameter/ray1_density = 8.0
shader_parameter/ray2_density = 30.0 shader_parameter/ray2_density = 30.0
shader_parameter/ray2_intensity = 0.457 shader_parameter/ray2_intensity = 0.457
shader_parameter/color = Color(1, 0.87451, 0.701961, 0.8) shader_parameter/color = Color(1, 0.87451, 0.701961, 0.478431)
shader_parameter/hdr = true shader_parameter/hdr = true
shader_parameter/seed = 5.0 shader_parameter/seed = 5.0

@ -1,20 +1,24 @@
shader_type spatial; shader_type spatial;
uniform bool is_target = false; uniform bool is_target = false;
uniform bool is_focus = false; uniform bool is_focus = false;
uniform vec3 target_position = vec3(0, 1.28, 1); uniform float target_position_y = 0;
uniform float target_level_top_y = 0;
uniform vec3 focus_min = vec3(0,0,0); uniform vec3 focus_min = vec3(0,0,0);
uniform vec3 focus_max = vec3(0,0,0); uniform vec3 focus_max = vec3(0,0,0);
uniform sampler2D tex_noise1 : source_color; uniform sampler2D tex_noise1 : source_color;
uniform sampler2D tex_noise2 : source_color; uniform sampler2D tex_noise2 : source_color;
uniform sampler2D tex_noise3 : source_color;
uniform sampler2D tex_noise_sub : source_color; uniform sampler2D tex_noise_sub : source_color;
uniform vec4 tex_noise_sub_color : source_color = vec4(1.0);
uniform sampler2D tex_material : source_color;
uniform sampler2D tex_material_normal : source_color;
uniform sampler2D tex_material_sub : source_color;
uniform sampler2D tex_material_normal_sub : source_color;
varying vec3 world_position; varying vec3 world_position;
varying vec2 uv1; varying vec2 uv1;
varying vec2 uv2; varying vec2 uv2;
varying vec2 uv3;
varying vec2 uv_sub; varying vec2 uv_sub;
varying vec2 uv_material;
void vertex() void vertex()
{ {
@ -22,8 +26,8 @@ void vertex()
vec2 local_uv = vec2(world_position.x,world_position.y + world_position.z); vec2 local_uv = vec2(world_position.x,world_position.y + world_position.z);
uv1 = local_uv / 32.0; uv1 = local_uv / 32.0;
uv2 = local_uv / 32.0; uv2 = local_uv / 32.0;
uv3 = local_uv / 8.0; uv_sub = local_uv / 4.0;
uv_sub = local_uv / 16.0; uv_material = local_uv / 8.0;
} }
bool is_in_focus(vec3 f_min,vec3 f_max){ bool is_in_focus(vec3 f_min,vec3 f_max){
@ -45,7 +49,7 @@ void fragment() {
}else{ }else{
float brightness = 1.0; float brightness = 1.0;
if(is_target){ if(is_target){
float offset_y = abs(floor((world_position.y-target_position.y) / 0.02) * 0.02); float offset_y = abs(floor((world_position.y-target_position_y) / 0.02) * 0.02);
offset_y = max(0.0,offset_y-0.64); offset_y = max(0.0,offset_y-0.64);
float rate = clamp(1.0-offset_y/4.48,0.0,1.0); float rate = clamp(1.0-offset_y/4.48,0.0,1.0);
brightness = rate; brightness = rate;
@ -63,20 +67,37 @@ void fragment() {
float discrete_noise_value1 = floor(noise_value1 / 0.5) * 0.5; float discrete_noise_value1 = floor(noise_value1 / 0.5) * 0.5;
float noise_value2 = texture(tex_noise2,floor(uv2 /0.02) *0.02).r; float noise_value2 = texture(tex_noise2,floor(uv2 /0.02) *0.02).r;
float discrete_noise_value2 = floor(noise_value2 / 0.5) * 0.5; float discrete_noise_value2 = floor(noise_value2 / 0.5) * 0.5;
float noise_value3 = texture(tex_noise3,floor(uv3 /0.02) *0.02).r;
float discrete_noise_value3 = floor(noise_value3 / 0.1) * 0.1;
//材质纹理
float noise_value_material = texture(tex_material,floor(uv_material /0.0025) *0.0025).r;
float discrete_noise_value_material = floor(noise_value_material / 0.1) * 0.1;
c -= discrete_noise_value1 * 0.2;
c += discrete_noise_value2 * 0.2;
c += discrete_noise_value_material * 0.2;
//顶部侵蚀效果
float offset_y = abs(world_position.y-target_level_top_y);
float sub_rate = 1.0 - min(1.0,offset_y/0.2);
float noise_value_material_sub = texture(tex_material_sub,floor(uv_material /0.0025) *0.0025).r;
float discrete_noise_value_material_sub = floor(noise_value_material_sub / 0.1) * 0.1;
float noise_value_sub = texture(tex_noise_sub,floor(uv_sub /0.02) *0.02).r; float noise_value_sub = texture(tex_noise_sub,floor(uv_sub /0.02) *0.02).r;
if (noise_value_sub > 0.2){ c.rgb = mix(c.rgb,vec3(0), noise_value_sub * sub_rate * sub_rate * 4.0);
c.rgb = mix(c.rgb,tex_noise_sub_color.rgb,tex_noise_sub_color.a);
}else{ vec3 normal_map = texture(tex_material_normal, floor(uv_material /0.0025) *0.0025).rgb;
c -= discrete_noise_value1 * 0.2; normal_map.xy *= 0.2;
c += discrete_noise_value2 * 0.2; NORMAL = normalize(TANGENT * normal_map.x + BINORMAL * normal_map.y + NORMAL * normal_map.z);
c -= discrete_noise_value3 * 0.08;
}
//应用亮度 //应用亮度
c.rgb = mix(vec3(0.0), c.rgb, brightness); c = clamp(c,vec3(0.0),vec3(0.95));
c.rgb = mix(vec3(0.0), c, brightness);
//颜色像素化
float div_rate = 0.02;
c.r = floor(c.r /div_rate) *div_rate;
c.g = floor(c.g /div_rate) *div_rate;
c.b = floor(c.b /div_rate) *div_rate;
ALBEDO = c.rgb; ALBEDO = c.rgb;
if(is_light){ if(is_light){
EMISSION = c.rgb * 2.0; EMISSION = c.rgb * 2.0;

@ -0,0 +1,30 @@
shader_type spatial;
render_mode unshaded;
uniform bool is_open = false;
uniform int mark_type = 0; //0空气墙 1黑块 2绿幕
uniform sampler2D tex : source_color;
uniform sampler2D tex_sub1 : source_color;
void fragment() {
if (is_open){
if (mark_type == 0){
discard;
}else if (mark_type == 1){
ALBEDO = vec3(0.0);
}else if (mark_type == 2){
vec3 color = vec3(0.0);
vec4 background = textureLod(tex, SCREEN_UV, 0.0);
vec4 background_sub1 = textureLod(tex_sub1, SCREEN_UV, 0.0);
if (background.a > 0.0){
color.rgb = background.rgb;
}
if (background_sub1.a > 0.0){
color.rgb = background_sub1.rgb;
}
ALBEDO = color;
}
}else{
ALBEDO = COLOR.rgb;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c5qaegv54l5oj"
path="res://.godot/imported/canyon01.png-e24584e954e5c8c205b893270648e0e6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://render/texture/background/canyon01.png"
dest_files=["res://.godot/imported/canyon01.png-e24584e954e5c8c205b893270648e0e6.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: 193 KiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c348uodiv002e"
path="res://.godot/imported/canyon01_sub01.png-11b689cf40e723269cfbfcdeb4f25f9e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://render/texture/background/canyon01_sub01.png"
dest_files=["res://.godot/imported/canyon01_sub01.png-11b689cf40e723269cfbfcdeb4f25f9e.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: 1.2 MiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bmi4ye571uit2"
path="res://.godot/imported/Bricks099_1K-JPG_Color.jpg-5b327f04c9ea7f87785e0402b2ae8bb4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://render/texture/material/Bricks099_1K-JPG_Color.jpg"
dest_files=["res://.godot/imported/Bricks099_1K-JPG_Color.jpg-5b327f04c9ea7f87785e0402b2ae8bb4.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: 1.8 MiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b68d8yjcj01yp"
path="res://.godot/imported/Bricks099_1K-JPG_NormalGL.jpg-307ae36edb34abff4017eead87bf6e73.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://render/texture/material/Bricks099_1K-JPG_NormalGL.jpg"
dest_files=["res://.godot/imported/Bricks099_1K-JPG_NormalGL.jpg-307ae36edb34abff4017eead87bf6e73.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: 683 KiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hgvokjy0feyp"
path="res://.godot/imported/Bricks099_1K-JPG_Roughness.jpg-af6eb72f47920aac10011640ff01d3a8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://render/texture/material/Bricks099_1K-JPG_Roughness.jpg"
dest_files=["res://.godot/imported/Bricks099_1K-JPG_Roughness.jpg-af6eb72f47920aac10011640ff01d3a8.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: 1.6 MiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://csw05ds1g6eyx"
path="res://.godot/imported/Moss004_1K-JPG_Color.jpg-5b5ffbba687c8b2e9a54ce4a918450f2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://render/texture/material/Moss004_1K-JPG_Color.jpg"
dest_files=["res://.godot/imported/Moss004_1K-JPG_Color.jpg-5b5ffbba687c8b2e9a54ce4a918450f2.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: 2.1 MiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dtdj3umldqmq1"
path="res://.godot/imported/Moss004_1K-JPG_NormalGL.jpg-bead73164e57a58c1c5c4f332fef5d43.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://render/texture/material/Moss004_1K-JPG_NormalGL.jpg"
dest_files=["res://.godot/imported/Moss004_1K-JPG_NormalGL.jpg-bead73164e57a58c1c5c4f332fef5d43.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: 1.4 MiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b21ilyao4pj2w"
path="res://.godot/imported/stone01.jpg-5940f25b1222c0957cc25c3a4c516938.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://render/texture/material/stone01.jpg"
dest_files=["res://.godot/imported/stone01.jpg-5940f25b1222c0957cc25c3a4c516938.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: 1.7 MiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://gd0wjef5ok4u"
path="res://.godot/imported/stone01_normal.jpg-3ae6c0115e525eaeaff58e308d894af7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://render/texture/material/stone01_normal.jpg"
dest_files=["res://.godot/imported/stone01_normal.jpg-3ae6c0115e525eaeaff58e308d894af7.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,18 @@
[remap]
importer="MagicaVoxel.With.Extensions.To.Mesh"
type="Mesh"
uid="uid://ct10bmwaynaih"
path="res://.godot/imported/main_mark_green_full.vox-cd77b4ac6793aaa2ff30d6b2ff27c77d.mesh"
[deps]
source_file="res://resource/mesh_level/main_mark_green_full.vox"
dest_files=["res://.godot/imported/main_mark_green_full.vox-cd77b4ac6793aaa2ff30d6b2ff27c77d.mesh"]
[params]
Scale=0.02
GreedyMeshGenerator=true
SnapToGround=false
FirstKeyframeOnly=true

@ -21,7 +21,7 @@ data = {
"width": 64 "width": 64
} }
[sub_resource type="ImageTexture" id="ImageTexture_ihqx7"] [sub_resource type="ImageTexture" id="ImageTexture_na7iv"]
image = SubResource("Image_jo1dj") image = SubResource("Image_jo1dj")
[sub_resource type="Image" id="Image_na7iv"] [sub_resource type="Image" id="Image_na7iv"]
@ -33,7 +33,7 @@ data = {
"width": 64 "width": 64
} }
[sub_resource type="ImageTexture" id="ImageTexture_ox4k0"] [sub_resource type="ImageTexture" id="ImageTexture_lh2qi"]
image = SubResource("Image_na7iv") image = SubResource("Image_na7iv")
[sub_resource type="Image" id="Image_ihqx7"] [sub_resource type="Image" id="Image_ihqx7"]
@ -93,7 +93,7 @@ data = {
"width": 64 "width": 64
} }
[sub_resource type="ImageTexture" id="ImageTexture_unc8d"] [sub_resource type="ImageTexture" id="ImageTexture_ssddp"]
image = SubResource("Image_r0af0") image = SubResource("Image_r0af0")
[sub_resource type="Image" id="Image_lh2qi"] [sub_resource type="Image" id="Image_lh2qi"]
@ -117,7 +117,7 @@ data = {
"width": 64 "width": 64
} }
[sub_resource type="ImageTexture" id="ImageTexture_qyo1s"] [sub_resource type="ImageTexture" id="ImageTexture_ox4k0"]
image = SubResource("Image_ssddp") image = SubResource("Image_ssddp")
[sub_resource type="Image" id="Image_ox4k0"] [sub_resource type="Image" id="Image_ox4k0"]
@ -152,7 +152,7 @@ item/0/mesh_cast_shadow = 1
item/0/shapes = [] item/0/shapes = []
item/0/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/0/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
item/0/navigation_layers = 1 item/0/navigation_layers = 1
item/0/preview = SubResource("ImageTexture_ihqx7") item/0/preview = SubResource("ImageTexture_na7iv")
item/1/name = "chara_active_door01" item/1/name = "chara_active_door01"
item/1/mesh = ExtResource("2_0kugy") item/1/mesh = ExtResource("2_0kugy")
item/1/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/1/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
@ -160,7 +160,7 @@ item/1/mesh_cast_shadow = 1
item/1/shapes = [] item/1/shapes = []
item/1/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/1/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
item/1/navigation_layers = 1 item/1/navigation_layers = 1
item/1/preview = SubResource("ImageTexture_ox4k0") item/1/preview = SubResource("ImageTexture_lh2qi")
item/2/name = "chara_active_grass_high" item/2/name = "chara_active_grass_high"
item/2/mesh = ExtResource("3_4g5pq") item/2/mesh = ExtResource("3_4g5pq")
item/2/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/2/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
@ -192,7 +192,7 @@ item/5/mesh_cast_shadow = 1
item/5/shapes = [] item/5/shapes = []
item/5/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/5/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
item/5/navigation_layers = 1 item/5/navigation_layers = 1
item/5/preview = SubResource("ImageTexture_unc8d") item/5/preview = SubResource("ImageTexture_ssddp")
item/6/name = "chara_spot_normal" item/6/name = "chara_spot_normal"
item/6/mesh = ExtResource("7_cceh1") item/6/mesh = ExtResource("7_cceh1")
item/6/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/6/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
@ -208,7 +208,7 @@ item/7/mesh_cast_shadow = 1
item/7/shapes = [] item/7/shapes = []
item/7/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/7/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
item/7/navigation_layers = 1 item/7/navigation_layers = 1
item/7/preview = SubResource("ImageTexture_qyo1s") item/7/preview = SubResource("ImageTexture_ox4k0")
item/8/name = "chara_active_button01" item/8/name = "chara_active_button01"
item/8/mesh = ExtResource("9_6lu4i") item/8/mesh = ExtResource("9_6lu4i")
item/8/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/8/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,43 @@
[gd_resource type="Animation" load_steps=2 format=3 uid="uid://cnu2kgflqd1i3"]
[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="1_a4oek"]
[resource]
resource_name = "hero01_combo01_1"
length = 0.8
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("View:sprite_frames")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("1_a4oek")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("View:animation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": ["long_attack02"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("View:frame")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7]
}

@ -37,7 +37,7 @@ tracks/2/path = NodePath("Status:break_level")
tracks/2/interp = 1 tracks/2/interp = 1
tracks/2/loop_wrap = true tracks/2/loop_wrap = true
tracks/2/keys = { tracks/2/keys = {
"times": PackedFloat32Array(0, 0.3, 0.7), "times": PackedFloat32Array(0, 0.5, 0.7),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 1, "update": 1,
"values": [0, 3, 4] "values": [0, 3, 4]
@ -49,7 +49,7 @@ tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1 tracks/3/interp = 1
tracks/3/loop_wrap = true tracks/3/loop_wrap = true
tracks/3/keys = { tracks/3/keys = {
"times": PackedFloat32Array(0.1, 0.3), "times": PackedFloat32Array(0.1, 0.2),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [-0.5, -1.0] "values": [-0.5, -1.0]
@ -61,7 +61,7 @@ tracks/4/path = NodePath("Status:skill_move_speed")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/keys = { tracks/4/keys = {
"times": PackedFloat32Array(0.1, 0.3), "times": PackedFloat32Array(0.1, 0.4),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [8.0, 0.0] "values": [8.0, 0.0]
@ -94,29 +94,27 @@ tracks/6/keys = {
"method": &"cast_attack_particle1" "method": &"cast_attack_particle1"
}] }]
} }
tracks/7/type = "method" tracks/7/type = "value"
tracks/7/imported = false tracks/7/imported = false
tracks/7/enabled = true tracks/7/enabled = true
tracks/7/path = NodePath("Battle") tracks/7/path = NodePath("View:frame")
tracks/7/interp = 1 tracks/7/interp = 1
tracks/7/loop_wrap = true tracks/7/loop_wrap = true
tracks/7/keys = { tracks/7/keys = {
"times": PackedFloat32Array(0.4), "times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"values": [{ "update": 1,
"args": [], "values": [0, 1, 2, 3, 4, 5, 6, 7, 8]
"method": &"stop"
}]
} }
tracks/8/type = "value" tracks/8/type = "value"
tracks/8/imported = false tracks/8/imported = false
tracks/8/enabled = true tracks/8/enabled = true
tracks/8/path = NodePath("View:frame") tracks/8/path = NodePath("Status:is_speed_y_freeze")
tracks/8/interp = 1 tracks/8/interp = 1
tracks/8/loop_wrap = true tracks/8/loop_wrap = true
tracks/8/keys = { tracks/8/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8), "times": PackedFloat32Array(0, 0.4),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8] "values": [true, false]
} }

@ -0,0 +1,94 @@
[gd_resource type="Animation" load_steps=2 format=3 uid="uid://cwku3kd0i7tlt"]
[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="1_5kswr"]
[resource]
resource_name = "hero01_soul_slash"
length = 0.8
step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("View:sprite_frames")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [ExtResource("1_5kswr")]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("View:animation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": ["long_attack02"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("View:frame")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Status:break_level")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 3, 4]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Status:speed_up_rate")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.1, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [-0.5, -1.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Status:skill_move_speed")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(-7.45058e-09, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [2.0, 0.0]
}
tracks/6/type = "method"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Effect")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0.1),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"cast_attack_particle1"
}]
}

@ -1,4 +1,4 @@
[gd_resource type="AnimationLibrary" load_steps=59 format=3 uid="uid://croik07a1qko5"] [gd_resource type="AnimationLibrary" load_steps=61 format=3 uid="uid://croik07a1qko5"]
[ext_resource type="Animation" uid="uid://t01a4jvp8srr" path="res://resource/skill_animation/hero01_fist_attack01.tres" id="1_4bwwm"] [ext_resource type="Animation" uid="uid://t01a4jvp8srr" path="res://resource/skill_animation/hero01_fist_attack01.tres" id="1_4bwwm"]
[ext_resource type="Animation" uid="uid://cfapnjkj5dkws" path="res://resource/skill_animation/hero01_basic_flash.tres" id="1_46f01"] [ext_resource type="Animation" uid="uid://cfapnjkj5dkws" path="res://resource/skill_animation/hero01_basic_flash.tres" id="1_46f01"]
@ -28,6 +28,7 @@
[ext_resource type="Animation" uid="uid://bl2o7f7akp6if" path="res://resource/skill_animation/hero01_basic_flash_back.tres" id="5_u1e1p"] [ext_resource type="Animation" uid="uid://bl2o7f7akp6if" path="res://resource/skill_animation/hero01_basic_flash_back.tres" id="5_u1e1p"]
[ext_resource type="Animation" uid="uid://d1f7iluo8ejne" path="res://resource/skill_animation/hero01_common_skill03.tres" id="7_05hi3"] [ext_resource type="Animation" uid="uid://d1f7iluo8ejne" path="res://resource/skill_animation/hero01_common_skill03.tres" id="7_05hi3"]
[ext_resource type="Animation" uid="uid://iprcbf277rf4" path="res://resource/skill_animation/hero01_long_skill02.tres" id="7_ui68j"] [ext_resource type="Animation" uid="uid://iprcbf277rf4" path="res://resource/skill_animation/hero01_long_skill02.tres" id="7_ui68j"]
[ext_resource type="Animation" uid="uid://cnu2kgflqd1i3" path="res://resource/skill_animation/hero01_combo01_1.tres" id="8_gurgh"]
[ext_resource type="Animation" uid="uid://chj3rlh6krt66" path="res://resource/skill_animation/hero01_fist_air_attack01.tres" id="8_svst8"] [ext_resource type="Animation" uid="uid://chj3rlh6krt66" path="res://resource/skill_animation/hero01_fist_air_attack01.tres" id="8_svst8"]
[ext_resource type="Animation" uid="uid://dia1xwl6foafg" path="res://resource/skill_animation/hero01_fist_air_attack02.tres" id="9_0fycy"] [ext_resource type="Animation" uid="uid://dia1xwl6foafg" path="res://resource/skill_animation/hero01_fist_air_attack02.tres" id="9_0fycy"]
[ext_resource type="Animation" uid="uid://dfe8krunqdf3m" path="res://resource/skill_animation/hero01_fist_air_attack03.tres" id="10_te03d"] [ext_resource type="Animation" uid="uid://dfe8krunqdf3m" path="res://resource/skill_animation/hero01_fist_air_attack03.tres" id="10_te03d"]
@ -58,6 +59,7 @@
[ext_resource type="Animation" uid="uid://co8bivpp1fm6g" path="res://resource/skill_animation/monster03_slash03.tres" id="46_litb8"] [ext_resource type="Animation" uid="uid://co8bivpp1fm6g" path="res://resource/skill_animation/monster03_slash03.tres" id="46_litb8"]
[ext_resource type="Animation" uid="uid://qcmj7d5pg6lw" path="res://resource/skill_animation/hero01_short_skill01.tres" id="50_1hav4"] [ext_resource type="Animation" uid="uid://qcmj7d5pg6lw" path="res://resource/skill_animation/hero01_short_skill01.tres" id="50_1hav4"]
[ext_resource type="Animation" uid="uid://b3fuombjh57oj" path="res://resource/skill_animation/hero01_short_stab01.tres" id="51_44mwa"] [ext_resource type="Animation" uid="uid://b3fuombjh57oj" path="res://resource/skill_animation/hero01_short_stab01.tres" id="51_44mwa"]
[ext_resource type="Animation" uid="uid://cwku3kd0i7tlt" path="res://resource/skill_animation/hero01_soul_slash.tres" id="57_1idx1"]
[resource] [resource]
_data = { _data = {
@ -68,6 +70,7 @@ _data = {
&"hero01_combo0101": ExtResource("3_dkedy"), &"hero01_combo0101": ExtResource("3_dkedy"),
&"hero01_combo0102": ExtResource("4_dc8mt"), &"hero01_combo0102": ExtResource("4_dc8mt"),
&"hero01_combo0103": ExtResource("5_o144c"), &"hero01_combo0103": ExtResource("5_o144c"),
&"hero01_combo01_1": ExtResource("8_gurgh"),
&"hero01_common_skill0101": ExtResource("1_vt4qf"), &"hero01_common_skill0101": ExtResource("1_vt4qf"),
&"hero01_common_skill0102": ExtResource("2_8l02x"), &"hero01_common_skill0102": ExtResource("2_8l02x"),
&"hero01_common_skill0103": ExtResource("3_ily05"), &"hero01_common_skill0103": ExtResource("3_ily05"),
@ -116,6 +119,7 @@ _data = {
&"hero01_short_skill01": ExtResource("50_1hav4"), &"hero01_short_skill01": ExtResource("50_1hav4"),
&"hero01_short_stab01": ExtResource("51_44mwa"), &"hero01_short_stab01": ExtResource("51_44mwa"),
&"hero01_slash01": ExtResource("38_lyels"), &"hero01_slash01": ExtResource("38_lyels"),
&"hero01_soul_slash": ExtResource("57_1idx1"),
&"monster03_slash01": ExtResource("45_s1ue4"), &"monster03_slash01": ExtResource("45_s1ue4"),
&"monster03_slash02": ExtResource("45_1vnur"), &"monster03_slash02": ExtResource("45_1vnur"),
&"monster03_slash03": ExtResource("46_litb8") &"monster03_slash03": ExtResource("46_litb8")

@ -4,7 +4,7 @@
[ext_resource type="Script" uid="uid://cms637d0jt6sk" path="res://script/character/hitbox.gd" id="2_6xf87"] [ext_resource type="Script" uid="uid://cms637d0jt6sk" path="res://script/character/hitbox.gd" id="2_6xf87"]
[ext_resource type="Script" uid="uid://bfi4gneebe3oq" path="res://script/character/status.gd" id="2_txdip"] [ext_resource type="Script" uid="uid://bfi4gneebe3oq" path="res://script/character/status.gd" id="2_txdip"]
[ext_resource type="Script" uid="uid://cnaqs44siwa45" path="res://script/character/move.gd" id="4_66r53"] [ext_resource type="Script" uid="uid://cnaqs44siwa45" path="res://script/character/move.gd" id="4_66r53"]
[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="4_sox5o"] [ext_resource type="SpriteFrames" uid="uid://dhfqj1dxldqao" path="res://resource/animation/character/hero01_long_skill01.aseprite" id="4_sox5o"]
[ext_resource type="Script" uid="uid://c247mf44qb3uf" path="res://script/character/view.gd" id="4_vijjv"] [ext_resource type="Script" uid="uid://c247mf44qb3uf" path="res://script/character/view.gd" id="4_vijjv"]
[ext_resource type="Script" uid="uid://c24is3uqqcmcn" path="res://script/character/skill.gd" id="6_h4xqy"] [ext_resource type="Script" uid="uid://c24is3uqqcmcn" path="res://script/character/skill.gd" id="6_h4xqy"]
[ext_resource type="AnimationLibrary" uid="uid://croik07a1qko5" path="res://resource/skill_animation_library/animation_library.tres" id="6_pakq5"] [ext_resource type="AnimationLibrary" uid="uid://croik07a1qko5" path="res://resource/skill_animation_library/animation_library.tres" id="6_pakq5"]
@ -137,7 +137,7 @@ gi_mode = 0
pixel_size = 0.02 pixel_size = 0.02
alpha_cut = 1 alpha_cut = 1
sprite_frames = ExtResource("4_sox5o") sprite_frames = ExtResource("4_sox5o")
animation = &"fist_skill_special01" animation = &"long_skill01"
script = ExtResource("4_vijjv") script = ExtResource("4_vijjv")
[node name="Move" type="Node3D" parent="."] [node name="Move" type="Node3D" parent="."]

@ -1,10 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://cxj65e7teugyw"]
[ext_resource type="Texture2D" uid="uid://bd7kst3jrrma5" path="res://render/texture/decal/readiness_bullet.png" id="1_30j48"]
[node name="ReadinessHero" type="Decal"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0)
size = Vector3(1, 1, 1)
texture_emission = ExtResource("1_30j48")
normal_fade = 0.999
cull_mask = 1

@ -6,5 +6,5 @@
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0)
size = Vector3(1, 1, 1) size = Vector3(1, 1, 1)
texture_emission = ExtResource("1_msawg") texture_emission = ExtResource("1_msawg")
normal_fade = 0.999 normal_fade = 0.5
cull_mask = 1 cull_mask = 1

@ -1,12 +1,12 @@
[gd_scene load_steps=3 format=3 uid="uid://cq03usrdvv43o"] [gd_scene load_steps=3 format=3 uid="uid://cq03usrdvv43o"]
[ext_resource type="Texture2D" uid="uid://usgu2suw017u" path="res://render/texture/decal/readiness_lock.png" id="1_1hvll"] [ext_resource type="Texture2D" uid="uid://usgu2suw017u" path="res://render/texture/decal/readiness_lock.png" id="1_1hvll"]
[ext_resource type="Script" path="res://script/effect/readiness_lock.gd" id="2_hf851"] [ext_resource type="Script" uid="uid://cvca180vohw2i" path="res://script/effect/readiness_lock.gd" id="2_hf851"]
[node name="ReadinessLock" type="Decal"] [node name="ReadinessLock" type="Decal"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0)
size = Vector3(1, 1, 1) size = Vector3(1, 1, 1)
texture_emission = ExtResource("1_1hvll") texture_emission = ExtResource("1_1hvll")
normal_fade = 0.999 normal_fade = 0.5
cull_mask = 1 cull_mask = 1
script = ExtResource("2_hf851") script = ExtResource("2_hf851")

@ -6,5 +6,5 @@
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0)
size = Vector3(1, 1, 1) size = Vector3(1, 1, 1)
texture_emission = ExtResource("1_2mpei") texture_emission = ExtResource("1_2mpei")
normal_fade = 0.999 normal_fade = 0.5
cull_mask = 1 cull_mask = 1

@ -1,10 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://dj2bag42rmhvq"]
[ext_resource type="Texture2D" uid="uid://xtipei54v35i" path="res://render/texture/decal/readiness_monster.png" id="1_hfi0a"]
[node name="ReadinessHero" type="Decal"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0)
size = Vector3(1, 1, 1)
texture_emission = ExtResource("1_hfi0a")
normal_fade = 0.999
cull_mask = 1

File diff suppressed because one or more lines are too long

@ -136,6 +136,9 @@ func refresh_mesh_library(path_list: Array, from_editor_tool: bool = false):
var mesh_library_chara_id_list: Array[int] = [] var mesh_library_chara_id_list: Array[int] = []
var material_grid_block: Material = load("res://render/material/level_grid_block.tres") as Material var material_grid_block: Material = load("res://render/material/level_grid_block.tres") as Material
var material_grid_mark_white: Material = load("res://render/material/level_grid_mark_white.tres") as Material
var material_grid_mark_black: Material = load("res://render/material/level_grid_mark_black.tres") as Material
var material_grid_mark_green: Material = load("res://render/material/level_grid_mark_green.tres") as Material
var reimport_files: Array[String] = [] var reimport_files: Array[String] = []
for file_name_full in path_list: for file_name_full in path_list:
@ -172,6 +175,12 @@ func refresh_mesh_library(path_list: Array, from_editor_tool: bool = false):
if has_material: if has_material:
var material_set: Material = material_grid_block var material_set: Material = material_grid_block
if mesh_name.contains("mark_black"):
material_set = material_grid_mark_black
elif mesh_name.contains("mark_white"):
material_set = material_grid_mark_white
elif mesh_name.contains("mark_green"):
material_set = material_grid_mark_green
if from_editor_tool: if from_editor_tool:
reimport_files.append(file_name_full) reimport_files.append(file_name_full)
else: else:

@ -505,3 +505,15 @@ func on_hero01_fist_skill_charging_release():
match status.charging_level: match status.charging_level:
0: skill.cast_skill_by_name("hero01_fist_skill_charging01", status.move_dir) 0: skill.cast_skill_by_name("hero01_fist_skill_charging01", status.move_dir)
_: skill.cast_skill_by_name("hero01_fist_skill_charging02", status.move_dir) _: skill.cast_skill_by_name("hero01_fist_skill_charging02", status.move_dir)
func on_hero01_soul_slash_cast():
if not status.sub_character_id:
return
var sub_char: Character = Global.character_mgr.get_character(status.sub_character_id)
if not sub_char:
return
sub_char.set_pos(character.pos())
var skill_cfg = skill.get_skill_by_name("hero01_long_skill01")
if not skill_cfg:
return
sub_char.cast_skill(skill_cfg, status.skill_move_dir)

@ -46,13 +46,13 @@ func set_body_scale(cfg: CharacterCfg) -> void:
cfg = status.cfg cfg = status.cfg
if not cfg: if not cfg:
return return
var height: float = Setting.pixel_size * cfg.sprite_height var height: float = Setting.pixel_size * cfg.sprite_height
var width: float = Setting.pixel_size * cfg.sprite_width var width: float = Setting.pixel_size * cfg.sprite_width
var body_scale: Vector3 = Vector3(width, height, width) var body_scale: Vector3 = Vector3(width, height, width)
var half_height: float = height / 2 var half_height: float = height / 2
var center_height: float = Setting.pixel_size * 27 var center_height: float = Setting.pixel_size * 27
collision.position = Vector3(0, half_height, 0) collision.position = Vector3(0, half_height, 0)
var shape: Shape3D = collision.shape var shape: Shape3D = collision.shape
if shape is CapsuleShape3D: if shape is CapsuleShape3D:
var new_shape: CapsuleShape3D = CapsuleShape3D.new() var new_shape: CapsuleShape3D = CapsuleShape3D.new()
new_shape.radius = width new_shape.radius = width
@ -62,8 +62,8 @@ func set_body_scale(cfg: CharacterCfg) -> void:
collision.scale = body_scale collision.scale = body_scale
pushbox.position = Vector3(0, half_height, 0) pushbox.position = Vector3(0, half_height, 0)
pushbox.scale = body_scale pushbox.scale = body_scale
status.basic_offset = Vector3(0, center_height, randf()*0.001) status.basic_offset = Vector3(0, center_height, randf() * 0.001)
status.ui_offset = Vector3(0, height*1.25, 0) status.ui_offset = Vector3(0, height * 1.25, 0)
status.ui_center_offset = Vector3(0, half_height, 0) status.ui_center_offset = Vector3(0, half_height, 0)
status.radius = width status.radius = width
status.height = height status.height = height
@ -77,43 +77,43 @@ func set_material(material: ShaderMaterial, material_sub: ShaderMaterial):
# view.material_override.next_pass = material_sub # view.material_override.next_pass = material_sub
#==getter== #==getter==
func id()->int: return status.id func id() -> int: return status.id
func cfg()->CharacterCfg: return status.cfg func cfg() -> CharacterCfg: return status.cfg
func team()->Enum.ETeam: return status.team func team() -> Enum.ETeam: return status.team
func is_player()->bool: return id() == Global.character_mgr.get_player_id() func is_player() -> bool: return id() == Global.character_mgr.get_player_id()
func pos2D()->Vector2: return Vector2(position.x, position.z) func pos2D() -> Vector2: return Vector2(position.x, position.z)
func pos()->Vector3: return position func pos() -> Vector3: return position
func radius()->float: return status.radius func radius() -> float: return status.radius
func height()->float: return status.height func height() -> float: return status.height
func view_pos()->Vector3: return position + view.position func view_pos() -> Vector3: return position + view.position
func ui_pos()->Vector3: return position + status.ui_offset func ui_pos() -> Vector3: return position + status.ui_offset
func ui_pos_center()->Vector3: return position + status.ui_center_offset func ui_pos_center() -> Vector3: return position + status.ui_center_offset
func target()->int: return status.target func target() -> int: return status.target
func is_right()->bool: return status.is_right func is_right() -> bool: return status.is_right
#==interface== #==interface==
@ -158,7 +158,7 @@ func add_buff(buff_name: String, duration: float, ignore_pause: bool = false): b
func remove_buff(buff_name: String): buff.remove_buff(buff_name) func remove_buff(buff_name: String): buff.remove_buff(buff_name)
func has_buff(buff_name: String)->bool: return buff.has_buff(buff_name) func has_buff(buff_name: String) -> bool: return buff.has_buff(buff_name)
func set_hit_move(hit_back_dir: Vector2, hit_back_speed: float, hit_up_speed: float): func set_hit_move(hit_back_dir: Vector2, hit_back_speed: float, hit_up_speed: float):
@ -168,7 +168,7 @@ func set_hit_move(hit_back_dir: Vector2, hit_back_speed: float, hit_up_speed: fl
func set_pause_time(pause_time: float): func set_pause_time(pause_time: float):
status.pause_time=pause_time status.pause_time = pause_time
add_buff("pause", pause_time) add_buff("pause", pause_time)
@ -176,6 +176,12 @@ func add_ai_skill_order(order: Status.SkillOrder):
status.ai_skill_order.append(order) status.ai_skill_order.append(order)
func cast_skill_by_name(skill_name: String, cast_dir: Vector2) -> void:
skill.cast_skill_by_name(skill_name, cast_dir)
func cast_skill(skill_cfg: SkillCfg, cast_dir: Vector2) -> void:
skill.cast_skill(skill_cfg, cast_dir)
func cancel_skill(): func cancel_skill():
skill.cancel_skill() skill.cancel_skill()
@ -210,7 +216,7 @@ func cost_mp_sub():
func get_break_level_def() -> int: func get_break_level_def() -> int:
var shield: float = get_status("shield") var shield: float = get_status("shield")
var break_level_def: int = cfg().shield.break_level_on if shield > 0 else cfg().shield.break_level_off var break_level_def: int = cfg().shield.break_level_on if shield > 0 else cfg().shield.break_level_off
break_level_def += get_status("skill_break_level_add") break_level_def += get_status("skill_break_level_add")
return break_level_def return break_level_def

@ -24,15 +24,7 @@ func _ready():
add_weapon(load("res://config/weapon/short.tres") as WeaponCfg) add_weapon(load("res://config/weapon/short.tres") as WeaponCfg)
add_weapon(load("res://config/weapon/fist.tres") as WeaponCfg) add_weapon(load("res://config/weapon/fist.tres") as WeaponCfg)
core.set_active_core(0, load("res://config/core/hero01_remote01.tres") as CoreCfg) core.set_active_core(0, load("res://config/core/hero01_soul_slash.tres") as CoreCfg)
core.set_active_core(1, load("res://config/core/monster03_slash01.tres") as CoreCfg)
core.set_active_core(2, load("res://config/core/monster03_slash02.tres") as CoreCfg)
core.set_active_core(3, load("res://config/core/monster03_slash03.tres") as CoreCfg)
core.set_active_core(4, load("res://config/core/hero01_remote01.tres") as CoreCfg)
core.set_active_core(5, load("res://config/core/monster03_slash01.tres") as CoreCfg)
core.set_active_core(6, load("res://config/core/monster03_slash02.tres") as CoreCfg)
core.set_active_core(7, load("res://config/core/monster03_slash03.tres") as CoreCfg)
func _process(delta): func _process(delta):

@ -10,8 +10,8 @@ class_name Skill
@onready var battle: Battle = (%Battle as Battle) @onready var battle: Battle = (%Battle as Battle)
@onready var battle_attack_area: BattleAttackArea = (%BattleAttackArea as BattleAttackArea) @onready var battle_attack_area: BattleAttackArea = (%BattleAttackArea as BattleAttackArea)
var skill_dict: Dictionary = {} #name -> skill var skill_dict: Dictionary = {} # name -> skill
var skill_map: Dictionary = {} #input -> skillCfg[] var skill_map: Dictionary = {} # input -> skillCfg[]
func init(): func init():
@ -31,6 +31,8 @@ func remove_skill(action: String, skillCfg: SkillCfg) -> void:
skill_map[action].filter(func(cfg): return cfg != skillCfg) skill_map[action].filter(func(cfg): return cfg != skillCfg)
skill_dict.erase(skillCfg.get_res_name()) skill_dict.erase(skillCfg.get_res_name())
func get_skill_by_name(skill_name: String) -> SkillCfg:
return skill_dict.get(skill_name, null)
func _process(_delta): func _process(_delta):
if status.is_skill_running and status.is_pause == is_playing(): if status.is_skill_running and status.is_pause == is_playing():
@ -66,10 +68,10 @@ func cast_skill_check(cfg: SkillCfg, break_level: Enum.EBreakLevel = Enum.EBreak
if cfg.break_level > break_level: if cfg.break_level > break_level:
return false return false
#检查姿态 #检查姿态
var stance_from: int = cfg.stance_from var stance_from: int = cfg.stance_from
var check_any_ground: bool = (stance_from == Enum.EStance.GroundAny) and status.is_on_floor var check_any_ground: bool = (stance_from == Enum.EStance.GroundAny) and status.is_on_floor
var check_any_air: bool = (stance_from == Enum.EStance.AirAny) and not status.is_on_floor var check_any_air: bool = (stance_from == Enum.EStance.AirAny) and not status.is_on_floor
var check_any: bool = (stance_from == Enum.EStance.Any) or check_any_ground or check_any_air var check_any: bool = (stance_from == Enum.EStance.Any) or check_any_ground or check_any_air
if (stance_from != int(status.stance)) and not check_any: if (stance_from != int(status.stance)) and not check_any:
return false return false
#检查落地姿态 #检查落地姿态
@ -106,7 +108,7 @@ func cast_skill_by_name(skill_name: String, cast_dir: Vector2) -> void:
cast_skill(cfg, cast_dir) cast_skill(cfg, cast_dir)
func cast_skill(cfg: SkillCfg, cast_dir: Vector2, action_key: String = ""): func cast_skill(cfg: SkillCfg, cast_dir: Vector2, action_key: String = "") -> void:
var is_no_dir: bool = cast_dir.length() == 0 var is_no_dir: bool = cast_dir.length() == 0
if is_no_dir: if is_no_dir:
cast_dir = Vector2.RIGHT if status.is_right else Vector2.LEFT cast_dir = Vector2.RIGHT if status.is_right else Vector2.LEFT
@ -142,7 +144,7 @@ func cast_skill(cfg: SkillCfg, cast_dir: Vector2, action_key: String = ""):
status.stance = cfg.stance_to status.stance = cfg.stance_to
status.is_charging = cfg.is_charging status.is_charging = cfg.is_charging
status.skill_action_key = action_key status.skill_action_key = action_key
status.set_skill_break_level_add(cfg.mp_cost) #todo status.set_skill_break_level_add(cfg.mp_cost) # todo
character.set_body_scale(cfg.get_owner()) character.set_body_scale(cfg.get_owner())
if cfg.is_charging: if cfg.is_charging:
buff.add_buff("charging", -1) buff.add_buff("charging", -1)
@ -229,18 +231,18 @@ func _frame_forward() -> void:
func _frame_back(frame_offset: int) -> void: func _frame_back(frame_offset: int) -> void:
if not current_animation: if not current_animation:
return return
var frame: int = int((current_animation_position + 0.001) / Setting.animation_frame_rate) - frame_offset var frame: int = int((current_animation_position + 0.001) / Setting.animation_frame_rate) - frame_offset
frame = max(0, frame) frame = max(0, frame)
var frame_pos: float = frame * Setting.animation_frame_rate var frame_pos: float = frame * Setting.animation_frame_rate
seek(frame_pos- Setting.animation_frame_rate * 0.8, true, true) seek(frame_pos - Setting.animation_frame_rate * 0.8, true, true)
func on_cast_sub_character() -> void: func on_cast_sub_character() -> void:
var cfg: SkillCfg = status.skill_cfg var cfg: SkillCfg = status.skill_cfg
if not cfg or not cfg.sub_character: if not cfg or not cfg.sub_character:
return return
var pos: Vector3 = character.pos() var pos: Vector3 = character.pos()
var dir: Vector2 = status.skill_dir var dir: Vector2 = status.skill_dir
var sub: Character = Global.character_mgr.create_character(cfg.sub_character, status.team, pos, dir, status.id) var sub: Character = Global.character_mgr.create_character(cfg.sub_character, status.team, pos, dir, status.id)
if sub: if sub:
sub.set_status("target", status.target) sub.set_status("target", status.target)

@ -34,7 +34,6 @@ var refresh_animation: Callable = check_animation
var attack_particle: Dictionary = {} var attack_particle: Dictionary = {}
var owner: CharacterCfg var owner: CharacterCfg
func check_animation() -> bool: func check_animation() -> bool:
var res_name: String = get_res_name() var res_name: String = get_res_name()
var path: String = "res://resource/skill_animation/%s.tres" % res_name var path: String = "res://resource/skill_animation/%s.tres" % res_name
@ -90,3 +89,4 @@ func get_owner() -> CharacterCfg:
if ResourceLoader.exists(path): if ResourceLoader.exists(path):
owner = load(path) as CharacterCfg owner = load(path) as CharacterCfg
return owner return owner

@ -6,11 +6,17 @@ var born_pos: Vector3
@onready var grid_block_material: Material = load("res://render/material/level_grid_block.tres") as Material @onready var grid_block_material: Material = load("res://render/material/level_grid_block.tres") as Material
@onready var grass_material: Material = load("res://render/material/level_grass.tres") as Material @onready var grass_material: Material = load("res://render/material/level_grass.tres") as Material
@onready var material_grid_mark_white: Material = load("res://render/material/level_grid_mark_white.tres") as Material
@onready var material_grid_mark_black: Material = load("res://render/material/level_grid_mark_black.tres") as Material
@onready var material_grid_mark_green: Material = load("res://render/material/level_grid_mark_green.tres") as Material
func init() -> void: func init() -> void:
grid_block_material.set_shader_parameter("is_target", true) grid_block_material.set_shader_parameter("is_target", true)
grid_block_material.set_shader_parameter("is_focus", true) grid_block_material.set_shader_parameter("is_focus", true)
material_grid_mark_white.set_shader_parameter("is_open", true)
material_grid_mark_black.set_shader_parameter("is_open", true)
material_grid_mark_green.set_shader_parameter("is_open", true)
for level_instance in level_instance_list: for level_instance in level_instance_list:
level_instance.init_level_character() level_instance.init_level_character()
@ -43,5 +49,5 @@ func get_born_pos() -> Vector3:
func set_player_position(pos: Vector3) -> void: func set_player_position(pos: Vector3) -> void:
grid_block_material.set_shader_parameter("target_position", pos) grid_block_material.set_shader_parameter("target_position_y", pos.y)
grass_material.set_shader_parameter("character_position", pos) grass_material.set_shader_parameter("character_position", pos)

@ -148,7 +148,7 @@ func set_focus_editor() -> void:
var level_range: CSGBox3D = $LevelRange as CSGBox3D var level_range: CSGBox3D = $LevelRange as CSGBox3D
var level_size: Vector3 = level_range.size var level_size: Vector3 = level_range.size
var focus_min: Vector3 = get_global_position() var focus_min: Vector3 = get_global_position()
var focus_max: Vector3 = get_global_position() + level_size - Vector3(0, Setting.pixel_size * Setting.grid_pixel_size, Setting.pixel_size * Setting.grid_pixel_size) var focus_max: Vector3 = get_global_position() + level_size - Vector3.ONE * Setting.pixel_size * Setting.grid_pixel_size
grid_block_material.set_shader_parameter("focus_min", focus_min) grid_block_material.set_shader_parameter("focus_min", focus_min)
grid_block_material.set_shader_parameter("focus_max", focus_max) grid_block_material.set_shader_parameter("focus_max", focus_max)
@ -156,9 +156,11 @@ func set_focus() -> void:
var level_range: CSGBox3D = $LevelRange as CSGBox3D var level_range: CSGBox3D = $LevelRange as CSGBox3D
var level_size: Vector3 = level_range.size var level_size: Vector3 = level_range.size
var focus_min: Vector3 = get_global_position() var focus_min: Vector3 = get_global_position()
var focus_max: Vector3 = get_global_position() + level_size + Vector3(0, Setting.pixel_size * Setting.grid_pixel_size, Setting.pixel_size * Setting.grid_pixel_size) var focus_max: Vector3 = get_global_position() + level_size + Vector3.ONE * Setting.pixel_size * Setting.grid_pixel_size
var show_max: Vector3 = get_global_position() + level_size - Vector3.ONE * Setting.pixel_size * Setting.grid_pixel_size
grid_block_material.set_shader_parameter("focus_min", focus_min) grid_block_material.set_shader_parameter("focus_min", focus_min)
grid_block_material.set_shader_parameter("focus_max", focus_max) grid_block_material.set_shader_parameter("focus_max", focus_max)
grid_block_material.set_shader_parameter("target_level_top_y", show_max.y)
func init_level_character() -> void: func init_level_character() -> void:

@ -32,7 +32,7 @@ func init():
var level_id_list: Array[Vector3i] = get_level_id_list(level_instance.get_global_position(), level_instance.size) var level_id_list: Array[Vector3i] = get_level_id_list(level_instance.get_global_position(), level_instance.size)
for level_id in level_id_list: for level_id in level_id_list:
if level_id in level_instance_dict: if level_id in level_instance_dict:
print("关卡id重复", level_id) print("关卡id重复", level_id, level_instance_dict[level_id].get_name())
level_instance_dict[level_id] = level_instance level_instance_dict[level_id] = level_instance
level.init() level.init()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Loading…
Cancel
Save