InteractiveCloth, Mesh personnalisé, Ballon dégonglé

Cette section est destinée aux scripts partagés par la communauté. Chaque post est destiné à un script. Suivez bien les recommandations.
Avatar de l’utilisateur
Eddy
Messages : 26
Inscription : 27 Mars 2010 19:14
Localisation : Nantes

InteractiveCloth, Mesh personnalisé, Ballon dégonglé

Message par Eddy » 07 Oct 2010 05:24

Pour ceux que ça intéresse voilà un petit script qui permet de convertir un objet en CLOTH (tissu).
Le but au départ était de reproduire la démo UNITY du "ballon dégonflé" en jouant sur l'option Pressure.

ClothCustomMesh.js
- On drop le script sur l'objet qui vous intéresse.
- le script remplacera la mesh par défaut de l'interactiveCloth par celle de votre objet ou par une primitive

Code : Tout sélectionner

//ajoute les composants nécessaires au bon fonctionnement du script
@script RequireComponent(InteractiveCloth)
@script RequireComponent(ClothRenderer)

var DefaultMesh : PrimitiveType;
var RemoveMeshRenderer : boolean = true;
var RemoveCollider : boolean = true;

function Awake() {		
	//indique si on va utiliser une MESH par défaut
	var useDefaultMesh =(this.GetComponent(MeshFilter)==null);
	
	//indique quel GameObject on va utiliser comme modèle: objet courant ou une primitive (sphere,box,...) 
	var useObject : GameObject= useDefaultMesh ? GameObject.CreatePrimitive(DefaultMesh) : this.gameObject;
	
	//on copie le modèle si c'est possible
	var thisCloth = this.GetComponent(InteractiveCloth);
	var thisMeshFilter = useObject.GetComponent(MeshFilter);
	if (thisCloth!=null && thisMeshFilter!=null)
	{
		//copie la forme
		thisCloth.mesh=thisMeshFilter.mesh;
		
		//supprime le meshRenderer parce qu'on a déjà le clothRenderer
		if (RemoveMeshRenderer && this.GetComponent(MeshRenderer))
			Destroy(this.GetComponent(MeshRenderer));
		//supprime le collider parce qu'on a déjà la physique de l'interactiveCloth
		if (RemoveCollider && this.collider)	
			Destroy(this.collider);
		
	}
	
	//supprime le GameObject si le modèle est basé sur une primitive
	if (useDefaultMesh)
	{
		Destroy(useObject);
	}
}	
function Update () {
}
Blitz3D » BlitzMax » PureBasic » UnityEngine » Toujours plus loin et toujours plus de fun

Répondre

Revenir vers « Scripts »