private bool HandleJumpEvent() { if (!JumpDragging) { return(false); } if (!_jumper.CanJump()) { if (_jumper.TrajectoryInUse()) { _jumper.CancelJump(); } return(false); } if (DashStart) { HandleTrajectoryInit <ChargeTrajectory>(); _jumpDragInitialized = false; _dashInitialized = true; } else if (!Dashing && !_jumpDragInitialized) { HandleTrajectoryInit <ClassicTrajectory>(); _dashInitialized = false; _jumpDragInitialized = true; } _jumper.Trajectory.DrawTrajectory(_hero.Transform.position, _joystick2.Direction); return(true); }
void FixedUpdate() { //caching the horizontal input float _h; //assign value based on left or right input if (CustomInput.Left) { _h = -1f; } else if (CustomInput.Right) { _h = 1f; } else { _h = 0f; } // If the player is changing direction (h has a different sign to velocity.x) or hasn't reached maxSpeed yet... if (_h * rigidbody2D.velocity.x < _maxSpeed) { //account for air control if (_jumper.CanJump()) { rigidbody2D.AddForce(Vector2.right * _h * _moveForce); } else { rigidbody2D.AddForce(Vector2.right * _h * _moveForce * _airControl); } } // If the player's horizontal velocity is greater than the maxSpeed... if (Mathf.Abs(rigidbody2D.velocity.x) > _maxSpeed) { // ... set the player's velocity to the maxSpeed in the x axis. rigidbody2D.velocity = new Vector2(Mathf.Sign(rigidbody2D.velocity.x) * _maxSpeed, rigidbody2D.velocity.y); } //flippng based on direction and movement if (_h > 0 && !_facingRight) { Flip(); } else if (_h < 0 && _facingRight) { Flip(); } //if jump was pressed if (_jump) { //and player can jump if (_jumper.CanJump()) { //add upward force rigidbody2D.AddForce(new Vector2(0f, _jumper.Force), ForceMode2D.Impulse); } _jump = false; } }