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

[Remind] 멋쟁이사자처럼 X 넥슨 Project MOD Supporters Hackathon_ch.9/10

by tripleup 2022. 7. 25.
728x90
반응형
Project MOD Supporters Hackathon_ch.9/10
Basic Class - 9. 컴포넌트의 활용 1

MovementComponent  : 캐릭터의 움직임에 관여하는 컴포넌트

  • InputSpeed : 이동 속도를 조절하는 프로퍼티 (X축 기준)
  • JumpForce : 점프력을 조절하는 프로퍼티 (Y축 기준)

RigidbodyComponent  :기본적인 물리 움직임을 조정하는 속성을 가진 컴포넌트

  • 일반적인 세계에서 영향을 받는 움직임을 따라가는 컴포넌트로, 지형의 특성과 레이어에 따라 다른 움직임 적용 가능

  • DownJumpSpeed : 하단 점프 속도 조정 속성
  • Gravity : 중력값. 점프를 했을 때 떨어지는 속도 조정 속성
  • IsBlockVerticalLine : 활성화 시 기둥을 뚫고 지나갈 수 없음
  • IsolatedMove : 활성화 시 낭떠러지 등 발판이 이어져 있지 않을 때 그 지점에서 더 이상 앞으로 갈 수 없음
  • Mass : 질량 조절 속성 (가속이 붙기까지의 시간을 의미. 질량이 커지면 속도를 내기까지 시간이 오래 걸려 가속이 늦게 붙음)
  • QuaterView : 중력에 영향을 받지 않고 평면에서 움직이는 것처럼 보이게 함
    ( QuaterViewAccelerationX & QuaterView AccelerationY : 이 뷰로 설정해야 영향을 줌)

 

Basic Class - 10. 컴포넌트의 활용 2
InputService를 활용한 입력과 액션
InputService 작동 원리

유저가 키를 누르거나, 혹은 모바일의 화면을 터치하는 등의 입력이 들어오게 되면 InputService에서는 유저의 입력에 대한 이벤트를 발생시키게 되는데, 우리는 이 이벤트에 대한 핸들러를 추가하여 이벤트에 대한 액션을 수행
유저의 입력에 대한 이벤트는 클라이언트에서만 발생하기 때문에, 각 이벤트 핸들러 역시 클라이언트에서만 실행

공격에 대한 이해와 구현

공격이라는 행동을 정의 ( `캐릭터로 Ctrl 버튼을 눌렀을 경우 발동하는 Attack 상태로 정의)

 

공격과 피격의 관계

공격을 담당하는 Attack 컴포넌트는 반드시 피격을 위한 Hit 컴포넌트가 있어야 충돌 가능


충돌을 발생했다 하더라도 명중 여부는 분리해서 판단
예를 들어 플레이어가 슬라임을 공격할 때 명중시키는 경우와 헛치는 경우

여기서 명중에 실패한 케이스라면 공격자의 IsAttackTarget에서 false를 반환하고 더 이상의 절차를 생략


명중에 성공했다면 기본 리턴 값을 그대로 사용하고 피격자의 IsHitTarget에 나머지 역할 맡김
-> 공격자 입장에서 공격을 명중했다 하더라도 피격자 입장에서 그 공격을 피할 가능성이 있기 때문

절대 명중 개념을 사용하고자 한다면 공격자의 IsAttackTarget을 true로 반환
-> 피격자의 IsHitTarget은 호출되지 않고 무조건 데미지를 입히는 절차로 진행

공격자의 IsAttackTarget을 true로 반환했거나 피격자의 IsHitTarget이 true를 반환하면 데미지를 피격자에게 적용


먼저 공격자 입장에서 CalcDamage 함수를 이용해 적용하고자 하는 데미지를 반환
원작의 메이플스토리에서 물리 공격력과 무기 공격력 등을 참고하여 데미지를 결정하는 상황처럼 사용
피격자의 OnHit 함수는 이 데미지를 인자값으로 전달받아 변환


(예를 들어 공격자의 공격력을 참고한 데미지가 전달됐지만 방어자의 물리 방어력 등을 적용해서 차감시키는 상황)

이 모든 과정이 완료되고 OnHit 함수의 리턴 값이 최종 데미지가 됨


OnHit 함수는 호출될 시 HitEvent를 발생 시킴

이 HitEvent를 받아 처리할 수 있는 HitEvent 함수도 기본적으로 제공

728x90
반응형

댓글