player can only access items in correct scenes

This commit is contained in:
Sam
2023-05-01 01:52:42 -07:00
parent d3893d3f0e
commit 932af31dc9
12 changed files with 406 additions and 22 deletions

View File

@@ -75,6 +75,7 @@ public class EnemyPatrol : MonoBehaviour {
IEnumerator Defeat() {
this.gameObject.GetComponent<BoxCollider2D>().enabled = false;
animator.Play("Explosion");
this.gameObject.GetComponent<AudioSource>().Play();
yield return new WaitForSeconds(animator.GetCurrentAnimatorStateInfo(0).length);
this.gameObject.GetComponent<BoxCollider2D>().enabled = true;
this.gameObject.SetActive(false);

View File

@@ -16,6 +16,7 @@ public class PlayerBehavior : MonoBehaviour
[SerializeField] private Launch launcher;
[HideInInspector] public bool hasTambourine = true;
GameObject tambourine;
bool unlockedTambourine;
[Header("Grappling:")]
[SerializeField] public Tutorial_GrapplingGun grapplingGun;
@@ -28,7 +29,7 @@ public class PlayerBehavior : MonoBehaviour
Animator animator;
[HideInInspector] public bool playerIsAlive = true;
void Start()
{
@@ -41,6 +42,7 @@ public class PlayerBehavior : MonoBehaviour
void Update()
{
unlockedTambourine = stateController.unlockedTambourine;
if (playerIsAlive) {
// throw tambourine
// if (Input.GetKeyDown(KeyCode.K)) {
@@ -110,7 +112,7 @@ public class PlayerBehavior : MonoBehaviour
}
void ThrowTambourine() {
if (hasTambourine && !grapplingRope.isGrappling)
if (unlockedTambourine && hasTambourine && !grapplingRope.isGrappling)
{
launcher.ThrowTambourine(forward);
hasTambourine = false;
@@ -155,6 +157,7 @@ public class PlayerBehavior : MonoBehaviour
}
else if (col.tag == "instaDeath")
{
print("player fell in spikes");
StartCoroutine(DestroyPlayer());
}
else if (col.tag == "spawnPoint") {
@@ -188,6 +191,7 @@ public class PlayerBehavior : MonoBehaviour
collision.gameObject.GetComponent<EnemyPatrol>().DefeatEnemy();
} else {
StartCoroutine(DestroyPlayer());
print("enemy defeated player");
}
}
else if (collision.gameObject.tag == "Projectile") {
@@ -197,18 +201,27 @@ public class PlayerBehavior : MonoBehaviour
}
IEnumerator DestroyPlayer() {
playerIsAlive = false;
if (playerIsAlive) {
print("destroyPlayer called");
playerIsAlive = false;
AudioSource audio = this.gameObject.GetComponent<AudioSource>();
audio.Play();
// animate
animator.Play("Die");
yield return new WaitForSeconds(animator.GetCurrentAnimatorStateInfo(0).length);
// animate
animator.Play("Die");
// yield return new WaitForSeconds(animator.GetCurrentAnimatorStateInfo(0).length);
yield return new WaitForSeconds(audio.clip.length);
this.stateController.SetDeathCanvasActive(true);
// this.stateController.SetDeathCanvasActive(true);
// destroy all tambourines
GameObject[] currentTambourines = GameObject.FindGameObjectsWithTag("tambourine");
foreach (GameObject tambourine in currentTambourines) {
tambourine.GetComponent<TambourineBehavior>().DestroySelf();
// destroy all tambourines
GameObject[] currentTambourines = GameObject.FindGameObjectsWithTag("tambourine");
foreach (GameObject tambourine in currentTambourines) {
// tambourine.GetComponent<TambourineBehavior>().DestroySelf();
Destroy(tambourine);
}
this.stateController.RespawnPlayer();
}
}
}

View File

@@ -47,6 +47,7 @@ public class PlayerMovement : MonoBehaviour
Tutorial_GrapplingRope grapplingRope;
bool wasGrappling = false;
bool unlockedTrumpet;
//Set all of these up in the inspector
[Header("Checks")]
@@ -60,6 +61,7 @@ public class PlayerMovement : MonoBehaviour
[SerializeField] private LayerMask _groundLayer;
[HideInInspector] private PlayerBehavior playerBehavior;
[HideInInspector] private StateController stateController;
#endregion
private void Awake()
@@ -67,7 +69,7 @@ public class PlayerMovement : MonoBehaviour
RB = GetComponent<Rigidbody2D>();
playerBehavior = this.gameObject.GetComponent<PlayerBehavior>();
grapplingRope = playerBehavior.grapplingRope;
stateController = GameObject.FindGameObjectWithTag("StateController").GetComponent<StateController>();
}
private void Start()
@@ -94,6 +96,7 @@ public class PlayerMovement : MonoBehaviour
private void Update()
{
unlockedTrumpet = stateController.unlockedTrumpet;
#region TIMERS
LastOnGroundTime -= Time.deltaTime;
LastOnWallTime -= Time.deltaTime;
@@ -125,7 +128,11 @@ public class PlayerMovement : MonoBehaviour
if (IsGrounded()) //checks if set box overlaps with ground
{
LastOnGroundTime = Data.coyoteTime; //if so sets the lastGrounded to coyoteTime
trumpet = 2;
if (unlockedTrumpet) {
trumpet = 2;
} else {
trumpet = 0;
}
wasGrappling = false;
}

View File

@@ -22,9 +22,14 @@ public class StateController : MonoBehaviour {
[Header("Enemies")]
GameObject[] enemiesInScene;
[Header("LevelProgression")]
[Header("Level Progression")]
GameObject victoryCanvas;
[Header("Unlocked Items")]
[SerializeField] public bool unlockedTrumpet = false;
[SerializeField] public bool unlockedTambourine = false;
[SerializeField] public bool unlockedClarinet = false;
void Awake() {
// check to see if a state controller already exists
if (GameObject.FindGameObjectWithTag("StateController") != null) {
@@ -41,7 +46,9 @@ public class StateController : MonoBehaviour {
}
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
#region FIND OBJECTS
deathCanvas = GameObject.Find("DeathUICanvas");
if (deathCanvas != null) {
Button respawnButton = GameObject.Find("RespawnButton").GetComponent<Button>();
@@ -73,6 +80,25 @@ public class StateController : MonoBehaviour {
if (isPaused) {
Unpause();
}
#endregion
#region UNLOCK ITEMS
if (SceneManager.GetActiveScene().name == "GrenouilleVillage") {
unlockedTrumpet = false;
unlockedTambourine = false;
unlockedClarinet = false;
}
else if (SceneManager.GetActiveScene().name == "GrappleScene") {
unlockedTrumpet = true;
unlockedTambourine = true;
unlockedClarinet = false;
}
else if (SceneManager.GetActiveScene().name == "ClarinetScene") {
unlockedTrumpet = true;
unlockedTambourine = true;
unlockedClarinet = true;
}
#endregion
}
void OnToggleDebugMenu() {