public IHeroState HandleInput(Hero hero, InputManager input, CollisionManager collision, GravityManager grav) { fallDir = grav.GetGravityVector2(); airControlDir = grav.GravCorrectWorldToLocalInput(input.horizontalInput, input.verticalInput); fallHorizontalRight = collision.transformRight; if (collision.onGround) { return(gameObject.GetComponent <IdleState>()); } if (collision.transformUp.x == 0) { fallHorizontalDir = input.horizontalInput; } else if (collision.transformUp.x == 1) { fallHorizontalDir = -input.verticalInput; } else if (collision.transformUp.x == -1) { fallHorizontalDir = input.verticalInput; } if ((collision.onRightWall && fallHorizontalDir > 0) || collision.onLeftWall && fallHorizontalDir < 0) { fallHorizontalDir = 0; } return(null); }
public override IHeroState HandleInput(Hero hero, InputManager input, CollisionManager collision, GravityManager grav) { walkDir = grav.GravCorrectWorldToLocalInput(input.horizontalInput, input.verticalInput); FlipSprite(grav); if (input.jumpInput == 1) { return(base.HandleInput(hero, input, collision, grav)); } walkRight = collision.transformRight; if (collision.onGround) { // make input global instead of relative to player local if (collision.transformUp.y == 1) { walkHorizontalDir = input.horizontalInput; } else if (collision.transformUp.y == -1) { walkHorizontalDir = -input.horizontalInput; } else if (collision.transformUp.x == 1) { walkHorizontalDir = -input.verticalInput; } else if (collision.transformUp.x == -1) { walkHorizontalDir = input.verticalInput; } if (collision.onRightWall && collision.onGround && walkHorizontalDir > 0) { return(base.HandleInput(hero, input, collision, grav)); } if (collision.onLeftWall && collision.onGround && walkHorizontalDir < 0) { return(base.HandleInput(hero, input, collision, grav)); } if (walkHorizontalDir == 0) { return(gameObject.GetComponent <IdleState>()); } return(base.HandleInput(hero, input, collision, grav)); } else { return(base.HandleInput(hero, input, collision, grav)); } return(null); }