Example #1
0
    void HandleJumping()
    {
        if (IsGrounded && input.JumpDown && !IsJumping)
        {
            velocity.y    = jupmForce;
            jupmTimeCount = jumpTime;

            RaycastHit2D hit = Physics2D.Raycast((Vector2)transform.position, Vector2.down, 2f, groundLayer);
            SpriteSheetParticleController.SpawnParticle(ParticleType.Jump, (Vector3)hit.point);
        }
        else if (IsWallGripping && input.JumpDown && !IsJumping)
        {
            LooseGrip();
            velocity.x         = -grippingDirection * maxSpeed * wallJumpSpeed;
            velocity.y         = jupmForce * wallJumpForce;
            jupmTimeCount      = jumpTime;
            keepDirectionCount = wallJumpTime;
            keepDirection      = -grippingDirection;

            RaycastHit2D hit = Physics2D.Raycast((Vector2)transform.position, grippingDirection == 1? Vector2.right: Vector2.left, 2f, groundLayer);
            SpriteSheetParticleController.SpawnParticle(ParticleType.WallJump, (Vector3)hit.point, keepDirection);
        }
        else if (input.Jump && IsJumping)
        {
            if (jupmTimeCount > 0)
            {
                jupmTimeCount -= Time.deltaTime;
                velocity.y     = jupmForce;
            }
        }
        else if (input.JumpUp && IsJumping)
        {
            jupmTimeCount = 0;
        }
    }