# llSetBuoyancy

*LSL function*

```lsl
void llSetBuoyancy(float buoyancy);
```

- `float buoyancy`: Float buoyancy value to set.

- Energy: 10

Sets the **buoyancy** of the task or object. Requires [physics](/constants/STATUS_PHYSICS/) to be enabled.

A **buoyancy** value of 0.0 disables the effect

when **buoyancy** is &lt; 1.0, the object sinks

when **buoyancy** equals 1.0 it floats

when **buoyancy** is > 1.0 the object rises

```lsl title="How to use" frame="terminal"
llSetBuoyancy(0.0);
```

## Caveats

- [Wind](/functions/llWind/) can cause the prim to drift. (server 1.38.4 this appears not to be true)
- Unlike some other characteristics, a **buoyancy** effect is cancelled if the script that set **buoyancy** is removed from the prim.
- This function cannot be used to set relative levels of **buoyancy** in parts of a linked object, e.g. to simulate a helium balloon weighted by its string. The most recent call of `llSetBuoyancy` in any child prim appears to set the global **buoyancy** level for the object.
- This function eats [energy](https://wiki.secondlife.com/wiki/energy) to keep the object floating. Large objects may not be able to supply enough energy to keep the object floating.
- For better performance, replace by `llSetPhysicsMaterial(GRAVITY_MULTIPLIER, gravity, 0.0, 0.0, 0.0)` which doesn't consume energy.

:For example, replace `llSetBuoyancy(1.5)` by `llSetPhysicsMaterial(GRAVITY_MULTIPLIER, -0.5 ,0.0, 0.0, 0.0)` to raise an object; replace `llSetBuoyancy(1.0)` by `llSetPhysicsMaterial(GRAVITY_MULTIPLIER, 0.0 ,0.0, 0.0, 0.0)` to float an object

- When **buoyancy** is changed, the object briefly continues to be affected by the last value. For example, if **buoyancy** was set it to 1.5 to raise an object, and whilst moving, **buoyancy** is changed it to 0.0, the object continues to rise for a moment, because the force is not reversed, only cancelled. With `llSetPhysicsMaterial(GRAVITY_MULTIPLIER, -0.5 ,0.0, 0.0, 0.0)` followed by `llSetPhysicsMaterial(GRAVITY_MULTIPLIER, 1.0 ,0.0, 0.0, 0.0)`, the change in movement is immediate, and the object starts to fall at the instant that the second call is done.

## Examples

Makes an object float up slowly (e.g. a red balloon)

```lsl
default
{
    state_entry()
    {
        llSetStatus(STATUS_PHYSICS, TRUE);
        llSetBuoyancy(1.05);
    }
}
```

## Notes

Often used to make an object appear to be unaffected by gravity.

---

*Source: [LlSetBuoyancy](https://wiki.secondlife.com/wiki/LlSetBuoyancy) on the Second Life Wiki. Content from the Second Life Wiki article LlSetBuoyancy (revision 1215148, 2023-10-21), CC BY-SA 3.0.*

---

From lsl.dev: https://lsl.dev/functions/llSetBuoyancy/
