Uso un sacco di funzionalità CCEase*
in Cocos2D descritto here. iOS 7 Sprite Kit ha anche SKActionTimingMode
. Tuttavia solo le modalità semplici. Come posso ottenere effetti simili a CCEaseElasticIn
o CCEaseBounceIn
utilizzando Kit Sprite?Come applicare diversi effetti di andamento all'azione dello sprite?
risposta
Il kit Sprite ha lasciato l'andamento (o il tweening) intenzionalmente limitato con l'aspettativa che lo sviluppatore avrebbe preso il controllo delle specifiche del movimento degli sprite. In sostanza, ciò che devi fare è creare un'azione personalizzata e applicare una curva di andamento al parametro prima di modificare la proprietà (rotazione, posizione, scala, ecc.) Dello sprite. Ecco un esempio.
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];
La parte di questo che determina l'allentamento è p = t*t
. Così, p
è una funzione di t
tale che:
- quando
t
è 0,p
è 0 - quando
t
è 1,p
è 1
Ciò significa che si inizierà a inizio e fine alla fine, ma la forma della curva in mezzo determinerà come ci si arriva. Le funzioni di alleggerimento possono essere semplici, come quella mostrata qui, che è fondamentalmente una facilità, o piuttosto complessa come l'elastico o il rimbalzo. Per generare il proprio, provate questo: http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm Oppure prendere uno sguardo più dettagliato alle equazioni di Robert Penner: http://www.robertpenner.com/easing/
Ottima risposta e grazie per i collegamenti! Voto positivo e accettato! – Pablo
un altro buon collegamento per l'implementazione matematica dei diversi tipi di funzione di andamento è disponibile all'indirizzo: https://github.com/warrenm/AHEasing – vim
Come applicheremmo a 'SKAction followPath'? – Jonny
Per allentamento arbitraria, risposta Kardasis' dice tutto.
Se stai cercando un modo semplice per aggiungere un effetto di rimbalzo alle animazioni, che è coerente con il modo in cui le cose sono fatte in UIKit, ho qualcosa per te.
Apple ha introdotto le animazioni primaverili in UIKit un paio di anni fa, consentendo di impostare uno smorzamento della molla e una velocità iniziale durante l'esecuzione di un'animazione UIView. Sfortunatamente non lo hanno implementato in SpriteKit, quindi ho creato la mia libreria che fa proprio questo.
È una serie di estensioni su SKAction che replicano la maggior parte dei metodi di fabbrica, aggiungendo i parametri di smorzamento e velocità.
Il codice è su GitHub, si sentono liberi di usarlo: https://github.com/ataugeron/SpriteKit-Spring
- 1. Come applicare effetti multipli sullo stesso elemento
- 2. come modificare dinamicamente la posizione dello sprite?
- 3. Come applicare gli effetti anti-alias dei font nei CSS?
- 4. Dimensioni dello sprite su diverse dimensioni dello schermo Andengine Android
- 5. Come applicare effetti jQuery per elemento creato da Knockout.js
- 6. Applicare effetti al video durante l'acquisizione in Android?
- 7. effetti particellari?
- 8. La posizione dello sfondo dell'icona dello sprite SVG viene visualizzata nella nuova versione di Chrome
- 9. Come aggiungere effetti di immagine in Android?
- 10. Best practice: disegno efficiente dello sprite in XNA
- 11. Come applicare due stili diversi a un elemento in Android?
- 12. Come applicare diversi layout alla stessa destinazione in NLog?
- 13. AndEngine- Disegno del figlio dello sprite dietro il suo genitore
- 14. Applicare due stili di carattere diversi a TextView
- 15. Come creare un'immagine sprite
- 16. Applicare il filtro di ridimensionamento bicubico a uno sprite di Pixi.js
- 17. Unità Resources.Load <Sprite> vs come Sprite
- 18. Combina array di oggetti Sprite in One Sprite - Unity
- 19. due diversi metodi sincronizzati dello stesso oggetto?
- 20. Modifica delle immagini sprite in Sprite-Kit
- 21. Effetti immagine per Android?
- 22. Come applicare lo sfondo sfumato in andengine
- 23. jqPlot: come colorare parti dello sfondo/griglia con diversi colori
- 24. XNA 2D Camera Engine che segue Sprite
- 25. applicare diversi eventi mouseover a nodi vicini (connessi)
- 26. Effetti grafici come tentacoli elastici in Contre Jour
- 27. Come si ripete sprite orizzontalmente?
- 28. CSS Navigation Sprite - Forme dispari (non quadrato)
- 29. Kit Sprite - Determina il vettore del gesto di scorrimento per colpire lo sprite
- 30. La posizione dello sfondo della bussola sprite non è come la voglio io
immagino Apple vuole che noi usiamo customActionWith ... per casi come questi. – LearnCocos2D
Hai qualche idea su come farlo accadere con 'customActionWith'? – Pablo
solo concettualmente, l'idea generale è quella di utilizzare il tempo trascorso e la durata e di alimentare entrambi in un'azione di andamento per determinare quanto la proprietà desiderata (cioè la posizione) dovrebbe cambiare in ogni dato tempo trascorso. Ad esempio, la funzione di andamento che è possibile adattare da cocos2d. – LearnCocos2D