javascript - Comment ajouter des boîtes de détection de collision à un grand nombre de sprites?
phpcn_u1582
phpcn_u1582 2017-05-31 10:39:16
0
1
666

J'ai une feuille de sprite, et chaque image qu'elle contient a une taille différente, comme indiqué ci-dessous :

Maintenant, je souhaite leur ajouter des zones de détection de collision, mais il existe de nombreuses images et la position de collision n'est pas limitée à la bordure de l'image. Dans ce cas, comment ajouter des zones de détection si nécessaire pour chacune ? cadre? Comment obtenir la position de la boîte de collision après l'avoir ajoutée ? Existe-t-il un outil pour y parvenir ? Merci beaucoup~

phpcn_u1582
phpcn_u1582

répondre à tous(1)
滿天的星座

Fondamentalement, l'une des parties les plus difficiles du développement de jeux est la détection de collision. La façon dont vous choisissez la détection de collision doit être déterminée en fonction des besoins de votre projet. Généralement, le théorème de l'axe de séparation (SAT) est couramment utilisé pour les polygones. vos exigences ne sont pas particulièrement élevées, utilisez simplement des rectangles normaux de taille égale pour la détection. Si vous devez changer, enregistrez un cadre de détection de collision pour chaque état pour la détection de collision, par exemple :

.
var monster = {
    steps : {
        "walk" : {
            "width" : "", //碰撞检测时用于计算的宽度
            "height" : "", //高度
            "imgs" : [] //精灵,可能"walk"这个动作中包含了多帧,进行游戏循环的时候需要逐步变化
            "idx" : 0 //用于判断imgs当前到哪个步骤的下标索引
        },
        "jump" : {
            //同样的
        },
        "run" : {
            //等等
        }
        //........
    }, //保存不同状态下的显示效果和碰撞边框
    "currentStatus" : "walk", //当前的状态,方便相关功能的载入
    "setup" : function(){
        this.x += "";
        this.y += '';
        //用于计算和更新位置
    },
    "draw" : function(){
        //用于绘制
    }
    //......
};
//碰撞检测一般都在游戏循环里单独调用一个方法,通过循环获取活动对象的x,y,width,height来进行检测,这里你可以通过判断一个矩形是否存在一个顶点在另一个矩形内部来得知是否碰撞,当然用sat也是可以的,不过麻烦了点

Bien sûr, je suis uniquement là pour vous donner des conseils de référence. Je ne suis pas principalement engagé dans le développement de jeux. J'ai étudié seul pendant une période où j'étais intéressé, veuillez les signaler. . C'est ça.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal