Esempio n. 1
0
    // Update is called once per frame
    void FixedUpdate()
    {
        RaycastHit hit;

        gravity_field.SetGravity(this);

        if (Vector3.Dot(ArenaDown, transform.up) > 0.5f)
        {
            var q = Quaternion.FromToRotation(transform.up, -ArenaDown);

            transform.rotation *= q;
        }

        if (Physics.Raycast(transform.position, ArenaDown, out hit, Mathf.Infinity, Layers.Field))
        {
            rigidbody.AddForce(-ArenaDown * (hoverForce * (hoverDistance - hit.distance) -
                                             hoverDampen * (Vector3.Dot(FloatingBody.velocity, -ArenaDown))),
                               ForceMode.Acceleration);


            Debug.DrawRay(transform.position, ArenaDown * 25.0f, Color.green);
        }
        else
        {
            rigidbody.AddForce(ArenaDown * hoverForce, ForceMode.Acceleration);
        }
    }