Skip to content

Problemi u radu

ivan1mikec edited this page May 27, 2023 · 12 revisions

Problemi prilikom razvoja

Zapisivati svakakve probleme različitih vrsti kako bi se izbjegli u budućnosti i bez puno gubitka vremena.

Igrač ne može skočiti

Opis problema

Ovaj problem se često može dogoditi iz nepažnje ili iz zaborava pa umjesto da se gube sati na ovom problemu dobro ga je imati zapisanog. Igrač se može kretati lijevo/desno, ali ne može skakati ili može skakati samo na određenim platformama a ne na svima. Naime ukoliko igrač skače na nekoj platformi a ne skače na ostalima problem je ili u box collideru pojedine platforme ili u opcija layer pojedine platforme nije postavljena na Ground.

Rješenje

Igrač može skočiti jedino ako je na tlu, a to se provjerava kontaktom GroundCheck objekta sa nekim objektom koji ima postavljen ispravan layer. Layer koji se provjerava se definira u PlayerMovement.cs -> Ground Layer preko Editora, a trenutno je postavljen na Ground Kako bi kontakt bio registriran, platforma ili objekta treba imati i Collider 2D komponentu (bilo kojeg tipa: box, circle, polygon...)

Prema tome, ako je problem na nekoj specifičnoj platformi, moguće je da platformi nedostaje Box collider 2D komponenta ili njezin layer nije postavljen na Ground. Ako je problem na svim platformama, potrebno je pregledati igrača, te jesu li sve potrebne vrijednost definirane u PlayerMovement skripti i PlayerMovementData. Npr. provjeriti maksimalni mogući skok, postojanje ground check objekta i njegova povezanost sa PlayerMovement skriptom, ispravno postavljeni layer u PlayerMovment skripti i slično. Kada dodamo te promjene igrač bi opet trebao moći skakati. Ukoliko problem nije riješen možda je do implementacije kretanja igrača no za to je vrlo mala šansa ili je možda u pitanju potpuno novi još ne viđeni problem.

Neprijatelj se ne miče

Opis problema

Problem nastaje prilikom mijenjanja Position varijable protivnika u C# skripti dodijeljenoj tom entitetu. Iako se Position varijabla zamijeni, odmah nakon toga se resetira na originalnu vrijednost, što daje dojam da se neprijatelj ne miče.

Rješenje

Problem je u tome što Animator prebriše vrijednosti ako ih mijenjamo, te je potrebno napraviti Parent objekt u kojem stavimo Enemy objekt, te umjesto Enemy objekta mijenjamo poziciju Parent objekta, čime mijenjamo vrijednosti svih njegovih Child objekata, uključujući Enemy objekt.

Projectile objekt previše tlači performanse

Opis problema

RangedEnemy objekt puca Projectile objekte koji previše tlače performanse igrice.

Rješenje

Problem nastaje u tome što svaki puta kada RangedEnemy puca projektil stvara se novi 'Projectile' objekt. Umjesto toga je implementirano rješenje koje na početku level-a kreira određeni broj Projectile objekta, te se oni izmjenjuju ovisno o tome koji je trenutno u upotrebi.

Dizajn paketi nisu prikladni za projekt

Opis problema

Asset paketi koji su besplatno dostupni na Unity asset storefrontu nisu zadovoljavajući prikaz planiranog dizajna.

Rješenje

Potrebno je ručno stvaranje placeholder grafičkih asseta koji iako slabiji u kvaliteti su točniji prikaz ideje kako bi igrica trebala izgledati Ovo se ostvaruje ručnim stvaranjem spriteova preko alata poput GIMP-a ili korištenje besplatnih nekomercijalnih asseta preuzetih online te preuređivanje istih.

Prefab unutar prefaba

Opis problema

Ukoliko se napravi prefab nekog objekta i unutra se doda novi prefab objekt kao child doći će do problema sa skaliranjem. Nije moguće dodati dva prefaba unutar jednog bez da jedan nije parent a drugi child. Na taj način će uvijek doći do problema sa skaliranjem te će jedan objekt biti puno veći od drugog.

Rješenje

Kreirati prazan objekt bez sprite render komponente te bez obilježja te u njega dodati oba željena prefaba kao childove. Na taj način su oboje childovi tog praznog objekta koji ne stvara problem jer praktički nepostoji. Ovako se vrlo jednostavno može izbjeći problem skaliranja.

Neprijatelji detektiraju igrača samo kada se kreće

Opis problema

Neprijatelj će samo udariti detektirati i udariti igrača ako se miče, ako igrač ostane statičan neprijatelj ga ne detektira.

Rješenje

Problem nastaje zbog toga što 'BoxCollider' neprijatelja detektira druge elemente s kojima dolazi u kontakt. Prvi element je sam neprijatelj, a to rješavamo tako da Collider polje pomaknemo da ne dira neprijateljev 'BoxCollider'. Drugi element s kojim je u kontaktu je 'Polligon Collider 2D' od objekta 'CM boundaries', a to rješavamo tako da ga onemogućimo, što ne utječe na funkcionalnost igrice.

Clone this wiki locally