Problème de collision imprécise
Je viens d’arriver sur le premier problème qui va demander de la réflexion.
Fonctionnement actuel
J’ai une propriété HitBox sur chacun de mes éléments de gameplay et lorsqu’ils se touchent ça touche le joueur.
Problème
Les HitBoxes sont de la grandeur de l’image complète (incluant la transparence), alors un laser peut toucher le joueur même si celui ci n’est pas réellement touché.
De plus, lorsque LaserBoss est en phase 3, il fait une attaque en cone, l’image est tournée de 20 degrés, mais pas le hitbox. Alors le hitbox est touché alors que le joueur est loin d’etre touché par l’image vue.
Pistes de solutions
- Créer un système de “pixel perfect”, qui va vérifier qu’au moins 1 pixel de chaque élément se touche pour détecter la collision
- Revoir comment le hitbox est généré pour qu’il soit de la grandeur exacte des pixels visibles
- Enlever la transparence superflu des images
Solution 1
J’ai programmé un système de “pixel perfect”, qui vérifie lorsque 2 hit boxes se touchent qu’il y a au moins un pixel de chaque image qui se croisent.
Voici mon code :
private bool PixelPerfectHit(IGameObject second)
{
var sectionHitted = GetOverlapsedSection(second);
var gameObjectHasColor = HasColorInSection(Texture, sectionHitted); var projectileObjectHasColor = HasColorInSection(second.Texture, sectionHitted);
return gameObjectHasColor && projectileObjectHasColor;
}
private Rectangle GetOverlapsedSection(IGameObject second)
{
return Rectangle.Intersect(HitBox, second.HitBox);}
private bool HasColorInSection(Texture2D texture, Rectangle section)
{
int size = section.Width * section.Height;
Color[] buffer = new Color[size];
Texture.GetData(0, section, buffer, 0, size);
return buffer.Any(x => x != Color.Transparent);
}
Get Laser beams pew pew
Laser beams pew pew
Status | Released |
Author | koydas |
Genre | Shooter |
Tags | 2D, Cartoon, gamecodeurfr, laser-beam, laser-beam-game, laser-beam-shooter, laser-game, Side Scroller, space-shooter, space-shooter-game |
Languages | English |
More posts
- Amélioration performance sur l'attaque en coneJun 27, 2019
- Les premiers sonsJun 27, 2019
- Ajout de phases à Bomb BossJun 27, 2019
- Menu amélioréJun 26, 2019
- Barres de vie améliorées !!Jun 26, 2019
- Deuxième Boss : BOMB BOSS !!Jun 26, 2019
- Ajouts d'éléments de décorJun 26, 2019
- Ajout d'explosionsJun 26, 2019
- Améliorations Laser BossJun 26, 2019
Leave a comment
Log in with itch.io to leave a comment.