본문 바로가기
TIL

12.12 (TIL-Unity)

by 오랑이귀엽다 2023. 12. 12.

투사체 구현하기 - 핵심내용

1.레이어 비트 연산

레이어 비트 연산은 Unity에서 게임오브젝트의 레이어를 빠르게 검사하고 조작하는 방법

 

비트 연산은 AND, OR, XOR, NOT 등의 연산을 이용해 레이어 마스크를 조작

 

이 방법은 물리적 충돌, 레이캐스팅, 카메라 렌더링 등을 제어하는 데 사용

 

각 게임 오브젝트는 고유한 레이어에 배치될 수 있으며, 이 레이어는 비트 필드로 표현

 

예를 들어, levelCollisionLayer.value == (levelCollisionLayer.value | (1 << other.gameObject.layer)) 코드에서는 게임 오브젝트의 레이어가 **levelCollisionLayer**에 있는지를 확인.

여기서 **1 << other.gameObject.layer**는 **other.gameObject.layer**에 해당하는 비트를 활성화시키는 것이고, **levelCollisionLayer.value | (1 << other.gameObject.layer)**는 그 비트가 **levelCollisionLayer.value**에 이미 설정되어 있는지 확인하는 것

 

2. 쿼터니언과 백터의 곱셈

먼저 벡터 v를 쿼터니언으로 변환합니다. 이때 v = (x, y, z)인 벡터는 (0, x, y, z)라는 쿼터니언으로 변환

이렇게 변환된 벡터 쿼터니언을 원래의 쿼터니언 q와 그 켤레 쿼터니언 q와의 사이에 두고 곱셈을 수행. 즉, 결과는 qvq 형태가 된다.

이 결과로 나온 쿼터니언의 x, y, z 요소는 원래 벡터 v가 쿼터니언 q에 의해 회전한 후의 좌표를 나타냄

 

Unity에서는 Quaternion과 Vector3의 곱셈을 직접 지원하며, 이는 내부적으로 위에서 설명한 과정을 거쳐 수행

 

3. 싱글턴 패턴

"싱글턴 패턴"은 소프트웨어 디자인 패턴 중 하나로, 특정 클래스의 인스턴스가 하나만 존재하도록 보장하고,

이를 전역적으로 접근할 수 있는 글로벌 접근점을 제공하는 패턴.

 

싱글턴 패턴은 클래스의 인스턴스가 하나만 존재하도록 보장하는 디자인 패턴

싱글턴 객체는 전역적으로 접근 가능한 글로벌 접근점을 제공

 

싱글턴 패턴은 전역 변수를 사용하지 않고도 객체 간 데이터를 공유하거나, 전역적인 상태를 관리하거나, 특정 서비스를 애플리케이션 전체에서 사용할 수 있게 해준다.

 

싱글턴 패턴은 잘못 사용하면 코드의 결합도를 높이고 테스트와 유지 보수를 어렵게 할 수 있으므로 주의해서 사용해야 함

 

싱글턴 객체는 프로그램의 수명주기 동안 계속 존재하므로, 메모리 관리에 신경써야 한다.

 

 

투사체 구현하기

1. Layer 추가

아무 오브젝트의 Layer → Add Layer 클릭

 

Layer 추가

 

2. Player Layer 변경

Player의 Layer → Player 변경

다음과 같은 확인 창에서 Yes, Change Children 클릭

 

3. Tileamap Layer 변경

빈 오브젝트 추가 → Level 이름 변경

Grid를 하위 오브젝트로 넣기

Level의 Layer → Level 변경

Yes, Change Children 클릭

 

4. PojectileManaager 오브젝트 만들기

빈 오브젝트 생성

 

Arrow 프리팹 연결

 

5. Arrow 수정하기

BoxCollider 2D 추가

 

Rigidbody 2D 추가

 

Trail Renderer 추가

트레일 렌더러(Trail Renderer)는 물체가 움직일 때 그 경로를 시각적으로 나타내는 컴포넌트

주로 물체가 움직일 때 흔적이나 궤적을 표현하기 위해 사용

 

RangedAttackController 추가

 

 

 

'TIL' 카테고리의 다른 글

12.14 (TIL - Unity)  (0) 2023.12.14
12.13 (TIL - Unity)  (0) 2023.12.13
12.11 (TIL-Unity)  (0) 2023.12.11
12.08 (TIL-코딩문제)  (1) 2023.12.08
12.07 (TIL-Unity)  (0) 2023.12.07