Joints Unity 2D Joints coulissants, relatifs, à ressort et à friction

Ce que vous allez créer

Dans le didacticiel précédent, nous avons commencé à examiner le fonctionnement des joints de physique 2D dans Unity et à les utiliser pour obtenir de superbes effets (sans sacrifier les performances du jeu). Dans ce tutoriel, nous avons couvert la distance, la charnière, la cible et les articulations fixes.

Aujourd'hui, nous allons continuer en examinant les joints coulissants, relatifs, à ressort et à friction..

Joint coulissant

Cette articulation permet à un objet de jeu contrôlé par la physique des corps rigides de glisser le long d’une ligne dans l’espace. L'objet peut se déplacer n'importe où le long de la ligne en réponse à des collisions, des forces ou par une force motrice. Par conséquent, votre prochain obstacle sera une plate-forme mobile qui se déplace continuellement entre deux points fixes.

Créez un nouveau GameObject vide, appelez-le MovingPlatform, et mettre le Position de l'objet à (72,36, 1,57, 0). Ensuite, vous devez créer trois plates-formes différentes. Allez dans le dossier Platforms et faites glisser trois sprites Plateforme1Plateforme6, et Plate-forme12 dans le MovingPlatform.

La position de Plateforme1 devrait être (0, -1, 0), alors que pour Plateforme6 c'est (14, -1, 0), et pour Plate-forme12 (20,3, -1, 0). Après avoir placé les sprites, votre scénario devrait ressembler à ceci:

Maintenant que tous les actifs sont en place, il est temps de créer et de configurer le joint coulissant 2D. Sélectionner Plateforme6 et ajouter un Joint coulissant 2D composant à elle. Unity ajoutera automatiquement un RigidBody 2D ainsi que. Activer Rotation gelée Z ainsi que. Maintenant, sélectionnez Plateforme1 et ajouter un RigidBody 2D. Activer les options Est cinématique et Rotation gelée Z.

Maintenant, sélectionnez Plateforme6, retirer le Effet de plateforme 2D composant, et désactiver l'option Utilisé par Effector sur le Box Collider 2D composant.

Les champs disponibles dans le Joint coulissant 2D composant sont similaires à ceux que vous avez vus dans la Charnière conjoint, mais avec quelques changements sémantiques. Parce que les joints coulissants traitent en mouvement linéaire plutôt qu'en mouvement angulaire, Vitesse du moteur est mesurée en unités par seconde. De même, au lieu de limites d'angle, vous pouvez spécifier des limites de translation. Limites de traduction fonctionnent de la même manière que les limites d’angle, sauf qu’elles spécifient la distance entre le corps rigide et le Ancre Connectée point.

Tour Activer la collision sur, car vous voulez que la plate-forme entre en collision avec les plates-formes connectées. Traîne Plateforme1 au Corps rigide connecté. Met le Ancre Connectée à (-0,082, -0,0646). Activer Utiliser le moteur et mettre le Vitesse du moteur à -2.

Si vous appuyez sur Jouer, vous verrez que la plate-forme du milieu bouge maintenant. Cependant, une fois qu'il a atteint la plate-forme la plus proche, il s'arrête. Pour résoudre ce problème, vous devrez ajouter le MovingPlatform script à Plateforme6. Traîne Plate-forme12 à Plateforme A et Plateforme1 sur le terrain Plate-forme B.


presse Jouer, et vérifiez que tout fonctionne comme prévu. Maintenant que l’obstacle est prêt, créez-en un préfabriqué et placez-le dans le Obstacles dossier.

Joint relatif

Relative Joint 2D permet à deux objets de jeu contrôlés par la physique des corps rigides de conserver une position basée sur l'emplacement de l'autre. Pour mettre en œuvre ce joint, vous allez créer deux plates-formes. L'un est fixe dans l'espace, tandis que l'autre se déplace autour de lui, créant un obstacle circulaire.

Créez un nouveau GameObject vide à la Position (102,7, 4,2, 0) et nommez-le Relatif. À l'intérieur de Biens \ GameAssets \ Plateformes dossier, faites glisser Plate-forme11 dans le Relatif GameObject et change son nom en Plate-forme2. Changer son Position à (-.45, -5,97, 0) et le Échelle à (.5, .5, 1). Ajouter un Rigidbody 2D composant et vérifier la Est cinématique propriété. La première partie de l'obstacle est créée, poursuivons maintenant et ajoutons la deuxième plateforme..

