내일배움캠프(Unity)
숙련 주차 팀프로젝트 3 - 방해물 넉백, ragdoll
빵어
2024. 1. 4. 23:28
Ragdoll 키고 끄는 코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerRagdollController : MonoBehaviour
{
private Animator _animator;
private PlayerController _playerController;
[SerializeField] private Rigidbody[] _lagdollRigidbodies;
[SerializeField] private Collider[] _lagdollColliders;
Coroutine _co;
private void Start()
{
_animator = GetComponent<Animator>();
_playerController = GetComponent<PlayerController>();
SetRagdollState(false);
}
public void SetRagdollState(bool state)
{
_animator.enabled = !state;
foreach(Rigidbody rb in _lagdollRigidbodies)
{
rb.isKinematic = !state;
}
foreach(Collider col in _lagdollColliders)
{
col.enabled = state;
}
if (state && _co == null)
{
_co = StartCoroutine(ReleaseRagdoll());
}
}
IEnumerator ReleaseRagdoll()
{
_playerController.inputState = PlayerInputState.Locked;
yield return new WaitForSeconds(5f);
_animator.enabled = true;
foreach (Rigidbody rb in _lagdollRigidbodies)
{
rb.isKinematic = true;
}
foreach (Collider col in _lagdollColliders)
{
col.enabled = false;
}
_co = null;
_playerController.inputState = PlayerInputState.UnLocked;
}
}