Je travaille actuellement sur un jeu de plateforme relativement simple qui a un bug étrange. Vous commencez le jeu en tombant sur le sol (vous partez à quelques blocs au-dessus du sol), mais quand vous atterrissez, vos pieds restent bloqués à l'intérieur du monde et vous ne pouvez pas bouger avant de sauter. Voici ce que je veux dire:Erreur de détection de collision
pieds du joueur sont quelques pixels en dessous du niveau du sol. Cependant, ce problème ne se produit que dans trois endroits de la carte et seulement dans ces trois endroits sélectionnés. Je suppose que le problème réside dans mon code de détection de collision, mais je ne suis pas entièrement sûr, car je ne reçois pas d'erreur quand cela arrive.
public boolean isCollidingWithBlock(Point pt1, Point pt2) {
//Checks x
for(int x = (int) (this.x/Tile.tileSize); x < (int) (this.x/Tile.tileSize + 4); x++) {
//Checks y
for(int y = (int) (this.y/Tile.tileSize); y < (int) (this.y/Tile.tileSize + 4); y++) {
if(x >= 0 && y >= 0 && x < Component.dungeon.block.length && y < Component.dungeon.block[0].length) {
//If the block is not air
if(Component.dungeon.block[x][y].id != Tile.air) {
//If the player is in contact with point one or two on the block
if(Component.dungeon.block[x][y].contains(pt1) || Component.dungeon.block[x][y].contains(pt2)) {
//Checks for specific blocks
if(Component.dungeon.block[x][y].id == Tile.portalBlock) {
Component.isLevelDone = true;
}
if(Component.dungeon.block[x][y].id == Tile.spike) {
Health.health -= 1;
Component.isJumping = true;
if(Health.health == 0) {
Component.isDead = true;
}
}
return true;
}
}
}
}
}
return false;
}
Ce que je demande est comment je réglerais le problème. J'ai regardé mon code pendant un bon moment et je ne suis pas sûr de ce qui ne va pas. Aussi, s'il y a un moyen plus efficace de faire ma vérification de collision, alors s'il vous plaît faites le moi savoir!
J'espère que c'est assez d'informations, si ce n'est pas seulement dites-moi ce dont vous avez besoin et je vais être sûr de l'ajouter.
Merci!
Quelle est votre question? –
Ajouté. Désolé pour ça. – Connor
Avez-vous utilisé un débogueur ou ajouté des instructions SOP pour afficher les valeurs des variables dans les situations que vous avez décrites? C'est là que je vous suggère de commencer. Apprendre à déboguer du code est tout aussi important pour une compétence que d'apprendre à l'écrire en premier lieu. –