Ajouter le MetalPlatform sprite (à l'intérieur du Ressources gratuites \ Sprites dossier) dans le Relatif GameObject, nommez-le Plate-forme, changer la Ordre en couche à 2, et mettre le Position à (-.37, 1,23, 0). Ajouter deux composants: a Rigidbody 2D et un Box Collider 2D. Changer la Taille du Box collider 2D à (2,32, 0,55).

Maintenant, ajoutez un Joint relatif 2D composante de la Plate-forme. À l'intérieur de Corps rigide connecté vous devriez placer Plate-forme2.

le Force maximale property définit le décalage linéaire (ligne droite) entre les objets joints. Une valeur élevée (jusqu'à 1 000) utilise une force élevée pour maintenir le décalage. le Couple maximal définit le mouvement angulaire (rotation) entre les objets joints. Définissez les deux valeurs sur 200. le Configuration automatique du décalage devrait être vérifié.

Si vous lancez votre jeu, vous verrez que rien ne bouge. Vous devez faire une dernière étape qui consiste à ajouter le RelativeJoint (à l'intérieur de Les scripts dossier) script dans le Plate-forme GameObject. Jouer le jeu et test si tout fonctionne comme prévu.

La configuration finale du joint est la suivante:

Maintenant que l'obstacle est prêt, créez-en un préfabriqué en plaçant le GameObject dans le dossier. Obstacles dossier.

Joint de printemps

Le composant 2D Joint de ressort permet de relier deux objets de jeu contrôlés par la physique des corps rigides, comme par un ressort. Le ressort appliquera une force spécifique le long de son axe entre les deux objets, en essayant de les maintenir à une certaine distance.

Pour utiliser cette liaison, vous allez créer un pont flottant composé de nuages; les nuages ​​seront attachés à un autre gros nuage en utilisant le joint de printemps.

Commencez par créer un GameObject vide. Nomme le Printemps et mettre sa Position à (120, 10, 0). Ajouter le Walkaway1 sprite (à l'intérieur du Plate-forme dossier) dans le Printemps GameObject. Changer son nom en CloudSpring et le Ordre en couche à 1. Ajouter un Rigidbody 2D et vérifier le Est cinématique propriété.

Ajoutons maintenant quatre nouveaux sprites. Sélectionnez le Plate-forme9 sprite du même dossier et en ajouter quatre dans le dossier Printemps GameObject. Nommez chaque objet PlatSpring01 à PlatSpring04.

Chaque PlatSpring doit être placé dans la position correcte comme suit:

  • PlatSpring01: -7,63, -12,35, 0

  • PlatSpring02: -2,67, -11,16, 0

  • PlatSpring03: 1,88, -12,44, 0

  • PlatSpring04: 6,77, -12,58, 0

Changer la Ordre en couche à 4 pour tous PlatSpring objets. Maintenant, pour chaque PlatSpring vous devez ajouter deux composants: a Rigidbody 2D et une Joint à ressort 2D. Pour le Rigidbody 2D composants, il vous suffit de vérifier la Rotation de congélation sur le Z axe.

Quand vous ajoutez le Joint à ressort 2D, il crée par défaut un Corps rigide connecté au Scène centre.

Ce n'est pas l'effet recherché. Par conséquent, vous devriez joindre le CloudSpring GameObject à la Corps rigide connecté de chaque PlatSpring.

Lorsque vous faites cela, la connexion de la ligne verte est automatiquement mise à jour et placée dans la CloudSpring.

Vous pouvez changer le Ancre Connectée et le Distance si tu veux. Cependant, dans ce tutoriel, vous ne modifierez que le Ancre Connectée.

Pour chaque PlatSpring, changer la Ancre Connectée en conséquence:

  • PlatSpring01-4,8, 0

  • PlatSpring02: -1,7, 0

  • PlatSpring031,07, -0,11

  • PlatSpring04: 4.13, -0.11

La configuration complète de PlatSpring01 est le suivant:

Jouez à votre jeu et testez si tout est bien placé et configuré. Maintenant que l'obstacle est prêt, créez-en un préfabriqué en plaçant le GameObject dans le dossier. Obstacles dossier.

Joint de friction

Le joint de friction 2D relie des objets contrôlés par la physique des corps rigides et réduit les vitesses linéaires et angulaires entre les objets jusqu'à ce qu'elles atteignent zéro (c'est-à-dire qu'elles les ralentissent). Pour implémenter le joint de friction 2D, vous allez créer une plate-forme mobile qui est connectée à un nuage doté de propriétés physiques..

Commencez par créer un GameObject vide. Nomme le Plateforme de friction et mettre sa Position à (133, 5, 0). Ajouter le Plate-forme11 sprite (à l'intérieur du Biens \ Sprites dossier) dans le Plateforme de friction. Changer son nom en Soutien et mettre le Ordre à Layer to 1, ses Position à (0, 0, 0), et son Échelle à (.25, 0,25, 1). Vous devriez aussi ajouter un Rigidbody 2D et vérifier le Est cinématique propriété. Les propriétés restantes doivent être laissées aux valeurs par défaut.

Maintenant, ajoutez le MetalPlatform sprite dans le Plateforme de friction. Changer son Position à (.31, -8,33, 0), et le Ordre en couche à 3. Avec le MetalPlatform sélectionné, ajouter un Rigidbody 2D, une Box Collider 2D, et un Plate-forme Effector 2D. le Box Collider 2D Taille devrait être ajusté à (2,35, 0,5) avec Utilisé par Effector sur, alors que dans le Rigidbody 2D vous devez vérifier le Freeze Position Y et le Rotation gelée Z. Vous devriez maintenant avoir quelque chose comme ce qui suit:

Si vous jouez au jeu et sautez par-dessus le MetalPlatform, vous remarquerez que rien ne bouge. Changeons cela en ajoutant un Joint de friction 2D dans le MetalPlatform. le Corps rigide connecté devrait être rempli par le Soutien. Pour ce joint, nous laisserons Unity définir la meilleure coordonnée d'ancrage en permettant Configuration automatique connectée. le Force maximale et Couple maximal devrait être 1, tandis que le Force de rupture et Couper le couple devrait être Infini.

Lancez votre jeu et testons le joint de friction. Maintenant que le dernier obstacle est prêt, créez-en un préfabriqué et placez-le dans le Obstacles dossier.

Conclusions

Ceci conclut la deuxième partie du didacticiel sur Unity Joints 2D. Vous avez appris à propos de quatre joints, à savoir les joints coulissants, relatifs, à ressort et à friction. Grâce à cette connaissance alliée à tout ce que vous avez appris dans la première partie, vous êtes maintenant en mesure de créer des jeux 2D complexes utilisant des propriétés physiques 2D complexes.. 

Si vous avez des questions ou des commentaires, comme toujours, n'hésitez pas à laisser une ligne dans les commentaires.