private void OnTriggerExit(Collider other) { if (other.GetComponent <Rigidbody>() != null && other.GetComponent <Player>()) { PlayerController playerController = other.GetComponent <PlayerController>(); if (other.transform.GetChild((int)PlayerChildren.BubbleParticles).GetComponent <ParticleSystem>()) { // SEB C'est pour toi other.transform.GetChild((int)PlayerChildren.BubbleParticles).GetComponent <ParticleSystem>().Stop(); } if (waterResistance != 0) { // TODO : Need a contains buff ? playerController.stats.RemoveBuff(movestatbuff); playerController.stats.RemoveBuff(dashstatbuff); playerController.stats.RemoveBuff(jumpstatbuff); } WaterImmersionCamera waterImmersionCamera = other.GetComponent <Player>().cameraReference.transform.GetChild(0).GetComponent <WaterImmersionCamera>(); if (waterImmersionCamera) { waterImmersionCamera.isImmerge = false; } playerController.isGravityEnabled = true; playerController.IsUnderWater = false; } }
private void OnTriggerStay(Collider other) { if (waterComponentEntered != null) { float forceFactor = 1f - transform.position.y + waterLevel; playerController.jumpState.nbJumpMade = 0; if (transform.position.y > waterLevel - waterTolerance) { playerController.isGravityEnabled = true; } // Sous l'eau else { if (transform.position.y < waterLevel - 2 * waterTolerance) { playerController.isGravityEnabled = false; if (forceFactor > 0f) { Vector3 uplift = ((forceFactor - rb.velocity.y * modulateWaterForceFactor)) * Vector3.up * waterUpliftStrength; rb.AddForceAtPosition(uplift, transform.position); } } } if (PlayerComponent.cameraReference) { WaterImmersionCamera waterImmersionCamera = PlayerComponent.cameraReference.transform.GetChild(0).GetComponent <WaterImmersionCamera>(); if (waterImmersionCamera) { if (PlayerComponent.cameraReference.transform.GetChild(0).position.y < waterLevel + 0.8f) { waterImmersionCamera.isImmerge = true; } else { waterImmersionCamera.isImmerge = false; } } } } }