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)
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_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: 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_name: String = mesh_library.get_item_name(item_id)
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()):
if not mesh.surface_get_material(surface_id) == material_set:
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
],
"path_to": [
{
"name": "破碎遗迹",
"key_need": "单向门",
"is_one_way": true
},
{
"name": "冥界洞穴右"
},
@ -181,6 +176,22 @@
"path_to": []
},
"冥界洞穴左": {
"pos": [
4,
4
],
"path_to": [
{
"name": "冥界洞穴下"
},
{
"name": "破碎遗迹",
"key_need": "单向门",
"is_one_way": true
}
]
},
"冥界洞穴下": {
"pos": [
4,
5
@ -570,8 +581,7 @@
"path_to": [
{
"name": "血池地狱",
"key_need": "单向门",
"is_one_way": true
"key_need": "激光"
},
{
"name": "战斗-空"
@ -651,7 +661,8 @@
"key_need": "锁链"
},
{
"name": "旧都下城"
"name": "旧都下城",
"key_need": "锁链"
},
{
"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")
ambient_light_source = 2
ambient_light_color = Color(1, 1, 1, 1)
ambient_light_energy = 0.15
ambient_light_energy = 0.1
tonemap_white = 2.39
ssil_enabled = true
ssil_intensity = 0.4

@ -5,4 +5,4 @@
[resource]
render_priority = 0
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="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://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://dyp1l3nr6d5rw" path="res://render/texture/particle/noise/noise3.png" id="6_a7ne0"]
[resource]
render_priority = 0
shader = ExtResource("1_ggegd")
shader_parameter/is_target = false
shader_parameter/is_focus = false
shader_parameter/target_position = Vector3(0, 1.28, 1)
shader_parameter/focus_min = Vector3(50.56, 5.76, -0.640001)
shader_parameter/focus_max = Vector3(64.64, 13.44, 7.04)
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("2_mif3q")
shader_parameter/tex_noise2 = ExtResource("3_k18qr")
shader_parameter/tex_noise3 = ExtResource("2_mif3q")
shader_parameter/tex_noise_sub = ExtResource("3_k18qr")
shader_parameter/tex_noise_sub_color = Color(0.0666667, 0.639216, 0.0823529, 0.227451)
shader_parameter/tex_noise_sub = ExtResource("6_a7ne0")
shader_parameter/tex_material = ExtResource("2_ga6wc")
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/ray2_density = 30.0
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/seed = 5.0

@ -1,20 +1,24 @@
shader_type spatial;
uniform bool is_target = 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_max = vec3(0,0,0);
uniform sampler2D tex_noise1 : source_color;
uniform sampler2D tex_noise2 : source_color;
uniform sampler2D tex_noise3 : 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 vec2 uv1;
varying vec2 uv2;
varying vec2 uv3;
varying vec2 uv_sub;
varying vec2 uv_material;
void vertex()
{
@ -22,8 +26,8 @@ void vertex()
vec2 local_uv = vec2(world_position.x,world_position.y + world_position.z);
uv1 = local_uv / 32.0;
uv2 = local_uv / 32.0;
uv3 = local_uv / 8.0;
uv_sub = local_uv / 16.0;
uv_sub = local_uv / 4.0;
uv_material = local_uv / 8.0;
}
bool is_in_focus(vec3 f_min,vec3 f_max){
@ -45,7 +49,7 @@ void fragment() {
}else{
float brightness = 1.0;
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);
float rate = clamp(1.0-offset_y/4.48,0.0,1.0);
brightness = rate;
@ -63,20 +67,37 @@ void fragment() {
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 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_sub = texture(tex_noise_sub,floor(uv_sub /0.02) *0.02).r;
if (noise_value_sub > 0.2){
c.rgb = mix(c.rgb,tex_noise_sub_color.rgb,tex_noise_sub_color.a);
}else{
//材质纹理
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_value3 * 0.08;
}
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;
c.rgb = mix(c.rgb,vec3(0), noise_value_sub * sub_rate * sub_rate * 4.0);
vec3 normal_map = texture(tex_material_normal, floor(uv_material /0.0025) *0.0025).rgb;
normal_map.xy *= 0.2;
NORMAL = normalize(TANGENT * normal_map.x + BINORMAL * normal_map.y + NORMAL * normal_map.z);
//应用亮度
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;
if(is_light){
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
}
[sub_resource type="ImageTexture" id="ImageTexture_ihqx7"]
[sub_resource type="ImageTexture" id="ImageTexture_na7iv"]
image = SubResource("Image_jo1dj")
[sub_resource type="Image" id="Image_na7iv"]
@ -33,7 +33,7 @@ data = {
"width": 64
}
[sub_resource type="ImageTexture" id="ImageTexture_ox4k0"]
[sub_resource type="ImageTexture" id="ImageTexture_lh2qi"]
image = SubResource("Image_na7iv")
[sub_resource type="Image" id="Image_ihqx7"]
@ -93,7 +93,7 @@ data = {
"width": 64
}
[sub_resource type="ImageTexture" id="ImageTexture_unc8d"]
[sub_resource type="ImageTexture" id="ImageTexture_ssddp"]
image = SubResource("Image_r0af0")
[sub_resource type="Image" id="Image_lh2qi"]
@ -117,7 +117,7 @@ data = {
"width": 64
}
[sub_resource type="ImageTexture" id="ImageTexture_qyo1s"]
[sub_resource type="ImageTexture" id="ImageTexture_ox4k0"]
image = SubResource("Image_ssddp")
[sub_resource type="Image" id="Image_ox4k0"]
@ -152,7 +152,7 @@ item/0/mesh_cast_shadow = 1
item/0/shapes = []
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/preview = SubResource("ImageTexture_ihqx7")
item/0/preview = SubResource("ImageTexture_na7iv")
item/1/name = "chara_active_door01"
item/1/mesh = ExtResource("2_0kugy")
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/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
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/mesh = ExtResource("3_4g5pq")
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/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
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/mesh = ExtResource("7_cceh1")
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/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
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/mesh = ExtResource("9_6lu4i")
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/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.3, 0.7),
"times": PackedFloat32Array(0, 0.5, 0.7),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 3, 4]
@ -49,7 +49,7 @@ tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.1, 0.3),
"times": PackedFloat32Array(0.1, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [-0.5, -1.0]
@ -61,7 +61,7 @@ tracks/4/path = NodePath("Status:skill_move_speed")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.1, 0.3),
"times": PackedFloat32Array(0.1, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [8.0, 0.0]
@ -94,29 +94,27 @@ tracks/6/keys = {
"method": &"cast_attack_particle1"
}]
}
tracks/7/type = "method"
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Battle")
tracks/7/path = NodePath("View:frame")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0.4),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"stop"
}]
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8]
}
tracks/8/type = "value"
tracks/8/imported = false
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/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
"times": PackedFloat32Array(0, 0.4),
"transitions": PackedFloat32Array(1, 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://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://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://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://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"]
@ -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://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://cwku3kd0i7tlt" path="res://resource/skill_animation/hero01_soul_slash.tres" id="57_1idx1"]
[resource]
_data = {
@ -68,6 +70,7 @@ _data = {
&"hero01_combo0101": ExtResource("3_dkedy"),
&"hero01_combo0102": ExtResource("4_dc8mt"),
&"hero01_combo0103": ExtResource("5_o144c"),
&"hero01_combo01_1": ExtResource("8_gurgh"),
&"hero01_common_skill0101": ExtResource("1_vt4qf"),
&"hero01_common_skill0102": ExtResource("2_8l02x"),
&"hero01_common_skill0103": ExtResource("3_ily05"),
@ -116,6 +119,7 @@ _data = {
&"hero01_short_skill01": ExtResource("50_1hav4"),
&"hero01_short_stab01": ExtResource("51_44mwa"),
&"hero01_slash01": ExtResource("38_lyels"),
&"hero01_soul_slash": ExtResource("57_1idx1"),
&"monster03_slash01": ExtResource("45_s1ue4"),
&"monster03_slash02": ExtResource("45_1vnur"),
&"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://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="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://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"]
@ -137,7 +137,7 @@ gi_mode = 0
pixel_size = 0.02
alpha_cut = 1
sprite_frames = ExtResource("4_sox5o")
animation = &"fist_skill_special01"
animation = &"long_skill01"
script = ExtResource("4_vijjv")
[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)
size = Vector3(1, 1, 1)
texture_emission = ExtResource("1_msawg")
normal_fade = 0.999
normal_fade = 0.5
cull_mask = 1

@ -1,12 +1,12 @@
[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="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"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0)
size = Vector3(1, 1, 1)
texture_emission = ExtResource("1_1hvll")
normal_fade = 0.999
normal_fade = 0.5
cull_mask = 1
script = ExtResource("2_hf851")

@ -6,5 +6,5 @@
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0)
size = Vector3(1, 1, 1)
texture_emission = ExtResource("1_2mpei")
normal_fade = 0.999
normal_fade = 0.5
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 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] = []
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:
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:
reimport_files.append(file_name_full)
else:

@ -505,3 +505,15 @@ func on_hero01_fist_skill_charging_release():
match status.charging_level:
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)
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)

