Implement rig animation controls in the test harness
- Added a new animation specification document for Phase 9 Task 5 detailing the requirements for rig animation controls. - Introduced a new `StickmanRig` script to manage the facing direction and joint bending for the rig. - Implemented UI elements in the test harness for selecting animations, controlling playback (play/pause/resume/stop), and toggling loop mode. - Enhanced the `test_harness.gd` script to handle animation playback state and UI interactions. - Updated documentation in `AGENTS.md`, `README.md`, and `RIGGING.md` to reflect the new animation features.
This commit is contained in:
+166
-39
@@ -1,5 +1,7 @@
|
||||
[gd_scene format=3 uid="uid://dr5ef3l2var2s"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b4rsae8suaxj7" path="res://scripts/stickman_rig.gd" id="1_rig_script"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_f0s26"]
|
||||
script/source = "@tool
|
||||
extends Node2D
|
||||
@@ -28,7 +30,6 @@ joint_two_bone2d_node = NodePath("Torso/RightUpperArm/RightLowerArm")
|
||||
|
||||
[sub_resource type="SkeletonModification2DTwoBoneIK" id="SkeletonModification2DTwoBoneIK_f0s26"]
|
||||
target_nodepath = NodePath("../IK_Targets/Left_Hand")
|
||||
flip_bend_direction = true
|
||||
joint_one_bone_idx = 2
|
||||
joint_one_bone2d_node = NodePath("Torso/LeftUpperArm")
|
||||
joint_two_bone_idx = 3
|
||||
@@ -43,6 +44,7 @@ joint_two_bone2d_node = NodePath("Torso/RightUpperLeg/RightLowerLeg")
|
||||
|
||||
[sub_resource type="SkeletonModification2DTwoBoneIK" id="SkeletonModification2DTwoBoneIK_2leu7"]
|
||||
target_nodepath = NodePath("../IK_Targets/Left_Leg")
|
||||
flip_bend_direction = true
|
||||
joint_one_bone_idx = 6
|
||||
joint_one_bone2d_node = NodePath("Torso/LeftUpperLeg")
|
||||
joint_two_bone_idx = 7
|
||||
@@ -59,6 +61,7 @@ constraint_angle_invert = true
|
||||
constraint_in_localspace = true
|
||||
|
||||
[sub_resource type="SkeletonModificationStack2D" id="SkeletonModificationStack2D_j4hao"]
|
||||
enabled = true
|
||||
modification_count = 5
|
||||
modifications/0 = SubResource("SkeletonModification2DTwoBoneIK_yvxej")
|
||||
modifications/1 = SubResource("SkeletonModification2DTwoBoneIK_f0s26")
|
||||
@@ -68,6 +71,18 @@ modifications/4 = SubResource("SkeletonModification2DLookAt_j4hao")
|
||||
|
||||
[sub_resource type="Animation" id="Animation_2leu7"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:facing_profile")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [2]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ylko5"]
|
||||
length = 0.8
|
||||
@@ -75,67 +90,67 @@ loop_mode = 1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("IK_Targets/Torso:position")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/path = NodePath(".:facing_profile")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 10), Vector2(0, -15), Vector2(0, 10), Vector2(0, -15), Vector2(0, 10)]
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("IK_Targets/Head:position")
|
||||
tracks/1/path = NodePath("IK_Targets/Torso:position")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(100, -614), Vector2(100, -639), Vector2(100, -614), Vector2(100, -639), Vector2(100, -614)]
|
||||
"values": [Vector2(0, 10), Vector2(0, -15), Vector2(0, 10), Vector2(0, -15), Vector2(0, 10)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("IK_Targets/Right_Leg:position")
|
||||
tracks/2/path = NodePath("IK_Targets/Head:position")
|
||||
tracks/2/interp = 2
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(110, 390), Vector2(0, 397), Vector2(-110, 380), Vector2(-20, 320), Vector2(110, 390)]
|
||||
"values": [Vector2(-100, -614), Vector2(-100, -639), Vector2(-100, -614), Vector2(-100, -639), Vector2(-100, -614)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("IK_Targets/Left_Leg:position")
|
||||
tracks/3/path = NodePath("IK_Targets/Right_Leg:position")
|
||||
tracks/3/interp = 2
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-110, 380), Vector2(-20, 320), Vector2(110, 390), Vector2(0, 397), Vector2(-110, 380)]
|
||||
"values": [Vector2(-110, 390), Vector2(0, 397), Vector2(110, 380), Vector2(20, 320), Vector2(-110, 390)]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("IK_Targets/Right_Hand:position")
|
||||
tracks/4/path = NodePath("IK_Targets/Left_Leg:position")
|
||||
tracks/4/interp = 2
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-90, 110), Vector2(0, 115), Vector2(90, 110), Vector2(0, 115), Vector2(-90, 110)]
|
||||
"values": [Vector2(110, 380), Vector2(20, 320), Vector2(-110, 390), Vector2(0, 397), Vector2(110, 380)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("IK_Targets/Left_Hand:position")
|
||||
tracks/5/path = NodePath("IK_Targets/Right_Hand:position")
|
||||
tracks/5/interp = 2
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
@@ -144,25 +159,121 @@ tracks/5/keys = {
|
||||
"update": 0,
|
||||
"values": [Vector2(90, 110), Vector2(0, 115), Vector2(-90, 110), Vector2(0, 115), Vector2(90, 110)]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("IK_Targets/Left_Hand:position")
|
||||
tracks/6/interp = 2
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-90, 110), Vector2(0, 115), Vector2(90, 110), Vector2(0, 115), Vector2(-90, 110)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_t75yq"]
|
||||
length = 0.8
|
||||
loop_mode = 1
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:facing_profile")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [1]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("IK_Targets/Torso:position")
|
||||
tracks/1/interp = 2
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 10), Vector2(0, -15), Vector2(0, 10), Vector2(0, -15), Vector2(0, 10)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("IK_Targets/Head:position")
|
||||
tracks/2/interp = 2
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(100, -614), Vector2(100, -639), Vector2(100, -614), Vector2(100, -639), Vector2(100, -614)]
|
||||
}
|
||||
tracks/3/type = "value"
|
||||
tracks/3/imported = false
|
||||
tracks/3/enabled = true
|
||||
tracks/3/path = NodePath("IK_Targets/Right_Leg:position")
|
||||
tracks/3/interp = 2
|
||||
tracks/3/loop_wrap = true
|
||||
tracks/3/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(110, 390), Vector2(0, 397), Vector2(-110, 380), Vector2(-20, 320), Vector2(110, 390)]
|
||||
}
|
||||
tracks/4/type = "value"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("IK_Targets/Left_Leg:position")
|
||||
tracks/4/interp = 2
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-110, 380), Vector2(-20, 320), Vector2(110, 390), Vector2(0, 397), Vector2(-110, 380)]
|
||||
}
|
||||
tracks/5/type = "value"
|
||||
tracks/5/imported = false
|
||||
tracks/5/enabled = true
|
||||
tracks/5/path = NodePath("IK_Targets/Right_Hand:position")
|
||||
tracks/5/interp = 2
|
||||
tracks/5/loop_wrap = true
|
||||
tracks/5/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-90, 110), Vector2(0, 115), Vector2(90, 110), Vector2(0, 115), Vector2(-90, 110)]
|
||||
}
|
||||
tracks/6/type = "value"
|
||||
tracks/6/imported = false
|
||||
tracks/6/enabled = true
|
||||
tracks/6/path = NodePath("IK_Targets/Left_Hand:position")
|
||||
tracks/6/interp = 2
|
||||
tracks/6/loop_wrap = true
|
||||
tracks/6/keys = {
|
||||
"times": PackedFloat32Array(0, 0.2, 0.4, 0.6, 0.8),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(90, 110), Vector2(0, 115), Vector2(-90, 110), Vector2(0, 115), Vector2(90, 110)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_t75yq"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_2leu7"),
|
||||
&"walk_right": SubResource("Animation_ylko5")
|
||||
&"walk_left": SubResource("Animation_ylko5"),
|
||||
&"walk_right": SubResource("Animation_t75yq")
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_6rw38"]
|
||||
|
||||
[node name="Master" type="Node2D" unique_id=319103476]
|
||||
script = ExtResource("1_rig_script")
|
||||
|
||||
[node name="Body" type="Node2D" parent="." unique_id=327811712]
|
||||
|
||||
[node name="Head" type="Node2D" parent="Body" unique_id=864822355]
|
||||
position = Vector2(-0.03859164, -453.50787)
|
||||
rotation = 0.00055408623
|
||||
scale = Vector2(0.9999996, 0.9999996)
|
||||
script = SubResource("GDScript_f0s26")
|
||||
|
||||
[node name="Body" type="Line2D" parent="Body" unique_id=1290443463]
|
||||
position = Vector2(9.313226e-10, 10.000001)
|
||||
rotation = -3.1415925
|
||||
@@ -171,64 +282,71 @@ width = 16.0
|
||||
default_color = Color(0.445488, 0.445488, 0.445488, 1)
|
||||
|
||||
[node name="LeftUpperLeg" type="Line2D" parent="Body" unique_id=199373156]
|
||||
position = Vector2(1.6098846e-05, 10.000002)
|
||||
rotation = 0.4947604
|
||||
position = Vector2(1.6037084e-05, 10.000003)
|
||||
rotation = 0.55427897
|
||||
points = PackedVector2Array(0, 0, 0, 200)
|
||||
width = 16.0
|
||||
default_color = Color(0.445488, 0.445488, 0.445488, 1)
|
||||
|
||||
[node name="RightUpperLeg" type="Line2D" parent="Body" unique_id=1396556308]
|
||||
position = Vector2(-2.3252098e-05, 10.000022)
|
||||
rotation = -0.49392816
|
||||
position = Vector2(-2.4553774e-05, 10.000021)
|
||||
rotation = -0.43021643
|
||||
scale = Vector2(0.99999994, 0.99999994)
|
||||
points = PackedVector2Array(0, 0, 0, 200)
|
||||
width = 16.0
|
||||
default_color = Color(0.445488, 0.445488, 0.445488, 1)
|
||||
|
||||
[node name="LeftLowerLeg" type="Line2D" parent="Body" unique_id=1590485904]
|
||||
position = Vector2(-94.96416, 186.0165)
|
||||
rotation = 0.0051915743
|
||||
position = Vector2(-105.26607, 180.05603)
|
||||
rotation = 0.023672067
|
||||
scale = Vector2(0.99999994, 0.99999994)
|
||||
points = PackedVector2Array(0, 0, 0, 200)
|
||||
width = 16.0
|
||||
default_color = Color(0.445488, 0.445488, 0.445488, 1)
|
||||
|
||||
[node name="RightLowerLeg" type="Line2D" parent="Body" unique_id=29203948]
|
||||
position = Vector2(94.817635, 186.09546)
|
||||
rotation = -0.0034907677
|
||||
scale = Vector2(0.9999998, 0.9999998)
|
||||
position = Vector2(83.4135, 191.77509)
|
||||
rotation = -0.13332568
|
||||
scale = Vector2(0.9999997, 0.9999997)
|
||||
points = PackedVector2Array(0, 0, 0, 200)
|
||||
width = 16.0
|
||||
default_color = Color(0.445488, 0.445488, 0.445488, 1)
|
||||
|
||||
[node name="LeftUpperArm" type="Line2D" parent="Body" unique_id=744524157]
|
||||
position = Vector2(9.313226e-10, -238)
|
||||
rotation = 1.6184965
|
||||
rotation = -0.48905078
|
||||
points = PackedVector2Array(0, 0, 0, 175)
|
||||
width = 16.0
|
||||
default_color = Color(0.445488, 0.445488, 0.445488, 1)
|
||||
|
||||
[node name="RightUpperArm" type="Line2D" parent="Body" unique_id=1593646765]
|
||||
position = Vector2(9.313226e-10, -238)
|
||||
rotation = -1.6184964
|
||||
rotation = 0.48905125
|
||||
scale = Vector2(0.99999994, 0.99999994)
|
||||
points = PackedVector2Array(0, 0, 0, 175)
|
||||
width = 16.0
|
||||
default_color = Color(0.445488, 0.445488, 0.445488, 1)
|
||||
|
||||
[node name="LeftLowerArm" type="Line2D" parent="Body" unique_id=2142117097]
|
||||
position = Vector2(-167.80888, -246.01059)
|
||||
rotation = 3.1406152
|
||||
position = Vector2(78.92438, -89.6931)
|
||||
rotation = -0.055406693
|
||||
points = PackedVector2Array(0, 0, 0, 200)
|
||||
width = 16.0
|
||||
default_color = Color(0.445488, 0.445488, 0.445488, 1)
|
||||
|
||||
[node name="RightLowerArm" type="Line2D" parent="Body" unique_id=1200980480]
|
||||
position = Vector2(167.80891, -246.01057)
|
||||
rotation = -3.1406155
|
||||
position = Vector2(-78.924484, -89.69313)
|
||||
rotation = 0.055405635
|
||||
points = PackedVector2Array(0, 0, 0, 200)
|
||||
width = 16.0
|
||||
default_color = Color(0.445488, 0.445488, 0.445488, 1)
|
||||
|
||||
[node name="Head" type="Node2D" parent="Body" unique_id=864822355]
|
||||
position = Vector2(28.397142, -447.61594)
|
||||
rotation = 0.40666866
|
||||
scale = Vector2(0.9999996, 0.9999996)
|
||||
script = SubResource("GDScript_f0s26")
|
||||
|
||||
[node name="Skeleton2D" type="Skeleton2D" parent="." unique_id=1854735445]
|
||||
rotation = -0.0006991282
|
||||
modification_stack = SubResource("SkeletonModificationStack2D_j4hao")
|
||||
@@ -240,16 +358,17 @@ rest = Transform2D(0.99999976, 0.00069912814, -0.00069912814, 0.99999976, 0, 0)
|
||||
|
||||
[node name="Head" type="Bone2D" parent="Skeleton2D/Torso" unique_id=1487357366]
|
||||
position = Vector2(-0.12882307, -391.5079)
|
||||
rotation = 0.00055408623
|
||||
scale = Vector2(0.9999996, 0.9999996)
|
||||
rest = Transform2D(0.9998273, 0.0005539903, -0.0005539903, 0.9998273, -0.12882307, -391.5079)
|
||||
auto_calculate_length_and_angle = false
|
||||
length = 90.0
|
||||
bone_angle = -90.0
|
||||
metadata/_local_pose_override_enabled_ = true
|
||||
|
||||
[node name="RemoteTransform2D" type="RemoteTransform2D" parent="Skeleton2D/Torso/Head" unique_id=396112729]
|
||||
position = Vector2(0.050337255, -72.00002)
|
||||
remote_path = NodePath("../../../../Body/Head")
|
||||
update_scale = false
|
||||
|
||||
[node name="RayCast_Aim" type="RayCast2D" parent="Skeleton2D/Torso/Head" unique_id=2000000004]
|
||||
position = Vector2(0, -90)
|
||||
@@ -262,6 +381,7 @@ rest = Transform2D(0.9988364, 0.04768082, -0.04768082, 0.9988364, 0, -248)
|
||||
auto_calculate_length_and_angle = false
|
||||
length = 168.0
|
||||
bone_angle = -180.0
|
||||
metadata/_local_pose_override_enabled_ = true
|
||||
|
||||
[node name="LeftLowerArm" type="Bone2D" parent="Skeleton2D/Torso/LeftUpperArm" unique_id=721380545]
|
||||
position = Vector2(-168, 0)
|
||||
@@ -270,6 +390,7 @@ rest = Transform2D(0.9987903, -0.04865717, 0.04865717, 0.9987903, -168, 0)
|
||||
auto_calculate_length_and_angle = false
|
||||
length = 200.0
|
||||
bone_angle = -90.0
|
||||
metadata/_local_pose_override_enabled_ = true
|
||||
|
||||
[node name="RemoteTransform2D" type="RemoteTransform2D" parent="Skeleton2D/Torso/LeftUpperArm/LeftLowerArm" unique_id=1189277122]
|
||||
position = Vector2(3.0517578e-05, 1.9073486e-06)
|
||||
@@ -287,6 +408,7 @@ rest = Transform2D(0.9988364, -0.047680702, 0.047680702, 0.9988364, 0, -248)
|
||||
auto_calculate_length_and_angle = false
|
||||
length = 168.00006
|
||||
bone_angle = 0.0
|
||||
metadata/_local_pose_override_enabled_ = true
|
||||
|
||||
[node name="RightLowerArm" type="Bone2D" parent="Skeleton2D/Torso/RightUpperArm" unique_id=1018820563]
|
||||
position = Vector2(168, 0)
|
||||
@@ -295,6 +417,7 @@ rest = Transform2D(0.048656836, -0.9987903, 0.9987903, 0.048656836, 168, 0)
|
||||
auto_calculate_length_and_angle = false
|
||||
length = 200.0
|
||||
bone_angle = 0.0
|
||||
metadata/_local_pose_override_enabled_ = true
|
||||
|
||||
[node name="RemoteTransform2D" type="RemoteTransform2D" parent="Skeleton2D/Torso/RightUpperArm/RightLowerArm" unique_id=1282597655]
|
||||
rotation = -1.5707964
|
||||
@@ -311,6 +434,7 @@ rest = Transform2D(0.88005984, 0.47480857, -0.47480857, 0.88005984, -9.536743e-0
|
||||
auto_calculate_length_and_angle = false
|
||||
length = 200.0
|
||||
bone_angle = 90.0
|
||||
metadata/_local_pose_override_enabled_ = true
|
||||
|
||||
[node name="LeftLowerLeg" type="Bone2D" parent="Skeleton2D/Torso/LeftUpperLeg" unique_id=81288294]
|
||||
position = Vector2(0, 200)
|
||||
@@ -319,6 +443,7 @@ rest = Transform2D(0.4702357, 0.8825176, -0.8825176, 0.4702357, 0, 200)
|
||||
auto_calculate_length_and_angle = false
|
||||
length = 200.0
|
||||
bone_angle = 0.0
|
||||
metadata/_local_pose_override_enabled_ = true
|
||||
|
||||
[node name="RemoteTransform2D" type="RemoteTransform2D" parent="Skeleton2D/Torso/LeftUpperLeg/LeftLowerLeg" unique_id=1673135542]
|
||||
rotation = -1.5707964
|
||||
@@ -335,6 +460,7 @@ rest = Transform2D(0.8800552, -0.47482592, 0.47482592, 0.8800552, 0, 0)
|
||||
auto_calculate_length_and_angle = false
|
||||
length = 200.0
|
||||
bone_angle = 90.0
|
||||
metadata/_local_pose_override_enabled_ = true
|
||||
|
||||
[node name="RightLowerLeg" type="Bone2D" parent="Skeleton2D/Torso/RightUpperLeg" unique_id=1819999778]
|
||||
position = Vector2(0, 200)
|
||||
@@ -344,6 +470,7 @@ rest = Transform2D(-0.47026652, 0.8825017, -0.8825017, -0.47026652, 0, 200)
|
||||
auto_calculate_length_and_angle = false
|
||||
length = 200.0
|
||||
bone_angle = 0.0
|
||||
metadata/_local_pose_override_enabled_ = true
|
||||
|
||||
[node name="RemoteTransform2D" type="RemoteTransform2D" parent="Skeleton2D/Torso/RightUpperLeg/RightLowerLeg" unique_id=278100224]
|
||||
rotation = -1.5707964
|
||||
|
||||
Reference in New Issue
Block a user