Over het karretje in RollerCoasterJump 2

Hier leg ik uit hoe het karretje beweegt in RollerCoasterJump 2.

Twee losse wielen

Het karretje bestaat uit twee objecten: het voorwiel en het achterwiel. Het voorwiel regelt de besturing, het achterwiel volgt alleen het voorwiel. Het voorwiel tekent vervolgens het karretje tussen de twee wielen in.

Hier heb ik die wielen van het karretje zichtbaar gemaakt. Het karretje wordt er dan vervolgens tussen getekend.

heb ik de wielen zichtbaar gemaakt. Het karretje wordt er vervolgens tussen getekend.

Het voorwiel

Er bestaan twee objecten voor het voorwiel waarvan er steeds een in het spel is. Het ene voorwiel wordt gebruikt als de kar over rails rijdt, het andere voorwiel als het karretje door de lucht vliegt. Mocht het rijdende voorwiel detecteren dat er geen rails meer is onder zijn voeten dan verandert die snel in het andere voorwiel. Als dat andere voorwiel weer op de rails komt verandert die weer in het rijdende voorwiel. Ik gebruik hiervoor de instance_change-functie.

Het rijdende voorwiel

Het rijdende voorwiel gaat in principe altijd horizontaal. Als het tegen een stuk omhooggaande rails opbotst gaat het een aantal pixels omhoog, zodat het weer precies op de rails ligt. Ook haal ik wat van de snelheid af. Tot slot sla ik in de variabele dir de richting op. Dit is nodig voor als het karretje loskomt van de grond. Daarover later meer.

//deel van STEP-event van rijdend voorwiel
//kijk of er omhoog bewogen moet worden
if(place_meeting(x,y,obj_rails))
{
    var yprev; yprev = y;
    move_outside_all(90,-1);
    speed -= 0.07;
    dir = point_direction(obj_achterwiel.x,obj_achterwiel.y,x,y)-2;//is nodig als karretjes opeens los komt van de rails
}

Het vliegende voorwiel

Dit voorwiel valt altijd naar beneden totdat het op de rails komt (of uit het scherm valt). Dit wiel heeft wel een richting; het rijdende voorwiel ging alleen horizontaal (ik verplaatste het handmatig een paar pixels omhoog als het bij een helling kwam). Om te weten met welke richting het karretje moet beginnen heb ik het rijdende karretje iedere stap de richting laten berekenen. Zodra het voorwiel gaat vliegen stelt het de richting (direction) in op de variabele dir.

Het achterwiel

Het achterwiel volgt altijd slaafs het voorwiel. Het zorgt ervoor dat het nooit te dichtbij en nooit te ver weg komt van het voorwiel. Ook heeft het zijn eigen zwaartekrachtmechanisme: zolang het achterwiel niet op de rails staat beweegt het naar beneden.

//STEP-event van achterwiel

//zwaartekracht
if(!place_meeting(x,y+2,obj_rails))
{
    y+=2;
}

//richting bepalen naar voorwiel
var dir; //deze 'dir' heeft niets te maken met de 'dir' van het voorwiel
dir = point_direction(x,y,obj_kar_parent.x,obj_kar_parent.y);

//naar voorwiel bewegen
while(point_distance(x,y,obj_kar_parent.x,obj_kar_parent.y)>25)
{
    x+=lengthdir_x(2,dir);
    y+=lengthdir_y(2,dir);
}
//van voorwiel af bewegen
while(point_distance(x,y,obj_kar_parent.x,obj_kar_parent.y)<25)
{
    x-=lengthdir_x(2,dir);
    y-=lengthdir_y(2,dir);

}

Geef een reactie