using UnityEngine; public class Gravity : MonoBehaviour { public float baseGravity;//5 public float scalingGravity;//70 private RigidbodyHolder allRigs;//14个全部 private StandingDataHandler standingData; private Holding holding; private PlayerDeath death; private void Start() { death = GetComponent(); allRigs = GetComponent(); standingData = GetComponent(); holding = GetComponent(); } private void FixedUpdate() { if (death.dead) { return; } for (int i = 0; i < allRigs.GetAllRigs().Length; i++) { // standingData.sinceGrounded是离地时间 Vector3 g = Vector3.down * baseGravity + Vector3.down * scalingGravity * standingData.sinceGrounded; // 重力=持久的基础重力+随着离地状态变化的重力,离地时增加额外重力 allRigs.GetAllRigs()[i].AddForce(g, ForceMode.Acceleration); //Debug.Log(g); //Debug.Log(standingData.sinceGrounded); } if ((bool)holding) { if ((bool)holding.heldObject) { holding.heldObject.rig.AddForce(Vector3.down * baseGravity + Vector3.down * scalingGravity * standingData.sinceGrounded, ForceMode.Acceleration); } if ((bool)holding.heldObjectOffHand) { holding.heldObjectOffHand.rig.AddForce(Vector3.down * baseGravity + Vector3.down * scalingGravity * standingData.sinceGrounded, ForceMode.Acceleration); } } } }