- Home /
Instantiate not working in an IF statement.
using UnityEngine;
using System.Collections;
public class TileManagerScript : MonoBehaviour {
public GameObject tilePrefab;
public Transform playerTransform;
private float ptime = 10.0f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
ptime -= Time.deltaTime;
if (ptime == 0f) {
Instantiate (tilePrefab, new Vector3 (14.5f, -11.9f, 139.9f), Quaternion.identity);
}
}
}
I want to instantiate an object in the first 10 seconds of the game, but for some reason it doesn't instantiate after ptime hits 0 (10 seconds pass). I've tried simply using the instantiate code in the start function just alone, and it works fine. But whenever I put the instantiate code in an IF statement, it doesn't instantiate anything. I've also tried different conditions, but none of them seem to work. Am I doing something wrong? I send my thanks and appreciation to anyone who attempts to help me.
ptime will almost never be exactly zero ... better use if( ptime <= 0f)
Answer by oStaiko · Aug 24, 2016 at 07:38 AM
The problem is that ptime is not on a 0 to 10 scale, as a float it can go below 0, and the odds of it landing on 0 are slim. A working and more efficient way to do this would be as follows:
public GameObject tilePrefab;
private float ptime = 10.0f;
private bool doSpawn = true;
private Vector3 position= new Vector3 (14.5f, -11.9f, 139.9f);
void Update ()
{
if (doSpawn && Time.time > ptime)
{
Instantiate (tilePrefab, position, Quaternion.identity);
doSpawn = false;
}
}
This adds in a new bool, doSpawn, that prevents the if statement from ever passing twice, so it only spawns on the frame after the 10 second mark passes. Also it's good practice to keep your numbers up top, aka the new variable 'position'.
This will trigger 10 seconds after game start. You should store the startTime of the script or something like and use that in the comparison.
@oStaiko @saschandroid @ScaniX Really appreciate your help! Thank you, all your answers worked!
Your answer

Follow this Question
Related Questions
How to check an entire list and apply conditions. 1 Answer
conditional spawning 1 Answer
Spawning issues 0 Answers
What the heck is wrong with this script?! 1 Answer
Object will not instantiate 1 Answer