Używam wielu funkcji CCEase*
w Cocos2D opisanych here. iOS 7 Zestaw Sprite posiada również SKActionTimingMode
. Jednak tylko proste tryby. Jak uzyskać CCEaseElasticIn
lub CCEaseBounceIn
podobne efekty przy użyciu zestawu Sprite Kit?Jak zastosować różne efekty łagodzenia, aby spryskać akcję?
Odpowiedz
Rozluźnienie lewe (lub tweening) Sprite Kit celowo ograniczone z oczekiwaniem, że programista przejmie kontrolę nad specyfiką ruchu duszków. Zasadniczo, musisz zrobić niestandardową akcję i zastosować krzywą dynamiki do parametru przed zmianą właściwości (obrót, położenie, skala itp.) Ikonki. Oto przykład.
CGFloat initialScale = mySprite.xScale;
SKAction *scaleAction = [SKAction customActionWithDuration:duration actionBlock:^(SKNode *node, CGFloat elapsedTime) {
CGFloat t = elapsedTime/duration;
CGFloat p = t*t;
CGFloat s = initialScale*(1-p) + scale * p;
[node setScale:s];
}];
[mySprite runAction:scaleAction];
Częścią określającą luzowanie jest p = t*t
. Więc p
jest funkcją t
takie, że:
- gdy
t
wynosi 0,p
jest 0 - gdy
t
wynosi 1,p
jest 1
Oznacza to, że można rozpocząć się początek i koniec na końcu, ale kształt krzywej pomiędzy nimi określi, w jaki sposób się tam dostaniesz. Funkcje wygładzania mogą być proste, podobnie jak tutaj pokazane, co jest w zasadzie łatwym lub dość skomplikowanym, na przykład elastycznym lub odbiciem. Aby wygenerować swój własny, spróbuj tego: http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm Albo przyjąć bardziej szczegółowe spojrzenie na równaniach Robert Penner za: http://www.robertpenner.com/easing/
Dla niepożądanego poluzowania, odpowiedź Kardasis' mówi wszystko.
Jeśli szukasz łatwego sposobu dodania efektu podskakującego do animacji, to jest zgodne ze sposobem, w jaki robi się wszystko w UIKit, mam coś dla ciebie.
Apple wprowadził animacje wiosenne w UIKit kilka lat temu, pozwalając ustawić tłumienie sprężyny i prędkość początkową podczas wykonywania animacji UIView. Niestety nie wdrożyli tego w SpriteKit, więc stworzyłem własną bibliotekę, która właśnie to robi.
Jest to zestaw rozszerzeń w SKAction, które replikują większość fabrycznych metod, dodając parametry tłumienia i prędkości.
Kod jest na GitHub, czuć się swobodnie z niego korzystać: https://github.com/ataugeron/SpriteKit-Spring
- 1. Jak zastosować efekty anty-alias czcionki w CSS?
- 2. Jak budować niestandardowe animacje łagodzenia/odskoku jQuery?
- 3. Jak zrobić akcję, aby zamknąć NSPopover?
- 4. Stosowanie łagodzenia opóźnień setTimeout w pętli
- 5. jQuery.Cycle - stosować dwa różne efekty na samym pojemniku
- 6. Jak zastosować różne opcje kompilatora dla różnych kompilatorów w cmake?
- 7. Jak zastosować różne mapy kolorów w różnych partiach?
- 8. sklearn pipeline - jak zastosować różne transformacje na różnych kolumnach
- 9. xkcd: Efekty zewnętrzne
- 10. Jak dodać efekty obrazu w Androidzie?
- 11. efekty cząsteczkowe?
- 12. WPF - Jak dodać efekty (takie jak Shadow) do etykiety
- 13. Jak wyłączyć akcję przesyłania
- 14. Efekty zewnętrzne w OpenGL
- 15. Jak zastosować efekt Bass programowo w android
- 16. Efekty negatywnego padding
- 17. CRYPT_GEN_RANDOM dziwne efekty
- 18. Usuń RecyclerView efekty przewijania
- 19. Płótno profesjonalne efekty rysunkowe
- 20. Jak zaimplementować efekty zniekształceń obrazu w Androidzie
- 21. Efekty uboczne LD_LIBRARY_PATH
- 22. Jak przekazać akcję komponentowi React
- 23. Efekty przejścia okna dialogowego
- 24. jak zablokować akcję asp.net mvc?
- 25. Python: Zrozumienie listy, aby przypisać różne wartości
- 26. Używanie CoreText i dotknięć, aby utworzyć klikalną akcję
- 27. FFmpeg efekty zanikania między klatkami
- 28. Jak dodać efekty Aero okna do JPanel?
- 29. Railsy prowadzą do bezpośredniego działania w indeksie, aby pokazać akcję
- 30. Jak zastosować UIApplication podklasy?
Chyba Apple chce nam korzystać customActionWith ... o takich przypadkach. – LearnCocos2D
Czy masz pojęcie, jak to zrobić, używając 'customActionWith'? – Pablo
tylko koncepcyjnie, ogólną ideą jest wykorzystanie czasu, który upłynął, jak również czas trwania i karmienie obu działań, aby określić, jak bardzo pożądana właściwość (tj. Pozycja) powinna się zmienić w dowolnym elapsedTime. Funkcja rozluźniania, którą można zaadaptować na przykład z cocos2d. – LearnCocos2D