/// <summary> /// est-ce qu'on peut bouger droite / gauche ? /// </summary> /// <returns></returns> private bool CanMove() { /*//si on ne bouge pas les input, ne rien faire * if (playerInput.Horiz == 0 && playerInput.Verti == 0) * return (false); */ //si on a juste sauté, ne rien faire if (!worldCollision.CoolDownGroundedJump.IsReady() || !worldCollision.CoolDownGrounded.IsReady()) { return(false); } if (playerPenduleMove.IsAirTense) { return(false); } //ne pas bouger quand on est gripped if (grip.Gripped) { return(false); } //si on est en l'air, et pas sur un objet exeption, ne rien faire (pour l'instant !!) if (!worldCollision.IsGroundedSafe()) { //ici on est peut être pas grounded, mais on peut être sur ExeptionPlayer ?? if (!worldCollision.IsGroundeExeptionSafe()) { //ici on est en l'air //Debug.Log("ici on est en l'air, ne rien faire"); playerAirMove.TryToMove(); return(false); } else { //Debug.Log("ici on peut bouger ????? on est su rle player..."); return(false); //ici on est en collision avec un player ? OK } } if (worldCollision.GetSimpleCollisionSafe() == CollisionSimple.Ceilling) { return(false); } /* * //on est au sol, on bouge les inputs et les coolDown JUMP & MOVE sont OP ! * Collider coll; * if (!worldCollision.PlatformManager.IsWalkable(out coll)) * return (false); */ return(true); }
/// <summary> /// renvoi vrai ou faux si on a le droit de sauter (selon le hold) /// </summary> /// <returns></returns> public bool CanGrip(bool setupPoint = true) { //faux si le cooldown n'est pas fini, ou qu'on est pas grounded if (!coolDownGrip.IsReady() || !worldCollision.IsGroundedSafe()) { return(false); } Collider coll; if (worldCollision.PlatformManager.IsGrippable(out coll)) { if (!setupPoint) { return(true); } // The distance from the explosion position to the surface of the collider. //Collider coll = objectToAggrip.GetComponent<Collider>(); pointAttract = coll.ClosestPointOnBounds(transform.position); DebugExtension.DebugWireSphere(pointAttract, 1, 1); return(true); } return(false); }
private bool IsInAir() { bool inAir = !worldCollision.IsGroundedSafe(); if (!inAir && !playerGrip.Gripped) //si on est pas en l'air, ni gripped... { //faire un extra check: si on est sur un wall/ceilling, //être toujours considéré comme en l'air ! bool onFloor = worldCollision.IsOnFloor() || worldCollision.IsOnCoinGround(); if (!onFloor) { inAir = true; } else { inAir = false; } } if (playerMove.CanMoveOnPlayer(false)) { inAir = false; } return(inAir); }
/// <summary> /// ici tente de jumper /// </summary> public void TryToJump() { if (!playerJump.CanJump()) { return; } //grip.ResetGrip(); if (!worldCollision.IsGroundedSafe() && !worldCollision.IsGroundeExeptionSafe()) { //Debug.Log("ici jump double"); AirJump(); } else { /*if (worldCollision.IsGroundeExeptionSafe() && playerManager.AreBothNotGrounded()) * { * Debug.Log("si les 2 joueurs sont en l'air, ne pas sauter !"); * return; * }*/ //Debug.Log("ici jump sumple"); SimpleJump(); } }
/// <summary> /// renvoi vrai ou faux si on a le droit de sauter /// </summary> /// <returns></returns> public bool CanJump() { //on touche pas à la touche saut if (!playerInput.JumpInput) { return(false); } //faux si on hold pas et quand a pas laché if (jumpStop && (!stayHold || (stayHold && playerInput.GripInput && ScoreManager.Instance.Data.GetSimplified()))) { return(false); } if (playerInput.GripInput && ScoreManager.Instance.Data.GetSimplified()) { return(false); } //faux si le cooldown n'est pas fini if (!coolDownJump.IsReady()) { return(false); } if (!worldCollision.IsGroundedSafe() && worldCollision.IsGroundeExeptionSafe() && playerManager.AreBothNotGrounded()) { Debug.Log("si les 2 joueurs sont en l'air, ne pas sauter !"); return(false); } if (!allowWallJump && !worldCollision.IsOnFloor()) { return(false); } //ici on est ok pour sauter (tester si onground pour jump ou double jump ou rien) Collider coll; if (!worldCollision.PlatformManager.IsJumpable(out coll)) { return(false); } return(true); }
/// <summary> /// peut on modifier en up / down ? /// </summary> /// <returns></returns> private bool CanModifyUpDown() { //si on n'appuis sur rien if (playerInput.Horiz == 0 && playerInput.Verti == 0) { return(false); } //si on est pas grounded... NE PAS AUTORISER if (!worldCollision.IsGroundedSafe() /* && timeWhenWeCanModifyRope.IsReady()*/) { if (!timeWhenWeCanModifyRope.IsReady()) { Debug.Log("ici on peut encore modifier, alors qu'on est en l'air"); } else { return(false); } } if (worldCollision.IsGroundedSafe() && worldCollision.IsOnFloor() /* && timeWhenWeCanModifyRope.IsReady()*/) { return(false); } //ici on peut modifier en temps normal... maintenant test la tension, et l'angle de l'input if (!ropeHandler.IsTenseForAirMove && timeWhenWeCanModifyRope.IsReady()) { return(false); } //ne pas changé si on est grippé if (playerGrip.Gripped) { return(false); } //si l'autre n'est pas grippé, ne rien faire if (!playerManager.IsOtherIsGripped(playerController.IdPlayer)) { return(false); } //ici les conditions sont bonnes ! return(true); }
/// <summary> /// ici l'autre player à jumpé, on trigger SetupFlyINgMode pour le prochain appel Grounded /// </summary> /// <param name="jump">on vient de jumper, ou on viens d'atterir ?</param> public void OtherPlayerHasJumped() { //Debug.Log("set la mass en fly"); //Debug.Log("ici, player " + playerController.IdPlayer + ", test de setup OU reset"); //si on est grounded, alors on set la mass en petit ! if (worldCollision.IsGroundedSafe()) { //Debug.Log("ici set rb little"); rb.mass = massLittleWhenOtherJump; //coolDownOtherHasJumpWaitForGrounded.StartCoolDown(); isFlyingBecauseOtherHasJump = true; //Debug.Log("setup mass 1"); coolDownOtherHasJumpWaitForGrounded.StartCoolDown(); } //si on est pas grounded, garder la mass en reset else if (coolDownOtherHasJumpWaitForGrounded.IsReady()) { //Debug.Log("reset mass 10"); ResetPlayerHasJump(); } }
/// <summary> /// est-ce qu'on peut bouger droite / gauche ? /// </summary> /// <returns></returns> private bool CanMove() { //si on ne bouge pas les input, ne rien faire if (PlayerInputScript.Horiz == 0 && PlayerInputScript.Verti == 0) { return(false); } //si on est dessous, ne pas activer le airMove if (!playerManager.IsUnderOtherPlayer(playerController.IdPlayer, 0.5f) && !playerManager.IsOtherIsGripped(playerController.IdPlayer) && stopWhenHoriz) { return(false); } //si on a juste sauté, ne rien faire if (!worldCollision.CoolDownGroundedJump.IsReady() || !worldCollision.CoolDownGrounded.IsReady()) { return(false); } //si la rope n'est pas assez tendu pour le air move if (!ropeHandler.IsTenseForAirMove) { return(false); } //ne pas bouger quand on est gripped if (grip.Gripped) { return(false); } if (!CheckDistanceAndNumberParticle()) { return(false); } //si on est en auto AirMove... ne rien faire ! if (playerControlledAirJump.InAutoAirMove) { return(false); } //si on est en l'air, et pas sur un objet exeption... ok pendule if (!worldCollision.IsGroundedSafe()) { //ici on est peut être pas grounded, mais on peut être sur ExeptionPlayer ?? if (!worldCollision.IsGroundeExeptionSafe()) { return(true); } else { //ici on est en collision avec un player ? OK } } //ici on est grounded ? //ici on est au sol, accepté quand même si le cooldown n'est pas fini if (!coolDownStilAccrocheABitWhenEndTense.IsReady()) { //ici on est sur le ground, MAIS le cooldown n'est pas fini ! return(true); } //on est au sol, on bouge les inputs et les coolDown JUMP & MOVE sont OP ! return(false); }