[Go-Unity 3D] 11. 3D CharacterController 컴포넌트 ⭐

업데이트:

카테고리:

태그: , ,


CharacterController, Slope Limit, Step Offset 3D움직임, 경사각, 계단

고박사의 유니티 기초를 정리.

3D

1.Character Controller

  • 3차원 게임에서 사람 형태의 캐릭터 움직임과 관련된 제어를 위해 사용
  • 캡슐 형태의 충돌 범위가 포함되어 있다.

image

  • Slope Limit : 올라갈 수 있는 경사 한계 각
  • Step Offset : 설정 값보다 낮은 높이의 계단을 오를 수 있다.
  • Center : Capsule 충돌 범위의 중심점
  • Radius : Capsule 충돌 범위의 반지름 (x,z)
  • Height : Capsule 충돌 범위의 높이 (y)






2. 이동,점프 CS

1). Movement3D.cs

Movement3D.cs

using UnityEngine;
public class Movement3D : MonoBehaviour
{
    [SerializeField]
    private float   moveSpeed = 5.0f;   //이동 속도
    private float   gravity = -9.81f;   //중력 계수
    private float   jumpForce = 3.0f;   //점프 힘
    private Vector3 moveDirection;      //이동 방향
    
    private CharacterController characterController;
    private void Awake() {
        characterController = GetComponent<CharacterController>();
    }

    private void Update() {
        if (characterController.isGrounded ==false){
            //땅에 있지않으면 중력적용
            moveDirection.y += gravity * Time.deltaTime;
        }
        characterController.Move(moveDirection * moveSpeed * Time.deltaTime);
    }

    public void MoveTo(Vector3 direction){
        //moveDirection = direction;
        moveDirection = new Vector3(direction.x, moveDirection.y, direction.z);
    }
    public void JumpTo(){
        if (characterController.isGrounded ==true){
            moveDirection.y = jumpForce;
        }
    }
} 
  • moveto => 방향으로 이동하기, 중력적용
  • Jumpto => 조건만족시 점프

2). PlayerContorller

PlayerContorller.cs

using UnityEngine;
public class PlayerContorller : MonoBehaviour
{
    private Movement3D movement3D;
    private void Awake() {
        movement3D = GetComponent<Movement3D>();
    }
    private void Update() {
        if (Input.GetKeyDown(KeyCode.Space)){
            movement3D.JumpTo();
        }
        float x = Input.GetAxisRaw("Horizontal");
        float z = Input.GetAxisRaw("Vertical");

        movement3D.MoveTo(new Vector3(x,0,z));
    }
}

  • 상하좌우 이동
  • Movement3D moveto,jumpto 상황에맞게 사용




3.경사,계단

Character Controller
image

  • Slope Limit : 각이 x이하일때 경사를 오를 수 있다.
  • Step Offset : 계단의 높이 차이가 x이하일때 오를 수 있다.




4. Character Controller 정리

  • 3D움직임의 제어에 사용
  • Capsule 충돌 범위를 가지고있다.
  • 경사각, 계단 오르는정도를 설정할 수 있다.
  • 3D는 중력을 코드로 추가 해주어야 되는것 같다.


참고 : 유니티 TOP


📔

댓글남기기