关卡配置方式修改

master
chendian 1 year ago
parent 4920128d22
commit f9f594c071

@ -44,7 +44,6 @@ BeehaveGlobalDebugger="*res://addons/beehave/debug/global_debugger.gd"
window/size/viewport_width=640
window/size/viewport_height=360
window/size/mode=4
window/size/always_on_top=true
window/stretch/mode="canvas_items"
window/stretch/scale_mode="integer"

@ -15,4 +15,5 @@ shader_parameter/focus_max_to = Vector3(37.76, 4.48, 7.04)
shader_parameter/focus_rate = 1.0
shader_parameter/is_target = false
shader_parameter/target_position = Vector3(0, 1.28, 1)
shader_parameter/show_air_wall = true
shader_parameter/pixel_size = Vector2(0.02, 0.02)

@ -15,4 +15,5 @@ shader_parameter/focus_max_to = Vector3(0, 0, 0)
shader_parameter/focus_rate = 1.0
shader_parameter/is_target = false
shader_parameter/target_position = Vector3(0, 1.28, 1)
shader_parameter/show_air_wall = true
shader_parameter/pixel_size = Vector2(0.02, 0.02)

@ -10,6 +10,7 @@ uniform float focus_rate = 1.0;
uniform bool is_target = false;
uniform vec3 target_position = vec3(0, 1.28, 1);
varying vec3 world_position;
uniform bool show_air_wall = true;
uniform vec2 pixel_size = vec2(0.02, 0.02);
@ -19,7 +20,7 @@ void vertex()
}
bool is_in_focus(vec3 f_min,vec3 f_max){
if(world_position.x<f_min.x||world_position.x>f_max.x){return false;}
//if(world_position.x<f_min.x||world_position.x>f_max.x){return false;}
if(world_position.z>f_max.z){return false;}
if(world_position.y>f_max.y && world_position.z>f_min.z){return false;}
return true;
@ -47,23 +48,34 @@ void fragment() {
}
vec3 c = COLOR.rgb;
float brightness = 1.0;
if(is_target){
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;
if(c.r+c.g+c.b<0.1){
ALBEDO = vec3(0.1);
}else if(c.r+c.g+c.b>2.9){
if(show_air_wall){
ALBEDO = vec3(0.9);
}else{
discard;
}
}else{
brightness = 1.0;
}
vec3 world_normal = (INV_VIEW_MATRIX * vec4(NORMAL, 0.0)).xyz;
bool is_light = c.r+c.g+c.b>2.8;
if(!is_light && world_normal.y<0.1){
brightness = brightness*0.6;
}
c.rgb = mix(vec3(0.0), c.rgb, brightness);
ALBEDO = c.rgb;
if(is_light){
EMISSION = c.rgb * 2.0;
float brightness = 1.0;
if(is_target){
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;
}else{
brightness = 1.0;
}
vec3 world_normal = (INV_VIEW_MATRIX * vec4(NORMAL, 0.0)).xyz;
bool is_light = c.r+c.g+c.b>2.8;
if(!is_light && world_normal.y<0.1){
brightness = brightness*0.6;
}
c.rgb = mix(vec3(0.0), c.rgb, brightness);
ALBEDO = c.rgb;
if(is_light){
EMISSION = c.rgb * 2.0;
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 938 B

After

Width:  |  Height:  |  Size: 956 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

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

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

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

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

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

@ -1,10 +1,11 @@
[gd_resource type="MeshLibrary" load_steps=6 format=3 uid="uid://cnmlppi3r8sl0"]
[gd_resource type="MeshLibrary" load_steps=7 format=3 uid="uid://cnmlppi3r8sl0"]
[ext_resource type="ArrayMesh" uid="uid://3mgx1q8pqlsu" path="res://resource/mesh_level/c_monster01.vox" id="1_fi3ob"]
[ext_resource type="ArrayMesh" path="res://.godot/imported/a_grass_short.vox-a142a969f3f4d81df7c9b8a622160369.mesh" id="2_ksnfs"]
[ext_resource type="ArrayMesh" path="res://.godot/imported/a_grass_high.vox-b3f8d621c6f7439063d3684054e5ce4b.mesh" id="3_egou0"]
[ext_resource type="ArrayMesh" path="res://.godot/imported/a_grass_tiny.vox-5649b282be35301cf0799eff3a3270f9.mesh" id="4_07cnl"]
[ext_resource type="ArrayMesh" path="res://.godot/imported/a_light01.vox-fbcf673ae8a560d03094ae6e13722ce5.mesh" id="5_kvpgw"]
[ext_resource type="ArrayMesh" path="res://.godot/imported/a_door01.vox-05441f19fa29fc6c4605f6947f653d77.mesh" id="6_custc"]
[resource]
item/0/name = "c_monster01"
@ -37,3 +38,9 @@ item/4/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
item/4/shapes = []
item/4/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
item/4/navigation_layers = 1
item/5/name = "a_door01"
item/5/mesh = ExtResource("6_custc")
item/5/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -6,8 +6,8 @@
[sub_resource type="Curve" id="Curve_j362u"]
min_value = -1.0
max_value = 4.0
_data = [Vector2(0, -1), 0.0, 0.0, 0, 0, Vector2(1, 4), 0.0, 0.0, 0, 0]
point_count = 2
_data = [Vector2(0, -1), 0.0, 3.77819, 0, 0, Vector2(0.496667, 4), 0.0, 0.0, 0, 0, Vector2(1, 4), 0.0, 0.0, 0, 0]
point_count = 3
[node name="Character" instance=ExtResource("1_gvr0p")]

@ -5,6 +5,6 @@
[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_albedo = ExtResource("1_30j48")
texture_emission = ExtResource("1_30j48")
normal_fade = 0.999
cull_mask = 1

@ -5,6 +5,6 @@
[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_albedo = ExtResource("1_msawg")
texture_emission = ExtResource("1_msawg")
normal_fade = 0.999
cull_mask = 1

@ -6,7 +6,7 @@
[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_albedo = ExtResource("1_1hvll")
texture_emission = ExtResource("1_1hvll")
normal_fade = 0.999
cull_mask = 1
script = ExtResource("2_hf851")

@ -5,6 +5,6 @@
[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_albedo = ExtResource("1_2mpei")
texture_emission = ExtResource("1_2mpei")
normal_fade = 0.999
cull_mask = 1

@ -5,6 +5,6 @@
[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_albedo = ExtResource("1_hfi0a")
texture_emission = ExtResource("1_hfi0a")
normal_fade = 0.999
cull_mask = 1

File diff suppressed because one or more lines are too long

@ -0,0 +1,9 @@
[gd_scene load_steps=2 format=3 uid="uid://c342lbsv1d6gi"]
[ext_resource type="ArrayMesh" uid="uid://b5asibailmqi8" path="res://resource/mesh_level/m_stone_door1.vox" id="1_rxqyg"]
[node name="Door" type="Node3D"]
[node name="Mesh" type="MeshInstance3D" parent="."]
mesh = ExtResource("1_rxqyg")
skeleton = NodePath("../..")

@ -1,8 +0,0 @@
[gd_scene format=3 uid="uid://dbbv668bdbepx"]
[node name="Light01" type="Node3D"]
[node name="OmniLight3D" type="OmniLight3D" parent="."]
light_color = Color(1, 1, 0.258824, 1)
light_energy = 0.2
shadow_enabled = true

@ -121,6 +121,8 @@ func refresh_mesh_library(path_list: Array, from_editor_tool: bool = false):
for file_name_full in path_list:
var mesh_name = file_name_full.get_file().split('-')[0].trim_suffix('.vox')
print(mesh_name)
if mesh_name.begins_with("m_"):
continue
var is_ground = mesh_name.begins_with("g_")
if is_ground:
mesh_name = mesh_name.trim_prefix("g_")

@ -32,7 +32,7 @@ func _ready():
func _process(delta: float) -> void:
if not is_init:
var scale: Vector3 = Vector3.ONE * sqrt(sqrt(value))
var scale: Vector3 = Vector3.ONE * sqrt(sqrt(sqrt(value)))
sprite3D.scale = scale
collision_shape.scale = scale
var color: Color = Color.WHITE

@ -14,6 +14,7 @@ func init() -> void:
grid_block_link_material.set_shader_parameter("is_link", true)
grid_block_material.set_shader_parameter("is_target", true)
grid_block_link_material.set_shader_parameter("is_target", true)
grid_block_material.set_shader_parameter("show_air_wall", false)
func get_level_instance_list() -> Array[LevelInstance]:

@ -53,6 +53,8 @@ func set_focus_to(is_focus: bool) -> void:
func _set_focus(is_focus: bool, key: String) -> void:
if not grid_block_material:
return
if is_focus:
grid_block_material.set_shader_parameter("is_focus_"+key, true)
grid_block_material.set_shader_parameter("focus_min_"+key, pos_min())
@ -121,10 +123,10 @@ func get_level_active_spots() -> Array[LevelActiveSpot]:
func pos_min() -> Vector3:
return get_global_position() + Vector3(0.640001, 0.640001, 0.640001)
return get_global_position() - Vector3(0.64, 0.64, 0.64)
func pos_max() -> Vector3:
var level_range: CSGBox3D = $LevelRange as CSGBox3D
var level_size: Vector3 = level_range.size
return get_global_position() + level_size - Vector3(0.640001, 0.639999, 0.639999)
return get_global_position() + level_size + Vector3(0.64, 0.64, 0.64)

@ -74,8 +74,8 @@ func update_global_effect(delta):
func update_camera_pos(delta):
target_pos_lerp(0, delta, 10)
target_pos_lerp(1, delta, 10)
target_pos_lerp(0, delta, 6)
target_pos_lerp(1, delta, 6)
position.x = (target_pos_now.x + shake_offset_x)
position.z = (target_pos_now.y + target_pos_y + offset)
position.y = (target_pos_y + offset)

@ -11,8 +11,8 @@ 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)
func on_level_loading_start():

Loading…
Cancel
Save