Exemplo n.º 1
0
    // Update is called once per frame
    void LateUpdate()
    {
        var pos = new Vector2(transform.position.x, transform.position.z);

        if (SnapPosition)
        {
            transform.position = new Vector3(pos.x, Gravity.GetHeight(pos) + Offset, pos.y);
        }
        if (SnapRotation)
        {
            var normal  = Gravity.GetNormal(pos, GravityGradientStep, NormalMultiplier);
            var forward = Vector3.Cross(transform.right, normal);
            transform.rotation = Quaternion.LookRotation(forward, normal);
        }

        if (ApplyForces)
        {
            //var currentVelocity = _body.velocity;
            var force = Gravity.GetForce(pos) * ForceScale;
            _body.AddForce(force.x, 0, force.y, ForceMode.Acceleration);
        }
    }