Nexon Supporters Hackathon 10

이태곤·2022년 9월 27일
0

Nexon Supporters Hackathon

목록 보기
10/12
post-thumbnail

Index

  1. Key관련 Event

  2. Touch관련 Event

  3. Effect

  4. Sound Component

  5. Camera Component

  6. Portal Coponent

  7. Climbable Component


Key관련 Event

  • KeyDownEvent : 키를 눌렀을때 최초 1회 발생하는 이벤트

  • KeyHoldEvent : 키가 눌린상태일때 일정 프레임마다 주기적으로 발생하게되는 이벤트

  • KeyReleaseEvent : KeyHold상태 즉, 키가 길게 눌린상태에서 손을 떼었을때 최초 1회 발생하는 이벤트

  • KeyUpEvent : 키보드로부터 손을 떼었을때 최초 1회 발생하는 이벤트

ex)

  1. KeyDownEvent와 KeyUpEvent를 가지고있는 MyFirstComponent를 Default Player에 추가해주었다.

--> if key == Keyboardkey.A : 만약 키보드에서 A가 눌리면

  1. "A"키를 눌렀다가 떼었을때 콘솔출력화면이다.


Touch관련 Event

  • Screen 터치관련 이벤트와 Entity 터치관련 이벤트로 구분할 수 있다.

  • Touch 관련 이벤트를 받기위해서는 TouchReceive Component를 해당 Entity에 추가해주어야 한다.

ex)

  1. 아래와같이 작성된 Entity터치관련 이벤트인 TouchEvent를 가진 MyFirstComponent를 Entity에 추가해준다.

--> ChatBallon Component의 Message내용을 바꾸기 위해 touch변수에 저장해서 활용

--> wait(1) : 1초후에 원래의 메세지로 돌아오는것처럼 보이게하기위해 사용

--> touch event 수신을위해 TouchReceive Component 추가

  1. Entity클릭 : 원래 메세지의 내용 -> 말풍선 내용이 바뀜 -> 1초후에 다시 원래 메세지로 돌아아옴




Effect

  • 이펙트관련 이벤트는 _EffectService 에서 제공하고있다.

  • PlayEffect : 보여질 이펙트가 월드좌표를 기준으로 나타난다.

--> 캐릭터가 움직여도 스킬이 최초 발생한 위치는 월드좌표기준으로 고정되어있다.

  • PlayEffectAttached : 보여질 이펙트가 설정한 Entity를 따라다니며 나타난다.

--> 캐릭터가 움직여도 스킬이 항상 설정한 부모 Entity인 Default Player를 따라다니게 된다.

  • _EffectService:PlayEffect 매개변수

원하는 이펙트의 RUID : "RUID"

이펙트 적용대상 : self.Entity(Default Player)

이펙트 적용위치 : self.Entity.TransformComponent.Position(Default Player의 월드좌표기준)

이펙트 회전각도 : 0º

이펙트 크기 : Vector3(1,1,1) (3차원 벡터에서의 x(1),y(1),z(1)크기)

ex) 이펙트 적용대상인 Default Player의 Position에서 스킬이 발생했다.

  • _EffectService:PlayEffectAttached 매개변수

원하는 이펙트의 RUID : "RUID"

이펙트가 따라다닐 부모 Entity설정 : self.Entity(Default Player)

부모 Entity로부터의 위치 : Vector3(3,0,0) (3차원 벡터에서의 x(3),y(0),z(0)만큼 떨어진 위치에서 발생 -> 오른쪽으로 3만큼 떨어진 위치)

이펙트 회전각도 : 0º

이펙트 크기 : Vector3(1,1,1) (3차원 벡터에서의 x(1),y(1),z(1)크기)

ex) self.Entity로부터 x축으로 3만큼 떨어진곳에 이펙트가 발생했다.

cf) skill RUID 가져오는 방법 : Panels -> Resource Storage -> 스킬형태 image or animation 선택 -> 원하는 이펙트 RUID복사



Sound Component

  1. Sound를 탑재하고자하는 Entity를 추가하고 Sound Component를 추가해준다.

  • AudioClipRUID : RUID형태로 원하는 소리를 갖고오면된다.(위 RUID는 불꽃소리)

  • Loop : 체크하게되면 선택한 sound를 반복해서 듣게된다.

  • PlayOnEnable : 플레이를하자마자 설정한 사운드가 시작된다.

  • Volume : 사운드의 크기를 조절할 수 있다.

  1. Sound Component의 디테일한 동작을위해 MySoundComponent를 작성해주고 Entity에 추가했다.

