- Home /
Question by
gamesmarlac · Nov 06, 2018 at 05:44 AM ·
gameobjectcrashcollision detectionscene-loadingfreeze
I need your help I have a script to reload a scene if the player go on a unauthorized gameObject but the game freeze please help.
I need your help because I don't know why that is happening.
Blockquote
using System.Collections;
Blockquote
using UnityEngine;
Blockquote
using UnityEngine.SceneManagement;
namespace UnityStandardAssets.Characters.FirstPerson
{
public class WorldLimitePlaye : MonoBehaviour
{
public Canvas LimiteUI;
public float TimeBeforeReload;
public float TimeBeforeReloadInWater;
private float TimeRemaning;
private CharacterController player;
private bool textActive = false;
private bool isSafe = true;
private Collider otherr;
public UnityStandardAssets.Characters.FirstPerson.FirstPersonController firstPerson;
private bool isJumping = false;
private bool previoslySafe = true;
private Swim swim;
private bool inwater;
private string colider;
// Use this for initialization
void Start()
{
swim = GetComponent<Swim>();
inwater = swim.watherLimite;
player = GetComponent<CharacterController>();
TimeRemaning = TimeBeforeReload;
LimiteUI.gameObject.SetActive(false);
}
// Update is called once per frame
void Update()
{
inwater = swim.watherLimite;
isJumping = firstPerson.m_Jumping;
if (TimeRemaning <= 0)
{
PlayerPrefs.SetString("Load", "true");
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
public void OnTriggerExit(Collider other)
{
isJumping = firstPerson.m_Jumping;
if (other.tag == "WorldLimite")
{
isJumping = firstPerson.m_Jumping;
if (isJumping == false)
{
StopAllCoroutines();
LimiteUI.gameObject.SetActive(false);
isSafe = true;
previoslySafe = true;
}
else
{
StartCoroutine(jump());
}
}
if (other.tag == "Water Limite")
{
StopAllCoroutines();
LimiteUI.gameObject.SetActive(false);
isSafe = true;
previoslySafe = true;
}
//if (other.tag == "WorldLimite" && other.tag == "Water Limite")
// {
// }
// else
// {
// previoslySafe = true;
// isSafe = true;
// StopAllCoroutines();
// LimiteUI.gameObject.SetActive(false);
// }
}
IEnumerator jump()
{
yield return new WaitForSeconds(0.0f);
while (3 != 1)
{
if (colider == "WorldLimite")
{
}
else
{
isJumping = firstPerson.m_Jumping;
if (isJumping == false)
{
LimiteUI.gameObject.SetActive(false);
isSafe = true;
previoslySafe = true;
StopAllCoroutines();
}
}
}
}
IEnumerator Exit()
{
isJumping = firstPerson.m_Jumping;
if (isJumping == true)
{
isJumping = firstPerson.m_Jumping;
yield return new WaitForSeconds(1f);
isJumping = firstPerson.m_Jumping;
inwater = swim.watherLimite;
// if (isJumping == false)
// {
isSafe = true;
previoslySafe = true;
LimiteUI.gameObject.SetActive(false);
StopAllCoroutines();
// }
}
// if (isJumping == false)
// {
/// isSafe = true;
// previoslySafe = true;
//Limite.gameObject.SetActive(false);
//}
}
IEnumerator ExitWater()
{
isJumping = firstPerson.m_Jumping;
yield return new WaitForSeconds(0.1f);
isJumping = firstPerson.m_Jumping;
inwater = swim.watherLimite;
if (isSafe == false)
{
isSafe = true;
previoslySafe = true;
LimiteUI.gameObject.SetActive(false);
StopAllCoroutines();
}
// if (isJumping == false)
// {
/// isSafe = true;
// previoslySafe = true;
//Limite.gameObject.SetActive(false);
//}
}
public void OnTriggerStay(Collider other)
{
if(isJumping == false)
{
colider = other.tag;
}
otherr = other;
if (other.tag == "WorldLimite")
{
previoslySafe = false;
otherr = other;
isSafe = false;
TimeRemaning = TimeBeforeReload;
LimiteUI.gameObject.SetActive(true);
StartCoroutine(ComptRebourd());
StartCoroutine(ComptRebourdTemps());
print("12345678");
}
if (other.tag == "Water Limite")
{
previoslySafe = false;
otherr = other;
isSafe = false;
TimeRemaning = TimeBeforeReloadInWater;
LimiteUI.gameObject.SetActive(true);
StartCoroutine(ComptRebourdWater());
StartCoroutine(ComptRebourdTemps());
}
}
public void OnTriggerEnter(Collider other)
{
otherr = other;
if (other.tag == "WorldLimite")
{
if (previoslySafe)
{
previoslySafe = false;
otherr = other;
isSafe = false;
TimeRemaning = TimeBeforeReload;
LimiteUI.gameObject.SetActive(true);
StartCoroutine(ComptRebourd());
StartCoroutine(ComptRebourdTemps());
}
}
if (other.tag == "Water Limite")
{
if (previoslySafe)
{
previoslySafe = false;
otherr = other;
isSafe = false;
TimeRemaning = TimeBeforeReloadInWater;
LimiteUI.gameObject.SetActive(true);
StartCoroutine(ComptRebourdWater());
StartCoroutine(ComptRebourdTemps());
}
}
}
IEnumerator ComptRebourd()
{
yield return new WaitForSeconds(TimeBeforeReload);
if (isSafe == false)
{
PlayerPrefs.SetString("Load", "true");
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
IEnumerator ComptRebourdWater()
{
yield return new WaitForSeconds(TimeBeforeReloadInWater);
if (isSafe == false)
{
PlayerPrefs.SetString("Load", "true");
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
IEnumerator ComptRebourdTemps()
{
while (TimeRemaning >= 0f)
{
yield return new WaitForSeconds(1f);
if (isSafe == false)
{
TimeRemaning = TimeRemaning - 1f;
print(TimeRemaning);
}
}
}
}
}
Comment
Your answer
Follow this Question
Related Questions
My code freezes Unity... 1 Answer
Editor freezed, When create 3D Game Object. 1 Answer
Android Loading scene / loading assets problem 1 Answer
Unity freezes on play 1 Answer
Unity Webplayer doesn't work on Mac? 3 Answers