fix metal plate pickup

This commit is contained in:
2026-04-23 13:08:44 +03:00
parent e956c4353c
commit 9981ed1ae3
3 changed files with 52 additions and 13 deletions
+28
View File
@@ -19,6 +19,7 @@ var dead: bool = false
var damage_modifier: float = 1.2
@onready var mesh_node: MeshInstance3D = $PlateMesh
@onready var tooltip: Label3D = $Tooltip
var plate_mat: StandardMaterial3D
const COLOR_IDLE := Color(0.6, 0.65, 0.72)
@@ -26,8 +27,35 @@ const COLOR_IMPACT := Color(1.0, 1.0, 1.0)
func _ready() -> void:
add_to_group("kickable")
add_to_group("interactable")
plate_mat = mesh_node.material_override.duplicate() as StandardMaterial3D
mesh_node.material_override = plate_mat
tooltip.visible = false
func _process(_delta: float) -> void:
if dead:
tooltip.visible = false
return
var players := get_tree().get_nodes_in_group("player")
if players.is_empty():
tooltip.visible = false
return
var p := players[0] as Node3D
tooltip.visible = p != null and global_position.distance_to(p.global_position) < 2.5
func interact(player: Node) -> void:
if dead:
return
player.call("apply_upgrade_armor")
dead = true
set_physics_process(false)
tooltip.visible = false
remove_from_group("interactable")
remove_from_group("kickable")
var tw := create_tween()
tw.tween_property(self, "scale", Vector3(1.4, 0.1, 1.4), 0.15)
tw.tween_property(self, "scale", Vector3(0.0, 0.0, 0.0), 0.1)
tw.tween_callback(queue_free)
func apply_collision_damage(dmg: float) -> void:
_take_damage(dmg)