- Home /
how to destroy a object only in game and not the prefab
im trying to make a game where there are 3 spawn positions for the player(like lets say subway surfers)(the player moves only on the x axis while the platform goes behind him),and for his movement he is teleporting so i want to destroy the object in game and then spawn him on one of the spawn places and thats how the game goes basicly..but when i try to destory the object it doesnt give me.. code: http://pastebin.com/etr4WmkG
Answer by SaxonHammer · Aug 24, 2014 at 03:48 AM
Your main problem is you ARE destroying the prefab in you code so the code you have written is working correctly.
To solve your problem you need to store the instance you create with instantiate in a variable and then Destroy THAT eg:-
private GameObject player;
void Start () {
player = Instantiate(prefab,new Vector3(spawnCentre.transform.position.x,prefab.transform.position.y,prefab.transform.position.z),Quaternion.identity) as GameObject;
}
You can then destroy 'player'
// Update is called once per frame
void Update () {
counter += 1;
if(counter==10){
counter=0;
if(Input.GetKeyDown(KeyCode.D))
{
if(prefab.transform.position.x==spawnLeft.transform.position.x)
{
Destroy(player);
player = Instantiate(prefab,new Vector3(spawnCentre.transform.position.x,prefab.transform.position.y,prefab.transform.position.z),Quaternion.identity) as GameObject;
}
This destroys the instance of your player prefab and not the prefab itself.
NOTE: Everytime you Instantiate from your prefab you should assign it to the player variable for destruction later.