프로젝트명 : First Step

프로젝트 목적 : 성공적인 취업

[최신 프레젠테이션]

 

=====

 

[사용 에셋]

 

 

=====

 

youtu.be/J3thvvpOBtQ

 

[개발 일지]

  • Prototype 프로젝트에 포톤 엔진을 이요한 협업 준비

[수정 필요]

 

[차후 이해가 필요한 것]

  • 동기화 데이터에 대한 지속적인 실증적 이해

==========

 

블로그 이미지

RIsN

,

[유니티] 캐릭터 3D 모델 에셋에 애니메이션 입히기 with Synty Studio Asset

 

[사용 에셋]

 

=====

 

1. 유니티 에셋을 구매하셨으면, 해당 에셋을 프로젝트에 추가(Import) 합니다

2. 그러면 이제 해당 에셋들이 프로젝트에 추가되어 있을 겁니다.

>> 그 속에서 캐릭터(Character) 모델을 찾습니다.

>> Synty Studio 에셋들이라면 폴더의 Models에 Character에 있습니다. 

3. 그것을 우선 탐색창(윈도우 폴더)에서 확인하세요

4. 자 확인했으면, 이제는 인터넷을 열어서 Adobe의 Mixamo 사이트로 향합니다.

>> [Mixamo로 가기]

>> Mixamo에 도착했으면 Adobe 로그인을 하고 Animations를 열어주세요.

5. 그럼 아래와 같이 보일 겁니다.

>> 거기서 우선 오른쪽의 UPLOAD CHARACTER를 눌러주세요

6. 누르면 아래와 같이 파일을 업로드 할 수 있는 창이 나옵니다.

>> 거기에 아까 확인한 캐릭터 모델 파일(Characters.fbx)을 업로드합니다.

7. 그럼 오른쪽 창에 업로드한 캐릭터가 보일 겁니다.

>> 왼쪽에는 이제부터 이 캐릭터에 붙일 애니메이션들이 있습니다.

8. 그 중 이번에 캐릭터에 붙일 애니메이션을 찾아서 눌러주세요.

>> 그럼 오른쪽에 올린 캐릭터가 그 애니메이션을 보여줄 겁니다.

>> 그 애니메이션이 마음에 들면 오른쪽의 DOWNLOAD 버튼을 눌러주세요.

9. 그럼 이렇게 DOWNLOAD SETTINGS가 나옵니다.

>> 여기서 중요한 것은 Skin입니다.

>> 첫번째로 받을 애니메이션은

>> 캐릭터의 베이스(애니메이션을 입힐 수 있는 상태의 캐릭터)가 될 예정이므로 with Skin으로 받습니다.

>> 같은 캐릭터의 2번째 애니메이션부터는 with Skin이 없어도 됩니다.

>> 설정을 확인했으면 DOWNLOAD를 누릅니다.

10. 그럼 다운로드한 파일이 있을 건데, 그것을 이번에 다시 프로젝트에 넣어주세요.

>> 이름은 원하시는 대로, 폴더도 원하시는 대로 바꾸셔도 됩니다.

11. 그렇게 넣은 파일을 이번에는 Hierarchy 창에 넣습니다.

12. Synty Studio의 캐릭터의 경우 모든 캐릭터가 겹쳐 있습니다.

>> 이 중에서 필요없는 캐릭터들은 전부 꺼주시고, 필요한 캐릭터만 남깁니다.

13. 그러면 캐릭터가 Scene에 보입니다.

>> Synty Studio의 경우 Material이 lambert라는 이상한 게 박혀 있어서 하얗게 나옵니다.

14. 그러니 해당 캐릭터의 Inspector에서 Material을 변경해줍니다.

>> Synty Studio의 경우 에셋명에 Material_01 ~ 04 등으로 머티리얼이 되어 있습니다.

15. 자, 그럼 캐릭터가 제대로 색이 입혀져서 보입니다.

16. 이제는 애니메이션을 넣을 차례입니다.

>> 캐릭터의 가장 위의 폴더의 Inspector에서

>> Add Component로 애니메이션을 움직일 애니메이터(Animator)를 추가해줍니다.

 

17. 다음은 애니메이터 컴포넌트에 넣을 Animator Controller를 추가할 차례입니다.

>> Project 창에서 Create → Animator Conroller를 만들어줍니다.

18. 만든 Animator Controller를 우선

>> 캐릭터의 Inspector에 추가한 Animator 컴포넌트의 Controller에 넣어줍니다. 

19. 그리고 만든 Animator Controller를 열어보면?

20. 아직 아무것도 없습니다.

21. 이제는 애니메이션을 추가할 차례입니다.

>> Project 창에서 Create → Animation으로 새 애니메이션(Animation)을 만들어 줍니다.

