예제 #1
0
    void FixedUpdate()
    {
        float newDist = ((Vector2)transform.position - OrbitPoint).magnitude;

        if (newDist > distanceToOrbit)
        {
            Rigidbody2D rb = GetComponent <Rigidbody2D>();
            rb.isKinematic       = false;
            PointGravity.enabled = true;
            float toPlanet = (transform.position - Planet.transform.position).magnitude;
            rb.AddForce(
                Direction.normalized * Mathf.Sqrt(Planet.CalculateGravity(toPlanet, rb.mass) * toPlanet),
                ForceMode2D.Impulse);

            if (OnFlyingComplete != null)
            {
                OnFlyingComplete();
            }

            enabled = false;
        }
        else
        {
            transform.position += (Vector3)(Direction.normalized * FlySpeed * Time.fixedDeltaTime);
        }
        distanceToOrbit = newDist;
    }