woensdag 17 oktober 2012

Prototype Development: Highscore or Fame

Design veranderingen
De game bevat nu mannetjes die apart leveren en inkopen. Ze zijn voor nu te onderscheiden aan hun kleur. De mannetjes die inkopen verdwijnen nadat ze goederen binnen hebben gekregen en komen na geruime tijd weer terug.



World Collision
De collision met de wereld bleek een leuk vraagstuk met meerdere oplossingen. Zareh stelde voor een raycast naarbeneden te doen om zo de diepte van de zee te testen, en daarop te baseren hoe hard de boot mag varen. Wat we uiteindelijk gedaan hebben is circle colliders op de boot plaatsen van verschillende grootte die, wanneer ze in contact komen met land, de boot langzamer laten varen. Er zijn op het moment 3 colliders. De kleinste zet de speler terug op zijn vorige positie zodat de boot niet vast komt te zitten in het land.



Omdat Unity zijn collisions tussen de updates in checked, konden we niet voor de daadwerkelijke translatie checken of de boot vast zou komen te zitten in het land. De collision is pas aanwezig wanneer de boot in het land zit en kan dus pas naderhand op de vorige positie teruggezet worden. Daarom is er een ongewenste trilbeweging in de boot wanneer deze recht naar het land toevaart. Dit is redelijk irritant en zouden we liever niet hebben maar voor een prototype is het prima.

Tornadoes
Om moeilijkheid en spanning in de game te verwerken zijn we van plan opstakels neer te leggen zoals bijvoorbeeld een tornado, draaikolk, tsunami, etc. Om dit uit te testen hebben we een simpele tornado toegevoegd die in een circelvormige baan op zee rondraast. Als de speler erin komt kan die voor een tijd niet bewegen en gaan de huidige goederen verloren.

Alle objecten op de wereld zijn daar niet gepositioneerd, maar geroteerd. Hierdoor kan de "positie" van een object op de wereld aangepast worden via de rotatie en blijven ze op die manier op goede hoogte vanaf de wereldbol zonder extra berekeningen. Om de tornado een circulaire beweging te laten volgen heb ik een cosinus opgesteld die ik normaal altijd gebruik om een circulaire beweging te maken in positie, alleen heb ik de waardes dit keer simpelweg in de rotatie van de tornado gestopt.

Vector3 newRotation = new Vector3();
newRotation.y = Mathf.Cos(timeAlive * SPEED) * MOVE_RADIUS;
newRotation.z = Mathf.Sin(timeAlive * SPEED) * MOVE_RADIUS;
transform.localRotation = Quaternion.Euler(startRotation + newRotation);



Het is voor nu nog erg makkelijk deze tornadoes te ontwijken maar het idee gaat de goede kant op.

Server opzetten
Omdat we een highscore willen verwerken in de game hebben we een server nodig. We zijn van plan deze te kopen met het schoolbudget. Als dat gedaan is kunnen we ervoor zorgen dat de eindscores geupload worden met eventueel de boot afgebeeld in een museum.

Geen opmerkingen:

Een reactie posten