22. 하지만 이것도 비어 있습니다.

>> 그러니 아까 받은 파일에서 애니메이션을 가져와야 합니다.

>> 프로젝트에 추가한 파일을 열어서 보면 mixamo.com이라는 애니메이션이 있습니다.

>> 이대로 이것을 애니메이터 컨트롤러(Animator Controller)에 추가해도 되지만,

>> 수정 불가(Read Only)에 반복(Loop)도 안되는 상황이라 그대로 쓸 수가 없습니다.

 

>> 우선 mixamo.com이라는 애니메이션을 열어주세요

23. 그럼 아래와 같이 잔뜩 무언가가 있습니다.

24. 이것을 Ctrl+A로 전부 잡아서 복사(Ctrl+C)해줍니다.

25. 이제 새로 만든 애니메이션을 열고

26. 아무것도 없는 이곳에다

27. 복사해줍니다.

>> 이걸로 이제 이 애니메이션은 수정도 가능하고, 반복도 편하게 할 수 있습니다.

28. 이제 다시 아까 만든 Animator Controller를 열어서

29. 아무것도 없는 이곳에 지금 많은 것을 추가해 넣은 애니메이션(New Animation)을 끌어다 놔줍니다.

30. 그럼 기본적으로 알아서 기본 애니메이션(Default)로 잡힐 겁니다.

31. 참고로 지금 이 애니메이션(New Animation)의 Inspector에서 Loop Time을 체크하면 반복적으로 움직입니다.

32. 자 이제 프로젝트를 실행해 봅시다.

33. 캐릭터가 움직이는 게 보인다면 성공입니다!

 

 

==========

 

블로그 이미지

RIsN

,

프로젝트명 : First Step

프로젝트 목적 : 성공적인 취업

[최신 프레젠테이션]

 

=====

 

[사용 에셋]

 

 

=====

 

youtu.be/B78Qaqb0GZE

 

[개발 일지]

  • 포톤 수정
    • 쓸데없는 Log 발생 및 확인처리 제거
  • 승리 판정
    • 보드에 생존해 있는 것이 있으면 승리, 둘 다 생존해 있으면 NONE
  • [R&D 종료]

[수정 필요]

 

[차후 이해가 필요한 것]

  • 동기화 데이터에 대한 지속적인 실증적 이해

==========

 

블로그 이미지

RIsN

,

프로젝트명 : First Step

프로젝트 목적 : 성공적인 취업

[최신 프레젠테이션]

 

=====

 

[사용 에셋]

 

 

=====

 

 

[개발 일지]

  • 포톤 수정
    • Instantiate 방식에서 Object Pooling 방식으로 변경
      • Photon의 PhotonNetwork.Instantiate가 너무나도 불안정함
    • MasterClient를 기본으로 해서 RPC를 통해 뿌려주도록 변경
      • 아니면 중복적으로 될 때가 많음
  • 자동 일반 공격
    • Sphere를 사용한 범위내 확인 후 1명을 공격

 

[수정 필요]

 

[차후 이해가 필요한 것]

  • 동기화 데이터에 대한 지속적인 실증적 이해

==========

 

블로그 이미지

RIsN

,

프로젝트명 : First Step

프로젝트 목적 : 성공적인 취업

[최신 프레젠테이션]

 

=====

 

[사용 에셋]

 

 

=====

 

youtu.be/gC4Dg_prdEE

 

[개발 일지]

> 지속적인 포톤 서버 R&D

> Drag & Drop 배치

 

[수정 필요]

> 캐릭터가 Photon View를 가지고 있으면 새로 생성이 아닌 위치 이동 처리

 

[차후 이해가 필요한 것]

> 동기화 데이터에 대한 실증적 이해

블로그 이미지

RIsN

,

【공모전】 : LEGO x Unity Micro Game

【프로젝트명】 : Blockfall

  • Waterfall(폭포)와 비슷한 어감

【게임】 : 하러가기

 

【목표】 : 최우수상

【결과】 : 진행중

 

【간단 설명】 : 연동되어 떨어지는 블록을 넘어 닭을 구출

【컨셉】

  • 고전 레고
  • 구출 스토리
  • 최대한 자극적, 폭력적, 경쟁적이지 않을 것
  • 난이도 하 ⇒ 난이도 중

【레퍼런스 게임】 : 없음

 

【현 상황:2020-11-16】 : 완료

youtu.be/IV6Fteb04gE

 

【리미트 설정】

  1. 레고 스크립트의 수정 없음
  2. 타 에셋 사용 없음

【구현 설계】

  1. 2차원 [2][2] 블록 맵 작성 : 완료
  2. [0][0]을 스타트 지점으로 [1][1]을 트로피 지점으로 작성 : 완료
  3. PlayerPrefs에 현재 스테이지를 저장, 트로피를 얻으면 승리 화면 : 완료
    1. 기존 튜토리얼 Scene을 수정해서 사용 : 완료
  4. 승리 화면에서 NextStage 버튼을 누르면 현재 스테이지 +1 상승 후 다시 Main 씬 로드 : 완료
  5. 현재 스테이지에 맞춰서 2차원 블록 맵이 확장 : 완료
  6. 밟으면 블록이 떨어져 제거
    1. 밟은 블록 확인 : 완료
    2. (테스트) 밟은 블록 색깔 변화 : 완료
    3. 새로이 색깔 변화 스크립트를 만들어서 블록에 붙임 : 완료
    4. 블록이 떨어져 제거 : 완료
  7. 2개의 블록 링크 및 링크된 블록 색깔 변화 : 완료
  8. :: [BUG] : 스테이지 재 로드 시 블록이 분해되어 작동 안함 : 해결 완료
    1. 블록 스크립트를 만들어서 Prefab에 저장? or Touch 블록을 사용해서 스크립트 실행이 되나 확인? : 실패
    2. Prefab에 LEGO Behaviour Block을 붙임 : 성공
      1. 해결 과정 : Behaviour Block이 붙어있는 것은 재 로드시 분해되지 않는 결과가 있었기에 그것을 활용
  9. 스타트 블록과 마지막 블록을 제외하고 모든 블록 링크 : 완료
  10. 링크 블록 같이 떨어져 제거 : 완료
  11. 최종 스코어 저장 : 완료
  12. 실패 시 PlayerPrefs 초기화 및 첫 스테이지부터 시작 : 완료
    1. :: [방향 수정] 하드코어 스테이지 작성, 하드코어 스테이지 이상일 시 다시 하드코어 스테이지 처음으로 초기화 : 완료
  13. 난이도 조절
    1. Enemy Low : 완료
    2. Enemy Mid : 완료
    3. Stage 7 이후 대각선 제거 : 완료
    4. Enemy High : 완료
      1. 닿으면 플레이어를 부수는 레고 캐릭터(하자드) : 완료
    5. BOSS, 거대 보스, 3개의 트로피도 모두 획득하라? : 완료
      1. :: [방향 수정] 보스만 존재 : 난이도 중하 : 완료
  14. 프로젝트 정리 및 코드 정리 : 완료
    1. In Game의 Touch the object를 Touch & Save the Chicken으로 변경 : 완료
    2. 한글화 : 완료
  15. <I want Elsa Lego!!!>가 들어간 Credit 만들기 : 스킵
  16. 승리 / 패배 씬 작성 : 완료
    1. :: [컨셉] 친구 닭들을 구하는 기사
  17. 레고를 사용한 심플 이펙트 설치 : 완료
  18. 4.11f로 다운그레이드 : 완료
  19. BGM  : 완료
  20. QA : 완료
  21. 빌드 및 제출 : 완료

 

【스크립트 구조】

Scripts.zip
0.03MB

 

 

Dictator(총괄)
: 사라지지 않음, 중복 불가
: 씬의 이동과 초기화를 관리

[Scene]_Ruler
: 씬의 지배자
: 기본적인 움직임과 시나리오, 각 치프들은 룰러가 지배함

[Scene]_GOCheif
: 씬의 UI를 제외한 것들의 움직임을 관리하는 팀장
: 다만 움직임을 설정만 해서 룰러에게 제공할 뿐, 실제로 움직이는 것은 룰러의 일

[Scene]_GOHolder
: 씬의 UI를 제외한 것들의 GameObject를 보관하고 있는 홀더

[Scene]_UIChief
: 씬의 UI의 움직임을 관리하는 팀장
: GOChief랑 거의 하는 일은 같음

[Scene]_UIHolder
: 씬의 UI GameObject를 보관하는 홀더

// [그 외 스크립트]
: 각 독립 오브젝트들의 움직임을 관리 : 룰러의 지배를 받지 않음 : 효용성과 구조에 대한 고찰 필요

【해당 프로젝트로 학습한 사항】

  • 스크립트 구조에 대한 설계
    • 움직이는 관리자(치프)와 갖고 있는 홀더를 나누고, 그 관리자를 지배하는 시나리오 메이커(룰러)와 모든 씬을 총괄하는 총괄(딕테이터)을 놓아 두는 구조
    • 장점 : 어디서 문제가 생기는 지, 코드를 다시 보았을 때 구조에 대한 이해가 빠름
    • 현재 개선점 : 독립적인 부분 등에 대한 관리가 필요
  • 작성한 스크립트가 아닌 타 스크립트와의 연계
블로그 이미지

RIsN

,