PT-BR/Easing

From Multi Theft Auto: Wiki
Jump to navigation Jump to search

As funções Easing (atenuação) são funções que controlam a maneira que a interpolação entre 0 e 1 é feita.

A função easing mais básica, Linear, é somente uma interpolação linear em uma velocidade constante. As outras funções easing mais avançadas podem ter aceleração no começo, no fim ou em ambos, ou desaceleração, ou então um efeito de quicando ou efeitos elásticos.

Nota preliminar

Nas funções que usam o easing, há geralmente 3 parâmetros opcionais. A maioria das funções não precisam totalmente destes argumentos, aqueles que precisam de um ou mais parâmetros estão listados na tabela abaixo. Quando especificado os parâmetros opcionais, todos os parâmetros anteriores aos parâmetros especificados devem ser preenchidos, mesmo se a função easing que você pretende usar não exigir este parâmetro. Neste caso, simplesmente use 0 nos parâmetros que você não precisar usar. Exemplos:

  • "Linear" pode ser usado de forma simples com getEasingValue( fProgress, "Linear" )
  • "OutElastic" utiliza fEasingPeriod e fEasingAmplitude então isso pode ser usado com getEasingValue( fProgress, "OutElastic", 0.3, 1.0 )
  • "InBack" utiliza fEasingOvershoot, mas já que isso vem depois de fEasingPeriod e fEasingAmplitude na ordem dos parâmetros, 0 deve ser usado para os outros com getEasingValue( fProgress, "InBack", 0, 0, 1.7015 )

Funções Easing (atenuação)

--Lista das funções 'easing' nativas
builtins={ "Linear", "InQuad", "OutQuad", "InOutQuad", "OutInQuad", "InElastic", "OutElastic", "InOutElastic", "OutInElastic", "InBack", "OutBack", "InOutBack", "OutInBack", "InBounce", "OutBounce", "InOutBounce", "OutInBounce", "SineCurve", "CosineCurve" }

Os valores padrões são (quando uma função pode usar um parâmetro, mas não é definido pelo usuário):

  • fEasingPeriod: 0.3
  • fEasingAmplitude : 1.0
  • fEasingOvershoot: 1.701
Função Easing Perfil funcional Usa fEasingPeriod Usa fEasingAmplitude Usa fEasingOvershoot Comentários
Linear Qeasingcurve-linear.png
InQuad Qeasingcurve-inquad.png
OutQuad Qeasingcurve-outquad.png
InOutQuad Qeasingcurve-inoutquad.png
OutInQuad Qeasingcurve-outinquad.png
InElastic Qeasingcurve-inelastic.png yessimDevido ao efeito elástico, esta função de atenuação produz alguns valores < 0
OutElastic Qeasingcurve-outelastic.png yessimDevido ao efeito elástico, esta função de atenuação produz alguns valores > 1
InOutElastic Qeasingcurve-inoutelastic.png yessimDevido ao efeito elástico, esta função de atenuação produz alguns valores < 0 and > 1
OutInElastic Qeasingcurve-outinelastic.png yessimDevido ao efeito elástico, esta função de atenuação produz alguns valores < 0 and > 1
InBack Qeasingcurve-inback.png simDevido ao overshoot, esta função de atenuação produz alguns valores < 0
OutBack Qeasingcurve-outback.png simDevido ao overshoot, esta função de atenuação produz alguns valores > 1
InOutBack Qeasingcurve-inoutback.png simDevido ao overshoot, esta função de atenuação produz alguns valores <0 e > 1
OutInBack Qeasingcurve-outinback.png sim
InBounce Qeasingcurve-inbounce.png yes
OutBounce Qeasingcurve-outbounce.png yes
InOutBounce Qeasingcurve-inoutbounce.png yes
OutInBounce Qeasingcurve-outinbounce.png yes
SineCurve Qeasingcurve-sincurve.png Esta função de atenuação não termina em 1, mas volta a 0. Nesse caso, para interpolação, o valor alvo é apenas uma borda, mas não representa o valor de parada.
CosineCurve Qeasingcurve-coscurve.png Essa função de atenuação começa e para em 0.5, indo primeiro para 1 e depois para 0. Nesse caso, para interpolação, os valores de origem e destino são apenas as bordas, mas não representam os valores de início / parada.

Exemplos

Click to collapse [-]

Examplo 1: Este exemplo move um portão com atenuação.

local x,y,z = 2096.3, 1721, 12.7
local easing = "OutBounce"
local time = 2000
local gate = createObject(980, x,y,z, 0, 0, 63)
local marker = createMarker(x,y,z, "cylinder", 12, 0, 0, 0, 0)
 
function moveGate(hitPlayer, matchingDimension)
        moveObject(gate, time, x+4.9, y+9.6, z, 0, 0, 0, easing)
end
addEventHandler("onMarkerHit", marker, moveGate)
 
function moveBack()
    moveObject(gate, time, x, y, z, 0, 0, 0, easing)
end
addEventHandler("onMarkerLeave", marker, moveBack)

Fonte

As convenções de nomenclatura das funções abaixo, disponível em moveObject, interpolateBetween, ou getEasingValue foram extraídos de Qt documentation. Apenas um subconjunto dessas funções está disponível no MTA, uma vez que algumas delas são um pouco redundantes (apenas o perfil das alterações de aceleração / desaceleração). As imagens das funções de atenuação são extraídas diretamente da documentação do Qt, © 2008-2010 Nokia Corporation e/ou suas subsidiárias.