(Unity 2D) de Détruire des instancié prefab quand il s'en va hors de l'écran?
Im faire un Jeu en 2D dans l'Unité 2D(4.3), et j'ai besoin de détruire les préfabriqués qui se instancié lors de ces préfabriqués aller hors de l'écran. J'ai écrit un code pour frayer les Objets, mais je veux supprimer ces préfabriqués quand ils sortent de l'écran.
Voici le code que j'ai écrit jusqu'à présent.
Pour Générer de la préfabrication (C#):
void Update () {
float y = Random.Range(-4.53f, 2.207f);
if(x < 2000) {
Instantiate(obstacle, new Vector3(y, x * 6.0f, 0),Quaternion.identity);
x++;
}
//Debug.Log(x);
}
De détruire le prefab(C#):
/*************************************************************************************************
* GET INSTANTIATED OBSTACLE
* AND DESTROY IT ON EXIT
* TO SAVE MEMORY
**************************************************************************************************/
GameObject clone = (GameObject)Instantiate (obstacle);
/*if(clone.transform.position.y == -11)
{
Destroy(clone);
Debug.Log("Destroy");
}*/
Vector2 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
if (screenPosition.y > Screen.height || screenPosition.y < 0)
{
Destroy(gameObject);
Debug.Log("Destroy");
}
Toutefois, le code de destruction de l'objet n'est pas de travail, mais n'est pas une erreur en soit. Il n'sortie de "Détruire" après la préfabriqués aller hors de l'écran, donc je sais que c'est quelque chose de mal avec le code pour les détruire.
Grâce
- Quelle est la ligne GameObject clone = (GameObject)Instancier (obstacle); faire là-dedans? Je pensais que vous instanting les obstacles dans la mise à Jour d'un Script?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire un composant qui va détruire l'auto lors de la position de la caméra, puis de les associer à cette composante de l'obstacle.
Et cette composante de la joindre à l'obstacle détruire soi-même.
for(int i = 0; i < 1; i++) { Vector2 screenPosition = Camera.main.WorldToScreenPoint(transform.position); if (screenPosition.y > Screen.height || screenPosition.y < 0) { Destroy (this.gameObject); Debug.Log ("Destroy"); } }
Mais Qui ne fonctionne pas - il n'instancie sur 5, puis les supprime, et de ne pas instancier plus.Vous pouvez faire 4 quads sur les 4 côtés des écrans et avec eux, vous fixez boxCollider et vérifier sa isTrigger. Après cela, ajoutez le script ci-dessous pour chaque quad qui vérifie que si quelque chose entre en collision avec elle dans son OnTriggerEnter et là vous pouvez vérifier l'étiquette de l'objet instancié ou vous risquez de détruire chaque objet entre en collision avec elle(dépend du jeu). Utilisez le code ci-dessous
Vous pouvez utiliser la fonction suivante pour détecter le moment où l'objet est en dehors de l'écran, et ensuite à le détruire, ou tout autre selon votre logique de jeu.