LoginSignup
0
2

More than 3 years have passed since last update.

【Unity】[パート2]Blenderで作った「cell fracture」の破片をUnityに取り込む

Posted at

環境メモ
⭐️Mac OS Mojave バージョン10.14
⭐️Blender v2.79.6
⭐️Mac Book
⭐️Unity 2018.2.15f1

↓↓↓実際に動かした内容
https://twitter.com/nonnonkapibara/status/1138793284648620032

1.破片をバラバラにする
スクリーンショット 2019-06-09 12.08.26.png

詳細は下記のページを参照
【Unity】[パート1]Blenderで作った「cell fracture」の破片をUnityに取り込む
https://qiita.com/nonkapibara/items/4ce52d6bf58ccd486a6a

2.FBX形式にエクスポートする
スクリーンショット 2019-06-10 2.25.43.png
スクリーンショット 2019-06-10 2.26.31.png

3.Unityにて、FBXを取り込む
スクリーンショット 2019-06-10 2.31.41.png

4.破壊前のCubeと破壊後のCubeを分ける
スクリーンショット 2019-06-10 2.34.00.png

スクリーンショット 2019-06-10 2.35.08.png

5.破壊前のCubeに、Mesh CollideとRigdbodyを設定する
スクリーンショット 2019-06-10 2.36.52.png

6.破壊後のCubeにも、破片全てにMesh CollideとRigdbodyを設定する
スクリーンショット 2019-06-10 2.38.37.png

7.床にもCollideを設定する
スクリーンショット 2019-06-10 2.40.42.png

8.ボールにもCollideを設定する
スクリーンショット 2019-06-10 2.42.28.png

破壊前と破壊後のオブジェクトを、非表示、表示の切り替えをする。
ボールが破壊前のオブジェクトに当たったら、破壊前を非表示にし、破壊後のオブジェクトを表示するようにした。

ballScript.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ballScript : MonoBehaviour {
#pragma warning disable 0649
    [SerializeField] GameObject nomal_cube;
    [SerializeField] GameObject break_cube;
    // Use this for initialization
    void Start () {
        // 破壊キューブ 非表示
        break_cube.SetActive(false);
        // 破壊前のノーマルキューブ 表示
        nomal_cube.SetActive(true);
    }

    /// <summary>
    /// オブジェクト同士が衝突した瞬間に呼び出される
    /// Ons the collision enter.
    /// </summary>
    /// <param name="collision">Collision.</param>
    private void OnCollisionEnter(Collision collision)
    {
        // ボールと接触したらCubeを破壊
        if (collision.gameObject.tag == "normalCube")
        {
            Debug.Log("nomalCube");
            // 破壊前のノーマルキューブ
            nomal_cube.SetActive(false);
            // 破壊キューブ
            break_cube.SetActive(true);
        }
    }
}

9.新しいゲームオブジェクトを作って、ボールを投げるスクリプトを設定する
スクリーンショット 2019-06-12 22.57.42.png

PinkBreakScript.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PinkBreakScript : MonoBehaviour
{
#pragma warning disable 0649
    [SerializeField] GameObject ball;
    Rigidbody rig;
    float speed = 100f; //速度[m/s]


    void Start()
    {
        float x = ball.transform.position.x;
        float y = ball.transform.position.y;
        float z = ball.transform.position.z;
        // 右から左ボールを投げる
        x = x - speed;
        var velocity = new Vector3(x, y, z);
        // ボールのRigidbodyコンポーネントを取得する
        var rigid = ball.GetComponent<Rigidbody>();
        // Rigidbodyコンポーネントを使って初速を与える
        rigid.AddForce(velocity, ForceMode.VelocityChange);

    }
}

完成!!



類似内容
【Blender】Blenderのアドオン「cell fracture」で石がバラバラ〜ってなる物、作ってみたよぉ。
https://qiita.com/nonkapibara/items/f135a3e1a4fcb9f388a9

【Blender】衝突で勢いよく飛び散るシミュレーション(cell fracture)
https://qiita.com/nonkapibara/items/9df0d86762a7fb170946

【Unity】[パート1]Blenderで作った「cell fracture」の破片をUnityに取り込む
https://qiita.com/nonkapibara/items/4ce52d6bf58ccd486a6a

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2