Example #1
0
 void OnValidate()
 {
     if (gravitable is null)
     {
         gravitable = GetComponent <Gravitable>();
     }
 }
Example #2
0
    void applyGravity(GameObject targetObject, Gravitable targetInterface)
    {
        Vector3 lineFromTarget = transform.position - targetObject.transform.position;
        float distance = lineFromTarget.magnitude;
        Vector3 pullDirection = lineFromTarget.normalized;
        Vector3 pull = pullDirection;
        float gravityStrength;

        switch(GravitationMode)
        {
        case GravityMode.Constant:
            pull =  pullDirection * BaseGravitationalForce;
            break;

        case GravityMode.Linear:
            gravityStrength = GravitationStrength/distance;
            pull =  pullDirection * gravityStrength;
            break;

        case GravityMode.LinearWithBase:
            gravityStrength = GravitationStrength/distance;
            Vector3 basePull = pullDirection * BaseGravitationalForce;
            pull = basePull + pullDirection * gravityStrength;
            break;

        case GravityMode.Newtonian:
            gravityStrength = ( 1 / Mathf.Pow(distance, 2) ) * GravitationStrength;
            pull =  pullDirection * gravityStrength;
            break;

        }

        if(pull.magnitude <= 1)
            targetInterface.EscapeGravity(gameObject);
        else
            targetInterface.Gravitate(gameObject, pull);
    }
Example #3
0
 public Transit( Ship self, float ftlCounterForce = 0, float timeOfLaunch = 0 )
     : base(self)
 {
     asteroidSpawner = self.asteroidSpawner;
     gravityComponent = self.gravityComponent;
     this.ftlCounterForce = ftlCounterForce;
     this.timeOfLaunch = timeOfLaunch;
     this.lootCollector = self.lootCollector;
 }