fix metal plate pickup
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user