You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.9 KiB
68 lines
2.9 KiB
using UnityEngine; |
|
using UnityEngine.SceneManagement; |
|
|
|
/// <summary> |
|
/// This class is attached to a "boundary" in a scene. It handles moving from the |
|
/// current scene to the next scene that the "boundary leads to. For example, this |
|
/// script can be attached to a collider along the side of the scene that leads |
|
/// from a cityscape to an overland.Or this script can be attached to a collider |
|
/// that represents the door on a building that leads to the interior of the building. |
|
/// |
|
/// SETUP |
|
/// BoxCollider2D |
|
/// Add a BoxCollider2D to the scene where the "boundary" exists.This class makes |
|
/// use of the object's tag to determine the destination, so add a tag that matches |
|
/// the name of the destination.The name of the destination will match a key in a |
|
/// Dictionary in the NavigationManager. So make sure the spelling matches. Also use |
|
/// the icon feature to make the collider easier to see in the scene view. |
|
/// </summary> |
|
public class NavigationPrompt : MonoBehaviour |
|
{ |
|
/// <summary> |
|
/// Used to track the player's starting position on the map when the scene is loaded. |
|
/// </summary> |
|
public Vector3 startingPosition; |
|
|
|
/// <summary> |
|
/// When the player object enters the "boundary" check the tag of the boundary |
|
/// and compare it to the Dictionary values in the NavigationManager. If the |
|
/// manager has an entry for the tag AND allows navigation to the tag, then |
|
/// this method will load the scene that matches the tag. |
|
/// |
|
/// NOTE: Notice that all three things match; the tag, the key in the Dictionary, |
|
/// and the name of the scene. |
|
/// </summary> |
|
/// <param name="col"></param> |
|
void OnCollisionEnter2D(Collision2D col) |
|
{ |
|
// Check if the tag on this object is defined in the Nav Manager |
|
if (NavigationManager.CanNavigate(this.tag)) |
|
{ |
|
// Log the tag so we can track what we are trying to find in the Dictionary |
|
Debug.Log("attempting to exit via " + tag); |
|
// Use the NavigationManager to load the scene whose name matches the tag |
|
NavigationManager.NavigateTo(this.tag); |
|
// Should we save the player's position on the map? |
|
GameState.saveLastPosition = false; |
|
// Save the Player's position on the map so that when we return the object |
|
// will be in the right place |
|
GameState.SetLastScenePosition(SceneManager.GetActiveScene().name, startingPosition); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// Use this method for objects that are set as triggers. |
|
/// </summary> |
|
/// <param name="col"></param> |
|
void OnTriggerEnter2D(Collider2D col) |
|
{ |
|
if (NavigationManager.CanNavigate(this.tag)) |
|
{ |
|
Debug.Log("attempting to exit via " + tag); |
|
NavigationManager.NavigateTo(this.tag); |
|
GameState.saveLastPosition = false; |
|
GameState.SetLastScenePosition(SceneManager.GetActiveScene().name, startingPosition); |
|
} |
|
} |
|
|
|
} |