내일배움캠프 28일차 TIL 배운 내용 정리
하늘 색 변경방법
skyboxMaterial에다가 만든 Material을 넣어주면 된다.
그리고 sky Tint와 Ground의 색상을 변경해주면 색이 바뀌는것을 볼 수 있다.
Player InputSystem
움직임을 2dVector로
보는 것은 Delta로
인벤토리와 점프, 상호작용, 공격은 버튼으로 설정해서 키값을 넣어준다.
그리고 플레이어 인풋을 플레이어에게 추가해주고 actions에 만든 input을 넣어준다.
Behavior의 SendMessages는 알아서 인풋을 찾아주는 것이다
Invoke Unity Events는 버튼 이벤트 처럼 함수를 등록해주면 된다.
Behavior의 종류에는 4가지가 있다.
- Send Messages:
- 지정된 메서드 이름으로 메시지를 전송하여 입력 이벤트를 처리한다.
- 특정 메서드를 호출하여 입력을 처리할 수 있다.
- Broadcast Messages:
- 모든 하위 오브젝트에 입력 이벤트를 전파한다.
- 자식 오브젝트에 입력을 전달하여 여러 오브젝트가 동시에 반응하도록 할 수 있다.
- Invoke Unity Events:
- UnityEvent를 사용하여 입력 이벤트를 처리한다.
- Unity의 이벤트 시스템을 활용하여 다양한 UI 요소와 상호작용할 수 있다.
- Invoke C# Events:
- 개발자가 직접 정의한 C# 이벤트로 입력을 처리한다.
- 특정 게임 로직에 맞게 입력 처리를 커스터마이즈할 수 있다.
Cursor.lockState = CursorLockMode.Locked;를 사용하면 마우스 커서가 보이지 않고 마우스를 움직여서 시야를 볼 수 있다.

마우스를 좌우로 움직이면 실제로는 y축을 회전시키는 것과 같아서 마우스의 x값을 y의 회전값으로 넣어주고 y값을 x의 회전값으로 넣어줘야 한다.
rotation x값이 -일때
rotation x값이 +일때
위와 같은 이유로 x값에 -를 넣어 -일때는 아래를 보게 +일때는 위를 보게 변경한다.
Raycast의 사용이유
Physics.Raycast(origin, direction, hit)
origin : 광선 시작 지점
direction : 광선이 발사되는 방향
hit : 광선이 부딪힌 오브젝트의 정보를 담고있는 구조체
- 충돌 감지:
- Physics.Raycast를 사용하면 게임 월드 내에서 발사된 광선(Ray)이 어떤 오브젝트와 충돌하는지 감지할 수 있다.
- 이를 통해 플레이어가 특정 오브젝트를 클릭했는지, 혹은 어떤 오브젝트와 상호작용하고 있는지 등을 확인할 수 있다.
- 거리 측정:
- Physics.Raycast는 광선이 충돌한 지점까지의 거리 정보를 제공한다.
- 이 정보를 활용하면 플레이어와 오브젝트 간의 거리를 계산할 수 있어, 상호작용 범위 설정 등에 활용할 수 있다.
- 선택적 충돌 감지:
- Physics.Raycast는 특정 레이어의 오브젝트와만 충돌을 감지하도록 설정할 수 있다.
- 이를 통해 플레이어가 원하는 오브젝트와만 상호작용할 수 있도록 제한할 수 있다.
- 효율적인 입력 처리:
- Physics.Raycast는 물리 엔진을 활용하여 입력을 처리하므로, 다른 방식에 비해 효율적이다.
- 특히 마우스 클릭, 레이저 포인터 등의 입력 처리에 적합하다.

Ui hp를 줄이는 방법으로 예전에는 스케일을 줄이는 방법으로 했지만 이번에는 다르게 했다.
3d프로젝트이기 때문에 2d Sprite를 인스톨해주고 square를 생성해준다
그다음 리소스 이미지에 추가해주면 아래와 같이 창이 뜨는데 타입을 filled로 바꿔주고 horizontal로 바꿔주면 좌우로 줄어드는 hp를 만들수 있다.
- Vertical Layout Group
- 오브젝트들을 수직으로 정렬하는 컴포넌트
- 자식오브젝트들을 세로로 배치하고 여백과 간격을 조절할 수 있다.
- HorizontalLayoutGroup
- VerticalLayoutGroup과 유사하지만, 오브젝트들을 수평으로 정렬하는 컴포넌트
- 자식 오브젝트들을 가로로 배치하고, 여백과 간격을 조절할 수 있다.
- GridLayoutGroup:
- 자식 오브젝트들을 격자 형태로 배치하는 컴포넌트
- 행과 열의 크기, 간격 등을 설정할 수 있다.
- 버튼, 아이콘, 이미지 등을 격자 형태로 배치할 때 유용하게 쓸 수 있다.
Coroutine
코루틴을 사용하면 작업을 다수의 프레임에 분산할 수 있다.
Unity에서 코루틴은 실행을 일시 정지하고 제어를 Unity에 반환하지만 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드이다.
하지만 코루틴은 스레드가 아니라는 점을 명심해야 합니다. 코루틴의 동기 작업은 여전히 메인 스레드에서 실행됩니다.
코루틴은 HTTP 전송, 에셋 로드, 파일 I/O 완료 등을 기다리는 것과 같이 긴 비동기 작업을 처리해야 하는 경우 코루틴을 사용하는 것이 가장 좋다.
https://docs.unity3d.com/kr/2022.3/Manual/Coroutines.html
코루틴 - Unity 매뉴얼
코루틴을 사용하면 작업을 다수의 프레임에 분산할 수 있습니다. Unity에서 코루틴은 실행을 일시 정지하고 제어를 Unity에 반환하지만 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드입니
docs.unity3d.com
동기와 비동기의 차이는
동기는 프로그램이 실행했을때 어떤 함수를 거칠때 함수가 다끝나고 다음 작업을 진행하는 것이 동기이다.
비동기는 프로그램이 실행했을 때 어떤 함수를거치고 바로 다음이 실행한다 함수는 개별적으로 실행한다. 즉 함수가 실행되면서 원래 실행하는 부분이 실행된다고 보면 된다.
그러나 코루틴은 비동기 같지만 동기이다.
코루틴은 동기이고 계속해서 왔다갔다 원래코드갔다가 코루틴갔다가 이런식으로 처리해서 동시에 처리하는 것 처럼 보이는 것이다.
Vector의 내적과 외적은 한쌍이다.
외적은 방향만 구할 수 있다.
외적은 수직벡터를 구한다.
내적은 각도를 구할 수 있다.
내적은 같은 방향이냐 다른방향이냐를 판별할때 사용 할 수 있다.
단위 벡터로 만들어서 사용해야 한다.
내적에서 코사인을 아크코사인으로 만들면 각도를 구할 수 있다.
유니티에서 벡터자체를 회전시키고 싶다면 쿼터니언 곱하기 벡터를 해아한다.
쿼터니언의 곱셈은 비가환적(어떤 과정이나 변화가 원래 상태로 완전히 돌아갈 수 없다는 의미)이다. 즉 쿼터니언을 곱할 때 순서가 매우 중요하다.