변수

  • local fire = _EntityService:GetEntity("Entity ID") : 불꽃 Entity의 정보를 fire변수에 저장한다.

  • local sound = fire.SoundComponent : 불꽃 Entity의 SoundComponent정보를 sound변수에 저장한다.

로직

  • sound:SetListenerEntity(self.Entity) : sound가 Default Player인 self.Entity와의 거리에따라 달라지도록 SetListenerEntity를 작성했다.

cf) 불꽃과 캐릭터의 거리가 가깝다. -> 소리가 더 크다.

불꽃과 캐릭터의 거리가 멀다. -> 소리가 더 작다.

  • sound:Play() : 위의 로직을 담은 sound를 실행하도록 해준다.

Camera Component

  • Camera Component는 Default Player에 기본적으로 탑재되어있는 요소이기때문에 게임플레이를 하게되면 카메라 초점이 플레이어 위주로 따라오게된다.

구성한 맵

--> 만약, 초점을 Default Player -> 토끼 Entity로 옮기고 싶다면?

  1. 초점이동을 원하는 토끼 Entity에 Camera Component를 추가해준다.

cf) ConfineCamera 체크를 해제하게되면 카메라 이동시에 Entity가 중앙에위치하도록 보여진다.

  • Entity가 중앙에 위치한 모습
  1. 카메라이동에 대한 상세한 내용을 적은 MyCameraComponent를 Default Player에 추가해준다.

  • Screen이 터치되었을 때 이벤트를 발생시키는 로직(ScreenTouchEvent)

변수

  • local rabbit = _EntityService:GetEntity("Entity ID") : 토끼 Entity의 정보를 rabbit변수에 저장한다.

  • local torabbit = rabbit.CameraComponent : 토끼 Entity의 CameraComponent정보를 torabbit변수에 저장한다.

  • local me = self.Entity.CameraComponent : Default Player의 CameraComponent정보를 me변수에 저장한다.

기능

  • _CameraService:SwitchCameraTo(torabbit) : 카메라의 포커스를 토끼 Entity인 torabbit으로 이동한다.

  • wait(10) : 10초의 텀을 둔다. (다음 코드인 원래의 지점으로 돌아오기전 10초 delay)

  • _CameraService:SwitchCameraTo(me) : Default Player인 me로 카메라의 포커스가 돌아온다.


Portal Component

  1. Portal Component이용하기

--> 아랫 포탈 -> 윗 포탈 / 윗 포탈 -> 아랫 포탈 이동하고 싶다면?

  • 아랫포탈 Entity의 PortalComponent, PortalEntity 값을 윗포탈로 바꾸기

  • 윗포탈 Entity의 PortalComponent, PortalEntity 값을 아랫포탈로 바꾸기

cf) 포탈 Entity는 주기적으로 저장을해주어야 Component, Property요소에 반영된다.

  1. Script 이용하기
  • Portal Component가 없는 경우 사용한다.

--> 화살표 -> 불꽃으로 이동하고싶다면?

  • 작성한 MyPortalComponent와 충돌처리를 위해 Trigger Component를 화살표 Entity에 추가한다.


  • if문 : 충돌주체가 Default Player가 아닌 경우 종료에대한 예외처리

변수

  • local fire = _EntityService:GetEntity("Entity ID") : 불꽃 Entity의 정보를 fire변수에 저장한다.

기능

  • _TeleportService:TeleportToEntity(TriggerBodyEntity,fire) : TriggerBodyEntity인 Default Player를 fire(불꽃 Entity)로 이동시킨다.
  1. InteractionComponent 사용
  • InteractionType을 설정해서 Portal Component가 없더라도 특정키를 눌렀을 때 이동할 수 있는 기능을 설정할 수 있다.


Climbable Component

  • 사다리나 로프와같이 오를 수 있는 Entity에 탑재되어있는 Component


  • 사다리나 로프가아니여도 Climbable Component를 추가해주면 위아래, 양옆으로 오르거나 이동할 수 있따.

  • 나무 Entity에 Climbable Component를 추가해서 나무를 오르고 있는 모습

스물다섯, 스물하나 화이팅!!!

0개의 댓글