2017-03-08 5 views
0

Dans le jeu que j'essaie de créer, des ennemis sont créés. L'ennemi de base contient un script nommé "ShootableBox" dans lequel la cible est le "Player". Cependant, lorsque les ennemis du clone sont créés, le script n'a plus la cible "Player" et je veux les assigner exactement comme ils sont assignés dans l'inspecteur.Attribuer une cible à un script par programme dans Unity3D

Voici mon code spawn:

using UnityEngine; 
using System.Collections; 
using UnityEngine.SceneManagement; 

public class Spawn : MonoBehaviour { 

public GameObject enemy; 
public Transform [] spawnPoints; 

// Use this for initialization 
void Start() { 
    InvokeRepeating ("SpawnEnemy", 5.0f, 5.0f); 
} 

void Update() { 

} 

public void SpawnEnemy() { 
    int spawnPointIndex = Random.Range (0, spawnPoints.Length); 
    Instantiate (enemy, spawnPoints [spawnPointIndex].position, spawnPoints [spawnPointIndex].rotation); 
} 
} 

Comment puis-je les affecter? Je suis désolé, je suis encore nouveau à ce sujet. Mais merci pour votre aide.

Répondre

3

Attribuez à l'objet Player une étiquette telle que "Player". Une fois l'ennemi instancié, vous pouvez référencer le script de cette instance et lui assigner la cible.

ShootableBox enemyScript = enemy.GetComponent<ShootableBox>(); 

GameObject player = GameObject.FindGameObjectByTag("Player"); 

enemyScript.target = player; 
+0

Salut. Mon script ShootableBox ne contient pas de définition pour la cible. Comment puis-je l'attribuer? Je m'excuse et je vous remercie. –

+3

Vous avez dit qu'il avait une cible fixée au joueur mais les clones ne l'ont pas. Montrez-nous le script ShootableBox s'il vous plaît. – Colby

+0

Wanda, normalement quand vous assignez quelque chose dans l'inspecteur, vous devez créer un 'ennemi Public GameObject 'comme vous l'avez fait dans le script spawn. Si vous voulez que le script ennemi contienne une cible pour le joueur, vous devez créer un champ comme celui-ci dans ce script pour la cible, puis le définir avec 'target = GameObject.FindGameObjectByTag (" Player ");' comme Colby ici dans la réponse . – Maakep

0

assignant au lieu de votre lecteur en préfabriqué ShootableBox dans hiérarchie de la scène, assigner dans hiérarchie de dossiers (où l'ennemi base est située) ou utiliser colby réponse.