// This static method will move the transform down to the surface of the terrain public static void SnapTransformPosition(SgtTerrain terrain, Transform transform, float offset = 0.0f) { if (terrain != null && transform != null) { var oldPosition = transform.position; var newPosition = terrain.GetSurfacePositionWorld(oldPosition, offset); if (oldPosition != newPosition) { transform.position = newPosition; } } }
// This static method will move the transform down to the surface of the terrain public static void SnapTransformPosition(SgtTerrain terrain, Transform transform, float offset = 0.0f, float dampening = 0.0f) { if (terrain != null && transform != null) { var oldPosition = transform.position; var newPosition = terrain.GetSurfacePositionWorld(oldPosition, offset); if (oldPosition != newPosition) { if (dampening > 0.0f) { transform.position = SgtHelper.Dampen3(transform.position, newPosition, dampening, Time.deltaTime); } else { transform.position = newPosition; } } } }