I have tried to figure this out for like 6 hours now… I can’t figure out why it causes a jump when I switch directions.
public void doMovement(long now) {
move_north = false;
move_south = false;
move_east = false;
move_west = false;
if(keys[KeyEvent.VK_UP] == 1 && keys[KeyEvent.VK_DOWN] == 0) {
move_north = true;
moving_south = false;
}
if(keys[KeyEvent.VK_DOWN] == 1 && keys[KeyEvent.VK_UP] == 0) {
move_south = true;
moving_north = false;
}
if(keys[KeyEvent.VK_LEFT] == 1 && keys[KeyEvent.VK_RIGHT] == 0) {
move_west = true;
moving_east = false;
}
if(keys[KeyEvent.VK_RIGHT] == 1 && keys[KeyEvent.VK_LEFT] == 0) {
move_east = true;
moving_west = false;
}
if(move_north && !moving_north) {
if(player.move(player.x, player.y + 1, player.z)) {
moving_north = true;
offsety = -32;
}
}
if(move_south && !moving_south) {
if(player.move(player.x, player.y - 1, player.z)) {
moving_south = true;
offsety = 32;
}
}
if(move_west && !moving_west) {
if(player.move(player.x -1, player.y, player.z)) {
moving_west = true;
offsetx = -32;
}
}
if(move_east && !moving_east) {
if(player.move(player.x + 1, player.y, player.z)) {
moving_east = true;
offsetx = 32;
}
}
if(now > offset_timer) {
offset_timer = now + offset_timer_length;
if(offsetx < 0) offsetx ++;
if(offsetx > 0) offsetx --;
if(offsety < 0) offsety ++;
if(offsety > 0) offsety --;
}
if(offsetx == 0) {
moving_east = false;
moving_west = false;
}
if(offsety == 0) {
moving_north = false;
moving_south = false;
}
}