본문 바로가기

Unity/Unity3D

Unity3D_Week1 : Move(Character Controller)

CharacterController

유니티가 지원해주는 Character Controller로 이동에 관해 다양한 조작이 가능하다.

유니티에서는 Rigidbody 물리를 활용하지 않는 플레이어에 사용할 것을 권장한다.

Inspector 상의 Character Controller

 

ㆍSlope Limit : 캐릭터가 올라갈 수 있는 각도. (설치된 오브젝트의 각도 정도)

ㆍStep Offset :  어느 높이까지의 공중에 떠있는 물체에 올라갈 수 있는지 설정.

ㆍSkin Width : 콜라이더 끼리 관통할 수 있는 스킨 너비. 0.01 < SkinWidth < Radius의 10%

ㆍMin Move Distance : 최소 이동 거리

ㆍCenter,Radius,Height = Collider 세부설정.

 

<Script>

    [Header("Movement")]
    [SerializeField] float moveSpeed;          // 이동 속도

    CharacterController controller;            // 캐릭터 제어 컴포넌트.

 

[Header("@")]는 제목을 @로 정할 때 사용한다.

[SerializeField]는 private한 변수들을 Scene의 Inspector에 나타낼 때 사용한다.

moveSpeed를 노출시켜 Scene에서 조절하기 위해 Serialize를 해준다.

 

private void Movement()
{
    float x = Input.GetAxisRaw("Horizontal");          // 키보드 좌,우 (수평)
    float z = Input.GetAxisRaw("Vertical");            // 키보드 상,하 (후면)
    
    Vector3 direction = (transform.right * x) + (transform.forward * z);
    
    controller.Move(direction * moveSpeed * Time.deltaTime);
}

3D에서는 x가 좌/우, z가 앞/뒤, y가 위/아래를 담당하게 된다.

transform.방향 = 내 기준 방향(로컬 좌표)이다.

controller.Move(방향 * 속도 * Time.deltaTime);

private void Update()
{
	Movement();
}

 

'Unity > Unity3D' 카테고리의 다른 글

Unity3D_Week1 : 카메라 시점 변경  (0) 2021.12.23