public void addPush() { if (!checkPush) { speedX = sideMove ? (speedMoveX * 1) : (speedMoveX * -1); speedY = raycastDistance.getHitFloor() ? speedY : 0; checkPush = true; } }
void Update() { float _input = Input.GetAxis("Horizontal"); Vector3 _movement = Vector3.zero; // if the player is not dead if (stateControl.getCurrentState() != PlayerState.Dead && stateControl.getCurrentState() != PlayerState.DeadFloor) { // Apply movement from move joystick if (_input > 0) { if (!stateControl.isBlowRunAnimation()) { _movement += Vector3.right * this.forwardSpeed * 1; if (raycastDistance.getHitFloor()) { transform.rotation = new Quaternion(transform.rotation.x, 0.0f, transform.rotation.z, transform.rotation.w); this.stateControl.setState(PlayerState.Running); } } } if (_input < 0) { if (!stateControl.isBlowRunAnimation()) { _movement += Vector3.right * this.backwardSpeed * -1; if (raycastDistance.getHitFloor()) { transform.rotation = new Quaternion(transform.rotation.x, 180.0f, transform.rotation.z, transform.rotation.w); this.stateControl.setState(PlayerState.Running); } } } if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Joystick1Button3)) { if (raycastDistance.getHitFloor()) { controllerHitSequence.addComboHit(); } else { this.jumpingAttackPending = true; } } if (jumpingAttackPending) { if (!stateControl.isJumpingRunning()) { this.stateControl.setState(PlayerState.JumpAttacking); this.jumpingAttackPending = false; } } // Check for jump if (character.isGrounded) { // Remove any persistent velocity after landing and back hitHead to false, stop jumping and jumpingQuantity this.velocity = Vector3.zero; this.hitHead = false; this.jumping = false; this.jumpQuantity = 0; if (_movement == Vector3.zero && !stateControl.isBlowRunning()) { this.stateControl.setState(PlayerState.Idle); } } else { // Apply gravity to our velocity to diminish it over time this.velocity.y += (Physics.gravity.y - this.mass) * Time.deltaTime; if (directionY > 0) { if (jumpQuantity > 1) { this.stateControl.setState(PlayerState.DobleJumping); } else { this.stateControl.setState(PlayerState.Jumping); } } else { if (jumping) { if (!stateControl.isBlowRunning()) { this.stateControl.setState(PlayerState.Falling); } } else { RaycastHit _ray; if (Physics.Raycast(transform.position, Vector3.down, out _ray, rayDistance)) { _movement.x += _movement.x * downVelocity; } else { this.stateControl.setState(PlayerState.Falling); } } } // Adjust additional movement while in-air _movement.x *= this.inAirMultiplier; } if (Input.GetKeyDown(KeyCode.Space) && ((jumpQuantity < jumpQuantityMaximum) && ((Time.time - lastJumpTime) > timeBetweenJumps)) && !stateControl.isBlowRunning() || Input.GetKeyDown(KeyCode.Joystick1Button2) && ((jumpQuantity < jumpQuantityMaximum) && ((Time.time - lastJumpTime) > timeBetweenJumps)) && !stateControl.isBlowRunning()) { this.speedSlip = 2.0f; this.jumping = true; this.lastJumpTime = Time.time; // Apply the current movement to launch velocity this.velocity = this.character.velocity; this.velocity.y = this.jumpSpeed; this.jumpQuantity++; } #region Moving To Slide if (_input != 0 && this.onIce) { this.isMoveSlipping = true; this.speedSlip = 2.0f; } if (speedSlip <= 0) { this.isMoveSlipping = false; this.onIce = false; this.speedSlip = 2.0f; } #endregion } //If a player is killed he had executed his move and call up the defeat else { if (stateControl.isBlowRunning()) { velocity.y = 0; // Caso esteja pulando e morrer ele perde sua velocidade para cair _movement = transform.rotation.y == 0 ? _movement = new Vector3(1 * -10, 0, 0) : _movement = new Vector3(1 * 10, 0, 0); } else { if (stateControl.getCurrentState() == PlayerState.Dead) { stateControl.setState(PlayerState.DeadFloor); } } } if (_input == 0 && this.isMoveSlipping && this.onIce) { if (this.stateControl.getCurrentState() != PlayerState.Attacking && this.stateControl.getCurrentState() != PlayerState.Running && this.stateControl.getCurrentState() != PlayerState.Idle && this.stateControl.getCurrentState() != PlayerState.Jumping && this.stateControl.getCurrentState() != PlayerState.Falling) { this.stateControl.setState(PlayerState.Idle); } _movement += new Vector3((transform.rotation.y == 0 ? speedSlip * Time.deltaTime * 500 : -speedSlip * Time.deltaTime * 500), 0, 0); this.speedSlip -= Time.deltaTime; } _movement += new Vector3(this.velocity.x / 2, this.velocity.y, this.velocity.z); _movement += Physics.gravity; _movement *= Time.deltaTime; this.directionY = _movement.y; // Actually move the character CollisionFlags _collisionFlags = this.character.Move(_movement); transform.position = new Vector3(transform.position.x, transform.position.y, this.positionZ); if (_collisionFlags == CollisionFlags.CollidedAbove && !hitHead) { this.velocity.y = -Physics.gravity.y; this.hitHead = true; } }
void Update() { Vector3 _movement = Vector3.zero; // if the player is not dead if (stateControl.getCurrentState() != PlayerState.Dead && stateControl.getCurrentState() != PlayerState.DeadFloor) { // Apply movement from move joystick if (moveTouchPad.isMoveTouchPadRight()) { if (TutorialBehaviour.IndexTutorial == 0) { TutorialBehaviour.ActiveTutorial = true; } if (!stateControl.isBlowRunning()) { _movement += Vector3.right * this.forwardSpeed; if (raycastDistance.getHitFloor()) { transform.rotation = new Quaternion(transform.rotation.x, 0.0f, transform.rotation.z, transform.rotation.w); this.stateControl.setState(PlayerState.Running); } } } if (moveTouchPad.isMoveTouchPadLeft()) { if (TutorialBehaviour.IndexTutorial == 0) { TutorialBehaviour.ActiveTutorial = true; } if (!stateControl.isBlowRunning()) { _movement += Vector3.right * -this.backwardSpeed; if (raycastDistance.getHitFloor()) { transform.rotation = new Quaternion(transform.rotation.x, 180.0f, transform.rotation.z, transform.rotation.w); this.stateControl.setState(PlayerState.Running); } } } if (otherTouchPad.isAttackTouch()) { otherTouchPad.setAttackTouch(false); if (TutorialBehaviour.IndexTutorial == 3) { TutorialBehaviour.ActiveTutorial = true; } if (raycastDistance.getHitFloor()) { controllerHitSequence.addComboHit(); } else { this.jumpingAttackPending = true; } } if (jumpingAttackPending) { if (!stateControl.isJumpingRunning()) { SoundJumba _sound = GetComponent <SoundJumba>(); _sound.startSoundJump(golpePulo); this.stateControl.setState(PlayerState.JumpAttacking); this.jumpingAttackPending = false; } } if (character.isGrounded) { // Remove any persistent velocity after landing and back hitHead to false, stop jumping and jumpingQuantity this.velocity = Vector3.zero; this.hitHead = false; this.jumping = false; this.jumpQuantity = 0; if (_movement == Vector3.zero && !stateControl.isBlowRunning()) { this.stateControl.setState(PlayerState.Idle); } } else { // Apply gravity to our velocity to diminish it over time this.velocity.y += (Physics.gravity.y - this.mass) * Time.deltaTime; if (directionY > 0) { if (jumpQuantity > 1) { this.stateControl.setState(PlayerState.DobleJumping); } else { this.stateControl.setState(PlayerState.Jumping); } } else { if (jumping) { if (!stateControl.isBlowRunning()) { this.stateControl.setState(PlayerState.Falling); } } else { RaycastHit _ray; if (Physics.Raycast(transform.position, Vector3.down, out _ray, rayDistance)) { _movement.x += _movement.x * downVelocity; } else { this.stateControl.setState(PlayerState.Falling); } } } // Adjust additional movement while in-air _movement.x *= this.inAirMultiplier; } if (otherTouchPad.isJumpTouch() && ((jumpQuantity < jumpQuantityMaximum) && ((Time.time - lastJumpTime) > timeBetweenJumps)) && !stateControl.isBlowRunning()) { this.speedSlip = 4.0f; if (TutorialBehaviour.IndexTutorial == 2 || TutorialBehaviour.IndexTutorial == 1) { TutorialBehaviour.ActiveTutorial = true; } this.jumping = true; this.lastJumpTime = Time.time; // Apply the current movement to launch velocity this.velocity = this.character.velocity; this.velocity.y = this.jumpSpeed; SoundJumba _sound = GetComponent <SoundJumba>(); _sound.startSound(jumpQuantity); this.otherTouchPad.setJumpTouch(false); this.jumpQuantity++; } #region Moving To Slide if ((moveTouchPad.isMoveTouchPadLeft() && !this.isMoveSlipping && this.onIce) || (moveTouchPad.isMoveTouchPadRight() && !this.isMoveSlipping && this.onIce)) { this.isMoveSlipping = true; this.speedSlip = 4.0f; } if (speedSlip <= 0) { this.isMoveSlipping = false; this.onIce = false; this.speedSlip = 4.0f; } #endregion // Check for jump } //If a player is killed he had executed his move and call up the defeat else { if (ControllerLifePlayer.sharedLife().getLifePlayer() <= 0) { if (stateControl.isBlowRunning() && character.isGrounded) { velocity.y = 0; // Caso esteja pulando e morrer ele perde sua velocidade para cair _movement = transform.rotation.y == 0 ? _movement = new Vector3(1 * -10, 0, 0) : _movement = new Vector3(1 * 10, 0, 0); } else { if (stateControl.getCurrentState() == PlayerState.Dead && !stateControl.getAnimation().IsPlaying("morrendo")) { stateControl.setState(PlayerState.DeadFloor); } } } } if (!moveTouchPad.isMoveTouchPadLeft() && !moveTouchPad.isMoveTouchPadRight() && this.isMoveSlipping && this.onIce) { if (this.stateControl.getCurrentState() != PlayerState.Attacking && this.stateControl.getCurrentState() != PlayerState.Running && this.stateControl.getCurrentState() != PlayerState.Idle && this.stateControl.getCurrentState() != PlayerState.Jumping && this.stateControl.getCurrentState() != PlayerState.Falling) { this.stateControl.setState(PlayerState.Idle); } _movement += new Vector3((transform.rotation.y == 0 ? speedSlip * Time.deltaTime * 200 : -speedSlip * Time.deltaTime * 200), 0, 0); this.speedSlip -= Time.deltaTime; } _movement += new Vector3(this.velocity.x / 2, this.velocity.y, this.velocity.z); _movement += Physics.gravity; _movement *= Time.deltaTime; this.directionY = _movement.y; // Actually move the character CollisionFlags _collisionFlags = this.character.Move(_movement); transform.position = new Vector3(transform.position.x, transform.position.y, this.positionZ); if (_collisionFlags == CollisionFlags.CollidedAbove && !hitHead) { this.velocity.y = -Physics.gravity.y; this.hitHead = true; } }