Maison base de données tutoriel mysql Box2D的Edge Shape的碰撞处理

Box2D的Edge Shape的碰撞处理

Jun 07, 2016 pm 03:13 PM
edge 处理

有时候两个body碰撞时需要精确到某条边,所以在创建body的时候需要创建multiFixture,也就是多个fixture的组合。早期Box2D版本中Polygon Shape有setAsEdge方法设置每条边的fixture,v2.2.1之后只有setAsBox方法了。 方法一:可以在每条边的位置上加上一个Edg

        有时候两个body碰撞时需要精确到某条边,所以在创建body的时候需要创建multiFixture,也就是多个fixture的组合。早期Box2D版本中Polygon Shape有setAsEdge方法设置每条边的fixture,v2.2.1之后只有setAsBox方法了。

        方法一:可以在每条边的位置上加上一个Edge Shape,然后再body中加入这个边的fixture并保存起来,碰撞的时候就能判断是碰到哪条边了。

        方法二:直接用body的createFixture(edgeShape,density)方法,直接创建一条edge的fixture,因为一般边不需要其他属性。默认边有摩擦力和弹力。

        边也是以body中点为原点,所以边的起点和终点要用宽和高的一半来算。

       这样添加后的碰撞种类(以player站在platform)上为例,可分为:

        1. player的polygonShape和platform的topEdgeShape碰撞。

        2. player的bottomEdgeShape和platform的polygonShape碰撞。

        3. player的polygonShape和platform的polygonShape碰撞。

        4. player的bottomEdgeShape和platform的topEdgeShape不会发生碰撞,因为他们都是Edge类型。

        edgeShape的长度比polygonShape相应边的长度短一点,这样分别在判断左右两边和上下两边是否发生碰撞时,不会相互影响到。当rightEdge碰撞时,bottomEdge不会发生碰撞;当bottomEdge碰撞时,rightEdge也不会发生碰撞。

        如果edgeShape的长度和polygonShape相应边的长度一样的话,当rightEdge碰撞时,bottomEdge的右端也会顶到墙上,发生碰撞,从而产生逻辑错误。比如:设定bottomShape发生碰撞时player的状态是isJump=NO,bottomEdge没有碰撞时isJump=YES。当player跳起并碰到墙壁时,isJump应该是YES状态,但bottomEdge检查到了碰撞,将isJump设为NO,这样player的其他行为和动作会发生错误。

        或者把矩形polygonShape的直角顶点“切掉”,变成八边形。

如下图所示:

Box2D的Edge Shape的碰撞处理

1.

    //DELTA_LENGTH = 0.5   
    //fixture1 with polygon shape
    b2PolygonShape rectShape;
    rectShape.SetAsBox(size.x/2/PTM_RATIO, size.y/2/PTM_RATIO);
    
    b2FixtureDef fixtureDef1;
    p_body->CreateFixture(&fixtureDef1);
    
    //fixture2 with edge shape
    b2EdgeShape edgeShape;
    edgeShape.Set(b2Vec2((-size.x/2 + DELTA_LENGTH)/PTM_RATIO, (-size.y/2)/PTM_RATIO), 
                  b2Vec2((size.x/2 - DELTA_LENGTH)/PTM_RATIO, (s-size.y/2)/PTM_RATIO));
                        
    b2FixtureDef fixtureDef2;
    fixtureDef2.shape = &edgeShape;
    p_bottomFixture = p_body->CreateFixture(&fixtureDef2);
Copier après la connexion

2. 

b2EdgeShape edgeShape;
    edgeShape.Set(b2Vec2((-size.x/2 + DELTA_LENGTH)/PTM_RATIO, (-size.y/2)/PTM_RATIO), 
                  b2Vec2((size.x/2 - DELTA_LENGTH)/PTM_RATIO, (-size.y/2)/PTM_RATIO));

    p_bottomFixture = p_body->CreateFixture(&edgeShape, 0);
Copier après la connexion

3 polygonShape必须是凸多边形,顶点按照逆时针方向依次给出

b2PolygonShape polygonShape;
    b2Vec2 vec[] = {b2Vec2(-size.x/2/PTM_RATIO, -size.y/2/PTM_RATIO), 
                    b2Vec2(size.x/2/PTM_RATIO, -size.y/2/PTM_RATIO), 
                    b2Vec2(size.x/2/PTM_RATIO, -size.y/4/PTM_RATIO), 
                    b2Vec2(size.x/4/PTM_RATIO, size.y/2/PTM_RATIO), 
                    b2Vec2(-size.x/4/PTM_RATIO, size.y/2/PTM_RATIO), 
                    b2Vec2(-size.x/2/PTM_RATIO, -size.y/4/PTM_RATIO)};
    polygonShape.Set(vec, 6);
    b2FixtureDef fixtureDef1;
    fixtureDef1.shape = &polygonShape;
    fixtureDef1.density = dens;
    fixtureDef1.friction = f;
    fixtureDef1.restitution = rest;
    p_polygonFixture = p_body->CreateFixture(&fixtureDef1);
