关卡加载过程 fix

master
chendian 1 year ago
parent 921f944d2f
commit b771cb38e3

@ -119,7 +119,7 @@ tracks/7/keys = {
} }
tracks/8/type = "value" tracks/8/type = "value"
tracks/8/imported = false tracks/8/imported = false
tracks/8/enabled = true tracks/8/enabled = false
tracks/8/path = NodePath("Status:is_speed_y_freeze") tracks/8/path = NodePath("Status:is_speed_y_freeze")
tracks/8/interp = 1 tracks/8/interp = 1
tracks/8/loop_wrap = true tracks/8/loop_wrap = true

@ -31,10 +31,10 @@ radius = 1.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_3u7mw"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_3u7mw"]
render_priority = 0 render_priority = 0
shader = ExtResource("3_ed424") shader = ExtResource("3_ed424")
shader_parameter/tex = ExtResource("4_fcd8a")
shader_parameter/flash_white = null shader_parameter/flash_white = null
shader_parameter/deformation_dir = Vector2(0, 0) shader_parameter/deformation_dir = Vector2(0, 0)
shader_parameter/deformation_rate = 0.0 shader_parameter/deformation_rate = 0.0
shader_parameter/tex = ExtResource("4_fcd8a")
[sub_resource type="Animation" id="Animation_dbjx6"] [sub_resource type="Animation" id="Animation_dbjx6"]
length = 0.001 length = 0.001
@ -65,7 +65,7 @@ tracks/1/keys = {
[sub_resource type="AnimationLibrary" id="AnimationLibrary_avnjy"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_avnjy"]
_data = { _data = {
&"RESET": SubResource("Animation_dbjx6") "RESET": SubResource("Animation_dbjx6")
} }
[sub_resource type="Curve" id="Curve_e7j3f"] [sub_resource type="Curve" id="Curve_e7j3f"]
@ -120,8 +120,8 @@ script = ExtResource("4_66r53")
[node name="Skill" type="AnimationPlayer" parent="."] [node name="Skill" type="AnimationPlayer" parent="."]
unique_name_in_owner = true unique_name_in_owner = true
libraries = { libraries = {
&"": SubResource("AnimationLibrary_avnjy"), "": SubResource("AnimationLibrary_avnjy"),
&"animation_library": ExtResource("6_pakq5") "animation_library": ExtResource("6_pakq5")
} }
script = ExtResource("6_h4xqy") script = ExtResource("6_h4xqy")

File diff suppressed because one or more lines are too long

@ -7,6 +7,4 @@ var level_mgr: LevelManager
var ui_mgr: UIManager var ui_mgr: UIManager
#全局状态 #全局状态
var is_level_loading: bool var is_level_loading: bool
var is_level_loading_contorl: bool
var currlevel_name: String
var is_control_pause: bool var is_control_pause: bool

@ -11,7 +11,7 @@ const input_alive_time: float = 0.5
const drag_ground: float = 20 const drag_ground: float = 20
const drag_air: float = 5 const drag_air: float = 5
#关卡 #关卡
const size_basic: Vector3 = Vector3(12.8, 5.12, 7.68) const size_basic: Vector3 = Vector3(12.8, 5.12, 7.68)
#ui #ui
const weapon_hide_duration: float = 2.0 const weapon_hide_duration: float = 2.0
const weapon_anime_duration: float = 0.1 const weapon_anime_duration: float = 0.1

@ -50,8 +50,10 @@ func set_body_scale(cfg: CharacterCfg) -> void:
collision.position = Vector3(0, half_height, 0) collision.position = Vector3(0, half_height, 0)
var shape: Shape3D = collision.shape var shape: Shape3D = collision.shape
if shape is CapsuleShape3D: if shape is CapsuleShape3D:
shape.radius = width var new_shape: CapsuleShape3D = CapsuleShape3D.new()
shape.height = height new_shape.radius = width
new_shape.height = height
collision.shape = new_shape
else: else:
collision.scale = body_scale collision.scale = body_scale
pushbox.position = Vector3(0, half_height, 0) pushbox.position = Vector3(0, half_height, 0)

@ -10,7 +10,7 @@ var velocity_cache: Vector3
func _process(delta) -> void: func _process(delta) -> void:
if Global.is_level_loading_contorl: return if Global.is_level_loading: return
if status.is_pause: return if status.is_pause: return
if status.is_be_throw: return if status.is_be_throw: return
var is_hit_floor: bool = update_on_floor(delta) var is_hit_floor: bool = update_on_floor(delta)

@ -16,9 +16,7 @@ func on_level_loading_start():
var player: Character = get_player() var player: Character = get_player()
if player: if player:
player.add_buff("freeze", -1) player.add_buff("freeze", -1)
for enemy in get_enemy_list(player_id): clear()
SignalManager.character_die.emit(enemy.id())
destroy_character(enemy.id())
func on_level_loading_end(): func on_level_loading_end():
@ -67,6 +65,20 @@ func destroy_character(id: int) -> void:
return return
func clear() -> void:
var destroy_list: Array[int] = []
var player: Character = get_player()
for id in character_map:
if id == player.id():
continue
if id == player.get_status("sub_character_id"):
continue
destroy_list.append(id)
for id in destroy_list:
SignalManager.character_die.emit(id)
destroy_character(id)
func get_character(id: int) -> Character: func get_character(id: int) -> Character:
if id in character_map: if id in character_map:
return character_map[id] as Character return character_map[id] as Character

@ -22,7 +22,6 @@ func init():
var level_instance_list: Array[LevelInstance] = level.get_level_instance_list() var level_instance_list: Array[LevelInstance] = level.get_level_instance_list()
for level_instance in level_instance_list: for level_instance in level_instance_list:
var level_id_list: Array[Vector3i] = get_level_id_list(level_instance.get_global_position(), level_instance.size) var level_id_list: Array[Vector3i] = get_level_id_list(level_instance.get_global_position(), level_instance.size)
# print("xx", level_instance.name, ":", level_id_list)
for level_id in level_id_list: for level_id in level_id_list:
if level_id in level_instance_dict: if level_id in level_instance_dict:
print("关卡id重复", level_id) print("关卡id重复", level_id)
@ -67,9 +66,9 @@ func set_player_position(pos: Vector3) -> void:
if cur_level_instance: if cur_level_instance:
if new_level_instance == cur_level_instance: if new_level_instance == cur_level_instance:
return return
#todo 销毁原关卡实体 并存档
cur_level_instance.set_focus_from(true) cur_level_instance.set_focus_from(true)
SignalManager.level_loading_start.emit()
#创建关卡内角色 #创建关卡内角色
for character_spot: LevelInstance.ChacacterSpot in new_level_instance.get_character_spots(): for character_spot: LevelInstance.ChacacterSpot in new_level_instance.get_character_spots():
if not character_spot.cfg: if not character_spot.cfg:
@ -82,6 +81,7 @@ func set_player_position(pos: Vector3) -> void:
SignalManager.level_size_change.emit(cur_level_instance.level_size()) SignalManager.level_size_change.emit(cur_level_instance.level_size())
SignalManager.level_pos_change.emit(cur_level_instance.level_pos()) SignalManager.level_pos_change.emit(cur_level_instance.level_pos())
SignalManager.level_loading_end.emit()
func get_level_id_list(pos: Vector3, size: Vector3i) -> Array[Vector3i]: func get_level_id_list(pos: Vector3, size: Vector3i) -> Array[Vector3i]:
var size_basic: Vector3 = Setting.size_basic var size_basic: Vector3 = Setting.size_basic

Loading…
Cancel
Save