Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
 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);
         }
     }
 }