Home
In opdracht van

Over

Starboard is een Racer game waarbij je met een zeilboot een parcour moet afleggen. dit is gemaakt voor het night racer project. Waarbij je een Race spel moest maken in 3 weken dat in de nacht afspeelde.

Teamgenoten

Dit project is samen gemaakt met
Lukas R - Miranda G

highlights

Zeil mechanic

Voor deze game wouden we iets unieks doen. Daarbij kwam ik op het idee om in plaats van een auto te gebruiken, Een Zeilboot te gebruiken. Je kan dus niet gas geven of remmen in de standaard manier. Je moet de wind in je zeilen zetten of je zeil los laten. Om een realistische zeil systeem te maken heb je een aantal onderdelen nodig.
Je moet als eerst een goede weight systeem maken voor een boot. Hierbij heb ik systeem gebruikt waar meerdere virtuele punten op de waterlijn van de boot bevinden. Als de punt onder water zit zou er een force aan de boot worden toegevoegd bij dat punt om de boot terug naar boven te duwen
Groen: Boven water
Rood: Onder water
Ook moet er dus uitgerekend kunnen worden hoe je zeilboot moet reageren tussen de richting van de wind en de manier hoe je zeil staat. Dit is een semi realistisch model. Los van dat je niet kan varen bij een in de windse koers. kan je in pricipe dit stuk code gebruiken om je optimale aanvalshoek te berekenen
                    
public void Update()
{
    //get input from user
    float delta = (Input.mouseScrollDelta.y * ScrollInputSpeed + Input.GetAxisRaw("RotateSail") * ButtonInputSpeed);
    InputValue = Mathf.Clamp(InputValue + delta * Time.deltaTime,0,1);
    
    
    //calculate the wind direction relative to boat
    _windDir = (WindDirection + transform.rotation.eulerAngles.y) % 360 - 180;
    
    LocalWindDirectionUpdate.Invoke(_windDir);
    
    //calculate efficienty
    
    OptiomalDirection = _windDir / 2;
    CurrentDirection = InputValue * 90 * (OptiomalDirection > 0 ? 1 : -1);
    
    //set masts to look at the current direction
    FrontMast.localRotation = Quaternion.Euler(0, CurrentDirection * -1f, 0);
    BackMast.localRotation = FrontMast.localRotation;
    
    //calculate efficenty
    Efficienty = (90 - Mathf.Abs(CurrentDirection - OptiomalDirection)) / 90;
    BoatController.WindMaxSpeed = 90 * Efficienty;
}