Copier après la connexion


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment activer l'enregistrement automatique du mot de passe dans le navigateur Edge ? Comment activer l'enregistrement automatique du mot de passe dans le navigateur Edge ? Jan 02, 2024 pm 12:28 PM

Souvent, lorsque nous utilisons des ordinateurs, nous choisissons Edge pour interroger les informations souhaitées, et lors de la connexion à certains sites Web, nous avons besoin d'un compte et d'un mot de passe, mais il est difficile de les saisir à chaque fois. Comment pouvons-nous les utiliser à ce moment-là. qu'en est-il de l'enregistrement automatique des mots de passe par Edge ? Pour ceux qui ne le savent pas, jetons un coup d’œil ensemble. Comment enregistrer automatiquement les mots de passe dans Edge 1. Ouvrez le logiciel, cliquez sur le bouton à trois points "..." dans le coin supérieur droit et sélectionnez "Paramètres" dans la liste d'options ci-dessous. 2. Dans la fenêtre qui s'ouvre, cliquez sur l'option « Informations personnelles » à gauche. 3. Recherchez ensuite « Laissez-moi choisir d'enregistrer le mot de passe » à droite et modifiez

Comment activer le mode Super Drag and Drop dans Microsoft Edge Comment activer le mode Super Drag and Drop dans Microsoft Edge Mar 18, 2024 am 09:40 AM

La fonctionnalité glisser-déposer de Microsoft Edge vous permet d'ouvrir facilement des liens ou du texte sur des pages Web, ce qui est à la fois pratique et rapide. Pour utiliser cette fonctionnalité, faites simplement glisser et déposez le lien ou le texte n'importe où sur la page. Cet article vous montrera comment activer ou désactiver le mode Super Drag and Drop dans Microsoft Edge. Qu’est-ce que le mode Super Glisser-Déposer dans Microsoft Edge ? Microsoft Edge a introduit une nouvelle fonctionnalité appelée « Super Drag and Drop » qui permet aux utilisateurs de simplement glisser-déposer des liens pour les ouvrir rapidement dans un nouvel onglet. Faites simplement glisser et déposez le lien n’importe où dans la fenêtre du navigateur Edge. Edge chargera automatiquement le lien dans un nouvel onglet. De plus, les utilisateurs peuvent également

Résoudre le problème de décalage du navigateur Edge en mode plein écran de la station b Résoudre le problème de décalage du navigateur Edge en mode plein écran de la station b Jan 12, 2024 pm 11:00 PM

Récemment, de nombreux amis ont rencontré des retards lors de l'utilisation du navigateur Edge pour regarder des vidéos du site B en plein écran, et l'expérience est très mauvaise. Alors, comment le résoudre ? Jetons un coup d'œil aux solutions détaillées ci-dessous. La station du navigateur Edge B est bloquée en plein écran : 1. Ouvrez le navigateur et saisissez l'URL about:flags. 2. Entrez les paramètres du développeur. 3. Cliquez sur « Réinitialiser tous les logos par défaut » ci-dessus. 4. Faites défiler vers le bas et cochez « Activer les fonctionnalités JavaScript expérimentales » pour résoudre le problème.

Le processus de fonctionnement de l'hôte de service WIN10 occupant trop de CPU Le processus de fonctionnement de l'hôte de service WIN10 occupant trop de CPU Mar 27, 2024 pm 02:41 PM

1. Tout d'abord, nous cliquons avec le bouton droit sur l'espace vide de la barre des tâches et sélectionnons l'option [Gestionnaire des tâches], ou cliquons avec le bouton droit sur le logo de démarrage, puis sélectionnons l'option [Gestionnaire des tâches]. 2. Dans l'interface du Gestionnaire des tâches ouverte, nous cliquons sur l'onglet [Services] à l'extrême droite. 3. Dans l'onglet [Service] ouvert, cliquez sur l'option [Ouvrir le service] ci-dessous. 4. Dans la fenêtre [Services] qui s'ouvre, cliquez avec le bouton droit sur le service [InternetConnectionSharing(ICS)], puis sélectionnez l'option [Propriétés]. 5. Dans la fenêtre des propriétés qui s'ouvre, remplacez [Ouvrir avec] par [Désactivé], cliquez sur [Appliquer] puis cliquez sur [OK]. 6. Cliquez sur le logo Démarrer, puis cliquez sur le bouton d'arrêt, sélectionnez [Redémarrer] et terminez le redémarrage de l'ordinateur.

Comment définir la compatibilité du navigateur Edge ? Tutoriel sur la façon d'activer le mode de compatibilité du navigateur Edge Comment définir la compatibilité du navigateur Edge ? Tutoriel sur la façon d'activer le mode de compatibilité du navigateur Edge Jan 07, 2024 pm 01:50 PM

