Pong! : Stap 5

Stap 5: De bal laten bewegen

Klik op de Pong bal in de Hierarchy View om deze te selecteren en daarna op ‘Add Component’ in de Inspector View. Klik op ‘Physics > Rigidbody’ om een  Rigidbody component aan de Pongbal vast te maken.
Geef de Rigidbody dezelfde instellingen als in de afbeelding hieronder:

RigidbodyPongball

Met de ‘Freeze Position Y’ instelling bij Constraints zorg je ervoor dat de bal alleen naar voor/achter, links/rechts kan bewegen op de X en Z assen, en dus niet om laag kan vallen langs de Y as.

Maak een nieuw script in de Project view, geef het script de naam ‘PongBalGedrag’ en open het daarna door erop te dubbelklikken.

In principe werkt de bal al dankzij het Rigidbody onderdeel, maar omdat nog geen ander object de bal geraakt heeft blijft hij gewoon stil in de lucht hangen als je op Play drukt.
Om ervoor te zorgen dat de bal bij het starten van het spel begint te bewegen kun je ‘force’, dus kracht, erop toepassen door middel van code.
Je kunt hierbij denken aan hoe een voetballer tegen een bal aanschopt  waarna de bal begint te bewegen.

Zorg ervoor dat het PongBalGedrag script er zo uitziet:

using UnityEngine;
using System.Collections;

public class PongBalGedrag : MonoBehaviour {

    // Use this for initialization
    void Start () 
    {

        transform.Rotate(0,Random.Range(0,360),0);

       GetComponent<Rigidbody>().AddForcetransform.forward * 500 );

    }
    
    // Update is called once per frame
    void Update () {
    
    }
}

Zoals je ziet staat de code deze keer in het ‘Start ()’ gedeelte en niet in het ‘Update ()’ gedeelte.
Dit is omdat deze code alleen éen keer bij het starten van de game hoeft te werken en niet de hele tijd tijdens de game.

In gewone taal staat hier eigenlijk:
“Draai het object op de Y-as in een willekeurige richting tussen 0 en 360 graden”
en daarna
“Zoek het Rigidbody component wat aan dit object vast zit en voeg kracht toe naar voren”

Het script draait de bal dus eerst in een willekeurige richting, waarna de volgende regel de bal in die richting “duwt”.
Het getal 500 achter ‘transform.forward *’, is de hoeveelheid kracht die wordt toegepast.
Hoe hoger dat getal, hoe sneller de bal gaat.

Sla het script op met Ctrl+S en keer terug naar Unity.
Sleep in Unity het PongBalGedrag script uit de Hierarchy view naar de pong bal in de Scene view of de Hierarchy view, om het aan de bal vast te maken.

Druk op Play   om te testen of het script werkt en klik na het testen nogmaals op play om het spel weer te stoppen.
De bal wordt bij het starten van de game meteen een random richting op geschoten!:

PongBallMotion01

Er is alleen éen probleem, de bal stuitert niet echt.
Dit kun je grotendeels oplossen met een Physic Material.

Klik nogmaals op Play  om het spel weer te stoppen.

Klik met je rechter-muisknop in de Project view en selecteer ‘Create > Physic Material’. Noem het materiaal bijvoorbeeld ‘Bouncy’.
Geef het de instellingen die je hieronder ziet en zet ‘Bounce Combine’ op Multiply.
Hierdoor verliest de bal niet zoveel snelheid bij het stuiteren:

Screen Shot 2016-08-26 at 15.47.48

Sleep het Physic Material uit de Project view naar de bal en daarna naar de twee muren van het level en naar de twee spelers objecten in de Scene view of Hierarchy view.

Je kunt ook op de bal,de muren en de spelers klikken in de Hierarchy View en het Bouncy materiaal naar het ‘material’ vakje van de collider slepen:

Test de game met Play  en je zal merken dat de bal al een stuk beter stuitert!

PongBallMotion

Ga verder naar Stap 6: De Gameplay

GreenArrowLeft Stap 4      Stap 6 GreenArrowRight