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
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