Unity Character Joint 사용법 및 예제
Unity의 Character Joint는 물리적인 상호작용을 처리하는 데 있어 중요한 도구입니다. 주로 래그돌 효과를 내기 위해 사용되며, 다양한 속성을 통해 캐릭터의 움직임을 세밀하게 조정할 수 있습니다. 이 문서에서는 Character Joint의 주요 속성과 함께 구현 예제를 소개합니다.
Character Joint 소개
Character Joint는 볼 소켓 관절을 확장한 형태로, 각 축에 대한 관절 제한이 가능합니다. 주로 캐릭터의 팔이나 다리와 같이 복잡한 움직임을 가진 객체에 대해 사용됩니다.
주요 속성
| 프로퍼티 | 기능 |
|---|---|
| Connected Body | 조인트가 의존하는 Rigidbody에 대한 선택적 레퍼런스입니다. |
| Anchor | 로컬 공간에서 조인트의 회전 포인트를 의미합니다. |
| Auto Configure Connected Anchor | 연결된 앵커 포지션을 자동으로 계산할지 여부를 설정합니다. |
| Connected Anchor | 연결된 앵커 포지션의 매뉴얼 설정입니다. |
| Swing Axis | 스윙 축을 나타냅니다. |
| Low Twist Limit | 조인트의 하한 값을 설정합니다. |
| High Twist Limit | 조인트의 상한 값을 설정합니다. |
| Break Force | 조인트를 파괴하기 위해 필요한 힘입니다. |
| Break Torque | 조인트를 파괴하기 위해 필요한 토크입니다. |
| Enable Collision | 조인트로 연결된 바디 간 충돌을 활성화할 수 있습니다. |
Character Joint 설정
Character Joint를 설정하는 단계는 다음과 같습니다.
- GameObject 생성
- 캐릭터를 구성할 GameObject를 생성합니다.
- Rigidbody 추가
- GameObject에 Rigidbody를 추가합니다. Character Joint는 Rigidbody가 필요합니다.
- Character Joint 추가
- Rigidbody에 Character Joint 컴포넌트를 추가합니다.
- 속성 설정
- 필요한 속성을 적절히 설정합니다. 예를 들어,
Low Twist Limit과High Twist Limit을 조정하여 회전 제한을 설정합니다.
예제: 캐릭터 팔 만들기
using UnityEngine;
public class CharacterArm : MonoBehaviour
{
public Rigidbody connectedRigidBody; // 연결할 Rigidbody 참조
private CharacterJoint characterJoint;
void Start()
{
characterJoint = gameObject.AddComponent<CharacterJoint>();
characterJoint.connectedBody = connectedRigidBody; // 연결된 Rigidbody 설정
characterJoint.anchor = Vector3.zero; // 조인트 위치 설정
characterJoint.swingAxis = new Vector3(0, 1, 0); // 스윙 축 설정
// 트위스트 제한을 설정하는 예
characterJoint.lowTwistLimit = new SoftJointLimit() { limit = -30 };
characterJoint.highTwistLimit = new SoftJointLimit() { limit = 60 };
// 스윙 제한을 설정하는 예
characterJoint.swing1Limit = new SoftJointLimit() { limit = 30 };
characterJoint.swing2Limit = new SoftJointLimit() { limit = 40 };
}
}
이 스크립트는 캐릭터의 팔에 Character Joint를 추가하는 코드를 구현합니다. 연결할 Rigidbody를 설정하고, 조인트의 스윙 및 트위스트 제한을 정의합니다.
요약
Unity의 Character Joint를 활용하면 더욱 자연스러운 캐릭터 애니메이션 및 물리적 상호작용을 구현할 수 있습니다. 다양한 속성을 적절히 조정하여 캐릭터의 움직임을 제어하는 것이 가능합니다. 이번 문서에서는 Character Joint의 기본 개념과 간단한 예제를 제공하였으며, 실제 프로젝트에 응용하여 보다 복잡한 물리 기반 애니메이션을 설계할 수 있습니다.