ラグドールを新規作成します。
体のパーツを設定するウィンドウが出るので、ヒエラルキー上にあるキャラクターの対応するパーツをドラッグアンドドロップします。
名前が違うものもありますが、ヒエラルキー上のパーツの名前をクリックすると、それがどの部分なのかがシーンを見るとわかるのであまり迷いません。
全部入れたら 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); // キャラクターを削除
}
}
}