壺割ってみた
- 2018.05.08
- Unity
元のモデルを分解したモデルに入れ替える方法で作成しました。
モデルの用意
BlenderのCellFractureでモデルを分割してみました。CellFractureはユーザ設定→アドオン→オブジェクト→Object:Cell Fractureにチェックを入れ、有効にします。すると、オブジェクトモードのツールシェルフにCellFractureが追加されます。
きれいに分割できたものの、ポリゴン数が気になったので、CellFractureで分割にしたモデルを参考に自分でメッシュを切ってモデルを作成しました。
破壊オブジェクトのScript
ただ入れ替えるだけでは、破片は飛散しないので、AddForceによって破片が飛び散るようにしてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BreakPot : MonoBehaviour { private List<Rigidbody> rigPieces = new List<Rigidbody>(); private List<Vector3> forceDirec = new List<Vector3>(); private float timer = 0; private bool flg = true; // Use this for initialization void Start () { foreach (Transform trf in gameObject.transform) { rigPieces.Add(trf.gameObject.GetComponent<Rigidbody>()); forceDirec.Add(new Vector3(trf.position.x + Random.Range(-0.3f, 0.3f), 0, trf.position.z + Random.Range(-0.3f, 0.3f)).normalized); } } private void Update() { timer += Time.deltaTime; if(timer > 2f) { Destroy(gameObject); } } // Update is called once per frame private void FixedUpdate() { if (flg) { for(int i = 0; i < rigPieces.Count; i++) { if(rigPieces[i] != null) rigPieces[i].AddForce(forceDirec[i] * 3f, ForceMode.Impulse); } flg = false; } } } |
完成品
実際に作成したものはこちらです。Createボタンを押すと壺が落ち、地面に接触すると割れます。
-
前の記事
ReoderbleListで要素を折りたたむ方法 2018.04.14
-
次の記事
毒エフェクトの作り方 2018.05.20
コメントを書く