@ -62,8 +62,8 @@ func set_body_scale(cfg: CharacterCfg) -> void:
collision.scale = body_scale
pushbox.position = Vector3(0, half_height, 0)
pushbox.scale = body_scale
status.basic_offset = Vector3(0, center_height, randf()*0.001)
status.ui_offset = Vector3(0, height*1.25, 0)
status.basic_offset = Vector3(0, center_height, randf() * 0.001)
status.ui_offset = Vector3(0, height * 1.25, 0)
status.ui_center_offset = Vector3(0, half_height, 0)
status.radius = width
status.height = height
@ -77,43 +77,43 @@ func set_material(material: ShaderMaterial, material_sub: ShaderMaterial):
# view.material_override.next_pass = material_sub
#==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==
@ -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 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):
@ -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):
status.pause_time=pause_time
status.pause_time = 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)
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():
skill.cancel_skill()

@ -24,15 +24,7 @@ func _ready():
add_weapon(load("res://config/weapon/short.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(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)
core.set_active_core(0, load("res://config/core/hero01_soul_slash.tres") as CoreCfg)
func _process(delta):

@ -10,8 +10,8 @@ class_name Skill
@onready var battle: Battle = (%Battle as Battle)
@onready var battle_attack_area: BattleAttackArea = (%BattleAttackArea as BattleAttackArea)
var skill_dict: Dictionary = {} #name -> skill
var skill_map: Dictionary = {} #input -> skillCfg[]
var skill_dict: Dictionary = {} # name -> skill
var skill_map: Dictionary = {} # input -> skillCfg[]
func init():
@ -31,6 +31,8 @@ func remove_skill(action: String, skillCfg: SkillCfg) -> void:
skill_map[action].filter(func(cfg): return cfg != skillCfg)
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):
if status.is_skill_running and status.is_pause == is_playing():
@ -106,7 +108,7 @@ func cast_skill_by_name(skill_name: String, cast_dir: Vector2) -> void:
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
if is_no_dir:
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.is_charging = cfg.is_charging
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())
if cfg.is_charging:
buff.add_buff("charging", -1)
@ -232,7 +234,7 @@ func _frame_back(frame_offset: int) -> void:
var frame: int = int((current_animation_position + 0.001) / Setting.animation_frame_rate) - frame_offset
frame = max(0, frame)
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:

@ -34,7 +34,6 @@ var refresh_animation: Callable = check_animation
var attack_particle: Dictionary = {}
var owner: CharacterCfg
func check_animation() -> bool:
var res_name: String = get_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):
owner = load(path) as CharacterCfg
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 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:
grid_block_material.set_shader_parameter("is_target", 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:
level_instance.init_level_character()
@ -43,5 +49,5 @@ func get_born_pos() -> Vector3:
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)

@ -148,7 +148,7 @@ func set_focus_editor() -> void:
var level_range: CSGBox3D = $LevelRange as CSGBox3D
var level_size: Vector3 = level_range.size
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_max", focus_max)
@ -156,9 +156,11 @@ func set_focus() -> void:
var level_range: CSGBox3D = $LevelRange as CSGBox3D
var level_size: Vector3 = level_range.size
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_max", focus_max)
grid_block_material.set_shader_parameter("target_level_top_y", show_max.y)
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)
for level_id in level_id_list:
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.init()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Loading…
Cancel
Save