Hello, I have it so that when the user presses one of the arrow keys, the animation will play, but the character does not move. It just stays in place.
const int MAX_WIDTH = 1024;
const int MAX_HEIGHT = 720;
gPlayer.XPos = MAX_WIDTH / 2;
gPlayer.YPos = MAX_HEIGHT / 2;
gPlayer.XVel = 0.010f;
gPlayer.YVel = 0.010f;
gPlayer.CurrentFrame = 0;
gPlayer.CurrentState = gPlayer.IDLE;
gPlayer.Facing = gPlayer.DOWN;
for(int i = 0; i <= 8; i++)
{
gPlayer.LeftRect[i].x = gPlayer.XPos;
gPlayer.LeftRect[i].y = gPlayer.YPos;
gPlayer.LeftRect[i].w = gPlayer.Width;
gPlayer.LeftRect[i].h = gPlayer.Height;
}
if(event.type == SDL_KEYDOWN)
{
if(event.key.keysym.sym == SDLK_ESCAPE)
{
GameRunning = false;
}
if(event.key.keysym.sym == SDLK_UP)
{
gPlayer.Facing = gPlayer.UP;
gPlayer.CurrentState = gPlayer.WALK_UP;
}
else if(event.key.keysym.sym == SDLK_DOWN)
{
gPlayer.Facing = gPlayer.DOWN;
gPlayer.CurrentState = gPlayer.WALK_DOWN;
}
else if(event.key.keysym.sym == SDLK_LEFT)
{
gPlayer.Facing = gPlayer.LEFT;
gPlayer.CurrentState = gPlayer.WALK_LEFT;
}
else if(event.key.keysym.sym == SDLK_RIGHT)
{
gPlayer.Facing = gPlayer.RIGHT;
gPlayer.CurrentState = gPlayer.WALK_RIGHT;
}
}
if(event.type == SDL_KEYUP)
{
if(event.key.keysym.sym == SDLK_UP)
{
gPlayer.CurrentState = gPlayer.IDLE;
gPlayer.Facing = gPlayer.UP;
gPlayer.YVel = 0.0f;
}
else if(event.key.keysym.sym == SDLK_DOWN)
{
gPlayer.CurrentState = gPlayer.IDLE;
gPlayer.Facing = gPlayer.DOWN;
gPlayer.YVel = 0.0f;
}
else if(event.key.keysym.sym == SDLK_LEFT)
{
gPlayer.CurrentState = gPlayer.IDLE;
gPlayer.Facing = gPlayer.LEFT;
gPlayer.XVel = 0.0f;
}
else if(event.key.keysym.sym == SDLK_RIGHT)
{
gPlayer.CurrentState = gPlayer.IDLE;
gPlayer.Facing = gPlayer.RIGHT;
gPlayer.XVel = 0.0f;
}
if(gPlayer.CurrentState == gPlayer.WALK_LEFT)
{
gPlayer.XPos -= gPlayer.XVel * DeltaTime;
gPlayer.LeftRect[gPlayer.CurrentFrame % 8].x = gPlayer.XPos;
gPlayer.XPos = gPlayer.XPos;
}
if(gPlayer.CurrentState == gPlayer.WALK_RIGHT)
{
gPlayer.XPos += gPlayer.XVel * DeltaTime;
gPlayer.LeftRect[gPlayer.CurrentFrame % 8].x = gPlayer.XPos;
gPlayer.XPos = gPlayer.XPos;
}
if(gPlayer.CurrentState == gPlayer.WALK_LEFT)
{
SDL_RenderCopy(GameRend,gPlayer.LeftTex[gPlayer.CurrentFrame % 8],NULL,&gPlayer.LeftRect[gPlayer.CurrentFrame % 8]);
}
if(gPlayer.CurrentState == gPlayer.WALK_RIGHT)
{
SDL_RenderCopyEx(GameRend,gPlayer.LeftTex[gPlayer.CurrentFrame % 8],NULL,&gPlayer.LeftRect[gPlayer.CurrentFrame % 8],NULL,NULL,SDL_FLIP_HORIZONTAL);
}
I have posted the code that may be needed. I just am not sure why it would stay in place. I have looked over the code and looked at some tutorials, but I can't figure out why it is just staying in place.