I have a problem with my script, keep getting a error that says
MissingReferenceException: The object of type 'Transform' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
UnityEngine.Transform.get_position () (at C:/BuildAgent/work/842f9557127e852/Runtime/ExportGenerated/Editor/UnityEngineTransform.cs:19)
GameControl.PlatformMaintenaince () (at Assets/Game 2 - Jump game/Scripts/GameControl.cs:77)
GameControl.Update () (at Assets/Game 2 - Jump game/Scripts/GameControl.cs:43)
My script
using UnityEngine;
using System.Collections;
public enum GameState { playing, gameover };
public class GameControl : MonoBehaviour {
public Transform platformPrefab;
public static GameState gameState;
private Transform playerTrans;
private float platformsSpawnedUpTo = 0.0f;
private ArrayList platforms;
private float nextPlatformCheck = 0.0f;
void Awake () {
playerTrans = GameObject.FindGameObjectWithTag("Player").transform;
platforms = new ArrayList();
SpawnPlatforms(25.0f);
StartGame();
}
void StartGame()
{
Time.timeScale = 1.0f;
gameState = GameState.playing;
}
void GameOver()
{
Time.timeScale = 0.0f; //Pause the game
gameState = GameState.gameover;
GameGUI.SP.CheckHighscore();
}
void Update () {
//Do we need to spawn new platforms yet? (we do this every X meters we climb)
float playerHeight = playerTrans.position.y;
if (playerHeight > nextPlatformCheck)
{
PlatformMaintenaince(); //Spawn new platforms
}
//Update camera position if the player has climbed and if the player is too low: Set gameover.
float currentCameraHeight = transform.position.y;
float newHeight = Mathf.Lerp(currentCameraHeight, playerHeight, Time.deltaTime * 10);
if (playerTrans.position.y > currentCameraHeight)
{
transform.position = new Vector3(transform.position.x, newHeight, transform.position.z);
}else{
//Player is lower..maybe below the cameras view?
if (playerHeight < (currentCameraHeight - 10))
{
GameOver();
}
}
//Have we reached a new score yet?
if (playerHeight > GameGUI.score)
{
GameGUI.score = (int)playerHeight;
}
}
void PlatformMaintenaince()
{
nextPlatformCheck = playerTrans.position.y + 10;
//Delete all platforms below us (save performance)
for(int i = platforms.Count-1;i>=0;i--)
{
Transform plat = (Transform)platforms[i];
if (plat.position.y < (transform.position.y - 10))
{
Destroy(plat.gameObject);
platforms.RemoveAt(i);
}
}
//Spawn new platforms, 25 units in advance
SpawnPlatforms(nextPlatformCheck + 25);
}
void SpawnPlatforms(float upTo)
{
float spawnHeight = platformsSpawnedUpTo;
while (spawnHeight <= upTo)
{
float x = Random.Range(-10.0f, 10.0f);
Vector3 pos = new Vector3(x, spawnHeight, 12.0f);
Transform plat = (Transform)Instantiate(platformPrefab, pos, Quaternion.identity);
platforms.Add(plat);
spawnHeight += Random.Range(5f, 2.5f);
}
platformsSpawnedUpTo = upTo;
}
}
Second script
function OnTriggerEnter(other : Collider){
if (other.gameObject.tag == "Finish")
{
Destroy(other.gameObject);
rigidbody.velocity = new Vector3(0, 0, 0);
rigidbody.AddForce(new Vector3(0, 700, 0), ForceMode.Force);
}
}