[RESOLUS] [DB-AL] Deplacer un gameobject sur la position d'un autre gameobject se trouvant dans un tableau

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
FriteCoca
Messages : 17
Inscription : 16 Mai 2018 13:39

[RESOLUS] [DB-AL] Deplacer un gameobject sur la position d'un autre gameobject se trouvant dans un tableau

Message par FriteCoca » 06 Juin 2018 20:17

Bonjour, j'ai 2 soucis.

Premièrement, j'ai besoins de téléporter mon jouer sur la position d'un gameobject sur trouvant dans un tableau

J'ai essayé

Code : Tout sélectionner

transform.position = playerGroupSpawn[0].transform.position;
Mais j'ai cette erreur :

Code : Tout sélectionner

NullReferenceException: Object reference not set to an instance of an object
battleController.changescene () (at Assets/script/battleController.cs:48)
battleController.OnTriggerEnter (UnityEngine.Collider other) (at Assets/script/battleController.cs:35)
Voici mon script :

Code : Tout sélectionner

   public string battleSceneToLoad;
    public GameObject[] playerGroupSpawn;
    bool ifcombat = false;

    void Start() {
    }


    void Update() {

        playerGroupSpawn[0] = GameObject.Find("point1");
        playerGroupSpawn[1] = GameObject.Find("point2");
        playerGroupSpawn[2] = GameObject.Find("point3");
        playerGroupSpawn[3] = GameObject.Find("point4");
    }

    void OnTriggerEnter(Collider other)
    {
        if (other.tag == "cityBattle")
        {
            changescene();
        }
    }

    void changescene()
    {
        SceneManager.LoadScene(battleSceneToLoad, LoadSceneMode.Additive);
        Scene nextScene = SceneManager.GetSceneAt(1);
        SceneManager.MoveGameObjectToScene(gameObject, nextScene);
        SceneManager.UnloadSceneAsync("terrain");
        transform.position = playerGroupSpawn[0].transform.position;
    }
deuxiement, je cherche simplement à charger une scène et téléporter mon joueur dedans mais au moment de faire l'operation j'ai cette erreur et la scene precedante reste chargée.

Code : Tout sélectionner

Unloading the last loaded scene Assets/terrain.unity(build index: 0), is not supported. Please use SceneManager.LoadScene()/EditorSceneManager.OpenScene() to switch to another scene.
UnityEngine.SceneManagement.SceneManager:UnloadSceneAsync(String)
battleController:changescene() (at Assets/script/battleController.cs:37)
battleController:OnTriggerEnter(Collider) (at Assets/script/battleController.cs:28)

Voici le code pour changer de scene

Code : Tout sélectionner

void changescene()
    {
        SceneManager.LoadScene(battleSceneToLoad, LoadSceneMode.Additive);
        Scene nextScene = SceneManager.GetSceneAt(1);
        SceneManager.MoveGameObjectToScene(gameObject, nextScene);
        SceneManager.UnloadSceneAsync("terrain");
        transform.position = playerGroupSpawn[0].transform.position;
    }
Dernière édition par FriteCoca le 06 Juin 2018 21:34, édité 1 fois.

Avatar de l’utilisateur
Scozor
Messages : 46
Inscription : 17 Oct 2014 12:56
Contact :

Re: [DB-AL] Deplacer un gameobject sur la position d'un autre gameobject se trouvant dans un tableau / Décharger une scè

Message par Scozor » 06 Juin 2018 20:39

Salut à toi,

Unity te dit que l'une des choses de la ligne 48 du script battleController n'existe pas. Peut-être qu'il n'y a rien dans
playerGroupSpawn[0]
Essaie de vérifier si dans ton tableau à l'index 0 il y a un GameObject en faisant une condition.
if(playerGroupSpawn[0] != null)
{
    // Tes instructions si dans ton tableau il y a un objet à l'index 0.
}
Un conseil ne mets pas à jour les valeurs de ton tableau à chaque frame, tu perds en optimisation.

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Deplacer un gameobject sur la position d'un autre gameobject se trouvant dans un tableau / Décharger une scè

Message par Max » 06 Juin 2018 20:43

Bonsoir,
FriteCoca a écrit :
06 Juin 2018 20:17
Premièrement, j'ai besoins de téléporter mon jouer sur la position d'un gameobject sur trouvant dans un tableau
Ton tableau de GameObjects est-il bien définis dans l'inspector ? A priori je ne pense pas.
FriteCoca a écrit :
06 Juin 2018 20:17
deuxiement, je cherche simplement à charger une scène et téléporter mon joueur dedans mais au moment de faire l'operation j'ai cette erreur et la scene precedante reste chargée.
Passe plutôt par une coroutine pour ce genre d'opération, permettant de bien séquencer les phases load/upload.
Tu as un exemple dans la doc qui devrait parfaitement fonctionner et qui colle très bien à ce que tu cherches à faire ICI.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

FriteCoca
Messages : 17
Inscription : 16 Mai 2018 13:39

Re: [DB-AL] Deplacer un gameobject sur la position d'un autre gameobject se trouvant dans un tableau / Décharger une scè

Message par FriteCoca » 06 Juin 2018 21:33

Merci à vous deux ! Problème résolus.

Bonne soirée.

Répondre

Revenir vers « (C#) CSharp »