diff --git a/scenes/main/combat_s2.gd b/scenes/main/combat_s2.gd index a56f58d..fdb7fa0 100644 --- a/scenes/main/combat_s2.gd +++ b/scenes/main/combat_s2.gd @@ -9,6 +9,7 @@ var _player_node: Node2D = null ## 世界渲染(MultiMeshInstance2D,§4.4 渲染优化) var _bullet_mm: MultiMesh = null var _enemy_mm: MultiMesh = null +var _enemy_bullet_mm: MultiMesh = null ## UI 层引用 var _hud_layer: CanvasLayer = null @@ -93,6 +94,7 @@ func _input(event: InputEvent) -> void: func _process(delta: float) -> void: # 世界渲染同步(SoA → MultiMesh) BulletManager.sync_multimesh(_bullet_mm) + EnemyBulletManager.sync_multimesh(_enemy_bullet_mm) EnemyManager.sync_multimesh(_enemy_mm) _refresh_hud() _dps_poll_timer -= delta @@ -179,6 +181,20 @@ func _setup_world_view() -> void: bullet_mmi.material = bullet_mat add_child(bullet_mmi) + # 敌方子弹渲染器(红粉色 modulate,区分玩家黄弹) + _enemy_bullet_mm = MultiMesh.new() + _enemy_bullet_mm.transform_format = MultiMesh.TRANSFORM_2D + _enemy_bullet_mm.mesh = quad + _enemy_bullet_mm.instance_count = EnemyBulletManager.MAX_ENEMY_BULLETS + _enemy_bullet_mm.visible_instance_count = 0 + var eb_mmi := MultiMeshInstance2D.new() + eb_mmi.multimesh = _enemy_bullet_mm + eb_mmi.modulate = Color(1.0, 0.35, 0.5) + var eb_mat := ShaderMaterial.new() + eb_mat.shader = load("res://shaders/bullet_glow.gdshader") + eb_mmi.material = eb_mat + add_child(eb_mmi) + func _setup_combat_manager() -> void: _cm = Node.new() _cm.set_script(load("res://scripts/domain/combat/combat_manager.gd"))