SLASH: fju to je teda divokej zapis! Pri kliku startujes dva solo tweeny, dalsi rizeni pres invoke repeating, trocha casovani, trocha pricitani...jako bonus nevim co je BetterImage a jestli do toho nemuze nejak vrtat anebo jestli treba nahodou tyhle objekdy nejak neprepouzivas / necachujes (doufam teda, ze ne).
Par veci:
- nemas zabezpeceny, ze kdyz na item kliknes jednou, tak ze uz nekliknes podruhe (jestli to ma byt nejaka "finalize" animace, tak v tom minimalne odregistruj click handler, nebo checkni, jestli uz neanimujes nahodou a dalsi klik zahod.
- u tweenu - kdyz kombinujes nekolik efektu v poradi, pouzivej radeji DOTween.Sequence(), kde nahazes nekolik tweenu za sebou pomoci .Append() anebo na libovolne misto pomoci .Insert(). Jako bonus - kdyz z bezpecnostnich duvodu tweeny treba v Destroy killujes nebo dokoncujes, budes resit jen jednu sekvenci, ne pet ruznych samostatnych tweeneru pro jeden item...
- v tom destroy jak likvidujes postupne komponenty jednoho gameobjektu - je to potreba? To je nejaky particle system referencovany nekde jinde na jinem gameobjektu a ridi se vymazanim tehle komponenty? Muzu se plest, ale ze zapisu mi pripada, ze proste v destroy resis nejake smazani gameobjektu, co ma na sobe efektiky a podobne - ze nechces vlastne jen selektivne promazavat komponenty, ale smazat cely gameobjekt. Tak to neres. Proste nekde zavolej Destroy(hunt.gameObject) a on proste vystreli cely gameobjekt se vsema podvesenyma komponentama a podobne..
- to rizeni animace a delegace kliku na nekolika mistech pomoci ruznych casovani a navic jeste pomoci Invoke/InvokeRepeating je cesta do pekel. Kdyz uz musis, pouzij aspon coroutiny - pokud by se tweeny neprolinaly, da se normalne yieldovat jeden tween za druhym:
yield return punchScaleTween.WaitForCompletion();
yield return coin.DOFade(0, .4f).SetEase(Ease.OutQuad);
- anebo to v tomhle pripade, kde se ty tweeny prolinaji a podobne - nech teda odridit celou flow tou tween sekvenci. Zvlada i volat callbacky bud kdykoli v prubehu sekvence nebo se da hooknout na konec sekvence, takze mas jistotu, ze to bude posledni vec. Navic se pri destroyi da volat .Complete(true) misto .Kill(), aby vsechny zavazane callbacky zavolal. U toho obcas pouzivam fintu, ze na .OnComplete() rferenci na tween/sekvenci smazu, takze v nejakem destroy vim, jestli jeste jede nebo ne a podle toho cistim.
Takze za me - bych tech par veci (naslepo - nerucim za 100% funkcnost) prepsal aspon zhruba takhle (mrkni hlavne na kod kolem showFoundAnimation, rotation a destroy):
https://pastebin.com/12J8SUAd