기본 세팅 설정
프로젝트세팅 > 프로젝트 맵&모드 > StartupMap > "Collision"
당분간 충돌체크 맵 관련해서 작업을 할 것이기 때문에 작업에 용이하게 변경
이벤트 작성
3번째 작성해 두었던 블루프린트를 활용해 Collision의 두가지 종류를 정의할 수 있는 이벤트를 작성
1. Overlap (겹침)
1) "Generate Overlap Events" 가 체크되어 있는지 검토
기본적으로 Collision은 이 탭에서 관리를 하는데,
"Generate Overlap Events" 가 켜져 있어야 Overlap 이벤트를 작동시킬 수 있음
2) "On Component Begin Overlap" 이벤트 함수 생성
On Component Begin Overlap : 겹침 시작
On Component End overlap : 겹침 종료
생성된 함수가 정상작동하는지 Print String을 통해 확인하기 위해
Overlap 되었을 경우 "Overlap" 을 출력하도록 함
3) Overlap Test
Overlap의 조건 : 충돌하려는 두 물체는 모두 Generate Overlap이 모두 켜져 있어야 실행 됨
부딫힐 물체에 Overlap Events 체크가 되어있는지 확인
게임모드를 플레이 하면 다음과 같이 "Overlap" 로그가 뜨는 것을 확인 할 수 있다.
2. Hit (Block)
다음과 같이 "On Compenent Hit" 이벤트 함수가 발생했을때 "Hit" 로고 가 뜰 수 있도록 블루프린트를 설정한다.
* On component Hit : 충돌하려는 두 물체 중 하나만 Simulation Generate Hits Event가 켜져 있으면 발생함
Hit 이벤트가 일어날 수 있게 끔
컴파일 후 확인해 보면 다음과 같이 지속적으로 "Hit" 이 일어나는 것을 확인할 수 있다.
* 위의 경우에서 오버랩도 체크되어 있지만 활성화 되지 않는 이유는 "Hit" 가 발생되면서 두가지 오브젝트가 "Overlap" 되지 않기 때문입니다.
Collision preset : 해당 물체가 어떻게 반응할지를 결정함
세팅 > 프로젝트 세팅 > 콜리전 > Preset(프로파일) 에서 정의 되어 있는 정보를 확인 할 수 있다.
"편집..." 버튼을 통해서 정보를 확인하면 다음과 같다
1) 콜리전 켜짐
Query Only : 겹침만 허용하겠다.
Physics Only : 블럭만 허용하겠다.
Collision Enabled : 겹침도 허용하고 블럭도 허용하겠다.
2) 오브젝트 유형 : 충돌을 검출(체크) 하려는 오브젝트의 유형
*여기서 콜리전 여부 검토 및 편집가능
오브젝트가 충돌을 주는 오브젝트에 대한 속성
WorldStatic : 고정된 물체일 때
WorldDynamic : 이동하는 물체일 때
Pawn : 플레이어 일때
* "Collision" < "Collision Preset" 을 확인해 보면 Pawn 으로 되어있음
Physics Body : 물리가 켜져있는 상태
* 방금 제작했던 콜라이더 블루프린터 확인해보면 콜리전 프리셋 < "PhysicsActor (이름)" < "PhysicsBody (오브젝트 타입)" 로 되어있음
* "PhysicsActor" : 물리 엑터들을 제어할 수 있도록 해놓은 것들
Vechicle : 차랑 자동차 이런거를 정의할 때 사용
Distructable : 파괴가능한 물체일 때
콜리전 프리셋 > "Custom..." 선택할 수 도 있음
*보통은 위와 같이 "Query and Physics" 를 체크한다.
"무시" 체크 후, Pawn(플레이어), PhysicsBody(떨어지는 물리) 두가지 체크
위의 경우,
1) 큐브가 떨어지며 부딫혔을경우 Hit
2) Pawn(플레이어)와 Overlap이 활성화 된다.
<Collision 정리>
파란부분 : 주는 것 - 자기가 가서 충돌할때 어떤 역할을 할 것인지에 대한 결정
빨간부분 : 받는 것 - 어떤 애에대해서 Hit 할건지 Overlap할건지에 대한 결정
다음 토글을 이용해 Collision 여부를 활성 / 비활성 할 수 있다.
Collision 이벤트 함수 요소에 대한 이해
1. Hit component : 충돌이 된 오브젝트(당한)를 출력 (ex. BP_03_Collision의 Box Collision)
2. Other Actor : 충돌시킨 오브젝트(주체)를 출력 (ex. Cube의 StaticMeshComponent )
... 나머지 구성요소에 대한 설명은 지금은 생략하지만
* Sweep Result : 스윕되었을 때 결과가 나오는 아이 (겹침되었을때), Hit : 충돌 되었을 때 어떠한 정보를 읽어 내주는 아이
Actor를 활용한 라이트 구현
* Actor : "Overlap" 를 간단히 사용할 때 사용, 예를들어 어느 구역에 들어갔을 때 불이 켜진다
1. "BP_04_Trigger_Light" 블루프린트 액터 생성
2. 컴포넌트 추가 > Box collision > Scale (1.5, 1.5, 3.0)
3. 컴포넌트 추가 > Point Light (비춰지는 범위)
4. 제작한 블루프린트 라이트를 다음과 같이 배치
5. 컴포넌트 추가 > 텍스트렌더러 > 다음과 같이 설정
6. 다음과 같이 배치
7. 라이트를 다음과 같이 설정
이벤트 그래프 설정
* 기본적으로 라이트를 끄고 플레이어가 근처로 이동하면 켜지게 끔 구현
1) Begin Play 이벤트 함수 생성
2) Point Light 가져오기
3) Set Visibility 함수 가져오기 (Rendering > Visible에 영향을 미침)
4) 이벤트 함수를 통해 "point light" 을 껐다 켰다 할 것이기 때문에 Visible 토글을 비활성화 해 준다
5) "Actor Begin Overlap", "Actor End Overlap" 이벤트 함수를 생성하고 다음과 같이 설정해줌
(Visibility 토글 비활성화 활성화 부분 확인)
* 충돌하려는애, 충돌받으려는 애 둘다 Collision이 있어야 함, "Generate Overlap"이 켜져 있어야 함
* Actor Begin Overlap : 컴포넌트 겹침보다 가볍게 쓰고 싶을 때 사용, Overlap의 조건과 마찬가지로 양쪽의 Generate Overlap이 모두 켜져 있어야 실행됨
6) 더 가시적인 확인을 위해 Box > Hidden in Game 토글 비활성화
7) 컴파일 후 실행하여 보면 충돌 Overlap 하였을 경우 빛이 켜졌다 꺼졌다 하는 것을 확인 할 수 있음
오브젝트 타입에 관해서는 다음시간에 이어서 계속 다루기로 하셨다.
요소 하나하나 나누어서 다루어 주셔서 활용법에 대해 연상해보거나 전체적인 구조를 파악하는 것에 도움이 많이 되었던 것 같다.
'Unreal Engine > 게임클래스 - 언리얼엔진 기초' 카테고리의 다른 글
[12강] Line Trace와 Material (0) | 2023.08.16 |
---|---|
[11강] 객체 찾기와 반복문 (0) | 2023.07.25 |
[9강] Collision (0) | 2023.07.19 |
[8강] State Machine (0) | 2023.07.19 |
[7강] 카메라 방향으로 이동과 줌 인/아웃 (0) | 2023.07.18 |