fix 关卡自动空气墙

master
chendian 9 months ago
parent 24b6616c09
commit 8c1c2f1721

@ -0,0 +1,18 @@
{
// 使 IntelliSense
//
// 访: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "GDScript: Launch Project",
"type": "godot",
"request": "launch",
"project": "${workspaceFolder}",
"debug_collisions": false,
"debug_paths": false,
"debug_navigation": false,
"additional_options": ""
}
]
}

@ -0,0 +1,3 @@
{
"godotTools.editorPath.godot4": "c:\\Users\\Administrator\\Desktop\\Godot_v4.4-beta1_win64.exe"
}

@ -1,4 +1,4 @@
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=9 format=3 uid="uid://dj7b6f02488hm"]
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=8 format=3 uid="uid://dj7b6f02488hm"]
[ext_resource type="Resource" uid="uid://by6jd5xqjml2m" path="res://config/attack/blunt_starfall_1.tres" id="1_dfu42"]
[ext_resource type="Resource" uid="uid://dq3pnbyfx4irr" path="res://config/attack_box/circle_foot.tres" id="2_doldq"]
@ -7,7 +7,6 @@
[ext_resource type="Animation" uid="uid://dxgqn5fa7aokj" path="res://resource/skill_animation/hero01_fist_air_skill_charging.tres" id="3_q461t"]
[ext_resource type="Resource" uid="uid://decgfcx2xsj8i" path="res://config/attack_box/circle_mid.tres" id="4_lpsn0"]
[ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="5_70pp4"]
[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="7_gkp4g"]
[resource]
script = ExtResource("2_mje6b")
@ -33,5 +32,4 @@ is_lock_x = false
is_lock_x_move = false
range = 0.0
warn_type = 0
sprite_frames = ExtResource("7_gkp4g")
animation_name = "fist_air_skill_charging"

@ -1,10 +1,9 @@
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://0n2jnkdrwa2l"]
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=6 format=3 uid="uid://0n2jnkdrwa2l"]
[ext_resource type="Resource" uid="uid://bwe8xlgfhx1gl" path="res://config/attack/blunt_heavy_hit_blow.tres" id="1_5lwhl"]
[ext_resource type="Resource" uid="uid://bqejjllfy03h3" path="res://config/attack_box/box_normal.tres" id="2_g7bbg"]
[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="2_ym7q1"]
[ext_resource type="Animation" uid="uid://b2xdmgnem1h4g" path="res://resource/skill_animation/hero01_fist_attack05.tres" id="3_dbjmb"]
[ext_resource type="SpriteFrames" uid="uid://bhsotj76tuovy" path="res://resource/animation/character/hero01_fist_attack.aseprite" id="4_mhr07"]
[ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="5_en30r"]
[resource]
@ -29,5 +28,4 @@ is_lock_x = true
is_lock_x_move = false
range = 0.0
warn_type = 0
sprite_frames = ExtResource("4_mhr07")
animation_name = "fist_attack05"

@ -1,10 +1,9 @@
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://dpaa7dflbjk62"]
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=6 format=3 uid="uid://dpaa7dflbjk62"]
[ext_resource type="Resource" uid="uid://cdkjjljp81p56" path="res://config/attack/blunt_mid_hit_down.tres" id="1_ywehi"]
[ext_resource type="Resource" uid="uid://qp5sy3u3rlpe" path="res://config/attack_box/box_high.tres" id="2_ywehi"]
[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_6wryu"]
[ext_resource type="Animation" uid="uid://by2e51w02ka8s" path="res://resource/skill_animation/hero01_fist_skill03.tres" id="4_c7ye6"]
[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="5_sjxkh"]
[ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="6_aemq5"]
[resource]
@ -29,5 +28,4 @@ is_lock_x = true
is_lock_x_move = false
range = 0.0
warn_type = 0
sprite_frames = ExtResource("5_sjxkh")
animation_name = "fist_skill03"

@ -1,11 +1,10 @@
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://cu73c3osx40k2"]
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=6 format=3 uid="uid://cu73c3osx40k2"]
[ext_resource type="Resource" uid="uid://dfjtcdh13vohe" path="res://config/attack/blunt_normal_hit_up_back.tres" id="1_f41cj"]
[ext_resource type="Resource" uid="uid://dq3pnbyfx4irr" path="res://config/attack_box/circle_foot.tres" id="2_bmi1a"]
[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="5_j7ual"]
[ext_resource type="Animation" uid="uid://cpda46s7n6mar" path="res://resource/skill_animation/hero01_fist_air_skill02.tres" id="6_le53b"]
[ext_resource type="Resource" uid="uid://c6alg8pmqfdxm" path="res://config/weapon/fist.tres" id="7_cmht3"]
[ext_resource type="SpriteFrames" uid="uid://cajgs8smbkjan" path="res://resource/animation/character/hero01_fist_skill01.aseprite" id="7_kay3f"]
[resource]
script = ExtResource("5_j7ual")
@ -29,5 +28,4 @@ is_lock_x = true
is_lock_x_move = false
range = 0.0
warn_type = 0
sprite_frames = ExtResource("7_kay3f")
animation_name = "fist_skill_special01"

