Code is exactly like in the course with the exception of the code snippet you supplied me in my last issue in the portal script.
Here is a link to the latest version of the game if you need it : https://www.dropbox.com/s/5njl68mn38fw820/RPG%20Tutorial.zip?dl=0
Here is the code for Portal.cs if this is all you need :
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.SceneManagement;
namespace RPG.SceneManagement {
public class Portal : MonoBehaviour
{
enum DestinationIdentifier { Lake, Town, Farm, Obsticles}
[SerializeField] int sceneToLoad = -1;
[SerializeField] Transform spawnPoint;
[SerializeField] DestinationIdentifier destination;
[SerializeField] float fadeOutTime = 1f;
[SerializeField] float fadeInTime = 2f;
[SerializeField] float fadeWaitTime = 0.5f;
private void OnTriggerEnter(Collider other) {
if(other.tag == "Player") {
StartCoroutine(Transition());
}
}
private IEnumerator Transition() {
if(sceneToLoad < 0) {
Debug.LogError("Scene to load is not set");
yield break;
}
DontDestroyOnLoad(gameObject);
Fader fader = FindObjectOfType<Fader>();
yield return fader.FadeOut(fadeOutTime);
// Save current level
SavingWrapper wrapper = FindObjectOfType<SavingWrapper>();
wrapper.Save();
yield return SceneManager.LoadSceneAsync(sceneToLoad);
// Load current level
wrapper.Load();
Portal otherPortal = GetOtherPortal();
updatePlayer(otherPortal);
wrapper.Save();
yield return new WaitForSeconds(fadeWaitTime);
yield return fader.FadeIn(fadeInTime);
Destroy(gameObject);
}
private void updatePlayer(Portal otherPortal) {
GameObject player = GameObject.FindWithTag("Player");
player.GetComponent<NavMeshAgent>().Warp(otherPortal.spawnPoint.position);
player.transform.rotation = otherPortal.spawnPoint.rotation;
// Course code before adjustment by Sam
//player.transform.position = otherPortal.spawnPoint.position;
//player.transform.rotation = otherPortal.spawnPoint.rotation;
}
private Portal GetOtherPortal() {
foreach (Portal portal in FindObjectsOfType<Portal>()) {
if (portal == this) continue;
if (portal.destination != destination) continue;
return portal;
}
return null;
}
}
}
As stated previously, I’m still rather new to Unity and C#. With that said, I did attempt to debug the issue as best I knew how. Double checked all trigger settings, rolled back to a previous save and did the section again, put a debug snippet in the portal script before and after the altered code (from previous issue). I’d like to think I’m pretty thorough on my end before I ask for help.