Je suis nouveau sur le forum est sur Unity3d.
Je suis entrain de faire ma checklist de chose que je veux savoir faire avant de me lancer dans mon jeux.
J'ai un fait un code à exécuter dans l'éditeur pour faire de la duplication avec la possibilité d'en faire une chaine (HingeJoint).
Ce qui économise un paquet de temp!
exemple en vidéo
https://www.youtube.com/watch?v=qW3Ov2iYzmA
Etant plutôt codeur ca me gêne pas. Mais je suis plutôt étonné, de devoir faire du code pour des tâches "basiques++". Je dois être habitué au luxe sous BLender3D. Je sens que je vais coder un paquet d'outils comme celui-ci.
Mais j'ai peut-être loupé un truc?? Je perçois unity3D plus comme un moteur de jeu abouti et qu'il à encore tout a prouver en tant qu'éditeur de jeu ou suite 3D!?Ou alors que je suis un jeune padawan bien crédule. qui ne perçoit pas encore le potentiel d'unity sur ce point. En tout cas j'adore unity pour son système de "component", c'est ultra naturel pour concevoir/coder du jeux vidéo. C'est une forme de polymorphisme astucieuse est particulièrement adapté. Sans parler de l'intégration dans l'UI des scripts ultra naturel!
Pour revenir au sujet, vous connaissez des bundles de scripts dans le genre? Genre le top 10 des scripts à avoir sous Unity?
Serriez vous passé par un MonoBehaviour + trigger avec [ContextMenu()] ou pas pour se genre de script?
Code : Tout sélectionner
public class ArrayModifier : MonoBehaviour {
public int Count;
public Vector3 offset;
public Vector3 rotation;
[ContextMenu(“Duplicate Array”)]
void DuplicateArray()
{
var cursor = this;
for(var i = 0; i < Count; i++) {
cursor = Object.Instantiate(cursor);
Transform t = cursor.GetComponent<Transform>();
t.position += offset;
t.Rotate(rotation);
}
}
[ContextMenu(“Duplicate Chained”)]
void DuplicateChained()
{
Rigidbody rb = this.GetComponent<Rigidbody>();
rb.isKinematic = true;
var parent = this;
for (var i = 0; i < Count; i++)
{
var child = Object.Instantiate(parent);
Transform t = child.GetComponent<Transform>();
t.position += offset;
t.Rotate(rotation);
Chain(parent, child);
parent = child;
}
}
private void Chain(MonoBehaviour parent, MonoBehaviour child)
{
var hj = child.GetComponent<HingeJoint>();
if(hj==null) hj = child.gameObject.AddComponent<HingeJoint>();
hj.connectedBody = parent.GetComponent<Rigidbody>();
Rigidbody rb = child.GetComponent<Rigidbody>();
rb.isKinematic = false;
}
}