public static void ApplyVulcanForce(Vector3 force, Rigidbody body, Vector3 pos, TankFallingComponent tankFalling, TrackComponent tracks) { body.AddForceAtPositionSafe(force, pos); if (!tankFalling.IsGrounded && ((tracks.LeftTrack.numContacts + tracks.RightTrack.numContacts) <= 0)) { body.AddForceSafe(-force); } }
private void ApplyMovingForce(Rigidbody body, DroneMoveConfigComponent config, DroneOwnerComponent owner) { Vector3 vector3 = (owner.Rigidbody.transform.position + config.FlyPosition) - body.position; float magnitude = vector3.magnitude; Vector3 vector4 = vector3 / magnitude; if (magnitude > 1f) { body.AddForceSafe(vector4 * Mathf.Clamp(magnitude * config.Acceleration, 0f, config.MoveSpeed)); } }
public void ApplyStaticFriction(TrackComponent tracks, Rigidbody rigidbody) { if ((tracks.RightTrack.numContacts >= (tracks.RightTrack.rays.Length >> 1)) || (tracks.LeftTrack.numContacts >= (tracks.LeftTrack.rays.Length >> 1))) { Vector3 up = rigidbody.transform.up; float num = Vector3.Dot(Physics.gravity, up); float num2 = 0.7071068f * Physics.gravity.magnitude; if ((num < -num2) || (num > num2)) { Vector3 force = ((up * num) - Physics.gravity) * rigidbody.mass; rigidbody.AddForceSafe(force); } } }