Line 937: |
Line 937: |
| | | |
| ---- | | ---- |
− | ===== setVelocityFunc ===== | + | ===== setVelocityFunc ===== |
| | | |
| + | <!-- code start--> |
| + | <pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">self = physics.Body:setVelocityFunc(func) |
| + | </pre><!-- code end--> |
| + | <!-- table start --> |
| | | |
− | <!-- code start-->
| + | {| border="1" width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable" |
− | <pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
| + | |- |
− | self = physics.Body:setVelocityFunc(func)
| + | ! Parameter |
− | </pre><!-- code end-->
| + | ! Type |
− | | + | ! Description <!-- header row end --> |
− | | |
− | <!-- table start -->
| |
− | {| border=1 width="100%" cellspacing="0" cellpadding="4" style="border-color:#eee" class="wikitable" | |
− | <!-- header row start -->
| |
− | ! Parameter !! Type !! Description | |
− | <!-- header row end --> | |
| |- | | |- |
− | | self | + | | self |
− | | '''in''' physics.Body | + | | '''in''' physics.Body |
− | | The input Body | + | | The input Body |
| |- | | |- |
− | | func | + | | func |
− | | '''in''' function(body, grav, damping, dt) | + | | '''in''' function(body, grav, damping, dt) |
− | | A callback function that updates the velocity of the Body on each time step | + | | A callback function that updates the velocity of the Body on each time step |
| |- | | |- |
− | | self | + | | self |
− | | '''out''' physics.Body | + | | '''out''' physics.Body |
− | | The input Body is returned as the output | + | | The input Body is returned as the output |
− | |}<!-- table end --> | + | |} |
| + | <!-- table end --> |
| + | <br> Sets the velocity function of the body. The velocity function must be a function that accepts a Body, a gravity [[#vector|vector]], a numeric damping factor, and a time step value. The function should call body:updateVelocity to adjust the velocity of the body. |
| | | |
− | <br/>
| + | Returns the Body. |
− | Sets the velocity function of the body. The velocity function must be a function that accepts a Body, a gravity [[#vector|vector]], a numeric damping factor, and a time step value. The function should call body:updateVelocity to adjust the velocity of the body.
| |
| | | |
− | Returns the Body.
| |
| {| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#ddffdd;" | | {| width="100%" style="padding: 20px; margin-left:20px; border:solid; border-color:#aaa; border-width:0px; text-align:left; background-color:#ddffdd;" |
| |- | | |- |
− | | <span style="color:#00AA00">'''TIP''':</span> '''Example'''<hr> | + | | |
− | |-
| + | <span style="color:#00AA00">'''TIP''':</span> '''Example''' |
| | | |
− | <div style="white-space: pre"> | + | <br>function sampleVelocityFunc(body, gravity, damping, dt)<br>local pos = body:pos()<br>local sqdist = pos:lengthsq()<br>local g = pos:mult(-GravityStrength / (sqdist * math.sqrt(sqdist)))<br>body:updateVelocity(g, damping, dt)<br>end |
| | | |
| + | body:setVelocityFunc(sampleVelocityFunc)<br><br> |
| | | |
− | <!-- code start-->
| + | ---- |
− | <pre style="margin-left:20px; font-size:1.4em; background-color:#fdfdfd">
| |
− | function sampleVelocityFunc(body, gravity, damping, dt)
| |
− | local pos = body:pos()
| |
− | local sqdist = pos:lengthsq()
| |
− | local g = pos:mult(-GravityStrength / (sqdist * math.sqrt(sqdist)))
| |
− | body:updateVelocity(g, damping, dt)
| |
− | end
| |
| | | |
− | body:setVelocityFunc(sampleVelocityFunc)
| + | |} |
− | </pre><!-- code end-->
| |
| | | |
| + | <br> |
| | | |
− | </div>
| + | Introduced in platform.apiLevel = '2.0' |
− | |}
| |
− | <br/>
| |
| | | |
− | Introduced in platform.apiLevel = '2.0'
| + | ---- |
| | | |
− | ----
| |
| ===== setVLimit ===== | | ===== setVLimit ===== |
| | | |