Unityのラグドールの使い方

投稿者: | 2019-12-13

ラグドールを新規作成します。

体のパーツを設定するウィンドウが出るので、ヒエラルキー上にあるキャラクターの対応するパーツをドラッグアンドドロップします。

名前が違うものもありますが、ヒエラルキー上のパーツの名前をクリックすると、それがどの部分なのかがシーンを見るとわかるのであまり迷いません。

全部入れたら Createを押します。

キャラクターにもともとついているスクリプトやアニメーター、ナビメッシュエージェント等のコンポーネントを削除します。

ゲームを再生すると、キャラクターが崩れ落ちますが、まだ動きが変です。

すぐに消える場合は、体が床をすり抜けて落下しているようです。

体から何か飛び出ることもあります。

親オブジェクトと、Ethanbodyという子オブジェクトにカプセルコライダーを付けると良くなりました。


この2つにRigidbodyを付けるとなぜか床をすり抜けて落下します。

動きがマシになりました。

作ったラグドールをプロジェクトにドラッグアンドドロップしてプレハブ化して、岩と衝突したときにラグドールのインスタンスを生成して、キャラクターを削除するようにしています。

もともとのキャラクターに付けるスクリプト

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

public class agentScript : MonoBehaviour
{
    public GameObject ragdoll; // ラグドールのプレハブ
    Rigidbody rb;

    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.collider.CompareTag("Rock"))
        {
            Instantiate(ragdoll,transform.position,transform.rotation); // ラグドールを生成

            Destroy(gameObject); // キャラクターを削除
        }
    }
}

コメントを残す

メールアドレスが公開されることはありません。