diff --git a/scenes/icepick_arm.tscn b/scenes/icepick_arm.tscn new file mode 100644 index 0000000..66566b5 --- /dev/null +++ b/scenes/icepick_arm.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=3 format=3 uid="uid://c4aghhlbletw"] + +[ext_resource type="PackedScene" uid="uid://ccggyhqyue6fr" path="res://assets/pickaxe_arm.glb" id="1_grvsx"] +[ext_resource type="Script" path="res://scripts/arm.gd" id="2_u82st"] + +[node name="pickaxe_arm" instance=ExtResource("1_grvsx")] +script = ExtResource("2_u82st") + +[node name="Sphere_004" parent="Armature/Skeleton3D" index="0"] +transform = Transform3D(0.919691, 0, 0, 0, 0.919691, 0, 0, 0, 0.919691, 0, -9.53674e-07, 0) + +[node name="Sphere_001" parent="Armature/Skeleton3D" index="1"] +transform = Transform3D(0.919691, 0, 0, 0, 0.919691, 0, 0, 0, 0.919691, 0, 0, 0) + +[node name="SkeletonIK3D" type="SkeletonIK3D" parent="Armature/Skeleton3D" index="3"] +root_bone = &"Bone" +tip_bone = &"Bone.011" +target_node = NodePath("../../Target") + +[node name="Target" type="Marker3D" parent="Armature" index="1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10.2, 0) diff --git a/scripts/arm.gd b/scripts/arm.gd index e3a16cd..773ab2f 100644 --- a/scripts/arm.gd +++ b/scripts/arm.gd @@ -1,6 +1,6 @@ extends Node3D -@export var key: Key +@export var action: StringName # Called when the node enters the scene tree for the first time. @@ -11,3 +11,12 @@ func _ready() -> void: # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass + + +func _arm_enabled(arm): + print_debug("enabled!") + pass + +func _arm_disabled(arm): + print_debug("disabled!") + pass diff --git a/scripts/body.gd b/scripts/body.gd index 8affe25..001fcb4 100644 --- a/scripts/body.gd +++ b/scripts/body.gd @@ -2,12 +2,20 @@ extends Node3D @export var arms: Array[Node] +signal arm_enabled(arm) +signal arm_disabled(arm) + # Called when the node enters the scene tree for the first time. func _ready() -> void: - pass # Replace with function body. - + for arm in arms: + arm_enabled.connect(arm.arm_enabled) + arm_disabled.connect(arm.arm_disabled) # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass +func _physics_process(delta: float) -> void: + for arm in arms: + if Input.is_action_just_pressed(arm.action): + arm_enabled.emit(arm) + if Input.is_action_just_released(arm.action): + arm_disabled.emit(arm)