Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2020-11-11, 21:31


xyzzzikk

.gg






Wiek: 19
Na forum: 2915 dni
Posty: 175
Nick w MP: aspyk

Piwa: 6564

Respekt: 30,5

Mam problem z tym problem

Poprostu mo?e mi kto? wyt?umaczy? ? Widzia?em na Gtao ju? tematy z tym ale dalej nic nie rozumiem

Np. Gdy klikniemy f1 z lewej strony wy?wietla si? przycisk kt?ry wychodzi jak notyfikacje

Wyt?umaczy? podstawy typu jak uzupe?ni? interpolateBetween()
Jak doda? animacje do dxDraw?

Z Wikipedii mta te? nie du?o rozumiem
https://wiki.multitheftauto.com/wiki/InterpolateBetween





Jak rozumiem to nadaje animacje?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-11-11, 21:55


Wilq







Wiek: 24
Na forum: 4569 dni
Posty: 3409

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Najpro?ciej u?y? funkcji, kt?ra zwraca Ci warto?? animowan? (czyli np. pozycj? X)

Więcej informacji znajdziesz w Wikipedii MTA:

animate


Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-11-11, 22:06


Dawcio77







Wiek: 22
Na forum: 3453 dni
Posty: 89
Nick w MP: cx_u

Piwa: 136

Respekt: 35,8

