Har gjort klart det sista på ryggsäckspanelen och kopplat logiken så att allt som finns i listan i player inventory visas med korrekt bild när spelaren öppnar ryggsäcken. Har också kopplat fiskespönamnet och mängden fisk till relevanta textfält
Veckans arbete har gått bra. Fiskestimmen slumpas nu ut i ett par olika områden som vardera kan ha ett fiskestim igång samtidigt (totalt fem spawn-områden). Generationen är väldigt statisk för tillfället men om jag har tid över så planerar jag fixa så att den är lite mer oregelbunden genom att jobba med slumpmässiga värden i spawn-timer-längden.
Att skapa controller-objektet var heller inte så komplicerat då jag följde ett gäng anvisningar som förklarade principen bakom konceptet och som gav schyssta kodexempel att granska. Jag valde som sagt att lägga på en extra komponent vars syfte var att hålla koll på allt som rörde spelarens ägodelar och kopplade logiken i fiskemotorn till den komponenten så att alla fiskar landar i den lista som representerar spelarens ryggsäck.
I den vevan kom jag på att det kan ju vara bra att spelaren kan se vad som denne fångat så jag beslutade mig för att bygga en UI-panel som visar innehållet i ryggsäcken. När jag designade ryggsäcken tänkte jag också att det kunde vara bra att visa hur mycket fisk spelaren lämnat in och vilket fiskespö spelaren hade. Panelen visar ryggsäckens åtta platser som kan innehålla fisk och därunder listas det nuvarande fiskespöt och hur många kilo fisk som behövs för att vinna och mängden fisk som spelaren lämnat in. Arbetet med panelen är dock inte klart men arbetet fortsätter med det under nästa sprint.
Här är grafiken för fiskarna, skapade i Pyxel Edit – perch, trout, pike och gold fish:
Sv: Aborre, forell, gädda och guldfisk
Slutligen måste jag erkänna att jobba med Daily Scrums som ensamutvecklare nu när det börjar att bli så tydligt med vad som behöver göras känns lite överflödigt. Det känns mer som en påtvingad bisyssla som är helt arbiträr och i dagsläget inte fyller en riktig funktion. Det hade varit fantastiskt hjälpsamt att ha om vi var fler som jobbade med spelet på distans men just i mitt fall känns det lite krystat. Kommer dock att fortsätta köra dem.
Gjort klart fisk-spritesen och troligtvis bestämt layouten på ryggsäckens UI. Har börjat bygga logiken för att visa och dölja ryggsäcken och vad som finns däri
Skapat logiken för att skicka fångad fisk till player inventory-komponenten och spara fisken i en lista. Komponenten håller dessutom koll på vilket fiskespö spelaren har och på maximalt antal föremål som får finnas i spelarens ryggsäck.
Vad ska jag göra idag?
Har kommit på att jag på något sätt behöver visa spelaren vad som finns i ryggsäcken så jag kommer att börja snickra på en UI-komponent som ska lösa detta. Måste dessutom skapa grafiken för spelets fiskar.
Arbetet har gått framåt under veckan – jag har fixat en lösning för persistent data i projektet för de spelobjekt som behöver det. Dessutom gör detta att det blir lätt att expandera på och lägga till nya fiskar och spön i framtiden. Att göra förändringar är också det enkelt då en förändring i grundklassen slår igenom på alla objektmallar som härstammar från den. I mitt fall lade jag till en enumerator som höll reda på fiskens storlek i efterhand och detta resulterade bara i att jag behövde sätta rätt inställning på varje fiskobjekt (lite/medium/stor).
Jag fick även klart momentet med flötet. Det var ett lite svårare problem att lösa och tog en del tid och i slutet visade det sig att det var en inställning i Unity som ställde till det. För att registrera kollisioner behöver ett objekt ha en rigidbody-komponent och en collider av något slag. Detta för att kunna använda sig av Unitys fysiksystem. Att få flöte och fiskstim att kollidera var lite mäckigt men löste sig efter lite felsökning. Det stora problemet var att få flötet att också registrera att den hade landat i vatten eller inte. Jag hade redan definierat ett område som räknades som vatten men problemet låg i att Unity inte kunde fatta vad som var på insidan eller utsidan om denna områdesgräns om gränsens typ var satt som linje, den inställning som är superbra om man bara behöver hindra objekt från att röra sig genom det. För att se om kollisioner skedde på insidan av gränsen skulle man sätta gränstypen till polygon, dvs att Unity skapar en collider som täcker hela objektet. Tog ett tag innan jag hittade lösningen!
Annars har jag lyckats att få fiskemomentet att visa alla relevanta meddelanden som tidigare gick till konsolen att visas in-game. Till detta skapade jag en UI komponent som består av ett textfält som visar inkommande text, och en sprite som visar en panelbakgrund som jag ritade i Pyxel Edit. För att enklare kunna styra synligheten för de båda komponenterna skapade jag ett tomt GameObjekt som jag sedan gjorde till förälder till texten och bakgrunden. Sedan lade jag på komponenten Canvas Group som skänker funktionalitet att styra över utseendet för sig själv och eventuella barn. I det här fallet manipulerar jag alfakanalen för att styra transparensen för samtliga objekt samtidigt. Jag kommer antagligen att göra på samma sätt när det gäller dialogen med fiskhandlaren.
Jag har också fixat så att skapandet av fiskstim och att fylla dem med fisk procedurellt. Dock har jag inte fixat slumpmässiga spawn-positioner ännu. Att fixa den begränsade livslängden var inte svårare än att låta en timer ticka ner och kalla Destroy() när den tog slut.