본문 바로가기
게임개발/NEXON PROJECT MOD

[Remind] 멋쟁이사자처럼 X 넥슨 Project MOD Supporters Hackathon_ch.4/5/6

by tripleup 2022. 7. 21.
728x90
반응형
Project MOD Supporters Hackathon_ch.4/5/6

레이어별로 하나의 타일만 사용 가능

TileMapComponent
Color : 타일맵의 색상 지정
TileSetRUID : 타일맵에서 사용할 타일셋 리소스의  RUID 지정
Color : 타일맵의 색상 지정
Foothold ~  :  발판 정보

File -> Setting -> 만들기 -> 발판정보 ✅ : 발판의 정보 확인 가능

Model List 중 Foothold : Foothold 정보를 이미 포함한 Entity

Edit Foothold를 통해 수정 가능 

수정 후 Exit Edit Foothold를 통해 저장

FootholdDrag  :  이 타일맵 위에 있는 캐릭터의 마찰력 변화 (값이 크면 더 빠르게 감속)
FootholdForce   이 타일맵 위에 있는 캐릭터에 가하는 힘 (양수일 경우 오른쪽, 음수일 경우 왼쪽으로 힘을 받음)
FootholdWalkSpeedFactor   이 타일맵 위에 있는 캐릭터의 속력 변화(값이 크면 더 가속)
Map Layer Panel

하나의 Map에는 최대한 10개까지 Layer 추가 가능

상단일수록 맨 앞으로 배치

 

 

Basic Class - 4. 지형과 레이어의 이해

Basic Class - 5. 자주 사용하는 컴포넌트

 TweenCircularComponent  : 원점을 중심으로 원운동

  • 원점을 기준으로 원형으로의 움직임 연출
  • 회전 수, 속도, 반경 설정 가능


 TweenFloatingComponent  : 원점을 기준으로 부유운동

  • 엔티티가 제자리에서 떠다니는 듯한 움직임 연출


 TweenLineComponent  : 원점에서 목적지까지의 선형운동

  • 원점을 기준으로 목적지까지 선형운동의 움직임 연출
  • 목적지까지 편도, 왕복 운동 여부 및 가/감속, 도달 시 튕김의 운동 방식 설정


✅ RigidBodyComponent  : 강체의 물리적인 속성을 컨트롤 할 수 있는 컴포넌트

  • gravity : gravity 프로퍼티의 값 조정을 통해 공중에 떠 있거나 지면에 떨어지도록 할 수 있습니다.
  • IsBlockVerticalLine : 세로 방향의 foothold를 설정할 수 있습니다.
  • IsQuaterViewMove : 프로퍼티의 값 조정을 통해 컴포넌트가 지형에 떨어지지 않고 자유롭게 움직일 수 있도록 설정할 수 있습니다.

✅ MovementComponent  : 이동 속도와 점프의 정도, 활성화의 여부를 조절하는 프로퍼티가 존재

  • InputSpeed : 이동 속도를 설정
  • JumpForce : 점프의 정도를 설정

✅ TriggerComponent  : 엔티티의 충돌 감지 (충돌이 일어나는 범위를 설정할 때 충돌체 사용)

✅ HitComponent   : 엔티티의 충돌 감지 (피격의 범위를 설정할 때 충돌체 사용)

  • MOD에서의 충돌이란 충돌체를 포함하고 있는 엔티티의 충돌 영역이 서로 교차했을 때를 의미
  • 충돌체의 경우, TriggerComponent나 HitComponent와 같은 컴포넌트를 엔티티에 추가할 경우 자동으로 생성
  • TriggerComponent 또는 HitComponent를 가지고 있지 않은 객체와의 충돌은 감지할 수 없음

  • Collider : 프로퍼티 에디터의 Edit 버튼을 누를 경우 엔티티에 충돌체가 나타남, 드래그 or 핸들러 조절을 통해 충돌체 크기 설정 가능
  • BoxOffset & ColliderOffset : 충돌체의 위치 설정
  • BoxSize : ColliderType이 Box일 경우 충돌체의 크기 설정
  • CircleRadius : ColliderType이 Circle일 경우 충돌체의 크기를 설정
  • ColliderType : 충돌체의 형태 선택, Box의 경우 충돌체를 사각형으로, Circle의 경우 원형으로 변경
  • IsLegacy : TransformComponent에 영향을 받을지 여부를 설정

PlayerComponent  : 플레이어에 대한 로직을 스크립트로 추가 가능

  • PVP mode : 상호 공격이 가능한 모드
