TIL 41 3D Project

qkrrlcks00·2024년 10월 24일
post-thumbnail

체력바 만들기

일단 이렇게 세팅을 해놓고
2D Sprite를 PacageManager에서 깔아줍니다


그후 에셋 폴더안에는 텍스쳐에서 Create - 2d - Sprites - Square 해서 하나 만들어주고, 여기서 나온걸 healthbar의 이미지에 넣어줍니다

Imaage Tpye을 Filed로 바꿔줍니다. Fill Method도 Horizaontal로 바꿔줍니다

그러면 이제 Fill Amount를 조절해보면 바가 움직이는걸 확인할 수 있습니다.

이제 배고픔과 스태이미너도 만들어야합니다

지금 체력바 위치에서 Ctrl + D 를 할건데 이때 Vertical Layout Group컴포넌트를 상위 폴더에 추가해놓으면 복사할때 알아서 정렬이 됩니다.

Child Alignment : 정렬기준도 정해줄 수 있습니다.
Padding : 상하좌우 어느정도 여백을 만들어줄수 있는지 정해줄수있습니다.
Spacing : 오브젝트끼리의 간격을 설정해줄 수 있습니다.

Vertical Layout : 세로로 정렬 > 지금 쓴거죠?
Horizontal Layout Group : 가로로 정렬
Grid Layout Group 은 상하좌우 정렬 > 추후 인벤토리 만들때 활용해 보겠습니다.

TryGetComponent

유니티에서 사용하는 메서드로 게임 오브젝트의 컴포넌트를 가져오는 기능을 제공합니다. 이 메서드를 사용하면 특정 컴포넌트가 게임 오브젝트에 연결되어 있는지 확인하고 연결되어 있다면 해당 컴포넌트를 가져올 수 있습니다. 이는 bool값을 반환합니다.

public bool TryGetComponent<T>(out T component) where T : Component;

위에 예시를 보면 Component라는 변수로 우리는 리지드바디를 가져올수 있습니다
T : 가져오려는 컴포넌트 타입입니다. MonoBehaviour를 상속한 컴포넌트는 모두 사용 가능합니다. 만약 이 T에 리지드바디가 적혀있으면 해당되는 T에 리지드바디가 들어갑니다 한마디로 여러가지 클래스 혹은 여러가지 자료형식에 대응 가능한 키워드입니다.
component : 컴포넌트를 가져올 때 사용되는 out 매개변수입니다.
TryGetComponent : 컴포넌트가 없어도 예외를 발생시키지 않고, 컴포넌트가 있으면 해당 컴포넌트를 가져와서 사용할 수 있습니다. 이를 통해 더 안전하게 컴포넌트를 가져오고 사용할 수 있습니다.
컴포넌트가 없을때 GetComponent를 사용하면 null이 뜨면서 그 아래 코드는 전부 실행되지 않는데요, 이를 방지하기 위해서 TryGetComponent를 사용합니다

카메라 절두채

피라미드 같은 모양의 윗부분을 밑면에 병렬로 잘라낸 입체 형상인 절두체를 카메라 랜더링에 적용한 것을 말합니다.

시야 범위(FOV)와 Near Clipping Plane, Far Clipping Plane 등의 값을 조절해 절두체의 모양을 바꿀 수 있으며, 랜더링 할 범위를 지정해줄 수 있습니다.

Coroutine

작업을 다수의 프레임에 분산하는 메서드입니다. Unity에서 코루틴은 실행을 일시 정지하고 제어를 Unity에 반환하지만 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드입니다.
하지만 코루틴은 스레드가 아니라는 점을 명심해야 합니다. 코루틴의 동기 작업은 여전히 메인 스레드에서 실행됩니다.

동기식 : 클라이언트와 작업을 하다가 서버에게 작업하라고 넘겨줍니다 그렇게되면 클라이언트는 작업을 할 수 없고 서버의 작업이 끝나면 다시 넘겨받아 작업을 시작할 수 있게됩니다.
수행해야 할 작업이 5개가 있다면 각각의 작업이 끝나기 전까지는 다음 작업을 수행하지 못합니다.
한마디로 다른작업을 수행할 때 기존에 있던 작업을 실행할수 없습니다.
비동기식 : 한마디로 동시에 작업할 수 있습니다.


코루틴은 비동기식처럼 보이지만, 사실은 동기식입니다.

Light

라이트 소스 : 게임 또는 3D 랜더링에 광원을 추가하는 데 사용된다. 이것은 특정 위치 또는 방향에서 발생하는 빛을 나타낸다.

유형

  • 점 광원 : 모든 방향으로 균등하게 빛을 발산하는 광원, 멀어질수록 빛이 옅어진다. (전구, 은은한 가로등)
  • 방향성 라이트 : 무한히 멀리 위치하여 한 방향으로 빛을 발산하는 광원
  • 스포트라이트 : 씬의 한 점에 위치하여 원뿔 모양으로 빛을 발산하는 광원 (손전등, 무대위의 조명, 바닥에 내리꽂는 가로등)
  • 면 광원 : 표면 영역 전체에 걸쳐 균등하게 모든 방향으로 빛을 방출, 사각형의 한쪽 면에서만 빛을 방출하는 광원
  • 속성 : 위치, 방향, 강도(intensiy), 색상(color), 범위(range), 각도(angle) 등이 있다.
  • 그림자 : 라이트와 객체 사이의 관계에 따라 그림자는 라이트가 부딪히는 객체 뒤에 생성.
  • 성능 : 라이트는 렌더링 성능에 큰 영향을 미친다. 특히 그림자가 포함된 경우 렌더링 성능에 부정적인 영향을 미칠 수 있어 최적화에 신경 써야 함.
  • Lighting Intensity Multiplier : 실제 환경의 빛을 조절한다.
  • Reflecting Intensity Multiplier : 실제 오브젝트에 반사되는 정도를 조절한다.

AnimationCurve

Unity에서 애니메이션의 키프레임(Keyframe)을 사용하여 값을 보간(interpolate)하는데 사용되는 클래스입니다. 이 클래스를 사용하여 시간에 따라 값을 부드럽게 변화시키는 커브를 정의하고, 이를 기반으로 애니메이션을 만들 수 있습니다.

AnimationCurve 클래스의 기본적인 구성 요소

  • 키프레임(Keyframe): 시간에 따른 값을 정의하는 점을 의미합니다. 키프레임은 시간(t)과 해당 시간에 대응하는 값(value)으로 이루어집니다.
  • 보간 방식(Interpolation Mode): 인접한 키프레임 사이의 값을 보간하는 방법을 지정합니다. 기본적으로는 Cubic Bezier 보간이 사용되며, 선형, 스텝, 등 다양한 보간 방식을 선택할 수 있습니다.

AddKey: 새로운 키프레임을 추가합니다.
Evaluate: 특정 시간에 해당하는 값을 보간하여 반환합니다.
keys: 키프레임의 배열을 가져옵니다. 이를 통해 키프레임들을 추가, 수정, 삭제할 수 있습니다.

0개의 댓글