Exemplo n.º 1
0
 private void Update()
 {
     //TODO capter les controls dans l'update et appliquer leurs behaviors dans le fixed update
     if (!LevelManager.Instance.IsPaused && GameManager.Instance.currentState == GameManager.GameState.RunTime && !_isDead)
     {
         EnemyList.UpdateAreaAlpha(transform.position);
         axisXY = inputScript.PlayerInput(true);
         if (!movementState[BooleenStruct.WALLJUMPING] && !movementState[BooleenStruct.ISDASHING] && !_gettingHurt)
         {
             if (axisXY[X] != 0)
             {
                 if (!movementState[BooleenStruct.ISRUNNING] && _isGrounded && !jump && !_isWalled && !movementState[BooleenStruct.ISROLLING])
                 {
                     ResetBool(true, BooleenStruct.ISRUNNING);
                     Animation("run", movementState[BooleenStruct.ISRUNNING]);
                     ChangeJumpButtonSprite(0);
                 }
                 if ((axisXY[X] < 0 && transform.localScale.x > 0) || (axisXY[X] > 0 && transform.localScale.x < 0))
                 {
                     Flip();
                     if (movementState[BooleenStruct.ISJUMPING]) // FIX
                     {
                         _speed = inAirSpeed;                    // FIX
                     }
                 }
                 if (!_isWalled)
                 {
                     if (!inputScript.GetSprint)
                     {
                         Movement(Acceleration(axisXY[X]) * _speed + _convoyerBeltForce, rg.velocity.y);
                     }
                     else
                     {
                         Movement(Acceleration(axisXY[X] * _speed * _speedModifier) + _convoyerBeltForce, rg.velocity.y);
                     }
                 }
             }
             else
             {
                 if (_isGrounded && !movementState[BooleenStruct.ISIDLE] && !jump && !movementState[BooleenStruct.ISROLLING] && !cantJump)
                 {
                     SetToIdle();
                     ChangeJumpButtonSprite(0);
                 }
                 else if (movementState[BooleenStruct.ISJUMPING]) // FIX
                 {
                     _speed = inAirSpeed;                         // FIX
                 }
                 Movement(rg.velocity.x - (rg.velocity.x * Time.deltaTime), rg.velocity.y);
             }
         }
         else if (_gettingHurt)
         {
             Movement(afterHit.x, afterHit.y);
         }
         else if (movementState[BooleenStruct.WALLJUMPING])
         {
             PerformeWallFlip();
         }
         else
         {
             if (!_gettingHurt)
             {
                 Dash();
             }
         }
         if (axisXY[Y] > 0 && !movementState[BooleenStruct.ISDASHING] && !movementState[BooleenStruct.WALLJUMPING] && !cantJump)
         {
             if (!transform.GetChild(0).GetChild(0).gameObject.activeInHierarchy)
             {
                 ToggleColliders(false);
             }
             if (_isGrounded && !movementState[BooleenStruct.ISJUMPING] && !movementState[BooleenStruct.WALLJUMPING] && !jump)
             {
                 SetJump("jump", BooleenStruct.ISJUMPING, true, transform.position.y);
                 if (inEnemiesRange)
                 {
                     ChangeJumpButtonSprite(1);
                 }
             }
             else if (_isWalled && !jump && !movementState[BooleenStruct.ISROLLING])
             {
                 SetJump("wallJump", BooleenStruct.WALLJUMPING, true, transform.position.y);
                 Movement(rg.velocity.x, Jump());
                 if (animator.GetCurrentAnimatorStateInfo(animator.GetLayerIndex("Base Layer")).IsName("wall_jump"))
                 {
                     animator.Play("wall_jump", 0, 0);
                 }
                 originalXPos = transform.position.x;
                 WallFlip(transform.localScale.x * -1);
             }
             else if (inEnemiesRange && !movementState[BooleenStruct.ISDASHING] && !jump)
             {
                 RaycastHit2D hit;
                 _ennemyPos = ennemyObj.transform.position;
                 if (!DashAttemp(ennemyObj, out hit))
                 {
                     return;
                 }
                 SetJump("jumpAttack", BooleenStruct.ISDASHING, true, transform.position.y);
                 Normalized();
                 GetAngle();
                 if (_dashTarget.x < 0)
                 {
                     transform.localScale = new Vector2(-1, 1);
                 }
             }
             if (jump && !movementState[BooleenStruct.WALLJUMPING])
             {
                 if (transform.position.y - _playerHeight < _maxJumpHeight && rg.velocity.y >= 0)
                 {
                     Movement(rg.velocity.x, Jump());
                 }
             }
         }
         else if (axisXY[Y] < 0 && !roll)
         {
             Roll(true);
         }
         else if (axisXY[Y] == 0)
         {
             jump = false;
             roll = false;
         }
         if (!RuntimeUI.GetStartTimer)
         {
             if (axisXY[0] != 0 || axisXY[1] != 0)
             {
                 RuntimeUI.GetStartTimer = true;
             }
         }
     }
     else if (GameManager.Instance.currentState == GameManager.GameState.LevelEditor)
     {
         if (_refreshPlayer)
         {
             _refreshPlayer = false;
         }
     }
 }