sf::View
|
I veckan hade jag som uppgift att lösa ett problem i spelet inför alphan. Konceptet som vi valde har en mekanik där man byter mellan fyra sektorer på planeten. Problemet var då att fixa något sätt att byta mellan de fyra sektorer som vi har. När vi i gruppen brainstormade fram idéer för hur vi skulle lösa detta problem kom vi alla överens om att vi skulle använda oss av rotation i någon form. Antingen skulle vi rotera hela världen runt kameran, det vill säga ALLA objekt i hela spelvärlden relativt till en nollpunkt, eller så skulle vi bara rotera kameran. Vi bestämde oss för att rotera kameran för att det skulle varit lättast. Sfml biblioteket har en klass som heter sf::View som agerar som en kamera i spelvärlden, den har flera olika funktioner som man kan använda sig av som till exempel move funktionen som man oftast använder om man vill att kameran ska scrolla i spelets värld. Den funktionen som jag brydde mig om var dock rotate och setRotation. Med hjälp utav dessa kunde jag rotera kameran precis som jag ville. För att visa kameran i spelfönstret är man tvungen att skriva window.setView(view), så det gjorde jag. Men ingenting fungerade som det skulle, jag hade gjort en if sats för ett visst knapptryck som skulle rotera min view, men det fungerade inte. Så jag pratade med mina kollegor och vi bestämde oss alla för att dumma ner lösningen på problemet. Den nya lösningen på problemet var att göra fyra olika kameror eller views för vardera sektor som man skiftar mellan. Detta fungerade men fler problem följde. Jag var tvungen att spawna nya fiender i de nya kamerorna, jag var tvungen att flytta avataren varje gång jag bytte kamera. Dessa problem löste jag relativt snabbt eftersom att jag redan hade löst de en gång innan. Så vi hade vår lösning på problemet men jag ville fortfarande få rotationen att fungera. Jag började tänka lite grann och tänkte på en view som vilke spel objekt i spelet so helst. För att se förändringar på objekten i spelet kan man inte bara rita ut objektet en gång, då ser man inte om man flyttar på objektet eller förändrar utseendet på något sett. Därför ritar man ut objekt hela tiden i update. Jag tänkte likadant med views. Jag satte min view till window bara en gång och den uppdaterades inte. Så jag gjorde som om jag ritar ut min view i varje frame i update och så fungerade det i slutändan. Vi har kvar vår lättare lösning på problemet för alpha deadlinen men vi kanske byter till rotationen till beta och release. |
