// 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); } }