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; } } }