-
Notifications
You must be signed in to change notification settings - Fork 0
Problemi u radu
Zapisivati svakakve probleme različitih vrsti kako bi se izbjegli u budućnosti i bez puno gubitka vremena.
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
.
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.
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.
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.
RangedEnemy
objekt puca Projectile
objekte koji previše tlače performanse igrice.
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.
Asset paketi koji su besplatno dostupni na Unity asset storefrontu nisu zadovoljavajući prikaz planiranog dizajna.
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.
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.
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.
Neprijatelj će samo udariti detektirati i udariti igrača ako se miče, ako igrač ostane statičan neprijatelj ga ne detektira.
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.