void Update() { if (LerpOverTheNewCamera) { CurrentCameraPosition = this.transform.position; CurrentCameraRotation = this.transform.rotation; transform.position = Vector3.Slerp(CurrentCameraPosition, CameraNewPosition, speed * Time.deltaTime); transform.rotation = Quaternion.Slerp(CurrentCameraRotation, CameraNewRotation, speed * Time.deltaTime); float dist = Vector3.Distance(CurrentCameraPosition, CameraNewPosition); if (dist < 0.01 && !IsOnMenu) { LerpOverTheNewCamera = false; IsOnMenu = true; MainMenu.EnableButtons(); } else if (dist < 0.01 && IsOnMenu) { EnableInGamePlayer(); LerpOverTheNewCamera = false; IsOnMenu = false; } } Vector3 forward = this.transform.TransformDirection(Vector3.forward); int layer1 = 2; int layer2 = 8; int layerMask = ~((1 << layer1) | (1 << layer2)); // NOT ~(1 << layer1) | ~(1 << layer2) if (Physics.Raycast(this.transform.position, forward, out hit, 5.0f, layerMask)) { switch (hit.collider.gameObject.tag) { case "OptionsScreen": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = true; } break; case "ProfilScreen": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = true; } break; case "ArmurerieScreen": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = true; } break; case "DisconnectScreen": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = true; } break; case "Normal games": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = true; } break; case "Private games": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = true; } break; case "Ranked games": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = true; } break; case "Host games": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = true; } break; default: Contact = false; break; } } if (Input.GetMouseButtonDown(0) && Contact && !LerpOverTheNewCamera && !IsOnMenu) { if (Physics.Raycast(this.transform.position, forward, out hit, 5.0f, layerMask)) { switch (hit.collider.gameObject.tag) { case "OptionsScreen": Contact = false; DisableInGamePlayer(); SmoothCameraMove(0, hit.collider.gameObject); MainMenu.MyMenuState = AeMainMenu.GuiState.OptionsMenu; break; case "ProfilScreen": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = false; DisableInGamePlayer(); SmoothCameraMove(0, hit.collider.gameObject); MainMenu.MyMenuState = AeMainMenu.GuiState.ProfilMenu; } break; case "ArmurerieScreen": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = false; DisableInGamePlayer(); SmoothCameraMove(0, hit.collider.gameObject); MainMenu.MyMenuState = AeMainMenu.GuiState.ShopMenu; } break; case "DisconnectScreen": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = false; DisableInGamePlayer(); SmoothCameraMove(0, hit.collider.gameObject); MainMenu.MyMenuState = AeMainMenu.GuiState.DisconnectMenu; } break; case "Normal games": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = false; DisableInGamePlayer(); SmoothCameraMove(0, hit.collider.gameObject); MainMenu.MyMenuState = AeMainMenu.GuiState.NormalGames; } break; case "Private games": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = false; DisableInGamePlayer(); SmoothCameraMove(0, hit.collider.gameObject); MainMenu.MyMenuState = AeMainMenu.GuiState.PrivateGames; } break; case "Ranked games": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = false; DisableInGamePlayer(); SmoothCameraMove(0, hit.collider.gameObject); MainMenu.MyMenuState = AeMainMenu.GuiState.RankedGames; } break; case "Host games": if (!LerpOverTheNewCamera && !IsOnMenu) { Contact = false; DisableInGamePlayer(); SmoothCameraMove(0, hit.collider.gameObject); MainMenu.MyMenuState = AeMainMenu.GuiState.HostGames; } break; default: Contact = false; break; } } } if (Input.GetKeyDown(KeyCode.Escape) && !LerpOverTheNewCamera && IsOnMenu) { SmoothCameraMove(1, null); if (AeCore.m_pCoreGame.MyStats.Character[0].m_gInstantiatedPrefab) { AeCore.m_pCoreGame.MyStats.Character[0].m_gInstantiatedPrefab.SetActive(false); } AeCore.m_pCoreGame.GetComponent <AeChat>().isOnMenu = false; MainMenu.GetBackToPlayMode(); } }