SPRITECOLLIDE |
Collision de sprite |
G-Pascal |
Syntaxe
FUNCTION SPRITECOLLIDE:INTEGER;
|
Description
Cette fonction permet de demander le contenu du registre de collision de sprite-à-sprite.
Remarques
- La fonction correspond à un registre matériel dans les puces VIC. Si le résultat est nul, aucun sprite n'entre en collision les uns avec les autres.
Si le résultat est nul, aucun sprite n'entre en collision les uns avec les autres. Si le résultat est différent de zéro, alors deux sprites ou plus entrent en collision.
- Vous pouvez laisser G-Pascal vérifier automatiquement les collisions de sprites pour vous et arrêter automatiquement les sprites impliqués dans une collision.
Dans ce cas, vous devez utiliser la procédure SPRITEFREEZE.
- Si vous souhaitez déterminer quel sprite est impliqué, le résultat doit être un ET avec les nombres dans le tableau suivant.
- Avertissement : la vérification de l'état du SPRITECOLLIDE effacera le registre de collision à proximité pour la prochaine collision.
Si vous souhaitez effectuer une série de tests sur le résultat, le résultat doit être enregistré dans une variable intermédiaire et le test effectué sur la variable.
- Vous ne devez pas vous référer à la fonction SPRITECOLLIDE si vous utilisez la procédure SPRITEFREEZE. Dans ce cas, vous devez vérifier la fonction
FREEZESTATUS renvoyant les bits de collision de la même manière que la fonction SPRITECOLLIDE :
Sprite |
Valeur de bit de collision |
1 |
1 |
2 |
2 |
3 |
4 |
4 |
8 |
5 |
16 |
6 |
32 |
7 |
64 |
8 |
128 |
- Notez que si plus de deux sprites sont impliqués dans des collisions en même temps, vous ne pouvez pas dire à partir de la fonction SPRITECOLLIDE quel sprite entre en collision
avec lequel. (Il s'agit d'une limitation matérielle). Dans ce cas, vous devez déterminer ce qui entre en collision en comparant leurs coordonnées à l'écran (en utilisant les fonctions
SPRITEX et SPRITEY pour chaque image-objet). Bien sûr, peu importe le sprite ayant frappé, par exemple si le sprite 1 est le
vaisseau du joueur et que tous les autres sprites sont des extraterrestres, alors il suffirait de détecter que le sprite 1 est impliqué dans une collision (c'est-à-dire IF SPRITECOLLIDE AND 1 THEN ...).
Dernière mise à jour : Samedi, le 11 Juillet 2020