@ -1,10 +1,9 @@
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://chuf7yp2oc0f7"]
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=6 format=3 uid="uid://chuf7yp2oc0f7"]
[ext_resource type="Resource" uid="uid://bv4uoey1liqoq" path="res://config/attack/sharp_heavy_hit_blow.tres" id="1_m5u18"]
[ext_resource type="Resource" uid="uid://bnfnjdw0tms3h" path="res://config/attack_box/box_large.tres" id="2_0351a"]
[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_to21l"]
[ext_resource type="Animation" uid="uid://cjc6sis2xn1yy" path="res://resource/skill_animation/hero01_long_air_skill02.tres" id="4_u7aq7"]
[ext_resource type="SpriteFrames" uid="uid://dhfqj1dxldqao" path="res://resource/animation/character/hero01_long_skill01.aseprite" id="5_6p3pi"]
[ext_resource type="Resource" uid="uid://cy3wwalxeyro0" path="res://config/weapon/long.tres" id="6_vj7l0"]
[resource]
@ -29,5 +28,4 @@ is_lock_x = true
is_lock_x_move = true
range = 0.0
warn_type = 0
sprite_frames = ExtResource("5_6p3pi")
animation_name = "long_air_skill02"

@ -1,10 +1,9 @@
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://fnub06pyo2l8"]
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=6 format=3 uid="uid://fnub06pyo2l8"]
[ext_resource type="Resource" uid="uid://cw7rb4rlfw33q" path="res://config/attack/sharp_heavy_hit_back.tres" id="1_2k8jp"]
[ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_1jdoh"]
[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_tbh7t"]
[ext_resource type="Animation" uid="uid://nhnwu6uccylr" path="res://resource/skill_animation/hero01_long_stab02.tres" id="4_2k8jp"]
[ext_resource type="SpriteFrames" uid="uid://c6w03xigmrd31" path="res://resource/animation/character/hero01_long_skill03.aseprite" id="5_ys6gu"]
[ext_resource type="Resource" uid="uid://cy3wwalxeyro0" path="res://config/weapon/long.tres" id="6_3b28o"]
[resource]
@ -29,5 +28,4 @@ is_lock_x = true
is_lock_x_move = true
range = 0.0
warn_type = 0
sprite_frames = ExtResource("5_ys6gu")
animation_name = "long_skill_stab02"

@ -1,11 +1,10 @@
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=8 format=3 uid="uid://cahm6vjsskkc5"]
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://cahm6vjsskkc5"]
[ext_resource type="Resource" uid="uid://dmfr73m28vsqj" path="res://config/attack/sharp_normal_hit_back_hard.tres" id="1_o1kbx"]
[ext_resource type="Animation" uid="uid://dbm6ssy6cqb2d" path="res://resource/skill_animation/hero01_long_stab03.tres" id="2_jcwvc"]
[ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_o1kbx"]
[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_51oqr"]
[ext_resource type="Resource" uid="uid://rxt1emwats2v" path="res://config/character/bullet_hero01_long_stab.tres" id="4_hrq33"]
[ext_resource type="SpriteFrames" uid="uid://c6w03xigmrd31" path="res://resource/animation/character/hero01_long_skill03.aseprite" id="5_aqnpo"]
[ext_resource type="Resource" uid="uid://cy3wwalxeyro0" path="res://config/weapon/long.tres" id="6_cys3s"]
[resource]
@ -31,5 +30,4 @@ is_lock_x = true
is_lock_x_move = true
range = 0.0
warn_type = 0
sprite_frames = ExtResource("5_aqnpo")
animation_name = "long_skill_stab02"

@ -1,8 +1,7 @@
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=5 format=3 uid="uid://cjp4q8uhiryjd"]
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=4 format=3 uid="uid://cjp4q8uhiryjd"]
[ext_resource type="Animation" uid="uid://qcmj7d5pg6lw" path="res://resource/skill_animation/hero01_short_skill01.tres" id="2_j0c0j"]
[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_0dcj8"]
[ext_resource type="SpriteFrames" uid="uid://dlmesk4xyydmd" path="res://resource/animation/character/hero01_short_skill03.aseprite" id="3_j0c0j"]
[ext_resource type="Resource" uid="uid://pnhii1a83axg" path="res://config/weapon/short.tres" id="6_7qlca"]
[resource]
@ -25,5 +24,4 @@ is_lock_x = true
is_lock_x_move = false
range = 0.0
warn_type = 0
sprite_frames = ExtResource("3_j0c0j")
animation_name = "short_skill_stab01"

@ -1,10 +1,9 @@
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=8 format=3 uid="uid://ckmsp5bdyk3tx"]
[gd_resource type="Resource" script_class="SkillWeaponCfg" load_steps=7 format=3 uid="uid://ckmsp5bdyk3tx"]
[ext_resource type="Resource" uid="uid://cuc04svaipss7" path="res://config/attack/sharp_normal_none.tres" id="1_5n6sn"]
[ext_resource type="Resource" uid="uid://diedb7vw7eyxp" path="res://config/attack_box/box_mid.tres" id="2_67ngl"]
[ext_resource type="Script" uid="uid://dgwtu2wj5033u" path="res://script/config/skill_weapon_cfg.gd" id="3_cub6b"]
[ext_resource type="Animation" uid="uid://b3fuombjh57oj" path="res://resource/skill_animation/hero01_short_stab01.tres" id="4_67ngl"]
[ext_resource type="SpriteFrames" uid="uid://c6w03xigmrd31" path="res://resource/animation/character/hero01_long_skill03.aseprite" id="5_kk2vu"]
[ext_resource type="Resource" uid="uid://pnhii1a83axg" path="res://config/weapon/short.tres" id="6_5n6sn"]
[ext_resource type="Resource" uid="uid://cb4q16lmqwbin" path="res://config/character/bullet_hero01_short_stab01.tres" id="6_cub6b"]
@ -31,5 +30,4 @@ is_lock_x = false
is_lock_x_move = false
range = 0.0
warn_type = 0
sprite_frames = ExtResource("5_kk2vu")
animation_name = "long_skill_stab01"

@ -54,7 +54,7 @@ import/use_multiple_threads=false
[editor_plugins]
enabled=PackedStringArray("res://addons/MagicaVoxel_Importer_with_Extensions/plugin.cfg", "res://addons/beehave/plugin.cfg", "res://addons/editor_menu_tools/plugin.cfg", "res://addons/nklbdev.aseprite_importers/plugin.cfg", "res://addons/resources_spreadsheet_view/plugin.cfg")
enabled=PackedStringArray("res://addons/MagicaVoxel_Importer_with_Extensions/plugin.cfg", "res://addons/beehave/plugin.cfg", "res://addons/nklbdev.aseprite_importers/plugin.cfg", "res://addons/resources_spreadsheet_view/plugin.cfg")
[file_customization]

@ -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.2
ambient_light_energy = 0.15
tonemap_white = 2.39
ssao_intensity = 1.0
glow_enabled = true

@ -10,8 +10,10 @@ 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(0, 0, 0)
shader_parameter/focus_max = Vector3(0, 0, 0)
shader_parameter/focus_min = Vector3(50.56, 5.76, -0.640001)
shader_parameter/focus_max = Vector3(64.64, 13.44, 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)

@ -1,6 +1,6 @@
[gd_resource type="ShaderMaterial" load_steps=3 format=3 uid="uid://cn575sh80pqxk"]
[ext_resource type="Shader" uid="uid://xk1b514pohnb" path="res://render/shader/level_water.gdshader" id="1_bicx1"]
[ext_resource type="Shader" uid="uid://xk1b514pohnb" path="res://render/shader/level_grid_water.gdshader" id="1_bicx1"]
[ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/particle/noise/noise1.png" id="2_a8f7n"]
[resource]

@ -1,4 +1,5 @@
shader_type spatial;
render_mode cull_disabled;
uniform sampler2D tex : source_color,filter_nearest;
uniform float flash_white;

@ -4,13 +4,17 @@ uniform bool is_focus = false;
uniform vec3 target_position = vec3(0, 1.28, 1);
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);
varying vec3 world_position;
varying vec2 uv1;
varying vec2 uv2;
varying vec2 uv3;
uniform sampler2D tex_noise1 : source_color;
uniform sampler2D tex_noise2 : source_color;
uniform sampler2D tex_noise3 : source_color;
varying vec2 uv_sub;
void vertex()
{
@ -19,6 +23,7 @@ void vertex()
uv1 = local_uv / 32.0;
uv2 = local_uv / 32.0;
uv3 = local_uv / 8.0;
uv_sub = local_uv / 16.0;
}
bool is_in_focus(vec3 f_min,vec3 f_max){
@ -53,15 +58,24 @@ void fragment() {
brightness = brightness*0.6;
}
//通用网格纹理
float noise_value1 = texture(tex_noise1,floor(uv1 /0.02) *0.02).r;
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{
c -= discrete_noise_value1 * 0.2;
c += discrete_noise_value2 * 0.2;
c -= discrete_noise_value3 * 0.08;
}
//应用亮度
c.rgb = mix(vec3(0.0), c.rgb, brightness);
ALBEDO = c.rgb;
if(is_light){

@ -0,0 +1,18 @@
[remap]
importer="MagicaVoxel.With.Extensions.To.Mesh"
type="Mesh"
uid="uid://cot35mklbp55s"
path="res://.godot/imported/sub_graybox_full.vox-aeff09d76624ffe0f12454627801d4d8.mesh"
[deps]
source_file="res://resource/mesh_level/sub_graybox_full.vox"
dest_files=["res://.godot/imported/sub_graybox_full.vox-aeff09d76624ffe0f12454627801d4d8.mesh"]
[params]
Scale=0.02
GreedyMeshGenerator=true
SnapToGround=false
FirstKeyframeOnly=true

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -11,7 +11,7 @@ data = {
"width": 64
}
[sub_resource type="ImageTexture" id="ImageTexture_2ckdg"]
[sub_resource type="ImageTexture" id="ImageTexture_xmqvm"]
image = SubResource("Image_eyj8x")
[resource]
@ -22,4 +22,4 @@ 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_2ckdg")
item/0/preview = SubResource("ImageTexture_xmqvm")

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -72,24 +72,24 @@ tracks/4/keys = {
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("View:frame")
tracks/5/path = NodePath("Status:skill_move_speed")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"times": PackedFloat32Array(0, 0.2, 0.3),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
"values": [-1.0, 4.0, 0.0]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Status:skill_move_speed")
tracks/6/path = NodePath("View:frame")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0, 0.2, 0.3),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [-1.0, 4.0, 0.0]
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
}

@ -32,43 +32,45 @@ tracks/1/keys = {
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("View:frame")
tracks/2/path = NodePath("Status:break_level")
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, 0.8, 0.9),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
"values": [0, 3, 4]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Status:break_level")
tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 3, 4]
"values": [-0.5, -1.0]
}
tracks/4/type = "value"
tracks/4/type = "method"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Status:speed_up_rate")
tracks/4/path = NodePath("Battle")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [-0.5, -1.0]
"times": PackedFloat32Array(0.2),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"cast_sub_character"
}]
}
tracks/5/type = "method"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Battle")
tracks/5/path = NodePath("Effect")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
@ -76,42 +78,28 @@ tracks/5/keys = {
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"cast_sub_character"
"method": &"cast_attack_particle1"
}]
}
tracks/6/type = "method"
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Effect")
tracks/6/path = NodePath("Status:skill_move_speed")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0.2),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"cast_attack_particle1"
}]
"times": PackedFloat32Array(0, 0.1, 0.2),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [2.0, 6.0, 0.0]
}
tracks/7/type = "value"
tracks/7/type = "method"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("Status:skill_move_speed")
tracks/7/path = NodePath("Battle")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [2.0, 6.0, 0.0]
}
tracks/8/type = "method"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Battle")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0.2),
"transitions": PackedFloat32Array(1),
"values": [{
@ -119,3 +107,15 @@ tracks/8/keys = {
"method": &"attack1"
}]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("View:frame")
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, 0.9),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
}

