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축으로 힘을 준다.
}
}
}
'유니티 > 컴포넌트' 카테고리의 다른 글
유니티) 2D Sprite 타일맵 그리기 충돌처리 TileMap #1 (0) | 2019.01.10 |
---|---|
유니티) 룰타일 & 타일맵 레이어 TileMap #2 (0) | 2019.01.08 |
유니티) 파티클시스템(Particle System) 파티클로 스킬넣기 (1) | 2019.01.01 |
유니티)TrailRenderer 총알,발사체 효과내기 (2) | 2018.12.26 |
유니티) 3D 물리 Physics #1 (리지드바디,Adding Physics Troque,Physics Joints Hinge joints) (0) | 2018.12.12 |