zarkoffe a écrit : ↑03 Oct 2018 02:07
Salut Liven, merci pour ta réponse!
Il y a 2/3 choses que je ne saisie pas:
- Avant tout, on est d'accord que je n'ai pas à toucher d'un poil le script LevelLoader, non?
- Je dois donc créer un nouveau script OnTriggerEnter, donc une nouvelle classe. Et ensuite appeler LevelLoader.
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OnTriggerEnter : MonoBehaviour {
[SerializeField] private LoadLevel LoadLevel ;
// et faire glisser l'objet en contenant ce script dans l'inspector
void OnTriggerEnter (Collider other) {
if(other.transform.gameObject.tag == "Player")
{
other.transform.position = respawnPositions;
LoadLevel.LoadLevel(0); // tu peu remplace 0 par une variable int de ton choix
}
}
merci d'avance, excuse je débute encore un peu
Si ton script LevelLoader fonctionne bien, il n'y a pas besoin de le modifier, il faut juste l'appeler.
Il faut bien créer une classe contenir ta fonction trigger. Par contre il ne faut PAS nommer ta classe comme ta fonction. Ta fonction se nomera de tout manière OnTriggerEnter car c'est une fonction interne à unity, tu doit utiliser ce nom par contre il faut que tu change le nom de ta classe en la nomant TriggerManagement par exemple.
Ensuite, je remarque que ta variable LoadLevel se nome exactement comme son type hors c'est une très mauvaise idée car on ne fait plus la distinction entre ce qui est type et ce qui est variable ce qui augure un beau basar pour la suite.
En plus c'est pas la fonction LoadLevel que tu doit mettre en variable mais la classe qui le contient (LevelLoader )
Souvent pour pallier à ce problème on commence le nom de la variable par une minuscule.
Ton code corrigé donne ça :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TriggerManagement : MonoBehaviour { // nom de classe modifé
[SerializeField] private LevelLoader levelLoader ;
// liaison avec de la classe (levelLoader) plutot que la fonction (LoadLevel) + minuscule sur la variable
// et faire glisser l'objet en contenant ce script dans l'inspector
void OnTriggerEnter (Collider other) {
if(other.transform.gameObject.tag == "Player")
{
other.transform.position = respawnPositions; // ça je m'en occupe pas, c'est ta popote
levelLoader.LoadLevel(0);
// minuscule sur la variable + appel de la fonction (LoadLevel) présente dans la classe (levelLoader)
}
}