Wysłany: 2020-11-11, 21:31
xyzzzikk
.gg
Wiek: 18 Na forum: 2774 dni Posty: 175
Nick w MP: aspyk
Piwa : 6499
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?
Wysłany: 2020-11-11, 21:55
Wilq
Wiek: 24 Na forum: 4428 dni Posty: 3410
Piwa : 739
Najpro?ciej u?y? funkcji, kt?ra zwraca Ci warto?? animowan? (czyli np. pozycj? X)
Więcej informacji znajdziesz w Wikipedii MTA: animate
Wysłany: 2020-11-11, 22:06
Dawcio77
Wiek: 22 Na forum: 3312 dni Posty: 89
Nick w MP: cx_u
Piwa : 136
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
Wysłany: 2020-11-12, 15:31
xyzzzikk
.gg
Wiek: 18 Na forum: 2774 dni Posty: 175
Nick w MP: aspyk
Piwa : 6499
"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?
Wysłany: 2020-11-12, 15:41
Wilq
Wiek: 24 Na forum: 4428 dni Posty: 3410
Piwa : 739
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 )
Tagi: interpolatebetween
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: