유니티 피격 효과 - yuniti pigyeog hyogwa

[Unity]27.RPG 튜토리얼 #6 - 스킬 퀵 슬롯과 피격 이벤트

  • [유랑]
  • 게임 개발 - Unity3d
  • 2018. 12. 16. 11:43

안녕하세요 유랑입니다.



실력향상을 위해서 오늘도 유튜브 강의를 따라하면서 공부하겠습니다.

궁금하신점 있으시면 댓글로 남겨주세요^^




1. RPG 만들기



이번 강의는 Patreon.com에서 외국인이 만든 강좌이며,

매달 $5의 후원을 통해야 리소스 다운을 받을 수 있습니다.

저는 돈을 지불하였고, 스킬업을 위해서 복습겸 글을 올리겠습니다.


리소스 사이트 => https://www.patreon.com/inScopeStudios/posts

유튜브 사이트 => https://goo.gl/o5VcTv




유니티 피격 효과 - yuniti pigyeog hyogwa




2. 스킬 퀵 슬롯



파이어볼 말고도 아이스와 라이트닝 스킬을 사용할겁니다.

그러기 위해서 스킬 버튼들을 만들어 보겠습니다.



2-1) UI 배치하기



우선 ice, lightning 스프라이트의 크기를 조정하겠습니다.

300에서 400으로 바꿔주세요.




유니티 피격 효과 - yuniti pigyeog hyogwa



유니티 피격 효과 - yuniti pigyeog hyogwa



Actionbar라는 오브젝트를 만들어 주세요.

여기에는 세 개의 스킬 버튼을 자식으로 추가해줄겁니다.



유니티 피격 효과 - yuniti pigyeog hyogwa


Image 오브젝트를 만든 후 ActionButton1로 이름을 바꿔주세요.

그리고 epmtyFrame이라는 스프라이트 이미지로 바꿔주겠습니다.



유니티 피격 효과 - yuniti pigyeog hyogwa



틀안에는 해당 스킬의 이미지가 보여야겠죠?

이미지를 자식으로 추가한 후 fireball을 넣어주세요.

크기는 fireball스프라이트 크기에 맞게 82 x 82로 변경하겠습니다.



유니티 피격 효과 - yuniti pigyeog hyogwa



유니티 피격 효과 - yuniti pigyeog hyogwa



2-2) Grid Layout Group



Grid Layout Group은 자식 오브젝트를 정렬할 때 사용합니다.

ActionButton1을 복사 붙여넣기를 이용해 두 개의 버튼을 더 만들겠습니다.

그리고 해당 이미지로 바꿔주세요.


- Child Alignment => 자식 오브젝트의 정렬 기준 설정

- spacing => 자식 오브젝트 간의 정렬 간격 설정




유니티 피격 효과 - yuniti pigyeog hyogwa



유니티 피격 효과 - yuniti pigyeog hyogwa



Button 기능을 추가하여 해당 이미지를 클릭할 수 있도록 만들어 주세요^^



유니티 피격 효과 - yuniti pigyeog hyogwa



2-3) 스펠 프리팹 만들기



fire말고도 ice와 lighning 프리팹을 만들어야겠죠?

해당 프리팹은 다음과 같이 만들어 주세요.

설정은 fire 프리팹과 똑같습니다.




유니티 피격 효과 - yuniti pigyeog hyogwa



유니티 피격 효과 - yuniti pigyeog hyogwa



프리팹을 다 만드셨으면 Player오브젝트 컴포넌트에 추가하겠습니다.

드래그앤 드랍을 이용해서 넣어주세요.



유니티 피격 효과 - yuniti pigyeog hyogwa




2-4) 스크립트 작성



Player 스크립트에 기존의 Space 버튼을 이용한 스킬 발사 부분을 삭제한 후 다음과 같이 작성해 주세요.


- CastSpell => 어떤 스킬이 눌러졌는지 매개변수를 통해 전달

- Instantiate => 전달받은 매개변수를 기준으로 생성될 스펠을 결정




유니티 피격 효과 - yuniti pigyeog hyogwa



유니티 피격 효과 - yuniti pigyeog hyogwa



유니티 피격 효과 - yuniti pigyeog hyogwa



유니티 피격 효과 - yuniti pigyeog hyogwa



GameManager 스크립트의 내용도 바꿔주겠습니다.

마우스를 이용해 스킬 퀵슬롯을 눌렀을 때 target이 null이 되는걸 방지하기 위한 코드입니다.


- EventSystem.current.IsPointerOverGameObject() => 현재 마우스의 위치가 UI 위에 있는지 체크함



유니티 피격 효과 - yuniti pigyeog hyogwa



각 버튼마다 Player오브젝트를 드래그앤 드랍하여 스크립트를 적용후 파라미터 값을 변경해 주세요.

- ActionButton1 => 0

- ActionButton2 => 1

- ActionButton3 => 2



유니티 피격 효과 - yuniti pigyeog hyogwa



마우스로 타겟을 클릭해 지정한 후 스킬버튼을 누르면 해당 스킬이 나가게 됩니다!!



유니티 피격 효과 - yuniti pigyeog hyogwa




2-5) 키보드를 이용한 스펠 발사



해당 버튼을 클릭하지 않고 키보드를 이용해서 스펠 발사를 해보겠습니다.

UIManager 스크립트를 생성 후 해당 내용을 작성해 주세요.

키보드를 입력하면 버튼을 대신 눌러주는 코드입니다.




유니티 피격 효과 - yuniti pigyeog hyogwa



유니티 피격 효과 - yuniti pigyeog hyogwa



빈 오브젝트를 생성한 후 스크립트를 추가한 후 버튼 3개를 넣어주세요.



유니티 피격 효과 - yuniti pigyeog hyogwa



키보드 상단에 있는 숫자버튼을 이용하면 해당 스킬이 나갑니다.

- FireBall : 1, Ice : 2, lightning : 3



유니티 피격 효과 - yuniti pigyeog hyogwa




3. 피격 이벤트



3-1) 타겟 지정 변경하기



타겟이 하나가 아닌 복수일 경우 지정이 제대로 안되는 문제가 발생합니다.

그 문제를 해결해 보겠습니다.

Spell 스크립트에서 MyTarget이라는 변수명으로 변경한 후 public으로 설정하겠습니다.




유니티 피격 효과 - yuniti pigyeog hyogwa



Player 스크립트에는 해당 내용을 추가해 주세요.

Spell을 참조해서 타겟을 지정해 주게됩니다.



유니티 피격 효과 - yuniti pigyeog hyogwa



해당 타겟을 마우스로 클릭후 스펠을 발사하면 짜잔 원하는 타겟으로 발사가 되네요.



유니티 피격 효과 - yuniti pigyeog hyogwa




3-2) 피격 이펙트 추가하기



스펠이 타겟에 부딪쳤을 때 생기는 이펙트를 만들어 보겠습니다.

Puff01 ~ Puff09 이미지를 선택해서  하이라키뷰에 드래그앤 드랍으로 옮겨주세요.

그러면 해당 이미지를 이용한 애니메이션 생성이 가능하답니다.




유니티 피격 효과 - yuniti pigyeog hyogwa



유니티 피격 효과 - yuniti pigyeog hyogwa



애니메이션과 더불어 애니메이터도 생기게 되는데 이름을 SpellController로 변경해 주세요.

firePrefab을 하이라키뷰에 가져와 애니메이터 컴포넌트 추가와 SpellController를 추가하겠습니다.



유니티 피격 효과 - yuniti pigyeog hyogwa



SpellController 애니메이터창에 들어가셔서 impact라는 트리거형 파라미터를 추가해 주세요.

그리고 마우스 우클릭을 이용해 Empty 애니메이션 상태를 만들어 준다음 이름을 Default로 변경한 후 

애니메이션 상태를 다음과 같이 맞춰주겠습니다.



유니티 피격 효과 - yuniti pigyeog hyogwa



Dafult -> Puff : 컨디션을 다음과 같이 추가후 Has Exit를 언체크하겠습니다.



유니티 피격 효과 - yuniti pigyeog hyogwa



Puff -> Default : HasExit를 체크 Duration값을 0으로 변경해 주세요.



유니티 피격 효과 - yuniti pigyeog hyogwa




3-3) StateMachineBehaviour 만들기



애니메이션 상태창에 스크립트를 추가하면 StateMachineBehaviour를 상속받을 수 있습니다.

해당 스크립트는 애니메이션 상태를 이용한 코드적용이 편리해집니다.

Puff에다가 Spell Behaviour를 추가하고 코드를 작성해 주세요.

애니메이션 상태가 끝나면 애니메이션을 하고있는 오브젝트가 삭제됩니다.




유니티 피격 효과 - yuniti pigyeog hyogwa



유니티 피격 효과 - yuniti pigyeog hyogwa



3-4) 적과 충돌시 피격처리



이제 스펠이 적과 충돌했을 경우 피격처리 효과를 적용해 보겠습니다.

Spell스크립트에서 트리거처리하는 내용을 추가해 주세요.

적과 충돌시 속도를 0, 더는 타겟으로 이동하지 않게하는 코드입니다.




유니티 피격 효과 - yuniti pigyeog hyogwa



GameManager 스크립트에는 myTarget의 좌표를 자식으로 설정해 줍니다.

타겟에는 박스콜라이더를 가지고 있는 자식을 만들어 줄 예정입니다.

해당 자식과 부딪치면 트리거 처리가 되는거죠^^



유니티 피격 효과 - yuniti pigyeog hyogwa



fire, ice, lightning 프리팹 모두 애니메이터와 BoxCollider 2D 컴포넌트를 추가후 Aplly시켜주세요.



유니티 피격 효과 - yuniti pigyeog hyogwa



target에는 자식으로 빈오브젝트를 생성후 이름을 HitBox, 태그를 HitBox, BoxCollider도 추가하겠습니다.



유니티 피격 효과 - yuniti pigyeog hyogwa



게임을 실행시켜보면 스펠에 부딪쳤을 경우 피격효과를 확인하실 수 있습니다.



유니티 피격 효과 - yuniti pigyeog hyogwa




4. 마무리



오늘 강의는 여기까지입니다.

RPG 튜토리얼을 따라하면서 스킬 퀵 슬롯 추가와 피격처리까지 설정하였습니다.

다음 시간에는 캐스팅바에 대해서 알아보겠습니다.

감사합니다.




수업자료: https://github.com/YouRang12/-Tistory-Unity---Extra-2D-





공유하기

게시글 관리

구독하기너랑나랑개발자이야기

  • 카카오스토리
  • 트위터
  • 페이스북

'게임 개발 - Unity3d' 관련 글

더 보기

[Unity]28.RPG 튜토리얼 #7 - 캐스팅 바 만들기

  • 2018.12.25

더 읽기

[Unity]04.아두이노 사용하기 - Blutooth로 채팅하기

  • 2018.12.19

더 읽기

[Unity]06.ARCore 사용 - ARCore 코드 다뤄보기

  • 2018.12.11

더 읽기

[Unity]03.아두이노 사용하기 - Button 사용하기

  • 2018.12.10

더 읽기

댓글(0)

비밀 글

등록