ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 유니티 숙련주차 1
    TIL 2024. 5. 24. 21:03

    스카이박스(Skybox)

    게임 세계를 둘러싸는 환경 매핑 기술. 큐브 맵과 구체형 스카이박스 등이 있으며 다음과 같은 특징을 가진다.

    스카이 박스는 6개의 텍스처로 구성된 큐브 맵 또는 하나의 구체로 텍스처가 매핑된 구체형 스카이 박스로 구성된다.

     

    • Unity에서는 씬의 배경으로 사용되며 게임 환경을 확장시키는데 활용
    • 주로 자연적인 배경을 표현하는데 사용
    • 게임 중에 스카이 박스를ㄹ 동적으로 변경하여 낮과 밤 등의 시간대나 특정 이벤트에 맞게 배경을 변화시킬 수 있다.
    • 성능에 영향을 미치므로 최적화에 주의

     

    Material 생성 후 Shader에 Skybox / Provedural 로 변경

    Window- Rendering- Lighting - Environment 에서 Skybox Material을 변경

    • Sky Tint : 하늘의 색깔을 바꿔줄 수 있다.
    • ground : 지평선 아래쪽의 색깔을 변경
    • Exposure : 밝고 어두움을 조절한다

     

    Rigidbody - Forcemde

    Rigidbody를 사용하여 오브젝트에 물리적인 힘을 가할 때 Force를 사용하여 다양한 힘 적용방식을 설정할 수 있다.

     

    1.Force : 힘을 지속적으로 적용

    Rigidbody.AddForce(Vector3 force, ForceMode.Force);

     

    2. Acceleration : 가속도를 적용하여 이전 힘의 누적에 따라 점점 더 빠르게 움직인다. 

    Rigidbody.AddForce(Vector3 force, ForceMode.Acceleration);

     

    3.Impulse : 순간적인 힘을 적용한다. 짧은 시간에 갑작스러운 움직임이 발생

    Rigidbody.AddForce(Vector3 force, ForceMode.Impulse);

     

    4.VelocityChange : 변화하는 속도를 적용한다. 물체의 현재 속도를 변경하며 움직인다.

    Rigidbody.AddForce(Vector3 force, ForceMode.VelocityChange);

     

     

    Raycast

    Ray 

    직선의 시작점(origin)과 방향(direction)

    Ray ray = new Ray(transform.position, transform.forward); // 오브젝트
    Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0)); // 카메라 중심
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); // 마우스

    Raycast 

    눈에 보이지 않은 광선(Ray)에 맞은 물체가 무엇인지 판단한 뒤 여러 처리를 하는 방식

    Ray, RaycastHit, MaxDistance, LayerMask 등

     

    RaycastHit 

    Raycast에 의해 판단된 객체의 정보

     

    • RaycastHit.point : 레이캐스팅이 감지된 위치
    • RaycastHit.distance : Ray의 원점에서 충돌 지점까지의 거리
    • RaycastHit.transform : 충돌 객체의 transform에 대한 참조

     

    InputSystem

    SendMessage vs InvokeEvent

     

    1. SendMessage (그동안 프로젝트에서 썼던 방법)

    • "On + Action name" 인 함수를 찾아서 호출
    private void Start()
    {
        controller.OnMoveEvent += Move;
        controller.OnDashEvent += Dash;
    }
    
    private void Dash(bool push)
    {
        if(push)//대시 키를 누르고 있다면
        {
            speed = characterStatHandler.characterInfo.runSpeed; 
        }
        else
        {
            speed = characterStatHandler.characterInfo.moveSpeed;
        }
    }
    
    private void Move(Vector2 direaction)
    {
        moveDireaction=direaction;
    }

     

    2. InvokeEvent (버튼에다가 함수 집어넣던 것 처럼 사용)

    • Inspector 상에서 Action에 함수를 설정하고 키 입력이 들어 왔을 때 호출

     

    3. Invoke C sharp Events (나중에 써 볼 방법)

    • C# 스크립트에서 InvokeEvent 과정을 수행
    • 세부적으로 이벤트를 등록할 수 있다.

    'TIL' 카테고리의 다른 글

    [TIL] 유니티 숙련주차 3  (0) 2024.05.28
    [TIL] 유니티 숙련주차 2  (0) 2024.05.27
    [TIL] 객체지향 코드 설계 2  (0) 2024.05.23
    [TIL] 유니티 문법활용  (0) 2024.05.22
    [TIL] VS Code / VisualStudio  (0) 2024.05.21
Designed by Tistory.