Et non, je ne prétends pas que mon article est unique en son genre, car la méthode est assez simple, mais pour une raison quelconque, je n'ai pas trouvé de tutoriel direct pour cela.
Commençons par le fait que dans Unity vous NE POUVEZ PAS DÉTRUIRE / SÉPARER / COUPER un objet, notre destruction ne sera en fait pas du tout une destruction, mais seulement une imitation visuelle de ceux-ci, car, comme je l'ai dit plus haut, il est impossible autrement.
POSSÉDER!
Arrêtez de verser de l'eau et de perdre votre temps (j'ai toujours jugé bon de laisser la préface). Pour commencer, vous devez télécharger un programme appelé Blender à partir du magasin Steam, après quoi nous entrons et commençons à comprendre.
Créez un nouveau projet, et dans l'onglet "Editer / Editer", recherchez le bouton "Addons", et écrivez Cell Fracture dans la recherche, puis mettez une coche à côté pour l'activer.
Ensuite, nous allons à notre scène elle-même dans Blender, et nous y voyons le cube qui s'y trouve initialement lors de la création de la scène.
Nous nous intéressons à l'onglet "Modélisation", allez-y, faites un clic droit sur l'objet> subdiviser, et nous voyons que le cube est devenu, pour ainsi dire, une "cellule"
Revenez maintenant au premier onglet "Mise en page", cliquez sur le bouton objet / objet> effets rapides / effets rapides> Fracture de cellule, et nous allons ouvrir une fenêtre de gestion de l'Addon.
Appuyez simplement sur le bouton "OUI" et regardez le résultat.
Comme vous pouvez le voir, notre cube est divisé visuellement, donc tout s'est bien passé, c'est la fragmentation même.
Les dernières étapes sont laissées dans Blender, et vous pouvez procéder à la création d'une scène, cliquez sur fichier / fichier> export / export> .fbx, et enregistrez-le dans un dossier qui nous convient.
Nous ouvrons Unity, créons ou ouvrons un ancien projet et commençons à assembler notre scène. Pour ce faire, nous devons créer un plan et une sphère, maintenant nous ajoutons le cube que nous venons d'exporter de notre dossier à la fenêtre de hiérarchie, puis le faisons glisser directement sur la scène.
Pour que Unity comprenne qu'il s'agit d'un objet physique, vous devez ajouter deux choses, cliquez sur notre cube dans la fenêtre de hiérarchie, développant ainsi la liste des objets à l'intérieur (les parties dont il se compose), puis en maintenant shift, sélectionnez le tout premier objet de la liste, et le tout enfin, avec cette manipulation, nous sélectionnerons la liste entière.
Il reste à cliquer sur AddComponent, et dans la recherche ayant enregistré le collisionneur, sélectionnez "Mesh Collider".
Dans le collisionneur lui-même, cliquez sur "Convexe" pour l'afficher, et c'est tout.
Maintenant, nous répétons ce que nous avons fait plus tôt, mais nous ne recherchons que le Rigidbody.
Vous devez faire de même avec la sphère, uniquement sans le collisionneur, car elle s'y accroche initialement.
Ceci termine notre préparation, et nous pouvons passer au plus intéressant, comme on dit - «la brièveté est la sœur du talent», c'est pourquoi nous créons un nouveau script C # dans la fenêtre de hiérarchie, et y écrivons ce qui suit:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FragmentSplit : MonoBehaviour {
public bool isdead = false; // ,
public float timeRemaining = 100;// ( )
void Start()
{
GetComponent<Rigidbody>().isKinematic = true;//
}
void OnCollisionEnter(Collision collision)//
{
GetComponent<Rigidbody>().isKinematic = false;// - ,
isdead = true;// , "",
}
void Update()
{
if (isdead)// ,
{
timeRemaining -= Time.deltaTime;//
if (timeRemaining < 0) // ,
{
Destroy (gameObject);//
}
}
}
}
Maintenant, pour la dernière fois, sélectionnez tous les objets de la liste, cliquez sur AddComponent, et ajoutez notre script.
Élevez notre sphère au-dessus du cube et allumez le projet.
Comme vous pouvez le voir, tout fonctionne bien, le cube se brise, notre sphère roule quelque part.
C'est tout, oui, peut-être direz-vous que vous pouvez faire un retrait plus doux pour que les morceaux disparaissent, et pas si maladroits, et tout ça.
Je vais seulement vous répondre que je viens de démontrer comment le script fonctionne, et je ne suis pas entré dans les détails de comment et quand il va supprimer ces "débris", mais simplement montré que c'est possible et ainsi, et il n'y a absolument rien de compliqué à ce sujet.
Je ne prétends pas que les actifs d'Unity (ou d'autres développeurs) seront meilleurs que mes scripts de quelques lignes, mais quand même.
Je n'ai pas fait cet article en insistant sur le fait que je serai lu par des gens qui connaissent et comprennent Unity et la langue, qui peuvent écrire un script avec un contrôle plus précis de tout ce qui arrive à un objet sur la scène, j'ai fait un article pour étudiants et débutants.
Je ne dirai pas que je connais bien et à fond la langue, mais ce n'est pas le premier jour dans ce domaine, en général, c'est tout pour moi, j'espère que j'ai aidé quelqu'un, de bons amis de code! ..