본문 바로가기
개발/C#

유니티 C# 레그돌 Ragedoll 사용법 간단 구현

by SPNK 2024. 2. 26.
반응형

코드 작성

using UnityEngine;

public class RagdollController : MonoBehaviour
{
    // 레그돌로 전환할 때 비활성화할 컴포넌트들의 배열
    private Rigidbody[] rigidbodies;
    private Collider[] colliders;

    // 레그돌 상태 여부를 나타내는 변수
    private bool isRagdoll = false;

    void Start()
    {
        // 레그돌로 전환할 때 비활성화할 컴포넌트들을 초기화
        rigidbodies = GetComponentsInChildren<Rigidbody>();
        colliders = GetComponentsInChildren<Collider>();

        // 초기에는 레그돌을 비활성화
        SetRagdollEnabled(false);
    }

    void Update()
    {
        // 예시: 특정 조건이 충족되면 레그돌로 전환
        if (Input.GetKeyDown(KeyCode.Space))
        {
            ToggleRagdoll();
        }
    }

    void ToggleRagdoll()
    {
        isRagdoll = !isRagdoll;

        // 레그돌 상태에 따라 레그돌을 활성화 또는 비활성화
        SetRagdollEnabled(isRagdoll);
    }

    void SetRagdollEnabled(bool enable)
    {
        // 레그돌 상태에 따라 Rigidbody와 Collider를 활성화 또는 비활성화
        foreach (Rigidbody rb in rigidbodies)
        {
            rb.isKinematic = !enable;
        }

        foreach (Collider col in colliders)
        {
            col.enabled = enable;
        }
    }
}
반응형

댓글