[7월 12일]
[MOD 강좌 Chapter 5] 자주 사용하는 컴포넌트
○ TweenComponent
- 애니메이션의 시작점과 목적지 사이의 값들을 각 시간에 따라서 보관해주는 것을 Tween이라고 보면 된다.
- 등속, 등가속, 가속, 감속 등 여러 가지 설정을 활용하여 다양한 연출을 할 수 있다.
○ TweenLineComponent
- 선형 운동 방식 : Linear - 등속운동
- 동기화 방식
- ServerAuthority : 같은 서버로 동기화가 되어야 동일하게 연출된다.
- Client Only : 서버와 동기화 되지 않는다.
- 사다리 : ClimableComponent를 갖고 있다면 사다리처럼 타고 올라갈 수 있다.
- 여기에 TweenLineComponent를 추가하게 되면 움직이는 탈 것이 된다.
○ TweenCircularComponent : 원운동
○ TweenFloatingComponent : 부유운동
○ DefaultPlayer - RigidbodyComponent
- Workspace - DefaultPlayer - RigidbodyComponent
- Rigidbody : 강체(형태가 변하지 않는 물체)
- RigidbodyComponent : 강체들의 물리적인 속성을 컨트롤 한다. 물리엔진이 탑재된 것은 아니므로 완벽하진 않다.
Property | 설명 |
DownJumpSpeed | * 아래 점프 시 위로 튀어오르는 속도를 조절합니다. |
Gravity | * 중력값입니다. 공중에서 이동할 때에 지상으로 얼마나 빨리 떨어질 것인가와 연관이 있습니다. * 입력값이 클수록 더욱 더 빠르게 떨어집니다. |
IgnoreMoveBoundary | * true일 경우 지형에 의해 생성된 맵 영역을 벗어날 수 있습니다. |
IsBlockVerticalLine | * true일 경우 기본 이동과 다르게 세로 지형이 무조건 Block 됩니다. * 벽 같은 지형을 무조건 통과할 수 없도록 할 때 사용합니다. |
IsQuaterViewMove | * 기본 이동 규칙을 쿼터뷰 이동으로 변경합니다. * 쿼터뷰 이동 시 수평 수직 이동으로 개념이 변경됩니다. |
IsolatedMove | * true일 경우 일반 이동으로는 지형을 벗어나지 못하며 낭떠러지에서도 떨어지지 않습니다. * 점프 같은 외부 이동으로는 지형을 벗어날 수 있습니다. |
Mass | * 질량입니다. * 값이 클수록 가감속이 느려집니다. * 입력값이 클수록 외부요인에 대한 반응성이 낮습니다. |
QuaterViewAccelerationX | * 쿼터뷰 이동 시 X축 가속도 값을 변경합니다. |
QuaterViewAccelerationY | * 쿼터뷰 이동 시 Y축 가속도 값을 변경합니다. |
WalkAcceleration | * 지형 이동 시 가감속 값을 나타냅니다. * 입력값이 클수록 더욱 더 빠르게 최대 속도에 도달합니다. |
WalkDrg | * 지형 이동 시 미끄러짐에 저항하는 힘입니다. * 입력값이 클수록 미끄러지지 않고 빠르게 멈추게 됩니다. * 맵, 지형, 캐릭터의 속성을 계산해 최종 적용 값은 0.5부터 2 사이의 범위입니다. |
WalkJump | * 점프 시 얼마나 높게 뛰어오를지에 대한 값입니다. * 값이 클수록 높게 뜁니다. |
WalkSlant | * 지형 이동 시 경사를 얼마나 잘 넘을 수 있는지와 연관된 값입니다. * 입력값이 크면 급경사를 넘어갈 수 있습니다. * 0부터 1 사이의 값을 가집니다. |
WalkSpeed | * 지형 이동 시 최대 이동 속도 값을 조절합니다. |
Enable | * Component의 활성화 여부를 확인합니다. |
- Gravity
- 기본 설정에 의해, 공중에 Entity를 위치했을 경우 Object는 떨어지지 않고 몬스터는 떨어지는 것을 확인할 수 있다.
- Object에서도 Gravity 속성을 1로 지정해주면 떨어진다.
- 이 때, Object에 지정되어 있는 원점을 기준으로 떨어진다. (떨어지면 자연스럽게 Snap이 될 것이다.)
- 몬스터의 원점은 보통 중앙 하단에 지정되어 있다.
- 타일을 세로로 지정하면 Foothold 정보가 하나로 되어 통과할 수 없다고 했었다.
- 하지만, 타일이 바닥과 연결되어 있지 않은 경우에 대해서는 통과할 수 있다. 디테일한 차이를 만들어 낼 수 있다.
- 타일이 바닥과 연결된 경우에는 통과할 수 없다.
- IsBlockVerticalLine 설정을 True로 지정해주면 통과할 수 없게 된다.
- IsQuaterViewMode
- 기본 이동 규칙을 쿼터뷰(수평/수직) 이동으로 변경.
- 일반 맵에서 QuaterView를 적용하면 매우 어색해보인다.
- 이러한 경우에는 QuaterView에 적합한 맵을 적용해주면 훨씬 더 자연스럽다.
○ DefaultPlayer - MovementComponent
- 속도와 점프력 정도를 설정할 수 있다.
- MovementComponent 설정을 False로 지정하여 캐릭터가 움직하지 못하게 할 수 있다.
- 몬스터에도 Movement 값이 존재한다.
○ DefaultPlayer - TriggerComponent : 충돌 이벤트를 관리할 수 있는 Component
Property | 설명 |
Collider | 충돌을 감지하는 범위를 설정할 수 있다. |
ColliderType | * 충돌체의 타입을 설정합니다. * IsLegacy가 false인 신규 시스템에서 사용할 수 있습니다. |
BoxSize | * 직사각형 충돌체의 너비와 높이를 지정합니다. |
ColliderOffset | * Entity를 기준으로 충돌체의 중심점 위치를 설정합니다. * IsLegacy가 false인 신규 시스템에서 사용할 수 있습니다. |
IsLegacy | * 이 Component가 이전의 시스템으로 동작할지를 설정합니다. * 신규 시스템은 충돌체가 TransformComponent의 회전과 크기에 영향을 받습니다. * 또한 Collider Type을 설정해 원 모양 충돌체를 사용할 수 있습니다. |
Enable | * Component의 활성화 여부를 확인합니다. |
- 객체 간의 충돌이 일어났을 때 이를 알려주는 Component
- 충돌에 대한 처리는 Script에서 처리해주면 된다.
- 기본적인 함정 Entity에는 TriggerComponent가 없기 때문에 충돌이 발생하더라도 이벤트가 발생하지 않는다.
- Workspace - myDesk - Create Scripts - Create Component를 통해 새로운 Component를 생성한다.
- Trap Entity에 새로 생성한 Component를 추가한다.
Event | 설명 |
TriggerEnterEvent | * TriggerBody와 TriggerReactor가 최초로 충돌할 때 Reactor 쪽으로 발생하는 이벤트입니다. |
TriggerLeaveEvent | * TriggerBody와 TriggerReactor의 충돌이 끝났을 때 Reactor 쪽으로 발생하는 이벤트입니다. |
TriggerStayEvent | * TriggerBody와 TriggerReactor가 계속 충돌하고 있을 때 Reactor 쪽으로 발생하는 이벤트입니다. |
- Trap 메뉴에서 원하는 Trap을 월드에 배치하고, Property에서 TriggerComponent를 추가해준다.
- TriggerComponent를 추가한 뒤, Trap과 충돌하면 로그를 출력하도록 하였다.
- 코드는 아래와 같다.
- 실행 결과는 아래와 같다.
- Trap과 부딪혔을 때 오른쪽으로 밀려나도록 설정할 수 있다.
- 코드는 다음과 같다.
- 실행 결과는 다음과 같다.
- TriggerComponent 끼리 충돌을 감지하기 때문에 TriggerComponent가 없는 객체들 사이에서는 충돌을 감지할 수 없다.
- Q. 두 개의 Entity가 있을 때 하나의 Entity에 대해서만 TriggerComponent가 설정되어 있다면 충돌을 감지할 수 있을까?
- A. 충돌을 감지할 수 없을 것으로 보인다.
○ PlayerComponent : 최대 HP, PVP 여부, 리스폰 대기시간을 설정할 수 있다.
Property | 설명 |
MaxHp | * 최대 Hp입니다. |
PVPMode | * 플레이어끼리 공격이 가능한지를 설정합니다. |
RespawnDuration | * 죽은 후 리스폰까지 걸리는 시간입니다. |
Enable | * Component의 활성화 여부를 확인합니다. |
○ Create Component
- MyDesk - Create Scripts - Create Component
- Component를 만들어 사용하고 싶다면, Workspace에서 새로운 Component를 만들고, Entity에서 그 Component를 추가해주면 된다.
- 게임 실행 시 플레이어의 닉네임을 로그에 출력하고 싶다면 다음과 같은 코드를 작성하면 된다.
- 결과는 다음과 같다.
○ DefaultPlayer - PlayerControllerComponent
Property | 설명 |
AlwaysMovingState | * 이동 가능한 상태를 나타냅니다. |
FixedLookAt | * 이동 시에 바라보는 방향을 한 쪽으로 고정합니다. |
LookDirectionX | * 현재 X축을 기준으로 캐릭터가 바라보고 있는 방향입니다. * 양수일 경우 오른쪽, 음수일 경우 왼쪽입니다. |
Enable | * Component의 활성화 여부를 확인합니다. |
- Trap과 부딪히는 방향에 따라서 저항의 방향을 설정할 수 있다. 코드는 다음과 같다.
- 실행 결과는 다음과 같다.
- FixedLookAt : 플레이어가 어느 쪽으로 이동을 하든 바라보는 방향을 고정할 수 있다.
- 왼쪽으로 고정한 경우
- 오른쪽으로 고정한 경우
회고 : 이번 강의에서는 미니게임을 만들 때 아주 필수적이라고 생각되는 장애물과 Trap에 대하여 학습했다. 이것들 또한 프로젝트 진행할 때 적극적으로 활용할 수 있을 것으로 보인다. 추가로, 캐릭터가 바라보는 방향을 고정하는 것 또한 창의적으로 활용해 볼 수 있을 것으로 보인다.
*해당 게시글은 Supporters Hackathon 참여자에게 제공되는 MOD 학습 강의와 기본 학습 교안의 내용을 기반으로 작성되었음을 알립니다.
'Coding > 멋쟁이사자처럼' 카테고리의 다른 글
[멋쟁이사자처럼 X 넥슨] MOD Supporters Hackathon 3주차 회고 (7. 네트워크의 이해) (0) | 2022.07.22 |
---|---|
[멋쟁이사자처럼 X 넥슨] MOD Supporters Hackathon 2주차 회고 (6. 스크립트의 이해) (0) | 2022.07.19 |
[멋쟁이사자처럼 X 넥슨] MOD Supporters Hackathon 2주차 회고 (4. 지형과 레이어의 이해) (0) | 2022.07.13 |
[멋쟁이사자처럼 X 넥슨] MOD Supporters Hackathon 2주차 회고 (3. 기본 컴포넌트의 이해) (0) | 2022.07.13 |
[멋쟁이사자처럼 X 넥슨] MOD Supporters Hackathon 1주차 회고 (2. 기본 개념의 이해) (0) | 2022.07.12 |