@ -121,24 +121,24 @@ tracks/6/keys = {
tracks/7/type = "value"
tracks/7/imported = false
tracks/7/enabled = true
tracks/7/path = NodePath("View:frame")
tracks/7/path = NodePath("Status:skill_float_speed")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"times": PackedFloat32Array(0.1, 0.2),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
"values": [2.0, 0.0]
}
tracks/8/type = "value"
tracks/8/imported = false
tracks/8/enabled = true
tracks/8/path = NodePath("Status:skill_float_speed")
tracks/8/path = NodePath("View:frame")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
"times": PackedFloat32Array(0.1, 0.2),
"transitions": PackedFloat32Array(1, 1),
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [2.0, 0.0]
"values": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
}

@ -32,43 +32,45 @@ tracks/1/keys = {
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("View:frame")
tracks/2/path = NodePath("Status:break_level")
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),
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [0, 1, 2, 3, 4, 5, 6, 7]
"values": [0, 3, 4]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Status:break_level")
tracks/3/path = NodePath("Status:speed_up_rate")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.3, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [0, 3, 4]
"values": [-0.5, -1.0]
}
tracks/4/type = "value"
tracks/4/type = "method"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Status:speed_up_rate")
tracks/4/path = NodePath("Battle")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [-0.5, -1.0]
"times": PackedFloat32Array(0.1),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"cast_sub_character"
}]
}
tracks/5/type = "method"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Battle")
tracks/5/path = NodePath("Effect")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
@ -76,20 +78,18 @@ tracks/5/keys = {
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": &"cast_sub_character"
"method": &"cast_attack_particle1"
}]
}
tracks/6/type = "method"
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("Effect")
tracks/6/path = NodePath("View:frame")
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"
}]
"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]
}

