Hi, I am in the middle of working on a game right now utilizing the DirectX9 library. I am working on my player first and was doing good with the button presses until I switch over to using an enum called player_state to track all my players actions and enum DIRECTIONS to track if player is facing RIGHT or LEFT. Values in the enum player_state were STANDING = 0, STANDING_FIRE = 1, RUNNING = 2, RUNNING_FIRE = 3, JUMPING, JUMPING_FIRE, FALLING, and FALLING_FIRE (etc with their = values)
So originally I was using a couple of bools to track the states like bool player_jumping, player_falling.
I wrote my player jumping like
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
if (button pressed to jump)
{
if (player_jumping == false) //no double jumping
player_jumping == true
player y velocity is set in here to ensure they have force to jump
if (player_jumping == true)
player y velocity -= GRAVITY
player y += y velocity
if (player hits ground)
player_jumping = false
player_falling = false
}//end player jump when button is pressed
if (the jump button is not pressed but player_jumping == true)
{
player_falling = true
continue with the vely -= GRAVITY and player y += vely
if player hits ground both jumping and falling = false
}//end falling
|
but when I went to using player states and tried to do
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
if (button pressed to jump)
{
if (player_state != JUMPING) //no double jumping
player_state = JUMPING
player y velocity is set in here to ensure they have force to jump
if (player_state == JUMPING)
player y velocity -= GRAVITY
player y += y velocity
if (player hits ground)
player_state = STANDING
}//end player jump when button is pressed
if (the jump button is not pressed and (player_state == JUMPING || player_state == FALLING))
//jumping and falling because state will be changed to falling inside this "function"
{
player_state = FALLING
continue with the vely -= GRAVITY and player y += vely
if player hits player_state = STANDING
}//end falling
|
but some problems that occured with using the enum STATES was that while jumping, if I pressed right or left, the player would move all the way to the top of the screen and stay there until I was only pressing the jump button. If I was only pressing the jump button, the player would jump like he was supposed to , but if I released the jump key, the player would not continue his fall back down like supposed to. So the jump was only working if I continuously held the button.
I did go back through and check to make sure that nothing like y values or vely were associated with the right or left key presses. Nothing.
So my problem is that I cannot get the player to jump and fall correctly using the player_state JUMPING and FALLING. After I get these to work correctly, I think it will be easy to add firing while jumping and falling.
and when I was drawing it would look something like
if (player_state == JUMPING)
if (player_direction == RIGHT)
draw right
else if (player_direction == LEFT)
draw left
same thing for all the states because they can only be in one state at a time.
Thanks for all your help in advance!!