Aller au contenu

CoreMath

The CoreMath namespace contains a set of math functions.

Class Functions

Class Function Name Return Type Description Tags
CoreMath.Clamp(number value, [number lower, number upper]) number Clamps value between lower and upper, inclusive. If lower and upper are not specified, defaults to 0 and 1. None
CoreMath.Lerp(number from, number to, number t) number Linear interpolation between from and to. t should be a floating point number from 0 to 1, with 0 returning from and 1 returning to. None
CoreMath.Round(number value, [number decimals]) number Rounds value to an integer, or to an optional number of decimal places, and returns the rounded value. None

Examples

Example using:

Clamp

Lerp

Round

In this example, a UI panel is moved in/out of screen by calling the Show() and Hide() functions. CoreMath's Lerp(), Clamp() and Round() are used for controlling the UI's movement, animating it over time and constraining its limits.

local UI_PANEL = script:GetCustomProperty("UIPanel"):WaitForObject()
local OFF_SCREEN_Y = 800
local LERP_SPEED = 14

local isShowing = false

UI_PANEL.visibility = Visibility.FORCE_OFF
UI_PANEL.y = OFF_SCREEN_Y

function Show()
    isShowing = true
end

function Hide()
    isShowing = false
end

function Tick(deltaTime)
    -- Keep the time delta between 0 and 1
    local t = CoreMath.Clamp(deltaTime * LERP_SPEED)
    if isShowing then
        -- Move the UI towards the center of the screen
        UI_PANEL.y = CoreMath.Lerp(UI_PANEL.y, 0, t)
        -- Check if it has arrived
        if CoreMath.Round(UI_PANEL.y) == 0 then
            UI_PANEL.y = 0
        end
        UI_PANEL.visibility = Visibility.INHERIT
    else
        -- Move the UI off screen
        UI_PANEL.y = CoreMath.Lerp(UI_PANEL.y, OFF_SCREEN_Y, t)
        -- Check if it has arrived
        if CoreMath.Round(UI_PANEL.y) == OFF_SCREEN_Y then
            UI_PANEL.y = OFF_SCREEN_Y
            UI_PANEL.visibility = Visibility.FORCE_OFF
        end
    end
end

See also: UIControl.y | CoreObject.visibility | CoreObjectReference.WaitForObject



Dernière mise à jour: 7 décembre 2021