1,2,3 argument - Pocz?tek przej?cia
4,5,6 argument - koniec przej?cia
7 argument - Liczenie dla stanu przej?cia (0 - pocz?tek przej?cia, 1 - koniec przej?cia)
8 argument - typ przej?cia (https://wiki.multitheftauto.com/wiki/Easing)

Dla przyk?adu:
Zmiana pozycji obrazku w czasie 5 sekund na przyk?adzie getTickCount(), spos?b przej?cia liniowy



pX = 50 -- Pocz?tkowa pozycja obrazka w osi X
pY = 50 -- Pocz?tkowa pozycja obrazka w osi Y
kX = 100 -- Ko?cowa pozycja obrazka w osi X
kY = 100 -- Ko?cowa pozycja obrazka w osi Y
-- Pod?oga dla argumentu kt?rego nie wykorzystamy


-- Przy wywo?ywaniu funkcji ustalamy zmienn?, kt?ra zawiera informacje na temat ticku podczas wywo?ania funkcji:
czasStartu = getTickCount()

-- Przy dzia?aniu funkcji na podstawie onClientRender przy ka?dej klatce wczytuje si? nowy tick
local teraz = getTickCount()
-- Odliczamy czas startu od aktualnego ticku
local odliczonyCzas = teraz - czasStartu
-- Ustalamy, jak d?ugo nasza animacja ma trwa? po czym odejmujemy czas startu - Tworzy nam to zmienn?, dzi?ki kt?rej mo?emy obliczy? post?p animacji
local czasAnimacji = 5000 - czasStartu
-- Na koniec obliczamy post?p animacji przy u?yciu powy?szych dw?ch zmiennych
local postep = odliczonyCzas/czasAnimacji
-- Zmienna postep b?dzie sie porusza?a pomi?dzy 0 a 1, zale?nie od tego jak b?dzie wygl?da?a manipulacja zmienn? czasStartu
-- Teraz mo?emy wykorzysta? wszystkie nasze obliczenia:
x, y, z = interpolateBeetwen(pX, pY, _, kX, kY, _,postep,"Linear")
-- Dostali?my ju? zmienne, dzi?ki kt?rym mo?emy ustawi? nasz obrazek:
dxDrawImage(x,y,szerokoscObrazka,wysokoscObrazka,"obrazek.png")





Stara?em wyt?umaczy? si? to w najlepszy spos?b jaki potrafi?, powodzenia :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-11-12, 15:31


xyzzzikk

.gg






Wiek: 19
Na forum: 2915 dni
Posty: 175
Nick w MP: aspyk

Piwa: 6564

Respekt: 30,5

"Dawcio77" napisał/a:

1,2,3 argument - Pocz?tek przej?cia
4,5,6 argument - koniec przej?cia
7 argument - Liczenie dla stanu przej?cia (0 - pocz?tek przej?cia, 1 - koniec przej?cia)
8 argument - typ przej?cia (https://wiki.multitheftauto.com/wiki/Easing)

Dla przyk?adu:
Zmiana pozycji obrazku w czasie 5 sekund na przyk?adzie getTickCount(), spos?b przej?cia liniowy



pX = 50 -- Pocz?tkowa pozycja obrazka w osi X
pY = 50 -- Pocz?tkowa pozycja obrazka w osi Y
kX = 100 -- Ko?cowa pozycja obrazka w osi X
kY = 100 -- Ko?cowa pozycja obrazka w osi Y
-- Pod?oga dla argumentu kt?rego nie wykorzystamy


-- Przy wywo?ywaniu funkcji ustalamy zmienn?, kt?ra zawiera informacje na temat ticku podczas wywo?ania funkcji:
czasStartu = getTickCount()

-- Przy dzia?aniu funkcji na podstawie onClientRender przy ka?dej klatce wczytuje si? nowy tick
local teraz = getTickCount()
-- Odliczamy czas startu od aktualnego ticku
local odliczonyCzas = teraz - czasStartu
-- Ustalamy, jak d?ugo nasza animacja ma trwa? po czym odejmujemy czas startu - Tworzy nam to zmienn?, dzi?ki kt?rej mo?emy obliczy? post?p animacji
local czasAnimacji = 5000 - czasStartu
-- Na koniec obliczamy post?p animacji przy u?yciu powy?szych dw?ch zmiennych
local postep = odliczonyCzas/czasAnimacji
-- Zmienna postep b?dzie sie porusza?a pomi?dzy 0 a 1, zale?nie od tego jak b?dzie wygl?da?a manipulacja zmienn? czasStartu
-- Teraz mo?emy wykorzysta? wszystkie nasze obliczenia:
x, y, z = interpolateBeetwen(pX, pY, _, kX, kY, _,postep,"Linear")
-- Dostali?my ju? zmienne, dzi?ki kt?rym mo?emy ustawi? nasz obrazek:
dxDrawImage(x,y,szerokoscObrazka,wysokoscObrazka,"obrazek.png")





Stara?em wyt?umaczy? si? to w najlepszy spos?b jaki potrafi?, powodzenia :)



B??d w argumencie 3 i 6, po naprawie:


    pX = 560 -- Pocz?tkowa pozycja obrazka w osi X
pY = 615
pZ = 0  -- Pocz?tkowa pozycja obrazka w osi Y
kX = 56 -- Ko?cowa pozycja obrazka w osi X
kY = 615
kZ = 0 -- Ko?cowa pozycja obrazka w osi Y


czasStartu = getTickCount()

local teraz = getTickCount()
local odliczonyCzas = teraz - czasStartu
local czasAnimacji = 5000 - czasStartu
local postep = odliczonyCzas/czasAnimacji
x, y, z = interpolateBetween(pX, pY, 0, kX, kY, 0,postep,"Linear")
dxDrawImage(kX, kY, 600, 600, "logo.png", AristatesYuvarlak, 0, 0, tocolor(255, 255, 255, 255), false)


Lecz dalej nie dziala.

[ Dodano: 2020-11-12, 15:32 ]
"Wilq" napisał/a:

Najpro?ciej u?y? funkcji, kt?ra zwraca Ci warto?? animowan? (czyli np. pozycj? X)

Więcej informacji znajdziesz w Wikipedii MTA:

animate


jaki? przyk?ad u?ycia?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-11-12, 15:41


Wilq







Wiek: 24
Na forum: 4569 dni
Posty: 3409

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Przyk?ad:
przesuwanie elementu GUI
local sx, sy = guiGetScreenSize( )
local window = guiCreateWindow((sx-300)/2, (sy-400)/2, 300, 400, "Test", false)
guiSetVisible(window, false)
bindKey("f2", "down", function( )
    if anim then return end
    local v = guiGetVisible(window)
    if not v then 
        guiSetVisible(window, true)
        animate(0, 1, 1, 1000, function(alpha)
            guiSetAlpha(window,alpha)
        end)
    end
    anim = true
    animate(v and 400 or 0, v and 0 or 400, 2, 1250, function(height)
        if v and height == 0 then 
            guiSetVisible(window, false)
            anim = false
        elseif not v and height == 400 then
            anim = false
        end
        local w, h = guiGetSize(window, false)
        guiSetSize(window, w, height, false)
    end)
end)


Postaw piwo autorowi tego posta
 

 
Tagi: interpolatebetween
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

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
Dodaj temat do Ulubionych
Wersja do druku