danivdwerf / EndlessRunner

0 stars 1 forks source link

Houdt interface logica en game logica gescheiden #8

Open BerendWeij opened 8 years ago

BerendWeij commented 8 years ago

Je hebt feedback gekregen van BerendWeij op:

private void Update () 
    {
        if (Input.GetKeyDown(KeyCode.Space)&&!isFalling)
        {
            rigidBody.velocity = new Vector3(0f, jumpHeight, 0f);
            playerAudio.PlayAudio(jump, false);
            isFalling = true;
        }

        if (Input.GetKey(KeyCode.A))
        {
            sideSpeed = -10000;
        }
        else if (Input.GetKey(KeyCode.D))
        {
            sideSpeed = 10000;
        }
        else
        {
            sideSpeed = 0;
        }

        if (Input.GetKey(KeyCode.S))
        {
            transform.localScale = new Vector3(1, 0.2f, 1);
            if (!isFalling&&!dead)
            {
                playerAudio.PlayAudio(slide, true);

            }
        }
        else
        {
            transform.localScale = new Vector3(1, 1, 1);
            if (!isFalling&&!dead)
            {
                playerAudio.PlayAudio(running, true);
            }
        }
    } 

URL: https://github.com/danivdwerf/EndlessRunner/blob/master/Assets/_Scripts/Player/PlayerMovement.cs

Feedback: Houdt interface logica en game logica gescheiden.

Hiermee bedoelen we: interface logica: alle logica die je nodig hebt om op interface acties te reageren (klikken, swipen, etc.).

game logica: de logica die je hebt om je game te laten draaien. Bijvoorbeeld je speler opzij laten kijken.

Probeer dit ook goed te verdelen in je Classes.

Stel we besturen een speler met een 'onScreen' joystick. Je kan dan een component schrijven JoystickController. Hier stop je alle logica in om te kijken of en welke knoppen er worden ingedrukt. Vervolgens schrijf je ook een andere component voor je speler met functies en getters en setters. Via deze functies, getters en setters kun je de speler vragen bepaalde dingen te doen.

Stel de JoystickController ziet dat je de joystick naar beneden beweegt, dan kan je controller script de player component aanspreken en een functie aanroepen. Je speler Class bepaald vervolgens wat er allemaal gebeurd.

Dit maakt je code een stuk vrijer. Je kunt zo ook bepaalde logica veel makkelijker van verschillende plekken aanroepen.