Stap 6 : De Gameplay
Zoals je hebt gemerkt blijft de pong bal gewoon doorvliegen als het niet tegen de spelers of de muren botst.
Om dit op te lossen kun je de bal vernietigen zodra de positie van de bal verder naar links of rechts is dan de positie van de spelers paddles. Hiervoor kun je de ‘Destroy()’ functie gebruiken.
Omdat na het verdwijnen van de bal ook een nieuwe bal in het spel nodig is, kun je een kopie van de bal maken met de ‘Instantiate()’ functie.
Dit wordt bijvoorbeeld ook gebruikt om nieuwe vijanden in een spel te instantiëren (spawnen)!
Open het PongBallBehaviour script in Visual Studio.
Typ of kopieer/plak de volgende twee if-statements codeblokken in het ‘Update()’ gedeelte van het script zoals hieronder:
void Update()
{
if(transform.position.x > 10)
{
Instantiate(gameObject, new Vector3(0, 0.75f, 0), Quaternion.identity);
Destroy(gameObject);
}
if(transform.position.x < -10)
{
Instantiate(gameObject, new Vector3(0, 0.75f, 0), Quaternion.identity);
Destroy(gameObject);
}
}
In gewone taal staat hier:
“Als de positie van de bal op de x-as (links/rechts) groter is dan 10,
maak dan een nieuwe kopie van de bal in het midden van het level en vernietig deze bal”
En daarna:
“Als de positie van de bal op de x-as (links/rechts) kleiner is dan -10,
maak dan een nieuwe kopie van de bal in het midden van het level en vernietig deze bal”
Sla het script weer op met Ctrl+S, keer terug naar Unity en test de code met Play.
Zoals je ziet verdwijnt de bal nu als hij achter de paddles van één van de spelers komt, en verschijnt er meteen weer een nieuwe!:

Het volledige PongBallBehaviour script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PongBallBehaviour : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
transform.Rotate(0, Random.Range(0,360), 0);
GetComponent<Rigidbody>().AddForce( transform.forward * 500 );
}
// Update is called once per frame
void Update()
{
if(transform.position.x > 10)
{
Instantiate(gameObject, new Vector3(0, 0.75f, 0), Quaternion.identity);
Destroy(gameObject);
}
if(transform.position.x < -10)
{
Instantiate(gameObject, new Vector3(0, 0.75f, 0), Quaternion.identity);
Destroy(gameObject);
}
}
}
Ga verder naar Stap 7 : Score!