Witamy na GTAOnline Obecny czas to 2017-08-23, 04:33 Użytkowników: 71153
Strona główna | Użytkownicy | Grupy | Faq | Regulamin | Zaloguj

Poprzedni temat :: Następny temat
[Poradnik] interpolateBetween
Autor Wiadomość

Dorex 
http://Rick





Informacje
Wiek: 19
Na forum: 1649 dni
Posty: 74
Piwa: 482
Respekt: 260
Respekt: 260Respekt: 260Respekt: 260

Wysłany: 2017-06-07, 16:48   [Poradnik] interpolateBetween



Funkcja podzielona (Serwer i Klient)

Składnia:

float float float interpolateBetween float x1float y1float z1float x2float y2float z2float fProgressstring strEasingType, [ float fEasingPeriodfloat fEasingAmplitudefloat fEasingOvershoot ] )


InterpolateBetween - jest to interpolacja wektora 3D, który wylicza pomiędzy wartością początkową a docelową, można być również stosowana do interopolacji 2D, operuje się na niej przy pomocy parametrów x,y,z.

Wymagane argumenty:
- x1, y1, z1 - współrzędne początkowe wektora 3D lub wartości
- x2, y2, z2 - współrzędne docelowe wektora 3D lub wartości
- fProgress - wartość zmiennoprzecinkowa pomiędzy 0 a 1, która to określa postęp interpolacji (0 wartość początkowa, 1 wartość docelowa)
- strEasingType - określenie złagodzenia dla interpolacji (tłumacząc oznacza to wybór profilu funkcji dla naszej interpolacji)

Profile funkcji:
https://wiki.multitheftauto.com/wiki/Easing


Opcjonalne argumenty:
- fEasingPeriod - Określa zmianę dynamiki funkcji (tylko niektóre funkcje mogą przyjmować ten argument) (domyślnie przyjmuje wartość 0,3)
- fEasingAmplitude - Określa amplitudę dla profilu funkcji (domyślnie przyjmuje wartość 1,0)
- fEasingOvershoot - Określa regulacje podczas zmiany dynamiki (domyślnie przyjmuje wartość 1,701)


Zwroty:
Zwraca interpolacje 3D wektora x, y, z, w przypadku błędu argumentu przyjmuje wartość false.

Przykład:
Przykład wykorzystuje różnice między getTickCount oraz pozwala ustalić czas zakończenia interpolacji, okres dla profilu funkcji, amplitudę, regulacje podczas zmiany dynamiki

Strona Klienta:


local sWsH guiGetScreenSize(  )
Used false
EasingType = { "Linear""InQuad""OutQuad""InOutQuad""OutInQuad""InElastic""OutElastic""InOutElastic""OutInElastic""InBack""OutBack""InOutBack""OutInBack""InBounce""OutBounce""InOutBounce""OutInBounce""SineCurve""CosineCurve" }

function onClientRenderInterpolate()
    local czas_uplyniety getTickCount(  ) - czas_poczatkowy
    local czas_trwania czas_koncowy czas_poczatkowy
    local postep czas_uplyniety/czas_trwania
    local xyinterpolateBetween (start_Xstart_Ystart_Zend_Xend_Yend_Zpostepprofil_funkcjiokres_funkcjiamplituda_funkcjiregulacja_funkcji)
    local tekst profil_funkcji.." ".. tonumber(postep*100) .."% ["..okres_funkcji..", "..amplituda_funkcji..", "..regulacja_funkcji.."]"
    setElementPositionG_markerxy)
    if postep >= 1 then
        Used false
        if isElementG_marker then destroyElementG_marker end
        outputChatBox(tekst)
        removeEventHandler"onClientRender"getRootElement(), onClientRenderInterpolate)
    end
    local width dxGetTextWidthtekst2"default-bold" )
    local height dxGetFontHeight2"default-bold" )
    dxDrawText(tekstsW/2-width/2sH/2-height/2widthheighttocolor(255,255,255,255), 2"default-bold"  )
end



function Interpolacja(CMDprofilczasokresamplitudaregulacja)
    if not profil then
        outputChatBox("Składania /"..CMD.." nazwa profilu funkcji [czas trwania, okres, amplituda, regulacja]"17500)
        return
    end
    if Used then
        outputChatBox("Interpolacja jest właśnie wykonywana proszę poczekać",17500)
        return
    end
    for i,v in ipairs(EasingType) do
        outputConsole(v)
        if == profil then
            czas_poczatkowy getTickCount(  )
            czas_koncowy getTickCount(  )+(tonumber(czas) ~= nil and tonumber(czas) or 2500)
            profil_funkcji tostring(v)
            okres_funkcji = (tonumber(okres) ~= nil and tonumber(okres) or 0.3)
            amplituda_funkcji = (tonumber(amplituda) ~= nil and tonumber(amplituda) or 1.0)
            regulacja_funkcji = (tonumber(regulacja) ~= nil and tonumber(regulacja) or 1.701)
            Used true
            local xygetElementPositionlocalPlayer )
            local __rz getElementRotationlocalPlayer"default"true )
            local rz math.rad360-rz )
            local x 1.0 math.sin(rz)
            local y 1.0 math.cos(rz)
            local z z+2
            start_Xstart_Ystart_Z xyz
            end_Xend_Yend_Z xyz-3
            G_marker createMarker(xyz"cylinder"1.025500155)
            addEventHandler"onClientRender"getRootElement(), onClientRenderInterpolate)
            return
        end
    end
    outputChatBox("Nie znaleziono profilu funkcji o nazwie "..tostring(profil), 17500)
end
addCommandHandler"interpolacja"Interpolacja )


Pokaz wideo:

PEŁNY EKRAN Odnośnik YouTube



_________________
Developer cmta.pl
Twórca projektu: LUA Master
Postaw piwo autorowi tego posta
 

Jurandovsky 
Kurdebele





Informacje
Wiek: 8
Na forum: 1631 dni
Posty: 883
Piwa: 2062
Respekt: 775,3
Respekt: 775,3Respekt: 775,3

Wysłany: 2017-06-07, 18:44   



Brawo Dorian!! Może tego nie widać, ale przed ekranem biję Ci brawo stopami, tak świetnie opisana FUNKCJA ZMIENIAJĄCA POZYCJE OBIEKTU IKS DE DE DE

good job bro

_________________
Jedyny kontakt ze mną to PW forum

Kod:


local noobs = getElementsByTitle("player", "Programista LUA")
for k, v in ipairs(noobs) do
outputChatBox("Bez mózgu jest użytkownik o nicku: "..getPlayerName(v), root)
destroyElement(v)
end
Postaw piwo autorowi tego posta
 
Tagi: [poradnik] :: interpolatebetween
Anonymous



Dołaczył: Wczoraj 0:00
Posty: 1
Skad: google.com


Anonymous Koniecznie zajrzyj na:






Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Wersja do druku

Skocz do:  


phpBB by Przemo modified by xXx 2003-2016

Template GTAONLINE created by gtaonline.pl



Strona wygenerowana w 0,13 sekundy. Zapytań do SQL: 19