Hallo Community,
ich hatte schonmal einen Thread dazu aufgemacht, welcher nun nicht mehr ausgegraben werden soll. Hier geht es um die Kollision auf einer Map.
Im nachfolgenden Quellcode seht ihr eine von mir bereits implementierte Version der Kollsion, welche nicht funktioniert. Habt ihr eine Idee wieso das nicht funktioniert?
ich hatte schonmal einen Thread dazu aufgemacht, welcher nun nicht mehr ausgegraben werden soll. Hier geht es um die Kollision auf einer Map.
Im nachfolgenden Quellcode seht ihr eine von mir bereits implementierte Version der Kollsion, welche nicht funktioniert. Habt ihr eine Idee wieso das nicht funktioniert?
Java:
private void move(long delta) throws Exception {
// if(!handler.isMenuKey()) {
// if(handler.isAKey())
// this.x -= getSpeed()*(delta/1e9)+1;
// if(handler.isDKey())
// this.x += getSpeed()*(delta/1e9)+1;
// if(handler.isWKey())
// this.y -= getSpeed()*(delta/1e9)+1;
// if(handler.isSKey())
// this.y += getSpeed()*(delta/1e9)+1;
// }
if(!handler.isMenuKey()) {
if(handler.isAKey())
tmpX = -1;
if(handler.isDKey())
tmpX = 1;
if(handler.isSKey())
tmpY = 1;
if(handler.isWKey())
tmpY = -1;
double newPosX = getX() + (tmpX * (getSpeed() * (delta/1e9)+1));
double newPosY = getY() + (tmpY * (getSpeed() * (delta/1e9)+1));
if(isMovable(newPosX, newPosY, tmpX, tmpY)) {
parent.setOffset(parent.getScreenWidth()/2 - newPosX, parent.getScreenHeight()/2 - newPosY);
this.x = newPosX;
this.y = newPosY;
}
tmpX = 0;
tmpY = 0;
}
}
private boolean isMovable(double px, double py, int factorX, int factorY) throws Exception {
if(factorX==1)
px += images[0].getWidth();
if(factorY==1)
py += images[0].getHeight();
if(px<0)
px=0;
if(py<0)
py=0;
if(px>(level.getWidth()*Tile.SIZE))
px=level.getWidth()*Tile.SIZE;
if(py>(level.getHeight()*Tile.SIZE))
py=level.getWidth()*Tile.SIZE;
//return true;
return level.getTile((int)px / Tile.SIZE,(int)py / Tile.SIZE).isMovable();
}