adjust aiming direction with IK

pull/28/head
Dr. Sascha Woitschetzki 2025-07-21 15:09:37 +07:00
parent 181ee364a8
commit e05cb4c121
2 changed files with 96 additions and 70 deletions

@ -31255,43 +31255,43 @@ bones/0/name = "root"
bones/0/parent = -1
bones/0/rest = Transform3D(1, 0, 2.3841855e-07, 0, 1, 0, -2.3841855e-07, 0, 1, 0, 0, 0)
bones/0/enabled = true
bones/0/position = Vector3(0, 0.00010280854, 0)
bones/0/rotation = Quaternion(-1.0940686e-11, 0.00031804445, 1.8949824e-11, 1)
bones/0/position = Vector3(0, 0, 0)
bones/0/rotation = Quaternion(-2.8600409e-09, -0.21643952, -1.2900808e-08, 0.97629607)
bones/0/scale = Vector3(1, 1, 1)
bones/1/name = "hips"
bones/1/parent = 0
bones/1/rest = Transform3D(1, 0, -2.3841855e-07, 0, 1, 0, 2.3841855e-07, 0, 1, 0, 0.40566343, 0)
bones/1/enabled = true
bones/1/position = Vector3(-1.784468e-25, 0.3915765, 7.4846016e-19)
bones/1/rotation = Quaternion(0.0004177531, 0.042972714, -6.0253275e-05, 0.99907625)
bones/1/position = Vector3(-1.7763568e-15, 0.39206383, -4.2351642e-22)
bones/1/rotation = Quaternion(-3.2009018e-09, -0.1826899, -1.1047754e-08, 0.98317057)
bones/1/scale = Vector3(1, 1, 1)
bones/2/name = "spine"
bones/2/parent = 1
bones/2/rest = Transform3D(1, 0, 1.4210855e-14, 0, 1, 0, -1.4210855e-14, 0, 1, 0, 0.1919775, 0)
bones/2/enabled = true
bones/2/position = Vector3(0, 0.1919775, 0)
bones/2/rotation = Quaternion(0.00048991624, -0.00051837345, 6.333066e-05, 0.9999998)
bones/2/rotation = Quaternion(0.028270612, -0.22488676, -0.04717921, 0.97283137)
bones/2/scale = Vector3(1, 1, 1)
bones/3/name = "chest"
bones/3/parent = 2
bones/3/rest = Transform3D(1, 0, 0, 0, 0.99999994, 0, 0, 0, 1, 0, 0.37498796, 0)
bones/3/enabled = true
bones/3/position = Vector3(0, 0.37498796, 0)
bones/3/rotation = Quaternion(0.00019600886, -0.000101350095, 8.938414e-06, 1)
bones/3/rotation = Quaternion(-2.0235038e-09, 0.3907311, 2.8329053e-08, 0.92050487)
bones/3/scale = Vector3(1, 0.99999994, 1)
bones/4/name = "upperarm.l"
bones/4/parent = 3
bones/4/rest = Transform3D(0.057284202, 0.9983573, -4.5386042e-07, -3.8742996e-07, 4.768369e-07, 0.99999976, 0.9983573, -0.057284202, 4.1410917e-07, 0.21200737, 0.13413215, 8.402462e-08)
bones/4/enabled = true
bones/4/position = Vector3(0.21191402, 0.1340453, -0.00018042425)
bones/4/rotation = Quaternion(-0.56101793, -0.06095207, -0.6422821, 0.518669)
bones/4/position = Vector3(0.23782511, 0.13413225, 0.07073039)
bones/4/rotation = Quaternion(-0.5327466, -0.38964266, -0.7511684, -0.010284676)
bones/4/scale = Vector3(0.99999934, 0.99999934, 0.99999976)
bones/5/name = "lowerarm.l"
bones/5/parent = 4
bones/5/rest = Transform3D(0.99388725, 0.11040192, -1.1900745e-07, -0.110401966, 0.9938869, 3.2883107e-09, 1.1864304e-07, 9.870443e-09, 0.99999994, -3.219665e-09, 0.2418973, -1.1940561e-07)
bones/5/enabled = true
bones/5/position = Vector3(-3.219665e-09, 0.2418973, -1.1940561e-07)
bones/5/rotation = Quaternion(1.0993076e-08, -4.433788e-08, -0.49550137, 0.8686072)
bones/5/rotation = Quaternion(9.53509e-09, -6.659632e-08, -0.7050866, 0.7091212)
bones/5/scale = Vector3(1.0000002, 0.9999999, 0.99999994)
bones/6/name = "wrist.l"
bones/6/parent = 5
@ -31305,28 +31305,28 @@ bones/7/parent = 6
bones/7/rest = Transform3D(1, 1.091039e-05, 2.662036e-07, -1.0910391e-05, 0.99999994, -2.4018103e-09, -2.6620367e-07, 2.398906e-09, 0.99999994, 9.0816243e-13, 0.073825836, 2.220446e-16)
bones/7/enabled = true
bones/7/position = Vector3(9.0816243e-13, 0.073825836, 2.220446e-16)
bones/7/rotation = Quaternion(-0.31997746, -0.32657832, 0.1445881, 0.877528)
bones/7/rotation = Quaternion(-0.33596215, 0.3571115, -0.3113091, 0.8140562)
bones/7/scale = Vector3(1, 0.99999994, 0.99999994)
bones/8/name = "handslot.l"
bones/8/parent = 7
bones/8/rest = Transform3D(-1.1920929e-07, 1, -3.2072357e-16, -0.99999994, -1.192093e-07, -4.553069e-09, -4.553069e-09, -2.2204463e-16, 0.99999994, 8.348149e-10, 0.09612507, -0.057500124)
bones/8/enabled = true
bones/8/position = Vector3(4.437712e-10, 0.096125185, -0.057500035)
bones/8/rotation = Quaternion(-0.00016770068, 0.00030877706, -0.7062343, 0.7079782)
bones/8/position = Vector3(8.348433e-10, 0.096125185, -0.057500035)
bones/8/rotation = Quaternion(-3.6586003e-09, 6.8781096e-09, -0.7071068, 0.7071067)
bones/8/scale = Vector3(0.99999994, 1, 0.99999994)
bones/9/name = "upperarm.r"
bones/9/parent = 3
bones/9/rest = Transform3D(0.05728419, -0.99835724, 4.4361707e-07, 5.6624367e-07, 4.7683673e-07, 0.99999976, -0.99835724, -0.05728419, 5.9262936e-07, -0.21200737, 0.13413215, 8.402462e-08)
bones/9/enabled = true
bones/9/position = Vector3(-0.21199329, 0.134085, -0.00020182574)
bones/9/rotation = Quaternion(-0.61880493, 0.0813487, 0.61738425, 0.47885242)
bones/9/position = Vector3(-0.20570403, 0.1341324, -0.072821945)
bones/9/rotation = Quaternion(-0.6303763, 0.26368794, 0.5050146, 0.5273088)
bones/9/scale = Vector3(0.9999993, 0.9999993, 0.99999976)
bones/10/name = "lowerarm.r"
bones/10/parent = 9
bones/10/rest = Transform3D(0.99388725, -0.11040192, 1.1900747e-07, 0.110401966, 0.9938869, 3.288313e-09, -1.1864305e-07, 9.870443e-09, 0.99999994, -7.1218566e-11, 0.24189733, -1.1940561e-07)
bones/10/enabled = true
bones/10/position = Vector3(-7.1218566e-11, 0.24189733, -1.1940561e-07)
bones/10/rotation = Quaternion(2.9678166e-08, 4.7537355e-08, 0.5185106, 0.85507125)
bones/10/rotation = Quaternion(3.359196e-08, 3.9002582e-08, 0.76466405, 0.6444292)
bones/10/scale = Vector3(1.0000002, 0.9999999, 0.99999994)
bones/11/name = "wrist.r"
bones/11/parent = 10
@ -31340,111 +31340,111 @@ bones/12/parent = 11
bones/12/rest = Transform3D(1, -1.091039e-05, -1.7863715e-07, 1.0910391e-05, 0.99999994, -2.4008375e-09, 1.786372e-07, 2.3988884e-09, 0.99999994, 1.3322676e-15, 0.073825836, 2.220446e-16)
bones/12/enabled = true
bones/12/position = Vector3(1.3322676e-15, 0.073825836, 2.220446e-16)
bones/12/rotation = Quaternion(-0.31800085, 0.30155295, -0.22607405, 0.86996084)
bones/12/rotation = Quaternion(-0.2046257, 0.5077341, 0.3203099, 0.7731339)
bones/12/scale = Vector3(1, 0.99999994, 0.99999994)
bones/13/name = "handslot.r"
bones/13/parent = 12
bones/13/rest = Transform3D(-1.1920929e-07, -1, 3.207168e-16, 0.99999994, -1.192093e-07, -4.553012e-09, 4.553012e-09, -2.2204463e-16, 0.99999994, -8.348149e-10, 0.09612507, -0.057500124)
bones/13/enabled = true
bones/13/position = Vector3(-1.5459904e-08, 0.096125126, -0.057499975)
bones/13/rotation = Quaternion(-8.6894266e-05, 4.1088664e-05, 0.7061989, 0.7080136)
bones/13/position = Vector3(-0.003275872, 0.09574351, -0.074703574)
bones/13/rotation = Quaternion(0.018248208, 0.017789543, 0.7072114, 0.70654273)
bones/13/scale = Vector3(0.99999994, 1, 0.99999994)
bones/14/name = "head"
bones/14/parent = 3
bones/14/rest = Transform3D(1, 0, 2.3841854e-07, 0, 1, 0, -2.3841854e-07, 0, 1, 0, 0.26879656, 0)
bones/14/enabled = true
bones/14/position = Vector3(0, 0.26879656, 0)
bones/14/rotation = Quaternion(-0.0005416243, -0.03074002, -5.4097804e-06, 0.99952734)
bones/14/rotation = Quaternion(-0.017512754, 0.17142966, 0.10093436, 0.97985584)
bones/14/scale = Vector3(1, 1, 1)
bones/15/name = "upperleg.l"
bones/15/parent = 1
bones/15/rest = Transform3D(1, -1.4221531e-07, -2.6560238e-08, -1.4305222e-07, -0.9993962, -0.034741182, -2.160345e-08, 0.034741133, -0.9993976, 0.17094506, 0.11358726, 1.3923272e-08)
bones/15/enabled = true
bones/15/position = Vector3(0.17094508, 0.1135872, -0.00040050622)
bones/15/rotation = Quaternion(0.9937241, 0.08330146, 0.073393986, 0.013664369)
bones/15/position = Vector3(0.20013013, 0.11078364, -0.030277956)
bones/15/rotation = Quaternion(0.89663213, 0.0868622, -0.43388677, 0.015750801)
bones/15/scale = Vector3(1, 0.9999998, 1.0000012)
bones/16/name = "lowerleg.l"
bones/16/parent = 15
bones/16/rest = Transform3D(1, 1.6129098e-07, 1.208564e-07, -1.3212028e-07, 0.9774329, -0.21124826, -1.5220138e-07, 0.21124834, 0.97743255, 3.5797574e-09, 0.2270775, -6.140325e-09)
bones/16/enabled = true
bones/16/position = Vector3(3.5797574e-09, 0.2270775, -6.140325e-09)
bones/16/rotation = Quaternion(0.20449843, 6.370045e-08, -1.3522428e-07, 0.9788669)
bones/16/rotation = Quaternion(0.24438089, 6.046063e-08, -1.7316562e-07, 0.96967936)
bones/16/scale = Vector3(1, 1.0000005, 1.0000001)
bones/17/name = "foot.l"
bones/17/parent = 16
bones/17/rest = Transform3D(1, 4.6433247e-08, 6.012356e-08, -7.592726e-08, 0.5855154, 0.8106606, 2.4383358e-09, -0.81066227, 0.5855142, 1.8334093e-10, 0.14943703, 9.660811e-10)
bones/17/enabled = true
bones/17/position = Vector3(1.8334093e-10, 0.14943703, 9.660811e-10)
bones/17/rotation = Quaternion(-0.51999766, -0.20842338, 0.044675738, 0.82714343)
bones/17/rotation = Quaternion(-0.54108834, -0.062926054, 0.0603443, 0.8364343)
bones/17/scale = Vector3(1, 1.0000008, 0.99999875)
bones/18/name = "toes.l"
bones/18/parent = 17
bones/18/rest = Transform3D(-1, -1.7553674e-09, 1.5174173e-07, -1.1045316e-07, 0.69410586, -0.719873, -1.0406117e-07, -0.7198729, -0.694106, -2.131959e-10, 0.16565003, 5.1714744e-09)
bones/18/enabled = true
bones/18/position = Vector3(-2.131959e-10, 0.16565003, 5.1714744e-09)
bones/18/rotation = Quaternion(-9.572115e-09, 0.92017806, -0.3915002, 7.8214086e-08)
bones/18/rotation = Quaternion(-9.7412585e-09, 0.9203548, -0.39108446, 7.830905e-08)
bones/18/scale = Vector3(1, 0.99999994, 1.0000001)
bones/19/name = "upperleg.r"
bones/19/parent = 1
bones/19/rest = Transform3D(1, 1.4961141e-07, -6.08626e-08, 1.4740668e-07, -0.9993962, -0.034741182, -6.6023446e-08, 0.034741133, -0.9993976, -0.17094506, 0.11358726, 1.3923272e-08)
bones/19/enabled = true
bones/19/position = Vector3(-0.17094508, 0.11358732, 0.0004005379)
bones/19/rotation = Quaternion(0.9970729, -0.029483221, 0.031287275, 0.063227035)
bones/19/position = Vector3(-0.1709451, 0.11358726, 6.4771823e-09)
bones/19/rotation = Quaternion(0.98653436, -0.10536158, -0.061947674, -0.108680725)
bones/19/scale = Vector3(1, 0.9999998, 1.0000012)
bones/20/name = "lowerleg.r"
bones/20/parent = 19
bones/20/rest = Transform3D(1, -1.61291e-07, -1.2085643e-07, 1.3212028e-07, 0.9774329, -0.21124826, 1.5220141e-07, 0.21124834, 0.97743255, -3.5797574e-09, 0.2270775, -6.140325e-09)
bones/20/enabled = true
bones/20/position = Vector3(-3.5797574e-09, 0.2270775, -6.140325e-09)
bones/20/rotation = Quaternion(0.2798373, -6.346644e-08, 1.960073e-07, 0.96004754)
bones/20/rotation = Quaternion(0.0019655824, -5.6433496e-08, 1.5559724e-08, 0.9999981)
bones/20/scale = Vector3(1, 1.0000005, 1.0000001)
bones/21/name = "foot.r"
bones/21/parent = 20
bones/21/rest = Transform3D(1, -1.5513157e-07, 2.9352182e-07, -1.4711539e-07, 0.5855154, 0.8106606, -2.9762074e-07, -0.81066227, 0.5855142, -1.8333904e-10, 0.14943703, 9.660859e-10)
bones/21/enabled = true
bones/21/position = Vector3(-1.8333904e-10, 0.14943703, 9.660859e-10)
bones/21/rotation = Quaternion(-0.5619069, 0.11402076, -0.008900544, 0.8192562)
bones/21/rotation = Quaternion(-0.46157384, 0.15737474, -0.05748793, 0.8711361)
bones/21/scale = Vector3(1, 1.0000008, 0.99999875)
bones/22/name = "toes.r"
bones/22/parent = 21
bones/22/rest = Transform3D(-1, 1.7553639e-09, -1.5174174e-07, 1.1045316e-07, 0.69410586, -0.719873, 1.0406118e-07, -0.7198729, -0.694106, 2.1319319e-10, 0.16565003, 5.171479e-09)
bones/22/enabled = true
bones/22/position = Vector3(2.1319319e-10, 0.16565003, 5.171479e-09)
bones/22/rotation = Quaternion(3.0355423e-08, 0.9203548, -0.39108446, -6.953561e-08)
bones/22/rotation = Quaternion(3.035973e-08, 0.9203548, -0.39108446, -6.953384e-08)
bones/22/scale = Vector3(1, 0.99999994, 1.0000001)
bones/23/name = "kneeIK.l"
bones/23/parent = 0
bones/23/rest = Transform3D(1, -2.5915057e-07, -3.8941417e-07, -3.8941423e-07, 0, -0.9999999, 2.591506e-07, 0.9999999, -1.00916915e-13, 0.17094491, 0.29231027, 0.57581246)
bones/23/enabled = true
bones/23/position = Vector3(0.17094491, 0.29247516, 0.5759774)
bones/23/rotation = Quaternion(0.7071068, -2.2930868e-07, -4.604875e-08, 0.7071068)
bones/23/position = Vector3(0.46929193, 0.29231024, 0.43669105)
bones/23/rotation = Quaternion(0.7071068, -2.2930229e-07, -4.605515e-08, 0.7071068)
bones/23/scale = Vector3(1, 0.9999999, 0.9999999)
bones/24/name = "control-toe-roll.l"
bones/24/parent = 0
bones/24/rest = Transform3D(1, 1.994847e-07, -2.1316282e-14, 2.1316282e-14, 0, 1, 1.994847e-07, -1, 0, 0.17094497, 0.025990263, 0.24578938)
bones/24/enabled = true
bones/24/position = Vector3(0.20205116, 0.026394421, 0.20250753)
bones/24/rotation = Quaternion(-0.7043244, -7.079499e-08, -7.026215e-08, 0.70987827)
bones/24/position = Vector3(0.27470604, 0.023186672, 0.256143)
bones/24/rotation = Quaternion(-0.6989447, 0.10712827, 0.10712827, 0.69894457)
bones/24/scale = Vector3(1, 1, 1)
bones/25/name = "control-heel-roll.l"
bones/25/parent = 24
bones/25/rest = Transform3D(-1, 4.6600026e-34, 1.4210875e-14, -4.6993156e-34, -1, -2.7664234e-22, 1.4210875e-14, -2.7664234e-22, 1, 1.945811e-08, 0.36283267, -2.4286129e-15)
bones/25/enabled = true
bones/25/position = Vector3(1.9449061e-08, 0.36283267, -2.4286129e-15)
bones/25/rotation = Quaternion(9.609895e-09, 1.7662254e-09, 0.98583835, -0.16769859)
bones/25/position = Vector3(1.945811e-08, 0.36283267, -2.4286129e-15)
bones/25/rotation = Quaternion(9.6579225e-09, 1.7795515e-09, 0.98571914, -0.1683977)
bones/25/scale = Vector3(1, 1, 1)
bones/26/name = "control-foot-roll.l"
bones/26/parent = 25
bones/26/rest = Transform3D(-1, -2.702424e-08, -2.1459303e-07, -1.3572199e-07, -0.69410604, 0.71987265, -1.6840436e-07, 0.71987265, 0.69410604, -1.1148217e-08, 0.21343614, -2.5094198e-15)
bones/26/enabled = true
bones/26/position = Vector3(-2.5933513e-08, 0.21343614, -5.1498223e-09)
bones/26/rotation = Quaternion(-1.0128852e-07, 0.39108434, 0.92035484, -3.3484394e-08)
bones/26/position = Vector3(-2.6049376e-08, 0.21343614, -5.171498e-09)
bones/26/rotation = Quaternion(-1.012734e-07, 0.39108434, 0.92035484, -3.3509146e-08)
bones/26/scale = Vector3(1, 0.9999999, 0.9999999)
bones/27/name = "heelIK.l"
bones/27/parent = 26
bones/27/rest = Transform3D(1, 1.7465582e-07, -7.540012e-08, -6.6951195e-08, 0.69410604, 0.7198727, 1.7806566e-07, -0.71987265, 0.6941061, 8.589882e-09, 0.16565004, -5.0913656e-09)
bones/27/enabled = true
bones/27/position = Vector3(8.536473e-09, 0.16565004, -2.4208708e-09)
bones/27/position = Vector3(8.589881e-09, 0.16565004, -2.4096307e-09)
bones/27/rotation = Quaternion(-0.39108434, -6.8850014e-08, -6.5628775e-08, 0.92035484)
bones/27/scale = Vector3(1, 0.9999999, 1)
bones/28/name = "IK-foot.l"
@ -31452,7 +31452,7 @@ bones/28/parent = 26
bones/28/rest = Transform3D(1, -6.217254e-15, 3.8941437e-07, -6.217254e-15, -1, 1.7293365e-22, 3.894144e-07, -2.5940218e-21, -0.99999994, 8.589882e-09, 0.16565004, -5.0913656e-09)
bones/28/enabled = true
bones/28/position = Vector3(8.589882e-09, 0.16565004, -5.0913656e-09)
bones/28/rotation = Quaternion(1, -2.3303943e-09, 1.9975572e-07, 1.129646e-12)
bones/28/rotation = Quaternion(1, -2.3313629e-09, 1.9977652e-07, -1.3421114e-15)
bones/28/scale = Vector3(1, 1, 0.99999994)
bones/29/name = "IK-toe.l"
bones/29/parent = 25
@ -31465,35 +31465,35 @@ bones/30/name = "kneeIK.r"
bones/30/parent = 0
bones/30/rest = Transform3D(1, -2.5915057e-07, 1.5099583e-07, 1.5099585e-07, 0, -0.9999999, 2.591506e-07, 0.9999999, 3.913066e-14, -0.17094518, 0.29231027, 0.57581234)
bones/30/enabled = true
bones/30/position = Vector3(-0.17094518, 0.29247516, 0.57597727)
bones/30/rotation = Quaternion(0.7071068, -3.824488e-08, 1.4501506e-07, 0.7071068)
bones/30/position = Vector3(-0.3253411, 0.2989459, 0.4951202)
bones/30/rotation = Quaternion(0.7071068, -3.8238483e-08, 1.4500867e-07, 0.7071068)
bones/30/scale = Vector3(1, 0.9999999, 0.9999999)
bones/31/name = "control-toe-roll.r"
bones/31/parent = 0
bones/31/rest = Transform3D(1, 1.9948473e-07, -7.1054274e-15, 7.1054274e-15, 0, 1, 1.9948473e-07, -1, 0, -0.1709451, 0.025990263, 0.24578929)
bones/31/enabled = true
bones/31/position = Vector3(-0.1709451, 0.027152533, 0.24722822)
bones/31/rotation = Quaternion(-0.7079277, -7.047974e-08, -7.058945e-08, 0.7062849)
bones/31/position = Vector3(-0.17094511, 0.025990263, 0.3700746)
bones/31/rotation = Quaternion(-0.7071068, -7.0528515e-08, -7.05285e-08, 0.7071068)
bones/31/scale = Vector3(1, 1, 1)
bones/32/name = "control-heel-roll.r"
bones/32/parent = 31
bones/32/rest = Transform3D(-1, 4.6600044e-34, 1.4210875e-14, -4.6993174e-34, -1, -2.7664213e-22, 1.4210875e-14, -2.7664213e-22, 1, 1.9458106e-08, 0.36283267, 2.4286129e-15)
bones/32/enabled = true
bones/32/position = Vector3(1.9458106e-08, 0.36283267, 2.136342e-10)
bones/32/rotation = Quaternion(-5.8071365e-09, 6.407014e-10, 0.9948528, 0.101331115)
bones/32/position = Vector3(0.007571359, 0.6197595, 2.3210177e-15)
bones/32/rotation = Quaternion(-1.4227276e-08, 3.7800945e-09, 0.96958256, 0.24476466)
bones/32/scale = Vector3(1, 1, 1)
bones/33/name = "control-foot-roll.r"
bones/33/parent = 32
bones/33/rest = Transform3D(-1, -2.7024187e-08, -2.1459297e-07, -1.3572199e-07, -0.69410604, 0.71987265, -1.6840428e-07, 0.71987265, 0.69410604, 3.7529415e-09, 0.21343614, 0)
bones/33/enabled = true
bones/33/position = Vector3(-1.10767155e-08, 0.21343614, 8.991798e-11)
bones/33/rotation = Quaternion(-1.0578508e-07, 0.39108434, 0.92035484, -2.587891e-08)
bones/33/position = Vector3(-1.114822e-08, 0.21343614, -2.5094192e-15)
bones/33/rotation = Quaternion(-1.05795515e-07, 0.39108434, 0.92035484, -2.5864264e-08)
bones/33/scale = Vector3(1, 0.9999999, 0.9999999)
bones/34/name = "heelIK.r"
bones/34/parent = 33
bones/34/rest = Transform3D(1, 1.7465578e-07, -7.5400145e-08, -6.695115e-08, 0.69410604, 0.7198727, 1.7806565e-07, -0.71987265, 0.6941061, -6.311275e-09, 0.16565004, 1.3660824e-09)
bones/34/enabled = true
bones/34/position = Vector3(-6.3112755e-09, 0.16565004, 2.75915e-09)
bones/34/position = Vector3(-6.3112755e-09, 0.16565004, 2.7069498e-09)
bones/34/rotation = Quaternion(-0.39108434, -6.885002e-08, -6.5628754e-08, 0.92035484)
bones/34/scale = Vector3(1, 0.9999999, 1)
bones/35/name = "IK-foot.r"
@ -31501,7 +31501,7 @@ bones/35/parent = 33
bones/35/rest = Transform3D(1, 8.881729e-16, 3.8941437e-07, 8.881729e-16, -1, -1.210544e-21, 3.894144e-07, 1.5564114e-21, -0.99999994, -2.1212436e-08, 0.16565004, 1.3660766e-09)
bones/35/enabled = true
bones/35/position = Vector3(-2.1212436e-08, 0.16565004, 1.3660766e-09)
bones/35/rotation = Quaternion(1, 3.7504853e-09, 1.9488023e-07, 7.4193536e-09)
bones/35/rotation = Quaternion(1, 3.7652574e-09, 1.9487908e-07, 7.4505815e-09)
bones/35/scale = Vector3(1, 1, 0.99999994)
bones/36/name = "IK-toe.r"
bones/36/parent = 32
@ -31514,38 +31514,46 @@ bones/37/name = "elbowIK.l"
bones/37/parent = 0
bones/37/rest = Transform3D(1, 2.0589563e-07, -2.842171e-14, 2.842171e-14, 0, 1, 2.0589563e-07, -1, 0, 0.45350748, 1.1067611, -0.5888594)
bones/37/enabled = true
bones/37/position = Vector3(0.4538927, 1.1058015, -0.58884)
bones/37/rotation = Quaternion(-0.7071068, -7.500853e-05, -7.50085e-05, 0.7071068)
bones/37/position = Vector3(0.69555855, 0.4532858, -0.08304638)
bones/37/rotation = Quaternion(-0.7071068, -7.279511e-08, -7.279509e-08, 0.7071068)
bones/37/scale = Vector3(1, 1, 1)
bones/38/name = "handIK.l"
bones/38/parent = 0
bones/38/rest = Transform3D(-2.3841855e-07, 0.99999976, -1.4210854e-14, -5.9604638e-08, -3.5527128e-15, 0.99999994, 0.9999999, 2.3841852e-07, 5.960464e-08, 0.7131815, 1.1067611, 2.5491414e-07)
bones/38/enabled = true
bones/38/position = Vector3(0.52073157, 0.7878952, -0.056568243)
bones/38/rotation = Quaternion(0.79548514, 0.0020823404, 0.60596925, 0.00045760418)
bones/38/position = Vector3(0.23445112, 0.9805997, 0.46837047)
bones/38/rotation = Quaternion(-0.44315913, 0.5510082, 0.5510082, 0.44315904)
bones/38/scale = Vector3(0.9999999, 0.99999976, 0.99999994)
bones/39/name = "elbowIK.r"
bones/39/parent = 0
bones/39/rest = Transform3D(1, 2.0589563e-07, -2.842171e-14, 2.842171e-14, 0, 1, 2.0589563e-07, -1, 0, -0.45350718, 1.1067611, -0.5888596)
bones/39/enabled = true
bones/39/position = Vector3(-0.45335817, 1.1059228, -0.5893418)
bones/39/rotation = Quaternion(-0.7071068, -7.500853e-05, -7.50085e-05, 0.7071068)
bones/39/position = Vector3(-0.45350718, 1.1067611, -0.5888596)
bones/39/rotation = Quaternion(-0.7071068, -7.279511e-08, -7.279509e-08, 0.7071068)
bones/39/scale = Vector3(1, 1, 1)
bones/40/name = "handIK.r"
bones/40/parent = 0
bones/40/rest = Transform3D(1.1920929e-07, -1, -5.9604645e-08, 5.9604645e-08, -1.1920929e-07, 1, -1, -1.7881393e-07, 0, -0.71318156, 1.1067611, -8.515731e-08)
bones/40/enabled = true
bones/40/position = Vector3(-0.51085526, 0.7878951, 0.059973676)
bones/40/rotation = Quaternion(-0.759389, 0.0018389486, 0.6506344, -0.00020818613)
bones/40/position = Vector3(-0.44945085, 0.9935347, 0.11420849)
bones/40/rotation = Quaternion(-0.35593528, 0.39234617, 0.60617733, -0.59323156)
bones/40/scale = Vector3(1, 1, 1)
[node name="ik_hand_r" type="SkeletonIK3D" parent="Rig/Skeleton3D"]
root_bone = &"upperarm.r"
tip_bone = &"hand.r"
target_node = NodePath("../ik_target")
[node name="ik_target" type="Node3D" parent="Rig/Skeleton3D"]
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 2.1487267e-07, 1.2203609, 2.457857)
[node name="handslot_l" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(-0.0035132607, 0.26502588, 0.96423423, 0.9999931, 0.00092311215, 0.0033901404, 8.6892505e-06, 0.96424025, -0.2650275, 0.5088632, 0.6371081, -0.017986983)
transform = Transform3D(0.97585, 0.21843804, 4.249306e-07, -2.1316929e-07, -8.940697e-08, 0.99999934, 0.21843834, -0.97585, -1.6255832e-07, -0.13313779, 0.94706607, 0.5470377)
bone_name = "handslot.l"
bone_idx = 8
[node name="handslot_r" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(-0.0021781807, -0.15201536, -0.9883751, -0.99999595, 0.0016329561, 0.0019529517, 0.0013167905, 0.9883763, -0.15201856, -0.49161294, 0.6409366, 0.10730599)
transform = Transform3D(0.018572412, 0.0021734908, -0.9998244, 0.012681573, 0.99991626, 0.0024094805, 0.9997462, -0.0127240885, 0.018542781, -0.42644227, 0.9758862, 0.061491005)
bone_name = "handslot.r"
bone_idx = 13
@ -31554,11 +31562,11 @@ transform = Transform3D(0, 4.2833398e-07, 1, 9.221462e-08, 1, -4.2833398e-07, -1
mesh = SubResource("ArrayMesh_mjo03")
skeleton = NodePath("")
[node name="ShootPoint" type="Node3D" parent="Rig/Skeleton3D/handslot_r"]
transform = Transform3D(1, 2.7939677e-09, 7.450581e-09, 0, 1.0000008, 1.033186e-09, -1.3038516e-08, -1.5279511e-09, 1.0000008, 0.56380576, 0.16657025, -0.003502518)
[node name="ShootPoint" type="Node3D" parent="Rig/Skeleton3D/handslot_r/2H_Crossbow"]
transform = Transform3D(1.4901161e-08, 9.34815e-08, -1.0000007, 4.2747706e-07, 1.0000008, 9.301584e-08, 1, -4.2561442e-07, 7.450581e-09, 0.0035024583, 0.17694426, 0.668434)
[node name="chest" type="BoneAttachment3D" parent="Rig/Skeleton3D"]
transform = Transform3D(0.9963584, 0.00013053692, 0.085264646, 5.8259513e-05, 0.9999975, -0.0022117489, -0.08526474, 0.0022086618, 0.99635595, 7.3187184e-05, 0.95864403, 0.0008404212)
transform = Transform3D(0.89813906, 4.0456847e-08, -0.43971157, -0.048295908, 0.9939497, -0.098647416, 0.43705124, 0.10983537, 0.8927051, 4.754022e-08, 0.9567605, 0.041186962)
bone_name = "chest"
bone_idx = 3

@ -11,14 +11,36 @@ var footsteps := [
"res://resources/audio/footstep_grass_004.ogg"
]
@export var arrow_scene: PackedScene
@onready var shoot_point: Node3D = $Rig/Skeleton3D/handslot_r/ShootPoint
@onready var shoot_point: Node3D = $"Rig/Skeleton3D/handslot_r/2H_Crossbow/ShootPoint" # Shoot point for the arrow
@onready var crossbow: MeshInstance3D = $"Rig/Skeleton3D/handslot_r/2H_Crossbow" # Crossbow mesh instance
@onready var ik_target: Node3D = $Rig/Skeleton3D/ik_target # IK target for the hand
@onready var hand_ik: SkeletonIK3D = $Rig/Skeleton3D/ik_hand_r # IK for the hand
@export var loaded: bool
var current_arrow: Node3D
func _ready() -> void:
if loaded == true:
arrow_loaded()
func _ready() -> void: # Called when the node is added to the scene.
if loaded == true: # If the arrow is loaded, instantiate it
arrow_loaded() # Load the arrow if it is already loaded
func _process(delta: float) -> void: # Process function for the Rogue
var camera := get_viewport().get_camera_3d() # Get the camera from the viewport
if camera: # Check if the camera exists
camera.fov = 40 if state == States.aiming else 70 # Normal FOV
hand_ik.target = ik_target.global_transform # Set IK target position
hand_ik.start() # Start IK processing
var screen_center = get_viewport().get_visible_rect().size / 2 # Center of the screen
var target_pos = camera.project_ray_origin(screen_center) + camera.project_ray_normal(screen_center) * 100 # 100 units away from the camera
ik_target.global_transform.origin = target_pos # Set IK target position
crossbow.look_at(target_pos, Vector3.UP)
crossbow.rotate_object_local(Vector3.UP, PI) # Falls -Z nach vorne zeigt
if state == States.aiming: # Aiming state
spring_arm.transform.origin.x = 0.5 # Offset to the right
spring_arm.spring_length = 3.0 # Shorter spring length for aiming
super._process(delta)
func _input(event: InputEvent) -> void:
# Shoot
@ -44,10 +66,6 @@ func _input(event: InputEvent) -> void:
if Input.is_action_just_released("block"): state = States.idle
anim_tree.set("parameters/conditions/aiming", state == States.aiming)
anim_tree.set("parameters/conditions/not_aiming", state != States.aiming)
#Camera
spring_arm.get_child(0).fov = 40 if state == States.aiming else 70
spring_arm.transform.origin.x = 0.5 # Shoulder offset
spring_arm.spring_length = 3.0
# Calls the _input() from player.gd
super._input(event)