▣ Root (Hips):
캐릭터의 중심이 되는 pelvis를 사용합니다. 이 본은 상체와 하체를 연결하는 중심입니다.
Left Hips / Right Hips:
왼쪽과 오른쪽 다리의 상단 부분에 해당하는 thigh_l 및 thigh_r를 사용합니다.
이 본들은 다리의 시작점이며 관절의 중요한 부분입니다.
Left Knee / Right Knee:
무릎에 해당하는 본으로 calf_l와 calf_r를 사용합니다.
이 본들은 허벅지와 종아리를 이어주는 역할을 합니다.
Left Arm / Right Arm:
왼팔과 오른팔의 상단에 해당하는 upperarm_l 및 upperarm_r를 사용합니다.
Left Elbow / Right Elbow:
팔꿈치 부분으로 lowerarm_l 및 lowerarm_r를 사용합니다.
Middle Spine:
spine_02를 사용합니다. 척추의 중간 부분이며 상체와 하체를 연결합니다.
Head:
head 본을 사용합니다. 머리의 물리적 충돌을 처리합니다.
▣ 1. Total Mass (전체 질량)
설명: 캐릭터의 전체 질량(무게)을 설정합니다.
이 값은 캐릭터의 모든 본(Bone)에 나누어 적용되며, Rigidbody의 mass 속성에 반영됩니다.
값이 높을수록 캐릭터가 무거워지고, 충돌 시 더 느리고 강한 물리 반응을 보입니다.
기본 값: 보통 50~100kg 정도가 적당합니다. (인간 캐릭터 기준)
예시:
50: 비교적 가벼운 캐릭터로, 빠르게 움직이지만 충돌 시 쉽게 밀려날 수 있음.
100: 일반적인 사람의 무게를 표현하며, 적당한 충돌 반응을 보임.
200+: 무거운 캐릭터(예: 로봇이나 거인)로 충돌 시 쉽게 움직이지 않음.
사용 시 주의점:
너무 가벼운 값(예: 10kg 이하)을 설정하면 물리엔진에서 캐릭터가 비정상적으로 튀는 현상이 발생할 수 있습니다.
Strength (강도)
설명: 캐릭터의 관절 강도를 의미합니다.
이는 각 본(Bone)에 적용된 Joint(관절)의 spring 및 damper 속성에 영향을 줍니다.
값이 높을수록 관절이 뻣뻣하고 강하게 유지되며, 값이 낮을수록 관절이 부드럽게 움직입니다.
기본 값: 일반적으로 0~1 사이의 값을 사용합니다.
예시:
0.1~0.3: 관절이 매우 부드러워 캐릭터가 풀어진 인형처럼 느슨하게 움직입니다.
0.5: 균형 잡힌 강도로 자연스러운 물리 동작을 보여줍니다.
1.0 이상: 관절이 거의 고정된 것처럼 강하게 유지되어 캐릭터가 뻣뻣해집니다.
사용 시 주의점:
값이 너무 높으면 캐릭터의 움직임이 어색해질 수 있고, 너무 낮으면 관절이 풀려 캐릭터가 흐물흐물해 보일 수 있습니다. 게임의 컨셉에 따라 적절한 값을 설정하세요.
▣ Flip Forward (앞으로 뒤집기)
설명: 이 옵션은 캐릭터의 초기 방향을 조절하는 데 사용됩니다. 체크하면 캐릭터가 앞쪽 방향으로 뒤집혀 배치됩니다.
사용 예시:
만약 캐릭터의 기본 포즈가 T 포즈인데 앞을 바라보는 방향이 잘못된 경우, 이 옵션을 통해 앞뒤 방향을 조정할 수 있습니다.
캐릭터가 물리적으로 처음 배치될 때 머리부터 떨어지거나 특정 방향으로 쓰러지도록 조정할 수 있습니다.
체크해야 할 때:
캐릭터가 Unity에서 기본적으로 잘못된 방향을 바라보고 있는 경우.
모델링 도구에서 제작된 방향이 Unity의 월드 축과 다를 때. (예: Blender 등에서 Z 축과 Y 축 불일치 문제)
▣ 권장 설정 조합 예시
인간 캐릭터:
Total Mass: 70
Strength: 0.5
Flip Forward: Off
거대한 로봇 캐릭터:
Total Mass: 300
Strength: 1.0
Flip Forward: On
부드러운 인형 같은 캐릭터:
Total Mass: 30
Strength: 0.2
Flip Forward: Off
▣ 코드 설명
Start() 메서드
캐릭터가 시작될 때 Ragdoll의 모든 Rigidbody와 Collider를 가져와서 배열에 저장합니다.
기본 상태에서는 Animator가 활성화되어 있고, Ragdoll은 비활성화된 상태로 시작합니다.
SetRagdollState() 메서드
Ragdoll의 모든 Rigidbody를 Kinematic으로 설정하거나 해제합니다.
또한 Collider의 활성화 여부도 제어합니다.
ActivateRagdoll() 메서드
캐릭터가 쓰러지거나 죽었을 때 Animator를 비활성화하고, Ragdoll을 활성화합니다.
TakeDamage() 메서드
외부에서 이 함수를 호출해 데미지를 줄 수 있습니다. HP가 0 이하로 떨어지면 Ragdoll 상태로 전환됩니다.
https://docs.unity3d.com/kr/530/Manual/wizard-RagdollWizard.html
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 ObstacleManager(장애물관리) (1) | 2024.10.15 |
---|---|
유니티 Player Fall GameOver (0) | 2024.10.15 |
유니티 Jumping (6) | 2024.10.12 |
유니티 Aim 상체 회전(애니메이션 상체 방향 문제) (0) | 2024.10.11 |
유니티 FogEffect (0) | 2024.10.11 |
댓글