Character Controller


캐릭터 컨트롤러(컴포넌트)

캐릭터 컨트롤러(CharacterController)는 리지드바디(rigidbody)를 다루지 않고,

충돌에 의한 움직임을 다루기 쉽도록 해준다.


캐릭터 컨트롤러는 힘(관성, 중력 등)에 의해 영향을 받지 않고, Move함수가 호출되었을 때만 움직이게 됩니다.

충돌에 의해 힘이 가해졌을 때에만 움직임을 수행한다.


Slope Limit : 경사의 한계를 도의 단위로 나타낸다.

stepOffset : 캐릭터 컨트롤러의 단위의 스텝 오프셋값을 나타낸다(설정 값보다 낮은 높이의 계단만 오를 수 있다.)

Skin Width:  미터단위의 오프셋 설정값보다 낮은 계단만 오를 수 있다.

Center : 플레이의 무게중심

Radius : 캡슐의 반지름

Height : 캐릭터의 캡슐의 높이




CharacterController가 사용할 수 있는 기능과 설정



void Start ()

{

m_Ctrl = GetComponent<CharacterController>(); //컴포넌트에 접근하기 위해 m_Ctrl 필드명을 설정해준다.


}

void Update()

{

if( m_Ctrl.isGrounded == true ) //캐릭터가 땅에 위치하면

{

float fRot = fRotSpeed * Time.deltaTime;

float hor = Input.GetAxis("Horizontal");

float ver = Input.GetAxis("Vertical");

transform.Rotate(Vector3.up * hor * fRot); //Rotate(회전할 기준 좌표 축 * 변위값 * 회전속도)


moveDir = new Vector3(0, 0, ver * fMoveSpeed); //왼쪽과 오른쪽 키보드입력은 이동이 아닌 방향을 바꿈

//캐릭터는 앞으로만 움직이기 때문에 Vertical만 Vector값을 설정한다.

moveDir = transform.TransformDirection(moveDir); //로컬 좌표계 -> 월드 좌표계

if( Input.GetButton("Jump") == true )

{

moveDir.y = fJumpSpeed; //점프 버튼(스페이스바) 입력시 y축으로 힘을 준다.

}

}

}




반응형

+ Recent posts