예제) 장애물과의 충돌(TriggerEnterEvent)이 들어올 경우 hp를 100씩 감소시키는 스크립트

HandleTriggerEnterEvent :  장애물과의 충돌이 들어오는 시점에서 호출되는 함수

함수의 매개변수로 TriggerEnterEvent 이벤트를 받아온 뒤, 함수 내부에서 수행할 명령어를 입력해줍니다.

충돌 이벤트 샌더를 self 로 선언해줌으로써 리액터 컴포넌트가 추가된 엔티티의 충돌 이벤트를 받게 됩니다.


✅ PlayerControllerComponent  : 플레이어를 컨트롤하는 컴포넌트

예제) 플레이어 컨트롤

LookDirectionX : 현재 X축을 기준으로 캐릭터가 바라보고 있는 방향을 의미 (양수 : 오른쪽, 음수 : 왼쪽)

FixedLookAt : 캐릭터가 바라보고 있는 방향을 고정시키는 것 (1 : 오른쪽, -1 : 왼쪽)


Basic Class - 6. 스크립트의 이해

Lua 스크립트 “아주 기본적인” 문법

log()

  • console 창에 로그를 찍기 위해서는 log() 내부에 출력할 값을 넣어주면 됩니다.

변수 선언 키워드 local

  • 변수를 선언하는 키워드로 local을 사용
  • 변수 선언 방식은 local number = 1과 같이 local 자료형 = 초기화 값의 형태
  • 변수를 local 키워드 없이 사용하여 명시적으로 지역으로 정의하지 않으면 global(전역) 변수로 취급하 (이에 local(지역)으로 사용하길 원한다면 명시해야 함))

순차 구조

  • 대부분의 스크립트 언어와 마찬가지로 Lua script는 순차적인 구조로 소스 코드가 실행

반복문

  • for 이후에 반복자 = 초기값, 조건, 증감값 do 로 시작한 후, 반복할 실행문이 끝나는 지점에서는 end로 닫음

조건문

  • 조건문의 경우 if 조건식 then 으로 시작하여 end 사이 조건을 만족하였을 때의 수행문을 입력


Create Script

  • 기본적인 언어인 Luascript + mod의 추가적인 문법 결합
  • MyDesk > 마우스 우클릭 > Create Scripts > Create Script

 


Create Logic

  • 로직은 한 게임에서 하나만 존재 -> 별다른 설정 없이 지속적으로 사용
  • 로직은 따로 어떤 객체에 추가를 해주지 않아도 프로그램 상에 하나만 존재하기 때문에 콘솔 창에 결과가 뜸


Create Component

  • Component는 생성 후 Entity에 해당컴포넌트를 추가해야 실행 됨 (Entity 별로 실행)
  • MyDesk > 마우스 우클릭 > Create Scripts > Create Component

  • 콘솔창에 로그를 찍게 되면 스크립트를 추가한 객체의 수만큼 로그가 찍힘
  • Property 설정할 수 있는데, 이때 설정한 property는 property창에 노출됨
  • 함수에서 내가 속한 component의 property 또는 함수를 가져다 쓸 때 self.컴포넌트명으로 컴포넌트를 불러와서 사용

Function

  • 어떠한 기능들을 모아둔 것


자주 쓰는 함수

1. OnBeginPlay : 컴포넌트가 초기화가 될 때(처음 시작할 때) 처리하는 로직

* OnBeginPlay 함수 주의할 점

  • 각 컴포넌트 내 OnBeginPlay의 호출 순서는 보장되지 않기 때문에, 특정 컴포넌트의 OnBeginPlay로 설정이 완료된 값을 받아오게 되면 오작동 할 가능성이 있음
  • 예를 들어, 컴포넌트 A의 OnBeginPlay에서 컴포넌트 A의 프로퍼티B를 " "에서 "Hello" 로 설정한다 했을 때, 컴포넌트 C의 OnBeginPlay에서 프로퍼티 B를 참조하면 값이 "Hello"가 아닌 " "로 받아올 가능성이 있음

  • 따라서 다른 컴포넌트의 OnBeginPlay에서 컴포넌트 A의 프로퍼티를 참조해야 한다면, 컴포넌트 A에서는 다음과 같이 OnInitialize를 활용해 프로퍼티 값을 설정하는 것이 좋음


2. OnUpdate : 프레임마다 주기적으로 불리는 함수


3. OnEndPlay : 끝날 때 처리하는 로직

  • OnDestroy와 함께 엔티티가 제거되는 시점에 1회 호출되는 함수


 

728x90
반응형

댓글