PT-BR/Easing
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
Exemplos
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.