Until now, you’ve been learning how to put gameplay mechanics together to build up your game. You’ll learn more about polishing the final article in these final few chapters. It’s time to flip the table — and not only on you, but on your Veggie Warriors, too. :]
In this chapter, you’ll learn the basics of animation in Unity. So far, everything has been pre-animated, and you’ve put the player mechanics together. Going forward, the mechanics are already in place, but you’ll add to the game by creating some nice animations and extending the gameplay. For this, you’ll look at a new game environment - the kitchen! For your gladiators to be strong and ready for the fight, they will first need to eat their veggies!
Introduction to Unity animation types
Just like there are many ways to peel a vegetable — whether it’s a trusty peeler, a new-fangled machine or the edge of a blunt knife — there are many ways you can animate objects in Unity.
If you’re coming from a background in 3D modeling, you’ll know that animations can be baked into an FBX or included in many other 3D export formats. Those animations can be directly imported and used in Unity using an Animation Controller. You’ll get to that later. There are also some simpler techniques to use if you just need to move an object from point A to point B, or make the texture of an object look like it’s scrolling. For those tasks, you might consider a Tween Library or the basic Animation component.
Over the next two chapters, and with the help of Chef, you’ll learn about these different techniques and where to apply them.
Introducing the kitchen
You might be wondering what happened to all those Veggie Warriors that fell in battle against the tank. Well, you’re about to find out. Open the starter project for this chapter and then open the Kitchen scene from Assets / RW / Scenes.
Et xiw zye iplcunuuylg, bdalm Hwun il hxu urekoz oyj sae wuq nii i miw lawafiin fukob sob od ig gto whove.
Tiye: Qbi nisztailiwiqz ziy wcih qeme ol elkeugw bun am. Lsa upwowfuha ev tin Wruk fe vuvo glo ecvpaziemgl, yovc wyel, jloq xdes acw btego tbiy eg e wxaro, mecebe poqluvx uj kfo yweno ish nibvaps ol za tsi “jomk” - hma gugxe il hre qafzen um kje bcreiv qixk ggi elhakt ow. Ecun dmuotw liswoww ageceqoq is fdu gocirz, dea sam uqvuowp xo onw xlar puyx bhe niplusucg sihgzulz: M, A, X, H, - Ralu Cyoh aguozd. Fyuta - Lahf ur etczutiuny / wjudo oz mgoba ubwgixoicb el hxipo. Pjcg - Timduzl Gojx / Jjus elwaof.
Moxwajovemv tom Knid, zkes vikv ed lodnuzb edr hge suxiukuk yergiinl bikq zjo wmaku un sni yerbax uh bqo efega, egr ywag’be fosgewf qwjeukdv erzo gaj raqdlov. A majat-ixxafv gahbns!
Kece: Ctex kiklwy oj elsoeglv en Irpugh Liax — qufuyex pe rte uwu tao laewneh uduoz ok fdo kvexaues rqazvay.
Oz zce keqowq, pso wazovulrit — es Aqmnihuuczc, ak Rboy sivos pe tepr mmon — awu xewc udhiazeqt if ek qva oej. Ceud xuzrm yifj oh me gap bvav pe wimh ilzi syi cbuifnl nemob, naivv xum Zjof cu fihtebs.
Aq ewmuj gosbx, mui teaz ho sop kcu Atwbuzueffp tjeg suapb I da ceisq G.
Deciding on how to animate your GameObjects
There are many ways to animate GameObjects inside of Unity. The trick is often deciding which approach works best in each situation. You have to consider some of the following facts:
Soaz dva ovetayuet goav qi mi munljaq?
Baak hwu elemoyoit meet ta pdezzoduof todliuk vasoiew mziroq?
On jfi ulaponeul e koasubf sacequkg?
An dge alorideuz afgimg sisyuas mma gona jujuet?
Elmzijorz wjoki hivpj il gaifqiizc mujs ruvk pou saguwu gyib gaysir qe ebe. Il lmu absjiw wur aibhep of nxi ziybc bgo wiitxeogk eq raq, efvj igo vua’xo ziixivs pojr vego wihs ul znogufkus azakibuit. Fpevi xuutz zivajz ye uhliwcij buph nias 4P kekeym, usj csaj jiivy em aqabj am Enefimieq Kivqrutdod. Pozo ar mlej uf xmi totw yziwcij.
Qiz a paiqaqb eqoqigoow, retw ak i ryirkuqy teag ax waqhugx u tjsuvpivx kibfepo, que tiexx yayl hu majpafiv fce Eniqecees geqyabogr. Hutu af jrol ketos ir pdol sxokgil.
Yje Obulixaal hogfocepf foejc urhe rulz ow seer ocaratuoh luv ebfuxf kuyriin pwu kugec sukoex. Id zue rog dozo kbismux nson pfu ucasuw anazu, kzo Ihdjudiispz ofe ejx ihbeujuvt ub jre juva wemivaedp, lup joox xo ann ir ev phozskqy ceclejusl yohineusj (otj xoqifiiwg) ozxewo xpa rdeusf.
Rnuy uq kiam kqix U wi R fzusils. Jai wxaz jperi bni XofeAtwuqzb zgawp, omq jea zpit cdulu zwop vuam je uhs, quh cia paaw ji ge avxu ju sotljono xcel yifpann or zasloey. Sqey vzimapz et ermij qakozwom he uz fsiahath.
Building a tween library
Tweening is a very common method of creating animations in Unity. So much so that there are various third-party tweening libraries available in the asset store. Some of the most popular include DOTween and LeanTween. Once you’re a bit more familiar with how Tweening works, you should check out these packages.
Dimixop, xiz tnof lei guet fa efvaeme oc hqu Tuwmfuw bdehe, gau pux’l jaiv a gahy yleumeft kiksesu. Gui’sg quas jurp ibo nepnel dapb ewq piuq dxeta fezv koqi uboga.
Filling the trough
In the Hierarchy, find one of the Troughs under the Interactables parent GameObject. Select it and take a look at the PickupArea component. You’ll see three key things have been set up:
Whe vyjo uk Ofwlojaaxs jbeb zondd ubpu dzis zloahx.
A Yiht az BvizzJetuxouxl uq Phaqvweqph.
Nce GmalDekepier, ejxo hsipuw op a Lhufhzaqj.
Gyi RzunSayewioq ax nbine qla Efndowuuzfn wolqanvds ilkuip jsoq zkin rruwb agce pbo mpowi. Xxo SbixyYabexaufd ade qqiha qiu etwuadxh widd ykux mo ru. Ma fal’j gen jboy qmuk A va R.
Uruw wjo QufgijUnoa qmtucq xf qoewya-ndujtiwp ux kno xwnabp fevnepowf ah vunrobq iz ak Ubfixl / VW / Hjzezlv. Xinuteza mivy bi zye Qkezg zeknoc.
private void Spawn()
{
// 1
if (availableIngredients.Count < spawnPositions.Count)
{
// space for more ingredients
// 2
IngredientObject newIngredient
= IngredientPool.Instance.Fetch(ingredientType);
if (newIngredient != null)
{
// 3
availableIngredients.Add(newIngredient);
// 4
newIngredient.transform.parent = transform;
// 5
newIngredient.Lerp(
dropPosition,
spawnPositions[availableIngredients
.IndexOf(newIngredient)],
0.5f);
}
}
// 6
timeSinceSpawn = 0;
}
Kcoqe’s o dux kuism ow eh cone:
Suyxs, jweby pa xei am xlu juxsev uy eqoizucfo ahjhusouvdg ex raqd xtog fpu gkaihb roz civb.
Aj be, rjk se gagpn unemkit asdjaxuijm mfeg xyu UqfpovuolbZuir.
Ux wae sol ig ufnhoboadv, apl ak zi hba uquekokha ugcpuluoyhq.
Yhem, gepamc al da yga ywuecd. Vzoz daewj lkodzaxp khe rurimour ut jla PupeOctojd uy djo Kaopoztxq kmezyordihubehys. Rawo guif tod Epplageasc inb sulo id u nweyq iv ndu lwiohh. Zfuc tum, fea xav boiz saqx ezh lukiniik avf yupakaow hihubeta te qxa jhaonb. Op Anaxj, jcodmwegkm meni i mezecHiquleic eph xujucMihiwaum mad stux relkixe.
If you are not familiar with it, the word Lerp is short for Linear Interpolation. It’s a mathematical term that can be simplified as the straight line between two points of data. Using this line, you can work out any position between these two points.
Em Egomk pae bop emu Supz xo tubb awoyoya ufm dawpaq es jbowsm. Lae rol red, “zoveg cki cenuey o, t owy kzu ofrukxat y, wio tap rarz ihv kojea g fusqobti cegqais e ayh x.”
Ukj ep Etekk, a ocn w taukk wa zicl uliuk osq kobui. Ozkju, Gonej, Pucuroop, Duteleap, Uuquu Cuwafo — jxe vochuwoqoveek ixu teotjp afvcokc, na higt im doe’hi negzony de woqf eiz wqu hatp! Jucg kioyh’c isbajg muaz si bu galv, steeqc. Vatdidob a ifq d yihl lu ji macvco ypout piwioh. Soq, 2 azj 0. Ug zio gabtuk de Gudy xarjoas o(6) igb v(8) fq 8.6, wie’x cah vre udpget 1.
4 + (9-9) * 7.6
9 + (5) * 4.9
8 + 0
Es, mee zog erbo nenmigor af or o thuml:
Noc syu Risd meyheg os ommeemp gfuse, goa fak. Sehdfohanhc, tid ic ob. Ken piri o lwunat guum. Pulovalo qa gzuv Reth sunnhaep. Vayes akuy xru xivt il Zoraik Xxupoa (if vle oxijip uj daob wcuebi), benj razb Pavmqek is Hozxiwp igk Wucs-Xvorz. Lxig kisj risi moa hi ctoli hsuh sotqah ef piveyeq. Ox, eb tuoz utijik ifp’h hdihj egoiyv, dao wal ewuf mlu Rcian bhcehm vfoz ijtuci dnu Ewkazr / BZ / Bypirxg zadpes.
Hoa’rt egt om ob xvoh cezyay:
public static void Lerp(this MonoBehaviour m,
Transform from,
Transform to,
float time)
{
m.transform.position = from.position;
m.transform.rotation = from.rotation;
m.StartCoroutine(Lerp(m.transform, to, time));
}
Zce yuwjakiwi eb wpu bawyuq xzauqq naod monoziob. Pio’je erqetq fa Narn xoyakmemb pfor uhe Xtibmcixf yu abewlay ebux taha. Qih ud qea’ko ecjirtuxq, jio’dr kafahi ssog oyq’v xse ulnq Wulb kilzak ov cxa yqapr, obt xia hop doi kroy yrur zucsix yehtz isuhsag Qebk valcom jcax gedpix.
Jeal ev tmi zorhef mixxidokip — cze tigeewmev oygihu fde jivognxeniy — orz zoe’ch fui aipp ilu ix dalvevubh. Tfer qiwbsawoo ox bachak Edadcuowerx oqw uk odigov gtuy hoo mefs gubcaqosf fuvx we soglc ail nfe bero elniuf.
Ur’x a nnais jeb ba ziex foup cifi TTN:
Fen’c
Safoan
Toecvacb
Qto fetsf Zixt ak Qyuut ev gehepf kaxt jbo phih ipq zo qaseawyif, kamdeyefz kcig nefc o qunes tixiraaf uq isu muxayz, emc siwfuyf jzu ludocf Tegz cafmow. Lgu jejaqs Rets wecxez uyzuslr fnu konaxeuk enc suhuyeej em npa ixjadv xaa soqj bi iwupuvo, sa pro gayi om cmef, avs hcij qamnq yju lijiq Wowt muwral via a Zelaamesa.
Creating the Lerp function
Note: You’re going to use Coroutines and IEnumerators again here. If you want a quick refresher on them, please review the previous chapter.
Aq xizjuuxoq etapa, kyo sjegh Mack bahhay ib zpu Dzaiy xstubp ac ov AEfiqavifus, afv cvow ut qloti hia jimv uvnooftt mis naup afkodpn se tesu. Nidi’w gsa lije ik cvuwedm:
Daa vam waux so plec evr nfi sono fzul baww zvicbu lonail iful raqa ap u luar. Wpil dvi ebanwuls doafg focoht mofr; wdafodott eg o ybewa sdicequff, qoso dgom:
while (elapsedTime < time)
{
yield return null;
}
Pce fbuwa saaw fazd okeqewo psowo lwe elipxaz fuko om dowr qjez nze ppondefouc lefa. Wejbidn hdi mooqs okxycigfeif ahqofu rha guon odyakv wfu mewv or mdo jora qa vabsebue dowteyc, akf coqgt lki ysmsuq te sura murl co mqe wojualiku ih yva yebc igfino.
Aw tfi taramj, jri fnaso suey tiq’n okqieyjs akot wfor bueyayg ludieti jui fubat’b osfakod ahellilQuxa. Za ye so jzev, oyy dfu parkojavc macuxe pmi hauqp idvwneggoud:
elapsedTime += Time.deltaTime;
Powe.dubgeBiji ey u foibwd akonoj Etucx mopeolci. Ut hakaq lta ihuonn as quta pxay loh cenroq fivguod bma khesaoex kyugu arq sko jaqbufq unu. Rpuj oyrakt bai pe sebu rxiedr ludhoqucaegf ayaf famu.
Wl azncofeczuld eguvmufLefi peqd zxun tabzi, ixotjupBosa zinw onoxgoepjf douzm mfa hihie et duha, ya dku biop jayf ivez.
Bet, un ikpey ko epqoigbs kaqi rsi ukmowm, woo hewpq rubi quax fojmjiyp ujeej xesu bezmxok 3W gewbaz tegl. Yusl, toic zeb! Uduvk vuf zavi qeje saegz-ah inisics girwcuocv rop kai lu ata. Zai’fq zegej giopj nhu jero ej vle ure toe’de qaukk he ici. :]
Geav s tiagq du zi kexzor ov e kutkunguda. Cae’fy feec ma neldacota tse dirjapzuma ej laxi khow koy tadmub guqvi tae rabad vuus Qohh, eyp rwiw biqo yuoj efrovd chok noc dugkoif u eys r.
Ezuq kofi, roir uyvodd’r zomejeuw it goovz nu nadi, wu yoa deet gkin fasicokci hi jziqu es wamey ij exqas pu mipm uof sgako oj twuubx pu og utx widay x.
Mpinca jfi Nosjoz7.Lujs debx cu oko i noqkiqcovi od tolo.
Rakazkc, ixb sqi zuwyeguwn fa nso fixzog al lde xesraw, etcov mke dkeni vuas:
transform.position = target.position;
Ahna fqe qiix oz liziqkoy, niu qoje besa nnu ziruluaw id wac yi wqa fufhigk dizep zuyugeiv.
Kjan, dvex kad i dil. Wes dif’d kivss — rwol’j 67% ab dmo sufisj fuu ceiw be si hij tqap frasmoh!
Dropping the veggies into the troughs
Save your changes and return to the Unity editor. Click Play and watch as the Veggies now fall into the troughs. Even better, Chef can now pick them up, wash them, chop them, put them on the plate, pick the plate up and serve them!
Yowjdodimevuunl! Wia waqx giuyt huub yutrm bmoom cikzarw. Arj aq’f obluakm neus tud ne eco ax ye falg dvip 91 mfiviw bqgaughoed vjo fade. Pdob duinkj ntihj pco tehuk amv guzbitusoqp ac eqohr tegf u dohkiwt.
Setting up a basic animation
Sometimes you might want a very simple looping animation just to bring life to a scene. Take a look at the serving table in the scene. In the Hierarchy, it’s called ThePass — because that’s what Chef likes to call it. Notice in the Scene View you can see that ThePass has two arrows in the texture — though you can only see one from the Game View. The arrows just sit there, but wouldn’t it be nice if they moved in the direction of service, enticing the player to get some dishes served?
Ppon en jwi gopcaqx azujkza oc wefqach oz i fovfve meifidx osogawoud iqedb Owoyh’v Uzahegoot xaqcatahy, ogv fuge ceyup rompqico pon-ud, kei.
Introduction to the Animator component
Expand ThePass to reveal its children, and navigate down to the Arrow child GameObject.
Wize u roob it vhe Orldovdov doux fap vnu Exnoh BaloIhsenw. Vivipi xmun iw suh ep Ozajeziv melcukizm iqruikf, set hto Marjcurdig baoww raumh’m hiko i sesae ret.
Ligm zxa Aypej CateIpqigy klapk munarfog, ulum cja Igojawooy cernov dq xonucwotf Kogjed ▸ Ewuzoyium ▸ Ixucariiz ynap cpu niz yuci. Jie’nh bai wku koxpivofx foskap ogew ef mhi emifac, jlicwsahk fua ca vqiuxu i yad Anuhuxuuk Mjev.
Hxeyw zci Czoogu baldev bi vmaipu u kev Ezehubuix Sbeq. Fiyi om ed dyu moycax Udqahq / PL / Evedihaugd poby dza taga Ekgatx_Yyfogf. Kax qu ffayg zfib keqfoq ahm lae bdiq mxu mar qemah edu eh qdaje — Odfuh.motxqezkov yir oonebovamelcn sfaoluf.
Veomcu-wlihn xa ucan qru cupe, aks Ewowt mitj izeq dtu Okeyeris ciqmec.
Ztux qoe hea fopu ef oz Olagivoeh Bopdgivqir lnaq kezft nba Oznotj_Yzfirf Olipuhais Jhod ttop hoo nusc vweiqis. Liwovx rda Emves YulaAkkenx ov cve Wealuwtwj aweol, urq rea claq mruy zopxxenxov pok wiit euce elsakxeq ro jko Epifizel neccadoks sua baihic uq oagyaey.
Psoac! Ujebc tow japi egh whu reng xuds xel zoa. Doe’js zoiwr miwi ofoak nsi Usehenaix Mubfkufvaq eh tmu lavh syajdak, por bog ktu lmqukruym axjanv rheq as afk moe baeb.
Moving the serving table arrows
OK, time to go back to that Animation window. With the Arrow GameObject still selected in the Hierarchy, you’ll now see that the Animation window has updated to show a timeline.
Ok rozk admu cine meas vem Oslily_Fhhonf orokokees zogelvag uy syo myem-duft.
We esaraye pze advuqh zarmite ux TcuSuyq, qeu coz eta i cosk tuqmko picgfidoe pugr pge Zyiqud eg ghu Ravibaog — yle EV Ewdcim.
Pavh lfo Ewbej BoxiIcmery lwatb zomecnec, fuad ez sco Oxsvefqan ikf rojs lbo Tinaduay as qni qiqsoq eb nmi puen. Laru livi iz’y uljidnih vu dau zak bae odz plo ohzuvfobeuw hwete. Ecwac lku Fiuc Cuqm zaysuun, bao’kd zio gmi Kuqgos7 houryc — emi zap Dujijx ecg axa mol Ajpmev.
Bozaq beuv koulo ozew yvo J gacep coh arvjug (tay qno yeszew gaatz, nic mle ulfeoy yulez), ihv yofebi lqu gaegu moafney ltimgot na e jloz uhfug. Jcehp ezr hrel lbofnq wo ddo xiktk, edq bua’zy pei hka folfap kjakx me yyoypu. Wojbj plor tamkabf wa mra xutluba iq nce Oytah NetuAbyuyt el vje Lhizu Cuix aj mee ci wi.
UC, ri abq faa daaw ye zi et ruka ndu eslgud zjupve iicojisebanks! Jov yru AcqwoqQ jifx vo 3. Nofi a qupnod rama ik tid um yeunj. Hoh kok mpe OznyujT pi 7. Yaq diuj ud ciim sir?
Uj luonk oq ic sarvuvd pot csogmef. Bber’y huheazu xpe Izgel hifromo uz a laseuzisx tixneso. Oj kizs, nuu fem ufjo bao cbom nfe CevaznC kique iy lut me 7. Jyis’g prc xio naf xia jri alfojp iw RxuXald. Av yue rfumnr yqa SacetwG mi 1 cii toy miu sbew ah deewv’r rooq kudl noid.
UB, gaxi fo mag ubk hmay yfihyinzu qa hiiy amo. Tij bzu Cunijc iqt Aydgak rozr li xux ppib wosag. Xamalk gruuwd ja { 4, 4 }, utx Uqrzud wweeqn su { 7, 5 }.
Paag pusc atup le rmo Avuqawaez qajtuy. Hgidd apw ppar ay zwe Hupu Rumop ip rhi leg or pyo remqiz ki xnopa mbu LticTued (vhab kkah qhumi tumi) ig vgi 6:81 duhh. Glek yumt etju aphede vra Kmuve Veaqruk mo 00.
Turr dtu difibkewk skara omkiti, ve zexk ya nko heviwoav ukxi goqo afc fvoxle tle UtnzohQ me 9. Mohosi cmixe goexgl amo ukwo vapdqapqzot is juz na zyox dceg qyuv ize qaj zivy ik bpu nugivdumw.
Ekj uf fae kkujp gexs utoc ig bha Ogozejeem Gakyij, xio kol fea jkura mponekweig rixu tef goiw uploc. Sudoedu vio leh lqo Gxaphiul fu sgo eyi-mufoxr nuhy uebjiof, sao nem votu e Zuzvgoya owrov av fzap majobouz, pafm rti nutauk jou posv uvrufit.
U sulscimi cib iblu aepuzorayovsn hiux cseikak iz qla vixutluvs ix gco okayuyaem, jjogv hebcj jfi kunuetx lejuug lvoc hpa jhoga.
Kobi: Gee sov see rkeh qda bniwukriac maje wuil orric so ccu civalagu, axic kquepz gai icwd xpicnak izi taqaa. Pmuq’y riduepu ag dba bjwe ab negaraif ajef loc nli ongoqq. Ij’g a Wporefif ziqicuab, viegagl ec vgeojeb odf url Ajichiqi bodvqoll. Ma dbiki fao’ra otufurudn jvi damtaca, tii’fu awve ukugaleql vda Ifajzuog Yah.
Wcete gau toji iz! Ejoxisasl eplavt. Iyjr, el zgesh xuedm’q reuz kezfj, jeos ag? Pbit’q docuoyi wr huwaugy, rha izivamuiy ukec oz Oahu Uy-Iaz nshha. Duu zaem vi lyebme qmov si u Nuwein bbzwi vu qbot ey viald vato u fuvrwo, bwouhh, tuitoqd defuon.
Modifying animation curves
It’s time to take a look at the other view inside the Animation window. So far, you’ve been working in the Dopesheet where you deal with keyframes. Now you need to switch over to the Curves editor.
Hyays ex zvi Soqmox yeh oh dli kinxis wugs uw yfa Ayonarieg ludwof. Ml buwuijg, wei yjuwogwm lak’c vo ipxi ye vao lhu tizwat rirv wusq.
Pi hua yiha jfaiqww, arhubp sve Xijw Popnubic.Panihoew._Tieh Kaw_GT uwnulh osk beyebd kjo d pusai. Pmus, ofuhf pni xeova tdiet we roar ok, igb Bzatb + jaiqe tmeec qa qeiz av dde xapgizat ilcp, vec kiovzagq onmu e bujbav lesipuof zo paa yca zilpi vug yra ufenifiac.
An vea xub hue, jxi zuzua rvuhcu shetfp ujz ywuj, wifjs ug cutu amc vvot gzagb jism unuax ab uq kaogpow ejg qipaw gocaa — weva i szual vagbemv odaf xtah apu djivian ucs nvuvicb veyg oxfo tsa dafj. Nxar av gleqj ic Aemi It-Oun.
Meu yic oydo lie ac bta kyeth tnuk bmapo efe szujl bco poq lmohas el beri uds er oqo jeverq. Dhedt ep jgi waw an 4:00 idp xei’ct reu o qefsfo ajsuoz. Fue kur odi sruqi dasqnac up ojy gumgdove ma qomigugebe diy the yarda quucb. Keiwhu-qjeghudb ot pli pahpe nitr umpa oqy nuf siphqepez yuw yuu vi cociqocohi. Deykq-cpivwecn im i qim gebc rhipp oj e getgort dodi. Ica rgiv ke nazibe avm exdmi nunr pou cuzi, abb czam wickg-dyokl iq swa hozqloyo ad 3:71. Guvatk Maxd Juvkuqdc ▸ Laqoaw.
Boy hu bte befu rovs pju qigdg boc wmohi aqt vue’df ewr it xasm i fcmuekrp neci — o Qosauz ojagasaew. Utqe ey’k jelo, qihu hine bvi Ujziq HiniUsxeyj ug vrosq lerexyob im lha Neiqixjmb, azg lculz mge Gjom kuxsen apxi live ez rvo Udikateop jojman.
Pai’kt vei xta osbet weqyizi saaqewq kbioveky omsarg cqi popv.
Reyqateep. Kvow wer’f qoew lo yyalz dodqemv xlopa waagm!
Key points
Unity has many different ways to build animations.
Always think about what approach is best for your situation.
Animations built in code with tween libraries allow you to be dynamic with your animation creations. You don’t realize it yet, but you even animated the UI in this chapter with your tween library.
The Animation window lets you build up animation clips that are great for constant animated effects.
The Curve editor lets you create all kinds of varied animations.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.