diff options
author | chai <215380520@qq.com> | 2024-03-16 12:39:34 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2024-03-16 12:39:34 +0800 |
commit | 793c4eae324d394f19a8bac66a803bf03a67ae9d (patch) | |
tree | 629b5d87bdf0fd004b1950e42e2427bc884f1059 /_ActiveRagdoll/Balance.cs | |
parent | 3f53966a0fdc96f1e32d7d5f930c5cac6d4dfb29 (diff) |
*misc
Diffstat (limited to '_ActiveRagdoll/Balance.cs')
-rw-r--r-- | _ActiveRagdoll/Balance.cs | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/_ActiveRagdoll/Balance.cs b/_ActiveRagdoll/Balance.cs deleted file mode 100644 index f034290..0000000 --- a/_ActiveRagdoll/Balance.cs +++ /dev/null @@ -1,130 +0,0 @@ -using UnityEngine; - -//Player Balance 动作-控制双脚的位置,让双脚和双脚的中点尽可能和重心在水平的投影重合 -public class Balance : MonoBehaviour -{ - #region rigs - private Rigidbody handLeft; - private Rigidbody handRight; - private Rigidbody footLeft; // kneeLeft - private Rigidbody footRight; // kneeRight - private Rigidbody hip; - #endregion - - private Vector3 centerOfMass; // 5.0759, 0, -7.2038 - - private Rigidbody[] allRigs;//所有14个parts - - public float[] balanceForce; // 50 30 30 30 - - public float[] footCenterForces; // 50 20 20 20 - - private AnimationHandler animationHandler; // 当前动作编号 - - private PlayerDeath death; - - private Strength str; - - private float muscleMultiplier; // 1 - - private void Start() - { - death = GetComponent<PlayerDeath>(); - str = GetComponent<Strength>(); - allRigs = GetComponentsInChildren<Rigidbody>(); - HandLeft componentInChildren = GetComponentInChildren<HandLeft>(); - if ((bool)componentInChildren) - { - handLeft = componentInChildren.GetComponent<Rigidbody>(); - } - HandRight componentInChildren2 = GetComponentInChildren<HandRight>(); - if ((bool)componentInChildren2) - { - handRight = componentInChildren2.GetComponent<Rigidbody>(); - } - footLeft = GetComponentInChildren<KneeLeft>().GetComponent<Rigidbody>(); - footRight = GetComponentInChildren<KneeRight>().GetComponent<Rigidbody>(); - hip = GetComponentInChildren<Hip>().GetComponent<Rigidbody>(); - animationHandler = GetComponent<AnimationHandler>(); - } - - private void FixedUpdate() - { - if (!death.dead) - { - muscleMultiplier = str.strength; - centerOfMass = Vector3.zero; - Rigidbody[] array = allRigs; - foreach (Rigidbody rigidbody in array) - { - centerOfMass += rigidbody.worldCenterOfMass; - } - centerOfMass /= (float)allRigs.Length; - centerOfMass.y = 0f; - BalanceLegs(); - CenterLegs(); - } - } - - // 让双脚尽量靠近重心的水平投影 - private void CenterLegs() - { - Vector3 vector = footLeft.transform.position + footLeft.transform.forward * 0.5f; - Vector3 vector2 = footRight.transform.position + footRight.transform.forward * 0.5f; - Vector3 vector3 = vector; - if (vector.y + 0.3f < hip.worldCenterOfMass.y) - { - vector3.y = 0f; - footLeft.AddForceAtPosition((centerOfMass - vector3) * muscleMultiplier * footCenterForces[animationHandler.animationState], vector, ForceMode.Acceleration); - } - Vector3 vector4 = vector2; - if (vector4.y + 0.3f < hip.worldCenterOfMass.y) - { - vector4.y = 0f; - footRight.AddForceAtPosition((centerOfMass - vector4) * muscleMultiplier * footCenterForces[animationHandler.animationState], vector2, ForceMode.Acceleration); - } - } - - // 让双脚的中点尽量和重心的水平投影重合 - private void BalanceLegs() - { - Vector3 vector = footLeft.transform.position + footLeft.transform.forward * 0.5f; - Vector3 vector2 = footRight.transform.position + footRight.transform.forward * 0.5f; - Vector3 vector3 = (vector + vector2) / 2f; - - Vector3 pos = vector3; - pos.y += 0.3f; - Vector3 vector03 = vector3; - - if (!(vector3.y + 0.3f > hip.worldCenterOfMass.y)) - { - vector3.y = 0f; - Vector3 vector4 = centerOfMass - vector3; // centerOfMass是xoz平面,不含y - - REPL.footCenter.GetComponent<DebugRigidBody>().customDraw = () => - { - //return; - - Draw.Sphere(vector, 0.05f); - Draw.Sphere(vector2, 0.05f); - - Draw.color = Color.red; - Draw.Sphere(pos, 0.05f); - Draw.Sphere(vector03, 0.05f); - Draw.color = Color.white; - - Draw.Sphere(hip.worldCenterOfMass, 0.2f); - - Draw.Sphere(centerOfMass, 0.05f); - - Draw.color = Color.green; - Draw.Line3D(vector, vector + vector4); - Draw.Line3D(vector2, vector2 + vector4); - Draw.color = Color.white; - }; - - footLeft.AddForceAtPosition(vector4 * muscleMultiplier * balanceForce[animationHandler.animationState], vector, ForceMode.Acceleration); - footRight.AddForceAtPosition(vector4 * muscleMultiplier * balanceForce[animationHandler.animationState], vector2, ForceMode.Acceleration); - }; - } -} |