오… 텔레포트 관련된 내용들 너무 신기하고 재밌당 ~ 근데 이펙트 찾기 너무 힘든 것 같다 … 프로젝트 때 사용할 것도 찾아봐야 하는데 큰일이네 ;;
📌 함께 보면 도움이 되는 가이드
HandleKeyDownEvent()
를 이용해 event.key로 눌린 키 확인 가능
→ if문 +keyboardKey.키
로 케이스 별 처리
TouchEvent()
→ 엔티티 터치 ( 터치를 받았을 때 )
TouchReceiveComponent
) 추가 필요ScreenTouchEvent() → 화면 터치
Resource Storage의 skill 등의 탭에서 확인 가능
_EffectService:PlayEffect(RUID, self.Entity, self.Entity.TransformComponent.Position, 0, Vector3(1,1,1))
이용 → world 포지션을 따라가므로, 스킬이나 설치 이펙트 등에 적합함
이펙트가 world 포지션이 아닌 캐릭터 등을 따라오게 하려면 _EffectService:PlayEffectAttached()
→ 기준이 부모 엔티티이므로 포지션이 Vector3(0,0,0)
audioclip 탭에서 확인 가능 → SoundComponent
를 추가해서 사운드 추가 가능
브금은 map 전체에 SoundComponent 추가한 뒤 bgm 체크 !
기본적으로 플레이어( 클라이언트 )를 따라가는 카메라 무빙 …
DefaultPlayer
엔티티를 눌러보면 CameraComponent
존재함
→ Offset 위치, DutchAngle 회전값 등 설정 가능 !
_CameraService로 카메라 연출 가능
→ 기본적으로 맨 끝으로 가면 맵 영역을 기준으로 짤려서 보이게 됨
포탈 엔티티 추가 시 기본적으로 들어있으며 위쪽 방향키
를 누르면 동작함
PotalEntityRef
속성을 사용해 다른 포탈과 연결시킬 수 있음 !
포탈 혹은 어떤 엔티티에 닿기만 해도 작동하게 하려면 스크립팅 필수 … _TeleportService
이용
→ 특정 장소에 가면 엔티티가 다른 엔티티 쪽으로 떨어지는 등 연출 가능
또는 InteractionComponent를 Extend 해서 처리 가능 !
사다리의 경우 head
, body
, tail
로 분리되어 있음
ClimbableComponent
가 존재하기 때문에 사다리로 사용 가능한 것 → Ladder / Rope는 애니메이션 종류 선택
📌 함께 보면 도움이 되는 가이드
MOD Maker 상단에 UI 에디터 버튼을 눌러 킬 수 있음
UI의 경우에는 카메라 위에 올라가는 느낌 … 캐릭터가 이동하고, 카메라가 이동돼도 고정됨
기본 UI들은 어느정도 스크립트 구현까지 되어있음 ! → 본인 게임에 맞춰 수정 가능
UI 에디터 창 안에 이미지
, 버튼
, 스크롤뷰, 텍스트, 입력 테스트 조합 가능
이미지 엔티티 안에 직접 TextComponent 등을 넣어서 조합할 수도 있음
자주 사용하는 UI, 스크립트 포함 → Model List 최하단 탭에서 확인 가능
텍스트 크기, 색상, 패딩 등 다양한 텍스트 속성 설정 가능
버튼
부모의 원점으로부터 거리를 기준으로 정렬 가능 ! ( Anchor Preset
) → 부모 크기가 바뀌면 삐져나올 수 있는 문제는 Stretch
설정 ~ ~
UI의 배경색, 배경, 리소스 경로 설정 등 텍스트박스를 꾸며볼 수 있음
FillAmount
속성 값 등으로 체력바 구현 가능 ! → type이 fill이 아니면 X
→ TransformComponent에서 Pivot
과 RectSize
를 변경해서 fill처럼 구현할 수 있음
PreserveSprite
: NativeSize로 설정 시 원본 이미지 크기대로 ( 커지지 X )
PopupGroup
→ 조건 만족되는 경우 나타나는 그룹 … UIPopup 스크립트에서 스크립팅 수정가능
UIToast
→ 마찬가지로 UIToast 스크립트에서 수정 가능
하지만 기본 그룹 사용하는 대신 새로운 Group을 만들고, Enable / Visible 등을 조절하여 사용하기 …
Group들이 보여지는 순서는 기본적으로 그룹 리스트에 들어있는 순서
UI는 자동으로 sync 되지 않음 !! 서버에는 UI Property가 존재 X
→ UI 상에서 서버가 필요할 경우 로직을 common이나 maps 등에서 조작 후 클라이언트로 전송해야 함
하위 컴포넌트 추가 시 규격에 맞게 자동으로 그리드에 맞춰 추가됨
type
: Grid로 설정 시 위아래 자동으로 그리드 만들어서 추가됨
UseScroll
: 스크롤 바 사용
CellSize
: 하위 아이템 사이즈
→ self.item:Clone()
으로 아이템 복사 가능 …
Scene Maker의 maps
탭에 UI 엔티티를 추가하면 동일하게 이벤트 처리 가능하며, 추가적으로 서버 처리 가능 !! 다만 맵 좌표계를 가지는 position…
드디어 Basic Class가 끝났다 … ㅠㅠ 얼른 도큐먼트들도 확인하고 꼼꼼하게 공부한 내용 보충 좀 하고 싶다 … 바쁘구만 …
📌 함께 보면 도움이 되는 가이드
엔티티 + 컴포넌트 + 속성들 …
Make Original Model
→ 엔티티에서 모델 생성 ( 독자적 모델 )
Make Child Model
→ 기존 모델에서 변경점을 가지는 모델 → 부모 변경 시 함께 변경됨
모델의 원본을 다시 가져옴 ( 엔티티에 적용 업데이트 )
엔티티에 변경한 내용을 모델에 적용
_SpawnService:SpawnByModelId()
를 통해 동적인 엔티티 생성 가능
_SpawnService:SpawnByModelId(RUID, name, position, self.Entity.CurrentMap, "")
컴포넌트 삭제 불가능 … Player라는 모델을 부모로 가지고 있기 때문 ! → 사용하기 싫은 컴포넌트가 있다면 Player에서 제거 …
⚠️ 자기 자신의 프로퍼티, 함수를 쓸 때는 항상 self.
으로 접근 ~~
callBack 사용 시에는 self.함수명
값 타입
→ 정수, 문자열 등
참조 타입
→ Vector2, Vector3 등, 주소로 들어가 직접 변경하게 됨…
값만 가져오고 싶을 때는 :Clone()
사용
사용하지 않음
→ 부르는 곳에서 실행
Client / Server
→ 다른 데서 불러도 Client 혹은 Server로 전송해서 실행 … but 리턴 값이 돌아오진 않음 !! 주의하기
설정이 너무 많을 때, self._T
.변수명 으로 임시 변수 사용 가능
알아서 엔티티가 자동으로 생성되도록 하는 것 → 주로 같은 모델의 엔티티를 여러개 생성할 때 사용
타이머를 생성해 콜백 실행 가능
CallBack
→ 주기적으로 함수 등을 실행시키는 것
메이커에서 TriggerComponent
추가시 자동으로 offset 영역을 처리해줌
→ 그러나 컴포넌트에서 추가하면 수동으로 사이즈를 입력해줘야 함, 엔티티를 동적 생성하는 경우 하나하나에 충돌 설정을 자동으로 해줄 수 없음
→ 동적 생성된 엔티티의 경우, 함수에 다음과 같이 AddComponent
함수를 사용해 RigidBodyComponent
를 추가
self.Entity:AddComponent("RigidBodyComponent", true)
*BTNodeType
패키지형 컴포넌트로 여러가지 기능이 유기적으로 연결되어 있는 것