Comment définir la compatibilité du navigateur Edge ? La plupart des utilisateurs utilisent le navigateur Edge comme navigateur par défaut Lorsque nous souhaitons utiliser le mode de compatibilité du navigateur Edge pour la navigation Web, comment devons-nous le configurer ? Pour ceux qui ne sont pas sûrs, veuillez suivre l'éditeur pour voir la méthode de configuration spécifique. Méthode de configuration de la compatibilité du navigateur Edge : Méthode 1 : 1. Cliquez sur le menu Démarrer et sélectionnez le navigateur Edge, comme indiqué dans la figure ci-dessous. 2. Après avoir ouvert le navigateur Edge, cliquez sur l'icône à trois points dans le coin supérieur droit, comme indiqué dans la figure ci-dessous. Afin d'aider les joueurs qui n'ont pas encore réussi le niveau, jetons un coup d'œil aux méthodes spécifiques de résolution d'énigmes. 3. Le mode de compatibilité du navigateur Edge est principalement défini via, par exemple, cliquez sur l'icône à trois points et sélectionnez « Activer ».

Comment gérer les pop-ups Microsoft Edge qui respectent votre vie privée Comment gérer les pop-ups Microsoft Edge qui respectent votre vie privée Jan 31, 2024 pm 02:14 PM

Que faire si un message apparaît indiquant que Microsoft respecte votre vie privée ? Récemment, certains utilisateurs ont signalé que le navigateur Edge qu'ils utilisent affiche souvent le message « Microsoft respecte votre vie privée ». Même s'ils cliquent sur J'accepte, il apparaîtra toujours la prochaine fois qu'ils ouvriront le navigateur. Alors, comment fermer cette fenêtre pop-up ennuyeuse ? Ce problème devrait se produire car le navigateur Edge n'accepte pas le cookie du site Web msn.cn. L'éditeur suivant vous montrera comment résoudre le problème selon lequel Microsoft respecte votre confidentialité apparaît dans Edge. Essayez-le et voyez si cela fonctionne. Comment résoudre le problème selon lequel Microsoft respecte votre vie privée lorsque Edge apparaît. Ouvrez les paramètres du navigateur Edge : Confidentialité, Recherche et Services, recherchez l'élément Effacer les données de navigation et cliquez pour sélectionner Désactiver à chaque fois.

Comment réduire l'utilisation de la mémoire du navigateur Edge ? Solution au problème d'utilisation de la mémoire Edge Comment réduire l'utilisation de la mémoire du navigateur Edge ? Solution au problème d'utilisation de la mémoire Edge Jan 05, 2024 pm 05:54 PM

Que dois-je faire si l’utilisation de la mémoire du navigateur Edge est élevée ? L'éditeur a constaté que de nombreux amis aiment désormais utiliser le navigateur Edge de Microsoft, car il est non seulement simple, mais permet également d'installer divers plug-ins de navigateur. Cependant, récemment, certains amis ont constaté que son utilisation du processeur est très élevée lors de l'utilisation d'Edge. , c'est-à-dire que l'utilisation de la mémoire est trop élevée. Comment gérer cette situation ? Jetons un coup d'œil à la solution avec l'éditeur ci-dessous. Solution à l'utilisation élevée de la mémoire dans Edge 1. Fermez l'onglet, accédez au navigateur Edge et cliquez sur les trois points dans le coin supérieur droit. Sélectionnez "Extensions" dans la barre des tâches. Fermez ou désinstallez simplement les plug-ins dont vous n'avez pas besoin. 2. Mettez à jour le navigateur Microsoft Edge. Veuillez vous assurer qu'il est installé sur votre ordinateur.

Solution pour laquelle les images du navigateur Edge ne peuvent pas être affichées Solution pour laquelle les images du navigateur Edge ne peuvent pas être affichées Jan 09, 2024 am 08:34 AM

Que dois-je faire si le navigateur Edge n’affiche pas d’images ? Edge est un très excellent navigateur Web appartenant à Microsoft, et il a remplacé le navigateur IE en tant que logiciel de navigation essentiel sur les ordinateurs. Cependant, de nombreux amis constatent qu'aucune image ne s'affiche lors de l'utilisation de ce navigateur. Jetons un coup d'œil aux solutions pertinentes avec l'éditeur ci-dessous. La solution au problème selon lequel le navigateur Edge n'affiche pas d'images Afin d'aider les joueurs qui n'ont pas encore réussi le niveau, découvrons les méthodes spécifiques pour résoudre le puzzle. Tout d'abord, cliquez sur le bouton Démarrer dans le coin inférieur gauche de l'interface du jeu, puis cliquez avec le bouton droit sur « Microsoft Edge ». Cette action lancera la prochaine phase du jeu. Afin d'aider les joueurs qui n'ont pas encore réussi le niveau, faisons-le ensemble

See all articles