Exemplo n.º 1
0
    // methods for: gravitizing rigidbodies //

    // method: gravitize all rigidbodies inside this gravity zone //
    protected override void gravitizeRigidbodiesInside()
    {
        base.gravitizeRigidbodiesInside();

        // if attraction is currently enabled: //
        if (attractionEnabled)
        {
            // gravitize each of the tracked rigidbodies to gravitize by the calculation of the attractive force according to its position – and for the player, multiply the force to apply by the player's current gravity modifier as determined by any active Gravity Multipliers //
            foreach (Rigidbody rigidbodyToGravitize in rigidbodiesToGravitize)
            {
                if (!rigidbodyToGravitize.handHolding())                                // so long as the rigidbody to gravitize is not currently held by a hand of the player
                {
                    // determine the curved attractive force to apply //
                    Vector3 forceToApply = curvedAttractiveForceForPosition(rigidbodyToGravitize.position);
                    if (rigidbodyToGravitize.GetComponentInParent <Player>())
                    {
                        forceToApply *= GravityMultiplier.currentGravityModifier();
                    }

                    // apply the attractive force //
                    rigidbodyToGravitize.velocity += (forceToApply * Time.fixedDeltaTime);
                }
            }
        }
    }
Exemplo n.º 2
0
    // methods for: gravitizing rigidbodies //

    // method: gravitize all rigidbodies inside this gravity zone //
    protected virtual void gravitizeRigidbodiesInside()
    {
        // gravitize each of the tracked rigidbodies to gravitize by the force vector setting – and for the player, multiply the force to apply by the player's current gravity modifier as determined by any active Gravity Multipliers //
        foreach (Rigidbody rigidbodyToGravitize in rigidbodiesToGravitize)
        {
            if (!rigidbodyToGravitize.handHolding())                   // so long as the rigidbody to gravitize is not currently held by a hand of the player
            {
                Vector3 forceToApply = gravitationForce;
                if (rigidbodyToGravitize.GetComponentInParent <Player>())
                {
                    forceToApply *= GravityMultiplier.currentGravityModifier();
                }

                rigidbodyToGravitize.velocity += (forceToApply * Time.fixedDeltaTime);
            }
        }
    }
Exemplo n.º 3
0
 // method: determine whether the player is within spherical gravity zonage that is actually enabled to gravitize the player with a nonzero force //
 public static bool playerWithinNonzerolyAffectingZonageSphere()
 {
     if (!playerWithinZonage || (GravityMultiplier.currentGravityModifier() == 0f))
     {
         return(false);
     }
     else
     {
         foreach (Collider playerCollidingGravityZoneCollider in playerCollidingGravityZoneColliders)
         {
             GravityZone playerCollidingGravityZone = playerCollidingGravityZoneCollider.GetComponent <GravityZone>();
             if (playerCollidingGravityZone.gravitizingEnabled && playerCollidingGravityZone.gravitizeRigidbodies && (playerCollidingGravityZone.gravitationForce != FloatsVector.zeroes) && playerCollidingGravityZoneCollider.GetComponent <GravityZoneSphere>())
             {
                 return(true);
             }
         }
         return(false);
     }
 }
Exemplo n.º 4
0
 // method: determine whether the player is within box gravity zonage that is actually enabled to gravitize the player //
 public static bool playerWithinAffectingZonageBox()
 {
     if (!playerWithinZonage || (GravityMultiplier.currentGravityModifier() == 0f))
     {
         return(false);
     }
     else
     {
         foreach (Collider playerCollidingGravityZoneCollider in playerCollidingGravityZoneColliders)
         {
             GravityZone playerCollidingGravityZone = playerCollidingGravityZoneCollider.GetComponent <GravityZone>();
             if (playerCollidingGravityZone.gravitizingEnabled && playerCollidingGravityZone.gravitizeRigidbodies && playerCollidingGravityZoneCollider.GetComponent <GravityZoneBox>())
             {
                 return(true);
             }
         }
         return(false);
     }
 }