added collision
This commit is contained in:
@@ -2,6 +2,7 @@ package de.miaurizius.jgame2d.entity;
|
||||
|
||||
import de.miaurizius.jgame2d.core.Direction;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
public class Entity {
|
||||
@@ -15,4 +16,7 @@ public class Entity {
|
||||
public int spriteCounter = 0;
|
||||
public int spriteNum = 1;
|
||||
|
||||
public Rectangle solidArea;
|
||||
public boolean collisionOn = false;
|
||||
|
||||
}
|
||||
|
||||
@@ -20,8 +20,16 @@ public class Player extends Entity {
|
||||
public Player(GamePanel panel, KeyHandler keyH) {
|
||||
this.panel = panel;
|
||||
this.keyH = keyH;
|
||||
|
||||
screenX = panel.screenWidth/2 - panel.tileSize/2;
|
||||
screenY = panel.screenHeight/2 - panel.tileSize/2;
|
||||
|
||||
solidArea = new Rectangle();
|
||||
solidArea.x = 9;
|
||||
solidArea.y = 18;
|
||||
solidArea.width = 32;
|
||||
solidArea.height = 32;
|
||||
|
||||
setDefaultValues();
|
||||
getPlayerImage();
|
||||
}
|
||||
@@ -51,18 +59,22 @@ public class Player extends Entity {
|
||||
public void update() {
|
||||
//Move player
|
||||
if(keyH.upPressed || keyH.downPressed || keyH.leftPressed || keyH.rightPressed) {
|
||||
if(keyH.upPressed) {
|
||||
direction = Direction.UP;
|
||||
worldY -= speed;
|
||||
} else if(keyH.downPressed) {
|
||||
direction = Direction.DOWN;
|
||||
worldY += speed;
|
||||
} else if(keyH.leftPressed) {
|
||||
direction = Direction.LEFT;
|
||||
worldX -= speed;
|
||||
} else if(keyH.rightPressed) {
|
||||
direction = Direction.RIGHT;
|
||||
worldX += speed;
|
||||
if(keyH.upPressed) direction = Direction.UP;
|
||||
else if(keyH.downPressed) direction = Direction.DOWN;
|
||||
else if(keyH.leftPressed) direction = Direction.LEFT;
|
||||
else if(keyH.rightPressed) direction = Direction.RIGHT;
|
||||
|
||||
// CHECK TILE COLLISION
|
||||
collisionOn = false;
|
||||
panel.collisionH.checkTile(this);
|
||||
|
||||
if(!collisionOn) {
|
||||
switch (direction) {
|
||||
case UP -> worldY -= speed;
|
||||
case DOWN -> worldY += speed;
|
||||
case LEFT ->worldX -= speed;
|
||||
case RIGHT -> worldX += speed;
|
||||
}
|
||||
}
|
||||
|
||||
spriteCounter++;
|
||||
@@ -75,21 +87,12 @@ public class Player extends Entity {
|
||||
}
|
||||
|
||||
public void draw(Graphics2D graphics2d) {
|
||||
BufferedImage image = null;
|
||||
switch (direction) {
|
||||
case UP:
|
||||
image = (spriteNum == 1) ? up1 : up2;
|
||||
break;
|
||||
case DOWN:
|
||||
image = (spriteNum == 1) ? down1 : down2;
|
||||
break;
|
||||
case LEFT:
|
||||
image = (spriteNum == 1) ? left1 : left2;
|
||||
break;
|
||||
case RIGHT:
|
||||
image = (spriteNum == 1) ? right1 : right2;
|
||||
break;
|
||||
}
|
||||
BufferedImage image = switch (direction) {
|
||||
case UP -> (spriteNum == 1) ? up1 : up2;
|
||||
case DOWN -> (spriteNum == 1) ? down1 : down2;
|
||||
case LEFT -> (spriteNum == 1) ? left1 : left2;
|
||||
case RIGHT -> (spriteNum == 1) ? right1 : right2;
|
||||
};
|
||||
graphics2d.drawImage(image, screenX, screenY, panel.tileSize, panel.tileSize, null);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user