for some reason, my player object continues to move after the movement key is released. The velocity stays at the players movespeed until the key is released pressed and released again. while looking at console output of velX and velY i see something it toggling each frame from 8 to 16 after a few seconds of hold down. and occasionally after releasing the key the velocity will stay at 8 or -8 anyways.
//Player tick method
public void tick() {
//Dissalow Exceess Velocity
velX = Calculations.clamp(velX, -getMaxSpeed(), getMaxSpeed());
velY = Calculations.clamp(velY, -getMaxSpeed(), getMaxSpeed());
//move the player
x += velX;
y += velY;
//dissalow exiting room
x = Calculations.clamp(x, 0, Game.WIDTH - 32);
y = Calculations.clamp(y, 0, Game.HEIGHT - 32);
//check for collisions with objects
collision();
}
here is my Clamp method as used above (Calculations.clamp)
//clamp
public static int clamp(int var, int min, int max)
{
if(var >= max)
return var = max;
else if(var <= min)
return var = min;
else return var;
}
finally my Keyboard input method
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class KeyInput extends KeyAdapter
{
private Handler myHandler;
public KeyInput(Handler handler)
{
this.myHandler = handler;
}
public void keyPressed(KeyEvent e)
{
int key = e.getKeyCode();
for(GameObject object : myHandler.objects)
{
if(object.getId() == ID.player)
{
if(key == KeyEvent.VK_W) object.setVelY(object.getVelY() - object.getMaxSpeed());
if(key == KeyEvent.VK_S) object.setVelY(object.getVelY() + object.getMaxSpeed());
if(key == KeyEvent.VK_A) object.setVelX(object.getVelX() - object.getMaxSpeed());
if(key == KeyEvent.VK_D) object.setVelX(object.getVelX() + object.getMaxSpeed());
}
}
}
public void keyReleased(KeyEvent e)
{
int key = e.getKeyCode();
for(GameObject object : myHandler.objects)
{
if(object.getId() == ID.player)
{
if(key == KeyEvent.VK_W) object.setVelY(object.getVelY() + object.getMaxSpeed());
if(key == KeyEvent.VK_S) object.setVelY(object.getVelY() - object.getMaxSpeed());
if(key == KeyEvent.VK_A) object.setVelX(object.getVelX() + object.getMaxSpeed());
if(key == KeyEvent.VK_D) object.setVelX(object.getVelX() - object.getMaxSpeed());
}
}
}
}