space shooter tutorial issue "Ending the game" unity 2018.2 b
Hello I'm having a with the space shooter tutorial "ending the game" step. i had changed the original code a bit but that shouldn't affect what i'm doing right now.
Error
NullReferenceException: Object reference not set to an instance of an object DestroyByContact.OnTriggerEnter (UnityEngine.Collider other) (at Assets/Scripts/Destroyer/DestroyByContact.cs:33)
Code of DesctoryByContace
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class DestroyByContact : MonoBehaviour { public GameObject explosion; public GameObject playerExplosion; public int scoreValue; private GameController gameController;
void Start()
{
GameObject gameControllerObject = GameObject.FindWithTag("GameController");
if (gameControllerObject != null)
{
gameController = gameControllerObject.GetComponent<GameController>();
}
if (gameController = null)
{
Debug.Log("Cannot find 'GameController' Script!");
}
}
void OnTriggerEnter(Collider other){
if (other.tag == "Boundary")
{
return;
}
Instantiate (explosion, transform.position, transform.rotation);
if (other.tag == "Player")
{
Instantiate (playerExplosion, other.transform.position, other.transform.rotation);
gameController.Gameover();
}
Scores.score += scoreValue;
Destroy(other.gameObject);
Destroy(gameObject);
}
}
Code for GameController
using System.Collections; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement;
public class GameController : MonoBehaviour {
public GameObject hazards;
public Vector3 spawnValues;
public float hazardsCount;
public float startWait;
public float spawnWait;
public float waveWait;
public Text restartText;
public Text gameverText;
private bool restart;
private bool gameover;
void Awake()
{
restart = false;
gameover = false;
restartText.text = "";
gameverText.text = "";
}
void Start()
{
StartCoroutine(SpawnWaves());
}
void Update()
{
if (restart)
{
if (Input.GetKeyDown(KeyCode.R))
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
}
IEnumerator SpawnWaves()
{
while (true)
{
for (int i = 0; i < hazardsCount; i++)
{
yield return new WaitForSeconds(startWait);
Vector3 spawnPosition = new Vector3(Random.Range(-spawnValues.x, spawnValues.x), spawnValues.y, spawnValues.z);
Quaternion spawnRotation = Quaternion.identity;
Instantiate(hazards, spawnPosition, spawnRotation);
yield return new WaitForSeconds(spawnWait);
}
yield return new WaitForSeconds(waveWait);
if (gameover)
{
restartText.text = "Press 'R' to restart game!";
restart = true;
break;
}
}
}
public void Gameover()
{
gameverText.text = "Game Over!";
gameover = true;
}
}
I don't seem to be able to find the error .. please help me out..,
Answer by labreiz · Jul 04, 2018 at 06:57 AM
Wooohhooo ... i found my error.. if any of you guys get stuck.. you should look for really small mistakes in the code like the one i had
if (gameController = null)
in DestroyByContact Script i changed it to
if (gameController == null)
and it all went good.. the code worked..
i have solved space shooter "Ending the game" step issue that i encountered..
Your answer
Follow this Question
Related Questions
Tanks! tutorial movament problem,Tanks tutorial problem with moving 0 Answers
How to reference script in unity (C#) ? 0 Answers
How to assign Instantiated object through script? 1 Answer
My script does not work each time i enter Unity unless i add it to the object again. any solutions? 0 Answers
How do i put "Wasted!" after respawn? 0 Answers