File diff suppressed because one or more lines are too long

@ -69,6 +69,7 @@ shader_parameter/screen_size = Vector2(640, 360)
[sub_resource type="Animation" id="Animation_4kxot"]
resource_name = "end"
length = 0.8
step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
@ -76,15 +77,16 @@ tracks/0/path = NodePath(".:duration")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1, 0.8),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [-2.0, -2.0, 1.0]
"values": [-2.0, 1.0]
}
[sub_resource type="Animation" id="Animation_x6v17"]
resource_name = "start"
length = 0.8
step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
@ -92,10 +94,10 @@ tracks/0/path = NodePath(".:duration")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.7, 0.8),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(0, 0.4),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [1.0, -2.0, -2.0]
"values": [1.0, -2.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_fofuj"]
@ -335,13 +337,12 @@ offset_bottom = 40.0
script = ExtResource("3_6chl0")
[node name="LoadingPage" type="Control" parent="."]
visible = false
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("4_jqajt")
duration = -2.0
duration = 1.0
[node name="ColorRect" type="ColorRect" parent="LoadingPage"]
material = SubResource("ShaderMaterial_b5bdl")

@ -13,6 +13,7 @@ const drag_ground: float = 20
const drag_air: float = 5
#关卡
const size_basic: Vector3 = Vector3(12.8, 6.4, 6.4)
const level_loading_time: float = 0.4
#ui
const weapon_anime_duration: float = 0.1
#pt

@ -131,7 +131,7 @@ func refresh_mesh_library(path_list: Array, from_editor_tool: bool = false):
var mesh_library_deco2_id_list: Array[int] = []
var mesh_library_chara_id_list: Array[int] = []
var material_block_normal: 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 reimport_files: Array[String] = []
for file_name_full in path_list:
@ -168,13 +168,13 @@ func refresh_mesh_library(path_list: Array, from_editor_tool: bool = false):
if has_material:
var material: Material = mesh.surface_get_material(0) as Material
var material_set: Material = material_block_normal
var material_set: Material = material_grid_block
if (mesh.get_surface_count() >0) and ((not material) or (material.get_path() != material_set.get_path())):
if from_editor_tool:
reimport_files.append(file_name_full)
else:
print("surface_set_material")
mesh.surface_set_material(0, material_block_normal)
mesh.surface_set_material(0, material_grid_block)
ResourceSaver.save(mesh, file_name_full)
if has_shape:

@ -16,7 +16,6 @@ var velocity_cache: Vector3
func _process(delta) -> void:
if Global.is_level_loading: return
if status.is_pause: return
if status.is_be_throw: return
move_tick(delta)
@ -24,7 +23,7 @@ func _process(delta) -> void:
func move_tick(delta) -> bool:
var is_hit_floor: bool = update_on_floor(delta)
var is_hit_floor: bool = update_on_floor()
update_move(delta)
update_speed_y(delta)
var is_against_wall: bool = update_move_check(delta)
@ -41,7 +40,7 @@ func move_tick(delta) -> bool:
return is_against_wall
func update_on_floor(delta) -> bool:
func update_on_floor() -> bool:
var is_on_floor: bool = character.is_on_floor()
var is_hit: bool = not status.is_on_floor and is_on_floor
status.is_on_floor = is_on_floor
@ -90,7 +89,7 @@ func update_move(delta):
status.is_right = status.move_dir.x > 0
func update_deformation(delta):
func update_deformation(_delta):
var velocity_change_sum: float = status.velocity_change.x + status.velocity_change.y + status.velocity_change.z
if velocity_change_sum > 6:
var velocity_change_x: float = status.velocity_change.x
@ -161,7 +160,7 @@ func update_move_check(delta) -> bool:
func jump():
character.velocity.y = status.cfg.move.jump_velocity
status.is_jumped = true
# status.is_jumped = true
status.trigger_jump = true
buff.add_buff("jumping", 0.1)
if status.is_on_floor:

@ -21,6 +21,7 @@ var view_focus_off: Callable = view_focus_off_func
@export var id_from: int = 0
@export var id_to: int = 0
@export_tool_button("替换", "Callable")
var replace_id: Callable = replace_id_func
@ -71,7 +72,6 @@ func print_item_func ()-> void:
print("[", item_id, "]", mesh_library.get_item_name(item_id), ":", item_count_map[item_id])
@onready var grid_block_material: Material = load("res://render/material/level_grid_block.tres") as Material
#character
@ -197,81 +197,87 @@ func init_level_main() -> void:
var id_min: Vector3i = Util.get_level_grid_pos2(pos_min())
var id_max: Vector3i = Util.get_level_grid_pos2(pos_max())
# 底面黑块
for x in range(id_min.x, id_max.x+1):
for z in range(id_min.z, id_max.z+1):
var pos: Vector3i = Vector3i(x, id_min.y, z)
var id: int = level_main.get_cell_item(pos)
if not(id == GridMap.INVALID_CELL_ITEM or z == id_max.z):
continue
mark_black_list.append(pos)
# 底面黑块剔除
var mark_black_remove_list: Array[Vector3i] = []
for mark_black in mark_black_list:
var is_edge: bool
var check_dir: Vector3i
if mark_black.x == id_min.x:
check_dir = Vector3i(-1, 0, 0); is_edge=true;
elif mark_black.z == id_min.z:
check_dir = Vector3i(0, 0, -1); is_edge=true;
elif mark_black.x == id_max.x:
check_dir = Vector3i(1, 0, 0); is_edge=true;
elif mark_black.z == id_max.z:
check_dir = Vector3i(0, 0, 1); is_edge=true;
# 需要延申空气墙的黑块
var air_wall_mark_black_list: Array[Vector3i] = []
# 正前面黑块
for x in range(id_min.x + 1, id_max.x):
var pos: Vector3i = Vector3i(x, id_min.y, id_max.z)
var has_link = false
var mark_black_list_check: Array[Vector3i] = []
for y in range(id_min.y, id_max.y):
var pos_check: Vector3i = Vector3i(x, y, id_max.z)
if not check_grid(level_main, pos_check):
has_link = true
break
mark_black_list_check.append(pos_check)
if has_link:
for pos_check in mark_black_list_check:
mark_black_list.append(pos_check)
air_wall_mark_black_list.append(pos_check)
else:
check_dir = Vector3i(0, -1, 0)
if mark_black in [
Vector3i(id_min.x, id_min.y, id_min.z),
Vector3i(id_max.x, id_min.y, id_min.z),
Vector3i(id_min.x, id_min.y, id_max.z),
Vector3i(id_max.x, id_min.y, id_max.z)
]:
continue
if is_edge:
var is_hole: bool
for y in range(id_min.y+1, id_max.y):
var pos: Vector3i = Vector3i(mark_black.x, y, mark_black.z)
if not check_grid(level_main, pos):
is_hole = true
mark_black_list.append(pos)
air_wall_mark_black_list.append(pos)
# 左面黑块
var black_y_max_left: int = id_max.y - 1
for z in range(id_min.z + 1, id_max.z + 1):
var pos: Vector3i = Vector3i(id_min.x, id_min.y, z)
var has_link = false
var mark_black_list_check: Array[Vector3i] = []
for y in range(id_min.y - 1, black_y_max_left):
var pos_check: Vector3i = Vector3i(id_min.x, y + 1, z)
if not check_grid(level_main, pos_check):
has_link = true
black_y_max_left = max(y, id_min.y)
if y + 1 < id_max.y:
air_wall_mark_black_list.append(pos_check + Vector3i(0, 1, 0))
break
if not is_hole:
continue
var mark_black_check: Vector3i = mark_black + check_dir
var float_pos_check: Vector3 = Util.get_level_float_pos2(mark_black_check) + Vector3(0.64, 0, 0.64)
if not (Global.level_mgr.get_level_by_pos(float_pos_check) and not check_grid(level_main, float_pos_check)):
continue
mark_black_remove_list.append(mark_black)
mark_black_list = mark_black_list.filter(func (x): return x not in mark_black_remove_list)
# 底面黑块延申空气墙
mark_black_list_check.append(pos_check)
if not has_link:
for pos_check in mark_black_list_check:
mark_black_list.append(pos_check)
var pos_check: Vector3i = Vector3i(id_min.x, black_y_max_left, z)
air_wall_mark_black_list.append(pos_check)
# 右边面黑块
var black_y_max_right: int = id_max.y - 1
for z in range(id_min.z + 1, id_max.z + 1):
var pos: Vector3i = Vector3i(id_max.x, id_min.y, z)
var has_link = false
var mark_black_list_check: Array[Vector3i] = []
for y in range(id_min.y - 1, black_y_max_right):
var pos_check: Vector3i = Vector3i(id_max.x, y + 1, z)
if not check_grid(level_main, pos_check):
has_link = true
black_y_max_right = max(y, id_min.y)
if y + 1 < id_max.y:
air_wall_mark_black_list.append(pos_check + Vector3i(0, 1, 0))
break
mark_black_list_check.append(pos_check)
if not has_link:
for pos_check in mark_black_list_check:
mark_black_list.append(pos_check)
var pos_check: Vector3i = Vector3i(id_max.x, black_y_max_right, z)
air_wall_mark_black_list.append(pos_check)
# 黑块cache
for mark_black in mark_black_list:
add_grid_main_cache_cell(level_main, mark_black)
for y in range(id_min.y+1, id_max.y):
var pos: Vector3i = Vector3i(mark_black.x, y, mark_black.z)
add_grid_main_cache_cell(level_main, pos)
mark_white_list.append(pos)
# 底面黑块剔除延申空气墙
for mark_black in mark_black_remove_list:
for y in range(id_min.y+1, id_max.y):
# 黑块延申空气墙
for mark_black in air_wall_mark_black_list:
for y in range(mark_black.y + 1, id_max.y):
var pos: Vector3i = Vector3i(mark_black.x, y, mark_black.z)
if not check_grid(level_main, pos):
continue
add_grid_main_cache_cell(level_main, pos)
mark_white_list.append(pos)
# 顶面
for x in range(id_min.x, id_max.x + 1):
for z in range(id_min.z, id_max.z + 1):
var pos: Vector3i = Vector3i(x, id_max.y, z)
add_grid_main_cache_cell(level_main, pos)
if z == id_max.z:
mark_white_list.append(pos)
continue
var pos_down: Vector3i = Vector3i(x, id_max.y - 1, z)
if level_main.get_cell_item(pos_down) == GridMap.INVALID_CELL_ITEM:
if level_main.get_cell_item(pos_down) == GridMap.INVALID_CELL_ITEM or pos_down in mark_white_list:
var pos_up: Vector3i = Vector3i(x, id_max.y + 1, z)
var float_pos_check: Vector3 = Util.get_level_float_pos2(pos_up) + Vector3(0.64, 0, 0.64)
if Global.level_mgr.get_level_by_pos(float_pos_check) and not check_grid(level_main, pos_up):

@ -121,13 +121,13 @@ func refresh_target_pos():
target_pos.y = Util.snap_float(clamp(pos.y - target_pos_y, y_min, y_max))
func on_level_size_change(size: Vector2): level_size = size
func on_level_size_change(size_new: Vector2): level_size = size_new
func on_level_pos_change(pos: Vector2): level_pos = pos
func on_level_pos_change(pos_new: Vector2): level_pos = pos_new
func on_level_loading_end():
refresh_target_pos()
target_pos_now.x = target_pos.x
target_pos_now.y = target_pos.y

@ -1,8 +1,8 @@
extends Node3D
func _input(event) -> void:
if !event.is_action_type():
return
if !event.is_action_type(): return
for action_name in InputMap.get_actions():
if event.is_action_pressed(action_name):
SignalManager.input_action_pressed.emit(action_name)

@ -5,7 +5,7 @@ var target: int
var level: Level
var cur_level_instance: LevelInstance
var level_instance_dict: Dictionary = {}
var level_loading_rate: float
var level_loading_time: float
var level_active_spots: Array[Node]
var level_character_born_spots: Array[LevelInstance.ChacacterBornSpot]
var level_enemy_cfgs: Array[CharacterCfg]
@ -40,10 +40,12 @@ func init():
func _process(delta) -> void:
if not level:
return
if level_loading_rate < 1:
level_loading_rate += delta *2
if level_loading_rate > 1:
level_loading_rate = 1
if level_loading_time > 0:
level_loading_time -= delta
if level_loading_time <= 0:
enter_level()
SignalManager.level_loading_end.emit()
Global.is_level_loading = false
func get_born_pos() -> Vector3:
@ -82,18 +84,24 @@ func set_player_position(pos: Vector3) -> void:
var new_level_instance: LevelInstance = get_level_by_pos(pos)
if not new_level_instance:
return # todo 不存在的关卡 主角直接死亡
if cur_level_instance:
var is_first_level: bool = cur_level_instance == null
if !is_first_level:
if new_level_instance == cur_level_instance:
check_level_active(pos)
return
new_level_instance.set_focus()
cur_level_instance = new_level_instance
if is_first_level:
enter_level()
else:
SignalManager.level_loading_start.emit()
Global.is_level_loading = true
level_loading_time = Setting.level_loading_time
func enter_level() -> void:
SignalManager.level_loading_start.emit()
cur_level_instance.set_focus()
is_level_active = false
level_active_spots = []
level_doors = []
@ -123,12 +131,9 @@ func enter_level() -> void:
else:
cur_level_instance.set_replace(true)
level_loading_rate = 1-level_loading_rate
SignalManager.level_size_change.emit(cur_level_instance.get_level_size())
SignalManager.level_pos_change.emit(cur_level_instance.get_level_pos())
SignalManager.level_loading_end.emit()
func check_level_active(pos: Vector3) -> void:
if is_level_active:

@ -12,9 +12,9 @@ var color_material: ShaderMaterial
func _ready():
color_material = $ColorRect.material as ShaderMaterial
# SignalManager.level_loading_start.connect(on_level_loading_start)
# SignalManager.level_loading_end.connect(on_level_loading_end)
SignalManager.level_loading_start.connect(on_level_loading_start)
SignalManager.level_loading_end.connect(on_level_loading_end)
visible = true
func on_level_loading_start():

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Loading…
Cancel
Save