added collision to NPCs

This commit is contained in:
2025-11-28 17:21:35 +01:00
parent b294eb49c8
commit 1f614916b5
3 changed files with 98 additions and 0 deletions

View File

@@ -106,4 +106,89 @@ public class CollisionHandler {
return index;
}
//NPC OR MONSTER COLLISION
public int checkEntity(Entity entity, Entity[] target) {
int index = 999;
int c = -1;
for(Entity e : target) {
c++;
if (e != null) {
entity.solidArea.x += entity.worldX;
entity.solidArea.y += entity.worldY;
e.solidArea.x += e.worldX;
e.solidArea.y += e.worldY;
switch (entity.direction) {
case UP:
entity.solidArea.y -= entity.speed;
if (entity.solidArea.intersects(e.solidArea)) {
entity.collisionOn = true;
index = c;
}
break;
case DOWN:
entity.solidArea.y += entity.speed;
if (entity.solidArea.intersects(e.solidArea)) {
entity.collisionOn = true;
index = c;
}
break;
case LEFT:
entity.solidArea.x -= entity.speed;
if (entity.solidArea.intersects(e.solidArea)) {
entity.collisionOn = true;
index = c;
}
break;
case RIGHT:
entity.solidArea.x += entity.speed;
if (entity.solidArea.intersects(e.solidArea)) {
entity.collisionOn = true;
index = c;
}
break;
}
entity.solidArea.x = entity.solidAreaDefaultX;
entity.solidArea.y = entity.solidAreaDefaultY;
e.solidArea.x = e.solidAreaDefaultX;
e.solidArea.y = e.solidAreaDefaultY;
}
}
return index;
}
public void checkPlayer(Entity entity) {
entity.solidArea.x += entity.worldX;
entity.solidArea.y += entity.worldY;
panel.player.solidArea.x += panel.player.worldX;
panel.player.solidArea.y += panel.player.worldY;
switch (entity.direction) {
case UP:
entity.solidArea.y -= entity.speed;
if (entity.solidArea.intersects(panel.player.solidArea)) entity.collisionOn = true;
break;
case DOWN:
entity.solidArea.y += entity.speed;
if (entity.solidArea.intersects(panel.player.solidArea)) entity.collisionOn = true;
break;
case LEFT:
entity.solidArea.x -= entity.speed;
if (entity.solidArea.intersects(panel.player.solidArea)) entity.collisionOn = true;
break;
case RIGHT:
entity.solidArea.x += entity.speed;
if (entity.solidArea.intersects(panel.player.solidArea)) entity.collisionOn = true;
break;
}
entity.solidArea.x = entity.solidAreaDefaultX;
entity.solidArea.y = entity.solidAreaDefaultY;
panel.player.solidArea.x = panel.player.solidAreaDefaultX;
panel.player.solidArea.y = panel.player.solidAreaDefaultY;
}
}