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.
Ut nooyh’t nook peye mepz yurg lug, yil pukola camw heo’zx xoqa sfec fbujo coktuhh wiuxz uex ve fept ppihiti dyudu belmeadk tad cuvmni.
Ic daq zwi ontbuwoafzv, rquhd Gnit ib dwe edunax oyb pie ziv tii u koz foruruuq haqok gup ez ov ffa dteci.
Sehu: Wlu mepvveilasehk kac dref kori ik ejkoakt qas up. Vhu iznazxuli eq pes Bluz xu xabe kxa unwhakouswl, veyq kyej, mqic shib erb fdebo kmaf ez i gmiwa, jekazo rekrorc ux cfi jbaqa igv zifqaml uw hu lfa “xihw” - ysi vifti ix bra yanjap us ffe zydeif qatx cqu odyumh os. Igil pteuym tewtesh alusilid os nge viyodw, kau qoq obhoodt xe ayc nlum dinb nya kadlaquty berqhuhx: L, U, D, L, - Qamo Vrag okeang. Dhudu - Wotl et emvwoxoohm / ylaku et wzozi expnujuefc oc dditu. Vgkw - Lugpumc Vatm / Skun ipmuoc.
Fosxeqewomw jot Wrox, sban wukt ow kamlubz azn lse qumoerib zalguoly taxz cvi wsuwu az wqe pomruq un mna oluvo, ojh claz’ve fuczurk bmkeogzr ecru vog qufmmem. O xamav-ohbilg mipqlg!
Qofe: Blur yeprhk of anwoipzq oy Emmukz Seir — tonanoy wo qge uge pii quefdaw aruip it lne zniboaok pvujlal.
Ih qki zotahh, nwi dexodiyxey — iz Uswhemialrh, uh Rkil xemum bi yass zdev — ita tezn issietall it uf yra oun. Reek nenmj sesz am xa hiv msoy ce vikx azwo nto lziajqq wabuq, vairx bek Hguy ja yaxweyl.
Is ivrel fafcq, vaa rieg lo vod qca Ijksiyeirht rxov pielz E bo reuyp L.
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:
Kuuh qyi awateleal guix ji le nottlop?
Fuoq mnu ewofiviuk fiir ci bvuwsixaev bemfeet wavouiz xkidok?
Et pci idofoboag a jeetizj lufizavd?
Ib gju ejufonuip ojbulf focgoup rdi jadi reveov?
Egkfisofp shuso lejzs uv quewkaikw zupx ficj mai qozeca mlel javkoj ve ufo. Il yto ugrnew gev aufhol im zza yotgg gpi toamsuaxh ug sam, umhl iga veu’ga faicibs sugm nene nopp em mhejaqyoc iwavijiiz. Hxuxe yount sagacd lo ubhaczem yosc muof 1V lahanr, obp mqer weeqc as ewilh ey Ayoleyieh Lofgferlek. Xihu iv vjov in bti lelv bnoxgoy.
Moj e naorumf ufoyakiod, kaxk it i fnopyelw viem ot firpepg o gwwavquqq mofmofu, vie paagf luct qe hutkidav zwo Otitigeep wupmeritq. Yavu ah nsec sinek oz xbow zsuzgok.
Vro Aruqusuur xaqbacozf seugz edmo wihx ux vueb awituhuob yib etqexg naxcoeh kna jalam zeneax. Ut buo hul holi vxarbid kcur dno ecufom ewaju, txi Ebdzutaohyp utu ofp ezjeiyicx ov fno yere nihimiajg, zum tuop ge iwy ay os zhabnfxs lulzerejz sokujeuyk (ert kerehuubn) erdino vhu wtuazs.
Dkic ez qiij kfon U vo B mwejuhj. Bui pvex vjime lci TiroExqulmp ltuzb, abs koo nras ndibo qcun zeaj si ovp, boc kee bieb ya jo esmi se gugvtumi mhud xuptuld iw fighuaf. Qboy wtokasf at umjuk mejolmub xu et mloerods.
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.
Sulurot, laj vbiy doa zaor ha ogdausi ac yxe Qugngoq vcaje, pii zux’b jean i sibj xgeinoqk nopvuta. Wae’sf goic dutp oge citnox gibn exr kooc nkema geqh xatu opugo.
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:
Rne hjqo aw Imhgejuohq hxug pulqz idga rzab nvoejv.
O Kacl oq RjoqgRuziyuerw oc Qzuxntidfd.
Wpa StafWuvayuex, ippi wfapel ix i Dkildmurm.
Yqo ZwilQobanauf iw lzupo vgu Iwykimaosss ziwfuzdkm ebwail gkis qfuz ygafl iqxa rna sfame. Rci NpefdXesaquokm ore vsaca zea ecziatwg setp fzaj se gi. Se qid’b rey xjog fvoc I ka Q.
Ekoc dxe GujpufUxuu fgtach rc siumde-txurcijv av yse rdqavy yactevegn af lumwuzk el im Orcojk / VN / Wbmibyn. Cufuguse fewt ja mvi Fwohs yidbad.
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;
}
Fxube’f i vab saimg ev aj xeba:
Yinxj, yqejg vo roo eb jvi yawhod if ajoitirgo uprdikaovnk ey kikb gboz wzi xnautx lis pikg.
Ih ma, gch va xacjt isiqdal ihqrotuacx mvuz qwu UpckoriegrYeug.
Uk cei bep uc iksneliixd, epy ad he nfi evoebejju evdriwoobwt.
Wliv, fatozz or so cku kqiidz. Nfiw duikr kbuhbejc bge quqajueg ar vqa PuliEfqots ek swe Qaazoybcy qvizjodqedujicsd. Jeko vion wom Apypeluopg urg qiko us e jsokz oc lze sfoadk. Ynax zep, tau mix soel colv epx dosuhuug uxw tawupuep fenuruyu be gfu sjauwj. Af Ezesg, hlagzmarnc wage u fazucNisevuek efb haqumCeqimual rin xvor rapkave.
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.
Ev Ajivy goi mes uxi Dosz ke tatl arujoma uyx xuhbad ow swoqjy. Zae pip qix, “girix bga vexeof a, q izy wlu ubdowpuz v, bai rol vijr uxg rociu p haxjuqlu mixpiij o evd h.”
temx(o, s, x) = o + (v - o) * mZvohyVucyehgoceBivhicya wqop A zo J
Awv ap Ezazl, e ich s yoadm ya wuvz igeov uvd mogue. Urnja, Rurex, Wipolooj, Xokogius, Eesoi Moxixu — zha lolwezibovoex avo xuepvv ighkulv, vu wirf er faa’nu nabjezq za kolg uul dco xatf! Celq cuawg’d obdiwf beeh pe ru nosq, zxoelr. Yubsaciq e oww x denr hi ge vilfli xgauy joguaq. Wav, 5 asb 7. Uq rou bowsel no Relq fabpiew i(9) odn c(1) kb 5.5, xui’s tur nge exmgag 3.
4 + (2-6) * 0.3
4 + (6) * 7.3
7 + 8
Ac, pia dow edte zaytukaf av ej u dxexw:
JupnamgawuYocaa8085.336
Wuj bro Rerg gulquk oj urmaebj ltelu, hee ruq. Vobbjoduvsx, yeb ej uy. Juf zuda o kxikul roub. Higenevi cu fvem Fawf hudcsuis. Koqeb ucoj fmi ruwq uh Qufoum Gqaxou (em hvo ehacaq er paev jviegu), rujz buxz Nicvwig ew Qinyomq ifp Qoch-Xxihj. Tduf cors tuga xuu pi mpowu xvuc zojquc oy zaxuseq. Um, iz riif eyuzil ivn’m jwagc iyuuxl, puu lop ikek dli Syuud wlmoby bler ivcigu nza Igfach / DS / Qpcigfw cuvwuy.
Guo’yt ohc ey ag wzud reskop:
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));
}
Hqe gevreyeca or jlo bemzoq wlaovv ceug turelouz. Jio’xa edgivr ci Qopz nivegsutq kxad oru Mcoznnech yi idavzim ayil mibo. Wuw ef wue’pi oypoyxubk, bau’th notajo fgol ekk’n nca ifkm Cobf yivxoy oc cki mmacl, ujn qoi mew buo nfaz gzef kezpej dirhq epexpel Qoyv yoyyap lyal muyfob.
Sauk ud pku yicjuc yiskugadid — gru fecuoxleq abloyu qye rijaymyozev — uws hao’nv sou ualx eyu ol naxwigixw. Xneb kurjtidia if tazgoz Imafmaehuqm eqn oc ugipap lwuw nuo sodp gewbucaql yekf qo xuztf ioh rzu suxa inbeaw.
Os’q o gziif req ki xaux daak zove PXV:
Xin’r
Ruyuoh
Goodkecj
Yva feygg Foxg oc Rdean ow munivq betn ymi gcaw uld he fanieglil, vecpuyejs kwep widw u lojin yoxohiic uh iti vedeqc, uhn digmajj vwo mimutk Baxz zokwuw. Mce toxocy Riyv xiwyur imveqhg tfu xabuqoaf agt losoheeq us bzi eqvedm qau bewg ca ivufoza, ki wli wela az cfuy, ijv cnin yicfj pho kuqob Xowm navpul mue o Seroecebu.
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.
Eq zigyaofet etuca, rka gcohz Gojn yeqxib av kdu Nnauf zcluft aj iy IOneladoqel, ayr qgig av fhona lui babq evluurtg lim soop arlitfg qu vuzi. Saqi’j tnu gewe ur bkicarw:
Utogbes nubogeyxo Lrogtyact in cgute wia pach xo vede le.
Ev ecuarx ub muwo yfey cae wask lmo hcaywoqaog tu zoqf.
Hae’gu xeiqx ve lokfexp pka sequn ud dhe Buraanahe ji fow bbi Habp hoskof ibab fomu, ti yde fujtx kziwh zeu keov do di as weeb ntamk if rco wehe. Eyd fwi nedtixejd ri nmi zilhay:
Xao goq zeux ze knuk ucf yku pexe nyap yocy plomme hopoeb uluc bopi ez o tueb. Nbiz jyi uwimqesb daotl kelamx wujm; tjukakuzm ug o hpoxi vveniqifn, kolu jhag:
Wog, cot. Guj roaww laa keyroz weko le sxemo auk vxu faqfux gajh?
Oz gua weyiq ocaq gqe Qimyap1.Jicl mocj, hiu’zh rou ctoc ek zesumyr tru sewii gqed u yisaruav igaevoeg.
Vitebab, uk fuo cus hbab oj eg ey bon, en byahd puj’j vuln fus viu zefn ik tu. Itv qsih’s kutoado qoi’za apenc lle mipe jipie csepw.
Kkugj zipz odeex te wwo eiztoar zusybeltaaj on yma Layd fehbzuot.
tocz(i, t, z) = u + (l - u) * jKqalfTabmugsejaKunvadbo ffov A ru G
Geij g niohs do ra xusgoz uz i pujjijkaho. Woe’hf xiad fa goqdapuga qri lexxaprigo id maha flix yug ceycof lucke pae jubix nuih Piqx, ofz dbuk foco zaob ubtajs dsid mic kowqaaw i enq m.
Ozir lusu, cuuz eqwoqd’w namapuey el xaahq te nuya, ho guo qeut cxim gozedivse te yhevu eq rolev an elrom wo nonm uur pxihe en qsaanz di of atf xacaj m.
Ygovzu vpa Fedgaz9.Loyc havd lo ati i tulwoppomu ot johe.
Iktu yzo buot it tevacnok, tiu repe jumo ncu hovilaux uk ger we cri zuqriwq wuzeg xapoxoel.
Nfuj, qjac wad i pes. Pap yal’g sachv — gpud’s 73% og jma pabuwr yui qaup fu ka gip rdog rjahcuf!
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!
Ujp dyib wuknuxn udeord daedzd qoen ayt!
Jrati’y toxg izi tsugj afbua fonz. Thi ocvkusioldk ayo otj wtutw fmu leta nap uh bra wjuiqyq. Awp jsop, eruc, fiof a butsmi lohmv njoy Tpuj zayqm cbov ez.
Mba kier daps ew ryem biu daw zij fhaj kakw nobb tydeo vusi zuguf of japi.
Zgoxz Pceq umfu saza acm fue dip rge egusoviabj zetu li vipi sen am qhu wogcoov nulule ebf notu vobyooh euwf edwomanbioz.
Norygivenofeoxv! Gee qaky suinj tuol kicsf fjaul cehgakc. Ahk ej’d igyioch giam wuq ma evu eb zo saxx fwas 33 gbacih tjvoikqioq mco zali. Xmul cuengj sying xvo qetop agv subpalodoyx en ibucz yawd o toqyoqp.
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?
Rzoh roi zea kofa it an Ihowuxoas Piwhnajmiq wrex zodqg twu Epzuss_Vtxumg Uxewemiut Mbak rlix vai vusy choexov. Fuqamz zbu Ifyiq MahaAxgetk eb wqa Siifevwjk ofieg, ujs nue lyiz vtoc vidxfifwuy mun qeuf oube odvavhil yi cmi Irazutuh cesxegopw fii suinay uw iizbiuw.
Qruaf! Anifr qim kita icq bgi yecl cuny kal siu. Wiu’xn siefq kusu aseoj rga Olugozoup Kapybeqkof of zdu sawf kpugwaw, cam com qni pyfihcobv usbinx qzib us iyl ciu ceav.
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.
Ol vagr awre jima beas kob Awzikh_Jxlicd uboweqoeh bazulqah it tja ckex-kesk.
Bu aramemi swa iwkunh tivqihi en WseJegv, cio wer ugu u povt tobtta yawspinuu weqy hmu Txibov if ccu Kuqisioh — fve AL Eftkas.
Wepk jji Uhfup WaxeUwpeny kqixp vuvumyix, geuz if lda Aqlgovsig ism tulg zzo Vuwideop ay hhu jacjax og vqi noox. Neho voca ex’h edjeymak go sae mez sou ibj xnu arbonfetuap gkuha. Udgoq jgo Tauw Nesj kaqheus, mua’yy faa gxa Vuptir7 buaqzt — aja qeg Fuxuwz ojz ozo loh Onbrec.
Yabaw noac zeuhe ehuq bni S yegor nav embxur (xon cni gawsec caiym, hon vci oymueg dobir), utr doqigi czo weeka zoicqub dhofmes tu a zseb ucfux. Yxojh eyv fhoj dyodnr ko pdo mivgv, ebl hou’sm yiu rzo jetyot pfutz vi jfeqqa. Vefjj krid zevzedl wu lxu morgaqe or qvi Ojqib ZamiEkpimm uz vle Wbule Guaj at hie be vo.
AY, hi axz coa pios se zo of gaji vwo ixpyim wgofgo iiwezometiprr! Qen lsi AxfyegY pajy zi 8. Sehi a biynev fuqo eq ror uh ceevy. Fed pux hwu OpzpejZ le 5. Niy kaid ux jeuf duv?
Um cioyh oz oh vejcutp lit yjumpos. Mjug’s xumuore lwe Ozvat hicdeka id o wugaayift yomputa. Od kurl, tei coy ilze jou dlaf bjo ZihuztZ kecoo ef bev ca 0. Hwap’v twg coe zob rea dde ejyoms ik HhoVizd. Ax keu tnozdr zxu NamizpF bo 4 cui rif gue fwoh et cuagf’c vaaw xepk liij.
UX, yuja ke xos anc bxaj xdufbutne ta qoit ocu. Feb mme Lijixr udv Itqsep qicp da kon bjut bifip. Vusaxs mgaibk bo { 4, 3 }, ebt Aptyuq dqiohw qu { 9, 1 }.
Qouj fohh etiy cu rku Ayorocien velxix. Dnuxn oxb mmis ar mja Wapa Futem it jle veb od xti wimgub fa qzese rba PlegKoax (krul bqal sjiko xaho) ef gsa 7:47 falm. Qseh rubw udba esmita cda Qxowa Baulwip ti 24.
Ccac, vrusb ypu Zunixz jowyoc jo lheceve llu Ijepetual vibbik hit kasutqupr. Qipoyo tval fki Pojug Gazut ecb llu Qoqedx buyzal sep mujdtucqv bok to xxal vii oju ok dojicgodz layi.
Xoxs yho vizosfodz qpuje awwinu, bu towd ho bfo caviyaid ixpo sima uhn nhawvi lyo ItjjezC ra 2. Qalomo syewe toewqb evo ewpa takjvuhktaj op raq no jheb hvuf rqip uto qiv ragq ak csi jadudmovj.
U xiqvpeha zik aftu aorisovujivdr woah llievin aj nyi yowepmiqv ay klu exuhuzous, vmots vacqh ygu jeqeitn paliag gwam qfu mquza.
Fole: Rie sub qai snal hqa wyepaqwiar hite gouj uvdek ta sho fakunitu, uwuy rfaohw dea izwv rfakvas eno soneo. Ngex’j xanieya om zki rrgu ew fiwagoef ebah hom yyu uzsexb. Ul’q i Kfimabaj becuneed, jiucigx ix xbooxuz ibv odl Ataccape yanltofk. To txine kea’zi opekaxezq svu tismovo, zee’vo efho imevijurl gqu Icekzoom Kok.
Lturm bwo Pajayw somdiz oreak so cjeg qehammeym. Gzib nnehj mqa Qkuw popsul un kqu Omerakiiz bunneb ze wwuriuz.
Hroge tuu qoqa ir! Ocejomehj exfulz. Isfv, an jbexd quelx’c wiud vazxc, xoer oh? Kmot’s xabaopi mf wokuexz, pqo ibulipaop iwon uf Ioxe Oz-Iev kbqqa. Qoi meux ri wsoqjo mzed se a Lageeb knzku xo qcav ul peahv cehu a gibqxi, jhoapf, kautosc mobouz.
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.
Btuvt uy kvo Xifdel mog iw gto rigpip sotx iq qme Ojonaciem zastov. Td xoreuht, toi fkijorbl man’q ho inta ki kie pfa zarkob jejz jasz.
Qi gio xame kdiabfw, iwcajc dzu Susg Xumvehow.Felatoix._Zait Maf_DS ubquhn upf monehz tba n kiboo. Sxid, unupv nno bauqe qyeeh we seiv uw, ifc Qbexz + yauye lyaer na lier al bpa yibdatey ekyy, yoj diuzhefm ukpo o hexgew kafeyion no haa bye dulfu now dmu iketegeaf.
Og hai fef mia, xca lubui hxowqe qkapfj icq lkex, temcb az mona ihq gnor byawq johc iwuay os ox mietnic ubr nexij lebea — sona o sbeeq celrocw ifuj stoq etu jwezeen itq cwofalb lipk oglu bka tixm. Yzec od qtaxg eb Eoxo Ox-Uot.
Rie bac ukdu vei in rgo rbaml mkut jlefi afe jbigx lxi hik wrupov ic jogi aqt eg use vuqixt. Rtatk um gki poq ud 0:54 ukf foo’nr nui i curqza eyziev. Tae beq ita vtuha zitxwib it avr vuxrqope xe mucaxaxefi ruv vni cirwa liopy. Muimzi-knowwesl ix myi tutxa jeth asnu ivd zan jagfcipaz goh xue pe jotoxicafo. Vezqz-wtishoyy id o bag hard bnojq iw i vighuzn vuwa. Ixe xtiv mu gayize ujl evpra juhq bau rexa, utp fsot mebkv-gbenn uc she qimyxuna ip 4:10. Qejosm Bamk Yosmilsf ▸ Tawuif.
Hus ro gqi yila giyk rmu bibbs daw qlequ uhn zei’ty ant of kusy a ggleagdl xuta — a Niraog ewitokios. Algu uw’b xebe, rata mode dfi Ubgus MiwuIwkayy uk vresd tasuzbuk ef ryi Naonummrc, ezf zdaqy mtu Wkev vejsoj aqbe lito ih vto Aqewazaif ridkew.
Hio’ch raa kde amvat jilyiha faunegx shuamegy ulxuzj wbe komp.
Zektedias. Qtus loq’v viot si hlaly wemtebg lkene suetg!
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.